<?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>185691</bug_id>
          
          <creation_ts>2018-05-16 12:52:46 -0700</creation_ts>
          <short_desc>Host jquery on webkit.org instead of 3rd party</short_desc>
          <delta_ts>2018-05-22 09:34:30 -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>WebKit Website</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Roy Reapor">rreapor</reporter>
          <assigned_to name="Roy Reapor">rreapor</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>jbedard</cc>
    
    <cc>jond</cc>
    
    <cc>rreapor</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1424449</commentid>
    <comment_count>0</comment_count>
    <who name="Roy Reapor">rreapor</who>
    <bug_when>2018-05-16 12:52:46 -0700</bug_when>
    <thetext>Host jquery on webkit.org instead of 3rd party.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424450</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-16 12:53:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/40304594&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424550</commentid>
    <comment_count>2</comment_count>
      <attachid>340542</attachid>
    <who name="Roy Reapor">rreapor</who>
    <bug_when>2018-05-16 17:18:26 -0700</bug_when>
    <thetext>Created attachment 340542
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424551</commentid>
    <comment_count>3</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2018-05-16 17:23:08 -0700</bug_when>
    <thetext>Looks good to me. Alexey might want to have a quick look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424575</commentid>
    <comment_count>4</comment_count>
      <attachid>340542</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-05-16 18:47:45 -0700</bug_when>
    <thetext>Comment on attachment 340542
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=340542&amp;action=review

&gt; Websites/webkit.org/demos/spring/index.html:-5
&gt; -&lt;link href=&quot;https://fonts.googleapis.com/css?family=Source+Sans+Pro&quot; rel=&quot;stylesheet&quot;&gt;

Why remove this, but still specify &quot;Source Sans Pro&quot; in the stylesheet below?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424765</commentid>
    <comment_count>5</comment_count>
      <attachid>340592</attachid>
    <who name="Roy Reapor">rreapor</who>
    <bug_when>2018-05-17 09:34:42 -0700</bug_when>
    <thetext>Created attachment 340592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424769</commentid>
    <comment_count>6</comment_count>
    <who name="Roy Reapor">rreapor</who>
    <bug_when>2018-05-17 09:38:10 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 340542 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=340542&amp;action=review
&gt; 
&gt; &gt; Websites/webkit.org/demos/spring/index.html:-5
&gt; &gt; -&lt;link href=&quot;https://fonts.googleapis.com/css?family=Source+Sans+Pro&quot; rel=&quot;stylesheet&quot;&gt;
&gt; 
&gt; Why remove this, but still specify &quot;Source Sans Pro&quot; in the stylesheet below?

Patch submitted. Source Sans Pro should be committed from the the stylesheets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424773</commentid>
    <comment_count>7</comment_count>
    <who name="Roy Reapor">rreapor</who>
    <bug_when>2018-05-17 09:41:27 -0700</bug_when>
    <thetext>(In reply to Roy Reapor from comment #6)
&gt; (In reply to Darin Adler from comment #4)
&gt; &gt; Comment on attachment 340542 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=340542&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Websites/webkit.org/demos/spring/index.html:-5
&gt; &gt; &gt; -&lt;link href=&quot;https://fonts.googleapis.com/css?family=Source+Sans+Pro&quot; rel=&quot;stylesheet&quot;&gt;
&gt; &gt; 
&gt; &gt; Why remove this, but still specify &quot;Source Sans Pro&quot; in the stylesheet below?
&gt; 
&gt; Patch submitted. Source Sans Pro should be committed from the the
&gt; stylesheets.

Typo 

Patch submitted. Source Sans Pro should be *omitted* from the the stylesheets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424782</commentid>
    <comment_count>8</comment_count>
      <attachid>340592</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2018-05-17 10:14:59 -0700</bug_when>
    <thetext>Comment on attachment 340592
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=340592&amp;action=review

&gt; Websites/bugs.webkit.org/ChangeLog:3
&gt; +        Host jquery on webkit.org instead of 3rd party

Looks good.

This takes care of one of those, do you intend to have separate patches for the others? I see uses in Tools//BuildSlaveSupport/build.webkit.org-config, Tools/TestResultServer, and there is a grep match that I&apos;m unsure about in Tools/Scripts/webkitpy/benchmark_runner/data/patches/webdriver/Dromaeo.patch.

&gt; Websites/webkit.org/demos/spring/index.html:-5
&gt; -&lt;link href=&quot;https://fonts.googleapis.com/css?family=Source+Sans+Pro&quot; rel=&quot;stylesheet&quot;&gt;

It&apos;s probably better to do this in a separate patch anyway, as the bug title is about jquery only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424823</commentid>
    <comment_count>9</comment_count>
    <who name="Roy Reapor">rreapor</who>
    <bug_when>2018-05-17 11:24:44 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #8)
&gt; Comment on attachment 340592 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=340592&amp;action=review
&gt; 
&gt; &gt; Websites/bugs.webkit.org/ChangeLog:3
&gt; &gt; +        Host jquery on webkit.org instead of 3rd party
&gt; 
&gt; Looks good.
&gt; 
&gt; This takes care of one of those, do you intend to have separate patches for
&gt; the others? I see uses in Tools//BuildSlaveSupport/build.webkit.org-config,
&gt; Tools/TestResultServer, and there is a grep match that I&apos;m unsure about in
&gt; Tools/Scripts/webkitpy/benchmark_runner/data/patches/webdriver/Dromaeo.patch.
&gt; 
&gt; &gt; Websites/webkit.org/demos/spring/index.html:-5
&gt; &gt; -&lt;link href=&quot;https://fonts.googleapis.com/css?family=Source+Sans+Pro&quot; rel=&quot;stylesheet&quot;&gt;
&gt; 
&gt; It&apos;s probably better to do this in a separate patch anyway, as the bug title
&gt; is about jquery only.

Ok. I am going to create a separate bug for files under Tools. If needed, I&apos;ll create one for &quot;Source Sans Pro&quot; as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424834</commentid>
    <comment_count>10</comment_count>
      <attachid>340613</attachid>
    <who name="Roy Reapor">rreapor</who>
    <bug_when>2018-05-17 11:44:57 -0700</bug_when>
    <thetext>Created attachment 340613
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426176</commentid>
    <comment_count>11</comment_count>
      <attachid>340613</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-22 09:34:29 -0700</bug_when>
    <thetext>Comment on attachment 340613
Patch

Clearing flags on attachment: 340613

Committed r232068: &lt;https://trac.webkit.org/changeset/232068&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426177</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-22 09:34:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340542</attachid>
            <date>2018-05-16 17:18:26 -0700</date>
            <delta_ts>2018-05-17 09:34:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185691-20180516171825.patch</filename>
            <type>text/plain</type>
            <size>75799</size>
            <attacher name="Roy Reapor">rreapor</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxODY0CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9idWdzLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvYnVncy53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCAyMTAxNmFhMGIxODlkYWY4YmU5MDYyMTI4MzBhZDY0OTBjYjY1YTVkLi5hYWRmN2E2Yzhi
ZWRjNzA2YTdkNTI3YmFmNDA2NGI0NmMwMjM3OWUzIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9idWdz
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL2J1Z3Mud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0wNS0xNiAgUm95IFJlYXBvciAgPHJyZWFwb3JA
YXBwbGUuY29tPgorCisgICAgICAgIEhvc3QganF1ZXJ5IG9uIHdlYmtpdC5vcmcgaW5zdGVhZCBv
ZiAzcmQgcGFydHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NTY5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogUHJldHR5UGF0Y2gvUHJldHR5UGF0Y2gucmI6CisgICAgICAgICogY29kZS1yZXZpZXct
dGVzdC5odG1sOgorCiAyMDE4LTAyLTE2ICBMaW5nIEhvICA8bGluZ2hvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBcHBseSBCdWd6aWxsYSBwYXRjaGVzIGZvciBDVkUtMjAxOC01MTIzCmRpZmYgLS1n
aXQgYS9XZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZyBiL1dlYnNpdGVzL3dlYmtpdC5vcmcv
Q2hhbmdlTG9nCmluZGV4IDQxZDg2MmQzOGZiMDBkYjdmZmJhNWIzNDgwMDM2ZjlkOWEyZGRiYTcu
LmQ5MzJjMTM2NzAxNjA0NzliYjI1ZDExZmI0ZDY2YzcwZDYyMmNiMWEgMTAwNjQ0Ci0tLSBhL1dl
YnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3dlYmtpdC5vcmcvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMDUtMTYgIFJveSBSZWFwb3IgIDxycmVhcG9y
QGFwcGxlLmNvbT4KKworICAgICAgICBIb3N0IGpxdWVyeSBvbiB3ZWJraXQub3JnIGluc3RlYWQg
b2YgM3JkIHBhcnR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODU2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGRlbW9zL3NwcmluZy9pbmRleC5odG1sOiBSZW1vdmVkIHVubmVjZXNzYXJ5IENTUyBy
ZXNvdXJjZS4KKwogMjAxOC0wNC0yNiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CiAKICAgICAgICAgVXBkYXRlIGNvZGUgc3R5bGUgZ3VpZGVsaW5lcyB0byBtZW50aW9u
IGJyYWNlZCBpbml0aWFsaXphdGlvbiBzdHlsZS4KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL2J1Z3Mu
d2Via2l0Lm9yZy9QcmV0dHlQYXRjaC9QcmV0dHlQYXRjaC5yYiBiL1dlYnNpdGVzL2J1Z3Mud2Vi
a2l0Lm9yZy9QcmV0dHlQYXRjaC9QcmV0dHlQYXRjaC5yYgppbmRleCBhNGFhZjE2ZDI3NThjYWIw
Y2RmNDBiOWEwNDljYmI0OTRkNDhhZmZkLi4zODJiNDk2OWQ4MzZjZGVhMDI1ZTU5MDk2ODJhZjgx
ZTFjZTA1ZGZlIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9idWdzLndlYmtpdC5vcmcvUHJldHR5UGF0
Y2gvUHJldHR5UGF0Y2gucmIKKysrIGIvV2Vic2l0ZXMvYnVncy53ZWJraXQub3JnL1ByZXR0eVBh
dGNoL1ByZXR0eVBhdGNoLnJiCkBAIC01MjMsNyArNTIzLDcgQEAgZGl2OmZvY3VzIHsKICAgICBj
bGVhcjogYm90aDsKIH0KIDwvc3R5bGU+Ci08c2NyaXB0IHNyYz0iaHR0cHM6Ly9hamF4Lmdvb2ds
ZWFwaXMuY29tL2FqYXgvbGlicy9qcXVlcnkvMS40LjIvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+
IAorPHNjcmlwdCBzcmM9Imh0dHBzOi8vd2Via2l0Lm9yZy9hamF4L2xpYnMvanF1ZXJ5L2pxdWVy
eS0xLjQuMi5taW4uanMiPjwvc2NyaXB0PiAKIDxzY3JpcHQgc3JjPSJjb2RlLXJldmlldy5qcz92
ZXJzaW9uPTQ4Ij48L3NjcmlwdD4KIDwvaGVhZD4KIEVPRgpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMv
YnVncy53ZWJraXQub3JnL2NvZGUtcmV2aWV3LXRlc3QuaHRtbCBiL1dlYnNpdGVzL2J1Z3Mud2Vi
a2l0Lm9yZy9jb2RlLXJldmlldy10ZXN0Lmh0bWwKaW5kZXggYjU5ZmE0YzQzZDNmMzg5NTk4M2Fh
NDlmY2FiZWExZTU5YjY3M2UwMS4uNzBkYjc4OTc1ZTQwMWFjYTIxYmI0YmJkNjg5ZDU3M2UxODc3
M2RiNyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvYnVncy53ZWJraXQub3JnL2NvZGUtcmV2aWV3LXRl
c3QuaHRtbAorKysgYi9XZWJzaXRlcy9idWdzLndlYmtpdC5vcmcvY29kZS1yZXZpZXctdGVzdC5o
dG1sCkBAIC05LDcgKzksNyBAQCB3aW5kb3cub25lcnJvciA9IGZ1bmN0aW9uKGVycm9yTXNnLCB1
cmwsIGxpbmVOdW1iZXIpIHsKICAgcmV0dXJuIGZhbHNlOwogfQogPC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iaHR0cHM6Ly9hamF4Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGlicy9qcXVlcnkvMS40LjIv
anF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+IAorPHNjcmlwdCBzcmM9Imh0dHBzOi8vd2Via2l0Lm9y
Zy9hamF4L2xpYnMvanF1ZXJ5L2pxdWVyeS0xLjQuMi5taW4uanMiPjwvc2NyaXB0PiAKIDxzY3Jp
cHQgc3JjPSJjb2RlLXJldmlldy5qcyI+PC9zY3JpcHQ+CiA8cHJlIGlkPSJvdXRwdXQiPjwvcHJl
PgogPGRpdiBpZD0iZGlmZi1jb250ZW50Ij48L2Rpdj4KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3dl
YmtpdC5vcmcvYWpheC9saWJzL2pxdWVyeS9qcXVlcnktMS40LjIubWluLmpzIGIvV2Vic2l0ZXMv
d2Via2l0Lm9yZy9hamF4L2xpYnMvanF1ZXJ5L2pxdWVyeS0xLjQuMi5taW4uanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2MyNDMwODAyMzM3NjE4NTk5MzdkNTIxOTViNjcwNjAyNzMxYTM3OQotLS0gL2Rldi9udWxs
CisrKyBiL1dlYnNpdGVzL3dlYmtpdC5vcmcvYWpheC9saWJzL2pxdWVyeS9qcXVlcnktMS40LjIu
bWluLmpzCkBAIC0wLDAgKzEsMTU0IEBACisvKiEKKyAqIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJh
cnkgdjEuNC4yCisgKiBodHRwOi8vanF1ZXJ5LmNvbS8KKyAqCisgKiBDb3B5cmlnaHQgMjAxMCwg
Sm9obiBSZXNpZworICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9u
IDIgbGljZW5zZXMuCisgKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCisgKgorICogSW5jbHVk
ZXMgU2l6emxlLmpzCisgKiBodHRwOi8vc2l6emxlanMuY29tLworICogQ29weXJpZ2h0IDIwMTAs
IFRoZSBEb2pvIEZvdW5kYXRpb24KKyAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQsIEJTRCwgYW5k
IEdQTCBMaWNlbnNlcy4KKyAqCisgKiBEYXRlOiBTYXQgRmViIDEzIDIyOjMzOjQ4IDIwMTAgLTA1
MDAKKyAqLworKGZ1bmN0aW9uKEEsdyl7ZnVuY3Rpb24gbWEoKXtpZighYy5pc1JlYWR5KXt0cnl7
cy5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwoImxlZnQiKX1jYXRjaChhKXtzZXRUaW1lb3V0KG1h
LDEpO3JldHVybn1jLnJlYWR5KCl9fWZ1bmN0aW9uIFFhKGEsYil7Yi5zcmM/Yy5hamF4KHt1cmw6
Yi5zcmMsYXN5bmM6ZmFsc2UsZGF0YVR5cGU6InNjcmlwdCJ9KTpjLmdsb2JhbEV2YWwoYi50ZXh0
fHxiLnRleHRDb250ZW50fHxiLmlubmVySFRNTHx8IiIpO2IucGFyZW50Tm9kZSYmYi5wYXJlbnRO
b2RlLnJlbW92ZUNoaWxkKGIpfWZ1bmN0aW9uIFgoYSxiLGQsZixlLGope3ZhciBpPWEubGVuZ3Ro
O2lmKHR5cGVvZiBiPT09Im9iamVjdCIpe2Zvcih2YXIgbyBpbiBiKVgoYSxvLGJbb10sZixlLGQp
O3JldHVybiBhfWlmKGQhPT13KXtmPSFqJiZmJiZjLmlzRnVuY3Rpb24oZCk7Zm9yKG89MDtvPGk7
bysrKWUoYVtvXSxiLGY/ZC5jYWxsKGFbb10sbyxlKGFbb10sYikpOmQsaik7cmV0dXJuIGF9cmV0
dXJuIGk/CitlKGFbMF0sYik6d31mdW5jdGlvbiBKKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1l
KCl9ZnVuY3Rpb24gWSgpe3JldHVybiBmYWxzZX1mdW5jdGlvbiBaKCl7cmV0dXJuIHRydWV9ZnVu
Y3Rpb24gbmEoYSxiLGQpe2RbMF0udHlwZT1hO3JldHVybiBjLmV2ZW50LmhhbmRsZS5hcHBseShi
LGQpfWZ1bmN0aW9uIG9hKGEpe3ZhciBiLGQ9W10sZj1bXSxlPWFyZ3VtZW50cyxqLGksbyxrLG4s
cjtpPWMuZGF0YSh0aGlzLCJldmVudHMiKTtpZighKGEubGl2ZUZpcmVkPT09dGhpc3x8IWl8fCFp
LmxpdmV8fGEuYnV0dG9uJiZhLnR5cGU9PT0iY2xpY2siKSl7YS5saXZlRmlyZWQ9dGhpczt2YXIg
dT1pLmxpdmUuc2xpY2UoMCk7Zm9yKGs9MDtrPHUubGVuZ3RoO2srKyl7aT11W2tdO2kub3JpZ1R5
cGUucmVwbGFjZShPLCIiKT09PWEudHlwZT9mLnB1c2goaS5zZWxlY3Rvcik6dS5zcGxpY2Uoay0t
LDEpfWo9YyhhLnRhcmdldCkuY2xvc2VzdChmLGEuY3VycmVudFRhcmdldCk7bj0wO2ZvcihyPQor
ai5sZW5ndGg7bjxyO24rKylmb3Ioaz0wO2s8dS5sZW5ndGg7aysrKXtpPXVba107aWYoaltuXS5z
ZWxlY3Rvcj09PWkuc2VsZWN0b3Ipe289altuXS5lbGVtO2Y9bnVsbDtpZihpLnByZVR5cGU9PT0i
bW91c2VlbnRlciJ8fGkucHJlVHlwZT09PSJtb3VzZWxlYXZlIilmPWMoYS5yZWxhdGVkVGFyZ2V0
KS5jbG9zZXN0KGkuc2VsZWN0b3IpWzBdO2lmKCFmfHxmIT09bylkLnB1c2goe2VsZW06byxoYW5k
bGVPYmo6aX0pfX1uPTA7Zm9yKHI9ZC5sZW5ndGg7bjxyO24rKyl7aj1kW25dO2EuY3VycmVudFRh
cmdldD1qLmVsZW07YS5kYXRhPWouaGFuZGxlT2JqLmRhdGE7YS5oYW5kbGVPYmo9ai5oYW5kbGVP
Ymo7aWYoai5oYW5kbGVPYmoub3JpZ0hhbmRsZXIuYXBwbHkoai5lbGVtLGUpPT09ZmFsc2Upe2I9
ZmFsc2U7YnJlYWt9fXJldHVybiBifX1mdW5jdGlvbiBwYShhLGIpe3JldHVybiJsaXZlLiIrKGEm
JmEhPT0iKiI/YSsiLiI6IiIpK2IucmVwbGFjZSgvXC4vZywiYCIpLnJlcGxhY2UoLyAvZywKKyIm
Iil9ZnVuY3Rpb24gcWEoYSl7cmV0dXJuIWF8fCFhLnBhcmVudE5vZGV8fGEucGFyZW50Tm9kZS5u
b2RlVHlwZT09PTExfWZ1bmN0aW9uIHJhKGEsYil7dmFyIGQ9MDtiLmVhY2goZnVuY3Rpb24oKXtp
Zih0aGlzLm5vZGVOYW1lPT09KGFbZF0mJmFbZF0ubm9kZU5hbWUpKXt2YXIgZj1jLmRhdGEoYVtk
KytdKSxlPWMuZGF0YSh0aGlzLGYpO2lmKGY9ZiYmZi5ldmVudHMpe2RlbGV0ZSBlLmhhbmRsZTtl
LmV2ZW50cz17fTtmb3IodmFyIGogaW4gZilmb3IodmFyIGkgaW4gZltqXSljLmV2ZW50LmFkZCh0
aGlzLGosZltqXVtpXSxmW2pdW2ldLmRhdGEpfX19KX1mdW5jdGlvbiBzYShhLGIsZCl7dmFyIGYs
ZSxqO2I9YiYmYlswXT9iWzBdLm93bmVyRG9jdW1lbnR8fGJbMF06cztpZihhLmxlbmd0aD09PTEm
JnR5cGVvZiBhWzBdPT09InN0cmluZyImJmFbMF0ubGVuZ3RoPDUxMiYmYj09PXMmJiF0YS50ZXN0
KGFbMF0pJiYoYy5zdXBwb3J0LmNoZWNrQ2xvbmV8fCF1YS50ZXN0KGFbMF0pKSl7ZT0KK3RydWU7
aWYoaj1jLmZyYWdtZW50c1thWzBdXSlpZihqIT09MSlmPWp9aWYoIWYpe2Y9Yi5jcmVhdGVEb2N1
bWVudEZyYWdtZW50KCk7Yy5jbGVhbihhLGIsZixkKX1pZihlKWMuZnJhZ21lbnRzW2FbMF1dPWo/
ZjoxO3JldHVybntmcmFnbWVudDpmLGNhY2hlYWJsZTplfX1mdW5jdGlvbiBLKGEsYil7dmFyIGQ9
e307Yy5lYWNoKHZhLmNvbmNhdC5hcHBseShbXSx2YS5zbGljZSgwLGIpKSxmdW5jdGlvbigpe2Rb
dGhpc109YX0pO3JldHVybiBkfWZ1bmN0aW9uIHdhKGEpe3JldHVybiJzY3JvbGxUbyJpbiBhJiZh
LmRvY3VtZW50P2E6YS5ub2RlVHlwZT09PTk/YS5kZWZhdWx0Vmlld3x8YS5wYXJlbnRXaW5kb3c6
ZmFsc2V9dmFyIGM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IGMuZm4uaW5pdChhLGIpfSxSYT1B
LmpRdWVyeSxTYT1BLiQscz1BLmRvY3VtZW50LFQsVGE9L15bXjxdKig8W1x3XFddKz4pW14+XSok
fF4jKFtcdy1dKykkLyxVYT0vXi5bXjojXFtcLixdKiQvLFZhPS9cUy8sCitXYT0vXihcc3xcdTAw
QTApK3woXHN8XHUwMEEwKSskL2csWGE9L148KFx3KylccypcLz8+KD86PFwvXDE+KT8kLyxQPW5h
dmlnYXRvci51c2VyQWdlbnQseGE9ZmFsc2UsUT1bXSxMLCQ9T2JqZWN0LnByb3RvdHlwZS50b1N0
cmluZyxhYT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGJhPUFycmF5LnByb3RvdHlw
ZS5wdXNoLFI9QXJyYXkucHJvdG90eXBlLnNsaWNlLHlhPUFycmF5LnByb3RvdHlwZS5pbmRleE9m
O2MuZm49Yy5wcm90b3R5cGU9e2luaXQ6ZnVuY3Rpb24oYSxiKXt2YXIgZCxmO2lmKCFhKXJldHVy
biB0aGlzO2lmKGEubm9kZVR5cGUpe3RoaXMuY29udGV4dD10aGlzWzBdPWE7dGhpcy5sZW5ndGg9
MTtyZXR1cm4gdGhpc31pZihhPT09ImJvZHkiJiYhYil7dGhpcy5jb250ZXh0PXM7dGhpc1swXT1z
LmJvZHk7dGhpcy5zZWxlY3Rvcj0iYm9keSI7dGhpcy5sZW5ndGg9MTtyZXR1cm4gdGhpc31pZih0
eXBlb2YgYT09PSJzdHJpbmciKWlmKChkPVRhLmV4ZWMoYSkpJiYKKyhkWzFdfHwhYikpaWYoZFsx
XSl7Zj1iP2Iub3duZXJEb2N1bWVudHx8YjpzO2lmKGE9WGEuZXhlYyhhKSlpZihjLmlzUGxhaW5P
YmplY3QoYikpe2E9W3MuY3JlYXRlRWxlbWVudChhWzFdKV07Yy5mbi5hdHRyLmNhbGwoYSxiLHRy
dWUpfWVsc2UgYT1bZi5jcmVhdGVFbGVtZW50KGFbMV0pXTtlbHNle2E9c2EoW2RbMV1dLFtmXSk7
YT0oYS5jYWNoZWFibGU/YS5mcmFnbWVudC5jbG9uZU5vZGUodHJ1ZSk6YS5mcmFnbWVudCkuY2hp
bGROb2Rlc31yZXR1cm4gYy5tZXJnZSh0aGlzLGEpfWVsc2V7aWYoYj1zLmdldEVsZW1lbnRCeUlk
KGRbMl0pKXtpZihiLmlkIT09ZFsyXSlyZXR1cm4gVC5maW5kKGEpO3RoaXMubGVuZ3RoPTE7dGhp
c1swXT1ifXRoaXMuY29udGV4dD1zO3RoaXMuc2VsZWN0b3I9YTtyZXR1cm4gdGhpc31lbHNlIGlm
KCFiJiYvXlx3KyQvLnRlc3QoYSkpe3RoaXMuc2VsZWN0b3I9YTt0aGlzLmNvbnRleHQ9czthPXMu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoYSk7cmV0dXJuIGMubWVyZ2UodGhpcywKK2EpfWVsc2UgcmV0
dXJuIWJ8fGIuanF1ZXJ5PyhifHxUKS5maW5kKGEpOmMoYikuZmluZChhKTtlbHNlIGlmKGMuaXNG
dW5jdGlvbihhKSlyZXR1cm4gVC5yZWFkeShhKTtpZihhLnNlbGVjdG9yIT09dyl7dGhpcy5zZWxl
Y3Rvcj1hLnNlbGVjdG9yO3RoaXMuY29udGV4dD1hLmNvbnRleHR9cmV0dXJuIGMubWFrZUFycmF5
KGEsdGhpcyl9LHNlbGVjdG9yOiIiLGpxdWVyeToiMS40LjIiLGxlbmd0aDowLHNpemU6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9LHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gUi5jYWxs
KHRoaXMsMCl9LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD90aGlzLnRvQXJyYXkoKTph
PDA/dGhpcy5zbGljZShhKVswXTp0aGlzW2FdfSxwdXNoU3RhY2s6ZnVuY3Rpb24oYSxiLGQpe3Zh
ciBmPWMoKTtjLmlzQXJyYXkoYSk/YmEuYXBwbHkoZixhKTpjLm1lcmdlKGYsYSk7Zi5wcmV2T2Jq
ZWN0PXRoaXM7Zi5jb250ZXh0PXRoaXMuY29udGV4dDtpZihiPT09CisiZmluZCIpZi5zZWxlY3Rv
cj10aGlzLnNlbGVjdG9yKyh0aGlzLnNlbGVjdG9yPyIgIjoiIikrZDtlbHNlIGlmKGIpZi5zZWxl
Y3Rvcj10aGlzLnNlbGVjdG9yKyIuIitiKyIoIitkKyIpIjtyZXR1cm4gZn0sZWFjaDpmdW5jdGlv
bihhLGIpe3JldHVybiBjLmVhY2godGhpcyxhLGIpfSxyZWFkeTpmdW5jdGlvbihhKXtjLmJpbmRS
ZWFkeSgpO2lmKGMuaXNSZWFkeSlhLmNhbGwocyxjKTtlbHNlIFEmJlEucHVzaChhKTtyZXR1cm4g
dGhpc30sZXE6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT0tMT90aGlzLnNsaWNlKGEpOnRoaXMuc2xp
Y2UoYSwrYSsxKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5j
dGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5w
dXNoU3RhY2soUi5hcHBseSh0aGlzLGFyZ3VtZW50cyksInNsaWNlIixSLmNhbGwoYXJndW1lbnRz
KS5qb2luKCIsIikpfSxtYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGMubWFw
KHRoaXMsCitmdW5jdGlvbihiLGQpe3JldHVybiBhLmNhbGwoYixkLGIpfSkpfSxlbmQ6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHxjKG51bGwpfSxwdXNoOmJhLHNvcnQ6W10uc29y
dCxzcGxpY2U6W10uc3BsaWNlfTtjLmZuLmluaXQucHJvdG90eXBlPWMuZm47Yy5leHRlbmQ9Yy5m
bi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHNbMF18fHt9LGI9MSxkPWFyZ3VtZW50
cy5sZW5ndGgsZj1mYWxzZSxlLGosaSxvO2lmKHR5cGVvZiBhPT09ImJvb2xlYW4iKXtmPWE7YT1h
cmd1bWVudHNbMV18fHt9O2I9Mn1pZih0eXBlb2YgYSE9PSJvYmplY3QiJiYhYy5pc0Z1bmN0aW9u
KGEpKWE9e307aWYoZD09PWIpe2E9dGhpczstLWJ9Zm9yKDtiPGQ7YisrKWlmKChlPWFyZ3VtZW50
c1tiXSkhPW51bGwpZm9yKGogaW4gZSl7aT1hW2pdO289ZVtqXTtpZihhIT09bylpZihmJiZvJiYo
Yy5pc1BsYWluT2JqZWN0KG8pfHxjLmlzQXJyYXkobykpKXtpPWkmJihjLmlzUGxhaW5PYmplY3Qo
aSl8fAorYy5pc0FycmF5KGkpKT9pOmMuaXNBcnJheShvKT9bXTp7fTthW2pdPWMuZXh0ZW5kKGYs
aSxvKX1lbHNlIGlmKG8hPT13KWFbal09b31yZXR1cm4gYX07Yy5leHRlbmQoe25vQ29uZmxpY3Q6
ZnVuY3Rpb24oYSl7QS4kPVNhO2lmKGEpQS5qUXVlcnk9UmE7cmV0dXJuIGN9LGlzUmVhZHk6ZmFs
c2UscmVhZHk6ZnVuY3Rpb24oKXtpZighYy5pc1JlYWR5KXtpZighcy5ib2R5KXJldHVybiBzZXRU
aW1lb3V0KGMucmVhZHksMTMpO2MuaXNSZWFkeT10cnVlO2lmKFEpe2Zvcih2YXIgYSxiPTA7YT1R
W2IrK107KWEuY2FsbChzLGMpO1E9bnVsbH1jLmZuLnRyaWdnZXJIYW5kbGVyJiZjKHMpLnRyaWdn
ZXJIYW5kbGVyKCJyZWFkeSIpfX0sYmluZFJlYWR5OmZ1bmN0aW9uKCl7aWYoIXhhKXt4YT10cnVl
O2lmKHMucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpcmV0dXJuIGMucmVhZHkoKTtpZihzLmFkZEV2
ZW50TGlzdGVuZXIpe3MuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsCitMLGZh
bHNlKTtBLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGMucmVhZHksZmFsc2UpfWVsc2UgaWYocy5h
dHRhY2hFdmVudCl7cy5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixMKTtBLmF0dGFj
aEV2ZW50KCJvbmxvYWQiLGMucmVhZHkpO3ZhciBhPWZhbHNlO3RyeXthPUEuZnJhbWVFbGVtZW50
PT1udWxsfWNhdGNoKGIpe31zLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCYmYSYmbWEoKX19fSxp
c0Z1bmN0aW9uOmZ1bmN0aW9uKGEpe3JldHVybiAkLmNhbGwoYSk9PT0iW29iamVjdCBGdW5jdGlv
bl0ifSxpc0FycmF5OmZ1bmN0aW9uKGEpe3JldHVybiAkLmNhbGwoYSk9PT0iW29iamVjdCBBcnJh
eV0ifSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGEpe2lmKCFhfHwkLmNhbGwoYSkhPT0iW29iamVj
dCBPYmplY3RdInx8YS5ub2RlVHlwZXx8YS5zZXRJbnRlcnZhbClyZXR1cm4gZmFsc2U7aWYoYS5j
b25zdHJ1Y3RvciYmIWFhLmNhbGwoYSwiY29uc3RydWN0b3IiKSYmIWFhLmNhbGwoYS5jb25zdHJ1
Y3Rvci5wcm90b3R5cGUsCisiaXNQcm90b3R5cGVPZiIpKXJldHVybiBmYWxzZTt2YXIgYjtmb3Io
YiBpbiBhKTtyZXR1cm4gYj09PXd8fGFhLmNhbGwoYSxiKX0saXNFbXB0eU9iamVjdDpmdW5jdGlv
bihhKXtmb3IodmFyIGIgaW4gYSlyZXR1cm4gZmFsc2U7cmV0dXJuIHRydWV9LGVycm9yOmZ1bmN0
aW9uKGEpe3Rocm93IGE7fSxwYXJzZUpTT046ZnVuY3Rpb24oYSl7aWYodHlwZW9mIGEhPT0ic3Ry
aW5nInx8IWEpcmV0dXJuIG51bGw7YT1jLnRyaW0oYSk7aWYoL15bXF0sOnt9XHNdKiQvLnRlc3Qo
YS5yZXBsYWNlKC9cXCg/OlsiXFxcL2JmbnJ0XXx1WzAtOWEtZkEtRl17NH0pL2csIkAiKS5yZXBs
YWNlKC8iW14iXFxcblxyXSoifHRydWV8ZmFsc2V8bnVsbHwtP1xkKyg/OlwuXGQqKT8oPzpbZUVd
WytcLV0/XGQrKT8vZywiXSIpLnJlcGxhY2UoLyg/Ol58OnwsKSg/OlxzKlxbKSsvZywiIikpKXJl
dHVybiBBLkpTT04mJkEuSlNPTi5wYXJzZT9BLkpTT04ucGFyc2UoYSk6KG5ldyBGdW5jdGlvbigi
cmV0dXJuICIrCithKSkoKTtlbHNlIGMuZXJyb3IoIkludmFsaWQgSlNPTjogIithKX0sbm9vcDpm
dW5jdGlvbigpe30sZ2xvYmFsRXZhbDpmdW5jdGlvbihhKXtpZihhJiZWYS50ZXN0KGEpKXt2YXIg
Yj1zLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fHMuZG9jdW1lbnRFbGVtZW50LGQ9
cy5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtkLnR5cGU9InRleHQvamF2YXNjcmlwdCI7aWYoYy5z
dXBwb3J0LnNjcmlwdEV2YWwpZC5hcHBlbmRDaGlsZChzLmNyZWF0ZVRleHROb2RlKGEpKTtlbHNl
IGQudGV4dD1hO2IuaW5zZXJ0QmVmb3JlKGQsYi5maXJzdENoaWxkKTtiLnJlbW92ZUNoaWxkKGQp
fX0sbm9kZU5hbWU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50
b1VwcGVyQ2FzZSgpPT09Yi50b1VwcGVyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9uKGEsYixkKXt2YXIg
ZixlPTAsaj1hLmxlbmd0aCxpPWo9PT13fHxjLmlzRnVuY3Rpb24oYSk7aWYoZClpZihpKWZvcihm
IGluIGEpe2lmKGIuYXBwbHkoYVtmXSwKK2QpPT09ZmFsc2UpYnJlYWt9ZWxzZSBmb3IoO2U8ajsp
e2lmKGIuYXBwbHkoYVtlKytdLGQpPT09ZmFsc2UpYnJlYWt9ZWxzZSBpZihpKWZvcihmIGluIGEp
e2lmKGIuY2FsbChhW2ZdLGYsYVtmXSk9PT1mYWxzZSlicmVha31lbHNlIGZvcihkPWFbMF07ZTxq
JiZiLmNhbGwoZCxlLGQpIT09ZmFsc2U7ZD1hWysrZV0pO3JldHVybiBhfSx0cmltOmZ1bmN0aW9u
KGEpe3JldHVybihhfHwiIikucmVwbGFjZShXYSwiIil9LG1ha2VBcnJheTpmdW5jdGlvbihhLGIp
e2I9Ynx8W107aWYoYSE9bnVsbClhLmxlbmd0aD09bnVsbHx8dHlwZW9mIGE9PT0ic3RyaW5nInx8
Yy5pc0Z1bmN0aW9uKGEpfHx0eXBlb2YgYSE9PSJmdW5jdGlvbiImJmEuc2V0SW50ZXJ2YWw/YmEu
Y2FsbChiLGEpOmMubWVyZ2UoYixhKTtyZXR1cm4gYn0saW5BcnJheTpmdW5jdGlvbihhLGIpe2lm
KGIuaW5kZXhPZilyZXR1cm4gYi5pbmRleE9mKGEpO2Zvcih2YXIgZD0wLGY9Yi5sZW5ndGg7ZDxm
O2QrKylpZihiW2RdPT09CithKXJldHVybiBkO3JldHVybi0xfSxtZXJnZTpmdW5jdGlvbihhLGIp
e3ZhciBkPWEubGVuZ3RoLGY9MDtpZih0eXBlb2YgYi5sZW5ndGg9PT0ibnVtYmVyIilmb3IodmFy
IGU9Yi5sZW5ndGg7ZjxlO2YrKylhW2QrK109YltmXTtlbHNlIGZvcig7YltmXSE9PXc7KWFbZCsr
XT1iW2YrK107YS5sZW5ndGg9ZDtyZXR1cm4gYX0sZ3JlcDpmdW5jdGlvbihhLGIsZCl7Zm9yKHZh
ciBmPVtdLGU9MCxqPWEubGVuZ3RoO2U8ajtlKyspIWQhPT0hYihhW2VdLGUpJiZmLnB1c2goYVtl
XSk7cmV0dXJuIGZ9LG1hcDpmdW5jdGlvbihhLGIsZCl7Zm9yKHZhciBmPVtdLGUsaj0wLGk9YS5s
ZW5ndGg7ajxpO2orKyl7ZT1iKGFbal0saixkKTtpZihlIT1udWxsKWZbZi5sZW5ndGhdPWV9cmV0
dXJuIGYuY29uY2F0LmFwcGx5KFtdLGYpfSxndWlkOjEscHJveHk6ZnVuY3Rpb24oYSxiLGQpe2lm
KGFyZ3VtZW50cy5sZW5ndGg9PT0yKWlmKHR5cGVvZiBiPT09InN0cmluZyIpe2Q9YTthPWRbYl07
Yj13fWVsc2UgaWYoYiYmCishYy5pc0Z1bmN0aW9uKGIpKXtkPWI7Yj13fWlmKCFiJiZhKWI9ZnVu
Y3Rpb24oKXtyZXR1cm4gYS5hcHBseShkfHx0aGlzLGFyZ3VtZW50cyl9O2lmKGEpYi5ndWlkPWEu
Z3VpZD1hLmd1aWR8fGIuZ3VpZHx8Yy5ndWlkKys7cmV0dXJuIGJ9LHVhTWF0Y2g6ZnVuY3Rpb24o
YSl7YT1hLnRvTG93ZXJDYXNlKCk7YT0vKHdlYmtpdClbIFwvXShbXHcuXSspLy5leGVjKGEpfHwv
KG9wZXJhKSg/Oi4qdmVyc2lvbik/WyBcL10oW1x3Ll0rKS8uZXhlYyhhKXx8Lyhtc2llKSAoW1x3
Ll0rKS8uZXhlYyhhKXx8IS9jb21wYXRpYmxlLy50ZXN0KGEpJiYvKG1vemlsbGEpKD86Lio/IHJ2
OihbXHcuXSspKT8vLmV4ZWMoYSl8fFtdO3JldHVybnticm93c2VyOmFbMV18fCIiLHZlcnNpb246
YVsyXXx8IjAifX0sYnJvd3Nlcjp7fX0pO1A9Yy51YU1hdGNoKFApO2lmKFAuYnJvd3Nlcil7Yy5i
cm93c2VyW1AuYnJvd3Nlcl09dHJ1ZTtjLmJyb3dzZXIudmVyc2lvbj1QLnZlcnNpb259aWYoYy5i
cm93c2VyLndlYmtpdCljLmJyb3dzZXIuc2FmYXJpPQordHJ1ZTtpZih5YSljLmluQXJyYXk9ZnVu
Y3Rpb24oYSxiKXtyZXR1cm4geWEuY2FsbChiLGEpfTtUPWMocyk7aWYocy5hZGRFdmVudExpc3Rl
bmVyKUw9ZnVuY3Rpb24oKXtzLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQi
LEwsZmFsc2UpO2MucmVhZHkoKX07ZWxzZSBpZihzLmF0dGFjaEV2ZW50KUw9ZnVuY3Rpb24oKXtp
ZihzLnJlYWR5U3RhdGU9PT0iY29tcGxldGUiKXtzLmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVj
aGFuZ2UiLEwpO2MucmVhZHkoKX19OyhmdW5jdGlvbigpe2Muc3VwcG9ydD17fTt2YXIgYT1zLmRv
Y3VtZW50RWxlbWVudCxiPXMuY3JlYXRlRWxlbWVudCgic2NyaXB0IiksZD1zLmNyZWF0ZUVsZW1l
bnQoImRpdiIpLGY9InNjcmlwdCIrSigpO2Quc3R5bGUuZGlzcGxheT0ibm9uZSI7ZC5pbm5lckhU
TUw9IiAgIDxsaW5rLz48dGFibGU+PC90YWJsZT48YSBocmVmPScvYScgc3R5bGU9J2NvbG9yOnJl
ZDtmbG9hdDpsZWZ0O29wYWNpdHk6LjU1Oyc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2tib3gnLz4i
OwordmFyIGU9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLGo9ZC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYSIpWzBdO2lmKCEoIWV8fCFlLmxlbmd0aHx8IWopKXtjLnN1cHBvcnQ9e2xlYWRpbmdX
aGl0ZXNwYWNlOmQuZmlyc3RDaGlsZC5ub2RlVHlwZT09PTMsdGJvZHk6IWQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRib2R5IikubGVuZ3RoLGh0bWxTZXJpYWxpemU6ISFkLmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJsaW5rIikubGVuZ3RoLHN0eWxlOi9yZWQvLnRlc3Qoai5nZXRBdHRyaWJ1dGUoInN0
eWxlIikpLGhyZWZOb3JtYWxpemVkOmouZ2V0QXR0cmlidXRlKCJocmVmIik9PT0iL2EiLG9wYWNp
dHk6L14wLjU1JC8udGVzdChqLnN0eWxlLm9wYWNpdHkpLGNzc0Zsb2F0OiEhai5zdHlsZS5jc3NG
bG9hdCxjaGVja09uOmQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbMF0udmFsdWU9PT0i
b24iLG9wdFNlbGVjdGVkOnMuY3JlYXRlRWxlbWVudCgic2VsZWN0IikuYXBwZW5kQ2hpbGQocy5j
cmVhdGVFbGVtZW50KCJvcHRpb24iKSkuc2VsZWN0ZWQsCitwYXJlbnROb2RlOmQucmVtb3ZlQ2hp
bGQoZC5hcHBlbmRDaGlsZChzLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSkucGFyZW50Tm9kZT09PW51
bGwsZGVsZXRlRXhwYW5kbzp0cnVlLGNoZWNrQ2xvbmU6ZmFsc2Usc2NyaXB0RXZhbDpmYWxzZSxu
b0Nsb25lRXZlbnQ6dHJ1ZSxib3hNb2RlbDpudWxsfTtiLnR5cGU9InRleHQvamF2YXNjcmlwdCI7
dHJ5e2IuYXBwZW5kQ2hpbGQocy5jcmVhdGVUZXh0Tm9kZSgid2luZG93LiIrZisiPTE7IikpfWNh
dGNoKGkpe31hLmluc2VydEJlZm9yZShiLGEuZmlyc3RDaGlsZCk7aWYoQVtmXSl7Yy5zdXBwb3J0
LnNjcmlwdEV2YWw9dHJ1ZTtkZWxldGUgQVtmXX10cnl7ZGVsZXRlIGIudGVzdH1jYXRjaChvKXtj
LnN1cHBvcnQuZGVsZXRlRXhwYW5kbz1mYWxzZX1hLnJlbW92ZUNoaWxkKGIpO2lmKGQuYXR0YWNo
RXZlbnQmJmQuZmlyZUV2ZW50KXtkLmF0dGFjaEV2ZW50KCJvbmNsaWNrIixmdW5jdGlvbiBrKCl7
Yy5zdXBwb3J0Lm5vQ2xvbmVFdmVudD0KK2ZhbHNlO2QuZGV0YWNoRXZlbnQoIm9uY2xpY2siLGsp
fSk7ZC5jbG9uZU5vZGUodHJ1ZSkuZmlyZUV2ZW50KCJvbmNsaWNrIil9ZD1zLmNyZWF0ZUVsZW1l
bnQoImRpdiIpO2QuaW5uZXJIVE1MPSI8aW5wdXQgdHlwZT0ncmFkaW8nIG5hbWU9J3JhZGlvdGVz
dCcgY2hlY2tlZD0nY2hlY2tlZCcvPiI7YT1zLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTthLmFw
cGVuZENoaWxkKGQuZmlyc3RDaGlsZCk7Yy5zdXBwb3J0LmNoZWNrQ2xvbmU9YS5jbG9uZU5vZGUo
dHJ1ZSkuY2xvbmVOb2RlKHRydWUpLmxhc3RDaGlsZC5jaGVja2VkO2MoZnVuY3Rpb24oKXt2YXIg
az1zLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2suc3R5bGUud2lkdGg9ay5zdHlsZS5wYWRkaW5nTGVm
dD0iMXB4IjtzLmJvZHkuYXBwZW5kQ2hpbGQoayk7Yy5ib3hNb2RlbD1jLnN1cHBvcnQuYm94TW9k
ZWw9ay5vZmZzZXRXaWR0aD09PTI7cy5ib2R5LnJlbW92ZUNoaWxkKGspLnN0eWxlLmRpc3BsYXk9
Im5vbmUifSk7YT1mdW5jdGlvbihrKXt2YXIgbj0KK3MuY3JlYXRlRWxlbWVudCgiZGl2Iik7az0i
b24iK2s7dmFyIHI9ayBpbiBuO2lmKCFyKXtuLnNldEF0dHJpYnV0ZShrLCJyZXR1cm47Iik7cj10
eXBlb2YgbltrXT09PSJmdW5jdGlvbiJ9cmV0dXJuIHJ9O2Muc3VwcG9ydC5zdWJtaXRCdWJibGVz
PWEoInN1Ym1pdCIpO2Muc3VwcG9ydC5jaGFuZ2VCdWJibGVzPWEoImNoYW5nZSIpO2E9Yj1kPWU9
aj1udWxsfX0pKCk7Yy5wcm9wcz17ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSIs
cmVhZG9ubHk6InJlYWRPbmx5IixtYXhsZW5ndGg6Im1heExlbmd0aCIsY2VsbHNwYWNpbmc6ImNl
bGxTcGFjaW5nIixyb3dzcGFuOiJyb3dTcGFuIixjb2xzcGFuOiJjb2xTcGFuIix0YWJpbmRleDoi
dGFiSW5kZXgiLHVzZW1hcDoidXNlTWFwIixmcmFtZWJvcmRlcjoiZnJhbWVCb3JkZXIifTt2YXIg
Rz0ialF1ZXJ5IitKKCksWWE9MCx6YT17fTtjLmV4dGVuZCh7Y2FjaGU6e30sZXhwYW5kbzpHLG5v
RGF0YTp7ZW1iZWQ6dHJ1ZSxvYmplY3Q6dHJ1ZSwKK2FwcGxldDp0cnVlfSxkYXRhOmZ1bmN0aW9u
KGEsYixkKXtpZighKGEubm9kZU5hbWUmJmMubm9EYXRhW2Eubm9kZU5hbWUudG9Mb3dlckNhc2Uo
KV0pKXthPWE9PUE/emE6YTt2YXIgZj1hW0ddLGU9Yy5jYWNoZTtpZighZiYmdHlwZW9mIGI9PT0i
c3RyaW5nIiYmZD09PXcpcmV0dXJuIG51bGw7Znx8KGY9KytZYSk7aWYodHlwZW9mIGI9PT0ib2Jq
ZWN0Iil7YVtHXT1mO2VbZl09Yy5leHRlbmQodHJ1ZSx7fSxiKX1lbHNlIGlmKCFlW2ZdKXthW0dd
PWY7ZVtmXT17fX1hPWVbZl07aWYoZCE9PXcpYVtiXT1kO3JldHVybiB0eXBlb2YgYj09PSJzdHJp
bmciP2FbYl06YX19LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtpZighKGEubm9kZU5hbWUmJmMu
bm9EYXRhW2Eubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pKXthPWE9PUE/emE6YTt2YXIgZD1hW0dd
LGY9Yy5jYWNoZSxlPWZbZF07aWYoYil7aWYoZSl7ZGVsZXRlIGVbYl07Yy5pc0VtcHR5T2JqZWN0
KGUpJiZjLnJlbW92ZURhdGEoYSl9fWVsc2V7aWYoYy5zdXBwb3J0LmRlbGV0ZUV4cGFuZG8pZGVs
ZXRlIGFbYy5leHBhbmRvXTsKK2Vsc2UgYS5yZW1vdmVBdHRyaWJ1dGUmJmEucmVtb3ZlQXR0cmli
dXRlKGMuZXhwYW5kbyk7ZGVsZXRlIGZbZF19fX19KTtjLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlv
bihhLGIpe2lmKHR5cGVvZiBhPT09InVuZGVmaW5lZCImJnRoaXMubGVuZ3RoKXJldHVybiBjLmRh
dGEodGhpc1swXSk7ZWxzZSBpZih0eXBlb2YgYT09PSJvYmplY3QiKXJldHVybiB0aGlzLmVhY2go
ZnVuY3Rpb24oKXtjLmRhdGEodGhpcyxhKX0pO3ZhciBkPWEuc3BsaXQoIi4iKTtkWzFdPWRbMV0/
Ii4iK2RbMV06IiI7aWYoYj09PXcpe3ZhciBmPXRoaXMudHJpZ2dlckhhbmRsZXIoImdldERhdGEi
K2RbMV0rIiEiLFtkWzBdXSk7aWYoZj09PXcmJnRoaXMubGVuZ3RoKWY9Yy5kYXRhKHRoaXNbMF0s
YSk7cmV0dXJuIGY9PT13JiZkWzFdP3RoaXMuZGF0YShkWzBdKTpmfWVsc2UgcmV0dXJuIHRoaXMu
dHJpZ2dlcigic2V0RGF0YSIrZFsxXSsiISIsW2RbMF0sYl0pLmVhY2goZnVuY3Rpb24oKXtjLmRh
dGEodGhpcywKK2EsYil9KX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNo
KGZ1bmN0aW9uKCl7Yy5yZW1vdmVEYXRhKHRoaXMsYSl9KX19KTtjLmV4dGVuZCh7cXVldWU6ZnVu
Y3Rpb24oYSxiLGQpe2lmKGEpe2I9KGJ8fCJmeCIpKyJxdWV1ZSI7dmFyIGY9Yy5kYXRhKGEsYik7
aWYoIWQpcmV0dXJuIGZ8fFtdO2lmKCFmfHxjLmlzQXJyYXkoZCkpZj1jLmRhdGEoYSxiLGMubWFr
ZUFycmF5KGQpKTtlbHNlIGYucHVzaChkKTtyZXR1cm4gZn19LGRlcXVldWU6ZnVuY3Rpb24oYSxi
KXtiPWJ8fCJmeCI7dmFyIGQ9Yy5xdWV1ZShhLGIpLGY9ZC5zaGlmdCgpO2lmKGY9PT0iaW5wcm9n
cmVzcyIpZj1kLnNoaWZ0KCk7aWYoZil7Yj09PSJmeCImJmQudW5zaGlmdCgiaW5wcm9ncmVzcyIp
O2YuY2FsbChhLGZ1bmN0aW9uKCl7Yy5kZXF1ZXVlKGEsYil9KX19fSk7Yy5mbi5leHRlbmQoe3F1
ZXVlOmZ1bmN0aW9uKGEsYil7aWYodHlwZW9mIGEhPT0ic3RyaW5nIil7Yj1hO2E9ImZ4In1pZihi
PT09Cit3KXJldHVybiBjLnF1ZXVlKHRoaXNbMF0sYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlv
bigpe3ZhciBkPWMucXVldWUodGhpcyxhLGIpO2E9PT0iZngiJiZkWzBdIT09ImlucHJvZ3Jlc3Mi
JiZjLmRlcXVldWUodGhpcyxhKX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVh
Y2goZnVuY3Rpb24oKXtjLmRlcXVldWUodGhpcyxhKX0pfSxkZWxheTpmdW5jdGlvbihhLGIpe2E9
Yy5meD9jLmZ4LnNwZWVkc1thXXx8YTphO2I9Ynx8ImZ4IjtyZXR1cm4gdGhpcy5xdWV1ZShiLGZ1
bmN0aW9uKCl7dmFyIGQ9dGhpcztzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy5kZXF1ZXVlKGQsYil9
LGEpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucXVldWUoYXx8ImZ4Iixb
XSl9fSk7dmFyIEFhPS9bXG5cdF0vZyxjYT0vXHMrLyxaYT0vXHIvZywkYT0vaHJlZnxzcmN8c3R5
bGUvLGFiPS8oYnV0dG9ufGlucHV0KS9pLGJiPS8oYnV0dG9ufGlucHV0fG9iamVjdHxzZWxlY3R8
dGV4dGFyZWEpL2ksCitjYj0vXihhfGFyZWEpJC9pLEJhPS9yYWRpb3xjaGVja2JveC87Yy5mbi5l
eHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gWCh0aGlzLGEsYix0cnVlLGMuYXR0cil9
LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2MuYXR0
cih0aGlzLGEsIiIpO3RoaXMubm9kZVR5cGU9PT0xJiZ0aGlzLnJlbW92ZUF0dHJpYnV0ZShhKX0p
fSxhZGRDbGFzczpmdW5jdGlvbihhKXtpZihjLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFj
aChmdW5jdGlvbihuKXt2YXIgcj1jKHRoaXMpO3IuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsbixyLmF0
dHIoImNsYXNzIikpKX0pO2lmKGEmJnR5cGVvZiBhPT09InN0cmluZyIpZm9yKHZhciBiPShhfHwi
Iikuc3BsaXQoY2EpLGQ9MCxmPXRoaXMubGVuZ3RoO2Q8ZjtkKyspe3ZhciBlPXRoaXNbZF07aWYo
ZS5ub2RlVHlwZT09PTEpaWYoZS5jbGFzc05hbWUpe2Zvcih2YXIgaj0iICIrZS5jbGFzc05hbWUr
IiAiLAoraT1lLmNsYXNzTmFtZSxvPTAsaz1iLmxlbmd0aDtvPGs7bysrKWlmKGouaW5kZXhPZigi
ICIrYltvXSsiICIpPDApaSs9IiAiK2Jbb107ZS5jbGFzc05hbWU9Yy50cmltKGkpfWVsc2UgZS5j
bGFzc05hbWU9YX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7aWYoYy5pc0Z1
bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oayl7dmFyIG49Yyh0aGlzKTtuLnJl
bW92ZUNsYXNzKGEuY2FsbCh0aGlzLGssbi5hdHRyKCJjbGFzcyIpKSl9KTtpZihhJiZ0eXBlb2Yg
YT09PSJzdHJpbmcifHxhPT09dylmb3IodmFyIGI9KGF8fCIiKS5zcGxpdChjYSksZD0wLGY9dGhp
cy5sZW5ndGg7ZDxmO2QrKyl7dmFyIGU9dGhpc1tkXTtpZihlLm5vZGVUeXBlPT09MSYmZS5jbGFz
c05hbWUpaWYoYSl7Zm9yKHZhciBqPSgiICIrZS5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKEFhLCIg
IiksaT0wLG89Yi5sZW5ndGg7aTxvO2krKylqPWoucmVwbGFjZSgiICIrYltpXSsiICIsCisiICIp
O2UuY2xhc3NOYW1lPWMudHJpbShqKX1lbHNlIGUuY2xhc3NOYW1lPSIifXJldHVybiB0aGlzfSx0
b2dnbGVDbGFzczpmdW5jdGlvbihhLGIpe3ZhciBkPXR5cGVvZiBhLGY9dHlwZW9mIGI9PT0iYm9v
bGVhbiI7aWYoYy5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oZSl7dmFy
IGo9Yyh0aGlzKTtqLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLGUsai5hdHRyKCJjbGFzcyIpLGIp
LGIpfSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKGQ9PT0ic3RyaW5nIilmb3IodmFy
IGUsaj0wLGk9Yyh0aGlzKSxvPWIsaz1hLnNwbGl0KGNhKTtlPWtbaisrXTspe289Zj9vOiFpLmhh
c0NsYXNzKGUpO2lbbz8iYWRkQ2xhc3MiOiJyZW1vdmVDbGFzcyJdKGUpfWVsc2UgaWYoZD09PSJ1
bmRlZmluZWQifHxkPT09ImJvb2xlYW4iKXt0aGlzLmNsYXNzTmFtZSYmYy5kYXRhKHRoaXMsIl9f
Y2xhc3NOYW1lX18iLHRoaXMuY2xhc3NOYW1lKTt0aGlzLmNsYXNzTmFtZT0KK3RoaXMuY2xhc3NO
YW1lfHxhPT09ZmFsc2U/IiI6Yy5kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiJ9fSl9LGhh
c0NsYXNzOmZ1bmN0aW9uKGEpe2E9IiAiK2ErIiAiO2Zvcih2YXIgYj0wLGQ9dGhpcy5sZW5ndGg7
YjxkO2IrKylpZigoIiAiK3RoaXNbYl0uY2xhc3NOYW1lKyIgIikucmVwbGFjZShBYSwiICIpLmlu
ZGV4T2YoYSk+LTEpcmV0dXJuIHRydWU7cmV0dXJuIGZhbHNlfSx2YWw6ZnVuY3Rpb24oYSl7aWYo
YT09PXcpe3ZhciBiPXRoaXNbMF07aWYoYil7aWYoYy5ub2RlTmFtZShiLCJvcHRpb24iKSlyZXR1
cm4oYi5hdHRyaWJ1dGVzLnZhbHVlfHx7fSkuc3BlY2lmaWVkP2IudmFsdWU6Yi50ZXh0O2lmKGMu
bm9kZU5hbWUoYiwic2VsZWN0Iikpe3ZhciBkPWIuc2VsZWN0ZWRJbmRleCxmPVtdLGU9Yi5vcHRp
b25zO2I9Yi50eXBlPT09InNlbGVjdC1vbmUiO2lmKGQ8MClyZXR1cm4gbnVsbDt2YXIgaj1iP2Q6
MDtmb3IoZD1iP2QrMTplLmxlbmd0aDtqPGQ7aisrKXt2YXIgaT0KK2Vbal07aWYoaS5zZWxlY3Rl
ZCl7YT1jKGkpLnZhbCgpO2lmKGIpcmV0dXJuIGE7Zi5wdXNoKGEpfX1yZXR1cm4gZn1pZihCYS50
ZXN0KGIudHlwZSkmJiFjLnN1cHBvcnQuY2hlY2tPbilyZXR1cm4gYi5nZXRBdHRyaWJ1dGUoInZh
bHVlIik9PT1udWxsPyJvbiI6Yi52YWx1ZTtyZXR1cm4oYi52YWx1ZXx8IiIpLnJlcGxhY2UoWmEs
IiIpfXJldHVybiB3fXZhciBvPWMuaXNGdW5jdGlvbihhKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0
aW9uKGspe3ZhciBuPWModGhpcykscj1hO2lmKHRoaXMubm9kZVR5cGU9PT0xKXtpZihvKXI9YS5j
YWxsKHRoaXMsayxuLnZhbCgpKTtpZih0eXBlb2Ygcj09PSJudW1iZXIiKXIrPSIiO2lmKGMuaXNB
cnJheShyKSYmQmEudGVzdCh0aGlzLnR5cGUpKXRoaXMuY2hlY2tlZD1jLmluQXJyYXkobi52YWwo
KSxyKT49MDtlbHNlIGlmKGMubm9kZU5hbWUodGhpcywic2VsZWN0Iikpe3ZhciB1PWMubWFrZUFy
cmF5KHIpO2MoIm9wdGlvbiIsdGhpcykuZWFjaChmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWQ9Citj
LmluQXJyYXkoYyh0aGlzKS52YWwoKSx1KT49MH0pO2lmKCF1Lmxlbmd0aCl0aGlzLnNlbGVjdGVk
SW5kZXg9LTF9ZWxzZSB0aGlzLnZhbHVlPXJ9fSl9fSk7Yy5leHRlbmQoe2F0dHJGbjp7dmFsOnRy
dWUsY3NzOnRydWUsaHRtbDp0cnVlLHRleHQ6dHJ1ZSxkYXRhOnRydWUsd2lkdGg6dHJ1ZSxoZWln
aHQ6dHJ1ZSxvZmZzZXQ6dHJ1ZX0sYXR0cjpmdW5jdGlvbihhLGIsZCxmKXtpZighYXx8YS5ub2Rl
VHlwZT09PTN8fGEubm9kZVR5cGU9PT04KXJldHVybiB3O2lmKGYmJmIgaW4gYy5hdHRyRm4pcmV0
dXJuIGMoYSlbYl0oZCk7Zj1hLm5vZGVUeXBlIT09MXx8IWMuaXNYTUxEb2MoYSk7dmFyIGU9ZCE9
PXc7Yj1mJiZjLnByb3BzW2JdfHxiO2lmKGEubm9kZVR5cGU9PT0xKXt2YXIgaj0kYS50ZXN0KGIp
O2lmKGIgaW4gYSYmZiYmIWope2lmKGUpe2I9PT0idHlwZSImJmFiLnRlc3QoYS5ub2RlTmFtZSkm
JmEucGFyZW50Tm9kZSYmYy5lcnJvcigidHlwZSBwcm9wZXJ0eSBjYW4ndCBiZSBjaGFuZ2VkIik7
CithW2JdPWR9aWYoYy5ub2RlTmFtZShhLCJmb3JtIikmJmEuZ2V0QXR0cmlidXRlTm9kZShiKSly
ZXR1cm4gYS5nZXRBdHRyaWJ1dGVOb2RlKGIpLm5vZGVWYWx1ZTtpZihiPT09InRhYkluZGV4Iily
ZXR1cm4oYj1hLmdldEF0dHJpYnV0ZU5vZGUoInRhYkluZGV4IikpJiZiLnNwZWNpZmllZD9iLnZh
bHVlOmJiLnRlc3QoYS5ub2RlTmFtZSl8fGNiLnRlc3QoYS5ub2RlTmFtZSkmJmEuaHJlZj8wOnc7
cmV0dXJuIGFbYl19aWYoIWMuc3VwcG9ydC5zdHlsZSYmZiYmYj09PSJzdHlsZSIpe2lmKGUpYS5z
dHlsZS5jc3NUZXh0PSIiK2Q7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dH1lJiZhLnNldEF0dHJpYnV0
ZShiLCIiK2QpO2E9IWMuc3VwcG9ydC5ocmVmTm9ybWFsaXplZCYmZiYmaj9hLmdldEF0dHJpYnV0
ZShiLDIpOmEuZ2V0QXR0cmlidXRlKGIpO3JldHVybiBhPT09bnVsbD93OmF9cmV0dXJuIGMuc3R5
bGUoYSxiLGQpfX0pO3ZhciBPPS9cLiguKikkLyxkYj1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBs
YWNlKC9bXlx3XHNcLlx8YF0vZywKK2Z1bmN0aW9uKGIpe3JldHVybiJcXCIrYn0pfTtjLmV2ZW50
PXthZGQ6ZnVuY3Rpb24oYSxiLGQsZil7aWYoIShhLm5vZGVUeXBlPT09M3x8YS5ub2RlVHlwZT09
PTgpKXtpZihhLnNldEludGVydmFsJiZhIT09QSYmIWEuZnJhbWVFbGVtZW50KWE9QTt2YXIgZSxq
O2lmKGQuaGFuZGxlcil7ZT1kO2Q9ZS5oYW5kbGVyfWlmKCFkLmd1aWQpZC5ndWlkPWMuZ3VpZCsr
O2lmKGo9Yy5kYXRhKGEpKXt2YXIgaT1qLmV2ZW50cz1qLmV2ZW50c3x8e30sbz1qLmhhbmRsZTtp
ZighbylqLmhhbmRsZT1vPWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBjIT09InVuZGVmaW5lZCIm
JiFjLmV2ZW50LnRyaWdnZXJlZD9jLmV2ZW50LmhhbmRsZS5hcHBseShvLmVsZW0sYXJndW1lbnRz
KTp3fTtvLmVsZW09YTtiPWIuc3BsaXQoIiAiKTtmb3IodmFyIGssbj0wLHI7az1iW24rK107KXtq
PWU/Yy5leHRlbmQoe30sZSk6e2hhbmRsZXI6ZCxkYXRhOmZ9O2lmKGsuaW5kZXhPZigiLiIpPi0x
KXtyPWsuc3BsaXQoIi4iKTsKK2s9ci5zaGlmdCgpO2oubmFtZXNwYWNlPXIuc2xpY2UoMCkuc29y
dCgpLmpvaW4oIi4iKX1lbHNle3I9W107ai5uYW1lc3BhY2U9IiJ9ai50eXBlPWs7ai5ndWlkPWQu
Z3VpZDt2YXIgdT1pW2tdLHo9Yy5ldmVudC5zcGVjaWFsW2tdfHx7fTtpZighdSl7dT1pW2tdPVtd
O2lmKCF6LnNldHVwfHx6LnNldHVwLmNhbGwoYSxmLHIsbyk9PT1mYWxzZSlpZihhLmFkZEV2ZW50
TGlzdGVuZXIpYS5hZGRFdmVudExpc3RlbmVyKGssbyxmYWxzZSk7ZWxzZSBhLmF0dGFjaEV2ZW50
JiZhLmF0dGFjaEV2ZW50KCJvbiIrayxvKX1pZih6LmFkZCl7ei5hZGQuY2FsbChhLGopO2lmKCFq
LmhhbmRsZXIuZ3VpZClqLmhhbmRsZXIuZ3VpZD1kLmd1aWR9dS5wdXNoKGopO2MuZXZlbnQuZ2xv
YmFsW2tdPXRydWV9YT1udWxsfX19LGdsb2JhbDp7fSxyZW1vdmU6ZnVuY3Rpb24oYSxiLGQsZil7
aWYoIShhLm5vZGVUeXBlPT09M3x8YS5ub2RlVHlwZT09PTgpKXt2YXIgZSxqPTAsaSxvLGssbixy
LHUsej1jLmRhdGEoYSksCitDPXomJnouZXZlbnRzO2lmKHomJkMpe2lmKGImJmIudHlwZSl7ZD1i
LmhhbmRsZXI7Yj1iLnR5cGV9aWYoIWJ8fHR5cGVvZiBiPT09InN0cmluZyImJmIuY2hhckF0KDAp
PT09Ii4iKXtiPWJ8fCIiO2ZvcihlIGluIEMpYy5ldmVudC5yZW1vdmUoYSxlK2IpfWVsc2V7Zm9y
KGI9Yi5zcGxpdCgiICIpO2U9YltqKytdOyl7bj1lO2k9ZS5pbmRleE9mKCIuIik8MDtvPVtdO2lm
KCFpKXtvPWUuc3BsaXQoIi4iKTtlPW8uc2hpZnQoKTtrPW5ldyBSZWdFeHAoIihefFxcLikiK2Mu
bWFwKG8uc2xpY2UoMCkuc29ydCgpLGRiKS5qb2luKCJcXC4oPzouKlxcLik/IikrIihcXC58JCki
KX1pZihyPUNbZV0paWYoZCl7bj1jLmV2ZW50LnNwZWNpYWxbZV18fHt9O2ZvcihCPWZ8fDA7Qjxy
Lmxlbmd0aDtCKyspe3U9cltCXTtpZihkLmd1aWQ9PT11Lmd1aWQpe2lmKGl8fGsudGVzdCh1Lm5h
bWVzcGFjZSkpe2Y9PW51bGwmJnIuc3BsaWNlKEItLSwxKTtuLnJlbW92ZSYmbi5yZW1vdmUuY2Fs
bChhLHUpfWlmKGYhPQorbnVsbClicmVha319aWYoci5sZW5ndGg9PT0wfHxmIT1udWxsJiZyLmxl
bmd0aD09PTEpe2lmKCFuLnRlYXJkb3dufHxuLnRlYXJkb3duLmNhbGwoYSxvKT09PWZhbHNlKUNh
KGEsZSx6LmhhbmRsZSk7ZGVsZXRlIENbZV19fWVsc2UgZm9yKHZhciBCPTA7QjxyLmxlbmd0aDtC
Kyspe3U9cltCXTtpZihpfHxrLnRlc3QodS5uYW1lc3BhY2UpKXtjLmV2ZW50LnJlbW92ZShhLG4s
dS5oYW5kbGVyLEIpO3Iuc3BsaWNlKEItLSwxKX19fWlmKGMuaXNFbXB0eU9iamVjdChDKSl7aWYo
Yj16LmhhbmRsZSliLmVsZW09bnVsbDtkZWxldGUgei5ldmVudHM7ZGVsZXRlIHouaGFuZGxlO2Mu
aXNFbXB0eU9iamVjdCh6KSYmYy5yZW1vdmVEYXRhKGEpfX19fX0sdHJpZ2dlcjpmdW5jdGlvbihh
LGIsZCxmKXt2YXIgZT1hLnR5cGV8fGE7aWYoIWYpe2E9dHlwZW9mIGE9PT0ib2JqZWN0Ij9hW0dd
P2E6Yy5leHRlbmQoYy5FdmVudChlKSxhKTpjLkV2ZW50KGUpO2lmKGUuaW5kZXhPZigiISIpPj0w
KXthLnR5cGU9CitlPWUuc2xpY2UoMCwtMSk7YS5leGNsdXNpdmU9dHJ1ZX1pZighZCl7YS5zdG9w
UHJvcGFnYXRpb24oKTtjLmV2ZW50Lmdsb2JhbFtlXSYmYy5lYWNoKGMuY2FjaGUsZnVuY3Rpb24o
KXt0aGlzLmV2ZW50cyYmdGhpcy5ldmVudHNbZV0mJmMuZXZlbnQudHJpZ2dlcihhLGIsdGhpcy5o
YW5kbGUuZWxlbSl9KX1pZighZHx8ZC5ub2RlVHlwZT09PTN8fGQubm9kZVR5cGU9PT04KXJldHVy
biB3O2EucmVzdWx0PXc7YS50YXJnZXQ9ZDtiPWMubWFrZUFycmF5KGIpO2IudW5zaGlmdChhKX1h
LmN1cnJlbnRUYXJnZXQ9ZDsoZj1jLmRhdGEoZCwiaGFuZGxlIikpJiZmLmFwcGx5KGQsYik7Zj1k
LnBhcmVudE5vZGV8fGQub3duZXJEb2N1bWVudDt0cnl7aWYoIShkJiZkLm5vZGVOYW1lJiZjLm5v
RGF0YVtkLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKSlpZihkWyJvbiIrZV0mJmRbIm9uIitlXS5h
cHBseShkLGIpPT09ZmFsc2UpYS5yZXN1bHQ9ZmFsc2V9Y2F0Y2goail7fWlmKCFhLmlzUHJvcGFn
YXRpb25TdG9wcGVkKCkmJgorZiljLmV2ZW50LnRyaWdnZXIoYSxiLGYsdHJ1ZSk7ZWxzZSBpZigh
YS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7Zj1hLnRhcmdldDt2YXIgaSxvPWMubm9kZU5hbWUoZiwi
YSIpJiZlPT09ImNsaWNrIixrPWMuZXZlbnQuc3BlY2lhbFtlXXx8e307aWYoKCFrLl9kZWZhdWx0
fHxrLl9kZWZhdWx0LmNhbGwoZCxhKT09PWZhbHNlKSYmIW8mJiEoZiYmZi5ub2RlTmFtZSYmYy5u
b0RhdGFbZi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkpe3RyeXtpZihmW2VdKXtpZihpPWZbIm9u
IitlXSlmWyJvbiIrZV09bnVsbDtjLmV2ZW50LnRyaWdnZXJlZD10cnVlO2ZbZV0oKX19Y2F0Y2go
bil7fWlmKGkpZlsib24iK2VdPWk7Yy5ldmVudC50cmlnZ2VyZWQ9ZmFsc2V9fX0saGFuZGxlOmZ1
bmN0aW9uKGEpe3ZhciBiLGQsZixlO2E9YXJndW1lbnRzWzBdPWMuZXZlbnQuZml4KGF8fEEuZXZl
bnQpO2EuY3VycmVudFRhcmdldD10aGlzO2I9YS50eXBlLmluZGV4T2YoIi4iKTwwJiYhYS5leGNs
dXNpdmU7CitpZighYil7ZD1hLnR5cGUuc3BsaXQoIi4iKTthLnR5cGU9ZC5zaGlmdCgpO2Y9bmV3
IFJlZ0V4cCgiKF58XFwuKSIrZC5zbGljZSgwKS5zb3J0KCkuam9pbigiXFwuKD86LipcXC4pPyIp
KyIoXFwufCQpIil9ZT1jLmRhdGEodGhpcywiZXZlbnRzIik7ZD1lW2EudHlwZV07aWYoZSYmZCl7
ZD1kLnNsaWNlKDApO2U9MDtmb3IodmFyIGo9ZC5sZW5ndGg7ZTxqO2UrKyl7dmFyIGk9ZFtlXTtp
ZihifHxmLnRlc3QoaS5uYW1lc3BhY2UpKXthLmhhbmRsZXI9aS5oYW5kbGVyO2EuZGF0YT1pLmRh
dGE7YS5oYW5kbGVPYmo9aTtpPWkuaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoaSE9
PXcpe2EucmVzdWx0PWk7aWYoaT09PWZhbHNlKXthLnByZXZlbnREZWZhdWx0KCk7YS5zdG9wUHJv
cGFnYXRpb24oKX19aWYoYS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrfX19
cmV0dXJuIGEucmVzdWx0fSxwcm9wczoiYWx0S2V5IGF0dHJDaGFuZ2UgYXR0ck5hbWUgYnViYmxl
cyBidXR0b24gY2FuY2VsYWJsZSBjaGFyQ29kZSBjbGllbnRYIGNsaWVudFkgY3RybEtleSBjdXJy
ZW50VGFyZ2V0IGRhdGEgZGV0YWlsIGV2ZW50UGhhc2UgZnJvbUVsZW1lbnQgaGFuZGxlciBrZXlD
b2RlIGxheWVyWCBsYXllclkgbWV0YUtleSBuZXdWYWx1ZSBvZmZzZXRYIG9mZnNldFkgb3JpZ2lu
YWxUYXJnZXQgcGFnZVggcGFnZVkgcHJldlZhbHVlIHJlbGF0ZWROb2RlIHJlbGF0ZWRUYXJnZXQg
c2NyZWVuWCBzY3JlZW5ZIHNoaWZ0S2V5IHNyY0VsZW1lbnQgdGFyZ2V0IHRvRWxlbWVudCB2aWV3
IHdoZWVsRGVsdGEgd2hpY2giLnNwbGl0KCIgIiksCitmaXg6ZnVuY3Rpb24oYSl7aWYoYVtHXSly
ZXR1cm4gYTt2YXIgYj1hO2E9Yy5FdmVudChiKTtmb3IodmFyIGQ9dGhpcy5wcm9wcy5sZW5ndGgs
ZjtkOyl7Zj10aGlzLnByb3BzWy0tZF07YVtmXT1iW2ZdfWlmKCFhLnRhcmdldClhLnRhcmdldD1h
LnNyY0VsZW1lbnR8fHM7aWYoYS50YXJnZXQubm9kZVR5cGU9PT0zKWEudGFyZ2V0PWEudGFyZ2V0
LnBhcmVudE5vZGU7aWYoIWEucmVsYXRlZFRhcmdldCYmYS5mcm9tRWxlbWVudClhLnJlbGF0ZWRU
YXJnZXQ9YS5mcm9tRWxlbWVudD09PWEudGFyZ2V0P2EudG9FbGVtZW50OmEuZnJvbUVsZW1lbnQ7
aWYoYS5wYWdlWD09bnVsbCYmYS5jbGllbnRYIT1udWxsKXtiPXMuZG9jdW1lbnRFbGVtZW50O2Q9
cy5ib2R5O2EucGFnZVg9YS5jbGllbnRYKyhiJiZiLnNjcm9sbExlZnR8fGQmJmQuc2Nyb2xsTGVm
dHx8MCktKGImJmIuY2xpZW50TGVmdHx8ZCYmZC5jbGllbnRMZWZ0fHwwKTthLnBhZ2VZPWEuY2xp
ZW50WSsoYiYmYi5zY3JvbGxUb3B8fAorZCYmZC5zY3JvbGxUb3B8fDApLShiJiZiLmNsaWVudFRv
cHx8ZCYmZC5jbGllbnRUb3B8fDApfWlmKCFhLndoaWNoJiYoYS5jaGFyQ29kZXx8YS5jaGFyQ29k
ZT09PTA/YS5jaGFyQ29kZTphLmtleUNvZGUpKWEud2hpY2g9YS5jaGFyQ29kZXx8YS5rZXlDb2Rl
O2lmKCFhLm1ldGFLZXkmJmEuY3RybEtleSlhLm1ldGFLZXk9YS5jdHJsS2V5O2lmKCFhLndoaWNo
JiZhLmJ1dHRvbiE9PXcpYS53aGljaD1hLmJ1dHRvbiYxPzE6YS5idXR0b24mMj8zOmEuYnV0dG9u
JjQ/MjowO3JldHVybiBhfSxndWlkOjFFOCxwcm94eTpjLnByb3h5LHNwZWNpYWw6e3JlYWR5Ontz
ZXR1cDpjLmJpbmRSZWFkeSx0ZWFyZG93bjpjLm5vb3B9LGxpdmU6e2FkZDpmdW5jdGlvbihhKXtj
LmV2ZW50LmFkZCh0aGlzLGEub3JpZ1R5cGUsYy5leHRlbmQoe30sYSx7aGFuZGxlcjpvYX0pKX0s
cmVtb3ZlOmZ1bmN0aW9uKGEpe3ZhciBiPXRydWUsZD1hLm9yaWdUeXBlLnJlcGxhY2UoTywiIik7
Yy5lYWNoKGMuZGF0YSh0aGlzLAorImV2ZW50cyIpLmxpdmV8fFtdLGZ1bmN0aW9uKCl7aWYoZD09
PXRoaXMub3JpZ1R5cGUucmVwbGFjZShPLCIiKSlyZXR1cm4gYj1mYWxzZX0pO2ImJmMuZXZlbnQu
cmVtb3ZlKHRoaXMsYS5vcmlnVHlwZSxvYSl9fSxiZWZvcmV1bmxvYWQ6e3NldHVwOmZ1bmN0aW9u
KGEsYixkKXtpZih0aGlzLnNldEludGVydmFsKXRoaXMub25iZWZvcmV1bmxvYWQ9ZDtyZXR1cm4g
ZmFsc2V9LHRlYXJkb3duOmZ1bmN0aW9uKGEsYil7aWYodGhpcy5vbmJlZm9yZXVubG9hZD09PWIp
dGhpcy5vbmJlZm9yZXVubG9hZD1udWxsfX19fTt2YXIgQ2E9cy5yZW1vdmVFdmVudExpc3RlbmVy
P2Z1bmN0aW9uKGEsYixkKXthLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixkLGZhbHNlKX06ZnVuY3Rp
b24oYSxiLGQpe2EuZGV0YWNoRXZlbnQoIm9uIitiLGQpfTtjLkV2ZW50PWZ1bmN0aW9uKGEpe2lm
KCF0aGlzLnByZXZlbnREZWZhdWx0KXJldHVybiBuZXcgYy5FdmVudChhKTtpZihhJiZhLnR5cGUp
e3RoaXMub3JpZ2luYWxFdmVudD0KK2E7dGhpcy50eXBlPWEudHlwZX1lbHNlIHRoaXMudHlwZT1h
O3RoaXMudGltZVN0YW1wPUooKTt0aGlzW0ddPXRydWV9O2MuRXZlbnQucHJvdG90eXBlPXtwcmV2
ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPVo7dmFyIGE9dGhp
cy5vcmlnaW5hbEV2ZW50O2lmKGEpe2EucHJldmVudERlZmF1bHQmJmEucHJldmVudERlZmF1bHQo
KTthLnJldHVyblZhbHVlPWZhbHNlfX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5p
c1Byb3BhZ2F0aW9uU3RvcHBlZD1aO3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDtpZihhKXthLnN0
b3BQcm9wYWdhdGlvbiYmYS5zdG9wUHJvcGFnYXRpb24oKTthLmNhbmNlbEJ1YmJsZT10cnVlfX0s
c3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc0ltbWVkaWF0ZVByb3Bh
Z2F0aW9uU3RvcHBlZD1aO3RoaXMuc3RvcFByb3BhZ2F0aW9uKCl9LGlzRGVmYXVsdFByZXZlbnRl
ZDpZLGlzUHJvcGFnYXRpb25TdG9wcGVkOlksCitpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBl
ZDpZfTt2YXIgRGE9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZWxhdGVkVGFyZ2V0O3RyeXtmb3IoO2Im
JmIhPT10aGlzOyliPWIucGFyZW50Tm9kZTtpZihiIT09dGhpcyl7YS50eXBlPWEuZGF0YTtjLmV2
ZW50LmhhbmRsZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWNhdGNoKGQpe319LEVhPWZ1bmN0aW9u
KGEpe2EudHlwZT1hLmRhdGE7Yy5ldmVudC5oYW5kbGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtj
LmVhY2goe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSxmdW5j
dGlvbihhLGIpe2MuZXZlbnQuc3BlY2lhbFthXT17c2V0dXA6ZnVuY3Rpb24oZCl7Yy5ldmVudC5h
ZGQodGhpcyxiLGQmJmQuc2VsZWN0b3I/RWE6RGEsYSl9LHRlYXJkb3duOmZ1bmN0aW9uKGQpe2Mu
ZXZlbnQucmVtb3ZlKHRoaXMsYixkJiZkLnNlbGVjdG9yP0VhOkRhKX19fSk7aWYoIWMuc3VwcG9y
dC5zdWJtaXRCdWJibGVzKWMuZXZlbnQuc3BlY2lhbC5zdWJtaXQ9Cit7c2V0dXA6ZnVuY3Rpb24o
KXtpZih0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkhPT0iZm9ybSIpe2MuZXZlbnQuYWRkKHRo
aXMsImNsaWNrLnNwZWNpYWxTdWJtaXQiLGZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0LGQ9Yi50
eXBlO2lmKChkPT09InN1Ym1pdCJ8fGQ9PT0iaW1hZ2UiKSYmYyhiKS5jbG9zZXN0KCJmb3JtIiku
bGVuZ3RoKXJldHVybiBuYSgic3VibWl0Iix0aGlzLGFyZ3VtZW50cyl9KTtjLmV2ZW50LmFkZCh0
aGlzLCJrZXlwcmVzcy5zcGVjaWFsU3VibWl0IixmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldCxk
PWIudHlwZTtpZigoZD09PSJ0ZXh0Inx8ZD09PSJwYXNzd29yZCIpJiZjKGIpLmNsb3Nlc3QoImZv
cm0iKS5sZW5ndGgmJmEua2V5Q29kZT09PTEzKXJldHVybiBuYSgic3VibWl0Iix0aGlzLGFyZ3Vt
ZW50cyl9KX1lbHNlIHJldHVybiBmYWxzZX0sdGVhcmRvd246ZnVuY3Rpb24oKXtjLmV2ZW50LnJl
bW92ZSh0aGlzLCIuc3BlY2lhbFN1Ym1pdCIpfX07CitpZighYy5zdXBwb3J0LmNoYW5nZUJ1YmJs
ZXMpe3ZhciBkYT0vdGV4dGFyZWF8aW5wdXR8c2VsZWN0L2ksZWEsRmE9ZnVuY3Rpb24oYSl7dmFy
IGI9YS50eXBlLGQ9YS52YWx1ZTtpZihiPT09InJhZGlvInx8Yj09PSJjaGVja2JveCIpZD1hLmNo
ZWNrZWQ7ZWxzZSBpZihiPT09InNlbGVjdC1tdWx0aXBsZSIpZD1hLnNlbGVjdGVkSW5kZXg+LTE/
Yy5tYXAoYS5vcHRpb25zLGZ1bmN0aW9uKGYpe3JldHVybiBmLnNlbGVjdGVkfSkuam9pbigiLSIp
OiIiO2Vsc2UgaWYoYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09InNlbGVjdCIpZD1hLnNlbGVj
dGVkSW5kZXg7cmV0dXJuIGR9LGZhPWZ1bmN0aW9uKGEsYil7dmFyIGQ9YS50YXJnZXQsZixlO2lm
KCEoIWRhLnRlc3QoZC5ub2RlTmFtZSl8fGQucmVhZE9ubHkpKXtmPWMuZGF0YShkLCJfY2hhbmdl
X2RhdGEiKTtlPUZhKGQpO2lmKGEudHlwZSE9PSJmb2N1c291dCJ8fGQudHlwZSE9PSJyYWRpbyIp
Yy5kYXRhKGQsIl9jaGFuZ2VfZGF0YSIsCitlKTtpZighKGY9PT13fHxlPT09ZikpaWYoZiE9bnVs
bHx8ZSl7YS50eXBlPSJjaGFuZ2UiO3JldHVybiBjLmV2ZW50LnRyaWdnZXIoYSxiLGQpfX19O2Mu
ZXZlbnQuc3BlY2lhbC5jaGFuZ2U9e2ZpbHRlcnM6e2ZvY3Vzb3V0OmZhLGNsaWNrOmZ1bmN0aW9u
KGEpe3ZhciBiPWEudGFyZ2V0LGQ9Yi50eXBlO2lmKGQ9PT0icmFkaW8ifHxkPT09ImNoZWNrYm94
Inx8Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09InNlbGVjdCIpcmV0dXJuIGZhLmNhbGwodGhp
cyxhKX0sa2V5ZG93bjpmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldCxkPWIudHlwZTtpZihhLmtl
eUNvZGU9PT0xMyYmYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIT09InRleHRhcmVhInx8YS5rZXlD
b2RlPT09MzImJihkPT09ImNoZWNrYm94Inx8ZD09PSJyYWRpbyIpfHxkPT09InNlbGVjdC1tdWx0
aXBsZSIpcmV0dXJuIGZhLmNhbGwodGhpcyxhKX0sYmVmb3JlYWN0aXZhdGU6ZnVuY3Rpb24oYSl7
YT1hLnRhcmdldDtjLmRhdGEoYSwKKyJfY2hhbmdlX2RhdGEiLEZhKGEpKX19LHNldHVwOmZ1bmN0
aW9uKCl7aWYodGhpcy50eXBlPT09ImZpbGUiKXJldHVybiBmYWxzZTtmb3IodmFyIGEgaW4gZWEp
Yy5ldmVudC5hZGQodGhpcyxhKyIuc3BlY2lhbENoYW5nZSIsZWFbYV0pO3JldHVybiBkYS50ZXN0
KHRoaXMubm9kZU5hbWUpfSx0ZWFyZG93bjpmdW5jdGlvbigpe2MuZXZlbnQucmVtb3ZlKHRoaXMs
Ii5zcGVjaWFsQ2hhbmdlIik7cmV0dXJuIGRhLnRlc3QodGhpcy5ub2RlTmFtZSl9fTtlYT1jLmV2
ZW50LnNwZWNpYWwuY2hhbmdlLmZpbHRlcnN9cy5hZGRFdmVudExpc3RlbmVyJiZjLmVhY2goe2Zv
Y3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gZChm
KXtmPWMuZXZlbnQuZml4KGYpO2YudHlwZT1iO3JldHVybiBjLmV2ZW50LmhhbmRsZS5jYWxsKHRo
aXMsZil9Yy5ldmVudC5zcGVjaWFsW2JdPXtzZXR1cDpmdW5jdGlvbigpe3RoaXMuYWRkRXZlbnRM
aXN0ZW5lcihhLAorZCx0cnVlKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUV2ZW50
TGlzdGVuZXIoYSxkLHRydWUpfX19KTtjLmVhY2goWyJiaW5kIiwib25lIl0sZnVuY3Rpb24oYSxi
KXtjLmZuW2JdPWZ1bmN0aW9uKGQsZixlKXtpZih0eXBlb2YgZD09PSJvYmplY3QiKXtmb3IodmFy
IGogaW4gZCl0aGlzW2JdKGosZixkW2pdLGUpO3JldHVybiB0aGlzfWlmKGMuaXNGdW5jdGlvbihm
KSl7ZT1mO2Y9d312YXIgaT1iPT09Im9uZSI/Yy5wcm94eShlLGZ1bmN0aW9uKGspe2ModGhpcyku
dW5iaW5kKGssaSk7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSk6ZTtpZihkPT09InVu
bG9hZCImJmIhPT0ib25lIil0aGlzLm9uZShkLGYsZSk7ZWxzZXtqPTA7Zm9yKHZhciBvPXRoaXMu
bGVuZ3RoO2o8bztqKyspYy5ldmVudC5hZGQodGhpc1tqXSxkLGksZil9cmV0dXJuIHRoaXN9fSk7
Yy5mbi5leHRlbmQoe3VuYmluZDpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBhPT09Im9iamVjdCIm
JgorIWEucHJldmVudERlZmF1bHQpZm9yKHZhciBkIGluIGEpdGhpcy51bmJpbmQoZCxhW2RdKTtl
bHNle2Q9MDtmb3IodmFyIGY9dGhpcy5sZW5ndGg7ZDxmO2QrKyljLmV2ZW50LnJlbW92ZSh0aGlz
W2RdLGEsYil9cmV0dXJuIHRoaXN9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixkLGYpe3JldHVybiB0
aGlzLmxpdmUoYixkLGYsYSl9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGQpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPT09MD90aGlzLnVuYmluZCgibGl2ZSIpOnRoaXMuZGllKGIsbnVsbCxkLGEp
fSx0cmlnZ2VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2MuZXZl
bnQudHJpZ2dlcihhLGIsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oYSxiKXtpZih0
aGlzWzBdKXthPWMuRXZlbnQoYSk7YS5wcmV2ZW50RGVmYXVsdCgpO2Euc3RvcFByb3BhZ2F0aW9u
KCk7Yy5ldmVudC50cmlnZ2VyKGEsYix0aGlzWzBdKTtyZXR1cm4gYS5yZXN1bHR9fSwKK3RvZ2ds
ZTpmdW5jdGlvbihhKXtmb3IodmFyIGI9YXJndW1lbnRzLGQ9MTtkPGIubGVuZ3RoOyljLnByb3h5
KGEsYltkKytdKTtyZXR1cm4gdGhpcy5jbGljayhjLnByb3h5KGEsZnVuY3Rpb24oZil7dmFyIGU9
KGMuZGF0YSh0aGlzLCJsYXN0VG9nZ2xlIithLmd1aWQpfHwwKSVkO2MuZGF0YSh0aGlzLCJsYXN0
VG9nZ2xlIithLmd1aWQsZSsxKTtmLnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIGJbZV0uYXBwbHko
dGhpcyxhcmd1bWVudHMpfHxmYWxzZX0pKX0saG92ZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhp
cy5tb3VzZWVudGVyKGEpLm1vdXNlbGVhdmUoYnx8YSl9fSk7dmFyIEdhPXtmb2N1czoiZm9jdXNp
biIsYmx1cjoiZm9jdXNvdXQiLG1vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91
c2VvdXQifTtjLmVhY2goWyJsaXZlIiwiZGllIl0sZnVuY3Rpb24oYSxiKXtjLmZuW2JdPWZ1bmN0
aW9uKGQsZixlLGope3ZhciBpLG89MCxrLG4scj1qfHx0aGlzLnNlbGVjdG9yLAordT1qP3RoaXM6
Yyh0aGlzLmNvbnRleHQpO2lmKGMuaXNGdW5jdGlvbihmKSl7ZT1mO2Y9d31mb3IoZD0oZHx8IiIp
LnNwbGl0KCIgIik7KGk9ZFtvKytdKSE9bnVsbDspe2o9Ty5leGVjKGkpO2s9IiI7aWYoail7az1q
WzBdO2k9aS5yZXBsYWNlKE8sIiIpfWlmKGk9PT0iaG92ZXIiKWQucHVzaCgibW91c2VlbnRlciIr
aywibW91c2VsZWF2ZSIrayk7ZWxzZXtuPWk7aWYoaT09PSJmb2N1cyJ8fGk9PT0iYmx1ciIpe2Qu
cHVzaChHYVtpXStrKTtpKz1rfWVsc2UgaT0oR2FbaV18fGkpK2s7Yj09PSJsaXZlIj91LmVhY2go
ZnVuY3Rpb24oKXtjLmV2ZW50LmFkZCh0aGlzLHBhKGkscikse2RhdGE6ZixzZWxlY3RvcjpyLGhh
bmRsZXI6ZSxvcmlnVHlwZTppLG9yaWdIYW5kbGVyOmUscHJlVHlwZTpufSl9KTp1LnVuYmluZChw
YShpLHIpLGUpfX1yZXR1cm4gdGhpc319KTtjLmVhY2goImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1
c291dCBsb2FkIHJlc2l6ZSBzY3JvbGwgdW5sb2FkIGNsaWNrIGRibGNsaWNrIG1vdXNlZG93biBt
b3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZl
IGNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgZXJyb3IiLnNwbGl0
KCIgIiksCitmdW5jdGlvbihhLGIpe2MuZm5bYl09ZnVuY3Rpb24oZCl7cmV0dXJuIGQ/dGhpcy5i
aW5kKGIsZCk6dGhpcy50cmlnZ2VyKGIpfTtpZihjLmF0dHJGbiljLmF0dHJGbltiXT10cnVlfSk7
QS5hdHRhY2hFdmVudCYmIUEuYWRkRXZlbnRMaXN0ZW5lciYmQS5hdHRhY2hFdmVudCgib251bmxv
YWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhIGluIGMuY2FjaGUpaWYoYy5jYWNoZVthXS5oYW5kbGUp
dHJ5e2MuZXZlbnQucmVtb3ZlKGMuY2FjaGVbYV0uaGFuZGxlLmVsZW0pfWNhdGNoKGIpe319KTso
ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGcpe2Zvcih2YXIgaD0iIixsLG09MDtnW21dO20rKyl7bD1n
W21dO2lmKGwubm9kZVR5cGU9PT0zfHxsLm5vZGVUeXBlPT09NCloKz1sLm5vZGVWYWx1ZTtlbHNl
IGlmKGwubm9kZVR5cGUhPT04KWgrPWEobC5jaGlsZE5vZGVzKX1yZXR1cm4gaH1mdW5jdGlvbiBi
KGcsaCxsLG0scSxwKXtxPTA7Zm9yKHZhciB2PW0ubGVuZ3RoO3E8djtxKyspe3ZhciB0PW1bcV07
CitpZih0KXt0PXRbZ107Zm9yKHZhciB5PWZhbHNlO3Q7KXtpZih0LnNpemNhY2hlPT09bCl7eT1t
W3Quc2l6c2V0XTticmVha31pZih0Lm5vZGVUeXBlPT09MSYmIXApe3Quc2l6Y2FjaGU9bDt0LnNp
enNldD1xfWlmKHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWgpe3k9dDticmVha310PXRbZ119
bVtxXT15fX19ZnVuY3Rpb24gZChnLGgsbCxtLHEscCl7cT0wO2Zvcih2YXIgdj1tLmxlbmd0aDtx
PHY7cSsrKXt2YXIgdD1tW3FdO2lmKHQpe3Q9dFtnXTtmb3IodmFyIHk9ZmFsc2U7dDspe2lmKHQu
c2l6Y2FjaGU9PT1sKXt5PW1bdC5zaXpzZXRdO2JyZWFrfWlmKHQubm9kZVR5cGU9PT0xKXtpZigh
cCl7dC5zaXpjYWNoZT1sO3Quc2l6c2V0PXF9aWYodHlwZW9mIGghPT0ic3RyaW5nIil7aWYodD09
PWgpe3k9dHJ1ZTticmVha319ZWxzZSBpZihrLmZpbHRlcihoLFt0XSkubGVuZ3RoPjApe3k9dDti
cmVha319dD10W2ddfW1bcV09eX19fXZhciBmPS8oKD86XCgoPzpcKFteKCldK1wpfFteKCldKykr
XCl8XFsoPzpcW1teW1xdXSpcXXxbJyJdW14nIl0qWyciXXxbXltcXSciXSspK1xdfFxcLnxbXiA+
K34sKFxbXFxdKykrfFs+K35dKShccyosXHMqKT8oKD86LnxccnxcbikqKS9nLAorZT0wLGo9T2Jq
ZWN0LnByb3RvdHlwZS50b1N0cmluZyxpPWZhbHNlLG89dHJ1ZTtbMCwwXS5zb3J0KGZ1bmN0aW9u
KCl7bz1mYWxzZTtyZXR1cm4gMH0pO3ZhciBrPWZ1bmN0aW9uKGcsaCxsLG0pe2w9bHx8W107dmFy
IHE9aD1ofHxzO2lmKGgubm9kZVR5cGUhPT0xJiZoLm5vZGVUeXBlIT09OSlyZXR1cm5bXTtpZigh
Z3x8dHlwZW9mIGchPT0ic3RyaW5nIilyZXR1cm4gbDtmb3IodmFyIHA9W10sdix0LHksUyxIPXRy
dWUsTT14KGgpLEk9ZzsoZi5leGVjKCIiKSx2PWYuZXhlYyhJKSkhPT1udWxsOyl7ST12WzNdO3Au
cHVzaCh2WzFdKTtpZih2WzJdKXtTPXZbM107YnJlYWt9fWlmKHAubGVuZ3RoPjEmJnIuZXhlYyhn
KSlpZihwLmxlbmd0aD09PTImJm4ucmVsYXRpdmVbcFswXV0pdD1nYShwWzBdK3BbMV0saCk7ZWxz
ZSBmb3IodD1uLnJlbGF0aXZlW3BbMF1dP1toXTprKHAuc2hpZnQoKSxoKTtwLmxlbmd0aDspe2c9
cC5zaGlmdCgpO2lmKG4ucmVsYXRpdmVbZ10pZys9cC5zaGlmdCgpOwordD1nYShnLHQpfWVsc2V7
aWYoIW0mJnAubGVuZ3RoPjEmJmgubm9kZVR5cGU9PT05JiYhTSYmbi5tYXRjaC5JRC50ZXN0KHBb
MF0pJiYhbi5tYXRjaC5JRC50ZXN0KHBbcC5sZW5ndGgtMV0pKXt2PWsuZmluZChwLnNoaWZ0KCks
aCxNKTtoPXYuZXhwcj9rLmZpbHRlcih2LmV4cHIsdi5zZXQpWzBdOnYuc2V0WzBdfWlmKGgpe3Y9
bT97ZXhwcjpwLnBvcCgpLHNldDp6KG0pfTprLmZpbmQocC5wb3AoKSxwLmxlbmd0aD09PTEmJihw
WzBdPT09In4ifHxwWzBdPT09IisiKSYmaC5wYXJlbnROb2RlP2gucGFyZW50Tm9kZTpoLE0pO3Q9
di5leHByP2suZmlsdGVyKHYuZXhwcix2LnNldCk6di5zZXQ7aWYocC5sZW5ndGg+MCl5PXoodCk7
ZWxzZSBIPWZhbHNlO2Zvcig7cC5sZW5ndGg7KXt2YXIgRD1wLnBvcCgpO3Y9RDtpZihuLnJlbGF0
aXZlW0RdKXY9cC5wb3AoKTtlbHNlIEQ9IiI7aWYodj09bnVsbCl2PWg7bi5yZWxhdGl2ZVtEXSh5
LHYsTSl9fWVsc2UgeT1bXX15fHwoeT10KTt5fHxrLmVycm9yKER8fAorZyk7aWYoai5jYWxsKHkp
PT09IltvYmplY3QgQXJyYXldIilpZihIKWlmKGgmJmgubm9kZVR5cGU9PT0xKWZvcihnPTA7eVtn
XSE9bnVsbDtnKyspe2lmKHlbZ10mJih5W2ddPT09dHJ1ZXx8eVtnXS5ub2RlVHlwZT09PTEmJkUo
aCx5W2ddKSkpbC5wdXNoKHRbZ10pfWVsc2UgZm9yKGc9MDt5W2ddIT1udWxsO2crKyl5W2ddJiZ5
W2ddLm5vZGVUeXBlPT09MSYmbC5wdXNoKHRbZ10pO2Vsc2UgbC5wdXNoLmFwcGx5KGwseSk7ZWxz
ZSB6KHksbCk7aWYoUyl7ayhTLHEsbCxtKTtrLnVuaXF1ZVNvcnQobCl9cmV0dXJuIGx9O2sudW5p
cXVlU29ydD1mdW5jdGlvbihnKXtpZihCKXtpPW87Zy5zb3J0KEIpO2lmKGkpZm9yKHZhciBoPTE7
aDxnLmxlbmd0aDtoKyspZ1toXT09PWdbaC0xXSYmZy5zcGxpY2UoaC0tLDEpfXJldHVybiBnfTtr
Lm1hdGNoZXM9ZnVuY3Rpb24oZyxoKXtyZXR1cm4gayhnLG51bGwsbnVsbCxoKX07ay5maW5kPWZ1
bmN0aW9uKGcsaCxsKXt2YXIgbSxxO2lmKCFnKXJldHVybltdOworZm9yKHZhciBwPTAsdj1uLm9y
ZGVyLmxlbmd0aDtwPHY7cCsrKXt2YXIgdD1uLm9yZGVyW3BdO2lmKHE9bi5sZWZ0TWF0Y2hbdF0u
ZXhlYyhnKSl7dmFyIHk9cVsxXTtxLnNwbGljZSgxLDEpO2lmKHkuc3Vic3RyKHkubGVuZ3RoLTEp
IT09IlxcIil7cVsxXT0ocVsxXXx8IiIpLnJlcGxhY2UoL1xcL2csIiIpO209bi5maW5kW3RdKHEs
aCxsKTtpZihtIT1udWxsKXtnPWcucmVwbGFjZShuLm1hdGNoW3RdLCIiKTticmVha319fX1tfHwo
bT1oLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpO3JldHVybntzZXQ6bSxleHByOmd9fTtrLmZp
bHRlcj1mdW5jdGlvbihnLGgsbCxtKXtmb3IodmFyIHE9ZyxwPVtdLHY9aCx0LHksUz1oJiZoWzBd
JiZ4KGhbMF0pO2cmJmgubGVuZ3RoOyl7Zm9yKHZhciBIIGluIG4uZmlsdGVyKWlmKCh0PW4ubGVm
dE1hdGNoW0hdLmV4ZWMoZykpIT1udWxsJiZ0WzJdKXt2YXIgTT1uLmZpbHRlcltIXSxJLEQ7RD10
WzFdO3k9ZmFsc2U7dC5zcGxpY2UoMSwxKTtpZihELnN1YnN0cihELmxlbmd0aC0KKzEpIT09Ilxc
Iil7aWYodj09PXApcD1bXTtpZihuLnByZUZpbHRlcltIXSlpZih0PW4ucHJlRmlsdGVyW0hdKHQs
dixsLHAsbSxTKSl7aWYodD09PXRydWUpY29udGludWV9ZWxzZSB5PUk9dHJ1ZTtpZih0KWZvcih2
YXIgVT0wOyhEPXZbVV0pIT1udWxsO1UrKylpZihEKXtJPU0oRCx0LFUsdik7dmFyIEhhPW1eISFJ
O2lmKGwmJkkhPW51bGwpaWYoSGEpeT10cnVlO2Vsc2UgdltVXT1mYWxzZTtlbHNlIGlmKEhhKXtw
LnB1c2goRCk7eT10cnVlfX1pZihJIT09dyl7bHx8KHY9cCk7Zz1nLnJlcGxhY2Uobi5tYXRjaFtI
XSwiIik7aWYoIXkpcmV0dXJuW107YnJlYWt9fX1pZihnPT09cSlpZih5PT1udWxsKWsuZXJyb3Io
Zyk7ZWxzZSBicmVhaztxPWd9cmV0dXJuIHZ9O2suZXJyb3I9ZnVuY3Rpb24oZyl7dGhyb3ciU3lu
dGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIitnO307dmFyIG49ay5zZWxlY3Rv
cnM9e29yZGVyOlsiSUQiLCJOQU1FIiwiVEFHIl0sbWF0Y2g6e0lEOi8jKCg/Oltcd1x1MDBjMC1c
dUZGRkYtXXxcXC4pKykvLAorQ0xBU1M6L1wuKCg/Oltcd1x1MDBjMC1cdUZGRkYtXXxcXC4pKykv
LE5BTUU6L1xbbmFtZT1bJyJdKigoPzpbXHdcdTAwYzAtXHVGRkZGLV18XFwuKSspWyciXSpcXS8s
QVRUUjovXFtccyooKD86W1x3XHUwMGMwLVx1RkZGRi1dfFxcLikrKVxzKig/OihcUz89KVxzKihb
JyJdKikoLio/KVwzfClccypcXS8sVEFHOi9eKCg/Oltcd1x1MDBjMC1cdUZGRkZcKi1dfFxcLikr
KS8sQ0hJTEQ6Lzoob25seXxudGh8bGFzdHxmaXJzdCktY2hpbGQoPzpcKChldmVufG9kZHxbXGRu
Ky1dKilcKSk/LyxQT1M6LzoobnRofGVxfGd0fGx0fGZpcnN0fGxhc3R8ZXZlbnxvZGQpKD86XCgo
XGQqKVwpKT8oPz1bXi1dfCQpLyxQU0VVRE86LzooKD86W1x3XHUwMGMwLVx1RkZGRi1dfFxcLikr
KSg/OlwoKFsnIl0/KSgoPzpcKFteXCldK1wpfFteXChcKV0qKSspXDJcKSk/L30sbGVmdE1hdGNo
Ont9LGF0dHJNYXA6eyJjbGFzcyI6ImNsYXNzTmFtZSIsImZvciI6Imh0bWxGb3IifSxhdHRySGFu
ZGxlOntocmVmOmZ1bmN0aW9uKGcpe3JldHVybiBnLmdldEF0dHJpYnV0ZSgiaHJlZiIpfX0sCity
ZWxhdGl2ZTp7IisiOmZ1bmN0aW9uKGcsaCl7dmFyIGw9dHlwZW9mIGg9PT0ic3RyaW5nIixtPWwm
JiEvXFcvLnRlc3QoaCk7bD1sJiYhbTtpZihtKWg9aC50b0xvd2VyQ2FzZSgpO209MDtmb3IodmFy
IHE9Zy5sZW5ndGgscDttPHE7bSsrKWlmKHA9Z1ttXSl7Zm9yKDsocD1wLnByZXZpb3VzU2libGlu
ZykmJnAubm9kZVR5cGUhPT0xOyk7Z1ttXT1sfHxwJiZwLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9
PT1oP3B8fGZhbHNlOnA9PT1ofWwmJmsuZmlsdGVyKGgsZyx0cnVlKX0sIj4iOmZ1bmN0aW9uKGcs
aCl7dmFyIGw9dHlwZW9mIGg9PT0ic3RyaW5nIjtpZihsJiYhL1xXLy50ZXN0KGgpKXtoPWgudG9M
b3dlckNhc2UoKTtmb3IodmFyIG09MCxxPWcubGVuZ3RoO208cTttKyspe3ZhciBwPWdbbV07aWYo
cCl7bD1wLnBhcmVudE5vZGU7Z1ttXT1sLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1oP2w6ZmFs
c2V9fX1lbHNle209MDtmb3IocT1nLmxlbmd0aDttPHE7bSsrKWlmKHA9Z1ttXSlnW21dPQorbD9w
LnBhcmVudE5vZGU6cC5wYXJlbnROb2RlPT09aDtsJiZrLmZpbHRlcihoLGcsdHJ1ZSl9fSwiIjpm
dW5jdGlvbihnLGgsbCl7dmFyIG09ZSsrLHE9ZDtpZih0eXBlb2YgaD09PSJzdHJpbmciJiYhL1xX
Ly50ZXN0KGgpKXt2YXIgcD1oPWgudG9Mb3dlckNhc2UoKTtxPWJ9cSgicGFyZW50Tm9kZSIsaCxt
LGcscCxsKX0sIn4iOmZ1bmN0aW9uKGcsaCxsKXt2YXIgbT1lKysscT1kO2lmKHR5cGVvZiBoPT09
InN0cmluZyImJiEvXFcvLnRlc3QoaCkpe3ZhciBwPWg9aC50b0xvd2VyQ2FzZSgpO3E9Yn1xKCJw
cmV2aW91c1NpYmxpbmciLGgsbSxnLHAsbCl9fSxmaW5kOntJRDpmdW5jdGlvbihnLGgsbCl7aWYo
dHlwZW9mIGguZ2V0RWxlbWVudEJ5SWQhPT0idW5kZWZpbmVkIiYmIWwpcmV0dXJuKGc9aC5nZXRF
bGVtZW50QnlJZChnWzFdKSk/W2ddOltdfSxOQU1FOmZ1bmN0aW9uKGcsaCl7aWYodHlwZW9mIGgu
Z2V0RWxlbWVudHNCeU5hbWUhPT0idW5kZWZpbmVkIil7dmFyIGw9W107CitoPWguZ2V0RWxlbWVu
dHNCeU5hbWUoZ1sxXSk7Zm9yKHZhciBtPTAscT1oLmxlbmd0aDttPHE7bSsrKWhbbV0uZ2V0QXR0
cmlidXRlKCJuYW1lIik9PT1nWzFdJiZsLnB1c2goaFttXSk7cmV0dXJuIGwubGVuZ3RoPT09MD9u
dWxsOmx9fSxUQUc6ZnVuY3Rpb24oZyxoKXtyZXR1cm4gaC5nZXRFbGVtZW50c0J5VGFnTmFtZShn
WzFdKX19LHByZUZpbHRlcjp7Q0xBU1M6ZnVuY3Rpb24oZyxoLGwsbSxxLHApe2c9IiAiK2dbMV0u
cmVwbGFjZSgvXFwvZywiIikrIiAiO2lmKHApcmV0dXJuIGc7cD0wO2Zvcih2YXIgdjsodj1oW3Bd
KSE9bnVsbDtwKyspaWYodilpZihxXih2LmNsYXNzTmFtZSYmKCIgIit2LmNsYXNzTmFtZSsiICIp
LnJlcGxhY2UoL1tcdFxuXS9nLCIgIikuaW5kZXhPZihnKT49MCkpbHx8bS5wdXNoKHYpO2Vsc2Ug
aWYobCloW3BdPWZhbHNlO3JldHVybiBmYWxzZX0sSUQ6ZnVuY3Rpb24oZyl7cmV0dXJuIGdbMV0u
cmVwbGFjZSgvXFwvZywiIil9LFRBRzpmdW5jdGlvbihnKXtyZXR1cm4gZ1sxXS50b0xvd2VyQ2Fz
ZSgpfSwKK0NISUxEOmZ1bmN0aW9uKGcpe2lmKGdbMV09PT0ibnRoIil7dmFyIGg9LygtPykoXGQq
KW4oKD86XCt8LSk/XGQqKS8uZXhlYyhnWzJdPT09ImV2ZW4iJiYiMm4ifHxnWzJdPT09Im9kZCIm
JiIybisxInx8IS9cRC8udGVzdChnWzJdKSYmIjBuKyIrZ1syXXx8Z1syXSk7Z1syXT1oWzFdKyho
WzJdfHwxKS0wO2dbM109aFszXS0wfWdbMF09ZSsrO3JldHVybiBnfSxBVFRSOmZ1bmN0aW9uKGcs
aCxsLG0scSxwKXtoPWdbMV0ucmVwbGFjZSgvXFwvZywiIik7aWYoIXAmJm4uYXR0ck1hcFtoXSln
WzFdPW4uYXR0ck1hcFtoXTtpZihnWzJdPT09In49IilnWzRdPSIgIitnWzRdKyIgIjtyZXR1cm4g
Z30sUFNFVURPOmZ1bmN0aW9uKGcsaCxsLG0scSl7aWYoZ1sxXT09PSJub3QiKWlmKChmLmV4ZWMo
Z1szXSl8fCIiKS5sZW5ndGg+MXx8L15cdy8udGVzdChnWzNdKSlnWzNdPWsoZ1szXSxudWxsLG51
bGwsaCk7ZWxzZXtnPWsuZmlsdGVyKGdbM10saCxsLHRydWVecSk7bHx8bS5wdXNoLmFwcGx5KG0s
CitnKTtyZXR1cm4gZmFsc2V9ZWxzZSBpZihuLm1hdGNoLlBPUy50ZXN0KGdbMF0pfHxuLm1hdGNo
LkNISUxELnRlc3QoZ1swXSkpcmV0dXJuIHRydWU7cmV0dXJuIGd9LFBPUzpmdW5jdGlvbihnKXtn
LnVuc2hpZnQodHJ1ZSk7cmV0dXJuIGd9fSxmaWx0ZXJzOntlbmFibGVkOmZ1bmN0aW9uKGcpe3Jl
dHVybiBnLmRpc2FibGVkPT09ZmFsc2UmJmcudHlwZSE9PSJoaWRkZW4ifSxkaXNhYmxlZDpmdW5j
dGlvbihnKXtyZXR1cm4gZy5kaXNhYmxlZD09PXRydWV9LGNoZWNrZWQ6ZnVuY3Rpb24oZyl7cmV0
dXJuIGcuY2hlY2tlZD09PXRydWV9LHNlbGVjdGVkOmZ1bmN0aW9uKGcpe3JldHVybiBnLnNlbGVj
dGVkPT09dHJ1ZX0scGFyZW50OmZ1bmN0aW9uKGcpe3JldHVybiEhZy5maXJzdENoaWxkfSxlbXB0
eTpmdW5jdGlvbihnKXtyZXR1cm4hZy5maXJzdENoaWxkfSxoYXM6ZnVuY3Rpb24oZyxoLGwpe3Jl
dHVybiEhayhsWzNdLGcpLmxlbmd0aH0saGVhZGVyOmZ1bmN0aW9uKGcpe3JldHVybi9oXGQvaS50
ZXN0KGcubm9kZU5hbWUpfSwKK3RleHQ6ZnVuY3Rpb24oZyl7cmV0dXJuInRleHQiPT09Zy50eXBl
fSxyYWRpbzpmdW5jdGlvbihnKXtyZXR1cm4icmFkaW8iPT09Zy50eXBlfSxjaGVja2JveDpmdW5j
dGlvbihnKXtyZXR1cm4iY2hlY2tib3giPT09Zy50eXBlfSxmaWxlOmZ1bmN0aW9uKGcpe3JldHVy
biJmaWxlIj09PWcudHlwZX0scGFzc3dvcmQ6ZnVuY3Rpb24oZyl7cmV0dXJuInBhc3N3b3JkIj09
PWcudHlwZX0sc3VibWl0OmZ1bmN0aW9uKGcpe3JldHVybiJzdWJtaXQiPT09Zy50eXBlfSxpbWFn
ZTpmdW5jdGlvbihnKXtyZXR1cm4iaW1hZ2UiPT09Zy50eXBlfSxyZXNldDpmdW5jdGlvbihnKXty
ZXR1cm4icmVzZXQiPT09Zy50eXBlfSxidXR0b246ZnVuY3Rpb24oZyl7cmV0dXJuImJ1dHRvbiI9
PT1nLnR5cGV8fGcubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJidXR0b24ifSxpbnB1dDpmdW5j
dGlvbihnKXtyZXR1cm4vaW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbi9pLnRlc3QoZy5ub2Rl
TmFtZSl9fSwKK3NldEZpbHRlcnM6e2ZpcnN0OmZ1bmN0aW9uKGcsaCl7cmV0dXJuIGg9PT0wfSxs
YXN0OmZ1bmN0aW9uKGcsaCxsLG0pe3JldHVybiBoPT09bS5sZW5ndGgtMX0sZXZlbjpmdW5jdGlv
bihnLGgpe3JldHVybiBoJTI9PT0wfSxvZGQ6ZnVuY3Rpb24oZyxoKXtyZXR1cm4gaCUyPT09MX0s
bHQ6ZnVuY3Rpb24oZyxoLGwpe3JldHVybiBoPGxbM10tMH0sZ3Q6ZnVuY3Rpb24oZyxoLGwpe3Jl
dHVybiBoPmxbM10tMH0sbnRoOmZ1bmN0aW9uKGcsaCxsKXtyZXR1cm4gbFszXS0wPT09aH0sZXE6
ZnVuY3Rpb24oZyxoLGwpe3JldHVybiBsWzNdLTA9PT1ofX0sZmlsdGVyOntQU0VVRE86ZnVuY3Rp
b24oZyxoLGwsbSl7dmFyIHE9aFsxXSxwPW4uZmlsdGVyc1txXTtpZihwKXJldHVybiBwKGcsbCxo
LG0pO2Vsc2UgaWYocT09PSJjb250YWlucyIpcmV0dXJuKGcudGV4dENvbnRlbnR8fGcuaW5uZXJU
ZXh0fHxhKFtnXSl8fCIiKS5pbmRleE9mKGhbM10pPj0wO2Vsc2UgaWYocT09PSJub3QiKXtoPQor
aFszXTtsPTA7Zm9yKG09aC5sZW5ndGg7bDxtO2wrKylpZihoW2xdPT09ZylyZXR1cm4gZmFsc2U7
cmV0dXJuIHRydWV9ZWxzZSBrLmVycm9yKCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHBy
ZXNzaW9uOiAiK3EpfSxDSElMRDpmdW5jdGlvbihnLGgpe3ZhciBsPWhbMV0sbT1nO3N3aXRjaChs
KXtjYXNlICJvbmx5IjpjYXNlICJmaXJzdCI6Zm9yKDttPW0ucHJldmlvdXNTaWJsaW5nOylpZiht
Lm5vZGVUeXBlPT09MSlyZXR1cm4gZmFsc2U7aWYobD09PSJmaXJzdCIpcmV0dXJuIHRydWU7bT1n
O2Nhc2UgImxhc3QiOmZvcig7bT1tLm5leHRTaWJsaW5nOylpZihtLm5vZGVUeXBlPT09MSlyZXR1
cm4gZmFsc2U7cmV0dXJuIHRydWU7Y2FzZSAibnRoIjpsPWhbMl07dmFyIHE9aFszXTtpZihsPT09
MSYmcT09PTApcmV0dXJuIHRydWU7aD1oWzBdO3ZhciBwPWcucGFyZW50Tm9kZTtpZihwJiYocC5z
aXpjYWNoZSE9PWh8fCFnLm5vZGVJbmRleCkpe3ZhciB2PTA7Zm9yKG09cC5maXJzdENoaWxkO207
bT0KK20ubmV4dFNpYmxpbmcpaWYobS5ub2RlVHlwZT09PTEpbS5ub2RlSW5kZXg9Kyt2O3Auc2l6
Y2FjaGU9aH1nPWcubm9kZUluZGV4LXE7cmV0dXJuIGw9PT0wP2c9PT0wOmclbD09PTAmJmcvbD49
MH19LElEOmZ1bmN0aW9uKGcsaCl7cmV0dXJuIGcubm9kZVR5cGU9PT0xJiZnLmdldEF0dHJpYnV0
ZSgiaWQiKT09PWh9LFRBRzpmdW5jdGlvbihnLGgpe3JldHVybiBoPT09IioiJiZnLm5vZGVUeXBl
PT09MXx8Zy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09aH0sQ0xBU1M6ZnVuY3Rpb24oZyxoKXty
ZXR1cm4oIiAiKyhnLmNsYXNzTmFtZXx8Zy5nZXRBdHRyaWJ1dGUoImNsYXNzIikpKyIgIikuaW5k
ZXhPZihoKT4tMX0sQVRUUjpmdW5jdGlvbihnLGgpe3ZhciBsPWhbMV07Zz1uLmF0dHJIYW5kbGVb
bF0/bi5hdHRySGFuZGxlW2xdKGcpOmdbbF0hPW51bGw/Z1tsXTpnLmdldEF0dHJpYnV0ZShsKTts
PWcrIiI7dmFyIG09aFsyXTtoPWhbNF07cmV0dXJuIGc9PW51bGw/bT09PSIhPSI6bT09PQorIj0i
P2w9PT1oOm09PT0iKj0iP2wuaW5kZXhPZihoKT49MDptPT09In49Ij8oIiAiK2wrIiAiKS5pbmRl
eE9mKGgpPj0wOiFoP2wmJmchPT1mYWxzZTptPT09IiE9Ij9sIT09aDptPT09Il49Ij9sLmluZGV4
T2YoaCk9PT0wOm09PT0iJD0iP2wuc3Vic3RyKGwubGVuZ3RoLWgubGVuZ3RoKT09PWg6bT09PSJ8
PSI/bD09PWh8fGwuc3Vic3RyKDAsaC5sZW5ndGgrMSk9PT1oKyItIjpmYWxzZX0sUE9TOmZ1bmN0
aW9uKGcsaCxsLG0pe3ZhciBxPW4uc2V0RmlsdGVyc1toWzJdXTtpZihxKXJldHVybiBxKGcsbCxo
LG0pfX19LHI9bi5tYXRjaC5QT1M7Zm9yKHZhciB1IGluIG4ubWF0Y2gpe24ubWF0Y2hbdV09bmV3
IFJlZ0V4cChuLm1hdGNoW3VdLnNvdXJjZSsvKD8hW15cW10qXF0pKD8hW15cKF0qXCkpLy5zb3Vy
Y2UpO24ubGVmdE1hdGNoW3VdPW5ldyBSZWdFeHAoLyheKD86LnxccnxcbikqPykvLnNvdXJjZStu
Lm1hdGNoW3VdLnNvdXJjZS5yZXBsYWNlKC9cXChcZCspL2csZnVuY3Rpb24oZywKK2gpe3JldHVy
biJcXCIrKGgtMCsxKX0pKX12YXIgej1mdW5jdGlvbihnLGgpe2c9QXJyYXkucHJvdG90eXBlLnNs
aWNlLmNhbGwoZywwKTtpZihoKXtoLnB1c2guYXBwbHkoaCxnKTtyZXR1cm4gaH1yZXR1cm4gZ307
dHJ5e0FycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHMuZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9k
ZXMsMCl9Y2F0Y2goQyl7ej1mdW5jdGlvbihnLGgpe2g9aHx8W107aWYoai5jYWxsKGcpPT09Iltv
YmplY3QgQXJyYXldIilBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShoLGcpO2Vsc2UgaWYodHlw
ZW9mIGcubGVuZ3RoPT09Im51bWJlciIpZm9yKHZhciBsPTAsbT1nLmxlbmd0aDtsPG07bCsrKWgu
cHVzaChnW2xdKTtlbHNlIGZvcihsPTA7Z1tsXTtsKyspaC5wdXNoKGdbbF0pO3JldHVybiBofX12
YXIgQjtpZihzLmRvY3VtZW50RWxlbWVudC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbilCPWZ1bmN0
aW9uKGcsaCl7aWYoIWcuY29tcGFyZURvY3VtZW50UG9zaXRpb258fAorIWguY29tcGFyZURvY3Vt
ZW50UG9zaXRpb24pe2lmKGc9PWgpaT10cnVlO3JldHVybiBnLmNvbXBhcmVEb2N1bWVudFBvc2l0
aW9uPy0xOjF9Zz1nLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGgpJjQ/LTE6Zz09PWg/MDoxO2lm
KGc9PT0wKWk9dHJ1ZTtyZXR1cm4gZ307ZWxzZSBpZigic291cmNlSW5kZXgiaW4gcy5kb2N1bWVu
dEVsZW1lbnQpQj1mdW5jdGlvbihnLGgpe2lmKCFnLnNvdXJjZUluZGV4fHwhaC5zb3VyY2VJbmRl
eCl7aWYoZz09aClpPXRydWU7cmV0dXJuIGcuc291cmNlSW5kZXg/LTE6MX1nPWcuc291cmNlSW5k
ZXgtaC5zb3VyY2VJbmRleDtpZihnPT09MClpPXRydWU7cmV0dXJuIGd9O2Vsc2UgaWYocy5jcmVh
dGVSYW5nZSlCPWZ1bmN0aW9uKGcsaCl7aWYoIWcub3duZXJEb2N1bWVudHx8IWgub3duZXJEb2N1
bWVudCl7aWYoZz09aClpPXRydWU7cmV0dXJuIGcub3duZXJEb2N1bWVudD8tMToxfXZhciBsPWcu
b3duZXJEb2N1bWVudC5jcmVhdGVSYW5nZSgpLG09CitoLm93bmVyRG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTtsLnNldFN0YXJ0KGcsMCk7bC5zZXRFbmQoZywwKTttLnNldFN0YXJ0KGgsMCk7bS5zZXRF
bmQoaCwwKTtnPWwuY29tcGFyZUJvdW5kYXJ5UG9pbnRzKFJhbmdlLlNUQVJUX1RPX0VORCxtKTtp
ZihnPT09MClpPXRydWU7cmV0dXJuIGd9OyhmdW5jdGlvbigpe3ZhciBnPXMuY3JlYXRlRWxlbWVu
dCgiZGl2IiksaD0ic2NyaXB0IisobmV3IERhdGUpLmdldFRpbWUoKTtnLmlubmVySFRNTD0iPGEg
bmFtZT0nIitoKyInLz4iO3ZhciBsPXMuZG9jdW1lbnRFbGVtZW50O2wuaW5zZXJ0QmVmb3JlKGcs
bC5maXJzdENoaWxkKTtpZihzLmdldEVsZW1lbnRCeUlkKGgpKXtuLmZpbmQuSUQ9ZnVuY3Rpb24o
bSxxLHApe2lmKHR5cGVvZiBxLmdldEVsZW1lbnRCeUlkIT09InVuZGVmaW5lZCImJiFwKXJldHVy
bihxPXEuZ2V0RWxlbWVudEJ5SWQobVsxXSkpP3EuaWQ9PT1tWzFdfHx0eXBlb2YgcS5nZXRBdHRy
aWJ1dGVOb2RlIT09InVuZGVmaW5lZCImJgorcS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLm5vZGVW
YWx1ZT09PW1bMV0/W3FdOnc6W119O24uZmlsdGVyLklEPWZ1bmN0aW9uKG0scSl7dmFyIHA9dHlw
ZW9mIG0uZ2V0QXR0cmlidXRlTm9kZSE9PSJ1bmRlZmluZWQiJiZtLmdldEF0dHJpYnV0ZU5vZGUo
ImlkIik7cmV0dXJuIG0ubm9kZVR5cGU9PT0xJiZwJiZwLm5vZGVWYWx1ZT09PXF9fWwucmVtb3Zl
Q2hpbGQoZyk7bD1nPW51bGx9KSgpOyhmdW5jdGlvbigpe3ZhciBnPXMuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7Zy5hcHBlbmRDaGlsZChzLmNyZWF0ZUNvbW1lbnQoIiIpKTtpZihnLmdldEVsZW1lbnRz
QnlUYWdOYW1lKCIqIikubGVuZ3RoPjApbi5maW5kLlRBRz1mdW5jdGlvbihoLGwpe2w9bC5nZXRF
bGVtZW50c0J5VGFnTmFtZShoWzFdKTtpZihoWzFdPT09IioiKXtoPVtdO2Zvcih2YXIgbT0wO2xb
bV07bSsrKWxbbV0ubm9kZVR5cGU9PT0xJiZoLnB1c2gobFttXSk7bD1ofXJldHVybiBsfTtnLmlu
bmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiI7CitpZihnLmZpcnN0Q2hpbGQmJnR5cGVvZiBnLmZp
cnN0Q2hpbGQuZ2V0QXR0cmlidXRlIT09InVuZGVmaW5lZCImJmcuZmlyc3RDaGlsZC5nZXRBdHRy
aWJ1dGUoImhyZWYiKSE9PSIjIiluLmF0dHJIYW5kbGUuaHJlZj1mdW5jdGlvbihoKXtyZXR1cm4g
aC5nZXRBdHRyaWJ1dGUoImhyZWYiLDIpfTtnPW51bGx9KSgpO3MucXVlcnlTZWxlY3RvckFsbCYm
ZnVuY3Rpb24oKXt2YXIgZz1rLGg9cy5jcmVhdGVFbGVtZW50KCJkaXYiKTtoLmlubmVySFRNTD0i
PHAgY2xhc3M9J1RFU1QnPjwvcD4iO2lmKCEoaC5xdWVyeVNlbGVjdG9yQWxsJiZoLnF1ZXJ5U2Vs
ZWN0b3JBbGwoIi5URVNUIikubGVuZ3RoPT09MCkpe2s9ZnVuY3Rpb24obSxxLHAsdil7cT1xfHxz
O2lmKCF2JiZxLm5vZGVUeXBlPT09OSYmIXgocSkpdHJ5e3JldHVybiB6KHEucXVlcnlTZWxlY3Rv
ckFsbChtKSxwKX1jYXRjaCh0KXt9cmV0dXJuIGcobSxxLHAsdil9O2Zvcih2YXIgbCBpbiBnKWtb
bF09Z1tsXTtoPW51bGx9fSgpOworKGZ1bmN0aW9uKCl7dmFyIGc9cy5jcmVhdGVFbGVtZW50KCJk
aXYiKTtnLmlubmVySFRNTD0iPGRpdiBjbGFzcz0ndGVzdCBlJz48L2Rpdj48ZGl2IGNsYXNzPSd0
ZXN0Jz48L2Rpdj4iO2lmKCEoIWcuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZXx8Zy5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoPT09MCkpe2cubGFzdENoaWxkLmNsYXNzTmFtZT0iZSI7
aWYoZy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoIT09MSl7bi5vcmRlci5zcGxp
Y2UoMSwwLCJDTEFTUyIpO24uZmluZC5DTEFTUz1mdW5jdGlvbihoLGwsbSl7aWYodHlwZW9mIGwu
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSE9PSJ1bmRlZmluZWQiJiYhbSlyZXR1cm4gbC5nZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKGhbMV0pfTtnPW51bGx9fX0pKCk7dmFyIEU9cy5jb21wYXJlRG9jdW1l
bnRQb3NpdGlvbj9mdW5jdGlvbihnLGgpe3JldHVybiEhKGcuY29tcGFyZURvY3VtZW50UG9zaXRp
b24oaCkmMTYpfToKK2Z1bmN0aW9uKGcsaCl7cmV0dXJuIGchPT1oJiYoZy5jb250YWlucz9nLmNv
bnRhaW5zKGgpOnRydWUpfSx4PWZ1bmN0aW9uKGcpe3JldHVybihnPShnP2cub3duZXJEb2N1bWVu
dHx8ZzowKS5kb2N1bWVudEVsZW1lbnQpP2cubm9kZU5hbWUhPT0iSFRNTCI6ZmFsc2V9LGdhPWZ1
bmN0aW9uKGcsaCl7dmFyIGw9W10sbT0iIixxO2ZvcihoPWgubm9kZVR5cGU/W2hdOmg7cT1uLm1h
dGNoLlBTRVVETy5leGVjKGcpOyl7bSs9cVswXTtnPWcucmVwbGFjZShuLm1hdGNoLlBTRVVETywi
Iil9Zz1uLnJlbGF0aXZlW2ddP2crIioiOmc7cT0wO2Zvcih2YXIgcD1oLmxlbmd0aDtxPHA7cSsr
KWsoZyxoW3FdLGwpO3JldHVybiBrLmZpbHRlcihtLGwpfTtjLmZpbmQ9aztjLmV4cHI9ay5zZWxl
Y3RvcnM7Yy5leHByWyI6Il09Yy5leHByLmZpbHRlcnM7Yy51bmlxdWU9ay51bmlxdWVTb3J0O2Mu
dGV4dD1hO2MuaXNYTUxEb2M9eDtjLmNvbnRhaW5zPUV9KSgpO3ZhciBlYj0vVW50aWwkLyxmYj0v
Xig/OnBhcmVudHN8cHJldlVudGlsfHByZXZBbGwpLywKK2diPS8sLztSPUFycmF5LnByb3RvdHlw
ZS5zbGljZTt2YXIgSWE9ZnVuY3Rpb24oYSxiLGQpe2lmKGMuaXNGdW5jdGlvbihiKSlyZXR1cm4g
Yy5ncmVwKGEsZnVuY3Rpb24oZSxqKXtyZXR1cm4hIWIuY2FsbChlLGosZSk9PT1kfSk7ZWxzZSBp
ZihiLm5vZGVUeXBlKXJldHVybiBjLmdyZXAoYSxmdW5jdGlvbihlKXtyZXR1cm4gZT09PWI9PT1k
fSk7ZWxzZSBpZih0eXBlb2YgYj09PSJzdHJpbmciKXt2YXIgZj1jLmdyZXAoYSxmdW5jdGlvbihl
KXtyZXR1cm4gZS5ub2RlVHlwZT09PTF9KTtpZihVYS50ZXN0KGIpKXJldHVybiBjLmZpbHRlcihi
LGYsIWQpO2Vsc2UgYj1jLmZpbHRlcihiLGYpfXJldHVybiBjLmdyZXAoYSxmdW5jdGlvbihlKXty
ZXR1cm4gYy5pbkFycmF5KGUsYik+PTA9PT1kfSl9O2MuZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9u
KGEpe2Zvcih2YXIgYj10aGlzLnB1c2hTdGFjaygiIiwiZmluZCIsYSksZD0wLGY9MCxlPXRoaXMu
bGVuZ3RoO2Y8ZTtmKyspe2Q9Yi5sZW5ndGg7CitjLmZpbmQoYSx0aGlzW2ZdLGIpO2lmKGY+MClm
b3IodmFyIGo9ZDtqPGIubGVuZ3RoO2orKylmb3IodmFyIGk9MDtpPGQ7aSsrKWlmKGJbaV09PT1i
W2pdKXtiLnNwbGljZShqLS0sMSk7YnJlYWt9fXJldHVybiBifSxoYXM6ZnVuY3Rpb24oYSl7dmFy
IGI9YyhhKTtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGQ9MCxmPWIubGVu
Z3RoO2Q8ZjtkKyspaWYoYy5jb250YWlucyh0aGlzLGJbZF0pKXJldHVybiB0cnVlfSl9LG5vdDpm
dW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soSWEodGhpcyxhLGZhbHNlKSwibm90Iixh
KX0sZmlsdGVyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhJYSh0aGlzLGEsdHJ1
ZSksImZpbHRlciIsYSl9LGlzOmZ1bmN0aW9uKGEpe3JldHVybiEhYSYmYy5maWx0ZXIoYSx0aGlz
KS5sZW5ndGg+MH0sY2xvc2VzdDpmdW5jdGlvbihhLGIpe2lmKGMuaXNBcnJheShhKSl7dmFyIGQ9
W10sZj10aGlzWzBdLGUsaj0KK3t9LGk7aWYoZiYmYS5sZW5ndGgpe2U9MDtmb3IodmFyIG89YS5s
ZW5ndGg7ZTxvO2UrKyl7aT1hW2VdO2pbaV18fChqW2ldPWMuZXhwci5tYXRjaC5QT1MudGVzdChp
KT9jKGksYnx8dGhpcy5jb250ZXh0KTppKX1mb3IoO2YmJmYub3duZXJEb2N1bWVudCYmZiE9PWI7
KXtmb3IoaSBpbiBqKXtlPWpbaV07aWYoZS5qcXVlcnk/ZS5pbmRleChmKT4tMTpjKGYpLmlzKGUp
KXtkLnB1c2goe3NlbGVjdG9yOmksZWxlbTpmfSk7ZGVsZXRlIGpbaV19fWY9Zi5wYXJlbnROb2Rl
fX1yZXR1cm4gZH12YXIgaz1jLmV4cHIubWF0Y2guUE9TLnRlc3QoYSk/YyhhLGJ8fHRoaXMuY29u
dGV4dCk6bnVsbDtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24obixyKXtmb3IoO3ImJnIub3duZXJE
b2N1bWVudCYmciE9PWI7KXtpZihrP2suaW5kZXgocik+LTE6YyhyKS5pcyhhKSlyZXR1cm4gcjty
PXIucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH0pfSxpbmRleDpmdW5jdGlvbihhKXtpZighYXx8dHlw
ZW9mIGE9PT0KKyJzdHJpbmciKXJldHVybiBjLmluQXJyYXkodGhpc1swXSxhP2MoYSk6dGhpcy5w
YXJlbnQoKS5jaGlsZHJlbigpKTtyZXR1cm4gYy5pbkFycmF5KGEuanF1ZXJ5P2FbMF06YSx0aGlz
KX0sYWRkOmZ1bmN0aW9uKGEsYil7YT10eXBlb2YgYT09PSJzdHJpbmciP2MoYSxifHx0aGlzLmNv
bnRleHQpOmMubWFrZUFycmF5KGEpO2I9Yy5tZXJnZSh0aGlzLmdldCgpLGEpO3JldHVybiB0aGlz
LnB1c2hTdGFjayhxYShhWzBdKXx8cWEoYlswXSk/YjpjLnVuaXF1ZShiKSl9LGFuZFNlbGY6ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5hZGQodGhpcy5wcmV2T2JqZWN0KX19KTtjLmVhY2goe3BhcmVu
dDpmdW5jdGlvbihhKXtyZXR1cm4oYT1hLnBhcmVudE5vZGUpJiZhLm5vZGVUeXBlIT09MTE/YTpu
dWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBjLmRpcihhLCJwYXJlbnROb2RlIil9LHBh
cmVudHNVbnRpbDpmdW5jdGlvbihhLGIsZCl7cmV0dXJuIGMuZGlyKGEsInBhcmVudE5vZGUiLAor
ZCl9LG5leHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGMubnRoKGEsMiwibmV4dFNpYmxpbmciKX0scHJl
djpmdW5jdGlvbihhKXtyZXR1cm4gYy5udGgoYSwyLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFs
bDpmdW5jdGlvbihhKXtyZXR1cm4gYy5kaXIoYSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5j
dGlvbihhKXtyZXR1cm4gYy5kaXIoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5j
dGlvbihhLGIsZCl7cmV0dXJuIGMuZGlyKGEsIm5leHRTaWJsaW5nIixkKX0scHJldlVudGlsOmZ1
bmN0aW9uKGEsYixkKXtyZXR1cm4gYy5kaXIoYSwicHJldmlvdXNTaWJsaW5nIixkKX0sc2libGlu
Z3M6ZnVuY3Rpb24oYSl7cmV0dXJuIGMuc2libGluZyhhLnBhcmVudE5vZGUuZmlyc3RDaGlsZCxh
KX0sY2hpbGRyZW46ZnVuY3Rpb24oYSl7cmV0dXJuIGMuc2libGluZyhhLmZpcnN0Q2hpbGQpfSxj
b250ZW50czpmdW5jdGlvbihhKXtyZXR1cm4gYy5ub2RlTmFtZShhLCJpZnJhbWUiKT8KK2EuY29u
dGVudERvY3VtZW50fHxhLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ6Yy5tYWtlQXJyYXkoYS5jaGls
ZE5vZGVzKX19LGZ1bmN0aW9uKGEsYil7Yy5mblthXT1mdW5jdGlvbihkLGYpe3ZhciBlPWMubWFw
KHRoaXMsYixkKTtlYi50ZXN0KGEpfHwoZj1kKTtpZihmJiZ0eXBlb2YgZj09PSJzdHJpbmciKWU9
Yy5maWx0ZXIoZixlKTtlPXRoaXMubGVuZ3RoPjE/Yy51bmlxdWUoZSk6ZTtpZigodGhpcy5sZW5n
dGg+MXx8Z2IudGVzdChmKSkmJmZiLnRlc3QoYSkpZT1lLnJldmVyc2UoKTtyZXR1cm4gdGhpcy5w
dXNoU3RhY2soZSxhLFIuY2FsbChhcmd1bWVudHMpLmpvaW4oIiwiKSl9fSk7Yy5leHRlbmQoe2Zp
bHRlcjpmdW5jdGlvbihhLGIsZCl7aWYoZClhPSI6bm90KCIrYSsiKSI7cmV0dXJuIGMuZmluZC5t
YXRjaGVzKGEsYil9LGRpcjpmdW5jdGlvbihhLGIsZCl7dmFyIGY9W107Zm9yKGE9YVtiXTthJiZh
Lm5vZGVUeXBlIT09OSYmKGQ9PT13fHxhLm5vZGVUeXBlIT09MXx8IWMoYSkuaXMoZCkpOyl7YS5u
b2RlVHlwZT09PQorMSYmZi5wdXNoKGEpO2E9YVtiXX1yZXR1cm4gZn0sbnRoOmZ1bmN0aW9uKGEs
YixkKXtiPWJ8fDE7Zm9yKHZhciBmPTA7YTthPWFbZF0paWYoYS5ub2RlVHlwZT09PTEmJisrZj09
PWIpYnJlYWs7cmV0dXJuIGF9LHNpYmxpbmc6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGQ9W107YTth
PWEubmV4dFNpYmxpbmcpYS5ub2RlVHlwZT09PTEmJmEhPT1iJiZkLnB1c2goYSk7cmV0dXJuIGR9
fSk7dmFyIEphPS8galF1ZXJ5XGQrPSIoPzpcZCt8bnVsbCkiL2csVj0vXlxzKy8sS2E9Lyg8KFtc
dzpdKylbXj5dKj8pXC8+L2csaGI9L14oPzphcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8
bGlua3xtZXRhfHBhcmFtKSQvaSxMYT0vPChbXHc6XSspLyxpYj0vPHRib2R5L2ksamI9Lzx8JiM/
XHcrOy8sdGE9LzxzY3JpcHR8PG9iamVjdHw8ZW1iZWR8PG9wdGlvbnw8c3R5bGUvaSx1YT0vY2hl
Y2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSxNYT1mdW5jdGlvbihhLGIsZCl7cmV0dXJu
IGhiLnRlc3QoZCk/CithOmIrIj48LyIrZCsiPiJ9LEY9e29wdGlvbjpbMSwiPHNlbGVjdCBtdWx0
aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdLGxlZ2VuZDpbMSwiPGZpZWxkc2V0PiIsIjwv
ZmllbGRzZXQ+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+
PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+Iiwi
PC90cj48L3Rib2R5PjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNv
bGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJd
LF9kZWZhdWx0OlswLCIiLCIiXX07Ri5vcHRncm91cD1GLm9wdGlvbjtGLnRib2R5PUYudGZvb3Q9
Ri5jb2xncm91cD1GLmNhcHRpb249Ri50aGVhZDtGLnRoPUYudGQ7aWYoIWMuc3VwcG9ydC5odG1s
U2VyaWFsaXplKUYuX2RlZmF1bHQ9WzEsImRpdjxkaXY+IiwiPC9kaXY+Il07Yy5mbi5leHRlbmQo
e3RleHQ6ZnVuY3Rpb24oYSl7aWYoYy5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVu
Y3Rpb24oYil7dmFyIGQ9CitjKHRoaXMpO2QudGV4dChhLmNhbGwodGhpcyxiLGQudGV4dCgpKSl9
KTtpZih0eXBlb2YgYSE9PSJvYmplY3QiJiZhIT09dylyZXR1cm4gdGhpcy5lbXB0eSgpLmFwcGVu
ZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHxzKS5jcmVhdGVUZXh0Tm9kZShhKSk7
cmV0dXJuIGMudGV4dCh0aGlzKX0sd3JhcEFsbDpmdW5jdGlvbihhKXtpZihjLmlzRnVuY3Rpb24o
YSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihkKXtjKHRoaXMpLndyYXBBbGwoYS5jYWxsKHRo
aXMsZCkpfSk7aWYodGhpc1swXSl7dmFyIGI9YyhhLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEo
MCkuY2xvbmUodHJ1ZSk7dGhpc1swXS5wYXJlbnROb2RlJiZiLmluc2VydEJlZm9yZSh0aGlzWzBd
KTtiLm1hcChmdW5jdGlvbigpe2Zvcih2YXIgZD10aGlzO2QuZmlyc3RDaGlsZCYmZC5maXJzdENo
aWxkLm5vZGVUeXBlPT09MTspZD1kLmZpcnN0Q2hpbGQ7cmV0dXJuIGR9KS5hcHBlbmQodGhpcyl9
cmV0dXJuIHRoaXN9LAord3JhcElubmVyOmZ1bmN0aW9uKGEpe2lmKGMuaXNGdW5jdGlvbihhKSly
ZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2ModGhpcykud3JhcElubmVyKGEuY2FsbCh0aGlz
LGIpKX0pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1jKHRoaXMpLGQ9Yi5jb250
ZW50cygpO2QubGVuZ3RoP2Qud3JhcEFsbChhKTpiLmFwcGVuZChhKX0pfSx3cmFwOmZ1bmN0aW9u
KGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtjKHRoaXMpLndyYXBBbGwoYSl9KX0sdW53
cmFwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkuZWFjaChmdW5jdGlvbigpe2Mubm9k
ZU5hbWUodGhpcywiYm9keSIpfHxjKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9
KS5lbmQoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRz
LHRydWUsZnVuY3Rpb24oYSl7dGhpcy5ub2RlVHlwZT09PTEmJnRoaXMuYXBwZW5kQ2hpbGQoYSl9
KX0sCitwcmVwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLHRy
dWUsZnVuY3Rpb24oYSl7dGhpcy5ub2RlVHlwZT09PTEmJnRoaXMuaW5zZXJ0QmVmb3JlKGEsdGhp
cy5maXJzdENoaWxkKX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtpZih0aGlzWzBdJiZ0aGlzWzBdLnBh
cmVudE5vZGUpcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZhbHNlLGZ1bmN0aW9uKGIp
e3RoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYix0aGlzKX0pO2Vsc2UgaWYoYXJndW1lbnRz
Lmxlbmd0aCl7dmFyIGE9Yyhhcmd1bWVudHNbMF0pO2EucHVzaC5hcHBseShhLHRoaXMudG9BcnJh
eSgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soYSwiYmVmb3JlIixhcmd1bWVudHMpfX0sYWZ0ZXI6
ZnVuY3Rpb24oKXtpZih0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGUpcmV0dXJuIHRoaXMuZG9t
TWFuaXAoYXJndW1lbnRzLGZhbHNlLGZ1bmN0aW9uKGIpe3RoaXMucGFyZW50Tm9kZS5pbnNlcnRC
ZWZvcmUoYiwKK3RoaXMubmV4dFNpYmxpbmcpfSk7ZWxzZSBpZihhcmd1bWVudHMubGVuZ3RoKXt2
YXIgYT10aGlzLnB1c2hTdGFjayh0aGlzLCJhZnRlciIsYXJndW1lbnRzKTthLnB1c2guYXBwbHko
YSxjKGFyZ3VtZW50c1swXSkudG9BcnJheSgpKTtyZXR1cm4gYX19LHJlbW92ZTpmdW5jdGlvbihh
LGIpe2Zvcih2YXIgZD0wLGY7KGY9dGhpc1tkXSkhPW51bGw7ZCsrKWlmKCFhfHxjLmZpbHRlcihh
LFtmXSkubGVuZ3RoKXtpZighYiYmZi5ub2RlVHlwZT09PTEpe2MuY2xlYW5EYXRhKGYuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoIioiKSk7Yy5jbGVhbkRhdGEoW2ZdKX1mLnBhcmVudE5vZGUmJmYucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZChmKX1yZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKXtmb3Io
dmFyIGE9MCxiOyhiPXRoaXNbYV0pIT1udWxsO2ErKylmb3IoYi5ub2RlVHlwZT09PTEmJmMuY2xl
YW5EYXRhKGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSk7Yi5maXJzdENoaWxkOyliLnJlbW92
ZUNoaWxkKGIuZmlyc3RDaGlsZCk7CityZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oYSl7dmFy
IGI9dGhpcy5tYXAoZnVuY3Rpb24oKXtpZighYy5zdXBwb3J0Lm5vQ2xvbmVFdmVudCYmIWMuaXNY
TUxEb2ModGhpcykpe3ZhciBkPXRoaXMub3V0ZXJIVE1MLGY9dGhpcy5vd25lckRvY3VtZW50O2lm
KCFkKXtkPWYuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZC5hcHBlbmRDaGlsZCh0aGlzLmNsb25lTm9k
ZSh0cnVlKSk7ZD1kLmlubmVySFRNTH1yZXR1cm4gYy5jbGVhbihbZC5yZXBsYWNlKEphLCIiKS5y
ZXBsYWNlKC89KFtePSInPlxzXStcLyk+L2csJz0iJDEiPicpLnJlcGxhY2UoViwiIildLGYpWzBd
fWVsc2UgcmV0dXJuIHRoaXMuY2xvbmVOb2RlKHRydWUpfSk7aWYoYT09PXRydWUpe3JhKHRoaXMs
Yik7cmEodGhpcy5maW5kKCIqIiksYi5maW5kKCIqIikpfXJldHVybiBifSxodG1sOmZ1bmN0aW9u
KGEpe2lmKGE9PT13KXJldHVybiB0aGlzWzBdJiZ0aGlzWzBdLm5vZGVUeXBlPT09MT90aGlzWzBd
LmlubmVySFRNTC5yZXBsYWNlKEphLAorIiIpOm51bGw7ZWxzZSBpZih0eXBlb2YgYT09PSJzdHJp
bmciJiYhdGEudGVzdChhKSYmKGMuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZXx8IVYudGVzdChh
KSkmJiFGWyhMYS5leGVjKGEpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSl7YT1hLnJlcGxh
Y2UoS2EsTWEpO3RyeXtmb3IodmFyIGI9MCxkPXRoaXMubGVuZ3RoO2I8ZDtiKyspaWYodGhpc1ti
XS5ub2RlVHlwZT09PTEpe2MuY2xlYW5EYXRhKHRoaXNbYl0uZ2V0RWxlbWVudHNCeVRhZ05hbWUo
IioiKSk7dGhpc1tiXS5pbm5lckhUTUw9YX19Y2F0Y2goZil7dGhpcy5lbXB0eSgpLmFwcGVuZChh
KX19ZWxzZSBjLmlzRnVuY3Rpb24oYSk/dGhpcy5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBqPWModGhp
cyksaT1qLmh0bWwoKTtqLmVtcHR5KCkuYXBwZW5kKGZ1bmN0aW9uKCl7cmV0dXJuIGEuY2FsbCh0
aGlzLGUsaSl9KX0pOnRoaXMuZW1wdHkoKS5hcHBlbmQoYSk7cmV0dXJuIHRoaXN9LHJlcGxhY2VX
aXRoOmZ1bmN0aW9uKGEpe2lmKHRoaXNbMF0mJgordGhpc1swXS5wYXJlbnROb2RlKXtpZihjLmlz
RnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgZD1jKHRoaXMpLGY9
ZC5odG1sKCk7ZC5yZXBsYWNlV2l0aChhLmNhbGwodGhpcyxiLGYpKX0pO2lmKHR5cGVvZiBhIT09
InN0cmluZyIpYT1jKGEpLmRldGFjaCgpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIg
Yj10aGlzLm5leHRTaWJsaW5nLGQ9dGhpcy5wYXJlbnROb2RlO2ModGhpcykucmVtb3ZlKCk7Yj9j
KGIpLmJlZm9yZShhKTpjKGQpLmFwcGVuZChhKX0pfWVsc2UgcmV0dXJuIHRoaXMucHVzaFN0YWNr
KGMoYy5pc0Z1bmN0aW9uKGEpP2EoKTphKSwicmVwbGFjZVdpdGgiLGEpfSxkZXRhY2g6ZnVuY3Rp
b24oYSl7cmV0dXJuIHRoaXMucmVtb3ZlKGEsdHJ1ZSl9LGRvbU1hbmlwOmZ1bmN0aW9uKGEsYixk
KXtmdW5jdGlvbiBmKHUpe3JldHVybiBjLm5vZGVOYW1lKHUsInRhYmxlIik/dS5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGJvZHkiKVswXXx8Cit1LmFwcGVuZENoaWxkKHUub3duZXJEb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJ0Ym9keSIpKTp1fXZhciBlLGosaT1hWzBdLG89W10saztpZighYy5zdXBw
b3J0LmNoZWNrQ2xvbmUmJmFyZ3VtZW50cy5sZW5ndGg9PT0zJiZ0eXBlb2YgaT09PSJzdHJpbmci
JiZ1YS50ZXN0KGkpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtjKHRoaXMpLmRvbU1hbmlw
KGEsYixkLHRydWUpfSk7aWYoYy5pc0Z1bmN0aW9uKGkpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rp
b24odSl7dmFyIHo9Yyh0aGlzKTthWzBdPWkuY2FsbCh0aGlzLHUsYj96Lmh0bWwoKTp3KTt6LmRv
bU1hbmlwKGEsYixkKX0pO2lmKHRoaXNbMF0pe2U9aSYmaS5wYXJlbnROb2RlO2U9Yy5zdXBwb3J0
LnBhcmVudE5vZGUmJmUmJmUubm9kZVR5cGU9PT0xMSYmZS5jaGlsZE5vZGVzLmxlbmd0aD09PXRo
aXMubGVuZ3RoP3tmcmFnbWVudDplfTpzYShhLHRoaXMsbyk7az1lLmZyYWdtZW50O2lmKGo9ay5j
aGlsZE5vZGVzLmxlbmd0aD09PQorMT8oaz1rLmZpcnN0Q2hpbGQpOmsuZmlyc3RDaGlsZCl7Yj1i
JiZjLm5vZGVOYW1lKGosInRyIik7Zm9yKHZhciBuPTAscj10aGlzLmxlbmd0aDtuPHI7bisrKWQu
Y2FsbChiP2YodGhpc1tuXSxqKTp0aGlzW25dLG4+MHx8ZS5jYWNoZWFibGV8fHRoaXMubGVuZ3Ro
PjE/ay5jbG9uZU5vZGUodHJ1ZSk6ayl9by5sZW5ndGgmJmMuZWFjaChvLFFhKX1yZXR1cm4gdGhp
c319KTtjLmZyYWdtZW50cz17fTtjLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoi
cHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFj
ZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihhLGIpe2MuZm5bYV09ZnVuY3Rpb24oZCl7dmFy
IGY9W107ZD1jKGQpO3ZhciBlPXRoaXMubGVuZ3RoPT09MSYmdGhpc1swXS5wYXJlbnROb2RlO2lm
KGUmJmUubm9kZVR5cGU9PT0xMSYmZS5jaGlsZE5vZGVzLmxlbmd0aD09PTEmJmQubGVuZ3RoPT09
MSl7ZFtiXSh0aGlzWzBdKTsKK3JldHVybiB0aGlzfWVsc2V7ZT0wO2Zvcih2YXIgaj1kLmxlbmd0
aDtlPGo7ZSsrKXt2YXIgaT0oZT4wP3RoaXMuY2xvbmUodHJ1ZSk6dGhpcykuZ2V0KCk7Yy5mblti
XS5hcHBseShjKGRbZV0pLGkpO2Y9Zi5jb25jYXQoaSl9cmV0dXJuIHRoaXMucHVzaFN0YWNrKGYs
YSxkLnNlbGVjdG9yKX19fSk7Yy5leHRlbmQoe2NsZWFuOmZ1bmN0aW9uKGEsYixkLGYpe2I9Ynx8
cztpZih0eXBlb2YgYi5jcmVhdGVFbGVtZW50PT09InVuZGVmaW5lZCIpYj1iLm93bmVyRG9jdW1l
bnR8fGJbMF0mJmJbMF0ub3duZXJEb2N1bWVudHx8cztmb3IodmFyIGU9W10saj0wLGk7KGk9YVtq
XSkhPW51bGw7aisrKXtpZih0eXBlb2YgaT09PSJudW1iZXIiKWkrPSIiO2lmKGkpe2lmKHR5cGVv
ZiBpPT09InN0cmluZyImJiFqYi50ZXN0KGkpKWk9Yi5jcmVhdGVUZXh0Tm9kZShpKTtlbHNlIGlm
KHR5cGVvZiBpPT09InN0cmluZyIpe2k9aS5yZXBsYWNlKEthLE1hKTt2YXIgbz0oTGEuZXhlYyhp
KXx8WyIiLAorIiJdKVsxXS50b0xvd2VyQ2FzZSgpLGs9RltvXXx8Ri5fZGVmYXVsdCxuPWtbMF0s
cj1iLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2ZvcihyLmlubmVySFRNTD1rWzFdK2kra1syXTtuLS07
KXI9ci5sYXN0Q2hpbGQ7aWYoIWMuc3VwcG9ydC50Ym9keSl7bj1pYi50ZXN0KGkpO289bz09PSJ0
YWJsZSImJiFuP3IuZmlyc3RDaGlsZCYmci5maXJzdENoaWxkLmNoaWxkTm9kZXM6a1sxXT09PSI8
dGFibGU+IiYmIW4/ci5jaGlsZE5vZGVzOltdO2ZvcihrPW8ubGVuZ3RoLTE7az49MDstLWspYy5u
b2RlTmFtZShvW2tdLCJ0Ym9keSIpJiYhb1trXS5jaGlsZE5vZGVzLmxlbmd0aCYmb1trXS5wYXJl
bnROb2RlLnJlbW92ZUNoaWxkKG9ba10pfSFjLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UmJlYu
dGVzdChpKSYmci5pbnNlcnRCZWZvcmUoYi5jcmVhdGVUZXh0Tm9kZShWLmV4ZWMoaSlbMF0pLHIu
Zmlyc3RDaGlsZCk7aT1yLmNoaWxkTm9kZXN9aWYoaS5ub2RlVHlwZSllLnB1c2goaSk7ZWxzZSBl
PQorYy5tZXJnZShlLGkpfX1pZihkKWZvcihqPTA7ZVtqXTtqKyspaWYoZiYmYy5ub2RlTmFtZShl
W2pdLCJzY3JpcHQiKSYmKCFlW2pdLnR5cGV8fGVbal0udHlwZS50b0xvd2VyQ2FzZSgpPT09InRl
eHQvamF2YXNjcmlwdCIpKWYucHVzaChlW2pdLnBhcmVudE5vZGU/ZVtqXS5wYXJlbnROb2RlLnJl
bW92ZUNoaWxkKGVbal0pOmVbal0pO2Vsc2V7ZVtqXS5ub2RlVHlwZT09PTEmJmUuc3BsaWNlLmFw
cGx5KGUsW2orMSwwXS5jb25jYXQoYy5tYWtlQXJyYXkoZVtqXS5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgic2NyaXB0IikpKSk7ZC5hcHBlbmRDaGlsZChlW2pdKX1yZXR1cm4gZX0sY2xlYW5EYXRhOmZ1
bmN0aW9uKGEpe2Zvcih2YXIgYixkLGY9Yy5jYWNoZSxlPWMuZXZlbnQuc3BlY2lhbCxqPWMuc3Vw
cG9ydC5kZWxldGVFeHBhbmRvLGk9MCxvOyhvPWFbaV0pIT1udWxsO2krKylpZihkPW9bYy5leHBh
bmRvXSl7Yj1mW2RdO2lmKGIuZXZlbnRzKWZvcih2YXIgayBpbiBiLmV2ZW50cyllW2tdPworYy5l
dmVudC5yZW1vdmUobyxrKTpDYShvLGssYi5oYW5kbGUpO2lmKGopZGVsZXRlIG9bYy5leHBhbmRv
XTtlbHNlIG8ucmVtb3ZlQXR0cmlidXRlJiZvLnJlbW92ZUF0dHJpYnV0ZShjLmV4cGFuZG8pO2Rl
bGV0ZSBmW2RdfX19KTt2YXIga2I9L3otP2luZGV4fGZvbnQtP3dlaWdodHxvcGFjaXR5fHpvb218
bGluZS0/aGVpZ2h0L2ksTmE9L2FscGhhXChbXildKlwpLyxPYT0vb3BhY2l0eT0oW14pXSopLyxo
YT0vZmxvYXQvaSxpYT0vLShbYS16XSkvaWcsbGI9LyhbQS1aXSkvZyxtYj0vXi0/XGQrKD86cHgp
PyQvaSxuYj0vXi0/XGQvLG9iPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRl
biIsZGlzcGxheToiYmxvY2sifSxwYj1bIkxlZnQiLCJSaWdodCJdLHFiPVsiVG9wIiwiQm90dG9t
Il0scmI9cy5kZWZhdWx0VmlldyYmcy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlLFBhPWMu
c3VwcG9ydC5jc3NGbG9hdD8iY3NzRmxvYXQiOiJzdHlsZUZsb2F0IixqYT0KK2Z1bmN0aW9uKGEs
Yil7cmV0dXJuIGIudG9VcHBlckNhc2UoKX07Yy5mbi5jc3M9ZnVuY3Rpb24oYSxiKXtyZXR1cm4g
WCh0aGlzLGEsYix0cnVlLGZ1bmN0aW9uKGQsZixlKXtpZihlPT09dylyZXR1cm4gYy5jdXJDU1Mo
ZCxmKTtpZih0eXBlb2YgZT09PSJudW1iZXIiJiYha2IudGVzdChmKSllKz0icHgiO2Muc3R5bGUo
ZCxmLGUpfSl9O2MuZXh0ZW5kKHtzdHlsZTpmdW5jdGlvbihhLGIsZCl7aWYoIWF8fGEubm9kZVR5
cGU9PT0zfHxhLm5vZGVUeXBlPT09OClyZXR1cm4gdztpZigoYj09PSJ3aWR0aCJ8fGI9PT0iaGVp
Z2h0IikmJnBhcnNlRmxvYXQoZCk8MClkPXc7dmFyIGY9YS5zdHlsZXx8YSxlPWQhPT13O2lmKCFj
LnN1cHBvcnQub3BhY2l0eSYmYj09PSJvcGFjaXR5Iil7aWYoZSl7Zi56b29tPTE7Yj1wYXJzZUlu
dChkLDEwKSsiIj09PSJOYU4iPyIiOiJhbHBoYShvcGFjaXR5PSIrZCoxMDArIikiO2E9Zi5maWx0
ZXJ8fGMuY3VyQ1NTKGEsImZpbHRlciIpfHwiIjtmLmZpbHRlcj0KK05hLnRlc3QoYSk/YS5yZXBs
YWNlKE5hLGIpOmJ9cmV0dXJuIGYuZmlsdGVyJiZmLmZpbHRlci5pbmRleE9mKCJvcGFjaXR5PSIp
Pj0wP3BhcnNlRmxvYXQoT2EuZXhlYyhmLmZpbHRlcilbMV0pLzEwMCsiIjoiIn1pZihoYS50ZXN0
KGIpKWI9UGE7Yj1iLnJlcGxhY2UoaWEsamEpO2lmKGUpZltiXT1kO3JldHVybiBmW2JdfSxjc3M6
ZnVuY3Rpb24oYSxiLGQsZil7aWYoYj09PSJ3aWR0aCJ8fGI9PT0iaGVpZ2h0Iil7dmFyIGUsaj1i
PT09IndpZHRoIj9wYjpxYjtmdW5jdGlvbiBpKCl7ZT1iPT09IndpZHRoIj9hLm9mZnNldFdpZHRo
OmEub2Zmc2V0SGVpZ2h0O2YhPT0iYm9yZGVyIiYmYy5lYWNoKGosZnVuY3Rpb24oKXtmfHwoZS09
cGFyc2VGbG9hdChjLmN1ckNTUyhhLCJwYWRkaW5nIit0aGlzLHRydWUpKXx8MCk7aWYoZj09PSJt
YXJnaW4iKWUrPXBhcnNlRmxvYXQoYy5jdXJDU1MoYSwibWFyZ2luIit0aGlzLHRydWUpKXx8MDtl
bHNlIGUtPXBhcnNlRmxvYXQoYy5jdXJDU1MoYSwKKyJib3JkZXIiK3RoaXMrIldpZHRoIix0cnVl
KSl8fDB9KX1hLm9mZnNldFdpZHRoIT09MD9pKCk6Yy5zd2FwKGEsb2IsaSk7cmV0dXJuIE1hdGgu
bWF4KDAsTWF0aC5yb3VuZChlKSl9cmV0dXJuIGMuY3VyQ1NTKGEsYixkKX0sY3VyQ1NTOmZ1bmN0
aW9uKGEsYixkKXt2YXIgZixlPWEuc3R5bGU7aWYoIWMuc3VwcG9ydC5vcGFjaXR5JiZiPT09Im9w
YWNpdHkiJiZhLmN1cnJlbnRTdHlsZSl7Zj1PYS50ZXN0KGEuY3VycmVudFN0eWxlLmZpbHRlcnx8
IiIpP3BhcnNlRmxvYXQoUmVnRXhwLiQxKS8xMDArIiI6IiI7cmV0dXJuIGY9PT0iIj8iMSI6Zn1p
ZihoYS50ZXN0KGIpKWI9UGE7aWYoIWQmJmUmJmVbYl0pZj1lW2JdO2Vsc2UgaWYocmIpe2lmKGhh
LnRlc3QoYikpYj0iZmxvYXQiO2I9Yi5yZXBsYWNlKGxiLCItJDEiKS50b0xvd2VyQ2FzZSgpO2U9
YS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O2lmKCFlKXJldHVybiBudWxsO2lmKGE9ZS5nZXRD
b21wdXRlZFN0eWxlKGEsbnVsbCkpZj0KK2EuZ2V0UHJvcGVydHlWYWx1ZShiKTtpZihiPT09Im9w
YWNpdHkiJiZmPT09IiIpZj0iMSJ9ZWxzZSBpZihhLmN1cnJlbnRTdHlsZSl7ZD1iLnJlcGxhY2Uo
aWEsamEpO2Y9YS5jdXJyZW50U3R5bGVbYl18fGEuY3VycmVudFN0eWxlW2RdO2lmKCFtYi50ZXN0
KGYpJiZuYi50ZXN0KGYpKXtiPWUubGVmdDt2YXIgaj1hLnJ1bnRpbWVTdHlsZS5sZWZ0O2EucnVu
dGltZVN0eWxlLmxlZnQ9YS5jdXJyZW50U3R5bGUubGVmdDtlLmxlZnQ9ZD09PSJmb250U2l6ZSI/
IjFlbSI6Znx8MDtmPWUucGl4ZWxMZWZ0KyJweCI7ZS5sZWZ0PWI7YS5ydW50aW1lU3R5bGUubGVm
dD1qfX1yZXR1cm4gZn0sc3dhcDpmdW5jdGlvbihhLGIsZCl7dmFyIGY9e307Zm9yKHZhciBlIGlu
IGIpe2ZbZV09YS5zdHlsZVtlXTthLnN0eWxlW2VdPWJbZV19ZC5jYWxsKGEpO2ZvcihlIGluIGIp
YS5zdHlsZVtlXT1mW2VdfX0pO2lmKGMuZXhwciYmYy5leHByLmZpbHRlcnMpe2MuZXhwci5maWx0
ZXJzLmhpZGRlbj1mdW5jdGlvbihhKXt2YXIgYj0KK2Eub2Zmc2V0V2lkdGgsZD1hLm9mZnNldEhl
aWdodCxmPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJ0ciI7cmV0dXJuIGI9PT0wJiZkPT09
MCYmIWY/dHJ1ZTpiPjAmJmQ+MCYmIWY/ZmFsc2U6Yy5jdXJDU1MoYSwiZGlzcGxheSIpPT09Im5v
bmUifTtjLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFjLmV4cHIuZmls
dGVycy5oaWRkZW4oYSl9fXZhciBzYj1KKCksdGI9LzxzY3JpcHQoLnxccykqP1wvc2NyaXB0Pi9n
aSx1Yj0vc2VsZWN0fHRleHRhcmVhL2ksdmI9L2NvbG9yfGRhdGV8ZGF0ZXRpbWV8ZW1haWx8aGlk
ZGVufG1vbnRofG51bWJlcnxwYXNzd29yZHxyYW5nZXxzZWFyY2h8dGVsfHRleHR8dGltZXx1cmx8
d2Vlay9pLE49Lz1cPygmfCQpLyxrYT0vXD8vLHdiPS8oXD98JilfPS4qPygmfCQpLyx4Yj0vXihc
dys6KT9cL1wvKFteXC8/I10rKS8seWI9LyUyMC9nLHpiPWMuZm4ubG9hZDtjLmZuLmV4dGVuZCh7
bG9hZDpmdW5jdGlvbihhLGIsZCl7aWYodHlwZW9mIGEhPT0KKyJzdHJpbmciKXJldHVybiB6Yi5j
YWxsKHRoaXMsYSk7ZWxzZSBpZighdGhpcy5sZW5ndGgpcmV0dXJuIHRoaXM7dmFyIGY9YS5pbmRl
eE9mKCIgIik7aWYoZj49MCl7dmFyIGU9YS5zbGljZShmLGEubGVuZ3RoKTthPWEuc2xpY2UoMCxm
KX1mPSJHRVQiO2lmKGIpaWYoYy5pc0Z1bmN0aW9uKGIpKXtkPWI7Yj1udWxsfWVsc2UgaWYodHlw
ZW9mIGI9PT0ib2JqZWN0Iil7Yj1jLnBhcmFtKGIsYy5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwp
O2Y9IlBPU1QifXZhciBqPXRoaXM7Yy5hamF4KHt1cmw6YSx0eXBlOmYsZGF0YVR5cGU6Imh0bWwi
LGRhdGE6Yixjb21wbGV0ZTpmdW5jdGlvbihpLG8pe2lmKG89PT0ic3VjY2VzcyJ8fG89PT0ibm90
bW9kaWZpZWQiKWouaHRtbChlP2MoIjxkaXYgLz4iKS5hcHBlbmQoaS5yZXNwb25zZVRleHQucmVw
bGFjZSh0YiwiIikpLmZpbmQoZSk6aS5yZXNwb25zZVRleHQpO2QmJmouZWFjaChkLFtpLnJlc3Bv
bnNlVGV4dCxvLGldKX19KTtyZXR1cm4gdGhpc30sCitzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1
cm4gYy5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlv
bigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnRzP2MubWFr
ZUFycmF5KHRoaXMuZWxlbWVudHMpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5uYW1lJiYhdGhpcy5kaXNhYmxlZCYmKHRoaXMuY2hlY2tlZHx8dWIudGVzdCh0aGlzLm5vZGVO
YW1lKXx8dmIudGVzdCh0aGlzLnR5cGUpKX0pLm1hcChmdW5jdGlvbihhLGIpe2E9Yyh0aGlzKS52
YWwoKTtyZXR1cm4gYT09bnVsbD9udWxsOmMuaXNBcnJheShhKT9jLm1hcChhLGZ1bmN0aW9uKGQp
e3JldHVybntuYW1lOmIubmFtZSx2YWx1ZTpkfX0pOntuYW1lOmIubmFtZSx2YWx1ZTphfX0pLmdl
dCgpfX0pO2MuZWFjaCgiYWpheFN0YXJ0IGFqYXhTdG9wIGFqYXhDb21wbGV0ZSBhamF4RXJyb3Ig
YWpheFN1Y2Nlc3MgYWpheFNlbmQiLnNwbGl0KCIgIiksCitmdW5jdGlvbihhLGIpe2MuZm5bYl09
ZnVuY3Rpb24oZCl7cmV0dXJuIHRoaXMuYmluZChiLGQpfX0pO2MuZXh0ZW5kKHtnZXQ6ZnVuY3Rp
b24oYSxiLGQsZil7aWYoYy5pc0Z1bmN0aW9uKGIpKXtmPWZ8fGQ7ZD1iO2I9bnVsbH1yZXR1cm4g
Yy5hamF4KHt0eXBlOiJHRVQiLHVybDphLGRhdGE6YixzdWNjZXNzOmQsZGF0YVR5cGU6Zn0pfSxn
ZXRTY3JpcHQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYy5nZXQoYSxudWxsLGIsInNjcmlwdCIpfSxn
ZXRKU09OOmZ1bmN0aW9uKGEsYixkKXtyZXR1cm4gYy5nZXQoYSxiLGQsImpzb24iKX0scG9zdDpm
dW5jdGlvbihhLGIsZCxmKXtpZihjLmlzRnVuY3Rpb24oYikpe2Y9Znx8ZDtkPWI7Yj17fX1yZXR1
cm4gYy5hamF4KHt0eXBlOiJQT1NUIix1cmw6YSxkYXRhOmIsc3VjY2VzczpkLGRhdGFUeXBlOmZ9
KX0sYWpheFNldHVwOmZ1bmN0aW9uKGEpe2MuZXh0ZW5kKGMuYWpheFNldHRpbmdzLGEpfSxhamF4
U2V0dGluZ3M6e3VybDpsb2NhdGlvbi5ocmVmLAorZ2xvYmFsOnRydWUsdHlwZToiR0VUIixjb250
ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIixwcm9jZXNzRGF0YTp0
cnVlLGFzeW5jOnRydWUseGhyOkEuWE1MSHR0cFJlcXVlc3QmJihBLmxvY2F0aW9uLnByb3RvY29s
IT09ImZpbGU6Inx8IUEuQWN0aXZlWE9iamVjdCk/ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEEuWE1M
SHR0cFJlcXVlc3R9OmZ1bmN0aW9uKCl7dHJ5e3JldHVybiBuZXcgQS5BY3RpdmVYT2JqZWN0KCJN
aWNyb3NvZnQuWE1MSFRUUCIpfWNhdGNoKGEpe319LGFjY2VwdHM6e3htbDoiYXBwbGljYXRpb24v
eG1sLCB0ZXh0L3htbCIsaHRtbDoidGV4dC9odG1sIixzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwg
YXBwbGljYXRpb24vamF2YXNjcmlwdCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZh
c2NyaXB0Iix0ZXh0OiJ0ZXh0L3BsYWluIixfZGVmYXVsdDoiKi8qIn19LGxhc3RNb2RpZmllZDp7
fSxldGFnOnt9LGFqYXg6ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe2Uuc3VjY2VzcyYmCitlLnN1
Y2Nlc3MuY2FsbChrLG8saSx4KTtlLmdsb2JhbCYmZigiYWpheFN1Y2Nlc3MiLFt4LGVdKX1mdW5j
dGlvbiBkKCl7ZS5jb21wbGV0ZSYmZS5jb21wbGV0ZS5jYWxsKGsseCxpKTtlLmdsb2JhbCYmZigi
YWpheENvbXBsZXRlIixbeCxlXSk7ZS5nbG9iYWwmJiEtLWMuYWN0aXZlJiZjLmV2ZW50LnRyaWdn
ZXIoImFqYXhTdG9wIil9ZnVuY3Rpb24gZihxLHApeyhlLmNvbnRleHQ/YyhlLmNvbnRleHQpOmMu
ZXZlbnQpLnRyaWdnZXIocSxwKX12YXIgZT1jLmV4dGVuZCh0cnVlLHt9LGMuYWpheFNldHRpbmdz
LGEpLGosaSxvLGs9YSYmYS5jb250ZXh0fHxlLG49ZS50eXBlLnRvVXBwZXJDYXNlKCk7aWYoZS5k
YXRhJiZlLnByb2Nlc3NEYXRhJiZ0eXBlb2YgZS5kYXRhIT09InN0cmluZyIpZS5kYXRhPWMucGFy
YW0oZS5kYXRhLGUudHJhZGl0aW9uYWwpO2lmKGUuZGF0YVR5cGU9PT0ianNvbnAiKXtpZihuPT09
IkdFVCIpTi50ZXN0KGUudXJsKXx8KGUudXJsKz0oa2EudGVzdChlLnVybCk/CisiJiI6Ij8iKSso
ZS5qc29ucHx8ImNhbGxiYWNrIikrIj0/Iik7ZWxzZSBpZighZS5kYXRhfHwhTi50ZXN0KGUuZGF0
YSkpZS5kYXRhPShlLmRhdGE/ZS5kYXRhKyImIjoiIikrKGUuanNvbnB8fCJjYWxsYmFjayIpKyI9
PyI7ZS5kYXRhVHlwZT0ianNvbiJ9aWYoZS5kYXRhVHlwZT09PSJqc29uIiYmKGUuZGF0YSYmTi50
ZXN0KGUuZGF0YSl8fE4udGVzdChlLnVybCkpKXtqPWUuanNvbnBDYWxsYmFja3x8Impzb25wIitz
YisrO2lmKGUuZGF0YSllLmRhdGE9KGUuZGF0YSsiIikucmVwbGFjZShOLCI9IitqKyIkMSIpO2Uu
dXJsPWUudXJsLnJlcGxhY2UoTiwiPSIraisiJDEiKTtlLmRhdGFUeXBlPSJzY3JpcHQiO0Fbal09
QVtqXXx8ZnVuY3Rpb24ocSl7bz1xO2IoKTtkKCk7QVtqXT13O3RyeXtkZWxldGUgQVtqXX1jYXRj
aChwKXt9eiYmei5yZW1vdmVDaGlsZChDKX19aWYoZS5kYXRhVHlwZT09PSJzY3JpcHQiJiZlLmNh
Y2hlPT09bnVsbCllLmNhY2hlPWZhbHNlO2lmKGUuY2FjaGU9PT0KK2ZhbHNlJiZuPT09IkdFVCIp
e3ZhciByPUooKSx1PWUudXJsLnJlcGxhY2Uod2IsIiQxXz0iK3IrIiQyIik7ZS51cmw9dSsodT09
PWUudXJsPyhrYS50ZXN0KGUudXJsKT8iJiI6Ij8iKSsiXz0iK3I6IiIpfWlmKGUuZGF0YSYmbj09
PSJHRVQiKWUudXJsKz0oa2EudGVzdChlLnVybCk/IiYiOiI/IikrZS5kYXRhO2UuZ2xvYmFsJiYh
Yy5hY3RpdmUrKyYmYy5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKTtyPShyPXhiLmV4ZWMoZS51
cmwpKSYmKHJbMV0mJnJbMV0hPT1sb2NhdGlvbi5wcm90b2NvbHx8clsyXSE9PWxvY2F0aW9uLmhv
c3QpO2lmKGUuZGF0YVR5cGU9PT0ic2NyaXB0IiYmbj09PSJHRVQiJiZyKXt2YXIgej1zLmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fHMuZG9jdW1lbnRFbGVtZW50LEM9cy5jcmVhdGVF
bGVtZW50KCJzY3JpcHQiKTtDLnNyYz1lLnVybDtpZihlLnNjcmlwdENoYXJzZXQpQy5jaGFyc2V0
PWUuc2NyaXB0Q2hhcnNldDtpZighail7dmFyIEI9CitmYWxzZTtDLm9ubG9hZD1DLm9ucmVhZHlz
dGF0ZWNoYW5nZT1mdW5jdGlvbigpe2lmKCFCJiYoIXRoaXMucmVhZHlTdGF0ZXx8dGhpcy5yZWFk
eVN0YXRlPT09ImxvYWRlZCJ8fHRoaXMucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpKXtCPXRydWU7
YigpO2QoKTtDLm9ubG9hZD1DLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsO3omJkMucGFyZW50Tm9k
ZSYmei5yZW1vdmVDaGlsZChDKX19fXouaW5zZXJ0QmVmb3JlKEMsei5maXJzdENoaWxkKTtyZXR1
cm4gd312YXIgRT1mYWxzZSx4PWUueGhyKCk7aWYoeCl7ZS51c2VybmFtZT94Lm9wZW4obixlLnVy
bCxlLmFzeW5jLGUudXNlcm5hbWUsZS5wYXNzd29yZCk6eC5vcGVuKG4sZS51cmwsZS5hc3luYyk7
dHJ5e2lmKGUuZGF0YXx8YSYmYS5jb250ZW50VHlwZSl4LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRl
bnQtVHlwZSIsZS5jb250ZW50VHlwZSk7aWYoZS5pZk1vZGlmaWVkKXtjLmxhc3RNb2RpZmllZFtl
LnVybF0mJnguc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLAorYy5sYXN0TW9k
aWZpZWRbZS51cmxdKTtjLmV0YWdbZS51cmxdJiZ4LnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUt
TWF0Y2giLGMuZXRhZ1tlLnVybF0pfXJ8fHguc2V0UmVxdWVzdEhlYWRlcigiWC1SZXF1ZXN0ZWQt
V2l0aCIsIlhNTEh0dHBSZXF1ZXN0Iik7eC5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLGUuZGF0
YVR5cGUmJmUuYWNjZXB0c1tlLmRhdGFUeXBlXT9lLmFjY2VwdHNbZS5kYXRhVHlwZV0rIiwgKi8q
IjplLmFjY2VwdHMuX2RlZmF1bHQpfWNhdGNoKGdhKXt9aWYoZS5iZWZvcmVTZW5kJiZlLmJlZm9y
ZVNlbmQuY2FsbChrLHgsZSk9PT1mYWxzZSl7ZS5nbG9iYWwmJiEtLWMuYWN0aXZlJiZjLmV2ZW50
LnRyaWdnZXIoImFqYXhTdG9wIik7eC5hYm9ydCgpO3JldHVybiBmYWxzZX1lLmdsb2JhbCYmZigi
YWpheFNlbmQiLFt4LGVdKTt2YXIgZz14Lm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbihxKXtp
ZigheHx8eC5yZWFkeVN0YXRlPT09MHx8cT09PSJhYm9ydCIpe0V8fAorZCgpO0U9dHJ1ZTtpZih4
KXgub25yZWFkeXN0YXRlY2hhbmdlPWMubm9vcH1lbHNlIGlmKCFFJiZ4JiYoeC5yZWFkeVN0YXRl
PT09NHx8cT09PSJ0aW1lb3V0Iikpe0U9dHJ1ZTt4Lm9ucmVhZHlzdGF0ZWNoYW5nZT1jLm5vb3A7
aT1xPT09InRpbWVvdXQiPyJ0aW1lb3V0IjohYy5odHRwU3VjY2Vzcyh4KT8iZXJyb3IiOmUuaWZN
b2RpZmllZCYmYy5odHRwTm90TW9kaWZpZWQoeCxlLnVybCk/Im5vdG1vZGlmaWVkIjoic3VjY2Vz
cyI7dmFyIHA7aWYoaT09PSJzdWNjZXNzIil0cnl7bz1jLmh0dHBEYXRhKHgsZS5kYXRhVHlwZSxl
KX1jYXRjaCh2KXtpPSJwYXJzZXJlcnJvciI7cD12fWlmKGk9PT0ic3VjY2VzcyJ8fGk9PT0ibm90
bW9kaWZpZWQiKWp8fGIoKTtlbHNlIGMuaGFuZGxlRXJyb3IoZSx4LGkscCk7ZCgpO3E9PT0idGlt
ZW91dCImJnguYWJvcnQoKTtpZihlLmFzeW5jKXg9bnVsbH19O3RyeXt2YXIgaD14LmFib3J0O3gu
YWJvcnQ9ZnVuY3Rpb24oKXt4JiZoLmNhbGwoeCk7CitnKCJhYm9ydCIpfX1jYXRjaChsKXt9ZS5h
c3luYyYmZS50aW1lb3V0PjAmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXt4JiYhRSYmZygidGltZW91
dCIpfSxlLnRpbWVvdXQpO3RyeXt4LnNlbmQobj09PSJQT1NUInx8bj09PSJQVVQifHxuPT09IkRF
TEVURSI/ZS5kYXRhOm51bGwpfWNhdGNoKG0pe2MuaGFuZGxlRXJyb3IoZSx4LG51bGwsbSk7ZCgp
fWUuYXN5bmN8fGcoKTtyZXR1cm4geH19LGhhbmRsZUVycm9yOmZ1bmN0aW9uKGEsYixkLGYpe2lm
KGEuZXJyb3IpYS5lcnJvci5jYWxsKGEuY29udGV4dHx8YSxiLGQsZik7aWYoYS5nbG9iYWwpKGEu
Y29udGV4dD9jKGEuY29udGV4dCk6Yy5ldmVudCkudHJpZ2dlcigiYWpheEVycm9yIixbYixhLGZd
KX0sYWN0aXZlOjAsaHR0cFN1Y2Nlc3M6ZnVuY3Rpb24oYSl7dHJ5e3JldHVybiFhLnN0YXR1cyYm
bG9jYXRpb24ucHJvdG9jb2w9PT0iZmlsZToifHxhLnN0YXR1cz49MjAwJiZhLnN0YXR1czwzMDB8
fGEuc3RhdHVzPT09MzA0fHxhLnN0YXR1cz09PQorMTIyM3x8YS5zdGF0dXM9PT0wfWNhdGNoKGIp
e31yZXR1cm4gZmFsc2V9LGh0dHBOb3RNb2RpZmllZDpmdW5jdGlvbihhLGIpe3ZhciBkPWEuZ2V0
UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSxmPWEuZ2V0UmVzcG9uc2VIZWFkZXIoIkV0
YWciKTtpZihkKWMubGFzdE1vZGlmaWVkW2JdPWQ7aWYoZiljLmV0YWdbYl09ZjtyZXR1cm4gYS5z
dGF0dXM9PT0zMDR8fGEuc3RhdHVzPT09MH0saHR0cERhdGE6ZnVuY3Rpb24oYSxiLGQpe3ZhciBm
PWEuZ2V0UmVzcG9uc2VIZWFkZXIoImNvbnRlbnQtdHlwZSIpfHwiIixlPWI9PT0ieG1sInx8IWIm
JmYuaW5kZXhPZigieG1sIik+PTA7YT1lP2EucmVzcG9uc2VYTUw6YS5yZXNwb25zZVRleHQ7ZSYm
YS5kb2N1bWVudEVsZW1lbnQubm9kZU5hbWU9PT0icGFyc2VyZXJyb3IiJiZjLmVycm9yKCJwYXJz
ZXJlcnJvciIpO2lmKGQmJmQuZGF0YUZpbHRlcilhPWQuZGF0YUZpbHRlcihhLGIpO2lmKHR5cGVv
ZiBhPT09InN0cmluZyIpaWYoYj09PQorImpzb24ifHwhYiYmZi5pbmRleE9mKCJqc29uIik+PTAp
YT1jLnBhcnNlSlNPTihhKTtlbHNlIGlmKGI9PT0ic2NyaXB0Inx8IWImJmYuaW5kZXhPZigiamF2
YXNjcmlwdCIpPj0wKWMuZ2xvYmFsRXZhbChhKTtyZXR1cm4gYX0scGFyYW06ZnVuY3Rpb24oYSxi
KXtmdW5jdGlvbiBkKGksbyl7aWYoYy5pc0FycmF5KG8pKWMuZWFjaChvLGZ1bmN0aW9uKGssbil7
Ynx8L1xbXF0kLy50ZXN0KGkpP2YoaSxuKTpkKGkrIlsiKyh0eXBlb2Ygbj09PSJvYmplY3QifHxj
LmlzQXJyYXkobik/azoiIikrIl0iLG4pfSk7ZWxzZSFiJiZvIT1udWxsJiZ0eXBlb2Ygbz09PSJv
YmplY3QiP2MuZWFjaChvLGZ1bmN0aW9uKGssbil7ZChpKyJbIitrKyJdIixuKX0pOmYoaSxvKX1m
dW5jdGlvbiBmKGksbyl7bz1jLmlzRnVuY3Rpb24obyk/bygpOm87ZVtlLmxlbmd0aF09ZW5jb2Rl
VVJJQ29tcG9uZW50KGkpKyI9IitlbmNvZGVVUklDb21wb25lbnQobyl9dmFyIGU9W107aWYoYj09
PXcpYj1jLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbDsKK2lmKGMuaXNBcnJheShhKXx8YS5qcXVl
cnkpYy5lYWNoKGEsZnVuY3Rpb24oKXtmKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9y
KHZhciBqIGluIGEpZChqLGFbal0pO3JldHVybiBlLmpvaW4oIiYiKS5yZXBsYWNlKHliLCIrIil9
fSk7dmFyIGxhPXt9LEFiPS90b2dnbGV8c2hvd3xoaWRlLyxCYj0vXihbKy1dPSk/KFtcZCstLl0r
KSguKikkLyxXLHZhPVtbImhlaWdodCIsIm1hcmdpblRvcCIsIm1hcmdpbkJvdHRvbSIsInBhZGRp
bmdUb3AiLCJwYWRkaW5nQm90dG9tIl0sWyJ3aWR0aCIsIm1hcmdpbkxlZnQiLCJtYXJnaW5SaWdo
dCIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0Il0sWyJvcGFjaXR5Il1dO2MuZm4uZXh0ZW5k
KHtzaG93OmZ1bmN0aW9uKGEsYil7aWYoYXx8YT09PTApcmV0dXJuIHRoaXMuYW5pbWF0ZShLKCJz
aG93IiwzKSxhLGIpO2Vsc2V7YT0wO2ZvcihiPXRoaXMubGVuZ3RoO2E8YjthKyspe3ZhciBkPWMu
ZGF0YSh0aGlzW2FdLCJvbGRkaXNwbGF5Iik7Cit0aGlzW2FdLnN0eWxlLmRpc3BsYXk9ZHx8IiI7
aWYoYy5jc3ModGhpc1thXSwiZGlzcGxheSIpPT09Im5vbmUiKXtkPXRoaXNbYV0ubm9kZU5hbWU7
dmFyIGY7aWYobGFbZF0pZj1sYVtkXTtlbHNle3ZhciBlPWMoIjwiK2QrIiAvPiIpLmFwcGVuZFRv
KCJib2R5Iik7Zj1lLmNzcygiZGlzcGxheSIpO2lmKGY9PT0ibm9uZSIpZj0iYmxvY2siO2UucmVt
b3ZlKCk7bGFbZF09Zn1jLmRhdGEodGhpc1thXSwib2xkZGlzcGxheSIsZil9fWE9MDtmb3IoYj10
aGlzLmxlbmd0aDthPGI7YSsrKXRoaXNbYV0uc3R5bGUuZGlzcGxheT1jLmRhdGEodGhpc1thXSwi
b2xkZGlzcGxheSIpfHwiIjtyZXR1cm4gdGhpc319LGhpZGU6ZnVuY3Rpb24oYSxiKXtpZihhfHxh
PT09MClyZXR1cm4gdGhpcy5hbmltYXRlKEsoImhpZGUiLDMpLGEsYik7ZWxzZXthPTA7Zm9yKGI9
dGhpcy5sZW5ndGg7YTxiO2ErKyl7dmFyIGQ9Yy5kYXRhKHRoaXNbYV0sIm9sZGRpc3BsYXkiKTsh
ZCYmZCE9PSJub25lIiYmYy5kYXRhKHRoaXNbYV0sCisib2xkZGlzcGxheSIsYy5jc3ModGhpc1th
XSwiZGlzcGxheSIpKX1hPTA7Zm9yKGI9dGhpcy5sZW5ndGg7YTxiO2ErKyl0aGlzW2FdLnN0eWxl
LmRpc3BsYXk9Im5vbmUiO3JldHVybiB0aGlzfX0sX3RvZ2dsZTpjLmZuLnRvZ2dsZSx0b2dnbGU6
ZnVuY3Rpb24oYSxiKXt2YXIgZD10eXBlb2YgYT09PSJib29sZWFuIjtpZihjLmlzRnVuY3Rpb24o
YSkmJmMuaXNGdW5jdGlvbihiKSl0aGlzLl90b2dnbGUuYXBwbHkodGhpcyxhcmd1bWVudHMpO2Vs
c2UgYT09bnVsbHx8ZD90aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZj1kP2E6Yyh0aGlzKS5pcygi
OmhpZGRlbiIpO2ModGhpcylbZj8ic2hvdyI6ImhpZGUiXSgpfSk6dGhpcy5hbmltYXRlKEsoInRv
Z2dsZSIsMyksYSxiKTtyZXR1cm4gdGhpc30sZmFkZVRvOmZ1bmN0aW9uKGEsYixkKXtyZXR1cm4g
dGhpcy5maWx0ZXIoIjpoaWRkZW4iKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmlt
YXRlKHtvcGFjaXR5OmJ9LGEsZCl9LAorYW5pbWF0ZTpmdW5jdGlvbihhLGIsZCxmKXt2YXIgZT1j
LnNwZWVkKGIsZCxmKTtpZihjLmlzRW1wdHlPYmplY3QoYSkpcmV0dXJuIHRoaXMuZWFjaChlLmNv
bXBsZXRlKTtyZXR1cm4gdGhpc1tlLnF1ZXVlPT09ZmFsc2U/ImVhY2giOiJxdWV1ZSJdKGZ1bmN0
aW9uKCl7dmFyIGo9Yy5leHRlbmQoe30sZSksaSxvPXRoaXMubm9kZVR5cGU9PT0xJiZjKHRoaXMp
LmlzKCI6aGlkZGVuIiksaz10aGlzO2ZvcihpIGluIGEpe3ZhciBuPWkucmVwbGFjZShpYSxqYSk7
aWYoaSE9PW4pe2Fbbl09YVtpXTtkZWxldGUgYVtpXTtpPW59aWYoYVtpXT09PSJoaWRlIiYmb3x8
YVtpXT09PSJzaG93IiYmIW8pcmV0dXJuIGouY29tcGxldGUuY2FsbCh0aGlzKTtpZigoaT09PSJo
ZWlnaHQifHxpPT09IndpZHRoIikmJnRoaXMuc3R5bGUpe2ouZGlzcGxheT1jLmNzcyh0aGlzLCJk
aXNwbGF5Iik7ai5vdmVyZmxvdz10aGlzLnN0eWxlLm92ZXJmbG93fWlmKGMuaXNBcnJheShhW2ld
KSl7KGouc3BlY2lhbEVhc2luZz0KK2ouc3BlY2lhbEVhc2luZ3x8e30pW2ldPWFbaV1bMV07YVtp
XT1hW2ldWzBdfX1pZihqLm92ZXJmbG93IT1udWxsKXRoaXMuc3R5bGUub3ZlcmZsb3c9ImhpZGRl
biI7ai5jdXJBbmltPWMuZXh0ZW5kKHt9LGEpO2MuZWFjaChhLGZ1bmN0aW9uKHIsdSl7dmFyIHo9
bmV3IGMuZngoayxqLHIpO2lmKEFiLnRlc3QodSkpelt1PT09InRvZ2dsZSI/bz8ic2hvdyI6Imhp
ZGUiOnVdKGEpO2Vsc2V7dmFyIEM9QmIuZXhlYyh1KSxCPXouY3VyKHRydWUpfHwwO2lmKEMpe3U9
cGFyc2VGbG9hdChDWzJdKTt2YXIgRT1DWzNdfHwicHgiO2lmKEUhPT0icHgiKXtrLnN0eWxlW3Jd
PSh1fHwxKStFO0I9KHV8fDEpL3ouY3VyKHRydWUpKkI7ay5zdHlsZVtyXT1CK0V9aWYoQ1sxXSl1
PShDWzFdPT09Ii09Ij8tMToxKSp1K0I7ei5jdXN0b20oQix1LEUpfWVsc2Ugei5jdXN0b20oQix1
LCIiKX19KTtyZXR1cm4gdHJ1ZX0pfSxzdG9wOmZ1bmN0aW9uKGEsYil7dmFyIGQ9Yy50aW1lcnM7
YSYmdGhpcy5xdWV1ZShbXSk7Cit0aGlzLmVhY2goZnVuY3Rpb24oKXtmb3IodmFyIGY9ZC5sZW5n
dGgtMTtmPj0wO2YtLSlpZihkW2ZdLmVsZW09PT10aGlzKXtiJiZkW2ZdKHRydWUpO2Quc3BsaWNl
KGYsMSl9fSk7Ynx8dGhpcy5kZXF1ZXVlKCk7cmV0dXJuIHRoaXN9fSk7Yy5lYWNoKHtzbGlkZURv
d246Sygic2hvdyIsMSksc2xpZGVVcDpLKCJoaWRlIiwxKSxzbGlkZVRvZ2dsZTpLKCJ0b2dnbGUi
LDEpLGZhZGVJbjp7b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNpdHk6ImhpZGUifX0sZnVu
Y3Rpb24oYSxiKXtjLmZuW2FdPWZ1bmN0aW9uKGQsZil7cmV0dXJuIHRoaXMuYW5pbWF0ZShiLGQs
Zil9fSk7Yy5leHRlbmQoe3NwZWVkOmZ1bmN0aW9uKGEsYixkKXt2YXIgZj1hJiZ0eXBlb2YgYT09
PSJvYmplY3QiP2E6e2NvbXBsZXRlOmR8fCFkJiZifHxjLmlzRnVuY3Rpb24oYSkmJmEsZHVyYXRp
b246YSxlYXNpbmc6ZCYmYnx8YiYmIWMuaXNGdW5jdGlvbihiKSYmYn07Zi5kdXJhdGlvbj1jLmZ4
Lm9mZj8wOnR5cGVvZiBmLmR1cmF0aW9uPT09CisibnVtYmVyIj9mLmR1cmF0aW9uOmMuZnguc3Bl
ZWRzW2YuZHVyYXRpb25dfHxjLmZ4LnNwZWVkcy5fZGVmYXVsdDtmLm9sZD1mLmNvbXBsZXRlO2Yu
Y29tcGxldGU9ZnVuY3Rpb24oKXtmLnF1ZXVlIT09ZmFsc2UmJmModGhpcykuZGVxdWV1ZSgpO2Mu
aXNGdW5jdGlvbihmLm9sZCkmJmYub2xkLmNhbGwodGhpcyl9O3JldHVybiBmfSxlYXNpbmc6e2xp
bmVhcjpmdW5jdGlvbihhLGIsZCxmKXtyZXR1cm4gZCtmKmF9LHN3aW5nOmZ1bmN0aW9uKGEsYixk
LGYpe3JldHVybigtTWF0aC5jb3MoYSpNYXRoLlBJKS8yKzAuNSkqZitkfX0sdGltZXJzOltdLGZ4
OmZ1bmN0aW9uKGEsYixkKXt0aGlzLm9wdGlvbnM9Yjt0aGlzLmVsZW09YTt0aGlzLnByb3A9ZDtp
ZighYi5vcmlnKWIub3JpZz17fX19KTtjLmZ4LnByb3RvdHlwZT17dXBkYXRlOmZ1bmN0aW9uKCl7
dGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMu
bm93LHRoaXMpOyhjLmZ4LnN0ZXBbdGhpcy5wcm9wXXx8CitjLmZ4LnN0ZXAuX2RlZmF1bHQpKHRo
aXMpO2lmKCh0aGlzLnByb3A9PT0iaGVpZ2h0Inx8dGhpcy5wcm9wPT09IndpZHRoIikmJnRoaXMu
ZWxlbS5zdHlsZSl0aGlzLmVsZW0uc3R5bGUuZGlzcGxheT0iYmxvY2sifSxjdXI6ZnVuY3Rpb24o
YSl7aWYodGhpcy5lbGVtW3RoaXMucHJvcF0hPW51bGwmJighdGhpcy5lbGVtLnN0eWxlfHx0aGlz
LmVsZW0uc3R5bGVbdGhpcy5wcm9wXT09bnVsbCkpcmV0dXJuIHRoaXMuZWxlbVt0aGlzLnByb3Bd
O3JldHVybihhPXBhcnNlRmxvYXQoYy5jc3ModGhpcy5lbGVtLHRoaXMucHJvcCxhKSkpJiZhPi0x
MDAwMD9hOnBhcnNlRmxvYXQoYy5jdXJDU1ModGhpcy5lbGVtLHRoaXMucHJvcCkpfHwwfSxjdXN0
b206ZnVuY3Rpb24oYSxiLGQpe2Z1bmN0aW9uIGYoail7cmV0dXJuIGUuc3RlcChqKX10aGlzLnN0
YXJ0VGltZT1KKCk7dGhpcy5zdGFydD1hO3RoaXMuZW5kPWI7dGhpcy51bml0PWR8fHRoaXMudW5p
dHx8InB4Ijt0aGlzLm5vdz10aGlzLnN0YXJ0OwordGhpcy5wb3M9dGhpcy5zdGF0ZT0wO3ZhciBl
PXRoaXM7Zi5lbGVtPXRoaXMuZWxlbTtpZihmKCkmJmMudGltZXJzLnB1c2goZikmJiFXKVc9c2V0
SW50ZXJ2YWwoYy5meC50aWNrLDEzKX0sc2hvdzpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5vcmln
W3RoaXMucHJvcF09Yy5zdHlsZSh0aGlzLmVsZW0sdGhpcy5wcm9wKTt0aGlzLm9wdGlvbnMuc2hv
dz10cnVlO3RoaXMuY3VzdG9tKHRoaXMucHJvcD09PSJ3aWR0aCJ8fHRoaXMucHJvcD09PSJoZWln
aHQiPzE6MCx0aGlzLmN1cigpKTtjKHRoaXMuZWxlbSkuc2hvdygpfSxoaWRlOmZ1bmN0aW9uKCl7
dGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9wXT1jLnN0eWxlKHRoaXMuZWxlbSx0aGlzLnByb3Ap
O3RoaXMub3B0aW9ucy5oaWRlPXRydWU7dGhpcy5jdXN0b20odGhpcy5jdXIoKSwwKX0sc3RlcDpm
dW5jdGlvbihhKXt2YXIgYj1KKCksZD10cnVlO2lmKGF8fGI+PXRoaXMub3B0aW9ucy5kdXJhdGlv
bit0aGlzLnN0YXJ0VGltZSl7dGhpcy5ub3c9Cit0aGlzLmVuZDt0aGlzLnBvcz10aGlzLnN0YXRl
PTE7dGhpcy51cGRhdGUoKTt0aGlzLm9wdGlvbnMuY3VyQW5pbVt0aGlzLnByb3BdPXRydWU7Zm9y
KHZhciBmIGluIHRoaXMub3B0aW9ucy5jdXJBbmltKWlmKHRoaXMub3B0aW9ucy5jdXJBbmltW2Zd
IT09dHJ1ZSlkPWZhbHNlO2lmKGQpe2lmKHRoaXMub3B0aW9ucy5kaXNwbGF5IT1udWxsKXt0aGlz
LmVsZW0uc3R5bGUub3ZlcmZsb3c9dGhpcy5vcHRpb25zLm92ZXJmbG93O2E9Yy5kYXRhKHRoaXMu
ZWxlbSwib2xkZGlzcGxheSIpO3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PWE/YTp0aGlzLm9wdGlv
bnMuZGlzcGxheTtpZihjLmNzcyh0aGlzLmVsZW0sImRpc3BsYXkiKT09PSJub25lIil0aGlzLmVs
ZW0uc3R5bGUuZGlzcGxheT0iYmxvY2sifXRoaXMub3B0aW9ucy5oaWRlJiZjKHRoaXMuZWxlbSku
aGlkZSgpO2lmKHRoaXMub3B0aW9ucy5oaWRlfHx0aGlzLm9wdGlvbnMuc2hvdylmb3IodmFyIGUg
aW4gdGhpcy5vcHRpb25zLmN1ckFuaW0pYy5zdHlsZSh0aGlzLmVsZW0sCitlLHRoaXMub3B0aW9u
cy5vcmlnW2VdKTt0aGlzLm9wdGlvbnMuY29tcGxldGUuY2FsbCh0aGlzLmVsZW0pfXJldHVybiBm
YWxzZX1lbHNle2U9Yi10aGlzLnN0YXJ0VGltZTt0aGlzLnN0YXRlPWUvdGhpcy5vcHRpb25zLmR1
cmF0aW9uO2E9dGhpcy5vcHRpb25zLmVhc2luZ3x8KGMuZWFzaW5nLnN3aW5nPyJzd2luZyI6Imxp
bmVhciIpO3RoaXMucG9zPWMuZWFzaW5nW3RoaXMub3B0aW9ucy5zcGVjaWFsRWFzaW5nJiZ0aGlz
Lm9wdGlvbnMuc3BlY2lhbEVhc2luZ1t0aGlzLnByb3BdfHxhXSh0aGlzLnN0YXRlLGUsMCwxLHRo
aXMub3B0aW9ucy5kdXJhdGlvbik7dGhpcy5ub3c9dGhpcy5zdGFydCsodGhpcy5lbmQtdGhpcy5z
dGFydCkqdGhpcy5wb3M7dGhpcy51cGRhdGUoKX1yZXR1cm4gdHJ1ZX19O2MuZXh0ZW5kKGMuZngs
e3RpY2s6ZnVuY3Rpb24oKXtmb3IodmFyIGE9Yy50aW1lcnMsYj0wO2I8YS5sZW5ndGg7YisrKWFb
Yl0oKXx8YS5zcGxpY2UoYi0tLDEpO2EubGVuZ3RofHwKK2MuZnguc3RvcCgpfSxzdG9wOmZ1bmN0
aW9uKCl7Y2xlYXJJbnRlcnZhbChXKTtXPW51bGx9LHNwZWVkczp7c2xvdzo2MDAsZmFzdDoyMDAs
X2RlZmF1bHQ6NDAwfSxzdGVwOntvcGFjaXR5OmZ1bmN0aW9uKGEpe2Muc3R5bGUoYS5lbGVtLCJv
cGFjaXR5IixhLm5vdyl9LF9kZWZhdWx0OmZ1bmN0aW9uKGEpe2lmKGEuZWxlbS5zdHlsZSYmYS5l
bGVtLnN0eWxlW2EucHJvcF0hPW51bGwpYS5lbGVtLnN0eWxlW2EucHJvcF09KGEucHJvcD09PSJ3
aWR0aCJ8fGEucHJvcD09PSJoZWlnaHQiP01hdGgubWF4KDAsYS5ub3cpOmEubm93KSthLnVuaXQ7
ZWxzZSBhLmVsZW1bYS5wcm9wXT1hLm5vd319fSk7aWYoYy5leHByJiZjLmV4cHIuZmlsdGVycylj
LmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gYy5ncmVwKGMudGltZXJz
LGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofTtjLmZuLm9mZnNldD0iZ2V0
Qm91bmRpbmdDbGllbnRSZWN0ImluIHMuZG9jdW1lbnRFbGVtZW50PworZnVuY3Rpb24oYSl7dmFy
IGI9dGhpc1swXTtpZihhKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oZSl7Yy5vZmZzZXQuc2V0
T2Zmc2V0KHRoaXMsYSxlKX0pO2lmKCFifHwhYi5vd25lckRvY3VtZW50KXJldHVybiBudWxsO2lm
KGI9PT1iLm93bmVyRG9jdW1lbnQuYm9keSlyZXR1cm4gYy5vZmZzZXQuYm9keU9mZnNldChiKTt2
YXIgZD1iLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGY9Yi5vd25lckRvY3VtZW50O2I9Zi5ib2R5
O2Y9Zi5kb2N1bWVudEVsZW1lbnQ7cmV0dXJue3RvcDpkLnRvcCsoc2VsZi5wYWdlWU9mZnNldHx8
Yy5zdXBwb3J0LmJveE1vZGVsJiZmLnNjcm9sbFRvcHx8Yi5zY3JvbGxUb3ApLShmLmNsaWVudFRv
cHx8Yi5jbGllbnRUb3B8fDApLGxlZnQ6ZC5sZWZ0KyhzZWxmLnBhZ2VYT2Zmc2V0fHxjLnN1cHBv
cnQuYm94TW9kZWwmJmYuc2Nyb2xsTGVmdHx8Yi5zY3JvbGxMZWZ0KS0oZi5jbGllbnRMZWZ0fHxi
LmNsaWVudExlZnR8fDApfX06ZnVuY3Rpb24oYSl7dmFyIGI9Cit0aGlzWzBdO2lmKGEpcmV0dXJu
IHRoaXMuZWFjaChmdW5jdGlvbihyKXtjLm9mZnNldC5zZXRPZmZzZXQodGhpcyxhLHIpfSk7aWYo
IWJ8fCFiLm93bmVyRG9jdW1lbnQpcmV0dXJuIG51bGw7aWYoYj09PWIub3duZXJEb2N1bWVudC5i
b2R5KXJldHVybiBjLm9mZnNldC5ib2R5T2Zmc2V0KGIpO2Mub2Zmc2V0LmluaXRpYWxpemUoKTt2
YXIgZD1iLm9mZnNldFBhcmVudCxmPWIsZT1iLm93bmVyRG9jdW1lbnQsaixpPWUuZG9jdW1lbnRF
bGVtZW50LG89ZS5ib2R5O2Y9KGU9ZS5kZWZhdWx0Vmlldyk/ZS5nZXRDb21wdXRlZFN0eWxlKGIs
bnVsbCk6Yi5jdXJyZW50U3R5bGU7Zm9yKHZhciBrPWIub2Zmc2V0VG9wLG49Yi5vZmZzZXRMZWZ0
OyhiPWIucGFyZW50Tm9kZSkmJmIhPT1vJiZiIT09aTspe2lmKGMub2Zmc2V0LnN1cHBvcnRzRml4
ZWRQb3NpdGlvbiYmZi5wb3NpdGlvbj09PSJmaXhlZCIpYnJlYWs7aj1lP2UuZ2V0Q29tcHV0ZWRT
dHlsZShiLG51bGwpOmIuY3VycmVudFN0eWxlOworay09Yi5zY3JvbGxUb3A7bi09Yi5zY3JvbGxM
ZWZ0O2lmKGI9PT1kKXtrKz1iLm9mZnNldFRvcDtuKz1iLm9mZnNldExlZnQ7aWYoYy5vZmZzZXQu
ZG9lc05vdEFkZEJvcmRlciYmIShjLm9mZnNldC5kb2VzQWRkQm9yZGVyRm9yVGFibGVBbmRDZWxs
cyYmL150KGFibGV8ZHxoKSQvaS50ZXN0KGIubm9kZU5hbWUpKSl7ays9cGFyc2VGbG9hdChqLmJv
cmRlclRvcFdpZHRoKXx8MDtuKz1wYXJzZUZsb2F0KGouYm9yZGVyTGVmdFdpZHRoKXx8MH1mPWQ7
ZD1iLm9mZnNldFBhcmVudH1pZihjLm9mZnNldC5zdWJ0cmFjdHNCb3JkZXJGb3JPdmVyZmxvd05v
dFZpc2libGUmJmoub3ZlcmZsb3chPT0idmlzaWJsZSIpe2srPXBhcnNlRmxvYXQoai5ib3JkZXJU
b3BXaWR0aCl8fDA7bis9cGFyc2VGbG9hdChqLmJvcmRlckxlZnRXaWR0aCl8fDB9Zj1qfWlmKGYu
cG9zaXRpb249PT0icmVsYXRpdmUifHxmLnBvc2l0aW9uPT09InN0YXRpYyIpe2srPW8ub2Zmc2V0
VG9wO24rPW8ub2Zmc2V0TGVmdH1pZihjLm9mZnNldC5zdXBwb3J0c0ZpeGVkUG9zaXRpb24mJgor
Zi5wb3NpdGlvbj09PSJmaXhlZCIpe2srPU1hdGgubWF4KGkuc2Nyb2xsVG9wLG8uc2Nyb2xsVG9w
KTtuKz1NYXRoLm1heChpLnNjcm9sbExlZnQsby5zY3JvbGxMZWZ0KX1yZXR1cm57dG9wOmssbGVm
dDpufX07Yy5vZmZzZXQ9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt2YXIgYT1zLmJvZHksYj1zLmNy
ZWF0ZUVsZW1lbnQoImRpdiIpLGQsZixlLGo9cGFyc2VGbG9hdChjLmN1ckNTUyhhLCJtYXJnaW5U
b3AiLHRydWUpKXx8MDtjLmV4dGVuZChiLnN0eWxlLHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDow
LGxlZnQ6MCxtYXJnaW46MCxib3JkZXI6MCx3aWR0aDoiMXB4IixoZWlnaHQ6IjFweCIsdmlzaWJp
bGl0eToiaGlkZGVuIn0pO2IuaW5uZXJIVE1MPSI8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0
ZTt0b3A6MDtsZWZ0OjA7bWFyZ2luOjA7Ym9yZGVyOjVweCBzb2xpZCAjMDAwO3BhZGRpbmc6MDt3
aWR0aDoxcHg7aGVpZ2h0OjFweDsnPjxkaXY+PC9kaXY+PC9kaXY+PHRhYmxlIHN0eWxlPSdwb3Np
dGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7bWFyZ2luOjA7Ym9yZGVyOjVweCBzb2xpZCAjMDAw
O3BhZGRpbmc6MDt3aWR0aDoxcHg7aGVpZ2h0OjFweDsnIGNlbGxwYWRkaW5nPScwJyBjZWxsc3Bh
Y2luZz0nMCc+PHRyPjx0ZD48L3RkPjwvdHI+PC90YWJsZT4iOworYS5pbnNlcnRCZWZvcmUoYixh
LmZpcnN0Q2hpbGQpO2Q9Yi5maXJzdENoaWxkO2Y9ZC5maXJzdENoaWxkO2U9ZC5uZXh0U2libGlu
Zy5maXJzdENoaWxkLmZpcnN0Q2hpbGQ7dGhpcy5kb2VzTm90QWRkQm9yZGVyPWYub2Zmc2V0VG9w
IT09NTt0aGlzLmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzPWUub2Zmc2V0VG9wPT09NTtm
LnN0eWxlLnBvc2l0aW9uPSJmaXhlZCI7Zi5zdHlsZS50b3A9IjIwcHgiO3RoaXMuc3VwcG9ydHNG
aXhlZFBvc2l0aW9uPWYub2Zmc2V0VG9wPT09MjB8fGYub2Zmc2V0VG9wPT09MTU7Zi5zdHlsZS5w
b3NpdGlvbj1mLnN0eWxlLnRvcD0iIjtkLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iO2Quc3R5bGUu
cG9zaXRpb249InJlbGF0aXZlIjt0aGlzLnN1YnRyYWN0c0JvcmRlckZvck92ZXJmbG93Tm90Vmlz
aWJsZT1mLm9mZnNldFRvcD09PS01O3RoaXMuZG9lc05vdEluY2x1ZGVNYXJnaW5JbkJvZHlPZmZz
ZXQ9YS5vZmZzZXRUb3AhPT1qO2EucmVtb3ZlQ2hpbGQoYik7CitjLm9mZnNldC5pbml0aWFsaXpl
PWMubm9vcH0sYm9keU9mZnNldDpmdW5jdGlvbihhKXt2YXIgYj1hLm9mZnNldFRvcCxkPWEub2Zm
c2V0TGVmdDtjLm9mZnNldC5pbml0aWFsaXplKCk7aWYoYy5vZmZzZXQuZG9lc05vdEluY2x1ZGVN
YXJnaW5JbkJvZHlPZmZzZXQpe2IrPXBhcnNlRmxvYXQoYy5jdXJDU1MoYSwibWFyZ2luVG9wIix0
cnVlKSl8fDA7ZCs9cGFyc2VGbG9hdChjLmN1ckNTUyhhLCJtYXJnaW5MZWZ0Iix0cnVlKSl8fDB9
cmV0dXJue3RvcDpiLGxlZnQ6ZH19LHNldE9mZnNldDpmdW5jdGlvbihhLGIsZCl7aWYoL3N0YXRp
Yy8udGVzdChjLmN1ckNTUyhhLCJwb3NpdGlvbiIpKSlhLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2
ZSI7dmFyIGY9YyhhKSxlPWYub2Zmc2V0KCksaj1wYXJzZUludChjLmN1ckNTUyhhLCJ0b3AiLHRy
dWUpLDEwKXx8MCxpPXBhcnNlSW50KGMuY3VyQ1NTKGEsImxlZnQiLHRydWUpLDEwKXx8MDtpZihj
LmlzRnVuY3Rpb24oYikpYj1iLmNhbGwoYSwKK2QsZSk7ZD17dG9wOmIudG9wLWUudG9wK2osbGVm
dDpiLmxlZnQtZS5sZWZ0K2l9OyJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLGQpOmYuY3NzKGQp
fX07Yy5mbi5leHRlbmQoe3Bvc2l0aW9uOmZ1bmN0aW9uKCl7aWYoIXRoaXNbMF0pcmV0dXJuIG51
bGw7dmFyIGE9dGhpc1swXSxiPXRoaXMub2Zmc2V0UGFyZW50KCksZD10aGlzLm9mZnNldCgpLGY9
L15ib2R5fGh0bWwkL2kudGVzdChiWzBdLm5vZGVOYW1lKT97dG9wOjAsbGVmdDowfTpiLm9mZnNl
dCgpO2QudG9wLT1wYXJzZUZsb2F0KGMuY3VyQ1NTKGEsIm1hcmdpblRvcCIsdHJ1ZSkpfHwwO2Qu
bGVmdC09cGFyc2VGbG9hdChjLmN1ckNTUyhhLCJtYXJnaW5MZWZ0Iix0cnVlKSl8fDA7Zi50b3Ar
PXBhcnNlRmxvYXQoYy5jdXJDU1MoYlswXSwiYm9yZGVyVG9wV2lkdGgiLHRydWUpKXx8MDtmLmxl
ZnQrPXBhcnNlRmxvYXQoYy5jdXJDU1MoYlswXSwiYm9yZGVyTGVmdFdpZHRoIix0cnVlKSl8fDA7
cmV0dXJue3RvcDpkLnRvcC0KK2YudG9wLGxlZnQ6ZC5sZWZ0LWYubGVmdH19LG9mZnNldFBhcmVu
dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLm9m
ZnNldFBhcmVudHx8cy5ib2R5O2EmJiEvXmJvZHl8aHRtbCQvaS50ZXN0KGEubm9kZU5hbWUpJiZj
LmNzcyhhLCJwb3NpdGlvbiIpPT09InN0YXRpYyI7KWE9YS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGF9
KX19KTtjLmVhY2goWyJMZWZ0IiwiVG9wIl0sZnVuY3Rpb24oYSxiKXt2YXIgZD0ic2Nyb2xsIiti
O2MuZm5bZF09ZnVuY3Rpb24oZil7dmFyIGU9dGhpc1swXSxqO2lmKCFlKXJldHVybiBudWxsO2lm
KGYhPT13KXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZihqPXdhKHRoaXMpKWouc2Nyb2xs
VG8oIWE/ZjpjKGopLnNjcm9sbExlZnQoKSxhP2Y6YyhqKS5zY3JvbGxUb3AoKSk7ZWxzZSB0aGlz
W2RdPWZ9KTtlbHNlIHJldHVybihqPXdhKGUpKT8icGFnZVhPZmZzZXQiaW4gaj9qW2E/InBhZ2VZ
T2Zmc2V0IjoKKyJwYWdlWE9mZnNldCJdOmMuc3VwcG9ydC5ib3hNb2RlbCYmai5kb2N1bWVudC5k
b2N1bWVudEVsZW1lbnRbZF18fGouZG9jdW1lbnQuYm9keVtkXTplW2RdfX0pO2MuZWFjaChbIkhl
aWdodCIsIldpZHRoIl0sZnVuY3Rpb24oYSxiKXt2YXIgZD1iLnRvTG93ZXJDYXNlKCk7Yy5mblsi
aW5uZXIiK2JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbMF0/Yy5jc3ModGhpc1swXSxkLGZhbHNl
LCJwYWRkaW5nIik6bnVsbH07Yy5mblsib3V0ZXIiK2JdPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlz
WzBdP2MuY3NzKHRoaXNbMF0sZCxmYWxzZSxmPyJtYXJnaW4iOiJib3JkZXIiKTpudWxsfTtjLmZu
W2RdPWZ1bmN0aW9uKGYpe3ZhciBlPXRoaXNbMF07aWYoIWUpcmV0dXJuIGY9PW51bGw/bnVsbDp0
aGlzO2lmKGMuaXNGdW5jdGlvbihmKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGope3ZhciBp
PWModGhpcyk7aVtkXShmLmNhbGwodGhpcyxqLGlbZF0oKSkpfSk7cmV0dXJuInNjcm9sbFRvImlu
CitlJiZlLmRvY3VtZW50P2UuZG9jdW1lbnQuY29tcGF0TW9kZT09PSJDU1MxQ29tcGF0IiYmZS5k
b2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrYl18fGUuZG9jdW1lbnQuYm9keVsiY2xp
ZW50IitiXTplLm5vZGVUeXBlPT09OT9NYXRoLm1heChlLmRvY3VtZW50RWxlbWVudFsiY2xpZW50
IitiXSxlLmJvZHlbInNjcm9sbCIrYl0sZS5kb2N1bWVudEVsZW1lbnRbInNjcm9sbCIrYl0sZS5i
b2R5WyJvZmZzZXQiK2JdLGUuZG9jdW1lbnRFbGVtZW50WyJvZmZzZXQiK2JdKTpmPT09dz9jLmNz
cyhlLGQpOnRoaXMuY3NzKGQsdHlwZW9mIGY9PT0ic3RyaW5nIj9mOmYrInB4Iil9fSk7QS5qUXVl
cnk9QS4kPWN9KSh3aW5kb3cpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9kZW1v
cy9zcHJpbmcvaW5kZXguaHRtbCBiL1dlYnNpdGVzL3dlYmtpdC5vcmcvZGVtb3Mvc3ByaW5nL2lu
ZGV4Lmh0bWwKaW5kZXggYjIwYWQxZjRkODczNjRkZjg4ZGY5ODZhNjZiNjVkYWMwNTRlY2ZhMi4u
OGQwZjNhMWQ1ODFiYjQ1NWVhZjcxOTlkNzc2YTBjNDNiZmMyNjA5MyAxMDA2NDQKLS0tIGEvV2Vi
c2l0ZXMvd2Via2l0Lm9yZy9kZW1vcy9zcHJpbmcvaW5kZXguaHRtbAorKysgYi9XZWJzaXRlcy93
ZWJraXQub3JnL2RlbW9zL3NwcmluZy9pbmRleC5odG1sCkBAIC0yLDcgKzIsNiBAQAogPGh0bWw+
CiA8aGVhZD4KIDx0aXRsZT5TcHJpbmcgdGltaW5nIGZ1bmN0aW9uIGRlbW88L3RpdGxlPgotPGxp
bmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVNvdXJjZStT
YW5zK1BybyIgcmVsPSJzdHlsZXNoZWV0Ij4KIDxzdHlsZT4KIAogYm9keSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340592</attachid>
            <date>2018-05-17 09:34:42 -0700</date>
            <delta_ts>2018-05-17 11:44:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185691-20180517093442.patch</filename>
            <type>text/plain</type>
            <size>75938</size>
            <attacher name="Roy Reapor">rreapor</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxODY0CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9idWdzLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvYnVncy53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCAyMTAxNmFhMGIxODlkYWY4YmU5MDYyMTI4MzBhZDY0OTBjYjY1YTVkLi4wMmM3MWUzNzY4
NDdlODBkYmE1NGMxNjFiZjBkOTQ0N2UwM2U1OGQzIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9idWdz
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL2J1Z3Mud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0wNS0xNyAgUm95IFJlYXBvciAgPHJyZWFwb3JA
YXBwbGUuY29tPgorCisgICAgICAgIEhvc3QganF1ZXJ5IG9uIHdlYmtpdC5vcmcgaW5zdGVhZCBv
ZiAzcmQgcGFydHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NTY5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogUHJldHR5UGF0Y2gvUHJldHR5UGF0Y2gucmI6CisgICAgICAgICogY29kZS1yZXZpZXct
dGVzdC5odG1sOgorCiAyMDE4LTAyLTE2ICBMaW5nIEhvICA8bGluZ2hvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBcHBseSBCdWd6aWxsYSBwYXRjaGVzIGZvciBDVkUtMjAxOC01MTIzCmRpZmYgLS1n
aXQgYS9XZWJzaXRlcy93ZWJraXQub3JnL0NoYW5nZUxvZyBiL1dlYnNpdGVzL3dlYmtpdC5vcmcv
Q2hhbmdlTG9nCmluZGV4IDQxZDg2MmQzOGZiMDBkYjdmZmJhNWIzNDgwMDM2ZjlkOWEyZGRiYTcu
LmZkM2M4ODRhZDE4OWJlYTYzZTQwYjU0NzY4ZDk2M2Y5NTUxYzBiNTEgMTAwNjQ0Ci0tLSBhL1dl
YnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3dlYmtpdC5vcmcvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTgtMDUtMTcgIFJveSBSZWFwb3IgIDxycmVhcG9y
QGFwcGxlLmNvbT4KKworICAgICAgICBIb3N0IGpxdWVyeSBvbiB3ZWJraXQub3JnIGluc3RlYWQg
b2YgM3JkIHBhcnR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODU2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGRlbW9zL3NwcmluZy9pbmRleC5odG1sOiBSZW1vdmVkIHVubmVjZXNzYXJ5IENTUyBy
ZXNvdXJjZS4KKwogMjAxOC0wNC0yNiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CiAKICAgICAgICAgVXBkYXRlIGNvZGUgc3R5bGUgZ3VpZGVsaW5lcyB0byBtZW50aW9u
IGJyYWNlZCBpbml0aWFsaXphdGlvbiBzdHlsZS4KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL2J1Z3Mu
d2Via2l0Lm9yZy9QcmV0dHlQYXRjaC9QcmV0dHlQYXRjaC5yYiBiL1dlYnNpdGVzL2J1Z3Mud2Vi
a2l0Lm9yZy9QcmV0dHlQYXRjaC9QcmV0dHlQYXRjaC5yYgppbmRleCBhNGFhZjE2ZDI3NThjYWIw
Y2RmNDBiOWEwNDljYmI0OTRkNDhhZmZkLi4zODJiNDk2OWQ4MzZjZGVhMDI1ZTU5MDk2ODJhZjgx
ZTFjZTA1ZGZlIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9idWdzLndlYmtpdC5vcmcvUHJldHR5UGF0
Y2gvUHJldHR5UGF0Y2gucmIKKysrIGIvV2Vic2l0ZXMvYnVncy53ZWJraXQub3JnL1ByZXR0eVBh
dGNoL1ByZXR0eVBhdGNoLnJiCkBAIC01MjMsNyArNTIzLDcgQEAgZGl2OmZvY3VzIHsKICAgICBj
bGVhcjogYm90aDsKIH0KIDwvc3R5bGU+Ci08c2NyaXB0IHNyYz0iaHR0cHM6Ly9hamF4Lmdvb2ds
ZWFwaXMuY29tL2FqYXgvbGlicy9qcXVlcnkvMS40LjIvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+
IAorPHNjcmlwdCBzcmM9Imh0dHBzOi8vd2Via2l0Lm9yZy9hamF4L2xpYnMvanF1ZXJ5L2pxdWVy
eS0xLjQuMi5taW4uanMiPjwvc2NyaXB0PiAKIDxzY3JpcHQgc3JjPSJjb2RlLXJldmlldy5qcz92
ZXJzaW9uPTQ4Ij48L3NjcmlwdD4KIDwvaGVhZD4KIEVPRgpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMv
YnVncy53ZWJraXQub3JnL2NvZGUtcmV2aWV3LXRlc3QuaHRtbCBiL1dlYnNpdGVzL2J1Z3Mud2Vi
a2l0Lm9yZy9jb2RlLXJldmlldy10ZXN0Lmh0bWwKaW5kZXggYjU5ZmE0YzQzZDNmMzg5NTk4M2Fh
NDlmY2FiZWExZTU5YjY3M2UwMS4uNzBkYjc4OTc1ZTQwMWFjYTIxYmI0YmJkNjg5ZDU3M2UxODc3
M2RiNyAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvYnVncy53ZWJraXQub3JnL2NvZGUtcmV2aWV3LXRl
c3QuaHRtbAorKysgYi9XZWJzaXRlcy9idWdzLndlYmtpdC5vcmcvY29kZS1yZXZpZXctdGVzdC5o
dG1sCkBAIC05LDcgKzksNyBAQCB3aW5kb3cub25lcnJvciA9IGZ1bmN0aW9uKGVycm9yTXNnLCB1
cmwsIGxpbmVOdW1iZXIpIHsKICAgcmV0dXJuIGZhbHNlOwogfQogPC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iaHR0cHM6Ly9hamF4Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGlicy9qcXVlcnkvMS40LjIv
anF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+IAorPHNjcmlwdCBzcmM9Imh0dHBzOi8vd2Via2l0Lm9y
Zy9hamF4L2xpYnMvanF1ZXJ5L2pxdWVyeS0xLjQuMi5taW4uanMiPjwvc2NyaXB0PiAKIDxzY3Jp
cHQgc3JjPSJjb2RlLXJldmlldy5qcyI+PC9zY3JpcHQ+CiA8cHJlIGlkPSJvdXRwdXQiPjwvcHJl
PgogPGRpdiBpZD0iZGlmZi1jb250ZW50Ij48L2Rpdj4KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3dl
YmtpdC5vcmcvYWpheC9saWJzL2pxdWVyeS9qcXVlcnktMS40LjIubWluLmpzIGIvV2Vic2l0ZXMv
d2Via2l0Lm9yZy9hamF4L2xpYnMvanF1ZXJ5L2pxdWVyeS0xLjQuMi5taW4uanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2MyNDMwODAyMzM3NjE4NTk5MzdkNTIxOTViNjcwNjAyNzMxYTM3OQotLS0gL2Rldi9udWxs
CisrKyBiL1dlYnNpdGVzL3dlYmtpdC5vcmcvYWpheC9saWJzL2pxdWVyeS9qcXVlcnktMS40LjIu
bWluLmpzCkBAIC0wLDAgKzEsMTU0IEBACisvKiEKKyAqIGpRdWVyeSBKYXZhU2NyaXB0IExpYnJh
cnkgdjEuNC4yCisgKiBodHRwOi8vanF1ZXJ5LmNvbS8KKyAqCisgKiBDb3B5cmlnaHQgMjAxMCwg
Sm9obiBSZXNpZworICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9u
IDIgbGljZW5zZXMuCisgKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCisgKgorICogSW5jbHVk
ZXMgU2l6emxlLmpzCisgKiBodHRwOi8vc2l6emxlanMuY29tLworICogQ29weXJpZ2h0IDIwMTAs
IFRoZSBEb2pvIEZvdW5kYXRpb24KKyAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQsIEJTRCwgYW5k
IEdQTCBMaWNlbnNlcy4KKyAqCisgKiBEYXRlOiBTYXQgRmViIDEzIDIyOjMzOjQ4IDIwMTAgLTA1
MDAKKyAqLworKGZ1bmN0aW9uKEEsdyl7ZnVuY3Rpb24gbWEoKXtpZighYy5pc1JlYWR5KXt0cnl7
cy5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwoImxlZnQiKX1jYXRjaChhKXtzZXRUaW1lb3V0KG1h
LDEpO3JldHVybn1jLnJlYWR5KCl9fWZ1bmN0aW9uIFFhKGEsYil7Yi5zcmM/Yy5hamF4KHt1cmw6
Yi5zcmMsYXN5bmM6ZmFsc2UsZGF0YVR5cGU6InNjcmlwdCJ9KTpjLmdsb2JhbEV2YWwoYi50ZXh0
fHxiLnRleHRDb250ZW50fHxiLmlubmVySFRNTHx8IiIpO2IucGFyZW50Tm9kZSYmYi5wYXJlbnRO
b2RlLnJlbW92ZUNoaWxkKGIpfWZ1bmN0aW9uIFgoYSxiLGQsZixlLGope3ZhciBpPWEubGVuZ3Ro
O2lmKHR5cGVvZiBiPT09Im9iamVjdCIpe2Zvcih2YXIgbyBpbiBiKVgoYSxvLGJbb10sZixlLGQp
O3JldHVybiBhfWlmKGQhPT13KXtmPSFqJiZmJiZjLmlzRnVuY3Rpb24oZCk7Zm9yKG89MDtvPGk7
bysrKWUoYVtvXSxiLGY/ZC5jYWxsKGFbb10sbyxlKGFbb10sYikpOmQsaik7cmV0dXJuIGF9cmV0
dXJuIGk/CitlKGFbMF0sYik6d31mdW5jdGlvbiBKKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1l
KCl9ZnVuY3Rpb24gWSgpe3JldHVybiBmYWxzZX1mdW5jdGlvbiBaKCl7cmV0dXJuIHRydWV9ZnVu
Y3Rpb24gbmEoYSxiLGQpe2RbMF0udHlwZT1hO3JldHVybiBjLmV2ZW50LmhhbmRsZS5hcHBseShi
LGQpfWZ1bmN0aW9uIG9hKGEpe3ZhciBiLGQ9W10sZj1bXSxlPWFyZ3VtZW50cyxqLGksbyxrLG4s
cjtpPWMuZGF0YSh0aGlzLCJldmVudHMiKTtpZighKGEubGl2ZUZpcmVkPT09dGhpc3x8IWl8fCFp
LmxpdmV8fGEuYnV0dG9uJiZhLnR5cGU9PT0iY2xpY2siKSl7YS5saXZlRmlyZWQ9dGhpczt2YXIg
dT1pLmxpdmUuc2xpY2UoMCk7Zm9yKGs9MDtrPHUubGVuZ3RoO2srKyl7aT11W2tdO2kub3JpZ1R5
cGUucmVwbGFjZShPLCIiKT09PWEudHlwZT9mLnB1c2goaS5zZWxlY3Rvcik6dS5zcGxpY2Uoay0t
LDEpfWo9YyhhLnRhcmdldCkuY2xvc2VzdChmLGEuY3VycmVudFRhcmdldCk7bj0wO2ZvcihyPQor
ai5sZW5ndGg7bjxyO24rKylmb3Ioaz0wO2s8dS5sZW5ndGg7aysrKXtpPXVba107aWYoaltuXS5z
ZWxlY3Rvcj09PWkuc2VsZWN0b3Ipe289altuXS5lbGVtO2Y9bnVsbDtpZihpLnByZVR5cGU9PT0i
bW91c2VlbnRlciJ8fGkucHJlVHlwZT09PSJtb3VzZWxlYXZlIilmPWMoYS5yZWxhdGVkVGFyZ2V0
KS5jbG9zZXN0KGkuc2VsZWN0b3IpWzBdO2lmKCFmfHxmIT09bylkLnB1c2goe2VsZW06byxoYW5k
bGVPYmo6aX0pfX1uPTA7Zm9yKHI9ZC5sZW5ndGg7bjxyO24rKyl7aj1kW25dO2EuY3VycmVudFRh
cmdldD1qLmVsZW07YS5kYXRhPWouaGFuZGxlT2JqLmRhdGE7YS5oYW5kbGVPYmo9ai5oYW5kbGVP
Ymo7aWYoai5oYW5kbGVPYmoub3JpZ0hhbmRsZXIuYXBwbHkoai5lbGVtLGUpPT09ZmFsc2Upe2I9
ZmFsc2U7YnJlYWt9fXJldHVybiBifX1mdW5jdGlvbiBwYShhLGIpe3JldHVybiJsaXZlLiIrKGEm
JmEhPT0iKiI/YSsiLiI6IiIpK2IucmVwbGFjZSgvXC4vZywiYCIpLnJlcGxhY2UoLyAvZywKKyIm
Iil9ZnVuY3Rpb24gcWEoYSl7cmV0dXJuIWF8fCFhLnBhcmVudE5vZGV8fGEucGFyZW50Tm9kZS5u
b2RlVHlwZT09PTExfWZ1bmN0aW9uIHJhKGEsYil7dmFyIGQ9MDtiLmVhY2goZnVuY3Rpb24oKXtp
Zih0aGlzLm5vZGVOYW1lPT09KGFbZF0mJmFbZF0ubm9kZU5hbWUpKXt2YXIgZj1jLmRhdGEoYVtk
KytdKSxlPWMuZGF0YSh0aGlzLGYpO2lmKGY9ZiYmZi5ldmVudHMpe2RlbGV0ZSBlLmhhbmRsZTtl
LmV2ZW50cz17fTtmb3IodmFyIGogaW4gZilmb3IodmFyIGkgaW4gZltqXSljLmV2ZW50LmFkZCh0
aGlzLGosZltqXVtpXSxmW2pdW2ldLmRhdGEpfX19KX1mdW5jdGlvbiBzYShhLGIsZCl7dmFyIGYs
ZSxqO2I9YiYmYlswXT9iWzBdLm93bmVyRG9jdW1lbnR8fGJbMF06cztpZihhLmxlbmd0aD09PTEm
JnR5cGVvZiBhWzBdPT09InN0cmluZyImJmFbMF0ubGVuZ3RoPDUxMiYmYj09PXMmJiF0YS50ZXN0
KGFbMF0pJiYoYy5zdXBwb3J0LmNoZWNrQ2xvbmV8fCF1YS50ZXN0KGFbMF0pKSl7ZT0KK3RydWU7
aWYoaj1jLmZyYWdtZW50c1thWzBdXSlpZihqIT09MSlmPWp9aWYoIWYpe2Y9Yi5jcmVhdGVEb2N1
bWVudEZyYWdtZW50KCk7Yy5jbGVhbihhLGIsZixkKX1pZihlKWMuZnJhZ21lbnRzW2FbMF1dPWo/
ZjoxO3JldHVybntmcmFnbWVudDpmLGNhY2hlYWJsZTplfX1mdW5jdGlvbiBLKGEsYil7dmFyIGQ9
e307Yy5lYWNoKHZhLmNvbmNhdC5hcHBseShbXSx2YS5zbGljZSgwLGIpKSxmdW5jdGlvbigpe2Rb
dGhpc109YX0pO3JldHVybiBkfWZ1bmN0aW9uIHdhKGEpe3JldHVybiJzY3JvbGxUbyJpbiBhJiZh
LmRvY3VtZW50P2E6YS5ub2RlVHlwZT09PTk/YS5kZWZhdWx0Vmlld3x8YS5wYXJlbnRXaW5kb3c6
ZmFsc2V9dmFyIGM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IGMuZm4uaW5pdChhLGIpfSxSYT1B
LmpRdWVyeSxTYT1BLiQscz1BLmRvY3VtZW50LFQsVGE9L15bXjxdKig8W1x3XFddKz4pW14+XSok
fF4jKFtcdy1dKykkLyxVYT0vXi5bXjojXFtcLixdKiQvLFZhPS9cUy8sCitXYT0vXihcc3xcdTAw
QTApK3woXHN8XHUwMEEwKSskL2csWGE9L148KFx3KylccypcLz8+KD86PFwvXDE+KT8kLyxQPW5h
dmlnYXRvci51c2VyQWdlbnQseGE9ZmFsc2UsUT1bXSxMLCQ9T2JqZWN0LnByb3RvdHlwZS50b1N0
cmluZyxhYT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGJhPUFycmF5LnByb3RvdHlw
ZS5wdXNoLFI9QXJyYXkucHJvdG90eXBlLnNsaWNlLHlhPUFycmF5LnByb3RvdHlwZS5pbmRleE9m
O2MuZm49Yy5wcm90b3R5cGU9e2luaXQ6ZnVuY3Rpb24oYSxiKXt2YXIgZCxmO2lmKCFhKXJldHVy
biB0aGlzO2lmKGEubm9kZVR5cGUpe3RoaXMuY29udGV4dD10aGlzWzBdPWE7dGhpcy5sZW5ndGg9
MTtyZXR1cm4gdGhpc31pZihhPT09ImJvZHkiJiYhYil7dGhpcy5jb250ZXh0PXM7dGhpc1swXT1z
LmJvZHk7dGhpcy5zZWxlY3Rvcj0iYm9keSI7dGhpcy5sZW5ndGg9MTtyZXR1cm4gdGhpc31pZih0
eXBlb2YgYT09PSJzdHJpbmciKWlmKChkPVRhLmV4ZWMoYSkpJiYKKyhkWzFdfHwhYikpaWYoZFsx
XSl7Zj1iP2Iub3duZXJEb2N1bWVudHx8YjpzO2lmKGE9WGEuZXhlYyhhKSlpZihjLmlzUGxhaW5P
YmplY3QoYikpe2E9W3MuY3JlYXRlRWxlbWVudChhWzFdKV07Yy5mbi5hdHRyLmNhbGwoYSxiLHRy
dWUpfWVsc2UgYT1bZi5jcmVhdGVFbGVtZW50KGFbMV0pXTtlbHNle2E9c2EoW2RbMV1dLFtmXSk7
YT0oYS5jYWNoZWFibGU/YS5mcmFnbWVudC5jbG9uZU5vZGUodHJ1ZSk6YS5mcmFnbWVudCkuY2hp
bGROb2Rlc31yZXR1cm4gYy5tZXJnZSh0aGlzLGEpfWVsc2V7aWYoYj1zLmdldEVsZW1lbnRCeUlk
KGRbMl0pKXtpZihiLmlkIT09ZFsyXSlyZXR1cm4gVC5maW5kKGEpO3RoaXMubGVuZ3RoPTE7dGhp
c1swXT1ifXRoaXMuY29udGV4dD1zO3RoaXMuc2VsZWN0b3I9YTtyZXR1cm4gdGhpc31lbHNlIGlm
KCFiJiYvXlx3KyQvLnRlc3QoYSkpe3RoaXMuc2VsZWN0b3I9YTt0aGlzLmNvbnRleHQ9czthPXMu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoYSk7cmV0dXJuIGMubWVyZ2UodGhpcywKK2EpfWVsc2UgcmV0
dXJuIWJ8fGIuanF1ZXJ5PyhifHxUKS5maW5kKGEpOmMoYikuZmluZChhKTtlbHNlIGlmKGMuaXNG
dW5jdGlvbihhKSlyZXR1cm4gVC5yZWFkeShhKTtpZihhLnNlbGVjdG9yIT09dyl7dGhpcy5zZWxl
Y3Rvcj1hLnNlbGVjdG9yO3RoaXMuY29udGV4dD1hLmNvbnRleHR9cmV0dXJuIGMubWFrZUFycmF5
KGEsdGhpcyl9LHNlbGVjdG9yOiIiLGpxdWVyeToiMS40LjIiLGxlbmd0aDowLHNpemU6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9LHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gUi5jYWxs
KHRoaXMsMCl9LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD90aGlzLnRvQXJyYXkoKTph
PDA/dGhpcy5zbGljZShhKVswXTp0aGlzW2FdfSxwdXNoU3RhY2s6ZnVuY3Rpb24oYSxiLGQpe3Zh
ciBmPWMoKTtjLmlzQXJyYXkoYSk/YmEuYXBwbHkoZixhKTpjLm1lcmdlKGYsYSk7Zi5wcmV2T2Jq
ZWN0PXRoaXM7Zi5jb250ZXh0PXRoaXMuY29udGV4dDtpZihiPT09CisiZmluZCIpZi5zZWxlY3Rv
cj10aGlzLnNlbGVjdG9yKyh0aGlzLnNlbGVjdG9yPyIgIjoiIikrZDtlbHNlIGlmKGIpZi5zZWxl
Y3Rvcj10aGlzLnNlbGVjdG9yKyIuIitiKyIoIitkKyIpIjtyZXR1cm4gZn0sZWFjaDpmdW5jdGlv
bihhLGIpe3JldHVybiBjLmVhY2godGhpcyxhLGIpfSxyZWFkeTpmdW5jdGlvbihhKXtjLmJpbmRS
ZWFkeSgpO2lmKGMuaXNSZWFkeSlhLmNhbGwocyxjKTtlbHNlIFEmJlEucHVzaChhKTtyZXR1cm4g
dGhpc30sZXE6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT0tMT90aGlzLnNsaWNlKGEpOnRoaXMuc2xp
Y2UoYSwrYSsxKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5j
dGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5w
dXNoU3RhY2soUi5hcHBseSh0aGlzLGFyZ3VtZW50cyksInNsaWNlIixSLmNhbGwoYXJndW1lbnRz
KS5qb2luKCIsIikpfSxtYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGMubWFw
KHRoaXMsCitmdW5jdGlvbihiLGQpe3JldHVybiBhLmNhbGwoYixkLGIpfSkpfSxlbmQ6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHxjKG51bGwpfSxwdXNoOmJhLHNvcnQ6W10uc29y
dCxzcGxpY2U6W10uc3BsaWNlfTtjLmZuLmluaXQucHJvdG90eXBlPWMuZm47Yy5leHRlbmQ9Yy5m
bi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHNbMF18fHt9LGI9MSxkPWFyZ3VtZW50
cy5sZW5ndGgsZj1mYWxzZSxlLGosaSxvO2lmKHR5cGVvZiBhPT09ImJvb2xlYW4iKXtmPWE7YT1h
cmd1bWVudHNbMV18fHt9O2I9Mn1pZih0eXBlb2YgYSE9PSJvYmplY3QiJiYhYy5pc0Z1bmN0aW9u
KGEpKWE9e307aWYoZD09PWIpe2E9dGhpczstLWJ9Zm9yKDtiPGQ7YisrKWlmKChlPWFyZ3VtZW50
c1tiXSkhPW51bGwpZm9yKGogaW4gZSl7aT1hW2pdO289ZVtqXTtpZihhIT09bylpZihmJiZvJiYo
Yy5pc1BsYWluT2JqZWN0KG8pfHxjLmlzQXJyYXkobykpKXtpPWkmJihjLmlzUGxhaW5PYmplY3Qo
aSl8fAorYy5pc0FycmF5KGkpKT9pOmMuaXNBcnJheShvKT9bXTp7fTthW2pdPWMuZXh0ZW5kKGYs
aSxvKX1lbHNlIGlmKG8hPT13KWFbal09b31yZXR1cm4gYX07Yy5leHRlbmQoe25vQ29uZmxpY3Q6
ZnVuY3Rpb24oYSl7QS4kPVNhO2lmKGEpQS5qUXVlcnk9UmE7cmV0dXJuIGN9LGlzUmVhZHk6ZmFs
c2UscmVhZHk6ZnVuY3Rpb24oKXtpZighYy5pc1JlYWR5KXtpZighcy5ib2R5KXJldHVybiBzZXRU
aW1lb3V0KGMucmVhZHksMTMpO2MuaXNSZWFkeT10cnVlO2lmKFEpe2Zvcih2YXIgYSxiPTA7YT1R
W2IrK107KWEuY2FsbChzLGMpO1E9bnVsbH1jLmZuLnRyaWdnZXJIYW5kbGVyJiZjKHMpLnRyaWdn
ZXJIYW5kbGVyKCJyZWFkeSIpfX0sYmluZFJlYWR5OmZ1bmN0aW9uKCl7aWYoIXhhKXt4YT10cnVl
O2lmKHMucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpcmV0dXJuIGMucmVhZHkoKTtpZihzLmFkZEV2
ZW50TGlzdGVuZXIpe3MuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsCitMLGZh
bHNlKTtBLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGMucmVhZHksZmFsc2UpfWVsc2UgaWYocy5h
dHRhY2hFdmVudCl7cy5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixMKTtBLmF0dGFj
aEV2ZW50KCJvbmxvYWQiLGMucmVhZHkpO3ZhciBhPWZhbHNlO3RyeXthPUEuZnJhbWVFbGVtZW50
PT1udWxsfWNhdGNoKGIpe31zLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCYmYSYmbWEoKX19fSxp
c0Z1bmN0aW9uOmZ1bmN0aW9uKGEpe3JldHVybiAkLmNhbGwoYSk9PT0iW29iamVjdCBGdW5jdGlv
bl0ifSxpc0FycmF5OmZ1bmN0aW9uKGEpe3JldHVybiAkLmNhbGwoYSk9PT0iW29iamVjdCBBcnJh
eV0ifSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGEpe2lmKCFhfHwkLmNhbGwoYSkhPT0iW29iamVj
dCBPYmplY3RdInx8YS5ub2RlVHlwZXx8YS5zZXRJbnRlcnZhbClyZXR1cm4gZmFsc2U7aWYoYS5j
b25zdHJ1Y3RvciYmIWFhLmNhbGwoYSwiY29uc3RydWN0b3IiKSYmIWFhLmNhbGwoYS5jb25zdHJ1
Y3Rvci5wcm90b3R5cGUsCisiaXNQcm90b3R5cGVPZiIpKXJldHVybiBmYWxzZTt2YXIgYjtmb3Io
YiBpbiBhKTtyZXR1cm4gYj09PXd8fGFhLmNhbGwoYSxiKX0saXNFbXB0eU9iamVjdDpmdW5jdGlv
bihhKXtmb3IodmFyIGIgaW4gYSlyZXR1cm4gZmFsc2U7cmV0dXJuIHRydWV9LGVycm9yOmZ1bmN0
aW9uKGEpe3Rocm93IGE7fSxwYXJzZUpTT046ZnVuY3Rpb24oYSl7aWYodHlwZW9mIGEhPT0ic3Ry
aW5nInx8IWEpcmV0dXJuIG51bGw7YT1jLnRyaW0oYSk7aWYoL15bXF0sOnt9XHNdKiQvLnRlc3Qo
YS5yZXBsYWNlKC9cXCg/OlsiXFxcL2JmbnJ0XXx1WzAtOWEtZkEtRl17NH0pL2csIkAiKS5yZXBs
YWNlKC8iW14iXFxcblxyXSoifHRydWV8ZmFsc2V8bnVsbHwtP1xkKyg/OlwuXGQqKT8oPzpbZUVd
WytcLV0/XGQrKT8vZywiXSIpLnJlcGxhY2UoLyg/Ol58OnwsKSg/OlxzKlxbKSsvZywiIikpKXJl
dHVybiBBLkpTT04mJkEuSlNPTi5wYXJzZT9BLkpTT04ucGFyc2UoYSk6KG5ldyBGdW5jdGlvbigi
cmV0dXJuICIrCithKSkoKTtlbHNlIGMuZXJyb3IoIkludmFsaWQgSlNPTjogIithKX0sbm9vcDpm
dW5jdGlvbigpe30sZ2xvYmFsRXZhbDpmdW5jdGlvbihhKXtpZihhJiZWYS50ZXN0KGEpKXt2YXIg
Yj1zLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fHMuZG9jdW1lbnRFbGVtZW50LGQ9
cy5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtkLnR5cGU9InRleHQvamF2YXNjcmlwdCI7aWYoYy5z
dXBwb3J0LnNjcmlwdEV2YWwpZC5hcHBlbmRDaGlsZChzLmNyZWF0ZVRleHROb2RlKGEpKTtlbHNl
IGQudGV4dD1hO2IuaW5zZXJ0QmVmb3JlKGQsYi5maXJzdENoaWxkKTtiLnJlbW92ZUNoaWxkKGQp
fX0sbm9kZU5hbWU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50
b1VwcGVyQ2FzZSgpPT09Yi50b1VwcGVyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9uKGEsYixkKXt2YXIg
ZixlPTAsaj1hLmxlbmd0aCxpPWo9PT13fHxjLmlzRnVuY3Rpb24oYSk7aWYoZClpZihpKWZvcihm
IGluIGEpe2lmKGIuYXBwbHkoYVtmXSwKK2QpPT09ZmFsc2UpYnJlYWt9ZWxzZSBmb3IoO2U8ajsp
e2lmKGIuYXBwbHkoYVtlKytdLGQpPT09ZmFsc2UpYnJlYWt9ZWxzZSBpZihpKWZvcihmIGluIGEp
e2lmKGIuY2FsbChhW2ZdLGYsYVtmXSk9PT1mYWxzZSlicmVha31lbHNlIGZvcihkPWFbMF07ZTxq
JiZiLmNhbGwoZCxlLGQpIT09ZmFsc2U7ZD1hWysrZV0pO3JldHVybiBhfSx0cmltOmZ1bmN0aW9u
KGEpe3JldHVybihhfHwiIikucmVwbGFjZShXYSwiIil9LG1ha2VBcnJheTpmdW5jdGlvbihhLGIp
e2I9Ynx8W107aWYoYSE9bnVsbClhLmxlbmd0aD09bnVsbHx8dHlwZW9mIGE9PT0ic3RyaW5nInx8
Yy5pc0Z1bmN0aW9uKGEpfHx0eXBlb2YgYSE9PSJmdW5jdGlvbiImJmEuc2V0SW50ZXJ2YWw/YmEu
Y2FsbChiLGEpOmMubWVyZ2UoYixhKTtyZXR1cm4gYn0saW5BcnJheTpmdW5jdGlvbihhLGIpe2lm
KGIuaW5kZXhPZilyZXR1cm4gYi5pbmRleE9mKGEpO2Zvcih2YXIgZD0wLGY9Yi5sZW5ndGg7ZDxm
O2QrKylpZihiW2RdPT09CithKXJldHVybiBkO3JldHVybi0xfSxtZXJnZTpmdW5jdGlvbihhLGIp
e3ZhciBkPWEubGVuZ3RoLGY9MDtpZih0eXBlb2YgYi5sZW5ndGg9PT0ibnVtYmVyIilmb3IodmFy
IGU9Yi5sZW5ndGg7ZjxlO2YrKylhW2QrK109YltmXTtlbHNlIGZvcig7YltmXSE9PXc7KWFbZCsr
XT1iW2YrK107YS5sZW5ndGg9ZDtyZXR1cm4gYX0sZ3JlcDpmdW5jdGlvbihhLGIsZCl7Zm9yKHZh
ciBmPVtdLGU9MCxqPWEubGVuZ3RoO2U8ajtlKyspIWQhPT0hYihhW2VdLGUpJiZmLnB1c2goYVtl
XSk7cmV0dXJuIGZ9LG1hcDpmdW5jdGlvbihhLGIsZCl7Zm9yKHZhciBmPVtdLGUsaj0wLGk9YS5s
ZW5ndGg7ajxpO2orKyl7ZT1iKGFbal0saixkKTtpZihlIT1udWxsKWZbZi5sZW5ndGhdPWV9cmV0
dXJuIGYuY29uY2F0LmFwcGx5KFtdLGYpfSxndWlkOjEscHJveHk6ZnVuY3Rpb24oYSxiLGQpe2lm
KGFyZ3VtZW50cy5sZW5ndGg9PT0yKWlmKHR5cGVvZiBiPT09InN0cmluZyIpe2Q9YTthPWRbYl07
Yj13fWVsc2UgaWYoYiYmCishYy5pc0Z1bmN0aW9uKGIpKXtkPWI7Yj13fWlmKCFiJiZhKWI9ZnVu
Y3Rpb24oKXtyZXR1cm4gYS5hcHBseShkfHx0aGlzLGFyZ3VtZW50cyl9O2lmKGEpYi5ndWlkPWEu
Z3VpZD1hLmd1aWR8fGIuZ3VpZHx8Yy5ndWlkKys7cmV0dXJuIGJ9LHVhTWF0Y2g6ZnVuY3Rpb24o
YSl7YT1hLnRvTG93ZXJDYXNlKCk7YT0vKHdlYmtpdClbIFwvXShbXHcuXSspLy5leGVjKGEpfHwv
KG9wZXJhKSg/Oi4qdmVyc2lvbik/WyBcL10oW1x3Ll0rKS8uZXhlYyhhKXx8Lyhtc2llKSAoW1x3
Ll0rKS8uZXhlYyhhKXx8IS9jb21wYXRpYmxlLy50ZXN0KGEpJiYvKG1vemlsbGEpKD86Lio/IHJ2
OihbXHcuXSspKT8vLmV4ZWMoYSl8fFtdO3JldHVybnticm93c2VyOmFbMV18fCIiLHZlcnNpb246
YVsyXXx8IjAifX0sYnJvd3Nlcjp7fX0pO1A9Yy51YU1hdGNoKFApO2lmKFAuYnJvd3Nlcil7Yy5i
cm93c2VyW1AuYnJvd3Nlcl09dHJ1ZTtjLmJyb3dzZXIudmVyc2lvbj1QLnZlcnNpb259aWYoYy5i
cm93c2VyLndlYmtpdCljLmJyb3dzZXIuc2FmYXJpPQordHJ1ZTtpZih5YSljLmluQXJyYXk9ZnVu
Y3Rpb24oYSxiKXtyZXR1cm4geWEuY2FsbChiLGEpfTtUPWMocyk7aWYocy5hZGRFdmVudExpc3Rl
bmVyKUw9ZnVuY3Rpb24oKXtzLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQi
LEwsZmFsc2UpO2MucmVhZHkoKX07ZWxzZSBpZihzLmF0dGFjaEV2ZW50KUw9ZnVuY3Rpb24oKXtp
ZihzLnJlYWR5U3RhdGU9PT0iY29tcGxldGUiKXtzLmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVj
aGFuZ2UiLEwpO2MucmVhZHkoKX19OyhmdW5jdGlvbigpe2Muc3VwcG9ydD17fTt2YXIgYT1zLmRv
Y3VtZW50RWxlbWVudCxiPXMuY3JlYXRlRWxlbWVudCgic2NyaXB0IiksZD1zLmNyZWF0ZUVsZW1l
bnQoImRpdiIpLGY9InNjcmlwdCIrSigpO2Quc3R5bGUuZGlzcGxheT0ibm9uZSI7ZC5pbm5lckhU
TUw9IiAgIDxsaW5rLz48dGFibGU+PC90YWJsZT48YSBocmVmPScvYScgc3R5bGU9J2NvbG9yOnJl
ZDtmbG9hdDpsZWZ0O29wYWNpdHk6LjU1Oyc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2tib3gnLz4i
OwordmFyIGU9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLGo9ZC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYSIpWzBdO2lmKCEoIWV8fCFlLmxlbmd0aHx8IWopKXtjLnN1cHBvcnQ9e2xlYWRpbmdX
aGl0ZXNwYWNlOmQuZmlyc3RDaGlsZC5ub2RlVHlwZT09PTMsdGJvZHk6IWQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoInRib2R5IikubGVuZ3RoLGh0bWxTZXJpYWxpemU6ISFkLmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJsaW5rIikubGVuZ3RoLHN0eWxlOi9yZWQvLnRlc3Qoai5nZXRBdHRyaWJ1dGUoInN0
eWxlIikpLGhyZWZOb3JtYWxpemVkOmouZ2V0QXR0cmlidXRlKCJocmVmIik9PT0iL2EiLG9wYWNp
dHk6L14wLjU1JC8udGVzdChqLnN0eWxlLm9wYWNpdHkpLGNzc0Zsb2F0OiEhai5zdHlsZS5jc3NG
bG9hdCxjaGVja09uOmQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IilbMF0udmFsdWU9PT0i
b24iLG9wdFNlbGVjdGVkOnMuY3JlYXRlRWxlbWVudCgic2VsZWN0IikuYXBwZW5kQ2hpbGQocy5j
cmVhdGVFbGVtZW50KCJvcHRpb24iKSkuc2VsZWN0ZWQsCitwYXJlbnROb2RlOmQucmVtb3ZlQ2hp
bGQoZC5hcHBlbmRDaGlsZChzLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSkucGFyZW50Tm9kZT09PW51
bGwsZGVsZXRlRXhwYW5kbzp0cnVlLGNoZWNrQ2xvbmU6ZmFsc2Usc2NyaXB0RXZhbDpmYWxzZSxu
b0Nsb25lRXZlbnQ6dHJ1ZSxib3hNb2RlbDpudWxsfTtiLnR5cGU9InRleHQvamF2YXNjcmlwdCI7
dHJ5e2IuYXBwZW5kQ2hpbGQocy5jcmVhdGVUZXh0Tm9kZSgid2luZG93LiIrZisiPTE7IikpfWNh
dGNoKGkpe31hLmluc2VydEJlZm9yZShiLGEuZmlyc3RDaGlsZCk7aWYoQVtmXSl7Yy5zdXBwb3J0
LnNjcmlwdEV2YWw9dHJ1ZTtkZWxldGUgQVtmXX10cnl7ZGVsZXRlIGIudGVzdH1jYXRjaChvKXtj
LnN1cHBvcnQuZGVsZXRlRXhwYW5kbz1mYWxzZX1hLnJlbW92ZUNoaWxkKGIpO2lmKGQuYXR0YWNo
RXZlbnQmJmQuZmlyZUV2ZW50KXtkLmF0dGFjaEV2ZW50KCJvbmNsaWNrIixmdW5jdGlvbiBrKCl7
Yy5zdXBwb3J0Lm5vQ2xvbmVFdmVudD0KK2ZhbHNlO2QuZGV0YWNoRXZlbnQoIm9uY2xpY2siLGsp
fSk7ZC5jbG9uZU5vZGUodHJ1ZSkuZmlyZUV2ZW50KCJvbmNsaWNrIil9ZD1zLmNyZWF0ZUVsZW1l
bnQoImRpdiIpO2QuaW5uZXJIVE1MPSI8aW5wdXQgdHlwZT0ncmFkaW8nIG5hbWU9J3JhZGlvdGVz
dCcgY2hlY2tlZD0nY2hlY2tlZCcvPiI7YT1zLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTthLmFw
cGVuZENoaWxkKGQuZmlyc3RDaGlsZCk7Yy5zdXBwb3J0LmNoZWNrQ2xvbmU9YS5jbG9uZU5vZGUo
dHJ1ZSkuY2xvbmVOb2RlKHRydWUpLmxhc3RDaGlsZC5jaGVja2VkO2MoZnVuY3Rpb24oKXt2YXIg
az1zLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2suc3R5bGUud2lkdGg9ay5zdHlsZS5wYWRkaW5nTGVm
dD0iMXB4IjtzLmJvZHkuYXBwZW5kQ2hpbGQoayk7Yy5ib3hNb2RlbD1jLnN1cHBvcnQuYm94TW9k
ZWw9ay5vZmZzZXRXaWR0aD09PTI7cy5ib2R5LnJlbW92ZUNoaWxkKGspLnN0eWxlLmRpc3BsYXk9
Im5vbmUifSk7YT1mdW5jdGlvbihrKXt2YXIgbj0KK3MuY3JlYXRlRWxlbWVudCgiZGl2Iik7az0i
b24iK2s7dmFyIHI9ayBpbiBuO2lmKCFyKXtuLnNldEF0dHJpYnV0ZShrLCJyZXR1cm47Iik7cj10
eXBlb2YgbltrXT09PSJmdW5jdGlvbiJ9cmV0dXJuIHJ9O2Muc3VwcG9ydC5zdWJtaXRCdWJibGVz
PWEoInN1Ym1pdCIpO2Muc3VwcG9ydC5jaGFuZ2VCdWJibGVzPWEoImNoYW5nZSIpO2E9Yj1kPWU9
aj1udWxsfX0pKCk7Yy5wcm9wcz17ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSIs
cmVhZG9ubHk6InJlYWRPbmx5IixtYXhsZW5ndGg6Im1heExlbmd0aCIsY2VsbHNwYWNpbmc6ImNl
bGxTcGFjaW5nIixyb3dzcGFuOiJyb3dTcGFuIixjb2xzcGFuOiJjb2xTcGFuIix0YWJpbmRleDoi
dGFiSW5kZXgiLHVzZW1hcDoidXNlTWFwIixmcmFtZWJvcmRlcjoiZnJhbWVCb3JkZXIifTt2YXIg
Rz0ialF1ZXJ5IitKKCksWWE9MCx6YT17fTtjLmV4dGVuZCh7Y2FjaGU6e30sZXhwYW5kbzpHLG5v
RGF0YTp7ZW1iZWQ6dHJ1ZSxvYmplY3Q6dHJ1ZSwKK2FwcGxldDp0cnVlfSxkYXRhOmZ1bmN0aW9u
KGEsYixkKXtpZighKGEubm9kZU5hbWUmJmMubm9EYXRhW2Eubm9kZU5hbWUudG9Mb3dlckNhc2Uo
KV0pKXthPWE9PUE/emE6YTt2YXIgZj1hW0ddLGU9Yy5jYWNoZTtpZighZiYmdHlwZW9mIGI9PT0i
c3RyaW5nIiYmZD09PXcpcmV0dXJuIG51bGw7Znx8KGY9KytZYSk7aWYodHlwZW9mIGI9PT0ib2Jq
ZWN0Iil7YVtHXT1mO2VbZl09Yy5leHRlbmQodHJ1ZSx7fSxiKX1lbHNlIGlmKCFlW2ZdKXthW0dd
PWY7ZVtmXT17fX1hPWVbZl07aWYoZCE9PXcpYVtiXT1kO3JldHVybiB0eXBlb2YgYj09PSJzdHJp
bmciP2FbYl06YX19LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtpZighKGEubm9kZU5hbWUmJmMu
bm9EYXRhW2Eubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pKXthPWE9PUE/emE6YTt2YXIgZD1hW0dd
LGY9Yy5jYWNoZSxlPWZbZF07aWYoYil7aWYoZSl7ZGVsZXRlIGVbYl07Yy5pc0VtcHR5T2JqZWN0
KGUpJiZjLnJlbW92ZURhdGEoYSl9fWVsc2V7aWYoYy5zdXBwb3J0LmRlbGV0ZUV4cGFuZG8pZGVs
ZXRlIGFbYy5leHBhbmRvXTsKK2Vsc2UgYS5yZW1vdmVBdHRyaWJ1dGUmJmEucmVtb3ZlQXR0cmli
dXRlKGMuZXhwYW5kbyk7ZGVsZXRlIGZbZF19fX19KTtjLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlv
bihhLGIpe2lmKHR5cGVvZiBhPT09InVuZGVmaW5lZCImJnRoaXMubGVuZ3RoKXJldHVybiBjLmRh
dGEodGhpc1swXSk7ZWxzZSBpZih0eXBlb2YgYT09PSJvYmplY3QiKXJldHVybiB0aGlzLmVhY2go
ZnVuY3Rpb24oKXtjLmRhdGEodGhpcyxhKX0pO3ZhciBkPWEuc3BsaXQoIi4iKTtkWzFdPWRbMV0/
Ii4iK2RbMV06IiI7aWYoYj09PXcpe3ZhciBmPXRoaXMudHJpZ2dlckhhbmRsZXIoImdldERhdGEi
K2RbMV0rIiEiLFtkWzBdXSk7aWYoZj09PXcmJnRoaXMubGVuZ3RoKWY9Yy5kYXRhKHRoaXNbMF0s
YSk7cmV0dXJuIGY9PT13JiZkWzFdP3RoaXMuZGF0YShkWzBdKTpmfWVsc2UgcmV0dXJuIHRoaXMu
dHJpZ2dlcigic2V0RGF0YSIrZFsxXSsiISIsW2RbMF0sYl0pLmVhY2goZnVuY3Rpb24oKXtjLmRh
dGEodGhpcywKK2EsYil9KX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNo
KGZ1bmN0aW9uKCl7Yy5yZW1vdmVEYXRhKHRoaXMsYSl9KX19KTtjLmV4dGVuZCh7cXVldWU6ZnVu
Y3Rpb24oYSxiLGQpe2lmKGEpe2I9KGJ8fCJmeCIpKyJxdWV1ZSI7dmFyIGY9Yy5kYXRhKGEsYik7
aWYoIWQpcmV0dXJuIGZ8fFtdO2lmKCFmfHxjLmlzQXJyYXkoZCkpZj1jLmRhdGEoYSxiLGMubWFr
ZUFycmF5KGQpKTtlbHNlIGYucHVzaChkKTtyZXR1cm4gZn19LGRlcXVldWU6ZnVuY3Rpb24oYSxi
KXtiPWJ8fCJmeCI7dmFyIGQ9Yy5xdWV1ZShhLGIpLGY9ZC5zaGlmdCgpO2lmKGY9PT0iaW5wcm9n
cmVzcyIpZj1kLnNoaWZ0KCk7aWYoZil7Yj09PSJmeCImJmQudW5zaGlmdCgiaW5wcm9ncmVzcyIp
O2YuY2FsbChhLGZ1bmN0aW9uKCl7Yy5kZXF1ZXVlKGEsYil9KX19fSk7Yy5mbi5leHRlbmQoe3F1
ZXVlOmZ1bmN0aW9uKGEsYil7aWYodHlwZW9mIGEhPT0ic3RyaW5nIil7Yj1hO2E9ImZ4In1pZihi
PT09Cit3KXJldHVybiBjLnF1ZXVlKHRoaXNbMF0sYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlv
bigpe3ZhciBkPWMucXVldWUodGhpcyxhLGIpO2E9PT0iZngiJiZkWzBdIT09ImlucHJvZ3Jlc3Mi
JiZjLmRlcXVldWUodGhpcyxhKX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVh
Y2goZnVuY3Rpb24oKXtjLmRlcXVldWUodGhpcyxhKX0pfSxkZWxheTpmdW5jdGlvbihhLGIpe2E9
Yy5meD9jLmZ4LnNwZWVkc1thXXx8YTphO2I9Ynx8ImZ4IjtyZXR1cm4gdGhpcy5xdWV1ZShiLGZ1
bmN0aW9uKCl7dmFyIGQ9dGhpcztzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy5kZXF1ZXVlKGQsYil9
LGEpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucXVldWUoYXx8ImZ4Iixb
XSl9fSk7dmFyIEFhPS9bXG5cdF0vZyxjYT0vXHMrLyxaYT0vXHIvZywkYT0vaHJlZnxzcmN8c3R5
bGUvLGFiPS8oYnV0dG9ufGlucHV0KS9pLGJiPS8oYnV0dG9ufGlucHV0fG9iamVjdHxzZWxlY3R8
dGV4dGFyZWEpL2ksCitjYj0vXihhfGFyZWEpJC9pLEJhPS9yYWRpb3xjaGVja2JveC87Yy5mbi5l
eHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gWCh0aGlzLGEsYix0cnVlLGMuYXR0cil9
LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2MuYXR0
cih0aGlzLGEsIiIpO3RoaXMubm9kZVR5cGU9PT0xJiZ0aGlzLnJlbW92ZUF0dHJpYnV0ZShhKX0p
fSxhZGRDbGFzczpmdW5jdGlvbihhKXtpZihjLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFj
aChmdW5jdGlvbihuKXt2YXIgcj1jKHRoaXMpO3IuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsbixyLmF0
dHIoImNsYXNzIikpKX0pO2lmKGEmJnR5cGVvZiBhPT09InN0cmluZyIpZm9yKHZhciBiPShhfHwi
Iikuc3BsaXQoY2EpLGQ9MCxmPXRoaXMubGVuZ3RoO2Q8ZjtkKyspe3ZhciBlPXRoaXNbZF07aWYo
ZS5ub2RlVHlwZT09PTEpaWYoZS5jbGFzc05hbWUpe2Zvcih2YXIgaj0iICIrZS5jbGFzc05hbWUr
IiAiLAoraT1lLmNsYXNzTmFtZSxvPTAsaz1iLmxlbmd0aDtvPGs7bysrKWlmKGouaW5kZXhPZigi
ICIrYltvXSsiICIpPDApaSs9IiAiK2Jbb107ZS5jbGFzc05hbWU9Yy50cmltKGkpfWVsc2UgZS5j
bGFzc05hbWU9YX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7aWYoYy5pc0Z1
bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oayl7dmFyIG49Yyh0aGlzKTtuLnJl
bW92ZUNsYXNzKGEuY2FsbCh0aGlzLGssbi5hdHRyKCJjbGFzcyIpKSl9KTtpZihhJiZ0eXBlb2Yg
YT09PSJzdHJpbmcifHxhPT09dylmb3IodmFyIGI9KGF8fCIiKS5zcGxpdChjYSksZD0wLGY9dGhp
cy5sZW5ndGg7ZDxmO2QrKyl7dmFyIGU9dGhpc1tkXTtpZihlLm5vZGVUeXBlPT09MSYmZS5jbGFz
c05hbWUpaWYoYSl7Zm9yKHZhciBqPSgiICIrZS5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKEFhLCIg
IiksaT0wLG89Yi5sZW5ndGg7aTxvO2krKylqPWoucmVwbGFjZSgiICIrYltpXSsiICIsCisiICIp
O2UuY2xhc3NOYW1lPWMudHJpbShqKX1lbHNlIGUuY2xhc3NOYW1lPSIifXJldHVybiB0aGlzfSx0
b2dnbGVDbGFzczpmdW5jdGlvbihhLGIpe3ZhciBkPXR5cGVvZiBhLGY9dHlwZW9mIGI9PT0iYm9v
bGVhbiI7aWYoYy5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oZSl7dmFy
IGo9Yyh0aGlzKTtqLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLGUsai5hdHRyKCJjbGFzcyIpLGIp
LGIpfSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKGQ9PT0ic3RyaW5nIilmb3IodmFy
IGUsaj0wLGk9Yyh0aGlzKSxvPWIsaz1hLnNwbGl0KGNhKTtlPWtbaisrXTspe289Zj9vOiFpLmhh
c0NsYXNzKGUpO2lbbz8iYWRkQ2xhc3MiOiJyZW1vdmVDbGFzcyJdKGUpfWVsc2UgaWYoZD09PSJ1
bmRlZmluZWQifHxkPT09ImJvb2xlYW4iKXt0aGlzLmNsYXNzTmFtZSYmYy5kYXRhKHRoaXMsIl9f
Y2xhc3NOYW1lX18iLHRoaXMuY2xhc3NOYW1lKTt0aGlzLmNsYXNzTmFtZT0KK3RoaXMuY2xhc3NO
YW1lfHxhPT09ZmFsc2U/IiI6Yy5kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiJ9fSl9LGhh
c0NsYXNzOmZ1bmN0aW9uKGEpe2E9IiAiK2ErIiAiO2Zvcih2YXIgYj0wLGQ9dGhpcy5sZW5ndGg7
YjxkO2IrKylpZigoIiAiK3RoaXNbYl0uY2xhc3NOYW1lKyIgIikucmVwbGFjZShBYSwiICIpLmlu
ZGV4T2YoYSk+LTEpcmV0dXJuIHRydWU7cmV0dXJuIGZhbHNlfSx2YWw6ZnVuY3Rpb24oYSl7aWYo
YT09PXcpe3ZhciBiPXRoaXNbMF07aWYoYil7aWYoYy5ub2RlTmFtZShiLCJvcHRpb24iKSlyZXR1
cm4oYi5hdHRyaWJ1dGVzLnZhbHVlfHx7fSkuc3BlY2lmaWVkP2IudmFsdWU6Yi50ZXh0O2lmKGMu
bm9kZU5hbWUoYiwic2VsZWN0Iikpe3ZhciBkPWIuc2VsZWN0ZWRJbmRleCxmPVtdLGU9Yi5vcHRp
b25zO2I9Yi50eXBlPT09InNlbGVjdC1vbmUiO2lmKGQ8MClyZXR1cm4gbnVsbDt2YXIgaj1iP2Q6
MDtmb3IoZD1iP2QrMTplLmxlbmd0aDtqPGQ7aisrKXt2YXIgaT0KK2Vbal07aWYoaS5zZWxlY3Rl
ZCl7YT1jKGkpLnZhbCgpO2lmKGIpcmV0dXJuIGE7Zi5wdXNoKGEpfX1yZXR1cm4gZn1pZihCYS50
ZXN0KGIudHlwZSkmJiFjLnN1cHBvcnQuY2hlY2tPbilyZXR1cm4gYi5nZXRBdHRyaWJ1dGUoInZh
bHVlIik9PT1udWxsPyJvbiI6Yi52YWx1ZTtyZXR1cm4oYi52YWx1ZXx8IiIpLnJlcGxhY2UoWmEs
IiIpfXJldHVybiB3fXZhciBvPWMuaXNGdW5jdGlvbihhKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0
aW9uKGspe3ZhciBuPWModGhpcykscj1hO2lmKHRoaXMubm9kZVR5cGU9PT0xKXtpZihvKXI9YS5j
YWxsKHRoaXMsayxuLnZhbCgpKTtpZih0eXBlb2Ygcj09PSJudW1iZXIiKXIrPSIiO2lmKGMuaXNB
cnJheShyKSYmQmEudGVzdCh0aGlzLnR5cGUpKXRoaXMuY2hlY2tlZD1jLmluQXJyYXkobi52YWwo
KSxyKT49MDtlbHNlIGlmKGMubm9kZU5hbWUodGhpcywic2VsZWN0Iikpe3ZhciB1PWMubWFrZUFy
cmF5KHIpO2MoIm9wdGlvbiIsdGhpcykuZWFjaChmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWQ9Citj
LmluQXJyYXkoYyh0aGlzKS52YWwoKSx1KT49MH0pO2lmKCF1Lmxlbmd0aCl0aGlzLnNlbGVjdGVk
SW5kZXg9LTF9ZWxzZSB0aGlzLnZhbHVlPXJ9fSl9fSk7Yy5leHRlbmQoe2F0dHJGbjp7dmFsOnRy
dWUsY3NzOnRydWUsaHRtbDp0cnVlLHRleHQ6dHJ1ZSxkYXRhOnRydWUsd2lkdGg6dHJ1ZSxoZWln
aHQ6dHJ1ZSxvZmZzZXQ6dHJ1ZX0sYXR0cjpmdW5jdGlvbihhLGIsZCxmKXtpZighYXx8YS5ub2Rl
VHlwZT09PTN8fGEubm9kZVR5cGU9PT04KXJldHVybiB3O2lmKGYmJmIgaW4gYy5hdHRyRm4pcmV0
dXJuIGMoYSlbYl0oZCk7Zj1hLm5vZGVUeXBlIT09MXx8IWMuaXNYTUxEb2MoYSk7dmFyIGU9ZCE9
PXc7Yj1mJiZjLnByb3BzW2JdfHxiO2lmKGEubm9kZVR5cGU9PT0xKXt2YXIgaj0kYS50ZXN0KGIp
O2lmKGIgaW4gYSYmZiYmIWope2lmKGUpe2I9PT0idHlwZSImJmFiLnRlc3QoYS5ub2RlTmFtZSkm
JmEucGFyZW50Tm9kZSYmYy5lcnJvcigidHlwZSBwcm9wZXJ0eSBjYW4ndCBiZSBjaGFuZ2VkIik7
CithW2JdPWR9aWYoYy5ub2RlTmFtZShhLCJmb3JtIikmJmEuZ2V0QXR0cmlidXRlTm9kZShiKSly
ZXR1cm4gYS5nZXRBdHRyaWJ1dGVOb2RlKGIpLm5vZGVWYWx1ZTtpZihiPT09InRhYkluZGV4Iily
ZXR1cm4oYj1hLmdldEF0dHJpYnV0ZU5vZGUoInRhYkluZGV4IikpJiZiLnNwZWNpZmllZD9iLnZh
bHVlOmJiLnRlc3QoYS5ub2RlTmFtZSl8fGNiLnRlc3QoYS5ub2RlTmFtZSkmJmEuaHJlZj8wOnc7
cmV0dXJuIGFbYl19aWYoIWMuc3VwcG9ydC5zdHlsZSYmZiYmYj09PSJzdHlsZSIpe2lmKGUpYS5z
dHlsZS5jc3NUZXh0PSIiK2Q7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dH1lJiZhLnNldEF0dHJpYnV0
ZShiLCIiK2QpO2E9IWMuc3VwcG9ydC5ocmVmTm9ybWFsaXplZCYmZiYmaj9hLmdldEF0dHJpYnV0
ZShiLDIpOmEuZ2V0QXR0cmlidXRlKGIpO3JldHVybiBhPT09bnVsbD93OmF9cmV0dXJuIGMuc3R5
bGUoYSxiLGQpfX0pO3ZhciBPPS9cLiguKikkLyxkYj1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBs
YWNlKC9bXlx3XHNcLlx8YF0vZywKK2Z1bmN0aW9uKGIpe3JldHVybiJcXCIrYn0pfTtjLmV2ZW50
PXthZGQ6ZnVuY3Rpb24oYSxiLGQsZil7aWYoIShhLm5vZGVUeXBlPT09M3x8YS5ub2RlVHlwZT09
PTgpKXtpZihhLnNldEludGVydmFsJiZhIT09QSYmIWEuZnJhbWVFbGVtZW50KWE9QTt2YXIgZSxq
O2lmKGQuaGFuZGxlcil7ZT1kO2Q9ZS5oYW5kbGVyfWlmKCFkLmd1aWQpZC5ndWlkPWMuZ3VpZCsr
O2lmKGo9Yy5kYXRhKGEpKXt2YXIgaT1qLmV2ZW50cz1qLmV2ZW50c3x8e30sbz1qLmhhbmRsZTtp
ZighbylqLmhhbmRsZT1vPWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBjIT09InVuZGVmaW5lZCIm
JiFjLmV2ZW50LnRyaWdnZXJlZD9jLmV2ZW50LmhhbmRsZS5hcHBseShvLmVsZW0sYXJndW1lbnRz
KTp3fTtvLmVsZW09YTtiPWIuc3BsaXQoIiAiKTtmb3IodmFyIGssbj0wLHI7az1iW24rK107KXtq
PWU/Yy5leHRlbmQoe30sZSk6e2hhbmRsZXI6ZCxkYXRhOmZ9O2lmKGsuaW5kZXhPZigiLiIpPi0x
KXtyPWsuc3BsaXQoIi4iKTsKK2s9ci5zaGlmdCgpO2oubmFtZXNwYWNlPXIuc2xpY2UoMCkuc29y
dCgpLmpvaW4oIi4iKX1lbHNle3I9W107ai5uYW1lc3BhY2U9IiJ9ai50eXBlPWs7ai5ndWlkPWQu
Z3VpZDt2YXIgdT1pW2tdLHo9Yy5ldmVudC5zcGVjaWFsW2tdfHx7fTtpZighdSl7dT1pW2tdPVtd
O2lmKCF6LnNldHVwfHx6LnNldHVwLmNhbGwoYSxmLHIsbyk9PT1mYWxzZSlpZihhLmFkZEV2ZW50
TGlzdGVuZXIpYS5hZGRFdmVudExpc3RlbmVyKGssbyxmYWxzZSk7ZWxzZSBhLmF0dGFjaEV2ZW50
JiZhLmF0dGFjaEV2ZW50KCJvbiIrayxvKX1pZih6LmFkZCl7ei5hZGQuY2FsbChhLGopO2lmKCFq
LmhhbmRsZXIuZ3VpZClqLmhhbmRsZXIuZ3VpZD1kLmd1aWR9dS5wdXNoKGopO2MuZXZlbnQuZ2xv
YmFsW2tdPXRydWV9YT1udWxsfX19LGdsb2JhbDp7fSxyZW1vdmU6ZnVuY3Rpb24oYSxiLGQsZil7
aWYoIShhLm5vZGVUeXBlPT09M3x8YS5ub2RlVHlwZT09PTgpKXt2YXIgZSxqPTAsaSxvLGssbixy
LHUsej1jLmRhdGEoYSksCitDPXomJnouZXZlbnRzO2lmKHomJkMpe2lmKGImJmIudHlwZSl7ZD1i
LmhhbmRsZXI7Yj1iLnR5cGV9aWYoIWJ8fHR5cGVvZiBiPT09InN0cmluZyImJmIuY2hhckF0KDAp
PT09Ii4iKXtiPWJ8fCIiO2ZvcihlIGluIEMpYy5ldmVudC5yZW1vdmUoYSxlK2IpfWVsc2V7Zm9y
KGI9Yi5zcGxpdCgiICIpO2U9YltqKytdOyl7bj1lO2k9ZS5pbmRleE9mKCIuIik8MDtvPVtdO2lm
KCFpKXtvPWUuc3BsaXQoIi4iKTtlPW8uc2hpZnQoKTtrPW5ldyBSZWdFeHAoIihefFxcLikiK2Mu
bWFwKG8uc2xpY2UoMCkuc29ydCgpLGRiKS5qb2luKCJcXC4oPzouKlxcLik/IikrIihcXC58JCki
KX1pZihyPUNbZV0paWYoZCl7bj1jLmV2ZW50LnNwZWNpYWxbZV18fHt9O2ZvcihCPWZ8fDA7Qjxy
Lmxlbmd0aDtCKyspe3U9cltCXTtpZihkLmd1aWQ9PT11Lmd1aWQpe2lmKGl8fGsudGVzdCh1Lm5h
bWVzcGFjZSkpe2Y9PW51bGwmJnIuc3BsaWNlKEItLSwxKTtuLnJlbW92ZSYmbi5yZW1vdmUuY2Fs
bChhLHUpfWlmKGYhPQorbnVsbClicmVha319aWYoci5sZW5ndGg9PT0wfHxmIT1udWxsJiZyLmxl
bmd0aD09PTEpe2lmKCFuLnRlYXJkb3dufHxuLnRlYXJkb3duLmNhbGwoYSxvKT09PWZhbHNlKUNh
KGEsZSx6LmhhbmRsZSk7ZGVsZXRlIENbZV19fWVsc2UgZm9yKHZhciBCPTA7QjxyLmxlbmd0aDtC
Kyspe3U9cltCXTtpZihpfHxrLnRlc3QodS5uYW1lc3BhY2UpKXtjLmV2ZW50LnJlbW92ZShhLG4s
dS5oYW5kbGVyLEIpO3Iuc3BsaWNlKEItLSwxKX19fWlmKGMuaXNFbXB0eU9iamVjdChDKSl7aWYo
Yj16LmhhbmRsZSliLmVsZW09bnVsbDtkZWxldGUgei5ldmVudHM7ZGVsZXRlIHouaGFuZGxlO2Mu
aXNFbXB0eU9iamVjdCh6KSYmYy5yZW1vdmVEYXRhKGEpfX19fX0sdHJpZ2dlcjpmdW5jdGlvbihh
LGIsZCxmKXt2YXIgZT1hLnR5cGV8fGE7aWYoIWYpe2E9dHlwZW9mIGE9PT0ib2JqZWN0Ij9hW0dd
P2E6Yy5leHRlbmQoYy5FdmVudChlKSxhKTpjLkV2ZW50KGUpO2lmKGUuaW5kZXhPZigiISIpPj0w
KXthLnR5cGU9CitlPWUuc2xpY2UoMCwtMSk7YS5leGNsdXNpdmU9dHJ1ZX1pZighZCl7YS5zdG9w
UHJvcGFnYXRpb24oKTtjLmV2ZW50Lmdsb2JhbFtlXSYmYy5lYWNoKGMuY2FjaGUsZnVuY3Rpb24o
KXt0aGlzLmV2ZW50cyYmdGhpcy5ldmVudHNbZV0mJmMuZXZlbnQudHJpZ2dlcihhLGIsdGhpcy5o
YW5kbGUuZWxlbSl9KX1pZighZHx8ZC5ub2RlVHlwZT09PTN8fGQubm9kZVR5cGU9PT04KXJldHVy
biB3O2EucmVzdWx0PXc7YS50YXJnZXQ9ZDtiPWMubWFrZUFycmF5KGIpO2IudW5zaGlmdChhKX1h
LmN1cnJlbnRUYXJnZXQ9ZDsoZj1jLmRhdGEoZCwiaGFuZGxlIikpJiZmLmFwcGx5KGQsYik7Zj1k
LnBhcmVudE5vZGV8fGQub3duZXJEb2N1bWVudDt0cnl7aWYoIShkJiZkLm5vZGVOYW1lJiZjLm5v
RGF0YVtkLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKSlpZihkWyJvbiIrZV0mJmRbIm9uIitlXS5h
cHBseShkLGIpPT09ZmFsc2UpYS5yZXN1bHQ9ZmFsc2V9Y2F0Y2goail7fWlmKCFhLmlzUHJvcGFn
YXRpb25TdG9wcGVkKCkmJgorZiljLmV2ZW50LnRyaWdnZXIoYSxiLGYsdHJ1ZSk7ZWxzZSBpZigh
YS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7Zj1hLnRhcmdldDt2YXIgaSxvPWMubm9kZU5hbWUoZiwi
YSIpJiZlPT09ImNsaWNrIixrPWMuZXZlbnQuc3BlY2lhbFtlXXx8e307aWYoKCFrLl9kZWZhdWx0
fHxrLl9kZWZhdWx0LmNhbGwoZCxhKT09PWZhbHNlKSYmIW8mJiEoZiYmZi5ub2RlTmFtZSYmYy5u
b0RhdGFbZi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkpe3RyeXtpZihmW2VdKXtpZihpPWZbIm9u
IitlXSlmWyJvbiIrZV09bnVsbDtjLmV2ZW50LnRyaWdnZXJlZD10cnVlO2ZbZV0oKX19Y2F0Y2go
bil7fWlmKGkpZlsib24iK2VdPWk7Yy5ldmVudC50cmlnZ2VyZWQ9ZmFsc2V9fX0saGFuZGxlOmZ1
bmN0aW9uKGEpe3ZhciBiLGQsZixlO2E9YXJndW1lbnRzWzBdPWMuZXZlbnQuZml4KGF8fEEuZXZl
bnQpO2EuY3VycmVudFRhcmdldD10aGlzO2I9YS50eXBlLmluZGV4T2YoIi4iKTwwJiYhYS5leGNs
dXNpdmU7CitpZighYil7ZD1hLnR5cGUuc3BsaXQoIi4iKTthLnR5cGU9ZC5zaGlmdCgpO2Y9bmV3
IFJlZ0V4cCgiKF58XFwuKSIrZC5zbGljZSgwKS5zb3J0KCkuam9pbigiXFwuKD86LipcXC4pPyIp
KyIoXFwufCQpIil9ZT1jLmRhdGEodGhpcywiZXZlbnRzIik7ZD1lW2EudHlwZV07aWYoZSYmZCl7
ZD1kLnNsaWNlKDApO2U9MDtmb3IodmFyIGo9ZC5sZW5ndGg7ZTxqO2UrKyl7dmFyIGk9ZFtlXTtp
ZihifHxmLnRlc3QoaS5uYW1lc3BhY2UpKXthLmhhbmRsZXI9aS5oYW5kbGVyO2EuZGF0YT1pLmRh
dGE7YS5oYW5kbGVPYmo9aTtpPWkuaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoaSE9
PXcpe2EucmVzdWx0PWk7aWYoaT09PWZhbHNlKXthLnByZXZlbnREZWZhdWx0KCk7YS5zdG9wUHJv
cGFnYXRpb24oKX19aWYoYS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrfX19
cmV0dXJuIGEucmVzdWx0fSxwcm9wczoiYWx0S2V5IGF0dHJDaGFuZ2UgYXR0ck5hbWUgYnViYmxl
cyBidXR0b24gY2FuY2VsYWJsZSBjaGFyQ29kZSBjbGllbnRYIGNsaWVudFkgY3RybEtleSBjdXJy
ZW50VGFyZ2V0IGRhdGEgZGV0YWlsIGV2ZW50UGhhc2UgZnJvbUVsZW1lbnQgaGFuZGxlciBrZXlD
b2RlIGxheWVyWCBsYXllclkgbWV0YUtleSBuZXdWYWx1ZSBvZmZzZXRYIG9mZnNldFkgb3JpZ2lu
YWxUYXJnZXQgcGFnZVggcGFnZVkgcHJldlZhbHVlIHJlbGF0ZWROb2RlIHJlbGF0ZWRUYXJnZXQg
c2NyZWVuWCBzY3JlZW5ZIHNoaWZ0S2V5IHNyY0VsZW1lbnQgdGFyZ2V0IHRvRWxlbWVudCB2aWV3
IHdoZWVsRGVsdGEgd2hpY2giLnNwbGl0KCIgIiksCitmaXg6ZnVuY3Rpb24oYSl7aWYoYVtHXSly
ZXR1cm4gYTt2YXIgYj1hO2E9Yy5FdmVudChiKTtmb3IodmFyIGQ9dGhpcy5wcm9wcy5sZW5ndGgs
ZjtkOyl7Zj10aGlzLnByb3BzWy0tZF07YVtmXT1iW2ZdfWlmKCFhLnRhcmdldClhLnRhcmdldD1h
LnNyY0VsZW1lbnR8fHM7aWYoYS50YXJnZXQubm9kZVR5cGU9PT0zKWEudGFyZ2V0PWEudGFyZ2V0
LnBhcmVudE5vZGU7aWYoIWEucmVsYXRlZFRhcmdldCYmYS5mcm9tRWxlbWVudClhLnJlbGF0ZWRU
YXJnZXQ9YS5mcm9tRWxlbWVudD09PWEudGFyZ2V0P2EudG9FbGVtZW50OmEuZnJvbUVsZW1lbnQ7
aWYoYS5wYWdlWD09bnVsbCYmYS5jbGllbnRYIT1udWxsKXtiPXMuZG9jdW1lbnRFbGVtZW50O2Q9
cy5ib2R5O2EucGFnZVg9YS5jbGllbnRYKyhiJiZiLnNjcm9sbExlZnR8fGQmJmQuc2Nyb2xsTGVm
dHx8MCktKGImJmIuY2xpZW50TGVmdHx8ZCYmZC5jbGllbnRMZWZ0fHwwKTthLnBhZ2VZPWEuY2xp
ZW50WSsoYiYmYi5zY3JvbGxUb3B8fAorZCYmZC5zY3JvbGxUb3B8fDApLShiJiZiLmNsaWVudFRv
cHx8ZCYmZC5jbGllbnRUb3B8fDApfWlmKCFhLndoaWNoJiYoYS5jaGFyQ29kZXx8YS5jaGFyQ29k
ZT09PTA/YS5jaGFyQ29kZTphLmtleUNvZGUpKWEud2hpY2g9YS5jaGFyQ29kZXx8YS5rZXlDb2Rl
O2lmKCFhLm1ldGFLZXkmJmEuY3RybEtleSlhLm1ldGFLZXk9YS5jdHJsS2V5O2lmKCFhLndoaWNo
JiZhLmJ1dHRvbiE9PXcpYS53aGljaD1hLmJ1dHRvbiYxPzE6YS5idXR0b24mMj8zOmEuYnV0dG9u
JjQ/MjowO3JldHVybiBhfSxndWlkOjFFOCxwcm94eTpjLnByb3h5LHNwZWNpYWw6e3JlYWR5Ontz
ZXR1cDpjLmJpbmRSZWFkeSx0ZWFyZG93bjpjLm5vb3B9LGxpdmU6e2FkZDpmdW5jdGlvbihhKXtj
LmV2ZW50LmFkZCh0aGlzLGEub3JpZ1R5cGUsYy5leHRlbmQoe30sYSx7aGFuZGxlcjpvYX0pKX0s
cmVtb3ZlOmZ1bmN0aW9uKGEpe3ZhciBiPXRydWUsZD1hLm9yaWdUeXBlLnJlcGxhY2UoTywiIik7
Yy5lYWNoKGMuZGF0YSh0aGlzLAorImV2ZW50cyIpLmxpdmV8fFtdLGZ1bmN0aW9uKCl7aWYoZD09
PXRoaXMub3JpZ1R5cGUucmVwbGFjZShPLCIiKSlyZXR1cm4gYj1mYWxzZX0pO2ImJmMuZXZlbnQu
cmVtb3ZlKHRoaXMsYS5vcmlnVHlwZSxvYSl9fSxiZWZvcmV1bmxvYWQ6e3NldHVwOmZ1bmN0aW9u
KGEsYixkKXtpZih0aGlzLnNldEludGVydmFsKXRoaXMub25iZWZvcmV1bmxvYWQ9ZDtyZXR1cm4g
ZmFsc2V9LHRlYXJkb3duOmZ1bmN0aW9uKGEsYil7aWYodGhpcy5vbmJlZm9yZXVubG9hZD09PWIp
dGhpcy5vbmJlZm9yZXVubG9hZD1udWxsfX19fTt2YXIgQ2E9cy5yZW1vdmVFdmVudExpc3RlbmVy
P2Z1bmN0aW9uKGEsYixkKXthLnJlbW92ZUV2ZW50TGlzdGVuZXIoYixkLGZhbHNlKX06ZnVuY3Rp
b24oYSxiLGQpe2EuZGV0YWNoRXZlbnQoIm9uIitiLGQpfTtjLkV2ZW50PWZ1bmN0aW9uKGEpe2lm
KCF0aGlzLnByZXZlbnREZWZhdWx0KXJldHVybiBuZXcgYy5FdmVudChhKTtpZihhJiZhLnR5cGUp
e3RoaXMub3JpZ2luYWxFdmVudD0KK2E7dGhpcy50eXBlPWEudHlwZX1lbHNlIHRoaXMudHlwZT1h
O3RoaXMudGltZVN0YW1wPUooKTt0aGlzW0ddPXRydWV9O2MuRXZlbnQucHJvdG90eXBlPXtwcmV2
ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPVo7dmFyIGE9dGhp
cy5vcmlnaW5hbEV2ZW50O2lmKGEpe2EucHJldmVudERlZmF1bHQmJmEucHJldmVudERlZmF1bHQo
KTthLnJldHVyblZhbHVlPWZhbHNlfX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5p
c1Byb3BhZ2F0aW9uU3RvcHBlZD1aO3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDtpZihhKXthLnN0
b3BQcm9wYWdhdGlvbiYmYS5zdG9wUHJvcGFnYXRpb24oKTthLmNhbmNlbEJ1YmJsZT10cnVlfX0s
c3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc0ltbWVkaWF0ZVByb3Bh
Z2F0aW9uU3RvcHBlZD1aO3RoaXMuc3RvcFByb3BhZ2F0aW9uKCl9LGlzRGVmYXVsdFByZXZlbnRl
ZDpZLGlzUHJvcGFnYXRpb25TdG9wcGVkOlksCitpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBl
ZDpZfTt2YXIgRGE9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZWxhdGVkVGFyZ2V0O3RyeXtmb3IoO2Im
JmIhPT10aGlzOyliPWIucGFyZW50Tm9kZTtpZihiIT09dGhpcyl7YS50eXBlPWEuZGF0YTtjLmV2
ZW50LmhhbmRsZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWNhdGNoKGQpe319LEVhPWZ1bmN0aW9u
KGEpe2EudHlwZT1hLmRhdGE7Yy5ldmVudC5oYW5kbGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtj
LmVhY2goe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSxmdW5j
dGlvbihhLGIpe2MuZXZlbnQuc3BlY2lhbFthXT17c2V0dXA6ZnVuY3Rpb24oZCl7Yy5ldmVudC5h
ZGQodGhpcyxiLGQmJmQuc2VsZWN0b3I/RWE6RGEsYSl9LHRlYXJkb3duOmZ1bmN0aW9uKGQpe2Mu
ZXZlbnQucmVtb3ZlKHRoaXMsYixkJiZkLnNlbGVjdG9yP0VhOkRhKX19fSk7aWYoIWMuc3VwcG9y
dC5zdWJtaXRCdWJibGVzKWMuZXZlbnQuc3BlY2lhbC5zdWJtaXQ9Cit7c2V0dXA6ZnVuY3Rpb24o
KXtpZih0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkhPT0iZm9ybSIpe2MuZXZlbnQuYWRkKHRo
aXMsImNsaWNrLnNwZWNpYWxTdWJtaXQiLGZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0LGQ9Yi50
eXBlO2lmKChkPT09InN1Ym1pdCJ8fGQ9PT0iaW1hZ2UiKSYmYyhiKS5jbG9zZXN0KCJmb3JtIiku
bGVuZ3RoKXJldHVybiBuYSgic3VibWl0Iix0aGlzLGFyZ3VtZW50cyl9KTtjLmV2ZW50LmFkZCh0
aGlzLCJrZXlwcmVzcy5zcGVjaWFsU3VibWl0IixmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldCxk
PWIudHlwZTtpZigoZD09PSJ0ZXh0Inx8ZD09PSJwYXNzd29yZCIpJiZjKGIpLmNsb3Nlc3QoImZv
cm0iKS5sZW5ndGgmJmEua2V5Q29kZT09PTEzKXJldHVybiBuYSgic3VibWl0Iix0aGlzLGFyZ3Vt
ZW50cyl9KX1lbHNlIHJldHVybiBmYWxzZX0sdGVhcmRvd246ZnVuY3Rpb24oKXtjLmV2ZW50LnJl
bW92ZSh0aGlzLCIuc3BlY2lhbFN1Ym1pdCIpfX07CitpZighYy5zdXBwb3J0LmNoYW5nZUJ1YmJs
ZXMpe3ZhciBkYT0vdGV4dGFyZWF8aW5wdXR8c2VsZWN0L2ksZWEsRmE9ZnVuY3Rpb24oYSl7dmFy
IGI9YS50eXBlLGQ9YS52YWx1ZTtpZihiPT09InJhZGlvInx8Yj09PSJjaGVja2JveCIpZD1hLmNo
ZWNrZWQ7ZWxzZSBpZihiPT09InNlbGVjdC1tdWx0aXBsZSIpZD1hLnNlbGVjdGVkSW5kZXg+LTE/
Yy5tYXAoYS5vcHRpb25zLGZ1bmN0aW9uKGYpe3JldHVybiBmLnNlbGVjdGVkfSkuam9pbigiLSIp
OiIiO2Vsc2UgaWYoYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09InNlbGVjdCIpZD1hLnNlbGVj
dGVkSW5kZXg7cmV0dXJuIGR9LGZhPWZ1bmN0aW9uKGEsYil7dmFyIGQ9YS50YXJnZXQsZixlO2lm
KCEoIWRhLnRlc3QoZC5ub2RlTmFtZSl8fGQucmVhZE9ubHkpKXtmPWMuZGF0YShkLCJfY2hhbmdl
X2RhdGEiKTtlPUZhKGQpO2lmKGEudHlwZSE9PSJmb2N1c291dCJ8fGQudHlwZSE9PSJyYWRpbyIp
Yy5kYXRhKGQsIl9jaGFuZ2VfZGF0YSIsCitlKTtpZighKGY9PT13fHxlPT09ZikpaWYoZiE9bnVs
bHx8ZSl7YS50eXBlPSJjaGFuZ2UiO3JldHVybiBjLmV2ZW50LnRyaWdnZXIoYSxiLGQpfX19O2Mu
ZXZlbnQuc3BlY2lhbC5jaGFuZ2U9e2ZpbHRlcnM6e2ZvY3Vzb3V0OmZhLGNsaWNrOmZ1bmN0aW9u
KGEpe3ZhciBiPWEudGFyZ2V0LGQ9Yi50eXBlO2lmKGQ9PT0icmFkaW8ifHxkPT09ImNoZWNrYm94
Inx8Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09InNlbGVjdCIpcmV0dXJuIGZhLmNhbGwodGhp
cyxhKX0sa2V5ZG93bjpmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldCxkPWIudHlwZTtpZihhLmtl
eUNvZGU9PT0xMyYmYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIT09InRleHRhcmVhInx8YS5rZXlD
b2RlPT09MzImJihkPT09ImNoZWNrYm94Inx8ZD09PSJyYWRpbyIpfHxkPT09InNlbGVjdC1tdWx0
aXBsZSIpcmV0dXJuIGZhLmNhbGwodGhpcyxhKX0sYmVmb3JlYWN0aXZhdGU6ZnVuY3Rpb24oYSl7
YT1hLnRhcmdldDtjLmRhdGEoYSwKKyJfY2hhbmdlX2RhdGEiLEZhKGEpKX19LHNldHVwOmZ1bmN0
aW9uKCl7aWYodGhpcy50eXBlPT09ImZpbGUiKXJldHVybiBmYWxzZTtmb3IodmFyIGEgaW4gZWEp
Yy5ldmVudC5hZGQodGhpcyxhKyIuc3BlY2lhbENoYW5nZSIsZWFbYV0pO3JldHVybiBkYS50ZXN0
KHRoaXMubm9kZU5hbWUpfSx0ZWFyZG93bjpmdW5jdGlvbigpe2MuZXZlbnQucmVtb3ZlKHRoaXMs
Ii5zcGVjaWFsQ2hhbmdlIik7cmV0dXJuIGRhLnRlc3QodGhpcy5ub2RlTmFtZSl9fTtlYT1jLmV2
ZW50LnNwZWNpYWwuY2hhbmdlLmZpbHRlcnN9cy5hZGRFdmVudExpc3RlbmVyJiZjLmVhY2goe2Zv
Y3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gZChm
KXtmPWMuZXZlbnQuZml4KGYpO2YudHlwZT1iO3JldHVybiBjLmV2ZW50LmhhbmRsZS5jYWxsKHRo
aXMsZil9Yy5ldmVudC5zcGVjaWFsW2JdPXtzZXR1cDpmdW5jdGlvbigpe3RoaXMuYWRkRXZlbnRM
aXN0ZW5lcihhLAorZCx0cnVlKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUV2ZW50
TGlzdGVuZXIoYSxkLHRydWUpfX19KTtjLmVhY2goWyJiaW5kIiwib25lIl0sZnVuY3Rpb24oYSxi
KXtjLmZuW2JdPWZ1bmN0aW9uKGQsZixlKXtpZih0eXBlb2YgZD09PSJvYmplY3QiKXtmb3IodmFy
IGogaW4gZCl0aGlzW2JdKGosZixkW2pdLGUpO3JldHVybiB0aGlzfWlmKGMuaXNGdW5jdGlvbihm
KSl7ZT1mO2Y9d312YXIgaT1iPT09Im9uZSI/Yy5wcm94eShlLGZ1bmN0aW9uKGspe2ModGhpcyku
dW5iaW5kKGssaSk7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSk6ZTtpZihkPT09InVu
bG9hZCImJmIhPT0ib25lIil0aGlzLm9uZShkLGYsZSk7ZWxzZXtqPTA7Zm9yKHZhciBvPXRoaXMu
bGVuZ3RoO2o8bztqKyspYy5ldmVudC5hZGQodGhpc1tqXSxkLGksZil9cmV0dXJuIHRoaXN9fSk7
Yy5mbi5leHRlbmQoe3VuYmluZDpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBhPT09Im9iamVjdCIm
JgorIWEucHJldmVudERlZmF1bHQpZm9yKHZhciBkIGluIGEpdGhpcy51bmJpbmQoZCxhW2RdKTtl
bHNle2Q9MDtmb3IodmFyIGY9dGhpcy5sZW5ndGg7ZDxmO2QrKyljLmV2ZW50LnJlbW92ZSh0aGlz
W2RdLGEsYil9cmV0dXJuIHRoaXN9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixkLGYpe3JldHVybiB0
aGlzLmxpdmUoYixkLGYsYSl9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGQpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPT09MD90aGlzLnVuYmluZCgibGl2ZSIpOnRoaXMuZGllKGIsbnVsbCxkLGEp
fSx0cmlnZ2VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2MuZXZl
bnQudHJpZ2dlcihhLGIsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oYSxiKXtpZih0
aGlzWzBdKXthPWMuRXZlbnQoYSk7YS5wcmV2ZW50RGVmYXVsdCgpO2Euc3RvcFByb3BhZ2F0aW9u
KCk7Yy5ldmVudC50cmlnZ2VyKGEsYix0aGlzWzBdKTtyZXR1cm4gYS5yZXN1bHR9fSwKK3RvZ2ds
ZTpmdW5jdGlvbihhKXtmb3IodmFyIGI9YXJndW1lbnRzLGQ9MTtkPGIubGVuZ3RoOyljLnByb3h5
KGEsYltkKytdKTtyZXR1cm4gdGhpcy5jbGljayhjLnByb3h5KGEsZnVuY3Rpb24oZil7dmFyIGU9
KGMuZGF0YSh0aGlzLCJsYXN0VG9nZ2xlIithLmd1aWQpfHwwKSVkO2MuZGF0YSh0aGlzLCJsYXN0
VG9nZ2xlIithLmd1aWQsZSsxKTtmLnByZXZlbnREZWZhdWx0KCk7cmV0dXJuIGJbZV0uYXBwbHko
dGhpcyxhcmd1bWVudHMpfHxmYWxzZX0pKX0saG92ZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhp
cy5tb3VzZWVudGVyKGEpLm1vdXNlbGVhdmUoYnx8YSl9fSk7dmFyIEdhPXtmb2N1czoiZm9jdXNp
biIsYmx1cjoiZm9jdXNvdXQiLG1vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91
c2VvdXQifTtjLmVhY2goWyJsaXZlIiwiZGllIl0sZnVuY3Rpb24oYSxiKXtjLmZuW2JdPWZ1bmN0
aW9uKGQsZixlLGope3ZhciBpLG89MCxrLG4scj1qfHx0aGlzLnNlbGVjdG9yLAordT1qP3RoaXM6
Yyh0aGlzLmNvbnRleHQpO2lmKGMuaXNGdW5jdGlvbihmKSl7ZT1mO2Y9d31mb3IoZD0oZHx8IiIp
LnNwbGl0KCIgIik7KGk9ZFtvKytdKSE9bnVsbDspe2o9Ty5leGVjKGkpO2s9IiI7aWYoail7az1q
WzBdO2k9aS5yZXBsYWNlKE8sIiIpfWlmKGk9PT0iaG92ZXIiKWQucHVzaCgibW91c2VlbnRlciIr
aywibW91c2VsZWF2ZSIrayk7ZWxzZXtuPWk7aWYoaT09PSJmb2N1cyJ8fGk9PT0iYmx1ciIpe2Qu
cHVzaChHYVtpXStrKTtpKz1rfWVsc2UgaT0oR2FbaV18fGkpK2s7Yj09PSJsaXZlIj91LmVhY2go
ZnVuY3Rpb24oKXtjLmV2ZW50LmFkZCh0aGlzLHBhKGkscikse2RhdGE6ZixzZWxlY3RvcjpyLGhh
bmRsZXI6ZSxvcmlnVHlwZTppLG9yaWdIYW5kbGVyOmUscHJlVHlwZTpufSl9KTp1LnVuYmluZChw
YShpLHIpLGUpfX1yZXR1cm4gdGhpc319KTtjLmVhY2goImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1
c291dCBsb2FkIHJlc2l6ZSBzY3JvbGwgdW5sb2FkIGNsaWNrIGRibGNsaWNrIG1vdXNlZG93biBt
b3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZl
IGNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgZXJyb3IiLnNwbGl0
KCIgIiksCitmdW5jdGlvbihhLGIpe2MuZm5bYl09ZnVuY3Rpb24oZCl7cmV0dXJuIGQ/dGhpcy5i
aW5kKGIsZCk6dGhpcy50cmlnZ2VyKGIpfTtpZihjLmF0dHJGbiljLmF0dHJGbltiXT10cnVlfSk7
QS5hdHRhY2hFdmVudCYmIUEuYWRkRXZlbnRMaXN0ZW5lciYmQS5hdHRhY2hFdmVudCgib251bmxv
YWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhIGluIGMuY2FjaGUpaWYoYy5jYWNoZVthXS5oYW5kbGUp
dHJ5e2MuZXZlbnQucmVtb3ZlKGMuY2FjaGVbYV0uaGFuZGxlLmVsZW0pfWNhdGNoKGIpe319KTso
ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGcpe2Zvcih2YXIgaD0iIixsLG09MDtnW21dO20rKyl7bD1n
W21dO2lmKGwubm9kZVR5cGU9PT0zfHxsLm5vZGVUeXBlPT09NCloKz1sLm5vZGVWYWx1ZTtlbHNl
IGlmKGwubm9kZVR5cGUhPT04KWgrPWEobC5jaGlsZE5vZGVzKX1yZXR1cm4gaH1mdW5jdGlvbiBi
KGcsaCxsLG0scSxwKXtxPTA7Zm9yKHZhciB2PW0ubGVuZ3RoO3E8djtxKyspe3ZhciB0PW1bcV07
CitpZih0KXt0PXRbZ107Zm9yKHZhciB5PWZhbHNlO3Q7KXtpZih0LnNpemNhY2hlPT09bCl7eT1t
W3Quc2l6c2V0XTticmVha31pZih0Lm5vZGVUeXBlPT09MSYmIXApe3Quc2l6Y2FjaGU9bDt0LnNp
enNldD1xfWlmKHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWgpe3k9dDticmVha310PXRbZ119
bVtxXT15fX19ZnVuY3Rpb24gZChnLGgsbCxtLHEscCl7cT0wO2Zvcih2YXIgdj1tLmxlbmd0aDtx
PHY7cSsrKXt2YXIgdD1tW3FdO2lmKHQpe3Q9dFtnXTtmb3IodmFyIHk9ZmFsc2U7dDspe2lmKHQu
c2l6Y2FjaGU9PT1sKXt5PW1bdC5zaXpzZXRdO2JyZWFrfWlmKHQubm9kZVR5cGU9PT0xKXtpZigh
cCl7dC5zaXpjYWNoZT1sO3Quc2l6c2V0PXF9aWYodHlwZW9mIGghPT0ic3RyaW5nIil7aWYodD09
PWgpe3k9dHJ1ZTticmVha319ZWxzZSBpZihrLmZpbHRlcihoLFt0XSkubGVuZ3RoPjApe3k9dDti
cmVha319dD10W2ddfW1bcV09eX19fXZhciBmPS8oKD86XCgoPzpcKFteKCldK1wpfFteKCldKykr
XCl8XFsoPzpcW1teW1xdXSpcXXxbJyJdW14nIl0qWyciXXxbXltcXSciXSspK1xdfFxcLnxbXiA+
K34sKFxbXFxdKykrfFs+K35dKShccyosXHMqKT8oKD86LnxccnxcbikqKS9nLAorZT0wLGo9T2Jq
ZWN0LnByb3RvdHlwZS50b1N0cmluZyxpPWZhbHNlLG89dHJ1ZTtbMCwwXS5zb3J0KGZ1bmN0aW9u
KCl7bz1mYWxzZTtyZXR1cm4gMH0pO3ZhciBrPWZ1bmN0aW9uKGcsaCxsLG0pe2w9bHx8W107dmFy
IHE9aD1ofHxzO2lmKGgubm9kZVR5cGUhPT0xJiZoLm5vZGVUeXBlIT09OSlyZXR1cm5bXTtpZigh
Z3x8dHlwZW9mIGchPT0ic3RyaW5nIilyZXR1cm4gbDtmb3IodmFyIHA9W10sdix0LHksUyxIPXRy
dWUsTT14KGgpLEk9ZzsoZi5leGVjKCIiKSx2PWYuZXhlYyhJKSkhPT1udWxsOyl7ST12WzNdO3Au
cHVzaCh2WzFdKTtpZih2WzJdKXtTPXZbM107YnJlYWt9fWlmKHAubGVuZ3RoPjEmJnIuZXhlYyhn
KSlpZihwLmxlbmd0aD09PTImJm4ucmVsYXRpdmVbcFswXV0pdD1nYShwWzBdK3BbMV0saCk7ZWxz
ZSBmb3IodD1uLnJlbGF0aXZlW3BbMF1dP1toXTprKHAuc2hpZnQoKSxoKTtwLmxlbmd0aDspe2c9
cC5zaGlmdCgpO2lmKG4ucmVsYXRpdmVbZ10pZys9cC5zaGlmdCgpOwordD1nYShnLHQpfWVsc2V7
aWYoIW0mJnAubGVuZ3RoPjEmJmgubm9kZVR5cGU9PT05JiYhTSYmbi5tYXRjaC5JRC50ZXN0KHBb
MF0pJiYhbi5tYXRjaC5JRC50ZXN0KHBbcC5sZW5ndGgtMV0pKXt2PWsuZmluZChwLnNoaWZ0KCks
aCxNKTtoPXYuZXhwcj9rLmZpbHRlcih2LmV4cHIsdi5zZXQpWzBdOnYuc2V0WzBdfWlmKGgpe3Y9
bT97ZXhwcjpwLnBvcCgpLHNldDp6KG0pfTprLmZpbmQocC5wb3AoKSxwLmxlbmd0aD09PTEmJihw
WzBdPT09In4ifHxwWzBdPT09IisiKSYmaC5wYXJlbnROb2RlP2gucGFyZW50Tm9kZTpoLE0pO3Q9
di5leHByP2suZmlsdGVyKHYuZXhwcix2LnNldCk6di5zZXQ7aWYocC5sZW5ndGg+MCl5PXoodCk7
ZWxzZSBIPWZhbHNlO2Zvcig7cC5sZW5ndGg7KXt2YXIgRD1wLnBvcCgpO3Y9RDtpZihuLnJlbGF0
aXZlW0RdKXY9cC5wb3AoKTtlbHNlIEQ9IiI7aWYodj09bnVsbCl2PWg7bi5yZWxhdGl2ZVtEXSh5
LHYsTSl9fWVsc2UgeT1bXX15fHwoeT10KTt5fHxrLmVycm9yKER8fAorZyk7aWYoai5jYWxsKHkp
PT09IltvYmplY3QgQXJyYXldIilpZihIKWlmKGgmJmgubm9kZVR5cGU9PT0xKWZvcihnPTA7eVtn
XSE9bnVsbDtnKyspe2lmKHlbZ10mJih5W2ddPT09dHJ1ZXx8eVtnXS5ub2RlVHlwZT09PTEmJkUo
aCx5W2ddKSkpbC5wdXNoKHRbZ10pfWVsc2UgZm9yKGc9MDt5W2ddIT1udWxsO2crKyl5W2ddJiZ5
W2ddLm5vZGVUeXBlPT09MSYmbC5wdXNoKHRbZ10pO2Vsc2UgbC5wdXNoLmFwcGx5KGwseSk7ZWxz
ZSB6KHksbCk7aWYoUyl7ayhTLHEsbCxtKTtrLnVuaXF1ZVNvcnQobCl9cmV0dXJuIGx9O2sudW5p
cXVlU29ydD1mdW5jdGlvbihnKXtpZihCKXtpPW87Zy5zb3J0KEIpO2lmKGkpZm9yKHZhciBoPTE7
aDxnLmxlbmd0aDtoKyspZ1toXT09PWdbaC0xXSYmZy5zcGxpY2UoaC0tLDEpfXJldHVybiBnfTtr
Lm1hdGNoZXM9ZnVuY3Rpb24oZyxoKXtyZXR1cm4gayhnLG51bGwsbnVsbCxoKX07ay5maW5kPWZ1
bmN0aW9uKGcsaCxsKXt2YXIgbSxxO2lmKCFnKXJldHVybltdOworZm9yKHZhciBwPTAsdj1uLm9y
ZGVyLmxlbmd0aDtwPHY7cCsrKXt2YXIgdD1uLm9yZGVyW3BdO2lmKHE9bi5sZWZ0TWF0Y2hbdF0u
ZXhlYyhnKSl7dmFyIHk9cVsxXTtxLnNwbGljZSgxLDEpO2lmKHkuc3Vic3RyKHkubGVuZ3RoLTEp
IT09IlxcIil7cVsxXT0ocVsxXXx8IiIpLnJlcGxhY2UoL1xcL2csIiIpO209bi5maW5kW3RdKHEs
aCxsKTtpZihtIT1udWxsKXtnPWcucmVwbGFjZShuLm1hdGNoW3RdLCIiKTticmVha319fX1tfHwo
bT1oLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpO3JldHVybntzZXQ6bSxleHByOmd9fTtrLmZp
bHRlcj1mdW5jdGlvbihnLGgsbCxtKXtmb3IodmFyIHE9ZyxwPVtdLHY9aCx0LHksUz1oJiZoWzBd
JiZ4KGhbMF0pO2cmJmgubGVuZ3RoOyl7Zm9yKHZhciBIIGluIG4uZmlsdGVyKWlmKCh0PW4ubGVm
dE1hdGNoW0hdLmV4ZWMoZykpIT1udWxsJiZ0WzJdKXt2YXIgTT1uLmZpbHRlcltIXSxJLEQ7RD10
WzFdO3k9ZmFsc2U7dC5zcGxpY2UoMSwxKTtpZihELnN1YnN0cihELmxlbmd0aC0KKzEpIT09Ilxc
Iil7aWYodj09PXApcD1bXTtpZihuLnByZUZpbHRlcltIXSlpZih0PW4ucHJlRmlsdGVyW0hdKHQs
dixsLHAsbSxTKSl7aWYodD09PXRydWUpY29udGludWV9ZWxzZSB5PUk9dHJ1ZTtpZih0KWZvcih2
YXIgVT0wOyhEPXZbVV0pIT1udWxsO1UrKylpZihEKXtJPU0oRCx0LFUsdik7dmFyIEhhPW1eISFJ
O2lmKGwmJkkhPW51bGwpaWYoSGEpeT10cnVlO2Vsc2UgdltVXT1mYWxzZTtlbHNlIGlmKEhhKXtw
LnB1c2goRCk7eT10cnVlfX1pZihJIT09dyl7bHx8KHY9cCk7Zz1nLnJlcGxhY2Uobi5tYXRjaFtI
XSwiIik7aWYoIXkpcmV0dXJuW107YnJlYWt9fX1pZihnPT09cSlpZih5PT1udWxsKWsuZXJyb3Io
Zyk7ZWxzZSBicmVhaztxPWd9cmV0dXJuIHZ9O2suZXJyb3I9ZnVuY3Rpb24oZyl7dGhyb3ciU3lu
dGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIitnO307dmFyIG49ay5zZWxlY3Rv
cnM9e29yZGVyOlsiSUQiLCJOQU1FIiwiVEFHIl0sbWF0Y2g6e0lEOi8jKCg/Oltcd1x1MDBjMC1c
dUZGRkYtXXxcXC4pKykvLAorQ0xBU1M6L1wuKCg/Oltcd1x1MDBjMC1cdUZGRkYtXXxcXC4pKykv
LE5BTUU6L1xbbmFtZT1bJyJdKigoPzpbXHdcdTAwYzAtXHVGRkZGLV18XFwuKSspWyciXSpcXS8s
QVRUUjovXFtccyooKD86W1x3XHUwMGMwLVx1RkZGRi1dfFxcLikrKVxzKig/OihcUz89KVxzKihb
JyJdKikoLio/KVwzfClccypcXS8sVEFHOi9eKCg/Oltcd1x1MDBjMC1cdUZGRkZcKi1dfFxcLikr
KS8sQ0hJTEQ6Lzoob25seXxudGh8bGFzdHxmaXJzdCktY2hpbGQoPzpcKChldmVufG9kZHxbXGRu
Ky1dKilcKSk/LyxQT1M6LzoobnRofGVxfGd0fGx0fGZpcnN0fGxhc3R8ZXZlbnxvZGQpKD86XCgo
XGQqKVwpKT8oPz1bXi1dfCQpLyxQU0VVRE86LzooKD86W1x3XHUwMGMwLVx1RkZGRi1dfFxcLikr
KSg/OlwoKFsnIl0/KSgoPzpcKFteXCldK1wpfFteXChcKV0qKSspXDJcKSk/L30sbGVmdE1hdGNo
Ont9LGF0dHJNYXA6eyJjbGFzcyI6ImNsYXNzTmFtZSIsImZvciI6Imh0bWxGb3IifSxhdHRySGFu
ZGxlOntocmVmOmZ1bmN0aW9uKGcpe3JldHVybiBnLmdldEF0dHJpYnV0ZSgiaHJlZiIpfX0sCity
ZWxhdGl2ZTp7IisiOmZ1bmN0aW9uKGcsaCl7dmFyIGw9dHlwZW9mIGg9PT0ic3RyaW5nIixtPWwm
JiEvXFcvLnRlc3QoaCk7bD1sJiYhbTtpZihtKWg9aC50b0xvd2VyQ2FzZSgpO209MDtmb3IodmFy
IHE9Zy5sZW5ndGgscDttPHE7bSsrKWlmKHA9Z1ttXSl7Zm9yKDsocD1wLnByZXZpb3VzU2libGlu
ZykmJnAubm9kZVR5cGUhPT0xOyk7Z1ttXT1sfHxwJiZwLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9
PT1oP3B8fGZhbHNlOnA9PT1ofWwmJmsuZmlsdGVyKGgsZyx0cnVlKX0sIj4iOmZ1bmN0aW9uKGcs
aCl7dmFyIGw9dHlwZW9mIGg9PT0ic3RyaW5nIjtpZihsJiYhL1xXLy50ZXN0KGgpKXtoPWgudG9M
b3dlckNhc2UoKTtmb3IodmFyIG09MCxxPWcubGVuZ3RoO208cTttKyspe3ZhciBwPWdbbV07aWYo
cCl7bD1wLnBhcmVudE5vZGU7Z1ttXT1sLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1oP2w6ZmFs
c2V9fX1lbHNle209MDtmb3IocT1nLmxlbmd0aDttPHE7bSsrKWlmKHA9Z1ttXSlnW21dPQorbD9w
LnBhcmVudE5vZGU6cC5wYXJlbnROb2RlPT09aDtsJiZrLmZpbHRlcihoLGcsdHJ1ZSl9fSwiIjpm
dW5jdGlvbihnLGgsbCl7dmFyIG09ZSsrLHE9ZDtpZih0eXBlb2YgaD09PSJzdHJpbmciJiYhL1xX
Ly50ZXN0KGgpKXt2YXIgcD1oPWgudG9Mb3dlckNhc2UoKTtxPWJ9cSgicGFyZW50Tm9kZSIsaCxt
LGcscCxsKX0sIn4iOmZ1bmN0aW9uKGcsaCxsKXt2YXIgbT1lKysscT1kO2lmKHR5cGVvZiBoPT09
InN0cmluZyImJiEvXFcvLnRlc3QoaCkpe3ZhciBwPWg9aC50b0xvd2VyQ2FzZSgpO3E9Yn1xKCJw
cmV2aW91c1NpYmxpbmciLGgsbSxnLHAsbCl9fSxmaW5kOntJRDpmdW5jdGlvbihnLGgsbCl7aWYo
dHlwZW9mIGguZ2V0RWxlbWVudEJ5SWQhPT0idW5kZWZpbmVkIiYmIWwpcmV0dXJuKGc9aC5nZXRF
bGVtZW50QnlJZChnWzFdKSk/W2ddOltdfSxOQU1FOmZ1bmN0aW9uKGcsaCl7aWYodHlwZW9mIGgu
Z2V0RWxlbWVudHNCeU5hbWUhPT0idW5kZWZpbmVkIil7dmFyIGw9W107CitoPWguZ2V0RWxlbWVu
dHNCeU5hbWUoZ1sxXSk7Zm9yKHZhciBtPTAscT1oLmxlbmd0aDttPHE7bSsrKWhbbV0uZ2V0QXR0
cmlidXRlKCJuYW1lIik9PT1nWzFdJiZsLnB1c2goaFttXSk7cmV0dXJuIGwubGVuZ3RoPT09MD9u
dWxsOmx9fSxUQUc6ZnVuY3Rpb24oZyxoKXtyZXR1cm4gaC5nZXRFbGVtZW50c0J5VGFnTmFtZShn
WzFdKX19LHByZUZpbHRlcjp7Q0xBU1M6ZnVuY3Rpb24oZyxoLGwsbSxxLHApe2c9IiAiK2dbMV0u
cmVwbGFjZSgvXFwvZywiIikrIiAiO2lmKHApcmV0dXJuIGc7cD0wO2Zvcih2YXIgdjsodj1oW3Bd
KSE9bnVsbDtwKyspaWYodilpZihxXih2LmNsYXNzTmFtZSYmKCIgIit2LmNsYXNzTmFtZSsiICIp
LnJlcGxhY2UoL1tcdFxuXS9nLCIgIikuaW5kZXhPZihnKT49MCkpbHx8bS5wdXNoKHYpO2Vsc2Ug
aWYobCloW3BdPWZhbHNlO3JldHVybiBmYWxzZX0sSUQ6ZnVuY3Rpb24oZyl7cmV0dXJuIGdbMV0u
cmVwbGFjZSgvXFwvZywiIil9LFRBRzpmdW5jdGlvbihnKXtyZXR1cm4gZ1sxXS50b0xvd2VyQ2Fz
ZSgpfSwKK0NISUxEOmZ1bmN0aW9uKGcpe2lmKGdbMV09PT0ibnRoIil7dmFyIGg9LygtPykoXGQq
KW4oKD86XCt8LSk/XGQqKS8uZXhlYyhnWzJdPT09ImV2ZW4iJiYiMm4ifHxnWzJdPT09Im9kZCIm
JiIybisxInx8IS9cRC8udGVzdChnWzJdKSYmIjBuKyIrZ1syXXx8Z1syXSk7Z1syXT1oWzFdKyho
WzJdfHwxKS0wO2dbM109aFszXS0wfWdbMF09ZSsrO3JldHVybiBnfSxBVFRSOmZ1bmN0aW9uKGcs
aCxsLG0scSxwKXtoPWdbMV0ucmVwbGFjZSgvXFwvZywiIik7aWYoIXAmJm4uYXR0ck1hcFtoXSln
WzFdPW4uYXR0ck1hcFtoXTtpZihnWzJdPT09In49IilnWzRdPSIgIitnWzRdKyIgIjtyZXR1cm4g
Z30sUFNFVURPOmZ1bmN0aW9uKGcsaCxsLG0scSl7aWYoZ1sxXT09PSJub3QiKWlmKChmLmV4ZWMo
Z1szXSl8fCIiKS5sZW5ndGg+MXx8L15cdy8udGVzdChnWzNdKSlnWzNdPWsoZ1szXSxudWxsLG51
bGwsaCk7ZWxzZXtnPWsuZmlsdGVyKGdbM10saCxsLHRydWVecSk7bHx8bS5wdXNoLmFwcGx5KG0s
CitnKTtyZXR1cm4gZmFsc2V9ZWxzZSBpZihuLm1hdGNoLlBPUy50ZXN0KGdbMF0pfHxuLm1hdGNo
LkNISUxELnRlc3QoZ1swXSkpcmV0dXJuIHRydWU7cmV0dXJuIGd9LFBPUzpmdW5jdGlvbihnKXtn
LnVuc2hpZnQodHJ1ZSk7cmV0dXJuIGd9fSxmaWx0ZXJzOntlbmFibGVkOmZ1bmN0aW9uKGcpe3Jl
dHVybiBnLmRpc2FibGVkPT09ZmFsc2UmJmcudHlwZSE9PSJoaWRkZW4ifSxkaXNhYmxlZDpmdW5j
dGlvbihnKXtyZXR1cm4gZy5kaXNhYmxlZD09PXRydWV9LGNoZWNrZWQ6ZnVuY3Rpb24oZyl7cmV0
dXJuIGcuY2hlY2tlZD09PXRydWV9LHNlbGVjdGVkOmZ1bmN0aW9uKGcpe3JldHVybiBnLnNlbGVj
dGVkPT09dHJ1ZX0scGFyZW50OmZ1bmN0aW9uKGcpe3JldHVybiEhZy5maXJzdENoaWxkfSxlbXB0
eTpmdW5jdGlvbihnKXtyZXR1cm4hZy5maXJzdENoaWxkfSxoYXM6ZnVuY3Rpb24oZyxoLGwpe3Jl
dHVybiEhayhsWzNdLGcpLmxlbmd0aH0saGVhZGVyOmZ1bmN0aW9uKGcpe3JldHVybi9oXGQvaS50
ZXN0KGcubm9kZU5hbWUpfSwKK3RleHQ6ZnVuY3Rpb24oZyl7cmV0dXJuInRleHQiPT09Zy50eXBl
fSxyYWRpbzpmdW5jdGlvbihnKXtyZXR1cm4icmFkaW8iPT09Zy50eXBlfSxjaGVja2JveDpmdW5j
dGlvbihnKXtyZXR1cm4iY2hlY2tib3giPT09Zy50eXBlfSxmaWxlOmZ1bmN0aW9uKGcpe3JldHVy
biJmaWxlIj09PWcudHlwZX0scGFzc3dvcmQ6ZnVuY3Rpb24oZyl7cmV0dXJuInBhc3N3b3JkIj09
PWcudHlwZX0sc3VibWl0OmZ1bmN0aW9uKGcpe3JldHVybiJzdWJtaXQiPT09Zy50eXBlfSxpbWFn
ZTpmdW5jdGlvbihnKXtyZXR1cm4iaW1hZ2UiPT09Zy50eXBlfSxyZXNldDpmdW5jdGlvbihnKXty
ZXR1cm4icmVzZXQiPT09Zy50eXBlfSxidXR0b246ZnVuY3Rpb24oZyl7cmV0dXJuImJ1dHRvbiI9
PT1nLnR5cGV8fGcubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJidXR0b24ifSxpbnB1dDpmdW5j
dGlvbihnKXtyZXR1cm4vaW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbi9pLnRlc3QoZy5ub2Rl
TmFtZSl9fSwKK3NldEZpbHRlcnM6e2ZpcnN0OmZ1bmN0aW9uKGcsaCl7cmV0dXJuIGg9PT0wfSxs
YXN0OmZ1bmN0aW9uKGcsaCxsLG0pe3JldHVybiBoPT09bS5sZW5ndGgtMX0sZXZlbjpmdW5jdGlv
bihnLGgpe3JldHVybiBoJTI9PT0wfSxvZGQ6ZnVuY3Rpb24oZyxoKXtyZXR1cm4gaCUyPT09MX0s
bHQ6ZnVuY3Rpb24oZyxoLGwpe3JldHVybiBoPGxbM10tMH0sZ3Q6ZnVuY3Rpb24oZyxoLGwpe3Jl
dHVybiBoPmxbM10tMH0sbnRoOmZ1bmN0aW9uKGcsaCxsKXtyZXR1cm4gbFszXS0wPT09aH0sZXE6
ZnVuY3Rpb24oZyxoLGwpe3JldHVybiBsWzNdLTA9PT1ofX0sZmlsdGVyOntQU0VVRE86ZnVuY3Rp
b24oZyxoLGwsbSl7dmFyIHE9aFsxXSxwPW4uZmlsdGVyc1txXTtpZihwKXJldHVybiBwKGcsbCxo
LG0pO2Vsc2UgaWYocT09PSJjb250YWlucyIpcmV0dXJuKGcudGV4dENvbnRlbnR8fGcuaW5uZXJU
ZXh0fHxhKFtnXSl8fCIiKS5pbmRleE9mKGhbM10pPj0wO2Vsc2UgaWYocT09PSJub3QiKXtoPQor
aFszXTtsPTA7Zm9yKG09aC5sZW5ndGg7bDxtO2wrKylpZihoW2xdPT09ZylyZXR1cm4gZmFsc2U7
cmV0dXJuIHRydWV9ZWxzZSBrLmVycm9yKCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHBy
ZXNzaW9uOiAiK3EpfSxDSElMRDpmdW5jdGlvbihnLGgpe3ZhciBsPWhbMV0sbT1nO3N3aXRjaChs
KXtjYXNlICJvbmx5IjpjYXNlICJmaXJzdCI6Zm9yKDttPW0ucHJldmlvdXNTaWJsaW5nOylpZiht
Lm5vZGVUeXBlPT09MSlyZXR1cm4gZmFsc2U7aWYobD09PSJmaXJzdCIpcmV0dXJuIHRydWU7bT1n
O2Nhc2UgImxhc3QiOmZvcig7bT1tLm5leHRTaWJsaW5nOylpZihtLm5vZGVUeXBlPT09MSlyZXR1
cm4gZmFsc2U7cmV0dXJuIHRydWU7Y2FzZSAibnRoIjpsPWhbMl07dmFyIHE9aFszXTtpZihsPT09
MSYmcT09PTApcmV0dXJuIHRydWU7aD1oWzBdO3ZhciBwPWcucGFyZW50Tm9kZTtpZihwJiYocC5z
aXpjYWNoZSE9PWh8fCFnLm5vZGVJbmRleCkpe3ZhciB2PTA7Zm9yKG09cC5maXJzdENoaWxkO207
bT0KK20ubmV4dFNpYmxpbmcpaWYobS5ub2RlVHlwZT09PTEpbS5ub2RlSW5kZXg9Kyt2O3Auc2l6
Y2FjaGU9aH1nPWcubm9kZUluZGV4LXE7cmV0dXJuIGw9PT0wP2c9PT0wOmclbD09PTAmJmcvbD49
MH19LElEOmZ1bmN0aW9uKGcsaCl7cmV0dXJuIGcubm9kZVR5cGU9PT0xJiZnLmdldEF0dHJpYnV0
ZSgiaWQiKT09PWh9LFRBRzpmdW5jdGlvbihnLGgpe3JldHVybiBoPT09IioiJiZnLm5vZGVUeXBl
PT09MXx8Zy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09aH0sQ0xBU1M6ZnVuY3Rpb24oZyxoKXty
ZXR1cm4oIiAiKyhnLmNsYXNzTmFtZXx8Zy5nZXRBdHRyaWJ1dGUoImNsYXNzIikpKyIgIikuaW5k
ZXhPZihoKT4tMX0sQVRUUjpmdW5jdGlvbihnLGgpe3ZhciBsPWhbMV07Zz1uLmF0dHJIYW5kbGVb
bF0/bi5hdHRySGFuZGxlW2xdKGcpOmdbbF0hPW51bGw/Z1tsXTpnLmdldEF0dHJpYnV0ZShsKTts
PWcrIiI7dmFyIG09aFsyXTtoPWhbNF07cmV0dXJuIGc9PW51bGw/bT09PSIhPSI6bT09PQorIj0i
P2w9PT1oOm09PT0iKj0iP2wuaW5kZXhPZihoKT49MDptPT09In49Ij8oIiAiK2wrIiAiKS5pbmRl
eE9mKGgpPj0wOiFoP2wmJmchPT1mYWxzZTptPT09IiE9Ij9sIT09aDptPT09Il49Ij9sLmluZGV4
T2YoaCk9PT0wOm09PT0iJD0iP2wuc3Vic3RyKGwubGVuZ3RoLWgubGVuZ3RoKT09PWg6bT09PSJ8
PSI/bD09PWh8fGwuc3Vic3RyKDAsaC5sZW5ndGgrMSk9PT1oKyItIjpmYWxzZX0sUE9TOmZ1bmN0
aW9uKGcsaCxsLG0pe3ZhciBxPW4uc2V0RmlsdGVyc1toWzJdXTtpZihxKXJldHVybiBxKGcsbCxo
LG0pfX19LHI9bi5tYXRjaC5QT1M7Zm9yKHZhciB1IGluIG4ubWF0Y2gpe24ubWF0Y2hbdV09bmV3
IFJlZ0V4cChuLm1hdGNoW3VdLnNvdXJjZSsvKD8hW15cW10qXF0pKD8hW15cKF0qXCkpLy5zb3Vy
Y2UpO24ubGVmdE1hdGNoW3VdPW5ldyBSZWdFeHAoLyheKD86LnxccnxcbikqPykvLnNvdXJjZStu
Lm1hdGNoW3VdLnNvdXJjZS5yZXBsYWNlKC9cXChcZCspL2csZnVuY3Rpb24oZywKK2gpe3JldHVy
biJcXCIrKGgtMCsxKX0pKX12YXIgej1mdW5jdGlvbihnLGgpe2c9QXJyYXkucHJvdG90eXBlLnNs
aWNlLmNhbGwoZywwKTtpZihoKXtoLnB1c2guYXBwbHkoaCxnKTtyZXR1cm4gaH1yZXR1cm4gZ307
dHJ5e0FycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHMuZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9k
ZXMsMCl9Y2F0Y2goQyl7ej1mdW5jdGlvbihnLGgpe2g9aHx8W107aWYoai5jYWxsKGcpPT09Iltv
YmplY3QgQXJyYXldIilBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShoLGcpO2Vsc2UgaWYodHlw
ZW9mIGcubGVuZ3RoPT09Im51bWJlciIpZm9yKHZhciBsPTAsbT1nLmxlbmd0aDtsPG07bCsrKWgu
cHVzaChnW2xdKTtlbHNlIGZvcihsPTA7Z1tsXTtsKyspaC5wdXNoKGdbbF0pO3JldHVybiBofX12
YXIgQjtpZihzLmRvY3VtZW50RWxlbWVudC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbilCPWZ1bmN0
aW9uKGcsaCl7aWYoIWcuY29tcGFyZURvY3VtZW50UG9zaXRpb258fAorIWguY29tcGFyZURvY3Vt
ZW50UG9zaXRpb24pe2lmKGc9PWgpaT10cnVlO3JldHVybiBnLmNvbXBhcmVEb2N1bWVudFBvc2l0
aW9uPy0xOjF9Zz1nLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGgpJjQ/LTE6Zz09PWg/MDoxO2lm
KGc9PT0wKWk9dHJ1ZTtyZXR1cm4gZ307ZWxzZSBpZigic291cmNlSW5kZXgiaW4gcy5kb2N1bWVu
dEVsZW1lbnQpQj1mdW5jdGlvbihnLGgpe2lmKCFnLnNvdXJjZUluZGV4fHwhaC5zb3VyY2VJbmRl
eCl7aWYoZz09aClpPXRydWU7cmV0dXJuIGcuc291cmNlSW5kZXg/LTE6MX1nPWcuc291cmNlSW5k
ZXgtaC5zb3VyY2VJbmRleDtpZihnPT09MClpPXRydWU7cmV0dXJuIGd9O2Vsc2UgaWYocy5jcmVh
dGVSYW5nZSlCPWZ1bmN0aW9uKGcsaCl7aWYoIWcub3duZXJEb2N1bWVudHx8IWgub3duZXJEb2N1
bWVudCl7aWYoZz09aClpPXRydWU7cmV0dXJuIGcub3duZXJEb2N1bWVudD8tMToxfXZhciBsPWcu
b3duZXJEb2N1bWVudC5jcmVhdGVSYW5nZSgpLG09CitoLm93bmVyRG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTtsLnNldFN0YXJ0KGcsMCk7bC5zZXRFbmQoZywwKTttLnNldFN0YXJ0KGgsMCk7bS5zZXRF
bmQoaCwwKTtnPWwuY29tcGFyZUJvdW5kYXJ5UG9pbnRzKFJhbmdlLlNUQVJUX1RPX0VORCxtKTtp
ZihnPT09MClpPXRydWU7cmV0dXJuIGd9OyhmdW5jdGlvbigpe3ZhciBnPXMuY3JlYXRlRWxlbWVu
dCgiZGl2IiksaD0ic2NyaXB0IisobmV3IERhdGUpLmdldFRpbWUoKTtnLmlubmVySFRNTD0iPGEg
bmFtZT0nIitoKyInLz4iO3ZhciBsPXMuZG9jdW1lbnRFbGVtZW50O2wuaW5zZXJ0QmVmb3JlKGcs
bC5maXJzdENoaWxkKTtpZihzLmdldEVsZW1lbnRCeUlkKGgpKXtuLmZpbmQuSUQ9ZnVuY3Rpb24o
bSxxLHApe2lmKHR5cGVvZiBxLmdldEVsZW1lbnRCeUlkIT09InVuZGVmaW5lZCImJiFwKXJldHVy
bihxPXEuZ2V0RWxlbWVudEJ5SWQobVsxXSkpP3EuaWQ9PT1tWzFdfHx0eXBlb2YgcS5nZXRBdHRy
aWJ1dGVOb2RlIT09InVuZGVmaW5lZCImJgorcS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLm5vZGVW
YWx1ZT09PW1bMV0/W3FdOnc6W119O24uZmlsdGVyLklEPWZ1bmN0aW9uKG0scSl7dmFyIHA9dHlw
ZW9mIG0uZ2V0QXR0cmlidXRlTm9kZSE9PSJ1bmRlZmluZWQiJiZtLmdldEF0dHJpYnV0ZU5vZGUo
ImlkIik7cmV0dXJuIG0ubm9kZVR5cGU9PT0xJiZwJiZwLm5vZGVWYWx1ZT09PXF9fWwucmVtb3Zl
Q2hpbGQoZyk7bD1nPW51bGx9KSgpOyhmdW5jdGlvbigpe3ZhciBnPXMuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7Zy5hcHBlbmRDaGlsZChzLmNyZWF0ZUNvbW1lbnQoIiIpKTtpZihnLmdldEVsZW1lbnRz
QnlUYWdOYW1lKCIqIikubGVuZ3RoPjApbi5maW5kLlRBRz1mdW5jdGlvbihoLGwpe2w9bC5nZXRF
bGVtZW50c0J5VGFnTmFtZShoWzFdKTtpZihoWzFdPT09IioiKXtoPVtdO2Zvcih2YXIgbT0wO2xb
bV07bSsrKWxbbV0ubm9kZVR5cGU9PT0xJiZoLnB1c2gobFttXSk7bD1ofXJldHVybiBsfTtnLmlu
bmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiI7CitpZihnLmZpcnN0Q2hpbGQmJnR5cGVvZiBnLmZp
cnN0Q2hpbGQuZ2V0QXR0cmlidXRlIT09InVuZGVmaW5lZCImJmcuZmlyc3RDaGlsZC5nZXRBdHRy
aWJ1dGUoImhyZWYiKSE9PSIjIiluLmF0dHJIYW5kbGUuaHJlZj1mdW5jdGlvbihoKXtyZXR1cm4g
aC5nZXRBdHRyaWJ1dGUoImhyZWYiLDIpfTtnPW51bGx9KSgpO3MucXVlcnlTZWxlY3RvckFsbCYm
ZnVuY3Rpb24oKXt2YXIgZz1rLGg9cy5jcmVhdGVFbGVtZW50KCJkaXYiKTtoLmlubmVySFRNTD0i
PHAgY2xhc3M9J1RFU1QnPjwvcD4iO2lmKCEoaC5xdWVyeVNlbGVjdG9yQWxsJiZoLnF1ZXJ5U2Vs
ZWN0b3JBbGwoIi5URVNUIikubGVuZ3RoPT09MCkpe2s9ZnVuY3Rpb24obSxxLHAsdil7cT1xfHxz
O2lmKCF2JiZxLm5vZGVUeXBlPT09OSYmIXgocSkpdHJ5e3JldHVybiB6KHEucXVlcnlTZWxlY3Rv
ckFsbChtKSxwKX1jYXRjaCh0KXt9cmV0dXJuIGcobSxxLHAsdil9O2Zvcih2YXIgbCBpbiBnKWtb
bF09Z1tsXTtoPW51bGx9fSgpOworKGZ1bmN0aW9uKCl7dmFyIGc9cy5jcmVhdGVFbGVtZW50KCJk
aXYiKTtnLmlubmVySFRNTD0iPGRpdiBjbGFzcz0ndGVzdCBlJz48L2Rpdj48ZGl2IGNsYXNzPSd0
ZXN0Jz48L2Rpdj4iO2lmKCEoIWcuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZXx8Zy5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoPT09MCkpe2cubGFzdENoaWxkLmNsYXNzTmFtZT0iZSI7
aWYoZy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoIT09MSl7bi5vcmRlci5zcGxp
Y2UoMSwwLCJDTEFTUyIpO24uZmluZC5DTEFTUz1mdW5jdGlvbihoLGwsbSl7aWYodHlwZW9mIGwu
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSE9PSJ1bmRlZmluZWQiJiYhbSlyZXR1cm4gbC5nZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKGhbMV0pfTtnPW51bGx9fX0pKCk7dmFyIEU9cy5jb21wYXJlRG9jdW1l
bnRQb3NpdGlvbj9mdW5jdGlvbihnLGgpe3JldHVybiEhKGcuY29tcGFyZURvY3VtZW50UG9zaXRp
b24oaCkmMTYpfToKK2Z1bmN0aW9uKGcsaCl7cmV0dXJuIGchPT1oJiYoZy5jb250YWlucz9nLmNv
bnRhaW5zKGgpOnRydWUpfSx4PWZ1bmN0aW9uKGcpe3JldHVybihnPShnP2cub3duZXJEb2N1bWVu
dHx8ZzowKS5kb2N1bWVudEVsZW1lbnQpP2cubm9kZU5hbWUhPT0iSFRNTCI6ZmFsc2V9LGdhPWZ1
bmN0aW9uKGcsaCl7dmFyIGw9W10sbT0iIixxO2ZvcihoPWgubm9kZVR5cGU/W2hdOmg7cT1uLm1h
dGNoLlBTRVVETy5leGVjKGcpOyl7bSs9cVswXTtnPWcucmVwbGFjZShuLm1hdGNoLlBTRVVETywi
Iil9Zz1uLnJlbGF0aXZlW2ddP2crIioiOmc7cT0wO2Zvcih2YXIgcD1oLmxlbmd0aDtxPHA7cSsr
KWsoZyxoW3FdLGwpO3JldHVybiBrLmZpbHRlcihtLGwpfTtjLmZpbmQ9aztjLmV4cHI9ay5zZWxl
Y3RvcnM7Yy5leHByWyI6Il09Yy5leHByLmZpbHRlcnM7Yy51bmlxdWU9ay51bmlxdWVTb3J0O2Mu
dGV4dD1hO2MuaXNYTUxEb2M9eDtjLmNvbnRhaW5zPUV9KSgpO3ZhciBlYj0vVW50aWwkLyxmYj0v
Xig/OnBhcmVudHN8cHJldlVudGlsfHByZXZBbGwpLywKK2diPS8sLztSPUFycmF5LnByb3RvdHlw
ZS5zbGljZTt2YXIgSWE9ZnVuY3Rpb24oYSxiLGQpe2lmKGMuaXNGdW5jdGlvbihiKSlyZXR1cm4g
Yy5ncmVwKGEsZnVuY3Rpb24oZSxqKXtyZXR1cm4hIWIuY2FsbChlLGosZSk9PT1kfSk7ZWxzZSBp
ZihiLm5vZGVUeXBlKXJldHVybiBjLmdyZXAoYSxmdW5jdGlvbihlKXtyZXR1cm4gZT09PWI9PT1k
fSk7ZWxzZSBpZih0eXBlb2YgYj09PSJzdHJpbmciKXt2YXIgZj1jLmdyZXAoYSxmdW5jdGlvbihl
KXtyZXR1cm4gZS5ub2RlVHlwZT09PTF9KTtpZihVYS50ZXN0KGIpKXJldHVybiBjLmZpbHRlcihi
LGYsIWQpO2Vsc2UgYj1jLmZpbHRlcihiLGYpfXJldHVybiBjLmdyZXAoYSxmdW5jdGlvbihlKXty
ZXR1cm4gYy5pbkFycmF5KGUsYik+PTA9PT1kfSl9O2MuZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9u
KGEpe2Zvcih2YXIgYj10aGlzLnB1c2hTdGFjaygiIiwiZmluZCIsYSksZD0wLGY9MCxlPXRoaXMu
bGVuZ3RoO2Y8ZTtmKyspe2Q9Yi5sZW5ndGg7CitjLmZpbmQoYSx0aGlzW2ZdLGIpO2lmKGY+MClm
b3IodmFyIGo9ZDtqPGIubGVuZ3RoO2orKylmb3IodmFyIGk9MDtpPGQ7aSsrKWlmKGJbaV09PT1i
W2pdKXtiLnNwbGljZShqLS0sMSk7YnJlYWt9fXJldHVybiBifSxoYXM6ZnVuY3Rpb24oYSl7dmFy
IGI9YyhhKTtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGQ9MCxmPWIubGVu
Z3RoO2Q8ZjtkKyspaWYoYy5jb250YWlucyh0aGlzLGJbZF0pKXJldHVybiB0cnVlfSl9LG5vdDpm
dW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soSWEodGhpcyxhLGZhbHNlKSwibm90Iixh
KX0sZmlsdGVyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhJYSh0aGlzLGEsdHJ1
ZSksImZpbHRlciIsYSl9LGlzOmZ1bmN0aW9uKGEpe3JldHVybiEhYSYmYy5maWx0ZXIoYSx0aGlz
KS5sZW5ndGg+MH0sY2xvc2VzdDpmdW5jdGlvbihhLGIpe2lmKGMuaXNBcnJheShhKSl7dmFyIGQ9
W10sZj10aGlzWzBdLGUsaj0KK3t9LGk7aWYoZiYmYS5sZW5ndGgpe2U9MDtmb3IodmFyIG89YS5s
ZW5ndGg7ZTxvO2UrKyl7aT1hW2VdO2pbaV18fChqW2ldPWMuZXhwci5tYXRjaC5QT1MudGVzdChp
KT9jKGksYnx8dGhpcy5jb250ZXh0KTppKX1mb3IoO2YmJmYub3duZXJEb2N1bWVudCYmZiE9PWI7
KXtmb3IoaSBpbiBqKXtlPWpbaV07aWYoZS5qcXVlcnk/ZS5pbmRleChmKT4tMTpjKGYpLmlzKGUp
KXtkLnB1c2goe3NlbGVjdG9yOmksZWxlbTpmfSk7ZGVsZXRlIGpbaV19fWY9Zi5wYXJlbnROb2Rl
fX1yZXR1cm4gZH12YXIgaz1jLmV4cHIubWF0Y2guUE9TLnRlc3QoYSk/YyhhLGJ8fHRoaXMuY29u
dGV4dCk6bnVsbDtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24obixyKXtmb3IoO3ImJnIub3duZXJE
b2N1bWVudCYmciE9PWI7KXtpZihrP2suaW5kZXgocik+LTE6YyhyKS5pcyhhKSlyZXR1cm4gcjty
PXIucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH0pfSxpbmRleDpmdW5jdGlvbihhKXtpZighYXx8dHlw
ZW9mIGE9PT0KKyJzdHJpbmciKXJldHVybiBjLmluQXJyYXkodGhpc1swXSxhP2MoYSk6dGhpcy5w
YXJlbnQoKS5jaGlsZHJlbigpKTtyZXR1cm4gYy5pbkFycmF5KGEuanF1ZXJ5P2FbMF06YSx0aGlz
KX0sYWRkOmZ1bmN0aW9uKGEsYil7YT10eXBlb2YgYT09PSJzdHJpbmciP2MoYSxifHx0aGlzLmNv
bnRleHQpOmMubWFrZUFycmF5KGEpO2I9Yy5tZXJnZSh0aGlzLmdldCgpLGEpO3JldHVybiB0aGlz
LnB1c2hTdGFjayhxYShhWzBdKXx8cWEoYlswXSk/YjpjLnVuaXF1ZShiKSl9LGFuZFNlbGY6ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5hZGQodGhpcy5wcmV2T2JqZWN0KX19KTtjLmVhY2goe3BhcmVu
dDpmdW5jdGlvbihhKXtyZXR1cm4oYT1hLnBhcmVudE5vZGUpJiZhLm5vZGVUeXBlIT09MTE/YTpu
dWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBjLmRpcihhLCJwYXJlbnROb2RlIil9LHBh
cmVudHNVbnRpbDpmdW5jdGlvbihhLGIsZCl7cmV0dXJuIGMuZGlyKGEsInBhcmVudE5vZGUiLAor
ZCl9LG5leHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGMubnRoKGEsMiwibmV4dFNpYmxpbmciKX0scHJl
djpmdW5jdGlvbihhKXtyZXR1cm4gYy5udGgoYSwyLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFs
bDpmdW5jdGlvbihhKXtyZXR1cm4gYy5kaXIoYSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5j
dGlvbihhKXtyZXR1cm4gYy5kaXIoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5j
dGlvbihhLGIsZCl7cmV0dXJuIGMuZGlyKGEsIm5leHRTaWJsaW5nIixkKX0scHJldlVudGlsOmZ1
bmN0aW9uKGEsYixkKXtyZXR1cm4gYy5kaXIoYSwicHJldmlvdXNTaWJsaW5nIixkKX0sc2libGlu
Z3M6ZnVuY3Rpb24oYSl7cmV0dXJuIGMuc2libGluZyhhLnBhcmVudE5vZGUuZmlyc3RDaGlsZCxh
KX0sY2hpbGRyZW46ZnVuY3Rpb24oYSl7cmV0dXJuIGMuc2libGluZyhhLmZpcnN0Q2hpbGQpfSxj
b250ZW50czpmdW5jdGlvbihhKXtyZXR1cm4gYy5ub2RlTmFtZShhLCJpZnJhbWUiKT8KK2EuY29u
dGVudERvY3VtZW50fHxhLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ6Yy5tYWtlQXJyYXkoYS5jaGls
ZE5vZGVzKX19LGZ1bmN0aW9uKGEsYil7Yy5mblthXT1mdW5jdGlvbihkLGYpe3ZhciBlPWMubWFw
KHRoaXMsYixkKTtlYi50ZXN0KGEpfHwoZj1kKTtpZihmJiZ0eXBlb2YgZj09PSJzdHJpbmciKWU9
Yy5maWx0ZXIoZixlKTtlPXRoaXMubGVuZ3RoPjE/Yy51bmlxdWUoZSk6ZTtpZigodGhpcy5sZW5n
dGg+MXx8Z2IudGVzdChmKSkmJmZiLnRlc3QoYSkpZT1lLnJldmVyc2UoKTtyZXR1cm4gdGhpcy5w
dXNoU3RhY2soZSxhLFIuY2FsbChhcmd1bWVudHMpLmpvaW4oIiwiKSl9fSk7Yy5leHRlbmQoe2Zp
bHRlcjpmdW5jdGlvbihhLGIsZCl7aWYoZClhPSI6bm90KCIrYSsiKSI7cmV0dXJuIGMuZmluZC5t
YXRjaGVzKGEsYil9LGRpcjpmdW5jdGlvbihhLGIsZCl7dmFyIGY9W107Zm9yKGE9YVtiXTthJiZh
Lm5vZGVUeXBlIT09OSYmKGQ9PT13fHxhLm5vZGVUeXBlIT09MXx8IWMoYSkuaXMoZCkpOyl7YS5u
b2RlVHlwZT09PQorMSYmZi5wdXNoKGEpO2E9YVtiXX1yZXR1cm4gZn0sbnRoOmZ1bmN0aW9uKGEs
YixkKXtiPWJ8fDE7Zm9yKHZhciBmPTA7YTthPWFbZF0paWYoYS5ub2RlVHlwZT09PTEmJisrZj09
PWIpYnJlYWs7cmV0dXJuIGF9LHNpYmxpbmc6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGQ9W107YTth
PWEubmV4dFNpYmxpbmcpYS5ub2RlVHlwZT09PTEmJmEhPT1iJiZkLnB1c2goYSk7cmV0dXJuIGR9
fSk7dmFyIEphPS8galF1ZXJ5XGQrPSIoPzpcZCt8bnVsbCkiL2csVj0vXlxzKy8sS2E9Lyg8KFtc
dzpdKylbXj5dKj8pXC8+L2csaGI9L14oPzphcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8
bGlua3xtZXRhfHBhcmFtKSQvaSxMYT0vPChbXHc6XSspLyxpYj0vPHRib2R5L2ksamI9Lzx8JiM/
XHcrOy8sdGE9LzxzY3JpcHR8PG9iamVjdHw8ZW1iZWR8PG9wdGlvbnw8c3R5bGUvaSx1YT0vY2hl
Y2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSxNYT1mdW5jdGlvbihhLGIsZCl7cmV0dXJu
IGhiLnRlc3QoZCk/CithOmIrIj48LyIrZCsiPiJ9LEY9e29wdGlvbjpbMSwiPHNlbGVjdCBtdWx0
aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdLGxlZ2VuZDpbMSwiPGZpZWxkc2V0PiIsIjwv
ZmllbGRzZXQ+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+
PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+Iiwi
PC90cj48L3Rib2R5PjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNv
bGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJd
LF9kZWZhdWx0OlswLCIiLCIiXX07Ri5vcHRncm91cD1GLm9wdGlvbjtGLnRib2R5PUYudGZvb3Q9
Ri5jb2xncm91cD1GLmNhcHRpb249Ri50aGVhZDtGLnRoPUYudGQ7aWYoIWMuc3VwcG9ydC5odG1s
U2VyaWFsaXplKUYuX2RlZmF1bHQ9WzEsImRpdjxkaXY+IiwiPC9kaXY+Il07Yy5mbi5leHRlbmQo
e3RleHQ6ZnVuY3Rpb24oYSl7aWYoYy5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVu
Y3Rpb24oYil7dmFyIGQ9CitjKHRoaXMpO2QudGV4dChhLmNhbGwodGhpcyxiLGQudGV4dCgpKSl9
KTtpZih0eXBlb2YgYSE9PSJvYmplY3QiJiZhIT09dylyZXR1cm4gdGhpcy5lbXB0eSgpLmFwcGVu
ZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHxzKS5jcmVhdGVUZXh0Tm9kZShhKSk7
cmV0dXJuIGMudGV4dCh0aGlzKX0sd3JhcEFsbDpmdW5jdGlvbihhKXtpZihjLmlzRnVuY3Rpb24o
YSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihkKXtjKHRoaXMpLndyYXBBbGwoYS5jYWxsKHRo
aXMsZCkpfSk7aWYodGhpc1swXSl7dmFyIGI9YyhhLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEo
MCkuY2xvbmUodHJ1ZSk7dGhpc1swXS5wYXJlbnROb2RlJiZiLmluc2VydEJlZm9yZSh0aGlzWzBd
KTtiLm1hcChmdW5jdGlvbigpe2Zvcih2YXIgZD10aGlzO2QuZmlyc3RDaGlsZCYmZC5maXJzdENo
aWxkLm5vZGVUeXBlPT09MTspZD1kLmZpcnN0Q2hpbGQ7cmV0dXJuIGR9KS5hcHBlbmQodGhpcyl9
cmV0dXJuIHRoaXN9LAord3JhcElubmVyOmZ1bmN0aW9uKGEpe2lmKGMuaXNGdW5jdGlvbihhKSly
ZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2ModGhpcykud3JhcElubmVyKGEuY2FsbCh0aGlz
LGIpKX0pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1jKHRoaXMpLGQ9Yi5jb250
ZW50cygpO2QubGVuZ3RoP2Qud3JhcEFsbChhKTpiLmFwcGVuZChhKX0pfSx3cmFwOmZ1bmN0aW9u
KGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtjKHRoaXMpLndyYXBBbGwoYSl9KX0sdW53
cmFwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkuZWFjaChmdW5jdGlvbigpe2Mubm9k
ZU5hbWUodGhpcywiYm9keSIpfHxjKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9
KS5lbmQoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRz
LHRydWUsZnVuY3Rpb24oYSl7dGhpcy5ub2RlVHlwZT09PTEmJnRoaXMuYXBwZW5kQ2hpbGQoYSl9
KX0sCitwcmVwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLHRy
dWUsZnVuY3Rpb24oYSl7dGhpcy5ub2RlVHlwZT09PTEmJnRoaXMuaW5zZXJ0QmVmb3JlKGEsdGhp
cy5maXJzdENoaWxkKX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtpZih0aGlzWzBdJiZ0aGlzWzBdLnBh
cmVudE5vZGUpcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZhbHNlLGZ1bmN0aW9uKGIp
e3RoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYix0aGlzKX0pO2Vsc2UgaWYoYXJndW1lbnRz
Lmxlbmd0aCl7dmFyIGE9Yyhhcmd1bWVudHNbMF0pO2EucHVzaC5hcHBseShhLHRoaXMudG9BcnJh
eSgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soYSwiYmVmb3JlIixhcmd1bWVudHMpfX0sYWZ0ZXI6
ZnVuY3Rpb24oKXtpZih0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGUpcmV0dXJuIHRoaXMuZG9t
TWFuaXAoYXJndW1lbnRzLGZhbHNlLGZ1bmN0aW9uKGIpe3RoaXMucGFyZW50Tm9kZS5pbnNlcnRC
ZWZvcmUoYiwKK3RoaXMubmV4dFNpYmxpbmcpfSk7ZWxzZSBpZihhcmd1bWVudHMubGVuZ3RoKXt2
YXIgYT10aGlzLnB1c2hTdGFjayh0aGlzLCJhZnRlciIsYXJndW1lbnRzKTthLnB1c2guYXBwbHko
YSxjKGFyZ3VtZW50c1swXSkudG9BcnJheSgpKTtyZXR1cm4gYX19LHJlbW92ZTpmdW5jdGlvbihh
LGIpe2Zvcih2YXIgZD0wLGY7KGY9dGhpc1tkXSkhPW51bGw7ZCsrKWlmKCFhfHxjLmZpbHRlcihh
LFtmXSkubGVuZ3RoKXtpZighYiYmZi5ub2RlVHlwZT09PTEpe2MuY2xlYW5EYXRhKGYuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoIioiKSk7Yy5jbGVhbkRhdGEoW2ZdKX1mLnBhcmVudE5vZGUmJmYucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZChmKX1yZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKXtmb3Io
dmFyIGE9MCxiOyhiPXRoaXNbYV0pIT1udWxsO2ErKylmb3IoYi5ub2RlVHlwZT09PTEmJmMuY2xl
YW5EYXRhKGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSk7Yi5maXJzdENoaWxkOyliLnJlbW92
ZUNoaWxkKGIuZmlyc3RDaGlsZCk7CityZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oYSl7dmFy
IGI9dGhpcy5tYXAoZnVuY3Rpb24oKXtpZighYy5zdXBwb3J0Lm5vQ2xvbmVFdmVudCYmIWMuaXNY
TUxEb2ModGhpcykpe3ZhciBkPXRoaXMub3V0ZXJIVE1MLGY9dGhpcy5vd25lckRvY3VtZW50O2lm
KCFkKXtkPWYuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZC5hcHBlbmRDaGlsZCh0aGlzLmNsb25lTm9k
ZSh0cnVlKSk7ZD1kLmlubmVySFRNTH1yZXR1cm4gYy5jbGVhbihbZC5yZXBsYWNlKEphLCIiKS5y
ZXBsYWNlKC89KFtePSInPlxzXStcLyk+L2csJz0iJDEiPicpLnJlcGxhY2UoViwiIildLGYpWzBd
fWVsc2UgcmV0dXJuIHRoaXMuY2xvbmVOb2RlKHRydWUpfSk7aWYoYT09PXRydWUpe3JhKHRoaXMs
Yik7cmEodGhpcy5maW5kKCIqIiksYi5maW5kKCIqIikpfXJldHVybiBifSxodG1sOmZ1bmN0aW9u
KGEpe2lmKGE9PT13KXJldHVybiB0aGlzWzBdJiZ0aGlzWzBdLm5vZGVUeXBlPT09MT90aGlzWzBd
LmlubmVySFRNTC5yZXBsYWNlKEphLAorIiIpOm51bGw7ZWxzZSBpZih0eXBlb2YgYT09PSJzdHJp
bmciJiYhdGEudGVzdChhKSYmKGMuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZXx8IVYudGVzdChh
KSkmJiFGWyhMYS5leGVjKGEpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSl7YT1hLnJlcGxh
Y2UoS2EsTWEpO3RyeXtmb3IodmFyIGI9MCxkPXRoaXMubGVuZ3RoO2I8ZDtiKyspaWYodGhpc1ti
XS5ub2RlVHlwZT09PTEpe2MuY2xlYW5EYXRhKHRoaXNbYl0uZ2V0RWxlbWVudHNCeVRhZ05hbWUo
IioiKSk7dGhpc1tiXS5pbm5lckhUTUw9YX19Y2F0Y2goZil7dGhpcy5lbXB0eSgpLmFwcGVuZChh
KX19ZWxzZSBjLmlzRnVuY3Rpb24oYSk/dGhpcy5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBqPWModGhp
cyksaT1qLmh0bWwoKTtqLmVtcHR5KCkuYXBwZW5kKGZ1bmN0aW9uKCl7cmV0dXJuIGEuY2FsbCh0
aGlzLGUsaSl9KX0pOnRoaXMuZW1wdHkoKS5hcHBlbmQoYSk7cmV0dXJuIHRoaXN9LHJlcGxhY2VX
aXRoOmZ1bmN0aW9uKGEpe2lmKHRoaXNbMF0mJgordGhpc1swXS5wYXJlbnROb2RlKXtpZihjLmlz
RnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgZD1jKHRoaXMpLGY9
ZC5odG1sKCk7ZC5yZXBsYWNlV2l0aChhLmNhbGwodGhpcyxiLGYpKX0pO2lmKHR5cGVvZiBhIT09
InN0cmluZyIpYT1jKGEpLmRldGFjaCgpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIg
Yj10aGlzLm5leHRTaWJsaW5nLGQ9dGhpcy5wYXJlbnROb2RlO2ModGhpcykucmVtb3ZlKCk7Yj9j
KGIpLmJlZm9yZShhKTpjKGQpLmFwcGVuZChhKX0pfWVsc2UgcmV0dXJuIHRoaXMucHVzaFN0YWNr
KGMoYy5pc0Z1bmN0aW9uKGEpP2EoKTphKSwicmVwbGFjZVdpdGgiLGEpfSxkZXRhY2g6ZnVuY3Rp
b24oYSl7cmV0dXJuIHRoaXMucmVtb3ZlKGEsdHJ1ZSl9LGRvbU1hbmlwOmZ1bmN0aW9uKGEsYixk
KXtmdW5jdGlvbiBmKHUpe3JldHVybiBjLm5vZGVOYW1lKHUsInRhYmxlIik/dS5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGJvZHkiKVswXXx8Cit1LmFwcGVuZENoaWxkKHUub3duZXJEb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJ0Ym9keSIpKTp1fXZhciBlLGosaT1hWzBdLG89W10saztpZighYy5zdXBw
b3J0LmNoZWNrQ2xvbmUmJmFyZ3VtZW50cy5sZW5ndGg9PT0zJiZ0eXBlb2YgaT09PSJzdHJpbmci
JiZ1YS50ZXN0KGkpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtjKHRoaXMpLmRvbU1hbmlw
KGEsYixkLHRydWUpfSk7aWYoYy5pc0Z1bmN0aW9uKGkpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rp
b24odSl7dmFyIHo9Yyh0aGlzKTthWzBdPWkuY2FsbCh0aGlzLHUsYj96Lmh0bWwoKTp3KTt6LmRv
bU1hbmlwKGEsYixkKX0pO2lmKHRoaXNbMF0pe2U9aSYmaS5wYXJlbnROb2RlO2U9Yy5zdXBwb3J0
LnBhcmVudE5vZGUmJmUmJmUubm9kZVR5cGU9PT0xMSYmZS5jaGlsZE5vZGVzLmxlbmd0aD09PXRo
aXMubGVuZ3RoP3tmcmFnbWVudDplfTpzYShhLHRoaXMsbyk7az1lLmZyYWdtZW50O2lmKGo9ay5j
aGlsZE5vZGVzLmxlbmd0aD09PQorMT8oaz1rLmZpcnN0Q2hpbGQpOmsuZmlyc3RDaGlsZCl7Yj1i
JiZjLm5vZGVOYW1lKGosInRyIik7Zm9yKHZhciBuPTAscj10aGlzLmxlbmd0aDtuPHI7bisrKWQu
Y2FsbChiP2YodGhpc1tuXSxqKTp0aGlzW25dLG4+MHx8ZS5jYWNoZWFibGV8fHRoaXMubGVuZ3Ro
PjE/ay5jbG9uZU5vZGUodHJ1ZSk6ayl9by5sZW5ndGgmJmMuZWFjaChvLFFhKX1yZXR1cm4gdGhp
c319KTtjLmZyYWdtZW50cz17fTtjLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoi
cHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFj
ZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihhLGIpe2MuZm5bYV09ZnVuY3Rpb24oZCl7dmFy
IGY9W107ZD1jKGQpO3ZhciBlPXRoaXMubGVuZ3RoPT09MSYmdGhpc1swXS5wYXJlbnROb2RlO2lm
KGUmJmUubm9kZVR5cGU9PT0xMSYmZS5jaGlsZE5vZGVzLmxlbmd0aD09PTEmJmQubGVuZ3RoPT09
MSl7ZFtiXSh0aGlzWzBdKTsKK3JldHVybiB0aGlzfWVsc2V7ZT0wO2Zvcih2YXIgaj1kLmxlbmd0
aDtlPGo7ZSsrKXt2YXIgaT0oZT4wP3RoaXMuY2xvbmUodHJ1ZSk6dGhpcykuZ2V0KCk7Yy5mblti
XS5hcHBseShjKGRbZV0pLGkpO2Y9Zi5jb25jYXQoaSl9cmV0dXJuIHRoaXMucHVzaFN0YWNrKGYs
YSxkLnNlbGVjdG9yKX19fSk7Yy5leHRlbmQoe2NsZWFuOmZ1bmN0aW9uKGEsYixkLGYpe2I9Ynx8
cztpZih0eXBlb2YgYi5jcmVhdGVFbGVtZW50PT09InVuZGVmaW5lZCIpYj1iLm93bmVyRG9jdW1l
bnR8fGJbMF0mJmJbMF0ub3duZXJEb2N1bWVudHx8cztmb3IodmFyIGU9W10saj0wLGk7KGk9YVtq
XSkhPW51bGw7aisrKXtpZih0eXBlb2YgaT09PSJudW1iZXIiKWkrPSIiO2lmKGkpe2lmKHR5cGVv
ZiBpPT09InN0cmluZyImJiFqYi50ZXN0KGkpKWk9Yi5jcmVhdGVUZXh0Tm9kZShpKTtlbHNlIGlm
KHR5cGVvZiBpPT09InN0cmluZyIpe2k9aS5yZXBsYWNlKEthLE1hKTt2YXIgbz0oTGEuZXhlYyhp
KXx8WyIiLAorIiJdKVsxXS50b0xvd2VyQ2FzZSgpLGs9RltvXXx8Ri5fZGVmYXVsdCxuPWtbMF0s
cj1iLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2ZvcihyLmlubmVySFRNTD1rWzFdK2kra1syXTtuLS07
KXI9ci5sYXN0Q2hpbGQ7aWYoIWMuc3VwcG9ydC50Ym9keSl7bj1pYi50ZXN0KGkpO289bz09PSJ0
YWJsZSImJiFuP3IuZmlyc3RDaGlsZCYmci5maXJzdENoaWxkLmNoaWxkTm9kZXM6a1sxXT09PSI8
dGFibGU+IiYmIW4/ci5jaGlsZE5vZGVzOltdO2ZvcihrPW8ubGVuZ3RoLTE7az49MDstLWspYy5u
b2RlTmFtZShvW2tdLCJ0Ym9keSIpJiYhb1trXS5jaGlsZE5vZGVzLmxlbmd0aCYmb1trXS5wYXJl
bnROb2RlLnJlbW92ZUNoaWxkKG9ba10pfSFjLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UmJlYu
dGVzdChpKSYmci5pbnNlcnRCZWZvcmUoYi5jcmVhdGVUZXh0Tm9kZShWLmV4ZWMoaSlbMF0pLHIu
Zmlyc3RDaGlsZCk7aT1yLmNoaWxkTm9kZXN9aWYoaS5ub2RlVHlwZSllLnB1c2goaSk7ZWxzZSBl
PQorYy5tZXJnZShlLGkpfX1pZihkKWZvcihqPTA7ZVtqXTtqKyspaWYoZiYmYy5ub2RlTmFtZShl
W2pdLCJzY3JpcHQiKSYmKCFlW2pdLnR5cGV8fGVbal0udHlwZS50b0xvd2VyQ2FzZSgpPT09InRl
eHQvamF2YXNjcmlwdCIpKWYucHVzaChlW2pdLnBhcmVudE5vZGU/ZVtqXS5wYXJlbnROb2RlLnJl
bW92ZUNoaWxkKGVbal0pOmVbal0pO2Vsc2V7ZVtqXS5ub2RlVHlwZT09PTEmJmUuc3BsaWNlLmFw
cGx5KGUsW2orMSwwXS5jb25jYXQoYy5tYWtlQXJyYXkoZVtqXS5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgic2NyaXB0IikpKSk7ZC5hcHBlbmRDaGlsZChlW2pdKX1yZXR1cm4gZX0sY2xlYW5EYXRhOmZ1
bmN0aW9uKGEpe2Zvcih2YXIgYixkLGY9Yy5jYWNoZSxlPWMuZXZlbnQuc3BlY2lhbCxqPWMuc3Vw
cG9ydC5kZWxldGVFeHBhbmRvLGk9MCxvOyhvPWFbaV0pIT1udWxsO2krKylpZihkPW9bYy5leHBh
bmRvXSl7Yj1mW2RdO2lmKGIuZXZlbnRzKWZvcih2YXIgayBpbiBiLmV2ZW50cyllW2tdPworYy5l
dmVudC5yZW1vdmUobyxrKTpDYShvLGssYi5oYW5kbGUpO2lmKGopZGVsZXRlIG9bYy5leHBhbmRv
XTtlbHNlIG8ucmVtb3ZlQXR0cmlidXRlJiZvLnJlbW92ZUF0dHJpYnV0ZShjLmV4cGFuZG8pO2Rl
bGV0ZSBmW2RdfX19KTt2YXIga2I9L3otP2luZGV4fGZvbnQtP3dlaWdodHxvcGFjaXR5fHpvb218
bGluZS0/aGVpZ2h0L2ksTmE9L2FscGhhXChbXildKlwpLyxPYT0vb3BhY2l0eT0oW14pXSopLyxo
YT0vZmxvYXQvaSxpYT0vLShbYS16XSkvaWcsbGI9LyhbQS1aXSkvZyxtYj0vXi0/XGQrKD86cHgp
PyQvaSxuYj0vXi0/XGQvLG9iPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRl
biIsZGlzcGxheToiYmxvY2sifSxwYj1bIkxlZnQiLCJSaWdodCJdLHFiPVsiVG9wIiwiQm90dG9t
Il0scmI9cy5kZWZhdWx0VmlldyYmcy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlLFBhPWMu
c3VwcG9ydC5jc3NGbG9hdD8iY3NzRmxvYXQiOiJzdHlsZUZsb2F0IixqYT0KK2Z1bmN0aW9uKGEs
Yil7cmV0dXJuIGIudG9VcHBlckNhc2UoKX07Yy5mbi5jc3M9ZnVuY3Rpb24oYSxiKXtyZXR1cm4g
WCh0aGlzLGEsYix0cnVlLGZ1bmN0aW9uKGQsZixlKXtpZihlPT09dylyZXR1cm4gYy5jdXJDU1Mo
ZCxmKTtpZih0eXBlb2YgZT09PSJudW1iZXIiJiYha2IudGVzdChmKSllKz0icHgiO2Muc3R5bGUo
ZCxmLGUpfSl9O2MuZXh0ZW5kKHtzdHlsZTpmdW5jdGlvbihhLGIsZCl7aWYoIWF8fGEubm9kZVR5
cGU9PT0zfHxhLm5vZGVUeXBlPT09OClyZXR1cm4gdztpZigoYj09PSJ3aWR0aCJ8fGI9PT0iaGVp
Z2h0IikmJnBhcnNlRmxvYXQoZCk8MClkPXc7dmFyIGY9YS5zdHlsZXx8YSxlPWQhPT13O2lmKCFj
LnN1cHBvcnQub3BhY2l0eSYmYj09PSJvcGFjaXR5Iil7aWYoZSl7Zi56b29tPTE7Yj1wYXJzZUlu
dChkLDEwKSsiIj09PSJOYU4iPyIiOiJhbHBoYShvcGFjaXR5PSIrZCoxMDArIikiO2E9Zi5maWx0
ZXJ8fGMuY3VyQ1NTKGEsImZpbHRlciIpfHwiIjtmLmZpbHRlcj0KK05hLnRlc3QoYSk/YS5yZXBs
YWNlKE5hLGIpOmJ9cmV0dXJuIGYuZmlsdGVyJiZmLmZpbHRlci5pbmRleE9mKCJvcGFjaXR5PSIp
Pj0wP3BhcnNlRmxvYXQoT2EuZXhlYyhmLmZpbHRlcilbMV0pLzEwMCsiIjoiIn1pZihoYS50ZXN0
KGIpKWI9UGE7Yj1iLnJlcGxhY2UoaWEsamEpO2lmKGUpZltiXT1kO3JldHVybiBmW2JdfSxjc3M6
ZnVuY3Rpb24oYSxiLGQsZil7aWYoYj09PSJ3aWR0aCJ8fGI9PT0iaGVpZ2h0Iil7dmFyIGUsaj1i
PT09IndpZHRoIj9wYjpxYjtmdW5jdGlvbiBpKCl7ZT1iPT09IndpZHRoIj9hLm9mZnNldFdpZHRo
OmEub2Zmc2V0SGVpZ2h0O2YhPT0iYm9yZGVyIiYmYy5lYWNoKGosZnVuY3Rpb24oKXtmfHwoZS09
cGFyc2VGbG9hdChjLmN1ckNTUyhhLCJwYWRkaW5nIit0aGlzLHRydWUpKXx8MCk7aWYoZj09PSJt
YXJnaW4iKWUrPXBhcnNlRmxvYXQoYy5jdXJDU1MoYSwibWFyZ2luIit0aGlzLHRydWUpKXx8MDtl
bHNlIGUtPXBhcnNlRmxvYXQoYy5jdXJDU1MoYSwKKyJib3JkZXIiK3RoaXMrIldpZHRoIix0cnVl
KSl8fDB9KX1hLm9mZnNldFdpZHRoIT09MD9pKCk6Yy5zd2FwKGEsb2IsaSk7cmV0dXJuIE1hdGgu
bWF4KDAsTWF0aC5yb3VuZChlKSl9cmV0dXJuIGMuY3VyQ1NTKGEsYixkKX0sY3VyQ1NTOmZ1bmN0
aW9uKGEsYixkKXt2YXIgZixlPWEuc3R5bGU7aWYoIWMuc3VwcG9ydC5vcGFjaXR5JiZiPT09Im9w
YWNpdHkiJiZhLmN1cnJlbnRTdHlsZSl7Zj1PYS50ZXN0KGEuY3VycmVudFN0eWxlLmZpbHRlcnx8
IiIpP3BhcnNlRmxvYXQoUmVnRXhwLiQxKS8xMDArIiI6IiI7cmV0dXJuIGY9PT0iIj8iMSI6Zn1p
ZihoYS50ZXN0KGIpKWI9UGE7aWYoIWQmJmUmJmVbYl0pZj1lW2JdO2Vsc2UgaWYocmIpe2lmKGhh
LnRlc3QoYikpYj0iZmxvYXQiO2I9Yi5yZXBsYWNlKGxiLCItJDEiKS50b0xvd2VyQ2FzZSgpO2U9
YS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O2lmKCFlKXJldHVybiBudWxsO2lmKGE9ZS5nZXRD
b21wdXRlZFN0eWxlKGEsbnVsbCkpZj0KK2EuZ2V0UHJvcGVydHlWYWx1ZShiKTtpZihiPT09Im9w
YWNpdHkiJiZmPT09IiIpZj0iMSJ9ZWxzZSBpZihhLmN1cnJlbnRTdHlsZSl7ZD1iLnJlcGxhY2Uo
aWEsamEpO2Y9YS5jdXJyZW50U3R5bGVbYl18fGEuY3VycmVudFN0eWxlW2RdO2lmKCFtYi50ZXN0
KGYpJiZuYi50ZXN0KGYpKXtiPWUubGVmdDt2YXIgaj1hLnJ1bnRpbWVTdHlsZS5sZWZ0O2EucnVu
dGltZVN0eWxlLmxlZnQ9YS5jdXJyZW50U3R5bGUubGVmdDtlLmxlZnQ9ZD09PSJmb250U2l6ZSI/
IjFlbSI6Znx8MDtmPWUucGl4ZWxMZWZ0KyJweCI7ZS5sZWZ0PWI7YS5ydW50aW1lU3R5bGUubGVm
dD1qfX1yZXR1cm4gZn0sc3dhcDpmdW5jdGlvbihhLGIsZCl7dmFyIGY9e307Zm9yKHZhciBlIGlu
IGIpe2ZbZV09YS5zdHlsZVtlXTthLnN0eWxlW2VdPWJbZV19ZC5jYWxsKGEpO2ZvcihlIGluIGIp
YS5zdHlsZVtlXT1mW2VdfX0pO2lmKGMuZXhwciYmYy5leHByLmZpbHRlcnMpe2MuZXhwci5maWx0
ZXJzLmhpZGRlbj1mdW5jdGlvbihhKXt2YXIgYj0KK2Eub2Zmc2V0V2lkdGgsZD1hLm9mZnNldEhl
aWdodCxmPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJ0ciI7cmV0dXJuIGI9PT0wJiZkPT09
MCYmIWY/dHJ1ZTpiPjAmJmQ+MCYmIWY/ZmFsc2U6Yy5jdXJDU1MoYSwiZGlzcGxheSIpPT09Im5v
bmUifTtjLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFjLmV4cHIuZmls
dGVycy5oaWRkZW4oYSl9fXZhciBzYj1KKCksdGI9LzxzY3JpcHQoLnxccykqP1wvc2NyaXB0Pi9n
aSx1Yj0vc2VsZWN0fHRleHRhcmVhL2ksdmI9L2NvbG9yfGRhdGV8ZGF0ZXRpbWV8ZW1haWx8aGlk
ZGVufG1vbnRofG51bWJlcnxwYXNzd29yZHxyYW5nZXxzZWFyY2h8dGVsfHRleHR8dGltZXx1cmx8
d2Vlay9pLE49Lz1cPygmfCQpLyxrYT0vXD8vLHdiPS8oXD98JilfPS4qPygmfCQpLyx4Yj0vXihc
dys6KT9cL1wvKFteXC8/I10rKS8seWI9LyUyMC9nLHpiPWMuZm4ubG9hZDtjLmZuLmV4dGVuZCh7
bG9hZDpmdW5jdGlvbihhLGIsZCl7aWYodHlwZW9mIGEhPT0KKyJzdHJpbmciKXJldHVybiB6Yi5j
YWxsKHRoaXMsYSk7ZWxzZSBpZighdGhpcy5sZW5ndGgpcmV0dXJuIHRoaXM7dmFyIGY9YS5pbmRl
eE9mKCIgIik7aWYoZj49MCl7dmFyIGU9YS5zbGljZShmLGEubGVuZ3RoKTthPWEuc2xpY2UoMCxm
KX1mPSJHRVQiO2lmKGIpaWYoYy5pc0Z1bmN0aW9uKGIpKXtkPWI7Yj1udWxsfWVsc2UgaWYodHlw
ZW9mIGI9PT0ib2JqZWN0Iil7Yj1jLnBhcmFtKGIsYy5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwp
O2Y9IlBPU1QifXZhciBqPXRoaXM7Yy5hamF4KHt1cmw6YSx0eXBlOmYsZGF0YVR5cGU6Imh0bWwi
LGRhdGE6Yixjb21wbGV0ZTpmdW5jdGlvbihpLG8pe2lmKG89PT0ic3VjY2VzcyJ8fG89PT0ibm90
bW9kaWZpZWQiKWouaHRtbChlP2MoIjxkaXYgLz4iKS5hcHBlbmQoaS5yZXNwb25zZVRleHQucmVw
bGFjZSh0YiwiIikpLmZpbmQoZSk6aS5yZXNwb25zZVRleHQpO2QmJmouZWFjaChkLFtpLnJlc3Bv
bnNlVGV4dCxvLGldKX19KTtyZXR1cm4gdGhpc30sCitzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1
cm4gYy5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlv
bigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnRzP2MubWFr
ZUFycmF5KHRoaXMuZWxlbWVudHMpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5uYW1lJiYhdGhpcy5kaXNhYmxlZCYmKHRoaXMuY2hlY2tlZHx8dWIudGVzdCh0aGlzLm5vZGVO
YW1lKXx8dmIudGVzdCh0aGlzLnR5cGUpKX0pLm1hcChmdW5jdGlvbihhLGIpe2E9Yyh0aGlzKS52
YWwoKTtyZXR1cm4gYT09bnVsbD9udWxsOmMuaXNBcnJheShhKT9jLm1hcChhLGZ1bmN0aW9uKGQp
e3JldHVybntuYW1lOmIubmFtZSx2YWx1ZTpkfX0pOntuYW1lOmIubmFtZSx2YWx1ZTphfX0pLmdl
dCgpfX0pO2MuZWFjaCgiYWpheFN0YXJ0IGFqYXhTdG9wIGFqYXhDb21wbGV0ZSBhamF4RXJyb3Ig
YWpheFN1Y2Nlc3MgYWpheFNlbmQiLnNwbGl0KCIgIiksCitmdW5jdGlvbihhLGIpe2MuZm5bYl09
ZnVuY3Rpb24oZCl7cmV0dXJuIHRoaXMuYmluZChiLGQpfX0pO2MuZXh0ZW5kKHtnZXQ6ZnVuY3Rp
b24oYSxiLGQsZil7aWYoYy5pc0Z1bmN0aW9uKGIpKXtmPWZ8fGQ7ZD1iO2I9bnVsbH1yZXR1cm4g
Yy5hamF4KHt0eXBlOiJHRVQiLHVybDphLGRhdGE6YixzdWNjZXNzOmQsZGF0YVR5cGU6Zn0pfSxn
ZXRTY3JpcHQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYy5nZXQoYSxudWxsLGIsInNjcmlwdCIpfSxn
ZXRKU09OOmZ1bmN0aW9uKGEsYixkKXtyZXR1cm4gYy5nZXQoYSxiLGQsImpzb24iKX0scG9zdDpm
dW5jdGlvbihhLGIsZCxmKXtpZihjLmlzRnVuY3Rpb24oYikpe2Y9Znx8ZDtkPWI7Yj17fX1yZXR1
cm4gYy5hamF4KHt0eXBlOiJQT1NUIix1cmw6YSxkYXRhOmIsc3VjY2VzczpkLGRhdGFUeXBlOmZ9
KX0sYWpheFNldHVwOmZ1bmN0aW9uKGEpe2MuZXh0ZW5kKGMuYWpheFNldHRpbmdzLGEpfSxhamF4
U2V0dGluZ3M6e3VybDpsb2NhdGlvbi5ocmVmLAorZ2xvYmFsOnRydWUsdHlwZToiR0VUIixjb250
ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIixwcm9jZXNzRGF0YTp0
cnVlLGFzeW5jOnRydWUseGhyOkEuWE1MSHR0cFJlcXVlc3QmJihBLmxvY2F0aW9uLnByb3RvY29s
IT09ImZpbGU6Inx8IUEuQWN0aXZlWE9iamVjdCk/ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEEuWE1M
SHR0cFJlcXVlc3R9OmZ1bmN0aW9uKCl7dHJ5e3JldHVybiBuZXcgQS5BY3RpdmVYT2JqZWN0KCJN
aWNyb3NvZnQuWE1MSFRUUCIpfWNhdGNoKGEpe319LGFjY2VwdHM6e3htbDoiYXBwbGljYXRpb24v
eG1sLCB0ZXh0L3htbCIsaHRtbDoidGV4dC9odG1sIixzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwg
YXBwbGljYXRpb24vamF2YXNjcmlwdCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZh
c2NyaXB0Iix0ZXh0OiJ0ZXh0L3BsYWluIixfZGVmYXVsdDoiKi8qIn19LGxhc3RNb2RpZmllZDp7
fSxldGFnOnt9LGFqYXg6ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe2Uuc3VjY2VzcyYmCitlLnN1
Y2Nlc3MuY2FsbChrLG8saSx4KTtlLmdsb2JhbCYmZigiYWpheFN1Y2Nlc3MiLFt4LGVdKX1mdW5j
dGlvbiBkKCl7ZS5jb21wbGV0ZSYmZS5jb21wbGV0ZS5jYWxsKGsseCxpKTtlLmdsb2JhbCYmZigi
YWpheENvbXBsZXRlIixbeCxlXSk7ZS5nbG9iYWwmJiEtLWMuYWN0aXZlJiZjLmV2ZW50LnRyaWdn
ZXIoImFqYXhTdG9wIil9ZnVuY3Rpb24gZihxLHApeyhlLmNvbnRleHQ/YyhlLmNvbnRleHQpOmMu
ZXZlbnQpLnRyaWdnZXIocSxwKX12YXIgZT1jLmV4dGVuZCh0cnVlLHt9LGMuYWpheFNldHRpbmdz
LGEpLGosaSxvLGs9YSYmYS5jb250ZXh0fHxlLG49ZS50eXBlLnRvVXBwZXJDYXNlKCk7aWYoZS5k
YXRhJiZlLnByb2Nlc3NEYXRhJiZ0eXBlb2YgZS5kYXRhIT09InN0cmluZyIpZS5kYXRhPWMucGFy
YW0oZS5kYXRhLGUudHJhZGl0aW9uYWwpO2lmKGUuZGF0YVR5cGU9PT0ianNvbnAiKXtpZihuPT09
IkdFVCIpTi50ZXN0KGUudXJsKXx8KGUudXJsKz0oa2EudGVzdChlLnVybCk/CisiJiI6Ij8iKSso
ZS5qc29ucHx8ImNhbGxiYWNrIikrIj0/Iik7ZWxzZSBpZighZS5kYXRhfHwhTi50ZXN0KGUuZGF0
YSkpZS5kYXRhPShlLmRhdGE/ZS5kYXRhKyImIjoiIikrKGUuanNvbnB8fCJjYWxsYmFjayIpKyI9
PyI7ZS5kYXRhVHlwZT0ianNvbiJ9aWYoZS5kYXRhVHlwZT09PSJqc29uIiYmKGUuZGF0YSYmTi50
ZXN0KGUuZGF0YSl8fE4udGVzdChlLnVybCkpKXtqPWUuanNvbnBDYWxsYmFja3x8Impzb25wIitz
YisrO2lmKGUuZGF0YSllLmRhdGE9KGUuZGF0YSsiIikucmVwbGFjZShOLCI9IitqKyIkMSIpO2Uu
dXJsPWUudXJsLnJlcGxhY2UoTiwiPSIraisiJDEiKTtlLmRhdGFUeXBlPSJzY3JpcHQiO0Fbal09
QVtqXXx8ZnVuY3Rpb24ocSl7bz1xO2IoKTtkKCk7QVtqXT13O3RyeXtkZWxldGUgQVtqXX1jYXRj
aChwKXt9eiYmei5yZW1vdmVDaGlsZChDKX19aWYoZS5kYXRhVHlwZT09PSJzY3JpcHQiJiZlLmNh
Y2hlPT09bnVsbCllLmNhY2hlPWZhbHNlO2lmKGUuY2FjaGU9PT0KK2ZhbHNlJiZuPT09IkdFVCIp
e3ZhciByPUooKSx1PWUudXJsLnJlcGxhY2Uod2IsIiQxXz0iK3IrIiQyIik7ZS51cmw9dSsodT09
PWUudXJsPyhrYS50ZXN0KGUudXJsKT8iJiI6Ij8iKSsiXz0iK3I6IiIpfWlmKGUuZGF0YSYmbj09
PSJHRVQiKWUudXJsKz0oa2EudGVzdChlLnVybCk/IiYiOiI/IikrZS5kYXRhO2UuZ2xvYmFsJiYh
Yy5hY3RpdmUrKyYmYy5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKTtyPShyPXhiLmV4ZWMoZS51
cmwpKSYmKHJbMV0mJnJbMV0hPT1sb2NhdGlvbi5wcm90b2NvbHx8clsyXSE9PWxvY2F0aW9uLmhv
c3QpO2lmKGUuZGF0YVR5cGU9PT0ic2NyaXB0IiYmbj09PSJHRVQiJiZyKXt2YXIgej1zLmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fHMuZG9jdW1lbnRFbGVtZW50LEM9cy5jcmVhdGVF
bGVtZW50KCJzY3JpcHQiKTtDLnNyYz1lLnVybDtpZihlLnNjcmlwdENoYXJzZXQpQy5jaGFyc2V0
PWUuc2NyaXB0Q2hhcnNldDtpZighail7dmFyIEI9CitmYWxzZTtDLm9ubG9hZD1DLm9ucmVhZHlz
dGF0ZWNoYW5nZT1mdW5jdGlvbigpe2lmKCFCJiYoIXRoaXMucmVhZHlTdGF0ZXx8dGhpcy5yZWFk
eVN0YXRlPT09ImxvYWRlZCJ8fHRoaXMucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpKXtCPXRydWU7
YigpO2QoKTtDLm9ubG9hZD1DLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsO3omJkMucGFyZW50Tm9k
ZSYmei5yZW1vdmVDaGlsZChDKX19fXouaW5zZXJ0QmVmb3JlKEMsei5maXJzdENoaWxkKTtyZXR1
cm4gd312YXIgRT1mYWxzZSx4PWUueGhyKCk7aWYoeCl7ZS51c2VybmFtZT94Lm9wZW4obixlLnVy
bCxlLmFzeW5jLGUudXNlcm5hbWUsZS5wYXNzd29yZCk6eC5vcGVuKG4sZS51cmwsZS5hc3luYyk7
dHJ5e2lmKGUuZGF0YXx8YSYmYS5jb250ZW50VHlwZSl4LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRl
bnQtVHlwZSIsZS5jb250ZW50VHlwZSk7aWYoZS5pZk1vZGlmaWVkKXtjLmxhc3RNb2RpZmllZFtl
LnVybF0mJnguc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLAorYy5sYXN0TW9k
aWZpZWRbZS51cmxdKTtjLmV0YWdbZS51cmxdJiZ4LnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUt
TWF0Y2giLGMuZXRhZ1tlLnVybF0pfXJ8fHguc2V0UmVxdWVzdEhlYWRlcigiWC1SZXF1ZXN0ZWQt
V2l0aCIsIlhNTEh0dHBSZXF1ZXN0Iik7eC5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLGUuZGF0
YVR5cGUmJmUuYWNjZXB0c1tlLmRhdGFUeXBlXT9lLmFjY2VwdHNbZS5kYXRhVHlwZV0rIiwgKi8q
IjplLmFjY2VwdHMuX2RlZmF1bHQpfWNhdGNoKGdhKXt9aWYoZS5iZWZvcmVTZW5kJiZlLmJlZm9y
ZVNlbmQuY2FsbChrLHgsZSk9PT1mYWxzZSl7ZS5nbG9iYWwmJiEtLWMuYWN0aXZlJiZjLmV2ZW50
LnRyaWdnZXIoImFqYXhTdG9wIik7eC5hYm9ydCgpO3JldHVybiBmYWxzZX1lLmdsb2JhbCYmZigi
YWpheFNlbmQiLFt4LGVdKTt2YXIgZz14Lm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbihxKXtp
ZigheHx8eC5yZWFkeVN0YXRlPT09MHx8cT09PSJhYm9ydCIpe0V8fAorZCgpO0U9dHJ1ZTtpZih4
KXgub25yZWFkeXN0YXRlY2hhbmdlPWMubm9vcH1lbHNlIGlmKCFFJiZ4JiYoeC5yZWFkeVN0YXRl
PT09NHx8cT09PSJ0aW1lb3V0Iikpe0U9dHJ1ZTt4Lm9ucmVhZHlzdGF0ZWNoYW5nZT1jLm5vb3A7
aT1xPT09InRpbWVvdXQiPyJ0aW1lb3V0IjohYy5odHRwU3VjY2Vzcyh4KT8iZXJyb3IiOmUuaWZN
b2RpZmllZCYmYy5odHRwTm90TW9kaWZpZWQoeCxlLnVybCk/Im5vdG1vZGlmaWVkIjoic3VjY2Vz
cyI7dmFyIHA7aWYoaT09PSJzdWNjZXNzIil0cnl7bz1jLmh0dHBEYXRhKHgsZS5kYXRhVHlwZSxl
KX1jYXRjaCh2KXtpPSJwYXJzZXJlcnJvciI7cD12fWlmKGk9PT0ic3VjY2VzcyJ8fGk9PT0ibm90
bW9kaWZpZWQiKWp8fGIoKTtlbHNlIGMuaGFuZGxlRXJyb3IoZSx4LGkscCk7ZCgpO3E9PT0idGlt
ZW91dCImJnguYWJvcnQoKTtpZihlLmFzeW5jKXg9bnVsbH19O3RyeXt2YXIgaD14LmFib3J0O3gu
YWJvcnQ9ZnVuY3Rpb24oKXt4JiZoLmNhbGwoeCk7CitnKCJhYm9ydCIpfX1jYXRjaChsKXt9ZS5h
c3luYyYmZS50aW1lb3V0PjAmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXt4JiYhRSYmZygidGltZW91
dCIpfSxlLnRpbWVvdXQpO3RyeXt4LnNlbmQobj09PSJQT1NUInx8bj09PSJQVVQifHxuPT09IkRF
TEVURSI/ZS5kYXRhOm51bGwpfWNhdGNoKG0pe2MuaGFuZGxlRXJyb3IoZSx4LG51bGwsbSk7ZCgp
fWUuYXN5bmN8fGcoKTtyZXR1cm4geH19LGhhbmRsZUVycm9yOmZ1bmN0aW9uKGEsYixkLGYpe2lm
KGEuZXJyb3IpYS5lcnJvci5jYWxsKGEuY29udGV4dHx8YSxiLGQsZik7aWYoYS5nbG9iYWwpKGEu
Y29udGV4dD9jKGEuY29udGV4dCk6Yy5ldmVudCkudHJpZ2dlcigiYWpheEVycm9yIixbYixhLGZd
KX0sYWN0aXZlOjAsaHR0cFN1Y2Nlc3M6ZnVuY3Rpb24oYSl7dHJ5e3JldHVybiFhLnN0YXR1cyYm
bG9jYXRpb24ucHJvdG9jb2w9PT0iZmlsZToifHxhLnN0YXR1cz49MjAwJiZhLnN0YXR1czwzMDB8
fGEuc3RhdHVzPT09MzA0fHxhLnN0YXR1cz09PQorMTIyM3x8YS5zdGF0dXM9PT0wfWNhdGNoKGIp
e31yZXR1cm4gZmFsc2V9LGh0dHBOb3RNb2RpZmllZDpmdW5jdGlvbihhLGIpe3ZhciBkPWEuZ2V0
UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSxmPWEuZ2V0UmVzcG9uc2VIZWFkZXIoIkV0
YWciKTtpZihkKWMubGFzdE1vZGlmaWVkW2JdPWQ7aWYoZiljLmV0YWdbYl09ZjtyZXR1cm4gYS5z
dGF0dXM9PT0zMDR8fGEuc3RhdHVzPT09MH0saHR0cERhdGE6ZnVuY3Rpb24oYSxiLGQpe3ZhciBm
PWEuZ2V0UmVzcG9uc2VIZWFkZXIoImNvbnRlbnQtdHlwZSIpfHwiIixlPWI9PT0ieG1sInx8IWIm
JmYuaW5kZXhPZigieG1sIik+PTA7YT1lP2EucmVzcG9uc2VYTUw6YS5yZXNwb25zZVRleHQ7ZSYm
YS5kb2N1bWVudEVsZW1lbnQubm9kZU5hbWU9PT0icGFyc2VyZXJyb3IiJiZjLmVycm9yKCJwYXJz
ZXJlcnJvciIpO2lmKGQmJmQuZGF0YUZpbHRlcilhPWQuZGF0YUZpbHRlcihhLGIpO2lmKHR5cGVv
ZiBhPT09InN0cmluZyIpaWYoYj09PQorImpzb24ifHwhYiYmZi5pbmRleE9mKCJqc29uIik+PTAp
YT1jLnBhcnNlSlNPTihhKTtlbHNlIGlmKGI9PT0ic2NyaXB0Inx8IWImJmYuaW5kZXhPZigiamF2
YXNjcmlwdCIpPj0wKWMuZ2xvYmFsRXZhbChhKTtyZXR1cm4gYX0scGFyYW06ZnVuY3Rpb24oYSxi
KXtmdW5jdGlvbiBkKGksbyl7aWYoYy5pc0FycmF5KG8pKWMuZWFjaChvLGZ1bmN0aW9uKGssbil7
Ynx8L1xbXF0kLy50ZXN0KGkpP2YoaSxuKTpkKGkrIlsiKyh0eXBlb2Ygbj09PSJvYmplY3QifHxj
LmlzQXJyYXkobik/azoiIikrIl0iLG4pfSk7ZWxzZSFiJiZvIT1udWxsJiZ0eXBlb2Ygbz09PSJv
YmplY3QiP2MuZWFjaChvLGZ1bmN0aW9uKGssbil7ZChpKyJbIitrKyJdIixuKX0pOmYoaSxvKX1m
dW5jdGlvbiBmKGksbyl7bz1jLmlzRnVuY3Rpb24obyk/bygpOm87ZVtlLmxlbmd0aF09ZW5jb2Rl
VVJJQ29tcG9uZW50KGkpKyI9IitlbmNvZGVVUklDb21wb25lbnQobyl9dmFyIGU9W107aWYoYj09
PXcpYj1jLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbDsKK2lmKGMuaXNBcnJheShhKXx8YS5qcXVl
cnkpYy5lYWNoKGEsZnVuY3Rpb24oKXtmKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9y
KHZhciBqIGluIGEpZChqLGFbal0pO3JldHVybiBlLmpvaW4oIiYiKS5yZXBsYWNlKHliLCIrIil9
fSk7dmFyIGxhPXt9LEFiPS90b2dnbGV8c2hvd3xoaWRlLyxCYj0vXihbKy1dPSk/KFtcZCstLl0r
KSguKikkLyxXLHZhPVtbImhlaWdodCIsIm1hcmdpblRvcCIsIm1hcmdpbkJvdHRvbSIsInBhZGRp
bmdUb3AiLCJwYWRkaW5nQm90dG9tIl0sWyJ3aWR0aCIsIm1hcmdpbkxlZnQiLCJtYXJnaW5SaWdo
dCIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0Il0sWyJvcGFjaXR5Il1dO2MuZm4uZXh0ZW5k
KHtzaG93OmZ1bmN0aW9uKGEsYil7aWYoYXx8YT09PTApcmV0dXJuIHRoaXMuYW5pbWF0ZShLKCJz
aG93IiwzKSxhLGIpO2Vsc2V7YT0wO2ZvcihiPXRoaXMubGVuZ3RoO2E8YjthKyspe3ZhciBkPWMu
ZGF0YSh0aGlzW2FdLCJvbGRkaXNwbGF5Iik7Cit0aGlzW2FdLnN0eWxlLmRpc3BsYXk9ZHx8IiI7
aWYoYy5jc3ModGhpc1thXSwiZGlzcGxheSIpPT09Im5vbmUiKXtkPXRoaXNbYV0ubm9kZU5hbWU7
dmFyIGY7aWYobGFbZF0pZj1sYVtkXTtlbHNle3ZhciBlPWMoIjwiK2QrIiAvPiIpLmFwcGVuZFRv
KCJib2R5Iik7Zj1lLmNzcygiZGlzcGxheSIpO2lmKGY9PT0ibm9uZSIpZj0iYmxvY2siO2UucmVt
b3ZlKCk7bGFbZF09Zn1jLmRhdGEodGhpc1thXSwib2xkZGlzcGxheSIsZil9fWE9MDtmb3IoYj10
aGlzLmxlbmd0aDthPGI7YSsrKXRoaXNbYV0uc3R5bGUuZGlzcGxheT1jLmRhdGEodGhpc1thXSwi
b2xkZGlzcGxheSIpfHwiIjtyZXR1cm4gdGhpc319LGhpZGU6ZnVuY3Rpb24oYSxiKXtpZihhfHxh
PT09MClyZXR1cm4gdGhpcy5hbmltYXRlKEsoImhpZGUiLDMpLGEsYik7ZWxzZXthPTA7Zm9yKGI9
dGhpcy5sZW5ndGg7YTxiO2ErKyl7dmFyIGQ9Yy5kYXRhKHRoaXNbYV0sIm9sZGRpc3BsYXkiKTsh
ZCYmZCE9PSJub25lIiYmYy5kYXRhKHRoaXNbYV0sCisib2xkZGlzcGxheSIsYy5jc3ModGhpc1th
XSwiZGlzcGxheSIpKX1hPTA7Zm9yKGI9dGhpcy5sZW5ndGg7YTxiO2ErKyl0aGlzW2FdLnN0eWxl
LmRpc3BsYXk9Im5vbmUiO3JldHVybiB0aGlzfX0sX3RvZ2dsZTpjLmZuLnRvZ2dsZSx0b2dnbGU6
ZnVuY3Rpb24oYSxiKXt2YXIgZD10eXBlb2YgYT09PSJib29sZWFuIjtpZihjLmlzRnVuY3Rpb24o
YSkmJmMuaXNGdW5jdGlvbihiKSl0aGlzLl90b2dnbGUuYXBwbHkodGhpcyxhcmd1bWVudHMpO2Vs
c2UgYT09bnVsbHx8ZD90aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZj1kP2E6Yyh0aGlzKS5pcygi
OmhpZGRlbiIpO2ModGhpcylbZj8ic2hvdyI6ImhpZGUiXSgpfSk6dGhpcy5hbmltYXRlKEsoInRv
Z2dsZSIsMyksYSxiKTtyZXR1cm4gdGhpc30sZmFkZVRvOmZ1bmN0aW9uKGEsYixkKXtyZXR1cm4g
dGhpcy5maWx0ZXIoIjpoaWRkZW4iKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmlt
YXRlKHtvcGFjaXR5OmJ9LGEsZCl9LAorYW5pbWF0ZTpmdW5jdGlvbihhLGIsZCxmKXt2YXIgZT1j
LnNwZWVkKGIsZCxmKTtpZihjLmlzRW1wdHlPYmplY3QoYSkpcmV0dXJuIHRoaXMuZWFjaChlLmNv
bXBsZXRlKTtyZXR1cm4gdGhpc1tlLnF1ZXVlPT09ZmFsc2U/ImVhY2giOiJxdWV1ZSJdKGZ1bmN0
aW9uKCl7dmFyIGo9Yy5leHRlbmQoe30sZSksaSxvPXRoaXMubm9kZVR5cGU9PT0xJiZjKHRoaXMp
LmlzKCI6aGlkZGVuIiksaz10aGlzO2ZvcihpIGluIGEpe3ZhciBuPWkucmVwbGFjZShpYSxqYSk7
aWYoaSE9PW4pe2Fbbl09YVtpXTtkZWxldGUgYVtpXTtpPW59aWYoYVtpXT09PSJoaWRlIiYmb3x8
YVtpXT09PSJzaG93IiYmIW8pcmV0dXJuIGouY29tcGxldGUuY2FsbCh0aGlzKTtpZigoaT09PSJo
ZWlnaHQifHxpPT09IndpZHRoIikmJnRoaXMuc3R5bGUpe2ouZGlzcGxheT1jLmNzcyh0aGlzLCJk
aXNwbGF5Iik7ai5vdmVyZmxvdz10aGlzLnN0eWxlLm92ZXJmbG93fWlmKGMuaXNBcnJheShhW2ld
KSl7KGouc3BlY2lhbEVhc2luZz0KK2ouc3BlY2lhbEVhc2luZ3x8e30pW2ldPWFbaV1bMV07YVtp
XT1hW2ldWzBdfX1pZihqLm92ZXJmbG93IT1udWxsKXRoaXMuc3R5bGUub3ZlcmZsb3c9ImhpZGRl
biI7ai5jdXJBbmltPWMuZXh0ZW5kKHt9LGEpO2MuZWFjaChhLGZ1bmN0aW9uKHIsdSl7dmFyIHo9
bmV3IGMuZngoayxqLHIpO2lmKEFiLnRlc3QodSkpelt1PT09InRvZ2dsZSI/bz8ic2hvdyI6Imhp
ZGUiOnVdKGEpO2Vsc2V7dmFyIEM9QmIuZXhlYyh1KSxCPXouY3VyKHRydWUpfHwwO2lmKEMpe3U9
cGFyc2VGbG9hdChDWzJdKTt2YXIgRT1DWzNdfHwicHgiO2lmKEUhPT0icHgiKXtrLnN0eWxlW3Jd
PSh1fHwxKStFO0I9KHV8fDEpL3ouY3VyKHRydWUpKkI7ay5zdHlsZVtyXT1CK0V9aWYoQ1sxXSl1
PShDWzFdPT09Ii09Ij8tMToxKSp1K0I7ei5jdXN0b20oQix1LEUpfWVsc2Ugei5jdXN0b20oQix1
LCIiKX19KTtyZXR1cm4gdHJ1ZX0pfSxzdG9wOmZ1bmN0aW9uKGEsYil7dmFyIGQ9Yy50aW1lcnM7
YSYmdGhpcy5xdWV1ZShbXSk7Cit0aGlzLmVhY2goZnVuY3Rpb24oKXtmb3IodmFyIGY9ZC5sZW5n
dGgtMTtmPj0wO2YtLSlpZihkW2ZdLmVsZW09PT10aGlzKXtiJiZkW2ZdKHRydWUpO2Quc3BsaWNl
KGYsMSl9fSk7Ynx8dGhpcy5kZXF1ZXVlKCk7cmV0dXJuIHRoaXN9fSk7Yy5lYWNoKHtzbGlkZURv
d246Sygic2hvdyIsMSksc2xpZGVVcDpLKCJoaWRlIiwxKSxzbGlkZVRvZ2dsZTpLKCJ0b2dnbGUi
LDEpLGZhZGVJbjp7b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNpdHk6ImhpZGUifX0sZnVu
Y3Rpb24oYSxiKXtjLmZuW2FdPWZ1bmN0aW9uKGQsZil7cmV0dXJuIHRoaXMuYW5pbWF0ZShiLGQs
Zil9fSk7Yy5leHRlbmQoe3NwZWVkOmZ1bmN0aW9uKGEsYixkKXt2YXIgZj1hJiZ0eXBlb2YgYT09
PSJvYmplY3QiP2E6e2NvbXBsZXRlOmR8fCFkJiZifHxjLmlzRnVuY3Rpb24oYSkmJmEsZHVyYXRp
b246YSxlYXNpbmc6ZCYmYnx8YiYmIWMuaXNGdW5jdGlvbihiKSYmYn07Zi5kdXJhdGlvbj1jLmZ4
Lm9mZj8wOnR5cGVvZiBmLmR1cmF0aW9uPT09CisibnVtYmVyIj9mLmR1cmF0aW9uOmMuZnguc3Bl
ZWRzW2YuZHVyYXRpb25dfHxjLmZ4LnNwZWVkcy5fZGVmYXVsdDtmLm9sZD1mLmNvbXBsZXRlO2Yu
Y29tcGxldGU9ZnVuY3Rpb24oKXtmLnF1ZXVlIT09ZmFsc2UmJmModGhpcykuZGVxdWV1ZSgpO2Mu
aXNGdW5jdGlvbihmLm9sZCkmJmYub2xkLmNhbGwodGhpcyl9O3JldHVybiBmfSxlYXNpbmc6e2xp
bmVhcjpmdW5jdGlvbihhLGIsZCxmKXtyZXR1cm4gZCtmKmF9LHN3aW5nOmZ1bmN0aW9uKGEsYixk
LGYpe3JldHVybigtTWF0aC5jb3MoYSpNYXRoLlBJKS8yKzAuNSkqZitkfX0sdGltZXJzOltdLGZ4
OmZ1bmN0aW9uKGEsYixkKXt0aGlzLm9wdGlvbnM9Yjt0aGlzLmVsZW09YTt0aGlzLnByb3A9ZDtp
ZighYi5vcmlnKWIub3JpZz17fX19KTtjLmZ4LnByb3RvdHlwZT17dXBkYXRlOmZ1bmN0aW9uKCl7
dGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMu
bm93LHRoaXMpOyhjLmZ4LnN0ZXBbdGhpcy5wcm9wXXx8CitjLmZ4LnN0ZXAuX2RlZmF1bHQpKHRo
aXMpO2lmKCh0aGlzLnByb3A9PT0iaGVpZ2h0Inx8dGhpcy5wcm9wPT09IndpZHRoIikmJnRoaXMu
ZWxlbS5zdHlsZSl0aGlzLmVsZW0uc3R5bGUuZGlzcGxheT0iYmxvY2sifSxjdXI6ZnVuY3Rpb24o
YSl7aWYodGhpcy5lbGVtW3RoaXMucHJvcF0hPW51bGwmJighdGhpcy5lbGVtLnN0eWxlfHx0aGlz
LmVsZW0uc3R5bGVbdGhpcy5wcm9wXT09bnVsbCkpcmV0dXJuIHRoaXMuZWxlbVt0aGlzLnByb3Bd
O3JldHVybihhPXBhcnNlRmxvYXQoYy5jc3ModGhpcy5lbGVtLHRoaXMucHJvcCxhKSkpJiZhPi0x
MDAwMD9hOnBhcnNlRmxvYXQoYy5jdXJDU1ModGhpcy5lbGVtLHRoaXMucHJvcCkpfHwwfSxjdXN0
b206ZnVuY3Rpb24oYSxiLGQpe2Z1bmN0aW9uIGYoail7cmV0dXJuIGUuc3RlcChqKX10aGlzLnN0
YXJ0VGltZT1KKCk7dGhpcy5zdGFydD1hO3RoaXMuZW5kPWI7dGhpcy51bml0PWR8fHRoaXMudW5p
dHx8InB4Ijt0aGlzLm5vdz10aGlzLnN0YXJ0OwordGhpcy5wb3M9dGhpcy5zdGF0ZT0wO3ZhciBl
PXRoaXM7Zi5lbGVtPXRoaXMuZWxlbTtpZihmKCkmJmMudGltZXJzLnB1c2goZikmJiFXKVc9c2V0
SW50ZXJ2YWwoYy5meC50aWNrLDEzKX0sc2hvdzpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5vcmln
W3RoaXMucHJvcF09Yy5zdHlsZSh0aGlzLmVsZW0sdGhpcy5wcm9wKTt0aGlzLm9wdGlvbnMuc2hv
dz10cnVlO3RoaXMuY3VzdG9tKHRoaXMucHJvcD09PSJ3aWR0aCJ8fHRoaXMucHJvcD09PSJoZWln
aHQiPzE6MCx0aGlzLmN1cigpKTtjKHRoaXMuZWxlbSkuc2hvdygpfSxoaWRlOmZ1bmN0aW9uKCl7
dGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9wXT1jLnN0eWxlKHRoaXMuZWxlbSx0aGlzLnByb3Ap
O3RoaXMub3B0aW9ucy5oaWRlPXRydWU7dGhpcy5jdXN0b20odGhpcy5jdXIoKSwwKX0sc3RlcDpm
dW5jdGlvbihhKXt2YXIgYj1KKCksZD10cnVlO2lmKGF8fGI+PXRoaXMub3B0aW9ucy5kdXJhdGlv
bit0aGlzLnN0YXJ0VGltZSl7dGhpcy5ub3c9Cit0aGlzLmVuZDt0aGlzLnBvcz10aGlzLnN0YXRl
PTE7dGhpcy51cGRhdGUoKTt0aGlzLm9wdGlvbnMuY3VyQW5pbVt0aGlzLnByb3BdPXRydWU7Zm9y
KHZhciBmIGluIHRoaXMub3B0aW9ucy5jdXJBbmltKWlmKHRoaXMub3B0aW9ucy5jdXJBbmltW2Zd
IT09dHJ1ZSlkPWZhbHNlO2lmKGQpe2lmKHRoaXMub3B0aW9ucy5kaXNwbGF5IT1udWxsKXt0aGlz
LmVsZW0uc3R5bGUub3ZlcmZsb3c9dGhpcy5vcHRpb25zLm92ZXJmbG93O2E9Yy5kYXRhKHRoaXMu
ZWxlbSwib2xkZGlzcGxheSIpO3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PWE/YTp0aGlzLm9wdGlv
bnMuZGlzcGxheTtpZihjLmNzcyh0aGlzLmVsZW0sImRpc3BsYXkiKT09PSJub25lIil0aGlzLmVs
ZW0uc3R5bGUuZGlzcGxheT0iYmxvY2sifXRoaXMub3B0aW9ucy5oaWRlJiZjKHRoaXMuZWxlbSku
aGlkZSgpO2lmKHRoaXMub3B0aW9ucy5oaWRlfHx0aGlzLm9wdGlvbnMuc2hvdylmb3IodmFyIGUg
aW4gdGhpcy5vcHRpb25zLmN1ckFuaW0pYy5zdHlsZSh0aGlzLmVsZW0sCitlLHRoaXMub3B0aW9u
cy5vcmlnW2VdKTt0aGlzLm9wdGlvbnMuY29tcGxldGUuY2FsbCh0aGlzLmVsZW0pfXJldHVybiBm
YWxzZX1lbHNle2U9Yi10aGlzLnN0YXJ0VGltZTt0aGlzLnN0YXRlPWUvdGhpcy5vcHRpb25zLmR1
cmF0aW9uO2E9dGhpcy5vcHRpb25zLmVhc2luZ3x8KGMuZWFzaW5nLnN3aW5nPyJzd2luZyI6Imxp
bmVhciIpO3RoaXMucG9zPWMuZWFzaW5nW3RoaXMub3B0aW9ucy5zcGVjaWFsRWFzaW5nJiZ0aGlz
Lm9wdGlvbnMuc3BlY2lhbEVhc2luZ1t0aGlzLnByb3BdfHxhXSh0aGlzLnN0YXRlLGUsMCwxLHRo
aXMub3B0aW9ucy5kdXJhdGlvbik7dGhpcy5ub3c9dGhpcy5zdGFydCsodGhpcy5lbmQtdGhpcy5z
dGFydCkqdGhpcy5wb3M7dGhpcy51cGRhdGUoKX1yZXR1cm4gdHJ1ZX19O2MuZXh0ZW5kKGMuZngs
e3RpY2s6ZnVuY3Rpb24oKXtmb3IodmFyIGE9Yy50aW1lcnMsYj0wO2I8YS5sZW5ndGg7YisrKWFb
Yl0oKXx8YS5zcGxpY2UoYi0tLDEpO2EubGVuZ3RofHwKK2MuZnguc3RvcCgpfSxzdG9wOmZ1bmN0
aW9uKCl7Y2xlYXJJbnRlcnZhbChXKTtXPW51bGx9LHNwZWVkczp7c2xvdzo2MDAsZmFzdDoyMDAs
X2RlZmF1bHQ6NDAwfSxzdGVwOntvcGFjaXR5OmZ1bmN0aW9uKGEpe2Muc3R5bGUoYS5lbGVtLCJv
cGFjaXR5IixhLm5vdyl9LF9kZWZhdWx0OmZ1bmN0aW9uKGEpe2lmKGEuZWxlbS5zdHlsZSYmYS5l
bGVtLnN0eWxlW2EucHJvcF0hPW51bGwpYS5lbGVtLnN0eWxlW2EucHJvcF09KGEucHJvcD09PSJ3
aWR0aCJ8fGEucHJvcD09PSJoZWlnaHQiP01hdGgubWF4KDAsYS5ub3cpOmEubm93KSthLnVuaXQ7
ZWxzZSBhLmVsZW1bYS5wcm9wXT1hLm5vd319fSk7aWYoYy5leHByJiZjLmV4cHIuZmlsdGVycylj
LmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gYy5ncmVwKGMudGltZXJz
LGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofTtjLmZuLm9mZnNldD0iZ2V0
Qm91bmRpbmdDbGllbnRSZWN0ImluIHMuZG9jdW1lbnRFbGVtZW50PworZnVuY3Rpb24oYSl7dmFy
IGI9dGhpc1swXTtpZihhKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oZSl7Yy5vZmZzZXQuc2V0
T2Zmc2V0KHRoaXMsYSxlKX0pO2lmKCFifHwhYi5vd25lckRvY3VtZW50KXJldHVybiBudWxsO2lm
KGI9PT1iLm93bmVyRG9jdW1lbnQuYm9keSlyZXR1cm4gYy5vZmZzZXQuYm9keU9mZnNldChiKTt2
YXIgZD1iLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGY9Yi5vd25lckRvY3VtZW50O2I9Zi5ib2R5
O2Y9Zi5kb2N1bWVudEVsZW1lbnQ7cmV0dXJue3RvcDpkLnRvcCsoc2VsZi5wYWdlWU9mZnNldHx8
Yy5zdXBwb3J0LmJveE1vZGVsJiZmLnNjcm9sbFRvcHx8Yi5zY3JvbGxUb3ApLShmLmNsaWVudFRv
cHx8Yi5jbGllbnRUb3B8fDApLGxlZnQ6ZC5sZWZ0KyhzZWxmLnBhZ2VYT2Zmc2V0fHxjLnN1cHBv
cnQuYm94TW9kZWwmJmYuc2Nyb2xsTGVmdHx8Yi5zY3JvbGxMZWZ0KS0oZi5jbGllbnRMZWZ0fHxi
LmNsaWVudExlZnR8fDApfX06ZnVuY3Rpb24oYSl7dmFyIGI9Cit0aGlzWzBdO2lmKGEpcmV0dXJu
IHRoaXMuZWFjaChmdW5jdGlvbihyKXtjLm9mZnNldC5zZXRPZmZzZXQodGhpcyxhLHIpfSk7aWYo
IWJ8fCFiLm93bmVyRG9jdW1lbnQpcmV0dXJuIG51bGw7aWYoYj09PWIub3duZXJEb2N1bWVudC5i
b2R5KXJldHVybiBjLm9mZnNldC5ib2R5T2Zmc2V0KGIpO2Mub2Zmc2V0LmluaXRpYWxpemUoKTt2
YXIgZD1iLm9mZnNldFBhcmVudCxmPWIsZT1iLm93bmVyRG9jdW1lbnQsaixpPWUuZG9jdW1lbnRF
bGVtZW50LG89ZS5ib2R5O2Y9KGU9ZS5kZWZhdWx0Vmlldyk/ZS5nZXRDb21wdXRlZFN0eWxlKGIs
bnVsbCk6Yi5jdXJyZW50U3R5bGU7Zm9yKHZhciBrPWIub2Zmc2V0VG9wLG49Yi5vZmZzZXRMZWZ0
OyhiPWIucGFyZW50Tm9kZSkmJmIhPT1vJiZiIT09aTspe2lmKGMub2Zmc2V0LnN1cHBvcnRzRml4
ZWRQb3NpdGlvbiYmZi5wb3NpdGlvbj09PSJmaXhlZCIpYnJlYWs7aj1lP2UuZ2V0Q29tcHV0ZWRT
dHlsZShiLG51bGwpOmIuY3VycmVudFN0eWxlOworay09Yi5zY3JvbGxUb3A7bi09Yi5zY3JvbGxM
ZWZ0O2lmKGI9PT1kKXtrKz1iLm9mZnNldFRvcDtuKz1iLm9mZnNldExlZnQ7aWYoYy5vZmZzZXQu
ZG9lc05vdEFkZEJvcmRlciYmIShjLm9mZnNldC5kb2VzQWRkQm9yZGVyRm9yVGFibGVBbmRDZWxs
cyYmL150KGFibGV8ZHxoKSQvaS50ZXN0KGIubm9kZU5hbWUpKSl7ays9cGFyc2VGbG9hdChqLmJv
cmRlclRvcFdpZHRoKXx8MDtuKz1wYXJzZUZsb2F0KGouYm9yZGVyTGVmdFdpZHRoKXx8MH1mPWQ7
ZD1iLm9mZnNldFBhcmVudH1pZihjLm9mZnNldC5zdWJ0cmFjdHNCb3JkZXJGb3JPdmVyZmxvd05v
dFZpc2libGUmJmoub3ZlcmZsb3chPT0idmlzaWJsZSIpe2srPXBhcnNlRmxvYXQoai5ib3JkZXJU
b3BXaWR0aCl8fDA7bis9cGFyc2VGbG9hdChqLmJvcmRlckxlZnRXaWR0aCl8fDB9Zj1qfWlmKGYu
cG9zaXRpb249PT0icmVsYXRpdmUifHxmLnBvc2l0aW9uPT09InN0YXRpYyIpe2srPW8ub2Zmc2V0
VG9wO24rPW8ub2Zmc2V0TGVmdH1pZihjLm9mZnNldC5zdXBwb3J0c0ZpeGVkUG9zaXRpb24mJgor
Zi5wb3NpdGlvbj09PSJmaXhlZCIpe2srPU1hdGgubWF4KGkuc2Nyb2xsVG9wLG8uc2Nyb2xsVG9w
KTtuKz1NYXRoLm1heChpLnNjcm9sbExlZnQsby5zY3JvbGxMZWZ0KX1yZXR1cm57dG9wOmssbGVm
dDpufX07Yy5vZmZzZXQ9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt2YXIgYT1zLmJvZHksYj1zLmNy
ZWF0ZUVsZW1lbnQoImRpdiIpLGQsZixlLGo9cGFyc2VGbG9hdChjLmN1ckNTUyhhLCJtYXJnaW5U
b3AiLHRydWUpKXx8MDtjLmV4dGVuZChiLnN0eWxlLHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDow
LGxlZnQ6MCxtYXJnaW46MCxib3JkZXI6MCx3aWR0aDoiMXB4IixoZWlnaHQ6IjFweCIsdmlzaWJp
bGl0eToiaGlkZGVuIn0pO2IuaW5uZXJIVE1MPSI8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0
ZTt0b3A6MDtsZWZ0OjA7bWFyZ2luOjA7Ym9yZGVyOjVweCBzb2xpZCAjMDAwO3BhZGRpbmc6MDt3
aWR0aDoxcHg7aGVpZ2h0OjFweDsnPjxkaXY+PC9kaXY+PC9kaXY+PHRhYmxlIHN0eWxlPSdwb3Np
dGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7bWFyZ2luOjA7Ym9yZGVyOjVweCBzb2xpZCAjMDAw
O3BhZGRpbmc6MDt3aWR0aDoxcHg7aGVpZ2h0OjFweDsnIGNlbGxwYWRkaW5nPScwJyBjZWxsc3Bh
Y2luZz0nMCc+PHRyPjx0ZD48L3RkPjwvdHI+PC90YWJsZT4iOworYS5pbnNlcnRCZWZvcmUoYixh
LmZpcnN0Q2hpbGQpO2Q9Yi5maXJzdENoaWxkO2Y9ZC5maXJzdENoaWxkO2U9ZC5uZXh0U2libGlu
Zy5maXJzdENoaWxkLmZpcnN0Q2hpbGQ7dGhpcy5kb2VzTm90QWRkQm9yZGVyPWYub2Zmc2V0VG9w
IT09NTt0aGlzLmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzPWUub2Zmc2V0VG9wPT09NTtm
LnN0eWxlLnBvc2l0aW9uPSJmaXhlZCI7Zi5zdHlsZS50b3A9IjIwcHgiO3RoaXMuc3VwcG9ydHNG
aXhlZFBvc2l0aW9uPWYub2Zmc2V0VG9wPT09MjB8fGYub2Zmc2V0VG9wPT09MTU7Zi5zdHlsZS5w
b3NpdGlvbj1mLnN0eWxlLnRvcD0iIjtkLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iO2Quc3R5bGUu
cG9zaXRpb249InJlbGF0aXZlIjt0aGlzLnN1YnRyYWN0c0JvcmRlckZvck92ZXJmbG93Tm90Vmlz
aWJsZT1mLm9mZnNldFRvcD09PS01O3RoaXMuZG9lc05vdEluY2x1ZGVNYXJnaW5JbkJvZHlPZmZz
ZXQ9YS5vZmZzZXRUb3AhPT1qO2EucmVtb3ZlQ2hpbGQoYik7CitjLm9mZnNldC5pbml0aWFsaXpl
PWMubm9vcH0sYm9keU9mZnNldDpmdW5jdGlvbihhKXt2YXIgYj1hLm9mZnNldFRvcCxkPWEub2Zm
c2V0TGVmdDtjLm9mZnNldC5pbml0aWFsaXplKCk7aWYoYy5vZmZzZXQuZG9lc05vdEluY2x1ZGVN
YXJnaW5JbkJvZHlPZmZzZXQpe2IrPXBhcnNlRmxvYXQoYy5jdXJDU1MoYSwibWFyZ2luVG9wIix0
cnVlKSl8fDA7ZCs9cGFyc2VGbG9hdChjLmN1ckNTUyhhLCJtYXJnaW5MZWZ0Iix0cnVlKSl8fDB9
cmV0dXJue3RvcDpiLGxlZnQ6ZH19LHNldE9mZnNldDpmdW5jdGlvbihhLGIsZCl7aWYoL3N0YXRp
Yy8udGVzdChjLmN1ckNTUyhhLCJwb3NpdGlvbiIpKSlhLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2
ZSI7dmFyIGY9YyhhKSxlPWYub2Zmc2V0KCksaj1wYXJzZUludChjLmN1ckNTUyhhLCJ0b3AiLHRy
dWUpLDEwKXx8MCxpPXBhcnNlSW50KGMuY3VyQ1NTKGEsImxlZnQiLHRydWUpLDEwKXx8MDtpZihj
LmlzRnVuY3Rpb24oYikpYj1iLmNhbGwoYSwKK2QsZSk7ZD17dG9wOmIudG9wLWUudG9wK2osbGVm
dDpiLmxlZnQtZS5sZWZ0K2l9OyJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLGQpOmYuY3NzKGQp
fX07Yy5mbi5leHRlbmQoe3Bvc2l0aW9uOmZ1bmN0aW9uKCl7aWYoIXRoaXNbMF0pcmV0dXJuIG51
bGw7dmFyIGE9dGhpc1swXSxiPXRoaXMub2Zmc2V0UGFyZW50KCksZD10aGlzLm9mZnNldCgpLGY9
L15ib2R5fGh0bWwkL2kudGVzdChiWzBdLm5vZGVOYW1lKT97dG9wOjAsbGVmdDowfTpiLm9mZnNl
dCgpO2QudG9wLT1wYXJzZUZsb2F0KGMuY3VyQ1NTKGEsIm1hcmdpblRvcCIsdHJ1ZSkpfHwwO2Qu
bGVmdC09cGFyc2VGbG9hdChjLmN1ckNTUyhhLCJtYXJnaW5MZWZ0Iix0cnVlKSl8fDA7Zi50b3Ar
PXBhcnNlRmxvYXQoYy5jdXJDU1MoYlswXSwiYm9yZGVyVG9wV2lkdGgiLHRydWUpKXx8MDtmLmxl
ZnQrPXBhcnNlRmxvYXQoYy5jdXJDU1MoYlswXSwiYm9yZGVyTGVmdFdpZHRoIix0cnVlKSl8fDA7
cmV0dXJue3RvcDpkLnRvcC0KK2YudG9wLGxlZnQ6ZC5sZWZ0LWYubGVmdH19LG9mZnNldFBhcmVu
dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLm9m
ZnNldFBhcmVudHx8cy5ib2R5O2EmJiEvXmJvZHl8aHRtbCQvaS50ZXN0KGEubm9kZU5hbWUpJiZj
LmNzcyhhLCJwb3NpdGlvbiIpPT09InN0YXRpYyI7KWE9YS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGF9
KX19KTtjLmVhY2goWyJMZWZ0IiwiVG9wIl0sZnVuY3Rpb24oYSxiKXt2YXIgZD0ic2Nyb2xsIiti
O2MuZm5bZF09ZnVuY3Rpb24oZil7dmFyIGU9dGhpc1swXSxqO2lmKCFlKXJldHVybiBudWxsO2lm
KGYhPT13KXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZihqPXdhKHRoaXMpKWouc2Nyb2xs
VG8oIWE/ZjpjKGopLnNjcm9sbExlZnQoKSxhP2Y6YyhqKS5zY3JvbGxUb3AoKSk7ZWxzZSB0aGlz
W2RdPWZ9KTtlbHNlIHJldHVybihqPXdhKGUpKT8icGFnZVhPZmZzZXQiaW4gaj9qW2E/InBhZ2VZ
T2Zmc2V0IjoKKyJwYWdlWE9mZnNldCJdOmMuc3VwcG9ydC5ib3hNb2RlbCYmai5kb2N1bWVudC5k
b2N1bWVudEVsZW1lbnRbZF18fGouZG9jdW1lbnQuYm9keVtkXTplW2RdfX0pO2MuZWFjaChbIkhl
aWdodCIsIldpZHRoIl0sZnVuY3Rpb24oYSxiKXt2YXIgZD1iLnRvTG93ZXJDYXNlKCk7Yy5mblsi
aW5uZXIiK2JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbMF0/Yy5jc3ModGhpc1swXSxkLGZhbHNl
LCJwYWRkaW5nIik6bnVsbH07Yy5mblsib3V0ZXIiK2JdPWZ1bmN0aW9uKGYpe3JldHVybiB0aGlz
WzBdP2MuY3NzKHRoaXNbMF0sZCxmYWxzZSxmPyJtYXJnaW4iOiJib3JkZXIiKTpudWxsfTtjLmZu
W2RdPWZ1bmN0aW9uKGYpe3ZhciBlPXRoaXNbMF07aWYoIWUpcmV0dXJuIGY9PW51bGw/bnVsbDp0
aGlzO2lmKGMuaXNGdW5jdGlvbihmKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGope3ZhciBp
PWModGhpcyk7aVtkXShmLmNhbGwodGhpcyxqLGlbZF0oKSkpfSk7cmV0dXJuInNjcm9sbFRvImlu
CitlJiZlLmRvY3VtZW50P2UuZG9jdW1lbnQuY29tcGF0TW9kZT09PSJDU1MxQ29tcGF0IiYmZS5k
b2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrYl18fGUuZG9jdW1lbnQuYm9keVsiY2xp
ZW50IitiXTplLm5vZGVUeXBlPT09OT9NYXRoLm1heChlLmRvY3VtZW50RWxlbWVudFsiY2xpZW50
IitiXSxlLmJvZHlbInNjcm9sbCIrYl0sZS5kb2N1bWVudEVsZW1lbnRbInNjcm9sbCIrYl0sZS5i
b2R5WyJvZmZzZXQiK2JdLGUuZG9jdW1lbnRFbGVtZW50WyJvZmZzZXQiK2JdKTpmPT09dz9jLmNz
cyhlLGQpOnRoaXMuY3NzKGQsdHlwZW9mIGY9PT0ic3RyaW5nIj9mOmYrInB4Iil9fSk7QS5qUXVl
cnk9QS4kPWN9KSh3aW5kb3cpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9kZW1v
cy9zcHJpbmcvaW5kZXguaHRtbCBiL1dlYnNpdGVzL3dlYmtpdC5vcmcvZGVtb3Mvc3ByaW5nL2lu
ZGV4Lmh0bWwKaW5kZXggYjIwYWQxZjRkODczNjRkZjg4ZGY5ODZhNjZiNjVkYWMwNTRlY2ZhMi4u
Yzk4ZGM3N2U1Mjc0YWFkNDVhOWEyNjhkY2Q0ZWQxNzE2NDU1ZGZkYiAxMDA2NDQKLS0tIGEvV2Vi
c2l0ZXMvd2Via2l0Lm9yZy9kZW1vcy9zcHJpbmcvaW5kZXguaHRtbAorKysgYi9XZWJzaXRlcy93
ZWJraXQub3JnL2RlbW9zL3NwcmluZy9pbmRleC5odG1sCkBAIC0yLDEyICsyLDExIEBACiA8aHRt
bD4KIDxoZWFkPgogPHRpdGxlPlNwcmluZyB0aW1pbmcgZnVuY3Rpb24gZGVtbzwvdGl0bGU+Ci08
bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9U291cmNl
K1NhbnMrUHJvIiByZWw9InN0eWxlc2hlZXQiPgogPHN0eWxlPgogCiBib2R5IHsKICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiAjQ0VDRUNFOwotICAgIGZvbnQtZmFtaWx5OiAiU291cmNlIFNhbnMgUHJv
Iiwgc2Fucy1zZXJpZjsKKyAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKICAgICBjb2xvcjog
IzVFMjc1QTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340613</attachid>
            <date>2018-05-17 11:44:57 -0700</date>
            <delta_ts>2018-05-22 09:34:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185691-20180517114456.patch</filename>
            <type>text/plain</type>
            <size>74652</size>
            <attacher name="Roy Reapor">rreapor</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxODY0CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9idWdzLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvYnVncy53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCAyMTAxNmFhMGIxODlkYWY4YmU5MDYyMTI4MzBhZDY0OTBjYjY1YTVkLi4wMmM3MWUzNzY4
NDdlODBkYmE1NGMxNjFiZjBkOTQ0N2UwM2U1OGQzIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9idWdz
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL2J1Z3Mud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0wNS0xNyAgUm95IFJlYXBvciAgPHJyZWFwb3JA
YXBwbGUuY29tPgorCisgICAgICAgIEhvc3QganF1ZXJ5IG9uIHdlYmtpdC5vcmcgaW5zdGVhZCBv
ZiAzcmQgcGFydHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NTY5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogUHJldHR5UGF0Y2gvUHJldHR5UGF0Y2gucmI6CisgICAgICAgICogY29kZS1yZXZpZXct
dGVzdC5odG1sOgorCiAyMDE4LTAyLTE2ICBMaW5nIEhvICA8bGluZ2hvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBcHBseSBCdWd6aWxsYSBwYXRjaGVzIGZvciBDVkUtMjAxOC01MTIzCmRpZmYgLS1n
aXQgYS9XZWJzaXRlcy9idWdzLndlYmtpdC5vcmcvUHJldHR5UGF0Y2gvUHJldHR5UGF0Y2gucmIg
Yi9XZWJzaXRlcy9idWdzLndlYmtpdC5vcmcvUHJldHR5UGF0Y2gvUHJldHR5UGF0Y2gucmIKaW5k
ZXggYTRhYWYxNmQyNzU4Y2FiMGNkZjQwYjlhMDQ5Y2JiNDk0ZDQ4YWZmZC4uMzgyYjQ5NjlkODM2
Y2RlYTAyNWU1OTA5NjgyYWY4MWUxY2UwNWRmZSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvYnVncy53
ZWJraXQub3JnL1ByZXR0eVBhdGNoL1ByZXR0eVBhdGNoLnJiCisrKyBiL1dlYnNpdGVzL2J1Z3Mu
d2Via2l0Lm9yZy9QcmV0dHlQYXRjaC9QcmV0dHlQYXRjaC5yYgpAQCAtNTIzLDcgKzUyMyw3IEBA
IGRpdjpmb2N1cyB7CiAgICAgY2xlYXI6IGJvdGg7CiB9CiA8L3N0eWxlPgotPHNjcmlwdCBzcmM9
Imh0dHBzOi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvanF1ZXJ5LzEuNC4yL2pxdWVy
eS5taW4uanMiPjwvc2NyaXB0PiAKKzxzY3JpcHQgc3JjPSJodHRwczovL3dlYmtpdC5vcmcvYWph
eC9saWJzL2pxdWVyeS9qcXVlcnktMS40LjIubWluLmpzIj48L3NjcmlwdD4gCiA8c2NyaXB0IHNy
Yz0iY29kZS1yZXZpZXcuanM/dmVyc2lvbj00OCI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiBFT0YKZGlm
ZiAtLWdpdCBhL1dlYnNpdGVzL2J1Z3Mud2Via2l0Lm9yZy9jb2RlLXJldmlldy10ZXN0Lmh0bWwg
Yi9XZWJzaXRlcy9idWdzLndlYmtpdC5vcmcvY29kZS1yZXZpZXctdGVzdC5odG1sCmluZGV4IGI1
OWZhNGM0M2QzZjM4OTU5ODNhYTQ5ZmNhYmVhMWU1OWI2NzNlMDEuLjcwZGI3ODk3NWU0MDFhY2Ey
MWJiNGJiZDY4OWQ1NzNlMTg3NzNkYjcgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL2J1Z3Mud2Via2l0
Lm9yZy9jb2RlLXJldmlldy10ZXN0Lmh0bWwKKysrIGIvV2Vic2l0ZXMvYnVncy53ZWJraXQub3Jn
L2NvZGUtcmV2aWV3LXRlc3QuaHRtbApAQCAtOSw3ICs5LDcgQEAgd2luZG93Lm9uZXJyb3IgPSBm
dW5jdGlvbihlcnJvck1zZywgdXJsLCBsaW5lTnVtYmVyKSB7CiAgIHJldHVybiBmYWxzZTsKIH0K
IDwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Imh0dHBzOi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4
L2xpYnMvanF1ZXJ5LzEuNC4yL2pxdWVyeS5taW4uanMiPjwvc2NyaXB0PiAKKzxzY3JpcHQgc3Jj
PSJodHRwczovL3dlYmtpdC5vcmcvYWpheC9saWJzL2pxdWVyeS9qcXVlcnktMS40LjIubWluLmpz
Ij48L3NjcmlwdD4gCiA8c2NyaXB0IHNyYz0iY29kZS1yZXZpZXcuanMiPjwvc2NyaXB0PgogPHBy
ZSBpZD0ib3V0cHV0Ij48L3ByZT4KIDxkaXYgaWQ9ImRpZmYtY29udGVudCI+PC9kaXY+CmRpZmYg
LS1naXQgYS9XZWJzaXRlcy93ZWJraXQub3JnL2FqYXgvbGlicy9qcXVlcnkvanF1ZXJ5LTEuNC4y
Lm1pbi5qcyBiL1dlYnNpdGVzL3dlYmtpdC5vcmcvYWpheC9saWJzL2pxdWVyeS9qcXVlcnktMS40
LjIubWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjMjQzMDgwMjMzNzYxODU5OTM3ZDUyMTk1YjY3MDYwMjcz
MWEzNzkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJzaXRlcy93ZWJraXQub3JnL2FqYXgvbGlicy9q
cXVlcnkvanF1ZXJ5LTEuNC4yLm1pbi5qcwpAQCAtMCwwICsxLDE1NCBAQAorLyohCisgKiBqUXVl
cnkgSmF2YVNjcmlwdCBMaWJyYXJ5IHYxLjQuMgorICogaHR0cDovL2pxdWVyeS5jb20vCisgKgor
ICogQ29weXJpZ2h0IDIwMTAsIEpvaG4gUmVzaWcKKyAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhl
IE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgorICogaHR0cDovL2pxdWVyeS5vcmcvbGlj
ZW5zZQorICoKKyAqIEluY2x1ZGVzIFNpenpsZS5qcworICogaHR0cDovL3NpenpsZWpzLmNvbS8K
KyAqIENvcHlyaWdodCAyMDEwLCBUaGUgRG9qbyBGb3VuZGF0aW9uCisgKiBSZWxlYXNlZCB1bmRl
ciB0aGUgTUlULCBCU0QsIGFuZCBHUEwgTGljZW5zZXMuCisgKgorICogRGF0ZTogU2F0IEZlYiAx
MyAyMjozMzo0OCAyMDEwIC0wNTAwCisgKi8KKyhmdW5jdGlvbihBLHcpe2Z1bmN0aW9uIG1hKCl7
aWYoIWMuaXNSZWFkeSl7dHJ5e3MuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCJsZWZ0Iil9Y2F0
Y2goYSl7c2V0VGltZW91dChtYSwxKTtyZXR1cm59Yy5yZWFkeSgpfX1mdW5jdGlvbiBRYShhLGIp
e2Iuc3JjP2MuYWpheCh7dXJsOmIuc3JjLGFzeW5jOmZhbHNlLGRhdGFUeXBlOiJzY3JpcHQifSk6
Yy5nbG9iYWxFdmFsKGIudGV4dHx8Yi50ZXh0Q29udGVudHx8Yi5pbm5lckhUTUx8fCIiKTtiLnBh
cmVudE5vZGUmJmIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKX1mdW5jdGlvbiBYKGEsYixkLGYs
ZSxqKXt2YXIgaT1hLmxlbmd0aDtpZih0eXBlb2YgYj09PSJvYmplY3QiKXtmb3IodmFyIG8gaW4g
YilYKGEsbyxiW29dLGYsZSxkKTtyZXR1cm4gYX1pZihkIT09dyl7Zj0haiYmZiYmYy5pc0Z1bmN0
aW9uKGQpO2ZvcihvPTA7bzxpO28rKyllKGFbb10sYixmP2QuY2FsbChhW29dLG8sZShhW29dLGIp
KTpkLGopO3JldHVybiBhfXJldHVybiBpPworZShhWzBdLGIpOnd9ZnVuY3Rpb24gSigpe3JldHVy
bihuZXcgRGF0ZSkuZ2V0VGltZSgpfWZ1bmN0aW9uIFkoKXtyZXR1cm4gZmFsc2V9ZnVuY3Rpb24g
Wigpe3JldHVybiB0cnVlfWZ1bmN0aW9uIG5hKGEsYixkKXtkWzBdLnR5cGU9YTtyZXR1cm4gYy5l
dmVudC5oYW5kbGUuYXBwbHkoYixkKX1mdW5jdGlvbiBvYShhKXt2YXIgYixkPVtdLGY9W10sZT1h
cmd1bWVudHMsaixpLG8sayxuLHI7aT1jLmRhdGEodGhpcywiZXZlbnRzIik7aWYoIShhLmxpdmVG
aXJlZD09PXRoaXN8fCFpfHwhaS5saXZlfHxhLmJ1dHRvbiYmYS50eXBlPT09ImNsaWNrIikpe2Eu
bGl2ZUZpcmVkPXRoaXM7dmFyIHU9aS5saXZlLnNsaWNlKDApO2ZvcihrPTA7azx1Lmxlbmd0aDtr
Kyspe2k9dVtrXTtpLm9yaWdUeXBlLnJlcGxhY2UoTywiIik9PT1hLnR5cGU/Zi5wdXNoKGkuc2Vs
ZWN0b3IpOnUuc3BsaWNlKGstLSwxKX1qPWMoYS50YXJnZXQpLmNsb3Nlc3QoZixhLmN1cnJlbnRU
YXJnZXQpO249MDtmb3Iocj0KK2oubGVuZ3RoO248cjtuKyspZm9yKGs9MDtrPHUubGVuZ3RoO2sr
Kyl7aT11W2tdO2lmKGpbbl0uc2VsZWN0b3I9PT1pLnNlbGVjdG9yKXtvPWpbbl0uZWxlbTtmPW51
bGw7aWYoaS5wcmVUeXBlPT09Im1vdXNlZW50ZXIifHxpLnByZVR5cGU9PT0ibW91c2VsZWF2ZSIp
Zj1jKGEucmVsYXRlZFRhcmdldCkuY2xvc2VzdChpLnNlbGVjdG9yKVswXTtpZighZnx8ZiE9PW8p
ZC5wdXNoKHtlbGVtOm8saGFuZGxlT2JqOml9KX19bj0wO2ZvcihyPWQubGVuZ3RoO248cjtuKysp
e2o9ZFtuXTthLmN1cnJlbnRUYXJnZXQ9ai5lbGVtO2EuZGF0YT1qLmhhbmRsZU9iai5kYXRhO2Eu
aGFuZGxlT2JqPWouaGFuZGxlT2JqO2lmKGouaGFuZGxlT2JqLm9yaWdIYW5kbGVyLmFwcGx5KGou
ZWxlbSxlKT09PWZhbHNlKXtiPWZhbHNlO2JyZWFrfX1yZXR1cm4gYn19ZnVuY3Rpb24gcGEoYSxi
KXtyZXR1cm4ibGl2ZS4iKyhhJiZhIT09IioiP2ErIi4iOiIiKStiLnJlcGxhY2UoL1wuL2csImAi
KS5yZXBsYWNlKC8gL2csCisiJiIpfWZ1bmN0aW9uIHFhKGEpe3JldHVybiFhfHwhYS5wYXJlbnRO
b2RlfHxhLnBhcmVudE5vZGUubm9kZVR5cGU9PT0xMX1mdW5jdGlvbiByYShhLGIpe3ZhciBkPTA7
Yi5lYWNoKGZ1bmN0aW9uKCl7aWYodGhpcy5ub2RlTmFtZT09PShhW2RdJiZhW2RdLm5vZGVOYW1l
KSl7dmFyIGY9Yy5kYXRhKGFbZCsrXSksZT1jLmRhdGEodGhpcyxmKTtpZihmPWYmJmYuZXZlbnRz
KXtkZWxldGUgZS5oYW5kbGU7ZS5ldmVudHM9e307Zm9yKHZhciBqIGluIGYpZm9yKHZhciBpIGlu
IGZbal0pYy5ldmVudC5hZGQodGhpcyxqLGZbal1baV0sZltqXVtpXS5kYXRhKX19fSl9ZnVuY3Rp
b24gc2EoYSxiLGQpe3ZhciBmLGUsajtiPWImJmJbMF0/YlswXS5vd25lckRvY3VtZW50fHxiWzBd
OnM7aWYoYS5sZW5ndGg9PT0xJiZ0eXBlb2YgYVswXT09PSJzdHJpbmciJiZhWzBdLmxlbmd0aDw1
MTImJmI9PT1zJiYhdGEudGVzdChhWzBdKSYmKGMuc3VwcG9ydC5jaGVja0Nsb25lfHwhdWEudGVz
dChhWzBdKSkpe2U9Cit0cnVlO2lmKGo9Yy5mcmFnbWVudHNbYVswXV0paWYoaiE9PTEpZj1qfWlm
KCFmKXtmPWIuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2MuY2xlYW4oYSxiLGYsZCl9aWYoZSlj
LmZyYWdtZW50c1thWzBdXT1qP2Y6MTtyZXR1cm57ZnJhZ21lbnQ6ZixjYWNoZWFibGU6ZX19ZnVu
Y3Rpb24gSyhhLGIpe3ZhciBkPXt9O2MuZWFjaCh2YS5jb25jYXQuYXBwbHkoW10sdmEuc2xpY2Uo
MCxiKSksZnVuY3Rpb24oKXtkW3RoaXNdPWF9KTtyZXR1cm4gZH1mdW5jdGlvbiB3YShhKXtyZXR1
cm4ic2Nyb2xsVG8iaW4gYSYmYS5kb2N1bWVudD9hOmEubm9kZVR5cGU9PT05P2EuZGVmYXVsdFZp
ZXd8fGEucGFyZW50V2luZG93OmZhbHNlfXZhciBjPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBj
LmZuLmluaXQoYSxiKX0sUmE9QS5qUXVlcnksU2E9QS4kLHM9QS5kb2N1bWVudCxULFRhPS9eW148
XSooPFtcd1xXXSs+KVtePl0qJHxeIyhbXHctXSspJC8sVWE9L14uW146I1xbXC4sXSokLyxWYT0v
XFMvLAorV2E9L14oXHN8XHUwMEEwKSt8KFxzfFx1MDBBMCkrJC9nLFhhPS9ePChcdyspXHMqXC8/
Pig/OjxcL1wxPik/JC8sUD1uYXZpZ2F0b3IudXNlckFnZW50LHhhPWZhbHNlLFE9W10sTCwkPU9i
amVjdC5wcm90b3R5cGUudG9TdHJpbmcsYWE9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0
eSxiYT1BcnJheS5wcm90b3R5cGUucHVzaCxSPUFycmF5LnByb3RvdHlwZS5zbGljZSx5YT1BcnJh
eS5wcm90b3R5cGUuaW5kZXhPZjtjLmZuPWMucHJvdG90eXBlPXtpbml0OmZ1bmN0aW9uKGEsYil7
dmFyIGQsZjtpZighYSlyZXR1cm4gdGhpcztpZihhLm5vZGVUeXBlKXt0aGlzLmNvbnRleHQ9dGhp
c1swXT1hO3RoaXMubGVuZ3RoPTE7cmV0dXJuIHRoaXN9aWYoYT09PSJib2R5IiYmIWIpe3RoaXMu
Y29udGV4dD1zO3RoaXNbMF09cy5ib2R5O3RoaXMuc2VsZWN0b3I9ImJvZHkiO3RoaXMubGVuZ3Ro
PTE7cmV0dXJuIHRoaXN9aWYodHlwZW9mIGE9PT0ic3RyaW5nIilpZigoZD1UYS5leGVjKGEpKSYm
CisoZFsxXXx8IWIpKWlmKGRbMV0pe2Y9Yj9iLm93bmVyRG9jdW1lbnR8fGI6cztpZihhPVhhLmV4
ZWMoYSkpaWYoYy5pc1BsYWluT2JqZWN0KGIpKXthPVtzLmNyZWF0ZUVsZW1lbnQoYVsxXSldO2Mu
Zm4uYXR0ci5jYWxsKGEsYix0cnVlKX1lbHNlIGE9W2YuY3JlYXRlRWxlbWVudChhWzFdKV07ZWxz
ZXthPXNhKFtkWzFdXSxbZl0pO2E9KGEuY2FjaGVhYmxlP2EuZnJhZ21lbnQuY2xvbmVOb2RlKHRy
dWUpOmEuZnJhZ21lbnQpLmNoaWxkTm9kZXN9cmV0dXJuIGMubWVyZ2UodGhpcyxhKX1lbHNle2lm
KGI9cy5nZXRFbGVtZW50QnlJZChkWzJdKSl7aWYoYi5pZCE9PWRbMl0pcmV0dXJuIFQuZmluZChh
KTt0aGlzLmxlbmd0aD0xO3RoaXNbMF09Yn10aGlzLmNvbnRleHQ9czt0aGlzLnNlbGVjdG9yPWE7
cmV0dXJuIHRoaXN9ZWxzZSBpZighYiYmL15cdyskLy50ZXN0KGEpKXt0aGlzLnNlbGVjdG9yPWE7
dGhpcy5jb250ZXh0PXM7YT1zLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpO3JldHVybiBjLm1lcmdl
KHRoaXMsCithKX1lbHNlIHJldHVybiFifHxiLmpxdWVyeT8oYnx8VCkuZmluZChhKTpjKGIpLmZp
bmQoYSk7ZWxzZSBpZihjLmlzRnVuY3Rpb24oYSkpcmV0dXJuIFQucmVhZHkoYSk7aWYoYS5zZWxl
Y3RvciE9PXcpe3RoaXMuc2VsZWN0b3I9YS5zZWxlY3Rvcjt0aGlzLmNvbnRleHQ9YS5jb250ZXh0
fXJldHVybiBjLm1ha2VBcnJheShhLHRoaXMpfSxzZWxlY3RvcjoiIixqcXVlcnk6IjEuNC4yIixs
ZW5ndGg6MCxzaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofSx0b0FycmF5OmZ1bmN0
aW9uKCl7cmV0dXJuIFIuY2FsbCh0aGlzLDApfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51
bGw/dGhpcy50b0FycmF5KCk6YTwwP3RoaXMuc2xpY2UoYSlbMF06dGhpc1thXX0scHVzaFN0YWNr
OmZ1bmN0aW9uKGEsYixkKXt2YXIgZj1jKCk7Yy5pc0FycmF5KGEpP2JhLmFwcGx5KGYsYSk6Yy5t
ZXJnZShmLGEpO2YucHJldk9iamVjdD10aGlzO2YuY29udGV4dD10aGlzLmNvbnRleHQ7aWYoYj09
PQorImZpbmQiKWYuc2VsZWN0b3I9dGhpcy5zZWxlY3RvcisodGhpcy5zZWxlY3Rvcj8iICI6IiIp
K2Q7ZWxzZSBpZihiKWYuc2VsZWN0b3I9dGhpcy5zZWxlY3RvcisiLiIrYisiKCIrZCsiKSI7cmV0
dXJuIGZ9LGVhY2g6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYy5lYWNoKHRoaXMsYSxiKX0scmVhZHk6
ZnVuY3Rpb24oYSl7Yy5iaW5kUmVhZHkoKTtpZihjLmlzUmVhZHkpYS5jYWxsKHMsYyk7ZWxzZSBR
JiZRLnB1c2goYSk7cmV0dXJuIHRoaXN9LGVxOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09LTE/dGhp
cy5zbGljZShhKTp0aGlzLnNsaWNlKGEsK2ErMSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LHNsaWNlOmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFIuYXBwbHkodGhpcyxhcmd1bWVudHMpLCJzbGlj
ZSIsUi5jYWxsKGFyZ3VtZW50cykuam9pbigiLCIpKX0sbWFwOmZ1bmN0aW9uKGEpe3JldHVybiB0
aGlzLnB1c2hTdGFjayhjLm1hcCh0aGlzLAorZnVuY3Rpb24oYixkKXtyZXR1cm4gYS5jYWxsKGIs
ZCxiKX0pKX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8YyhudWxsKX0s
cHVzaDpiYSxzb3J0OltdLnNvcnQsc3BsaWNlOltdLnNwbGljZX07Yy5mbi5pbml0LnByb3RvdHlw
ZT1jLmZuO2MuZXh0ZW5kPWMuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzWzBd
fHx7fSxiPTEsZD1hcmd1bWVudHMubGVuZ3RoLGY9ZmFsc2UsZSxqLGksbztpZih0eXBlb2YgYT09
PSJib29sZWFuIil7Zj1hO2E9YXJndW1lbnRzWzFdfHx7fTtiPTJ9aWYodHlwZW9mIGEhPT0ib2Jq
ZWN0IiYmIWMuaXNGdW5jdGlvbihhKSlhPXt9O2lmKGQ9PT1iKXthPXRoaXM7LS1ifWZvcig7Yjxk
O2IrKylpZigoZT1hcmd1bWVudHNbYl0pIT1udWxsKWZvcihqIGluIGUpe2k9YVtqXTtvPWVbal07
aWYoYSE9PW8paWYoZiYmbyYmKGMuaXNQbGFpbk9iamVjdChvKXx8Yy5pc0FycmF5KG8pKSl7aT1p
JiYoYy5pc1BsYWluT2JqZWN0KGkpfHwKK2MuaXNBcnJheShpKSk/aTpjLmlzQXJyYXkobyk/W106
e307YVtqXT1jLmV4dGVuZChmLGksbyl9ZWxzZSBpZihvIT09dylhW2pdPW99cmV0dXJuIGF9O2Mu
ZXh0ZW5kKHtub0NvbmZsaWN0OmZ1bmN0aW9uKGEpe0EuJD1TYTtpZihhKUEualF1ZXJ5PVJhO3Jl
dHVybiBjfSxpc1JlYWR5OmZhbHNlLHJlYWR5OmZ1bmN0aW9uKCl7aWYoIWMuaXNSZWFkeSl7aWYo
IXMuYm9keSlyZXR1cm4gc2V0VGltZW91dChjLnJlYWR5LDEzKTtjLmlzUmVhZHk9dHJ1ZTtpZihR
KXtmb3IodmFyIGEsYj0wO2E9UVtiKytdOylhLmNhbGwocyxjKTtRPW51bGx9Yy5mbi50cmlnZ2Vy
SGFuZGxlciYmYyhzKS50cmlnZ2VySGFuZGxlcigicmVhZHkiKX19LGJpbmRSZWFkeTpmdW5jdGlv
bigpe2lmKCF4YSl7eGE9dHJ1ZTtpZihzLnJlYWR5U3RhdGU9PT0iY29tcGxldGUiKXJldHVybiBj
LnJlYWR5KCk7aWYocy5hZGRFdmVudExpc3RlbmVyKXtzLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNv
bnRlbnRMb2FkZWQiLAorTCxmYWxzZSk7QS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixjLnJlYWR5
LGZhbHNlKX1lbHNlIGlmKHMuYXR0YWNoRXZlbnQpe3MuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0
ZWNoYW5nZSIsTCk7QS5hdHRhY2hFdmVudCgib25sb2FkIixjLnJlYWR5KTt2YXIgYT1mYWxzZTt0
cnl7YT1BLmZyYW1lRWxlbWVudD09bnVsbH1jYXRjaChiKXt9cy5kb2N1bWVudEVsZW1lbnQuZG9T
Y3JvbGwmJmEmJm1hKCl9fX0saXNGdW5jdGlvbjpmdW5jdGlvbihhKXtyZXR1cm4gJC5jYWxsKGEp
PT09IltvYmplY3QgRnVuY3Rpb25dIn0saXNBcnJheTpmdW5jdGlvbihhKXtyZXR1cm4gJC5jYWxs
KGEpPT09IltvYmplY3QgQXJyYXldIn0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXtpZighYXx8
JC5jYWxsKGEpIT09IltvYmplY3QgT2JqZWN0XSJ8fGEubm9kZVR5cGV8fGEuc2V0SW50ZXJ2YWwp
cmV0dXJuIGZhbHNlO2lmKGEuY29uc3RydWN0b3ImJiFhYS5jYWxsKGEsImNvbnN0cnVjdG9yIikm
JiFhYS5jYWxsKGEuY29uc3RydWN0b3IucHJvdG90eXBlLAorImlzUHJvdG90eXBlT2YiKSlyZXR1
cm4gZmFsc2U7dmFyIGI7Zm9yKGIgaW4gYSk7cmV0dXJuIGI9PT13fHxhYS5jYWxsKGEsYil9LGlz
RW1wdHlPYmplY3Q6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiIGluIGEpcmV0dXJuIGZhbHNlO3JldHVy
biB0cnVlfSxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBhO30scGFyc2VKU09OOmZ1bmN0aW9uKGEp
e2lmKHR5cGVvZiBhIT09InN0cmluZyJ8fCFhKXJldHVybiBudWxsO2E9Yy50cmltKGEpO2lmKC9e
W1xdLDp7fVxzXSokLy50ZXN0KGEucmVwbGFjZSgvXFwoPzpbIlxcXC9iZm5ydF18dVswLTlhLWZB
LUZdezR9KS9nLCJAIikucmVwbGFjZSgvIlteIlxcXG5ccl0qInx0cnVlfGZhbHNlfG51bGx8LT9c
ZCsoPzpcLlxkKik/KD86W2VFXVsrXC1dP1xkKyk/L2csIl0iKS5yZXBsYWNlKC8oPzpefDp8LCko
PzpccypcWykrL2csIiIpKSlyZXR1cm4gQS5KU09OJiZBLkpTT04ucGFyc2U/QS5KU09OLnBhcnNl
KGEpOihuZXcgRnVuY3Rpb24oInJldHVybiAiKworYSkpKCk7ZWxzZSBjLmVycm9yKCJJbnZhbGlk
IEpTT046ICIrYSl9LG5vb3A6ZnVuY3Rpb24oKXt9LGdsb2JhbEV2YWw6ZnVuY3Rpb24oYSl7aWYo
YSYmVmEudGVzdChhKSl7dmFyIGI9cy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdfHxz
LmRvY3VtZW50RWxlbWVudCxkPXMuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7ZC50eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiO2lmKGMuc3VwcG9ydC5zY3JpcHRFdmFsKWQuYXBwZW5kQ2hpbGQocy5jcmVh
dGVUZXh0Tm9kZShhKSk7ZWxzZSBkLnRleHQ9YTtiLmluc2VydEJlZm9yZShkLGIuZmlyc3RDaGls
ZCk7Yi5yZW1vdmVDaGlsZChkKX19LG5vZGVOYW1lOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEubm9k
ZU5hbWUmJmEubm9kZU5hbWUudG9VcHBlckNhc2UoKT09PWIudG9VcHBlckNhc2UoKX0sZWFjaDpm
dW5jdGlvbihhLGIsZCl7dmFyIGYsZT0wLGo9YS5sZW5ndGgsaT1qPT09d3x8Yy5pc0Z1bmN0aW9u
KGEpO2lmKGQpaWYoaSlmb3IoZiBpbiBhKXtpZihiLmFwcGx5KGFbZl0sCitkKT09PWZhbHNlKWJy
ZWFrfWVsc2UgZm9yKDtlPGo7KXtpZihiLmFwcGx5KGFbZSsrXSxkKT09PWZhbHNlKWJyZWFrfWVs
c2UgaWYoaSlmb3IoZiBpbiBhKXtpZihiLmNhbGwoYVtmXSxmLGFbZl0pPT09ZmFsc2UpYnJlYWt9
ZWxzZSBmb3IoZD1hWzBdO2U8aiYmYi5jYWxsKGQsZSxkKSE9PWZhbHNlO2Q9YVsrK2VdKTtyZXR1
cm4gYX0sdHJpbTpmdW5jdGlvbihhKXtyZXR1cm4oYXx8IiIpLnJlcGxhY2UoV2EsIiIpfSxtYWtl
QXJyYXk6ZnVuY3Rpb24oYSxiKXtiPWJ8fFtdO2lmKGEhPW51bGwpYS5sZW5ndGg9PW51bGx8fHR5
cGVvZiBhPT09InN0cmluZyJ8fGMuaXNGdW5jdGlvbihhKXx8dHlwZW9mIGEhPT0iZnVuY3Rpb24i
JiZhLnNldEludGVydmFsP2JhLmNhbGwoYixhKTpjLm1lcmdlKGIsYSk7cmV0dXJuIGJ9LGluQXJy
YXk6ZnVuY3Rpb24oYSxiKXtpZihiLmluZGV4T2YpcmV0dXJuIGIuaW5kZXhPZihhKTtmb3IodmFy
IGQ9MCxmPWIubGVuZ3RoO2Q8ZjtkKyspaWYoYltkXT09PQorYSlyZXR1cm4gZDtyZXR1cm4tMX0s
bWVyZ2U6ZnVuY3Rpb24oYSxiKXt2YXIgZD1hLmxlbmd0aCxmPTA7aWYodHlwZW9mIGIubGVuZ3Ro
PT09Im51bWJlciIpZm9yKHZhciBlPWIubGVuZ3RoO2Y8ZTtmKyspYVtkKytdPWJbZl07ZWxzZSBm
b3IoO2JbZl0hPT13OylhW2QrK109YltmKytdO2EubGVuZ3RoPWQ7cmV0dXJuIGF9LGdyZXA6ZnVu
Y3Rpb24oYSxiLGQpe2Zvcih2YXIgZj1bXSxlPTAsaj1hLmxlbmd0aDtlPGo7ZSsrKSFkIT09IWIo
YVtlXSxlKSYmZi5wdXNoKGFbZV0pO3JldHVybiBmfSxtYXA6ZnVuY3Rpb24oYSxiLGQpe2Zvcih2
YXIgZj1bXSxlLGo9MCxpPWEubGVuZ3RoO2o8aTtqKyspe2U9YihhW2pdLGosZCk7aWYoZSE9bnVs
bClmW2YubGVuZ3RoXT1lfXJldHVybiBmLmNvbmNhdC5hcHBseShbXSxmKX0sZ3VpZDoxLHByb3h5
OmZ1bmN0aW9uKGEsYixkKXtpZihhcmd1bWVudHMubGVuZ3RoPT09MilpZih0eXBlb2YgYj09PSJz
dHJpbmciKXtkPWE7YT1kW2JdO2I9d31lbHNlIGlmKGImJgorIWMuaXNGdW5jdGlvbihiKSl7ZD1i
O2I9d31pZighYiYmYSliPWZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkoZHx8dGhpcyxhcmd1bWVu
dHMpfTtpZihhKWIuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxiLmd1aWR8fGMuZ3VpZCsrO3JldHVybiBi
fSx1YU1hdGNoOmZ1bmN0aW9uKGEpe2E9YS50b0xvd2VyQ2FzZSgpO2E9Lyh3ZWJraXQpWyBcL10o
W1x3Ll0rKS8uZXhlYyhhKXx8LyhvcGVyYSkoPzouKnZlcnNpb24pP1sgXC9dKFtcdy5dKykvLmV4
ZWMoYSl8fC8obXNpZSkgKFtcdy5dKykvLmV4ZWMoYSl8fCEvY29tcGF0aWJsZS8udGVzdChhKSYm
Lyhtb3ppbGxhKSg/Oi4qPyBydjooW1x3Ll0rKSk/Ly5leGVjKGEpfHxbXTtyZXR1cm57YnJvd3Nl
cjphWzFdfHwiIix2ZXJzaW9uOmFbMl18fCIwIn19LGJyb3dzZXI6e319KTtQPWMudWFNYXRjaChQ
KTtpZihQLmJyb3dzZXIpe2MuYnJvd3NlcltQLmJyb3dzZXJdPXRydWU7Yy5icm93c2VyLnZlcnNp
b249UC52ZXJzaW9ufWlmKGMuYnJvd3Nlci53ZWJraXQpYy5icm93c2VyLnNhZmFyaT0KK3RydWU7
aWYoeWEpYy5pbkFycmF5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHlhLmNhbGwoYixhKX07VD1jKHMp
O2lmKHMuYWRkRXZlbnRMaXN0ZW5lcilMPWZ1bmN0aW9uKCl7cy5yZW1vdmVFdmVudExpc3RlbmVy
KCJET01Db250ZW50TG9hZGVkIixMLGZhbHNlKTtjLnJlYWR5KCl9O2Vsc2UgaWYocy5hdHRhY2hF
dmVudClMPWZ1bmN0aW9uKCl7aWYocy5yZWFkeVN0YXRlPT09ImNvbXBsZXRlIil7cy5kZXRhY2hF
dmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixMKTtjLnJlYWR5KCl9fTsoZnVuY3Rpb24oKXtjLnN1
cHBvcnQ9e307dmFyIGE9cy5kb2N1bWVudEVsZW1lbnQsYj1zLmNyZWF0ZUVsZW1lbnQoInNjcmlw
dCIpLGQ9cy5jcmVhdGVFbGVtZW50KCJkaXYiKSxmPSJzY3JpcHQiK0ooKTtkLnN0eWxlLmRpc3Bs
YXk9Im5vbmUiO2QuaW5uZXJIVE1MPSIgICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0n
L2EnIHN0eWxlPSdjb2xvcjpyZWQ7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41NTsnPmE8L2E+PGlucHV0
IHR5cGU9J2NoZWNrYm94Jy8+IjsKK3ZhciBlPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSxq
PWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXTtpZighKCFlfHwhZS5sZW5ndGh8fCFqKSl7
Yy5zdXBwb3J0PXtsZWFkaW5nV2hpdGVzcGFjZTpkLmZpcnN0Q2hpbGQubm9kZVR5cGU9PT0zLHRi
b2R5OiFkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpLmxlbmd0aCxodG1sU2VyaWFsaXpl
OiEhZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxzdHlsZTovcmVkLy50ZXN0
KGouZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxocmVmTm9ybWFsaXplZDpqLmdldEF0dHJpYnV0ZSgi
aHJlZiIpPT09Ii9hIixvcGFjaXR5Oi9eMC41NSQvLnRlc3Qoai5zdHlsZS5vcGFjaXR5KSxjc3NG
bG9hdDohIWouc3R5bGUuY3NzRmxvYXQsY2hlY2tPbjpkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJp
bnB1dCIpWzBdLnZhbHVlPT09Im9uIixvcHRTZWxlY3RlZDpzLmNyZWF0ZUVsZW1lbnQoInNlbGVj
dCIpLmFwcGVuZENoaWxkKHMuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLnNlbGVjdGVkLAorcGFy
ZW50Tm9kZTpkLnJlbW92ZUNoaWxkKGQuYXBwZW5kQ2hpbGQocy5jcmVhdGVFbGVtZW50KCJkaXYi
KSkpLnBhcmVudE5vZGU9PT1udWxsLGRlbGV0ZUV4cGFuZG86dHJ1ZSxjaGVja0Nsb25lOmZhbHNl
LHNjcmlwdEV2YWw6ZmFsc2Usbm9DbG9uZUV2ZW50OnRydWUsYm94TW9kZWw6bnVsbH07Yi50eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiO3RyeXtiLmFwcGVuZENoaWxkKHMuY3JlYXRlVGV4dE5vZGUoIndp
bmRvdy4iK2YrIj0xOyIpKX1jYXRjaChpKXt9YS5pbnNlcnRCZWZvcmUoYixhLmZpcnN0Q2hpbGQp
O2lmKEFbZl0pe2Muc3VwcG9ydC5zY3JpcHRFdmFsPXRydWU7ZGVsZXRlIEFbZl19dHJ5e2RlbGV0
ZSBiLnRlc3R9Y2F0Y2gobyl7Yy5zdXBwb3J0LmRlbGV0ZUV4cGFuZG89ZmFsc2V9YS5yZW1vdmVD
aGlsZChiKTtpZihkLmF0dGFjaEV2ZW50JiZkLmZpcmVFdmVudCl7ZC5hdHRhY2hFdmVudCgib25j
bGljayIsZnVuY3Rpb24gaygpe2Muc3VwcG9ydC5ub0Nsb25lRXZlbnQ9CitmYWxzZTtkLmRldGFj
aEV2ZW50KCJvbmNsaWNrIixrKX0pO2QuY2xvbmVOb2RlKHRydWUpLmZpcmVFdmVudCgib25jbGlj
ayIpfWQ9cy5jcmVhdGVFbGVtZW50KCJkaXYiKTtkLmlubmVySFRNTD0iPGlucHV0IHR5cGU9J3Jh
ZGlvJyBuYW1lPSdyYWRpb3Rlc3QnIGNoZWNrZWQ9J2NoZWNrZWQnLz4iO2E9cy5jcmVhdGVEb2N1
bWVudEZyYWdtZW50KCk7YS5hcHBlbmRDaGlsZChkLmZpcnN0Q2hpbGQpO2Muc3VwcG9ydC5jaGVj
a0Nsb25lPWEuY2xvbmVOb2RlKHRydWUpLmNsb25lTm9kZSh0cnVlKS5sYXN0Q2hpbGQuY2hlY2tl
ZDtjKGZ1bmN0aW9uKCl7dmFyIGs9cy5jcmVhdGVFbGVtZW50KCJkaXYiKTtrLnN0eWxlLndpZHRo
PWsuc3R5bGUucGFkZGluZ0xlZnQ9IjFweCI7cy5ib2R5LmFwcGVuZENoaWxkKGspO2MuYm94TW9k
ZWw9Yy5zdXBwb3J0LmJveE1vZGVsPWsub2Zmc2V0V2lkdGg9PT0yO3MuYm9keS5yZW1vdmVDaGls
ZChrKS5zdHlsZS5kaXNwbGF5PSJub25lIn0pO2E9ZnVuY3Rpb24oayl7dmFyIG49CitzLmNyZWF0
ZUVsZW1lbnQoImRpdiIpO2s9Im9uIitrO3ZhciByPWsgaW4gbjtpZighcil7bi5zZXRBdHRyaWJ1
dGUoaywicmV0dXJuOyIpO3I9dHlwZW9mIG5ba109PT0iZnVuY3Rpb24ifXJldHVybiByfTtjLnN1
cHBvcnQuc3VibWl0QnViYmxlcz1hKCJzdWJtaXQiKTtjLnN1cHBvcnQuY2hhbmdlQnViYmxlcz1h
KCJjaGFuZ2UiKTthPWI9ZD1lPWo9bnVsbH19KSgpO2MucHJvcHM9eyJmb3IiOiJodG1sRm9yIiwi
Y2xhc3MiOiJjbGFzc05hbWUiLHJlYWRvbmx5OiJyZWFkT25seSIsbWF4bGVuZ3RoOiJtYXhMZW5n
dGgiLGNlbGxzcGFjaW5nOiJjZWxsU3BhY2luZyIscm93c3Bhbjoicm93U3BhbiIsY29sc3Bhbjoi
Y29sU3BhbiIsdGFiaW5kZXg6InRhYkluZGV4Iix1c2VtYXA6InVzZU1hcCIsZnJhbWVib3JkZXI6
ImZyYW1lQm9yZGVyIn07dmFyIEc9ImpRdWVyeSIrSigpLFlhPTAsemE9e307Yy5leHRlbmQoe2Nh
Y2hlOnt9LGV4cGFuZG86Ryxub0RhdGE6e2VtYmVkOnRydWUsb2JqZWN0OnRydWUsCithcHBsZXQ6
dHJ1ZX0sZGF0YTpmdW5jdGlvbihhLGIsZCl7aWYoIShhLm5vZGVOYW1lJiZjLm5vRGF0YVthLm5v
ZGVOYW1lLnRvTG93ZXJDYXNlKCldKSl7YT1hPT1BP3phOmE7dmFyIGY9YVtHXSxlPWMuY2FjaGU7
aWYoIWYmJnR5cGVvZiBiPT09InN0cmluZyImJmQ9PT13KXJldHVybiBudWxsO2Z8fChmPSsrWWEp
O2lmKHR5cGVvZiBiPT09Im9iamVjdCIpe2FbR109ZjtlW2ZdPWMuZXh0ZW5kKHRydWUse30sYil9
ZWxzZSBpZighZVtmXSl7YVtHXT1mO2VbZl09e319YT1lW2ZdO2lmKGQhPT13KWFbYl09ZDtyZXR1
cm4gdHlwZW9mIGI9PT0ic3RyaW5nIj9hW2JdOmF9fSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEsYil7
aWYoIShhLm5vZGVOYW1lJiZjLm5vRGF0YVthLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKSl7YT1h
PT1BP3phOmE7dmFyIGQ9YVtHXSxmPWMuY2FjaGUsZT1mW2RdO2lmKGIpe2lmKGUpe2RlbGV0ZSBl
W2JdO2MuaXNFbXB0eU9iamVjdChlKSYmYy5yZW1vdmVEYXRhKGEpfX1lbHNle2lmKGMuc3VwcG9y
dC5kZWxldGVFeHBhbmRvKWRlbGV0ZSBhW2MuZXhwYW5kb107CitlbHNlIGEucmVtb3ZlQXR0cmli
dXRlJiZhLnJlbW92ZUF0dHJpYnV0ZShjLmV4cGFuZG8pO2RlbGV0ZSBmW2RdfX19fSk7Yy5mbi5l
eHRlbmQoe2RhdGE6ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYT09PSJ1bmRlZmluZWQiJiZ0aGlz
Lmxlbmd0aClyZXR1cm4gYy5kYXRhKHRoaXNbMF0pO2Vsc2UgaWYodHlwZW9mIGE9PT0ib2JqZWN0
IilyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Yy5kYXRhKHRoaXMsYSl9KTt2YXIgZD1hLnNw
bGl0KCIuIik7ZFsxXT1kWzFdPyIuIitkWzFdOiIiO2lmKGI9PT13KXt2YXIgZj10aGlzLnRyaWdn
ZXJIYW5kbGVyKCJnZXREYXRhIitkWzFdKyIhIixbZFswXV0pO2lmKGY9PT13JiZ0aGlzLmxlbmd0
aClmPWMuZGF0YSh0aGlzWzBdLGEpO3JldHVybiBmPT09dyYmZFsxXT90aGlzLmRhdGEoZFswXSk6
Zn1lbHNlIHJldHVybiB0aGlzLnRyaWdnZXIoInNldERhdGEiK2RbMV0rIiEiLFtkWzBdLGJdKS5l
YWNoKGZ1bmN0aW9uKCl7Yy5kYXRhKHRoaXMsCithLGIpfSl9LHJlbW92ZURhdGE6ZnVuY3Rpb24o
YSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2MucmVtb3ZlRGF0YSh0aGlzLGEpfSl9fSk7
Yy5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYixkKXtpZihhKXtiPShifHwiZngiKSsicXVldWUi
O3ZhciBmPWMuZGF0YShhLGIpO2lmKCFkKXJldHVybiBmfHxbXTtpZighZnx8Yy5pc0FycmF5KGQp
KWY9Yy5kYXRhKGEsYixjLm1ha2VBcnJheShkKSk7ZWxzZSBmLnB1c2goZCk7cmV0dXJuIGZ9fSxk
ZXF1ZXVlOmZ1bmN0aW9uKGEsYil7Yj1ifHwiZngiO3ZhciBkPWMucXVldWUoYSxiKSxmPWQuc2hp
ZnQoKTtpZihmPT09ImlucHJvZ3Jlc3MiKWY9ZC5zaGlmdCgpO2lmKGYpe2I9PT0iZngiJiZkLnVu
c2hpZnQoImlucHJvZ3Jlc3MiKTtmLmNhbGwoYSxmdW5jdGlvbigpe2MuZGVxdWV1ZShhLGIpfSl9
fX0pO2MuZm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBhIT09InN0cmlu
ZyIpe2I9YTthPSJmeCJ9aWYoYj09PQordylyZXR1cm4gYy5xdWV1ZSh0aGlzWzBdLGEpO3JldHVy
biB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1jLnF1ZXVlKHRoaXMsYSxiKTthPT09ImZ4IiYm
ZFswXSE9PSJpbnByb2dyZXNzIiYmYy5kZXF1ZXVlKHRoaXMsYSl9KX0sZGVxdWV1ZTpmdW5jdGlv
bihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Yy5kZXF1ZXVlKHRoaXMsYSl9KX0sZGVs
YXk6ZnVuY3Rpb24oYSxiKXthPWMuZng/Yy5meC5zcGVlZHNbYV18fGE6YTtiPWJ8fCJmeCI7cmV0
dXJuIHRoaXMucXVldWUoYixmdW5jdGlvbigpe3ZhciBkPXRoaXM7c2V0VGltZW91dChmdW5jdGlv
bigpe2MuZGVxdWV1ZShkLGIpfSxhKX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0
aGlzLnF1ZXVlKGF8fCJmeCIsW10pfX0pO3ZhciBBYT0vW1xuXHRdL2csY2E9L1xzKy8sWmE9L1xy
L2csJGE9L2hyZWZ8c3JjfHN0eWxlLyxhYj0vKGJ1dHRvbnxpbnB1dCkvaSxiYj0vKGJ1dHRvbnxp
bnB1dHxvYmplY3R8c2VsZWN0fHRleHRhcmVhKS9pLAorY2I9L14oYXxhcmVhKSQvaSxCYT0vcmFk
aW98Y2hlY2tib3gvO2MuZm4uZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFgodGhp
cyxhLGIsdHJ1ZSxjLmF0dHIpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVh
Y2goZnVuY3Rpb24oKXtjLmF0dHIodGhpcyxhLCIiKTt0aGlzLm5vZGVUeXBlPT09MSYmdGhpcy5y
ZW1vdmVBdHRyaWJ1dGUoYSl9KX0sYWRkQ2xhc3M6ZnVuY3Rpb24oYSl7aWYoYy5pc0Z1bmN0aW9u
KGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24obil7dmFyIHI9Yyh0aGlzKTtyLmFkZENsYXNz
KGEuY2FsbCh0aGlzLG4sci5hdHRyKCJjbGFzcyIpKSl9KTtpZihhJiZ0eXBlb2YgYT09PSJzdHJp
bmciKWZvcih2YXIgYj0oYXx8IiIpLnNwbGl0KGNhKSxkPTAsZj10aGlzLmxlbmd0aDtkPGY7ZCsr
KXt2YXIgZT10aGlzW2RdO2lmKGUubm9kZVR5cGU9PT0xKWlmKGUuY2xhc3NOYW1lKXtmb3IodmFy
IGo9IiAiK2UuY2xhc3NOYW1lKyIgIiwKK2k9ZS5jbGFzc05hbWUsbz0wLGs9Yi5sZW5ndGg7bzxr
O28rKylpZihqLmluZGV4T2YoIiAiK2Jbb10rIiAiKTwwKWkrPSIgIitiW29dO2UuY2xhc3NOYW1l
PWMudHJpbShpKX1lbHNlIGUuY2xhc3NOYW1lPWF9cmV0dXJuIHRoaXN9LHJlbW92ZUNsYXNzOmZ1
bmN0aW9uKGEpe2lmKGMuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGsp
e3ZhciBuPWModGhpcyk7bi5yZW1vdmVDbGFzcyhhLmNhbGwodGhpcyxrLG4uYXR0cigiY2xhc3Mi
KSkpfSk7aWYoYSYmdHlwZW9mIGE9PT0ic3RyaW5nInx8YT09PXcpZm9yKHZhciBiPShhfHwiIiku
c3BsaXQoY2EpLGQ9MCxmPXRoaXMubGVuZ3RoO2Q8ZjtkKyspe3ZhciBlPXRoaXNbZF07aWYoZS5u
b2RlVHlwZT09PTEmJmUuY2xhc3NOYW1lKWlmKGEpe2Zvcih2YXIgaj0oIiAiK2UuY2xhc3NOYW1l
KyIgIikucmVwbGFjZShBYSwiICIpLGk9MCxvPWIubGVuZ3RoO2k8bztpKyspaj1qLnJlcGxhY2Uo
IiAiK2JbaV0rIiAiLAorIiAiKTtlLmNsYXNzTmFtZT1jLnRyaW0oail9ZWxzZSBlLmNsYXNzTmFt
ZT0iIn1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgZD10eXBlb2Yg
YSxmPXR5cGVvZiBiPT09ImJvb2xlYW4iO2lmKGMuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5l
YWNoKGZ1bmN0aW9uKGUpe3ZhciBqPWModGhpcyk7ai50b2dnbGVDbGFzcyhhLmNhbGwodGhpcyxl
LGouYXR0cigiY2xhc3MiKSxiKSxiKX0pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZihk
PT09InN0cmluZyIpZm9yKHZhciBlLGo9MCxpPWModGhpcyksbz1iLGs9YS5zcGxpdChjYSk7ZT1r
W2orK107KXtvPWY/bzohaS5oYXNDbGFzcyhlKTtpW28/ImFkZENsYXNzIjoicmVtb3ZlQ2xhc3Mi
XShlKX1lbHNlIGlmKGQ9PT0idW5kZWZpbmVkInx8ZD09PSJib29sZWFuIil7dGhpcy5jbGFzc05h
bWUmJmMuZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFtZSk7dGhpcy5jbGFz
c05hbWU9Cit0aGlzLmNsYXNzTmFtZXx8YT09PWZhbHNlPyIiOmMuZGF0YSh0aGlzLCJfX2NsYXNz
TmFtZV9fIil8fCIifX0pfSxoYXNDbGFzczpmdW5jdGlvbihhKXthPSIgIithKyIgIjtmb3IodmFy
IGI9MCxkPXRoaXMubGVuZ3RoO2I8ZDtiKyspaWYoKCIgIit0aGlzW2JdLmNsYXNzTmFtZSsiICIp
LnJlcGxhY2UoQWEsIiAiKS5pbmRleE9mKGEpPi0xKXJldHVybiB0cnVlO3JldHVybiBmYWxzZX0s
dmFsOmZ1bmN0aW9uKGEpe2lmKGE9PT13KXt2YXIgYj10aGlzWzBdO2lmKGIpe2lmKGMubm9kZU5h
bWUoYiwib3B0aW9uIikpcmV0dXJuKGIuYXR0cmlidXRlcy52YWx1ZXx8e30pLnNwZWNpZmllZD9i
LnZhbHVlOmIudGV4dDtpZihjLm5vZGVOYW1lKGIsInNlbGVjdCIpKXt2YXIgZD1iLnNlbGVjdGVk
SW5kZXgsZj1bXSxlPWIub3B0aW9ucztiPWIudHlwZT09PSJzZWxlY3Qtb25lIjtpZihkPDApcmV0
dXJuIG51bGw7dmFyIGo9Yj9kOjA7Zm9yKGQ9Yj9kKzE6ZS5sZW5ndGg7ajxkO2orKyl7dmFyIGk9
CitlW2pdO2lmKGkuc2VsZWN0ZWQpe2E9YyhpKS52YWwoKTtpZihiKXJldHVybiBhO2YucHVzaChh
KX19cmV0dXJuIGZ9aWYoQmEudGVzdChiLnR5cGUpJiYhYy5zdXBwb3J0LmNoZWNrT24pcmV0dXJu
IGIuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpPT09bnVsbD8ib24iOmIudmFsdWU7cmV0dXJuKGIudmFs
dWV8fCIiKS5yZXBsYWNlKFphLCIiKX1yZXR1cm4gd312YXIgbz1jLmlzRnVuY3Rpb24oYSk7cmV0
dXJuIHRoaXMuZWFjaChmdW5jdGlvbihrKXt2YXIgbj1jKHRoaXMpLHI9YTtpZih0aGlzLm5vZGVU
eXBlPT09MSl7aWYobylyPWEuY2FsbCh0aGlzLGssbi52YWwoKSk7aWYodHlwZW9mIHI9PT0ibnVt
YmVyIilyKz0iIjtpZihjLmlzQXJyYXkocikmJkJhLnRlc3QodGhpcy50eXBlKSl0aGlzLmNoZWNr
ZWQ9Yy5pbkFycmF5KG4udmFsKCkscik+PTA7ZWxzZSBpZihjLm5vZGVOYW1lKHRoaXMsInNlbGVj
dCIpKXt2YXIgdT1jLm1ha2VBcnJheShyKTtjKCJvcHRpb24iLHRoaXMpLmVhY2goZnVuY3Rpb24o
KXt0aGlzLnNlbGVjdGVkPQorYy5pbkFycmF5KGModGhpcykudmFsKCksdSk+PTB9KTtpZighdS5s
ZW5ndGgpdGhpcy5zZWxlY3RlZEluZGV4PS0xfWVsc2UgdGhpcy52YWx1ZT1yfX0pfX0pO2MuZXh0
ZW5kKHthdHRyRm46e3ZhbDp0cnVlLGNzczp0cnVlLGh0bWw6dHJ1ZSx0ZXh0OnRydWUsZGF0YTp0
cnVlLHdpZHRoOnRydWUsaGVpZ2h0OnRydWUsb2Zmc2V0OnRydWV9LGF0dHI6ZnVuY3Rpb24oYSxi
LGQsZil7aWYoIWF8fGEubm9kZVR5cGU9PT0zfHxhLm5vZGVUeXBlPT09OClyZXR1cm4gdztpZihm
JiZiIGluIGMuYXR0ckZuKXJldHVybiBjKGEpW2JdKGQpO2Y9YS5ub2RlVHlwZSE9PTF8fCFjLmlz
WE1MRG9jKGEpO3ZhciBlPWQhPT13O2I9ZiYmYy5wcm9wc1tiXXx8YjtpZihhLm5vZGVUeXBlPT09
MSl7dmFyIGo9JGEudGVzdChiKTtpZihiIGluIGEmJmYmJiFqKXtpZihlKXtiPT09InR5cGUiJiZh
Yi50ZXN0KGEubm9kZU5hbWUpJiZhLnBhcmVudE5vZGUmJmMuZXJyb3IoInR5cGUgcHJvcGVydHkg
Y2FuJ3QgYmUgY2hhbmdlZCIpOworYVtiXT1kfWlmKGMubm9kZU5hbWUoYSwiZm9ybSIpJiZhLmdl
dEF0dHJpYnV0ZU5vZGUoYikpcmV0dXJuIGEuZ2V0QXR0cmlidXRlTm9kZShiKS5ub2RlVmFsdWU7
aWYoYj09PSJ0YWJJbmRleCIpcmV0dXJuKGI9YS5nZXRBdHRyaWJ1dGVOb2RlKCJ0YWJJbmRleCIp
KSYmYi5zcGVjaWZpZWQ/Yi52YWx1ZTpiYi50ZXN0KGEubm9kZU5hbWUpfHxjYi50ZXN0KGEubm9k
ZU5hbWUpJiZhLmhyZWY/MDp3O3JldHVybiBhW2JdfWlmKCFjLnN1cHBvcnQuc3R5bGUmJmYmJmI9
PT0ic3R5bGUiKXtpZihlKWEuc3R5bGUuY3NzVGV4dD0iIitkO3JldHVybiBhLnN0eWxlLmNzc1Rl
eHR9ZSYmYS5zZXRBdHRyaWJ1dGUoYiwiIitkKTthPSFjLnN1cHBvcnQuaHJlZk5vcm1hbGl6ZWQm
JmYmJmo/YS5nZXRBdHRyaWJ1dGUoYiwyKTphLmdldEF0dHJpYnV0ZShiKTtyZXR1cm4gYT09PW51
bGw/dzphfXJldHVybiBjLnN0eWxlKGEsYixkKX19KTt2YXIgTz0vXC4oLiopJC8sZGI9ZnVuY3Rp
b24oYSl7cmV0dXJuIGEucmVwbGFjZSgvW15cd1xzXC5cfGBdL2csCitmdW5jdGlvbihiKXtyZXR1
cm4iXFwiK2J9KX07Yy5ldmVudD17YWRkOmZ1bmN0aW9uKGEsYixkLGYpe2lmKCEoYS5ub2RlVHlw
ZT09PTN8fGEubm9kZVR5cGU9PT04KSl7aWYoYS5zZXRJbnRlcnZhbCYmYSE9PUEmJiFhLmZyYW1l
RWxlbWVudClhPUE7dmFyIGUsajtpZihkLmhhbmRsZXIpe2U9ZDtkPWUuaGFuZGxlcn1pZighZC5n
dWlkKWQuZ3VpZD1jLmd1aWQrKztpZihqPWMuZGF0YShhKSl7dmFyIGk9ai5ldmVudHM9ai5ldmVu
dHN8fHt9LG89ai5oYW5kbGU7aWYoIW8pai5oYW5kbGU9bz1mdW5jdGlvbigpe3JldHVybiB0eXBl
b2YgYyE9PSJ1bmRlZmluZWQiJiYhYy5ldmVudC50cmlnZ2VyZWQ/Yy5ldmVudC5oYW5kbGUuYXBw
bHkoby5lbGVtLGFyZ3VtZW50cyk6d307by5lbGVtPWE7Yj1iLnNwbGl0KCIgIik7Zm9yKHZhciBr
LG49MCxyO2s9YltuKytdOyl7aj1lP2MuZXh0ZW5kKHt9LGUpOntoYW5kbGVyOmQsZGF0YTpmfTtp
ZihrLmluZGV4T2YoIi4iKT4tMSl7cj1rLnNwbGl0KCIuIik7CitrPXIuc2hpZnQoKTtqLm5hbWVz
cGFjZT1yLnNsaWNlKDApLnNvcnQoKS5qb2luKCIuIil9ZWxzZXtyPVtdO2oubmFtZXNwYWNlPSIi
fWoudHlwZT1rO2ouZ3VpZD1kLmd1aWQ7dmFyIHU9aVtrXSx6PWMuZXZlbnQuc3BlY2lhbFtrXXx8
e307aWYoIXUpe3U9aVtrXT1bXTtpZighei5zZXR1cHx8ei5zZXR1cC5jYWxsKGEsZixyLG8pPT09
ZmFsc2UpaWYoYS5hZGRFdmVudExpc3RlbmVyKWEuYWRkRXZlbnRMaXN0ZW5lcihrLG8sZmFsc2Up
O2Vsc2UgYS5hdHRhY2hFdmVudCYmYS5hdHRhY2hFdmVudCgib24iK2ssbyl9aWYoei5hZGQpe3ou
YWRkLmNhbGwoYSxqKTtpZighai5oYW5kbGVyLmd1aWQpai5oYW5kbGVyLmd1aWQ9ZC5ndWlkfXUu
cHVzaChqKTtjLmV2ZW50Lmdsb2JhbFtrXT10cnVlfWE9bnVsbH19fSxnbG9iYWw6e30scmVtb3Zl
OmZ1bmN0aW9uKGEsYixkLGYpe2lmKCEoYS5ub2RlVHlwZT09PTN8fGEubm9kZVR5cGU9PT04KSl7
dmFyIGUsaj0wLGksbyxrLG4scix1LHo9Yy5kYXRhKGEpLAorQz16JiZ6LmV2ZW50cztpZih6JiZD
KXtpZihiJiZiLnR5cGUpe2Q9Yi5oYW5kbGVyO2I9Yi50eXBlfWlmKCFifHx0eXBlb2YgYj09PSJz
dHJpbmciJiZiLmNoYXJBdCgwKT09PSIuIil7Yj1ifHwiIjtmb3IoZSBpbiBDKWMuZXZlbnQucmVt
b3ZlKGEsZStiKX1lbHNle2ZvcihiPWIuc3BsaXQoIiAiKTtlPWJbaisrXTspe249ZTtpPWUuaW5k
ZXhPZigiLiIpPDA7bz1bXTtpZighaSl7bz1lLnNwbGl0KCIuIik7ZT1vLnNoaWZ0KCk7az1uZXcg
UmVnRXhwKCIoXnxcXC4pIitjLm1hcChvLnNsaWNlKDApLnNvcnQoKSxkYikuam9pbigiXFwuKD86
LipcXC4pPyIpKyIoXFwufCQpIil9aWYocj1DW2VdKWlmKGQpe249Yy5ldmVudC5zcGVjaWFsW2Vd
fHx7fTtmb3IoQj1mfHwwO0I8ci5sZW5ndGg7QisrKXt1PXJbQl07aWYoZC5ndWlkPT09dS5ndWlk
KXtpZihpfHxrLnRlc3QodS5uYW1lc3BhY2UpKXtmPT1udWxsJiZyLnNwbGljZShCLS0sMSk7bi5y
ZW1vdmUmJm4ucmVtb3ZlLmNhbGwoYSx1KX1pZihmIT0KK251bGwpYnJlYWt9fWlmKHIubGVuZ3Ro
PT09MHx8ZiE9bnVsbCYmci5sZW5ndGg9PT0xKXtpZighbi50ZWFyZG93bnx8bi50ZWFyZG93bi5j
YWxsKGEsbyk9PT1mYWxzZSlDYShhLGUsei5oYW5kbGUpO2RlbGV0ZSBDW2VdfX1lbHNlIGZvcih2
YXIgQj0wO0I8ci5sZW5ndGg7QisrKXt1PXJbQl07aWYoaXx8ay50ZXN0KHUubmFtZXNwYWNlKSl7
Yy5ldmVudC5yZW1vdmUoYSxuLHUuaGFuZGxlcixCKTtyLnNwbGljZShCLS0sMSl9fX1pZihjLmlz
RW1wdHlPYmplY3QoQykpe2lmKGI9ei5oYW5kbGUpYi5lbGVtPW51bGw7ZGVsZXRlIHouZXZlbnRz
O2RlbGV0ZSB6LmhhbmRsZTtjLmlzRW1wdHlPYmplY3QoeikmJmMucmVtb3ZlRGF0YShhKX19fX19
LHRyaWdnZXI6ZnVuY3Rpb24oYSxiLGQsZil7dmFyIGU9YS50eXBlfHxhO2lmKCFmKXthPXR5cGVv
ZiBhPT09Im9iamVjdCI/YVtHXT9hOmMuZXh0ZW5kKGMuRXZlbnQoZSksYSk6Yy5FdmVudChlKTtp
ZihlLmluZGV4T2YoIiEiKT49MCl7YS50eXBlPQorZT1lLnNsaWNlKDAsLTEpO2EuZXhjbHVzaXZl
PXRydWV9aWYoIWQpe2Euc3RvcFByb3BhZ2F0aW9uKCk7Yy5ldmVudC5nbG9iYWxbZV0mJmMuZWFj
aChjLmNhY2hlLGZ1bmN0aW9uKCl7dGhpcy5ldmVudHMmJnRoaXMuZXZlbnRzW2VdJiZjLmV2ZW50
LnRyaWdnZXIoYSxiLHRoaXMuaGFuZGxlLmVsZW0pfSl9aWYoIWR8fGQubm9kZVR5cGU9PT0zfHxk
Lm5vZGVUeXBlPT09OClyZXR1cm4gdzthLnJlc3VsdD13O2EudGFyZ2V0PWQ7Yj1jLm1ha2VBcnJh
eShiKTtiLnVuc2hpZnQoYSl9YS5jdXJyZW50VGFyZ2V0PWQ7KGY9Yy5kYXRhKGQsImhhbmRsZSIp
KSYmZi5hcHBseShkLGIpO2Y9ZC5wYXJlbnROb2RlfHxkLm93bmVyRG9jdW1lbnQ7dHJ5e2lmKCEo
ZCYmZC5ub2RlTmFtZSYmYy5ub0RhdGFbZC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkpaWYoZFsi
b24iK2VdJiZkWyJvbiIrZV0uYXBwbHkoZCxiKT09PWZhbHNlKWEucmVzdWx0PWZhbHNlfWNhdGNo
KGope31pZighYS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpJiYKK2YpYy5ldmVudC50cmlnZ2VyKGEs
YixmLHRydWUpO2Vsc2UgaWYoIWEuaXNEZWZhdWx0UHJldmVudGVkKCkpe2Y9YS50YXJnZXQ7dmFy
IGksbz1jLm5vZGVOYW1lKGYsImEiKSYmZT09PSJjbGljayIsaz1jLmV2ZW50LnNwZWNpYWxbZV18
fHt9O2lmKCghay5fZGVmYXVsdHx8ay5fZGVmYXVsdC5jYWxsKGQsYSk9PT1mYWxzZSkmJiFvJiYh
KGYmJmYubm9kZU5hbWUmJmMubm9EYXRhW2Yubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pKXt0cnl7
aWYoZltlXSl7aWYoaT1mWyJvbiIrZV0pZlsib24iK2VdPW51bGw7Yy5ldmVudC50cmlnZ2VyZWQ9
dHJ1ZTtmW2VdKCl9fWNhdGNoKG4pe31pZihpKWZbIm9uIitlXT1pO2MuZXZlbnQudHJpZ2dlcmVk
PWZhbHNlfX19LGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYixkLGYsZTthPWFyZ3VtZW50c1swXT1j
LmV2ZW50LmZpeChhfHxBLmV2ZW50KTthLmN1cnJlbnRUYXJnZXQ9dGhpcztiPWEudHlwZS5pbmRl
eE9mKCIuIik8MCYmIWEuZXhjbHVzaXZlOworaWYoIWIpe2Q9YS50eXBlLnNwbGl0KCIuIik7YS50
eXBlPWQuc2hpZnQoKTtmPW5ldyBSZWdFeHAoIihefFxcLikiK2Quc2xpY2UoMCkuc29ydCgpLmpv
aW4oIlxcLig/Oi4qXFwuKT8iKSsiKFxcLnwkKSIpfWU9Yy5kYXRhKHRoaXMsImV2ZW50cyIpO2Q9
ZVthLnR5cGVdO2lmKGUmJmQpe2Q9ZC5zbGljZSgwKTtlPTA7Zm9yKHZhciBqPWQubGVuZ3RoO2U8
ajtlKyspe3ZhciBpPWRbZV07aWYoYnx8Zi50ZXN0KGkubmFtZXNwYWNlKSl7YS5oYW5kbGVyPWku
aGFuZGxlcjthLmRhdGE9aS5kYXRhO2EuaGFuZGxlT2JqPWk7aT1pLmhhbmRsZXIuYXBwbHkodGhp
cyxhcmd1bWVudHMpO2lmKGkhPT13KXthLnJlc3VsdD1pO2lmKGk9PT1mYWxzZSl7YS5wcmV2ZW50
RGVmYXVsdCgpO2Euc3RvcFByb3BhZ2F0aW9uKCl9fWlmKGEuaXNJbW1lZGlhdGVQcm9wYWdhdGlv
blN0b3BwZWQoKSlicmVha319fXJldHVybiBhLnJlc3VsdH0scHJvcHM6ImFsdEtleSBhdHRyQ2hh
bmdlIGF0dHJOYW1lIGJ1YmJsZXMgYnV0dG9uIGNhbmNlbGFibGUgY2hhckNvZGUgY2xpZW50WCBj
bGllbnRZIGN0cmxLZXkgY3VycmVudFRhcmdldCBkYXRhIGRldGFpbCBldmVudFBoYXNlIGZyb21F
bGVtZW50IGhhbmRsZXIga2V5Q29kZSBsYXllclggbGF5ZXJZIG1ldGFLZXkgbmV3VmFsdWUgb2Zm
c2V0WCBvZmZzZXRZIG9yaWdpbmFsVGFyZ2V0IHBhZ2VYIHBhZ2VZIHByZXZWYWx1ZSByZWxhdGVk
Tm9kZSByZWxhdGVkVGFyZ2V0IHNjcmVlblggc2NyZWVuWSBzaGlmdEtleSBzcmNFbGVtZW50IHRh
cmdldCB0b0VsZW1lbnQgdmlldyB3aGVlbERlbHRhIHdoaWNoIi5zcGxpdCgiICIpLAorZml4OmZ1
bmN0aW9uKGEpe2lmKGFbR10pcmV0dXJuIGE7dmFyIGI9YTthPWMuRXZlbnQoYik7Zm9yKHZhciBk
PXRoaXMucHJvcHMubGVuZ3RoLGY7ZDspe2Y9dGhpcy5wcm9wc1stLWRdO2FbZl09YltmXX1pZigh
YS50YXJnZXQpYS50YXJnZXQ9YS5zcmNFbGVtZW50fHxzO2lmKGEudGFyZ2V0Lm5vZGVUeXBlPT09
MylhLnRhcmdldD1hLnRhcmdldC5wYXJlbnROb2RlO2lmKCFhLnJlbGF0ZWRUYXJnZXQmJmEuZnJv
bUVsZW1lbnQpYS5yZWxhdGVkVGFyZ2V0PWEuZnJvbUVsZW1lbnQ9PT1hLnRhcmdldD9hLnRvRWxl
bWVudDphLmZyb21FbGVtZW50O2lmKGEucGFnZVg9PW51bGwmJmEuY2xpZW50WCE9bnVsbCl7Yj1z
LmRvY3VtZW50RWxlbWVudDtkPXMuYm9keTthLnBhZ2VYPWEuY2xpZW50WCsoYiYmYi5zY3JvbGxM
ZWZ0fHxkJiZkLnNjcm9sbExlZnR8fDApLShiJiZiLmNsaWVudExlZnR8fGQmJmQuY2xpZW50TGVm
dHx8MCk7YS5wYWdlWT1hLmNsaWVudFkrKGImJmIuc2Nyb2xsVG9wfHwKK2QmJmQuc2Nyb2xsVG9w
fHwwKS0oYiYmYi5jbGllbnRUb3B8fGQmJmQuY2xpZW50VG9wfHwwKX1pZighYS53aGljaCYmKGEu
Y2hhckNvZGV8fGEuY2hhckNvZGU9PT0wP2EuY2hhckNvZGU6YS5rZXlDb2RlKSlhLndoaWNoPWEu
Y2hhckNvZGV8fGEua2V5Q29kZTtpZighYS5tZXRhS2V5JiZhLmN0cmxLZXkpYS5tZXRhS2V5PWEu
Y3RybEtleTtpZighYS53aGljaCYmYS5idXR0b24hPT13KWEud2hpY2g9YS5idXR0b24mMT8xOmEu
YnV0dG9uJjI/MzphLmJ1dHRvbiY0PzI6MDtyZXR1cm4gYX0sZ3VpZDoxRTgscHJveHk6Yy5wcm94
eSxzcGVjaWFsOntyZWFkeTp7c2V0dXA6Yy5iaW5kUmVhZHksdGVhcmRvd246Yy5ub29wfSxsaXZl
OnthZGQ6ZnVuY3Rpb24oYSl7Yy5ldmVudC5hZGQodGhpcyxhLm9yaWdUeXBlLGMuZXh0ZW5kKHt9
LGEse2hhbmRsZXI6b2F9KSl9LHJlbW92ZTpmdW5jdGlvbihhKXt2YXIgYj10cnVlLGQ9YS5vcmln
VHlwZS5yZXBsYWNlKE8sIiIpO2MuZWFjaChjLmRhdGEodGhpcywKKyJldmVudHMiKS5saXZlfHxb
XSxmdW5jdGlvbigpe2lmKGQ9PT10aGlzLm9yaWdUeXBlLnJlcGxhY2UoTywiIikpcmV0dXJuIGI9
ZmFsc2V9KTtiJiZjLmV2ZW50LnJlbW92ZSh0aGlzLGEub3JpZ1R5cGUsb2EpfX0sYmVmb3JldW5s
b2FkOntzZXR1cDpmdW5jdGlvbihhLGIsZCl7aWYodGhpcy5zZXRJbnRlcnZhbCl0aGlzLm9uYmVm
b3JldW5sb2FkPWQ7cmV0dXJuIGZhbHNlfSx0ZWFyZG93bjpmdW5jdGlvbihhLGIpe2lmKHRoaXMu
b25iZWZvcmV1bmxvYWQ9PT1iKXRoaXMub25iZWZvcmV1bmxvYWQ9bnVsbH19fX07dmFyIENhPXMu
cmVtb3ZlRXZlbnRMaXN0ZW5lcj9mdW5jdGlvbihhLGIsZCl7YS5yZW1vdmVFdmVudExpc3RlbmVy
KGIsZCxmYWxzZSl9OmZ1bmN0aW9uKGEsYixkKXthLmRldGFjaEV2ZW50KCJvbiIrYixkKX07Yy5F
dmVudD1mdW5jdGlvbihhKXtpZighdGhpcy5wcmV2ZW50RGVmYXVsdClyZXR1cm4gbmV3IGMuRXZl
bnQoYSk7aWYoYSYmYS50eXBlKXt0aGlzLm9yaWdpbmFsRXZlbnQ9CithO3RoaXMudHlwZT1hLnR5
cGV9ZWxzZSB0aGlzLnR5cGU9YTt0aGlzLnRpbWVTdGFtcD1KKCk7dGhpc1tHXT10cnVlfTtjLkV2
ZW50LnByb3RvdHlwZT17cHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt0aGlzLmlzRGVmYXVsdFBy
ZXZlbnRlZD1aO3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDtpZihhKXthLnByZXZlbnREZWZhdWx0
JiZhLnByZXZlbnREZWZhdWx0KCk7YS5yZXR1cm5WYWx1ZT1mYWxzZX19LHN0b3BQcm9wYWdhdGlv
bjpmdW5jdGlvbigpe3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9Wjt2YXIgYT10aGlzLm9yaWdp
bmFsRXZlbnQ7aWYoYSl7YS5zdG9wUHJvcGFnYXRpb24mJmEuc3RvcFByb3BhZ2F0aW9uKCk7YS5j
YW5jZWxCdWJibGU9dHJ1ZX19LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3Ro
aXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9Wjt0aGlzLnN0b3BQcm9wYWdhdGlvbigp
fSxpc0RlZmF1bHRQcmV2ZW50ZWQ6WSxpc1Byb3BhZ2F0aW9uU3RvcHBlZDpZLAoraXNJbW1lZGlh
dGVQcm9wYWdhdGlvblN0b3BwZWQ6WX07dmFyIERhPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVsYXRl
ZFRhcmdldDt0cnl7Zm9yKDtiJiZiIT09dGhpczspYj1iLnBhcmVudE5vZGU7aWYoYiE9PXRoaXMp
e2EudHlwZT1hLmRhdGE7Yy5ldmVudC5oYW5kbGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1jYXRj
aChkKXt9fSxFYT1mdW5jdGlvbihhKXthLnR5cGU9YS5kYXRhO2MuZXZlbnQuaGFuZGxlLmFwcGx5
KHRoaXMsYXJndW1lbnRzKX07Yy5lYWNoKHttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVh
dmU6Im1vdXNlb3V0In0sZnVuY3Rpb24oYSxiKXtjLmV2ZW50LnNwZWNpYWxbYV09e3NldHVwOmZ1
bmN0aW9uKGQpe2MuZXZlbnQuYWRkKHRoaXMsYixkJiZkLnNlbGVjdG9yP0VhOkRhLGEpfSx0ZWFy
ZG93bjpmdW5jdGlvbihkKXtjLmV2ZW50LnJlbW92ZSh0aGlzLGIsZCYmZC5zZWxlY3Rvcj9FYTpE
YSl9fX0pO2lmKCFjLnN1cHBvcnQuc3VibWl0QnViYmxlcyljLmV2ZW50LnNwZWNpYWwuc3VibWl0
PQore3NldHVwOmZ1bmN0aW9uKCl7aWYodGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIT09ImZv
cm0iKXtjLmV2ZW50LmFkZCh0aGlzLCJjbGljay5zcGVjaWFsU3VibWl0IixmdW5jdGlvbihhKXt2
YXIgYj1hLnRhcmdldCxkPWIudHlwZTtpZigoZD09PSJzdWJtaXQifHxkPT09ImltYWdlIikmJmMo
YikuY2xvc2VzdCgiZm9ybSIpLmxlbmd0aClyZXR1cm4gbmEoInN1Ym1pdCIsdGhpcyxhcmd1bWVu
dHMpfSk7Yy5ldmVudC5hZGQodGhpcywia2V5cHJlc3Muc3BlY2lhbFN1Ym1pdCIsZnVuY3Rpb24o
YSl7dmFyIGI9YS50YXJnZXQsZD1iLnR5cGU7aWYoKGQ9PT0idGV4dCJ8fGQ9PT0icGFzc3dvcmQi
KSYmYyhiKS5jbG9zZXN0KCJmb3JtIikubGVuZ3RoJiZhLmtleUNvZGU9PT0xMylyZXR1cm4gbmEo
InN1Ym1pdCIsdGhpcyxhcmd1bWVudHMpfSl9ZWxzZSByZXR1cm4gZmFsc2V9LHRlYXJkb3duOmZ1
bmN0aW9uKCl7Yy5ldmVudC5yZW1vdmUodGhpcywiLnNwZWNpYWxTdWJtaXQiKX19OworaWYoIWMu
c3VwcG9ydC5jaGFuZ2VCdWJibGVzKXt2YXIgZGE9L3RleHRhcmVhfGlucHV0fHNlbGVjdC9pLGVh
LEZhPWZ1bmN0aW9uKGEpe3ZhciBiPWEudHlwZSxkPWEudmFsdWU7aWYoYj09PSJyYWRpbyJ8fGI9
PT0iY2hlY2tib3giKWQ9YS5jaGVja2VkO2Vsc2UgaWYoYj09PSJzZWxlY3QtbXVsdGlwbGUiKWQ9
YS5zZWxlY3RlZEluZGV4Pi0xP2MubWFwKGEub3B0aW9ucyxmdW5jdGlvbihmKXtyZXR1cm4gZi5z
ZWxlY3RlZH0pLmpvaW4oIi0iKToiIjtlbHNlIGlmKGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09
PSJzZWxlY3QiKWQ9YS5zZWxlY3RlZEluZGV4O3JldHVybiBkfSxmYT1mdW5jdGlvbihhLGIpe3Zh
ciBkPWEudGFyZ2V0LGYsZTtpZighKCFkYS50ZXN0KGQubm9kZU5hbWUpfHxkLnJlYWRPbmx5KSl7
Zj1jLmRhdGEoZCwiX2NoYW5nZV9kYXRhIik7ZT1GYShkKTtpZihhLnR5cGUhPT0iZm9jdXNvdXQi
fHxkLnR5cGUhPT0icmFkaW8iKWMuZGF0YShkLCJfY2hhbmdlX2RhdGEiLAorZSk7aWYoIShmPT09
d3x8ZT09PWYpKWlmKGYhPW51bGx8fGUpe2EudHlwZT0iY2hhbmdlIjtyZXR1cm4gYy5ldmVudC50
cmlnZ2VyKGEsYixkKX19fTtjLmV2ZW50LnNwZWNpYWwuY2hhbmdlPXtmaWx0ZXJzOntmb2N1c291
dDpmYSxjbGljazpmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldCxkPWIudHlwZTtpZihkPT09InJh
ZGlvInx8ZD09PSJjaGVja2JveCJ8fGIubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJzZWxlY3Qi
KXJldHVybiBmYS5jYWxsKHRoaXMsYSl9LGtleWRvd246ZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJn
ZXQsZD1iLnR5cGU7aWYoYS5rZXlDb2RlPT09MTMmJmIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9
PSJ0ZXh0YXJlYSJ8fGEua2V5Q29kZT09PTMyJiYoZD09PSJjaGVja2JveCJ8fGQ9PT0icmFkaW8i
KXx8ZD09PSJzZWxlY3QtbXVsdGlwbGUiKXJldHVybiBmYS5jYWxsKHRoaXMsYSl9LGJlZm9yZWFj
dGl2YXRlOmZ1bmN0aW9uKGEpe2E9YS50YXJnZXQ7Yy5kYXRhKGEsCisiX2NoYW5nZV9kYXRhIixG
YShhKSl9fSxzZXR1cDpmdW5jdGlvbigpe2lmKHRoaXMudHlwZT09PSJmaWxlIilyZXR1cm4gZmFs
c2U7Zm9yKHZhciBhIGluIGVhKWMuZXZlbnQuYWRkKHRoaXMsYSsiLnNwZWNpYWxDaGFuZ2UiLGVh
W2FdKTtyZXR1cm4gZGEudGVzdCh0aGlzLm5vZGVOYW1lKX0sdGVhcmRvd246ZnVuY3Rpb24oKXtj
LmV2ZW50LnJlbW92ZSh0aGlzLCIuc3BlY2lhbENoYW5nZSIpO3JldHVybiBkYS50ZXN0KHRoaXMu
bm9kZU5hbWUpfX07ZWE9Yy5ldmVudC5zcGVjaWFsLmNoYW5nZS5maWx0ZXJzfXMuYWRkRXZlbnRM
aXN0ZW5lciYmYy5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlv
bihhLGIpe2Z1bmN0aW9uIGQoZil7Zj1jLmV2ZW50LmZpeChmKTtmLnR5cGU9YjtyZXR1cm4gYy5l
dmVudC5oYW5kbGUuY2FsbCh0aGlzLGYpfWMuZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rp
b24oKXt0aGlzLmFkZEV2ZW50TGlzdGVuZXIoYSwKK2QsdHJ1ZSl9LHRlYXJkb3duOmZ1bmN0aW9u
KCl7dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGEsZCx0cnVlKX19fSk7Yy5lYWNoKFsiYmluZCIs
Im9uZSJdLGZ1bmN0aW9uKGEsYil7Yy5mbltiXT1mdW5jdGlvbihkLGYsZSl7aWYodHlwZW9mIGQ9
PT0ib2JqZWN0Iil7Zm9yKHZhciBqIGluIGQpdGhpc1tiXShqLGYsZFtqXSxlKTtyZXR1cm4gdGhp
c31pZihjLmlzRnVuY3Rpb24oZikpe2U9ZjtmPXd9dmFyIGk9Yj09PSJvbmUiP2MucHJveHkoZSxm
dW5jdGlvbihrKXtjKHRoaXMpLnVuYmluZChrLGkpO3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1l
bnRzKX0pOmU7aWYoZD09PSJ1bmxvYWQiJiZiIT09Im9uZSIpdGhpcy5vbmUoZCxmLGUpO2Vsc2V7
aj0wO2Zvcih2YXIgbz10aGlzLmxlbmd0aDtqPG87aisrKWMuZXZlbnQuYWRkKHRoaXNbal0sZCxp
LGYpfXJldHVybiB0aGlzfX0pO2MuZm4uZXh0ZW5kKHt1bmJpbmQ6ZnVuY3Rpb24oYSxiKXtpZih0
eXBlb2YgYT09PSJvYmplY3QiJiYKKyFhLnByZXZlbnREZWZhdWx0KWZvcih2YXIgZCBpbiBhKXRo
aXMudW5iaW5kKGQsYVtkXSk7ZWxzZXtkPTA7Zm9yKHZhciBmPXRoaXMubGVuZ3RoO2Q8ZjtkKysp
Yy5ldmVudC5yZW1vdmUodGhpc1tkXSxhLGIpfXJldHVybiB0aGlzfSxkZWxlZ2F0ZTpmdW5jdGlv
bihhLGIsZCxmKXtyZXR1cm4gdGhpcy5saXZlKGIsZCxmLGEpfSx1bmRlbGVnYXRlOmZ1bmN0aW9u
KGEsYixkKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09PTA/dGhpcy51bmJpbmQoImxpdmUiKTp0
aGlzLmRpZShiLG51bGwsZCxhKX0sdHJpZ2dlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVh
Y2goZnVuY3Rpb24oKXtjLmV2ZW50LnRyaWdnZXIoYSxiLHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVy
OmZ1bmN0aW9uKGEsYil7aWYodGhpc1swXSl7YT1jLkV2ZW50KGEpO2EucHJldmVudERlZmF1bHQo
KTthLnN0b3BQcm9wYWdhdGlvbigpO2MuZXZlbnQudHJpZ2dlcihhLGIsdGhpc1swXSk7cmV0dXJu
IGEucmVzdWx0fX0sCit0b2dnbGU6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPWFyZ3VtZW50cyxkPTE7
ZDxiLmxlbmd0aDspYy5wcm94eShhLGJbZCsrXSk7cmV0dXJuIHRoaXMuY2xpY2soYy5wcm94eShh
LGZ1bmN0aW9uKGYpe3ZhciBlPShjLmRhdGEodGhpcywibGFzdFRvZ2dsZSIrYS5ndWlkKXx8MCkl
ZDtjLmRhdGEodGhpcywibGFzdFRvZ2dsZSIrYS5ndWlkLGUrMSk7Zi5wcmV2ZW50RGVmYXVsdCgp
O3JldHVybiBiW2VdLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8ZmFsc2V9KSl9LGhvdmVyOmZ1bmN0
aW9uKGEsYil7cmV0dXJuIHRoaXMubW91c2VlbnRlcihhKS5tb3VzZWxlYXZlKGJ8fGEpfX0pO3Zh
ciBHYT17Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0Iixtb3VzZWVudGVyOiJtb3VzZW92
ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0In07Yy5lYWNoKFsibGl2ZSIsImRpZSJdLGZ1bmN0aW9u
KGEsYil7Yy5mbltiXT1mdW5jdGlvbihkLGYsZSxqKXt2YXIgaSxvPTAsayxuLHI9anx8dGhpcy5z
ZWxlY3RvciwKK3U9aj90aGlzOmModGhpcy5jb250ZXh0KTtpZihjLmlzRnVuY3Rpb24oZikpe2U9
ZjtmPXd9Zm9yKGQ9KGR8fCIiKS5zcGxpdCgiICIpOyhpPWRbbysrXSkhPW51bGw7KXtqPU8uZXhl
YyhpKTtrPSIiO2lmKGope2s9alswXTtpPWkucmVwbGFjZShPLCIiKX1pZihpPT09ImhvdmVyIilk
LnB1c2goIm1vdXNlZW50ZXIiK2ssIm1vdXNlbGVhdmUiK2spO2Vsc2V7bj1pO2lmKGk9PT0iZm9j
dXMifHxpPT09ImJsdXIiKXtkLnB1c2goR2FbaV0rayk7aSs9a31lbHNlIGk9KEdhW2ldfHxpKStr
O2I9PT0ibGl2ZSI/dS5lYWNoKGZ1bmN0aW9uKCl7Yy5ldmVudC5hZGQodGhpcyxwYShpLHIpLHtk
YXRhOmYsc2VsZWN0b3I6cixoYW5kbGVyOmUsb3JpZ1R5cGU6aSxvcmlnSGFuZGxlcjplLHByZVR5
cGU6bn0pfSk6dS51bmJpbmQocGEoaSxyKSxlKX19cmV0dXJuIHRoaXN9fSk7Yy5lYWNoKCJibHVy
IGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgbG9hZCByZXNpemUgc2Nyb2xsIHVubG9hZCBjbGljayBk
YmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1v
dXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNz
IGtleXVwIGVycm9yIi5zcGxpdCgiICIpLAorZnVuY3Rpb24oYSxiKXtjLmZuW2JdPWZ1bmN0aW9u
KGQpe3JldHVybiBkP3RoaXMuYmluZChiLGQpOnRoaXMudHJpZ2dlcihiKX07aWYoYy5hdHRyRm4p
Yy5hdHRyRm5bYl09dHJ1ZX0pO0EuYXR0YWNoRXZlbnQmJiFBLmFkZEV2ZW50TGlzdGVuZXImJkEu
YXR0YWNoRXZlbnQoIm9udW5sb2FkIixmdW5jdGlvbigpe2Zvcih2YXIgYSBpbiBjLmNhY2hlKWlm
KGMuY2FjaGVbYV0uaGFuZGxlKXRyeXtjLmV2ZW50LnJlbW92ZShjLmNhY2hlW2FdLmhhbmRsZS5l
bGVtKX1jYXRjaChiKXt9fSk7KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShnKXtmb3IodmFyIGg9IiIs
bCxtPTA7Z1ttXTttKyspe2w9Z1ttXTtpZihsLm5vZGVUeXBlPT09M3x8bC5ub2RlVHlwZT09PTQp
aCs9bC5ub2RlVmFsdWU7ZWxzZSBpZihsLm5vZGVUeXBlIT09OCloKz1hKGwuY2hpbGROb2Rlcyl9
cmV0dXJuIGh9ZnVuY3Rpb24gYihnLGgsbCxtLHEscCl7cT0wO2Zvcih2YXIgdj1tLmxlbmd0aDtx
PHY7cSsrKXt2YXIgdD1tW3FdOworaWYodCl7dD10W2ddO2Zvcih2YXIgeT1mYWxzZTt0Oyl7aWYo
dC5zaXpjYWNoZT09PWwpe3k9bVt0LnNpenNldF07YnJlYWt9aWYodC5ub2RlVHlwZT09PTEmJiFw
KXt0LnNpemNhY2hlPWw7dC5zaXpzZXQ9cX1pZih0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1o
KXt5PXQ7YnJlYWt9dD10W2ddfW1bcV09eX19fWZ1bmN0aW9uIGQoZyxoLGwsbSxxLHApe3E9MDtm
b3IodmFyIHY9bS5sZW5ndGg7cTx2O3ErKyl7dmFyIHQ9bVtxXTtpZih0KXt0PXRbZ107Zm9yKHZh
ciB5PWZhbHNlO3Q7KXtpZih0LnNpemNhY2hlPT09bCl7eT1tW3Quc2l6c2V0XTticmVha31pZih0
Lm5vZGVUeXBlPT09MSl7aWYoIXApe3Quc2l6Y2FjaGU9bDt0LnNpenNldD1xfWlmKHR5cGVvZiBo
IT09InN0cmluZyIpe2lmKHQ9PT1oKXt5PXRydWU7YnJlYWt9fWVsc2UgaWYoay5maWx0ZXIoaCxb
dF0pLmxlbmd0aD4wKXt5PXQ7YnJlYWt9fXQ9dFtnXX1tW3FdPXl9fX12YXIgZj0vKCg/OlwoKD86
XChbXigpXStcKXxbXigpXSspK1wpfFxbKD86XFtbXltcXV0qXF18WyciXVteJyJdKlsnIl18W15b
XF0nIl0rKStcXXxcXC58W14gPit+LChcW1xcXSspK3xbPit+XSkoXHMqLFxzKik/KCg/Oi58XHJ8
XG4pKikvZywKK2U9MCxqPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsaT1mYWxzZSxvPXRydWU7
WzAsMF0uc29ydChmdW5jdGlvbigpe289ZmFsc2U7cmV0dXJuIDB9KTt2YXIgaz1mdW5jdGlvbihn
LGgsbCxtKXtsPWx8fFtdO3ZhciBxPWg9aHx8cztpZihoLm5vZGVUeXBlIT09MSYmaC5ub2RlVHlw
ZSE9PTkpcmV0dXJuW107aWYoIWd8fHR5cGVvZiBnIT09InN0cmluZyIpcmV0dXJuIGw7Zm9yKHZh
ciBwPVtdLHYsdCx5LFMsSD10cnVlLE09eChoKSxJPWc7KGYuZXhlYygiIiksdj1mLmV4ZWMoSSkp
IT09bnVsbDspe0k9dlszXTtwLnB1c2godlsxXSk7aWYodlsyXSl7Uz12WzNdO2JyZWFrfX1pZihw
Lmxlbmd0aD4xJiZyLmV4ZWMoZykpaWYocC5sZW5ndGg9PT0yJiZuLnJlbGF0aXZlW3BbMF1dKXQ9
Z2EocFswXStwWzFdLGgpO2Vsc2UgZm9yKHQ9bi5yZWxhdGl2ZVtwWzBdXT9baF06ayhwLnNoaWZ0
KCksaCk7cC5sZW5ndGg7KXtnPXAuc2hpZnQoKTtpZihuLnJlbGF0aXZlW2ddKWcrPXAuc2hpZnQo
KTsKK3Q9Z2EoZyx0KX1lbHNle2lmKCFtJiZwLmxlbmd0aD4xJiZoLm5vZGVUeXBlPT09OSYmIU0m
Jm4ubWF0Y2guSUQudGVzdChwWzBdKSYmIW4ubWF0Y2guSUQudGVzdChwW3AubGVuZ3RoLTFdKSl7
dj1rLmZpbmQocC5zaGlmdCgpLGgsTSk7aD12LmV4cHI/ay5maWx0ZXIodi5leHByLHYuc2V0KVsw
XTp2LnNldFswXX1pZihoKXt2PW0/e2V4cHI6cC5wb3AoKSxzZXQ6eihtKX06ay5maW5kKHAucG9w
KCkscC5sZW5ndGg9PT0xJiYocFswXT09PSJ+Inx8cFswXT09PSIrIikmJmgucGFyZW50Tm9kZT9o
LnBhcmVudE5vZGU6aCxNKTt0PXYuZXhwcj9rLmZpbHRlcih2LmV4cHIsdi5zZXQpOnYuc2V0O2lm
KHAubGVuZ3RoPjApeT16KHQpO2Vsc2UgSD1mYWxzZTtmb3IoO3AubGVuZ3RoOyl7dmFyIEQ9cC5w
b3AoKTt2PUQ7aWYobi5yZWxhdGl2ZVtEXSl2PXAucG9wKCk7ZWxzZSBEPSIiO2lmKHY9PW51bGwp
dj1oO24ucmVsYXRpdmVbRF0oeSx2LE0pfX1lbHNlIHk9W119eXx8KHk9dCk7eXx8ay5lcnJvcihE
fHwKK2cpO2lmKGouY2FsbCh5KT09PSJbb2JqZWN0IEFycmF5XSIpaWYoSClpZihoJiZoLm5vZGVU
eXBlPT09MSlmb3IoZz0wO3lbZ10hPW51bGw7ZysrKXtpZih5W2ddJiYoeVtnXT09PXRydWV8fHlb
Z10ubm9kZVR5cGU9PT0xJiZFKGgseVtnXSkpKWwucHVzaCh0W2ddKX1lbHNlIGZvcihnPTA7eVtn
XSE9bnVsbDtnKyspeVtnXSYmeVtnXS5ub2RlVHlwZT09PTEmJmwucHVzaCh0W2ddKTtlbHNlIGwu
cHVzaC5hcHBseShsLHkpO2Vsc2Ugeih5LGwpO2lmKFMpe2soUyxxLGwsbSk7ay51bmlxdWVTb3J0
KGwpfXJldHVybiBsfTtrLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oZyl7aWYoQil7aT1vO2cuc29ydChC
KTtpZihpKWZvcih2YXIgaD0xO2g8Zy5sZW5ndGg7aCsrKWdbaF09PT1nW2gtMV0mJmcuc3BsaWNl
KGgtLSwxKX1yZXR1cm4gZ307ay5tYXRjaGVzPWZ1bmN0aW9uKGcsaCl7cmV0dXJuIGsoZyxudWxs
LG51bGwsaCl9O2suZmluZD1mdW5jdGlvbihnLGgsbCl7dmFyIG0scTtpZighZylyZXR1cm5bXTsK
K2Zvcih2YXIgcD0wLHY9bi5vcmRlci5sZW5ndGg7cDx2O3ArKyl7dmFyIHQ9bi5vcmRlcltwXTtp
ZihxPW4ubGVmdE1hdGNoW3RdLmV4ZWMoZykpe3ZhciB5PXFbMV07cS5zcGxpY2UoMSwxKTtpZih5
LnN1YnN0cih5Lmxlbmd0aC0xKSE9PSJcXCIpe3FbMV09KHFbMV18fCIiKS5yZXBsYWNlKC9cXC9n
LCIiKTttPW4uZmluZFt0XShxLGgsbCk7aWYobSE9bnVsbCl7Zz1nLnJlcGxhY2Uobi5tYXRjaFt0
XSwiIik7YnJlYWt9fX19bXx8KG09aC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKTtyZXR1cm57
c2V0Om0sZXhwcjpnfX07ay5maWx0ZXI9ZnVuY3Rpb24oZyxoLGwsbSl7Zm9yKHZhciBxPWcscD1b
XSx2PWgsdCx5LFM9aCYmaFswXSYmeChoWzBdKTtnJiZoLmxlbmd0aDspe2Zvcih2YXIgSCBpbiBu
LmZpbHRlcilpZigodD1uLmxlZnRNYXRjaFtIXS5leGVjKGcpKSE9bnVsbCYmdFsyXSl7dmFyIE09
bi5maWx0ZXJbSF0sSSxEO0Q9dFsxXTt5PWZhbHNlO3Quc3BsaWNlKDEsMSk7aWYoRC5zdWJzdHIo
RC5sZW5ndGgtCisxKSE9PSJcXCIpe2lmKHY9PT1wKXA9W107aWYobi5wcmVGaWx0ZXJbSF0paWYo
dD1uLnByZUZpbHRlcltIXSh0LHYsbCxwLG0sUykpe2lmKHQ9PT10cnVlKWNvbnRpbnVlfWVsc2Ug
eT1JPXRydWU7aWYodClmb3IodmFyIFU9MDsoRD12W1VdKSE9bnVsbDtVKyspaWYoRCl7ST1NKEQs
dCxVLHYpO3ZhciBIYT1tXiEhSTtpZihsJiZJIT1udWxsKWlmKEhhKXk9dHJ1ZTtlbHNlIHZbVV09
ZmFsc2U7ZWxzZSBpZihIYSl7cC5wdXNoKEQpO3k9dHJ1ZX19aWYoSSE9PXcpe2x8fCh2PXApO2c9
Zy5yZXBsYWNlKG4ubWF0Y2hbSF0sIiIpO2lmKCF5KXJldHVybltdO2JyZWFrfX19aWYoZz09PXEp
aWYoeT09bnVsbClrLmVycm9yKGcpO2Vsc2UgYnJlYWs7cT1nfXJldHVybiB2fTtrLmVycm9yPWZ1
bmN0aW9uKGcpe3Rocm93IlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIr
Zzt9O3ZhciBuPWsuc2VsZWN0b3JzPXtvcmRlcjpbIklEIiwiTkFNRSIsIlRBRyJdLG1hdGNoOntJ
RDovIygoPzpbXHdcdTAwYzAtXHVGRkZGLV18XFwuKSspLywKK0NMQVNTOi9cLigoPzpbXHdcdTAw
YzAtXHVGRkZGLV18XFwuKSspLyxOQU1FOi9cW25hbWU9WyciXSooKD86W1x3XHUwMGMwLVx1RkZG
Ri1dfFxcLikrKVsnIl0qXF0vLEFUVFI6L1xbXHMqKCg/Oltcd1x1MDBjMC1cdUZGRkYtXXxcXC4p
KylccyooPzooXFM/PSlccyooWyciXSopKC4qPylcM3wpXHMqXF0vLFRBRzovXigoPzpbXHdcdTAw
YzAtXHVGRkZGXCotXXxcXC4pKykvLENISUxEOi86KG9ubHl8bnRofGxhc3R8Zmlyc3QpLWNoaWxk
KD86XCgoZXZlbnxvZGR8W1xkbistXSopXCkpPy8sUE9TOi86KG50aHxlcXxndHxsdHxmaXJzdHxs
YXN0fGV2ZW58b2RkKSg/OlwoKFxkKilcKSk/KD89W14tXXwkKS8sUFNFVURPOi86KCg/Oltcd1x1
MDBjMC1cdUZGRkYtXXxcXC4pKykoPzpcKChbJyJdPykoKD86XChbXlwpXStcKXxbXlwoXCldKikr
KVwyXCkpPy99LGxlZnRNYXRjaDp7fSxhdHRyTWFwOnsiY2xhc3MiOiJjbGFzc05hbWUiLCJmb3Ii
OiJodG1sRm9yIn0sYXR0ckhhbmRsZTp7aHJlZjpmdW5jdGlvbihnKXtyZXR1cm4gZy5nZXRBdHRy
aWJ1dGUoImhyZWYiKX19LAorcmVsYXRpdmU6eyIrIjpmdW5jdGlvbihnLGgpe3ZhciBsPXR5cGVv
ZiBoPT09InN0cmluZyIsbT1sJiYhL1xXLy50ZXN0KGgpO2w9bCYmIW07aWYobSloPWgudG9Mb3dl
ckNhc2UoKTttPTA7Zm9yKHZhciBxPWcubGVuZ3RoLHA7bTxxO20rKylpZihwPWdbbV0pe2Zvcig7
KHA9cC5wcmV2aW91c1NpYmxpbmcpJiZwLm5vZGVUeXBlIT09MTspO2dbbV09bHx8cCYmcC5ub2Rl
TmFtZS50b0xvd2VyQ2FzZSgpPT09aD9wfHxmYWxzZTpwPT09aH1sJiZrLmZpbHRlcihoLGcsdHJ1
ZSl9LCI+IjpmdW5jdGlvbihnLGgpe3ZhciBsPXR5cGVvZiBoPT09InN0cmluZyI7aWYobCYmIS9c
Vy8udGVzdChoKSl7aD1oLnRvTG93ZXJDYXNlKCk7Zm9yKHZhciBtPTAscT1nLmxlbmd0aDttPHE7
bSsrKXt2YXIgcD1nW21dO2lmKHApe2w9cC5wYXJlbnROb2RlO2dbbV09bC5ub2RlTmFtZS50b0xv
d2VyQ2FzZSgpPT09aD9sOmZhbHNlfX19ZWxzZXttPTA7Zm9yKHE9Zy5sZW5ndGg7bTxxO20rKylp
ZihwPWdbbV0pZ1ttXT0KK2w/cC5wYXJlbnROb2RlOnAucGFyZW50Tm9kZT09PWg7bCYmay5maWx0
ZXIoaCxnLHRydWUpfX0sIiI6ZnVuY3Rpb24oZyxoLGwpe3ZhciBtPWUrKyxxPWQ7aWYodHlwZW9m
IGg9PT0ic3RyaW5nIiYmIS9cVy8udGVzdChoKSl7dmFyIHA9aD1oLnRvTG93ZXJDYXNlKCk7cT1i
fXEoInBhcmVudE5vZGUiLGgsbSxnLHAsbCl9LCJ+IjpmdW5jdGlvbihnLGgsbCl7dmFyIG09ZSsr
LHE9ZDtpZih0eXBlb2YgaD09PSJzdHJpbmciJiYhL1xXLy50ZXN0KGgpKXt2YXIgcD1oPWgudG9M
b3dlckNhc2UoKTtxPWJ9cSgicHJldmlvdXNTaWJsaW5nIixoLG0sZyxwLGwpfX0sZmluZDp7SUQ6
ZnVuY3Rpb24oZyxoLGwpe2lmKHR5cGVvZiBoLmdldEVsZW1lbnRCeUlkIT09InVuZGVmaW5lZCIm
JiFsKXJldHVybihnPWguZ2V0RWxlbWVudEJ5SWQoZ1sxXSkpP1tnXTpbXX0sTkFNRTpmdW5jdGlv
bihnLGgpe2lmKHR5cGVvZiBoLmdldEVsZW1lbnRzQnlOYW1lIT09InVuZGVmaW5lZCIpe3ZhciBs
PVtdOworaD1oLmdldEVsZW1lbnRzQnlOYW1lKGdbMV0pO2Zvcih2YXIgbT0wLHE9aC5sZW5ndGg7
bTxxO20rKyloW21dLmdldEF0dHJpYnV0ZSgibmFtZSIpPT09Z1sxXSYmbC5wdXNoKGhbbV0pO3Jl
dHVybiBsLmxlbmd0aD09PTA/bnVsbDpsfX0sVEFHOmZ1bmN0aW9uKGcsaCl7cmV0dXJuIGguZ2V0
RWxlbWVudHNCeVRhZ05hbWUoZ1sxXSl9fSxwcmVGaWx0ZXI6e0NMQVNTOmZ1bmN0aW9uKGcsaCxs
LG0scSxwKXtnPSIgIitnWzFdLnJlcGxhY2UoL1xcL2csIiIpKyIgIjtpZihwKXJldHVybiBnO3A9
MDtmb3IodmFyIHY7KHY9aFtwXSkhPW51bGw7cCsrKWlmKHYpaWYocV4odi5jbGFzc05hbWUmJigi
ICIrdi5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKC9bXHRcbl0vZywiICIpLmluZGV4T2YoZyk+PTAp
KWx8fG0ucHVzaCh2KTtlbHNlIGlmKGwpaFtwXT1mYWxzZTtyZXR1cm4gZmFsc2V9LElEOmZ1bmN0
aW9uKGcpe3JldHVybiBnWzFdLnJlcGxhY2UoL1xcL2csIiIpfSxUQUc6ZnVuY3Rpb24oZyl7cmV0
dXJuIGdbMV0udG9Mb3dlckNhc2UoKX0sCitDSElMRDpmdW5jdGlvbihnKXtpZihnWzFdPT09Im50
aCIpe3ZhciBoPS8oLT8pKFxkKiluKCg/OlwrfC0pP1xkKikvLmV4ZWMoZ1syXT09PSJldmVuIiYm
IjJuInx8Z1syXT09PSJvZGQiJiYiMm4rMSJ8fCEvXEQvLnRlc3QoZ1syXSkmJiIwbisiK2dbMl18
fGdbMl0pO2dbMl09aFsxXSsoaFsyXXx8MSktMDtnWzNdPWhbM10tMH1nWzBdPWUrKztyZXR1cm4g
Z30sQVRUUjpmdW5jdGlvbihnLGgsbCxtLHEscCl7aD1nWzFdLnJlcGxhY2UoL1xcL2csIiIpO2lm
KCFwJiZuLmF0dHJNYXBbaF0pZ1sxXT1uLmF0dHJNYXBbaF07aWYoZ1syXT09PSJ+PSIpZ1s0XT0i
ICIrZ1s0XSsiICI7cmV0dXJuIGd9LFBTRVVETzpmdW5jdGlvbihnLGgsbCxtLHEpe2lmKGdbMV09
PT0ibm90IilpZigoZi5leGVjKGdbM10pfHwiIikubGVuZ3RoPjF8fC9eXHcvLnRlc3QoZ1szXSkp
Z1szXT1rKGdbM10sbnVsbCxudWxsLGgpO2Vsc2V7Zz1rLmZpbHRlcihnWzNdLGgsbCx0cnVlXnEp
O2x8fG0ucHVzaC5hcHBseShtLAorZyk7cmV0dXJuIGZhbHNlfWVsc2UgaWYobi5tYXRjaC5QT1Mu
dGVzdChnWzBdKXx8bi5tYXRjaC5DSElMRC50ZXN0KGdbMF0pKXJldHVybiB0cnVlO3JldHVybiBn
fSxQT1M6ZnVuY3Rpb24oZyl7Zy51bnNoaWZ0KHRydWUpO3JldHVybiBnfX0sZmlsdGVyczp7ZW5h
YmxlZDpmdW5jdGlvbihnKXtyZXR1cm4gZy5kaXNhYmxlZD09PWZhbHNlJiZnLnR5cGUhPT0iaGlk
ZGVuIn0sZGlzYWJsZWQ6ZnVuY3Rpb24oZyl7cmV0dXJuIGcuZGlzYWJsZWQ9PT10cnVlfSxjaGVj
a2VkOmZ1bmN0aW9uKGcpe3JldHVybiBnLmNoZWNrZWQ9PT10cnVlfSxzZWxlY3RlZDpmdW5jdGlv
bihnKXtyZXR1cm4gZy5zZWxlY3RlZD09PXRydWV9LHBhcmVudDpmdW5jdGlvbihnKXtyZXR1cm4h
IWcuZmlyc3RDaGlsZH0sZW1wdHk6ZnVuY3Rpb24oZyl7cmV0dXJuIWcuZmlyc3RDaGlsZH0saGFz
OmZ1bmN0aW9uKGcsaCxsKXtyZXR1cm4hIWsobFszXSxnKS5sZW5ndGh9LGhlYWRlcjpmdW5jdGlv
bihnKXtyZXR1cm4vaFxkL2kudGVzdChnLm5vZGVOYW1lKX0sCit0ZXh0OmZ1bmN0aW9uKGcpe3Jl
dHVybiJ0ZXh0Ij09PWcudHlwZX0scmFkaW86ZnVuY3Rpb24oZyl7cmV0dXJuInJhZGlvIj09PWcu
dHlwZX0sY2hlY2tib3g6ZnVuY3Rpb24oZyl7cmV0dXJuImNoZWNrYm94Ij09PWcudHlwZX0sZmls
ZTpmdW5jdGlvbihnKXtyZXR1cm4iZmlsZSI9PT1nLnR5cGV9LHBhc3N3b3JkOmZ1bmN0aW9uKGcp
e3JldHVybiJwYXNzd29yZCI9PT1nLnR5cGV9LHN1Ym1pdDpmdW5jdGlvbihnKXtyZXR1cm4ic3Vi
bWl0Ij09PWcudHlwZX0saW1hZ2U6ZnVuY3Rpb24oZyl7cmV0dXJuImltYWdlIj09PWcudHlwZX0s
cmVzZXQ6ZnVuY3Rpb24oZyl7cmV0dXJuInJlc2V0Ij09PWcudHlwZX0sYnV0dG9uOmZ1bmN0aW9u
KGcpe3JldHVybiJidXR0b24iPT09Zy50eXBlfHxnLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0i
YnV0dG9uIn0saW5wdXQ6ZnVuY3Rpb24oZyl7cmV0dXJuL2lucHV0fHNlbGVjdHx0ZXh0YXJlYXxi
dXR0b24vaS50ZXN0KGcubm9kZU5hbWUpfX0sCitzZXRGaWx0ZXJzOntmaXJzdDpmdW5jdGlvbihn
LGgpe3JldHVybiBoPT09MH0sbGFzdDpmdW5jdGlvbihnLGgsbCxtKXtyZXR1cm4gaD09PW0ubGVu
Z3RoLTF9LGV2ZW46ZnVuY3Rpb24oZyxoKXtyZXR1cm4gaCUyPT09MH0sb2RkOmZ1bmN0aW9uKGcs
aCl7cmV0dXJuIGglMj09PTF9LGx0OmZ1bmN0aW9uKGcsaCxsKXtyZXR1cm4gaDxsWzNdLTB9LGd0
OmZ1bmN0aW9uKGcsaCxsKXtyZXR1cm4gaD5sWzNdLTB9LG50aDpmdW5jdGlvbihnLGgsbCl7cmV0
dXJuIGxbM10tMD09PWh9LGVxOmZ1bmN0aW9uKGcsaCxsKXtyZXR1cm4gbFszXS0wPT09aH19LGZp
bHRlcjp7UFNFVURPOmZ1bmN0aW9uKGcsaCxsLG0pe3ZhciBxPWhbMV0scD1uLmZpbHRlcnNbcV07
aWYocClyZXR1cm4gcChnLGwsaCxtKTtlbHNlIGlmKHE9PT0iY29udGFpbnMiKXJldHVybihnLnRl
eHRDb250ZW50fHxnLmlubmVyVGV4dHx8YShbZ10pfHwiIikuaW5kZXhPZihoWzNdKT49MDtlbHNl
IGlmKHE9PT0ibm90Iil7aD0KK2hbM107bD0wO2ZvcihtPWgubGVuZ3RoO2w8bTtsKyspaWYoaFts
XT09PWcpcmV0dXJuIGZhbHNlO3JldHVybiB0cnVlfWVsc2Ugay5lcnJvcigiU3ludGF4IGVycm9y
LCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIitxKX0sQ0hJTEQ6ZnVuY3Rpb24oZyxoKXt2YXIg
bD1oWzFdLG09Zztzd2l0Y2gobCl7Y2FzZSAib25seSI6Y2FzZSAiZmlyc3QiOmZvcig7bT1tLnBy
ZXZpb3VzU2libGluZzspaWYobS5ub2RlVHlwZT09PTEpcmV0dXJuIGZhbHNlO2lmKGw9PT0iZmly
c3QiKXJldHVybiB0cnVlO209ZztjYXNlICJsYXN0Ijpmb3IoO209bS5uZXh0U2libGluZzspaWYo
bS5ub2RlVHlwZT09PTEpcmV0dXJuIGZhbHNlO3JldHVybiB0cnVlO2Nhc2UgIm50aCI6bD1oWzJd
O3ZhciBxPWhbM107aWYobD09PTEmJnE9PT0wKXJldHVybiB0cnVlO2g9aFswXTt2YXIgcD1nLnBh
cmVudE5vZGU7aWYocCYmKHAuc2l6Y2FjaGUhPT1ofHwhZy5ub2RlSW5kZXgpKXt2YXIgdj0wO2Zv
cihtPXAuZmlyc3RDaGlsZDttO209CittLm5leHRTaWJsaW5nKWlmKG0ubm9kZVR5cGU9PT0xKW0u
bm9kZUluZGV4PSsrdjtwLnNpemNhY2hlPWh9Zz1nLm5vZGVJbmRleC1xO3JldHVybiBsPT09MD9n
PT09MDpnJWw9PT0wJiZnL2w+PTB9fSxJRDpmdW5jdGlvbihnLGgpe3JldHVybiBnLm5vZGVUeXBl
PT09MSYmZy5nZXRBdHRyaWJ1dGUoImlkIik9PT1ofSxUQUc6ZnVuY3Rpb24oZyxoKXtyZXR1cm4g
aD09PSIqIiYmZy5ub2RlVHlwZT09PTF8fGcubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWh9LENM
QVNTOmZ1bmN0aW9uKGcsaCl7cmV0dXJuKCIgIisoZy5jbGFzc05hbWV8fGcuZ2V0QXR0cmlidXRl
KCJjbGFzcyIpKSsiICIpLmluZGV4T2YoaCk+LTF9LEFUVFI6ZnVuY3Rpb24oZyxoKXt2YXIgbD1o
WzFdO2c9bi5hdHRySGFuZGxlW2xdP24uYXR0ckhhbmRsZVtsXShnKTpnW2xdIT1udWxsP2dbbF06
Zy5nZXRBdHRyaWJ1dGUobCk7bD1nKyIiO3ZhciBtPWhbMl07aD1oWzRdO3JldHVybiBnPT1udWxs
P209PT0iIT0iOm09PT0KKyI9Ij9sPT09aDptPT09Iio9Ij9sLmluZGV4T2YoaCk+PTA6bT09PSJ+
PSI/KCIgIitsKyIgIikuaW5kZXhPZihoKT49MDohaD9sJiZnIT09ZmFsc2U6bT09PSIhPSI/bCE9
PWg6bT09PSJePSI/bC5pbmRleE9mKGgpPT09MDptPT09IiQ9Ij9sLnN1YnN0cihsLmxlbmd0aC1o
Lmxlbmd0aCk9PT1oOm09PT0ifD0iP2w9PT1ofHxsLnN1YnN0cigwLGgubGVuZ3RoKzEpPT09aCsi
LSI6ZmFsc2V9LFBPUzpmdW5jdGlvbihnLGgsbCxtKXt2YXIgcT1uLnNldEZpbHRlcnNbaFsyXV07
aWYocSlyZXR1cm4gcShnLGwsaCxtKX19fSxyPW4ubWF0Y2guUE9TO2Zvcih2YXIgdSBpbiBuLm1h
dGNoKXtuLm1hdGNoW3VdPW5ldyBSZWdFeHAobi5tYXRjaFt1XS5zb3VyY2UrLyg/IVteXFtdKlxd
KSg/IVteXChdKlwpKS8uc291cmNlKTtuLmxlZnRNYXRjaFt1XT1uZXcgUmVnRXhwKC8oXig/Oi58
XHJ8XG4pKj8pLy5zb3VyY2Urbi5tYXRjaFt1XS5zb3VyY2UucmVwbGFjZSgvXFwoXGQrKS9nLGZ1
bmN0aW9uKGcsCitoKXtyZXR1cm4iXFwiKyhoLTArMSl9KSl9dmFyIHo9ZnVuY3Rpb24oZyxoKXtn
PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGcsMCk7aWYoaCl7aC5wdXNoLmFwcGx5KGgsZyk7
cmV0dXJuIGh9cmV0dXJuIGd9O3RyeXtBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChzLmRvY3Vt
ZW50RWxlbWVudC5jaGlsZE5vZGVzLDApfWNhdGNoKEMpe3o9ZnVuY3Rpb24oZyxoKXtoPWh8fFtd
O2lmKGouY2FsbChnKT09PSJbb2JqZWN0IEFycmF5XSIpQXJyYXkucHJvdG90eXBlLnB1c2guYXBw
bHkoaCxnKTtlbHNlIGlmKHR5cGVvZiBnLmxlbmd0aD09PSJudW1iZXIiKWZvcih2YXIgbD0wLG09
Zy5sZW5ndGg7bDxtO2wrKyloLnB1c2goZ1tsXSk7ZWxzZSBmb3IobD0wO2dbbF07bCsrKWgucHVz
aChnW2xdKTtyZXR1cm4gaH19dmFyIEI7aWYocy5kb2N1bWVudEVsZW1lbnQuY29tcGFyZURvY3Vt
ZW50UG9zaXRpb24pQj1mdW5jdGlvbihnLGgpe2lmKCFnLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9u
fHwKKyFoLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKXtpZihnPT1oKWk9dHJ1ZTtyZXR1cm4gZy5j
b21wYXJlRG9jdW1lbnRQb3NpdGlvbj8tMToxfWc9Zy5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiho
KSY0Py0xOmc9PT1oPzA6MTtpZihnPT09MClpPXRydWU7cmV0dXJuIGd9O2Vsc2UgaWYoInNvdXJj
ZUluZGV4ImluIHMuZG9jdW1lbnRFbGVtZW50KUI9ZnVuY3Rpb24oZyxoKXtpZighZy5zb3VyY2VJ
bmRleHx8IWguc291cmNlSW5kZXgpe2lmKGc9PWgpaT10cnVlO3JldHVybiBnLnNvdXJjZUluZGV4
Py0xOjF9Zz1nLnNvdXJjZUluZGV4LWguc291cmNlSW5kZXg7aWYoZz09PTApaT10cnVlO3JldHVy
biBnfTtlbHNlIGlmKHMuY3JlYXRlUmFuZ2UpQj1mdW5jdGlvbihnLGgpe2lmKCFnLm93bmVyRG9j
dW1lbnR8fCFoLm93bmVyRG9jdW1lbnQpe2lmKGc9PWgpaT10cnVlO3JldHVybiBnLm93bmVyRG9j
dW1lbnQ/LTE6MX12YXIgbD1nLm93bmVyRG9jdW1lbnQuY3JlYXRlUmFuZ2UoKSxtPQoraC5vd25l
ckRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7bC5zZXRTdGFydChnLDApO2wuc2V0RW5kKGcsMCk7bS5z
ZXRTdGFydChoLDApO20uc2V0RW5kKGgsMCk7Zz1sLmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5n
ZS5TVEFSVF9UT19FTkQsbSk7aWYoZz09PTApaT10cnVlO3JldHVybiBnfTsoZnVuY3Rpb24oKXt2
YXIgZz1zLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGg9InNjcmlwdCIrKG5ldyBEYXRlKS5nZXRUaW1l
KCk7Zy5pbm5lckhUTUw9IjxhIG5hbWU9JyIraCsiJy8+Ijt2YXIgbD1zLmRvY3VtZW50RWxlbWVu
dDtsLmluc2VydEJlZm9yZShnLGwuZmlyc3RDaGlsZCk7aWYocy5nZXRFbGVtZW50QnlJZChoKSl7
bi5maW5kLklEPWZ1bmN0aW9uKG0scSxwKXtpZih0eXBlb2YgcS5nZXRFbGVtZW50QnlJZCE9PSJ1
bmRlZmluZWQiJiYhcClyZXR1cm4ocT1xLmdldEVsZW1lbnRCeUlkKG1bMV0pKT9xLmlkPT09bVsx
XXx8dHlwZW9mIHEuZ2V0QXR0cmlidXRlTm9kZSE9PSJ1bmRlZmluZWQiJiYKK3EuZ2V0QXR0cmli
dXRlTm9kZSgiaWQiKS5ub2RlVmFsdWU9PT1tWzFdP1txXTp3OltdfTtuLmZpbHRlci5JRD1mdW5j
dGlvbihtLHEpe3ZhciBwPXR5cGVvZiBtLmdldEF0dHJpYnV0ZU5vZGUhPT0idW5kZWZpbmVkIiYm
bS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpO3JldHVybiBtLm5vZGVUeXBlPT09MSYmcCYmcC5ub2Rl
VmFsdWU9PT1xfX1sLnJlbW92ZUNoaWxkKGcpO2w9Zz1udWxsfSkoKTsoZnVuY3Rpb24oKXt2YXIg
Zz1zLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2cuYXBwZW5kQ2hpbGQocy5jcmVhdGVDb21tZW50KCIi
KSk7aWYoZy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aD4wKW4uZmluZC5UQUc9ZnVu
Y3Rpb24oaCxsKXtsPWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoaFsxXSk7aWYoaFsxXT09PSIqIil7
aD1bXTtmb3IodmFyIG09MDtsW21dO20rKylsW21dLm5vZGVUeXBlPT09MSYmaC5wdXNoKGxbbV0p
O2w9aH1yZXR1cm4gbH07Zy5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iOworaWYoZy5maXJz
dENoaWxkJiZ0eXBlb2YgZy5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSE9PSJ1bmRlZmluZWQiJiZn
LmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIikhPT0iIyIpbi5hdHRySGFuZGxlLmhyZWY9
ZnVuY3Rpb24oaCl7cmV0dXJuIGguZ2V0QXR0cmlidXRlKCJocmVmIiwyKX07Zz1udWxsfSkoKTtz
LnF1ZXJ5U2VsZWN0b3JBbGwmJmZ1bmN0aW9uKCl7dmFyIGc9ayxoPXMuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7aC5pbm5lckhUTUw9IjxwIGNsYXNzPSdURVNUJz48L3A+IjtpZighKGgucXVlcnlTZWxl
Y3RvckFsbCYmaC5xdWVyeVNlbGVjdG9yQWxsKCIuVEVTVCIpLmxlbmd0aD09PTApKXtrPWZ1bmN0
aW9uKG0scSxwLHYpe3E9cXx8cztpZighdiYmcS5ub2RlVHlwZT09PTkmJiF4KHEpKXRyeXtyZXR1
cm4geihxLnF1ZXJ5U2VsZWN0b3JBbGwobSkscCl9Y2F0Y2godCl7fXJldHVybiBnKG0scSxwLHYp
fTtmb3IodmFyIGwgaW4gZylrW2xdPWdbbF07aD1udWxsfX0oKTsKKyhmdW5jdGlvbigpe3ZhciBn
PXMuY3JlYXRlRWxlbWVudCgiZGl2Iik7Zy5pbm5lckhUTUw9IjxkaXYgY2xhc3M9J3Rlc3QgZSc+
PC9kaXY+PGRpdiBjbGFzcz0ndGVzdCc+PC9kaXY+IjtpZighKCFnLmdldEVsZW1lbnRzQnlDbGFz
c05hbWV8fGcuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD09PTApKXtnLmxhc3RD
aGlsZC5jbGFzc05hbWU9ImUiO2lmKGcuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0
aCE9PTEpe24ub3JkZXIuc3BsaWNlKDEsMCwiQ0xBU1MiKTtuLmZpbmQuQ0xBU1M9ZnVuY3Rpb24o
aCxsLG0pe2lmKHR5cGVvZiBsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUhPT0idW5kZWZpbmVkIiYm
IW0pcmV0dXJuIGwuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShoWzFdKX07Zz1udWxsfX19KSgpO3Zh
ciBFPXMuY29tcGFyZURvY3VtZW50UG9zaXRpb24/ZnVuY3Rpb24oZyxoKXtyZXR1cm4hIShnLmNv
bXBhcmVEb2N1bWVudFBvc2l0aW9uKGgpJjE2KX06CitmdW5jdGlvbihnLGgpe3JldHVybiBnIT09
aCYmKGcuY29udGFpbnM/Zy5jb250YWlucyhoKTp0cnVlKX0seD1mdW5jdGlvbihnKXtyZXR1cm4o
Zz0oZz9nLm93bmVyRG9jdW1lbnR8fGc6MCkuZG9jdW1lbnRFbGVtZW50KT9nLm5vZGVOYW1lIT09
IkhUTUwiOmZhbHNlfSxnYT1mdW5jdGlvbihnLGgpe3ZhciBsPVtdLG09IiIscTtmb3IoaD1oLm5v
ZGVUeXBlP1toXTpoO3E9bi5tYXRjaC5QU0VVRE8uZXhlYyhnKTspe20rPXFbMF07Zz1nLnJlcGxh
Y2Uobi5tYXRjaC5QU0VVRE8sIiIpfWc9bi5yZWxhdGl2ZVtnXT9nKyIqIjpnO3E9MDtmb3IodmFy
IHA9aC5sZW5ndGg7cTxwO3ErKylrKGcsaFtxXSxsKTtyZXR1cm4gay5maWx0ZXIobSxsKX07Yy5m
aW5kPWs7Yy5leHByPWsuc2VsZWN0b3JzO2MuZXhwclsiOiJdPWMuZXhwci5maWx0ZXJzO2MudW5p
cXVlPWsudW5pcXVlU29ydDtjLnRleHQ9YTtjLmlzWE1MRG9jPXg7Yy5jb250YWlucz1FfSkoKTt2
YXIgZWI9L1VudGlsJC8sZmI9L14oPzpwYXJlbnRzfHByZXZVbnRpbHxwcmV2QWxsKS8sCitnYj0v
LC87Uj1BcnJheS5wcm90b3R5cGUuc2xpY2U7dmFyIElhPWZ1bmN0aW9uKGEsYixkKXtpZihjLmlz
RnVuY3Rpb24oYikpcmV0dXJuIGMuZ3JlcChhLGZ1bmN0aW9uKGUsail7cmV0dXJuISFiLmNhbGwo
ZSxqLGUpPT09ZH0pO2Vsc2UgaWYoYi5ub2RlVHlwZSlyZXR1cm4gYy5ncmVwKGEsZnVuY3Rpb24o
ZSl7cmV0dXJuIGU9PT1iPT09ZH0pO2Vsc2UgaWYodHlwZW9mIGI9PT0ic3RyaW5nIil7dmFyIGY9
Yy5ncmVwKGEsZnVuY3Rpb24oZSl7cmV0dXJuIGUubm9kZVR5cGU9PT0xfSk7aWYoVWEudGVzdChi
KSlyZXR1cm4gYy5maWx0ZXIoYixmLCFkKTtlbHNlIGI9Yy5maWx0ZXIoYixmKX1yZXR1cm4gYy5n
cmVwKGEsZnVuY3Rpb24oZSl7cmV0dXJuIGMuaW5BcnJheShlLGIpPj0wPT09ZH0pfTtjLmZuLmV4
dGVuZCh7ZmluZDpmdW5jdGlvbihhKXtmb3IodmFyIGI9dGhpcy5wdXNoU3RhY2soIiIsImZpbmQi
LGEpLGQ9MCxmPTAsZT10aGlzLmxlbmd0aDtmPGU7ZisrKXtkPWIubGVuZ3RoOworYy5maW5kKGEs
dGhpc1tmXSxiKTtpZihmPjApZm9yKHZhciBqPWQ7ajxiLmxlbmd0aDtqKyspZm9yKHZhciBpPTA7
aTxkO2krKylpZihiW2ldPT09YltqXSl7Yi5zcGxpY2Uoai0tLDEpO2JyZWFrfX1yZXR1cm4gYn0s
aGFzOmZ1bmN0aW9uKGEpe3ZhciBiPWMoYSk7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCl7
Zm9yKHZhciBkPTAsZj1iLmxlbmd0aDtkPGY7ZCsrKWlmKGMuY29udGFpbnModGhpcyxiW2RdKSly
ZXR1cm4gdHJ1ZX0pfSxub3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKElhKHRo
aXMsYSxmYWxzZSksIm5vdCIsYSl9LGZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNo
U3RhY2soSWEodGhpcyxhLHRydWUpLCJmaWx0ZXIiLGEpfSxpczpmdW5jdGlvbihhKXtyZXR1cm4h
IWEmJmMuZmlsdGVyKGEsdGhpcykubGVuZ3RoPjB9LGNsb3Nlc3Q6ZnVuY3Rpb24oYSxiKXtpZihj
LmlzQXJyYXkoYSkpe3ZhciBkPVtdLGY9dGhpc1swXSxlLGo9Cit7fSxpO2lmKGYmJmEubGVuZ3Ro
KXtlPTA7Zm9yKHZhciBvPWEubGVuZ3RoO2U8bztlKyspe2k9YVtlXTtqW2ldfHwoaltpXT1jLmV4
cHIubWF0Y2guUE9TLnRlc3QoaSk/YyhpLGJ8fHRoaXMuY29udGV4dCk6aSl9Zm9yKDtmJiZmLm93
bmVyRG9jdW1lbnQmJmYhPT1iOyl7Zm9yKGkgaW4gail7ZT1qW2ldO2lmKGUuanF1ZXJ5P2UuaW5k
ZXgoZik+LTE6YyhmKS5pcyhlKSl7ZC5wdXNoKHtzZWxlY3RvcjppLGVsZW06Zn0pO2RlbGV0ZSBq
W2ldfX1mPWYucGFyZW50Tm9kZX19cmV0dXJuIGR9dmFyIGs9Yy5leHByLm1hdGNoLlBPUy50ZXN0
KGEpP2MoYSxifHx0aGlzLmNvbnRleHQpOm51bGw7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKG4s
cil7Zm9yKDtyJiZyLm93bmVyRG9jdW1lbnQmJnIhPT1iOyl7aWYoaz9rLmluZGV4KHIpPi0xOmMo
cikuaXMoYSkpcmV0dXJuIHI7cj1yLnBhcmVudE5vZGV9cmV0dXJuIG51bGx9KX0saW5kZXg6ZnVu
Y3Rpb24oYSl7aWYoIWF8fHR5cGVvZiBhPT09Cisic3RyaW5nIilyZXR1cm4gYy5pbkFycmF5KHRo
aXNbMF0sYT9jKGEpOnRoaXMucGFyZW50KCkuY2hpbGRyZW4oKSk7cmV0dXJuIGMuaW5BcnJheShh
LmpxdWVyeT9hWzBdOmEsdGhpcyl9LGFkZDpmdW5jdGlvbihhLGIpe2E9dHlwZW9mIGE9PT0ic3Ry
aW5nIj9jKGEsYnx8dGhpcy5jb250ZXh0KTpjLm1ha2VBcnJheShhKTtiPWMubWVyZ2UodGhpcy5n
ZXQoKSxhKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2socWEoYVswXSl8fHFhKGJbMF0pP2I6Yy51bmlx
dWUoYikpfSxhbmRTZWxmOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWRkKHRoaXMucHJldk9iamVj
dCl9fSk7Yy5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuKGE9YS5wYXJlbnROb2RlKSYm
YS5ub2RlVHlwZSE9PTExP2E6bnVsbH0scGFyZW50czpmdW5jdGlvbihhKXtyZXR1cm4gYy5kaXIo
YSwicGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oYSxiLGQpe3JldHVybiBjLmRp
cihhLCJwYXJlbnROb2RlIiwKK2QpfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBjLm50aChhLDIs
Im5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rpb24oYSl7cmV0dXJuIGMubnRoKGEsMiwicHJldmlv
dXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIGMuZGlyKGEsIm5leHRTaWJs
aW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIGMuZGlyKGEsInByZXZpb3VzU2libGlu
ZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oYSxiLGQpe3JldHVybiBjLmRpcihhLCJuZXh0U2libGlu
ZyIsZCl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGIsZCl7cmV0dXJuIGMuZGlyKGEsInByZXZpb3Vz
U2libGluZyIsZCl9LHNpYmxpbmdzOmZ1bmN0aW9uKGEpe3JldHVybiBjLnNpYmxpbmcoYS5wYXJl
bnROb2RlLmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGEpe3JldHVybiBjLnNpYmxp
bmcoYS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGMubm9kZU5hbWUo
YSwiaWZyYW1lIik/CithLmNvbnRlbnREb2N1bWVudHx8YS5jb250ZW50V2luZG93LmRvY3VtZW50
OmMubWFrZUFycmF5KGEuY2hpbGROb2Rlcyl9fSxmdW5jdGlvbihhLGIpe2MuZm5bYV09ZnVuY3Rp
b24oZCxmKXt2YXIgZT1jLm1hcCh0aGlzLGIsZCk7ZWIudGVzdChhKXx8KGY9ZCk7aWYoZiYmdHlw
ZW9mIGY9PT0ic3RyaW5nIillPWMuZmlsdGVyKGYsZSk7ZT10aGlzLmxlbmd0aD4xP2MudW5pcXVl
KGUpOmU7aWYoKHRoaXMubGVuZ3RoPjF8fGdiLnRlc3QoZikpJiZmYi50ZXN0KGEpKWU9ZS5yZXZl
cnNlKCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGUsYSxSLmNhbGwoYXJndW1lbnRzKS5qb2luKCIs
IikpfX0pO2MuZXh0ZW5kKHtmaWx0ZXI6ZnVuY3Rpb24oYSxiLGQpe2lmKGQpYT0iOm5vdCgiK2Er
IikiO3JldHVybiBjLmZpbmQubWF0Y2hlcyhhLGIpfSxkaXI6ZnVuY3Rpb24oYSxiLGQpe3ZhciBm
PVtdO2ZvcihhPWFbYl07YSYmYS5ub2RlVHlwZSE9PTkmJihkPT09d3x8YS5ub2RlVHlwZSE9PTF8
fCFjKGEpLmlzKGQpKTspe2Eubm9kZVR5cGU9PT0KKzEmJmYucHVzaChhKTthPWFbYl19cmV0dXJu
IGZ9LG50aDpmdW5jdGlvbihhLGIsZCl7Yj1ifHwxO2Zvcih2YXIgZj0wO2E7YT1hW2RdKWlmKGEu
bm9kZVR5cGU9PT0xJiYrK2Y9PT1iKWJyZWFrO3JldHVybiBhfSxzaWJsaW5nOmZ1bmN0aW9uKGEs
Yil7Zm9yKHZhciBkPVtdO2E7YT1hLm5leHRTaWJsaW5nKWEubm9kZVR5cGU9PT0xJiZhIT09YiYm
ZC5wdXNoKGEpO3JldHVybiBkfX0pO3ZhciBKYT0vIGpRdWVyeVxkKz0iKD86XGQrfG51bGwpIi9n
LFY9L15ccysvLEthPS8oPChbXHc6XSspW14+XSo/KVwvPi9nLGhiPS9eKD86YXJlYXxicnxjb2x8
ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkkL2ksTGE9LzwoW1x3Ol0rKS8saWI9
Lzx0Ym9keS9pLGpiPS88fCYjP1x3KzsvLHRhPS88c2NyaXB0fDxvYmplY3R8PGVtYmVkfDxvcHRp
b258PHN0eWxlL2ksdWE9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksTWE9ZnVu
Y3Rpb24oYSxiLGQpe3JldHVybiBoYi50ZXN0KGQpPworYTpiKyI+PC8iK2QrIj4ifSxGPXtvcHRp
b246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSxsZWdlbmQ6
WzEsIjxmaWVsZHNldD4iLCI8L2ZpZWxkc2V0PiJdLHRoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJs
ZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sdGQ6WzMsIjx0
YWJsZT48dGJvZHk+PHRyPiIsIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLGNvbDpbMiwiPHRhYmxl
Pjx0Ym9keT48L3Rib2R5Pjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0sYXJlYTpb
MSwiPG1hcD4iLCI8L21hcD4iXSxfZGVmYXVsdDpbMCwiIiwiIl19O0Yub3B0Z3JvdXA9Ri5vcHRp
b247Ri50Ym9keT1GLnRmb290PUYuY29sZ3JvdXA9Ri5jYXB0aW9uPUYudGhlYWQ7Ri50aD1GLnRk
O2lmKCFjLnN1cHBvcnQuaHRtbFNlcmlhbGl6ZSlGLl9kZWZhdWx0PVsxLCJkaXY8ZGl2PiIsIjwv
ZGl2PiJdO2MuZm4uZXh0ZW5kKHt0ZXh0OmZ1bmN0aW9uKGEpe2lmKGMuaXNGdW5jdGlvbihhKSly
ZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBkPQorYyh0aGlzKTtkLnRleHQoYS5jYWxs
KHRoaXMsYixkLnRleHQoKSkpfSk7aWYodHlwZW9mIGEhPT0ib2JqZWN0IiYmYSE9PXcpcmV0dXJu
IHRoaXMuZW1wdHkoKS5hcHBlbmQoKHRoaXNbMF0mJnRoaXNbMF0ub3duZXJEb2N1bWVudHx8cyku
Y3JlYXRlVGV4dE5vZGUoYSkpO3JldHVybiBjLnRleHQodGhpcyl9LHdyYXBBbGw6ZnVuY3Rpb24o
YSl7aWYoYy5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oZCl7Yyh0aGlz
KS53cmFwQWxsKGEuY2FsbCh0aGlzLGQpKX0pO2lmKHRoaXNbMF0pe3ZhciBiPWMoYSx0aGlzWzBd
Lm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKHRydWUpO3RoaXNbMF0ucGFyZW50Tm9kZSYmYi5p
bnNlcnRCZWZvcmUodGhpc1swXSk7Yi5tYXAoZnVuY3Rpb24oKXtmb3IodmFyIGQ9dGhpcztkLmZp
cnN0Q2hpbGQmJmQuZmlyc3RDaGlsZC5ub2RlVHlwZT09PTE7KWQ9ZC5maXJzdENoaWxkO3JldHVy
biBkfSkuYXBwZW5kKHRoaXMpfXJldHVybiB0aGlzfSwKK3dyYXBJbm5lcjpmdW5jdGlvbihhKXtp
ZihjLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtjKHRoaXMpLndy
YXBJbm5lcihhLmNhbGwodGhpcyxiKSl9KTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFy
IGI9Yyh0aGlzKSxkPWIuY29udGVudHMoKTtkLmxlbmd0aD9kLndyYXBBbGwoYSk6Yi5hcHBlbmQo
YSl9KX0sd3JhcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Yyh0aGlz
KS53cmFwQWxsKGEpfSl9LHVud3JhcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpLmVh
Y2goZnVuY3Rpb24oKXtjLm5vZGVOYW1lKHRoaXMsImJvZHkiKXx8Yyh0aGlzKS5yZXBsYWNlV2l0
aCh0aGlzLmNoaWxkTm9kZXMpfSkuZW5kKCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlz
LmRvbU1hbmlwKGFyZ3VtZW50cyx0cnVlLGZ1bmN0aW9uKGEpe3RoaXMubm9kZVR5cGU9PT0xJiZ0
aGlzLmFwcGVuZENoaWxkKGEpfSl9LAorcHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRv
bU1hbmlwKGFyZ3VtZW50cyx0cnVlLGZ1bmN0aW9uKGEpe3RoaXMubm9kZVR5cGU9PT0xJiZ0aGlz
Lmluc2VydEJlZm9yZShhLHRoaXMuZmlyc3RDaGlsZCl9KX0sYmVmb3JlOmZ1bmN0aW9uKCl7aWYo
dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlKXJldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50
cyxmYWxzZSxmdW5jdGlvbihiKXt0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIsdGhpcyl9
KTtlbHNlIGlmKGFyZ3VtZW50cy5sZW5ndGgpe3ZhciBhPWMoYXJndW1lbnRzWzBdKTthLnB1c2gu
YXBwbHkoYSx0aGlzLnRvQXJyYXkoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGEsImJlZm9yZSIs
YXJndW1lbnRzKX19LGFmdGVyOmZ1bmN0aW9uKCl7aWYodGhpc1swXSYmdGhpc1swXS5wYXJlbnRO
b2RlKXJldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmYWxzZSxmdW5jdGlvbihiKXt0aGlz
LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIsCit0aGlzLm5leHRTaWJsaW5nKX0pO2Vsc2UgaWYo
YXJndW1lbnRzLmxlbmd0aCl7dmFyIGE9dGhpcy5wdXNoU3RhY2sodGhpcywiYWZ0ZXIiLGFyZ3Vt
ZW50cyk7YS5wdXNoLmFwcGx5KGEsYyhhcmd1bWVudHNbMF0pLnRvQXJyYXkoKSk7cmV0dXJuIGF9
fSxyZW1vdmU6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGQ9MCxmOyhmPXRoaXNbZF0pIT1udWxsO2Qr
KylpZighYXx8Yy5maWx0ZXIoYSxbZl0pLmxlbmd0aCl7aWYoIWImJmYubm9kZVR5cGU9PT0xKXtj
LmNsZWFuRGF0YShmLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpO2MuY2xlYW5EYXRhKFtmXSl9
Zi5wYXJlbnROb2RlJiZmLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZil9cmV0dXJuIHRoaXN9LGVt
cHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciBhPTAsYjsoYj10aGlzW2FdKSE9bnVsbDthKyspZm9yKGIu
bm9kZVR5cGU9PT0xJiZjLmNsZWFuRGF0YShiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpO2Iu
Zmlyc3RDaGlsZDspYi5yZW1vdmVDaGlsZChiLmZpcnN0Q2hpbGQpOworcmV0dXJuIHRoaXN9LGNs
b25lOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMubWFwKGZ1bmN0aW9uKCl7aWYoIWMuc3VwcG9ydC5u
b0Nsb25lRXZlbnQmJiFjLmlzWE1MRG9jKHRoaXMpKXt2YXIgZD10aGlzLm91dGVySFRNTCxmPXRo
aXMub3duZXJEb2N1bWVudDtpZighZCl7ZD1mLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2QuYXBwZW5k
Q2hpbGQodGhpcy5jbG9uZU5vZGUodHJ1ZSkpO2Q9ZC5pbm5lckhUTUx9cmV0dXJuIGMuY2xlYW4o
W2QucmVwbGFjZShKYSwiIikucmVwbGFjZSgvPShbXj0iJz5cc10rXC8pPi9nLCc9IiQxIj4nKS5y
ZXBsYWNlKFYsIiIpXSxmKVswXX1lbHNlIHJldHVybiB0aGlzLmNsb25lTm9kZSh0cnVlKX0pO2lm
KGE9PT10cnVlKXtyYSh0aGlzLGIpO3JhKHRoaXMuZmluZCgiKiIpLGIuZmluZCgiKiIpKX1yZXR1
cm4gYn0saHRtbDpmdW5jdGlvbihhKXtpZihhPT09dylyZXR1cm4gdGhpc1swXSYmdGhpc1swXS5u
b2RlVHlwZT09PTE/dGhpc1swXS5pbm5lckhUTUwucmVwbGFjZShKYSwKKyIiKTpudWxsO2Vsc2Ug
aWYodHlwZW9mIGE9PT0ic3RyaW5nIiYmIXRhLnRlc3QoYSkmJihjLnN1cHBvcnQubGVhZGluZ1do
aXRlc3BhY2V8fCFWLnRlc3QoYSkpJiYhRlsoTGEuZXhlYyhhKXx8WyIiLCIiXSlbMV0udG9Mb3dl
ckNhc2UoKV0pe2E9YS5yZXBsYWNlKEthLE1hKTt0cnl7Zm9yKHZhciBiPTAsZD10aGlzLmxlbmd0
aDtiPGQ7YisrKWlmKHRoaXNbYl0ubm9kZVR5cGU9PT0xKXtjLmNsZWFuRGF0YSh0aGlzW2JdLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpO3RoaXNbYl0uaW5uZXJIVE1MPWF9fWNhdGNoKGYpe3Ro
aXMuZW1wdHkoKS5hcHBlbmQoYSl9fWVsc2UgYy5pc0Z1bmN0aW9uKGEpP3RoaXMuZWFjaChmdW5j
dGlvbihlKXt2YXIgaj1jKHRoaXMpLGk9ai5odG1sKCk7ai5lbXB0eSgpLmFwcGVuZChmdW5jdGlv
bigpe3JldHVybiBhLmNhbGwodGhpcyxlLGkpfSl9KTp0aGlzLmVtcHR5KCkuYXBwZW5kKGEpO3Jl
dHVybiB0aGlzfSxyZXBsYWNlV2l0aDpmdW5jdGlvbihhKXtpZih0aGlzWzBdJiYKK3RoaXNbMF0u
cGFyZW50Tm9kZSl7aWYoYy5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24o
Yil7dmFyIGQ9Yyh0aGlzKSxmPWQuaHRtbCgpO2QucmVwbGFjZVdpdGgoYS5jYWxsKHRoaXMsYixm
KSl9KTtpZih0eXBlb2YgYSE9PSJzdHJpbmciKWE9YyhhKS5kZXRhY2goKTtyZXR1cm4gdGhpcy5l
YWNoKGZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5uZXh0U2libGluZyxkPXRoaXMucGFyZW50Tm9kZTtj
KHRoaXMpLnJlbW92ZSgpO2I/YyhiKS5iZWZvcmUoYSk6YyhkKS5hcHBlbmQoYSl9KX1lbHNlIHJl
dHVybiB0aGlzLnB1c2hTdGFjayhjKGMuaXNGdW5jdGlvbihhKT9hKCk6YSksInJlcGxhY2VXaXRo
IixhKX0sZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJlbW92ZShhLHRydWUpfSxkb21N
YW5pcDpmdW5jdGlvbihhLGIsZCl7ZnVuY3Rpb24gZih1KXtyZXR1cm4gYy5ub2RlTmFtZSh1LCJ0
YWJsZSIpP3UuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IilbMF18fAordS5hcHBlbmRDaGls
ZCh1Lm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKSk6dX12YXIgZSxqLGk9YVsw
XSxvPVtdLGs7aWYoIWMuc3VwcG9ydC5jaGVja0Nsb25lJiZhcmd1bWVudHMubGVuZ3RoPT09MyYm
dHlwZW9mIGk9PT0ic3RyaW5nIiYmdWEudGVzdChpKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9u
KCl7Yyh0aGlzKS5kb21NYW5pcChhLGIsZCx0cnVlKX0pO2lmKGMuaXNGdW5jdGlvbihpKSlyZXR1
cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKHUpe3ZhciB6PWModGhpcyk7YVswXT1pLmNhbGwodGhpcyx1
LGI/ei5odG1sKCk6dyk7ei5kb21NYW5pcChhLGIsZCl9KTtpZih0aGlzWzBdKXtlPWkmJmkucGFy
ZW50Tm9kZTtlPWMuc3VwcG9ydC5wYXJlbnROb2RlJiZlJiZlLm5vZGVUeXBlPT09MTEmJmUuY2hp
bGROb2Rlcy5sZW5ndGg9PT10aGlzLmxlbmd0aD97ZnJhZ21lbnQ6ZX06c2EoYSx0aGlzLG8pO2s9
ZS5mcmFnbWVudDtpZihqPWsuY2hpbGROb2Rlcy5sZW5ndGg9PT0KKzE/KGs9ay5maXJzdENoaWxk
KTprLmZpcnN0Q2hpbGQpe2I9YiYmYy5ub2RlTmFtZShqLCJ0ciIpO2Zvcih2YXIgbj0wLHI9dGhp
cy5sZW5ndGg7bjxyO24rKylkLmNhbGwoYj9mKHRoaXNbbl0saik6dGhpc1tuXSxuPjB8fGUuY2Fj
aGVhYmxlfHx0aGlzLmxlbmd0aD4xP2suY2xvbmVOb2RlKHRydWUpOmspfW8ubGVuZ3RoJiZjLmVh
Y2gobyxRYSl9cmV0dXJuIHRoaXN9fSk7Yy5mcmFnbWVudHM9e307Yy5lYWNoKHthcHBlbmRUbzoi
YXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRB
ZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oYSxiKXtjLmZu
W2FdPWZ1bmN0aW9uKGQpe3ZhciBmPVtdO2Q9YyhkKTt2YXIgZT10aGlzLmxlbmd0aD09PTEmJnRo
aXNbMF0ucGFyZW50Tm9kZTtpZihlJiZlLm5vZGVUeXBlPT09MTEmJmUuY2hpbGROb2Rlcy5sZW5n
dGg9PT0xJiZkLmxlbmd0aD09PTEpe2RbYl0odGhpc1swXSk7CityZXR1cm4gdGhpc31lbHNle2U9
MDtmb3IodmFyIGo9ZC5sZW5ndGg7ZTxqO2UrKyl7dmFyIGk9KGU+MD90aGlzLmNsb25lKHRydWUp
OnRoaXMpLmdldCgpO2MuZm5bYl0uYXBwbHkoYyhkW2VdKSxpKTtmPWYuY29uY2F0KGkpfXJldHVy
biB0aGlzLnB1c2hTdGFjayhmLGEsZC5zZWxlY3Rvcil9fX0pO2MuZXh0ZW5kKHtjbGVhbjpmdW5j
dGlvbihhLGIsZCxmKXtiPWJ8fHM7aWYodHlwZW9mIGIuY3JlYXRlRWxlbWVudD09PSJ1bmRlZmlu
ZWQiKWI9Yi5vd25lckRvY3VtZW50fHxiWzBdJiZiWzBdLm93bmVyRG9jdW1lbnR8fHM7Zm9yKHZh
ciBlPVtdLGo9MCxpOyhpPWFbal0pIT1udWxsO2orKyl7aWYodHlwZW9mIGk9PT0ibnVtYmVyIilp
Kz0iIjtpZihpKXtpZih0eXBlb2YgaT09PSJzdHJpbmciJiYhamIudGVzdChpKSlpPWIuY3JlYXRl
VGV4dE5vZGUoaSk7ZWxzZSBpZih0eXBlb2YgaT09PSJzdHJpbmciKXtpPWkucmVwbGFjZShLYSxN
YSk7dmFyIG89KExhLmV4ZWMoaSl8fFsiIiwKKyIiXSlbMV0udG9Mb3dlckNhc2UoKSxrPUZbb118
fEYuX2RlZmF1bHQsbj1rWzBdLHI9Yi5jcmVhdGVFbGVtZW50KCJkaXYiKTtmb3Ioci5pbm5lckhU
TUw9a1sxXStpK2tbMl07bi0tOylyPXIubGFzdENoaWxkO2lmKCFjLnN1cHBvcnQudGJvZHkpe249
aWIudGVzdChpKTtvPW89PT0idGFibGUiJiYhbj9yLmZpcnN0Q2hpbGQmJnIuZmlyc3RDaGlsZC5j
aGlsZE5vZGVzOmtbMV09PT0iPHRhYmxlPiImJiFuP3IuY2hpbGROb2RlczpbXTtmb3Ioaz1vLmxl
bmd0aC0xO2s+PTA7LS1rKWMubm9kZU5hbWUob1trXSwidGJvZHkiKSYmIW9ba10uY2hpbGROb2Rl
cy5sZW5ndGgmJm9ba10ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvW2tdKX0hYy5zdXBwb3J0Lmxl
YWRpbmdXaGl0ZXNwYWNlJiZWLnRlc3QoaSkmJnIuaW5zZXJ0QmVmb3JlKGIuY3JlYXRlVGV4dE5v
ZGUoVi5leGVjKGkpWzBdKSxyLmZpcnN0Q2hpbGQpO2k9ci5jaGlsZE5vZGVzfWlmKGkubm9kZVR5
cGUpZS5wdXNoKGkpO2Vsc2UgZT0KK2MubWVyZ2UoZSxpKX19aWYoZClmb3Ioaj0wO2Vbal07aisr
KWlmKGYmJmMubm9kZU5hbWUoZVtqXSwic2NyaXB0IikmJighZVtqXS50eXBlfHxlW2pdLnR5cGUu
dG9Mb3dlckNhc2UoKT09PSJ0ZXh0L2phdmFzY3JpcHQiKSlmLnB1c2goZVtqXS5wYXJlbnROb2Rl
P2Vbal0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlW2pdKTplW2pdKTtlbHNle2Vbal0ubm9kZVR5
cGU9PT0xJiZlLnNwbGljZS5hcHBseShlLFtqKzEsMF0uY29uY2F0KGMubWFrZUFycmF5KGVbal0u
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpKSkpO2QuYXBwZW5kQ2hpbGQoZVtqXSl9cmV0
dXJuIGV9LGNsZWFuRGF0YTpmdW5jdGlvbihhKXtmb3IodmFyIGIsZCxmPWMuY2FjaGUsZT1jLmV2
ZW50LnNwZWNpYWwsaj1jLnN1cHBvcnQuZGVsZXRlRXhwYW5kbyxpPTAsbzsobz1hW2ldKSE9bnVs
bDtpKyspaWYoZD1vW2MuZXhwYW5kb10pe2I9ZltkXTtpZihiLmV2ZW50cylmb3IodmFyIGsgaW4g
Yi5ldmVudHMpZVtrXT8KK2MuZXZlbnQucmVtb3ZlKG8sayk6Q2EobyxrLGIuaGFuZGxlKTtpZihq
KWRlbGV0ZSBvW2MuZXhwYW5kb107ZWxzZSBvLnJlbW92ZUF0dHJpYnV0ZSYmby5yZW1vdmVBdHRy
aWJ1dGUoYy5leHBhbmRvKTtkZWxldGUgZltkXX19fSk7dmFyIGtiPS96LT9pbmRleHxmb250LT93
ZWlnaHR8b3BhY2l0eXx6b29tfGxpbmUtP2hlaWdodC9pLE5hPS9hbHBoYVwoW14pXSpcKS8sT2E9
L29wYWNpdHk9KFteKV0qKS8saGE9L2Zsb2F0L2ksaWE9Ly0oW2Etel0pL2lnLGxiPS8oW0EtWl0p
L2csbWI9L14tP1xkKyg/OnB4KT8kL2ksbmI9L14tP1xkLyxvYj17cG9zaXRpb246ImFic29sdXRl
Iix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0scGI9WyJMZWZ0IiwiUmlnaHQi
XSxxYj1bIlRvcCIsIkJvdHRvbSJdLHJiPXMuZGVmYXVsdFZpZXcmJnMuZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZSxQYT1jLnN1cHBvcnQuY3NzRmxvYXQ/ImNzc0Zsb2F0Ijoic3R5bGVGbG9h
dCIsamE9CitmdW5jdGlvbihhLGIpe3JldHVybiBiLnRvVXBwZXJDYXNlKCl9O2MuZm4uY3NzPWZ1
bmN0aW9uKGEsYil7cmV0dXJuIFgodGhpcyxhLGIsdHJ1ZSxmdW5jdGlvbihkLGYsZSl7aWYoZT09
PXcpcmV0dXJuIGMuY3VyQ1NTKGQsZik7aWYodHlwZW9mIGU9PT0ibnVtYmVyIiYmIWtiLnRlc3Qo
ZikpZSs9InB4IjtjLnN0eWxlKGQsZixlKX0pfTtjLmV4dGVuZCh7c3R5bGU6ZnVuY3Rpb24oYSxi
LGQpe2lmKCFhfHxhLm5vZGVUeXBlPT09M3x8YS5ub2RlVHlwZT09PTgpcmV0dXJuIHc7aWYoKGI9
PT0id2lkdGgifHxiPT09ImhlaWdodCIpJiZwYXJzZUZsb2F0KGQpPDApZD13O3ZhciBmPWEuc3R5
bGV8fGEsZT1kIT09dztpZighYy5zdXBwb3J0Lm9wYWNpdHkmJmI9PT0ib3BhY2l0eSIpe2lmKGUp
e2Yuem9vbT0xO2I9cGFyc2VJbnQoZCwxMCkrIiI9PT0iTmFOIj8iIjoiYWxwaGEob3BhY2l0eT0i
K2QqMTAwKyIpIjthPWYuZmlsdGVyfHxjLmN1ckNTUyhhLCJmaWx0ZXIiKXx8IiI7Zi5maWx0ZXI9
CitOYS50ZXN0KGEpP2EucmVwbGFjZShOYSxiKTpifXJldHVybiBmLmZpbHRlciYmZi5maWx0ZXIu
aW5kZXhPZigib3BhY2l0eT0iKT49MD9wYXJzZUZsb2F0KE9hLmV4ZWMoZi5maWx0ZXIpWzFdKS8x
MDArIiI6IiJ9aWYoaGEudGVzdChiKSliPVBhO2I9Yi5yZXBsYWNlKGlhLGphKTtpZihlKWZbYl09
ZDtyZXR1cm4gZltiXX0sY3NzOmZ1bmN0aW9uKGEsYixkLGYpe2lmKGI9PT0id2lkdGgifHxiPT09
ImhlaWdodCIpe3ZhciBlLGo9Yj09PSJ3aWR0aCI/cGI6cWI7ZnVuY3Rpb24gaSgpe2U9Yj09PSJ3
aWR0aCI/YS5vZmZzZXRXaWR0aDphLm9mZnNldEhlaWdodDtmIT09ImJvcmRlciImJmMuZWFjaChq
LGZ1bmN0aW9uKCl7Znx8KGUtPXBhcnNlRmxvYXQoYy5jdXJDU1MoYSwicGFkZGluZyIrdGhpcyx0
cnVlKSl8fDApO2lmKGY9PT0ibWFyZ2luIillKz1wYXJzZUZsb2F0KGMuY3VyQ1NTKGEsIm1hcmdp
biIrdGhpcyx0cnVlKSl8fDA7ZWxzZSBlLT1wYXJzZUZsb2F0KGMuY3VyQ1NTKGEsCisiYm9yZGVy
Iit0aGlzKyJXaWR0aCIsdHJ1ZSkpfHwwfSl9YS5vZmZzZXRXaWR0aCE9PTA/aSgpOmMuc3dhcChh
LG9iLGkpO3JldHVybiBNYXRoLm1heCgwLE1hdGgucm91bmQoZSkpfXJldHVybiBjLmN1ckNTUyhh
LGIsZCl9LGN1ckNTUzpmdW5jdGlvbihhLGIsZCl7dmFyIGYsZT1hLnN0eWxlO2lmKCFjLnN1cHBv
cnQub3BhY2l0eSYmYj09PSJvcGFjaXR5IiYmYS5jdXJyZW50U3R5bGUpe2Y9T2EudGVzdChhLmN1
cnJlbnRTdHlsZS5maWx0ZXJ8fCIiKT9wYXJzZUZsb2F0KFJlZ0V4cC4kMSkvMTAwKyIiOiIiO3Jl
dHVybiBmPT09IiI/IjEiOmZ9aWYoaGEudGVzdChiKSliPVBhO2lmKCFkJiZlJiZlW2JdKWY9ZVti
XTtlbHNlIGlmKHJiKXtpZihoYS50ZXN0KGIpKWI9ImZsb2F0IjtiPWIucmVwbGFjZShsYiwiLSQx
IikudG9Mb3dlckNhc2UoKTtlPWEub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldztpZighZSlyZXR1
cm4gbnVsbDtpZihhPWUuZ2V0Q29tcHV0ZWRTdHlsZShhLG51bGwpKWY9CithLmdldFByb3BlcnR5
VmFsdWUoYik7aWYoYj09PSJvcGFjaXR5IiYmZj09PSIiKWY9IjEifWVsc2UgaWYoYS5jdXJyZW50
U3R5bGUpe2Q9Yi5yZXBsYWNlKGlhLGphKTtmPWEuY3VycmVudFN0eWxlW2JdfHxhLmN1cnJlbnRT
dHlsZVtkXTtpZighbWIudGVzdChmKSYmbmIudGVzdChmKSl7Yj1lLmxlZnQ7dmFyIGo9YS5ydW50
aW1lU3R5bGUubGVmdDthLnJ1bnRpbWVTdHlsZS5sZWZ0PWEuY3VycmVudFN0eWxlLmxlZnQ7ZS5s
ZWZ0PWQ9PT0iZm9udFNpemUiPyIxZW0iOmZ8fDA7Zj1lLnBpeGVsTGVmdCsicHgiO2UubGVmdD1i
O2EucnVudGltZVN0eWxlLmxlZnQ9an19cmV0dXJuIGZ9LHN3YXA6ZnVuY3Rpb24oYSxiLGQpe3Zh
ciBmPXt9O2Zvcih2YXIgZSBpbiBiKXtmW2VdPWEuc3R5bGVbZV07YS5zdHlsZVtlXT1iW2VdfWQu
Y2FsbChhKTtmb3IoZSBpbiBiKWEuc3R5bGVbZV09ZltlXX19KTtpZihjLmV4cHImJmMuZXhwci5m
aWx0ZXJzKXtjLmV4cHIuZmlsdGVycy5oaWRkZW49ZnVuY3Rpb24oYSl7dmFyIGI9CithLm9mZnNl
dFdpZHRoLGQ9YS5vZmZzZXRIZWlnaHQsZj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0idHIi
O3JldHVybiBiPT09MCYmZD09PTAmJiFmP3RydWU6Yj4wJiZkPjAmJiFmP2ZhbHNlOmMuY3VyQ1NT
KGEsImRpc3BsYXkiKT09PSJub25lIn07Yy5leHByLmZpbHRlcnMudmlzaWJsZT1mdW5jdGlvbihh
KXtyZXR1cm4hYy5leHByLmZpbHRlcnMuaGlkZGVuKGEpfX12YXIgc2I9SigpLHRiPS88c2NyaXB0
KC58XHMpKj9cL3NjcmlwdD4vZ2ksdWI9L3NlbGVjdHx0ZXh0YXJlYS9pLHZiPS9jb2xvcnxkYXRl
fGRhdGV0aW1lfGVtYWlsfGhpZGRlbnxtb250aHxudW1iZXJ8cGFzc3dvcmR8cmFuZ2V8c2VhcmNo
fHRlbHx0ZXh0fHRpbWV8dXJsfHdlZWsvaSxOPS89XD8oJnwkKS8sa2E9L1w/Lyx3Yj0vKFw/fCYp
Xz0uKj8oJnwkKS8seGI9L14oXHcrOik/XC9cLyhbXlwvPyNdKykvLHliPS8lMjAvZyx6Yj1jLmZu
LmxvYWQ7Yy5mbi5leHRlbmQoe2xvYWQ6ZnVuY3Rpb24oYSxiLGQpe2lmKHR5cGVvZiBhIT09Cisi
c3RyaW5nIilyZXR1cm4gemIuY2FsbCh0aGlzLGEpO2Vsc2UgaWYoIXRoaXMubGVuZ3RoKXJldHVy
biB0aGlzO3ZhciBmPWEuaW5kZXhPZigiICIpO2lmKGY+PTApe3ZhciBlPWEuc2xpY2UoZixhLmxl
bmd0aCk7YT1hLnNsaWNlKDAsZil9Zj0iR0VUIjtpZihiKWlmKGMuaXNGdW5jdGlvbihiKSl7ZD1i
O2I9bnVsbH1lbHNlIGlmKHR5cGVvZiBiPT09Im9iamVjdCIpe2I9Yy5wYXJhbShiLGMuYWpheFNl
dHRpbmdzLnRyYWRpdGlvbmFsKTtmPSJQT1NUIn12YXIgaj10aGlzO2MuYWpheCh7dXJsOmEsdHlw
ZTpmLGRhdGFUeXBlOiJodG1sIixkYXRhOmIsY29tcGxldGU6ZnVuY3Rpb24oaSxvKXtpZihvPT09
InN1Y2Nlc3MifHxvPT09Im5vdG1vZGlmaWVkIilqLmh0bWwoZT9jKCI8ZGl2IC8+IikuYXBwZW5k
KGkucmVzcG9uc2VUZXh0LnJlcGxhY2UodGIsIiIpKS5maW5kKGUpOmkucmVzcG9uc2VUZXh0KTtk
JiZqLmVhY2goZCxbaS5yZXNwb25zZVRleHQsbyxpXSl9fSk7cmV0dXJuIHRoaXN9LAorc2VyaWFs
aXplOmZ1bmN0aW9uKCl7cmV0dXJuIGMucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2Vy
aWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5lbGVtZW50cz9jLm1ha2VBcnJheSh0aGlzLmVsZW1lbnRzKTp0aGlzfSkuZmlsdGVyKGZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZSYmIXRoaXMuZGlzYWJsZWQmJih0aGlzLmNoZWNrZWR8
fHViLnRlc3QodGhpcy5ub2RlTmFtZSl8fHZiLnRlc3QodGhpcy50eXBlKSl9KS5tYXAoZnVuY3Rp
b24oYSxiKXthPWModGhpcykudmFsKCk7cmV0dXJuIGE9PW51bGw/bnVsbDpjLmlzQXJyYXkoYSk/
Yy5tYXAoYSxmdW5jdGlvbihkKXtyZXR1cm57bmFtZTpiLm5hbWUsdmFsdWU6ZH19KTp7bmFtZTpi
Lm5hbWUsdmFsdWU6YX19KS5nZXQoKX19KTtjLmVhY2goImFqYXhTdGFydCBhamF4U3RvcCBhamF4
Q29tcGxldGUgYWpheEVycm9yIGFqYXhTdWNjZXNzIGFqYXhTZW5kIi5zcGxpdCgiICIpLAorZnVu
Y3Rpb24oYSxiKXtjLmZuW2JdPWZ1bmN0aW9uKGQpe3JldHVybiB0aGlzLmJpbmQoYixkKX19KTtj
LmV4dGVuZCh7Z2V0OmZ1bmN0aW9uKGEsYixkLGYpe2lmKGMuaXNGdW5jdGlvbihiKSl7Zj1mfHxk
O2Q9YjtiPW51bGx9cmV0dXJuIGMuYWpheCh7dHlwZToiR0VUIix1cmw6YSxkYXRhOmIsc3VjY2Vz
czpkLGRhdGFUeXBlOmZ9KX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGMuZ2V0KGEs
bnVsbCxiLCJzY3JpcHQiKX0sZ2V0SlNPTjpmdW5jdGlvbihhLGIsZCl7cmV0dXJuIGMuZ2V0KGEs
YixkLCJqc29uIil9LHBvc3Q6ZnVuY3Rpb24oYSxiLGQsZil7aWYoYy5pc0Z1bmN0aW9uKGIpKXtm
PWZ8fGQ7ZD1iO2I9e319cmV0dXJuIGMuYWpheCh7dHlwZToiUE9TVCIsdXJsOmEsZGF0YTpiLHN1
Y2Nlc3M6ZCxkYXRhVHlwZTpmfSl9LGFqYXhTZXR1cDpmdW5jdGlvbihhKXtjLmV4dGVuZChjLmFq
YXhTZXR0aW5ncyxhKX0sYWpheFNldHRpbmdzOnt1cmw6bG9jYXRpb24uaHJlZiwKK2dsb2JhbDp0
cnVlLHR5cGU6IkdFVCIsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5j
b2RlZCIscHJvY2Vzc0RhdGE6dHJ1ZSxhc3luYzp0cnVlLHhocjpBLlhNTEh0dHBSZXF1ZXN0JiYo
QS5sb2NhdGlvbi5wcm90b2NvbCE9PSJmaWxlOiJ8fCFBLkFjdGl2ZVhPYmplY3QpP2Z1bmN0aW9u
KCl7cmV0dXJuIG5ldyBBLlhNTEh0dHBSZXF1ZXN0fTpmdW5jdGlvbigpe3RyeXtyZXR1cm4gbmV3
IEEuQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTEhUVFAiKX1jYXRjaChhKXt9fSxhY2NlcHRz
Ont4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGh0bWw6InRleHQvaHRtbCIsc2NyaXB0
OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLGpzb246ImFwcGxpY2F0
aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCIsdGV4dDoidGV4dC9wbGFpbiIsX2RlZmF1bHQ6Iiov
KiJ9fSxsYXN0TW9kaWZpZWQ6e30sZXRhZzp7fSxhamF4OmZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIo
KXtlLnN1Y2Nlc3MmJgorZS5zdWNjZXNzLmNhbGwoayxvLGkseCk7ZS5nbG9iYWwmJmYoImFqYXhT
dWNjZXNzIixbeCxlXSl9ZnVuY3Rpb24gZCgpe2UuY29tcGxldGUmJmUuY29tcGxldGUuY2FsbChr
LHgsaSk7ZS5nbG9iYWwmJmYoImFqYXhDb21wbGV0ZSIsW3gsZV0pO2UuZ2xvYmFsJiYhLS1jLmFj
dGl2ZSYmYy5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpfWZ1bmN0aW9uIGYocSxwKXsoZS5jb250
ZXh0P2MoZS5jb250ZXh0KTpjLmV2ZW50KS50cmlnZ2VyKHEscCl9dmFyIGU9Yy5leHRlbmQodHJ1
ZSx7fSxjLmFqYXhTZXR0aW5ncyxhKSxqLGksbyxrPWEmJmEuY29udGV4dHx8ZSxuPWUudHlwZS50
b1VwcGVyQ2FzZSgpO2lmKGUuZGF0YSYmZS5wcm9jZXNzRGF0YSYmdHlwZW9mIGUuZGF0YSE9PSJz
dHJpbmciKWUuZGF0YT1jLnBhcmFtKGUuZGF0YSxlLnRyYWRpdGlvbmFsKTtpZihlLmRhdGFUeXBl
PT09Impzb25wIil7aWYobj09PSJHRVQiKU4udGVzdChlLnVybCl8fChlLnVybCs9KGthLnRlc3Qo
ZS51cmwpPworIiYiOiI/IikrKGUuanNvbnB8fCJjYWxsYmFjayIpKyI9PyIpO2Vsc2UgaWYoIWUu
ZGF0YXx8IU4udGVzdChlLmRhdGEpKWUuZGF0YT0oZS5kYXRhP2UuZGF0YSsiJiI6IiIpKyhlLmpz
b25wfHwiY2FsbGJhY2siKSsiPT8iO2UuZGF0YVR5cGU9Impzb24ifWlmKGUuZGF0YVR5cGU9PT0i
anNvbiImJihlLmRhdGEmJk4udGVzdChlLmRhdGEpfHxOLnRlc3QoZS51cmwpKSl7aj1lLmpzb25w
Q2FsbGJhY2t8fCJqc29ucCIrc2IrKztpZihlLmRhdGEpZS5kYXRhPShlLmRhdGErIiIpLnJlcGxh
Y2UoTiwiPSIraisiJDEiKTtlLnVybD1lLnVybC5yZXBsYWNlKE4sIj0iK2orIiQxIik7ZS5kYXRh
VHlwZT0ic2NyaXB0IjtBW2pdPUFbal18fGZ1bmN0aW9uKHEpe289cTtiKCk7ZCgpO0Fbal09dzt0
cnl7ZGVsZXRlIEFbal19Y2F0Y2gocCl7fXomJnoucmVtb3ZlQ2hpbGQoQyl9fWlmKGUuZGF0YVR5
cGU9PT0ic2NyaXB0IiYmZS5jYWNoZT09PW51bGwpZS5jYWNoZT1mYWxzZTtpZihlLmNhY2hlPT09
CitmYWxzZSYmbj09PSJHRVQiKXt2YXIgcj1KKCksdT1lLnVybC5yZXBsYWNlKHdiLCIkMV89Iity
KyIkMiIpO2UudXJsPXUrKHU9PT1lLnVybD8oa2EudGVzdChlLnVybCk/IiYiOiI/IikrIl89Iity
OiIiKX1pZihlLmRhdGEmJm49PT0iR0VUIillLnVybCs9KGthLnRlc3QoZS51cmwpPyImIjoiPyIp
K2UuZGF0YTtlLmdsb2JhbCYmIWMuYWN0aXZlKysmJmMuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0
Iik7cj0ocj14Yi5leGVjKGUudXJsKSkmJihyWzFdJiZyWzFdIT09bG9jYXRpb24ucHJvdG9jb2x8
fHJbMl0hPT1sb2NhdGlvbi5ob3N0KTtpZihlLmRhdGFUeXBlPT09InNjcmlwdCImJm49PT0iR0VU
IiYmcil7dmFyIHo9cy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdfHxzLmRvY3VtZW50
RWxlbWVudCxDPXMuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7Qy5zcmM9ZS51cmw7aWYoZS5zY3Jp
cHRDaGFyc2V0KUMuY2hhcnNldD1lLnNjcmlwdENoYXJzZXQ7aWYoIWope3ZhciBCPQorZmFsc2U7
Qy5vbmxvYWQ9Qy5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZighQiYmKCF0aGlzLnJl
YWR5U3RhdGV8fHRoaXMucmVhZHlTdGF0ZT09PSJsb2FkZWQifHx0aGlzLnJlYWR5U3RhdGU9PT0i
Y29tcGxldGUiKSl7Qj10cnVlO2IoKTtkKCk7Qy5vbmxvYWQ9Qy5vbnJlYWR5c3RhdGVjaGFuZ2U9
bnVsbDt6JiZDLnBhcmVudE5vZGUmJnoucmVtb3ZlQ2hpbGQoQyl9fX16Lmluc2VydEJlZm9yZShD
LHouZmlyc3RDaGlsZCk7cmV0dXJuIHd9dmFyIEU9ZmFsc2UseD1lLnhocigpO2lmKHgpe2UudXNl
cm5hbWU/eC5vcGVuKG4sZS51cmwsZS5hc3luYyxlLnVzZXJuYW1lLGUucGFzc3dvcmQpOngub3Bl
bihuLGUudXJsLGUuYXN5bmMpO3RyeXtpZihlLmRhdGF8fGEmJmEuY29udGVudFR5cGUpeC5zZXRS
ZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLGUuY29udGVudFR5cGUpO2lmKGUuaWZNb2RpZmll
ZCl7Yy5sYXN0TW9kaWZpZWRbZS51cmxdJiZ4LnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVk
LVNpbmNlIiwKK2MubGFzdE1vZGlmaWVkW2UudXJsXSk7Yy5ldGFnW2UudXJsXSYmeC5zZXRSZXF1
ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIixjLmV0YWdbZS51cmxdKX1yfHx4LnNldFJlcXVlc3RI
ZWFkZXIoIlgtUmVxdWVzdGVkLVdpdGgiLCJYTUxIdHRwUmVxdWVzdCIpO3guc2V0UmVxdWVzdEhl
YWRlcigiQWNjZXB0IixlLmRhdGFUeXBlJiZlLmFjY2VwdHNbZS5kYXRhVHlwZV0/ZS5hY2NlcHRz
W2UuZGF0YVR5cGVdKyIsICovKiI6ZS5hY2NlcHRzLl9kZWZhdWx0KX1jYXRjaChnYSl7fWlmKGUu
YmVmb3JlU2VuZCYmZS5iZWZvcmVTZW5kLmNhbGwoayx4LGUpPT09ZmFsc2Upe2UuZ2xvYmFsJiYh
LS1jLmFjdGl2ZSYmYy5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpO3guYWJvcnQoKTtyZXR1cm4g
ZmFsc2V9ZS5nbG9iYWwmJmYoImFqYXhTZW5kIixbeCxlXSk7dmFyIGc9eC5vbnJlYWR5c3RhdGVj
aGFuZ2U9ZnVuY3Rpb24ocSl7aWYoIXh8fHgucmVhZHlTdGF0ZT09PTB8fHE9PT0iYWJvcnQiKXtF
fHwKK2QoKTtFPXRydWU7aWYoeCl4Lm9ucmVhZHlzdGF0ZWNoYW5nZT1jLm5vb3B9ZWxzZSBpZigh
RSYmeCYmKHgucmVhZHlTdGF0ZT09PTR8fHE9PT0idGltZW91dCIpKXtFPXRydWU7eC5vbnJlYWR5
c3RhdGVjaGFuZ2U9Yy5ub29wO2k9cT09PSJ0aW1lb3V0Ij8idGltZW91dCI6IWMuaHR0cFN1Y2Nl
c3MoeCk/ImVycm9yIjplLmlmTW9kaWZpZWQmJmMuaHR0cE5vdE1vZGlmaWVkKHgsZS51cmwpPyJu
b3Rtb2RpZmllZCI6InN1Y2Nlc3MiO3ZhciBwO2lmKGk9PT0ic3VjY2VzcyIpdHJ5e289Yy5odHRw
RGF0YSh4LGUuZGF0YVR5cGUsZSl9Y2F0Y2godil7aT0icGFyc2VyZXJyb3IiO3A9dn1pZihpPT09
InN1Y2Nlc3MifHxpPT09Im5vdG1vZGlmaWVkIilqfHxiKCk7ZWxzZSBjLmhhbmRsZUVycm9yKGUs
eCxpLHApO2QoKTtxPT09InRpbWVvdXQiJiZ4LmFib3J0KCk7aWYoZS5hc3luYyl4PW51bGx9fTt0
cnl7dmFyIGg9eC5hYm9ydDt4LmFib3J0PWZ1bmN0aW9uKCl7eCYmaC5jYWxsKHgpOworZygiYWJv
cnQiKX19Y2F0Y2gobCl7fWUuYXN5bmMmJmUudGltZW91dD4wJiZzZXRUaW1lb3V0KGZ1bmN0aW9u
KCl7eCYmIUUmJmcoInRpbWVvdXQiKX0sZS50aW1lb3V0KTt0cnl7eC5zZW5kKG49PT0iUE9TVCJ8
fG49PT0iUFVUInx8bj09PSJERUxFVEUiP2UuZGF0YTpudWxsKX1jYXRjaChtKXtjLmhhbmRsZUVy
cm9yKGUseCxudWxsLG0pO2QoKX1lLmFzeW5jfHxnKCk7cmV0dXJuIHh9fSxoYW5kbGVFcnJvcjpm
dW5jdGlvbihhLGIsZCxmKXtpZihhLmVycm9yKWEuZXJyb3IuY2FsbChhLmNvbnRleHR8fGEsYixk
LGYpO2lmKGEuZ2xvYmFsKShhLmNvbnRleHQ/YyhhLmNvbnRleHQpOmMuZXZlbnQpLnRyaWdnZXIo
ImFqYXhFcnJvciIsW2IsYSxmXSl9LGFjdGl2ZTowLGh0dHBTdWNjZXNzOmZ1bmN0aW9uKGEpe3Ry
eXtyZXR1cm4hYS5zdGF0dXMmJmxvY2F0aW9uLnByb3RvY29sPT09ImZpbGU6Inx8YS5zdGF0dXM+
PTIwMCYmYS5zdGF0dXM8MzAwfHxhLnN0YXR1cz09PTMwNHx8YS5zdGF0dXM9PT0KKzEyMjN8fGEu
c3RhdHVzPT09MH1jYXRjaChiKXt9cmV0dXJuIGZhbHNlfSxodHRwTm90TW9kaWZpZWQ6ZnVuY3Rp
b24oYSxiKXt2YXIgZD1hLmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIiksZj1hLmdl
dFJlc3BvbnNlSGVhZGVyKCJFdGFnIik7aWYoZCljLmxhc3RNb2RpZmllZFtiXT1kO2lmKGYpYy5l
dGFnW2JdPWY7cmV0dXJuIGEuc3RhdHVzPT09MzA0fHxhLnN0YXR1cz09PTB9LGh0dHBEYXRhOmZ1
bmN0aW9uKGEsYixkKXt2YXIgZj1hLmdldFJlc3BvbnNlSGVhZGVyKCJjb250ZW50LXR5cGUiKXx8
IiIsZT1iPT09InhtbCJ8fCFiJiZmLmluZGV4T2YoInhtbCIpPj0wO2E9ZT9hLnJlc3BvbnNlWE1M
OmEucmVzcG9uc2VUZXh0O2UmJmEuZG9jdW1lbnRFbGVtZW50Lm5vZGVOYW1lPT09InBhcnNlcmVy
cm9yIiYmYy5lcnJvcigicGFyc2VyZXJyb3IiKTtpZihkJiZkLmRhdGFGaWx0ZXIpYT1kLmRhdGFG
aWx0ZXIoYSxiKTtpZih0eXBlb2YgYT09PSJzdHJpbmciKWlmKGI9PT0KKyJqc29uInx8IWImJmYu
aW5kZXhPZigianNvbiIpPj0wKWE9Yy5wYXJzZUpTT04oYSk7ZWxzZSBpZihiPT09InNjcmlwdCJ8
fCFiJiZmLmluZGV4T2YoImphdmFzY3JpcHQiKT49MCljLmdsb2JhbEV2YWwoYSk7cmV0dXJuIGF9
LHBhcmFtOmZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gZChpLG8pe2lmKGMuaXNBcnJheShvKSljLmVh
Y2gobyxmdW5jdGlvbihrLG4pe2J8fC9cW1xdJC8udGVzdChpKT9mKGksbik6ZChpKyJbIisodHlw
ZW9mIG49PT0ib2JqZWN0Inx8Yy5pc0FycmF5KG4pP2s6IiIpKyJdIixuKX0pO2Vsc2UhYiYmbyE9
bnVsbCYmdHlwZW9mIG89PT0ib2JqZWN0Ij9jLmVhY2gobyxmdW5jdGlvbihrLG4pe2QoaSsiWyIr
aysiXSIsbil9KTpmKGksbyl9ZnVuY3Rpb24gZihpLG8pe289Yy5pc0Z1bmN0aW9uKG8pP28oKTpv
O2VbZS5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChpKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50
KG8pfXZhciBlPVtdO2lmKGI9PT13KWI9Yy5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWw7CitpZihj
LmlzQXJyYXkoYSl8fGEuanF1ZXJ5KWMuZWFjaChhLGZ1bmN0aW9uKCl7Zih0aGlzLm5hbWUsdGhp
cy52YWx1ZSl9KTtlbHNlIGZvcih2YXIgaiBpbiBhKWQoaixhW2pdKTtyZXR1cm4gZS5qb2luKCIm
IikucmVwbGFjZSh5YiwiKyIpfX0pO3ZhciBsYT17fSxBYj0vdG9nZ2xlfHNob3d8aGlkZS8sQmI9
L14oWystXT0pPyhbXGQrLS5dKykoLiopJC8sVyx2YT1bWyJoZWlnaHQiLCJtYXJnaW5Ub3AiLCJt
YXJnaW5Cb3R0b20iLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSJdLFsid2lkdGgiLCJtYXJn
aW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCJdLFsib3Bh
Y2l0eSJdXTtjLmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbihhLGIpe2lmKGF8fGE9PT0wKXJldHVy
biB0aGlzLmFuaW1hdGUoSygic2hvdyIsMyksYSxiKTtlbHNle2E9MDtmb3IoYj10aGlzLmxlbmd0
aDthPGI7YSsrKXt2YXIgZD1jLmRhdGEodGhpc1thXSwib2xkZGlzcGxheSIpOwordGhpc1thXS5z
dHlsZS5kaXNwbGF5PWR8fCIiO2lmKGMuY3NzKHRoaXNbYV0sImRpc3BsYXkiKT09PSJub25lIil7
ZD10aGlzW2FdLm5vZGVOYW1lO3ZhciBmO2lmKGxhW2RdKWY9bGFbZF07ZWxzZXt2YXIgZT1jKCI8
IitkKyIgLz4iKS5hcHBlbmRUbygiYm9keSIpO2Y9ZS5jc3MoImRpc3BsYXkiKTtpZihmPT09Im5v
bmUiKWY9ImJsb2NrIjtlLnJlbW92ZSgpO2xhW2RdPWZ9Yy5kYXRhKHRoaXNbYV0sIm9sZGRpc3Bs
YXkiLGYpfX1hPTA7Zm9yKGI9dGhpcy5sZW5ndGg7YTxiO2ErKyl0aGlzW2FdLnN0eWxlLmRpc3Bs
YXk9Yy5kYXRhKHRoaXNbYV0sIm9sZGRpc3BsYXkiKXx8IiI7cmV0dXJuIHRoaXN9fSxoaWRlOmZ1
bmN0aW9uKGEsYil7aWYoYXx8YT09PTApcmV0dXJuIHRoaXMuYW5pbWF0ZShLKCJoaWRlIiwzKSxh
LGIpO2Vsc2V7YT0wO2ZvcihiPXRoaXMubGVuZ3RoO2E8YjthKyspe3ZhciBkPWMuZGF0YSh0aGlz
W2FdLCJvbGRkaXNwbGF5Iik7IWQmJmQhPT0ibm9uZSImJmMuZGF0YSh0aGlzW2FdLAorIm9sZGRp
c3BsYXkiLGMuY3NzKHRoaXNbYV0sImRpc3BsYXkiKSl9YT0wO2ZvcihiPXRoaXMubGVuZ3RoO2E8
YjthKyspdGhpc1thXS5zdHlsZS5kaXNwbGF5PSJub25lIjtyZXR1cm4gdGhpc319LF90b2dnbGU6
Yy5mbi50b2dnbGUsdG9nZ2xlOmZ1bmN0aW9uKGEsYil7dmFyIGQ9dHlwZW9mIGE9PT0iYm9vbGVh
biI7aWYoYy5pc0Z1bmN0aW9uKGEpJiZjLmlzRnVuY3Rpb24oYikpdGhpcy5fdG9nZ2xlLmFwcGx5
KHRoaXMsYXJndW1lbnRzKTtlbHNlIGE9PW51bGx8fGQ/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFy
IGY9ZD9hOmModGhpcykuaXMoIjpoaWRkZW4iKTtjKHRoaXMpW2Y/InNob3ciOiJoaWRlIl0oKX0p
OnRoaXMuYW5pbWF0ZShLKCJ0b2dnbGUiLDMpLGEsYik7cmV0dXJuIHRoaXN9LGZhZGVUbzpmdW5j
dGlvbihhLGIsZCl7cmV0dXJuIHRoaXMuZmlsdGVyKCI6aGlkZGVuIikuY3NzKCJvcGFjaXR5Iiww
KS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGQpfSwKK2FuaW1hdGU6ZnVuY3Rp
b24oYSxiLGQsZil7dmFyIGU9Yy5zcGVlZChiLGQsZik7aWYoYy5pc0VtcHR5T2JqZWN0KGEpKXJl
dHVybiB0aGlzLmVhY2goZS5jb21wbGV0ZSk7cmV0dXJuIHRoaXNbZS5xdWV1ZT09PWZhbHNlPyJl
YWNoIjoicXVldWUiXShmdW5jdGlvbigpe3ZhciBqPWMuZXh0ZW5kKHt9LGUpLGksbz10aGlzLm5v
ZGVUeXBlPT09MSYmYyh0aGlzKS5pcygiOmhpZGRlbiIpLGs9dGhpcztmb3IoaSBpbiBhKXt2YXIg
bj1pLnJlcGxhY2UoaWEsamEpO2lmKGkhPT1uKXthW25dPWFbaV07ZGVsZXRlIGFbaV07aT1ufWlm
KGFbaV09PT0iaGlkZSImJm98fGFbaV09PT0ic2hvdyImJiFvKXJldHVybiBqLmNvbXBsZXRlLmNh
bGwodGhpcyk7aWYoKGk9PT0iaGVpZ2h0Inx8aT09PSJ3aWR0aCIpJiZ0aGlzLnN0eWxlKXtqLmRp
c3BsYXk9Yy5jc3ModGhpcywiZGlzcGxheSIpO2oub3ZlcmZsb3c9dGhpcy5zdHlsZS5vdmVyZmxv
d31pZihjLmlzQXJyYXkoYVtpXSkpeyhqLnNwZWNpYWxFYXNpbmc9CitqLnNwZWNpYWxFYXNpbmd8
fHt9KVtpXT1hW2ldWzFdO2FbaV09YVtpXVswXX19aWYoai5vdmVyZmxvdyE9bnVsbCl0aGlzLnN0
eWxlLm92ZXJmbG93PSJoaWRkZW4iO2ouY3VyQW5pbT1jLmV4dGVuZCh7fSxhKTtjLmVhY2goYSxm
dW5jdGlvbihyLHUpe3ZhciB6PW5ldyBjLmZ4KGssaixyKTtpZihBYi50ZXN0KHUpKXpbdT09PSJ0
b2dnbGUiP28/InNob3ciOiJoaWRlIjp1XShhKTtlbHNle3ZhciBDPUJiLmV4ZWModSksQj16LmN1
cih0cnVlKXx8MDtpZihDKXt1PXBhcnNlRmxvYXQoQ1syXSk7dmFyIEU9Q1szXXx8InB4IjtpZihF
IT09InB4Iil7ay5zdHlsZVtyXT0odXx8MSkrRTtCPSh1fHwxKS96LmN1cih0cnVlKSpCO2suc3R5
bGVbcl09QitFfWlmKENbMV0pdT0oQ1sxXT09PSItPSI/LTE6MSkqdStCO3ouY3VzdG9tKEIsdSxF
KX1lbHNlIHouY3VzdG9tKEIsdSwiIil9fSk7cmV0dXJuIHRydWV9KX0sc3RvcDpmdW5jdGlvbihh
LGIpe3ZhciBkPWMudGltZXJzO2EmJnRoaXMucXVldWUoW10pOwordGhpcy5lYWNoKGZ1bmN0aW9u
KCl7Zm9yKHZhciBmPWQubGVuZ3RoLTE7Zj49MDtmLS0paWYoZFtmXS5lbGVtPT09dGhpcyl7YiYm
ZFtmXSh0cnVlKTtkLnNwbGljZShmLDEpfX0pO2J8fHRoaXMuZGVxdWV1ZSgpO3JldHVybiB0aGlz
fX0pO2MuZWFjaCh7c2xpZGVEb3duOksoInNob3ciLDEpLHNsaWRlVXA6SygiaGlkZSIsMSksc2xp
ZGVUb2dnbGU6SygidG9nZ2xlIiwxKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0Ontv
cGFjaXR5OiJoaWRlIn19LGZ1bmN0aW9uKGEsYil7Yy5mblthXT1mdW5jdGlvbihkLGYpe3JldHVy
biB0aGlzLmFuaW1hdGUoYixkLGYpfX0pO2MuZXh0ZW5kKHtzcGVlZDpmdW5jdGlvbihhLGIsZCl7
dmFyIGY9YSYmdHlwZW9mIGE9PT0ib2JqZWN0Ij9hOntjb21wbGV0ZTpkfHwhZCYmYnx8Yy5pc0Z1
bmN0aW9uKGEpJiZhLGR1cmF0aW9uOmEsZWFzaW5nOmQmJmJ8fGImJiFjLmlzRnVuY3Rpb24oYikm
JmJ9O2YuZHVyYXRpb249Yy5meC5vZmY/MDp0eXBlb2YgZi5kdXJhdGlvbj09PQorIm51bWJlciI/
Zi5kdXJhdGlvbjpjLmZ4LnNwZWVkc1tmLmR1cmF0aW9uXXx8Yy5meC5zcGVlZHMuX2RlZmF1bHQ7
Zi5vbGQ9Zi5jb21wbGV0ZTtmLmNvbXBsZXRlPWZ1bmN0aW9uKCl7Zi5xdWV1ZSE9PWZhbHNlJiZj
KHRoaXMpLmRlcXVldWUoKTtjLmlzRnVuY3Rpb24oZi5vbGQpJiZmLm9sZC5jYWxsKHRoaXMpfTty
ZXR1cm4gZn0sZWFzaW5nOntsaW5lYXI6ZnVuY3Rpb24oYSxiLGQsZil7cmV0dXJuIGQrZiphfSxz
d2luZzpmdW5jdGlvbihhLGIsZCxmKXtyZXR1cm4oLU1hdGguY29zKGEqTWF0aC5QSSkvMiswLjUp
KmYrZH19LHRpbWVyczpbXSxmeDpmdW5jdGlvbihhLGIsZCl7dGhpcy5vcHRpb25zPWI7dGhpcy5l
bGVtPWE7dGhpcy5wcm9wPWQ7aWYoIWIub3JpZyliLm9yaWc9e319fSk7Yy5meC5wcm90b3R5cGU9
e3VwZGF0ZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5j
YWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKTsoYy5meC5zdGVwW3RoaXMucHJvcF18fAorYy5m
eC5zdGVwLl9kZWZhdWx0KSh0aGlzKTtpZigodGhpcy5wcm9wPT09ImhlaWdodCJ8fHRoaXMucHJv
cD09PSJ3aWR0aCIpJiZ0aGlzLmVsZW0uc3R5bGUpdGhpcy5lbGVtLnN0eWxlLmRpc3BsYXk9ImJs
b2NrIn0sY3VyOmZ1bmN0aW9uKGEpe2lmKHRoaXMuZWxlbVt0aGlzLnByb3BdIT1udWxsJiYoIXRo
aXMuZWxlbS5zdHlsZXx8dGhpcy5lbGVtLnN0eWxlW3RoaXMucHJvcF09PW51bGwpKXJldHVybiB0
aGlzLmVsZW1bdGhpcy5wcm9wXTtyZXR1cm4oYT1wYXJzZUZsb2F0KGMuY3NzKHRoaXMuZWxlbSx0
aGlzLnByb3AsYSkpKSYmYT4tMTAwMDA/YTpwYXJzZUZsb2F0KGMuY3VyQ1NTKHRoaXMuZWxlbSx0
aGlzLnByb3ApKXx8MH0sY3VzdG9tOmZ1bmN0aW9uKGEsYixkKXtmdW5jdGlvbiBmKGope3JldHVy
biBlLnN0ZXAoail9dGhpcy5zdGFydFRpbWU9SigpO3RoaXMuc3RhcnQ9YTt0aGlzLmVuZD1iO3Ro
aXMudW5pdD1kfHx0aGlzLnVuaXR8fCJweCI7dGhpcy5ub3c9dGhpcy5zdGFydDsKK3RoaXMucG9z
PXRoaXMuc3RhdGU9MDt2YXIgZT10aGlzO2YuZWxlbT10aGlzLmVsZW07aWYoZigpJiZjLnRpbWVy
cy5wdXNoKGYpJiYhVylXPXNldEludGVydmFsKGMuZngudGljaywxMyl9LHNob3c6ZnVuY3Rpb24o
KXt0aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnByb3BdPWMuc3R5bGUodGhpcy5lbGVtLHRoaXMucHJv
cCk7dGhpcy5vcHRpb25zLnNob3c9dHJ1ZTt0aGlzLmN1c3RvbSh0aGlzLnByb3A9PT0id2lkdGgi
fHx0aGlzLnByb3A9PT0iaGVpZ2h0Ij8xOjAsdGhpcy5jdXIoKSk7Yyh0aGlzLmVsZW0pLnNob3co
KX0saGlkZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5vcmlnW3RoaXMucHJvcF09Yy5zdHlsZSh0
aGlzLmVsZW0sdGhpcy5wcm9wKTt0aGlzLm9wdGlvbnMuaGlkZT10cnVlO3RoaXMuY3VzdG9tKHRo
aXMuY3VyKCksMCl9LHN0ZXA6ZnVuY3Rpb24oYSl7dmFyIGI9SigpLGQ9dHJ1ZTtpZihhfHxiPj10
aGlzLm9wdGlvbnMuZHVyYXRpb24rdGhpcy5zdGFydFRpbWUpe3RoaXMubm93PQordGhpcy5lbmQ7
dGhpcy5wb3M9dGhpcy5zdGF0ZT0xO3RoaXMudXBkYXRlKCk7dGhpcy5vcHRpb25zLmN1ckFuaW1b
dGhpcy5wcm9wXT10cnVlO2Zvcih2YXIgZiBpbiB0aGlzLm9wdGlvbnMuY3VyQW5pbSlpZih0aGlz
Lm9wdGlvbnMuY3VyQW5pbVtmXSE9PXRydWUpZD1mYWxzZTtpZihkKXtpZih0aGlzLm9wdGlvbnMu
ZGlzcGxheSE9bnVsbCl7dGhpcy5lbGVtLnN0eWxlLm92ZXJmbG93PXRoaXMub3B0aW9ucy5vdmVy
ZmxvdzthPWMuZGF0YSh0aGlzLmVsZW0sIm9sZGRpc3BsYXkiKTt0aGlzLmVsZW0uc3R5bGUuZGlz
cGxheT1hP2E6dGhpcy5vcHRpb25zLmRpc3BsYXk7aWYoYy5jc3ModGhpcy5lbGVtLCJkaXNwbGF5
Iik9PT0ibm9uZSIpdGhpcy5lbGVtLnN0eWxlLmRpc3BsYXk9ImJsb2NrIn10aGlzLm9wdGlvbnMu
aGlkZSYmYyh0aGlzLmVsZW0pLmhpZGUoKTtpZih0aGlzLm9wdGlvbnMuaGlkZXx8dGhpcy5vcHRp
b25zLnNob3cpZm9yKHZhciBlIGluIHRoaXMub3B0aW9ucy5jdXJBbmltKWMuc3R5bGUodGhpcy5l
bGVtLAorZSx0aGlzLm9wdGlvbnMub3JpZ1tlXSk7dGhpcy5vcHRpb25zLmNvbXBsZXRlLmNhbGwo
dGhpcy5lbGVtKX1yZXR1cm4gZmFsc2V9ZWxzZXtlPWItdGhpcy5zdGFydFRpbWU7dGhpcy5zdGF0
ZT1lL3RoaXMub3B0aW9ucy5kdXJhdGlvbjthPXRoaXMub3B0aW9ucy5lYXNpbmd8fChjLmVhc2lu
Zy5zd2luZz8ic3dpbmciOiJsaW5lYXIiKTt0aGlzLnBvcz1jLmVhc2luZ1t0aGlzLm9wdGlvbnMu
c3BlY2lhbEVhc2luZyYmdGhpcy5vcHRpb25zLnNwZWNpYWxFYXNpbmdbdGhpcy5wcm9wXXx8YV0o
dGhpcy5zdGF0ZSxlLDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRpb24pO3RoaXMubm93PXRoaXMuc3Rh
cnQrKHRoaXMuZW5kLXRoaXMuc3RhcnQpKnRoaXMucG9zO3RoaXMudXBkYXRlKCl9cmV0dXJuIHRy
dWV9fTtjLmV4dGVuZChjLmZ4LHt0aWNrOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPWMudGltZXJzLGI9
MDtiPGEubGVuZ3RoO2IrKylhW2JdKCl8fGEuc3BsaWNlKGItLSwxKTthLmxlbmd0aHx8CitjLmZ4
LnN0b3AoKX0sc3RvcDpmdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwoVyk7Vz1udWxsfSxzcGVlZHM6
e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sc3RlcDp7b3BhY2l0eTpmdW5jdGlvbihh
KXtjLnN0eWxlKGEuZWxlbSwib3BhY2l0eSIsYS5ub3cpfSxfZGVmYXVsdDpmdW5jdGlvbihhKXtp
ZihhLmVsZW0uc3R5bGUmJmEuZWxlbS5zdHlsZVthLnByb3BdIT1udWxsKWEuZWxlbS5zdHlsZVth
LnByb3BdPShhLnByb3A9PT0id2lkdGgifHxhLnByb3A9PT0iaGVpZ2h0Ij9NYXRoLm1heCgwLGEu
bm93KTphLm5vdykrYS51bml0O2Vsc2UgYS5lbGVtW2EucHJvcF09YS5ub3d9fX0pO2lmKGMuZXhw
ciYmYy5leHByLmZpbHRlcnMpYy5leHByLmZpbHRlcnMuYW5pbWF0ZWQ9ZnVuY3Rpb24oYSl7cmV0
dXJuIGMuZ3JlcChjLnRpbWVycyxmdW5jdGlvbihiKXtyZXR1cm4gYT09PWIuZWxlbX0pLmxlbmd0
aH07Yy5mbi5vZmZzZXQ9ImdldEJvdW5kaW5nQ2xpZW50UmVjdCJpbiBzLmRvY3VtZW50RWxlbWVu
dD8KK2Z1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF07aWYoYSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0
aW9uKGUpe2Mub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsZSl9KTtpZighYnx8IWIub3duZXJEb2N1
bWVudClyZXR1cm4gbnVsbDtpZihiPT09Yi5vd25lckRvY3VtZW50LmJvZHkpcmV0dXJuIGMub2Zm
c2V0LmJvZHlPZmZzZXQoYik7dmFyIGQ9Yi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxmPWIub3du
ZXJEb2N1bWVudDtiPWYuYm9keTtmPWYuZG9jdW1lbnRFbGVtZW50O3JldHVybnt0b3A6ZC50b3Ar
KHNlbGYucGFnZVlPZmZzZXR8fGMuc3VwcG9ydC5ib3hNb2RlbCYmZi5zY3JvbGxUb3B8fGIuc2Ny
b2xsVG9wKS0oZi5jbGllbnRUb3B8fGIuY2xpZW50VG9wfHwwKSxsZWZ0OmQubGVmdCsoc2VsZi5w
YWdlWE9mZnNldHx8Yy5zdXBwb3J0LmJveE1vZGVsJiZmLnNjcm9sbExlZnR8fGIuc2Nyb2xsTGVm
dCktKGYuY2xpZW50TGVmdHx8Yi5jbGllbnRMZWZ0fHwwKX19OmZ1bmN0aW9uKGEpe3ZhciBiPQor
dGhpc1swXTtpZihhKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24ocil7Yy5vZmZzZXQuc2V0T2Zm
c2V0KHRoaXMsYSxyKX0pO2lmKCFifHwhYi5vd25lckRvY3VtZW50KXJldHVybiBudWxsO2lmKGI9
PT1iLm93bmVyRG9jdW1lbnQuYm9keSlyZXR1cm4gYy5vZmZzZXQuYm9keU9mZnNldChiKTtjLm9m
ZnNldC5pbml0aWFsaXplKCk7dmFyIGQ9Yi5vZmZzZXRQYXJlbnQsZj1iLGU9Yi5vd25lckRvY3Vt
ZW50LGosaT1lLmRvY3VtZW50RWxlbWVudCxvPWUuYm9keTtmPShlPWUuZGVmYXVsdFZpZXcpP2Uu
Z2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmIuY3VycmVudFN0eWxlO2Zvcih2YXIgaz1iLm9mZnNl
dFRvcCxuPWIub2Zmc2V0TGVmdDsoYj1iLnBhcmVudE5vZGUpJiZiIT09byYmYiE9PWk7KXtpZihj
Lm9mZnNldC5zdXBwb3J0c0ZpeGVkUG9zaXRpb24mJmYucG9zaXRpb249PT0iZml4ZWQiKWJyZWFr
O2o9ZT9lLmdldENvbXB1dGVkU3R5bGUoYixudWxsKTpiLmN1cnJlbnRTdHlsZTsKK2stPWIuc2Ny
b2xsVG9wO24tPWIuc2Nyb2xsTGVmdDtpZihiPT09ZCl7ays9Yi5vZmZzZXRUb3A7bis9Yi5vZmZz
ZXRMZWZ0O2lmKGMub2Zmc2V0LmRvZXNOb3RBZGRCb3JkZXImJiEoYy5vZmZzZXQuZG9lc0FkZEJv
cmRlckZvclRhYmxlQW5kQ2VsbHMmJi9edChhYmxlfGR8aCkkL2kudGVzdChiLm5vZGVOYW1lKSkp
e2srPXBhcnNlRmxvYXQoai5ib3JkZXJUb3BXaWR0aCl8fDA7bis9cGFyc2VGbG9hdChqLmJvcmRl
ckxlZnRXaWR0aCl8fDB9Zj1kO2Q9Yi5vZmZzZXRQYXJlbnR9aWYoYy5vZmZzZXQuc3VidHJhY3Rz
Qm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNpYmxlJiZqLm92ZXJmbG93IT09InZpc2libGUiKXtrKz1w
YXJzZUZsb2F0KGouYm9yZGVyVG9wV2lkdGgpfHwwO24rPXBhcnNlRmxvYXQoai5ib3JkZXJMZWZ0
V2lkdGgpfHwwfWY9an1pZihmLnBvc2l0aW9uPT09InJlbGF0aXZlInx8Zi5wb3NpdGlvbj09PSJz
dGF0aWMiKXtrKz1vLm9mZnNldFRvcDtuKz1vLm9mZnNldExlZnR9aWYoYy5vZmZzZXQuc3VwcG9y
dHNGaXhlZFBvc2l0aW9uJiYKK2YucG9zaXRpb249PT0iZml4ZWQiKXtrKz1NYXRoLm1heChpLnNj
cm9sbFRvcCxvLnNjcm9sbFRvcCk7bis9TWF0aC5tYXgoaS5zY3JvbGxMZWZ0LG8uc2Nyb2xsTGVm
dCl9cmV0dXJue3RvcDprLGxlZnQ6bn19O2Mub2Zmc2V0PXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7
dmFyIGE9cy5ib2R5LGI9cy5jcmVhdGVFbGVtZW50KCJkaXYiKSxkLGYsZSxqPXBhcnNlRmxvYXQo
Yy5jdXJDU1MoYSwibWFyZ2luVG9wIix0cnVlKSl8fDA7Yy5leHRlbmQoYi5zdHlsZSx7cG9zaXRp
b246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsbWFyZ2luOjAsYm9yZGVyOjAsd2lkdGg6IjFweCIs
aGVpZ2h0OiIxcHgiLHZpc2liaWxpdHk6ImhpZGRlbiJ9KTtiLmlubmVySFRNTD0iPGRpdiBzdHls
ZT0ncG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO21hcmdpbjowO2JvcmRlcjo1cHggc29s
aWQgIzAwMDtwYWRkaW5nOjA7d2lkdGg6MXB4O2hlaWdodDoxcHg7Jz48ZGl2PjwvZGl2PjwvZGl2
Pjx0YWJsZSBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO21hcmdpbjowO2Jv
cmRlcjo1cHggc29saWQgIzAwMDtwYWRkaW5nOjA7d2lkdGg6MXB4O2hlaWdodDoxcHg7JyBjZWxs
cGFkZGluZz0nMCcgY2VsbHNwYWNpbmc9JzAnPjx0cj48dGQ+PC90ZD48L3RyPjwvdGFibGU+IjsK
K2EuaW5zZXJ0QmVmb3JlKGIsYS5maXJzdENoaWxkKTtkPWIuZmlyc3RDaGlsZDtmPWQuZmlyc3RD
aGlsZDtlPWQubmV4dFNpYmxpbmcuZmlyc3RDaGlsZC5maXJzdENoaWxkO3RoaXMuZG9lc05vdEFk
ZEJvcmRlcj1mLm9mZnNldFRvcCE9PTU7dGhpcy5kb2VzQWRkQm9yZGVyRm9yVGFibGVBbmRDZWxs
cz1lLm9mZnNldFRvcD09PTU7Zi5zdHlsZS5wb3NpdGlvbj0iZml4ZWQiO2Yuc3R5bGUudG9wPSIy
MHB4Ijt0aGlzLnN1cHBvcnRzRml4ZWRQb3NpdGlvbj1mLm9mZnNldFRvcD09PTIwfHxmLm9mZnNl
dFRvcD09PTE1O2Yuc3R5bGUucG9zaXRpb249Zi5zdHlsZS50b3A9IiI7ZC5zdHlsZS5vdmVyZmxv
dz0iaGlkZGVuIjtkLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSI7dGhpcy5zdWJ0cmFjdHNCb3Jk
ZXJGb3JPdmVyZmxvd05vdFZpc2libGU9Zi5vZmZzZXRUb3A9PT0tNTt0aGlzLmRvZXNOb3RJbmNs
dWRlTWFyZ2luSW5Cb2R5T2Zmc2V0PWEub2Zmc2V0VG9wIT09ajthLnJlbW92ZUNoaWxkKGIpOwor
Yy5vZmZzZXQuaW5pdGlhbGl6ZT1jLm5vb3B9LGJvZHlPZmZzZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9
YS5vZmZzZXRUb3AsZD1hLm9mZnNldExlZnQ7Yy5vZmZzZXQuaW5pdGlhbGl6ZSgpO2lmKGMub2Zm
c2V0LmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0KXtiKz1wYXJzZUZsb2F0KGMuY3Vy
Q1NTKGEsIm1hcmdpblRvcCIsdHJ1ZSkpfHwwO2QrPXBhcnNlRmxvYXQoYy5jdXJDU1MoYSwibWFy
Z2luTGVmdCIsdHJ1ZSkpfHwwfXJldHVybnt0b3A6YixsZWZ0OmR9fSxzZXRPZmZzZXQ6ZnVuY3Rp
b24oYSxiLGQpe2lmKC9zdGF0aWMvLnRlc3QoYy5jdXJDU1MoYSwicG9zaXRpb24iKSkpYS5zdHls
ZS5wb3NpdGlvbj0icmVsYXRpdmUiO3ZhciBmPWMoYSksZT1mLm9mZnNldCgpLGo9cGFyc2VJbnQo
Yy5jdXJDU1MoYSwidG9wIix0cnVlKSwxMCl8fDAsaT1wYXJzZUludChjLmN1ckNTUyhhLCJsZWZ0
Iix0cnVlKSwxMCl8fDA7aWYoYy5pc0Z1bmN0aW9uKGIpKWI9Yi5jYWxsKGEsCitkLGUpO2Q9e3Rv
cDpiLnRvcC1lLnRvcCtqLGxlZnQ6Yi5sZWZ0LWUubGVmdCtpfTsidXNpbmciaW4gYj9iLnVzaW5n
LmNhbGwoYSxkKTpmLmNzcyhkKX19O2MuZm4uZXh0ZW5kKHtwb3NpdGlvbjpmdW5jdGlvbigpe2lm
KCF0aGlzWzBdKXJldHVybiBudWxsO3ZhciBhPXRoaXNbMF0sYj10aGlzLm9mZnNldFBhcmVudCgp
LGQ9dGhpcy5vZmZzZXQoKSxmPS9eYm9keXxodG1sJC9pLnRlc3QoYlswXS5ub2RlTmFtZSk/e3Rv
cDowLGxlZnQ6MH06Yi5vZmZzZXQoKTtkLnRvcC09cGFyc2VGbG9hdChjLmN1ckNTUyhhLCJtYXJn
aW5Ub3AiLHRydWUpKXx8MDtkLmxlZnQtPXBhcnNlRmxvYXQoYy5jdXJDU1MoYSwibWFyZ2luTGVm
dCIsdHJ1ZSkpfHwwO2YudG9wKz1wYXJzZUZsb2F0KGMuY3VyQ1NTKGJbMF0sImJvcmRlclRvcFdp
ZHRoIix0cnVlKSl8fDA7Zi5sZWZ0Kz1wYXJzZUZsb2F0KGMuY3VyQ1NTKGJbMF0sImJvcmRlckxl
ZnRXaWR0aCIsdHJ1ZSkpfHwwO3JldHVybnt0b3A6ZC50b3AtCitmLnRvcCxsZWZ0OmQubGVmdC1m
LmxlZnR9fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24o
KXtmb3IodmFyIGE9dGhpcy5vZmZzZXRQYXJlbnR8fHMuYm9keTthJiYhL15ib2R5fGh0bWwkL2ku
dGVzdChhLm5vZGVOYW1lKSYmYy5jc3MoYSwicG9zaXRpb24iKT09PSJzdGF0aWMiOylhPWEub2Zm
c2V0UGFyZW50O3JldHVybiBhfSl9fSk7Yy5lYWNoKFsiTGVmdCIsIlRvcCJdLGZ1bmN0aW9uKGEs
Yil7dmFyIGQ9InNjcm9sbCIrYjtjLmZuW2RdPWZ1bmN0aW9uKGYpe3ZhciBlPXRoaXNbMF0sajtp
ZighZSlyZXR1cm4gbnVsbDtpZihmIT09dylyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYo
aj13YSh0aGlzKSlqLnNjcm9sbFRvKCFhP2Y6YyhqKS5zY3JvbGxMZWZ0KCksYT9mOmMoaikuc2Ny
b2xsVG9wKCkpO2Vsc2UgdGhpc1tkXT1mfSk7ZWxzZSByZXR1cm4oaj13YShlKSk/InBhZ2VYT2Zm
c2V0ImluIGo/althPyJwYWdlWU9mZnNldCI6CisicGFnZVhPZmZzZXQiXTpjLnN1cHBvcnQuYm94
TW9kZWwmJmouZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50W2RdfHxqLmRvY3VtZW50LmJvZHlbZF06
ZVtkXX19KTtjLmVhY2goWyJIZWlnaHQiLCJXaWR0aCJdLGZ1bmN0aW9uKGEsYil7dmFyIGQ9Yi50
b0xvd2VyQ2FzZSgpO2MuZm5bImlubmVyIitiXT1mdW5jdGlvbigpe3JldHVybiB0aGlzWzBdP2Mu
Y3NzKHRoaXNbMF0sZCxmYWxzZSwicGFkZGluZyIpOm51bGx9O2MuZm5bIm91dGVyIitiXT1mdW5j
dGlvbihmKXtyZXR1cm4gdGhpc1swXT9jLmNzcyh0aGlzWzBdLGQsZmFsc2UsZj8ibWFyZ2luIjoi
Ym9yZGVyIik6bnVsbH07Yy5mbltkXT1mdW5jdGlvbihmKXt2YXIgZT10aGlzWzBdO2lmKCFlKXJl
dHVybiBmPT1udWxsP251bGw6dGhpcztpZihjLmlzRnVuY3Rpb24oZikpcmV0dXJuIHRoaXMuZWFj
aChmdW5jdGlvbihqKXt2YXIgaT1jKHRoaXMpO2lbZF0oZi5jYWxsKHRoaXMsaixpW2RdKCkpKX0p
O3JldHVybiJzY3JvbGxUbyJpbgorZSYmZS5kb2N1bWVudD9lLmRvY3VtZW50LmNvbXBhdE1vZGU9
PT0iQ1NTMUNvbXBhdCImJmUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJjbGllbnQiK2JdfHxl
LmRvY3VtZW50LmJvZHlbImNsaWVudCIrYl06ZS5ub2RlVHlwZT09PTk/TWF0aC5tYXgoZS5kb2N1
bWVudEVsZW1lbnRbImNsaWVudCIrYl0sZS5ib2R5WyJzY3JvbGwiK2JdLGUuZG9jdW1lbnRFbGVt
ZW50WyJzY3JvbGwiK2JdLGUuYm9keVsib2Zmc2V0IitiXSxlLmRvY3VtZW50RWxlbWVudFsib2Zm
c2V0IitiXSk6Zj09PXc/Yy5jc3MoZSxkKTp0aGlzLmNzcyhkLHR5cGVvZiBmPT09InN0cmluZyI/
ZjpmKyJweCIpfX0pO0EualF1ZXJ5PUEuJD1jfSkod2luZG93KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>