<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://www.w3.org/Bugs/Public/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4"
          urlbase="https://www.w3.org/Bugs/Public/"
          
          maintainer="sysbot+bugzilla@w3.org"
>

    <bug>
          <bug_id>14037</bug_id>
          
          <creation_ts>2011-09-06 04:16:34 +0000</creation_ts>
          <short_desc>Should XMLDocument be standardized?</short_desc>
          <delta_ts>2011-11-24 17:40:59 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebAppsWG</product>
          <component>DOM Parsing and Serialization</component>
          <version>unspecified</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Boris Zbarsky">bzbarsky</reporter>
          <assigned_to name="Ian &apos;Hixie&apos; Hickson">ian</assigned_to>
          <cc>annevk</cc>
    
    <cc>ap</cc>
    
    <cc>cam</cc>
    
    <cc>eoconnor</cc>
    
    <cc>ian</cc>
    
    <cc>jonas</cc>
    
    <cc>julian.reschke</cc>
    
    <cc>kennyluck</cc>
    
    <cc>lrosenth</cc>
    
    <cc>me</cc>
    
    <cc>mike</cc>
    
    <cc>mjs</cc>
    
    <cc>Ms2ger</cc>
    
    <cc>public-html-admin</cc>
    
    <cc>public-html-wg-issue-tracking</cc>
    
    <cc>public-webapps</cc>
    
    <cc>roc</cc>
    
    <cc>shadow2531</cc>
    
    <cc>weinig</cc>
    
    <cc>zcorpan</cc>
          
          <qa_contact>public-webapps-bugzilla</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>56355</commentid>
    <comment_count>0</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2011-09-06 04:16:34 +0000</bug_when>
    <thetext>All of Gecko, WebKit, and Presto have a window.XMLDocument.  It has pretty different behavior in the three in some ways, but its mere existence is sniffed for by some libraries (e.g. Sarissa).  See https://bugzilla.mozilla.org/show_bug.cgi?id=684671#c2 for the gory details.

Should this object exist?  If so, should it be an interface, or just some random object?  If the former, what things should live on this interface, what does it inherit from, etc.

http://html5.org/specs/dom-parsing.html defines an XMLDocument inheriting from Document, which seems to not be web-compatible if onreadystatechange has a typical webidl setter on Document.prototype.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56356</commentid>
    <comment_count>1</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2011-09-06 04:35:48 +0000</bug_when>
    <thetext>(Note: We&apos;d like to get this fixed within the next two weeks so that Gecko doesn&apos;t have to back out the patch unifying event handlers.)

cc&apos;ed usual suspects; please cc more.

The only option I can see is to make window.XMLDocument an object that isn&apos;t a Document. Do people depend on Document objects having XMLDocument somewhere in their prototype?

It would help to have a better idea of what people are doing with this object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56358</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-06 05:10:32 +0000</bug_when>
    <thetext>In WebKit, window.XMLDocument === window.Document. We&apos;ve had this behavior
since 2006, and to the best of my knowledge, the compatibility story is
impeccable.

While I don&apos;t have hard data on whether XMLDocument is necessary at all, I&apos;m
pretty sure that it is. So, I suggest speccing WebKit behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56360</commentid>
    <comment_count>3</comment_count>
    <who name="Cameron McCormack">cam</who>
    <bug_when>2011-09-06 05:21:05 +0000</bug_when>
    <thetext>I think the problem with that is that WebKit does not yet have accessor properties for IDL attributes.  When it does, the site Boris mentions in the Mozilla bug will break because of Document.prototype.onreadystatechange.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56370</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Pieters">zcorpan</who>
    <bug_when>2011-09-06 08:20:06 +0000</bug_when>
    <thetext>http://software.hixie.ch/utilities/js/live-dom-viewer/saved/1130

In Opera I get
log: true
log: true
log: false
log: false</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56371</commentid>
    <comment_count>5</comment_count>
    <who name="Anne">annevk</who>
    <bug_when>2011-09-06 08:24:20 +0000</bug_when>
    <thetext>For Opera it does not matter much what we end up with here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56376</commentid>
    <comment_count>6</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2011-09-06 12:13:06 +0000</bug_when>
    <thetext>Yeah, the WebKit behavior is not compatible with having a setter for onreadystatechange on Document.prototype.  So I really doubt we want to spec it.

Not only that, but WebKit does not have load() on the XMLDocument it exposes, so the compat story is not &quot;impeccable&quot;.  For example, the Sarissa library is in fact broken in WebKit as a result.  See https://sourceforge.net/tracker/?func=detail&amp;aid=2149289&amp;group_id=75155&amp;atid=543074 for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56401</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-06 16:30:30 +0000</bug_when>
    <thetext>&gt; Not only that, but WebKit does not have load() on the XMLDocument it exposes

We haven&apos;t been implementing document.load because it was non-standard. Now that it&apos;s standardized, it&apos;s not actually on XMLDocument, so I&apos;m not sure how this affects the decision on whether to make XMLDocument an alias for Document.

Again, aliasing XMLDocument to Document worked really great for WebKit, and alternative solutions seem pretty scary.

Note that Sarissa does that aliasing itself for engines that don&apos;t have XMLDocument, although it&apos;s unclear to me if that actually affects the library behavior in any way:

if(typeof XMLDocument == &quot;undefined&quot; &amp;&amp; typeof Document !=&quot;undefined&quot;){ XMLDocument = Document; }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56404</commentid>
    <comment_count>8</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2011-09-06 16:35:33 +0000</bug_when>
    <thetext>&gt; Now that it&apos;s standardized, it&apos;s not actually on XMLDocument

It&apos;s not clear that that&apos;s web-compatible.  Again, some libraries expect it to be on XMLDocument.

&gt; Again, aliasing XMLDocument to Document worked really great for WebKit

Depending on how you define &quot;great&quot;, sure.  As long as it doesn&apos;t involve compat with deployed content.

&gt; Note that Sarissa does that aliasing itself for engines that don&apos;t have
&gt; XMLDocument

Is load() on Document in the cases that don&apos;t have XMLDocument (that being just IE)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56405</commentid>
    <comment_count>9</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2011-09-06 16:44:40 +0000</bug_when>
    <thetext>&gt; Note that Sarissa does that aliasing itself 

The version used by virginamerica does not, btw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56406</commentid>
    <comment_count>10</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2011-09-06 16:46:50 +0000</bug_when>
    <thetext>What it _does_ have is some UA sniffing for &quot;applewebkit&quot; which makes it use sync XHR in WebKit-only codepaths in some cases while using load() in other codepaths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56410</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-06 17:16:45 +0000</bug_when>
    <thetext>&gt; &gt; Again, aliasing XMLDocument to Document worked really great for WebKit
&gt; 
&gt; Depending on how you define &quot;great&quot;, sure.  As long as it doesn&apos;t involve
&gt; compat with deployed content.

That&apos;s the primary metric for me, and hopefully for standardization, too. If you are aware of any sites that break in WebKit due to this aliasing, please do tell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56414</commentid>
    <comment_count>12</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2011-09-06 17:33:16 +0000</bug_when>
    <thetext>My point was that compat with content was what WebKit currently fails on, forcing people to create various workarounds for it.

That is, sites work _despite_ the WebKit behavior, not because of it.

I gave you a link to at least one case where the WebKit behavior causes problems for someone trying to author a site.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56416</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-06 18:00:06 +0000</bug_when>
    <thetext>If I&apos;m thinking of the same link (one to Sarissa bug tracker), it&apos;s about not having document.load, which I still don&apos;t see as relevant for this discussion.

1. xmlDocument = Sarissa.getDomDocument();
2. xmlDocument.async = false;
3. xmlDocument.load(&apos;xml/contents.xml&apos;);

&gt; &gt; Now that it&apos;s standardized, it&apos;s not actually on XMLDocument
&gt;
&gt; It&apos;s not clear that that&apos;s web-compatible.  Again, some libraries expect it to
&gt; be on XMLDocument.

Are you aware of any sites (or at least libraries) that would break in practice?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56417</commentid>
    <comment_count>14</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2011-09-06 18:18:01 +0000</bug_when>
    <thetext>&gt; it&apos;s about not having document.load

Sarissa looks for .load explicitly on XMLDocument.prototype if XMLDocument is defined.  If it&apos;s not there, it will fail, on the codepaths that use load().

In particular, the code looks like this, in the version of Sarissa used by virginamerica:

        if (window.XMLDocument) {
...
            XMLDocument.prototype._sarissa_load = XMLDocument.prototype.load;
            XMLDocument.prototype.load = function (sURI) {
...
                        this._sarissa_load(sURI);


If XMLDocument == Document, then .load needs to be on Document.prototype to make that code work.  Are you willing to put it there?

&gt; Are you aware of any sites (or at least libraries) that would break

Sarissa, for one; see code above.  Is that really so unclear?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56418</commentid>
    <comment_count>15</comment_count>
      <attachid>1027</attachid>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2011-09-06 18:19:32 +0000</bug_when>
    <thetext>Created attachment 1027
The script in question, prettyprinted, just to make sure we&apos;re on the same page</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56422</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-06 18:35:50 +0000</bug_when>
    <thetext>OK, I now have a blemish on WebKit&apos;s otherwise impeccable history with this approach: http://www.edugis.nl uses an older version of Sarissa that doesn&apos;t have this special case for WebKit, so it fails to load a document.

Still, do you expect any other option to have a better compatibility story?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56430</commentid>
    <comment_count>17</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2011-09-06 19:03:46 +0000</bug_when>
    <thetext>Well, that&apos;s a much more interesting question.  That&apos;s what this bug is about....

Do sites depend on XMLDocument.prototype having Document on the prototype chain?

If we made XMLDocument just an empty interface not inheriting from Document or Node or anything, and left load() in it, then the Sarissa code would fail to hook load() on Document objects, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56435</commentid>
    <comment_count>18</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2011-09-06 19:20:19 +0000</bug_when>
    <thetext>For what it&apos;s worth, I suspect the most web-compatible solution is to have XMLDocument inherit from Document, put load() on XMLDocument, and have the onreadystatechange getter/setter from Document.prototype silently return null and no-op respectively when |this| is not a document object...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56450</commentid>
    <comment_count>19</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2011-09-06 21:33:44 +0000</bug_when>
    <thetext>Unless we make that a generic behaviour (have the getters and setters of _all_ IDL attributes, or at least all on* event handler IDL attributes, act in this way when called on objects they aren&apos;t expecting), I&apos;d be quite reluctant to do that. It&apos;s a really weird quirky behaviour.

Do people depend on Document objects having XMLDocument somewhere in their prototype or on Document === XMLDocument? Or could we make XMLDocument a non-Node-related object?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56455</commentid>
    <comment_count>20</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2011-09-07 02:50:47 +0000</bug_when>
    <thetext>The library in question depends on the document objects returned from createDocument() having XMLDocument in their prototype chain, as far as I can tell.  Certainly without that being true its attempts to hook document.load by changing XMLDocument.prototype.load won&apos;t work.  Not like those work in WebKit anyway, of course.

I could live with all the on* attributes silently doing nothing on bogus |this|, if we have to go there...  It feels really ugly, but I&apos;m not sure what else here is web-compatible. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56502</commentid>
    <comment_count>21</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2011-09-07 22:34:40 +0000</bug_when>
    <thetext>It&apos;s weird but at least it would be consistent across the platform, instead of a landmine waiting for people to step on.

heycam, any opinion on that?

I don&apos;t really see what else we can do given the constraints we&apos;re working with here.

Ms2ger, annevk: If we go for XMLDocument.load() rather than XMLDocumentLoader.load(), where should it go? DOM Core, DOM Parsing, or Web Apps 1.0?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56513</commentid>
    <comment_count>22</comment_count>
    <who name="Ms2ger">Ms2ger</who>
    <bug_when>2011-09-08 08:07:30 +0000</bug_when>
    <thetext>WA1 sounds good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56514</commentid>
    <comment_count>23</comment_count>
    <who name="Jonas Sicking (Not reading bugmail)">jonas</who>
    <bug_when>2011-09-08 08:13:08 +0000</bug_when>
    <thetext>I think changing the behavior for all on* properties to behave differently from every single other DOM function and attribute is creating a much larger landmine.

A better approach here seems to me to do nothing in the spec space about this problem for now. At least nothing normative. Instead we can in Gecko intentionally break the spec in this one instance and not throw. Whenever someone hits the non-throwing-but-should-throw code-path we&apos;ll put a warning in the developer console.

I would imagine that in a year or two we can remove this exception from Gecko. If that&apos;s not the case, we can re-evaluate then.

It might be that other browsers need to add a similar exception. So it might make sense to add an informative note in the spec to aid with this. But this doesn&apos;t need to affect the long-term plan here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56526</commentid>
    <comment_count>24</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2011-09-08 12:34:22 +0000</bug_when>
    <thetext>Note that that still leaves the question of what to do about XMLDocument open....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56587</commentid>
    <comment_count>25</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2011-09-10 04:33:41 +0000</bug_when>
    <thetext>So the situation here is a little changed, in that onreadystatechange is now a special attribute for other compat reasons. So it&apos;s less of an issue to make it even more special here if we want to go that route. We can also remove it from XMLDocument entirely, or something else like that. Do pages actually depend on readystatechange on XMLDocument actually doing something useful? (I assume they do, based on the Sarissa code.)

What do we want to do here? Have Document === HTMLDocument === SVGDocument, have XMLDocument inherited from Document, have doc.load() only appear on XMLDocument, and have createDocument() return an XMLDocument and all other document creation mechanisms return a regular Document? Does that sound right to everyone?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56589</commentid>
    <comment_count>26</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2011-09-10 04:38:17 +0000</bug_when>
    <thetext>&gt; (I assume they do, based on the Sarissa code.)

Sarissa doesn&apos;t seem to, really (note that it&apos;s setting it on the _prototype_, not on the document itself!).

So as long as XMLDocument === Document or XMLDocument inherits from Document we&apos;ll need some sort of special-casing for the onreadystatechange setter at least, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56603</commentid>
    <comment_count>27</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-10 05:57:35 +0000</bug_when>
    <thetext>It seems that XMLDocument===Document results in a less convoluted Web platform. Maybe it&apos;s not a big deal, but finding your document that&apos;s loaded from .svg or .xhtml file not implement XMLDocument would be surprising.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56789</commentid>
    <comment_count>28</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2011-09-14 22:03:35 +0000</bug_when>
    <thetext>(In reply to comment #26)
&gt; 
&gt; Sarissa doesn&apos;t seem to, really (note that it&apos;s setting it on the _prototype_,
&gt; not on the document itself!).

There&apos;s no code that later tries to use it correctly?


&gt; So as long as XMLDocument === Document or XMLDocument inherits from Document
&gt; we&apos;ll need some sort of special-casing for the onreadystatechange setter at
&gt; least, right?

I suppose so.

We still have to have XMLDocument.load be something explicit, so the XMLDocumentLoader thing still has to be changed to XMLDocument, right?


(In reply to comment #27)
&gt; It seems that XMLDocument===Document results in a less convoluted Web platform.
&gt; Maybe it&apos;s not a big deal, but finding your document that&apos;s loaded from .svg or
&gt; .xhtml file not implement XMLDocument would be surprising.

That&apos;s the way it is currently, per spec. The load() method&apos;s interface is only implemented by the Document objects that come from createDocument(). Is that not required for compat? If not, then we can just make XMLDocument === Document as well.

So the changes to the spec being proposed here are:

* Document.onreadystatechange setter is made magical in that it does nothing if the context object is not a Document instance.
* Document === HTMLDocument === XMLDocument (=== SVGDocument), rather than the current &quot;implements&quot; strategy with its separate XMLDocument interface that inherits from Document.
* XMLDocumentLoader.load() is moved to Document and XMLDocumentLoader is dropped.

bz: If you agree, I suggest trying to implement that and reporting back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56799</commentid>
    <comment_count>29</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2011-09-14 23:38:34 +0000</bug_when>
    <thetext>ap points out that having Document.load() may be too dangerous for compat (because it would put a &quot;load&quot; member into the scope of event handler attributes with a higher precedence than the global scope &quot;load&quot;), so instead I would go back to more or less what bz suggested in comment 18:

* Document.onreadystatechange setter is made magical in that it does nothing if the context object is not a Document instance.
* Document === HTMLDocument (=== SVGDocument), rather than the current &quot;implements&quot; strategy.
* XMLDocument continues to inherit from Document.
* createDocument() starts returning XMLDocument instead of Document. (Regular XML documents, i.e. those with a browsing context, keep returning a regular Document object.)
* XMLDocumentLoader.load() is moved to XMLDocument and XMLDocumentLoader is dropped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56910</commentid>
    <comment_count>30</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2011-09-16 18:09:06 +0000</bug_when>
    <thetext>&gt; There&apos;s no code that later tries to use it correctly?

My admittedly cursory skim didn&apos;t show any.

&gt; We still have to have XMLDocument.load be something explicit, so the
&gt; XMLDocumentLoader thing still has to be changed to XMLDocument, right?

I believe so, yes.  Clearly Alexey disagrees.

&gt; The load() method&apos;s interface is only implemented by the Document objects that
&gt; come from createDocument(). Is that not required for compat?

load() needs to be on things returned from createDocument for sure.

Whether it&apos;s ok to have it on other things as well is unclear. I would be ok with just having it on return values of createDocument.  In Gecko it does make implementation simpler to not worry about what happens when load() is called on documents that are attached to a Window.  Of course we could just make it throw in that situation.

&gt; bz: If you agree, I suggest trying to implement that and reporting back.

We&apos;re implementing item 1 from your list already.

We have no current plans for item 2; it requires significant rearchitecture and is a low priority for us....

Item 3 probably needs more of a spec for load() behavior than we have right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56911</commentid>
    <comment_count>31</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2011-09-16 18:10:17 +0000</bug_when>
    <thetext>The comment 29 plan, sounds fine to me modulo the perennial &quot;how to treat document interfaces in general&quot; issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57010</commentid>
    <comment_count>32</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2011-09-19 22:48:18 +0000</bug_when>
    <thetext>Ok. Do you need anything specced in a hurry for comment 29&apos;s plan, or are you good to go?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57060</commentid>
    <comment_count>33</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2011-09-21 03:07:45 +0000</bug_when>
    <thetext>I don&apos;t think I need anything specced in a hurry at this point except the first bullet point from comment 29.  And even then the hurry no longer matters; we&apos;re shipping that change no matter what for now, since we see no other alternatives.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58588</commentid>
    <comment_count>34</comment_count>
    <who name="">contributor</who>
    <bug_when>2011-10-20 23:05:11 +0000</bug_when>
    <thetext>Checked in as WHATWG revision r6718.
Check-in comment: Make HTMLDocument === Document.
http://html5.org/tools/web-apps-tracker?from=6717&amp;to=6718</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58589</commentid>
    <comment_count>35</comment_count>
    <who name="">contributor</who>
    <bug_when>2011-10-20 23:07:27 +0000</bug_when>
    <thetext>Checked in as WHATWG revision r6719.
Check-in comment: Move XMLDocumentLoader.load to XMLDocument.
http://html5.org/tools/web-apps-tracker?from=6718&amp;to=6719</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58591</commentid>
    <comment_count>36</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2011-10-20 23:10:22 +0000</bug_when>
    <thetext>Done (see diffs above for the first and third of these; second is a no-op):
&gt; * Document === HTMLDocument (=== SVGDocument), rather than the current
&gt; &quot;implements&quot; strategy.
&gt; * XMLDocument continues to inherit from Document.
&gt; * XMLDocumentLoader.load() is moved to XMLDocument and XMLDocumentLoader is
&gt; dropped.

Still to do:
&gt; * Document.onreadystatechange setter is made magical in that it does nothing
&gt; if the context object is not a Document instance.

heycam, what do I need to do for this one?


&gt; * createDocument() starts returning XMLDocument instead of Document. (Regular
&gt; XML documents, i.e. those with a browsing context, keep returning a regular
&gt; Document object.)

Anne, this is a change needed in DOM Core. (Probably you&apos;ll want to move XMLDocument from DOM Parsing to DOM Core too. It&apos;s a trivial 1-line IDL definition, so this should be easy.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58595</commentid>
    <comment_count>37</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2011-10-20 23:19:47 +0000</bug_when>
    <thetext>zcorpan points out that I made a mistake in the patch: I put HTMLDocument into Document instead of Window and made it return the document instead of the interface! Oops. So something else to do:

* Make Window.HTMLDocument === Document, and remove Document.HTMLDocument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58617</commentid>
    <comment_count>38</comment_count>
    <who name="Anne">annevk</who>
    <bug_when>2011-10-21 04:25:16 +0000</bug_when>
    <thetext>Updated the DOM and DOM Parsing as per comment 36.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58620</commentid>
    <comment_count>39</comment_count>
    <who name="">contributor</who>
    <bug_when>2011-10-21 05:46:21 +0000</bug_when>
    <thetext>Checked in as WHATWG revision r6725.
Check-in comment: Fix HTMLDocument&apos;s definition. Oops.
http://html5.org/tools/web-apps-tracker?from=6724&amp;to=6725</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58622</commentid>
    <comment_count>40</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2011-10-21 05:50:35 +0000</bug_when>
    <thetext>Ok all that&apos;s left to do now is:
&gt; * Document.onreadystatechange setter is made magical in that it does nothing
&gt; if the context object is not a Document instance.

I&apos;m not sure what the right way to specify this is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58623</commentid>
    <comment_count>41</comment_count>
    <who name="Cameron McCormack">cam</who>
    <bug_when>2011-10-21 06:06:26 +0000</bug_when>
    <thetext>(In reply to comment #40)
&gt; Ok all that&apos;s left to do now is:
&gt; &gt; * Document.onreadystatechange setter is made magical in that it does nothing
&gt; &gt; if the context object is not a Document instance.
&gt; 
&gt; I&apos;m not sure what the right way to specify this is.

I have not yet added the feature to Web IDL that would allow specifying this.  Will update the bug when I have done so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58631</commentid>
    <comment_count>42</comment_count>
    <who name="Simon Pieters">zcorpan</who>
    <bug_when>2011-10-21 08:49:17 +0000</bug_when>
    <thetext>(In reply to comment #39)
&gt; Checked in as WHATWG revision r6725.
&gt; Check-in comment: Fix HTMLDocument&apos;s definition. Oops.
&gt; http://html5.org/tools/web-apps-tracker?from=6724&amp;to=6725

It&apos;s still not quite right.

+ readonly attribute &lt;code&gt;&lt;a href=#document&gt;Document&lt;/a&gt;&lt;/code&gt; &lt;a href=#htmldocument title=HTMLDocument&gt;HTMLDocument&lt;/a&gt;;

The Document interface object is not an instance of Document. WebIDL says &quot;Interface objects are always function objects.&quot;, so I guess s/Document/Function/ above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58653</commentid>
    <comment_count>43</comment_count>
    <who name="Cameron McCormack">cam</who>
    <bug_when>2011-10-21 16:55:26 +0000</bug_when>
    <thetext>(In reply to comment #42)
&gt; It&apos;s still not quite right.
&gt; 
&gt; + readonly attribute &lt;code&gt;&lt;a href=#document&gt;Document&lt;/a&gt;&lt;/code&gt; &lt;a
&gt; href=#htmldocument title=HTMLDocument&gt;HTMLDocument&lt;/a&gt;;
&gt; 
&gt; The Document interface object is not an instance of Document. WebIDL says
&gt; &quot;Interface objects are always function objects.&quot;, so I guess
&gt; s/Document/Function/ above.

That&apos;s also not going to do exactly the right thing, since you want to have &quot;HTMLDocument&quot; be an own data property on window, rather than an accessor property on Window.prototype, which is what the above attribute will do.

I suggest simply writing in prose the requirement to have a writable, configurable, non-enumerable property named &quot;HTMLDocument&quot; on window whose value is the Document interface object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58879</commentid>
    <comment_count>44</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2011-10-25 05:39:43 +0000</bug_when>
    <thetext>(In reply to comment #41)
&gt; 
&gt; I have not yet added the feature to Web IDL that would allow specifying this. 
&gt; Will update the bug when I have done so.

Thanks, let me know.


(In reply to comment #42)
&gt; 
&gt; The Document interface object is not an instance of Document. WebIDL says
&gt; &quot;Interface objects are always function objects.&quot;, so I guess
&gt; s/Document/Function/ above.

Function is not the same as &quot;a function object&quot; (actually they&apos;re more or less unrelated, technically). Function is an interface defined in the HTML spec that is a callback.

Anyway the spec now uses &quot;object&quot; as the type returned.


(In reply to comment #43)
&gt; 
&gt; That&apos;s also not going to do exactly the right thing, since you want to have
&gt; &quot;HTMLDocument&quot; be an own data property on window, rather than an accessor
&gt; property on Window.prototype, which is what the above attribute will do.

Why do we want that? Does it matter?


&gt; I suggest simply writing in prose the requirement to have a writable,
&gt; configurable, non-enumerable property named &quot;HTMLDocument&quot; on window whose
&gt; value is the Document interface object.

I can do that, sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59102</commentid>
    <comment_count>45</comment_count>
    <who name="">contributor</who>
    <bug_when>2011-10-27 20:57:39 +0000</bug_when>
    <thetext>Checked in as WHATWG revision r6774.
Check-in comment: Tweak definition to heycam&apos;s wording.
http://html5.org/tools/web-apps-tracker?from=6773&amp;to=6774</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59207</commentid>
    <comment_count>46</comment_count>
    <who name="Cameron McCormack">cam</who>
    <bug_when>2011-10-29 22:17:28 +0000</bug_when>
    <thetext>I&apos;ve added [LeninentThis] to make invalid this values result in a no-op when invoking the getter or setter of a property corresponding to an IDL attribute.

http://dev.w3.org/2006/webapi/WebIDL/#LenientThis
http://dev.w3.org/2006/webapi/WebIDL/#dfn-attribute-getter
http://dev.w3.org/2006/webapi/WebIDL/#dfn-attribute-setter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59212</commentid>
    <comment_count>47</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2011-10-30 03:02:22 +0000</bug_when>
    <thetext>Do we want to return undefined or null?  Gecko currently does null, but it&apos;s not that hard to change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59213</commentid>
    <comment_count>48</comment_count>
    <who name="Cameron McCormack">cam</who>
    <bug_when>2011-10-30 03:17:16 +0000</bug_when>
    <thetext>undefined seems better to me if we need to extend the use of [LenientThis] to attributes whose type doesn&apos;t allow null.  We can of course return null regardless of the type, but undefined is less type specific I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59224</commentid>
    <comment_count>49</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2011-10-30 16:51:50 +0000</bug_when>
    <thetext>Thanks! This should now be completely fixed as discussed in comment 29. Obviously don&apos;t hesitate to reopen if I made a mistake or if it turns out we need other changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59225</commentid>
    <comment_count>50</comment_count>
    <who name="">contributor</who>
    <bug_when>2011-10-30 16:53:56 +0000</bug_when>
    <thetext>Checked in as WHATWG revision r6786.
Check-in comment: Make document.prototype.onreadystatechange not throw, for compat reasons.
http://html5.org/tools/web-apps-tracker?from=6785&amp;to=6786</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>1027</attachid>
            <date>2011-09-06 18:19:32 +0000</date>
            <delta_ts>2011-09-06 18:19:32 +0000</delta_ts>
            <desc>The script in question, prettyprinted, just to make sure we&apos;re on the same page</desc>
            <filename>foo.js</filename>
            <type>text/plain</type>
            <size>640037</size>
            <attacher name="Boris Zbarsky">bzbarsky</attacher>
            
              <data encoding="base64">dmFyIGxvYWRYID0gMDsKdmFyIGxvYWRZID0gMDsKdmFyIGlzTUNTID0gZmFsc2U7CnZhciB0cmF2
ZWxJbnN1cmFuY2VGbGFnID0gLTE7CgpmdW5jdGlvbiBzZXRTYWZhcmlYWSh4ZiwgeWYsIHhzLCB5
cykgewogICAgaWYgKGJyb3dzZXJUeXBlID09ICJTYWZhcmkiKSB7CiAgICAgICAgbG9hZFggPSB4
czsKICAgICAgICBsb2FkWSA9IHlzOwogICAgfSBlbHNlIHsKICAgICAgICBsb2FkWCA9IHhmOwog
ICAgICAgIGxvYWRZID0geWY7CiAgICB9Cn0KZnVuY3Rpb24gU2FyaXNzYSgpIHt9ClNhcmlzc2Eu
UEFSU0VEX09LID0gIkRvY3VtZW50IGNvbnRhaW5zIG5vIHBhcnNpbmcgZXJyb3JzIjsKU2FyaXNz
YS5JU19FTkFCTEVEX1RSQU5TRk9STV9OT0RFID0gZmFsc2U7ClNhcmlzc2EuSVNfRU5BQkxFRF9Y
TUxIVFRQID0gZmFsc2U7ClNhcmlzc2EuSVNfRU5BQkxFRF9TRUxFQ1RfTk9ERVMgPSBmYWxzZTsK
dmFyIF9zYXJpc3NhX2lOc0NvdW50ZXIgPSAwOwp2YXIgX1NBUklTU0FfSUVQUkVGSVg0WFNMUEFS
QU0gPSAiIjsKdmFyIF9TQVJJU1NBX0hBU19ET01fSU1QTEVNRU5UQVRJT04gPSBkb2N1bWVudC5p
bXBsZW1lbnRhdGlvbiAmJiB0cnVlOwp2YXIgX1NBUklTU0FfSEFTX0RPTV9DUkVBVEVfRE9DVU1F
TlQgPSBfU0FSSVNTQV9IQVNfRE9NX0lNUExFTUVOVEFUSU9OICYmIGRvY3VtZW50LmltcGxlbWVu
dGF0aW9uLmNyZWF0ZURvY3VtZW50Owp2YXIgX1NBUklTU0FfSEFTX0RPTV9GRUFUVVJFID0gX1NB
UklTU0FfSEFTX0RPTV9JTVBMRU1FTlRBVElPTiAmJiBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5o
YXNGZWF0dXJlOwp2YXIgX1NBUklTU0FfSVNfTU9aID0gX1NBUklTU0FfSEFTX0RPTV9DUkVBVEVf
RE9DVU1FTlQgJiYgX1NBUklTU0FfSEFTX0RPTV9GRUFUVVJFOwp2YXIgX1NBUklTU0FfSVNfU0FG
QVJJID0gKG5hdmlnYXRvci51c2VyQWdlbnQgJiYgbmF2aWdhdG9yLnZlbmRvciAmJiAobmF2aWdh
dG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImFwcGxld2Via2l0IikgIT0gLTEg
fHwgbmF2aWdhdG9yLnZlbmRvci5pbmRleE9mKCJBcHBsZSIpICE9IC0xKSk7CnZhciBfU0FSSVNT
QV9JU19JRSA9IGRvY3VtZW50LmFsbCAmJiB3aW5kb3cuQWN0aXZlWE9iamVjdCAmJiBuYXZpZ2F0
b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigibXNpZSIpID4gLTEgJiYgbmF2aWdh
dG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoIm9wZXJhIikgPT0gLTE7CmlmICgh
d2luZG93Lk5vZGUgfHwgIXdpbmRvdy5Ob2RlLkVMRU1FTlRfTk9ERSkgewogICAgdmFyIE5vZGUg
PSB7CiAgICAgICAgRUxFTUVOVF9OT0RFOiAxLAogICAgICAgIEFUVFJJQlVURV9OT0RFOiAyLAog
ICAgICAgIFRFWFRfTk9ERTogMywKICAgICAgICBDREFUQV9TRUNUSU9OX05PREU6IDQsCiAgICAg
ICAgRU5USVRZX1JFRkVSRU5DRV9OT0RFOiA1LAogICAgICAgIEVOVElUWV9OT0RFOiA2LAogICAg
ICAgIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERTogNywKICAgICAgICBDT01NRU5UX05PREU6
IDgsCiAgICAgICAgRE9DVU1FTlRfTk9ERTogOSwKICAgICAgICBET0NVTUVOVF9UWVBFX05PREU6
IDEwLAogICAgICAgIERPQ1VNRU5UX0ZSQUdNRU5UX05PREU6IDExLAogICAgICAgIE5PVEFUSU9O
X05PREU6IDEyCiAgICB9Owp9CmlmIChfU0FSSVNTQV9JU19JRSkgewogICAgX1NBUklTU0FfSUVQ
UkVGSVg0WFNMUEFSQU0gPSAieHNsOiI7CiAgICB2YXIgX1NBUklTU0FfRE9NX1BST0dJRCA9ICIi
OwogICAgdmFyIF9TQVJJU1NBX1hNTEhUVFBfUFJPR0lEID0gIiI7CiAgICBwaWNrUmVjZW50UHJv
Z0lEID0gZnVuY3Rpb24gKGlkTGlzdCwgZW5hYmxlZExpc3QpIHsKICAgICAgICB2YXIgYkZvdW5k
ID0gZmFsc2U7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZExpc3QubGVuZ3RoICYmICFi
Rm91bmQ7IGkrKykgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgdmFyIG9Eb2Mg
PSBuZXcgQWN0aXZlWE9iamVjdChpZExpc3RbaV0pOwogICAgICAgICAgICAgICAgbzJTdG9yZSA9
IGlkTGlzdFtpXTsKICAgICAgICAgICAgICAgIGJGb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAg
ICBmb3IgKHZhciBqID0gMDsgaiA8IGVuYWJsZWRMaXN0Lmxlbmd0aDsgaisrKSB7CiAgICAgICAg
ICAgICAgICAgICAgaWYgKGkgPD0gZW5hYmxlZExpc3Rbal1bMV0pIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgU2FyaXNzYVsiSVNfRU5BQkxFRF8iICsgZW5hYmxlZExpc3Rbal1bMF1dID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0g
Y2F0Y2ggKG9iakV4Y2VwdGlvbikge30KICAgICAgICB9CiAgICAgICAgaWYgKCFiRm91bmQpIHsK
ICAgICAgICAgICAgdGhyb3cgIkNvdWxkIG5vdCByZXRyZWl2ZSBhIHZhbGlkIHByb2dJRCBvZiBD
bGFzczogIiArIGlkTGlzdFtpZExpc3QubGVuZ3RoIC0gMV0gKyAiLiAob3JpZ2luYWwgZXhjZXB0
aW9uOiAiICsgZSArICIpIjsKICAgICAgICB9CiAgICAgICAgaWRMaXN0ID0gbnVsbDsKICAgICAg
ICByZXR1cm4gbzJTdG9yZTsKICAgIH07CiAgICBfU0FSSVNTQV9ET01fUFJPR0lEID0gcGlja1Jl
Y2VudFByb2dJRChbIk1zeG1sMi5ET01Eb2N1bWVudC40LjAiLCAiTXN4bWwyLkRPTURvY3VtZW50
LjMuMCIsICJNU1hNTDIuRE9NRG9jdW1lbnQiLCAiTVNYTUwuRE9NRG9jdW1lbnQiLCAiTWljcm9z
b2Z0LlhNTERPTSJdLCBbCiAgICAgICAgWyJTRUxFQ1RfTk9ERVMiLCAyXSwKICAgICAgICBbIlRS
QU5TRk9STV9OT0RFIiwgMl0KICAgIF0pOwogICAgX1NBUklTU0FfWE1MSFRUUF9QUk9HSUQgPSBw
aWNrUmVjZW50UHJvZ0lEKFsiTXN4bWwyLlhNTEhUVFAuNC4wIiwgIk1TWE1MMi5YTUxIVFRQLjMu
MCIsICJNU1hNTDIuWE1MSFRUUCIsICJNaWNyb3NvZnQuWE1MSFRUUCJdLCBbCiAgICAgICAgWyJY
TUxIVFRQIiwgNF0KICAgIF0pOwogICAgX1NBUklTU0FfVEhSRUFERURET01fUFJPR0lEID0gcGlj
a1JlY2VudFByb2dJRChbIk1TWE1MMi5GcmVlVGhyZWFkZWRET01Eb2N1bWVudC40LjAiLCAiTVNY
TUwyLkZyZWVUaHJlYWRlZERPTURvY3VtZW50LjMuMCJdKTsKICAgIF9TQVJJU1NBX1hTTFRFTVBM
QVRFX1BST0dJRCA9IHBpY2tSZWNlbnRQcm9nSUQoWyJNc3htbDIuWFNMVGVtcGxhdGUuNC4wIiwg
Ik1TWE1MMi5YU0xUZW1wbGF0ZS4zLjAiXSwgWwogICAgICAgIFsiWFNMVFBST0MiLCAyXQogICAg
XSk7CiAgICBwaWNrUmVjZW50UHJvZ0lEID0gbnVsbDsKICAgIFNhcmlzc2EuZ2V0RG9tRG9jdW1l
bnQgPSBmdW5jdGlvbiAoc1VyaSwgc05hbWUpIHsKICAgICAgICB2YXIgb0RvYyA9IG5ldyBBY3Rp
dmVYT2JqZWN0KF9TQVJJU1NBX0RPTV9QUk9HSUQpOwogICAgICAgIGlmIChzTmFtZSkgewogICAg
ICAgICAgICBpZiAoc1VyaSkgewogICAgICAgICAgICAgICAgb0RvYy5sb2FkWE1MKCI8YSIgKyBf
c2FyaXNzYV9pTnNDb3VudGVyICsgIjoiICsgc05hbWUgKyAiIHhtbG5zOmEiICsgX3Nhcmlzc2Ff
aU5zQ291bnRlciArICc9IicgKyBzVXJpICsgJyIgLz4nKTsKICAgICAgICAgICAgICAgICsrX3Nh
cmlzc2FfaU5zQ291bnRlcjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIG9E
b2MubG9hZFhNTCgiPCIgKyBzTmFtZSArICIvPiIpOwogICAgICAgICAgICB9CiAgICAgICAgfQog
ICAgICAgIHJldHVybiBvRG9jOwogICAgfTsKICAgIFNhcmlzc2EuZ2V0UGFyc2VFcnJvclRleHQg
PSBmdW5jdGlvbiAob0RvYykgewogICAgICAgIHZhciBwYXJzZUVycm9yVGV4dCA9IFNhcmlzc2Eu
UEFSU0VEX09LOwogICAgICAgIGlmIChvRG9jLnBhcnNlRXJyb3IgIT0gMCkgewogICAgICAgICAg
ICBwYXJzZUVycm9yVGV4dCA9ICJYTUwgUGFyc2luZyBFcnJvcjogIiArIG9Eb2MucGFyc2VFcnJv
ci5yZWFzb24gKyAiXG5Mb2NhdGlvbjogIiArIG9Eb2MucGFyc2VFcnJvci51cmwgKyAiXG5MaW5l
IE51bWJlciAiICsgb0RvYy5wYXJzZUVycm9yLmxpbmUgKyAiLCBDb2x1bW4gIiArIG9Eb2MucGFy
c2VFcnJvci5saW5lcG9zICsgIjpcbiIgKyBvRG9jLnBhcnNlRXJyb3Iuc3JjVGV4dCArICJcbiI7
CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb0RvYy5wYXJzZUVycm9yLmxpbmVwb3M7
IGkrKykgewogICAgICAgICAgICAgICAgcGFyc2VFcnJvclRleHQgKz0gIi0iOwogICAgICAgICAg
ICB9CiAgICAgICAgICAgIHBhcnNlRXJyb3JUZXh0ICs9ICJeXG4iOwogICAgICAgIH0KICAgICAg
ICByZXR1cm4gcGFyc2VFcnJvclRleHQ7CiAgICB9OwogICAgU2FyaXNzYS5zZXRYcGF0aE5hbWVz
cGFjZXMgPSBmdW5jdGlvbiAob0RvYywgc05zU2V0KSB7CiAgICAgICAgb0RvYy5zZXRQcm9wZXJ0
eSgiU2VsZWN0aW9uTGFuZ3VhZ2UiLCAiWFBhdGgiKTsKICAgICAgICBvRG9jLnNldFByb3BlcnR5
KCJTZWxlY3Rpb25OYW1lc3BhY2VzIiwgc05zU2V0KTsKICAgIH07CiAgICBYU0xUUHJvY2Vzc29y
ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHRoaXMudGVtcGxhdGUgPSBuZXcgQWN0aXZlWE9iamVj
dChfU0FSSVNTQV9YU0xURU1QTEFURV9QUk9HSUQpOwogICAgICAgIHRoaXMucHJvY2Vzc29yID0g
bnVsbDsKICAgIH07CiAgICBYU0xUUHJvY2Vzc29yLnByb3RvdHlwZS5pbXBvcnRTdHlsZXNoZWV0
ID0gZnVuY3Rpb24gKHhzbERvYykgewogICAgICAgIHZhciBjb252ZXJ0ZWQgPSBuZXcgQWN0aXZl
WE9iamVjdChfU0FSSVNTQV9USFJFQURFRERPTV9QUk9HSUQpOwogICAgICAgIGNvbnZlcnRlZC5s
b2FkWE1MKHhzbERvYy54bWwpOwogICAgICAgIHRoaXMudGVtcGxhdGUuc3R5bGVzaGVldCA9IGNv
bnZlcnRlZDsKICAgICAgICB0aGlzLnByb2Nlc3NvciA9IHRoaXMudGVtcGxhdGUuY3JlYXRlUHJv
Y2Vzc29yKCk7CiAgICAgICAgdGhpcy5wYXJhbXNTZXQgPSBuZXcgQXJyYXkoKTsKICAgIH07CiAg
ICBYU0xUUHJvY2Vzc29yLnByb3RvdHlwZS50cmFuc2Zvcm1Ub0RvY3VtZW50ID0gZnVuY3Rpb24g
KHNvdXJjZURvYykgewogICAgICAgIHRoaXMucHJvY2Vzc29yLmlucHV0ID0gc291cmNlRG9jOwog
ICAgICAgIHZhciBvdXREb2MgPSBuZXcgQWN0aXZlWE9iamVjdChfU0FSSVNTQV9ET01fUFJPR0lE
KTsKICAgICAgICB0aGlzLnByb2Nlc3Nvci5vdXRwdXQgPSBvdXREb2M7CiAgICAgICAgdGhpcy5w
cm9jZXNzb3IudHJhbnNmb3JtKCk7CiAgICAgICAgcmV0dXJuIG91dERvYzsKICAgIH07CiAgICBY
U0xUUHJvY2Vzc29yLnByb3RvdHlwZS5zZXRQYXJhbWV0ZXIgPSBmdW5jdGlvbiAobnNVUkksIG5h
bWUsIHZhbHVlKSB7CiAgICAgICAgaWYgKG5zVVJJKSB7CiAgICAgICAgICAgIHRoaXMucHJvY2Vz
c29yLmFkZFBhcmFtZXRlcihuYW1lLCB2YWx1ZSwgbnNVUkkpOwogICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgIHRoaXMucHJvY2Vzc29yLmFkZFBhcmFtZXRlcihuYW1lLCB2YWx1ZSk7CiAgICAg
ICAgfQogICAgICAgIGlmICghdGhpcy5wYXJhbXNTZXRbIiIgKyBuc1VSSV0pIHsKICAgICAgICAg
ICAgdGhpcy5wYXJhbXNTZXRbIiIgKyBuc1VSSV0gPSBuZXcgQXJyYXkoKTsKICAgICAgICB9CiAg
ICAgICAgdGhpcy5wYXJhbXNTZXRbIiIgKyBuc1VSSV1bbmFtZV0gPSB2YWx1ZTsKICAgIH07CiAg
ICBYU0xUUHJvY2Vzc29yLnByb3RvdHlwZS5nZXRQYXJhbWV0ZXIgPSBmdW5jdGlvbiAobnNVUkks
IG5hbWUpIHsKICAgICAgICBuc1VSSSA9IG5zVVJJIHx8ICIiOwogICAgICAgIGlmIChuc1VSSSBp
biB0aGlzLnBhcmFtc1NldCAmJiBuYW1lIGluIHRoaXMucGFyYW1zU2V0W25zVVJJXSkgewogICAg
ICAgICAgICByZXR1cm4gdGhpcy5wYXJhbXNTZXRbbnNVUkldW25hbWVdOwogICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgIH07Cn0gZWxzZSB7CiAg
ICBpZiAoX1NBUklTU0FfSEFTX0RPTV9DUkVBVEVfRE9DVU1FTlQpIHsKICAgICAgICBTYXJpc3Nh
Ll9faGFuZGxlTG9hZF9fID0gZnVuY3Rpb24gKG9Eb2MpIHsKICAgICAgICAgICAgaWYgKCFvRG9j
LmRvY3VtZW50RWxlbWVudCB8fCBvRG9jLmRvY3VtZW50RWxlbWVudC50YWdOYW1lID09ICJwYXJz
ZXJlcnJvciIpIHsKICAgICAgICAgICAgICAgIG9Eb2MucGFyc2VFcnJvciA9IC0xOwogICAgICAg
ICAgICB9CiAgICAgICAgICAgIFNhcmlzc2EuX19zZXRSZWFkeVN0YXRlX18ob0RvYywgNCk7CiAg
ICAgICAgfTsKICAgICAgICBfc2FyaXNzYV9YTUxEb2N1bWVudF9vbmxvYWQgPSBmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgIFNhcmlzc2EuX19oYW5kbGVMb2FkX18odGhpcyk7CiAgICAgICAgfTsK
ICAgICAgICBTYXJpc3NhLl9fc2V0UmVhZHlTdGF0ZV9fID0gZnVuY3Rpb24gKG9Eb2MsIGlSZWFk
eVN0YXRlKSB7CiAgICAgICAgICAgIG9Eb2MucmVhZHlTdGF0ZSA9IGlSZWFkeVN0YXRlOwogICAg
ICAgICAgICBpZiAob0RvYy5vbnJlYWR5c3RhdGVjaGFuZ2UgIT0gbnVsbCAmJiB0eXBlb2Ygb0Rv
Yy5vbnJlYWR5c3RhdGVjaGFuZ2UgPT0gImZ1bmN0aW9uIikgewogICAgICAgICAgICAgICAgb0Rv
Yy5vbnJlYWR5c3RhdGVjaGFuZ2UoKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAg
U2FyaXNzYS5nZXREb21Eb2N1bWVudCA9IGZ1bmN0aW9uIChzVXJpLCBzTmFtZSkgewogICAgICAg
ICAgICB2YXIgb0RvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KHNV
cmkgPyBzVXJpIDogIiIsIHNOYW1lID8gc05hbWUgOiAiIiwgbnVsbCk7CiAgICAgICAgICAgIG9E
b2MuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIF9zYXJpc3NhX1hNTERvY3VtZW50X29ubG9hZCwg
ZmFsc2UpOwogICAgICAgICAgICByZXR1cm4gb0RvYzsKICAgICAgICB9OwogICAgICAgIGlmICh3
aW5kb3cuWE1MRG9jdW1lbnQpIHsKICAgICAgICAgICAgWE1MRG9jdW1lbnQucHJvdG90eXBlLm9u
cmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7CiAgICAgICAgICAgIFhNTERvY3VtZW50LnByb3RvdHlw
ZS5wYXJzZUVycm9yID0gMDsKICAgICAgICAgICAgdmFyIF9TQVJJU1NBX1NZTkNfTk9OX0lNUExF
TUVOVEVEID0gZmFsc2U7CiAgICAgICAgICAgIFhNTERvY3VtZW50LnByb3RvdHlwZS5fc2FyaXNz
YV9sb2FkID0gWE1MRG9jdW1lbnQucHJvdG90eXBlLmxvYWQ7CiAgICAgICAgICAgIFhNTERvY3Vt
ZW50LnByb3RvdHlwZS5sb2FkID0gZnVuY3Rpb24gKHNVUkkpIHsKICAgICAgICAgICAgICAgIHZh
ciBvRG9jID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnQoIiIsICIiLCBu
dWxsKTsKICAgICAgICAgICAgICAgIFNhcmlzc2EuY29weUNoaWxkTm9kZXModGhpcywgb0RvYyk7
CiAgICAgICAgICAgICAgICB0aGlzLnBhcnNlRXJyb3IgPSAwOwogICAgICAgICAgICAgICAgU2Fy
aXNzYS5fX3NldFJlYWR5U3RhdGVfXyh0aGlzLCAxKTsKICAgICAgICAgICAgICAgIHRyeSB7CiAg
ICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYXN5bmMgPT0gZmFsc2UgJiYgX1NBUklTU0FfU1lO
Q19OT05fSU1QTEVNRU5URUQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRtcCA9IG5l
dyBYTUxIdHRwUmVxdWVzdCgpOwogICAgICAgICAgICAgICAgICAgICAgICB0bXAub3BlbigiR0VU
Iiwgc1VSSSwgZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICB0bXAuc2VuZChudWxsKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgU2FyaXNzYS5fX3NldFJlYWR5U3RhdGVfXyh0aGlzLCAy
KTsKICAgICAgICAgICAgICAgICAgICAgICAgU2FyaXNzYS5jb3B5Q2hpbGROb2Rlcyh0bXAucmVz
cG9uc2VYTUwsIHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICBTYXJpc3NhLl9fc2V0UmVh
ZHlTdGF0ZV9fKHRoaXMsIDMpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMuX3Nhcmlzc2FfbG9hZChzVVJJKTsKICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICB9IGNhdGNoIChvYmpFeGNlcHRpb24pIHsKICAgICAgICAg
ICAgICAgICAgICB0aGlzLnBhcnNlRXJyb3IgPSAtMTsKICAgICAgICAgICAgICAgIH0gZmluYWxs
eSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYXN5bmMgPT0gZmFsc2UpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgU2FyaXNzYS5fX2hhbmRsZUxvYWRfXyh0aGlzKTsKICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gb0Rv
YzsKICAgICAgICAgICAgfTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoZG9jdW1l
bnQuaW1wbGVtZW50YXRpb24gJiYgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSAm
JiBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCJMUyIsICIzLjAiKSkgewogICAg
ICAgICAgICAgICAgRG9jdW1lbnQucHJvdG90eXBlLmFzeW5jID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgIERvY3VtZW50LnByb3RvdHlwZS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsOwogICAgICAg
ICAgICAgICAgRG9jdW1lbnQucHJvdG90eXBlLnBhcnNlRXJyb3IgPSAwOwogICAgICAgICAgICAg
ICAgRG9jdW1lbnQucHJvdG90eXBlLmxvYWQgPSBmdW5jdGlvbiAoc1VSSSkgewogICAgICAgICAg
ICAgICAgICAgIHZhciBwYXJzZXIgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVMU1Bh
cnNlcih0aGlzLmFzeW5jID8gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uTU9ERV9BU1lOQ0hST05P
VVMgOiBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5NT0RFX1NZTkNIUk9OT1VTLCBudWxsKTsKICAg
ICAgICAgICAgICAgICAgICBpZiAodGhpcy5hc3luYykgewogICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci5hZGRFdmVu
dExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYucmVhZHlTdGF0ZSA9IDQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYXJp
c3NhLmNvcHlDaGlsZE5vZGVzKGUubmV3RG9jdW1lbnQsIHNlbGYuZG9jdW1lbnRFbGVtZW50LCBm
YWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm9ucmVhZHlzdGF0ZWNoYW5n
ZS5jYWxsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZhbHNlKTsKICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIG9Eb2MgPSBwYXJzZXIucGFyc2VVUkkoc1VSSSk7CiAgICAgICAgICAgICAgICAgICAg
fSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcnNlRXJyb3IgPSAt
MTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmFz
eW5jKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNhcmlzc2EuY29weUNoaWxkTm9kZXMob0Rv
YywgdGhpcy5kb2N1bWVudEVsZW1lbnQsIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG9Eb2M7CiAgICAgICAgICAgICAgICB9OwogICAgICAg
ICAgICAgICAgU2FyaXNzYS5nZXREb21Eb2N1bWVudCA9IGZ1bmN0aW9uIChzVXJpLCBzTmFtZSkg
ewogICAgICAgICAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVh
dGVEb2N1bWVudChzVXJpID8gc1VyaSA6ICIiLCBzTmFtZSA/IHNOYW1lIDogIiIsIG51bGwpOwog
ICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQppZiAoIXdp
bmRvdy5ET01QYXJzZXIpIHsKICAgIERPTVBhcnNlciA9IGZ1bmN0aW9uICgpIHt9OwogICAgaWYg
KF9TQVJJU1NBX0lTX1NBRkFSSSkgewogICAgICAgIERPTVBhcnNlci5wcm90b3R5cGUucGFyc2VG
cm9tU3RyaW5nID0gZnVuY3Rpb24gKHNYbWwsIGNvbnRlbnRUeXBlKSB7CiAgICAgICAgICAgIGlm
IChjb250ZW50VHlwZS50b0xvd2VyQ2FzZSgpICE9ICJhcHBsaWNhdGlvbi94bWwiKSB7CiAgICAg
ICAgICAgICAgICB0aHJvdyAnQ2Fubm90IGhhbmRsZSBjb250ZW50IHR5cGU6ICInICsgY29udGVu
dFR5cGUgKyAnIic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIHhtbGh0dHAgPSBuZXcg
WE1MSHR0cFJlcXVlc3QoKTsKICAgICAgICAgICAgeG1saHR0cC5vcGVuKCJHRVQiLCAiZGF0YTp0
ZXh0L3htbDtjaGFyc2V0PXV0Zi04LCIgKyBlbmNvZGVVUklDb21wb25lbnQoc3RyKSwgZmFsc2Up
OwogICAgICAgICAgICB4bWxodHRwLnNlbmQobnVsbCk7CiAgICAgICAgICAgIHJldHVybiB4bWxo
dHRwLnJlc3BvbnNlWE1MOwogICAgICAgIH07CiAgICB9IGVsc2UgewogICAgICAgIGlmIChTYXJp
c3NhLmdldERvbURvY3VtZW50ICYmIFNhcmlzc2EuZ2V0RG9tRG9jdW1lbnQoKSAmJiAibG9hZFhN
TCIgaW4gU2FyaXNzYS5nZXREb21Eb2N1bWVudCgpKSB7CiAgICAgICAgICAgIERPTVBhcnNlci5w
cm90b3R5cGUucGFyc2VGcm9tU3RyaW5nID0gZnVuY3Rpb24gKHNYbWwsIGNvbnRlbnRUeXBlKSB7
CiAgICAgICAgICAgICAgICB2YXIgZG9jID0gU2FyaXNzYS5nZXREb21Eb2N1bWVudCgpOwogICAg
ICAgICAgICAgICAgZG9jLmxvYWRYTUwoc1htbCk7CiAgICAgICAgICAgICAgICByZXR1cm4gZG9j
OwogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KfQppZiAod2luZG93LlhNTEh0dHBSZXF1
ZXN0KSB7CiAgICBTYXJpc3NhLklTX0VOQUJMRURfWE1MSFRUUCA9IHRydWU7Cn0gZWxzZSB7CiAg
ICBpZiAoX1NBUklTU0FfSVNfSUUpIHsKICAgICAgICBYTUxIdHRwUmVxdWVzdCA9IGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KF9TQVJJU1NBX1hNTEhU
VFBfUFJPR0lEKTsKICAgICAgICB9OwogICAgICAgIFNhcmlzc2EuSVNfRU5BQkxFRF9YTUxIVFRQ
ID0gdHJ1ZTsKICAgIH0KfQppZiAoIXdpbmRvdy5kb2N1bWVudC5pbXBvcnROb2RlICYmIF9TQVJJ
U1NBX0lTX0lFKSB7CiAgICB0cnkgewogICAgICAgIHdpbmRvdy5kb2N1bWVudC5pbXBvcnROb2Rl
ID0gZnVuY3Rpb24gKG9Ob2RlLCBiQ2hpbGRyZW4pIHsKICAgICAgICAgICAgdmFyIGltcG9ydE5v
ZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgaWYgKGJDaGls
ZHJlbikgewogICAgICAgICAgICAgICAgaW1wb3J0Tm9kZS5pbm5lckhUTUwgPSBTYXJpc3NhLnNl
cmlhbGl6ZShvTm9kZSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpbXBv
cnROb2RlLmlubmVySFRNTCA9IFNhcmlzc2Euc2VyaWFsaXplKG9Ob2RlLmNsb25lTm9kZShmYWxz
ZSkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBpbXBvcnROb2RlLmZpcnN0Q2hp
bGQ7CiAgICAgICAgfTsKICAgIH0gY2F0Y2ggKGUpIHt9Cn0KaWYgKCFTYXJpc3NhLmdldFBhcnNl
RXJyb3JUZXh0KSB7CiAgICBTYXJpc3NhLmdldFBhcnNlRXJyb3JUZXh0ID0gZnVuY3Rpb24gKG9E
b2MpIHsKICAgICAgICB2YXIgcGFyc2VFcnJvclRleHQgPSBTYXJpc3NhLlBBUlNFRF9PSzsKICAg
ICAgICBpZiAob0RvYyAmJiBvRG9jLnBhcnNlRXJyb3IgJiYgb0RvYy5wYXJzZUVycm9yICE9IDAp
IHsKICAgICAgICAgICAgaWYgKG9Eb2MuZG9jdW1lbnRFbGVtZW50LnRhZ05hbWUgPT0gInBhcnNl
cmVycm9yIikgewogICAgICAgICAgICAgICAgcGFyc2VFcnJvclRleHQgPSBvRG9jLmRvY3VtZW50
RWxlbWVudC5maXJzdENoaWxkLmRhdGE7CiAgICAgICAgICAgICAgICBwYXJzZUVycm9yVGV4dCAr
PSAiXG4iICsgb0RvYy5kb2N1bWVudEVsZW1lbnQuZmlyc3RDaGlsZC5uZXh0U2libGluZy5maXJz
dENoaWxkLmRhdGE7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBwYXJzZUVy
cm9yVGV4dCA9IFNhcmlzc2EuZ2V0VGV4dChvRG9jLmRvY3VtZW50RWxlbWVudCk7CiAgICAgICAg
ICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHBhcnNlRXJyb3JUZXh0OwogICAgfTsKfQpT
YXJpc3NhLmdldFRleHQgPSBmdW5jdGlvbiAob05vZGUsIGRlZXApIHsKICAgIHZhciBzID0gIiI7
CiAgICB2YXIgbm9kZXMgPSBvTm9kZS5jaGlsZE5vZGVzOwogICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBub2Rlcy5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciBub2RlID0gbm9kZXNbaV07CiAgICAg
ICAgdmFyIG5vZGVUeXBlID0gbm9kZS5ub2RlVHlwZTsKICAgICAgICBpZiAobm9kZVR5cGUgPT0g
Tm9kZS5URVhUX05PREUgfHwgbm9kZVR5cGUgPT0gTm9kZS5DREFUQV9TRUNUSU9OX05PREUpIHsK
ICAgICAgICAgICAgcyArPSBub2RlLmRhdGE7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
aWYgKGRlZXAgPT0gdHJ1ZSAmJiAobm9kZVR5cGUgPT0gTm9kZS5FTEVNRU5UX05PREUgfHwgbm9k
ZVR5cGUgPT0gTm9kZS5ET0NVTUVOVF9OT0RFIHx8IG5vZGVUeXBlID09IE5vZGUuRE9DVU1FTlRf
RlJBR01FTlRfTk9ERSkpIHsKICAgICAgICAgICAgICAgIHMgKz0gU2FyaXNzYS5nZXRUZXh0KG5v
ZGUsIHRydWUpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHM7Cn07
CmlmICh3aW5kb3cuWE1MU2VyaWFsaXplcikgewogICAgU2FyaXNzYS5zZXJpYWxpemUgPSBmdW5j
dGlvbiAob0RvYykgewogICAgICAgIHZhciBzID0gbnVsbDsKICAgICAgICBpZiAob0RvYykgewog
ICAgICAgICAgICBzID0gb0RvYy5pbm5lckhUTUwgPyBvRG9jLmlubmVySFRNTCA6IChuZXcgWE1M
U2VyaWFsaXplcigpKS5zZXJpYWxpemVUb1N0cmluZyhvRG9jKTsKICAgICAgICB9CiAgICAgICAg
cmV0dXJuIHM7CiAgICB9Owp9IGVsc2UgewogICAgaWYgKFNhcmlzc2EuZ2V0RG9tRG9jdW1lbnQg
JiYgKFNhcmlzc2EuZ2V0RG9tRG9jdW1lbnQoIiIsICJmb28iLCBudWxsKSkueG1sKSB7CiAgICAg
ICAgU2FyaXNzYS5zZXJpYWxpemUgPSBmdW5jdGlvbiAob0RvYykgewogICAgICAgICAgICB2YXIg
cyA9IG51bGw7CiAgICAgICAgICAgIGlmIChvRG9jKSB7CiAgICAgICAgICAgICAgICBzID0gb0Rv
Yy5pbm5lckhUTUwgPyBvRG9jLmlubmVySFRNTCA6IG9Eb2MueG1sOwogICAgICAgICAgICB9CiAg
ICAgICAgICAgIHJldHVybiBzOwogICAgICAgIH07CiAgICAgICAgWE1MU2VyaWFsaXplciA9IGZ1
bmN0aW9uICgpIHt9OwogICAgICAgIFhNTFNlcmlhbGl6ZXIucHJvdG90eXBlLnNlcmlhbGl6ZVRv
U3RyaW5nID0gZnVuY3Rpb24gKG9Ob2RlKSB7CiAgICAgICAgICAgIHJldHVybiBvTm9kZS54bWw7
CiAgICAgICAgfTsKICAgIH0KfQpTYXJpc3NhLnN0cmlwVGFncyA9IGZ1bmN0aW9uIChzKSB7CiAg
ICByZXR1cm4gcy5yZXBsYWNlKC88W14+XSs+L2csICIiKTsKfTsKU2FyaXNzYS5jbGVhckNoaWxk
Tm9kZXMgPSBmdW5jdGlvbiAob05vZGUpIHsKICAgIHdoaWxlIChvTm9kZS5maXJzdENoaWxkKSB7
CiAgICAgICAgb05vZGUucmVtb3ZlQ2hpbGQob05vZGUuZmlyc3RDaGlsZCk7CiAgICB9Cn07ClNh
cmlzc2EuY29weUNoaWxkTm9kZXMgPSBmdW5jdGlvbiAobm9kZUZyb20sIG5vZGVUbywgYlByZXNl
cnZlRXhpc3RpbmcpIHsKICAgIGlmICgoIW5vZGVGcm9tKSB8fCAoIW5vZGVUbykpIHsKICAgICAg
ICB0aHJvdyAiQm90aCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIG5vZGVzIG11c3QgYmUgcHJvdmlk
ZWQiOwogICAgfQogICAgaWYgKCFiUHJlc2VydmVFeGlzdGluZykgewogICAgICAgIFNhcmlzc2Eu
Y2xlYXJDaGlsZE5vZGVzKG5vZGVUbyk7CiAgICB9CiAgICB2YXIgb3duZXJEb2MgPSBub2RlVG8u
bm9kZVR5cGUgPT0gTm9kZS5ET0NVTUVOVF9OT0RFID8gbm9kZVRvIDogbm9kZVRvLm93bmVyRG9j
dW1lbnQ7CiAgICB2YXIgbm9kZXMgPSBub2RlRnJvbS5jaGlsZE5vZGVzOwogICAgaWYgKG93bmVy
RG9jLmltcG9ydE5vZGUgJiYgKCFfU0FSSVNTQV9JU19JRSkpIHsKICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIG5vZGVUby5hcHBlbmRD
aGlsZChvd25lckRvYy5pbXBvcnROb2RlKG5vZGVzW2ldLCB0cnVlKSk7CiAgICAgICAgfQogICAg
fSBlbHNlIHsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7
CiAgICAgICAgICAgIG5vZGVUby5hcHBlbmRDaGlsZChub2Rlc1tpXS5jbG9uZU5vZGUodHJ1ZSkp
OwogICAgICAgIH0KICAgIH0KfTsKU2FyaXNzYS5tb3ZlQ2hpbGROb2RlcyA9IGZ1bmN0aW9uIChu
b2RlRnJvbSwgbm9kZVRvLCBiUHJlc2VydmVFeGlzdGluZykgewogICAgaWYgKCghbm9kZUZyb20p
IHx8ICghbm9kZVRvKSkgewogICAgICAgIHRocm93ICJCb3RoIHNvdXJjZSBhbmQgZGVzdGluYXRp
b24gbm9kZXMgbXVzdCBiZSBwcm92aWRlZCI7CiAgICB9CiAgICBpZiAoIWJQcmVzZXJ2ZUV4aXN0
aW5nKSB7CiAgICAgICAgU2FyaXNzYS5jbGVhckNoaWxkTm9kZXMobm9kZVRvKTsKICAgIH0KICAg
IHZhciBub2RlcyA9IG5vZGVGcm9tLmNoaWxkTm9kZXM7CiAgICBpZiAobm9kZUZyb20ub3duZXJE
b2N1bWVudCA9PSBub2RlVG8ub3duZXJEb2N1bWVudCkgewogICAgICAgIHdoaWxlIChub2RlRnJv
bS5maXJzdENoaWxkKSB7CiAgICAgICAgICAgIG5vZGVUby5hcHBlbmRDaGlsZChub2RlRnJvbS5m
aXJzdENoaWxkKTsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIHZhciBvd25lckRvYyA9
IG5vZGVUby5ub2RlVHlwZSA9PSBOb2RlLkRPQ1VNRU5UX05PREUgPyBub2RlVG8gOiBub2RlVG8u
b3duZXJEb2N1bWVudDsKICAgICAgICBpZiAob3duZXJEb2MuaW1wb3J0Tm9kZSAmJiAoIV9TQVJJ
U1NBX0lTX0lFKSkgewogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0
aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBub2RlVG8uYXBwZW5kQ2hpbGQob3duZXJEb2MuaW1w
b3J0Tm9kZShub2Rlc1tpXSwgdHJ1ZSkpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykgewogICAg
ICAgICAgICAgICAgbm9kZVRvLmFwcGVuZENoaWxkKG5vZGVzW2ldLmNsb25lTm9kZSh0cnVlKSk7
CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgU2FyaXNzYS5jbGVhckNoaWxkTm9kZXMo
bm9kZUZyb20pOwogICAgfQp9OwpTYXJpc3NhLnhtbGl6ZSA9IGZ1bmN0aW9uIChhbnlPYmplY3Qs
IG9iamVjdE5hbWUsIGluZGVudFNwYWNlKSB7CiAgICBpbmRlbnRTcGFjZSA9IGluZGVudFNwYWNl
ID8gaW5kZW50U3BhY2UgOiAiIjsKICAgIHZhciBzID0gaW5kZW50U3BhY2UgKyAiPCIgKyBvYmpl
Y3ROYW1lICsgIj4iOwogICAgdmFyIGlzTGVhZiA9IGZhbHNlOwogICAgaWYgKCEoYW55T2JqZWN0
IGluc3RhbmNlb2YgT2JqZWN0KSB8fCBhbnlPYmplY3QgaW5zdGFuY2VvZiBOdW1iZXIgfHwgYW55
T2JqZWN0IGluc3RhbmNlb2YgU3RyaW5nIHx8IGFueU9iamVjdCBpbnN0YW5jZW9mIEJvb2xlYW4g
fHwgYW55T2JqZWN0IGluc3RhbmNlb2YgRGF0ZSkgewogICAgICAgIHMgKz0gU2FyaXNzYS5lc2Nh
cGUoIiIgKyBhbnlPYmplY3QpOwogICAgICAgIGlzTGVhZiA9IHRydWU7CiAgICB9IGVsc2Ugewog
ICAgICAgIHMgKz0gIlxuIjsKICAgICAgICB2YXIgaXRlbUtleSA9ICIiOwogICAgICAgIHZhciBp
c0FycmF5SXRlbSA9IGFueU9iamVjdCBpbnN0YW5jZW9mIEFycmF5OwogICAgICAgIGZvciAodmFy
IG5hbWUgaW4gYW55T2JqZWN0KSB7CiAgICAgICAgICAgIHMgKz0gU2FyaXNzYS54bWxpemUoYW55
T2JqZWN0W25hbWVdLCAoaXNBcnJheUl0ZW0gPyAnYXJyYXktaXRlbSBrZXk9IicgKyBuYW1lICsg
JyInIDogbmFtZSksIGluZGVudFNwYWNlICsgIiAgICIpOwogICAgICAgIH0KICAgICAgICBzICs9
IGluZGVudFNwYWNlOwogICAgfQogICAgcmV0dXJuIHMgKz0gKG9iamVjdE5hbWUuaW5kZXhPZigi
ICIpICE9IC0xID8gIjwvYXJyYXktaXRlbT5cbiIgOiAiPC8iICsgb2JqZWN0TmFtZSArICI+XG4i
KTsKfTsKU2FyaXNzYS5lc2NhcGUgPSBmdW5jdGlvbiAoc1htbCkgewogICAgcmV0dXJuIHNYbWwu
cmVwbGFjZSgvJi9nLCAiJmFtcDsiKS5yZXBsYWNlKC88L2csICImbHQ7IikucmVwbGFjZSgvPi9n
LCAiJmd0OyIpLnJlcGxhY2UoLyIvZywgIiZxdW90OyIpLnJlcGxhY2UoLycvZywgIiZhcG9zOyIp
Owp9OwpTYXJpc3NhLnVuZXNjYXBlID0gZnVuY3Rpb24gKHNYbWwpIHsKICAgIHJldHVybiBzWG1s
LnJlcGxhY2UoLyZhcG9zOy9nLCAiJyIpLnJlcGxhY2UoLyZxdW90Oy9nLCAnIicpLnJlcGxhY2Uo
LyZndDsvZywgIj4iKS5yZXBsYWNlKC8mbHQ7L2csICI8IikucmVwbGFjZSgvJmFtcDsvZywgIiYi
KTsKfTsKCmZ1bmN0aW9uICRnZXRfSnNFbGVtZW50KCkgewogICAgdmFyIGVsZW1lbnQgPSBudWxs
OwogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMSkgewogICAgICAgIGVsZW1lbnQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChhcmd1bWVudHNbMF0pOwogICAgfSBlbHNlIHsKICAgICAgICBp
ZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAyKSB7CiAgICAgICAgICAgIGVsZW1lbnQgPSBldmFsKCJk
b2N1bWVudC4iICsgYXJndW1lbnRzWzBdICsgIi5lbGVtZW50c1snIiArIGFyZ3VtZW50c1sxXSAr
ICInXSIpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBlbGVtZW50Owp9CmZ1bmN0aW9uICRs
b2FkQ29va2llVmFsdWVPblBhZ2UoKSB7CiAgICBpZiAoZ2V0Q29va2llKGFyZ3VtZW50c1syXSkg
IT0gbnVsbCkgewogICAgICAgIGlmIChhcmd1bWVudHNbMF0gPT0gImZvclRleHRGaWVsZCIpIHsK
ICAgICAgICAgICAgJGdldF9Kc0VsZW1lbnQoYXJndW1lbnRzWzFdLCBhcmd1bWVudHNbMl0pLnZh
bHVlID0gZ2V0Q29va2llKGFyZ3VtZW50c1syXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgaWYgKGFyZ3VtZW50c1swXSA9PSAiZm9yU2VsZWN0IikgewogICAgICAgICAgICAgICAgZm9y
IChrID0gMDsgayA8ICRnZXRfSnNFbGVtZW50KGFyZ3VtZW50c1sxXSwgYXJndW1lbnRzWzJdKS5v
cHRpb25zLmxlbmd0aDsgaysrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRnZXRfSnNFbGVt
ZW50KGFyZ3VtZW50c1sxXSwgYXJndW1lbnRzWzJdKS5vcHRpb25zW2tdLnZhbHVlID09IGdldENv
b2tpZShhcmd1bWVudHNbMl0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRnZXRfSnNFbGVt
ZW50KGFyZ3VtZW50c1sxXSwgYXJndW1lbnRzWzJdKS5vcHRpb25zW2tdLnNlbGVjdGVkID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CmZ1bmN0aW9u
IHNob3dIaWRlRGl2KGRpdmlkLCBkaXNwbGF5RmxhZywgZGl2VHlwZSwgZGl2T2JqKSB7CiAgICBp
ZiAoZGl2VHlwZSA9PSAicCIpIHsKICAgICAgICB2YXIgcG9zeCA9IDA7CiAgICAgICAgdmFyIHBv
c3kgPSAwOwogICAgICAgIHZhciB4T2Zmc2V0ID0gMDsKICAgICAgICB2YXIgeU9mZnNldCA9IDA7
CiAgICAgICAgdmFyIG9iaiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRpdk9iaik7CiAgICAg
ICAgaWYgKG9iai5vZmZzZXRQYXJlbnQpIHsKICAgICAgICAgICAgd2hpbGUgKG9iai5vZmZzZXRQ
YXJlbnQpIHsKICAgICAgICAgICAgICAgIHBvc3ggKz0gb2JqLm9mZnNldExlZnQ7CiAgICAgICAg
ICAgICAgICBwb3N5ICs9IG9iai5vZmZzZXRUb3A7CiAgICAgICAgICAgICAgICBvYmogPSBvYmou
b2Zmc2V0UGFyZW50OwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
aWYgKG9iai54KSB7CiAgICAgICAgICAgICAgICBwb3N4ICs9IG9iai54OwogICAgICAgICAgICAg
ICAgcG9zeSArPSBvYmoueTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB4T2Zmc2V0
ID0gMTA7CiAgICAgICAgeU9mZnNldCA9IDA7CiAgICAgICAgaWYgKGRpdmlkID09ICJ3dFJlZHJl
c3MiKSB7CiAgICAgICAgICAgIHhPZmZzZXQgPSAwOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgIGlmIChkaXZpZCA9PSAicHJpdmFjeU5vdGljZSIpIHsKICAgICAgICAgICAgICAgIHhPZmZz
ZXQgPSAxMzA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoZGl2aWQpLnN0eWxlLmxlZnQgPSAocG9zeCArIHhPZmZzZXQpOwogICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKGRpdmlkKS5zdHlsZS50b3AgPSAocG9zeSArIHlPZmZzZXQp
OwogICAgfQogICAgaWYgKGRpc3BsYXlGbGFnKSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoZGl2aWQpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgfSBlbHNlIHsKICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkaXZpZCkuc3R5bGUuZGlzcGxheSA9ICJub25lIjsK
ICAgIH0KfQp2YXIgZml4ZWRDb25maWd1cmF0ZWREYXRlID0gIiI7CnZhciBjYWxUeXBlID0gIm90
aGVyIjsKdmFyIG9fbmF2aWdhdG9yID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgp
Owp2YXIgaXNNYWNJRSA9IChvX25hdmlnYXRvci5pbmRleE9mKCJtc2llIDUiKSA+IC0xICYmIG9f
bmF2aWdhdG9yLmluZGV4T2YoIm1hYyIpID4gLTEpID8gMSA6IDA7CnZhciBpc1BDSUU2ID0gKG9f
bmF2aWdhdG9yLmluZGV4T2YoIm1zaWUgNiIpID4gLTEpID8gMSA6IDA7CnZhciBpc0Nocm9tZSA9
IChvX25hdmlnYXRvci5pbmRleE9mKCJjaHJvbWUiKSA+IC0xKSA/IDEgOiAwOwp2YXIgaXNQQ0lF
ID0gKG9fbmF2aWdhdG9yLmluZGV4T2YoIm1zaWUiKSA+IC0xICYmICFpc01hY0lFICYmIG9fbmF2
aWdhdG9yLmluZGV4T2YoIm9wZXJhIikgPT0gLTEpID8gMSA6IDA7CnZhciBpc0ZGID0gKG9fbmF2
aWdhdG9yLmluZGV4T2YoIm1hYyIpID09IC0xICYmIG9fbmF2aWdhdG9yLmluZGV4T2YoImZpcmVm
b3giKSA+IC0xKSA/IDEgOiAwOwp2YXIgaXNPcGVyYSA9IG9fbmF2aWdhdG9yLmluZGV4T2YoIm9w
ZXJhIikgPiAtMSA/IDEgOiAwOwp2YXIgaXNLSFRNTCA9IG9fbmF2aWdhdG9yLmluZGV4T2YoImto
dG1sIikgPiAtMSA/IDEgOiAwOwp2YXIgaXNTYWZhcmkgPSAob19uYXZpZ2F0b3IuaW5kZXhPZigi
bWFjIikgPiAtMSAmJiBvX25hdmlnYXRvci5pbmRleE9mKCJzYWZhcmkiKSA+IC0xKSA/IDEgOiAw
Owp2YXIgaXNNYWNGRiA9IChvX25hdmlnYXRvci5pbmRleE9mKCJtYWMiKSA+IC0xICYmIG9fbmF2
aWdhdG9yLmluZGV4T2YoImZpcmVmb3giKSA+IC0xKSA/IDEgOiAwOwp2YXIgbUFycmF5ID0gbmV3
IEFycmF5KCJKYW51YXJ5IiwgIkZlYnJ1YXJ5IiwgIk1hcmNoIiwgIkFwcmlsIiwgIk1heSIsICJK
dW5lIiwgIkp1bHkiLCAiQXVndXN0IiwgIlNlcHRlbWJlciIsICJPY3RvYmVyIiwgIk5vdmVtYmVy
IiwgIkRlY2VtYmVyIik7CnZhciBkQXJyYXkgPSBuZXcgQXJyYXkoIlMiLCAiTSIsICJUIiwgIlci
LCAiVCIsICJGIiwgIlMiKTsKdmFyIGRhdGVzQXJyYXkgPSBuZXcgQXJyYXkoMzEsIDI4LCAzMSwg
MzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMSk7CnZhciB0b2RheSA9ICIiOwp2YXIg
eWVhclNob3dGbGcgPSBmYWxzZTsKdmFyIHNob3dZZWFyID0gIiI7CmlmICh0eXBlb2YgZml4ZWRh
dGVGb3JBZGRQb2ludHMgPT0gInVuZGVmaW5lZCIpIHsKICAgIHRvZGF5ID0gbmV3IERhdGUoKTsK
fSBlbHNlIHsKICAgIHZhciBmaXhlZGF0ZUZvckFkZFBvaW50c1BhcnNlID0gRGF0ZS5wYXJzZShm
aXhlZGF0ZUZvckFkZFBvaW50cyk7CiAgICB5ZWFyU2hvd0ZsZyA9IHRydWU7CiAgICB0b2RheSA9
IG5ldyBEYXRlKGZpeGVkYXRlRm9yQWRkUG9pbnRzUGFyc2UpOwp9CnZhciBjRCA9IHRvZGF5Lmdl
dERheSgpOwp2YXIgY1QgPSB0b2RheS5nZXREYXRlKCk7CnZhciBjTSA9IHRvZGF5LmdldE1vbnRo
KCk7CnZhciBjTURzID0gZGF0ZXNBcnJheVtjTV07CnZhciBjWSA9IHRvZGF5LmdldEZ1bGxZZWFy
KCk7CnZhciBuZXdUID0gY1Q7CnZhciBuZXdNID0gY007CnZhciBuZXdZID0gY1k7CnZhciBuZXdE
cyA9IGNNRHM7CnZhciBuZXdEID0gY0Q7CnZhciBudW1DYWxlbmRhcnMgPSAyOwp2YXIgY2FsRGly
ZWN0aW9uID0gIiI7CnZhciBjYWxvcGVuID0gMDsKdmFyIG9fd2luZG93cGFyZW50ID0gdG9wOwp2
YXIgb19pbnB1dCA9IDA7CnZhciBvX21vbnRoID0gMDsKdmFyIG9fZGF0ZSA9IDA7CnZhciBvX2lm
cmFtZWNhbCA9IDA7CnZhciBvX2Zyb207CnZhciBvX3RvOwp2YXIgdl9mcm9tOwp2YXIgdl90bzsK
dmFyIGRfbWFrZWZyb20gPSAwOwp2YXIgZF9tYWtldG8gPSAwOwp2YXIgc19sYW5nID0gInVzIjsK
dmFyIG9fY3VycmVudERhdGUgPSBmYWxzZTsKdmFyIGlfZmlyc3RNb250aCA9IGNNOwp2YXIgaV9z
Zmlyc3RZZWFyID0gY1k7CnZhciBpX3NmaXJzdE1vbnRoID0gY007CnZhciBpX29maXJzdFllYXIg
PSBjWTsKdmFyIGlfb2ZpcnN0TW9udGggPSBjTTsKdmFyIGJfY2FsaW5pdCA9IDA7CnZhciBvX3Jv
dyA9IG51bGw7CnZhciBpX251bWNhbCA9IDA7CnZhciBvX2NhbGJvZHkgPSBudWxsOwp2YXIgc19q
c2NhbGwgPSAoaXNQQ0lFKSA/ICJwYXJlbnQuIiA6ICIiOwp2YXIgc19jbG9zZWNhbCA9ICIiOwp2
YXIgYl9kYXRlMzMxID0gMDsKdmFyIGFfaW5wdXQgPSAwOwp2YXIgb19wYXJlbnQ7CnZhciBzX2lu
cHV0dHlwZSA9ICJvYmplY3QiOwp2YXIgYV92X2lucHV0ID0gbnVsbDsKdmFyIEZpZWxkQ2xpY2tl
ZCA9IG51bGw7CnZhciBkZXBhcnREYXRlID0gIiI7CnZhciBmbGdEb3JSID0gIiI7CnZhciBmbGdS
ZXROYW1lID0gIiI7CnZhciBmbGdEYXRlRGlzYWJsZSA9ICIiOwp2YXIgY2hrID0gIiI7CnZhciBj
aGtFeGNjZXNzYmFncyA9ICJ0cnVlIjsKdmFyIFRPVEFMQkFHU0RFUCA9IDA7CnZhciBUb3RhbFNl
bGVjdFZhbHVlID0gMDsKdmFyIFRvdGFsU2VsZWN0VmFsdWVSZXQgPSAwOwp2YXIgVG90YWxTdWJE
ZXAgPSAwOwp2YXIgVG90YWxTdWJSZXQgPSAwOwp2YXIgVG90YWxEZXBSZXQgPSAwOwp2YXIgZ3Vl
c3RzaXplID0gMDsKdmFyIGNoa0FqYXhEaXY7CnZhciBjaGtBamF4RGl2U2Vjb25kOwp2YXIgc2Vj
b25kRGl2Owp2YXIgcG9pbnRzRGl2SWQ7CnZhciBzaG93UG9pbnRzRGl2SWQ7CnZhciBhZGRGaWVs
ZElkID0gIiI7CnZhciBkaXNjb250aW51ZSA9IDA7CnZhciBjYWxsRXJyb3JGdW4gPSAwOwp2YXIg
ZXhjZXNzQmFnc1N0cmluZyA9ICIiOwp2YXIgZXhjZXNzQmFnc1N0cmluZ1JldCA9ICIiOwp2YXIg
dGVtcGd1ZXN0QmFnID0gMDsKdmFyIGd1ZXN0SGF2ZUV4Y2Vzc0JhZ3MgPSAwOwp2YXIgYWxsb3dG
cmVlX0JhZ3MgPSAwOwp2YXIgeG1saHR0cCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwp2YXIgY2hr
eG1saHR0cCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwp2YXIgZm9ybVRyaXBUeXBlID0gbnVsbDsK
dmFyIGlzd2FwID0gMDsKdmFyIFggPSAwOwp2YXIgWSA9IDA7CnZhciBsaW5rQ250ID0gMDsKdmFy
IG1heGhlaWdodCA9IDI0MDsKdmFyIGMxOwp2YXIgYzI7CnZhciB0aGlzb2JqID0gInVuZGVmaW5l
ZCI7CnZhciBjaGVja3ZhbCA9ICJ1bmRlZmluZWQiOwp2YXIgZGVwTGVnMUd1ZXN0ID0gIiI7CnZh
ciBkZXBMZWcyR3Vlc3QgPSAiIjsKdmFyIHJldExlZzFHdWVzdCA9ICIiOwp2YXIgcmV0TGVnMkd1
ZXN0ID0gIiI7CnZhciBkZXBMZWcxU2VhdCA9ICIiOwp2YXIgZGVwTGVnMlNlYXQgPSAiIjsKdmFy
IHJldExlZzFTZWF0ID0gIiI7CnZhciByZXRMZWcyU2VhdCA9ICIiOwp2YXIgZ3Vlc3RBcnJheSA9
IG5ldyBBcnJheSgpOwp2YXIgc2VhdEFycmF5ID0gbmV3IEFycmF5KCk7CnZhciBzZWF0RGVwQ29u
bmVjdEFycmF5ID0gbmV3IEFycmF5KCk7CnZhciBndWVzdEFycmF5UmV0ID0gbmV3IEFycmF5KCk7
CnZhciBzZWF0QXJyYXlSZXQgPSBuZXcgQXJyYXkoKTsKdmFyIHNlYXRSZXRDb25uZWN0QXJyYXkg
PSBuZXcgQXJyYXkoKTsKdmFyIGdudW0gPSAiIjsKdmFyIGdudW1SZXQgPSAiIjsKdmFyIGFqYXhE
aXY7CnZhciBhbHJlYWR5Q2hlY2tlZEluRGVwID0gImZhbHNlIjsKdmFyIGFscmVhZHlDaGVja2Vk
SW5SZXQgPSAiZmFsc2UiOwp2YXIgbXl3aW5kb3c7CnZhciBteXdpbmRvd0Zvckh0bWw7CnZhciB3
aWNoU2VsZWN0ZWQ7CnZhciB0YWJWYWwgPSAiIjsKdmFyIGFqYXhEaXY7CnZhciBzZWF0TWFwQWph
eERpdjsKdmFyIGFjdGl2YXRlZFRhYiA9ICIiOwp2YXIgdGFiU2VsZWN0ID0gIjEiOwp2YXIgdGJT
ZWxlY3QgPSAiMSI7CnZhciBsb2dJblZhbCA9ICJFbWFpbCwgQWxpYXMgb3IgRWxldmF0ZSMiOwp2
YXIgbG9naW5Nb2R1bGVPclJlc3QgPSAibG9naW4iOwp2YXIgaG9sZElubmVySHRtbCA9ICIiOwp2
YXIgZXhwaXJlZGF5cyA9IDA7CnZhciBGcm1Ub1N1Ym1pdCA9ICIiOwp2YXIgYnV0dG9uVVJMID0g
IiI7CnZhciBmbGdNc2cgPSBmYWxzZTsKdmFyIHhBeGlzID0gIiI7CnZhciB5QXhpcyA9ICIiOwp2
YXIgWDEgPSAwOwp2YXIgWTEgPSAwOwp2YXIgZGlzYWJsZUlkcyA9IDA7CnZhciByVUluUmVnaXN0
cmF0aW9uUHJvY2VzcyA9ICJObyI7CnZhciBtb3ZleCA9IDA7CnZhciBtb3ZleSA9IDA7CnZhciB4
ZGlmZiA9IDA7CnZhciB5ZGlmZiA9IDA7CnZhciB5c3RhcnQgPSAwOwp2YXIgeHN0YXJ0ID0gMDsK
dmFyIGEgPSAwOwp2YXIgaXNTY3JvbGwgPSAiWWVzIjsKdmFyIHBvc2l0aW9uRGl2RmFyZTsKdmFy
IGFjdHVhbERpdjsKdmFyIGNoZWNrU2VhcmNoVHlwZUxpbms7CnZhciBpbWdPYmo7CnZhciBmbHRT
dGF0dXNFcnJvcnNSZXF1aXJlZCA9ICJUbyBmaW5kIHRoZSBmbGlnaHQgeW91IG5lZWQsIHdlIG5l
ZWQgYSB2YWxpZCBmbGlnaHQgbnVtYmVyIG9yIGNpdHkgcGFpci4iOwp2YXIgZmx0U3RhdHVzRXJy
b3JzVW5rbm93biA9ICJVbmtub3duIGVycm9yOiBDb250YWN0IGFkbWluIjsKdmFyIGZsdFN0YXR1
c0Vycm9yc1NlcnZpY2VSZXF1aXJlZCA9ICJObyBkYXRhIG1hdGNoZXMgeW91ciBzZWxlY3Rpb24g
Y3JpdGVyaWEuIjsKdmFyIGZsdFN0YXR1c0Vycm9yc0luVmFsaWRGbHRObyA9ICJUaGUgZmxpZ2h0
IG51bWJlciB5b3UgaGF2ZSBjaG9zZW4gZG9lcyBub3QgZmx5IG9uIHRoaXMgZGF0ZS4gIFBsZWFz
ZSBjaG9vc2UgYW5vdGhlciBkYXkuIjsKdmFyIGZsdFN0YXR1c0Vycm9yc0luVmFsaWRGbHROb05v
dE51bSA9ICJGbGlnaHQgbnVtYmVycyBtdXN0IGJlIG51bWVyaWMgb25seS4iOwp2YXIgZmx0U3Rh
dHVzRXJyb3JzSW5WYWxpZENpdHlQYWlyID0gIlRoZSBjaXR5IHBhaXIgeW91IGhhdmUgc2VsZWN0
ZWQgZG9lcyBub3QgbWF0Y2ggdGhlIGNvcnJlY3QgZmxpZ2h0IG51bWJlci4gUGxlYXNlIGRvdWJs
ZSBjaGVjayB0aGVtIGFuZCB0cnkgYWdhaW4uIjsKdmFyIGZsdFN0YXR1c0Vycm9yc05vRmx0R2l2
ZW5EYXRlID0gIlNvcnJ5LCB0aGVyZSBhcmUgbm90IGFueSBmbGlnaHRzIGZvciB0aGUgZGF0ZSB5
b3UgaGF2ZSByZXF1ZXN0ZWQuIjsKdmFyIGZsdFN0YXR1c2Vycm9yc25vRGF0YSA9ICJObyBEYXRh
IEF2YWlsYWJsZSBmb3IgdGhpcyBkYXRlIG9yIHNlbGVjdGVkIENpdHkgUGFpci4iOwp2YXIgSXNO
dW1iZXIgPSB0cnVlOwoKZnVuY3Rpb24gYWRkRWxlbWVudChwYXJlbnRJZCwgZWxlVHlwZSwgZWxl
TmFtZSwgZWxlVmFsdWUpIHsKICAgIHZhciBwYXJlbnRPYmogPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZChwYXJlbnRJZCk7CiAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImlucHV0Iik7CiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgidHlwZSIsIGVsZVR5cGUpOwogICAg
ZWxlbWVudC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwgZWxlVmFsdWUpOwogICAgZWxlbWVudC5zZXRB
dHRyaWJ1dGUoIm5hbWUiLCBlbGVOYW1lKTsKICAgIHBhcmVudE9iai5hcHBlbmRDaGlsZChlbGVt
ZW50KTsKfQpmdW5jdGlvbiBjcmVhdGVGb3JtKGZybU5hbWUsIGZybUFjdGlvbikgewogICAgdmFy
IGZvcm1FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZm9ybSIpOwogICAgZm9ybUVs
ZW1lbnQuc2V0QXR0cmlidXRlKCJuYW1lIiwgZnJtTmFtZSk7CiAgICBmb3JtRWxlbWVudC5zZXRB
dHRyaWJ1dGUoImlkIiwgZnJtTmFtZSk7CiAgICBmb3JtRWxlbWVudC5zZXRBdHRyaWJ1dGUoIm1l
dGhvZCIsICJwb3N0Iik7CiAgICByZXR1cm4gZm9ybUVsZW1lbnQ7Cn0KZnVuY3Rpb24gam9pbkVs
ZXZhdGUoZk5hbWUsIG1OYW1lLCBsTmFtZSwgYWRkcmVzczEsIGFkZHJlc3MyLCBjaXR5LCBzdGF0
ZSwgY291bnRyeSwgemlwQ29kZSkgewogICAgdmFyIGpvaW5FbGV2YXRlUmVxRm9ybSA9IGNyZWF0
ZUZvcm0oInJlcXVlc3RQcm9maWxlRm9ybSIsICJqb2luRWxldmF0ZS5kbyIpOwogICAgdmFyIGZy
bVBhcmVudE9iaiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJqb2luRWxldmF0ZURpdiIpOwog
ICAgZnJtUGFyZW50T2JqLmFwcGVuZENoaWxkKGpvaW5FbGV2YXRlUmVxRm9ybSk7CiAgICBqb2lu
RWxldmF0ZVJlcUZvcm0uYWN0aW9uID0gImpvaW5FbGV2YXRlLmRvIjsKICAgIGpvaW5FbGV2YXRl
UmVxRm9ybS5tZXRob2QgPSAiUE9TVCI7CiAgICBhZGRFbGVtZW50KGpvaW5FbGV2YXRlUmVxRm9y
bS5pZCwgImhpZGRlbiIsICJtZXRob2QiLCAiam9pbkVsZXZhdGUiKTsKICAgIGFkZEVsZW1lbnQo
am9pbkVsZXZhdGVSZXFGb3JtLmlkLCAiaGlkZGVuIiwgImZOYW1lIiwgZk5hbWUpOwogICAgYWRk
RWxlbWVudChqb2luRWxldmF0ZVJlcUZvcm0uaWQsICJoaWRkZW4iLCAibU5hbWUiLCBtTmFtZSk7
CiAgICBhZGRFbGVtZW50KGpvaW5FbGV2YXRlUmVxRm9ybS5pZCwgImhpZGRlbiIsICJsTmFtZSIs
IGxOYW1lKTsKICAgIGFkZEVsZW1lbnQoam9pbkVsZXZhdGVSZXFGb3JtLmlkLCAiaGlkZGVuIiwg
ImFkZHJlc3MxIiwgYWRkcmVzczEpOwogICAgYWRkRWxlbWVudChqb2luRWxldmF0ZVJlcUZvcm0u
aWQsICJoaWRkZW4iLCAiYWRkcmVzczIiLCBhZGRyZXNzMik7CiAgICBhZGRFbGVtZW50KGpvaW5F
bGV2YXRlUmVxRm9ybS5pZCwgImhpZGRlbiIsICJjaXR5IiwgY2l0eSk7CiAgICBhZGRFbGVtZW50
KGpvaW5FbGV2YXRlUmVxRm9ybS5pZCwgImhpZGRlbiIsICJzdGF0ZSIsIHN0YXRlKTsKICAgIGFk
ZEVsZW1lbnQoam9pbkVsZXZhdGVSZXFGb3JtLmlkLCAiaGlkZGVuIiwgImNvdW50cnkiLCBjb3Vu
dHJ5KTsKICAgIGFkZEVsZW1lbnQoam9pbkVsZXZhdGVSZXFGb3JtLmlkLCAiaGlkZGVuIiwgInpp
cENvZGUiLCB6aXBDb2RlKTsKICAgIGpvaW5FbGV2YXRlUmVxRm9ybS5zdWJtaXQoKTsKfQpmdW5j
dGlvbiBnZXRBbmNob3JQb3NpdGlvbihhbmNob3JuYW1lKSB7CiAgICB2YXIgdXNlV2luZG93ID0g
ZmFsc2U7CiAgICB2YXIgY29vcmRpbmF0ZXMgPSBuZXcgT2JqZWN0KCk7CiAgICB2YXIgeCA9IDAs
CiAgICAgICAgeSA9IDA7CiAgICB2YXIgdXNlX2dlYmkgPSBmYWxzZSwKICAgICAgICB1c2VfY3Nz
ID0gZmFsc2UsCiAgICAgICAgdXNlX2xheWVycyA9IGZhbHNlOwogICAgaWYgKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKSB7CiAgICAgICAgdXNlX2dlYmkgPSB0cnVlOwogICAgfSBlbHNlIHsKICAg
ICAgICBpZiAoZG9jdW1lbnQuYWxsKSB7CiAgICAgICAgICAgIHVzZV9jc3MgPSB0cnVlOwogICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChkb2N1bWVudC5sYXllcnMpIHsKICAgICAgICAg
ICAgICAgIHVzZV9sYXllcnMgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQog
ICAgaWYgKHVzZV9nZWJpICYmIGRvY3VtZW50LmFsbCkgewogICAgICAgIHggPSBBbmNob3JQb3Np
dGlvbl9nZXRQYWdlT2Zmc2V0TGVmdChkb2N1bWVudC5hbGxbYW5jaG9ybmFtZV0pOwogICAgICAg
IHkgPSBBbmNob3JQb3NpdGlvbl9nZXRQYWdlT2Zmc2V0VG9wKGRvY3VtZW50LmFsbFthbmNob3Ju
YW1lXSk7CiAgICB9IGVsc2UgewogICAgICAgIGlmICh1c2VfZ2ViaSkgewogICAgICAgICAgICB2
YXIgbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFuY2hvcm5hbWUpOwogICAgICAgICAgICB4
ID0gQW5jaG9yUG9zaXRpb25fZ2V0UGFnZU9mZnNldExlZnQobyk7CiAgICAgICAgICAgIHkgPSBB
bmNob3JQb3NpdGlvbl9nZXRQYWdlT2Zmc2V0VG9wKG8pOwogICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgIGlmICh1c2VfY3NzKSB7CiAgICAgICAgICAgICAgICB4ID0gQW5jaG9yUG9zaXRpb25f
Z2V0UGFnZU9mZnNldExlZnQoZG9jdW1lbnQuYWxsW2FuY2hvcm5hbWVdKTsKICAgICAgICAgICAg
ICAgIHkgPSBBbmNob3JQb3NpdGlvbl9nZXRQYWdlT2Zmc2V0VG9wKGRvY3VtZW50LmFsbFthbmNo
b3JuYW1lXSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAodXNlX2xh
eWVycykgewogICAgICAgICAgICAgICAgICAgIHZhciBmb3VuZCA9IDA7CiAgICAgICAgICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkb2N1bWVudC5hbmNob3JzLmxlbmd0aDsgaSsrKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5hbmNob3JzW2ldLm5hbWUgPT0g
YW5jaG9ybmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSAxOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kID09IDAp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29vcmRpbmF0ZXMueCA9IDA7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGNvb3JkaW5hdGVzLnkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gY29vcmRpbmF0ZXM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgIHggPSBkb2N1bWVudC5hbmNob3JzW2ldLng7CiAgICAgICAgICAgICAgICAgICAgeSA9IGRv
Y3VtZW50LmFuY2hvcnNbaV0ueTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgY29vcmRpbmF0ZXMueCA9IDA7CiAgICAgICAgICAgICAgICAgICAgY29vcmRpbmF0
ZXMueSA9IDA7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvb3JkaW5hdGVzOwogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgY29vcmRpbmF0ZXMu
eCA9IHg7CiAgICBjb29yZGluYXRlcy55ID0geTsKICAgIHJldHVybiBjb29yZGluYXRlczsKfQpm
dW5jdGlvbiBnZXRBbmNob3JXaW5kb3dQb3NpdGlvbihhbmNob3JuYW1lKSB7CiAgICB2YXIgY29v
cmRpbmF0ZXMgPSBnZXRBbmNob3JQb3NpdGlvbihhbmNob3JuYW1lKTsKICAgIHZhciB4ID0gMDsK
ICAgIHZhciB5ID0gMDsKICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCkgewogICAgICAg
IGlmIChpc05hTih3aW5kb3cuc2NyZWVuWCkpIHsKICAgICAgICAgICAgeCA9IGNvb3JkaW5hdGVz
LnggLSBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQgKyB3aW5kb3cuc2NyZWVuTGVmdDsKICAgICAg
ICAgICAgeSA9IGNvb3JkaW5hdGVzLnkgLSBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCArIHdpbmRv
dy5zY3JlZW5Ub3A7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgeCA9IGNvb3JkaW5hdGVz
LnggKyB3aW5kb3cuc2NyZWVuWCArICh3aW5kb3cub3V0ZXJXaWR0aCAtIHdpbmRvdy5pbm5lcldp
ZHRoKSAtIHdpbmRvdy5wYWdlWE9mZnNldDsKICAgICAgICAgICAgeSA9IGNvb3JkaW5hdGVzLnkg
KyB3aW5kb3cuc2NyZWVuWSArICh3aW5kb3cub3V0ZXJIZWlnaHQgLSAyNCAtIHdpbmRvdy5pbm5l
ckhlaWdodCkgLSB3aW5kb3cucGFnZVlPZmZzZXQ7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAg
ICAgICBpZiAoZG9jdW1lbnQuYWxsKSB7CiAgICAgICAgICAgIHggPSBjb29yZGluYXRlcy54IC0g
ZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0ICsgd2luZG93LnNjcmVlbkxlZnQ7CiAgICAgICAgICAg
IHkgPSBjb29yZGluYXRlcy55IC0gZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgKyB3aW5kb3cuc2Ny
ZWVuVG9wOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChkb2N1bWVudC5sYXllcnMp
IHsKICAgICAgICAgICAgICAgIHggPSBjb29yZGluYXRlcy54ICsgd2luZG93LnNjcmVlblggKyAo
d2luZG93Lm91dGVyV2lkdGggLSB3aW5kb3cuaW5uZXJXaWR0aCkgLSB3aW5kb3cucGFnZVhPZmZz
ZXQ7CiAgICAgICAgICAgICAgICB5ID0gY29vcmRpbmF0ZXMueSArIHdpbmRvdy5zY3JlZW5ZICsg
KHdpbmRvdy5vdXRlckhlaWdodCAtIDI0IC0gd2luZG93LmlubmVySGVpZ2h0KSAtIHdpbmRvdy5w
YWdlWU9mZnNldDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGNvb3JkaW5hdGVz
LnggPSB4OwogICAgY29vcmRpbmF0ZXMueSA9IHk7CiAgICByZXR1cm4gY29vcmRpbmF0ZXM7Cn0K
ZnVuY3Rpb24gQW5jaG9yUG9zaXRpb25fZ2V0UGFnZU9mZnNldExlZnQoZWwpIHsKICAgIHZhciBv
bCA9IGVsLm9mZnNldExlZnQ7CiAgICB3aGlsZSAoKGVsID0gZWwub2Zmc2V0UGFyZW50KSAhPSBu
dWxsKSB7CiAgICAgICAgb2wgKz0gZWwub2Zmc2V0TGVmdDsKICAgIH0KICAgIHJldHVybiBvbDsK
fQpmdW5jdGlvbiBBbmNob3JQb3NpdGlvbl9nZXRXaW5kb3dPZmZzZXRMZWZ0KGVsKSB7CiAgICBy
ZXR1cm4gQW5jaG9yUG9zaXRpb25fZ2V0UGFnZU9mZnNldExlZnQoZWwpIC0gZG9jdW1lbnQuYm9k
eS5zY3JvbGxMZWZ0Owp9CmZ1bmN0aW9uIEFuY2hvclBvc2l0aW9uX2dldFBhZ2VPZmZzZXRUb3Ao
ZWwpIHsKICAgIHZhciBvdCA9IGVsLm9mZnNldFRvcDsKICAgIHdoaWxlICgoZWwgPSBlbC5vZmZz
ZXRQYXJlbnQpICE9IG51bGwpIHsKICAgICAgICBvdCArPSBlbC5vZmZzZXRUb3A7CiAgICB9CiAg
ICByZXR1cm4gb3Q7Cn0KZnVuY3Rpb24gQW5jaG9yUG9zaXRpb25fZ2V0V2luZG93T2Zmc2V0VG9w
KGVsKSB7CiAgICByZXR1cm4gQW5jaG9yUG9zaXRpb25fZ2V0UGFnZU9mZnNldFRvcChlbCkgLSBk
b2N1bWVudC5ib2R5LnNjcm9sbFRvcDsKfQpmdW5jdGlvbiBmaW5kRmlyc3REYXkoKSB7CiAgICBm
aXJzdERheSA9IG5ldyBEYXRlKCk7CiAgICBmaXJzdERheS5zZXREYXRlKDEpOwogICAgZmlyc3RE
YXkuc2V0TW9udGgobmV3TSk7CiAgICBmaXJzdERheS5zZXRGdWxsWWVhcihuZXdZKTsKICAgIHJl
dHVybiBmaXJzdERheS5nZXREYXkoKTsKfQpmdW5jdGlvbiBzZXREYXRlTGltaXQoRGF0ZUxpbWl0
MSkgewogICAgZml4ZWRDb25maWd1cmF0ZWREYXRlID0gRGF0ZUxpbWl0MTsKfQpmdW5jdGlvbiBj
aGVjazMzMShkX2RhdGUpIHsKICAgIHZhciBiX2NoZWNrMzMxOwogICAgQ29uUGFyc2VEYXRlID0g
RGF0ZS5wYXJzZShmaXhlZENvbmZpZ3VyYXRlZERhdGUpOwogICAgQ29uZmlndXJhdGVkRGF0ZSA9
IG5ldyBEYXRlKENvblBhcnNlRGF0ZSk7CiAgICBpZiAoQ29uZmlndXJhdGVkRGF0ZSA+IGRfZGF0
ZSkgewogICAgICAgIGJfY2hlY2szMzEgPSAwOwogICAgfSBlbHNlIHsKICAgICAgICBiX2NoZWNr
MzMxID0gMTsKICAgIH0KICAgIHJldHVybiBiX2NoZWNrMzMxOwp9CmZ1bmN0aW9uIHZtX3NldHVw
Q2FsKCkgewogICAgaV9udW1jYWwgPSAwOwogICAgaWYgKGNhbFR5cGUgPT0gImhvbWUiKSB7CiAg
ICAgICAgbWFrZUNhbChjTSk7CiAgICB9IGVsc2UgewogICAgICAgIHZtX21ha2VDYWwoY00pOwog
ICAgfQp9CmZ1bmN0aW9uIHByZXZlbnRDbG9zZShldnQpIHsKICAgIGlmIChpc0tIVE1MIHx8IGlz
T3BlcmEpIHsKICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICB9Cn0KZnVuY3Rpb24g
dHlfbWFrZURhdGUod2hpY2gpIHsKICAgIGRfbWFrZWRhdGUgPSBuZXcgRGF0ZShuZXdZLCBuZXdN
LCB3aGljaCk7CiAgICBiX2RhdGUzMzEgPSBjaGVjazMzMShkX21ha2VkYXRlKTsKICAgIGlmICgo
ZmxnRG9yUiA9PSAicmV0dXJuX2RhdGUucG5nIiB8fCBmbGdEb3JSID09ICJSZXR1cm5fZGF0ZS5n
aWYiIHx8IGZsZ1JldE5hbWUgPT0gImZsaWdodFNlYXJjaC5yZXR1cm5EYXRlTUMuTU1ERFlZWVki
KSAmJiBmbGdEYXRlRGlzYWJsZSAhPSAiIikgewogICAgICAgIHZhciBmbGdEYXRlRGlzYWJsZURh
eSA9IGZsZ0RhdGVEaXNhYmxlLmdldERhdGUoKTsKICAgICAgICB2YXIgZmxnRGF0ZURpc2FibGVN
b250aCA9IGZsZ0RhdGVEaXNhYmxlLmdldE1vbnRoKCk7CiAgICAgICAgdmFyIGZsZ0RhdGVEaXNh
YmxlWWVhciA9IGZsZ0RhdGVEaXNhYmxlLmdldEZ1bGxZZWFyKCk7CiAgICAgICAgaWYgKChmbGdE
YXRlRGlzYWJsZURheSA+IHdoaWNoICYmIGZsZ0RhdGVEaXNhYmxlTW9udGggPT0gbmV3TSAmJiBm
bGdEYXRlRGlzYWJsZVllYXIgPT0gbmV3WSkgfHwgYl9kYXRlMzMxKSB7CiAgICAgICAgICAgIHNf
bWFrZURhdGUgPSAiPHRkIGNsYXNzPSdjYWxEYXRlT2ZmJyB3aWR0aD0nMTgnIGhlaWdodD0nMTYn
PiZuYnNwOyI7CiAgICAgICAgICAgIHNfbWFrZURhdGUgKz0gd2hpY2g7CiAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgaWYgKGRfbWFrZWZyb20gfHwgZF9tYWtldG8pIHsKICAgICAgICAgICAg
ICAgIGlmIChmbGdEb3JSID09ICJSZXR1cm5fZGF0ZS5naWYiIHx8IGZsZ0RvclIgPT0gInJldHVy
bl9kYXRlLnBuZyIgfHwgZmxnUmV0TmFtZSA9PSAiZmxpZ2h0U2VhcmNoLnJldHVybkRhdGVNQy5N
TUREWVlZWSIpIHsKICAgICAgICAgICAgICAgICAgICBkX21ha2Vmcm9tID0gZF9tYWtldG87CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZF9tYWtlZGF0ZS50b1N0cmluZygp
ID09IGRfbWFrZWZyb20udG9TdHJpbmcoKSkgewogICAgICAgICAgICAgICAgICAgIHNfbWFrZURh
dGUgPSAiPHRkIGNsYXNzPSdjYWxEYXRlU2VsJyB3aWR0aD0nMTgnIGhlaWdodD0nMTYnPiI7CiAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmIChkX21ha2VkYXRl
ID4gZF9tYWtlZnJvbSAmJiBkX21ha2VkYXRlIDwgZF9tYWtldG8gJiYgZF9tYWtlZnJvbSkgewog
ICAgICAgICAgICAgICAgICAgICAgICBzX21ha2VEYXRlID0gIjx0ZCBjbGFzcz0nY2FsRGF0ZU9m
Zicgd2lkdGg9JzE4JyBoZWlnaHQ9JzE2Jz4iOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIHNfbWFrZURhdGUgPSAiPHRkIGNsYXNzPSdjYWxEYXRl
JyB3aWR0aD0nMTgnIGhlaWdodD0nMTYnPiI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgc19tYWtlRGF0
ZSA9ICI8dGQgY2xhc3M9J2NhbERhdGUnIHdpZHRoPScxOCcgaGVpZ2h0PScxNic+IjsKICAgICAg
ICAgICAgfQogICAgICAgICAgICBpZiAoZF9tYWtlZGF0ZS50b1N0cmluZygpID09IGRfbWFrZWZy
b20udG9TdHJpbmcoKSkgewogICAgICAgICAgICAgICAgc19tYWtlRGF0ZSArPSAiPGEgaHJlZj0n
IycgaWQ9J2lkbWFrZV9EYXRlJyBvbmNsaWNrPSciICsgc19qc2NhbGwgKyAidHlfc2V0RGF0ZSgi
ICsgbmV3TSArICIsIiArIHdoaWNoICsgIix0aGlzLnBhcmVudE5vZGUsIiArIG5ld1kgKyAiKTty
ZXR1cm4gZmFsc2U7JyBzdHlsZT0nY29sb3I6I0ZGRkZGRjtURVhULURFQ09SQVRJT046IG5vbmU7
Jz4iOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgc19tYWtlRGF0ZSArPSAi
Jm5ic3A7PGEgaHJlZj0nIycgaWQ9J2lkbWFrZV9EYXRlMScgb25jbGljaz0nIiArIHNfanNjYWxs
ICsgInR5X3NldERhdGUoIiArIG5ld00gKyAiLCIgKyB3aGljaCArICIsdGhpcy5wYXJlbnROb2Rl
LCIgKyBuZXdZICsgIik7cmV0dXJuIGZhbHNlOycgY2xhc3M9J2NhbERhdGVBJz4iOwogICAgICAg
ICAgICB9CiAgICAgICAgICAgIHNfbWFrZURhdGUgKz0gd2hpY2g7CiAgICAgICAgICAgIHNfbWFr
ZURhdGUgKz0gIjwvYT4iOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKChjVCA+
IHdoaWNoICYmIGNNID09IG5ld00gJiYgY1kgPT0gbmV3WSkgfHwgYl9kYXRlMzMxKSB7CiAgICAg
ICAgICAgIHNfbWFrZURhdGUgPSAiPHRkIGNsYXNzPSdjYWxEYXRlT2ZmJyB3aWR0aD0nMTgnIGhl
aWdodD0nMTYnPiZuYnNwOyI7CiAgICAgICAgICAgIHNfbWFrZURhdGUgKz0gd2hpY2g7CiAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKGRfbWFrZWZyb20gfHwgZF9tYWtldG8pIHsKICAg
ICAgICAgICAgICAgIGlmIChmbGdEb3JSID09ICJSZXR1cm5fZGF0ZS5naWYiIHx8IGZsZ0RvclIg
PT0gInJldHVybl9kYXRlLnBuZyIgfHwgZmxnUmV0TmFtZSA9PSAiZmxpZ2h0U2VhcmNoLnJldHVy
bkRhdGVNQy5NTUREWVlZWSIpIHsKICAgICAgICAgICAgICAgICAgICBkX21ha2Vmcm9tID0gZF9t
YWtldG87CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZF9tYWtlZGF0ZS50
b1N0cmluZygpID09IGRfbWFrZWZyb20udG9TdHJpbmcoKSkgewogICAgICAgICAgICAgICAgICAg
IHNfbWFrZURhdGUgPSAiPHRkIGNsYXNzPSdjYWxEYXRlU2VsJyB3aWR0aD0nMTgnIGhlaWdodD0n
MTYnPiI7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmIChk
X21ha2VkYXRlID4gZF9tYWtlZnJvbSAmJiBkX21ha2VkYXRlIDwgZF9tYWtldG8gJiYgZF9tYWtl
ZnJvbSkgewogICAgICAgICAgICAgICAgICAgICAgICBzX21ha2VEYXRlID0gIjx0ZCBjbGFzcz0n
Y2FsRGF0ZU9mZicgd2lkdGg9JzE4JyBoZWlnaHQ9JzE2Jz4iOwogICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNfbWFrZURhdGUgPSAiPHRkIGNsYXNz
PSdjYWxEYXRlJyB3aWR0aD0nMTgnIGhlaWdodD0nMTYnPiI7CiAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
c19tYWtlRGF0ZSA9ICI8dGQgY2xhc3M9J2NhbERhdGUnIHdpZHRoPScxOCcgaGVpZ2h0PScxNic+
IjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZF9tYWtlZGF0ZS50b1N0cmluZygpID09
IGRfbWFrZWZyb20udG9TdHJpbmcoKSkgewogICAgICAgICAgICAgICAgc19tYWtlRGF0ZSArPSAi
PGEgaHJlZj0nIycgaWQ9J2lkbWFrZV9EYXRlMicgb25jbGljaz0nIiArIHNfanNjYWxsICsgInR5
X3NldERhdGUoIiArIG5ld00gKyAiLCIgKyB3aGljaCArICIsdGhpcy5wYXJlbnROb2RlLCIgKyBu
ZXdZICsgIik7cmV0dXJuIGZhbHNlOycgc3R5bGU9J2NvbG9yOiNGRkZGRkY7VEVYVC1ERUNPUkFU
SU9OOiBub25lOyc+IjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHNfbWFr
ZURhdGUgKz0gIiZuYnNwOzxhIGhyZWY9JyMnIGlkPSdpZG1ha2VfRGF0ZTMnIG9uY2xpY2s9JyIg
KyBzX2pzY2FsbCArICJ0eV9zZXREYXRlKCIgKyBuZXdNICsgIiwiICsgd2hpY2ggKyAiLHRoaXMu
cGFyZW50Tm9kZSwiICsgbmV3WSArICIpO3JldHVybiBmYWxzZTsnIGNsYXNzPSdjYWxEYXRlQSc+
IjsKICAgICAgICAgICAgfQogICAgICAgICAgICBzX21ha2VEYXRlICs9IHdoaWNoOwogICAgICAg
ICAgICBzX21ha2VEYXRlICs9ICI8L2E+IjsKICAgICAgICB9CiAgICB9CiAgICBzX21ha2VEYXRl
ICs9ICI8L3RkPiI7CiAgICByZXR1cm4gc19tYWtlRGF0ZTsKfQpmdW5jdGlvbiB0eV9tYWtldHIo
d2hhdCkgewogICAgc190ciA9ICI8dHI+IjsKICAgIHNfdHIgKz0gd2hhdDsKICAgIHNfdHIgKz0g
IjwvdHI+IjsKICAgIHJldHVybiBzX3RyOwp9CmZ1bmN0aW9uIHR5X2NoYW5nZU1vbnRocyh3aGlj
aCkgewogICAgY2Fsb3BlbiA9IDA7CiAgICBpX251bWNhbCA9IDA7CiAgICBvX2NhbGJvZHkuaW5u
ZXJIVE1MID0gIiI7CiAgICBpZiAod2hpY2ggPCAwKSB7CiAgICAgICAgd2hpY2ggPSAxMTsKICAg
ICAgICBuZXdZLS07CiAgICB9CiAgICBpZiAoY2FsVHlwZSA9PSAiaG9tZSIpIHsKICAgICAgICBt
YWtlQ2FsKHdoaWNoKTsKICAgIH0gZWxzZSB7CiAgICAgICAgdm1fbWFrZUNhbCh3aGljaCk7CiAg
ICB9CiAgICBzZXRUaW1lb3V0KCJjYWxvcGVuID0gMSIsIDEwMCk7Cn0KdmFyIG9fY2FsMSA9ICIi
LAogICAgb19jYWwyID0gIiI7CnZhciBjYWxCYXNlV2lkdGggPSAwOwppZiAoaXNQQ0lFID09IDEg
fHwgaXNTYWZhcmkpIHsKICAgIGNhbEJhc2VXaWR0aCA9ICIzNTgiOwp9IGVsc2UgewogICAgY2Fs
QmFzZVdpZHRoID0gIjM1NyI7Cn0KdmFyIHRhYmxlT3BlbjEgPSAiPHRyPjx0ZCBjb2xzcGFuPScz
JyBhbGlnbj0nY2VudGVyJyB2YWxpZ249J3RvcCc+PHRhYmxlIHdpZHRoPSczNTcnIGJvcmRlcj0n
MCcgY2VsbHBhZGRpbmc9JzAnIGNlbGxzcGFjaW5nPScwJz48dHI+PHRkIHdpZHRoPScxMycgcm93
c3Bhbj0nMicgYWxpZ249J2xlZnQnIHZhbGlnbj0ndG9wJyBiYWNrZ3JvdW5kPSdodHRwczovL3N0
YXRpYy52aXJnaW5hbWVyaWNhLmNvbS9pbWFnZXMvY2FsZW5kZXJfbHQucG5nJyBzdHlsZT0nYmFj
a2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXk7Jz48aW1nIHNyYz0naHR0cHM6Ly9zdGF0aWMudmlyZ2lu
YW1lcmljYS5jb20vaW1hZ2VzL3NwYWNlci5naWYnIHdpZHRoPScxMycgaGVpZ2h0PSc4JyAvPjwv
dGQ+PHRkIGhlaWdodD0nMycgYWxpZ249J2xlZnQnIHZhbGlnbj0ndG9wJyBiZ2NvbG9yPScjZmZm
ZmZmJyA+PGltZyBzcmM9J2h0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy9z
cGFjZXIuZ2lmJyB3aWR0aD0nMTUnIGhlaWdodD0nMycgLz48L3RkPjx0ZCB3aWR0aD0nMTQnIHJv
d3NwYW49JzInIGFsaWduPSdsZWZ0JyB2YWxpZ249J3RvcCcgYmFja2dyb3VuZD0naHR0cHM6Ly9z
dGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL2NhbGVuZGVyX3J0LnBuZycgc3R5bGU9J2Jh
Y2tncm91bmQtcmVwZWF0OnJlcGVhdC15Oyc+PGltZyBzcmM9J2h0dHBzOi8vc3RhdGljLnZpcmdp
bmFtZXJpY2EuY29tL2ltYWdlcy9zcGFjZXIuZ2lmJyB3aWR0aD0nMTQnIGhlaWdodD0nOCcgLz48
L3RkPjwvdHI+PHRyPjx0ZCBhbGlnbj0nbGVmdCcgdmFsaWduPSd0b3AnIGJnY29sb3I9JyNlNmU2
ZTYnPjx0YWJsZSB3aWR0aD0nMTAwJScgYm9yZGVyPScwJyBjZWxsc3BhY2luZz0nMCcgY2VsbHBh
ZGRpbmc9JzAnPjx0cj48dGQgd2lkdGg9JyIgKyBpbm5lckNhbFcgKyAiJyBhbGlnbj0nY2VudGVy
JyB2YWxpZ249J3RvcCcgYmdjb2xvcj0nI2U2ZTZlNic+IjsKdmFyIHRhYmxlQ2xvc2UxID0gIjwv
dGQ+PC90cj48L3RhYmxlPjwvdGQ+PC90cj48dHI+PHRkIHdpZHRoPSciICsgY2FsQmFzZVdpZHRo
ICsgIicgaGVpZ2h0PScxMCcgY29sc3Bhbj0nMycgYWxpZ249J2xlZnQnIHZhbGlnbj0ndG9wJz48
aW1nIHNyYz0naHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL2NhbGVuZGVy
X2Jhc2UucG5nJyB3aWR0aD0nIiArIGNhbEJhc2VXaWR0aCArICInIGhlaWdodD0nMTAnIC8+PC90
ZD48L3RyPjwvdGFibGU+IjsKdmFyIHRkRm9yM3JkVGFibGUgPSAiPC90ZD48dGQgd2lkdGg9Jzcn
IGhlaWdodD0nMTknIGFsaWduPSdsZWZ0JyB2YWxpZ249J3RvcCc+PGltZyBzcmM9J2h0dHBzOi8v
c3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy9zcGFjZXIuZ2lmJyB3aWR0aD0nNycgaGVp
Z2h0PSc5NicgLz48L3RkPjx0ZCB3aWR0aD0nIiArIGlubmVyQ2FsVyArICInIGFsaWduPSdsZWZ0
JyB2YWxpZ249J3RvcCcgPiI7CgpmdW5jdGlvbiB2bV9tYWtlQ2FsKHdoaWNoTW9udGgpIHsKICAg
IG9fY2FsbmV4dCA9ICIiOwogICAgYl9jYWxpbml0ID0gMTsKICAgIG9fY2FsID0gIiI7CiAgICBv
X2NhbHRyID0gIiI7CiAgICBvX2NhbHRkID0gIiI7CiAgICBuZXdNID0gd2hpY2hNb250aDsKICAg
IGlmIChuZXdNIDwgY00pIHsKICAgICAgICBuZXdZID0gbmV3WTsKICAgIH0KICAgIGlmIChuZXdZ
IDwgY1kpIHsKICAgICAgICBuZXdZID0gY1k7CiAgICB9CiAgICBpZiAobmV3TSA+PSAxMikgewog
ICAgICAgIG5ld00gPSB3aGljaE1vbnRoIC0gMTI7CiAgICAgICAgbmV3WSsrOwogICAgfQogICAg
aWYgKGlfbnVtY2FsID09IDApIHsKICAgICAgICBpX2ZpcnN0TW9udGggPSBuZXdNOwogICAgICAg
IHN3aXRjaCAoc19pbnB1dHR5cGUpIHsKICAgICAgICBjYXNlICJvYmplY3QiOgogICAgICAgICAg
ICBpX29maXJzdE1vbnRoID0gbmV3TTsKICAgICAgICAgICAgaV9vZmlyc3RZZWFyID0gbmV3WTsK
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgaV9zZmlyc3RN
b250aCA9IG5ld007CiAgICAgICAgICAgIGlfc2ZpcnN0WWVhciA9IG5ld1k7CiAgICAgICAgfQog
ICAgfQogICAgbmV3RHMgPSBkYXRlc0FycmF5W25ld01dOwogICAgaXNMZWFwID0gKG5ld1kgJSA0
ID09IDAgJiYgKG5ld1kgJSAxMDAgIT0gMCB8fCBuZXdZICUgNDAwID09IDApKSA/IDEgOiAwOwog
ICAgaWYgKG5ld00gPT0gMSkgewogICAgICAgIG5ld0RzID0gbmV3RHMgKyBpc0xlYXA7CiAgICB9
CiAgICBuZXdEID0gZmluZEZpcnN0RGF5KCk7CiAgICBjb3VudERheSA9IG5ld0Q7CiAgICBzX2Nh
bGNsYXNzID0gKGNhbERpcmVjdGlvbiA9PSAidmVydGljYWwiKSA/ICJjYWxUYWJsZUgiIDogImNh
bFRhYmxlSCI7CiAgICB2YXIgY2hhbmdlVERUT1RBQkxFVmFsdWUgPSAiIjsKICAgIG9fY2FsICs9
ICI8dGFibGUgbW9udGg9JyIgKyBuZXdNICsgIicgeWVhcj0nIiArIG5ld1kgKyAiJyB3aWR0aD0n
IiArIGlubmVyQ2FsVyArICInIGJvcmRlcj0nMCcgY2VsbHNwYWNpbmc9JzAnIGNlbGxwYWRkaW5n
PScwJyBzdHlsZT0nYm9yZGVyOjFweCBzb2xpZCAjZjdmN2Y3O2JhY2tncm91bmQtY29sb3I6I2Zm
ZmZmZjsnPiI7CiAgICBvX2NhbHRyICs9ICI8dHI+IjsKICAgIG9fY2FsdGQgKz0gIjx0ZCBoZWln
aHQ9JzIwJyBhbGlnbj0nY2VudGVyJyB2YWxpZ249J3RvcCcgY2xhc3M9J2NhbE1vbicgYmFja2dy
b3VuZD0naHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL21vbnRoX2JnLnBu
ZycgY29sc3Bhbj03PiI7CiAgICBjaGFuZ2VURFRPVEFCTEVWYWx1ZSA9IG1BcnJheVtuZXdNXTsK
ICAgIG9fY2FsdGQgKz0gIlJXVENNVCI7CiAgICBvX2NhbHRkICs9ICI8L3RkPiI7CiAgICBvX2Nh
bHRyICs9IG9fY2FsdGQ7CiAgICBvX2NhbHRyICs9ICI8L3RyPiI7CiAgICBvX2NhbCArPSBvX2Nh
bHRyOwogICAgb19jYWx0ZCA9ICIiOwogICAgb19jYWx0ZCArPSAiPHRkIGhlaWdodD0nMTQnIGFs
aWduPSdsZWZ0JyB2YWxpZ249J3RvcCcgY29sc3Bhbj03ID48aW1nIHNyYz0naHR0cHM6Ly9zdGF0
aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL2RheV9uYW1lLnBuZycgd2lkdGg9JyIgKyBpbm5l
ckNhbFcgKyAiJyBoZWlnaHQ9JzE0JyAvPjwvdGQ+IjsKICAgIG9fY2FsdGQgKz0gIjx0cj48dGQg
PjwvdGQ+PHRkIGNvbHNwYW49NT48aW1nIHNyYz0naHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmlj
YS5jb20vaW1hZ2VzL3NwYWNlci5naWYnPjwvdGQ+PHRkPjwvdGQ+IjsKICAgIG9fY2FsdHIgPSB0
eV9tYWtldHIob19jYWx0ZCk7CiAgICBvX2NhbCArPSBvX2NhbHRyOwogICAgb19jYWx0ZCA9ICIi
OwogICAgaV9jYWxSb3dzID0gMDsKICAgIGZvciAoZCA9IDE7IGQgPD0gbmV3RHM7IGQrKykgewog
ICAgICAgIGlmIChkID09IDEpIHsKICAgICAgICAgICAgZm9yIChiZCA9IDA7IGJkIDwgbmV3RDsg
YmQrKykgewogICAgICAgICAgICAgICAgb19jYWx0ZCArPSAiPHRkIHdpZHRoPScxOCcgaGVpZ2h0
PScxNicgYWxpZ249J2xlZnQnIHZhbGlnbj0ndG9wJz48aW1nIHNyYz0naHR0cHM6Ly9zdGF0aWMu
dmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL3NwYWNlci5naWYnIHdpZHRoPScxOCcgaGVpZ2h0PScx
NicgLz48L3RkPiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgb19jYWx0ZCArPSB0
eV9tYWtlRGF0ZShkKTsKICAgICAgICBjb3VudERheSsrOwogICAgICAgIGlmIChjb3VudERheSA9
PSA3KSB7CiAgICAgICAgICAgIGNvdW50RGF5ID0gMDsKICAgICAgICAgICAgb19jYWx0ciA9IHR5
X21ha2V0cihvX2NhbHRkKTsKICAgICAgICAgICAgb19jYWwgKz0gb19jYWx0cjsKICAgICAgICAg
ICAgb19jYWx0ZCA9ICIiOwogICAgICAgICAgICBpX2NhbFJvd3MrKzsKICAgICAgICB9CiAgICAg
ICAgaWYgKGQgPT0gbmV3RHMgJiYgY291bnREYXkgIT0gMCkgewogICAgICAgICAgICBmb3IgKGJk
ID0gY291bnREYXk7IGJkIDwgNzsgYmQrKykgewogICAgICAgICAgICAgICAgb19jYWx0ZCArPSAi
PHRkIHdpZHRoPScxOCcgaGVpZ2h0PScxNicgYWxpZ249J2xlZnQnIHZhbGlnbj0ndG9wJz48aW1n
IHNyYz0naHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL3NwYWNlci5naWYn
IHdpZHRoPScxOCcgaGVpZ2h0PScxNicgLz48L3RkPiI7CiAgICAgICAgICAgIH0KICAgICAgICAg
ICAgb19jYWx0ciA9IHR5X21ha2V0cihvX2NhbHRkKTsKICAgICAgICAgICAgb19jYWwgKz0gb19j
YWx0cjsKICAgICAgICAgICAgb19jYWx0ZCA9ICIiOwogICAgICAgICAgICBpX2NhbFJvd3MrKzsK
ICAgICAgICB9CiAgICB9CiAgICBpZiAoaV9jYWxSb3dzIDwgNikgewogICAgICAgIG9fY2FsdGQg
PSAiIjsKICAgICAgICBmb3IgKGJkID0gMDsgYmQgPCA3OyBiZCsrKSB7CiAgICAgICAgICAgIG9f
Y2FsdGQgKz0gIjx0ZCB3aWR0aD0nMTgnIGhlaWdodD0nMTYnIGFsaWduPSdsZWZ0JyB2YWxpZ249
J3RvcCc+PGltZyBzcmM9J2h0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy9z
cGFjZXIuZ2lmJyB3aWR0aD0nMTgnIGhlaWdodD0nMTYnIC8+PC90ZD4iOwogICAgICAgIH0KICAg
ICAgICBvX2NhbHRyID0gdHlfbWFrZXRyKG9fY2FsdGQpOwogICAgICAgIG9fY2FsICs9IG9fY2Fs
dHI7CiAgICB9CiAgICBvX2NhbCArPSAiPC90YWJsZT4iOwogICAgaWYgKGlfbnVtY2FsID09IDAp
IHsKICAgICAgICBpZiAobmV3TSA9PSBjTSAmJiBuZXdZID09IGNZKSB7CiAgICAgICAgICAgIG9f
Y2FsMSA9ICIiOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIG9fY2FsMSA9ICI8YSBocmVm
PScjJyBpZD0naWRjYWwxJyBvbmNsaWNrPSciICsgc19qc2NhbGwgKyAidHlfY2hhbmdlTW9udGhz
KCIgKyBpX2ZpcnN0TW9udGggKyAiLTEpOyIgKyBzX2pzY2FsbCArICJwcmV2ZW50Q2xvc2UoZXZl
bnQpO3JldHVybiBmYWxzZTsnPjxpbWcgc3JjPSdodHRwczovL3N0YXRpYy52aXJnaW5hbWVyaWNh
LmNvbS9pbWFnZXMvY2FsZW5kZXJfcHJldi5wbmcnIGJvcmRlcj0nMCcgLz48L2E+IjsKICAgICAg
ICB9CiAgICAgICAgb19jYWxwcmV2ID0gJzxkaXYgc3R5bGU9ImZsb2F0OmxlZnQ7Ij4nICsgb19j
YWwxICsgIjwvZGl2PiI7CiAgICB9IGVsc2Uge30KICAgIG9fY2FsYm9keS5pbm5lckhUTUwgKz0g
b19jYWw7CiAgICBpX251bWNhbCsrOwogICAgaWYgKGlfbnVtY2FsID09IG51bUNhbGVuZGFycyAm
JiAhYl9kYXRlMzMxKSB7CiAgICAgICAgb19jYWwyID0gIjxhIGhyZWY9JyMnIGlkPSdpZGNhbDIn
IG9uY2xpY2s9JyIgKyBzX2pzY2FsbCArICJ0eV9jaGFuZ2VNb250aHMoIiArIGlfZmlyc3RNb250
aCArICIrMSk7IiArIHNfanNjYWxsICsgInByZXZlbnRDbG9zZShldmVudCk7cmV0dXJuIGZhbHNl
Oyc+PGltZyBzcmM9J2h0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy9jYWxl
bmRlcl9ueHQucG5nJyBib3JkZXI9JzAnIC8+PC9hPiI7CiAgICB9IGVsc2UgewogICAgICAgIG9f
Y2FsMiA9ICIiOwogICAgfQogICAgb19jYWxuZXh0ID0gJzxkaXYgc3R5bGU9ImZsb2F0OnJpZ2h0
OyI+JyArIG9fY2FsMiArICI8L2Rpdj4iOwogICAgdmFyIG1vbnRodGFibGUxID0gIjx0YWJsZSB3
aWR0aD0nMTUwJyBib3JkZXI9JzAnIGNlbGxzcGFjaW5nPScwJyBjZWxscGFkZGluZz0nMCc+PHRy
Pjx0ZCBhbGlnbj0nbGVmdCcgdmFsaWduPSd0b3AnIHdpZHRoPSc1JyBoZWlnaHQ9JzE5Jz48aW1n
IHNyYz0naHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL3NwYWNlci5naWYn
IHdpZHRoPSc1JyBoZWlnaHQ9JzE5JyBib3JkZXI9JzAnIC8+PC90ZD48dGQgd2lkdGg9JzE2JyBh
bGlnbj0nbGVmdCcgdmFsaWduPSd0b3AnPiI7CiAgICB2YXIgbW9udGh0YWJsZTIgPSAiPC90ZD48
dGQgd2lkdGg9JzUnIGFsaWduPSdjZW50ZXInIHZhbGlnbj0nbWlkZGxlJyBjbGFzcz0nc3R5bGU5
Jz48aW1nIHNyYz0naHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL3NwYWNl
ci5naWYnIHdpZHRoPSc1JyBoZWlnaHQ9JzE5JyBib3JkZXI9JzAnIC8+PC90ZD48L3RyPjwvdGFi
bGU+IjsKICAgIGlmIChpX251bWNhbCA8IG51bUNhbGVuZGFycykgewogICAgICAgIGNoYW5nZVRE
VE9UQUJMRVZhbHVlID0gbW9udGh0YWJsZTEgKyAiPC90ZD48dGQgYWxpZ249J2NlbnRlcicgdmFs
aWduPSdtaWRkbGUnIGNsYXNzPSdjYWxNb250aFRpdGxlJz4iICsgY2hhbmdlVERUT1RBQkxFVmFs
dWUgKyAiPC90ZD48dGQgd2lkdGg9JzE2JyBhbGlnbj0nY2VudGVyJyB2YWxpZ249J21pZGRsZScg
Y2xhc3M9J3N0eWxlOSc+Jm5ic3A7IiArIG1vbnRodGFibGUyOwogICAgICAgIG9fY2FsMSA9IG9f
Y2FsYm9keS5pbm5lckhUTUw7CiAgICAgICAgb19jYWxib2R5LmlubmVySFRNTCA9ICIiOwogICAg
ICAgIG9fY2FsMSA9IG9fY2FsMS5yZXBsYWNlKCJSV1RDTVQiLCBjaGFuZ2VURFRPVEFCTEVWYWx1
ZSk7CiAgICB9IGVsc2UgewogICAgICAgIGNoYW5nZVREVE9UQUJMRVZhbHVlID0gbW9udGh0YWJs
ZTEgKyAiJm5ic3A7PC90ZD48dGQgYWxpZ249J2NlbnRlcicgdmFsaWduPSdtaWRkbGUnIGNsYXNz
PSdjYWxNb250aFRpdGxlJz4iICsgY2hhbmdlVERUT1RBQkxFVmFsdWUgKyAiPC90ZD48dGQgd2lk
dGg9JzE2JyBhbGlnbj0nY2VudGVyJyB2YWxpZ249J21pZGRsZScgY2xhc3M9J3N0eWxlOSc+IiAr
IG1vbnRodGFibGUyOwogICAgICAgIG9fY2FsMiA9IG9fY2FsYm9keS5pbm5lckhUTUw7CiAgICAg
ICAgb19jYWwyID0gb19jYWwyICsgIjwvdGQ+PC90cj48L3RhYmxlPiI7CiAgICAgICAgb19jYWxi
b2R5LmlubmVySFRNTCA9ICIiOwogICAgICAgIG9fY2FsMiA9IG9fY2FsMi5yZXBsYWNlKCJSV1RD
TVQiLCBjaGFuZ2VURFRPVEFCTEVWYWx1ZSk7CiAgICB9CiAgICBpZiAoaV9udW1jYWwgPCBudW1D
YWxlbmRhcnMpIHsKICAgICAgICB2bV9tYWtlQ2FsKG5ld00gKyAxKTsKICAgICAgICB6enp6Kys7
CiAgICB9IGVsc2UgewogICAgICAgIGlmIChpX2ZpcnN0TW9udGggPiBuZXdNKSB7CiAgICAgICAg
ICAgIG5ld1ktLTsKICAgICAgICB9CiAgICB9CiAgICBpZiAoenp6eiAlIDIgPT0gMCkgewogICAg
ICAgIGlmIChpc1BDSUUgPT0gMSkgewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY2FsZnJhbWUiKS5zdHlsZS5oZWlnaHQgPSAiMTkycHgiOwogICAgICAgIH0KICAgICAgICBv
X2NhbGJvZHkuaW5uZXJIVE1MID0gc19jbG9zZWNhbCArIHRhYmxlT3BlbjEgKyBvX2NhbDEgKyB0
ZEZvcjNyZFRhYmxlICsgb19jYWwyICsgb19jYWxwcmV2ICsgb19jYWxuZXh0ICsgdGFibGVDbG9z
ZTE7CiAgICAgICAgenp6eiA9IDE7CiAgICB9Cn0KdmFyIHp6enogPSAxOwoKZnVuY3Rpb24gdHlf
c2V0RGF0ZSh3aGF0TW9udGgsIHdoYXREYXRlLCB3aGF0VEQsIHdoYXRZZWFyKSB7CiAgICBvX2N1
cnJlbnREYXRlID0gd2hhdFREOwogICAgb19jdXJyZW50RGF0ZS5jbGFzc05hbWUgPSAiY2FsRGF0
ZVNlbCI7CiAgICBpZiAodHlwZW9mIChvX2lucHV0KSA9PSAib2JqZWN0IikgewogICAgICAgIG9f
aW5wdXQudmFsdWUgPSAoc19sYW5nID09ICJ1cyIpID8gKHdoYXRNb250aCArIDEpICsgIi8iICsg
d2hhdERhdGUgKyAiLyIgKyB3aGF0WWVhciA6IHdoYXREYXRlICsgIi8iICsgKHdoYXRNb250aCAr
IDEpICsgIi8iICsgd2hhdFllYXI7CiAgICB9IGVsc2UgewogICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKGFfdl9pbnB1dFswXSkuc2VsZWN0ZWRJbmRleCA9IHdoYXRNb250aDsKICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhX3ZfaW5wdXRbMV0pLnNlbGVjdGVkSW5kZXggPSB3
aGF0RGF0ZSAtIDE7CiAgICB9CiAgICBjbG9zZUNhbCgpOwp9CmZ1bmN0aW9uIGhpZGVDYWxlbmRh
cigpIHsKICAgIG9fY2FsZGl2LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICBpZiAob19wYXJl
bnQgJiYgY2FsVHlwZSAhPSAiaG9tZSIpIHsKICAgICAgICBvX3BhcmVudC5jbGFzc05hbWUgPSAi
Y2Jyb3ciOwogICAgfQp9CmZ1bmN0aW9uIHNwbGl0RGF0ZShzX2lucHV0LCBzX21vZGUpIHsKICAg
IHRoaXMuZGVsaW1pdG9yID0gKHNfaW5wdXQuaW5kZXhPZigiLyIpID4gLTEpID8gIi8iIDogKHNf
aW5wdXQuaW5kZXhPZigiLiIpID4gLTEpID8gIi4iIDogKHNfaW5wdXQuaW5kZXhPZigiLSIpID4g
LTEpID8gIi0iIDogKHNfaW5wdXQuaW5kZXhPZigiLCIpID4gLTEpID8gIiwiIDogIi8iOwogICAg
YV9pbnB1dCA9IHNfaW5wdXQuc3BsaXQodGhpcy5kZWxpbWl0b3IpOwogICAgdGhpcy5kYXRlID0g
LTE7CiAgICB0aGlzLm1vbnRoID0gLTE7CiAgICB0aGlzLnllYXIgPSAtMTsKICAgIGlmIChhX2lu
cHV0Lmxlbmd0aCA9PSAzICYmICFpc05hTihhX2lucHV0WzBdKSAmJiAhaXNOYU4oYV9pbnB1dFsx
XSkgJiYgIWlzTmFOKGFfaW5wdXRbMl0pKSB7CiAgICAgICAgdGhpcy5tb250aCA9IChzX21vZGUg
PT0gInVzIikgPyBwYXJzZUludChhX2lucHV0WzBdLCAxMCkgLSAxIDogcGFyc2VJbnQoYV9pbnB1
dFsxXSwgMTApIC0gMTsKICAgICAgICB0aGlzLmRhdGUgPSAoc19tb2RlID09ICJ1cyIpID8gcGFy
c2VJbnQoYV9pbnB1dFsxXSwgMTApIDogcGFyc2VJbnQoYV9pbnB1dFswXSwgMTApOwogICAgICAg
IHRoaXMueWVhciA9IGFfaW5wdXRbMl07CiAgICAgICAgaWYgKHRoaXMubW9udGggPiAxMSB8fCB0
aGlzLm1vbnRoIDwgMCkgewogICAgICAgICAgICB0aGlzLm1vbnRoID0gLTE7CiAgICAgICAgfQog
ICAgICAgIGlmICh0aGlzLmRhdGUgPiAzMSB8fCB0aGlzLm1vbnRoIDwgMCkgewogICAgICAgICAg
ICB0aGlzLmRhdGUgPSAtMTsKICAgICAgICB9CiAgICAgICAgaV95cmxlbmd0aCA9IHRoaXMueWVh
ci50b1N0cmluZygpLmxlbmd0aDsKICAgICAgICBpZiAoaV95cmxlbmd0aCA9PSAyKSB7CiAgICAg
ICAgICAgIHRoaXMueWVhciA9ICIyMCIgKyB0aGlzLnllYXI7CiAgICAgICAgfQogICAgICAgIGlm
IChpX3lybGVuZ3RoIDwgMSB8fCBpX3lybGVuZ3RoID09IDMgfHwgdGhpcy55ZWFyIDwgY1kpIHsK
ICAgICAgICAgICAgdGhpcy55ZWFyID0gLTE7CiAgICAgICAgfQogICAgfQp9CnZhciBvX2NhbGRp
diA9IDA7CnZhciB0X2NhbGNsb3NlciA9IG51bGw7CgpmdW5jdGlvbiBidWlsZERhdGUoc19tb250
aGRhdGUpIHsKICAgIGFfbW9udGhkYXRlID0gc19tb250aGRhdGUuc3BsaXQoInwiKTsKICAgIGJk
X29Nb250aCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFfbW9udGhkYXRlWzBdKTsKICAgIGJk
X29EYXRlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYV9tb250aGRhdGVbMV0pOwogICAgaV9t
b250aCA9IGJkX29Nb250aC5zZWxlY3RlZEluZGV4ICsgMTsKICAgIGlfZGF0ZSA9IGJkX29EYXRl
LnNlbGVjdGVkSW5kZXggKyAxOwogICAgc19kYXRlID0gIiI7CiAgICBzX2RhdGUgPSBpX21vbnRo
ICsgIi8iICsgaV9kYXRlICsgIi8iOwogICAgc19kYXRlICs9IChpX21vbnRoIC0gMSA8IGNNKSA/
IGNZICsgMSA6IGNZOwogICAgcmV0dXJuIHNfZGF0ZTsKfQp2YXIgc19sYXN0aW5wdXR0eXBlID0g
bnVsbDsKCmZ1bmN0aW9uIG1ha2VDYWxlbmRhcih2X2lucHV0LCBzX2Zyb20sIHNfdG8sIHNfbW9k
ZSkgewogICAgb19pbnB1dCA9IHZfaW5wdXQ7CiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoc19mcm9tKS52YWx1ZSA9PSAiIiB8fCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzX2Zyb20p
LnZhbHVlID09ICJtbS9kZC95eXl5IikgewogICAgICAgIGNhbGxfZnJvbV9kYXRlX21vbnRoID0g
bmV3IERhdGUoKS5nZXRNb250aCgpICsgMTsKICAgICAgICBjYWxsX2Zyb21fZGF0ZV9kYXRlID0g
bmV3IERhdGUoKS5nZXREYXRlKCk7CiAgICAgICAgY2FsbF9mcm9tX2RhdGVfeWVhciA9IG5ldyBE
YXRlKCkuZ2V0RnVsbFllYXIoKTsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzX2Zy
b20pLnZhbHVlID0gY2FsbF9mcm9tX2RhdGVfbW9udGggKyAiLyIgKyBjYWxsX2Zyb21fZGF0ZV9k
YXRlICsgIi8iICsgY2FsbF9mcm9tX2RhdGVfeWVhcjsKICAgIH0KICAgIHZhciBjYWxDU1MgPSBu
dWxsOwogICAgaWYgKGNhbFR5cGUgPT0gImhvbWUiKSB7CiAgICAgICAgY2FsQ1NTID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNzc0lkIik7CiAgICB9IGVsc2UgewogICAgICAgIGNhbENTUyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYWxlbmRhcmNzcyIpOwogICAgfQogICAgaWYgKGlz
UENJRSA9PSAxKSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbGJveCIpLmlu
bmVySFRNTCA9ICc8aWZyYW1lIGlkPSJjYWxmcmFtZSIgc3JjPSJqYXZhc2NyaXB0OlwnY2FsZW5k
YXJcJyIgc2Nyb2xsaW5nPSJubyIgbWFyZ2luaGVpZ2h0PSIwIiBtYXJnaW53aWR0aD0iMCIgZnJh
bWVib3JkZXI9IjAiIHNyYz0iaHRtbC9TU0xJZnJhbWVGaXhlZC5odG1sIiA+PC9pZnJhbWU+JzsK
ICAgICAgICBzX2llY2FsY3NzID0gIjxsaW5rIHJlbD0nU1RZTEVTSEVFVCcgdHlwZT0ndGV4dC9j
c3MnIGhyZWY9JyIgKyBjYWxDU1MuaHJlZiArICInIC8+IjsKICAgICAgICBvX2NhbGlmcmFtZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYWxmcmFtZSIpOwogICAgICAgIGNhbGZyYW1lLmRv
Y3VtZW50Lm9wZW4oKTsKICAgICAgICBjYWxmcmFtZS5kb2N1bWVudC53cml0ZSgiPGh0bWw+PGhl
YWQ+IiArIHNfaWVjYWxjc3MgKyAiPC9oZWFkPjxib2R5IGlkPSdjYWxib3gnIGNsYXNzPSdjYWxl
bmRhcic+PC9ib2R5PjwvaHRtbD4iKTsKICAgICAgICBjYWxmcmFtZS5kb2N1bWVudC5jbG9zZSgp
OwogICAgfQogICAgaV9udW1jYWwgPSAwOwogICAgaWYgKGlzUENJRSkgewogICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjYWxmcmFtZSIpLmNsYXNzTmFtZSA9ICJjYWxmcmFtZSI7CiAg
ICB9CiAgICBpZiAoY2FsVHlwZSA9PSAiaG9tZSIpIHsKICAgICAgICBvX2NhbGJvZHkgPSAoaXNQ
Q0lFKSA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYWxib3giKSA6IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjYWxib3giKTsKICAgIH0gZWxzZSB7CiAgICAgICAgb19jYWxib2R5ID0gKGlz
UENJRSkgPyBjYWxmcmFtZS5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FsYm94IikgOiBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2FsYm94Iik7CiAgICB9CiAgICBvX2NhbGJvZHkuaW5uZXJI
VE1MID0gIiI7CiAgICBvX3VkYXRlID0gKHR5cGVvZiAob19pbnB1dCkgPT0gIm9iamVjdCIpID8g
bmV3IHNwbGl0RGF0ZShvX2lucHV0LnZhbHVlLCAidXMiKSA6IG5ldyBzcGxpdERhdGUoYnVpbGRE
YXRlKG9faW5wdXQpLCAidXMiKTsKICAgIGFfZnJvbSA9IHNfZnJvbS5zcGxpdCgifCIpOwogICAg
dl9mcm9tID0gKGFfZnJvbS5sZW5ndGggPT0gMSkgPyBuZXcgc3BsaXREYXRlKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHNfZnJvbSkudmFsdWUsIHNfbW9kZSkgOiBuZXcgc3BsaXREYXRlKGJ1aWxk
RGF0ZShzX2Zyb20pLCBzX21vZGUpOwogICAgYV90byA9IHNfdG8uc3BsaXQoInwiKTsKICAgIHZf
dG8gPSAoYV90by5sZW5ndGggPT0gMikgPyBuZXcgc3BsaXREYXRlKGJ1aWxkRGF0ZShzX3RvKSwg
c19tb2RlKSA6IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzX3RvKSkgPyBuZXcgc3BsaXREYXRl
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNfdG8pLnZhbHVlLCBzX21vZGUpIDogbmV3IHNwbGl0
RGF0ZSgiIiwgc19tb2RlKTsKICAgIGRfbWFrZWZyb20gPSAodl9mcm9tLm1vbnRoICE9IC0xKSA/
IG5ldyBEYXRlKHZfZnJvbS55ZWFyLCB2X2Zyb20ubW9udGgsIHZfZnJvbS5kYXRlKSA6IDA7CiAg
ICBkX21ha2V0byA9ICh2X3RvLm1vbnRoICE9IC0xKSA/IG5ldyBEYXRlKHZfdG8ueWVhciwgdl90
by5tb250aCwgdl90by5kYXRlKSA6IDA7CiAgICBzd2l0Y2ggKGJfY2FsaW5pdCkgewogICAgY2Fz
ZSAwOgogICAgICAgIGlmIChvX3VkYXRlLm1vbnRoICE9IC0xICYmIG9fdWRhdGUueWVhciAhPSAt
MSAmJiBvX3VkYXRlLmRhdGUgIT0gLTEpIHsKICAgICAgICAgICAgbmV3WSA9IG9fdWRhdGUueWVh
cjsKICAgICAgICAgICAgbmV3TSA9IG9fdWRhdGUubW9udGg7CiAgICAgICAgICAgIG5ld0QgPSBv
X3VkYXRlLmRhdGU7CiAgICAgICAgICAgIGlmIChjYWxUeXBlID09ICJob21lIikgewogICAgICAg
ICAgICAgICAgbWFrZUNhbChvX3VkYXRlLm1vbnRoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgIHZtX21ha2VDYWwob191ZGF0ZS5tb250aCk7CiAgICAgICAgICAgIH0KICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAob191ZGF0ZSAhPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZChzX2Zyb20pICYmIGRfbWFrZWZyb20pIHsKICAgICAgICAgICAgICAgIG5ld1kgPSB2
X2Zyb20ueWVhcjsKICAgICAgICAgICAgICAgIG5ld00gPSB2X2Zyb20ubW9udGg7CiAgICAgICAg
ICAgICAgICBuZXdEID0gdl9mcm9tLmRhdGU7CiAgICAgICAgICAgICAgICBpZiAoY2FsVHlwZSA9
PSAiaG9tZSIpIHsKICAgICAgICAgICAgICAgICAgICBtYWtlQ2FsKHZfZnJvbS5tb250aCk7CiAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHZtX21ha2VDYWwodl9m
cm9tLm1vbnRoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgIGlmIChvX3VkYXRlICE9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNfdG8pICYm
IGRfbWFrZXRvKSB7CiAgICAgICAgICAgICAgICAgICAgbmV3WSA9IHZfdG8ueWVhcjsKICAgICAg
ICAgICAgICAgICAgICBuZXdNID0gdl90by5tb250aDsKICAgICAgICAgICAgICAgICAgICBuZXdE
ID0gdl90by5kYXRlOwogICAgICAgICAgICAgICAgICAgIGlmIChjYWxUeXBlID09ICJob21lIikg
ewogICAgICAgICAgICAgICAgICAgICAgICBtYWtlQ2FsKHZfdG8ubW9udGgpOwogICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZtX21ha2VDYWwodl90
by5tb250aCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICBuZXdZID0gY1k7CiAgICAgICAgICAgICAgICAgICAgbmV3TSA9
IGNNOwogICAgICAgICAgICAgICAgICAgIG5ld0QgPSBjRDsKICAgICAgICAgICAgICAgICAgICBp
ZiAoY2FsVHlwZSA9PSAiaG9tZSIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWFrZUNhbChj
TSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg
dm1fbWFrZUNhbChjTSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGJyZWFrOwogICAgZGVmYXVsdDoKICAgICAg
ICBzd2l0Y2ggKHNfaW5wdXR0eXBlKSB7CiAgICAgICAgY2FzZSAib2JqZWN0IjoKICAgICAgICAg
ICAgbmV3TSA9IGlfb2ZpcnN0TW9udGg7CiAgICAgICAgICAgIG5ld1kgPSBpX29maXJzdFllYXI7
CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIG5ld00gPSBp
X3NmaXJzdE1vbnRoOwogICAgICAgICAgICBuZXdZID0gaV9zZmlyc3RZZWFyOwogICAgICAgIH0K
ICAgICAgICBpZiAoY2FsVHlwZSA9PSAiaG9tZSIpIHsKICAgICAgICAgICAgbWFrZUNhbChuZXdN
KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB2bV9tYWtlQ2FsKG5ld00pOwogICAgICAg
IH0KICAgIH0KICAgIHNfbGFzdGlucHV0dHlwZSA9IHR5cGVvZiAob19pbnB1dCk7Cn0KdmFyIHAs
IEVYMSwgRVgyLCBFWTEsIEVZMjsKCmZ1bmN0aW9uIG9wZW5DYWwodl9pbnB1dCwgc19mcm9tLCBz
X3RvLCBzX2NhbCwgc19wYXJlbnQsIHNfbW9kZSwgc19jYWxkaXIsIHBvczEsIHBvczIsIGltYWdl
TmFtZSkgewogICAgZmxnRG9yUiA9IGltYWdlTmFtZTsKICAgIGZsZ1JldE5hbWUgPSBzX2Zyb207
CiAgICB2YXIgcmV0TG9jYWxWYXIgPSBzX2Zyb207CiAgICB2YXIgZHBEdFN0ciA9ICIiOwogICAg
Y00gPSB0b2RheS5nZXRNb250aCgpOwogICAgY1kgPSB0b2RheS5nZXRGdWxsWWVhcigpOwogICAg
aWYgKGRvY3VtZW50LmZsaWdodFNlYXJjaFJURm9ybSkgewogICAgICAgIGZvciAoaSA9IDA7IGkg
PCBkb2N1bWVudC5mbGlnaHRTZWFyY2hSVEZvcm0uZWxlbWVudHMubGVuZ3RoOyBpKyspIHsKICAg
ICAgICAgICAgaWYgKGRvY3VtZW50LmZsaWdodFNlYXJjaFJURm9ybS5lbGVtZW50c1tpXS5uYW1l
ID09ICJmbGlnaHRTZWFyY2guZGVwRGF0ZS5NTUREWVlZWSIpIHsKICAgICAgICAgICAgICAgIGRw
RHRTdHIgPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hSVEZvcm0uZWxlbWVudHNbaV0udmFsdWU7CiAg
ICAgICAgICAgIH0KICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIGlmIChkb2N1bWVudC5m
bGlnaHRTZWFyY2hGb3JtKSB7CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBkb2N1bWVudC5m
bGlnaHRTZWFyY2hGb3JtLmVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBp
ZiAoZG9jdW1lbnQuZmxpZ2h0U2VhcmNoRm9ybS5lbGVtZW50c1tpXS5uYW1lID09ICJmbGlnaHRT
ZWFyY2guZGVwRGF0ZS5NTUREWVlZWSIpIHsKICAgICAgICAgICAgICAgICAgICBkcER0U3RyID0g
ZG9jdW1lbnQuZmxpZ2h0U2VhcmNoRm9ybS5lbGVtZW50c1tpXS52YWx1ZTsKICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGlmIChpbWFnZU5hbWUgPT0g
IlJldHVybl9kYXRlLnBuZyIgfHwgKHJldExvY2FsVmFyID09ICJmbGlnaHRTZWFyY2gucmV0dXJu
RGF0ZU1DLk1NRERZWVlZIikgfHwgaW1hZ2VOYW1lID09ICJyZXR1cm5fZGF0ZS5wbmciKSB7CiAg
ICAgICAgaWYgKGRwRHRTdHIgPT0gIiIgfHwgZHBEdFN0ciA9PSAibW0vZGQveXl5eSIpIHsKICAg
ICAgICAgICAgaV9vZmlyc3RNb250aCA9IG5ldyBEYXRlKCkuZ2V0TW9udGgoKTsKICAgICAgICAg
ICAgZmxnRGF0ZURpc2FibGUgPSBuZXcgRGF0ZSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgIGZsZ0RhdGVEaXNhYmxlID0gbmV3IERhdGUoZHBEdFN0cik7CiAgICAgICAgICAgIGlfb2Zp
cnN0TW9udGggPSBuZXcgRGF0ZShkcER0U3RyKS5nZXRNb250aCgpOwogICAgICAgICAgICBjTSA9
IGlfb2ZpcnN0TW9udGg7CiAgICAgICAgICAgIGNZID0gZmxnRGF0ZURpc2FibGUuZ2V0RnVsbFll
YXIoKTsKICAgICAgICB9CiAgICB9CiAgICBzX2Nsb3NlY2FsID0gIjx0YWJsZSBib3JkZXI9JzAn
IGNlbGxwYWRkaW5nPScwJyBjZWxsc3BhY2luZz0nMCc+PHRyPjx0ZCB3aWR0aD0nMjgwJyBoZWln
aHQ9JzIyJyBhbGlnbj0nbGVmdCcgdmFsaWduPSd0b3AnID48aW1nIHNyYz0naHR0cHM6Ly9zdGF0
aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzLyIgKyBpbWFnZU5hbWUgKyAiJyAvPjwvdGQ+PHRk
IGFsaWduPSdyaWdodCcgdmFsaWduPSd0b3AnIHN0eWxlPSdiYWNrZ3JvdW5kOnVybChodHRwczov
L3N0YXRpYy52aXJnaW5hbWVyaWNhLmNvbS9pbWFnZXMvY2FsLXRvcC1iZy5wbmcpIHJlcGVhdC14
OycgPjxhIGhyZWY9JyMnIGlkPSdpZGNsb3NlJyBvbmNsaWNrPSciICsgc19qc2NhbGwgKyAiY2xv
c2VDYWwoKTtyZXR1cm4gZmFsc2U7Jz48aW1nIHNyYz0naHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1l
cmljYS5jb20vaW1hZ2VzL3ZpZXdfY3Jvc3NfYnQucG5nJyBib3JkZXI9JzAnLz48L2E+PC90ZD48
dGQgd2lkdGg9JzE0JyBhbGlnbj0nbGVmdCcgdmFsaWduPSd0b3AnID48aW1nIHNyYz0naHR0cHM6
Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL2RlcGFydF9kYXRlX3J0LnBuZycgd2lk
dGg9JzE0JyBoZWlnaHQ9JzMxJyAvPjwvdGQ+PC90cj4iOwogICAgRmllbGRDbGlja2VkID0gdl9p
bnB1dC5uYW1lOwogICAgZGlzcGxheUltYWdlID0gaW1hZ2VOYW1lOwogICAgaWYgKG9fcGFyZW50
KSB7CiAgICAgICAgb19wYXJlbnQuY2xhc3NOYW1lID0gImNicm93IjsKICAgIH0KICAgIGNsZWFy
VGltZW91dCh0X2NhbGNsb3Nlcik7CiAgICBzX2lucHV0dHlwZSA9IHR5cGVvZiAodl9pbnB1dCk7
CiAgICBhX3ZfaW5wdXQgPSBudWxsOwogICAgY2Fsb3BlbiA9IDA7CiAgICBvX2NhbGRpdiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHNfY2FsKTsKICAgIG9fY2FsZGl2LnN0eWxlLmRpc3BsYXkg
PSAiYmxvY2siOwogICAgb19jYWxkaXYuY2xhc3NOYW1lID0gImNhbGJveG9uIjsKICAgIG1ha2VD
YWxlbmRhcih2X2lucHV0LCBzX2Zyb20sIHNfdG8sIHNfbW9kZSk7CiAgICBvX2lucHV0cmlnaHQg
PSB2X2lucHV0OwogICAgb19wYXJlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzX3BhcmVu
dCk7CiAgICBvX2NhbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNfY2FsKTsKICAgIG9fcGFy
ZW50LmNsYXNzTmFtZSArPSAiIGNicm93b24iOwogICAgaV9jYWx4ID0gcGFyc2VJbnQob19pbnB1
dHJpZ2h0Lm9mZnNldExlZnQpICsgcGFyc2VJbnQob19pbnB1dHJpZ2h0Lm9mZnNldFdpZHRoKTsK
ICAgIGlfY2FseSA9IHBhcnNlSW50KG9fcGFyZW50Lm9mZnNldFRvcCkgKyAocGFyc2VJbnQob19w
YXJlbnQub2Zmc2V0SGVpZ2h0KSAvIDIpIC0gKHBhcnNlSW50KG9fY2FsLm9mZnNldEhlaWdodCkg
LyAyKTsKICAgIHAgPSBnZXRYYW5kWSh2X2lucHV0KTsKICAgIEVYMSA9IHAueDsKICAgIEVYMiA9
ICh2X2lucHV0Lm9mZnNldFdpZHRoIC0gcG9zMSArIEVYMSkgKyAicHgiOwogICAgRVkxID0gcC55
OwogICAgRVkyID0gRVkxOwogICAgb19jYWwuc3R5bGUubGVmdCA9IEVYMjsKICAgIG9fY2FsLnN0
eWxlLnRvcCA9IChFWTIgKyBwb3MyIC0gMjMpICsgInB4IjsKICAgIHNldFRpbWVvdXQoImNhbG9w
ZW4gPSAxIiwgMTAwKTsKfQpmdW5jdGlvbiBjbG9zZUNhbCgpIHsKICAgIGlmIChvX2NhbGRpdiAm
JiBjYWxvcGVuKSB7CiAgICAgICAgdF9jYWxjbG9zZXIgPSBzZXRUaW1lb3V0KCJoaWRlQ2FsZW5k
YXIoKSIsIDEwMCk7CiAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJCb29rRmxp
Z2h0RGl2IikgJiYgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkJvb2tGbGlnaHREaXYiKS5zdHls
ZS5kaXNwbGF5ICE9ICJub25lIiAmJiBkb2N1bWVudC5mbGlnaHRTZWFyY2hGb3JtKSB7CiAgICAg
ICAgICAgIGlmIChGaWVsZENsaWNrZWQgPT0gImZsaWdodFNlYXJjaC5kZXBEYXRlLk1NRERZWVlZ
IiB8fCBGaWVsZENsaWNrZWQgPT0gImZsaWdodFNlYXJjaC5kZXBEYXRlTUMuTU1ERFlZWVkiKSB7
CiAgICAgICAgICAgICAgICB1cGRhdGVEZXBEYXRlSW5Gb3JtKCk7CiAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICB1cGRhdGVSZXREYXRlSW5Gb3JtKCk7CiAgICAgICAgICAgIH0K
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoRmllbGRDbGlja2VkID09ICJmbGlnaHRT
ZWFyY2guZGVwRGF0ZS5NTUREWVlZWSIgJiYgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoT1dGb3JtICE9
IG51bGwgJiYgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoTUNGb3JtICE9IG51bGwpIHsKICAgICAgICAg
ICAgICAgIGRhdGVSVCgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYg
KEZpZWxkQ2xpY2tlZCA9PSAiZmxpZ2h0U2VhcmNoLnJldHVybkRhdGUuTU1ERFlZWVkiICYmIGRv
Y3VtZW50LmZsaWdodFNlYXJjaE1DRm9ybSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAg
ZGF0ZVJldHVyblJUKCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgIGlmIChGaWVsZENsaWNrZWQgPT0gImZsaWdodFNlYXJjaC5kZXBEYXRlT1cuTU1ERFlZWVki
ICYmIGRvY3VtZW50LmZsaWdodFNlYXJjaFJURm9ybSAhPSBudWxsICYmIGRvY3VtZW50LmZsaWdo
dFNlYXJjaE1DRm9ybSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVPVygp
OwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChGaWVsZENsaWNrZWQgPT0gImZsaWdodFNlYXJjaC5kZXBEYXRlTUMuTU1ERFlZWVkiICYmIGRv
Y3VtZW50LmZsaWdodFNlYXJjaFJURm9ybSAhPSBudWxsICYmIGRvY3VtZW50LmZsaWdodFNlYXJj
aE9XRm9ybSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlTUMoKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChGaWVsZENsaWNrZWQgPT0gImZsaWdodFNlYXJjaC5kZXBEYXRlTUMuTU1ERFlZWVki
ICYmIGRvY3VtZW50LmZsaWdodFNlYXJjaFJURm9ybSAhPSBudWxsICYmIGRvY3VtZW50LmZsaWdo
dFNlYXJjaE9XRm9ybSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0ZU1DKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChGaWVsZENsaWNrZWQgPT0gImZsaWdodFNlYXJjaC5y
ZXR1cm5EYXRlTUMuTU1ERFlZWVkiICYmIGRvY3VtZW50LmZsaWdodFNlYXJjaFJURm9ybSAhPSBu
dWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVSZXR1cm5NQygp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7fQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQog
ICAgY2Fsb3BlbiA9IDA7Cn0Kd2luZG93Lm9uY2xpY2sgPSBjbG9zZUNhbDsKd2luZG93LmRvY3Vt
ZW50Lm9uY2xpY2sgPSBjbG9zZUNhbDsKCmZ1bmN0aW9uIGNoa0JhZ3NBY3Rpb24oY2hrQnRuKSB7
CiAgICBpZiAoY2hrICE9ICJjYW5jZWxBY3Rpb24iKSB7CiAgICAgICAgU2hvd0NoZWNrQmFncygp
OwogICAgfSBlbHNlIHsKICAgICAgICBvbkJhY2tTaG93UG5ySG9tZSgpOwogICAgfQogICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJhZ0FkZGl0aW9uIikuc3R5bGUuZGlzcGxheSA9ICJub25l
IjsKfQpmdW5jdGlvbiBzaG93UG9wVXAoY2hrQnRuKSB7CiAgICBjaGsgPSAiY2FuY2VsQWN0aW9u
IjsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJiYWdBZGRpdGlvbiIpLnN0eWxlLmRpc3Bs
YXkgPSAiYmxvY2siOwogICAgc2hvd1dhaXRJbWFnZSgpOwp9CmZ1bmN0aW9uIHNob3dQb3BVcENv
bnRpbnVlKHRoaXNJZCkgewogICAgaWYgKGNoa0V4Y2Nlc3NiYWdzID09ICJ0cnVlIikgewogICAg
ICAgIHZhciBYOwogICAgICAgIHZhciBZOwogICAgICAgIHZhciBjID0gZ2V0QW5jaG9yUG9zaXRp
b24odGhpc0lkLmlkKTsKICAgICAgICBYID0gYy54OwogICAgICAgIFkgPSBjLnkgLSAzMDsKICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYmFnQWRkaXRpb24iKS5zdHlsZS5sZWZ0ID0g
WCAtIDE1MDsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYmFnQWRkaXRpb24iKS5z
dHlsZS50b3AgPSBZOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJiYWdBZGRpdGlv
biIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgfSBlbHNlIHsKICAgICAgICBTaG93Q2hl
Y2tCYWdzKCk7CiAgICB9Cn0KZnVuY3Rpb24gZGlzYWJsZSh0YWJJZCkgewogICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFiSWQpLmlubmVySFRNTCA9ICI8aW1nIHNyYz0naHR0cHM6Ly9zdGF0
aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL1RyYXZlbF9tbmdfcmVkLmdpZic+IjsKfQpmdW5j
dGlvbiBoaWRlKGFyZykgewogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYXJnKS5zdHlsZS5k
aXNwbGF5ID0gIm5vbmUiOwp9CmZ1bmN0aW9uIHNob3coYXJnMSkgewogICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoYXJnMSkuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Cn0KU3RyaW5nLnByb3Rv
dHlwZS50cmltID0gZnVuY3Rpb24gKCkgewogICAgcmV0dXJuIHRoaXMucmVwbGFjZSgvXlxzK3xc
cyskLywgIiIpOwp9Owp2YXIgYWpheERlcFRvdGFsID0gIiI7CgpmdW5jdGlvbiBjYWxsQ2FsQ3Vs
YXRlQW1vdW50VVJMKGNoa1VSTCwgdG90YWxHdWVzdHMsIE9hbmRESW5kLCBjYWJpbkNsYXNzKSB7
CiAgICB2YXIgZ3Vlc3ROb3M7CiAgICB2YXIgZ3Vlc3RCYWdzID0gIiI7CiAgICB2YXIgdGhldGlt
ZSA9IG5ldyBEYXRlKCk7CiAgICB2YXIgZHVtbXkgPSAiIiArIHRoZXRpbWUuZ2V0SG91cnMoKSAr
IHRoZXRpbWUuZ2V0TWludXRlcygpICsgdGhldGltZS5nZXRTZWNvbmRzKCk7CiAgICBpZiAoY2hr
VVJMID09ICJkZXBVUkwiKSB7CiAgICAgICAgdmFyIGd1ZXN0Tm9zID0gdG90YWxHdWVzdHM7CiAg
ICAgICAgZm9yIChsb29wID0gMDsgbG9vcCA8IHRvdGFsR3Vlc3RzOyBsb29wKyspIHsKICAgICAg
ICAgICAgb2JqbmFtZSA9ICJjaGVja0luVG90YWxCYWdzMS50b3RhbEJhZ3MiICsgIlsiICsgbG9v
cCArICJdIjsKICAgICAgICAgICAgb2JqdmFsdWUgPSBkb2N1bWVudC5jaGVja0luRXh0cmFQYXlG
b3JtLmVsZW1lbnRzW29iam5hbWVdLnZhbHVlOwogICAgICAgICAgICBndWVzdEJhZ3MgPSBndWVz
dEJhZ3MgKyAiLCIgKyBvYmp2YWx1ZTsKICAgICAgICB9CiAgICB9CiAgICBpZiAoY2hrVVJMID09
ICJyZXRVUkwiKSB7CiAgICAgICAgdmFyIGd1ZXN0Tm9zID0gdG90YWxHdWVzdHM7CiAgICAgICAg
Zm9yIChsb29wID0gMDsgbG9vcCA8IHRvdGFsR3Vlc3RzOyBsb29wKyspIHsKICAgICAgICAgICAg
b2JqbmFtZSA9ICJjaGVja0luVG90YWxCYWdzMS5iYWdzWyIgKyBPYW5kREluZCArICJdLmJhZ3NO
YW1lWyIgKyBsb29wICsgIl0iOwogICAgICAgICAgICBvYmp2YWx1ZSA9IGRvY3VtZW50LmNoZWNr
SW5FeHRyYVBheUZvcm0uZWxlbWVudHNbb2JqbmFtZV0udmFsdWU7CiAgICAgICAgICAgIGd1ZXN0
QmFncyA9IGd1ZXN0QmFncyArICIsIiArIG9ianZhbHVlOwogICAgICAgIH0KICAgIH0KICAgIHZh
ciBteXVybCA9ICJjYWx1bGF0ZVRvdGFsQmFnQW1vdW50LmRvP21ldGhvZD1jYWxDdWxhdGVBbW91
bnQmdG90YWxHdWVzdD0iICsgZ3Vlc3ROb3MgKyAiJnRvdGFsQmFncz0iICsgZ3Vlc3RCYWdzICsg
IiZjaGtVcmw9IiArIGNoa1VSTCArICImY2FiaW5DbGFzcz0iICsgY2FiaW5DbGFzcyArICImT2Fu
ZERJbmQ9IiArIE9hbmRESW5kOwogICAgbXl1cmwgPSBteXVybCArICImZHVtbXk9IiArIGR1bW15
OwogICAgeG1saHR0cC5vcGVuKCJHRVQiLCBteXVybCwgdHJ1ZSk7CiAgICB4bWxodHRwLm9ucmVh
ZHlzdGF0ZWNoYW5nZSA9IGhhbmRsZVJlc3BvbnNlRm9yQW1vdW50OwogICAgeG1saHR0cC5zZW5k
KCIiKTsKICAgIHdpbmRvdy5mb2N1cygpOwp9CmZ1bmN0aW9uIGhhbmRsZVJlc3BvbnNlRm9yQW1v
dW50KCkgewogICAgaWYgKHhtbGh0dHAucmVhZHlTdGF0ZSA9PSA0KSB7CiAgICAgICAgaWYgKHht
bGh0dHAuc3RhdHVzID09IDIwMCkgewogICAgICAgICAgICBpZiAoKHhtbGh0dHAucmVzcG9uc2VU
ZXh0KS50cmltKCkgPT0gIkFqYXhTZXNzaW9uVGltZU91dCIpIHsKICAgICAgICAgICAgICAgIHdp
bmRvdy5sb2NhdGlvbiA9ICIvaG9tZS5kbz9tZXRob2Q9dmlyZ2luQW1lcmljYSZzZXNzaW9uU3Rh
dGU9c2Vzc2lvblRpbWVPdXQiOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
aWYgKCh4bWxodHRwLnJlc3BvbnNlVGV4dCkuaW5kZXhPZigiZXNjLXNpZ24iKSA9PSAtMSkgewog
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2FkaW5nQW5pbWF0
aW9uRGl2Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidHJhdmVsdXBkYXRlIikuaW5uZXJIVE1MID0geG1saHR0cC5y
ZXNwb25zZVRleHQ7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImVycm9yT25DaGtJbkJhZ3MiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25CdG5TaG93Iikuc3R5bGUuZGlzcGxh
eSA9ICJibG9jayI7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbkJ0bkhpZGUiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9hZGlu
Z0FuaW1hdGlvbkRpdiIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVycm9yT25DaGtJbkJhZ3MiKS5pbm5lckhUTUwg
PSB4bWxodHRwLnJlc3BvbnNlVGV4dDsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZXJyb3JPbkNoa0luQmFncyIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwog
ICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5jaGVja0luRXh0cmFQYXlGb3JtLmVsZW1l
bnRzWyJjaGVja0luVG90YWxCYWdzMS50b3RhbEJhZ3NbMF0iXSkgewogICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgKGxvb3AgPSAwOyBsb29wIDwgMTA7IGxvb3ArKykgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb2JqbmFtZSA9ICJjaGVja0luVG90YWxCYWdzMS50b3RhbEJhZ3MiICsg
IlsiICsgbG9vcCArICJdIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVu
dC5jaGVja0luRXh0cmFQYXlGb3JtLmVsZW1lbnRzW29iam5hbWVdKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY2hlY2tJbkV4dHJhUGF5Rm9ybS5lbGVtZW50c1tv
YmpuYW1lXS5vcHRpb25zWzBdLnNlbGVjdGVkID0gInNlbGVjdGVkIjsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuY2hlY2tJbkV4dHJhUGF5Rm9y
bS5lbGVtZW50c1siY2hlY2tJblRvdGFsQmFnczEudG90YWxCYWdzMVswXSJdKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAobG9vcCA9IDA7IGxvb3AgPCAxMDsgbG9vcCsrKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvYmpuYW1lID0gImNoZWNrSW5Ub3RhbEJhZ3MxLnRvdGFs
QmFnczEiICsgIlsiICsgbG9vcCArICJdIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChkb2N1bWVudC5jaGVja0luRXh0cmFQYXlGb3JtLmVsZW1lbnRzW29iam5hbWVdKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY2hlY2tJbkV4dHJhUGF5Rm9ybS5l
bGVtZW50c1tvYmpuYW1lXS5vcHRpb25zWzBdLnNlbGVjdGVkID0gInNlbGVjdGVkIjsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY29uQnRuU2hvdyIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbkJ0bkhpZGUiKS5zdHlsZS5kaXNwbGF5ID0g
ImJsb2NrIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0K
fQp2YXIgY2hlY2t2YWwgPSAidW5kZWZpbmVkIjsKCmZ1bmN0aW9uIFNob3dDaGVja0JhZ3NfdXBk
YXRlZCgpIHsKICAgIGNoZWNrSW5FeHRyYVBheUZvcm0uc3VibWl0KCk7CiAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY29uQnRuU2hvdyIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uQnRuSGlkZSIpLnN0eWxlLmRpc3BsYXkgPSAiYmxv
Y2siOwp9CmZ1bmN0aW9uIHNldERlZmF1bHRUYWIodGFiSUQpIHsKICAgIGhpZGUoImRpdlZJIik7
CiAgICBoaWRlKCJkaXZDSEYiKTsKICAgIGhpZGUoImRpdkNGIik7CiAgICBzaG93KHRhYklEKTsK
fQp2YXIgcmVkaWQgPSAiIjsKCmZ1bmN0aW9uIHNldERlZlRhYihyZWRpZCkgewogICAgaWYgKHJl
ZGlkID09ICJ0cmlwaWQiKSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocmVkaWQp
LnNyYyA9ICJodHRwczovL3N0YXRpYy52aXJnaW5hbWVyaWNhLmNvbS9pbWFnZXMveW91cl90cmlw
X3JlZC5naWYiOwogICAgfQogICAgaWYgKHJlZGlkID09ICJjaGlkIikgewogICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHJlZGlkKS5zcmMgPSAiaHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1l
cmljYS5jb20vaW1hZ2VzL2NoYW5nZV9mbGlnaHRfcmVkLmdpZiI7CiAgICB9CiAgICBpZiAocmVk
aWQgPT0gImNhbmlkIikgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHJlZGlkKS5z
cmMgPSAiaHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL2NhbmNlbF9mbGln
aHRfcmVkLmdpZiI7CiAgICB9Cn0KdmFyIHRyaXBpZDEgPSAiIjsKdmFyIGNoaWQxID0gIiI7CnZh
ciBjYW5pZDEgPSAiIjsKCmZ1bmN0aW9uIGNoYW5nZVBJQyh0cmlwaWQxLCBjaGlkMSwgY2FuaWQx
KSB7CiAgICBpZiAodHlwZW9mIChjdXJyZW50VHJpcFR5cGUpICE9ICJ1bmRlZmluZWQiKSB7CiAg
ICAgICAgY3VycmVudFRyaXBUeXBlID0gdHJpcGlkMTsKICAgIH0KICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRyaXBpZDEpLnNyYyA9ICJodHRwczovL3N0YXRpYy52aXJnaW5hbWVyaWNhLmNv
bS9pbWFnZXMveW91cl90cmlwX2dyZXkuZ2lmIjsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KGNoaWQxKS5zcmMgPSAiaHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL2No
YW5nZV9mbGlnaHRfZ3JleS5naWYiOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY2FuaWQx
KS5zcmMgPSAiaHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL2NhbmNlbF9m
bGlnaHRfZ3JleS5naWYiOwp9CmZ1bmN0aW9uIHNldERpdihkaXZJRCkgewogICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRyaXBpZCIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2hpZCIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FuaWQiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwog
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGl2SUQpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2si
Owp9CmZ1bmN0aW9uIG9uQmFja1Nob3dQbnJIb21lKCkgewogICAgZG9jdW1lbnQuY2hlY2tJbkV4
dHJhUGF5Rm9ybS5tZXRob2QudmFsdWUgPSAibWFuYWdlUG5yIjsKICAgIGRvY3VtZW50LmNoZWNr
SW5FeHRyYVBheUZvcm0uYWN0aW9uID0gInlvdXJUcmlwLmRvIjsKICAgIGRvY3VtZW50LmNoZWNr
SW5FeHRyYVBheUZvcm0uc3VibWl0KCk7Cn0KZnVuY3Rpb24gb3JpZ2luUlQoKSB7CiAgICBmb3Ig
KGkgPSAwOyBpIDwgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoUlRGb3JtLmVsZW1lbnRzLmxlbmd0aDsg
aSsrKSB7CiAgICAgICAgZWxlbWVudE5hbWUgPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hSVEZvcm0u
ZWxlbWVudHNbaV0ubmFtZTsKICAgICAgICBpZiAoZWxlbWVudE5hbWUgPT0gImZsaWdodFNlYXJj
aC5vcmlnaW4iKSB7CiAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBkb2N1bWVudC5mbGlnaHRT
ZWFyY2hPV0Zvcm0uZWxlbWVudHMubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgIGVsZW1l
bnROYW1lMiA9IGRvY3VtZW50LmZsaWdodFNlYXJjaE9XRm9ybS5lbGVtZW50c1tqXS5uYW1lOwog
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnROYW1lMiA9PSAiZmxpZ2h0U2VhcmNoLm9yaWdpbiIp
IHsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mbGlnaHRTZWFyY2hPV0Zvcm0uZWxlbWVu
dHNbal0uc2VsZWN0ZWRJbmRleCA9IGRvY3VtZW50LmZsaWdodFNlYXJjaFJURm9ybS5lbGVtZW50
c1tpXS5zZWxlY3RlZEluZGV4OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciAoayA9IDA7IGsgPCBkb2N1bWVu
dC5mbGlnaHRTZWFyY2hNQ0Zvcm0uZWxlbWVudHMubGVuZ3RoOyBrKyspIHsKICAgICAgICAgICAg
ICAgIGVsZW1lbnROYW1lMyA9IGRvY3VtZW50LmZsaWdodFNlYXJjaE1DRm9ybS5lbGVtZW50c1tr
XS5uYW1lOwogICAgICAgICAgICAgICAgaWYgKGVsZW1lbnROYW1lMyA9PSAiZmxpZ2h0U2VhcmNo
Lm9yaWdpbiIpIHsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mbGlnaHRTZWFyY2hNQ0Zv
cm0uZWxlbWVudHNba10uc2VsZWN0ZWRJbmRleCA9IGRvY3VtZW50LmZsaWdodFNlYXJjaFJURm9y
bS5lbGVtZW50c1tpXS5zZWxlY3RlZEluZGV4OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAg
IH0KICAgIH0KfQpmdW5jdGlvbiBEZXN0aW5hdGlvblJUKCkgewogICAgZm9yIChpID0gMDsgaSA8
IGRvY3VtZW50LmZsaWdodFNlYXJjaFJURm9ybS5lbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAg
ICAgIGVsZW1lbnROYW1lID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNoUlRGb3JtLmVsZW1lbnRzW2ld
Lm5hbWU7CiAgICAgICAgaWYgKGVsZW1lbnROYW1lID09ICJmbGlnaHRTZWFyY2guZGVzdGluYXRp
b24iKSB7CiAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBkb2N1bWVudC5mbGlnaHRTZWFyY2hP
V0Zvcm0uZWxlbWVudHMubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgIGVsZW1lbnROYW1l
MiA9IGRvY3VtZW50LmZsaWdodFNlYXJjaE9XRm9ybS5lbGVtZW50c1tqXS5uYW1lOwogICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnROYW1lMiA9PSAiZmxpZ2h0U2VhcmNoLmRlc3RpbmF0aW9uIikg
ewogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZsaWdodFNlYXJjaE9XRm9ybS5lbGVtZW50
c1tqXS5zZWxlY3RlZEluZGV4ID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNoUlRGb3JtLmVsZW1lbnRz
W2ldLnNlbGVjdGVkSW5kZXg7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IGRvY3VtZW50
LmZsaWdodFNlYXJjaE1DRm9ybS5lbGVtZW50cy5sZW5ndGg7IGsrKykgewogICAgICAgICAgICAg
ICAgZWxlbWVudE5hbWUzID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNoTUNGb3JtLmVsZW1lbnRzW2td
Lm5hbWU7CiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudE5hbWUzID09ICJmbGlnaHRTZWFyY2gu
ZGVzdGluYXRpb24iKSB7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZmxpZ2h0U2VhcmNo
TUNGb3JtLmVsZW1lbnRzW2tdLnNlbGVjdGVkSW5kZXggPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hS
VEZvcm0uZWxlbWVudHNbaV0uc2VsZWN0ZWRJbmRleDsKICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAg
ICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gb3JpZ2luT1coKSB7CiAgICBmb3IgKGkgPSAwOyBpIDwg
ZG9jdW1lbnQuZmxpZ2h0U2VhcmNoT1dGb3JtLmVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAg
ICAgZWxlbWVudE5hbWUgPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hPV0Zvcm0uZWxlbWVudHNbaV0u
bmFtZTsKICAgICAgICBpZiAoZWxlbWVudE5hbWUgPT0gImZsaWdodFNlYXJjaC5vcmlnaW4iKSB7
CiAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBkb2N1bWVudC5mbGlnaHRTZWFyY2hSVEZvcm0u
ZWxlbWVudHMubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgIGVsZW1lbnROYW1lMiA9IGRv
Y3VtZW50LmZsaWdodFNlYXJjaFJURm9ybS5lbGVtZW50c1tqXS5uYW1lOwogICAgICAgICAgICAg
ICAgaWYgKGVsZW1lbnROYW1lMiA9PSAiZmxpZ2h0U2VhcmNoLm9yaWdpbiIpIHsKICAgICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5mbGlnaHRTZWFyY2hSVEZvcm0uZWxlbWVudHNbal0uc2VsZWN0
ZWRJbmRleCA9IGRvY3VtZW50LmZsaWdodFNlYXJjaE9XRm9ybS5lbGVtZW50c1tpXS5zZWxlY3Rl
ZEluZGV4OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICB9CiAgICAgICAgICAgIGZvciAoayA9IDA7IGsgPCBkb2N1bWVudC5mbGlnaHRTZWFy
Y2hNQ0Zvcm0uZWxlbWVudHMubGVuZ3RoOyBrKyspIHsKICAgICAgICAgICAgICAgIGVsZW1lbnRO
YW1lMyA9IGRvY3VtZW50LmZsaWdodFNlYXJjaE1DRm9ybS5lbGVtZW50c1trXS5uYW1lOwogICAg
ICAgICAgICAgICAgaWYgKGVsZW1lbnROYW1lMyA9PSAiZmxpZ2h0U2VhcmNoLm9yaWdpbiIpIHsK
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mbGlnaHRTZWFyY2hNQ0Zvcm0uZWxlbWVudHNb
a10uc2VsZWN0ZWRJbmRleCA9IGRvY3VtZW50LmZsaWdodFNlYXJjaE9XRm9ybS5lbGVtZW50c1tp
XS5zZWxlY3RlZEluZGV4OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KfQpm
dW5jdGlvbiBEZXN0aW5hdGlvbk9XKCkgewogICAgZm9yIChpID0gMDsgaSA8IGRvY3VtZW50LmZs
aWdodFNlYXJjaE9XRm9ybS5lbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgIGVsZW1lbnRO
YW1lID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNoT1dGb3JtLmVsZW1lbnRzW2ldLm5hbWU7CiAgICAg
ICAgaWYgKGVsZW1lbnROYW1lID09ICJmbGlnaHRTZWFyY2guZGVzdGluYXRpb24iKSB7CiAgICAg
ICAgICAgIGZvciAoaiA9IDA7IGogPCBkb2N1bWVudC5mbGlnaHRTZWFyY2hSVEZvcm0uZWxlbWVu
dHMubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgIGVsZW1lbnROYW1lMiA9IGRvY3VtZW50
LmZsaWdodFNlYXJjaFJURm9ybS5lbGVtZW50c1tqXS5uYW1lOwogICAgICAgICAgICAgICAgaWYg
KGVsZW1lbnROYW1lMiA9PSAiZmxpZ2h0U2VhcmNoLmRlc3RpbmF0aW9uIikgewogICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmZsaWdodFNlYXJjaFJURm9ybS5lbGVtZW50c1tqXS5zZWxlY3Rl
ZEluZGV4ID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNoT1dGb3JtLmVsZW1lbnRzW2ldLnNlbGVjdGVk
SW5kZXg7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgIH0KICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IGRvY3VtZW50LmZsaWdodFNlYXJj
aE1DRm9ybS5lbGVtZW50cy5sZW5ndGg7IGsrKykgewogICAgICAgICAgICAgICAgZWxlbWVudE5h
bWUzID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNoTUNGb3JtLmVsZW1lbnRzW2tdLm5hbWU7CiAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudE5hbWUzID09ICJmbGlnaHRTZWFyY2guZGVzdGluYXRpb24i
KSB7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoTUNGb3JtLmVsZW1l
bnRzW2tdLnNlbGVjdGVkSW5kZXggPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hPV0Zvcm0uZWxlbWVu
dHNbaV0uc2VsZWN0ZWRJbmRleDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9
Cn0KZnVuY3Rpb24gb3JpZ2luTUMoKSB7CiAgICBmb3IgKGkgPSAwOyBpIDwgZG9jdW1lbnQuZmxp
Z2h0U2VhcmNoTUNGb3JtLmVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgZWxlbWVudE5h
bWUgPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hNQ0Zvcm0uZWxlbWVudHNbaV0ubmFtZTsKICAgICAg
ICBpZiAoZWxlbWVudE5hbWUgPT0gImZsaWdodFNlYXJjaC5vcmlnaW4iKSB7CiAgICAgICAgICAg
IGZvciAoaiA9IDA7IGogPCBkb2N1bWVudC5mbGlnaHRTZWFyY2hPV0Zvcm0uZWxlbWVudHMubGVu
Z3RoOyBqKyspIHsKICAgICAgICAgICAgICAgIGVsZW1lbnROYW1lMiA9IGRvY3VtZW50LmZsaWdo
dFNlYXJjaE9XRm9ybS5lbGVtZW50c1tqXS5uYW1lOwogICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnROYW1lMiA9PSAiZmxpZ2h0U2VhcmNoLm9yaWdpbiIpIHsKICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC5mbGlnaHRTZWFyY2hPV0Zvcm0uZWxlbWVudHNbal0uc2VsZWN0ZWRJbmRleCA9IGRv
Y3VtZW50LmZsaWdodFNlYXJjaE1DRm9ybS5lbGVtZW50c1tpXS5zZWxlY3RlZEluZGV4OwogICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAg
ICAgICAgICAgIGZvciAoayA9IDA7IGsgPCBkb2N1bWVudC5mbGlnaHRTZWFyY2hSVEZvcm0uZWxl
bWVudHMubGVuZ3RoOyBrKyspIHsKICAgICAgICAgICAgICAgIGVsZW1lbnROYW1lMyA9IGRvY3Vt
ZW50LmZsaWdodFNlYXJjaFJURm9ybS5lbGVtZW50c1trXS5uYW1lOwogICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnROYW1lMyA9PSAiZmxpZ2h0U2VhcmNoLm9yaWdpbiIpIHsKICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5mbGlnaHRTZWFyY2hSVEZvcm0uZWxlbWVudHNba10uc2VsZWN0ZWRJ
bmRleCA9IGRvY3VtZW50LmZsaWdodFNlYXJjaE1DRm9ybS5lbGVtZW50c1tpXS5zZWxlY3RlZElu
ZGV4OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiBEZXN0
aW5hdGlvbk1DKCkgewogICAgZm9yIChpID0gMDsgaSA8IGRvY3VtZW50LmZsaWdodFNlYXJjaE1D
Rm9ybS5lbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgIGVsZW1lbnROYW1lID0gZG9jdW1l
bnQuZmxpZ2h0U2VhcmNoTUNGb3JtLmVsZW1lbnRzW2ldLm5hbWU7CiAgICAgICAgaWYgKGVsZW1l
bnROYW1lID09ICJmbGlnaHRTZWFyY2guZGVzdGluYXRpb24iKSB7CiAgICAgICAgICAgIGZvciAo
aiA9IDA7IGogPCBkb2N1bWVudC5mbGlnaHRTZWFyY2hPV0Zvcm0uZWxlbWVudHMubGVuZ3RoOyBq
KyspIHsKICAgICAgICAgICAgICAgIGVsZW1lbnROYW1lMiA9IGRvY3VtZW50LmZsaWdodFNlYXJj
aE9XRm9ybS5lbGVtZW50c1tqXS5uYW1lOwogICAgICAgICAgICAgICAgaWYgKGVsZW1lbnROYW1l
MiA9PSAiZmxpZ2h0U2VhcmNoLmRlc3RpbmF0aW9uIikgewogICAgICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmZsaWdodFNlYXJjaE9XRm9ybS5lbGVtZW50c1tqXS5zZWxlY3RlZEluZGV4ID0gZG9j
dW1lbnQuZmxpZ2h0U2VhcmNoTUNGb3JtLmVsZW1lbnRzW2ldLnNlbGVjdGVkSW5kZXg7CiAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAg
ICAgICAgICAgZm9yIChrID0gMDsgayA8IGRvY3VtZW50LmZsaWdodFNlYXJjaFJURm9ybS5lbGVt
ZW50cy5sZW5ndGg7IGsrKykgewogICAgICAgICAgICAgICAgZWxlbWVudE5hbWUzID0gZG9jdW1l
bnQuZmxpZ2h0U2VhcmNoUlRGb3JtLmVsZW1lbnRzW2tdLm5hbWU7CiAgICAgICAgICAgICAgICBp
ZiAoZWxlbWVudE5hbWUzID09ICJmbGlnaHRTZWFyY2guZGVzdGluYXRpb24iKSB7CiAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoUlRGb3JtLmVsZW1lbnRzW2tdLnNlbGVj
dGVkSW5kZXggPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hNQ0Zvcm0uZWxlbWVudHNbaV0uc2VsZWN0
ZWRJbmRleDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24g
ZGF0ZVJUKCkgewogICAgZm9yIChpID0gMDsgaSA8IGRvY3VtZW50LmZsaWdodFNlYXJjaFJURm9y
bS5lbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgIGVsZW1lbnROYW1lID0gZG9jdW1lbnQu
ZmxpZ2h0U2VhcmNoUlRGb3JtLmVsZW1lbnRzW2ldLm5hbWU7CiAgICAgICAgaWYgKGVsZW1lbnRO
YW1lID09ICJmbGlnaHRTZWFyY2guZGVwRGF0ZS5NTUREWVlZWSIpIHsKICAgICAgICAgICAgZm9y
IChqID0gMDsgaiA8IGRvY3VtZW50LmZsaWdodFNlYXJjaE9XRm9ybS5lbGVtZW50cy5sZW5ndGg7
IGorKykgewogICAgICAgICAgICAgICAgZWxlbWVudE5hbWUyID0gZG9jdW1lbnQuZmxpZ2h0U2Vh
cmNoT1dGb3JtLmVsZW1lbnRzW2pdLm5hbWU7CiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudE5h
bWUyID09ICJmbGlnaHRTZWFyY2guZGVwRGF0ZU9XLk1NRERZWVlZIikgewogICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmZsaWdodFNlYXJjaE9XRm9ybS5lbGVtZW50c1tqXS52YWx1ZSA9IGRv
Y3VtZW50LmZsaWdodFNlYXJjaFJURm9ybS5lbGVtZW50c1tpXS52YWx1ZTsKICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAg
ICBmb3IgKGsgPSAwOyBrIDwgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoTUNGb3JtLmVsZW1lbnRzLmxl
bmd0aDsgaysrKSB7CiAgICAgICAgICAgICAgICBlbGVtZW50TmFtZTMgPSBkb2N1bWVudC5mbGln
aHRTZWFyY2hNQ0Zvcm0uZWxlbWVudHNba10ubmFtZTsKICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50TmFtZTMgPT0gImZsaWdodFNlYXJjaC5kZXBEYXRlTUMuTU1ERFlZWVkiKSB7CiAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoTUNGb3JtLmVsZW1lbnRzW2tdLnZhbHVl
ID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNoUlRGb3JtLmVsZW1lbnRzW2ldLnZhbHVlOwogICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiBkYXRlUmV0dXJuUlQoKSB7
CiAgICBmb3IgKGkgPSAwOyBpIDwgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoUlRGb3JtLmVsZW1lbnRz
Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgZWxlbWVudE5hbWUgPSBkb2N1bWVudC5mbGlnaHRTZWFy
Y2hSVEZvcm0uZWxlbWVudHNbaV0ubmFtZTsKICAgICAgICBpZiAoZWxlbWVudE5hbWUgPT0gImZs
aWdodFNlYXJjaC5yZXR1cm5EYXRlLk1NRERZWVlZIikgewogICAgICAgICAgICBmb3IgKGsgPSAw
OyBrIDwgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoTUNGb3JtLmVsZW1lbnRzLmxlbmd0aDsgaysrKSB7
CiAgICAgICAgICAgICAgICBlbGVtZW50TmFtZTMgPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hNQ0Zv
cm0uZWxlbWVudHNba10ubmFtZTsKICAgICAgICAgICAgICAgIGlmIChlbGVtZW50TmFtZTMgPT0g
ImZsaWdodFNlYXJjaC5yZXR1cm5EYXRlTUMuTU1ERFlZWVkiKSB7CiAgICAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoTUNGb3JtLmVsZW1lbnRzW2tdLnZhbHVlID0gZG9jdW1l
bnQuZmxpZ2h0U2VhcmNoUlRGb3JtLmVsZW1lbnRzW2ldLnZhbHVlOwogICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiBkYXRlUmV0dXJuTUMoKSB7CiAgICBmb3Ig
KGkgPSAwOyBpIDwgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoUlRGb3JtLmVsZW1lbnRzLmxlbmd0aDsg
aSsrKSB7CiAgICAgICAgZWxlbWVudE5hbWUgPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hNQ0Zvcm0u
ZWxlbWVudHNbaV0ubmFtZTsKICAgICAgICBpZiAoZWxlbWVudE5hbWUgPT0gImZsaWdodFNlYXJj
aC5yZXR1cm5EYXRlTUMuTU1ERFlZWVkiKSB7CiAgICAgICAgICAgIGZvciAoayA9IDA7IGsgPCBk
b2N1bWVudC5mbGlnaHRTZWFyY2hSVEZvcm0uZWxlbWVudHMubGVuZ3RoOyBrKyspIHsKICAgICAg
ICAgICAgICAgIGVsZW1lbnROYW1lMyA9IGRvY3VtZW50LmZsaWdodFNlYXJjaFJURm9ybS5lbGVt
ZW50c1trXS5uYW1lOwogICAgICAgICAgICAgICAgaWYgKGVsZW1lbnROYW1lMyA9PSAiZmxpZ2h0
U2VhcmNoLnJldHVybkRhdGUuTU1ERFlZWVkiKSB7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuZmxpZ2h0U2VhcmNoUlRGb3JtLmVsZW1lbnRzW2tdLnZhbHVlID0gZG9jdW1lbnQuZmxpZ2h0
U2VhcmNoTUNGb3JtLmVsZW1lbnRzW2ldLnZhbHVlOwogICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgIH0KICAgIH0KfQpmdW5jdGlvbiBkYXRlT1coKSB7CiAgICBmb3IgKGkgPSAwOyBpIDwgZG9j
dW1lbnQuZmxpZ2h0U2VhcmNoT1dGb3JtLmVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAg
ZWxlbWVudE5hbWUgPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hPV0Zvcm0uZWxlbWVudHNbaV0ubmFt
ZTsKICAgICAgICBpZiAoZWxlbWVudE5hbWUgPT0gImZsaWdodFNlYXJjaC5kZXBEYXRlT1cuTU1E
RFlZWVkiKSB7CiAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBkb2N1bWVudC5mbGlnaHRTZWFy
Y2hSVEZvcm0uZWxlbWVudHMubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgIGVsZW1lbnRO
YW1lMiA9IGRvY3VtZW50LmZsaWdodFNlYXJjaFJURm9ybS5lbGVtZW50c1tqXS5uYW1lOwogICAg
ICAgICAgICAgICAgaWYgKGVsZW1lbnROYW1lMiA9PSAiZmxpZ2h0U2VhcmNoLmRlcERhdGUuTU1E
RFlZWVkiKSB7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoUlRGb3Jt
LmVsZW1lbnRzW2pdLnZhbHVlID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNoT1dGb3JtLmVsZW1lbnRz
W2ldLnZhbHVlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciAoayA9IDA7IGsgPCBkb2N1bWVudC5mbGlnaHRT
ZWFyY2hNQ0Zvcm0uZWxlbWVudHMubGVuZ3RoOyBrKyspIHsKICAgICAgICAgICAgICAgIGVsZW1l
bnROYW1lMyA9IGRvY3VtZW50LmZsaWdodFNlYXJjaE1DRm9ybS5lbGVtZW50c1trXS5uYW1lOwog
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnROYW1lMyA9PSAiZmxpZ2h0U2VhcmNoLmRlcERhdGVN
Qy5NTUREWVlZWSIpIHsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mbGlnaHRTZWFyY2hN
Q0Zvcm0uZWxlbWVudHNba10udmFsdWUgPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hPV0Zvcm0uZWxl
bWVudHNbaV0udmFsdWU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQp9CmZ1
bmN0aW9uIGRhdGVNQygpIHsKICAgIGZvciAoaSA9IDA7IGkgPCBkb2N1bWVudC5mbGlnaHRTZWFy
Y2hNQ0Zvcm0uZWxlbWVudHMubGVuZ3RoOyBpKyspIHsKICAgICAgICBlbGVtZW50TmFtZSA9IGRv
Y3VtZW50LmZsaWdodFNlYXJjaE1DRm9ybS5lbGVtZW50c1tpXS5uYW1lOwogICAgICAgIGlmIChl
bGVtZW50TmFtZSA9PSAiZmxpZ2h0U2VhcmNoLmRlcERhdGVNQy5NTUREWVlZWSIpIHsKICAgICAg
ICAgICAgZm9yIChqID0gMDsgaiA8IGRvY3VtZW50LmZsaWdodFNlYXJjaE9XRm9ybS5lbGVtZW50
cy5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgZWxlbWVudE5hbWUyID0gZG9jdW1lbnQu
ZmxpZ2h0U2VhcmNoT1dGb3JtLmVsZW1lbnRzW2pdLm5hbWU7CiAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudE5hbWUyID09ICJmbGlnaHRTZWFyY2guZGVwRGF0ZU9XLk1NRERZWVlZIikgewogICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmZsaWdodFNlYXJjaE9XRm9ybS5lbGVtZW50c1tqXS52
YWx1ZSA9IGRvY3VtZW50LmZsaWdodFNlYXJjaE1DRm9ybS5lbGVtZW50c1tpXS52YWx1ZTsKICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQog
ICAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoUlRGb3JtLmVs
ZW1lbnRzLmxlbmd0aDsgaysrKSB7CiAgICAgICAgICAgICAgICBlbGVtZW50TmFtZTMgPSBkb2N1
bWVudC5mbGlnaHRTZWFyY2hSVEZvcm0uZWxlbWVudHNba10ubmFtZTsKICAgICAgICAgICAgICAg
IGlmIChlbGVtZW50TmFtZTMgPT0gImZsaWdodFNlYXJjaC5kZXBEYXRlLk1NRERZWVlZIikgewog
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZsaWdodFNlYXJjaFJURm9ybS5lbGVtZW50c1tr
XS52YWx1ZSA9IGRvY3VtZW50LmZsaWdodFNlYXJjaE1DRm9ybS5lbGVtZW50c1tpXS52YWx1ZTsK
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
fQogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gYWR1bHRSVCgp
IHsKICAgIGZvciAoaSA9IDA7IGkgPCBkb2N1bWVudC5mbGlnaHRTZWFyY2hSVEZvcm0uZWxlbWVu
dHMubGVuZ3RoOyBpKyspIHsKICAgICAgICBlbGVtZW50TmFtZSA9IGRvY3VtZW50LmZsaWdodFNl
YXJjaFJURm9ybS5lbGVtZW50c1tpXS5uYW1lOwogICAgICAgIGlmIChlbGVtZW50TmFtZSA9PSAi
ZmxpZ2h0U2VhcmNoLmFkdWx0cyIpIHsKICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGRvY3Vt
ZW50LmZsaWdodFNlYXJjaE9XRm9ybS5lbGVtZW50cy5sZW5ndGg7IGorKykgewogICAgICAgICAg
ICAgICAgZWxlbWVudE5hbWUyID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNoT1dGb3JtLmVsZW1lbnRz
W2pdLm5hbWU7CiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudE5hbWUyID09ICJmbGlnaHRTZWFy
Y2guYWR1bHRzIikgewogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZsaWdodFNlYXJjaE9X
Rm9ybS5lbGVtZW50c1tqXS5zZWxlY3RlZEluZGV4ID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNoUlRG
b3JtLmVsZW1lbnRzW2ldLnNlbGVjdGVkSW5kZXg7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yIChrID0gMDsg
ayA8IGRvY3VtZW50LmZsaWdodFNlYXJjaE1DRm9ybS5lbGVtZW50cy5sZW5ndGg7IGsrKykgewog
ICAgICAgICAgICAgICAgZWxlbWVudE5hbWUzID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNoTUNGb3Jt
LmVsZW1lbnRzW2tdLm5hbWU7CiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudE5hbWUzID09ICJm
bGlnaHRTZWFyY2guYWR1bHRzIikgewogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZsaWdo
dFNlYXJjaE1DRm9ybS5lbGVtZW50c1trXS5zZWxlY3RlZEluZGV4ID0gZG9jdW1lbnQuZmxpZ2h0
U2VhcmNoUlRGb3JtLmVsZW1lbnRzW2ldLnNlbGVjdGVkSW5kZXg7CiAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgfQogICAgfQp9CmZ1bmN0aW9uIGFkdWx0T1coKSB7CiAgICBmb3IgKGkgPSAw
OyBpIDwgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoT1dGb3JtLmVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7
CiAgICAgICAgZWxlbWVudE5hbWUgPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hPV0Zvcm0uZWxlbWVu
dHNbaV0ubmFtZTsKICAgICAgICBpZiAoZWxlbWVudE5hbWUgPT0gImZsaWdodFNlYXJjaC5hZHVs
dHMiKSB7CiAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBkb2N1bWVudC5mbGlnaHRTZWFyY2hS
VEZvcm0uZWxlbWVudHMubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgIGVsZW1lbnROYW1l
MiA9IGRvY3VtZW50LmZsaWdodFNlYXJjaFJURm9ybS5lbGVtZW50c1tqXS5uYW1lOwogICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnROYW1lMiA9PSAiZmxpZ2h0U2VhcmNoLmFkdWx0cyIpIHsKICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudC5mbGlnaHRTZWFyY2hSVEZvcm0uZWxlbWVudHNbal0u
c2VsZWN0ZWRJbmRleCA9IGRvY3VtZW50LmZsaWdodFNlYXJjaE9XRm9ybS5lbGVtZW50c1tpXS5z
ZWxlY3RlZEluZGV4OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciAoayA9IDA7IGsgPCBkb2N1bWVudC5mbGln
aHRTZWFyY2hNQ0Zvcm0uZWxlbWVudHMubGVuZ3RoOyBrKyspIHsKICAgICAgICAgICAgICAgIGVs
ZW1lbnROYW1lMyA9IGRvY3VtZW50LmZsaWdodFNlYXJjaE1DRm9ybS5lbGVtZW50c1trXS5uYW1l
OwogICAgICAgICAgICAgICAgaWYgKGVsZW1lbnROYW1lMyA9PSAiZmxpZ2h0U2VhcmNoLmFkdWx0
cyIpIHsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mbGlnaHRTZWFyY2hNQ0Zvcm0uZWxl
bWVudHNba10uc2VsZWN0ZWRJbmRleCA9IGRvY3VtZW50LmZsaWdodFNlYXJjaE9XRm9ybS5lbGVt
ZW50c1tpXS5zZWxlY3RlZEluZGV4OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAg
IH0KfQpmdW5jdGlvbiBhZHVsdE1DKCkgewogICAgZm9yIChpID0gMDsgaSA8IGRvY3VtZW50LmZs
aWdodFNlYXJjaE1DRm9ybS5lbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgIGVsZW1lbnRO
YW1lID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNoTUNGb3JtLmVsZW1lbnRzW2ldLm5hbWU7CiAgICAg
ICAgaWYgKGVsZW1lbnROYW1lID09ICJmbGlnaHRTZWFyY2guYWR1bHRzIikgewogICAgICAgICAg
ICBmb3IgKGogPSAwOyBqIDwgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoT1dGb3JtLmVsZW1lbnRzLmxl
bmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICBlbGVtZW50TmFtZTIgPSBkb2N1bWVudC5mbGln
aHRTZWFyY2hPV0Zvcm0uZWxlbWVudHNbal0ubmFtZTsKICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50TmFtZTIgPT0gImZsaWdodFNlYXJjaC5hZHVsdHMiKSB7CiAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuZmxpZ2h0U2VhcmNoT1dGb3JtLmVsZW1lbnRzW2pdLnNlbGVjdGVkSW5kZXggPSBk
b2N1bWVudC5mbGlnaHRTZWFyY2hNQ0Zvcm0uZWxlbWVudHNbaV0uc2VsZWN0ZWRJbmRleDsKICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQog
ICAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoUlRGb3JtLmVs
ZW1lbnRzLmxlbmd0aDsgaysrKSB7CiAgICAgICAgICAgICAgICBlbGVtZW50TmFtZTMgPSBkb2N1
bWVudC5mbGlnaHRTZWFyY2hSVEZvcm0uZWxlbWVudHNba10ubmFtZTsKICAgICAgICAgICAgICAg
IGlmIChlbGVtZW50TmFtZTMgPT0gImZsaWdodFNlYXJjaC5hZHVsdHMiKSB7CiAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoUlRGb3JtLmVsZW1lbnRzW2tdLnNlbGVjdGVk
SW5kZXggPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hNQ0Zvcm0uZWxlbWVudHNbaV0uc2VsZWN0ZWRJ
bmRleDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gY2hp
bGRSVCgpIHsKICAgIGZvciAoaSA9IDA7IGkgPCBkb2N1bWVudC5mbGlnaHRTZWFyY2hSVEZvcm0u
ZWxlbWVudHMubGVuZ3RoOyBpKyspIHsKICAgICAgICBlbGVtZW50TmFtZSA9IGRvY3VtZW50LmZs
aWdodFNlYXJjaFJURm9ybS5lbGVtZW50c1tpXS5uYW1lOwogICAgICAgIGlmIChlbGVtZW50TmFt
ZSA9PSAiZmxpZ2h0U2VhcmNoLmtpZHMiKSB7CiAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBk
b2N1bWVudC5mbGlnaHRTZWFyY2hPV0Zvcm0uZWxlbWVudHMubGVuZ3RoOyBqKyspIHsKICAgICAg
ICAgICAgICAgIGVsZW1lbnROYW1lMiA9IGRvY3VtZW50LmZsaWdodFNlYXJjaE9XRm9ybS5lbGVt
ZW50c1tqXS5uYW1lOwogICAgICAgICAgICAgICAgaWYgKGVsZW1lbnROYW1lMiA9PSAiZmxpZ2h0
U2VhcmNoLmtpZHMiKSB7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZmxpZ2h0U2VhcmNo
T1dGb3JtLmVsZW1lbnRzW2pdLnNlbGVjdGVkSW5kZXggPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hS
VEZvcm0uZWxlbWVudHNbaV0uc2VsZWN0ZWRJbmRleDsKICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IgKGsgPSAw
OyBrIDwgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoTUNGb3JtLmVsZW1lbnRzLmxlbmd0aDsgaysrKSB7
CiAgICAgICAgICAgICAgICBlbGVtZW50TmFtZTMgPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hNQ0Zv
cm0uZWxlbWVudHNba10ubmFtZTsKICAgICAgICAgICAgICAgIGlmIChlbGVtZW50TmFtZTMgPT0g
ImZsaWdodFNlYXJjaC5raWRzIikgewogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZsaWdo
dFNlYXJjaE1DRm9ybS5lbGVtZW50c1trXS5zZWxlY3RlZEluZGV4ID0gZG9jdW1lbnQuZmxpZ2h0
U2VhcmNoUlRGb3JtLmVsZW1lbnRzW2ldLnNlbGVjdGVkSW5kZXg7CiAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgfQogICAgfQp9CmZ1bmN0aW9uIGNoaWxkT1coKSB7CiAgICBmb3IgKGkgPSAw
OyBpIDwgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoT1dGb3JtLmVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7
CiAgICAgICAgZWxlbWVudE5hbWUgPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hPV0Zvcm0uZWxlbWVu
dHNbaV0ubmFtZTsKICAgICAgICBpZiAoZWxlbWVudE5hbWUgPT0gImZsaWdodFNlYXJjaC5raWRz
IikgewogICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoUlRG
b3JtLmVsZW1lbnRzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICBlbGVtZW50TmFtZTIg
PSBkb2N1bWVudC5mbGlnaHRTZWFyY2hSVEZvcm0uZWxlbWVudHNbal0ubmFtZTsKICAgICAgICAg
ICAgICAgIGlmIChlbGVtZW50TmFtZTIgPT0gImZsaWdodFNlYXJjaC5raWRzIikgewogICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmZsaWdodFNlYXJjaFJURm9ybS5lbGVtZW50c1tqXS5zZWxl
Y3RlZEluZGV4ID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNoT1dGb3JtLmVsZW1lbnRzW2ldLnNlbGVj
dGVkSW5kZXg7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgIH0KICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IGRvY3VtZW50LmZsaWdodFNl
YXJjaE1DRm9ybS5lbGVtZW50cy5sZW5ndGg7IGsrKykgewogICAgICAgICAgICAgICAgZWxlbWVu
dE5hbWUzID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNoTUNGb3JtLmVsZW1lbnRzW2tdLm5hbWU7CiAg
ICAgICAgICAgICAgICBpZiAoZWxlbWVudE5hbWUzID09ICJmbGlnaHRTZWFyY2gua2lkcyIpIHsK
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mbGlnaHRTZWFyY2hNQ0Zvcm0uZWxlbWVudHNb
a10uc2VsZWN0ZWRJbmRleCA9IGRvY3VtZW50LmZsaWdodFNlYXJjaE9XRm9ybS5lbGVtZW50c1tp
XS5zZWxlY3RlZEluZGV4OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KfQpm
dW5jdGlvbiBjaGlsZE1DKCkgewogICAgZm9yIChpID0gMDsgaSA8IGRvY3VtZW50LmZsaWdodFNl
YXJjaE1DRm9ybS5lbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgIGVsZW1lbnROYW1lID0g
ZG9jdW1lbnQuZmxpZ2h0U2VhcmNoTUNGb3JtLmVsZW1lbnRzW2ldLm5hbWU7CiAgICAgICAgaWYg
KGVsZW1lbnROYW1lID09ICJmbGlnaHRTZWFyY2gua2lkcyIpIHsKICAgICAgICAgICAgZm9yIChq
ID0gMDsgaiA8IGRvY3VtZW50LmZsaWdodFNlYXJjaE9XRm9ybS5lbGVtZW50cy5sZW5ndGg7IGor
KykgewogICAgICAgICAgICAgICAgZWxlbWVudE5hbWUyID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNo
T1dGb3JtLmVsZW1lbnRzW2pdLm5hbWU7CiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudE5hbWUy
ID09ICJmbGlnaHRTZWFyY2gua2lkcyIpIHsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5m
bGlnaHRTZWFyY2hPV0Zvcm0uZWxlbWVudHNbal0uc2VsZWN0ZWRJbmRleCA9IGRvY3VtZW50LmZs
aWdodFNlYXJjaE1DRm9ybS5lbGVtZW50c1tpXS5zZWxlY3RlZEluZGV4OwogICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAg
IGZvciAoayA9IDA7IGsgPCBkb2N1bWVudC5mbGlnaHRTZWFyY2hSVEZvcm0uZWxlbWVudHMubGVu
Z3RoOyBrKyspIHsKICAgICAgICAgICAgICAgIGVsZW1lbnROYW1lMyA9IGRvY3VtZW50LmZsaWdo
dFNlYXJjaFJURm9ybS5lbGVtZW50c1trXS5uYW1lOwogICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnROYW1lMyA9PSAiZmxpZ2h0U2VhcmNoLmtpZHMiKSB7CiAgICAgICAgICAgICAgICAgICAgZG9j
dW1lbnQuZmxpZ2h0U2VhcmNoUlRGb3JtLmVsZW1lbnRzW2tdLnNlbGVjdGVkSW5kZXggPSBkb2N1
bWVudC5mbGlnaHRTZWFyY2hNQ0Zvcm0uZWxlbWVudHNbaV0uc2VsZWN0ZWRJbmRleDsKICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAg
ICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gaW5mYW50UlQoKSB7CiAg
ICBmb3IgKGkgPSAwOyBpIDwgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoUlRGb3JtLmVsZW1lbnRzLmxl
bmd0aDsgaSsrKSB7CiAgICAgICAgZWxlbWVudE5hbWUgPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hS
VEZvcm0uZWxlbWVudHNbaV0ubmFtZTsKICAgICAgICBpZiAoZWxlbWVudE5hbWUgPT0gImZsaWdo
dFNlYXJjaC5pbmZhbnRzIikgewogICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgZG9jdW1lbnQu
ZmxpZ2h0U2VhcmNoT1dGb3JtLmVsZW1lbnRzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAg
ICBlbGVtZW50TmFtZTIgPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hPV0Zvcm0uZWxlbWVudHNbal0u
bmFtZTsKICAgICAgICAgICAgICAgIGlmIChlbGVtZW50TmFtZTIgPT0gImZsaWdodFNlYXJjaC5p
bmZhbnRzIikgewogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZsaWdodFNlYXJjaE9XRm9y
bS5lbGVtZW50c1tqXS5zZWxlY3RlZEluZGV4ID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNoUlRGb3Jt
LmVsZW1lbnRzW2ldLnNlbGVjdGVkSW5kZXg7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yIChrID0gMDsgayA8
IGRvY3VtZW50LmZsaWdodFNlYXJjaE1DRm9ybS5lbGVtZW50cy5sZW5ndGg7IGsrKykgewogICAg
ICAgICAgICAgICAgZWxlbWVudE5hbWUzID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNoTUNGb3JtLmVs
ZW1lbnRzW2tdLm5hbWU7CiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudE5hbWUzID09ICJmbGln
aHRTZWFyY2guaW5mYW50cyIpIHsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mbGlnaHRT
ZWFyY2hNQ0Zvcm0uZWxlbWVudHNba10uc2VsZWN0ZWRJbmRleCA9IGRvY3VtZW50LmZsaWdodFNl
YXJjaFJURm9ybS5lbGVtZW50c1tpXS5zZWxlY3RlZEluZGV4OwogICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFr
OwogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiBpbmZhbnRPVygpIHsKICAgIGZvciAoaSA9IDA7
IGkgPCBkb2N1bWVudC5mbGlnaHRTZWFyY2hPV0Zvcm0uZWxlbWVudHMubGVuZ3RoOyBpKyspIHsK
ICAgICAgICBlbGVtZW50TmFtZSA9IGRvY3VtZW50LmZsaWdodFNlYXJjaE9XRm9ybS5lbGVtZW50
c1tpXS5uYW1lOwogICAgICAgIGlmIChlbGVtZW50TmFtZSA9PSAiZmxpZ2h0U2VhcmNoLmluZmFu
dHMiKSB7CiAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBkb2N1bWVudC5mbGlnaHRTZWFyY2hS
VEZvcm0uZWxlbWVudHMubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgIGVsZW1lbnROYW1l
MiA9IGRvY3VtZW50LmZsaWdodFNlYXJjaFJURm9ybS5lbGVtZW50c1tqXS5uYW1lOwogICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnROYW1lMiA9PSAiZmxpZ2h0U2VhcmNoLmluZmFudHMiKSB7CiAg
ICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoUlRGb3JtLmVsZW1lbnRzW2pd
LnNlbGVjdGVkSW5kZXggPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hPV0Zvcm0uZWxlbWVudHNbaV0u
c2VsZWN0ZWRJbmRleDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgZG9jdW1lbnQuZmxp
Z2h0U2VhcmNoTUNGb3JtLmVsZW1lbnRzLmxlbmd0aDsgaysrKSB7CiAgICAgICAgICAgICAgICBl
bGVtZW50TmFtZTMgPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hNQ0Zvcm0uZWxlbWVudHNba10ubmFt
ZTsKICAgICAgICAgICAgICAgIGlmIChlbGVtZW50TmFtZTMgPT0gImZsaWdodFNlYXJjaC5pbmZh
bnRzIikgewogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZsaWdodFNlYXJjaE1DRm9ybS5l
bGVtZW50c1trXS5zZWxlY3RlZEluZGV4ID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNoT1dGb3JtLmVs
ZW1lbnRzW2ldLnNlbGVjdGVkSW5kZXg7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQog
ICAgfQp9CmZ1bmN0aW9uIGluZmFudE1DKCkgewogICAgZm9yIChpID0gMDsgaSA8IGRvY3VtZW50
LmZsaWdodFNlYXJjaE1DRm9ybS5lbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgIGVsZW1l
bnROYW1lID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNoTUNGb3JtLmVsZW1lbnRzW2ldLm5hbWU7CiAg
ICAgICAgaWYgKGVsZW1lbnROYW1lID09ICJmbGlnaHRTZWFyY2guaW5mYW50cyIpIHsKICAgICAg
ICAgICAgZm9yIChqID0gMDsgaiA8IGRvY3VtZW50LmZsaWdodFNlYXJjaE9XRm9ybS5lbGVtZW50
cy5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgZWxlbWVudE5hbWUyID0gZG9jdW1lbnQu
ZmxpZ2h0U2VhcmNoT1dGb3JtLmVsZW1lbnRzW2pdLm5hbWU7CiAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudE5hbWUyID09ICJmbGlnaHRTZWFyY2guaW5mYW50cyIpIHsKICAgICAgICAgICAgICAg
ICAgICBkb2N1bWVudC5mbGlnaHRTZWFyY2hPV0Zvcm0uZWxlbWVudHNbal0uc2VsZWN0ZWRJbmRl
eCA9IGRvY3VtZW50LmZsaWdodFNlYXJjaE1DRm9ybS5lbGVtZW50c1tpXS5zZWxlY3RlZEluZGV4
OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICB9CiAgICAgICAgICAgIGZvciAoayA9IDA7IGsgPCBkb2N1bWVudC5mbGlnaHRTZWFyY2hSVEZv
cm0uZWxlbWVudHMubGVuZ3RoOyBrKyspIHsKICAgICAgICAgICAgICAgIGVsZW1lbnROYW1lMyA9
IGRvY3VtZW50LmZsaWdodFNlYXJjaFJURm9ybS5lbGVtZW50c1trXS5uYW1lOwogICAgICAgICAg
ICAgICAgaWYgKGVsZW1lbnROYW1lMyA9PSAiZmxpZ2h0U2VhcmNoLmluZmFudHMiKSB7CiAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoUlRGb3JtLmVsZW1lbnRzW2tdLnNl
bGVjdGVkSW5kZXggPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hNQ0Zvcm0uZWxlbWVudHNbaV0uc2Vs
ZWN0ZWRJbmRleDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9Cn0KZnVuY3Rp
b24gR2V0X0Nvb2tpZShuYW1lKSB7CiAgICB2YXIgc3RhcnQgPSBkb2N1bWVudC5jb29raWUuaW5k
ZXhPZihuYW1lICsgIj0iKTsKICAgIHZhciBsZW4gPSBzdGFydCArIG5hbWUubGVuZ3RoICsgMTsK
ICAgIGlmICgoIXN0YXJ0KSAmJiAobmFtZSAhPSBkb2N1bWVudC5jb29raWUuc3Vic3RyaW5nKDAs
IG5hbWUubGVuZ3RoKSkpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KICAgIGlmIChzdGFy
dCA9PSAtMSkgewogICAgICAgIHJldHVybiBudWxsOwogICAgfQogICAgdmFyIGVuZCA9IGRvY3Vt
ZW50LmNvb2tpZS5pbmRleE9mKCI7IiwgbGVuKTsKICAgIGlmIChlbmQgPT0gLTEpIHsKICAgICAg
ICBlbmQgPSBkb2N1bWVudC5jb29raWUubGVuZ3RoOwogICAgfQogICAgcmV0dXJuIHVuZXNjYXBl
KGRvY3VtZW50LmNvb2tpZS5zdWJzdHJpbmcobGVuLCBlbmQpKTsKfQpmdW5jdGlvbiBTZXRfQ29v
a2llKG5hbWUsIHZhbHVlLCBleHBpcmVzLCBwYXRoLCBkb21haW4sIHNlY3VyZSkgewogICAgdmFy
IHRvZGF5ID0gbmV3IERhdGUoKTsKICAgIHRvZGF5LnNldFRpbWUodG9kYXkuZ2V0VGltZSgpKTsK
ICAgIGlmIChleHBpcmVzKSB7CiAgICAgICAgZXhwaXJlcyA9IGV4cGlyZXMgKiAxMDAwICogNjAg
KiA2MCAqIDI0OwogICAgfQogICAgdmFyIGV4cGlyZXNfZGF0ZSA9IG5ldyBEYXRlKHRvZGF5Lmdl
dFRpbWUoKSArIChleHBpcmVzKSk7CiAgICBkb2N1bWVudC5jb29raWUgPSBuYW1lICsgIj0iICsg
ZXNjYXBlKHZhbHVlKSArICgoZXhwaXJlcykgPyAiO2V4cGlyZXM9IiArIGV4cGlyZXNfZGF0ZS50
b0dNVFN0cmluZygpIDogIiIpICsgKChwYXRoKSA/ICI7cGF0aD0iICsgcGF0aCA6ICIiKSArICgo
ZG9tYWluKSA/ICI7ZG9tYWluPSIgKyBkb21haW4gOiAiIikgKyAoKHNlY3VyZSkgPyAiO3NlY3Vy
ZSIgOiAiIik7Cn0KZnVuY3Rpb24gRGVsZXRlX0Nvb2tpZShuYW1lLCBwYXRoLCBkb21haW4pIHsK
ICAgIGlmIChHZXRfQ29va2llKG5hbWUpKSB7CiAgICAgICAgZG9jdW1lbnQuY29va2llID0gbmFt
ZSArICI9IiArICgocGF0aCkgPyAiO3BhdGg9IiArIHBhdGggOiAiIikgKyAoKGRvbWFpbikgPyAi
O2RvbWFpbj0iICsgZG9tYWluIDogIiIpICsgIjtleHBpcmVzPVRodSwgMDEtSmFuLTE5NzAgMDA6
MDA6MDEgR01UIjsKICAgIH0KfQpmdW5jdGlvbiBkaXNjb29raWUoKSB7CiAgICB2YXIgZ2cgPSBH
ZXRfQ29va2llKCJjdiIpOwp9CmZ1bmN0aW9uIE1NX3N3YXBJbWdSZXN0b3JlKCkgewogICAgdmFy
IGksIHgsIGEgPSBkb2N1bWVudC5NTV9zcjsKICAgIGZvciAoaSA9IDA7IGEgJiYgaSA8IGEubGVu
Z3RoICYmICh4ID0gYVtpXSkgJiYgeC5vU3JjOyBpKyspIHsKICAgICAgICB4LnNyYyA9IHgub1Ny
YzsKICAgIH0KfQpmdW5jdGlvbiBNTV9wcmVsb2FkSW1hZ2VzKCkgewogICAgdmFyIGQgPSBkb2N1
bWVudDsKICAgIGlmIChkLmltYWdlcykgewogICAgICAgIGlmICghZC5NTV9wKSB7CiAgICAgICAg
ICAgIGQuTU1fcCA9IG5ldyBBcnJheSgpOwogICAgICAgIH0KICAgICAgICB2YXIgaSwgaiA9IGQu
TU1fcC5sZW5ndGgsCiAgICAgICAgICAgIGEgPSBNTV9wcmVsb2FkSW1hZ2VzLmFyZ3VtZW50czsK
ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAo
YVtpXS5pbmRleE9mKCIjIikgIT0gMCkgewogICAgICAgICAgICAgICAgZC5NTV9wW2pdID0gbmV3
IEltYWdlOwogICAgICAgICAgICAgICAgZC5NTV9wW2orK10uc3JjID0gYVtpXTsKICAgICAgICAg
ICAgfQogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiBNTV9maW5kT2JqKG4sIGQpIHsKICAgIHZh
ciBwLCBpLCB4OwogICAgaWYgKCFkKSB7CiAgICAgICAgZCA9IGRvY3VtZW50OwogICAgfQogICAg
aWYgKChwID0gbi5pbmRleE9mKCI/IikpID4gMCAmJiBwYXJlbnQuZnJhbWVzLmxlbmd0aCkgewog
ICAgICAgIGQgPSBwYXJlbnQuZnJhbWVzW24uc3Vic3RyaW5nKHAgKyAxKV0uZG9jdW1lbnQ7CiAg
ICAgICAgbiA9IG4uc3Vic3RyaW5nKDAsIHApOwogICAgfQogICAgaWYgKCEoeCA9IGRbbl0pICYm
IGQuYWxsKSB7CiAgICAgICAgeCA9IGQuYWxsW25dOwogICAgfQogICAgZm9yIChpID0gMDsgIXgg
JiYgaSA8IGQuZm9ybXMubGVuZ3RoOyBpKyspIHsKICAgICAgICB4ID0gZC5mb3Jtc1tpXVtuXTsK
ICAgIH0KICAgIGZvciAoaSA9IDA7ICF4ICYmIGQubGF5ZXJzICYmIGkgPCBkLmxheWVycy5sZW5n
dGg7IGkrKykgewogICAgICAgIHggPSBNTV9maW5kT2JqKG4sIGQubGF5ZXJzW2ldLmRvY3VtZW50
KTsKICAgIH0KICAgIGlmICgheCAmJiBkLmdldEVsZW1lbnRCeUlkKSB7CiAgICAgICAgeCA9IGQu
Z2V0RWxlbWVudEJ5SWQobik7CiAgICB9CiAgICByZXR1cm4geDsKfQpmdW5jdGlvbiBNTV9zd2Fw
SW1hZ2UoKSB7CiAgICB2YXIgaSwgaiA9IDAsCiAgICAgICAgeCwgYSA9IE1NX3N3YXBJbWFnZS5h
cmd1bWVudHM7CiAgICBkb2N1bWVudC5NTV9zciA9IG5ldyBBcnJheTsKICAgIGZvciAoaSA9IDA7
IGkgPCAoYS5sZW5ndGggLSAyKTsgaSArPSAzKSB7CiAgICAgICAgaWYgKCh4ID0gTU1fZmluZE9i
aihhW2ldKSkgIT0gbnVsbCkgewogICAgICAgICAgICBkb2N1bWVudC5NTV9zcltqKytdID0geDsK
ICAgICAgICAgICAgaWYgKCF4Lm9TcmMpIHsKICAgICAgICAgICAgICAgIHgub1NyYyA9IHguc3Jj
OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHguc3JjID0gYVtpICsgMl07CiAgICAgICAgfQog
ICAgfQp9CmZ1bmN0aW9uIHN1Ym1pdEZvcm1Gb3JDaGFuZ2VTZWF0KGluZHhOdW0sIHNlZ21lbnRO
dW0sIHdoaWNoRmxvdywgZmlyc3RDbGFzc0N1dE9mZikgewogICAgc2hvd1dhaXRJbWFnZSgpOwog
ICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAic2hvd0NoYW5nZVNlYXRNYXAuZG8/bWV0aG9kPXNo
b3dTZWF0TWFwRm9yQ2hhbmdlJnRhYlNlbGVjdGVkPSIgKyBpbmR4TnVtICsgIiZhY3RpdmVTZWdt
ZW50SW5kZXg9IiArIHNlZ21lbnROdW0gKyAiJndoaWNoRmxvdz0iICsgd2hpY2hGbG93ICsgIiZm
aXJzdENsYXNzQ3V0T2ZmPSIgKyBmaXJzdENsYXNzQ3V0T2ZmOwp9CmZ1bmN0aW9uIHJlcGxhY2VB
bGwoc3QpIHsKICAgIHZhciBpID0gc3QubGVuZ3RoOwogICAgZm9yICh2YXIgbSA9IDA7IG0gPCBp
OyBtKyspIHsKICAgICAgICBpZiAoc3QuaW5kZXhPZigiLyIpICE9IC0xKSB7CiAgICAgICAgICAg
IHN0ID0gc3QucmVwbGFjZSgiLyIsICInIik7CiAgICAgICAgfQogICAgICAgIGlmIChzdC5pbmRl
eE9mKCI/IikgIT0gLTEpIHsKICAgICAgICAgICAgc3QgPSBzdC5yZXBsYWNlKCI/IiwgJyInKTsK
ICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gc3Q7Cn0KZnVuY3Rpb24gc2hvd1ByaW50V2luZG93
KCkgewogICAgdmFyIHAgPSBzZWxmLnByaW50KCk7CiAgICByZXR1cm4gcDsKfQp2YXIgT1NEZXRl
Y3QgPSB7CiAgICBpbml0OiBmdW5jdGlvbiAoKSB7CiAgICAgICAgdGhpcy5icm93c2VyID0gdGhp
cy5zZWFyY2hTdHJpbmcodGhpcy5kYXRhQnJvd3NlcikgfHwgIkFuIHVua25vd24gYnJvd3NlciI7
CiAgICAgICAgdGhpcy52ZXJzaW9uID0gdGhpcy5zZWFyY2hWZXJzaW9uKG5hdmlnYXRvci51c2Vy
QWdlbnQpIHx8IHRoaXMuc2VhcmNoVmVyc2lvbihuYXZpZ2F0b3IuYXBwVmVyc2lvbikgfHwgImFu
IHVua25vd24gdmVyc2lvbiI7CiAgICAgICAgdGhpcy5PUyA9IHRoaXMuc2VhcmNoU3RyaW5nKHRo
aXMuZGF0YU9TKSB8fCAiYW4gdW5rbm93biBPUyI7CiAgICB9LAogICAgc2VhcmNoU3RyaW5nOiBm
dW5jdGlvbiAoZGF0YSkgewogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7
IGkrKykgewogICAgICAgICAgICB2YXIgZGF0YVN0cmluZyA9IGRhdGFbaV0uc3RyaW5nOwogICAg
ICAgICAgICB2YXIgZGF0YVByb3AgPSBkYXRhW2ldLnByb3A7CiAgICAgICAgICAgIHRoaXMudmVy
c2lvblNlYXJjaFN0cmluZyA9IGRhdGFbaV0udmVyc2lvblNlYXJjaCB8fCBkYXRhW2ldLmlkZW50
aXR5OwogICAgICAgICAgICBpZiAoZGF0YVN0cmluZykgewogICAgICAgICAgICAgICAgaWYgKGRh
dGFTdHJpbmcuaW5kZXhPZihkYXRhW2ldLnN1YlN0cmluZykgIT0gLTEpIHsKICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZGF0YVtpXS5pZGVudGl0eTsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChkYXRhUHJvcCkgewogICAgICAgICAg
ICAgICAgICAgIHJldHVybiBkYXRhW2ldLmlkZW50aXR5OwogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICB9CiAgICAgICAgfQogICAgfSwKICAgIHNlYXJjaFZlcnNpb246IGZ1bmN0aW9uIChk
YXRhU3RyaW5nKSB7CiAgICAgICAgdmFyIGluZGV4ID0gZGF0YVN0cmluZy5pbmRleE9mKHRoaXMu
dmVyc2lvblNlYXJjaFN0cmluZyk7CiAgICAgICAgaWYgKGluZGV4ID09IC0xKSB7CiAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoZGF0YVN0cmlu
Zy5zdWJzdHJpbmcoaW5kZXggKyB0aGlzLnZlcnNpb25TZWFyY2hTdHJpbmcubGVuZ3RoICsgMSkp
OwogICAgfSwKICAgIGRhdGFCcm93c2VyOiBbewogICAgICAgIHN0cmluZzogbmF2aWdhdG9yLnVz
ZXJBZ2VudCwKICAgICAgICBzdWJTdHJpbmc6ICJDaHJvbWUiLAogICAgICAgIGlkZW50aXR5OiAi
Q2hyb21lIgogICAgfSwgewogICAgICAgIHN0cmluZzogbmF2aWdhdG9yLnVzZXJBZ2VudCwKICAg
ICAgICBzdWJTdHJpbmc6ICJPbW5pV2ViIiwKICAgICAgICB2ZXJzaW9uU2VhcmNoOiAiT21uaVdl
Yi8iLAogICAgICAgIGlkZW50aXR5OiAiT21uaVdlYiIKICAgIH0sIHsKICAgICAgICBzdHJpbmc6
IG5hdmlnYXRvci52ZW5kb3IsCiAgICAgICAgc3ViU3RyaW5nOiAiQXBwbGUiLAogICAgICAgIGlk
ZW50aXR5OiAiU2FmYXJpIgogICAgfSwgewogICAgICAgIHByb3A6IHdpbmRvdy5vcGVyYSwKICAg
ICAgICBpZGVudGl0eTogIk9wZXJhIgogICAgfSwgewogICAgICAgIHN0cmluZzogbmF2aWdhdG9y
LnZlbmRvciwKICAgICAgICBzdWJTdHJpbmc6ICJpQ2FiIiwKICAgICAgICBpZGVudGl0eTogImlD
YWIiCiAgICB9LCB7CiAgICAgICAgc3RyaW5nOiBuYXZpZ2F0b3IudmVuZG9yLAogICAgICAgIHN1
YlN0cmluZzogIktERSIsCiAgICAgICAgaWRlbnRpdHk6ICJLb25xdWVyb3IiCiAgICB9LCB7CiAg
ICAgICAgc3RyaW5nOiBuYXZpZ2F0b3IudXNlckFnZW50LAogICAgICAgIHN1YlN0cmluZzogIkZp
cmVmb3giLAogICAgICAgIGlkZW50aXR5OiAiRmlyZWZveCIKICAgIH0sIHsKICAgICAgICBzdHJp
bmc6IG5hdmlnYXRvci52ZW5kb3IsCiAgICAgICAgc3ViU3RyaW5nOiAiQ2FtaW5vIiwKICAgICAg
ICBpZGVudGl0eTogIkNhbWlubyIKICAgIH0sIHsKICAgICAgICBzdHJpbmc6IG5hdmlnYXRvci51
c2VyQWdlbnQsCiAgICAgICAgc3ViU3RyaW5nOiAiTmV0c2NhcGUiLAogICAgICAgIGlkZW50aXR5
OiAiTmV0c2NhcGUiCiAgICB9LCB7CiAgICAgICAgc3RyaW5nOiBuYXZpZ2F0b3IudXNlckFnZW50
LAogICAgICAgIHN1YlN0cmluZzogIk1TSUUiLAogICAgICAgIGlkZW50aXR5OiAiRXhwbG9yZXIi
LAogICAgICAgIHZlcnNpb25TZWFyY2g6ICJNU0lFIgogICAgfSwgewogICAgICAgIHN0cmluZzog
bmF2aWdhdG9yLnVzZXJBZ2VudCwKICAgICAgICBzdWJTdHJpbmc6ICJHZWNrbyIsCiAgICAgICAg
aWRlbnRpdHk6ICJNb3ppbGxhIiwKICAgICAgICB2ZXJzaW9uU2VhcmNoOiAicnYiCiAgICB9LCB7
CiAgICAgICAgc3RyaW5nOiBuYXZpZ2F0b3IudXNlckFnZW50LAogICAgICAgIHN1YlN0cmluZzog
Ik1vemlsbGEiLAogICAgICAgIGlkZW50aXR5OiAiTmV0c2NhcGUiLAogICAgICAgIHZlcnNpb25T
ZWFyY2g6ICJNb3ppbGxhIgogICAgfV0sCiAgICBkYXRhT1M6IFt7CiAgICAgICAgc3RyaW5nOiBu
YXZpZ2F0b3IucGxhdGZvcm0sCiAgICAgICAgc3ViU3RyaW5nOiAiV2luIiwKICAgICAgICBpZGVu
dGl0eTogIldpbmRvd3MiCiAgICB9LCB7CiAgICAgICAgc3RyaW5nOiBuYXZpZ2F0b3IucGxhdGZv
cm0sCiAgICAgICAgc3ViU3RyaW5nOiAiTWFjIiwKICAgICAgICBpZGVudGl0eTogIk1hYyIKICAg
IH0sIHsKICAgICAgICBzdHJpbmc6IG5hdmlnYXRvci5wbGF0Zm9ybSwKICAgICAgICBzdWJTdHJp
bmc6ICJMaW51eCIsCiAgICAgICAgaWRlbnRpdHk6ICJMaW51eCIKICAgIH1dCn07CgpmdW5jdGlv
biBjYWxsUEJQYXNzRm9ySFRNTChidG5JZCwgb2FuZERJZCwgd2hpY2hsZWdObywgZmxpZ2h0Tm8s
IGZmTnVtYmVyLCBudW1iZXJJblBhcnR5LCBvbkhvbWUpIHsKICAgIHZhciB0b3AgPSAxMDsKICAg
IHZhciBsZWZ0ID0gMTgwOwogICAgdmFyIHdpZHRoID0gODQ1OwogICAgdmFyIGhlaWdodCA9IDcw
MDsKICAgIE9TRGV0ZWN0LmluaXQoKTsKICAgIHZhciBndWVzdG5hbWU7CiAgICB2YXIgdXJscyA9
ICIiOwogICAgaWYgKGJ0bklkLmluZGV4T2YoIi8iKSAhPSAtMSkgewogICAgICAgIGd1ZXN0bmFt
ZSA9IHJlcGxhY2VBbGwoYnRuSWQpOwogICAgfSBlbHNlIHsKICAgICAgICBpZiAoYnRuSWQuaW5k
ZXhPZigiPyIpICE9IC0xKSB7CiAgICAgICAgICAgIGd1ZXN0bmFtZSA9IHJlcGxhY2VBbGwoYnRu
SWQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGd1ZXN0bmFtZSA9IGJ0bklkOwogICAg
ICAgIH0KICAgIH0KICAgIHZhciBvc2RldGVjdCA9IE9TRGV0ZWN0Lk9TOwogICAgdmFyIGJyb3dz
ZXJkZXRlY3QgPSBPU0RldGVjdC5icm93c2VyOwogICAgaWYgKG9uSG9tZSA9PSAib25Ib21lIikg
ewogICAgICAgIHVybHMgPSAiY2hlY2tJblByaW50Qm9hcmRpbmdQYXNzRm9ySHRtbC5kbz9tZXRo
b2Q9cHJpbnRCb2FyZGluZ1Bhc3NGb3JTaW5nbGVHdWVzdCZpbmRleE51bT0iOwogICAgfSBlbHNl
IHsKICAgICAgICB1cmxzID0gImNoZWNrSW5QcmludEJvYXJkaW5nUGFzc0Zvckh0bWxTU0wuZG8/
bWV0aG9kPXByaW50Qm9hcmRpbmdQYXNzRm9yU2luZ2xlR3Vlc3QmaW5kZXhOdW09IjsKICAgIH0K
ICAgIHVybHMgPSB1cmxzICsgZ3Vlc3RuYW1lICsgIiZvYW5kRElkPSIgKyBvYW5kRElkICsgIiZs
ZWdObz0iICsgd2hpY2hsZWdObyArICImZmxpZ2h0Tm89IiArIGZsaWdodE5vICsgIiZmZk51bWJl
cj0iICsgZmZOdW1iZXIgKyAiJm51bWJlckluUGFydHk9IiArIG51bWJlckluUGFydHkgKyAiJk9T
RGV0ZWN0PSIgKyBvc2RldGVjdCArICImYnJvd3NlcmRldGVjdD0iICsgYnJvd3NlcmRldGVjdDsK
ICAgIG15d2luZG93Rm9ySHRtbCA9IHdpbmRvdy5vcGVuKCIvaHRtbC9WaXJnaW5fQW1lcmljYV9C
b2FyZGluZ19QYXNzLmh0bWwiLCAiQm9hcmRpbmdQYXNzIiwgInRvb2xiYXI9bm8sbG9jYXRpb249
bm8sZGlyZWN0b3JpZXM9bm8sbWVudWJhcj15ZXMsc2Nyb2xsYmFycz15ZXMsdG9wPSIgKyB0b3Ag
KyAiLCBsZWZ0PSIgKyBsZWZ0ICsgIiwgd2lkdGg9IiArIHdpZHRoICsgIixoZWlnaHQ9IiArIGhl
aWdodCk7CiAgICBhamF4VG9HZW5lcmF0ZVBkZkhUTUwodXJscyk7Cn0KZnVuY3Rpb24gcHJpbnRB
bGxCb2FyZGluZ1Bhc3NJbkhUTUxWaWV3KCkgewogICAgdmFyIHRvcCA9IDEwOwogICAgdmFyIGxl
ZnQgPSAxODA7CiAgICB2YXIgd2lkdGggPSA4NDU7CiAgICB2YXIgaGVpZ2h0ID0gNzAwOwogICAg
T1NEZXRlY3QuaW5pdCgpOwogICAgdmFyIG9zZGV0ZWN0ID0gT1NEZXRlY3QuT1M7CiAgICB2YXIg
YnJvd3NlcmRldGVjdCA9IE9TRGV0ZWN0LmJyb3dzZXI7CiAgICB2YXIgdXJscyA9ICJjaGVja0lu
UHJpbnRCb2FyZGluZ1Bhc3NTU0wuZG8/bWV0aG9kPXByaW50QWxsQm9hcmRpbmdQYXNzSW5IVE1M
VmlldyZpbmRleE51bT0iICsgImZvckFsbEd1ZXN0IiArICImT1NEZXRlY3Q9IiArIG9zZGV0ZWN0
ICsgIiZicm93c2VyZGV0ZWN0PSIgKyBicm93c2VyZGV0ZWN0OwogICAgbXl3aW5kb3dGb3JIdG1s
ID0gd2luZG93Lm9wZW4oIi9odG1sL1Zpcmdpbl9BbWVyaWNhX0JvYXJkaW5nX1Bhc3MuaHRtbCIs
ICJCb2FyZGluZ1Bhc3MiLCAidG9vbGJhcj1ubyxzdGF0dXM9eWVzLG1lbnViYXI9eWVzLHNjcm9s
bGJhcnM9eWVzLHJlc2l6YWJsZT1ubywgdG9wPSIgKyB0b3AgKyAiLCBsZWZ0PSIgKyBsZWZ0ICsg
Iiwgd2lkdGg9IiArIHdpZHRoICsgIixoZWlnaHQ9IiArIGhlaWdodCk7CiAgICBhamF4VG9HZW5l
cmF0ZVBkZkhUTUwodXJscyk7Cn0KZnVuY3Rpb24gYWpheFRvR2VuZXJhdGVQZGZIVE1MKG15dXJs
KSB7CiAgICB4bWxodHRwID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICB2YXIgdGhldGltZSA9
IG5ldyBEYXRlKCk7CiAgICB2YXIgZHVtbXkgPSAiIiArIHRoZXRpbWUuZ2V0SG91cnMoKSArIHRo
ZXRpbWUuZ2V0TWludXRlcygpICsgdGhldGltZS5nZXRTZWNvbmRzKCk7CiAgICBteXVybCA9IG15
dXJsICsgIiZkdW1teT0iICsgZHVtbXk7CiAgICB4bWxodHRwLm9wZW4oIlBPU1QiLCBteXVybCwg
dHJ1ZSk7CiAgICB4bWxodHRwLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGhhbmRsZVJlc3BvbnNlUHJp
bnRCb2FyZGluZ1Bhc3NGb3JIVE1MOwogICAgeG1saHR0cC5zZW5kKCIiKTsKfQpmdW5jdGlvbiBo
YW5kbGVSZXNwb25zZVByaW50Qm9hcmRpbmdQYXNzRm9ySFRNTCgpIHsKICAgIGlmICh4bWxodHRw
LnJlYWR5U3RhdGUgPT0gNCkgewogICAgICAgIGlmICh4bWxodHRwLnN0YXR1cyA9PSAyMDApIHsK
ICAgICAgICAgICAgdmFyIHJlc1RleHQgPSB4bWxodHRwLnJlc3BvbnNlVGV4dDsKICAgICAgICAg
ICAgaWYgKHJlc1RleHQudHJpbSgpID09ICJBamF4U2Vzc2lvblRpbWVPdXQiKSB7CiAgICAgICAg
ICAgICAgICBteXdpbmRvd0Zvckh0bWwuY2xvc2UoKTsKICAgICAgICAgICAgICAgIHdpbmRvdy5s
b2NhdGlvbiA9ICIvaG9tZS5kbz9tZXRob2Q9dmlyZ2luQW1lcmljYSZzZXNzaW9uU3RhdGU9c2Vz
c2lvblRpbWVPdXQiOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKHJl
c1RleHQudHJpbSgpID09ICJQcmludEJvYXJkaW5nUGFzc0Vycm9yIikgewogICAgICAgICAgICAg
ICAgICAgIG15d2luZG93Rm9ySHRtbC5jbG9zZSgpOwogICAgICAgICAgICAgICAgICAgIGlmIChk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiUERGX0VSUk9SX01FU1NBR0VfUE9QVVAiKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiUERGX0VSUk9SX01F
U1NBR0VfUE9QVVAiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHZhciB0b3BT
U0wgPSAxMDsKICAgICAgICAgICAgICAgICAgICB2YXIgbGVmdFNTTCA9IDE4MDsKICAgICAgICAg
ICAgICAgICAgICB2YXIgd2lkdGhTU0wgPSA4NDU7CiAgICAgICAgICAgICAgICAgICAgdmFyIGhl
aWdodFNTTCA9IDcwMDsKICAgICAgICAgICAgICAgICAgICB2YXIgZmlsZU5hbWVVcGRhdGVkID0g
cmVzVGV4dC5yZXBsYWNlKC9bXHJcbl0vZywgIiIpOwogICAgICAgICAgICAgICAgICAgIHZhciB1
YSA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgICAgICAg
ICBpZiAodWEuaW5kZXhPZigibXNpZSIpICE9IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBzdGF0dXNYID0gIiI7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXR1c1ggPSBteXdpbmRvd0Zvckh0bWwuZG9jdW1lbnQucmVh
ZHlTdGF0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoc3RhdHVzWCAhPSAiY29t
cGxldGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgbXl3aW5kb3dGb3JIdG1sLmRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJwZGZodG1sIikuaW5uZXJIVE1MID0gZmlsZU5hbWVVcGRhdGVkOwog
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15d2lu
ZG93Rm9ySHRtbC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGRmaHRtbCIpLmlubmVySFRNTCA9
IGZpbGVOYW1lVXBkYXRlZDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gc2hvd1ByaW50SXRpbmVy
YXJ5KCkgewogICAgdmFyIHBhZ2VJZCA9ICJ2aWV3SXRpbmVyYXJ5IjsKICAgIGlmIChzLnBhZ2VO
YW1lKSB7CiAgICAgICAgaWYgKHMucGFnZU5hbWUuaW5kZXhPZigiVmlldyBJdGluZXJhcnkiKSAh
PSAtMSkgewogICAgICAgICAgICBwYWdlSWQgPSAidmlld0l0aW5lcmFyeSI7CiAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgaWYgKHMucGFnZU5hbWUuaW5kZXhPZigiQ2hlY2staW4iKSAhPSAt
MSkgewogICAgICAgICAgICAgICAgcGFnZUlkID0gImNoZWNrSW4iOwogICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgaWYgKHMucGFnZU5hbWUuaW5kZXhPZigiQ2hhbmdlIEZsaWdo
dCIpICE9IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgcGFnZUlkID0gImNoYW5nZUZsaWdodCI7
CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmIChzLnBhZ2VO
YW1lLmluZGV4T2YoIkNhbmNlbCBGbGlnaHQiKSAhPSAtMSkgewogICAgICAgICAgICAgICAgICAg
ICAgICBwYWdlSWQgPSAiY2FuY2VsRmxpZ2h0IjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICB2YXIgZGlzcF9z
ZXR0aW5nID0gInRvb2xiYXI9bm8sbG9jYXRpb249bm8sZGlyZWN0b3JpZXM9bm8sbWVudWJhcj15
ZXMsIjsKICAgIGRpc3Bfc2V0dGluZyArPSAic2Nyb2xsYmFycz15ZXMsd2lkdGg9NzM2LCBoZWln
aHQ9NjcwLCBsZWZ0PTAsIHRvcD0wIjsKICAgIHZhciB1cmxzID0gImNoZWNrSW5QcmludEl0aW5l
cmFyeS5kbz9tZXRob2Q9cHJpbnRJdGluZXJhcnkmcGFnZUlkPSIgKyBwYWdlSWQ7CiAgICB3aW5k
b3cub3Blbih1cmxzLCAiIiwgZGlzcF9zZXR0aW5nKTsKfQpmdW5jdGlvbiBpbnNlcnRHdWVzdFNl
YXQobnVtLCBndSwgc3MpIHsKICAgIGdudW0gPSBudW07CiAgICB2YXIgaW5kID0gbnVtOwogICAg
dmFyIGd1ZXN0ID0gZ3U7CiAgICB2YXIgc2VhdCA9IHNzOwogICAgZ3Vlc3RBcnJheVtpbmRdID0g
Z3Vlc3Q7CiAgICBzZWF0QXJyYXlbaW5kXSA9IHNlYXQ7Cn0KZnVuY3Rpb24gaW5zZXJ0R3Vlc3RT
ZWF0MShudW0sIGd1LCBzcykgewogICAgZ251bVJldCA9IG51bTsKICAgIHZhciBpbmQgPSBudW07
CiAgICB2YXIgZ3Vlc3QgPSBndTsKICAgIHZhciBzZWF0ID0gc3M7CiAgICBndWVzdEFycmF5UmV0
W2luZF0gPSBndWVzdDsKICAgIHNlYXRBcnJheVJldFtpbmRdID0gc2VhdDsKfQpmdW5jdGlvbiBp
bnNlcnREZXBDb25uZWN0R3Vlc3RTZWF0KG51bSwgc3MpIHsKICAgIHNlYXREZXBDb25uZWN0QXJy
YXlbbnVtXSA9IHNzOwp9CmZ1bmN0aW9uIGluc2VydFJldENvbm5lY3RHdWVzdFNlYXQobnVtLCBz
cykgewogICAgc2VhdFJldENvbm5lY3RBcnJheVtudW1dID0gc3M7Cn0KZnVuY3Rpb24gU2hvd0No
ZWNrQmFnczEoZSkgewogICAgY2hlY2tJbkJhZ0Zvcm0uc3VibWl0KCk7Cn0KdmFyIHRoaXNJZDsK
CmZ1bmN0aW9uIENoZWNrSW5JbmZvUG9wVXAoYnV0dG9uSWQpIHsKICAgIHRoaXNJZCA9IGJ1dHRv
bklkOwogICAgdmFyIFg7CiAgICB2YXIgWTsKICAgIHZhciBjID0gZ2V0QW5jaG9yUG9zaXRpb24o
dGhpc0lkLmlkKTsKICAgIFggPSBjLng7CiAgICBZID0gYy55ICsgMjU7CiAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiQ2hlY2tJbkluRm8iKS5zdHlsZS5sZWZ0ID0gWCAtIDUwOwogICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkNoZWNrSW5JbkZvIikuc3R5bGUudG9wID0gWSAtIDMwOwog
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkNoZWNrSW5JbkZvIikuc3R5bGUuZGlzcGxheSA9
ICJibG9jayI7Cn0KZnVuY3Rpb24gc2hvd0VsZXZhdGVFeHBQb3BVcChidXR0b25JZCwgcG9wdXBJ
ZCkgewogICAgZ2V0QW5jaG9yWFkoYnV0dG9uSWQpOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQocG9wdXBJZCkuc3R5bGUubGVmdCA9IFgxIC0gNTA7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZChwb3B1cElkKS5zdHlsZS50b3AgPSBZMSAtIDMwOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQocG9wdXBJZCkuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Cn0KZnVuY3Rpb24gU2hvd0No
ZWNrQmFncyh0aGlzSWQpIHsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJDaGVja0luSW5G
byIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICB2YXIgWDsKICAgIHZhciBZOwogICAgdmFy
IGMgPSBnZXRBbmNob3JQb3NpdGlvbih0aGlzSWQuaWQpOwogICAgWCA9IGMueDsKICAgIFkgPSBj
LnkgKyAyNTsKICAgIGlmIChhbHJlYWR5Q2hlY2tlZEluRGVwID09ICJmYWxzZSIpIHsKICAgICAg
ICBpZiAoY2hlY2t2YWwgPT0gInVuZGVmaW5lZCIpIHsKICAgICAgICAgICAgZG9jdW1lbnQuY2hl
Y2tJbkJhZ0Zvcm0uY2hlY2tDaGFuZ2UudmFsdWUgPSAibm8iOwogICAgICAgIH0KICAgICAgICBj
aGVja0luQmFnRm9ybS5zdWJtaXQoKTsKICAgIH0gZWxzZSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImFscmVhZHlDaGVja2VkSW4iKS5zdHlsZS5sZWZ0ID0gWCAtIDEwMDsKICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWxyZWFkeUNoZWNrZWRJbiIpLnN0eWxlLnRv
cCA9IFkgLSAzMDsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWxyZWFkeUNoZWNr
ZWRJbiIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgfQp9CnZhciBndWVzdFR5cGVBcnIg
PSBuZXcgQXJyYXkoKTsKdmFyIGdGTmFtZUFyciA9IG5ldyBBcnJheSgpOwp2YXIgZ0xOYW1lQXJy
ID0gbmV3IEFycmF5KCk7CnZhciBpbnMgPSAwOwp2YXIgcmlucyA9IDA7CnZhciBndWVzdE51bWJl
ckluUGFydHkgPSAiIjsKdmFyIGd1ZXN0UmV0TnVtYmVySW5QYXJ0eSA9ICIiOwp2YXIgT2FuZERT
aXplID0gMDsKCmZ1bmN0aW9uIGNoZWNrSW5DbGlja0l0KHRoaXNvYmosIHdoaWNoTGVnLCBPYW5k
REluZCwgZmxpZ2h0Tm8sIG51bSwgbnVtYmVySW5QYXJ0eSwgZ3Vlc3RTdGF0dXMpIHsKICAgIGlm
IChndWVzdFN0YXR1cyA9PSAiY2hlY2tJblJlc3RyaWN0ZWQiKSB7CiAgICAgICAgc2V0UG9zaXRp
b24odGhpc29iaiwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBldFNTUk1zZ0lkIiksIC0yMCwg
MjApOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwZXRTU1JNc2dJZCIpLnN0eWxl
LmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgIGlmICh0aGlzb2JqLmNoZWNrZWQpIHsKICAgICAg
ICAgICAgdGhpc29iai5jaGVja2VkID0gZmFsc2U7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAg
ICAgICB2YXIgcyA9IG5ldyBBcnJheSgpOwogICAgICAgIHZhciBjaGVja0JveElkID0gIiI7CiAg
ICAgICAgdmFyIGNoZWNrQm94ID0gIiI7CiAgICAgICAgdmFyIGd1ZXN0SWQgPSAiIjsKICAgICAg
ICB2YXIgZ3Vlc3RPYmogPSAiIjsKICAgICAgICB2YXIgc2VsR3Vlc3RzSWQgPSAiIjsKICAgICAg
ICB2YXIgc2VsR3Vlc3RzID0gIiI7CiAgICAgICAgdmFyIHNlYXRJZCA9ICIiOwogICAgICAgIHZh
ciBzZWF0T2JqID0gIiI7CiAgICAgICAgdmFyIHNlbFNlYXRzSWQgPSAiIjsKICAgICAgICB2YXIg
c2VsU2VhdHMgPSAiIjsKICAgICAgICB2YXIgY29ublNlYXRJZCA9ICIiOwogICAgICAgIHZhciBj
b25uU2VhdE9iaiA9ICIiOwogICAgICAgIHZhciBzZWxDb25uU2VhdHNJZCA9ICIiOwogICAgICAg
IHZhciBzZWxDb25uU2VhdHMgPSAiIjsKICAgICAgICB2YXIgc2VsTnVtSW5QYXJJZCA9ICIiOwog
ICAgICAgIHZhciBzZWxSZXdOb0lkID0gIiI7CiAgICAgICAgdmFyIHNlbEVsZVZBSWQgPSAiIjsK
ICAgICAgICB2YXIgZWxlVkFJZE9iaiA9ICIiOwogICAgICAgIHZhciBzZWxSZXdhcmROb3MgPSAi
IjsKICAgICAgICB2YXIgUm93TnVtID0gIlJvdyIgKyBPYW5kREluZDsKICAgICAgICB2YXIgUm93
TnVtUmV0ID0gIlJvdyMiICsgT2FuZERJbmQ7CiAgICAgICAgdmFyIHggPSBkb2N1bWVudC5jaGVj
a0luQmFnRm9ybTsKICAgICAgICB2YXIgZ3Vlc3ROdW1iZXJJblBhcnR5ID0gIiI7CiAgICAgICAg
dmFyIG51bUluUGFydHlJZCA9ICIiOwogICAgICAgIHZhciBndWVzdHNlcW5vID0gIiI7CiAgICAg
ICAgdmFyIHNlbEdUSWQgPSAiIjsKICAgICAgICB2YXIgc2VsR1RJZCA9ICIiOwogICAgICAgIHZh
ciBlbGVHVE9iaiA9ICIiOwogICAgICAgIHZhciBndWVzdFR5cGUgPSAiIjsKICAgICAgICBmb3Ig
KGkgPSAwOyBpIDwgZ3Vlc3RTaXplOyBpKyspIHsKICAgICAgICAgICAgaWYgKHdoaWNoTGVnID09
ICJEZXBhcnQiKSB7CiAgICAgICAgICAgICAgICBjaGVja0JveElkID0gIkRlcFJvdyIgKyBpOwog
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgY2hlY2tCb3hJZCA9ICJSZXQiICsg
Um93TnVtICsgaTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjaGVja0JveCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKGNoZWNrQm94SWQpOwogICAgICAgICAgICBpZiAoY2hlY2tCb3ggIT0g
bnVsbCkgewogICAgICAgICAgICAgICAgaWYgKGNoZWNrQm94LmNoZWNrZWQpIHsKICAgICAgICAg
ICAgICAgICAgICBjaGVja3ZhbCA9IGNoZWNrQm94OwogICAgICAgICAgICAgICAgICAgIGlmICh3
aGljaExlZyA9PSAiRGVwYXJ0IikgewogICAgICAgICAgICAgICAgICAgICAgICBndWVzdElkID0g
ImRlcFJvdyMiICsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgc2VhdElkID0gImRlcFNlYXRS
b3ciICsgaTsKICAgICAgICAgICAgICAgICAgICAgICAgY29ublNlYXRJZCA9ICJkZXBTZWF0Q29u
blJvdyIgKyBpOwogICAgICAgICAgICAgICAgICAgICAgICBzZWxFbGVWQUlkID0gImRlcEVsZVZB
Um93IiArIGk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgZ3Vlc3RJZCA9ICJyZXQiICsgUm93TnVtUmV0ICsgaTsKICAgICAgICAgICAgICAgICAg
ICAgICAgc2VhdElkID0gInNlYXQiICsgUm93TnVtICsgaTsKICAgICAgICAgICAgICAgICAgICAg
ICAgY29ublNlYXRJZCA9ICJzZWF0Q29ubiIgKyBSb3dOdW0gKyBpOwogICAgICAgICAgICAgICAg
ICAgICAgICBzZWxFbGVWQUlkID0gInJldEVsZVZBUm93IiArIE9hbmRESW5kICsgaTsKICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZ3Vlc3ROdW1iZXJJblBhcnR5ID0g
Z3Vlc3ROdW1iZXJJblBhcnR5ICsgIjsiICsgbnVtSW5QYXJ0eUFycmF5W09hbmRESW5kXS5zcGxp
dCgiOyIpW2ldOwogICAgICAgICAgICAgICAgICAgIHZhciBzZWxHbmFtZSA9IGdGTmFtZUFycltp
XSArICJfIiArIGdMTmFtZUFycltpXTsKICAgICAgICAgICAgICAgICAgICBzZWxHdWVzdHMgPSBz
ZWxHdWVzdHMgKyAiOyIgKyBzZWxHbmFtZTsKICAgICAgICAgICAgICAgICAgICBzZWF0T2JqID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VhdElkKS5pbm5lckhUTUw7CiAgICAgICAgICAgICAg
ICAgICAgc2VsU2VhdHMgPSBzZWxTZWF0cyArICI7IiArIHNlYXRPYmo7CiAgICAgICAgICAgICAg
ICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNvbm5TZWF0SWQpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbm5TZWF0T2JqID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29u
blNlYXRJZCkuaW5uZXJIVE1MOwogICAgICAgICAgICAgICAgICAgICAgICBzZWxDb25uU2VhdHMg
PSBzZWxDb25uU2VhdHMgKyAiOyIgKyBjb25uU2VhdE9iajsKICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNlbEVsZVZB
SWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsZVZBSWRPYmogPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZChzZWxFbGVWQUlkKS5pbm5lckhUTUw7CiAgICAgICAgICAgICAgICAgICAgICAg
IHNlbFJld2FyZE5vcyA9IHNlbFJld2FyZE5vcyArICI7IiArIGVsZVZBSWRPYmo7CiAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsUmV3YXJkTm9z
ID0gc2VsUmV3YXJkTm9zICsgIjsiICsgIiAiOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICBndWVzdFR5cGUgPSBndWVzdFR5cGUgKyAiOyIgKyBndWVzdFR5cGVBcnJb
aV07CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuY2hlY2tJbkJhZ0Zvcm0uY2hlY2tDaGFu
Z2UudmFsdWUgPSAiY2hlY2tlZCI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAg
ICAgICB9CiAgICAgICAgaWYgKHdoaWNoTGVnID09ICJEZXBhcnQiKSB7CiAgICAgICAgICAgIHNl
bEd1ZXN0c0lkID0gImNoZWNrSW5Ub3RhbEJhZ3MuZGVwTGVnMSI7CiAgICAgICAgICAgIHNlbFNl
YXRzSWQgPSAiY2hlY2tJblRvdGFsQmFncy5kZXBMZWcxU2VhdCI7CiAgICAgICAgICAgIHNlbENv
bm5TZWF0c0lkID0gImNoZWNrSW5Ub3RhbEJhZ3MuZGVwTGVnMlNlYXQiOwogICAgICAgICAgICBu
dW1JblBhcnR5SWQgPSAiY2hlY2tJblRvdGFsQmFncy5zdHJEZXBOdW1iZXJJblBhcnR5IjsKICAg
ICAgICAgICAgc2VsUmV3Tm9JZCA9ICJjaGVja0luVG90YWxCYWdzLnJld051bURlcCI7CiAgICAg
ICAgICAgIHNlbEdUSWQgPSAiY2hlY2tJblRvdGFsQmFncy5kZXBHdWVzdFR5cGUiOwogICAgICAg
ICAgICB4LmVsZW1lbnRzW3NlbEdUSWRdLnZhbHVlID0gZ3Vlc3RUeXBlOwogICAgICAgICAgICB4
LmVsZW1lbnRzW251bUluUGFydHlJZF0udmFsdWUgPSBndWVzdE51bWJlckluUGFydHk7CiAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgc2VsR3Vlc3RzSWQgPSAiY2hlY2tJblRvdGFsQmFncy5z
ZWxHdWVzdHNbIiArIChPYW5kREluZCAtIDEpICsgIl0iOwogICAgICAgICAgICBzZWxTZWF0c0lk
ID0gImNoZWNrSW5Ub3RhbEJhZ3Muc2VsU2VhdHNbIiArIChPYW5kREluZCAtIDEpICsgIl0iOwog
ICAgICAgICAgICBzZWxDb25uU2VhdHNJZCA9ICJjaGVja0luVG90YWxCYWdzLnNlbENvbm5TZWF0
c1siICsgKE9hbmRESW5kIC0gMSkgKyAiXSI7CiAgICAgICAgICAgIHNlbE51bUluUGFySWQgPSAi
Y2hlY2tJblRvdGFsQmFncy5zZWxOdW1JblBhcnR5WyIgKyAoT2FuZERJbmQgLSAxKSArICJdIjsK
ICAgICAgICAgICAgc2VsUmV3Tm9JZCA9ICJjaGVja0luVG90YWxCYWdzLnNlbFJld05vc1siICsg
KE9hbmRESW5kIC0gMSkgKyAiXSI7CiAgICAgICAgICAgIHNlbEdUSWQgPSAiY2hlY2tJblRvdGFs
QmFncy5zZWxHdWVzdFR5cGVbIiArIChPYW5kREluZCAtIDEpICsgIl0iOwogICAgICAgICAgICB4
LmVsZW1lbnRzW3NlbEdUSWRdLnZhbHVlID0gZ3Vlc3RUeXBlOwogICAgICAgICAgICB4LmVsZW1l
bnRzW3NlbE51bUluUGFySWRdLnZhbHVlID0gZ3Vlc3ROdW1iZXJJblBhcnR5OwogICAgICAgIH0K
ICAgICAgICB4LmVsZW1lbnRzW3NlbEd1ZXN0c0lkXS52YWx1ZSA9IHNlbEd1ZXN0czsKICAgICAg
ICB4LmVsZW1lbnRzW3NlbFNlYXRzSWRdLnZhbHVlID0gc2VsU2VhdHM7CiAgICAgICAgaWYgKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKGNvbm5TZWF0SWQpKSB7CiAgICAgICAgICAgIHguZWxlbWVu
dHNbc2VsQ29ublNlYXRzSWRdLnZhbHVlID0gc2VsQ29ublNlYXRzOwogICAgICAgIH0KICAgICAg
ICB4LmVsZW1lbnRzWyJjaGVja0luVG90YWxCYWdzLmRlcFNlbGVjdCJdLnZhbHVlID0gIm5vdFNl
bGVjdCI7CiAgICAgICAgaWYgKHdoaWNoTGVnICE9ICJEZXBhcnQiKSB7CiAgICAgICAgICAgIHgu
ZWxlbWVudHNbImNoZWNrSW5Ub3RhbEJhZ3MucmV0U2VsZWN0Il0udmFsdWUgPSAibm90U2VsZWN0
IjsKICAgICAgICB9CiAgICAgICAgeC5lbGVtZW50c1tzZWxSZXdOb0lkXS52YWx1ZSA9IHNlbFJl
d2FyZE5vczsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgT2FuZERTaXplOyBpKyspIHsKICAgICAg
ICAgICAgZm9yIChrID0gMDsgayA8IGd1ZXN0U2l6ZTsgaysrKSB7CiAgICAgICAgICAgICAgICBp
ZiAoaSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgY2hlY2tCb3hJZCA9ICJEZXBSb3ciICsg
azsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgY2hlY2tCb3hJ
ZCA9ICJSZXRSb3ciICsgaSArIGs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBj
aGVja0JveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNoZWNrQm94SWQpOwogICAgICAgICAg
ICAgICAgaWYgKGNoZWNrQm94ICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoY2hl
Y2tCb3guY2hlY2tlZCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSAwKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB4LmVsZW1lbnRzWyJjaGVja0luVG90YWxCYWdzLmRl
cFNlbGVjdCJdLnZhbHVlID0gInNlbGVjdCI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LmVsZW1lbnRzWyJjaGVja0luVG90YWxC
YWdzLnJldFNlbGVjdCJdLnZhbHVlID0gInNlbGVjdCI7CiAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICh4LmVs
ZW1lbnRzWyJjaGVja0luVG90YWxCYWdzLmRlcFNlbGVjdCJdLnZhbHVlID09ICJub3RTZWxlY3Qi
ICYmICh4LmVsZW1lbnRzWyJjaGVja0luVG90YWxCYWdzLnJldFNlbGVjdCJdLnZhbHVlID09ICJu
b3RTZWxlY3QiIHx8IHguZWxlbWVudHNbImNoZWNrSW5Ub3RhbEJhZ3MucmV0U2VsZWN0Il0udmFs
dWUgPT0gIiIpKSB7CiAgICAgICAgICAgIGNoZWNrdmFsID0gInVuZGVmaW5lZCI7CiAgICAgICAg
fQogICAgfQp9CmZ1bmN0aW9uIGRpc2FibGUodGFiSWQpIHsKICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhYklkKS5pbm5lckhUTUwgPSAiPGltZyBzcmM9J2h0dHBzOi8vc3RhdGljLnZpcmdp
bmFtZXJpY2EuY29tL2ltYWdlcy9UcmF2ZWxfbW5nX3JlZC5naWYnLz4iOwp9CmZ1bmN0aW9uIGhp
ZGUoYXJnKSB7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhcmcpLnN0eWxlLmRpc3BsYXkg
PSAibm9uZSI7Cn0KZnVuY3Rpb24gc2hvdyhhcmcxKSB7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZChhcmcxKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKfQpmdW5jdGlvbiBzZXREZWZhdWx0
VGFiKHRhYklEKSB7CiAgICBoaWRlKCJkaXZWSSIpOwogICAgaGlkZSgiZGl2Q0hGIik7CiAgICBo
aWRlKCJkaXZDRiIpOwogICAgc2hvdyh0YWJJRCk7Cn0KdmFyIHJlZGlkID0gIiI7CgpmdW5jdGlv
biBzZXREZWZUYWIocmVkaWQpIHsKICAgIGlmIChyZWRpZCA9PSAidHJpcGlkIikgewogICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHJlZGlkKS5zcmMgPSAiaHR0cHM6Ly9zdGF0aWMudmly
Z2luYW1lcmljYS5jb20vaW1hZ2VzL3lvdXJfdHJpcF9yZWQuZ2lmIjsKICAgIH0KICAgIGlmIChy
ZWRpZCA9PSAiY2hpZCIpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChyZWRpZCku
c3JjID0gImh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy9jaGFuZ2VfZmxp
Z2h0X3JlZC5naWYiOwogICAgfQogICAgaWYgKHJlZGlkID09ICJjYW5pZCIpIHsKICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChyZWRpZCkuc3JjID0gImh0dHBzOi8vc3RhdGljLnZpcmdp
bmFtZXJpY2EuY29tL2ltYWdlcy9jYW5jZWxfZmxpZ2h0X3JlZC5naWYiOwogICAgfQp9CnZhciB0
cmlwaWQxID0gIiI7CnZhciBjaGlkMSA9ICIiOwp2YXIgY2FuaWQxID0gIiI7CgpmdW5jdGlvbiBj
aGFuZ2VQSUModHJpcGlkMSwgY2hpZDEsIGNhbmlkMSkgewogICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodHJpcGlkMSkuc3JjID0gImh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2lt
YWdlcy95b3VyX3RyaXBfZ3JleS5naWYiOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY2hp
ZDEpLnNyYyA9ICJodHRwczovL3N0YXRpYy52aXJnaW5hbWVyaWNhLmNvbS9pbWFnZXMvY2hhbmdl
X2ZsaWdodF9ncmV5LmdpZiI7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjYW5pZDEpLnNy
YyA9ICJodHRwczovL3N0YXRpYy52aXJnaW5hbWVyaWNhLmNvbS9pbWFnZXMvY2FuY2VsX2ZsaWdo
dF9ncmV5LmdpZiI7Cn0KZnVuY3Rpb24gc2V0RGl2KGRpdklEKSB7CiAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidHJpcGlkIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjaGlkIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjYW5pZCIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChkaXZJRCkuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Cn0K
ZnVuY3Rpb24gYWpheFBuckRpc3BsYXkobXl1cmwsIGRpdiwgaWQpIHsKICAgIGFqYXhEaXYgPSBk
aXY7CiAgICBpZiAoYWpheERpdiA9PSAiYm9keSIpIHsKICAgICAgICBzaG93V2FpdEltYWdlKCk7
CiAgICB9CiAgICBzaG93V2FpdEltYWdlKCk7CiAgICB4bWxodHRwID0gbmV3IFhNTEh0dHBSZXF1
ZXN0KCk7CiAgICB2YXIgdGhldGltZSA9IG5ldyBEYXRlKCk7CiAgICB2YXIgZHVtbXkgPSAiIiAr
IHRoZXRpbWUuZ2V0SG91cnMoKSArIHRoZXRpbWUuZ2V0TWludXRlcygpICsgdGhldGltZS5nZXRT
ZWNvbmRzKCk7CiAgICBteXVybCA9IG15dXJsICsgIiZkdW1teT0iICsgZHVtbXk7CiAgICBhamF4
RGl2ID0gZGl2OwogICAgeG1saHR0cC5vcGVuKCJQT1NUIiwgbXl1cmwsIHRydWUpOwogICAgeG1s
aHR0cC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBoYW5kbGVSZXNwb25zZVBuckRpc3BsYXk7CiAgICB4
bWxodHRwLnNlbmQoIiIpOwp9CmZ1bmN0aW9uIGhhbmRsZVJlc3BvbnNlUG5yRGlzcGxheSgpIHsK
ICAgIHZhciBpbmQgPSAtMTsKICAgIGlmICh4bWxodHRwLnJlYWR5U3RhdGUgPT0gNCkgewogICAg
ICAgIGlmICh4bWxodHRwLnN0YXR1cyA9PSAyMDApIHsKICAgICAgICAgICAgdmFyIFBOUlJlc3Bv
bnNlVGV4dCA9IHhtbGh0dHAucmVzcG9uc2VUZXh0OwogICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgibG9hZGluZ0FuaW1hdGlvbkRpdiIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7
CiAgICAgICAgICAgIGlmIChQTlJSZXNwb25zZVRleHQudHJpbSgpID09ICJBamF4U2Vzc2lvblRp
bWVPdXQiKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAiL2hvbWUuZG8/bWV0
aG9kPXZpcmdpbkFtZXJpY2Emc2Vzc2lvblN0YXRlPXNlc3Npb25UaW1lT3V0IjsKICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChQTlJSZXNwb25zZVRleHQuc2VhcmNoKCJi
dG5fZmluZF9mbGlnaHQuZ2lmIikgPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZChhamF4RGl2KS5pbm5lckhUTUwgPSBQTlJSZXNwb25zZVRleHQ7CiAg
ICAgICAgICAgICAgICAgICAgaWYgKGFqYXhEaXYgPT0gImNoa0luUmlnaHRCYXJFcnJvciIpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYWpheERpdiku
aW5uZXJIVE1MID0gUE5SUmVzcG9uc2VUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICBhamF4
UG5yRGlzcGxheSgidXBhZHRlUmlnaHRCYXJXaXRoQWpheC5kbz9tZXRob2Q9dXBkYXRlUmlnaHRC
YXJBamF4IiwgImNoa0luUmlnaHRCYXJFcnJvciIpOwogICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhamF4RGl2ID09ICJib2R5IikgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWpheFBuckRpc3BsYXkoInBvc3RVcGRhdGVUaXRsZUJh
ci5kbz9tZXRob2Q9dXBkYXRlVGl0bGVCYXIiLCAicG9zdFRpdGxlQmFyRGl2Iik7CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGtJ
blJpZ2h0QmFyRXJyb3IiKS5pbm5lckhUTUwgPSBQTlJSZXNwb25zZVRleHQ7CiAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gYWpheFBuckRp
c3BsYXlGb3JQb2ludHMobXl1cmwsIGRpdiwgaWQpIHsKICAgIGlmIChkaXYgPT0gImJvZHkiKSB7
CiAgICAgICAgc2hvd1dhaXRJbWFnZSgpOwogICAgfQogICAgJCgiIyIgKyBkaXYpLmxvYWQobXl1
cmwsICIiLCBkb25lKTsKCiAgICBmdW5jdGlvbiBkb25lKCkgewogICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJsb2FkaW5nQW5pbWF0aW9uRGl2Iikuc3R5bGUuZGlzcGxheSA9ICJub25l
IjsKICAgICAgICBpZiAoZGl2ID09ICJib2R5IikgewogICAgICAgICAgICBhamF4UG5yRGlzcGxh
eVBvaW50cygicG9zdFVwZGF0ZVRpdGxlQmFyLmRvP21ldGhvZD11cGRhdGVUaXRsZUJhciIsICJw
b3N0VGl0bGVCYXJEaXYiKTsKICAgICAgICB9CiAgICB9Cn0KdmFyIHdpbmRvd09iamVjdCA9ICIi
OwoKZnVuY3Rpb24gc2VuZEVtYWlsUE5SUmVzdWx0KHBuck51bWJlciwgbGlua0lkKSB7CiAgICBh
amF4RW1haWxQTlJSZXN1bHQocG5yTnVtYmVyLCBsaW5rSWQpOwogICAgbGlua0lkID0gbGlua0lk
OwogICAgc2hvd1dhaXRJbWFnZSgpOwp9CnZhciBlbWFpbDsKCmZ1bmN0aW9uIHNlbmRFbWFpbCgp
IHsKICAgIHNob3dXYWl0SW1hZ2UoKTsKICAgIGVtYWlsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInZpZXdJdGluZXJhcnlFbWFpbCIpLnZhbHVlOwogICAgdmFyIHBuck51bWJlciA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJwbnJOdW1iZXIiKS52YWx1ZTsKICAgIHZhciBpbmNsdWRlQmls
bGluZ0luZm8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlld0l0aW5lcmFyeUVtYWlsQmls
bGluZyIpLmNoZWNrZWQ7CiAgICB2YXIgbGlua0lkID0gInNlbmRFbWlsSWQiOwogICAgYWpheEVt
YWlsUE5SUmVzdWx0KHBuck51bWJlciwgZW1haWwsIGxpbmtJZCwgaW5jbHVkZUJpbGxpbmdJbmZv
KTsKfQpmdW5jdGlvbiBjbG9zZVNlbmRFbWFpbFBvcFVwKGFyZykgewogICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoYXJnKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwp9CmZ1bmN0aW9uIGFqYXhF
bWFpbFBOUlJlc3VsdChwbnJOdW1iZXIsIGVtYWlsLCBsaW5rSWQsIGluY2x1ZGVCaWxsaW5nSW5m
bykgewogICAgeG1saHR0cCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgdmFyIHRoZXRpbWUg
PSBuZXcgRGF0ZSgpOwogICAgdmFyIGR1bW15ID0gIiIgKyB0aGV0aW1lLmdldEhvdXJzKCkgKyB0
aGV0aW1lLmdldE1pbnV0ZXMoKSArIHRoZXRpbWUuZ2V0U2Vjb25kcygpOwogICAgaWYgKGluY2x1
ZGVCaWxsaW5nSW5mbyA9PSB0cnVlKSB7CiAgICAgICAgdmFyIG15VXJsID0gInByaW50VW5pdmVy
c2FsUmVjZWlwdC5kbz9tZXRob2Q9cHJpbnRVbml2ZXJzYWxSZWNlaXB0JnBuck51bWJlcj0iICsg
cG5yTnVtYmVyICsgIiZlbWFpbElkPSIgKyBlbWFpbCArICImaW5jbHVkZUJpbGxpbmdJbmZvPSIg
KyBpbmNsdWRlQmlsbGluZ0luZm87CiAgICB9IGVsc2UgewogICAgICAgIHZhciBteVVybCA9ICJz
ZW5kRW1haWxJdGluZXJhcnkuZG8/bWV0aG9kPXNlbmRFbWFpbEl0aW5lcmFyeSZwbnJOdW1iZXI9
IiArIHBuck51bWJlciArICImZW1haWxJZD0iICsgZW1haWwgKyAiJmluY2x1ZGVCaWxsaW5nSW5m
bz0iICsgaW5jbHVkZUJpbGxpbmdJbmZvOwogICAgfQogICAgbXlVcmwgPSBteVVybCArICImZHVt
bXk9IiArIGR1bW15OwogICAgYWpheERpdiA9IGxpbmtJZDsKICAgIHhtbGh0dHAub3BlbigiUE9T
VCIsIG15VXJsLCB0cnVlKTsKICAgIHhtbGh0dHAub25yZWFkeXN0YXRlY2hhbmdlID0gaGFuZGxl
UmVzcG9uc2VFbWFpbFBOUlJlc3VsdDsKICAgIHhtbGh0dHAuc2VuZCgiIik7Cn0KZnVuY3Rpb24g
aGFuZGxlUmVzcG9uc2VFbWFpbFBOUlJlc3VsdCgpIHsKICAgIGlmICh4bWxodHRwLnJlYWR5U3Rh
dGUgPT0gNCkgewogICAgICAgIGlmICh4bWxodHRwLnN0YXR1cyA9PSAyMDApIHsKICAgICAgICAg
ICAgaWYgKCh4bWxodHRwLnJlc3BvbnNlVGV4dCkudHJpbSgpID09ICJTdWNjZXNzIikgewogICAg
ICAgICAgICAgICAgcG9wdXBPdmVybGF5KCJwb3B1cC1lbWFpbEl0aW5lcmFyeS1jb25maXJtLmpz
cCIsICJFbWFpbCBJdGluZXJhcnkgJmFtcDsgUmVjZWlwdCIsIDM1MCwgdGhpcywgZmFsc2UsIDAs
IDAsIGZhbHNlLCBlbWFpbCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBw
b3B1cE92ZXJsYXkoInBvcHVwLWVtYWlsSXRpbmVyYXJ5LWVycm9yLmpzcCIsICJFbWFpbCBJdGlu
ZXJhcnkgJmFtcDsgUmVjZWlwdCIsIDM1MCwgdGhpcywgZmFsc2UsIDAsIDAsIGZhbHNlKTsKICAg
ICAgICAgICAgfQogICAgICAgICAgICBjbG9zZVdhaXRJbWFnZSgpOwogICAgICAgIH0KICAgIH0K
fQpmdW5jdGlvbiBhZGRFdmVudChlbG0sIGV2VHlwZSwgZm4sIHVzZUNhcHR1cmUpIHsKICAgIGlm
IChlbG0uYWRkRXZlbnRMaXN0ZW5lcikgewogICAgICAgIGVsbS5hZGRFdmVudExpc3RlbmVyKGV2
VHlwZSwgZm4sIHVzZUNhcHR1cmUpOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfSBlbHNlIHsK
ICAgICAgICBpZiAoZWxtLmF0dGFjaEV2ZW50KSB7CiAgICAgICAgICAgIHZhciByID0gZWxtLmF0
dGFjaEV2ZW50KCJvbiIgKyBldlR5cGUsIGZuKTsKICAgICAgICAgICAgcmV0dXJuIHI7CiAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgZWxtWyJvbiIgKyBldlR5cGVdID0gZm47CiAgICAgICAg
fQogICAgfQp9CmZ1bmN0aW9uIHNldEZvY3VzT25CdG4oKSB7CiAgICBpZiAoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImRpdlJUIikuc3R5bGUuZGlzcGxheSA9PSAiYmxvY2siKSB7CiAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlJvdW5kV2F5U2VhcmNoIikuZm9jdXMoKTsKICAgIH0K
fQpmdW5jdGlvbiBzZXRGb2N1c09uQnRuRm9yT1coKSB7CiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImRpdk9XIikuc3R5bGUuZGlzcGxheSA9PSAiYmxvY2siKSB7CiAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIk9uZVdheVNlYXJjaCIpLmZvY3VzKCk7CiAgICB9Cn0KZnVu
Y3Rpb24gc2V0Rm9jdXNPbkJ0bkZvck1DKCkgewogICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJkaXZNQyIpLnN0eWxlLmRpc3BsYXkgPT0gImJsb2NrIikgewogICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJNdWx0aVNlYXJjaCIpLmZvY3VzKCk7CiAgICB9Cn0KZnVuY3Rpb24g
bG9hZERpdkZvckNvb2tpZSgpIHsKICAgIGlmIChnZXRDb29raWUoIlRUIikgPT0gInJ0IiB8fCBn
ZXRDb29raWUoIlRUIikgPT0gbnVsbCkgewogICAgICAgIGNoYW5nZVRhYkltZygicnQiKTsKICAg
ICAgICB3aWNoU2VsZWN0ZWQgPSAiZGl2UlQiOwogICAgICAgIHNldERlZmF1bHRUYWIoImRpdlJU
Iik7CiAgICB9IGVsc2UgewogICAgICAgIGlmIChnZXRDb29raWUoIlRUIikgPT0gIm93Iikgewog
ICAgICAgICAgICBjaGFuZ2VUYWJJbWcoIm93Iik7CiAgICAgICAgICAgIHdpY2hTZWxlY3RlZCA9
ICJkaXZPVyI7CiAgICAgICAgICAgIHNldERlZmF1bHRUYWIoImRpdk9XIik7CiAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgaWYgKGdldENvb2tpZSgiVFQiKSA9PSAibWMiKSB7CiAgICAgICAg
ICAgICAgICBjaGFuZ2VUYWJJbWcoIm1jIik7CiAgICAgICAgICAgICAgICB3aWNoU2VsZWN0ZWQg
PSAiZGl2TUMiOwogICAgICAgICAgICAgICAgc2V0RGVmYXVsdFRhYigiZGl2TUMiKTsKICAgICAg
ICAgICAgfQogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiBjaGVja0RhdGUoZGF0ZXZhbHVlKSB7
CiAgICB2YXIgZGF0ZSA9ICIiOwogICAgZm9yIChqID0gMDsgaiA8IGRvY3VtZW50LmZsaWdodFNl
YXJjaFJURm9ybS5lbGVtZW50cy5sZW5ndGg7IGorKykgewogICAgICAgIGlmIChkb2N1bWVudC5m
bGlnaHRTZWFyY2hSVEZvcm0uZWxlbWVudHNbal0ubmFtZSA9PSBkYXRldmFsdWUpIHsKICAgICAg
ICAgICAgZGF0ZSA9IGRvY3VtZW50LmZsaWdodFNlYXJjaFJURm9ybS5lbGVtZW50c1tqXS52YWx1
ZTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQogICAgdmFyIGluZGV4ID0gajsK
ICAgIHM7CiAgICBpZiAoKGRhdGUubGVuZ3RoID09IDIpIHx8IChkYXRlLmxlbmd0aCA9PSA1KSkg
ewogICAgICAgIHZhciBzZXBhcmF0b3IgPSAiLyI7CiAgICAgICAgZGF0ZSA9IGRhdGUuY29uY2F0
KHNlcGFyYXRvcik7CiAgICAgICAgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoUlRGb3JtLmVsZW1lbnRz
W2luZGV4XS52YWx1ZSA9IGRhdGU7CiAgICB9Cn0KZnVuY3Rpb24gY2hhbmdlQ29udGVudCgpIHsK
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJCRl9jb2xsb3BzZSIpLmJhY2tncm91bmQgPSAi
aHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL1RpdGxlX2Jvb2tfZmxpZ2h0
c19leHBhbmRlZC5naWYiOwogICAgdmFyIHggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQkZf
dGFibGUiKS5yb3dzWzFdLmNlbGxzOwogICAgeFswXS5pbm5lckhUTUwgPSAiPGltZyBzcmM9J2h0
dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy90aXRsZV9ib29rZmxpZ2h0X2Zv
b3Rlci5naWYnLz4iOwp9CnZhciBicm93c2VyVHlwZTsKaWYgKGRvY3VtZW50LmxheWVycykgewog
ICAgYnJvd3NlclR5cGUgPSAibm40IjsKfQppZiAoZG9jdW1lbnQuYWxsKSB7CiAgICBicm93c2Vy
VHlwZSA9ICJpZSI7Cn0KaWYgKHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNl
KCkubWF0Y2goImdlY2tvIikpIHsKICAgIGJyb3dzZXJUeXBlID0gImdlY2tvIjsKfQpmdW5jdGlv
biBoaWRlKGFyZzIpIHsKICAgIGlmIChicm93c2VyVHlwZSA9PSAiZ2Vja28iKSB7CiAgICAgICAg
ZG9jdW1lbnQucG9wcGVkTGF5ZXIgPSBldmFsKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhcmcy
KSIpOwogICAgfSBlbHNlIHsKICAgICAgICBpZiAoYnJvd3NlclR5cGUgPT0gImllIikgewogICAg
ICAgICAgICBkb2N1bWVudC5wb3BwZWRMYXllciA9IGV2YWwoImRvY3VtZW50LmFsbFthcmcyXSIp
OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGRvY3VtZW50LnBvcHBlZExheWVyID0gZXZh
bCgiZG9jdW1lbnQubGF5ZXJzW2FyZzJdIik7CiAgICAgICAgfQogICAgfQogICAgZG9jdW1lbnQu
cG9wcGVkTGF5ZXIuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKfQpmdW5jdGlvbiBzaG93KGFyZzIp
IHsKICAgIGlmIChicm93c2VyVHlwZSA9PSAiZ2Vja28iKSB7CiAgICAgICAgZG9jdW1lbnQucG9w
cGVkTGF5ZXIgPSBldmFsKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhcmcyKSIpOwogICAgfSBl
bHNlIHsKICAgICAgICBpZiAoYnJvd3NlclR5cGUgPT0gImllIikgewogICAgICAgICAgICBkb2N1
bWVudC5wb3BwZWRMYXllciA9IGV2YWwoImRvY3VtZW50LmFsbFthcmcyXSIpOwogICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgIGRvY3VtZW50LnBvcHBlZExheWVyID0gZXZhbCgiZG9jdW1lbnQu
bGF5ZXJzW2FyZzJdIik7CiAgICAgICAgfQogICAgfQogICAgZG9jdW1lbnQucG9wcGVkTGF5ZXIu
c3R5bGUuZGlzcGxheSA9ICJibG9jayI7Cn0KZnVuY3Rpb24gc2V0RGVmYXVsdFRhYih0YWJJRCkg
ewogICAgdGFiVmFsID0gdGFiSUQ7CiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhv
bWVFcnJvck1lc3NhZ2VEaXYiKSkgewogICAgICAgIGlmICh3aWNoU2VsZWN0ZWQgIT0gdGFiSUQp
IHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvbWVFcnJvck1lc3NhZ2VE
aXYiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJob21lRXJyb3JNZXNzYWdlRGl2Iikuc3R5bGUuZGlz
cGxheSA9ICJibG9jayI7CiAgICAgICAgfQogICAgfQogICAgaGlkZSgiZGl2UlQiKTsKICAgIGhp
ZGUoImRpdk9XIik7CiAgICBoaWRlKCJkaXZNQyIpOwogICAgc2hvdyh0YWJJRCk7Cn0KZnVuY3Rp
b24gc2V0Rm9ybUZhcmVUeXBlKHRhYklEKSB7CiAgICB2YXIgdGhpc0Zvcm0gPSBudWxsOwogICAg
aWYgKGZvcm1UcmlwVHlwZSA9PSAicnQiKSB7CiAgICAgICAgdGhpc0Zvcm0gPSAiZmxpZ2h0U2Vh
cmNoUlRGb3JtIjsKICAgIH0KICAgIGlmIChmb3JtVHJpcFR5cGUgPT0gIm93IikgewogICAgICAg
IHRoaXNGb3JtID0gImZsaWdodFNlYXJjaE9XRm9ybSI7CiAgICB9CiAgICBpZiAoZm9ybVRyaXBU
eXBlID09ICJtYyIpIHsKICAgICAgICB0aGlzRm9ybSA9ICJmbGlnaHRTZWFyY2hNQ0Zvcm0iOwog
ICAgfQogICAgaWYgKGV2YWwoImRvY3VtZW50LiIgKyB0aGlzRm9ybSkpIHsKICAgICAgICB2YXIg
Zm9ybVZhbCA9IGV2YWwoImRvY3VtZW50LiIgKyB0aGlzRm9ybSArICIuZWxlbWVudHNbJ2ZsaWdo
dFNlYXJjaC5mYXJlRm9ybWF0VHlwZSddLnZhbHVlIik7CiAgICAgICAgaWYgKHRhYklEID09ICJy
dCIpIHsKICAgICAgICAgICAgdGhpc0Zvcm0gPSAiZmxpZ2h0U2VhcmNoUlRGb3JtIjsKICAgICAg
ICB9CiAgICAgICAgaWYgKHRhYklEID09ICJvdyIpIHsKICAgICAgICAgICAgdGhpc0Zvcm0gPSAi
ZmxpZ2h0U2VhcmNoT1dGb3JtIjsKICAgICAgICB9CiAgICAgICAgaWYgKHRhYklEID09ICJtYyIp
IHsKICAgICAgICAgICAgdGhpc0Zvcm0gPSAiZmxpZ2h0U2VhcmNoTUNGb3JtIjsKICAgICAgICB9
CiAgICAgICAgdmFyIG9iaiA9IGV2YWwoImRvY3VtZW50LiIgKyB0aGlzRm9ybSArICIuZWxlbWVu
dHNbJ2ZsaWdodFNlYXJjaC5mYXJlRm9ybWF0VHlwZSddIik7CiAgICAgICAgb2JqLnZhbHVlID0g
Zm9ybVZhbDsKICAgIH0KfQpmdW5jdGlvbiBjaGFuZ2VQSUModGFiSUQsIG5hbWVJTUcpIHsKICAg
IGlmICh0eXBlb2YgKGN1cnJlbnRUcmlwVHlwZSkgIT0gInVuZGVmaW5lZCIpIHsKICAgICAgICBj
dXJyZW50VHJpcFR5cGUgPSB0YWJJRDsKICAgIH0KICAgIHZhciBvYmo7CiAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicnQiKS5jbGFzc05hbWUgPSAiZmxpZ2h0T3B0aW9uUlREZWZhdWx0IjsK
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdyIpLmNsYXNzTmFtZSA9ICJmbGlnaHRPcHRp
b25PV0RlZmF1bHQiOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1jIikuY2xhc3NOYW1l
ID0gImZsaWdodE9wdGlvbk1DRGVmYXVsdCI7CiAgICBvYmogPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicnRhIik7CiAgICBvYmouZGlzYWJsZWQgPSBmYWxzZTsKICAgIG9iai5zdHlsZS5jdXJz
b3IgPSAicG9pbnRlciI7CiAgICBvYmogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3dhIik7
CiAgICBvYmouZGlzYWJsZWQgPSBmYWxzZTsKICAgIG9iai5zdHlsZS5jdXJzb3IgPSAicG9pbnRl
ciI7CiAgICBvYmogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWNhIik7CiAgICBvYmouZGlz
YWJsZWQgPSBmYWxzZTsKICAgIG9iai5zdHlsZS5jdXJzb3IgPSAicG9pbnRlciI7CiAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YWJJRCkuY2xhc3NOYW1lID0gbmFtZUlNRzsKICAgIG9iaiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhYklEICsgImEiKTsKICAgIG9iai5zdHlsZS5jdXJz
b3IgPSAidGV4dCI7CiAgICBvYmouZGlzYWJsZWQgPSB0cnVlOwogICAgaWYgKGZvcm1UcmlwVHlw
ZSkgewogICAgICAgIHNldEZvcm1GYXJlVHlwZSh0YWJJRCk7CiAgICB9CiAgICBpZiAoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInNlYXJjaFByb21vQ29kZSIpKSB7CiAgICAgICAgaWYgKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJzZWFyY2hQcm9tb0NvZGUiKS5zdHlsZS5kaXNwbGF5ID0gImJs
b2NrIikgewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VhcmNoUHJvbW9D
b2RlIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24g
Y2hhbmdlUElDVCh0YWJJRCwgbmFtZUlNRykgewogICAgdmFyIG9iajsKICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJydCIpLnNyYyA9ICJodHRwczovL3N0YXRpYy52aXJnaW5hbWVyaWNhLmNv
bS9pbWFnZXMvdGFiX3J0MV9kZWZhdWx0LmdpZiI7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgib3ciKS5zcmMgPSAiaHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL3Rh
Yl9vdzFfZGVmYXVsdC5naWYiOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1jIikuc3Jj
ID0gImh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy90YWJfbWMxX2RlZmF1
bHQuZ2lmIjsKICAgIG9iaiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJydCIpLnBhcmVudE5v
ZGU7CiAgICBvYmouZGlzYWJsZWQgPSBmYWxzZTsKICAgIG9iai5zdHlsZS5jdXJzb3IgPSAicG9p
bnRlciI7CiAgICBvYmogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3ciKS5wYXJlbnROb2Rl
OwogICAgb2JqLmRpc2FibGVkID0gZmFsc2U7CiAgICBvYmouc3R5bGUuY3Vyc29yID0gInBvaW50
ZXIiOwogICAgb2JqID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1jIikucGFyZW50Tm9kZTsK
ICAgIG9iai5kaXNhYmxlZCA9IGZhbHNlOwogICAgb2JqLnN0eWxlLmN1cnNvciA9ICJwb2ludGVy
IjsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhYklEKS5zcmMgPSBuYW1lSU1HOwogICAg
b2JqID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFiSUQpLnBhcmVudE5vZGU7CiAgICBvYmou
c3R5bGUuY3Vyc29yID0gInRleHQiOwogICAgb2JqLmRpc2FibGVkID0gdHJ1ZTsKICAgIGlmIChk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VhcmNoUHJvbW9Db2RlIikpIHsKICAgICAgICBpZiAo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlYXJjaFByb21vQ29kZSIpLnN0eWxlLmRpc3BsYXkg
PSAiYmxvY2siKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWFyY2hQ
cm9tb0NvZGUiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgIH0KICAgIH0KfQpmdW5j
dGlvbiBjaGFuZ2VJbWFnZU9uTW91c2VPdmVyT3JPdXQob2JqLCBJTUcpIHsKICAgIG9iai5zcmMg
PSBJTUc7Cn0KZnVuY3Rpb24gcmVzZXREaXYoZGl2SUQpIHsKICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJkaXZSVCIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZGl2T1ciKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImRpdk1DIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKGRpdklEKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKfQpmdW5j
dGlvbiBsb2FkRGF0YUZyb21Db29raWVzKCkgewogICAgZm9yIChqID0gMDsgaiA8IGRvY3VtZW50
LmZsaWdodFNlYXJjaFJURm9ybS5lbGVtZW50cy5sZW5ndGg7IGorKykgewogICAgICAgIHZhciBv
YmogPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hSVEZvcm0uZWxlbWVudHNbal07CiAgICAgICAgaWYg
KG9iai5uYW1lID09ICJmbGlnaHRTZWFyY2gub3JpZ2luIikgewogICAgICAgICAgICBvYmoudmFs
dWUgPSAoZ2V0Q29va2llKG9iai5uYW1lKSAhPSBudWxsKSA/IGdldENvb2tpZShvYmoubmFtZSkg
OiAob2JqLnZhbHVlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAob2JqLm5hbWUg
PT0gImZsaWdodFNlYXJjaC5kZXN0aW5hdGlvbiIpIHsKICAgICAgICAgICAgICAgIG9iai52YWx1
ZSA9IChnZXRDb29raWUob2JqLm5hbWUpICE9IG51bGwpID8gZ2V0Q29va2llKG9iai5uYW1lKSA6
IChvYmoudmFsdWUpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKG9i
ai5uYW1lID09ICJmbGlnaHRTZWFyY2guZGVwRGF0ZS5NTUREWVlZWSIpIHsKICAgICAgICAgICAg
ICAgICAgICBvYmoudmFsdWUgPSAoKGdldENvb2tpZShvYmoubmFtZSkgIT0gbnVsbCkgJiYgKERh
dGUucGFyc2UoZ2V0Q29va2llKG9iai5uYW1lKSkgPj0gKERhdGUucGFyc2UobmV3IERhdGUoKSkg
LSAyNCAqIDYwICogNjAgKiAxMDAwKSkpID8gZ2V0Q29va2llKG9iai5uYW1lKSA6IChvYmoudmFs
dWUpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAob2Jq
Lm5hbWUgPT0gImZsaWdodFNlYXJjaC5yZXR1cm5EYXRlLk1NRERZWVlZIikgewogICAgICAgICAg
ICAgICAgICAgICAgICBvYmoudmFsdWUgPSAoKGdldENvb2tpZShvYmoubmFtZSkgIT0gbnVsbCkg
JiYgKERhdGUucGFyc2UoZ2V0Q29va2llKG9iai5uYW1lKSkgPj0gKERhdGUucGFyc2UobmV3IERh
dGUoKSkgLSAyNCAqIDYwICogNjAgKiAxMDAwKSkpID8gZ2V0Q29va2llKG9iai5uYW1lKSA6IChv
YmoudmFsdWUpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChvYmoubmFtZSA9PSAiZmxpZ2h0U2VhcmNoLmFkdWx0cyIpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9iai52YWx1ZSA9IChnZXRDb29raWUob2JqLm5hbWUpICE9IG51
bGwpID8gZ2V0Q29va2llKG9iai5uYW1lKSA6IChvYmoudmFsdWUpOwogICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5uYW1l
ID09ICJmbGlnaHRTZWFyY2gua2lkcyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvYmoudmFsdWUgPSAoZ2V0Q29va2llKG9iai5uYW1lKSAhPSBudWxsKSA/IGdldENvb2tpZShv
YmoubmFtZSkgOiAob2JqLnZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5uYW1lID09ICJmbGln
aHRTZWFyY2guaW5mYW50cyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b2JqLnZhbHVlID0gKGdldENvb2tpZShvYmoubmFtZSkgIT0gbnVsbCkgPyBnZXRDb29raWUob2Jq
Lm5hbWUpIDogKG9iai52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAg
ICAgfQogICAgfQogICAgZm9yIChqID0gMDsgaiA8IGRvY3VtZW50LmZsaWdodFNlYXJjaE9XRm9y
bS5lbGVtZW50cy5sZW5ndGg7IGorKykgewogICAgICAgIHZhciBvYmogPSBkb2N1bWVudC5mbGln
aHRTZWFyY2hPV0Zvcm0uZWxlbWVudHNbal07CiAgICAgICAgaWYgKG9iai5uYW1lID09ICJmbGln
aHRTZWFyY2gub3JpZ2luIikgewogICAgICAgICAgICBvYmoudmFsdWUgPSAoZ2V0Q29va2llKG9i
ai5uYW1lKSAhPSBudWxsKSA/IGdldENvb2tpZShvYmoubmFtZSkgOiAob2JqLnZhbHVlKTsKICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAob2JqLm5hbWUgPT0gImZsaWdodFNlYXJjaC5k
ZXN0aW5hdGlvbiIpIHsKICAgICAgICAgICAgICAgIG9iai52YWx1ZSA9IChnZXRDb29raWUob2Jq
Lm5hbWUpICE9IG51bGwpID8gZ2V0Q29va2llKG9iai5uYW1lKSA6IChvYmoudmFsdWUpOwogICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKG9iai5uYW1lID09ICJmbGlnaHRT
ZWFyY2guZGVwRGF0ZU9XLk1NRERZWVlZIikgewogICAgICAgICAgICAgICAgICAgIG9iai52YWx1
ZSA9ICgoZ2V0Q29va2llKG9iai5uYW1lKSAhPSBudWxsKSAmJiAoRGF0ZS5wYXJzZShnZXRDb29r
aWUob2JqLm5hbWUpKSA+PSAoRGF0ZS5wYXJzZShuZXcgRGF0ZSgpKSAtIDI0ICogNjAgKiA2MCAq
IDEwMDApKSkgPyBnZXRDb29raWUob2JqLm5hbWUpIDogKG9iai52YWx1ZSk7CiAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmIChvYmoubmFtZSA9PSAiZmxpZ2h0
U2VhcmNoLmFkdWx0cyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnZhbHVlID0gKGdl
dENvb2tpZShvYmoubmFtZSkgIT0gbnVsbCkgPyBnZXRDb29raWUob2JqLm5hbWUpIDogKG9iai52
YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG9iai5uYW1lID09ICJmbGlnaHRTZWFyY2gua2lkcyIpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9iai52YWx1ZSA9IChnZXRDb29raWUob2JqLm5hbWUpICE9IG51bGwpID8g
Z2V0Q29va2llKG9iai5uYW1lKSA6IChvYmoudmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5uYW1lID09ICJm
bGlnaHRTZWFyY2guaW5mYW50cyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
YmoudmFsdWUgPSAoZ2V0Q29va2llKG9iai5uYW1lKSAhPSBudWxsKSA/IGdldENvb2tpZShvYmou
bmFtZSkgOiAob2JqLnZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGZvciAoaiA9IDA7IGogPCBkb2N1
bWVudC5mbGlnaHRTZWFyY2hNQ0Zvcm0uZWxlbWVudHMubGVuZ3RoOyBqKyspIHsKICAgICAgICB2
YXIgb2JqID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNoTUNGb3JtLmVsZW1lbnRzW2pdOwogICAgICAg
IGlmIChvYmoubmFtZSA9PSAiZmxpZ2h0U2VhcmNoLm9yaWdpbiIpIHsKICAgICAgICAgICAgb2Jq
LnZhbHVlID0gKGdldENvb2tpZShvYmoubmFtZSkgIT0gbnVsbCkgPyBnZXRDb29raWUob2JqLm5h
bWUpIDogKG9iai52YWx1ZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKG9iai5u
YW1lID09ICJmbGlnaHRTZWFyY2guZGVzdGluYXRpb24iKSB7CiAgICAgICAgICAgICAgICBvYmou
dmFsdWUgPSAoZ2V0Q29va2llKG9iai5uYW1lKSAhPSBudWxsKSA/IGdldENvb2tpZShvYmoubmFt
ZSkgOiAob2JqLnZhbHVlKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlm
IChvYmoubmFtZSA9PSAiZmxpZ2h0U2VhcmNoLmRlcERhdGVNQy5NTUREWVlZWSIpIHsKICAgICAg
ICAgICAgICAgICAgICBvYmoudmFsdWUgPSAoKGdldENvb2tpZShvYmoubmFtZSkgIT0gbnVsbCkg
JiYgKERhdGUucGFyc2UoZ2V0Q29va2llKG9iai5uYW1lKSkgPj0gKERhdGUucGFyc2UobmV3IERh
dGUoKSkgLSAyNCAqIDYwICogNjAgKiAxMDAwKSkpID8gZ2V0Q29va2llKG9iai5uYW1lKSA6IChv
YmoudmFsdWUpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBp
ZiAob2JqLm5hbWUgPT0gImZsaWdodFNlYXJjaC5vcmlnaW5NQyIpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgb2JqLnZhbHVlID0gKGdldENvb2tpZShvYmoubmFtZSkgIT0gbnVsbCkgPyBnZXRD
b29raWUob2JqLm5hbWUpIDogKG9iai52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5uYW1lID09ICJmbGlnaHRTZWFyY2gu
ZGVzdGluYXRpb25NQyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai52YWx1ZSA9
IChnZXRDb29raWUob2JqLm5hbWUpICE9IG51bGwpID8gZ2V0Q29va2llKG9iai5uYW1lKSA6IChv
YmoudmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG9iai5uYW1lID09ICJmbGlnaHRTZWFyY2gucmV0dXJuRGF0ZU1D
Lk1NRERZWVlZIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai52YWx1ZSA9
ICgoZ2V0Q29va2llKG9iai5uYW1lKSAhPSBudWxsKSAmJiAoRGF0ZS5wYXJzZShnZXRDb29raWUo
b2JqLm5hbWUpKSA+PSAoRGF0ZS5wYXJzZShuZXcgRGF0ZSgpKSAtIDI0ICogNjAgKiA2MCAqIDEw
MDApKSkgPyBnZXRDb29raWUoImZsaWdodFNlYXJjaC5yZXR1cm5EYXRlLk1NRERZWVlZIikgOiAo
b2JqLnZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5uYW1lID09ICJmbGlnaHRTZWFyY2guYWR1
bHRzIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmoudmFsdWUgPSAo
Z2V0Q29va2llKG9iai5uYW1lKSAhPSBudWxsKSA/IGdldENvb2tpZShvYmoubmFtZSkgOiAob2Jq
LnZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqLm5hbWUgPT0gImZsaWdodFNlYXJj
aC5raWRzIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnZh
bHVlID0gKGdldENvb2tpZShvYmoubmFtZSkgIT0gbnVsbCkgPyBnZXRDb29raWUob2JqLm5hbWUp
IDogKG9iai52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqLm5hbWUg
PT0gImZsaWdodFNlYXJjaC5pbmZhbnRzIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9iai52YWx1ZSA9IChnZXRDb29raWUob2JqLm5hbWUpICE9IG51bGwp
ID8gZ2V0Q29va2llKG9iai5uYW1lKSA6IChvYmoudmFsdWUpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CmZ1bmN0
aW9uIGxvYWRGbGlnaHRTdGF0dXNEYXRhRnJvbUNvb2tpZXMoKSB7CiAgICBmb3IgKGogPSAwOyBq
IDwgZG9jdW1lbnQuZmxpZ2h0U3RhdHVzRm9ybS5lbGVtZW50cy5sZW5ndGg7IGorKykgewogICAg
ICAgIHZhciBvYmogPSBkb2N1bWVudC5mbGlnaHRTdGF0dXNGb3JtLmVsZW1lbnRzW2pdOwogICAg
ICAgIGlmIChvYmoubmFtZSA9PSAiZmxpZ2h0U3RhdHVzLmZsaWdodERhdGUiKSB7CiAgICAgICAg
ICAgIGlmIChnZXRDb29raWUob2JqLm5hbWUpICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIG9i
ai5zZWxlY3RlZEluZGV4ID0gZ2V0Q29va2llKG9iai5uYW1lKTsKICAgICAgICAgICAgfQogICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChvYmoubmFtZSA9PSAiZmxpZ2h0U3RhdHVzLmZs
aWdodE51bWJlciIpIHsKICAgICAgICAgICAgICAgIG9iai52YWx1ZSA9IChnZXRDb29raWUob2Jq
Lm5hbWUpICE9IG51bGwpID8gZ2V0Q29va2llKG9iai5uYW1lKSA6IChvYmoudmFsdWUpOwogICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKG9iai5uYW1lID09ICJmbGlnaHRT
dGF0dXMub3JpZ2luIikgewogICAgICAgICAgICAgICAgICAgIG9iai52YWx1ZSA9IChnZXRDb29r
aWUob2JqLm5hbWUpICE9IG51bGwpID8gZ2V0Q29va2llKG9iai5uYW1lKSA6IChvYmoudmFsdWUp
OwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAob2JqLm5h
bWUgPT0gImZsaWdodFN0YXR1cy5kZXN0aW5hdGlvbiIpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgb2JqLnZhbHVlID0gKGdldENvb2tpZShvYmoubmFtZSkgIT0gbnVsbCkgPyBnZXRDb29raWUo
b2JqLm5hbWUpIDogKG9iai52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CmZ1bmN0aW9uIGdldENvb2tp
ZShuYW1lKSB7CiAgICB2YXIgZGNvb2tpZSA9IGRvY3VtZW50LmNvb2tpZTsKICAgIHZhciBjbmFt
ZSA9IG5hbWUgKyAiPSI7CiAgICB2YXIgY2xlbiA9IGRjb29raWUubGVuZ3RoOwogICAgdmFyIGNi
ZWdpbiA9IDA7CiAgICB3aGlsZSAoY2JlZ2luIDwgY2xlbikgewogICAgICAgIHZhciB2YmVnaW4g
PSBjYmVnaW4gKyBjbmFtZS5sZW5ndGg7CiAgICAgICAgaWYgKGRjb29raWUuc3Vic3RyaW5nKGNi
ZWdpbiwgdmJlZ2luKSA9PSBjbmFtZSkgewogICAgICAgICAgICB2YXIgdmVuZCA9IGRjb29raWUu
aW5kZXhPZigiOyIsIHZiZWdpbik7CiAgICAgICAgICAgIGlmICh2ZW5kID09IC0xKSB7CiAgICAg
ICAgICAgICAgICB2ZW5kID0gY2xlbjsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4g
dW5lc2NhcGUoZGNvb2tpZS5zdWJzdHJpbmcodmJlZ2luLCB2ZW5kKSk7CiAgICAgICAgfQogICAg
ICAgIGNiZWdpbiA9IGRjb29raWUuaW5kZXhPZigiICIsIGNiZWdpbikgKyAxOwogICAgICAgIGlm
IChjYmVnaW4gPT0gMCkgewogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICBy
ZXR1cm4gbnVsbDsKfQpmdW5jdGlvbiBjaGVja2Zvcm1SYWlsKG9fZm9ybSkgewogICAgc19hY3Rp
b24gPSAiIjsKICAgIGFfcmFkaW8gPSBvX2Zvcm0ucmFpbG9wdGlvbjsKICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgYV9yYWRpby5sZW5ndGg7IGkrKykgewogICAgICAgIGlmIChhX3JhZGlvW2ldLmNo
ZWNrZWQpIHsKICAgICAgICAgICAgc19hY3Rpb24gPSBhX3JhZGlvW2ldLnZhbHVlOwogICAgICAg
IH0KICAgIH0KICAgIHdpbmRvdy5sb2NhdGlvbiA9IHNfYWN0aW9uOwp9CmZ1bmN0aW9uIGNsb3Nl
RGl2U2lnbihkaXZJZEZvckNsb3NlKSB7CiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ZGl2SWRGb3JDbG9zZSkpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkaXZJZEZv
ckNsb3NlKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgfQogICAgaWYgKGxvZ2luTW9kdWxl
T3JSZXN0ID09ICJyZXN0TG9naW4iKSB7CiAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJzdWJtaXRGb3Jnb3QiKSkgewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgic3VibWl0Rm9yZ290IikuaHJlZiA9ICJqYXZhc2NyaXB0OmNyZWF0ZVVSTGFuZFN1Ym1pdCgn
Zm9yZ2V0UGFzc3dvcmRSZXN0TW9kdWxlJyk7IjsKICAgICAgICB9CiAgICB9CiAgICBpZiAoZGl2
SWRGb3JDbG9zZSA9PSAiZWRpdEZvcm0iKSB7CiAgICAgICAgY2xvc2VEaXZTaWduKCJkZWxldGVG
cm9tREJNc2dCb3giKTsKICAgIH0KfQpmdW5jdGlvbiBvcGVuV2luZG93Rm9yUmVWaWV3SXRpbmVy
YXJ5KG9wZW5VcmwpIHsKICAgIHZhciB0b3AgPSA1MDsKICAgIHZhciBsZWZ0ID0gMjAwOwogICAg
dmFyIHdpZHRoID0gNzcwOwogICAgdmFyIGhlaWdodCA9IDY4MDsKICAgIHdpbmRvdy5vcGVuKG9w
ZW5VcmwsICIiLCAidG9vbGJhcj1ubyxzdGF0dXM9bm8sbWVudWJhcj1ubyxzY3JvbGxiYXJzPXll
cyxyZXNpemFibGU9bm8sIHRvcD0iICsgdG9wICsgIiwgbGVmdD0iICsgbGVmdCArICIsIHdpZHRo
PSIgKyB3aWR0aCArICIsaGVpZ2h0PSIgKyBoZWlnaHQpOwp9CmZ1bmN0aW9uIG9uQ2hhbmdlTG9n
aW4odE9iaikgewogICAgbG9nSW5WYWwgPSB0T2JqLnZhbHVlOwp9CmZ1bmN0aW9uIGxvZ091dCgp
IHsKICAgIGRvY3VtZW50LmdvUHJvZmlsZUhvbWUuYWN0aW9uID0gIi9sb2dPdXQuZG8iOwogICAg
ZG9jdW1lbnQuZ29Qcm9maWxlSG9tZS5tZXRob2QudmFsdWUgPSAibG9nT3V0IjsKICAgIGRvY3Vt
ZW50LmdvUHJvZmlsZUhvbWUuc3VibWl0KCk7Cn0KZnVuY3Rpb24gY3JlYXRlVVJMYW5kU3VibWl0
KG1ldGhvZCwgZmx0TWV0aG9kKSB7CiAgICB2YXIgdXJsID0gIiI7CiAgICB2YXIgaSA9IDA7CiAg
ICBpZiAobWV0aG9kID09ICJmb3JnZXRQYXNzd29yZCIpIHsKICAgICAgICB1cmwgPSAiL2Zvcmdl
dFBhc3N3b3JkLmRvP2Rpdk5vPTEmZmx0TWV0aG9kPSIgKyBmbHRNZXRob2QgKyAiJiI7CiAgICAg
ICAgc2V0T2JqT2Zmc2V0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwbGFjZVRvT3BlbkRpdiIp
LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiU2lnbkluIiksIDAsIDApOwogICAgICAgIGZvciAo
aSA9IDA7IGkgPCBkb2N1bWVudC5mb3JnZXRQYXNzd29yZEZvcm0uZWxlbWVudHMubGVuZ3RoOyBp
KyspIHsKICAgICAgICAgICAgdXJsID0gdXJsICsgZG9jdW1lbnQuZm9yZ2V0UGFzc3dvcmRGb3Jt
LmVsZW1lbnRzW2ldLm5hbWUgKyAiPSIgKyBkb2N1bWVudC5mb3JnZXRQYXNzd29yZEZvcm0uZWxl
bWVudHNbaV0udmFsdWU7CiAgICAgICAgICAgIGlmIChpICE9IChkb2N1bWVudC5mb3JnZXRQYXNz
d29yZEZvcm0uZWxlbWVudHMubGVuZ3RoIC0gMSkpIHsKICAgICAgICAgICAgICAgIHVybCA9IHVy
bCArICImIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB1cmwgPSB1cmwgKyAiJmxv
Z2luSWQ9IiArIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJFbWFpbEFkZHJlc3MiKS52YWx1ZTsK
ICAgICAgICBzaG93V2FpdEltYWdlKCk7CiAgICAgICAgYWpheFByb2ZpbGUodXJsLCAiU2lnbklu
Iik7CiAgICB9CiAgICBpZiAobWV0aG9kID09ICJmb3JnZXRQYXNzd29yZFJlc3RNb2R1bGUiKSB7
CiAgICAgICAgdXJsID0gIi9mb3JnZXRQYXNzd29yZC5kbz9kaXZObz0xJmZsdE1ldGhvZD0iICsg
Zmx0TWV0aG9kICsgIiYiOwogICAgICAgIHNldE9iak9mZnNldChkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgib3BlbkZvcmdvdFBhc3N3b3JkIiksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJTaWdu
SW4iKSwgMCwgMCk7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IGRvY3VtZW50LmZvcmdldFBhc3N3
b3JkRm9ybS5lbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB1cmwgPSB1cmwgKyBk
b2N1bWVudC5mb3JnZXRQYXNzd29yZEZvcm0uZWxlbWVudHNbaV0ubmFtZSArICI9IiArIGRvY3Vt
ZW50LmZvcmdldFBhc3N3b3JkRm9ybS5lbGVtZW50c1tpXS52YWx1ZTsKICAgICAgICAgICAgaWYg
KGkgIT0gKGRvY3VtZW50LmZvcmdldFBhc3N3b3JkRm9ybS5lbGVtZW50cy5sZW5ndGggLSAxKSkg
ewogICAgICAgICAgICAgICAgdXJsID0gdXJsICsgIiYiOwogICAgICAgICAgICB9CiAgICAgICAg
fQogICAgICAgIHVybCA9IHVybCArICImbG9naW5JZD0iICsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoIkVtYWlsQWRkcmVzcyIpLnZhbHVlOwogICAgICAgIHNob3dXYWl0SW1hZ2UoKTsKICAgICAg
ICBhamF4UHJvZmlsZUluUmVzdE1vZHVsZXModXJsLCAiU2lnbkluIik7CiAgICB9CiAgICBpZiAo
bWV0aG9kID09ICJjaGFuZ2VQYXNzd29yZCIpIHsKICAgICAgICB1cmwgPSAiL2NoYW5nZVBhc3N3
b3JkLmRvP2Rpdk5vPTImZmx0TWV0aG9kPSIgKyBmbHRNZXRob2QgKyAiJiI7CiAgICAgICAgZm9y
IChpID0gMDsgaSA8IGRvY3VtZW50LmNoYW5nZVBhc3N3b3JkRm9ybS5lbGVtZW50cy5sZW5ndGg7
IGkrKykgewogICAgICAgICAgICB1cmwgPSB1cmwgKyBkb2N1bWVudC5jaGFuZ2VQYXNzd29yZEZv
cm0uZWxlbWVudHNbaV0ubmFtZSArICI9IiArIGRvY3VtZW50LmNoYW5nZVBhc3N3b3JkRm9ybS5l
bGVtZW50c1tpXS52YWx1ZTsKICAgICAgICAgICAgaWYgKGkgIT0gKGRvY3VtZW50LmNoYW5nZVBh
c3N3b3JkRm9ybS5lbGVtZW50cy5sZW5ndGggLSAxKSkgewogICAgICAgICAgICAgICAgdXJsID0g
dXJsICsgIiYiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHNob3dXYWl0SW1hZ2Uo
KTsKICAgICAgICBhamF4UHJvZmlsZSh1cmwsICJTaWduSW4iKTsKICAgIH0KfQpmdW5jdGlvbiBn
b1RvUmVnaXN0ZXJQYWdlRnJvbUNvbXBhbmlvbigpIHsKICAgIGRvY3VtZW50LmdvUHJvZmlsZUhv
bWUuYWN0aW9uID0gImdvRm9yQ29tcGFuaW9uUmVnaXN0ZXIuZG8iOwogICAgZG9jdW1lbnQuZ29Q
cm9maWxlSG9tZS5tZXRob2QudmFsdWUgPSAibG9nT3V0IjsKICAgIGRvY3VtZW50LmdvUHJvZmls
ZUhvbWUuc3VibWl0KCk7Cn0KdmFyIGlzT2sgPSBmYWxzZTsKdmFyIGlzQW5zd2VyZWQgPSBmYWxz
ZTsKdmFyIGZ1bmNOYW1lID0gIiI7CnZhciBkaXZJZDJEZWxldGUgPSAiIjsKdmFyIGluZGV4VmFs
ID0gIiI7CgpmdW5jdGlvbiBjb25maXJtYXRpb25CZWZvcmVEZWxldGUod2hlcmVPcGVuLCB3aGlj
aERhdGEsIGZ1bmNuYW1lLCBkaXZpZDJEZWxldGUsIGluZGV4dmFsKSB7CiAgICBmdW5jTmFtZSA9
IGZ1bmNuYW1lOwogICAgZGl2SWQyRGVsZXRlID0gZGl2aWQyRGVsZXRlOwogICAgaW5kZXhWYWwg
PSBpbmRleHZhbDsKICAgIHZhciB3T2JqID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlbGV0
ZUZyb21EQk1zZ0JveCIpOwogICAgc2V0UG9zaXRpb24od2hlcmVPcGVuLCB3T2JqLCAxNjAsIDAp
OwogICAgd09iai5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKfQpmdW5jdGlvbiByZXRPa1ZhbCgp
IHsKICAgIGlzT2sgPSB0cnVlOwogICAgZGVsZXRlVmFsKCk7CiAgICBjbG9zZURpdlNpZ24oImRl
bGV0ZUZyb21EQk1zZ0JveCIpOwogICAgcmV0dXJuIGlzT2s7Cn0KZnVuY3Rpb24gZGVsZXRlVmFs
KCkgewogICAgaWYgKGlzT2spIHsKICAgICAgICBzdHIgPSBmdW5jTmFtZSArICIoJyIgKyBkaXZJ
ZDJEZWxldGUgKyAiJywnIiArIGluZGV4VmFsICsgIicpIjsKICAgICAgICBldmFsKHN0cik7CiAg
ICB9Cn0KZnVuY3Rpb24gb3BlblByZUFuZE5leHQocmVzcG9uc2VEaXYsIG1vdmVUeXBlKSB7CiAg
ICB2YXIgdXJsID0gIiI7CiAgICB1cmwgPSAibmV4dEFuZFByZXZpb3VzQWNjb3VudEFjdGlvbi5k
bz9tZXRob2Q9bmV4dEFuZFByZXZpb3VzQWNjb3VudEluZm8mbW92ZVR5cGU9IiArIG1vdmVUeXBl
OwogICAgYWpheFByb2ZpbGUodXJsLCByZXNwb25zZURpdik7Cn0KZnVuY3Rpb24gb3BlblByZUFu
ZE5leHRQb2ludHMocmVzcG9uc2VEaXYsIG1vdmVUeXBlKSB7CiAgICB2YXIgdXJsID0gIiI7CiAg
ICB1cmwgPSAibmV4dEFuZFByZXZpb3VzQWNjb3VudEFjdGlvblBvaW50cy5kbz9tZXRob2Q9bmV4
dEFuZFByZXZpb3VzQWNjb3VudEluZm9Qb2ludHMmbW92ZVR5cGU9IiArIG1vdmVUeXBlOwogICAg
YWpheFByb2ZpbGUodXJsLCByZXNwb25zZURpdik7Cn0KZnVuY3Rpb24gb3BlblByZUFuZE5leHRG
RihyZXNwb25zZURpdiwgbW92ZVR5cGUsIGN1cnJlbnRObykgewogICAgdmFyIHVybCA9ICIiOwog
ICAgaWYgKHJlc3BvbnNlRGl2ID09ICJmdXR1cmVGbHREaXYiKSB7CiAgICAgICAgdXJsID0gIm5l
eHRBbmRQcmV2aW91c0Z1dHVyZUZsaWdodEFjdGlvbi5kbz9tZXRob2Q9bmV4dEFuZFByZXZpb3Vz
RnV0dXJlRmxpZ2h0SW5mbyZtb3ZlVHlwZT0iICsgbW92ZVR5cGUgKyAiJmN1cnJlbnRQYWdlTm89
IiArIGN1cnJlbnRObyArICImZGl2SWQ9IiArIHJlc3BvbnNlRGl2OwogICAgfSBlbHNlIHsKICAg
ICAgICB1cmwgPSAibmV4dEFuZFByZXZpb3VzRnV0dXJlRmxpZ2h0QWN0aW9uLmRvP21ldGhvZD1u
ZXh0QW5kUHJldmlvdXNGdXR1cmVGbGlnaHRJbmZvJm1vdmVUeXBlPSIgKyBtb3ZlVHlwZSArICIm
Y3VycmVudFBhZ2VObz0iICsgY3VycmVudE5vICsgIiZkaXZJZD0iOwogICAgfQogICAgYWpheFBy
b2ZpbGUodXJsLCByZXNwb25zZURpdik7Cn0KdmFyIGFjdGl2aXR5Rmlyc3REYXRhSW5kOwp2YXIg
YWN0aXZpdHlTZWNEYXRhSW5kOwp2YXIgYWN0aXZpdHlQYXN0RGF0YUluZDsKCmZ1bmN0aW9uIG9w
ZW5QcmVBbmROZXh0QWN0aXZpdHkocmVzcG9uc2VEaXYsIG1vdmVUeXBlLCBjdXJyZW50Tm8pIHsK
ICAgIHZhciB1cmwgPSAiIjsKICAgIHVybCA9ICJuZXh0QW5kUHJldmlvdXNFbGV2YXRlQWN0aXZp
dHlBY3Rpb24uZG8/bWV0aG9kPW5leHRBbmRQcmV2aW91c0VsZXZhdGVBY3Rpdml0eUluZm8mbW92
ZVR5cGU9IiArIG1vdmVUeXBlICsgIiZjdXJyZW50UGFnZU5vPSIgKyBjdXJyZW50Tm87CiAgICBh
amF4UHJvZmlsZSh1cmwsIHJlc3BvbnNlRGl2KTsKfQpmdW5jdGlvbiBwb3B1bGF0ZUFjdGl2aXR5
RGF0YShzb3J0QnRuSWQsIHJlc3BvbnNlRGl2KSB7CiAgICBhY3Rpdml0eUZpcnN0RGF0YUluZCA9
IGRvY3VtZW50LnNpZ25JbkZvcm0uYWN0aXZpdHlGaXJzdERhdGEuc2VsZWN0ZWRJbmRleDsKICAg
IGFjdGl2aXR5U2VjRGF0YUluZCA9IGRvY3VtZW50LnNpZ25JbkZvcm0uYWN0aXZpdHlTZWNEYXRh
LnNlbGVjdGVkSW5kZXg7CiAgICBhY3Rpdml0eVBhc3REYXRhSW5kID0gZG9jdW1lbnQuc2lnbklu
Rm9ybS5hY3Rpdml0eVBhc3REYXRhLnNlbGVjdGVkSW5kZXg7CiAgICB2YXIgYWN0aXZpdHlGaXJz
dERhdGEgPSBkb2N1bWVudC5zaWduSW5Gb3JtLmFjdGl2aXR5Rmlyc3REYXRhLnZhbHVlOwogICAg
dmFyIGFjdGl2aXR5U2VjRGF0YSA9IGRvY3VtZW50LnNpZ25JbkZvcm0uYWN0aXZpdHlTZWNEYXRh
LnZhbHVlOwogICAgdmFyIGFjdGl2aXR5UGFzdERhdGEgPSBkb2N1bWVudC5zaWduSW5Gb3JtLmFj
dGl2aXR5UGFzdERhdGEudmFsdWU7CiAgICBzaG93V2FpdEltYWdlKCk7CiAgICB1cmwgPSAibmV4
dEFuZFByZXZpb3VzRWxldmF0ZUFjdGl2aXR5QWN0aW9uLmRvP21ldGhvZD1wb3B1bGF0ZVNlbGVj
dGVkRGF0YSZhY3Rpdml0eUZpcnN0RGF0YT0iICsgYWN0aXZpdHlGaXJzdERhdGEgKyAiJmFjdGl2
aXR5U2VjRGF0YT0iICsgYWN0aXZpdHlTZWNEYXRhICsgIiZhY3Rpdml0eVBhc3REYXRhPSIgKyBh
Y3Rpdml0eVBhc3REYXRhOwogICAgYWpheFByb2ZpbGUodXJsLCByZXNwb25zZURpdik7Cn0KZnVu
Y3Rpb24gb3BlbkRpdkZvclNpZ25JbihvYmoxLCBkaXZObywgZmx0TWV0aG9kKSB7CiAgICB2YXIg
bXlVcmwgPSAiIjsKICAgIG9iajEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGxhY2VUb09w
ZW5EaXYiKTsKICAgIGxvZ2luTW9kdWxlT3JSZXN0ID0gImxvZ2luIjsKICAgIHNldFBvc2l0aW9u
KG9iajEsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJTaWduSW4iKSwgNSwgMjApOwogICAgaWYg
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0clNpZ25JbiIpLnN0eWxlLmRpc3BsYXkgIT0gIm5v
bmUiKSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRyU2lnbkluIikuc3R5bGUu
ZGlzcGxheSA9ICJub25lIjsKICAgIH0KICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
U2lnbkluIikuc3R5bGUuZGlzcGxheSAhPSAibm9uZSIpIHsKICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiU2lnbkluIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgIH0KICAgIG15
VXJsID0gIi9zaWduSW4uanNwP2Rpdk5vPSIgKyBkaXZObyArICImZmx0TWV0aG9kPSIgKyBmbHRN
ZXRob2QgKyAiJmxvZ2luTmFtZT0iICsgbG9nSW5WYWw7CiAgICBpZiAoZmx0TWV0aG9kICE9ICJ1
bmRlZmluZWQiKSB7CiAgICAgICAgYWpheFByb2ZpbGUobXlVcmwsICJTaWduSW4iKTsKICAgIH0K
fQpmdW5jdGlvbiBvcGVuRGl2Rm9yU2lnbkluSW5SZXN0TW9kdWxlcyhvYmoxLCBkaXZObykgewog
ICAgdmFyIG15VXJsID0gIiI7CiAgICBsb2dpbk1vZHVsZU9yUmVzdCA9ICJyZXN0TG9naW4iOwog
ICAgaWYgKG9iajEuaWQgPT0gIkNoZWNrSW5vcGVuRm9yZ290UGFzc3dvcmQiIHx8IG9iajEuaWQg
PT0gIkNoYW5nZUZsaWdodG9wZW5Gb3Jnb3RQYXNzd29yZCIgfHwgb2JqMS5pZCA9PSAiQ2FuY2Vs
RmxpZ2h0b3BlbkZvcmdvdFBhc3N3b3JkIikgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJTaWduSW4iKS5zdHlsZS50b3AgPSAkKCIjZm9yZ290cGFzcyIpLm9mZnNldCgpLnRvcCAr
ICJweCI7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlNpZ25JbiIpLnN0eWxlLmxl
ZnQgPSAkKCIjZm9yZ290cGFzcyIpLm9mZnNldCgpLmxlZnQgKyAicHgiOwogICAgfSBlbHNlIHsK
ICAgICAgICBzZXRPYmpPZmZzZXQob2JqMSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlNpZ25J
biIpLCAwLCAwKTsKICAgIH0KICAgIG15VXJsID0gIi9zaWduSW4uanNwP2Rpdk5vPSIgKyBkaXZO
byArICImbG9naW5OYW1lPSIgKyBsb2dJblZhbDsKICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiU2lnbkluIikuc3R5bGUuZGlzcGxheSAhPSAibm9uZSIpIHsKICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiU2lnbkluIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgIH0K
ICAgIGFqYXhQcm9maWxlSW5SZXN0TW9kdWxlcyhteVVybCwgIlNpZ25JbiIpOwp9CmZ1bmN0aW9u
IGFqYXhQcm9maWxlSW5SZXN0TW9kdWxlcyhteXVybCwgZGl2MSkgewogICAgeG1saHR0cCA9IG5l
dyBYTUxIdHRwUmVxdWVzdCgpOwogICAgdmFyIHRoZXRpbWUgPSBuZXcgRGF0ZSgpOwogICAgdmFy
IGR1bW15ID0gIiIgKyB0aGV0aW1lLmdldEhvdXJzKCkgKyB0aGV0aW1lLmdldE1pbnV0ZXMoKSAr
IHRoZXRpbWUuZ2V0U2Vjb25kcygpOwogICAgbXl1cmwgPSBteXVybCArICImZHVtbXk9IiArIGR1
bW15OwogICAgYWpheERpdiA9IGRpdjE7CiAgICB4bWxodHRwLm9wZW4oIlBPU1QiLCBteXVybCwg
dHJ1ZSk7CiAgICBjaGtVUkwgPSBteXVybDsKICAgIHhtbGh0dHAub25yZWFkeXN0YXRlY2hhbmdl
ID0gaGFuZGxlUmVzcG9uc2VJblJlc3RNb2R1bGVzOwogICAgeG1saHR0cC5zZW5kKCIiKTsKfQp2
YXIgY2hrVVJMID0gIiI7CgpmdW5jdGlvbiBoYW5kbGVSZXNwb25zZUluUmVzdE1vZHVsZXMoKSB7
CiAgICBpZiAoeG1saHR0cC5yZWFkeVN0YXRlID09IDQpIHsKICAgICAgICBpZiAoeG1saHR0cC5z
dGF0dXMgPT0gMjAwKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFqYXhE
aXYpLmlubmVySFRNTCA9IHhtbGh0dHAucmVzcG9uc2VUZXh0OwogICAgICAgICAgICBpZiAoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1Ym1pdEZvcmdvdCIpICE9IG51bGwpIHsKICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdWJtaXRGb3Jnb3QiKS5ocmVmID0gImph
dmFzY3JpcHQ6Y3JlYXRlVVJMYW5kU3VibWl0KCdmb3JnZXRQYXNzd29yZFJlc3RNb2R1bGUnKTsi
OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFqYXhE
aXYpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInN1Ym1pdEZvcmdvdCIpICE9IG51bGwgJiYgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNsb3NlSHJlZiIpKSB7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY2xvc2VIcmVmIikuaHJlZiA9ICJqYXZhc2NyaXB0OmNsb3NlRGl2U2lnbignU2lnbklu
Jyk7IjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInN1Ym1pdEZvcmdvdCIpICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjYW5jbGVIcmVmIikuaHJlZiA9ICJqYXZhc2NyaXB0OmNsb3NlRGl2U2ln
bignU2lnbkluJyk7IjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInN1Ym1pdEZvcmdvdCIpICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGFuZ2VJbWFnZSIpLnN0eWxlLmJhY2tncm91bmRJbWFn
ZSA9ICIiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNsb3NlV2FpdEltYWdlKCk7CiAgICAg
ICAgfQogICAgfQp9CmZ1bmN0aW9uIG9wZW5EaXZGb3JFZGl0KG9iakVkaXRJZCwgaWRPYmpJRCwg
dXJsVG9PcGVuKSB7CiAgICB2YXIgbXlVcmw7CiAgICB2YXIgZGl2TiA9IG9iakVkaXRJZDsKICAg
IHZhciBpZE9iaiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkT2JqSUQpOwogICAgdmFyIG9i
akVkaXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvYmpFZGl0SWQpOwogICAgaWYgKCEoZGl2
TiA9PSAiZGl2UEkiIHx8IGRpdk4gPT0gImRpdlREIiB8fCBkaXZOID09ICJkaXZQYXNzIiB8fCBk
aXZOID09ICJkaXZBZGQiIHx8IGRpdk4gPT0gImRpdkNDSSIgfHwgZGl2TiA9PSAiZGl2RlAiIHx8
IGRpdk4gPT0gImRpdlRDIiB8fCBkaXZOID09ICJkaXZJVCIpKSB7CiAgICAgICAgY2xvc2VEaXZT
aWduKCJkZWxldGVGcm9tREJNc2dCb3giKTsKICAgICAgICBzaG93V2FpdEltYWdlKCk7CiAgICB9
IGVsc2UgewogICAgICAgIGNsb3NlV2FpdEltYWdlKCk7CiAgICB9CiAgICBnZXRBbmNob3JYWShp
ZE9iaklEKTsKICAgIG9iakVkaXQuc3R5bGUubGVmdCA9IFgxIC0gMjUwOwogICAgb2JqRWRpdC5z
dHlsZS50b3AgPSBZMSArIDEwOwogICAgaWYgKG9iakVkaXQuaWQgPT0gImFjY291bnREaXZEaXNw
bGF5IikgewogICAgICAgIHNldFBvc2l0aW9uKGlkT2JqLCBvYmpFZGl0LCAwLCAyMDApOwogICAg
fQogICAgb2JqRWRpdC5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgIG15VXJsID0gdXJsVG9P
cGVuOwogICAgYWpheFByb2ZpbGUobXlVcmwsIG9iakVkaXQuaWQpOwp9CmZ1bmN0aW9uIG9wZW5E
aXZGb3JFZGl0VXBkYXRlZChvYmpFZGl0LCBpZE9iaiwgdXJsVG9PcGVuKSB7CiAgICB2YXIgbXlV
cmw7CiAgICB2YXIgZGl2TiA9IG9iakVkaXQuaWQ7CiAgICBpZiAoIShkaXZOID09ICJkaXZQSSIg
fHwgZGl2TiA9PSAiZGl2UGFzcyIgfHwgZGl2TiA9PSAiZGl2QWRkIiB8fCBkaXZOID09ICJkaXZD
Q0kiIHx8IGRpdk4gPT0gImRpdkZQIiB8fCBkaXZOID09ICJkaXZUQyIgfHwgZGl2TiA9PSAiZGl2
SVQiIHx8IGRpdk4gPT0gIk9wdEluIikpIHsKICAgICAgICBjbG9zZURpdlNpZ24oImRlbGV0ZUZy
b21EQk1zZ0JveCIpOwogICAgICAgIG9iakVkaXQuaW5uZXJIVE1MID0gIiI7CiAgICB9IGVsc2Ug
ewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZGl0Rm9ybSIpLmlubmVySFRNTCA9
ICIiOwogICAgfQogICAgaWYgKG9iakVkaXQuaWQgPT0gImFjY291bnREaXZEaXNwbGF5Iikgewog
ICAgICAgIHNldFBvc2l0aW9uKGlkT2JqLCBvYmpFZGl0LCAwLCAyMDApOwogICAgfQogICAgb2Jq
RWRpdC5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgIG15VXJsID0gdXJsVG9PcGVuOwogICAg
c2hvd1dhaXRJbWFnZSgpOwogICAgYWpheFByb2ZpbGVVcGRhdGVkKG15VXJsLCBvYmpFZGl0Lmlk
KTsKfQpmdW5jdGlvbiBhamF4UHJvZmlsZUZvclBhc3N3b3JkKG15dXJsLCBkaXYxKSB7CiAgICB4
bWxodHRwID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICB2YXIgdGhldGltZSA9IG5ldyBEYXRl
KCk7CiAgICB2YXIgZHVtbXkgPSAiIiArIHRoZXRpbWUuZ2V0SG91cnMoKSArIHRoZXRpbWUuZ2V0
TWludXRlcygpICsgdGhldGltZS5nZXRTZWNvbmRzKCk7CiAgICBteXVybCA9IG15dXJsICsgIiZk
dW1teT0iICsgZHVtbXk7CiAgICBhamF4RGl2ID0gZGl2MTsKICAgIHhtbGh0dHAub3BlbigiUE9T
VCIsIG15dXJsLCB0cnVlKTsKICAgIGNoa1VSTCA9IG15dXJsOwogICAgeG1saHR0cC5vbnJlYWR5
c3RhdGVjaGFuZ2UgPSBoYW5kbGVSZXNwb25zZUZvclBhc3N3b3JkOwogICAgeG1saHR0cC5zZW5k
KCIiKTsKfQpmdW5jdGlvbiBoYW5kbGVSZXNwb25zZUZvclBhc3N3b3JkKCkgewogICAgaWYgKHht
bGh0dHAucmVhZHlTdGF0ZSA9PSA0KSB7CiAgICAgICAgaWYgKHhtbGh0dHAuc3RhdHVzID09IDIw
MCkgewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhamF4RGl2KS5pbm5lckhU
TUwgPSB4bWxodHRwLnJlc3BvbnNlVGV4dDsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoYWpheERpdikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICAgICAgICAgIGVuYWJs
ZVBhZ2UoKTsKICAgICAgICAgICAgaWYgKChhamF4RGl2ID09ICJkaXZQSSIgfHwgYWpheERpdiA9
PSAiZGl2UGFzcyIgfHwgYWpheERpdiA9PSAiZGl2QWRkIiB8fCBhamF4RGl2ID09ICJkaXZDQ0ki
IHx8IGFqYXhEaXYgPT0gImRpdkZQIiB8fCBhamF4RGl2ID09ICJkaXZUQyIgfHwgYWpheERpdiA9
PSAiZGl2SVQiIHx8IGFqYXhEaXYgPT0gIk9wdEluIikpIHsKICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJlZGl0Rm9ybSIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAg
ICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gZGlzYWJsZVBhZ2UoKSB7CiAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGlzYWJsZVRvdGFsUGFnZSIpLnN0eWxlLnRvcCA9
IDA7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGlzYWJsZVRvdGFsUGFnZSIpLnN0eWxl
LmxlZnQgPSAwOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpc2FibGVUb3RhbFBhZ2Ui
KS5zdHlsZS5oZWlnaHQgPSBnZXRYYW5kWSgkZ2V0X0pzRWxlbWVudCgiQ29udGFpbmVyRm9vdGVy
IikpLnk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGlzYWJsZVRvdGFsUGFnZSIpLnN0
eWxlLndpZHRoID0gMTA1MDsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXNhYmxlVG90
YWxQYWdlIikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Cn0KZnVuY3Rpb24gZW5hYmxlUGFnZSgp
IHsKICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGlzYWJsZVRvdGFsUGFnZSIpKSB7
CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpc2FibGVUb3RhbFBhZ2UiKS5zdHls
ZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgfQp9CmZ1bmN0aW9uIGNsZWFyQ2hlY2tCb3goKSB7CiAg
ICBmb3IgKGkgPSAwOyBpIDwgZG9jdW1lbnQubW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHMubGVu
Z3RoOyBpKyspIHsKICAgICAgICB2YXIgY2hrT2JqID0gZG9jdW1lbnQubW9kaWZ5UHJvZmlsZUZv
cm0uZWxlbWVudHNbaV07CiAgICAgICAgaWYgKGNoa09iai5uYW1lID09ICJpbnRlcmVzdFZhbCIp
IHsKICAgICAgICAgICAgY2hrT2JqLmNoZWNrZWQgPSBmYWxzZTsKICAgICAgICB9CiAgICB9Cn0K
ZnVuY3Rpb24gYWpheFByb2ZpbGUobXl1cmwsIGRpdjEpIHsKICAgIHhtbGh0dHAgPSBuZXcgWE1M
SHR0cFJlcXVlc3QoKTsKICAgIHZhciB0aGV0aW1lID0gbmV3IERhdGUoKTsKICAgIHZhciBkdW1t
eSA9ICIiICsgdGhldGltZS5nZXRIb3VycygpICsgdGhldGltZS5nZXRNaW51dGVzKCkgKyB0aGV0
aW1lLmdldFNlY29uZHMoKTsKICAgIG15dXJsID0gbXl1cmwgKyAiJmR1bW15PSIgKyBkdW1teTsK
ICAgIGFqYXhEaXYgPSBkaXYxOwogICAgeG1saHR0cC5vcGVuKCJQT1NUIiwgbXl1cmwsIHRydWUp
OwogICAgY2hrVVJMID0gbXl1cmw7CiAgICB4bWxodHRwLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGhh
bmRsZVJlc3BvbnNlOwogICAgeG1saHR0cC5zZW5kKCIiKTsKfQpmdW5jdGlvbiBhamF4UHJvZmls
ZVVwZGF0ZWQobXl1cmwsIGRpdjEpIHsKICAgIG15dXJsID0gZW5jb2RlVVJJKG15dXJsKTsKICAg
ICQoIiMiICsgZGl2MSkubG9hZChteXVybCwgIiIsIGRvbmUpOwogICAgZW5hYmxlUGFnZSgpOwoK
ICAgIGZ1bmN0aW9uIGRvbmUoKSB7CiAgICAgICAgaWYgKChkaXYxID09ICJkaXZQSSIgfHwgZGl2
MSA9PSAiZGl2UGFzcyIgfHwgZGl2MSA9PSAiZGl2QWRkIiB8fCBkaXYxID09ICJkaXZDQ0kiIHx8
IGRpdjEgPT0gImRpdkZQIiB8fCBkaXYxID09ICJkaXZUQyIgfHwgZGl2MSA9PSAiZGl2SVQiIHx8
IGRpdjEgPT0gIk9wdEluIikpIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImVkaXRGb3JtIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICB9CiAgICAgICAgY2xv
c2VXYWl0SW1hZ2UoKTsKICAgIH0KfQpmdW5jdGlvbiBhamF4UHJvZmlsZUFsdChteXVybCwgZGl2
MSkgewogICAgJCgiIyIgKyBkaXYxKS5sb2FkKG15dXJsLCAiIiwgZG9uZSk7CiAgICBlbmFibGVQ
YWdlKCk7CgogICAgZnVuY3Rpb24gZG9uZSgpIHt9Cn0KdmFyIGNoa1VSTCA9ICIiOwoKZnVuY3Rp
b24gaGFuZGxlUmVzcG9uc2UoKSB7CiAgICB2YXIgaCA9IDA7CiAgICB2YXIgaW5kID0gMDsKICAg
IGlmICh4bWxodHRwLnJlYWR5U3RhdGUgPT0gNCkgewogICAgICAgIGlmICh4bWxodHRwLnN0YXR1
cyA9PSAyMDApIHsKICAgICAgICAgICAgaWYgKCh4bWxodHRwLnJlc3BvbnNlVGV4dCkudHJpbSgp
ID09ICJBamF4U2Vzc2lvblRpbWVPdXQiKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRp
b24gPSAiL2hvbWUuZG8/bWV0aG9kPXZpcmdpbkFtZXJpY2Emc2Vzc2lvblN0YXRlPXNlc3Npb25U
aW1lT3V0IjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICgoeG1saHR0
cC5yZXNwb25zZVRleHQpLnNlYXJjaCgiYmdfRm9yZ2V0UGFzc3dvcmQiKSAhPSAtMSkgewogICAg
ICAgICAgICAgICAgICAgIGluZCA9ICh4bWxodHRwLnJlc3BvbnNlVGV4dCkuc2VhcmNoKCJiZ19G
b3JnZXRQYXNzd29yZCIpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICBpZiAoKHhtbGh0dHAucmVzcG9uc2VUZXh0KS5zZWFyY2goImJnX1NpZ24taW4iKSAhPSAt
MSkgewogICAgICAgICAgICAgICAgICAgICAgICBpbmQgPSAoeG1saHR0cC5yZXNwb25zZVRleHQp
LnNlYXJjaCgiYmdfU2lnbi1pbiIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoKHhtbGh0dHAucmVzcG9uc2VUZXh0
KS5zdWJzdHJpbmcoaW5kLCBpbmQgKyAxMCkgPT0gImJnX1NpZ24taW4iKSB7CiAgICAgICAgICAg
ICAgICBoID0gMTA0OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKCh4
bWxodHRwLnJlc3BvbnNlVGV4dCkuc3Vic3RyaW5nKGluZCwgaW5kICsgMTcpID09ICJiZ19Gb3Jn
ZXRQYXNzd29yZCIpIHsKICAgICAgICAgICAgICAgICAgICBoID0gMTQyOwogICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgoeG1saHR0cC5yZXNwb25zZVRleHQp
LnNlYXJjaCgiUGFzc3dvcmRSZXNldEVtYWlsU2VudCIpICE9IC0xKSB7CiAgICAgICAgICAgICAg
ICB2YXIgcyA9IHNfZ2koc2V0T21uaXR1cmVFbnYoKSk7CiAgICAgICAgICAgICAgICBzLmxpbmtU
cmFja1ZhcnMgPSAiZXZlbnRzIjsKICAgICAgICAgICAgICAgIHMubGlua1RyYWNrRXZlbnRzID0g
ImV2ZW50MjciOwogICAgICAgICAgICAgICAgcy5ldmVudHMgPSAiZXZlbnQyNyI7CiAgICAgICAg
ICAgICAgICBzLnRsKHRydWUsICJvIiwgIkZvcmdvdCBQYXNzd29yZCIpOwogICAgICAgICAgICB9
CiAgICAgICAgICAgIGlmIChsb2dpbk1vZHVsZU9yUmVzdCA9PSAicmVzdExvZ2luIikgewogICAg
ICAgICAgICAgICAgaCA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoYWpheERpdikuaW5uZXJIVE1MID0geG1saHR0cC5yZXNwb25zZVRleHQ7CiAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFqYXhEaXYpLnN0eWxlLmRpc3BsYXkg
PSAiYmxvY2siOwogICAgICAgICAgICBlbmFibGVQYWdlKCk7CiAgICAgICAgICAgIGlmIChsb2dp
bk1vZHVsZU9yUmVzdCA9PSAicmVzdExvZ2luIikgewogICAgICAgICAgICAgICAgaWYgKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjaGFuZ2VJbWFnZSIpKSB7CiAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNsb3NlSHJlZiIpLmhyZWYgPSAiamF2YXNjcmlwdDpj
bG9zZURpdlNpZ24oJ1NpZ25JbicpOyI7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNoYW5nZUltYWdlIikuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gInVybCgn
aHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL2JnX0ZvcmdldFBhc3N3b3Jk
V2l0aG91dFNpZ25Jbi5naWYnKSI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAg
ICAgICAgICAgaWYgKGFqYXhEaXYgPT0gImVsZXZhdGVBY3Rpdml0aWVzRGl2IikgewogICAgICAg
ICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY3Rpdml0eUZpcnN0RGF0YSIp
KSB7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuc2lnbkluRm9ybS5hY3Rpdml0eUZpcnN0
RGF0YS5zZWxlY3RlZEluZGV4ID0gYWN0aXZpdHlGaXJzdERhdGFJbmQ7CiAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuc2lnbkluRm9ybS5hY3Rpdml0eVNlY0RhdGEuc2VsZWN0ZWRJbmRleCA9
IGFjdGl2aXR5U2VjRGF0YUluZDsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5zaWduSW5G
b3JtLmFjdGl2aXR5UGFzdERhdGEuc2VsZWN0ZWRJbmRleCA9IGFjdGl2aXR5UGFzdERhdGFJbmQ7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJsb2FkaW5nQW5pbWF0aW9uRGl2IikpIHsKICAgICAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2FkaW5nQW5pbWF0aW9uRGl2Iikuc3R5bGUuZGlz
cGxheSA9ICJub25lIjsKICAgICAgICAgICAgfQogICAgICAgICAgICB4bWxodHRwID0gbnVsbDsK
ICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gc3VibWl0Rm9ybUxvZ0FmdGVyQ2hhbmdlUGFzc3dv
cmQoVVJMUGFyYW1ldGVycykgewogICAgdmFyIGxvZ2luVVJMID0gIiI7CiAgICBsb2dpblVSTCA9
ICIvc2lnbkluTG9naW4uZG8iICsgVVJMUGFyYW1ldGVycyArICImcmVEaXJlY3Q9bm8iOwogICAg
YWpheFByb2ZpbGVTaWduSW4obG9naW5VUkwsICJsb2dpbldpbmRvd0RpdiIpOwp9CmZ1bmN0aW9u
IHN1Ym1pdEZvcm1Mb2coZm9ybU5hbWUsIHN0YXR1c0Jvb2tpbmcpIHsKICAgIHZhciBsb2dpblVS
TCA9ICIiOwogICAgdmFyIHNpZ25Mb2dpbklkID0gZG9jdW1lbnQuc2lnbkluRm9ybS5sb2dpbklk
LnZhbHVlOwogICAgZm9yIChpID0gMDsgaSA8IGRvY3VtZW50LnNpZ25JbkZvcm0uZWxlbWVudHMu
bGVuZ3RoOyBpKyspIHsKICAgICAgICBpZiAoZG9jdW1lbnQuc2lnbkluRm9ybS5lbGVtZW50c1tp
XS5uYW1lID09ICJwYXNzd29yZCIpIHsKICAgICAgICAgICAgdmFyIHNpZ25QYXNzd29yZCA9IGRv
Y3VtZW50LnNpZ25JbkZvcm0uZWxlbWVudHNbaV0udmFsdWU7CiAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgIH0KICAgIH0KICAgIGlmIChyVUluUmVnaXN0cmF0aW9uUHJvY2VzcyA9PSAiWWVzIikg
ewogICAgICAgIGRvY3VtZW50LnNpZ25JbkZvcm0uYWN0aW9uID0gIi9zaWduSW5Gcm9tUmVnaXN0
ZXIuZG8iOwogICAgICAgIGRvY3VtZW50LnNpZ25JbkZvcm0uc3VibWl0KCk7CiAgICB9IGVsc2Ug
ewogICAgICAgIGlmIChzdGF0dXNCb29raW5nID09ICJib29raW5nIikgewogICAgICAgICAgICBs
b2dpblVSTCA9ICIvc2lnbkluTG9naW4uZG8/bWV0aG9kPXNpZ25JbiZsb2dpbklkPSIgKyBzaWdu
TG9naW5JZCArICImcGFzc3dvcmQ9IiArIHNpZ25QYXNzd29yZCArICImcmVEaXJlY3Q9bm8iOwog
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGxvZ2luVVJMID0gIi9zaWduSW5Mb2dpbi5kbz9t
ZXRob2Q9c2lnbkluJmxvZ2luSWQ9IiArIHNpZ25Mb2dpbklkICsgIiZwYXNzd29yZD0iICsgc2ln
blBhc3N3b3JkICsgIiZyZURpcmVjdD15ZXMiOwogICAgICAgIH0KICAgICAgICBhamF4UHJvZmls
ZVNpZ25Jbihsb2dpblVSTCwgImxvZ2luV2luZG93RGl2Iik7CiAgICB9CiAgICBzaG93V2FpdElt
YWdlKCk7Cn0KZnVuY3Rpb24gYWpheFByb2ZpbGVTaWduSW4obXl1cmwsIGRpdjEpIHsKICAgIHht
bGh0dHAgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAgIHZhciB0aGV0aW1lID0gbmV3IERhdGUo
KTsKICAgIHZhciBkdW1teSA9ICIiICsgdGhldGltZS5nZXRIb3VycygpICsgdGhldGltZS5nZXRN
aW51dGVzKCkgKyB0aGV0aW1lLmdldFNlY29uZHMoKTsKICAgIG15dXJsID0gbXl1cmwgKyAiJmR1
bW15PSIgKyBkdW1teTsKICAgIGFqYXhEaXYgPSBkaXYxOwogICAgeG1saHR0cC5vcGVuKCJQT1NU
IiwgbXl1cmwsIHRydWUpOwogICAgeG1saHR0cC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBoYW5kbGVS
ZXNwb25zZVNpZ25JbjsKICAgIHhtbGh0dHAuc2VuZCgiIik7Cn0KZnVuY3Rpb24gaGFuZGxlUmVz
cG9uc2VTaWduSW4oKSB7CiAgICBpZiAoeG1saHR0cC5yZWFkeVN0YXRlID09IDQpIHsKICAgICAg
ICBpZiAoeG1saHR0cC5zdGF0dXMgPT0gMjAwKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKGFqYXhEaXYpLmlubmVySFRNTCA9IHhtbGh0dHAucmVzcG9uc2VUZXh0OwogICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhamF4RGl2KS5zdHlsZS5kaXNwbGF5ID0g
ImJsb2NrIjsKICAgICAgICAgICAgY2xvc2VXYWl0SW1hZ2UoKTsKICAgICAgICB9CiAgICB9Cn0K
ZnVuY3Rpb24gc2hvd1JvbGxvdmVySW1hZ2UoaW1nSWQsIGltZ05hbWUpIHsKICAgIGlmIChpbWdJ
ZC5zcmMuaW5kZXhPZigiY2wiKSA9PSAtMSkgewogICAgICAgIGltZ0lkLnNyYyA9ICJodHRwczov
L3N0YXRpYy52aXJnaW5hbWVyaWNhLmNvbS9pbWFnZXMvIiArIGltZ05hbWUgKyAiX3JvbGwuZ2lm
IjsKICAgIH0gZWxzZSB7CiAgICAgICAgaW1nSWQuc3JjID0gImh0dHBzOi8vc3RhdGljLnZpcmdp
bmFtZXJpY2EuY29tL2ltYWdlcy8iICsgaW1nTmFtZSArICJfcm9sbF9jbC5naWYiOwogICAgfQp9
CmZ1bmN0aW9uIHJlc3RvcmVJbWFnZShpbWdJZCwgaW1nTmFtZSkgewogICAgaWYgKGltZ0lkLnNy
Yy5pbmRleE9mKCJjbCIpID09IC0xKSB7CiAgICAgICAgaW1nSWQuc3JjID0gImh0dHBzOi8vc3Rh
dGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy8iICsgaW1nTmFtZSArICIuZ2lmIjsKICAgIH0g
ZWxzZSB7CiAgICAgICAgaW1nSWQuc3JjID0gImh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2Eu
Y29tL2ltYWdlcy8iICsgaW1nTmFtZSArICJfY2wuZ2lmIjsKICAgIH0KfQpmdW5jdGlvbiBzaG93
RWxldmF0ZVBvaW50c0RpdkFyZWEoZGl2SWQsIGFjdGl2ZUltZywgdGJTZWxlY3QpIHsKICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbGV2YXRlQWN0aXZpdGllcyIpLnNyYyA9ICJodHRwczov
L3N0YXRpYy52aXJnaW5hbWVyaWNhLmNvbS9pbWFnZXMvYnRuX3RoZV9iYXNpY3MuZ2lmIjsKICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbGV2YXRlQ29udGFjdCIpLnNyYyA9ICJodHRwczov
L3N0YXRpYy52aXJnaW5hbWVyaWNhLmNvbS9pbWFnZXMvYnRuX2FjY291bnRfYWN0aXZpdHR5Lmdp
ZiI7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWxldmF0ZVByZWZlcmVuY2VzIikuc3Jj
ID0gImh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy9idG5fcHJlZmVyZW5j
ZXMuZ2lmIjsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbGV2YXRlQWN0aXZpdGllc0Rp
diIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
ZWxldmF0ZUNvbnRhY3REaXYiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImVsZXZhdGVQcmVmZXJlbmNlc0RpdiIpLnN0eWxlLmRpc3BsYXkgPSAi
bm9uZSI7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2hvd05lZWRQb2ludHNEaXYiKS5z
dHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5lZWRQ
b2ludHNSZXN1bHREaXYiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInVwQ29taW5nRmxpZ2h0SW1hZ2VJZCIpLnN0eWxlLmRpc3BsYXkgPSAibm9u
ZSI7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9yR290UG9pbnRJbWFnZUlkIikuc3R5
bGUuZGlzcGxheSA9ICJub25lIjsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbGV2YXRl
UG9pbnRzRXhwbGFpbkRpdklkIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyZXF1ZXN0RWxldmF0ZVBvaW50c0ltYWdlSWQiKS5zdHlsZS5kaXNw
bGF5ID0gImJsb2NrIjsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbGV2YXRlRXhwYW5k
SHRtbElkIikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICBkaXZJZC5zcmMgPSBhY3RpdmVJ
bWc7CiAgICB0YlNlbGVjdCA9IHRhYlNlbGVjdDsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJwb2ludEhpc3RvcnlEaXYiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKfQp2YXIgZWxldmF0
ZVBvaW50c0FjdGl2ZUltYWdlOwoKZnVuY3Rpb24gc2hvd0Z1bGxBY3Rpdml0eSgpIHsKICAgIHNo
b3dMb2FkaW5nSW1hZ2VvblBvcFVwKCJwb2ludEhpc3RvcnlGcm9tVGhlQmFzaWMiKTsKICAgIHdp
bmRvdy5sb2NhdGlvbiA9ICIvc2lnbkluLmRvP21ldGhvZD1ob21lUHJvZmlsZVdpdGhQYWdpbmF0
aW9uJnNob3dBY3Rpdml0eT10cnVlIjsKfQpmdW5jdGlvbiBzaG93RGl2QXJlYShkaXZJZCwgYWN0
aXZlSW1nLCB0YlNlbGVjdCkgewogICAgaWYgKHRiU2VsZWN0ID09IDEpIHsKICAgICAgICBteVVy
bCA9ICJzaG93UHJlZmVyZW5jZXMuZG8/bWV0aG9kPXNob3dQcmVmcmVuY2VzJmZvcndhcmRQYWdl
PWVsZXZhdGVBY3Rpdml0eSI7CiAgICAgICAgaWYgKGRpdklkICE9ICJwb2ludEhpc3RvcnlGcm9t
VGhlQmFzaWMiKSB7CiAgICAgICAgICAgIHNob3dMb2FkaW5nSW1hZ2VvblBvcFVwKGRpdklkKTsK
ICAgICAgICB9CiAgICAgICAgc2hvd0VsZXZhdGVQb2ludERldGFpbHNBamF4KG15VXJsLCBkaXZJ
ZCwgYWN0aXZlSW1nKTsKICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKHRiU2VsZWN0ID09IDMpIHsK
ICAgICAgICAgICAgbXlVcmwgPSAic2hvd1ByZWZlcmVuY2VzLmRvP21ldGhvZD1zaG93UHJlZnJl
bmNlcyZmb3J3YXJkUGFnZT1jb250YWN0SW5mbyI7CiAgICAgICAgICAgIHNob3dMb2FkaW5nSW1h
Z2VvblBvcFVwKGRpdklkKTsKICAgICAgICAgICAgc2hvd0VsZXZhdGVQb2ludERldGFpbHNBamF4
KG15VXJsLCBkaXZJZCwgYWN0aXZlSW1nKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBp
ZiAodGJTZWxlY3QgPT0gNSkgewogICAgICAgICAgICAgICAgbXlVcmwgPSAic2hvd1ByZWZlcmVu
Y2VzLmRvP21ldGhvZD1zaG93UHJlZnJlbmNlcyZmb3J3YXJkUGFnZT1wcmVmZXJlbmNlcyI7CiAg
ICAgICAgICAgICAgICBzaG93TG9hZGluZ0ltYWdlb25Qb3BVcChkaXZJZCk7CiAgICAgICAgICAg
ICAgICBzaG93RWxldmF0ZVBvaW50RGV0YWlsc0FqYXgobXlVcmwsIGRpdklkLCBhY3RpdmVJbWcp
OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKHRiU2VsZWN0ID09IDQp
IHsKICAgICAgICAgICAgICAgICAgICBteVVybCA9ICJzaG93UHJlZmVyZW5jZXMuZG8/bWV0aG9k
PXNob3dQcmVmcmVuY2VzJmZvcndhcmRQYWdlPXBvaW50c0V4cFN1bW1hcnkiOwogICAgICAgICAg
ICAgICAgICAgIHNob3dMb2FkaW5nSW1hZ2VvblBvcFVwKGRpdklkKTsKICAgICAgICAgICAgICAg
ICAgICBzaG93RWxldmF0ZVBvaW50RGV0YWlsc0FqYXgobXlVcmwsIGRpdklkLCBhY3RpdmVJbWcp
OwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZWxldmF0ZUFjdGl2aXRpZXMiKS5zcmMgPSAiaHR0cHM6Ly9zdGF0aWMu
dmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL2J0bl90aGVfYmFzaWNzLmdpZiI7CiAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVsZXZhdGVDb250YWN0Iikuc3JjID0g
Imh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy9idG5fYWNjb3VudF9hY3Rp
dml0dHkuZ2lmIjsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
ZWxldmF0ZVByZWZlcmVuY2VzIikuc3JjID0gImh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2Eu
Y29tL2ltYWdlcy9idG5fcHJlZmVyZW5jZXMuZ2lmIjsKICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiZWxldmF0ZUFjdGl2aXRpZXNEaXYiKS5zdHlsZS5kaXNwbGF5
ID0gIm5vbmUiOwogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJl
bGV2YXRlQ29udGFjdERpdiIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVsZXZhdGVQcmVmZXJlbmNlc0RpdiIpLnN0
eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInNob3dOZWVkUG9pbnRzRGl2Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmVlZFBvaW50c1Jlc3Vs
dERpdiIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICAgICAgZGl2SWQu
c3JjID0gYWN0aXZlSW1nOwogICAgICAgICAgICAgICAgICAgIGRpdkFyZWFJZCA9IGRpdklkLmlk
ICsgIkRpdiI7CiAgICAgICAgICAgICAgICAgICAgdGJTZWxlY3QgPSB0YWJTZWxlY3Q7CiAgICAg
ICAgICAgICAgICAgICAgaWYgKGRpdkFyZWFJZCA9PSAiZWxldmF0ZUFjdGl2aXRpZXNEaXYiKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1cENvbWlu
Z0ZsaWdodEltYWdlSWQiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9yR290UG9pbnRJbWFnZUlkIikuc3R5
bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJlbGV2YXRlRXhwYW5kSHRtbElkIikuc3R5bGUuZGlzcGxheSA9ICJibG9j
ayI7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXF1
ZXN0RWxldmF0ZVBvaW50c0ltYWdlSWQiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWxldmF0ZVBvaW50c0V4
cGxhaW5EaXZJZCIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbGV2YXRlRXhwYW5kSHRtbElkUHJlZiIpLnN0
eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGRpdkFyZWFJZCA9PSAiZWxldmF0ZVByZWZlcmVuY2VzRGl2
IikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5ldmVudDEyID0gIkVsZXZhdGUgUHJl
ZmVyZW5jZXMiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInVwQ29taW5nRmxpZ2h0SW1hZ2VJZCIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9yR290
UG9pbnRJbWFnZUlkIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbGV2YXRlRXhwYW5kSHRtbElkIiku
c3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJlbGV2YXRlUG9pbnRzRXhwbGFpbkRpdklkIikuc3R5bGUuZGlz
cGxheSA9ICJub25lIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZXF1ZXN0RWxldmF0ZVBvaW50c0ltYWdlSWQiKS5zdHlsZS5kaXNwbGF5ID0g
Im5vbmUiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImVsZXZhdGVFeHBhbmRIdG1sSWRQcmVmIikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZGl2QXJlYUlkID09ICJlbGV2YXRlQ29udGFjdERpdiIpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzLmV2ZW50MTUgPSAiUGFzdCBGbGlnaHRzIjsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXBDb21pbmdGbGln
aHRJbWFnZUlkIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9yR290UG9pbnRJbWFnZUlkIiku
c3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWxldmF0ZUV4cGFuZEh0bWxJZCIpLnN0eWxlLmRpc3Bs
YXkgPSAiYmxvY2siOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJlbGV2YXRlUG9pbnRzRXhwbGFpbkRpdklkIikuc3R5bGUuZGlzcGxheSA9
ICJub25lIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVxdWVzdEVsZXZhdGVQb2ludHNJbWFnZUlkIikuc3R5bGUuZGlzcGxheSA9ICJi
bG9jayI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImVsZXZhdGVFeHBhbmRIdG1sSWRQcmVmIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZChkaXZBcmVhSWQpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgICAgICAg
ICAgICAgIHNob3dMb2FkaW5nSW1hZ2VDbG9zZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICB9CiAgICAgICAgfQogICAgfQogICAgdmFyIHNfY29kZSA9IHMudCgpOwogICAgaWYgKHNf
Y29kZSkgewogICAgICAgIGRvY3VtZW50LndyaXRlKHNfY29kZSk7CiAgICB9Cn0KZnVuY3Rpb24g
c2hvd0VsZXZhdGVQb2ludERldGFpbHNBamF4KG15dXJsLCBkaXYsIGFjdGl2ZUltZykgewogICAg
eG1saHR0cCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgdmFyIHRoZXRpbWUgPSBuZXcgRGF0
ZSgpOwogICAgdmFyIGR1bW15ID0gIiIgKyB0aGV0aW1lLmdldEhvdXJzKCkgKyB0aGV0aW1lLmdl
dE1pbnV0ZXMoKSArIHRoZXRpbWUuZ2V0U2Vjb25kcygpOwogICAgbXl1cmwgPSBteXVybCArICIm
ZHVtbXk9IiArIGR1bW15OwogICAgYWpheERpdiA9IGRpdjsKICAgIGVsZXZhdGVQb2ludHNBY3Rp
dmVJbWFnZSA9IGFjdGl2ZUltZzsKICAgIHhtbGh0dHAub3BlbigiUE9TVCIsIG15dXJsLCB0cnVl
KTsKICAgIHhtbGh0dHAub25yZWFkeXN0YXRlY2hhbmdlID0gaGFuZGxlUmVzcG9uc2VFbGV2YXRl
UG9pbnREZXRhaWxzOwogICAgeG1saHR0cC5zZW5kKCIiKTsKfQpmdW5jdGlvbiBoYW5kbGVSZXNw
b25zZUVsZXZhdGVQb2ludERldGFpbHMoKSB7CiAgICBpZiAoeG1saHR0cC5yZWFkeVN0YXRlID09
IDQpIHsKICAgICAgICBpZiAoeG1saHR0cC5zdGF0dXMgPT0gMjAwKSB7CiAgICAgICAgICAgIHZh
ciBFbGV2YXRlUG9pbnRSZXNwb25zZVRleHQgPSB4bWxodHRwLnJlc3BvbnNlVGV4dDsKICAgICAg
ICAgICAgaWYgKEVsZXZhdGVQb2ludFJlc3BvbnNlVGV4dC50cmltKCkgPT0gIkFqYXhTZXNzaW9u
VGltZU91dCIpIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICIvaG9tZS5kbz9t
ZXRob2Q9dmlyZ2luQW1lcmljYSZzZXNzaW9uU3RhdGU9c2Vzc2lvblRpbWVPdXQiOwogICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKGFqYXhEaXYgPT0gImVsZXZhdGVBY3Rp
dml0aWVzIiB8fCBhamF4RGl2ID09ICJleHBQb2ludHNMaW5rRGl2SWQiIHx8IGFqYXhEaXYgPT0g
InBvaW50SGlzdG9yeUZyb21UaGVCYXNpYyIpIHsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiZWxldmF0ZUFjdGl2aXRpZXNEaXYiKS5zdHlsZS5kaXNwbGF5ID0g
Im5vbmUiOwogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbGV2
YXRlQ29udGFjdERpdiIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVsZXZhdGVQcmVmZXJlbmNlc0RpdiIpLnN0eWxl
LmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImVsZXZhdGVBY3Rpdml0aWVzRGl2Iikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAg
ICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVsZXZhdGVBY3Rpdml0
aWVzRGl2IikuaW5uZXJIVE1MID0geG1saHR0cC5yZXNwb25zZVRleHQ7CiAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVsZXZhdGVBY3Rpdml0aWVzIikuY2xhc3NO
YW1lID0gImN1cnJlbnQiOwogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJlbGV2YXRlQ29udGFjdCIpLmNsYXNzTmFtZSA9ICIiOwogICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbGV2YXRlUHJlZmVyZW5jZXMiKS5jbGFzc05hbWUg
PSAiIjsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWxlQWN0
aXZpdHlSaWdodENvbnRhbnREaXZJZCIpLnN0eWxlLmRpc3BsYXkgPSAiIjsKICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXlDb250YWN0SW5mb1JpZ2h0Q29udGVu
dERpdklkIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicHJlZmVyZW5jZXNSaWdodENvbnRlbnREaXZJZCIpLnN0eWxl
LmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoIm15QWNjb3VudFJpZ2h0Q29udGVudERpdklkIikuc3R5bGUuZGlzcGxheSA9ICJub25l
IjsKICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIChhY3Rpdml0eUZpcnN0RGF0YUluZCkg
IT0gInVuZGVmaW5lZCIgJiYgdHlwZW9mIChhY3Rpdml0eVNlY0RhdGFJbmQpICE9ICJ1bmRlZmlu
ZWQiICYmIHR5cGVvZiAoYWN0aXZpdHlQYXN0RGF0YUluZCkgIT0gInVuZGVmaW5lZCIpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LnNpZ25JbkZvcm0pIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnNpZ25JbkZvcm0uYWN0aXZpdHlGaXJzdERhdGEu
c2VsZWN0ZWRJbmRleCA9IGFjdGl2aXR5Rmlyc3REYXRhSW5kOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuc2lnbkluRm9ybS5hY3Rpdml0eVNlY0RhdGEuc2VsZWN0ZWRJbmRl
eCA9IGFjdGl2aXR5U2VjRGF0YUluZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LnNpZ25JbkZvcm0uYWN0aXZpdHlQYXN0RGF0YS5zZWxlY3RlZEluZGV4ID0gYWN0aXZpdHlQ
YXN0RGF0YUluZDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICBzaG93TG9hZGluZ0ltYWdlQ2xvc2UoKTsKICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGFqYXhEaXYgPT0gImVsZXZh
dGVDb250YWN0IikgewogICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiZWxldmF0ZUFjdGl2aXRpZXNEaXYiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAg
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWxldmF0ZUNvbnRh
Y3REaXYiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWxldmF0ZVByZWZlcmVuY2VzRGl2Iikuc3R5bGUuZGlz
cGxheSA9ICJub25lIjsKICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImVsZXZhdGVDb250YWN0RGl2Iikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbGV2YXRlQ29udGFj
dERpdiIpLmlubmVySFRNTCA9IHhtbGh0dHAucmVzcG9uc2VUZXh0OwogICAgICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWxldmF0ZUFjdGl2aXRpZXMiKS5jbGFz
c05hbWUgPSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImVsZXZhdGVDb250YWN0IikuY2xhc3NOYW1lID0gImN1cnJlbnQiOwogICAgICAgICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWxldmF0ZVByZWZlcmVuY2VzIiku
Y2xhc3NOYW1lID0gIiI7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJlbGVBY3Rpdml0eVJpZ2h0Q29udGFudERpdklkIikuc3R5bGUuZGlzcGxheSA9ICJu
b25lIjsKICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm15
Q29udGFjdEluZm9SaWdodENvbnRlbnREaXZJZCIpLnN0eWxlLmRpc3BsYXkgPSAiIjsKICAgICAg
ICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByZWZlcmVuY2VzUmln
aHRDb250ZW50RGl2SWQiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXlBY2NvdW50UmlnaHRDb250ZW50RGl2
SWQiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICAgICAgICAgICAgICBzaG93
TG9hZGluZ0ltYWdlQ2xvc2UoKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoYWpheERpdiA9PSAiZWxldmF0ZVByZWZlcmVuY2VzIikgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVsZXZh
dGVBY3Rpdml0aWVzRGl2Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbGV2YXRlQ29udGFjdERpdiIp
LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiZWxldmF0ZVByZWZlcmVuY2VzRGl2Iikuc3R5bGUuZGlzcGxh
eSA9ICJub25lIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJlbGV2YXRlUHJlZmVyZW5jZXNEaXYiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbGV2
YXRlUHJlZmVyZW5jZXNEaXYiKS5pbm5lckhUTUwgPSB4bWxodHRwLnJlc3BvbnNlVGV4dDsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlbGV2YXRl
QWN0aXZpdGllcyIpLmNsYXNzTmFtZSA9ICIiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVsZXZhdGVDb250YWN0IikuY2xhc3NOYW1lID0gIiI7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWxl
dmF0ZVByZWZlcmVuY2VzIikuY2xhc3NOYW1lID0gImN1cnJlbnQiOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVsZUFjdGl2aXR5UmlnaHRDb250
YW50RGl2SWQiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm15Q29udGFjdEluZm9SaWdodENvbnRlbnRE
aXZJZCIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHJlZmVyZW5jZXNSaWdodENvbnRlbnREaXZJZCIp
LnN0eWxlLmRpc3BsYXkgPSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJteUFjY291bnRSaWdodENvbnRlbnREaXZJZCIpLnN0eWxlLmRpc3Bs
YXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TG9hZGluZ0ltYWdl
Q2xvc2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQp2YXIgY2hr
QWNjb3VudERldGFpbHNSUyA9ICJmYWxzZSI7CnZhciBjaGtQb2ludEFjdGl2aXR5RGV0YWlsc1JT
ID0gImZhbHNlIjsKdmFyIGFycm93SW1nSWQ7CgpmdW5jdGlvbiBjYWxsQWpheEZ1bmN0aW9uKG9i
akRpdklkLCBpbWdJZCkgewogICAgaW1nT2JqID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaW1n
SWQpOwogICAgYXJyb3dJbWdJZCA9IGltZ0lkOwogICAgaWYgKGNoa0FjY291bnREZXRhaWxzUlMg
PT0gImZhbHNlIiAmJiBvYmpEaXZJZCA9PSAibWVzc2FnZURpc3BsYXkiICYmIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKG9iakRpdklkKS5zdHlsZS5kaXNwbGF5ID09ICJub25lIikgewogICAgICAg
IHNob3dXYWl0SW1hZ2UoKTsKICAgICAgICBteVVybCA9ICJlbGV2YXRlQWNjb3VudERldGFpbHMu
ZG8/bWV0aG9kPWVsZXZhdGVCb29raW5nRGV0YWlscyI7CiAgICAgICAgcmV0cmVpdmVBY2NvdW50
RGV0YWlscyhteVVybCwgb2JqRGl2SWQpOwogICAgICAgIGNoa0FjY291bnREZXRhaWxzUlMgPSAi
ZmFsc2UiOwogICAgfSBlbHNlIHsKICAgICAgICBpZiAoY2hrUG9pbnRBY3Rpdml0eURldGFpbHNS
UyA9PSAiZmFsc2UiICYmIG9iakRpdklkID09ICJtZXNzYWdlQWN0aXZpdHkiICYmIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKG9iakRpdklkKS5zdHlsZS5kaXNwbGF5ID09ICJub25lIikgewogICAg
ICAgICAgICBzaG93V2FpdEltYWdlKCk7CiAgICAgICAgICAgIG15VXJsID0gImVsZXZhdGVBY2Nv
dW50RGV0YWlscy5kbz9tZXRob2Q9ZWxldmF0ZVBvaW50c0FjdGl2aXR5IjsKICAgICAgICAgICAg
cmV0cmVpdmVBY2NvdW50RGV0YWlscyhteVVybCwgb2JqRGl2SWQpOwogICAgICAgICAgICBjaGtQ
b2ludEFjdGl2aXR5RGV0YWlsc1JTID0gImZhbHNlIjsKICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob2JqRGl2SWQpLnN0eWxlLmRpc3BsYXkg
PT0gIm5vbmUiKSB7CiAgICAgICAgICAgICAgICBpbWdPYmouc2V0QXR0cmlidXRlKCJzcmMiLCAi
aHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL2Fycm93RG93bi5naWYiKTsK
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG9iakRpdklkKS5zdHlsZS5k
aXNwbGF5ID0gIiI7CiAgICAgICAgICAgICAgICBpZiAob2JqRGl2SWQgPT0gIm1lc3NhZ2VEaXNw
bGF5IikgewogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtZXNz
YWdlQWN0aXZpdHkiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwdERpdkltZ0lkIikuc2V0QXR0cmlidXRlKCJzcmMi
LCAiaHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL2Fycm93UmlnaHQuZ2lm
Iik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAob2JqRGl2SWQgPT0gIm1l
c3NhZ2VBY3Rpdml0eSIpIHsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibWVzc2FnZURpc3BsYXkiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtc2dEaXZJbWdJZCIpLnNldEF0dHJp
YnV0ZSgic3JjIiwgImh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy9hcnJv
d1JpZ2h0LmdpZiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgaW1nT2JqLnNldEF0dHJpYnV0ZSgic3JjIiwgImh0dHBzOi8vc3RhdGljLnZp
cmdpbmFtZXJpY2EuY29tL2ltYWdlcy9hcnJvd1JpZ2h0LmdpZiIpOwogICAgICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob2JqRGl2SWQpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7
CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gcmV0cmVpdmVBY2NvdW50
RGV0YWlscyhteXVybCwgZGl2SWQpIHsKICAgIHhtbGh0dHAgPSBuZXcgWE1MSHR0cFJlcXVlc3Qo
KTsKICAgIHZhciB0aGV0aW1lID0gbmV3IERhdGUoKTsKICAgIHZhciBkdW1teSA9ICIiICsgdGhl
dGltZS5nZXRIb3VycygpICsgdGhldGltZS5nZXRNaW51dGVzKCkgKyB0aGV0aW1lLmdldFNlY29u
ZHMoKTsKICAgIG15dXJsID0gbXl1cmwgKyAiJmR1bW15PSIgKyBkdW1teTsKICAgIGFqYXhEaXYg
PSBkaXZJZDsKICAgIHhtbGh0dHAub3BlbigiUE9TVCIsIG15dXJsLCB0cnVlKTsKICAgIHhtbGh0
dHAub25yZWFkeXN0YXRlY2hhbmdlID0gaGFuZGxlUmVzcG9uc2VBY2NvdW50RGV0YWlsczsKICAg
IHhtbGh0dHAuc2VuZCgiIik7Cn0KZnVuY3Rpb24gaGFuZGxlUmVzcG9uc2VBY2NvdW50RGV0YWls
cygpIHsKICAgIGlmICh4bWxodHRwLnJlYWR5U3RhdGUgPT0gNCkgewogICAgICAgIGlmICh4bWxo
dHRwLnN0YXR1cyA9PSAyMDApIHsKICAgICAgICAgICAgdmFyIHJlc3BvbnNlVGV4dCA9IHhtbGh0
dHAucmVzcG9uc2VUZXh0OwogICAgICAgICAgICBpZiAocmVzcG9uc2VUZXh0LnRyaW0oKSA9PSAi
QWpheFNlc3Npb25UaW1lT3V0IikgewogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0g
Ii9ob21lLmRvP21ldGhvZD12aXJnaW5BbWVyaWNhJnNlc3Npb25TdGF0ZT1zZXNzaW9uVGltZU91
dCI7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgibG9naW5XaW5kb3dEaXYiKS5pbm5lckhUTUwgPSB4bWxodHRwLnJlc3BvbnNlVGV4
dDsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2dpbldpbmRvd0Rp
diIpLnN0eWxlLmRpc3BsYXkgPSAiIjsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKGFqYXhEaXYpLnN0eWxlLmRpc3BsYXkgPSAiIjsKICAgICAgICAgICAgICAgIHZhciBp
bWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhcnJvd0ltZ0lkKTsKICAgICAgICAgICAgICAg
IGltZy5zZXRBdHRyaWJ1dGUoInNyYyIsICJodHRwczovL3N0YXRpYy52aXJnaW5hbWVyaWNhLmNv
bS9pbWFnZXMvYXJyb3dEb3duLmdpZiIpOwogICAgICAgICAgICAgICAgaWYgKGFqYXhEaXYgPT0g
Im1lc3NhZ2VBY3Rpdml0eSIgJiYgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1lc3NhZ2VEaXNw
bGF5Iikuc3R5bGUuZGlzcGxheSAhPSAibm9uZSIpIHsKICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgibWVzc2FnZURpc3BsYXkiKS5zdHlsZS5kaXNwbGF5ID0gIm5v
bmUiOwogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtc2dEaXZJ
bWdJZCIpLnNldEF0dHJpYnV0ZSgic3JjIiwgImh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2Eu
Y29tL2ltYWdlcy9hcnJvd1JpZ2h0LmdpZiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgaWYgKGFqYXhEaXYgPT0gIm1lc3NhZ2VEaXNwbGF5IikgewogICAgICAgICAgICAgICAg
ICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWVzc2FnZUFjdGl2aXR5Iikuc3R5bGUu
ZGlzcGxheSAhPSAibm9uZSIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoIm1lc3NhZ2VBY3Rpdml0eSIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwdERpdkltZ0lk
Iikuc2V0QXR0cmlidXRlKCJzcmMiLCAiaHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20v
aW1hZ2VzL2Fycm93UmlnaHQuZ2lmIik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgc2hvd0xvYWRpbmdJbWFnZUNsb3NlKCk7CiAgICAgICAg
ICAgIH0KICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gc2hvd0NrSW5Ib21lKHBuciwgaWQpIHsK
ICAgIHZhciB4ID0gZG9jdW1lbnQucG5yRGV0YWlsRm9ybS5lbGVtZW50c1sicG5yRGV0YWlsLnBu
ck5vIl07CiAgICB4LnZhbHVlID0gcG5yOwogICAgaWYgKGFyZ3VtZW50c1syXSAhPSBudWxsKSB7
CiAgICAgICAgZG9jdW1lbnQucG5yRGV0YWlsRm9ybS5lbGVtZW50c1sicG5yRGV0YWlsLmxhc3RO
YW1lIl0udmFsdWUgPSBhcmd1bWVudHNbMl07CiAgICB9CiAgICBpZiAoaWQgIT0gbnVsbCAmJiBp
ZCA9PSAiIikgewogICAgICAgIGRvY3VtZW50LnBuckRldGFpbEZvcm0uZnJvbU1hbmFnZVRyYXZl
bC52YWx1ZSA9ICJubyI7CiAgICB9CiAgICBpZiAoYXJndW1lbnRzWzNdICE9IG51bGwpIHsKICAg
ICAgICBpZiAoYXJndW1lbnRzWzNdID09ICJ2aWV3SXRpbmVyYXJ5IikgewogICAgICAgICAgICBk
b2N1bWVudC5wbnJEZXRhaWxGb3JtLmVsZW1lbnRzWyJtZXRob2QiXS52YWx1ZSA9ICJ2aWV3SXRp
bmVyYXJ5IjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBkb2N1bWVudC5wbnJEZXRhaWxG
b3JtLmVsZW1lbnRzWyJtZXRob2QiXS52YWx1ZSA9ICJtYW5hZ2UiOwogICAgICAgIH0KICAgIH0K
ICAgIGRvY3VtZW50LnBuckRldGFpbEZvcm0uc3VibWl0KCk7CiAgICBzaG93V2FpdEltYWdlKCk7
Cn0KZnVuY3Rpb24gZ2V0UGFnZVNpemVXaXRoU2Nyb2xsKCkgewogICAgaWYgKHdpbmRvdy5pbm5l
ckhlaWdodCAmJiB3aW5kb3cuc2Nyb2xsTWF4WSkgewogICAgICAgIHlXaXRoU2Nyb2xsID0gd2lu
ZG93LmlubmVySGVpZ2h0ICsgd2luZG93LnNjcm9sbE1heFk7CiAgICAgICAgeFdpdGhTY3JvbGwg
PSB3aW5kb3cuaW5uZXJXaWR0aCArIHdpbmRvdy5zY3JvbGxNYXhYOwogICAgfSBlbHNlIHsKICAg
ICAgICBpZiAoZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQgPiBkb2N1bWVudC5ib2R5Lm9mZnNl
dEhlaWdodCkgewogICAgICAgICAgICB5V2l0aFNjcm9sbCA9IGRvY3VtZW50LmJvZHkuc2Nyb2xs
SGVpZ2h0OwogICAgICAgICAgICB4V2l0aFNjcm9sbCA9IGRvY3VtZW50LmJvZHkuc2Nyb2xsV2lk
dGg7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgeVdpdGhTY3JvbGwgPSBkb2N1bWVudC5i
b2R5Lm9mZnNldEhlaWdodCArIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwogICAgICAgICAgICB4
V2l0aFNjcm9sbCA9IGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGggKyBkb2N1bWVudC5ib2R5Lm9m
ZnNldExlZnQ7CiAgICAgICAgfQogICAgfQogICAgYXJyYXlQYWdlU2l6ZVdpdGhTY3JvbGwgPSBu
ZXcgQXJyYXkoeFdpdGhTY3JvbGwsIHlXaXRoU2Nyb2xsKTsKICAgIHJldHVybiBhcnJheVBhZ2VT
aXplV2l0aFNjcm9sbDsKfQpmdW5jdGlvbiBHZXRYbWxIdHRwT2JqZWN0KCkgewogICAgdmFyIHht
bEh0dHAgPSBudWxsOwogICAgdHJ5IHsKICAgICAgICB4bWxIdHRwID0gbmV3IFhNTEh0dHBSZXF1
ZXN0KCk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgeG1sSHR0
cCA9IG5ldyBBY3RpdmVYT2JqZWN0KCJNc3htbDIuWE1MSFRUUCIpOwogICAgICAgIH0gY2F0Y2gg
KGUpIHsKICAgICAgICAgICAgeG1sSHR0cCA9IG5ldyBBY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQu
WE1MSFRUUCIpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiB4bWxIdHRwOwp9CmZ1bmN0aW9u
IGNsb3NlRmFyZVJ1bERpdihkaXZJZCkgewogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGl2
SWQpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Cn0KZnVuY3Rpb24gdG9nZ2xlVGF4ZXNBbkZlZShv
YmpJZCkgewogICAgdmFyIGltZ09iaiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG9iaklkKTsK
ICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFzc2VuZ2VyQ2hhcmdlSWQiKS5zdHls
ZS5kaXNwbGF5ICE9ICJub25lIikgewogICAgICAgIGltZ09iai5zcmMgPSAiaHR0cHM6Ly9zdGF0
aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL3RheEZlZXNFeHBhbmQuZ2lmIjsKICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFzc2VuZ2VyQ2hhcmdlSWQiKS5zdHlsZS5kaXNwbGF5
ID0gIm5vbmUiOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWN1cml0eUZlZUlk
Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgic2VnbWVudEZlZUlkIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICBpZiAoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRyYXZlbEluc3VyZW5jZUlkIikgIT0gbnVsbCkgewogICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidHJhdmVsSW5zdXJlbmNlSWQiKS5zdHls
ZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgaW1nT2Jq
LnNyYyA9ICJodHRwczovL3N0YXRpYy52aXJnaW5hbWVyaWNhLmNvbS9pbWFnZXMvdGF4RmVlc0Nv
bGxhcHNlLmdpZiI7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhc3NlbmdlckNo
YXJnZUlkIikuc3R5bGUuZGlzcGxheSA9ICIiOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJzZWN1cml0eUZlZUlkIikuc3R5bGUuZGlzcGxheSA9ICIiOwogICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJzZWdtZW50RmVlSWQiKS5zdHlsZS5kaXNwbGF5ID0gIiI7CiAgICAg
ICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0cmF2ZWxJbnN1cmVuY2VJZCIpICE9IG51
bGwpIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRyYXZlbEluc3VyZW5j
ZUlkIikuc3R5bGUuZGlzcGxheSA9ICIiOwogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiBzaG93
Um9sbG92ZXJJbWFnZU5vcihpbWdJZCwgaW1nTmFtZSkgewogICAgaW1nSWQuc3JjID0gImh0dHBz
Oi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy8iICsgaW1nTmFtZSArICJfcm9sbC5n
aWYiOwp9CmZ1bmN0aW9uIHJlc3RvcmVJbWFnZU5vcihpbWdJZCwgaW1nTmFtZSkgewogICAgaW1n
SWQuc3JjID0gImh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy8iICsgaW1n
TmFtZSArICIuZ2lmIjsKfQpmdW5jdGlvbiBhZGRFdmVudCgpIHsKICAgIHZhciBuaSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJteURpdiIpOwogICAgdmFyIG51bWkgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGhlVmFsdWUiKTsKICAgIHZhciBudW0gPSAoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRoZVZhbHVlIikudmFsdWUgLSAxKSArIDI7CiAgICBudW1pLnZhbHVlID0gbnVtOwog
ICAgdmFyIGRpdklkTmFtZSA9ICJteSIgKyBudW0gKyAiRGl2RU1haWwiOwogICAgdmFyIG5ld2Rp
diA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgbmV3ZGl2LnNldEF0dHJpYnV0
ZSgiaWQiLCBkaXZJZE5hbWUpOwogICAgbmV3ZGl2LmlubmVySFRNTCA9ICI8dGFibGUgY2VsbHBh
ZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJvcmRlcj0wIHdpZHRoPTQxNj48dHI+PHRkIHdpZHRoPTMx
PjwvdGQ+PHRkIHdpZHRoPTExMCBjbGFzcz1wYWdlQm9keTk+PHN0cm9uZz5FbWFpbCBBZGRyZXNz
Ojwvc3Ryb25nPjwvdGQ+PHRkIHdpZHRoPTExMD48aW5wdXQgbmFtZT1tb2RpZnlQcm9maWxlTW9k
ZWwuZW1haWxhZGRyZXNzWyIgKyBudW0gKyAiXSB0eXBlPXRleHQgY2xhc3M9cGFnZUJvZHk5IHNp
emU9MjUgPjwvdGQ+PHRkPjxpbWcgc3JjPWh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29t
L2ltYWdlcy9zcGFjZXIuZ2lmIHdpZHRoPTMgLz48L3RkPjx0ZD48aW1nIHNyYz1odHRwczovL3N0
YXRpYy52aXJnaW5hbWVyaWNhLmNvbS9pbWFnZXMvYnRuX2RlbGV0ZS5naWYgb25tb3VzZW92ZXI9
XCJzaG93Um9sbG92ZXJJbWFnZSh0aGlzLCdidG5fZGVsZXRlJyk7TWFrZUN1cnNvcih0aGlzKTtc
IiBvbm1vdXNlb3V0PXJlc3RvcmVJbWFnZSh0aGlzLCdidG5fZGVsZXRlJykgYWx0PURlbGV0ZSB0
aXRsZT1EZWxldGUgb25jbGljaz1cInJlbW92ZUV2ZW50KCciICsgZGl2SWROYW1lICsgIicsJ215
RGl2JywnbWFpbCcpO3Jlc2V0TWFpbEVsZW1lbnROYW1lKCk7XCI+PC90ZD48dGQ+PC90ZD48L3Ry
Pjx0cj48dGQgY29sc3Bhbj00PjxpbWcgc3JjPWh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2Eu
Y29tL2ltYWdlcy9zcGFjZXIuZ2lmIHdpZHRoPTEgaGVpZ2h0PTM+PC90ZD48L3RyPjwvdGFibGU+
IjsKICAgIENudEFkZEVsZW1lbnRzKCJjbnRNYWlsRWxlbWVudHMiKTsKICAgIG5pLmFwcGVuZENo
aWxkKG5ld2Rpdik7Cn0KZnVuY3Rpb24gYWRkRXZlbnRGb3JQaG9uZSgpIHsKICAgIHZhciBuaSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJteURpdlBob25lIik7CiAgICB2YXIgbnVtaSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0aGVWYWx1ZVBob25lIik7CiAgICB2YXIgbnVtID0gKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0aGVWYWx1ZVBob25lIikudmFsdWUgLSAxKSArIDI7CiAg
ICBudW1pLnZhbHVlID0gbnVtOwogICAgdmFyIGRpdklkTmFtZSA9ICJteSIgKyBudW0gKyAiRGl2
NFBob25lIjsKICAgIHZhciBuZXdkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
ICAgIG5ld2Rpdi5zZXRBdHRyaWJ1dGUoImlkIiwgZGl2SWROYW1lKTsKICAgIG5ld2Rpdi5pbm5l
ckhUTUwgPSAiPHRhYmxlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBib3JkZXI9MCB3aWR0
aD00MTY+PHRyPjx0ZCB3aWR0aD0zMT48aW5wdXQgdHlwZT1yYWRpbyB2YWx1ZT1waG9uZSIgKyBu
dW0gKyAiIG5hbWU9cGhvbmVQcmltYXJ5ICBvbmNsaWNrPXNldFJhZGlvVmFsKHRoaXMudmFsdWUs
J3BlcnNvbmFsSW5mbycsMCk7PjwvdGQ+PHRkIHdpZHRoPTExMCBjbGFzcz1wYWdlQm9keTk+PHNl
bGVjdCBuYW1lPW1vZGlmeVByb2ZpbGVNb2RlbC5waG9uZXR5cGVuZXdbIiArIG51bSArICJdIGNs
YXNzPXBhZ2VCb2R5OSBzdHlsZT0nd2lkdGg6MTAwcHg7Jz48b3B0aW9uIHNlbGVjdGVkPXNlbGVj
dGVkIHZhbHVlPScnPlNlbGVjdCBUeXBlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1vZmZpY2U+QnVz
aW5lc3M8L29wdGlvbj48b3B0aW9uIHZhbHVlPUhvbWU+SG9tZTwvb3B0aW9uPjxvcHRpb24gdmFs
dWU9TW9iaWxlPk1vYmlsZTwvb3B0aW9uPjwvc2VsZWN0PjwvdGQ+PHRkIHdpZHRoPTExMD48aW5w
dXQgbmFtZT1tb2RpZnlQcm9maWxlTW9kZWwucGhvbmVudW1iZXJuZXdbIiArIG51bSArICJdIHR5
cGU9dGV4dCB2YWx1ZT0nJyBjbGFzcz1wYWdlQm9keTkgc2l6ZT0yNSA+PC90ZD48dGQ+PGltZyBz
cmM9aHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL3NwYWNlci5naWYgd2lk
dGg9MyAvPjwvdGQ+PHRkPjxpbWcgc3JjPWh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29t
L2ltYWdlcy9idG5fZGVsZXRlLmdpZiBvbm1vdXNlb3Zlcj1cInNob3dSb2xsb3ZlckltYWdlKHRo
aXMsJ2J0bl9kZWxldGUnKTtNYWtlQ3Vyc29yKHRoaXMpO1wiIG9ubW91c2VvdXQ9cmVzdG9yZUlt
YWdlKHRoaXMsJ2J0bl9kZWxldGUnKSBhbHQ9RGVsZXRlIHRpdGxlPURlbGV0ZSBvbmNsaWNrPVwi
cmVtb3ZlRXZlbnQoJyIgKyBkaXZJZE5hbWUgKyAiJywnbXlEaXZQaG9uZScsJ3Bob25lJyk7cmVz
ZXRFbGVtZW50TmFtZSgiICsgbnVtICsgJyk7Ij48L3RkPjx0ZD48L3RkPjwvdHI+PHRyPjx0ZCBj
b2xzcGFuPTQ+PGltZyBzcmM9aHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2Vz
L3NwYWNlci5naWYgd2lkdGg9MSBoZWlnaHQ9Mz48L3RkPjwvdHI+PC90YWJsZT4nOwogICAgQ250
QWRkRWxlbWVudHMoImNudE1haWxFbGVtZW50cyIpOwogICAgbmkuYXBwZW5kQ2hpbGQobmV3ZGl2
KTsKfQpmdW5jdGlvbiByZW1vdmVFdmVudChkaXZOdW0sIG15RGl2SUQsIHdoaWNoRWwpIHsKICAg
IHZhciBkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobXlEaXZJRCk7CiAgICB2YXIgb2xkZGl2
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGl2TnVtKTsKICAgIGlmICh3aGljaEVsID09ICJt
YWlsIikgewogICAgICAgIENudFJlbW92ZUVsZW1lbnRzKCJ0aGVWYWx1ZSIpOwogICAgfSBlbHNl
IHsKICAgICAgICBpZiAod2hpY2hFbCA9PSAicGhvbmUiKSB7CiAgICAgICAgICAgIENudFJlbW92
ZUVsZW1lbnRzKCJ0aGVWYWx1ZVBob25lIik7CiAgICAgICAgfQogICAgfQogICAgZC5yZW1vdmVD
aGlsZChvbGRkaXYpOwp9CmZ1bmN0aW9uIGFkZEV2ZW50Rm9yQ3JlZGl0Q2FyZCgpIHsKICAgIHZh
ciBuaSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJteURpdkNhcmQiKTsKICAgIHZhciBpID0g
MDsKICAgIHZhciBudW1pID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRoZVZhbHVlQ2FyZCIp
OwogICAgdmFyIG51bSA9IChwYXJzZUludChudW1pLnZhbHVlKSAtIDEpICsgMjsKICAgIG51bWku
dmFsdWUgPSBudW07CiAgICBmb3IgKGkgPSAwOyBpIDwgZG9jdW1lbnQubW9kaWZ5UHJvZmlsZUZv
cm0uZWxlbWVudHMubGVuZ3RoOyBpKyspIHsKICAgICAgICBpZiAoZG9jdW1lbnQubW9kaWZ5UHJv
ZmlsZUZvcm0uZWxlbWVudHNbaV0ubmFtZSA9PSAibW9kaWZ5UHJvZmlsZU1vZGVsLmNhcmRDb3Vu
dCIpIHsKICAgICAgICAgICAgZG9jdW1lbnQubW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHNbaV0u
dmFsdWUgPSBudW07CiAgICAgICAgfQogICAgfQogICAgdmFyIGRpdklkTmFtZSA9ICJteURpdkNy
ZWRpdENhcmQiICsgbnVtOwogICAgdmFyIG5ld2RpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwogICAgbmV3ZGl2LnNldEF0dHJpYnV0ZSgiaWQiLCBkaXZJZE5hbWUpOwogICAgbmku
YXBwZW5kQ2hpbGQobmV3ZGl2KTsKICAgIG9wZW5EaXZGb3JFZGl0KGRpdklkTmFtZSwgZGl2SWRO
YW1lLCAiZWRpdENyZWRpdENhcmRJbmZvSW5Qcm9maWxlSXRlcmF0ZUFkZC5qc3A/ZGl2TnVtPSIg
KyBudW0pOwp9CmZ1bmN0aW9uIGFkZEV2ZW50Rm9yQ29tcGFuaW9uKCkgewogICAgdmFyIG5pID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm15RGl2Q29tcGFuaW9uIik7CiAgICB2YXIgaSA9IDA7
CiAgICB2YXIgbnVtaSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0aGVWYWx1ZUNvbXBhbmlv
biIpOwogICAgdmFyIG51bSA9IChwYXJzZUludChudW1pLnZhbHVlKSAtIDEpICsgMjsKICAgIG51
bWkudmFsdWUgPSBudW07CiAgICB2YXIgZGl2SWROYW1lID0gIm5hbWVEaXZQYXJlbnQiICsgbnVt
OwogICAgdmFyIG5ld2RpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgbmV3
ZGl2LnNldEF0dHJpYnV0ZSgiaWQiLCBkaXZJZE5hbWUpOwogICAgbmkuYXBwZW5kQ2hpbGQobmV3
ZGl2KTsKICAgIG9wZW5EaXZGb3JFZGl0KGRpdklkTmFtZSwgZGl2SWROYW1lLCAiZWRpdFRyYXZl
bENvbXBhbmlvbnNJblByb2ZpbGVBZGQuanNwP2Rpdk51bT0iICsgbnVtKTsKfQpmdW5jdGlvbiBD
bnRBZGRFbGVtZW50cyhlbGVtZW50SWQpIHsKICAgIHZhciBjbnRBZGQgPSAwOwogICAgY250QWRk
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKS52YWx1ZTsKICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkudmFsdWUgPSAoY250QWRkKSAtICgtMSk7Cn0KZnVu
Y3Rpb24gQ250UmVtb3ZlRWxlbWVudHMoZWxlbWVudElkKSB7CiAgICB2YXIgY250UmVtID0gMDsK
ICAgIGNudFJlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCkudmFsdWU7CiAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpLnZhbHVlID0gY250UmVtIC0gMTsK
fQpmdW5jdGlvbiBzaG93SGlkZUxheWVyKGFuY2hvck9iaiwgZGl2SUQsIGltZ05hbWUsIGRpdklE
U3BhY2UpIHsKICAgIGRpdklkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGl2SUQpOwogICAg
aWYgKGRpdklEU3BhY2UgIT0gIm5vIikgewogICAgICAgIGRpdklEU3BhY2UgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChkaXZJRFNwYWNlKTsKICAgIH0KICAgIGlmIChkaXZJZC5zdHlsZS5kaXNw
bGF5ICE9ICJub25lIikgewogICAgICAgIGFuY2hvck9iai5jbGFzc05hbWUgPSAiY29sbGFwc2Vk
IjsKICAgICAgICBkaXZJZC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgIGlmIChkaXZJ
RFNwYWNlICE9ICJubyIpIHsKICAgICAgICAgICAgZGl2SURTcGFjZS5zdHlsZS5kaXNwbGF5ID0g
ImJsb2NrIjsKICAgICAgICB9CiAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
b2dnbGVUcmlnZ2VyIikpIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRv
Z2dsZVRyaWdnZXIiKS5pbm5lckhUTUwgPSAiU2hvdyBEZXRhaWxzIjsKICAgICAgICB9CiAgICB9
IGVsc2UgewogICAgICAgIGFuY2hvck9iai5jbGFzc05hbWUgPSAiY29sbGFwc2VCdG4iOwogICAg
ICAgIGRpdklkLnN0eWxlLmRpc3BsYXkgPSAiIjsKICAgICAgICBpZiAoZGl2SURTcGFjZSAhPSAi
bm8iKSB7CiAgICAgICAgICAgIGRpdklEU3BhY2Uuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAg
ICAgICB9CiAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b2dnbGVUcmlnZ2Vy
IikpIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvZ2dsZVRyaWdnZXIi
KS5pbm5lckhUTUwgPSAiSGlkZSBEZXRhaWxzIjsKICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24g
c2hvd0hpZGVMYXllck9uTG9hZCgpIHsKICAgIHZhciBkaXZJZDsKICAgIHZhciBhY3RpdmVJbWc7
CiAgICBpZiAodGFiU2VsZWN0ID09IDEpIHsKICAgICAgICBkaXZJZCA9ICJ0aGVCYXNpY3MiOwog
ICAgICAgIGFjdGl2ZUltZyA9ICJodHRwczovL3N0YXRpYy52aXJnaW5hbWVyaWNhLmNvbS9pbWFn
ZXMvYnRuX3RoZV9iYXNpY3Nfc2VsLmdpZiI7CiAgICB9IGVsc2UgewogICAgICAgIGlmICh0YWJT
ZWxlY3QgPT0gMikgewogICAgICAgICAgICBkaXZJZCA9ICJhY2NvdW50QWN0aXZpdHkiOwogICAg
ICAgICAgICBhY3RpdmVJbWcgPSAiaHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1h
Z2VzL2J0bl9hY2NvdW50X2FjdGl2aXR0eV9zZWwuZ2lmIjsKICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICBpZiAodGFiU2VsZWN0ID09IDMpIHsKICAgICAgICAgICAgICAgIGRpdklkID0gImZ1
dHVyZUZsaWdodHMiOwogICAgICAgICAgICAgICAgYWN0aXZlSW1nID0gImh0dHBzOi8vc3RhdGlj
LnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy9idG5fZnV0dXJlX2ZsaWdodHNfc2VsLmdpZiI7CiAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAodGFiU2VsZWN0ID09IDQpIHsK
ICAgICAgICAgICAgICAgICAgICBkaXZJZCA9ICJwcmVmZXJlbmNlcyI7CiAgICAgICAgICAgICAg
ICAgICAgYWN0aXZlSW1nID0gImh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdl
cy9idG5fcHJlZmVyZW5jZXNfc2VsLmdpZiI7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgICAgIGRpdklkID0gInRoZUJhc2ljcyI7CiAgICAgICAgICAgICAgICAgICAg
YWN0aXZlSW1nID0gImh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy9idG5f
dGhlX2Jhc2ljc19zZWwuZ2lmIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAg
ICAgIH0KICAgIH0KICAgIHNob3dEaXZBcmVhKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRpdklk
KSwgYWN0aXZlSW1nLCB0YWJTZWxlY3QpOwp9CmZ1bmN0aW9uIHJlc2V0RWxlbWVudE5hbWUobnVt
KSB7CiAgICB2YXIgZWxjbnQgPSAwOwogICAgdmFyIGRsTnVtID0gcGFyc2VJbnQobnVtKTsKICAg
IHZhciByYWRpb0RlbE51bTsKICAgIGZvciAoaSA9IDA7IGkgPCBkb2N1bWVudC5tb2RpZnlQcm9m
aWxlRm9ybS5lbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgIGlmIChkb2N1bWVudC5tb2Rp
ZnlQcm9maWxlRm9ybS5lbGVtZW50c1tpXS5uYW1lLmxlbmd0aCA+IDMyKSB7CiAgICAgICAgICAg
IGlmIChkb2N1bWVudC5tb2RpZnlQcm9maWxlRm9ybS5lbGVtZW50c1tpXS5uYW1lLnN1YnN0cmlu
ZygwLCAzMykgPT0gIm1vZGlmeVByb2ZpbGVNb2RlbC5waG9uZW51bWJlcm5ldyIpIHsKICAgICAg
ICAgICAgICAgIGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVsZW1lbnRzW2ldLm5hbWUgPSAi
bW9kaWZ5UHJvZmlsZU1vZGVsLnBob25lbnVtYmVybmV3WyIgKyBlbGNudCArICJdIjsKICAgICAg
ICAgICAgICAgIGVsY250ID0gZWxjbnQgKyAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAg
fQogICAgZWxjbnQgPSAwOwogICAgZm9yIChpID0gMDsgaSA8IGRvY3VtZW50Lm1vZGlmeVByb2Zp
bGVGb3JtLmVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWYgKGRvY3VtZW50Lm1vZGlm
eVByb2ZpbGVGb3JtLmVsZW1lbnRzW2ldLm5hbWUubGVuZ3RoID4gMzApIHsKICAgICAgICAgICAg
aWYgKGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVsZW1lbnRzW2ldLm5hbWUuc3Vic3RyaW5n
KDAsIDMxKSA9PSAibW9kaWZ5UHJvZmlsZU1vZGVsLnBob25ldHlwZW5ldyIpIHsKICAgICAgICAg
ICAgICAgIGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVsZW1lbnRzW2ldLm5hbWUgPSAibW9k
aWZ5UHJvZmlsZU1vZGVsLnBob25ldHlwZW5ld1siICsgZWxjbnQgKyAiXSI7CiAgICAgICAgICAg
ICAgICBlbGNudCA9IGVsY250ICsgMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAg
IGVsY250ID0gMDsKICAgIGZvciAoaSA9IDA7IGkgPCBkb2N1bWVudC5tb2RpZnlQcm9maWxlRm9y
bS5lbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgIGlmIChkb2N1bWVudC5tb2RpZnlQcm9m
aWxlRm9ybS5lbGVtZW50c1tpXS5uYW1lID09ICJwaG9uZVByaW1hcnkiKSB7CiAgICAgICAgICAg
IGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVsZW1lbnRzW2ldLnZhbHVlID0gInBob25lIiAr
IGVsY250OwogICAgICAgICAgICBlbGNudCA9IGVsY250ICsgMTsKICAgICAgICB9CiAgICB9Cn0K
ZnVuY3Rpb24gcmVzZXRNYWlsRWxlbWVudE5hbWUoKSB7CiAgICB2YXIgZWxjbnQgPSAwOwogICAg
Zm9yIChpID0gMDsgaSA8IGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVsZW1lbnRzLmxlbmd0
aDsgaSsrKSB7CiAgICAgICAgaWYgKGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVsZW1lbnRz
W2ldLm5hbWUubGVuZ3RoID4gMzApIHsKICAgICAgICAgICAgaWYgKGRvY3VtZW50Lm1vZGlmeVBy
b2ZpbGVGb3JtLmVsZW1lbnRzW2ldLm5hbWUuc3Vic3RyaW5nKDAsIDMxKSA9PSAibW9kaWZ5UHJv
ZmlsZU1vZGVsLmVtYWlsYWRkcmVzcyIpIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50Lm1vZGlm
eVByb2ZpbGVGb3JtLmVsZW1lbnRzW2ldLm5hbWUgPSAibW9kaWZ5UHJvZmlsZU1vZGVsLmVtYWls
YWRkcmVzc1siICsgZWxjbnQgKyAiXSI7CiAgICAgICAgICAgICAgICBlbGNudCA9IGVsY250ICsg
MTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiByZXNldEVsZW1lbnRO
YW1lUGhvbmVSdW4obnVtKSB7CiAgICB2YXIgZWxjbnQgPSAwOwogICAgdmFyIGhpZGRDbnQgPSBw
YXJzZUludChudW0pOwogICAgZm9yIChpID0gMDsgaSA8IGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVG
b3JtLmVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWYgKGRvY3VtZW50Lm1vZGlmeVBy
b2ZpbGVGb3JtLmVsZW1lbnRzW2ldLm5hbWUubGVuZ3RoID4gMzIpIHsKICAgICAgICAgICAgaWYg
KGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVsZW1lbnRzW2ldLm5hbWUuc3Vic3RyaW5nKDAs
IDMzKSA9PSAibW9kaWZ5UHJvZmlsZU1vZGVsLnBob25lbnVtYmVybmV3IikgewogICAgICAgICAg
ICAgICAgaWYgKGkgPj0gbnVtICYmIGVsY250ID4gbnVtKSB7CiAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQubW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHNbaV0ubmFtZSA9ICJtb2RpZnlQcm9m
aWxlTW9kZWwucGhvbmVudW1iZXJuZXdbIiArIChlbGNudCAtIDEpICsgIl0iOwogICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVsZW1lbnRzW2ldLnZhbHVlID0g
ZG9jdW1lbnQubW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHNbaV0ubmFtZTsKICAgICAgICAgICAg
ICAgICAgICBpZiAocGFyc2VJbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRoZVZhbHVlUGhv
bmUiKS52YWx1ZSkgPj0gKGhpZGRDbnQgKyAxKSkgewogICAgICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicG9zaXRpb25EaXYiICsgaGlkZENudCArICIiKS52YWx1
ZSA9IGhpZGRDbnQgLSAxOwogICAgICAgICAgICAgICAgICAgICAgICBoaWRkQ250ID0gaGlkZENu
dCArIDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgZWxjbnQgPSBlbGNudCArIDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGhlVmFsdWVQaG9uZSIpLnZhbHVlID0gcGFyc2VJ
bnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRoZVZhbHVlUGhvbmUiKS52YWx1ZSkgLSAxOwp9
CmZ1bmN0aW9uIGRlbGV0ZUxheWVyKGlkKSB7CiAgICBpZiAoZG9jdW1lbnQubGF5ZXJzICYmIGRv
Y3VtZW50LmxheWVyc1tpZF0pIHsKICAgICAgICBkb2N1bWVudC5sYXllcnNbaWRdLnZpc2liaWxp
dHkgPSAiaGlkZSI7CiAgICAgICAgZGVsZXRlIGRvY3VtZW50LmxheWVyc1tpZF07CiAgICB9Cn0K
ZnVuY3Rpb24gc2V0QWxpYXNWYWx1ZSh2YWwpIHsKICAgIGZvciAoaSA9IDA7IGkgPCBkb2N1bWVu
dC5yZXF1ZXN0UHJvZmlsZUZvcm0uZWxlbWVudHMubGVuZ3RoOyBpKyspIHsKICAgICAgICBpZiAo
ZG9jdW1lbnQucmVxdWVzdFByb2ZpbGVGb3JtLmVsZW1lbnRzW2ldLm5hbWUgPT0gImNyZWF0ZVBy
b2ZpbGUuZW1haWxTZWNvbmQiKSB7CiAgICAgICAgICAgIGRvY3VtZW50LnJlcXVlc3RQcm9maWxl
Rm9ybS5lbGVtZW50c1tpXS52YWx1ZSA9IHZhbDsKICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24g
c2V0QWxpYXNNb2RpZnlWYWx1ZSh2YWwpIHsKICAgIGZvciAoaSA9IDA7IGkgPCBkb2N1bWVudC5t
b2RpZnlQcm9maWxlRm9ybS5lbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgIGlmIChkb2N1
bWVudC5tb2RpZnlQcm9maWxlRm9ybS5lbGVtZW50c1tpXS5uYW1lID09ICJtb2RpZnlQcm9maWxl
TW9kZWwuYWxpYXMiKSB7CiAgICAgICAgICAgIGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVs
ZW1lbnRzW2ldLnZhbHVlID0gdmFsOwogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiByZXNldEVs
ZW1lbnROYW1lQWRkcmVzcyhudW0pIHsKICAgIHZhciBlbGNudCA9IDA7CiAgICB2YXIgbmFtZTsK
ICAgIHZhciBlbFBvc2l0aW9uOwogICAgdmFyIGVsSW50UG9zaXRpb247CiAgICBmb3IgKGkgPSAw
OyBpIDwgZG9jdW1lbnQubW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHMubGVuZ3RoOyBpKyspIHsK
ICAgICAgICBuYW1lID0gZG9jdW1lbnQubW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHNbaV0ubmFt
ZTsKICAgICAgICBuYW1lID0gbmFtZS5zcGxpdCgiWyIpOwogICAgICAgIGlmICghKG5hbWVbMV0g
PT0gbnVsbCB8fCBuYW1lW2ldID09ICIiKSkgewogICAgICAgICAgICBlbFBvc2l0aW9uID0gbmFt
ZVsxXS5zcGxpdCgiXSIpOwogICAgICAgICAgICBpZiAoIShlbFBvc2l0aW9uWzBdID09IG51bGwg
fHwgZWxQb3NpdGlvblswXSA9PSAiIikpIHsKICAgICAgICAgICAgICAgIGVsSW50UG9zaXRpb24g
PSBwYXJzZUludChlbFBvc2l0aW9uWzBdKTsKICAgICAgICAgICAgICAgIGlmIChpID49IG51bSAm
JiBlbEludFBvc2l0aW9uID4gbnVtKSB7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQubW9k
aWZ5UHJvZmlsZUZvcm0uZWxlbWVudHNbaV0ubmFtZSA9IG5hbWVbMF0gKyAiWyIgKyAoZWxJbnRQ
b3NpdGlvbiAtIDEpICsgIl0iOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAg
ICAgfQogICAgfQogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRoZVZhbHVlQWRkcmVzcyIp
LnZhbHVlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRoZVZhbHVlQWRkcmVzcyIpLnZhbHVl
IC0gMTsKfQpmdW5jdGlvbiBhZGRFdmVudEZvckFkZHJlc3MoKSB7CiAgICB2YXIgaSA9IDA7CiAg
ICB2YXIgbmkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXlEaXZBZGRyZXNzIik7CiAgICB2
YXIgaSA9IDA7CiAgICB2YXIgbnVtaSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0aGVWYWx1
ZUFkZHJlc3MiKTsKICAgIHZhciBudW0gPSAocGFyc2VJbnQobnVtaS52YWx1ZSkgLSAxKSArIDI7
CiAgICBudW1pLnZhbHVlID0gbnVtOwogICAgZm9yIChpID0gMDsgaSA8IGRvY3VtZW50Lm1vZGlm
eVByb2ZpbGVGb3JtLmVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWYgKGRvY3VtZW50
Lm1vZGlmeVByb2ZpbGVGb3JtLmVsZW1lbnRzW2ldLm5hbWUgPT0gIm1vZGlmeVByb2ZpbGVNb2Rl
bC5hZGRyZXNzQ250IikgewogICAgICAgICAgICBkb2N1bWVudC5tb2RpZnlQcm9maWxlRm9ybS5l
bGVtZW50c1tpXS52YWx1ZSA9IG51bTsKICAgICAgICB9CiAgICB9CiAgICB2YXIgZGl2SWROYW1l
ID0gIm15RGl2QWRkcmVzcyIgKyBudW07CiAgICB2YXIgbmV3ZGl2ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CiAgICBuZXdkaXYuc2V0QXR0cmlidXRlKCJpZCIsIGRpdklkTmFtZSk7
CiAgICBuaS5hcHBlbmRDaGlsZChuZXdkaXYpOwogICAgb3BlbkRpdkZvckVkaXQoZGl2SWROYW1l
LCAiZWRpdEJ0bkFkZHJlc3MiLCAiZWRpdEFkZHJlc3NJblByb2ZpbGVJdGVyYXRlQWRkLmpzcD9k
aXZOdW09IiArIG51bSk7Cn0KZnVuY3Rpb24gcmVtb3ZlRXZlbnRGb3JBZGRyZXNzKGRpdk51bSwg
bXlEaXZJRCwgd2hpY2hFbCkgewogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGl2TnVtKS5z
dHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgdmFyIG9sZGRpdiA9IG9sZGRpdi5wYXJlbnROb2Rl
OwogICAgdmFyIGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChteURpdklEKTsKICAgIGQucmVt
b3ZlQ2hpbGQob2xkZGl2KTsKfQpmdW5jdGlvbiBwb3B1bGF0ZU9tbml0dXJlVmFyaWFibGUobW9k
aWZ5KSB7CiAgICBzLmV2ZW50cyA9ICJldmVudDkiOwogICAgaWYgKG1vZGlmeSA9PSAicGVyc29u
YWwiKSB7CiAgICAgICAgcy5lVmFyMjQgPSAiRWRpdCBQZXJzb25hbCBJbmZvcm1hdGlvbiI7CiAg
ICB9IGVsc2UgewogICAgICAgIGlmIChtb2RpZnkgPT0gImNyZWRpdENhcmQiKSB7CiAgICAgICAg
ICAgIHMuZVZhcjI0ID0gIkVkaXQgQ3JlZGl0IENhcmQgSW5mb3JtYXRpb24iOwogICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgIGlmIChtb2RpZnkgPT0gInBhc3N3b3JkIikgewogICAgICAgICAg
ICAgICAgcy5lVmFyMjQgPSAiRWRpdCBQYXNzd29yZCI7CiAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICBpZiAobW9kaWZ5ID09ICJhZGRyZXNzIikgewogICAgICAgICAgICAgICAg
ICAgIHMuZVZhcjI0ID0gIkVkaXQgQWRkcmVzcyBJbmZvcm1hdGlvbiI7CiAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmIChtb2RpZnkgPT0gImNvbXBhbmlvbiIp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgcy5lVmFyMjQgPSAiRWRpdCBDb21wYW5pb24iOwog
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICht
b2RpZnkgPT0gImF0dHJpYnV0ZSIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuZVZh
cjI0ID0gIkVkaXQgQXR0cmlidXRlIjsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2RpZnkgPT0gImludGVyZXN0Iikgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuZVZhcjI0ID0gIkVkaXQgSW50ZXJlc3Qi
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAg
ICAgICAgfQogICAgfQogICAgdmFyIHNfY29kZSA9IHMudCgpOwogICAgaWYgKHNfY29kZSkgewog
ICAgICAgIGRvY3VtZW50LndyaXRlKHNfY29kZSk7CiAgICB9Cn0KZnVuY3Rpb24gY3JlYXRlVXJs
UGVyc29uYWxJbmZvKHBsYWNlLCBmcm0pIHsKICAgIGNsb3NlRGl2U2lnbigiZGVsZXRlRnJvbURC
TXNnQm94Iik7CiAgICBkaXNhYmxlUGFnZSgpOwogICAgcG9wdWxhdGVPbW5pdHVyZVZhcmlhYmxl
KGZybSk7CiAgICB2YXIgdXJsID0gbnVsbDsKICAgIHZhciBwb3N0aW9uRGl2ID0gInRlc3RQb3Np
dGlvbiI7CiAgICBpZiAoZnJtID09ICJwZXJzb25hbCIpIHsKICAgICAgICB1cmwgPSAibW9kaWZ5
UHJvZmlsZS5kbz9kaXY9MTEiOwogICAgICAgIGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVs
ZW1lbnRzWyJtb2RpZnlQcm9maWxlTW9kZWwuY250UGhvbmUiXS52YWx1ZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0aGVWYWx1ZVBob25lIikudmFsdWU7CiAgICAgICAgZG9jdW1lbnQubW9k
aWZ5UHJvZmlsZUZvcm0uZWxlbWVudHNbIm1vZGlmeVByb2ZpbGVNb2RlbC5jbnRFTWFpbCJdLnZh
bHVlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRoZVZhbHVlIikudmFsdWU7CiAgICAgICAg
Zm9yIChpID0gMDsgaSA8IGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVsZW1lbnRzLmxlbmd0
aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChkb2N1bWVudC5tb2RpZnlQcm9maWxlRm9ybS5lbGVt
ZW50c1tpXS5uYW1lICE9ICJwaG9uZVByaW1hcnkiKSB7CiAgICAgICAgICAgICAgICB1cmwgPSB1
cmwgKyAiJiIgKyBkb2N1bWVudC5tb2RpZnlQcm9maWxlRm9ybS5lbGVtZW50c1tpXS5uYW1lICsg
Ij0iICsgZG9jdW1lbnQubW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHNbaV0udmFsdWU7CiAgICAg
ICAgICAgIH0KICAgICAgICB9CiAgICAgICAgb3BlbkRpdkZvckVkaXRVcGRhdGVkKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJlZGl0Rm9ybSIpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWRp
dFBlcnNvbmFsT3BlbiIpLCB1cmwpOwogICAgfQogICAgaWYgKGZybSA9PSAiY3JlZGl0Q2FyZCIp
IHsKICAgICAgICB1cmwgPSAibW9kaWZ5Q3JlZGl0Q2FyZFByb2ZpbGUuZG8/ZGl2PTExIjsKICAg
ICAgICB2YXIgdCA9IDA7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IGRvY3VtZW50Lm1vZGlmeVBy
b2ZpbGVGb3JtLmVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChkb2N1bWVu
dC5tb2RpZnlQcm9maWxlRm9ybS5lbGVtZW50c1tpXS5uYW1lID09ICJtb2RpZnlQcm9maWxlTW9k
ZWwuY2FyZENvdW50IikgewogICAgICAgICAgICAgICAgZG9jdW1lbnQubW9kaWZ5UHJvZmlsZUZv
cm0uZWxlbWVudHNbaV0udmFsdWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGhlVmFsdWVD
YXJkIikudmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGRvY3VtZW50Lm1vZGlm
eVByb2ZpbGVGb3JtLmVsZW1lbnRzW2ldLnR5cGUgIT0gInJhZGlvIikgewogICAgICAgICAgICAg
ICAgdXJsID0gdXJsICsgIiYiICsgZG9jdW1lbnQubW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHNb
aV0ubmFtZSArICI9IiArIGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVsZW1lbnRzW2ldLnZh
bHVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIG9wZW5EaXZGb3JFZGl0VXBkYXRl
ZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWRpdEZvcm0iKSwgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImVkaXRDcmVkaXRDT3BlbiIpLCB1cmwpOwogICAgfQogICAgaWYgKGZybSA9PSAicGFz
c3dvcmQiKSB7CiAgICAgICAgdXJsID0gIm1vZGlmeVBhc3N3b3JkUHJvZmlsZS5kbz9kaXY9MTEi
OwogICAgICAgIHZhciB2YWwgPSAiIjsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZG9jdW1lbnQu
bW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFs
ID0gZG9jdW1lbnQubW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHNbaV0udmFsdWU7CiAgICAgICAg
ICAgIHZhbCA9IHZhbC5yZXBsYWNlKCIrIiwgIlBMVVMiKTsKICAgICAgICAgICAgdXJsID0gdXJs
ICsgIiYiICsgZG9jdW1lbnQubW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHNbaV0ubmFtZSArICI9
IiArIGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVsZW1lbnRzW2ldLnZhbHVlOwogICAgICAg
IH0KICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSgvUExVUy9nLCAiJTJCIik7CiAgICAgICAgb3Bl
bkRpdkZvckVkaXRVcGRhdGVkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZGl0Rm9ybSIpLCBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWRpdFBhc3N3b3JkT3BlbiIpLCB1cmwpOwogICAgfQog
ICAgaWYgKGZybSA9PSAiYWRkcmVzcyIpIHsKICAgICAgICB1cmwgPSAibW9kaWZ5QWRkcmVzc1By
b2ZpbGUuZG8/ZGl2PTExIjsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZG9jdW1lbnQubW9kaWZ5
UHJvZmlsZUZvcm0uZWxlbWVudHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKGRvY3Vt
ZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVsZW1lbnRzW2ldLm5hbWUgPT0gIm1vZGlmeVByb2ZpbGVN
b2RlbC5hZGRyZXNzQ250IikgewogICAgICAgICAgICAgICAgZG9jdW1lbnQubW9kaWZ5UHJvZmls
ZUZvcm0uZWxlbWVudHNbaV0udmFsdWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGhlVmFs
dWVBZGRyZXNzIikudmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdmFyIHRv
dGFsRWxlbWVudCA9ICgocGFyc2VJbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRoZVZhbHVl
QWRkcmVzcyIpLnZhbHVlKSArIDEpICogMTEpICsgMzsKICAgICAgICB2YXIgbmFtZVZhbDsKICAg
ICAgICBmb3IgKGkgPSAwOyBpIDwgZG9jdW1lbnQubW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHMu
bGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgbmFtZVZhbCA9IGRvY3VtZW50Lm1vZGlmeVByb2Zp
bGVGb3JtLmVsZW1lbnRzW2ldLm5hbWUuc3BsaXQoIl8iKTsKICAgICAgICAgICAgaWYgKG5hbWVW
YWxbMF0gIT0gInJhZGlvQWRkcmVzcyIpIHsKICAgICAgICAgICAgICAgIHVybCA9IHVybCArICIm
IiArIGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVsZW1lbnRzW2ldLm5hbWUgKyAiPSIgKyBk
b2N1bWVudC5tb2RpZnlQcm9maWxlRm9ybS5lbGVtZW50c1tpXS52YWx1ZTsKICAgICAgICAgICAg
fQogICAgICAgIH0KICAgICAgICBvcGVuRGl2Rm9yRWRpdFVwZGF0ZWQoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImVkaXRGb3JtIiksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZGl0QnRuQWRk
cmVzcyIpLCB1cmwpOwogICAgfQogICAgaWYgKGZybSA9PSAiY29tcGFuaW9uIikgewogICAgICAg
IHVybCA9ICJtb2RpZnlDb21wYW5pb25Qcm9maWxlLmRvP2Rpdj0xMSI7CiAgICAgICAgZm9yIChp
ID0gMDsgaSA8IGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVsZW1lbnRzLmxlbmd0aDsgaSsr
KSB7CiAgICAgICAgICAgIGlmIChkb2N1bWVudC5tb2RpZnlQcm9maWxlRm9ybS5lbGVtZW50c1tp
XS5uYW1lID09ICJtb2RpZnlQcm9maWxlTW9kZWwuY29tcGFuaW9uVG90YWwiKSB7CiAgICAgICAg
ICAgICAgICBkb2N1bWVudC5tb2RpZnlQcm9maWxlRm9ybS5lbGVtZW50c1tpXS52YWx1ZSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0aGVWYWx1ZUNvbXBhbmlvbiIpLnZhbHVlOwogICAgICAg
ICAgICB9CiAgICAgICAgICAgIGlmIChkb2N1bWVudC5tb2RpZnlQcm9maWxlRm9ybS5lbGVtZW50
c1tpXS5uYW1lICE9ICIiKSB7CiAgICAgICAgICAgICAgICB1cmwgPSB1cmwgKyAiJiIgKyBkb2N1
bWVudC5tb2RpZnlQcm9maWxlRm9ybS5lbGVtZW50c1tpXS5uYW1lICsgIj0iICsgZG9jdW1lbnQu
bW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHNbaV0udmFsdWU7CiAgICAgICAgICAgIH0KICAgICAg
ICB9CiAgICAgICAgb3BlbkRpdkZvckVkaXRVcGRhdGVkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJlZGl0Rm9ybSIpLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29tcGFuaW9uIiksIHVybCk7
CiAgICB9CiAgICBpZiAoZnJtID09ICJhdHRyaWJ1dGUiKSB7CiAgICAgICAgdXJsID0gIm1vZGlm
eUF0dHJpYnV0ZVByb2ZpbGUuZG8/ZGl2PTExIjsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZG9j
dW1lbnQubW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAg
ICAgdXJsID0gdXJsICsgIiYiICsgZG9jdW1lbnQubW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHNb
aV0ubmFtZSArICI9IiArIGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVsZW1lbnRzW2ldLnZh
bHVlOwogICAgICAgIH0KICAgICAgICBvcGVuRGl2Rm9yRWRpdFVwZGF0ZWQoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImVkaXRGb3JtIiksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZGl0Rmln
aHRQT3BlbiIpLCB1cmwpOwogICAgfQogICAgaWYgKGZybSA9PSAiaW50ZXJlc3QiKSB7CiAgICAg
ICAgdXJsID0gIm1vZGlmeUF0dHJpYnV0ZVByb2ZpbGUuZG8/ZGl2PTExJm1ldGhvZD1tb2RpZnlJ
bnRlcmVzdCI7CiAgICAgICAgdmFyIHNlbGVjdGVkU3RyaW5nID0gIiI7CiAgICAgICAgdmFyIGNo
a2NudCA9IDA7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVG
b3JtLmVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChkb2N1bWVudC5tb2Rp
ZnlQcm9maWxlRm9ybS5lbGVtZW50c1tpXS5uYW1lID09ICJpbnRlcmVzdFZhbCIpIHsKICAgICAg
ICAgICAgICAgIGlmIChkb2N1bWVudC5tb2RpZnlQcm9maWxlRm9ybS5lbGVtZW50c1tpXS5jaGVj
a2VkKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNoa2NudCA+IDApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZWN0ZWRTdHJpbmcgPSBzZWxlY3RlZFN0cmluZyArICIsIjsKICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRTdHJpbmcgPSBzZWxl
Y3RlZFN0cmluZyArIGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVsZW1lbnRzW2ldLnZhbHVl
OwogICAgICAgICAgICAgICAgICAgIGNoa2NudCA9IGNoa2NudCArIDE7CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdXJsID0gdXJsICsgIiZtb2RpZnlQ
cm9maWxlTW9kZWwuaW50ZXJlc3RWYWw9IiArIHNlbGVjdGVkU3RyaW5nOwogICAgICAgIG9wZW5E
aXZGb3JFZGl0VXBkYXRlZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWRpdEZvcm0iKSwgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXRJbnRlcmVzdE9wZW4iKSwgdXJsKTsKICAgIH0KfQpm
dW5jdGlvbiBnb1RvUHJlZnJlbmNlKCkgewogICAgc2hvd0RpdkFyZWEoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInByZWZlcmVuY2VzIiksICJodHRwczovL3N0YXRpYy52aXJnaW5hbWVyaWNhLmNv
bS9pbWFnZXMvYnRuX3ByZWZlcmVuY2VzX3NlbC5naWYiKTsKfQpmdW5jdGlvbiBkaXZoaWRlRnVu
Y3Rpb25FcnJvcihkaXZJRCkgewogICAgdmFyIHggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChk
aXZJRCk7CiAgICBpZiAoeC5zdHlsZS5kaXNwbGF5ID09ICJibG9jayIgfHwgeC5zdHlsZS5kaXNw
bGF5ID09ICJpbmxpbmUiKSB7CiAgICAgICAgeC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAg
ICAgIGlzd2FwID0gMDsKICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKHguc3R5bGUuZGlzcGxheSA9
PSAibm9uZSIgfHwgeC5zdHlsZS5kaXNwbGF5ID09ICIiKSB7CiAgICAgICAgICAgIHguc3R5bGUu
ZGlzcGxheSA9ICJpbmxpbmUiOwogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiBzZXRSYWRpb1Zh
bChSZFZhbCwgZWRpdFR5cGUsIGNudFBvcykgewogICAgdmFyIGljbnQgPSAwOwogICAgaWYgKGVk
aXRUeXBlID09ICJwZXJzb25hbEluZm8iKSB7CiAgICAgICAgZm9yIChpID0gMDsgaWNudCA8IGRv
Y3VtZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVsZW1lbnRzLmxlbmd0aDsgaWNudCsrKSB7CiAgICAg
ICAgICAgIGlmIChkb2N1bWVudC5tb2RpZnlQcm9maWxlRm9ybS5lbGVtZW50c1tpY250XS5uYW1l
ID09ICJtb2RpZnlQcm9maWxlTW9kZWwucGhvbmVQcmltYXJ5IikgewogICAgICAgICAgICAgICAg
ZG9jdW1lbnQubW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHNbaWNudF0udmFsdWUgPSBSZFZhbDsK
ICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGlmIChlZGl0VHlwZSA9PSAicGVyc29u
YWxJbmZvRW1haWwiKSB7CiAgICAgICAgZm9yIChpID0gMDsgaWNudCA8IGRvY3VtZW50Lm1vZGlm
eVByb2ZpbGVGb3JtLmVsZW1lbnRzLmxlbmd0aDsgaWNudCsrKSB7CiAgICAgICAgICAgIGlmIChk
b2N1bWVudC5tb2RpZnlQcm9maWxlRm9ybS5lbGVtZW50c1tpY250XS5uYW1lID09ICJtb2RpZnlQ
cm9maWxlTW9kZWwuZW1haWx0eXBlIikgewogICAgICAgICAgICAgICAgZG9jdW1lbnQubW9kaWZ5
UHJvZmlsZUZvcm0uZWxlbWVudHNbaWNudF0udmFsdWUgPSBSZFZhbDsKICAgICAgICAgICAgfQog
ICAgICAgIH0KICAgIH0KICAgIGlmIChlZGl0VHlwZSA9PSAiYWRkcmVzc0luZm8iKSB7CiAgICAg
ICAgZm9yIChpID0gMDsgaWNudCA8IGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVsZW1lbnRz
Lmxlbmd0aDsgaWNudCsrKSB7CiAgICAgICAgICAgIGlmIChkb2N1bWVudC5tb2RpZnlQcm9maWxl
Rm9ybS5lbGVtZW50c1tpY250XS5uYW1lID09ICJtb2RpZnlQcm9maWxlTW9kZWwuYWRkcmVzc1By
aW1hcnlbIiArIGNudFBvcyArICJdIikgewogICAgICAgICAgICAgICAgZG9jdW1lbnQubW9kaWZ5
UHJvZmlsZUZvcm0uZWxlbWVudHNbaWNudF0udmFsdWUgPSBSZFZhbDsKICAgICAgICAgICAgfQog
ICAgICAgIH0KICAgIH0KICAgIGlmIChlZGl0VHlwZSA9PSAiYWRkcmVzc0luZm9QcmltYXJ5Iikg
ewogICAgICAgIGZvciAoaSA9IDA7IGljbnQgPCBkb2N1bWVudC5tb2RpZnlQcm9maWxlRm9ybS5l
bGVtZW50cy5sZW5ndGg7IGljbnQrKykgewogICAgICAgICAgICBpZiAoZG9jdW1lbnQubW9kaWZ5
UHJvZmlsZUZvcm0uZWxlbWVudHNbaWNudF0ubmFtZSA9PSAibW9kaWZ5UHJvZmlsZU1vZGVsLndo
aWNoUHJpbWFyeSIpIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3Jt
LmVsZW1lbnRzW2ljbnRdLnZhbHVlID0gUmRWYWw7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAg
ICB9CiAgICBpZiAoZWRpdFR5cGUgPT0gImNhcmRJbmZvUHJpbWFyeSIpIHsKICAgICAgICBmb3Ig
KGkgPSAwOyBpY250IDwgZG9jdW1lbnQubW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHMubGVuZ3Ro
OyBpY250KyspIHsKICAgICAgICAgICAgaWYgKGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVs
ZW1lbnRzW2ljbnRdLm5hbWUgPT0gIm1vZGlmeVByb2ZpbGVNb2RlbC53aGljaFByaW1hcnlDYXJk
IikgewogICAgICAgICAgICAgICAgZG9jdW1lbnQubW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHNb
aWNudF0udmFsdWUgPSBSZFZhbDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQpmdW5j
dGlvbiBkZWxldGVDcmVkaXRDYXJkKGRpdklkMkRlbGV0ZSwgYmxvY2tOdW0pIHsKICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKGRpdklkMkRlbGV0ZSkuaW5uZXJIVE1MID0gIiI7CiAgICByZXNl
dEVsZW1lbnROYW1lQ2FyZChibG9ja051bSk7Cn0KZnVuY3Rpb24gZGVsZXRlQ3JlZGl0Q2FyZFNl
c3Npb24oZGl2SWQyRGVsZXRlLCBibG9ja051bSkgewogICAgdmFyIGRlbGN0ID0gMDsKICAgIHZh
ciBpMSA9IDA7CiAgICBkZWxjdCA9IHBhcnNlSW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJz
ZXNzaW9uRGVsQ2FyZCIpLnZhbHVlKTsKICAgIGZvciAoaTEgPSAwOyBpMSA8IGRvY3VtZW50Lm1v
ZGlmeVByb2ZpbGVGb3JtLmVsZW1lbnRzLmxlbmd0aDsgaTErKykgewogICAgICAgIGlmIChkb2N1
bWVudC5tb2RpZnlQcm9maWxlRm9ybS5lbGVtZW50c1tpMV0ubmFtZSA9PSAibW9kaWZ5UHJvZmls
ZU1vZGVsLmRlbENhcmRBcnJ5IikgewogICAgICAgICAgICBpZiAoZG9jdW1lbnQubW9kaWZ5UHJv
ZmlsZUZvcm0uZWxlbWVudHNbaTFdLnZhbHVlID09IG51bGwgfHwgZG9jdW1lbnQubW9kaWZ5UHJv
ZmlsZUZvcm0uZWxlbWVudHNbaTFdLnZhbHVlID09ICIiKSB7CiAgICAgICAgICAgICAgICBkb2N1
bWVudC5tb2RpZnlQcm9maWxlRm9ybS5lbGVtZW50c1tpMV0udmFsdWUgPSBibG9ja051bTsKICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVG
b3JtLmVsZW1lbnRzW2kxXS52YWx1ZSA9IGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVsZW1l
bnRzW2kxXS52YWx1ZSArICJ8IiArIGJsb2NrTnVtOwogICAgICAgICAgICB9CiAgICAgICAgfQog
ICAgICAgIGlmIChkb2N1bWVudC5tb2RpZnlQcm9maWxlRm9ybS5lbGVtZW50c1tpMV0ubmFtZSA9
PSAibW9kaWZ5UHJvZmlsZU1vZGVsLmRlbENhcmRjb3VudCIpIHsKICAgICAgICAgICAgZG9jdW1l
bnQubW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHNbaTFdLnZhbHVlID0gcGFyc2VJbnQoZG9jdW1l
bnQubW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHNbaTFdLnZhbHVlKSArIDE7CiAgICAgICAgfQog
ICAgfQogICAgcmVzZXRFbGVtZW50TmFtZUNhcmQoYmxvY2tOdW0pOwogICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRoZVZhbHVlQ2FyZCIpLnZhbHVlID0gKHBhcnNlSW50KGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0aGVWYWx1ZUNhcmQiKS52YWx1ZSkgLSAxKTsKICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJzZXNzaW9uRGVsQ2FyZCIpLnZhbHVlID0gZGVsY3QgKyAxOwp9CmZ1bmN0
aW9uIHJlc2V0RWxlbWVudE5hbWVDYXJkKGRpdjJEZWxldGUsIG51bURpdikgewogICAgdmFyIGNu
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0aGVWYWx1ZUNhcmQiKS52YWx1ZTsKICAgIHZh
ciBvYmogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkaXYyRGVsZXRlKTsKICAgIHZhciBudW0g
PSBwYXJzZUludChudW1EaXYpOwogICAgb2JqLm91dGVySFRNTCA9ICIiOwogICAgdmFyIGkgPSAw
OwogICAgZm9yIChpID0gbnVtICsgMTsgaSA8PSBjbnQ7IGkrKykgewogICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJteURpdkNyZWRpdENhcmQiICsgaSkuaWQgPSAibXlEaXZDcmVkaXRD
YXJkIiArIChpIC0gMSk7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdlJlbFZh
bCIgKyBpKS5pZCA9IChpIC0gMSk7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRp
dlJlbFZhbCIgKyAoaSAtIDEpKS52YWx1ZSA9ICJkaXZSZWxWYWwiICsgKGkgLSAxKTsKICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXlEaXZDcmVkaXRDYXJkIiArIChpIC0gMSkpLmlk
ID0gIm15RGl2Q3JlZGl0Q2FyZCIgKyAoaSAtIDEpOwogICAgfQp9CmZ1bmN0aW9uIGRlbGV0ZVBo
b25lU2Vzc2lvbihkaXZJZDJEZWxldGUsIGJsb2NrTnVtKSB7CiAgICB2YXIgdXJsID0gIm1vZGlm
eVByb2ZpbGUuZG8/bWV0aG9kPWRlbGV0ZVBob25lSW5mbyZkZWxDYXJkSW5mbz0iICsgYmxvY2tO
dW07CiAgICBvcGVuRGl2Rm9yRWRpdFVwZGF0ZWQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVk
aXRGb3JtIiksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0UG9zaXRpb24iKSwgdXJsKTsK
fQpmdW5jdGlvbiBkZWxldGVFbWFpbFNlc3Npb24oZGl2SWQyRGVsZXRlLCBibG9ja051bSkgewog
ICAgdmFyIHVybCA9ICJtb2RpZnlDcmVkaXRDYXJkUHJvZmlsZS5kbz9tZXRob2Q9ZGVsZXRlRW1h
aWxJbmZvJmRlbENhcmRJbmZvPSIgKyBibG9ja051bTsKICAgIG9wZW5EaXZGb3JFZGl0VXBkYXRl
ZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWRpdEZvcm0iKSwgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRlc3RQb3NpdGlvbiIpLCB1cmwpOwp9CmZ1bmN0aW9uIGRlbGV0ZUFkZHJlc3NTZXNz
aW9uKGRpdklkMkRlbGV0ZSwgYmxvY2tOdW0pIHsKICAgIHZhciB1cmwgPSAibW9kaWZ5Q3JlZGl0
Q2FyZFByb2ZpbGUuZG8/bWV0aG9kPWRlbGV0ZUFkZHJlc3NJbmZvJmRlbENhcmRJbmZvPSIgKyBi
bG9ja051bTsKICAgIG9wZW5EaXZGb3JFZGl0VXBkYXRlZChkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZWRpdEZvcm0iKSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RQb3NpdGlvbiIpLCB1
cmwpOwp9CmZ1bmN0aW9uIGRlbGV0ZUNyZWRpdENhcmRTZXNzaW9uKGRpdklkMkRlbGV0ZSwgYmxv
Y2tOdW0pIHsKICAgIHZhciB1cmwgPSAibW9kaWZ5Q3JlZGl0Q2FyZFByb2ZpbGUuZG8/bWV0aG9k
PWRlbGV0ZUNhcmRJbmZvJmRlbENhcmRJbmZvPSIgKyBibG9ja051bTsKICAgIG9wZW5EaXZGb3JF
ZGl0VXBkYXRlZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWRpdEZvcm0iKSwgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRlc3RQb3NpdGlvbiIpLCB1cmwpOwp9CmZ1bmN0aW9uIGRlbGV0ZUNv
bXBhbmlvblNlc3Npb24oZGl2SWQyRGVsZXRlLCBibG9ja051bSkgewogICAgdmFyIHVybCA9ICJt
b2RpZnlDcmVkaXRDYXJkUHJvZmlsZS5kbz9tZXRob2Q9ZGVsZXRlQ29tcGFuaW9uSW5mbyZkZWxD
YXJkSW5mbz0iICsgYmxvY2tOdW07CiAgICBvcGVuRGl2Rm9yRWRpdFVwZGF0ZWQoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImVkaXRGb3JtIiksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb21w
YW5pb24iKSwgdXJsKTsKfQpmdW5jdGlvbiBkaXZSZXNldEdlbmVyYWxGdW5jdGlvbihEaXZOYW1l
LCBUb3RhbFR4dCwgcGFyZW50RGl2LCBGdW5jdGlvbkluKSB7CiAgICB2YXIgY250OwogICAgdmFy
IG5hbWVEaXY7CiAgICB2YXIgdGVtcERpdk5hbWUgPSBEaXZOYW1lLnNwbGl0KCJteUJ0biIpOwog
ICAgRGl2TmFtZSA9ICJteURpdkNyZWRpdENhcmQiICsgdGVtcERpdk5hbWVbMV07CiAgICBpZiAo
RnVuY3Rpb25JbiA9PSAiQ0NhcmQiKSB7CiAgICAgICAgbmFtZURpdiA9ICJteURpdkNyZWRpdENh
cmQiOwogICAgfQogICAgY250ID0gcGFyc2VJbnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoVG90
YWxUeHQpLnZhbHVlKTsKICAgIHZhciBvYmogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChEaXZO
YW1lKTsKICAgIG51bTEgPSBvYmouaWQuc3BsaXQobmFtZURpdik7CiAgICBudW0gPSBwYXJzZUlu
dChudW0xWzFdKTsKICAgIHZhciBhMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHBhcmVudERp
dik7CiAgICBhMS5yZW1vdmVDaGlsZChvYmopOwogICAgdmFyIGkgPSAwOwogICAgZm9yIChpID0g
bnVtICsgMTsgaSA8PSBjbnQ7IGkrKykgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KG5hbWVEaXYgKyBpKS5pZCA9IG5hbWVEaXYgKyAoaSAtIDEpOwogICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJteUJ0biIgKyBpKS5pZCA9ICJteUJ0biIgKyAoaSAtIDEpOwogICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXZBZGRyZXNzIiArIGkpLmlkID0gImRpdkFkZHJl
c3MiICsgKGkgLSAxKTsKICAgICAgICBmb3IgKGkxID0gMDsgaTEgPCBkb2N1bWVudC5tb2RpZnlQ
cm9maWxlRm9ybS5lbGVtZW50cy5sZW5ndGg7IGkxKyspIHsKICAgICAgICAgICAgaWYgKGRvY3Vt
ZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVsZW1lbnRzW2kxXS5uYW1lID09ICJyZG9DQ1R5cGUiICsg
aSkgewogICAgICAgICAgICAgICAgZG9jdW1lbnQubW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHNb
aTFdLm5hbWUgPSAicmRvQ0NUeXBlIiArIChpIC0gMSk7CiAgICAgICAgICAgIH0KICAgICAgICAg
ICAgaWYgKGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVsZW1lbnRzW2kxXS5uYW1lID09ICJy
YWRpb0FkZHJlc3NfIiArIGkpIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50Lm1vZGlmeVByb2Zp
bGVGb3JtLmVsZW1lbnRzW2kxXS5uYW1lID0gInJhZGlvQWRkcmVzc18iICsgKGkgLSAxKTsKICAg
ICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJlc2V0Q3JlZGl0Q2FyZCh0ZW1wRGl2TmFt
ZVsxXSk7CiAgICBjbnQgPSBjbnQgLSAxOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoVG90
YWxUeHQpLnZhbHVlID0gY250Owp9CmZ1bmN0aW9uIGRpdlJlc2V0R2VuZXJhbEZ1bmN0aW9uRm9y
Q29tcGFuaW9uKERpdk5hbWUsIFRvdGFsVHh0LCBwYXJlbnREaXYsIEZ1bmN0aW9uSW5keCkgewog
ICAgdmFyIGNudDsKICAgIHZhciBuYW1lRGl2OwogICAgbmFtZURpdiA9ICJjb21wYW5pb25EaXYi
OwogICAgbmFtZURpdlBhcmVudCA9ICJuYW1lRGl2UGFyZW50IjsKICAgIGNudCA9IHBhcnNlSW50
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFRvdGFsVHh0KS52YWx1ZSk7CiAgICB2YXIgb2JqID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoRGl2TmFtZSk7CiAgICBudW0xID0gRnVuY3Rpb25JbmR4
OwogICAgbnVtID0gcGFyc2VJbnQobnVtMSk7CiAgICB2YXIgYTEgPSBvYmoucGFyZW50Tm9kZTsK
ICAgIGExLnJlbW92ZUNoaWxkKG9iaik7CiAgICB2YXIgaSA9IDA7CiAgICBmb3IgKGkgPSBudW0g
KyAxOyBpIDw9IGNudDsgaSsrKSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobmFt
ZURpdiArIGkpLmlkID0gbmFtZURpdiArIChpIC0gMSk7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQobmFtZURpdlBhcmVudCArIGkpLmlkID0gbmFtZURpdlBhcmVudCArIChpIC0gMSk7
CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaSkuaWQgPSAiIiArIChpIC0gMSk7CiAg
ICB9CiAgICByZXNldENvbXBhbmlvbihudW0pOwogICAgY250ID0gY250IC0gMTsKICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKFRvdGFsVHh0KS52YWx1ZSA9IGNudDsKfQpmdW5jdGlvbiBkaXZS
ZXNldEdlbmVyYWxGdW5jdGlvbkFkZHJlc3MoRGl2TmFtZSwgVG90YWxUeHQsIHBhcmVudERpdiwg
RnVuY3Rpb25JbikgewogICAgdmFyIGNudDsKICAgIHZhciBuYW1lRGl2OwogICAgdmFyIHRlbXBE
aXZOYW1lID0gRGl2TmFtZS5zcGxpdCgibXlCdG4iKTsKICAgIERpdk5hbWUgPSAibXlEaXZBZGRy
ZXNzIiArIHRlbXBEaXZOYW1lWzFdOwogICAgaWYgKEZ1bmN0aW9uSW4gPT0gIkFkZHJlc3MiKSB7
CiAgICAgICAgbmFtZURpdiA9ICJteURpdkFkZHJlc3MiOwogICAgfQogICAgY250ID0gcGFyc2VJ
bnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoVG90YWxUeHQpLnZhbHVlKTsKICAgIHZhciBvYmog
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChEaXZOYW1lKTsKICAgIG51bTEgPSBvYmouaWQuc3Bs
aXQobmFtZURpdik7CiAgICBudW0gPSBwYXJzZUludChudW0xWzFdKTsKICAgIHZhciBhMSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHBhcmVudERpdik7CiAgICBhMS5yZW1vdmVDaGlsZChvYmop
OwogICAgdmFyIGkgPSAwOwogICAgZm9yIChpID0gbnVtICsgMTsgaSA8PSBjbnQ7IGkrKykgewog
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5hbWVEaXYgKyBpKS5pZCA9IG5hbWVEaXYg
KyAoaSAtIDEpOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJteUJ0biIgKyBpKS5p
ZCA9ICJteUJ0biIgKyAoaSAtIDEpOwogICAgfQogICAgcmVzZXRBZGRyZXNzKHRlbXBEaXZOYW1l
WzFdKTsKICAgIGNudCA9IGNudCAtIDE7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChUb3Rh
bFR4dCkudmFsdWUgPSBjbnQ7Cn0KZnVuY3Rpb24gcmVzZXRDcmVkaXRDYXJkKG51bSkgewogICAg
dmFyIGkxID0gMDsKICAgIHZhciBpID0gMDsKICAgIHZhciBuYW1lID0gIiI7CiAgICBmb3IgKGkg
PSAwOyBpIDwgZG9jdW1lbnQubW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHMubGVuZ3RoOyBpKysp
IHsKICAgICAgICBuYW1lID0gZG9jdW1lbnQubW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHNbaV0u
bmFtZTsKICAgICAgICBuYW1lID0gbmFtZS5zcGxpdCgiWyIpOwogICAgICAgIGlmICghKG5hbWVb
MF0gPT0gbnVsbCB8fCBuYW1lWzBdID09ICIiKSkgewogICAgICAgICAgICBpZiAobmFtZVswXSAh
PSAibW9kaWZ5UHJvZmlsZU1vZGVsLmRlbENhcmQiKSB7CiAgICAgICAgICAgICAgICBpZiAoIShu
YW1lWzFdID09IG51bGwgfHwgbmFtZVtpXSA9PSAiIikpIHsKICAgICAgICAgICAgICAgICAgICBl
bFBvc2l0aW9uID0gbmFtZVsxXS5zcGxpdCgiXSIpOwogICAgICAgICAgICAgICAgICAgIGlmICgh
KGVsUG9zaXRpb25bMF0gPT0gbnVsbCB8fCBlbFBvc2l0aW9uWzBdID09ICIiKSkgewogICAgICAg
ICAgICAgICAgICAgICAgICBlbEludFBvc2l0aW9uID0gcGFyc2VJbnQoZWxQb3NpdGlvblswXSk7
CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID49IG51bSAmJiBlbEludFBvc2l0aW9uID4g
bnVtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5tb2RpZnlQcm9maWxl
Rm9ybS5lbGVtZW50c1tpXS5uYW1lID0gbmFtZVswXSArICJbIiArIChlbEludFBvc2l0aW9uIC0g
MSkgKyAiXSI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KZnVuY3Rp
b24gcmVzZXRBZGRyZXNzKG51bSkgewogICAgdmFyIGkxID0gMDsKICAgIHZhciBpID0gMDsKICAg
IHZhciBuYW1lID0gIiI7CiAgICBmb3IgKGkgPSAwOyBpIDwgZG9jdW1lbnQubW9kaWZ5UHJvZmls
ZUZvcm0uZWxlbWVudHMubGVuZ3RoOyBpKyspIHsKICAgICAgICBuYW1lID0gZG9jdW1lbnQubW9k
aWZ5UHJvZmlsZUZvcm0uZWxlbWVudHNbaV0ubmFtZTsKICAgICAgICBuYW1lID0gbmFtZS5zcGxp
dCgiWyIpOwogICAgICAgIGlmICghKG5hbWVbMF0gPT0gbnVsbCB8fCBuYW1lWzBdID09ICIiKSkg
ewogICAgICAgICAgICBpZiAobmFtZVswXSAhPSAibW9kaWZ5UHJvZmlsZU1vZGVsLmRlbENhcmQi
KSB7CiAgICAgICAgICAgICAgICBpZiAoIShuYW1lWzFdID09IG51bGwgfHwgbmFtZVtpXSA9PSAi
IikpIHsKICAgICAgICAgICAgICAgICAgICBlbFBvc2l0aW9uID0gbmFtZVsxXS5zcGxpdCgiXSIp
OwogICAgICAgICAgICAgICAgICAgIGlmICghKGVsUG9zaXRpb25bMF0gPT0gbnVsbCB8fCBlbFBv
c2l0aW9uWzBdID09ICIiKSkgewogICAgICAgICAgICAgICAgICAgICAgICBlbEludFBvc2l0aW9u
ID0gcGFyc2VJbnQoZWxQb3NpdGlvblswXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChp
ID49IG51bSAmJiBlbEludFBvc2l0aW9uID4gbnVtKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb2N1bWVudC5tb2RpZnlQcm9maWxlRm9ybS5lbGVtZW50c1tpXS5uYW1lID0gbmFtZVsw
XSArICJbIiArIChlbEludFBvc2l0aW9uIC0gMSkgKyAiXSI7CiAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
IH0KICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gcmVzZXRDb21wYW5pb24obnVtKSB7CiAgICB2
YXIgaTEgPSAwOwogICAgdmFyIGkgPSAwOwogICAgdmFyIG5hbWUgPSAiIjsKICAgIGZvciAoaSA9
IDA7IGkgPCBkb2N1bWVudC5tb2RpZnlQcm9maWxlRm9ybS5lbGVtZW50cy5sZW5ndGg7IGkrKykg
ewogICAgICAgIG5hbWUgPSBkb2N1bWVudC5tb2RpZnlQcm9maWxlRm9ybS5lbGVtZW50c1tpXS5u
YW1lOwogICAgICAgIG5hbWUgPSBuYW1lLnNwbGl0KCJbIik7CiAgICAgICAgaWYgKCEobmFtZVsw
XSA9PSBudWxsIHx8IG5hbWVbMF0gPT0gIiIpKSB7CiAgICAgICAgICAgIGlmIChuYW1lWzBdICE9
ICJtb2RpZnlQcm9maWxlTW9kZWwuY29tcGFuaW9uVG90YWwiKSB7CiAgICAgICAgICAgICAgICBp
ZiAoIShuYW1lWzFdID09IG51bGwgfHwgbmFtZVtpXSA9PSAiIikpIHsKICAgICAgICAgICAgICAg
ICAgICBlbFBvc2l0aW9uID0gbmFtZVsxXS5zcGxpdCgiXSIpOwogICAgICAgICAgICAgICAgICAg
IGlmICghKGVsUG9zaXRpb25bMF0gPT0gbnVsbCB8fCBlbFBvc2l0aW9uWzBdID09ICIiKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICBlbEludFBvc2l0aW9uID0gcGFyc2VJbnQoZWxQb3NpdGlv
blswXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID49IG51bSAmJiBlbEludFBvc2l0
aW9uID4gbnVtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5tb2RpZnlQ
cm9maWxlRm9ybS5lbGVtZW50c1tpXS5uYW1lID0gbmFtZVswXSArICJbIiArIChlbEludFBvc2l0
aW9uIC0gMSkgKyAiXSI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0K
ZnVuY3Rpb24gc2hvd05vcm1hbFBhc3N3b3JkR3Vlc3QodGhpc29iaikgewogICAgaWYgKHRoaXNv
YmoudmFsdWUgPT0gIiIpIHsKICAgICAgICB2YXIgb2JqID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImRpdnBhc3NuZXdHdWVzdCIpOwogICAgICAgIHRoaXNvYmoubmFtZSA9ICJwYXNzKiI7CiAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhc3N3b3JkR3Vlc3REaXYiKS5zdHlsZS5k
aXNwbGF5ID0gImJsb2NrIjsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2cGFz
c25ld0d1ZXN0Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICBmb3IgKGkgPSAwOyBp
IDwgZG9jdW1lbnQuc2lnbkluR3Vlc3RGb3JtLmVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAg
ICAgICAgIGlmIChkb2N1bWVudC5zaWduSW5HdWVzdEZvcm0uZWxlbWVudHNbaV0ubmFtZSA9PSAi
cGFzc3dvcmQiKSB7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5zaWduSW5HdWVzdEZvcm0uZWxl
bWVudHNbaV0udmFsdWUgPSAiUGFzc3dvcmQiOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuc2ln
bkluR3Vlc3RGb3JtLmVsZW1lbnRzW2ldLmZvY3VzKCk7CiAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiBzaG93UGFzc3dvcmRJbk5l
d1Bhc3MobmFtZVZhbCwgaGlkZURpdiwgc2hvd0RpdikgewogICAgdmFyIG9iaiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKGhpZGVEaXYpOwogICAgb2JqLmlubmVySFRNTCA9ICIiOwogICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoaGlkZURpdikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNob3dEaXYpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2si
OwogICAgZm9yIChpID0gMDsgaSA8IGRvY3VtZW50LmNoYW5nZVBhc3N3b3JkRm9ybS5lbGVtZW50
cy5sZW5ndGg7IGkrKykgewogICAgICAgIGlmIChkb2N1bWVudC5jaGFuZ2VQYXNzd29yZEZvcm0u
ZWxlbWVudHNbaV0ubmFtZSA9PSBuYW1lVmFsKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmNoYW5n
ZVBhc3N3b3JkRm9ybS5lbGVtZW50c1tpXS5mb2N1cygpOwogICAgICAgICAgICBicmVhazsKICAg
ICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gc2hvd0FkZHJlc3MoZGl2TmFtZSwgcmRvSW5kZXgsIGlu
ZHgpIHsKICAgIHZhciBuZXdZZXNPck5vID0gIk5vIjsKICAgIHZhciB0eHRWYWwgPSAibW9kaWZ5
UHJvZmlsZU1vZGVsLnVzZUFkZHJlc3NbIiArIGluZHggKyAiXSI7CiAgICBpZiAocmRvSW5kZXgg
PT0gIjAiKSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGl2TmFtZSkuc3R5bGUu
ZGlzcGxheSA9ICJub25lIjsKICAgIH0gZWxzZSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoZGl2TmFtZSkuc3R5bGUuZGlzcGxheSA9ICJpbmxpbmUiOwogICAgICAgIG5ld1llc09y
Tm8gPSAiWWVzIjsKICAgIH0KICAgIGZvciAoaSA9IDA7IGkgPCBkb2N1bWVudC5tb2RpZnlQcm9m
aWxlRm9ybS5lbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgIGlmIChkb2N1bWVudC5tb2Rp
ZnlQcm9maWxlRm9ybS5lbGVtZW50c1tpXS5uYW1lID09IHR4dFZhbCkgewogICAgICAgICAgICBk
b2N1bWVudC5tb2RpZnlQcm9maWxlRm9ybS5lbGVtZW50c1tpXS52YWx1ZSA9IG5ld1llc09yTm87
CiAgICAgICAgfQogICAgfQp9CmZ1bmN0aW9uIG1hbmFnZVBuck9uRmxpZ2h0SGlzdG9yeVBhZ2Uo
cG5yVmFsdWUsIGlzQm9va2VyLCBsaW5rSWQpIHsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJwbnJWYWx1ZSIpLnZhbHVlID0gcG5yVmFsdWU7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiaXNib29rcmUiKS52YWx1ZSA9IGlzQm9va2VyOwogICAgZG9jdW1lbnQucG5yRGV0YWlsRm9y
bS5zdWJtaXQoKTsKICAgIHNob3dXYWl0SW1hZ2UoKTsKfQpmdW5jdGlvbiBtYW5hZ2VQbnJPbkxv
Z2luV2luZG93KHBuclZhbHVlLCBpc0Jvb2tlcikgewogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInBuclZhbHVlTG9naW5XaW5kb3ciKS52YWx1ZSA9IHBuclZhbHVlOwogICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImlzYm9va3JlTG9naW5XaW5kb3ciKS52YWx1ZSA9IGlzQm9va2VyOwog
ICAgZG9jdW1lbnQubWFuYWdlUG5yT25Mb2dpbldpbmRvdy5zdWJtaXQoKTsKICAgIHNob3dXYWl0
SW1hZ2UoKTsKfQpmdW5jdGlvbiBjaGVja09wdE9wdGlvbnMoYWpheERpdikgewogICAgdmFyIG9w
dGlvblN0cmluZyA9ICIiOwogICAgdmFyIGNoa0JveENudCA9IDA7CiAgICB3aGlsZSAoZXZhbCgi
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQiICsgJygiJyArICJvcHRjaGVjayIgKyBjaGtCb3hDbnQg
KyAnIiknKSkgewogICAgICAgIHZhciB4ID0gZXZhbCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQi
ICsgJygiJyArICJvcHRjaGVjayIgKyBjaGtCb3hDbnQgKyAnIiknKTsKICAgICAgICBpZiAoeC5j
aGVja2VkID09IHRydWUpIHsKICAgICAgICAgICAgb3B0aW9uU3RyaW5nID0gb3B0aW9uU3RyaW5n
ICsgeC52YWx1ZSArICItdHJ1ZSwiOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIG9wdGlv
blN0cmluZyA9IG9wdGlvblN0cmluZyArIHgudmFsdWUgKyAiLWZhbHNlLCI7CiAgICAgICAgfQog
ICAgICAgIGNoa0JveENudCsrOwogICAgfQogICAgZGlzYWJsZVBhZ2UoKTsKICAgIHNob3dXYWl0
SW1hZ2UoKTsKICAgIHNldFBvc2l0aW9uKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFqYXhEaXYp
LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWRpdEZvcm0iKSwgLTIwMCwgMzApOwogICAgdmFy
IG15VXJsID0gInVwZGF0ZU9wdEluLmRvP21ldGhvZD1tb2RpZnlPcHRJbk9wdGlvbnMmb3B0SW5G
bGFnPSIgKyBvcHRpb25TdHJpbmc7CiAgICAkKCIjZWRpdEZvcm0iKS5sb2FkKG15VXJsLCAiIiwg
ZG9uZSk7CiAgICBlbmFibGVQYWdlKCk7CgogICAgZnVuY3Rpb24gZG9uZSgpIHsKICAgICAgICBj
bG9zZVdhaXRJbWFnZSgpOwogICAgfQp9CmZ1bmN0aW9uIGNsb3NlT3BlbkFqYXgoZGl2TmFtZSkg
ewogICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRpdk5hbWUpKSB7CiAgICAgICAgaWYg
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRpdk5hbWUpLnN0eWxlLmRpc3BsYXkgPT0gImJsb2Nr
IikgewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkaXZOYW1lKS5zdHlsZS5k
aXNwbGF5ID0gIm5vbmUiOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKGRpdk5hbWUpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgIH0K
ICAgIH0KfQpmdW5jdGlvbiBjbG9zZURpdldpbmRvdyhkaXZOYW1lKSB7CiAgICBpZiAoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoZGl2TmFtZSkpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZChkaXZOYW1lKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgfQp9CmZ1bmN0aW9uIG9w
ZW5QcmVBbmROZXh0QWRkcmVzcyhyZXNwb25zZURpdiwgbW92ZVR5cGUpIHsKICAgIHZhciB1cmwg
PSAiIjsKICAgIHVybCA9ICJuZXh0QW5kUHJldmlvdXNBZHJlc3Nlc0luZm8uZG8/bWV0aG9kPW5l
eHRBbmRQcmV2aW91c0FkcmVzc2VzSW5mbyZtb3ZlVHlwZT0iICsgbW92ZVR5cGU7CiAgICBhamF4
UHJvZmlsZSh1cmwsIHJlc3BvbnNlRGl2KTsKfQpmdW5jdGlvbiBzaG93TWFuYWdlQWRkcmVzc2Vz
U3VibWl0KEltYWdlSWQsIGRpdk5hbWUpIHsKICAgIHZhciBwb3NpdGlvbk9iaiA9IEltYWdlSWQ7
CiAgICBteVVybCA9ICJzaG93TWFuYWdlQWRkcmVzc2VzQWN0aW9uLmRvP21ldGhvZD1zaG93TWFu
YWdlQWRkcmVzc2VzIjsKICAgIGFqYXhTaG93KG15VXJsLCBkaXZOYW1lKTsKICAgIHNob3dXYWl0
SW1hZ2UoKTsKICAgIHNldFBvc2l0aW9uKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHBvc2l0aW9u
T2JqKSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGl2TmFtZSksIDEwMCwgLTIwKTsKfQpmdW5j
dGlvbiBhZGRNYW5hZ2VBZGRyZXNzZXNTdWJtaXQoSW1hZ2VJZCwgZGl2TmFtZSkgewogICAgdmFy
IHBvc2l0aW9uT2JqID0gSW1hZ2VJZDsKICAgIG15VXJsID0gInNob3dNYW5hZ2VBZGRyZXNzZXNB
Y3Rpb24uZG8/bWV0aG9kPWFkZE1hbmFnZUFkZHJlc3NlcyI7CiAgICBhamF4VXBkYXRlKG15VXJs
LCBkaXZOYW1lLCAibm8iKTsKfQpmdW5jdGlvbiBkZWxldGVNYW5hZ2VBZGRyZXNzZXNTdWJtaXQo
ZGl2TmFtZSwgYWRkcmVzc0lkKSB7CiAgICBteVVybCA9ICJ1cGRhdGVNYW5hZ2VBZGRyZXNzZXNB
Y3Rpb24uZG8/bWV0aG9kPWRlbGV0ZU1hbmFnZUFkZHJlc3NlcyZhZGRyZXNzSWQ9IiArIGFkZHJl
c3NJZDsKICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlld1ByaWNpbmdBbGxEaXYi
KSkgewogICAgICAgIGhvbGRJbm5lckh0bWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmll
d1ByaWNpbmdBbGxEaXYiKS5pbm5lckhUTUw7CiAgICB9CiAgICBhamF4VXBkYXRlKG15VXJsLCBk
aXZOYW1lLCAibm8iKTsKfQpmdW5jdGlvbiB1cGRhdGVNYW5hZ2VBZGRyZXNzZXNTdWJtaXQoSW1h
Z2VJZCwgZGl2TmFtZSkgewogICAgdmFyIHVwZGF0ZUFkZHJlc3NVcmwgPSBudWxsOwogICAgdmFy
IHBvc2l0aW9uT2JqID0gSW1hZ2VJZDsKICAgIHVwZGF0ZUFkZHJlc3NVcmwgPSAidXBkYXRlTWFu
YWdlQWRkcmVzc2VzQWN0aW9uLmRvP21ldGhvZD1tb2RpZnlNYW5hZ2VBZGRyZXNzZXMiOwogICAg
Zm9yIChpID0gMDsgaSA8IGRvY3VtZW50Lm1vZGlmeUFkZHJlc3NGb3JtLmVsZW1lbnRzLmxlbmd0
aDsgaSsrKSB7CiAgICAgICAgdXBkYXRlQWRkcmVzc1VybCA9IHVwZGF0ZUFkZHJlc3NVcmwgKyAi
JiIgKyBkb2N1bWVudC5tb2RpZnlBZGRyZXNzRm9ybS5lbGVtZW50c1tpXS5uYW1lICsgIj0iICsg
ZG9jdW1lbnQubW9kaWZ5QWRkcmVzc0Zvcm0uZWxlbWVudHNbaV0udmFsdWU7CiAgICB9CiAgICBp
ZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZXdQcmljaW5nQWxsRGl2IikpIHsKICAgICAg
ICBob2xkSW5uZXJIdG1sID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZXdQcmljaW5nQWxs
RGl2IikuaW5uZXJIVE1MOwogICAgfQogICAgYWpheFVwZGF0ZSh1cGRhdGVBZGRyZXNzVXJsLCBk
aXZOYW1lLCAibm8iKTsKfQpmdW5jdGlvbiB1cGRhdGVHdWVzdFBhZ2UoKSB7CiAgICBpZiAoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZXdQcmljaW5nQWxsRGl2IikpIHsKICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidmlld1ByaWNpbmdBbGxEaXYiKS5pbm5lckhUTUwgPSBob2xk
SW5uZXJIdG1sOwogICAgfQogICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaG93TWFu
YWdlQWRkcmVzc2VzRGl2IikpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2hv
d01hbmFnZUFkZHJlc3Nlc0RpdiIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICB9CiAgICBp
ZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNob3dFZGl0Q29udGFjdEluZm9EaXYiKSkgewog
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaG93RWRpdENvbnRhY3RJbmZvRGl2Iiku
c3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgIH0KfQpmdW5jdGlvbiBhamF4U2hvdyhteXVybCwg
ZGl2KSB7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkaXYpLnN0eWxlLmRpc3BsYXkgPSAi
bm9uZSI7CiAgICB4bWxodHRwID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICB2YXIgdGhldGlt
ZSA9IG5ldyBEYXRlKCk7CiAgICB2YXIgZHVtbXkgPSAiIiArIHRoZXRpbWUuZ2V0SG91cnMoKSAr
IHRoZXRpbWUuZ2V0TWludXRlcygpICsgdGhldGltZS5nZXRTZWNvbmRzKCk7CiAgICBteXVybCA9
IG15dXJsICsgIiZkdW1teT0iICsgZHVtbXk7CiAgICBhamF4RGl2ID0gZGl2OwogICAgeG1saHR0
cC5vcGVuKCJQT1NUIiwgbXl1cmwsIHRydWUpOwogICAgeG1saHR0cC5vbnJlYWR5c3RhdGVjaGFu
Z2UgPSBoYW5kbGVSZXNwb25zZVNob3c7CiAgICB4bWxodHRwLnNlbmQoIiIpOwp9CmZ1bmN0aW9u
IGhhbmRsZVJlc3BvbnNlU2hvdygpIHsKICAgIGlmICh4bWxodHRwLnJlYWR5U3RhdGUgPT0gNCkg
ewogICAgICAgIGlmICh4bWxodHRwLnN0YXR1cyA9PSAyMDApIHsKICAgICAgICAgICAgaWYgKGFq
YXhEaXYgPT0gInNob3dNYW5hZ2VBZGRyZXNzZXNEaXYiKSB7CiAgICAgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChhamF4RGl2KS5pbm5lckhUTUwgPSAnPGlmcmFtZSBmcmFtZWJv
cmRlcj0iMCIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3RvcDowcHg7bGVmdDowcHg7d2lkdGg6
NTkwcHg7aGVpZ2h0OjM5NXB4OyIgc3JjPSJodG1sL1NTTElmcmFtZUZpeGVkLmh0bWwiPjwvaWZy
YW1lPicgKyAnPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyI+JyArIHhtbGh0dHAucmVz
cG9uc2VUZXh0ICsgIjwvZGl2PiI7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhamF4RGl2KS5pbm5lckhUTUwgPSB4bWxodHRwLnJl
c3BvbnNlVGV4dDsKICAgICAgICAgICAgfQogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibG9hZGluZ0FuaW1hdGlvbkRpdiIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFqYXhEaXYpLnN0eWxlLmRpc3BsYXkgPSAi
YmxvY2siOwogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiBhamF4VXBkYXRlKG15dXJsLCBkaXYs
IG1vZGVUeXBlKSB7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkaXYpLnN0eWxlLmRpc3Bs
YXkgPSAibm9uZSI7CiAgICBzaG93V2FpdEltYWdlKCk7CiAgICB4bWxodHRwID0gbmV3IFhNTEh0
dHBSZXF1ZXN0KCk7CiAgICB2YXIgdGhldGltZSA9IG5ldyBEYXRlKCk7CiAgICB2YXIgZHVtbXkg
PSAiIiArIHRoZXRpbWUuZ2V0SG91cnMoKSArIHRoZXRpbWUuZ2V0TWludXRlcygpICsgdGhldGlt
ZS5nZXRTZWNvbmRzKCk7CiAgICBteXVybCA9IG15dXJsICsgIiZkdW1teT0iICsgZHVtbXk7CiAg
ICB4bWxodHRwLm9wZW4oIlBPU1QiLCBteXVybCwgdHJ1ZSk7CiAgICB4bWxodHRwLm9ucmVhZHlz
dGF0ZWNoYW5nZSA9IGhhbmRsZVJlc3BvbnNlVXBkYXRlOwogICAgeG1saHR0cC5zZW5kKCIiKTsK
fQpmdW5jdGlvbiBoYW5kbGVSZXNwb25zZVVwZGF0ZSgpIHsKICAgIGlmICh4bWxodHRwLnJlYWR5
U3RhdGUgPT0gNCkgewogICAgICAgIGlmICh4bWxodHRwLnN0YXR1cyA9PSAyMDApIHsKICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvYWRpbmdBbmltYXRpb25EaXYiKS5zdHls
ZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChh
amF4RGl2KS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICAgICAgdmFyIHJlc1R4dCA9
IHhtbGh0dHAucmVzcG9uc2VUZXh0OwogICAgICAgICAgICBpZiAocmVzVHh0LmluZGV4T2YoImh0
dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy90cmF2ZWxfdGV4dF9iZy5naWYi
KSAhPSAtMSkgewogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZXdQ
cmljaW5nQWxsRGl2IikuaW5uZXJIVE1MID0geG1saHR0cC5yZXNwb25zZVRleHQ7CiAgICAgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2hvd05ld0FkZHJlc3NXaW5kb3ciKS5z
dHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImxvYWRpbmdBbmltYXRpb25EaXYiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAg
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdkFkZHJlc3MwIikuc3R5bGUu
ZGlzcGxheSA9ICJibG9jayI7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBp
ZiAocmVzVHh0LmluZGV4T2YoImh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdl
cy9WQV9QdXJjaGFzZV9CdXlUaWNrZXRfaGVhZGUuZ2lmIikgIT0gLTEpIHsKICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VjdCIpLmlubmVySFRNTCA9IHhtbGh0
dHAucmVzcG9uc2VUZXh0OwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhamF4RGl2KS5pbm5lckhUTUwgPSAnPGlmcmFt
ZSBmcmFtZWJvcmRlcj0iMCIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3RvcDowcHg7bGVmdDow
cHg7d2lkdGg6NTkwcHg7aGVpZ2h0OjM5NXB4OyIgc3JjPSJodG1sL1NTTElmcmFtZUZpeGVkLmh0
bWwiPjwvaWZyYW1lPicgKyAnPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyI+JyArIHht
bGh0dHAucmVzcG9uc2VUZXh0ICsgIjwvZGl2PiI7CiAgICAgICAgICAgICAgICAgICAgaWYgKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaG93TmV3QWRkcmVzc1dpbmRvdyIpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaG93TmV3QWRkcmVzc1dp
bmRvdyIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2FkaW5nQW5pbWF0aW9u
RGl2Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgICAgICAgICBpZiAoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdkFkZHJlc3MwIikpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdkFkZHJlc3MwIikuc3R5bGUuZGlzcGxh
eSA9ICJibG9jayI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CmZ1bmN0aW9uIHNpZ25JbkZyb21UcmF2ZWxsZXJB
bmRQdXJjaGFzZVN1Ym1pdChwYWdlVmFsdWUpIHsKICAgIGlmIChwYWdlVmFsdWUgPT0gImNoYW5n
ZUZsaWdodCIgfHwgcGFnZVZhbHVlID09ICJjYW5jZWxGbGlnaHQiIHx8IHBhZ2VWYWx1ZSA9PSAi
Q2hlY2tJbiIgfHwgcGFnZVZhbHVlID09ICJtYW5hZ2VUcmF2ZWwiKSB7CiAgICAgICAgZG9jdW1l
bnQuc2lnbkluRm9ybS5tZXRob2QudmFsdWUgPSAic2lnbkluUG5yIjsKICAgICAgICBkb2N1bWVu
dC5zaWduSW5Gb3JtLmFjdGlvbiA9ICJzaWduSW5QbnIuZG8iOwogICAgfSBlbHNlIHsKICAgICAg
ICBpZiAocGFnZVZhbHVlID09ICJzZWN1cmVGbGlnaHQiKSB7CiAgICAgICAgICAgIGRvY3VtZW50
LnNpZ25JbkZvcm0ubWV0aG9kLnZhbHVlID0gInNpZ25JbkZyb21UcmF2ZWxsZXJBbmRQdXJjaGFz
ZSI7CiAgICAgICAgICAgIGRvY3VtZW50LnNpZ25JbkZvcm0uYWN0aW9uID0gInNpZ25Jbi5kbyI7
CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZG9jdW1lbnQuc2lnbkluRm9ybS5tZXRob2Qu
dmFsdWUgPSAic2lnbkluRnJvbVRyYXZlbGxlckFuZFB1cmNoYXNlIjsKICAgICAgICAgICAgZG9j
dW1lbnQuc2lnbkluRm9ybS5hY3Rpb24gPSAiL3NpZ25JblRyYXZlbGxlckFuZFB1cmNoYXNlLmRv
IjsKICAgICAgICB9CiAgICB9CiAgICBkb2N1bWVudC5zaWduSW5Gb3JtLmZsdE1ldGhvZC52YWx1
ZSA9IHBhZ2VWYWx1ZTsKICAgIGRvY3VtZW50LnNpZ25JbkZvcm0uc3VibWl0KCk7CiAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgic3VibWl0SUQiKS5pbm5lckhUTUwgPSAnPGltZyBzcmM9Imh0
dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy9idG5fc2lnbi1pbi5naWYiIGhl
aWdodD0iMjAiIHdpZHRoPSI2MyIgYWx0PSJTaWduIEluIiB0aXRsZT0iU2lnbiBJbiIgYm9yZGVy
PSIwIiAvPic7CiAgICBzaG93V2FpdEltYWdlKCk7Cn0KZnVuY3Rpb24gc2lnbkluRWxldmF0ZUhv
bWUocGFnZVZhbHVlKSB7CiAgICBkb2N1bWVudC5zaWduSW5Gb3JtLm1ldGhvZC52YWx1ZSA9ICJz
aWduSW5Gcm9tSG9tZSI7CiAgICBkb2N1bWVudC5zaWduSW5Gb3JtLmZsdE1ldGhvZC52YWx1ZSA9
IHBhZ2VWYWx1ZTsKICAgIGRvY3VtZW50LnNpZ25JbkZvcm0uYWN0aW9uID0gIi9zaWduSW5UcmF2
ZWxsZXJBbmRQdXJjaGFzZS5kbyI7CiAgICBkb2N1bWVudC5zaWduSW5Gb3JtLnN1Ym1pdCgpOwog
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1Ym1pdElEIikuaW5uZXJIVE1MID0gJzxpbWcg
c3JjPSJodHRwczovL3N0YXRpYy52aXJnaW5hbWVyaWNhLmNvbS9pbWFnZXMvYnRuX3NpZ24taW4u
Z2lmIiBoZWlnaHQ9IjIwIiB3aWR0aD0iNjMiIGFsdD0iU2lnbiBJbiIgdGl0bGU9IlNpZ24gSW4i
IGJvcmRlcj0iMCIgLz4nOwogICAgc2hvd1dhaXRJbWFnZSgpOwp9CmZ1bmN0aW9uIE1ha2VDdXJz
b3IoYWJoKSB7CiAgICBhYmguc3R5bGUuY3Vyc29yID0gInBvaW50ZXIiOwp9CmZ1bmN0aW9uIGVu
dGVyU2lnbklubG9naW4odGhpc29iaikgewogICAgdmFyIFRlc3RWYXIyID0gdGhpc29iai52YWx1
ZTsKICAgIFRlc3RWYXIyID0gVGVzdFZhcjIucmVwbGFjZSgvXlxzKy8sICIiKTsKICAgIGlmIChU
ZXN0VmFyMiA9PSAiIikgewogICAgICAgIFRlc3RWYXIyID0gIkVtYWlsLCBBbGlhcyBvciBFbGV2
YXRlIyI7CiAgICAgICAgdGhpc29iai52YWx1ZSA9IFRlc3RWYXIyOwogICAgfQp9CmZ1bmN0aW9u
IGVudGVyU2lnbmxvZ2luY2xrKHRoaXNvYmopIHsKICAgIFRlc3RWYXIyID0gIkVtYWlsLCBBbGlh
cyBvciBFbGV2YXRlIyI7CiAgICBpZiAodGhpc29iai52YWx1ZSA9PSBUZXN0VmFyMikgewogICAg
ICAgIHRoaXNvYmoudmFsdWUgPSBUZXN0VmFyMjsKICAgICAgICB0aGlzb2JqLmZvY3VzKCk7CiAg
ICAgICAgdGhpc29iai5zZWxlY3QoKTsKICAgIH0KfQpmdW5jdGlvbiBzaWduSW5BbnN3ZXJjbGso
dGhpc29iaikgewogICAgVGVzdFZhcjIgPSAiQW5zd2VyIjsKICAgIGlmICh0aGlzb2JqLnZhbHVl
ID09IFRlc3RWYXIyKSB7CiAgICAgICAgdGhpc29iai52YWx1ZSA9IFRlc3RWYXIyOwogICAgICAg
IHRoaXNvYmouZm9jdXMoKTsKICAgICAgICB0aGlzb2JqLnNlbGVjdCgpOwogICAgfQp9CmZ1bmN0
aW9uIHNpZ25JbkFuc3dlcih0aGlzb2JqKSB7CiAgICB2YXIgVGVzdFZhcjIgPSB0aGlzb2JqLnZh
bHVlOwogICAgVGVzdFZhcjIgPSBUZXN0VmFyMi5yZXBsYWNlKC9eXHMrLywgIiIpOwogICAgaWYg
KFRlc3RWYXIyID09ICIiKSB7CiAgICAgICAgVGVzdFZhcjIgPSAiQW5zd2VyIjsKICAgICAgICB0
aGlzb2JqLnZhbHVlID0gVGVzdFZhcjI7CiAgICB9Cn0KZnVuY3Rpb24gZW50ZXJFbWFpbEFkZHJl
c3ModGhpc29iaikgewogICAgdmFyIFRlc3RWYXI0ID0gdGhpc29iai52YWx1ZTsKICAgIFRlc3RW
YXI0ID0gVGVzdFZhcjQucmVwbGFjZSgvXlxzKy8sICIiKTsKICAgIGlmIChUZXN0VmFyNCA9PSAi
IikgewogICAgICAgIFRlc3RWYXI0ID0gIkVtYWlsIEFkZHJlc3MiOwogICAgICAgIHRoaXNvYmou
dmFsdWUgPSBUZXN0VmFyNDsKICAgIH0KfQpmdW5jdGlvbiBlbnRlckVtYWlsQWRkcmVzc2Nsayh0
aGlzb2JqKSB7CiAgICBUZXN0VmFyNCA9ICJFbWFpbCBBZGRyZXNzIjsKICAgIGlmICh0aGlzb2Jq
LnZhbHVlID09IFRlc3RWYXI0KSB7CiAgICAgICAgdGhpc29iai52YWx1ZSA9IFRlc3RWYXI0Owog
ICAgICAgIHRoaXNvYmouZm9jdXMoKTsKICAgICAgICB0aGlzb2JqLnNlbGVjdCgpOwogICAgfQp9
CmZ1bmN0aW9uIGVudGVybmFtZSh0aGlzb2JqKSB7CiAgICB2YXIgVGVzdFZhciA9IHRoaXNvYmou
dmFsdWU7CiAgICBUZXN0VmFyID0gVGVzdFZhci5yZXBsYWNlKC9eXHMrLywgIiIpOwogICAgaWYg
KFRlc3RWYXIgPT0gIiIpIHsKICAgICAgICBUZXN0VmFyID0gIkxhc3QgTmFtZSI7CiAgICAgICAg
dGhpc29iai52YWx1ZSA9IFRlc3RWYXI7CiAgICB9Cn0KZnVuY3Rpb24gZW50ZXJuYW1lY2xrKHRo
aXNvYmopIHsKICAgIFRlc3RWYXIgPSAiTGFzdCBOYW1lIjsKICAgIGlmICh0aGlzb2JqLnZhbHVl
ID09IFRlc3RWYXIpIHsKICAgICAgICB0aGlzb2JqLnZhbHVlID0gVGVzdFZhcjsKICAgICAgICB0
aGlzb2JqLmZvY3VzKCk7CiAgICAgICAgdGhpc29iai5zZWxlY3QoKTsKICAgIH0KfQpmdW5jdGlv
biBlbnRlcnBucih0aGlzb2JqKSB7CiAgICB2YXIgVGVzdFZhcjEgPSB0aGlzb2JqLnZhbHVlOwog
ICAgVGVzdFZhcjEgPSBUZXN0VmFyMS5yZXBsYWNlKC9eXHMrLywgIiIpOwogICAgaWYgKFRlc3RW
YXIxID09ICIiKSB7CiAgICAgICAgVGVzdFZhcjEgPSAiQ29uZmlybWF0aW9uIENvZGUiOwogICAg
ICAgIHRoaXNvYmoudmFsdWUgPSBUZXN0VmFyMTsKICAgIH0KfQpmdW5jdGlvbiBlbnRlcnBucmNs
ayh0aGlzb2JqKSB7CiAgICBUZXN0VmFyMSA9ICJDb25maXJtYXRpb24gQ29kZSI7CiAgICBpZiAo
dGhpc29iai52YWx1ZSA9PSBUZXN0VmFyMSkgewogICAgICAgIHRoaXNvYmoudmFsdWUgPSBUZXN0
VmFyMTsKICAgICAgICB0aGlzb2JqLmZvY3VzKCk7CiAgICAgICAgdGhpc29iai5zZWxlY3QoKTsK
ICAgIH0KfQpmdW5jdGlvbiBlbnRlcmxvZ2luKHRoaXNvYmopIHsKICAgIHZhciBUZXN0VmFyMiA9
IHRoaXNvYmoudmFsdWU7CiAgICBUZXN0VmFyMiA9IFRlc3RWYXIyLnJlcGxhY2UoL15ccysvLCAi
Iik7CiAgICBpZiAoVGVzdFZhcjIgPT0gIiIpIHsKICAgICAgICBUZXN0VmFyMiA9ICJFbWFpbCwg
QWxpYXMgb3IgRWxldmF0ZSMiOwogICAgICAgIHRoaXNvYmoudmFsdWUgPSBUZXN0VmFyMjsKICAg
IH0KfQpmdW5jdGlvbiBlbnRlcmxvZ2luY2xrKHRoaXNvYmopIHsKICAgIFRlc3RWYXIyID0gIkVt
YWlsLCBBbGlhcyBvciBFbGV2YXRlIyI7CiAgICBpZiAodGhpc29iai52YWx1ZSA9PSBUZXN0VmFy
MikgewogICAgICAgIHRoaXNvYmoudmFsdWUgPSBUZXN0VmFyMjsKICAgICAgICB0aGlzb2JqLmZv
Y3VzKCk7CiAgICAgICAgdGhpc29iai5zZWxlY3QoKTsKICAgIH0KfQpmdW5jdGlvbiBlbnRlcnBh
c3N3b3JkKHRoaXNvYmopIHsKICAgIHZhciBUZXN0VmFyMyA9IHRoaXNvYmoudmFsdWU7CiAgICBU
ZXN0VmFyMyA9IFRlc3RWYXIzLnJlcGxhY2UoL15ccysvLCAiIik7CiAgICBpZiAoVGVzdFZhcjMg
PT0gIiIpIHsKICAgICAgICBUZXN0VmFyMyA9ICJQYXNzd29yZCI7CiAgICAgICAgdGhpc29iai52
YWx1ZSA9IFRlc3RWYXIzOwogICAgfQp9CmZ1bmN0aW9uIGVudGVycGFzc3dvcmRjbGsodGhpc29i
aikgewogICAgVGVzdFZhcjMgPSAiUGFzc3dvcmQiOwogICAgdGhpc29iai52YWx1ZSA9IFRlc3RW
YXIzOwogICAgdGhpc29iai5mb2N1cygpOwogICAgdGhpc29iai5zZWxlY3QoKTsKfQpmdW5jdGlv
biBlbnRlcnBhc3NjbGsodGhpc29iaikgewogICAgVGVzdFZhcjMgPSAiUGFzc3dvcmQiOwogICAg
dGhpc29iai52YWx1ZSA9IFRlc3RWYXIzOwogICAgdGhpc29iai5mb2N1cygpOwogICAgdGhpc29i
ai5zZWxlY3QoKTsKfQpmdW5jdGlvbiBzZXRDc3MoZnJtLCBpZCwgY3NzTmFtZSkgewogICAgJGdl
dF9Kc0VsZW1lbnQoZnJtLCBpZCkuY2xhc3NOYW1lID0gY3NzTmFtZTsKfQpmdW5jdGlvbiBzZXRD
c3Mob2JqLCBjc3NOYW1lKSB7CiAgICBvYmouY2xhc3NOYW1lID0gY3NzTmFtZTsKfQpmdW5jdGlv
biB0b2dnbGVGaWVsZHModGhpc29iaikgewogICAgaWYgKHRoaXNvYmoucGFyZW50Tm9kZS5pZCA9
PSAibm9yX0ZpZWxkRGl2SWQiKSB7CiAgICAgICAgdGhpc29iai5wYXJlbnROb2RlLnN0eWxlLmRp
c3BsYXkgPSAibm9uZSI7CiAgICAgICAgJGdldF9Kc0VsZW1lbnQoInBhc3NfRmllbGREaXZJZCIp
LnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgICRnZXRfSnNFbGVtZW50KCJwYXNzX0Zp
ZWxkRGl2SWQiKS5maXJzdENoaWxkLnZhbHVlID0gIiI7CiAgICAgICAgJGdldF9Kc0VsZW1lbnQo
InBhc3NfRmllbGREaXZJZCIpLmZpcnN0Q2hpbGQuZm9jdXMoKTsKICAgIH0gZWxzZSB7CiAgICAg
ICAgaWYgKHRoaXNvYmoucGFyZW50Tm9kZS5pZCA9PSAicGFzc19GaWVsZERpdklkIiAmJiB0aGlz
b2JqLnZhbHVlID09ICIiKSB7CiAgICAgICAgICAgIHRoaXNvYmoucGFyZW50Tm9kZS5zdHlsZS5k
aXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICAkZ2V0X0pzRWxlbWVudCgibm9yX0ZpZWxkRGl2
SWQiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICAgICAgJGdldF9Kc0VsZW1lbnQo
Im5vcl9GaWVsZERpdklkIikuZmlyc3RDaGlsZC52YWx1ZSA9ICJQYXNzd29yZCI7CiAgICAgICAg
ICAgICRnZXRfSnNFbGVtZW50KCJub3JfRmllbGREaXZJZCIpLmZpcnN0Q2hpbGQuZm9jdXMoKTsK
ICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gdG9nZ2xlRmllbGRzRGlzcGxheShpZDEsIGlkMikg
ewogICAgJGdldF9Kc0VsZW1lbnQoaWQxKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgaWYg
KGlkMiA9PSAiY29ycDEiKSB7CiAgICAgICAgJGdldF9Kc0VsZW1lbnQoImNvcnAxIikuc3R5bGUu
ZGlzcGxheSA9ICJibG9jayI7CiAgICAgICAgJGdldF9Kc0VsZW1lbnQoInN1c3RIcmVmSWQiKS5j
bGFzc05hbWUgPSAic2VsZWN0ZWQiOwogICAgICAgICRnZXRfSnNFbGVtZW50KCJjb3JwMiIpLnN0
eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgJGdldF9Kc0VsZW1lbnQoImNvbW1IcmVmSWQi
KS5jbGFzc05hbWUgPSAiIjsKICAgIH0KICAgIGlmIChpZDIgPT0gImNvcnAyIikgewogICAgICAg
ICRnZXRfSnNFbGVtZW50KCJjb3JwMiIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAg
ICRnZXRfSnNFbGVtZW50KCJjb21tSHJlZklkIikuY2xhc3NOYW1lID0gInNlbGVjdGVkIjsKICAg
ICAgICAkZ2V0X0pzRWxlbWVudCgiY29ycDEiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAg
ICAgICRnZXRfSnNFbGVtZW50KCJzdXN0SHJlZklkIikuY2xhc3NOYW1lID0gIiI7CiAgICB9CiAg
ICAkZ2V0X0pzRWxlbWVudCgiYWJvdXR1c0NvcnBvcmF0ZSIpLmhyZWYgPSAiYWJvdXR1cy5kbz9w
YWdlTmFtZT1hYm91dHVzQ29ycG9yYXRlIjsKfQp2YXIgY2hhcmFjdGVyOwp2YXIgYnJvd3NlckFn
ZW50OwoKZnVuY3Rpb24gcmV0dXJuQ2hhcihlKSB7CiAgICB2YXIgbiA9IG5hdmlnYXRvcjsKICAg
IGJyb3dzZXJBZ2VudCA9IG4udXNlckFnZW50OwogICAgdmFyIGNvZGU7CiAgICBpZiAoIWUpIHsK
ICAgICAgICB2YXIgZSA9IHdpbmRvdy5ldmVudDsKICAgIH0KICAgIGlmIChlLmtleUNvZGUpIHsK
ICAgICAgICBjb2RlID0gZS5rZXlDb2RlOwogICAgfSBlbHNlIHsKICAgICAgICBpZiAoZS53aGlj
aCkgewogICAgICAgICAgICBjb2RlID0gZS53aGljaDsKICAgICAgICB9CiAgICB9CiAgICB2YXIg
Y2hhcjEgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpOwogICAgY2hhcmFjdGVyID0gY2hhcjE7
Cn0KZnVuY3Rpb24gc2hvd1Bhc3N3b3JkKHRoaXNvYmosIHBhc3N3b3JkRmlyc3REaXYsIHBhc3N3
b3JkU2Vjb25kRGl2LCBmb3JtTmFtZSwgZXZlbnRQcm9jZWR1cmUpIHsKICAgIHJldHVybkNoYXIo
ZXZlbnRQcm9jZWR1cmUpOwogICAgdmFyIG9iaiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHBh
c3N3b3JkRmlyc3REaXYpOwogICAgdGhpc29iai5uYW1lID0gInBhc3MxIjsKICAgIHZhciBkb2N1
bWVudEZvcm0gPSBldmFsKCJkb2N1bWVudC4iICsgZm9ybU5hbWUpOwogICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQocGFzc3dvcmRGaXJzdERpdikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHBhc3N3b3JkU2Vjb25kRGl2KS5zdHlsZS5kaXNwbGF5
ID0gImJsb2NrIjsKICAgIGZvciAoaSA9IDA7IGkgPCBkb2N1bWVudEZvcm0uZWxlbWVudHMubGVu
Z3RoOyBpKyspIHsKICAgICAgICBpZiAoZG9jdW1lbnRGb3JtLmVsZW1lbnRzW2ldLm5hbWUgPT0g
InBhc3N3b3JkIikgewogICAgICAgICAgICBpZiAoYnJvd3NlckFnZW50LmluZGV4T2YoIk1TSUUi
KSAhPSAtMSkgewogICAgICAgICAgICAgICAgZG9jdW1lbnRGb3JtLmVsZW1lbnRzW2ldLnZhbHVl
ID0gIiI7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBkb2N1bWVudEZvcm0u
ZWxlbWVudHNbaV0udmFsdWUgPSAiIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBkb2N1bWVu
dEZvcm0uZWxlbWVudHNbaV0uZm9jdXMoKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQog
ICAgfQp9CmZ1bmN0aW9uIHNob3dQYXNzd29yZE9uUmlnaHRDbGljayh0aGlzb2JqLCBwYXNzd29y
ZEZpcnN0RGl2LCBwYXNzd29yZFNlY29uZERpdiwgZm9ybU5hbWUsIGV2ZW50UHJvY2VkdXJlKSB7
CiAgICBpZiAoZXZlbnRQcm9jZWR1cmUuYnV0dG9uID09IDIpIHsKICAgICAgICByZXR1cm5DaGFy
KGV2ZW50UHJvY2VkdXJlKTsKICAgICAgICB2YXIgb2JqID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQocGFzc3dvcmRGaXJzdERpdik7CiAgICAgICAgdGhpc29iai5uYW1lID0gInBhc3MxIjsKICAg
ICAgICB2YXIgZG9jdW1lbnRGb3JtID0gZXZhbCgiZG9jdW1lbnQuIiArIGZvcm1OYW1lKTsKICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChwYXNzd29yZEZpcnN0RGl2KS5zdHlsZS5kaXNw
bGF5ID0gIm5vbmUiOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHBhc3N3b3JkU2Vj
b25kRGl2KS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwg
ZG9jdW1lbnRGb3JtLmVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChkb2N1
bWVudEZvcm0uZWxlbWVudHNbaV0ubmFtZSA9PSAicGFzc3dvcmQiKSB7CiAgICAgICAgICAgICAg
ICBpZiAoYnJvd3NlckFnZW50LmluZGV4T2YoIk1TSUUiKSAhPSAtMSkgewogICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50Rm9ybS5lbGVtZW50c1tpXS52YWx1ZSA9ICIiOwogICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudEZvcm0uZWxlbWVudHNbaV0u
dmFsdWUgPSAiIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRvY3VtZW50Rm9y
bS5lbGVtZW50c1tpXS5mb2N1cygpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
IH0KICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gc2hvd01lc3NhZ2VGb3JVc2VycyhsaW5rSWQs
IHBvcFVwSWQpIHsKICAgIHNldFBvc2l0aW9uKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGxpbmtJ
ZCksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHBvcFVwSWQpLCAxODAsIC00NSk7CiAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChwb3BVcElkKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKfQpm
dW5jdGlvbiBjbG9zZU1zZ1dpbkZvclVzZXJzKCkgewogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoIk1lc3NhZ2VGb3JVc2VycyIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICBkb2N1bWVu
dC5zaG93TmVlZFBvaW50c0Zvcm0uc3VibWl0KCk7Cn0KZnVuY3Rpb24gc2hvd05vcm1hbFBhc3N3
b3JkR2VuVmlldyh0aGlzb2JqKSB7CiAgICBpZiAodGhpc29iai52YWx1ZSA9PSAiIikgewogICAg
ICAgIHZhciBvYmogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2cGFzc25ld0d1ZXN0Iik7
CiAgICAgICAgdGhpc29iai5uYW1lID0gInBhc3MqIjsKICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicGFzc3dvcmRHdWVzdERpdiIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXZwYXNzbmV3R3Vlc3QiKS5zdHlsZS5kaXNw
bGF5ID0gIm5vbmUiOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBkb2N1bWVudC5zaWduSW5Gb3Jt
LmVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChkb2N1bWVudC5zaWduSW5G
b3JtLmVsZW1lbnRzW2ldLm5hbWUgPT0gInBhc3N3b3JkIikgewogICAgICAgICAgICAgICAgZG9j
dW1lbnQuc2lnbkluRm9ybS5lbGVtZW50c1tpXS52YWx1ZSA9ICJQYXNzd29yZCI7CiAgICAgICAg
ICAgICAgICBkb2N1bWVudC5zaWduSW5Gb3JtLmVsZW1lbnRzW2ldLmZvY3VzKCk7CiAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiBz
aG93Tm9ybWFsUGFzc3dvcmRHZW4odGhpc29iaikgewogICAgaWYgKHRoaXNvYmoudmFsdWUgPT0g
IiIpIHsKICAgICAgICB2YXIgb2JqID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdnBhc3Nu
ZXdHdWVzdCIpOwogICAgICAgIHRoaXNvYmoubmFtZSA9ICJwYXNzKiI7CiAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInBhc3N3b3JkR3Vlc3REaXYiKS5zdHlsZS5kaXNwbGF5ID0gImJs
b2NrIjsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2cGFzc25ld0d1ZXN0Iiku
c3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZG9jdW1lbnQu
c2lnbkluUG5yRm9ybS5lbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoZG9j
dW1lbnQuc2lnbkluUG5yRm9ybS5lbGVtZW50c1tpXS5uYW1lID09ICJwYXNzd29yZCIpIHsKICAg
ICAgICAgICAgICAgIGRvY3VtZW50LnNpZ25JblBuckZvcm0uZWxlbWVudHNbaV0udmFsdWUgPSAi
UGFzc3dvcmQiOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuc2lnbkluUG5yRm9ybS5lbGVtZW50
c1tpXS5mb2N1cygpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAg
ICB9CiAgICB9Cn0KZnVuY3Rpb24gc2hvd05vcm1hbFBhc3N3b3JkKHRoaXNvYmopIHsKICAgIGlm
ICh0aGlzb2JqLnZhbHVlID09ICIiKSB7CiAgICAgICAgdmFyIG9iaiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJkaXZwYXNzbmV3Iik7CiAgICAgICAgdGhpc29iai5uYW1lID0gInBhc3MqIjsK
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGFzc3dvcmREaXYiKS5zdHlsZS5kaXNw
bGF5ID0gImJsb2NrIjsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2cGFzc25l
dyIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IGRvY3Vt
ZW50LnNpZ25JbkZvcm0uZWxlbWVudHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKGRv
Y3VtZW50LnNpZ25JbkZvcm0uZWxlbWVudHNbaV0ubmFtZSA9PSAicGFzc3dvcmQiKSB7CiAgICAg
ICAgICAgICAgICBkb2N1bWVudC5zaWduSW5Gb3JtLmVsZW1lbnRzW2ldLmZvY3VzKCk7CiAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQpmdW5jdGlv
biBlbnRlcmZsaWdodCh0aGlzb2JqKSB7CiAgICB2YXIgVGVzdFZhcjIgPSB0aGlzb2JqLnZhbHVl
OwogICAgaWYgKFRlc3RWYXIyID09ICIiKSB7CiAgICAgICAgVGVzdFZhcjIgPSAiRmxpZ2h0IE51
bWJlciI7CiAgICAgICAgdGhpc29iai52YWx1ZSA9IFRlc3RWYXIyOwogICAgfQp9CmZ1bmN0aW9u
IGVudGVyZmxpZ2h0Y2xrKHRoaXNvYmopIHsKICAgIFRlc3RWYXIyID0gIkZsaWdodCBOdW1iZXIi
OwogICAgaWYgKHRoaXNvYmoudmFsdWUgPT0gIkZsaWdodCBOdW1iZXIiKSB7CiAgICAgICAgdGhp
c29iai52YWx1ZSA9IFRlc3RWYXIyOwogICAgICAgIHRoaXNvYmouZm9jdXMoKTsKICAgICAgICB0
aGlzb2JqLnNlbGVjdCgpOwogICAgfQp9CmZ1bmN0aW9uIHNldFZhcmlhYmxlcygpIHsKICAgIGlm
IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm90dG9tTW92ZSIpKSB7CiAgICAgICAgaWYgKG5h
dmlnYXRvci5hcHBOYW1lID09ICJOZXRzY2FwZSIpIHsKICAgICAgICAgICAgdiA9ICIudG9wPSI7
CiAgICAgICAgICAgIGggPSAiLmxlZnQ9IjsKICAgICAgICAgICAgZFMgPSAiZG9jdW1lbnQuIjsK
ICAgICAgICAgICAgc0QgPSAiIjsKICAgICAgICAgICAgeSA9ICJ3aW5kb3cucGFnZVlPZmZzZXQi
OwogICAgICAgICAgICB4ID0gMDsKICAgICAgICAgICAgaVcgPSAid2luZG93LmlubmVyV2lkdGgi
OwogICAgICAgICAgICBpSCA9ICJ3aW5kb3cuaW5uZXJIZWlnaHQiOwogICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgIGggPSAiLnBpeGVsTGVmdD0iOwogICAgICAgICAgICB2ID0gIi5waXhlbFRv
cD0iOwogICAgICAgICAgICBkUyA9ICIiOwogICAgICAgICAgICBzRCA9ICIuc3R5bGUiOwogICAg
ICAgICAgICB5ID0gImRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIjsKICAgICAgICAgICAgeCA9IDA7
CiAgICAgICAgICAgIGlXID0gImRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGgiOwogICAgICAgICAg
ICBpSCA9ICJkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCI7CiAgICAgICAgfQogICAgICAgIG9i
amVjdCA9ICJzY3JvbGxZVFMiOwogICAgICAgIGNoZWNrTG9jYXRpb25BKCk7CiAgICB9Cn0KZnVu
Y3Rpb24gc2hvd0hpZGVOZXdBZGRyZXNzRGl2KGJlYW5WYWx1ZSwgbG9vcElkKSB7CiAgICBpZiAo
YmVhblZhbHVlID09ICJuZXdDYXJkIikgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJuZXdDYXJkRGl2T25Qb3BVcCIgKyBsb29wSWQpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwog
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYxMjMiICsgbG9vcElkKS5zdHlsZS5v
dmVyZmxvdyA9ICJhdXRvIjsKICAgIH0KICAgIGlmIChiZWFuVmFsdWUgPT0gInNhdmVkQ2FyZCIp
IHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmV3Q2FyZERpdk9uUG9wVXAiICsg
bG9vcElkKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJkaXYxMjMiICsgbG9vcElkKS5zdHlsZS5vdmVyZmxvdyA9ICJhdXRvIjsKICAgIH0K
fQpmdW5jdGlvbiBjaGFuZ2VBZGRyZXNzKGFkZHJlc3NTaXplKSB7CiAgICBmb3IgKGkgPSAwOyBp
IDwgYWRkcmVzc1NpemU7IGkrKykgewogICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZHluYW1pY0FkZHJlc3NEaXYiICsgaSkpIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImR5bmFtaWNBZGRyZXNzRGl2IiArIGkpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7
CiAgICAgICAgfQogICAgfQogICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWV3
UHVyY2hhc2VNb2RlbC5zYXZlZEFkZHJlc3NOYW1lIikpIHsKICAgICAgICBpZiAoZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeU5hbWUoInZpZXdQdXJjaGFzZU1vZGVsLnNhdmVkQWRkcmVzc05hbWUiKVsw
XSkgewogICAgICAgICAgICB2YXIgYWRkcmVzc0luZGV4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eU5hbWUoInZpZXdQdXJjaGFzZU1vZGVsLnNhdmVkQWRkcmVzc05hbWUiKVswXS5zZWxlY3RlZElu
ZGV4OwogICAgICAgIH0KICAgIH0KICAgIHZhciBkaXZOYW1lID0gImR5bmFtaWNBZGRyZXNzRGl2
IiArIGFkZHJlc3NJbmRleDsKICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkaXZOYW1l
KSkgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRpdk5hbWUpLnN0eWxlLmRpc3Bs
YXkgPSAiYmxvY2siOwogICAgfQp9CnZhciBkaXZUb09wZW5CeUFqYXg7CnZhciByZWZEaXY7CnZh
ciBhZGROZXdBZGRyZXNzID0gbmV3IEFycmF5KDIpOwoKZnVuY3Rpb24gb3BlbkRpdkZvck1hbmFn
ZUNyZWRpdENhcmQoZGl2VG9PcGVuLCBwb3NEaXYpIHsKICAgIHZhciBhamF4VXJsID0gIiI7CiAg
ICBhamF4VXJsID0gIm1hbmFnZUNyZWRpdENhcmQuZG8/bWV0aG9kPW1hbmFnZUNyZWRpdENhcmQi
OwogICAgcmVmRGl2ID0gcG9zRGl2OwogICAgYWpheFRvT3BlbkRpdihhamF4VXJsLCBkaXZUb09w
ZW4pOwp9CmZ1bmN0aW9uIG9wZW5DbG9zZU5ld0NhcmREaXYoYmVhblZhbHVlLCBpc1Jlc2V0KSB7
CiAgICBpZiAoYmVhblZhbHVlID09ICJzYXZlZENhcmQiIHx8IGJlYW5WYWx1ZSA9PSAiVmlyZ2lu
QW1lcmljYVNpZ25hdHVyZUNhcmQiKSB7CiAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJuZXdDYXJkRGl2IikpIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
Im5ld0NhcmREaXYiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgIH0KICAgIH0KICAg
IGlmIChiZWFuVmFsdWUgPT0gIm5ld0NhcmQiKSB7CiAgICAgICAgaWYgKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJuZXdDYXJkRGl2IikpIHsKICAgICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJuZXdDYXJkRGl2Iikuc3R5bGUuZGlzcGxheSA9PSAibm9uZSIpIHsKICAgICAg
ICAgICAgICAgIHZhciBmb3JtOwogICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LnJlY2VpcHRG
b3JtKSB7CiAgICAgICAgICAgICAgICAgICAgZm9ybSA9IGRvY3VtZW50LnJlY2VpcHRGb3JtOwog
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQu
Y2hlY2tJbkRldGFpbEZvcm0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9ybSA9IGRvY3Vt
ZW50LmNoZWNrSW5EZXRhaWxGb3JtOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGZvcm0gPSBkb2N1bWVudC5wdXJjaGFzZUZvcm07CiAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGlzUmVz
ZXQgIT0gIm5vIikgewogICAgICAgICAgICAgICAgICAgIGZvcm0uZWxlbWVudHNbInZpZXdQdXJj
aGFzZU1vZGVsLmNhcmRObyJdLnZhbHVlID0gIiI7CiAgICAgICAgICAgICAgICAgICAgaWYgKGZv
cm0uZWxlbWVudHNbInZpZXdQdXJjaGFzZU1vZGVsLm5hbWVPbkNhcmQiXSkgewogICAgICAgICAg
ICAgICAgICAgICAgICBmb3JtLmVsZW1lbnRzWyJ2aWV3UHVyY2hhc2VNb2RlbC5uYW1lT25DYXJk
Il0udmFsdWUgPSAiIjsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoZm9ybS5lbGVtZW50c1sidmlld1B1cmNoYXNlTW9kZWwuZmlyc3ROYW1l
Il0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm0uZWxlbWVudHNbInZpZXdQdXJj
aGFzZU1vZGVsLmZpcnN0TmFtZSJdLnZhbHVlID0gIiI7CiAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZm9ybS5lbGVtZW50
c1sidmlld1B1cmNoYXNlTW9kZWwuY2FyZFR5cGUiXS5zZWxlY3RlZEluZGV4ID0gMDsKICAgICAg
ICAgICAgICAgICAgICBmb3JtLmVsZW1lbnRzWyJ2aWV3UHVyY2hhc2VNb2RlbC5kYXRlIl0udmFs
dWUgPSAiMDAiOwogICAgICAgICAgICAgICAgICAgIGZvcm0uZWxlbWVudHNbInZpZXdQdXJjaGFz
ZU1vZGVsLnllYXIiXS52YWx1ZSA9ICIxIjsKICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybS5l
bGVtZW50c1sidmlld1B1cmNoYXNlTW9kZWwuY2FyZE5pY2tOYW1lIl0pIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgZm9ybS5lbGVtZW50c1sidmlld1B1cmNoYXNlTW9kZWwuY2FyZE5pY2tOYW1l
Il0udmFsdWUgPSAiIjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICB2YXIgZWxzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5ld0NhcmRE
aXYiKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOwogICAgICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDAsIGogPSBlbHMubGVuZ3RoOyBpIDwgajsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAg
aWYgKGVsc1tpXS5jbGFzc05hbWUgPT0gInN0eWxlOF9lcnJvciIpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzW2ldLmNsYXNzTmFtZSA9ICJzdHlsZTgiOwogICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbHNbaV0uY2xhc3NOYW1lID09
ICJHdWVzdF9pbnB1dF9UZXh0VHlwZV9lcnJvciIpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc1tpXS5jbGFzc05hbWUgPSAiR3Vlc3RfaW5wdXRfVGV4dFR5cGUiOwogICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVs
c1tpXS50YWdOYW1lID09ICJJTUciICYmIGVsc1tpXS5nZXRBdHRyaWJ1dGUoInNyYyIpLmluZGV4
T2YoIkVycm9yX2xvZ29faG9yaXpvbnRhbC5naWYiKSAhPSAtMSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc1tpXS5zZXRBdHRyaWJ1dGUoInNyYyIsICJodHRwczovL3N0YXRp
Yy52aXJnaW5hbWVyaWNhLmNvbS9pbWFnZXMvc3BhY2VyLmdpZiIpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJuZXdDYXJkRGl2Iikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAg
ICAgICAgfQogICAgfQp9CmZ1bmN0aW9uIG9wZW5DbG9zZU5ld0FkZHJlc3NzRGl2KGJlYW5WYWx1
ZSkgewogICAgaWYgKGJlYW5WYWx1ZSA9PSAic2F2ZWRBZGRyZXNzIikgewogICAgICAgIGlmIChk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmV3QWRkcmVzc0RpdiIpKSB7CiAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJuZXdBZGRyZXNzRGl2Iikuc3R5bGUuZGlzcGxheSA9ICJu
b25lIjsKICAgICAgICB9CiAgICB9CiAgICBpZiAoYmVhblZhbHVlID09ICJuZXdBZGRyZXNzIikg
ewogICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmV3QWRkcmVzc0RpdiIpKSB7
CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJuZXdBZGRyZXNzRGl2Iikuc3R5
bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICAgICAgfQogICAgfQp9CmZ1bmN0aW9uIG9wZW5DbG9z
ZU5ld0FkZHJlc3NEaXYoYmVhblZhbHVlKSB7CiAgICBpZiAoYmVhblZhbHVlID09ICJ1c2VPbGRB
ZGRyZXNzIikgewogICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2hvd05ld0Fk
ZHJlc3NXaW5kb3ciKSkgewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2hv
d05ld0FkZHJlc3NXaW5kb3ciKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgIH0KICAg
IH0KICAgIGlmIChiZWFuVmFsdWUgPT0gInVzZU5ld0FkZHJlc3MiKSB7CiAgICAgICAgaWYgKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaG93TmV3QWRkcmVzc1dpbmRvdyIpKSB7CiAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaG93TmV3QWRkcmVzc1dpbmRvdyIpLnN0eWxl
LmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiB1cGRhdGVDcmVk
aXRDYXJkVXJsKCkgewogICAgdmFyIHVwZGF0ZUNyZWRpdFVybCA9IG51bGw7CiAgICB2YXIgbG9v
cCA9IDA7CiAgICB1cGRhdGVDcmVkaXRVcmwgPSAiZWRpdENyZWRpdENhcmRQdXJjaGFzZS5kbz9t
ZXRob2Q9ZWRpdENyZWRpdENhcmRQdXJjaGFzZSI7CiAgICBmb3IgKGkgPSAwOyBpIDwgZG9jdW1l
bnQubW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHMubGVuZ3RoOyBpKyspIHsKICAgICAgICBpZiAo
ZG9jdW1lbnQubW9kaWZ5UHJvZmlsZUZvcm0uZWxlbWVudHNbaV0udHlwZSA9PSAicmFkaW8iKSB7
CiAgICAgICAgICAgIGlmIChkb2N1bWVudC5tb2RpZnlQcm9maWxlRm9ybS5lbGVtZW50c1tpXS5j
aGVja2VkKSB7CiAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQubW9kaWZ5UHJvZmlsZUZvcm0u
ZWxlbWVudHNbaV0udmFsdWUgPT0gIm5ldyIpIHsKICAgICAgICAgICAgICAgICAgICBhZGROZXdB
ZGRyZXNzW2xvb3BdID0gIm5ldyI7CiAgICAgICAgICAgICAgICAgICAgbG9vcCsrOwogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3Jt
LmVsZW1lbnRzW2ldLnZhbHVlID09ICJzdG9yZWQiKSB7CiAgICAgICAgICAgICAgICAgICAgYWRk
TmV3QWRkcmVzc1tsb29wXSA9ICJzdG9yZWQiOwogICAgICAgICAgICAgICAgICAgIGxvb3ArKzsK
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVwZGF0ZUNyZWRpdFVybCA9IHVwZGF0
ZUNyZWRpdFVybCArICImIiArIGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3JtLmVsZW1lbnRzW2ld
Lm5hbWUgKyAiPSIgKyBkb2N1bWVudC5tb2RpZnlQcm9maWxlRm9ybS5lbGVtZW50c1tpXS52YWx1
ZTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHVwZGF0ZUNyZWRp
dFVybCA9IHVwZGF0ZUNyZWRpdFVybCArICImIiArIGRvY3VtZW50Lm1vZGlmeVByb2ZpbGVGb3Jt
LmVsZW1lbnRzW2ldLm5hbWUgKyAiPSIgKyBkb2N1bWVudC5tb2RpZnlQcm9maWxlRm9ybS5lbGVt
ZW50c1tpXS52YWx1ZTsKICAgICAgICB9CiAgICB9CiAgICBhamF4VG9PcGVuRGl2KHVwZGF0ZUNy
ZWRpdFVybCwgInNlY3QiKTsKfQpmdW5jdGlvbiBhZGRDcmVkaXRDYXJkUHVyY2hhc2UoKSB7CiAg
ICB2YXIgYWRkQ2FyZFVybCA9IG51bGw7CiAgICBhZGRDYXJkVXJsID0gImFkZENyZWRpdENhcmRQ
dXJjaGFzZS5kbz9tZXRob2Q9YWRkQ3JlZGl0Q2FyZCI7CiAgICBhamF4VG9PcGVuRGl2KGFkZENh
cmRVcmwsICJtYW5hZ2VDcmVkaXRDYXJkRGl2Iik7Cn0KZnVuY3Rpb24gbW92ZUNyZWRpdENhcmRQ
dXJjaGFzZShtb3ZldHlwZSkgewogICAgdmFyIGFkZENhcmRVcmwgPSBudWxsOwogICAgYWRkQ2Fy
ZFVybCA9ICJtb3ZlQ3JlZGl0Q2FyZFB1cmNoYXNlLmRvP21ldGhvZD1tb3ZlQ3JlZGl0Q2FyZCZt
b3ZlVHlwZT0iICsgbW92ZXR5cGU7CiAgICBhamF4VG9PcGVuRGl2KGFkZENhcmRVcmwsICJtYW5h
Z2VDcmVkaXRDYXJkRGl2Iik7Cn0KZnVuY3Rpb24gZGVsZXRlQ3JlZGl0Q2FyZFB1cmNoYXNlKGNh
cmRJZCkgewogICAgdmFyIGFkZENhcmRVcmwgPSBudWxsOwogICAgYWRkQ2FyZFVybCA9ICJkZWxl
dGVDcmVkaXRDYXJkUHVyY2hhc2UuZG8/bWV0aG9kPWRlbGV0ZUNyZWRpdENhcmQmY2FyZElkPSIg
KyBjYXJkSWQ7CiAgICBpZiAoY2FyZElkID09IDApIHsKICAgICAgICBhamF4VG9PcGVuRGl2KGFk
ZENhcmRVcmwsICJtYW5hZ2VDcmVkaXRDYXJkRGl2Iik7CiAgICB9IGVsc2UgewogICAgICAgIGFq
YXhUb09wZW5EaXYoYWRkQ2FyZFVybCwgInNlY3QiKTsKICAgIH0KfQpmdW5jdGlvbiB1cGRhdGVQ
dXJjaGFzZVBhZ2UoZUlkKSB7CiAgICB2YXIgdXBkYXRlVXJsID0gbnVsbDsKICAgIHVwZGF0ZVVy
bCA9ICJ1cGRhdGVQdXJjaGFzZVBhZ2UuZG8/bWV0aG9kPWhvbWVQcm9maWxlV2l0aFBhZ2luYXRp
b24mZW50aXR5PSIgKyBlSWQ7CiAgICBhamF4VG9PcGVuRGl2KHVwZGF0ZVVybCwgInNlY3QiKTsK
fQpmdW5jdGlvbiBhamF4VG9PcGVuRGl2KG15dXJsLCBkaXYxKSB7CiAgICBpZiAoZGl2MSAhPSAi
c2VjdCIpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkaXYxKS5zdHlsZS5kaXNw
bGF5ID0gIm5vbmUiOwogICAgICAgIHNob3dXYWl0SW1hZ2UoKTsKICAgICAgICBkaXNhYmxlVG90
YWxwYWdlKCk7CiAgICB9IGVsc2UgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJt
YW5hZ2VDcmVkaXRDYXJkRGl2Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICBpZiAo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNob3dNYW5hZ2VBZGRyZXNzZXNEaXYiKSkgewogICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2hvd01hbmFnZUFkZHJlc3Nlc0RpdiIp
LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgfQogICAgICAgIGRpc2FibGVUb3RhbHBh
Z2UoKTsKICAgICAgICBzaG93V2FpdEltYWdlKCk7CiAgICB9CiAgICB4bWxodHRwID0gbmV3IFhN
TEh0dHBSZXF1ZXN0KCk7CiAgICB2YXIgdGhldGltZSA9IG5ldyBEYXRlKCk7CiAgICB2YXIgZHVt
bXkgPSAiIiArIHRoZXRpbWUuZ2V0SG91cnMoKSArIHRoZXRpbWUuZ2V0TWludXRlcygpICsgdGhl
dGltZS5nZXRTZWNvbmRzKCk7CiAgICBteXVybCA9IG15dXJsICsgIiZkdW1teT0iICsgZHVtbXk7
CiAgICBkaXZUb09wZW5CeUFqYXggPSBkaXYxOwogICAgeG1saHR0cC5vcGVuKCJQT1NUIiwgbXl1
cmwsIHRydWUpOwogICAgY2hrVVJMID0gbXl1cmw7CiAgICB4bWxodHRwLm9ucmVhZHlzdGF0ZWNo
YW5nZSA9IGhhbmRsZVJlc3BvbnNlRWRpdENyZWRpdENhcmQ7CiAgICB4bWxodHRwLnNlbmQoIiIp
Owp9CmZ1bmN0aW9uIGhhbmRsZVJlc3BvbnNlRWRpdENyZWRpdENhcmQoKSB7CiAgICBpZiAoeG1s
aHR0cC5yZWFkeVN0YXRlID09IDQpIHsKICAgICAgICBpZiAoeG1saHR0cC5zdGF0dXMgPT0gMjAw
KSB7CiAgICAgICAgICAgIGlmICh4bWxodHRwLnJlc3BvbnNlVGV4dC5pbmRleE9mKCJodHRwczov
L3N0YXRpYy52aXJnaW5hbWVyaWNhLmNvbS9pbWFnZXMvbWFuYWdlQ3JlZGl0Q2FyZC5naWYiKSAh
PSAtMSkgewogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1hbmFnZUNy
ZWRpdENhcmREaXYiKS5pbm5lckhUTUwgPSAnPGlmcmFtZSBmcmFtZWJvcmRlcj0iMCIgc3R5bGU9
InBvc2l0aW9uOmFic29sdXRlO3RvcDowcHg7bGVmdDowcHg7d2lkdGg6NTkwcHg7aGVpZ2h0OjM5
NXB4OyIgc3JjPSJodG1sL1NTTElmcmFtZUZpeGVkLmh0bWwiPjwvaWZyYW1lPicgKyAnPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyI+JyArIHhtbGh0dHAucmVzcG9uc2VUZXh0ICsgIjwv
ZGl2PiI7CiAgICAgICAgICAgICAgICBkaXZUb09wZW5CeUFqYXggPSAibWFuYWdlQ3JlZGl0Q2Fy
ZERpdiI7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZChkaXZUb09wZW5CeUFqYXgpLmlubmVySFRNTCA9IHhtbGh0dHAucmVzcG9uc2VU
ZXh0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJs
b2FkaW5nQW5pbWF0aW9uRGl2Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGl2VG9PcGVuQnlBamF4KS5zdHlsZS5kaXNwbGF5ID0g
ImJsb2NrIjsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpc2FibGVUb3Rh
bFBhZ2UiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICBpZiAoKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJtYW5hZ2VDcmVkaXRDYXJkRGl2IikuaW5uZXJIVE1MKS5pbmRleE9m
KCJZb3VyIEluZm9ybWF0aW9uIGhhcyBub3QgYmVlbiBzdWNjZXNzZnVsbHkgdXBkYXRlZCIpICE9
IC0xKSB7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFuYWdlQ3Jl
ZGl0Q2FyZERpdiIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgICAgICAgICAgc2V0
UG9zaXRpb24oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocmVmRGl2KSwgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoIm1hbmFnZUNyZWRpdENhcmREaXYiKSwgMjE1LCAtMjApOwogICAgICAgICAgICB9
CiAgICAgICAgICAgIGlmIChkaXZUb09wZW5CeUFqYXggIT0gInNlY3QiKSB7CiAgICAgICAgICAg
ICAgICBzZXRQb3NpdGlvbihkb2N1bWVudC5nZXRFbGVtZW50QnlJZChyZWZEaXYpLCBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZChkaXZUb09wZW5CeUFqYXgpLCAyMTUsIC0yMCk7CiAgICAgICAgICAg
ICAgICBmb3IgKGsgPSAwOyBrIDwgYWRkTmV3QWRkcmVzcy5sZW5ndGg7IGsrKykgewogICAgICAg
ICAgICAgICAgICAgIGlmIChhZGROZXdBZGRyZXNzW2tdID09ICJuZXciKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHNob3dIaWRlTmV3QWRkcmVzc0RpdigibmV3Q2FyZCIsIGspOwogICAgICAg
ICAgICAgICAgICAgICAgICBhZGROZXdBZGRyZXNzW2tdID0gIiI7CiAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CmZ1
bmN0aW9uIHNldFBvc2l0aW9uVHJhdmVsRXhwKCkgewogICAgdmFyIHRvcGxlbmd0aCA9ICIiOwog
ICAgdG9wbGVuZ3RoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNjcm9sbFlUUyIpLnN0eWxl
LnRvcDsKICAgIGlmICh0b3BsZW5ndGggPT0gIiIpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgic2Nyb2xsWVRTIikuc3R5bGUudG9wID0gIjBwdCI7CiAgICB9CiAgICB2YXIgbGVu
Z3RoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNjcm9sbFlUUyIpLnN0eWxlLnRvcC5zcGxp
dCgicCIpOwogICAgdmFyIHRvdGFsTGVuZ3RoID0gZXZhbChkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiYm90dG9tTW92ZSIpLm9mZnNldFRvcCkgKyBldmFsKGxlbmd0aFswXSkgKyAyNTA7CiAgICBp
ZiAodG90YWxMZW5ndGggPiBnZXRYYW5kWShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQ29udGFp
bmVyRm9vdGVyIikpLnkpIHsKICAgICAgICB2YXIgZGlmZmVyZW5jZSA9IHRvdGFsTGVuZ3RoIC0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvdHRvbUxpbWl0Rm9yU2Nyb2xsIikub2Zmc2V0VG9w
IC0gNjA7CiAgICAgICAgdmFyIFl0c1RvcCA9IGV2YWwobGVuZ3RoWzBdIC0gZGlmZmVyZW5jZSk7
CiAgICAgICAgaWYgKFl0c1RvcCA8IDQpIHsKICAgICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ1cHBlckxpbWl0Rm9yU2Nyb2xsIikpIHsKICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJzY3JvbGxZVFMiKS5zdHlsZS50b3AgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidXBwZXJMaW1pdEZvclNjcm9sbCIpLnN0eWxlLnRvcDsKICAgICAgICAgICAg
fQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJz
Y3JvbGxZVFMiKS5zdHlsZS50b3AgPSBZdHNUb3A7CiAgICAgICAgfQogICAgICAgIGlmIChkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidXBwZXJMaW1pdEZvclNjcm9sbCIpKSB7CiAgICAgICAgICAg
IGNoZWNrTG9jYXRpb24oKTsKICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gY2hlY2tMb2NhdGlv
bigpIHsKICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm90dG9tTW92ZSIpKSB7CiAg
ICAgICAgeXkgPSBldmFsKHkpOwogICAgICAgIHlkaWZmID0geXN0YXJ0IC0geXk7CiAgICAgICAg
aWYgKGlzU2Nyb2xsID09ICJZZXMiKSB7CiAgICAgICAgICAgIGlmICgoeWRpZmYgPCAoLTEpKSB8
fCAoeWRpZmYgPiAoMSkpKSB7CiAgICAgICAgICAgICAgICBtb3ZleSA9IE1hdGgucm91bmQoeWRp
ZmYgLyAxMCksIHlzdGFydCAtPSBtb3ZleTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXJF
bmRQb2ludCA9IHlzdGFydDsKICAgICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJib2R5RW5kIikub2Zmc2V0VG9wIDwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvdHRvbUxp
bWl0Rm9yU2Nyb2xsIikub2Zmc2V0VG9wKSB7fQogICAgICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImJvdHRvbUxpbWl0Rm9yU2Nyb2xsIikub2Zmc2V0VG9wIDwgdmFyRW5kUG9p
bnQgKyAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvdHRvbU1vdmUiKS5vZmZzZXRUb3AgLSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9wTW92ZSIpLm9mZnNldFRvcCkgKyAxNTApIHt9IGVs
c2UgewogICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1cHBlckxp
bWl0Rm9yU2Nyb2xsIikub2Zmc2V0VG9wIDwgMCkge30gZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNjcm9sbFlUUyIpLnN0eWxlLnRvcCA9IHlzdGFy
dDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBzZXRU
aW1lb3V0KCJjaGVja0xvY2F0aW9uKCkiLCAxKTsKICAgIH0KfQpmdW5jdGlvbiBjaGVja0xvY2F0
aW9uQSgpIHsKICAgIHlzdGFydCA9IGV2YWwoeSk7CiAgICB4c3RhcnQgPSBldmFsKHgpOwp9CmZ1
bmN0aW9uIGRlbGF5TG9nbygpIHsKICAgIGV2YWwoZFMgKyBvYmplY3QgKyBzRCArIHYgKyAwKTsK
ICAgIGV2YWwoZFMgKyBvYmplY3QgKyBzRCArIGggKyAoLTIwMCkpOwogICAgb2JqZWN0ID0gInNj
cm9sbFlUUyI7Cn0KZnVuY3Rpb24gY2xvc2VGYXJlUnVsRGl2KGRpdk5hbWUpIHsKICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHBvc2l0aW9uRGl2RmFyZSkuc3R5bGUuZGlzcGxheSA9ICJub25l
IjsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXNhYmxlVG90YWxQYWdlIikuc3R5bGUu
ZGlzcGxheSA9ICJub25lIjsKICAgIGlzU2Nyb2xsID0gIlllcyI7Cn0KZnVuY3Rpb24gc2hvd1By
b21vQ29kZURpdihMaW5rSWQpIHsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwcm9tb0Nv
ZGVFcnJUeHQiKS5pbm5lckhUTUwgPSAnSWYgeW91IGhhcHBlbiB0byBoYXZlIGEgVmlyZ2luIEFt
ZXJpY2EgcHJvbW8gY29kZSwgZW50ZXIgaXQgaGVyZSBhbmQgY2xpY2sgdGhlICJBcHBseSIgYnV0
dG9uIHRvIGNhc2ggaW4gZm9yIGEgbG93ZXIgZmFyZSBvciBzcGVjaWFsIG9mZmVyLic7CiAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VhcmNoV2luRnJtIikuc3R5bGUuaGVpZ2h0ID0gMTE4
OwogICAgc2V0U2FmYXJpWFkoMjAwLCAxMjAsIDE0MCwgMTAwKTsKICAgIHNldFBvc2l0aW9uKExp
bmtJZCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlYXJjaFByb21vQ29kZSIpLCBsb2FkWCwg
bG9hZFkpOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlYXJjaFByb21vQ29kZSIpLnN0
eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByb21v
Q29kZVRleHQiKS52YWx1ZSA9ICIiOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByb21v
Q29kZVRleHQiKS5mb2N1cygpOwogICAgY2hlY2tTZWFyY2hUeXBlTGluayA9IExpbmtJZDsKfQpm
dW5jdGlvbiByZW1vdmVQcm9tb0NvZGUocGFnZU5hbWUpIHsKICAgIGlmIChkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgibG9hZGluZ0FuaW1hdGlvbkRpdiIpKSB7CiAgICAgICAgc2hvd1dhaXRJbWFn
ZSgpOwogICAgfSBlbHNlIHsKICAgICAgICBzaG93V2FpdEltYWdlKCk7CiAgICB9CiAgICB2YXIg
cmVtb3ZlUHJvbW9VcmwgPSAicHJvbW9Db2RlUmVtb3ZlLmRvP21ldGhvZD1yZW1vdmVQcm9tb0Nv
ZGUmcGFnZU5hbWU9IiArIHBhZ2VOYW1lOwogICAgcHJvbW9Db2RlUmVtb3ZlQWpheChyZW1vdmVQ
cm9tb1VybCk7Cn0KdmFyIHJlbW92ZVByb21vQ29kZVhtbGh0dHAgPSBuZXcgWE1MSHR0cFJlcXVl
c3QoKTsKCmZ1bmN0aW9uIHByb21vQ29kZVJlbW92ZUFqYXgodXJsKSB7CiAgICByZW1vdmVQcm9t
b0NvZGVYbWxodHRwLm9wZW4oIlBPU1QiLCB1cmwsIHRydWUpOwogICAgcmVtb3ZlUHJvbW9Db2Rl
WG1saHR0cC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBoYW5kbGVSZXNwb25zZVJlbW92ZVByb21vQ29k
ZTsKICAgIHJlbW92ZVByb21vQ29kZVhtbGh0dHAuc2VuZCgiIik7Cn0KZnVuY3Rpb24gaGFuZGxl
UmVzcG9uc2VSZW1vdmVQcm9tb0NvZGUoKSB7CiAgICBpZiAocmVtb3ZlUHJvbW9Db2RlWG1saHR0
cC5yZWFkeVN0YXRlID09IDQpIHsKICAgICAgICBpZiAocmVtb3ZlUHJvbW9Db2RlWG1saHR0cC5z
dGF0dXMgPT0gMjAwKSB7CiAgICAgICAgICAgIHZhciByZXNUeHQgPSByZW1vdmVQcm9tb0NvZGVY
bWxodHRwLnJlc3BvbnNlVGV4dDsKICAgICAgICAgICAgYWpheCgidXBkYXRlVGl0bGVCYXIuZG8/
bWV0aG9kPXVwZGF0ZVRpdGxlQmFyIiwgInRpdGxlQmFyRGl2Iik7CiAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJQcm9tb0NvZGVEZXRhaWwiKS5pbm5lckhUTUwgPSByZXNUeHQ7
CiAgICAgICAgICAgIGVuYWJsZURpc2FibGVQb2ludE9wdGlvbihmYWxzZSk7CiAgICAgICAgICAg
IGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9hZGluZ0FuaW1hdGlvbkRpdiIpKSB7CiAg
ICAgICAgICAgICAgICAkZ2V0X0pzRWxlbWVudCgibG9hZGluZ0FuaW1hdGlvbkRpdiIpLnN0eWxl
LmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KZnVuY3Rp
b24gYWpheChteXVybCwgZGl2KSB7CiAgICB2YXIgdGhldGltZSA9IG5ldyBEYXRlKCk7CiAgICB2
YXIgZHVtbXkgPSAiIiArIHRoZXRpbWUuZ2V0SG91cnMoKSArIHRoZXRpbWUuZ2V0TWludXRlcygp
ICsgdGhldGltZS5nZXRTZWNvbmRzKCk7CiAgICBteXVybCA9IG15dXJsICsgIiZkdW1teT0iICsg
ZHVtbXk7CiAgICB4bWxodHRwLm9wZW4oIlBPU1QiLCBteXVybCwgdHJ1ZSk7CiAgICBhamF4RGl2
ID0gZGl2OwogICAgeG1saHR0cC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBoYW5kbGVSZXNwb25zZVNl
bGVjdFVwZGF0ZVRpdGxlQmFyOwogICAgeG1saHR0cC5zZW5kKCIiKTsKfQpmdW5jdGlvbiBoYW5k
bGVSZXNwb25zZVNlbGVjdFVwZGF0ZVRpdGxlQmFyKCkgewogICAgU3RyaW5nLnByb3RvdHlwZS50
cmltID0gZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiB0aGlzLnJlcGxhY2UoL15ccyt8XHMr
JC8sICIiKTsKICAgIH07CiAgICBpZiAoeG1saHR0cC5yZWFkeVN0YXRlID09IDQpIHsKICAgICAg
ICBpZiAoeG1saHR0cC5zdGF0dXMgPT0gMjAwKSB7CiAgICAgICAgICAgIGlmICgoeG1saHR0cC5y
ZXNwb25zZVRleHQpLnRyaW0oKSA9PSAiQWpheFNlc3Npb25UaW1lT3V0IikgewogICAgICAgICAg
ICAgICAgd2luZG93LmxvY2F0aW9uID0gIi9ob21lLmRvP21ldGhvZD12aXJnaW5BbWVyaWNhJnNl
c3Npb25TdGF0ZT1zZXNzaW9uVGltZU91dCI7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICBpZiAoKHhtbGh0dHAucmVzcG9uc2VUZXh0KS50cmltKCkgPT0gIkFqYXhFcnJvciIp
IHsKICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAiL2hvbWUuZG8/bWV0aG9k
PXZpcmdpbkFtZXJpY2EmZnJvbUVycm9yUGFnZT1mcm9tRXJyb3JQYWdlIjsKICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKGFqYXhEaXYpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKGFqYXhEaXYpLmlubmVySFRNTCA9IHhtbGh0dHAucmVzcG9uc2VUZXh0OwogICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBzaG93TG9hZGluZ0ltYWdlQ2xvc2Uo
KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQpmdW5j
dGlvbiBzZWFyY2hQcm9tb0NvZGVWYWwoKSB7CiAgICB2YXIgdHJpcFR5cGUgPSAib3RoZXIiOwog
ICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXZPVyIpLnN0eWxlLmRpc3BsYXkgPT0g
ImJsb2NrIikgewogICAgICAgIHRyaXBUeXBlID0gIk9XIjsKICAgIH0KICAgIGlmIChkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicHJvbW9Db2RlVGV4dCIpLnZhbHVlICE9ICIiKSB7CiAgICAgICAg
ZG9jdW1lbnQuZmxpZ2h0U2VhcmNoT1dGb3JtLmVsZW1lbnRzWyJmbGlnaHRTZWFyY2guc2VhcmNo
UHJvbW9Db2RlIl0udmFsdWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHJvbW9Db2RlVGV4
dCIpLnZhbHVlOwogICAgICAgIGRvY3VtZW50LmZsaWdodFNlYXJjaFJURm9ybS5lbGVtZW50c1si
ZmxpZ2h0U2VhcmNoLnNlYXJjaFByb21vQ29kZSJdLnZhbHVlID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInByb21vQ29kZVRleHQiKS52YWx1ZTsKICAgICAgICBkb2N1bWVudC5mbGlnaHRTZWFy
Y2hNQ0Zvcm0uZWxlbWVudHNbImZsaWdodFNlYXJjaC5zZWFyY2hQcm9tb0NvZGUiXS52YWx1ZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwcm9tb0NvZGVUZXh0IikudmFsdWU7CiAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByb21vQ29kZVRleHQiKS5mb2N1cygpOwogICAgfSBl
bHNlIHsKICAgICAgICBkb2N1bWVudC5mbGlnaHRTZWFyY2hPV0Zvcm0uZWxlbWVudHNbImZsaWdo
dFNlYXJjaC5zZWFyY2hQcm9tb0NvZGUiXS52YWx1ZSA9ICIiOwogICAgICAgIGRvY3VtZW50LmZs
aWdodFNlYXJjaFJURm9ybS5lbGVtZW50c1siZmxpZ2h0U2VhcmNoLnNlYXJjaFByb21vQ29kZSJd
LnZhbHVlID0gIiI7CiAgICAgICAgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoTUNGb3JtLmVsZW1lbnRz
WyJmbGlnaHRTZWFyY2guc2VhcmNoUHJvbW9Db2RlIl0udmFsdWUgPSAiIjsKICAgIH0KICAgIHZh
ciBwcm9tb1VybCA9ICJwcm9tb0NvZGVBcHBseS5kbz9tZXRob2Q9YXBwbHlQcm9tb0NvZGUmY2Vy
dENvZGU9IiArIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwcm9tb0NvZGVUZXh0IikudmFsdWUg
KyAiJnRyaXBUeXBlPSIgKyB0cmlwVHlwZTsKICAgIHNob3dXYWl0SW1hZ2UoY2hlY2tTZWFyY2hU
eXBlTGluayk7CiAgICBwcm9tb0NvZGVBamF4KHByb21vVXJsKTsKfQp2YXIgcHJvbW9Db2RlWG1s
aHR0cCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwoKZnVuY3Rpb24gcHJvbW9Db2RlQWpheCh1cmwp
IHsKICAgIHByb21vQ29kZVhtbGh0dHAub3BlbigiUE9TVCIsIHVybCwgdHJ1ZSk7CiAgICBwcm9t
b0NvZGVYbWxodHRwLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGhhbmRsZVJlc3BvbnNlUHJvbW9Db2Rl
OwogICAgcHJvbW9Db2RlWG1saHR0cC5zZW5kKCIiKTsKfQpmdW5jdGlvbiBoYW5kbGVSZXNwb25z
ZVByb21vQ29kZSgpIHsKICAgIGlmIChwcm9tb0NvZGVYbWxodHRwLnJlYWR5U3RhdGUgPT0gNCkg
ewogICAgICAgIGlmIChwcm9tb0NvZGVYbWxodHRwLnN0YXR1cyA9PSAyMDApIHsKICAgICAgICAg
ICAgdmFyIHJlc1R4dCA9IHByb21vQ29kZVhtbGh0dHAucmVzcG9uc2VUZXh0OwogICAgICAgICAg
ICB2YXIgZXJyb3JFbGVtZW50cyA9IGdldEVsZW1lbnRzQnlDbGFzc05hbWUoImVycm9yTGFiZWwi
KTsKICAgICAgICAgICAgaWYgKGVycm9yRWxlbWVudHMpIHsKICAgICAgICAgICAgICAgIGZvciAo
aSA9IDA7IGkgPCBlcnJvckVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAg
ICAgZXJyb3JFbGVtZW50c1tpXS5jbGFzc05hbWUgPSBlcnJvckVsZW1lbnRzW2ldLmNsYXNzTmFt
ZS5yZXBsYWNlKCJlcnJvckxhYmVsIiwgIiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICB9CiAgICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQm9va0ZsaWdodERp
diIpKSB7CiAgICAgICAgICAgICAgICB2YXIgZWxzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
IkJvb2tGbGlnaHREaXYiKS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOwogICAgICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDAsIGogPSBlbHMubGVuZ3RoOyBpIDwgajsgaSsrKSB7CiAgICAgICAg
ICAgICAgICAgICAgaWYgKGVsc1tpXS5jbGFzc05hbWUgPT0gImVycm9yIikgewogICAgICAgICAg
ICAgICAgICAgICAgICBlbHNbaV0uY2xhc3NOYW1lID0gIiI7CiAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsc1tpXS5jbGFzc05hbWUgIT0g
IkVycm9yTWVzc2FnZSIgJiYgZWxzW2ldLmNsYXNzTmFtZS5pbmRleE9mKCJFcnJvciIpICE9IC0x
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNbaV0uY2xhc3NOYW1lID0gZWxzW2ld
LmNsYXNzTmFtZS5zdWJzdHJpbmcoMCwgZWxzW2ldLmNsYXNzTmFtZS5pbmRleE9mKCJFcnJvciIp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocmVzVHh0LmluZGV4T2Yo
ImVzYy1zaWduIikgPT0gLTEgJiYgcmVzVHh0LmluZGV4T2YoImVzY1NpZ25JbWciKSA9PSAtMSkg
ewogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlByb21vQ29kZURldGFp
bCIpLmlubmVySFRNTCA9IHJlc1R4dDsKICAgICAgICAgICAgICAgICRnZXRfSnNFbGVtZW50KCJF
cnJvck1lc3NhZ2UiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICAgICAgZW5h
YmxlRGlzYWJsZVBvaW50T3B0aW9uKHRydWUpOwogICAgICAgICAgICAgICAgYWpheCgidXBkYXRl
VGl0bGVCYXIuZG8/bWV0aG9kPXVwZGF0ZVRpdGxlQmFyIiwgInRpdGxlQmFyRGl2Iik7CiAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkZ2V0X0pzRWxlbWVudCgiRXJyb3JNZXNz
YWdlIikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICAgICAgICAgICAgICAkZ2V0X0pzRWxl
bWVudCgicHJvbW9Db2RlVGV4dCIpLmNsYXNzTmFtZSA9ICJwcm9tb2NvZGVfZXJyb3IiOwogICAg
ICAgICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJob21lRXJyb3JNZXNzYWdl
RGl2IikpIHsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaG9t
ZUVycm9yTWVzc2FnZURpdiIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAod2ljaFNlbGVjdGVkKSAhPSAidW5kZWZp
bmVkIiAmJiB0eXBlb2YgKGN1cnJlbnRUcmlwVHlwZSkgIT0gInVuZGVmaW5lZCIpIHsKICAgICAg
ICAgICAgICAgICAgICBpZiAoY3VycmVudFRyaXBUeXBlID09ICJvdyIpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgd2ljaFNlbGVjdGVkID0gImRpdk9XIjsKICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFRyaXBUeXBlID09ICJy
dCIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpY2hTZWxlY3RlZCA9ICJkaXZSVCI7
CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3aWNoU2VsZWN0ZWQgPSAiZGl2TUMiOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZXJy
b3JQcmVzZW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICRnZXRfSnNFbGVtZW50KCJFcnJvck1l
c3NhZ2UiKS5pbm5lckhUTUwgPSByZXNUeHQ7CiAgICAgICAgICAgICAgICBpbmNyZWFzZUVycm9y
Q291bnQoInByb21vQ29kZSIsIGRvY3VtZW50LmVzdGFyYV9mb3JtKTsKICAgICAgICAgICAgfQog
ICAgICAgIH0KICAgICAgICBzaG93TG9hZGluZ0ltYWdlQ2xvc2UoKTsKICAgICAgICBpZiAoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvYWRpbmdBbmltYXRpb25EaXYiKSkgewogICAgICAgICAg
ICBwcnZUcmlwVHlwZSA9IGN1cnJlbnRUcmlwVHlwZTsKICAgICAgICAgICAgJGdldF9Kc0VsZW1l
bnQoImxvYWRpbmdBbmltYXRpb25EaXYiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAg
IH0KICAgIH0KfQpmdW5jdGlvbiBlbmFibGVEaXNhYmxlUG9pbnRPcHRpb24ob3B0aW9uRmxnKSB7
CiAgICBmbGcgPSBmYWxzZTsKICAgIGZvciAoZnJtQ250ID0gMDsgZnJtQ250IDwgZG9jdW1lbnQu
Zm9ybXMubGVuZ3RoOyBmcm1DbnQrKykgewogICAgICAgIGZvciAoZWxlQ250ID0gMDsgZWxlQ250
IDwgZG9jdW1lbnQuZm9ybXNbZnJtQ250XS5lbGVtZW50cy5sZW5ndGg7IGVsZUNudCsrKSB7CiAg
ICAgICAgICAgIGVsZSA9IGRvY3VtZW50LmZvcm1zW2ZybUNudF0uZWxlbWVudHNbZWxlQ250XTsK
ICAgICAgICAgICAgaWYgKChlbGUubmFtZSA9PSAiZmFyZUZvcm1hdFR5cGUiIHx8IGVsZS5uYW1l
ID09ICJmbGlnaHRTZWFyY2guZmFyZUZvcm1hdFR5cGUiKSAmJiBlbGUudmFsdWUgPT0gIlBvaW50
cyIpIHsKICAgICAgICAgICAgICAgIGlmIChvcHRpb25GbGcpIHsKICAgICAgICAgICAgICAgICAg
ICBlbGUuZGlzYWJsZWQgPSAiZGlzYWJsZWQiOwogICAgICAgICAgICAgICAgICAgIGVsZS5jaGVj
a2VkID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
IGVsZS5kaXNhYmxlZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ZmxnID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAg
fQogICAgICAgIGlmIChmbGcpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQp9
CmZ1bmN0aW9uIGNhbGxXYW50UHJvbW9Db2RlKCkgewogICAgZG9jdW1lbnQuTWVldFZhRm9ybS5t
ZXRob2QudmFsdWUgPSAic2hvd1dhbnRNZWV0VmEiOwogICAgZG9jdW1lbnQuTWVldFZhRm9ybS5h
Y3Rpb24gPSAid2FudFByb21vQ29kZS5kbyI7CiAgICBkb2N1bWVudC5NZWV0VmFGb3JtLnN1Ym1p
dCgpOwp9CmZ1bmN0aW9uIGNsb3NlRGl2KGRpdklEKSB7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZChkaXZJRCkuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKfQpmdW5jdGlvbiBjaFZhckRpc2Fi
bGUoKSB7CiAgICBkaXNhYmxlSWRzID0gMDsKfQpmdW5jdGlvbiBTU19NYWtlQ3Vyc29yKGFyZywg
YnRuSWRzKSB7CiAgICBpZiAoZGlzYWJsZUlkcyA9PSAxKSB7CiAgICAgICAgYXJnLnN0eWxlLmN1
cnNvciA9ICJkZWZhdWx0IjsKICAgIH0KICAgIGlmIChkaXNhYmxlSWRzID09IDApIHsKICAgICAg
ICBhcmcuc3R5bGUuY3Vyc29yID0gInBvaW50ZXIiOwogICAgICAgIGlmIChidG5JZHMgPT0gImNv
bnRpbnVlIikgewogICAgICAgICAgICBNTV9zd2FwSW1hZ2UoImNvbnRpbnVlIiwgIiIsICJodHRw
czovL3N0YXRpYy52aXJnaW5hbWVyaWNhLmNvbS9pbWFnZXMvYnRuX0dvT25fcm9sbC5naWYiLCAx
KTsKICAgICAgICB9CiAgICAgICAgaWYgKGJ0bklkcyA9PSAicHJldmlvdXMiKSB7CiAgICAgICAg
ICAgIE1NX3N3YXBJbWFnZSgicHJldmlvdXMiLCAiIiwgImh0dHBzOi8vc3RhdGljLnZpcmdpbmFt
ZXJpY2EuY29tL2ltYWdlcy9idG5fR29CYWNrX3JvbGwuZ2lmIiwgMSk7CiAgICAgICAgfQogICAg
fQp9CmZ1bmN0aW9uIGdldEFuY2hvclhZKFZGX2lkKSB7CiAgICB2YXIgYyA9IGdldEFuY2hvclBv
c2l0aW9uKFZGX2lkKTsKICAgIFgxID0gYy54OwogICAgWTEgPSBjLnk7Cn0KZnVuY3Rpb24gTWFr
ZUN1cnNvcihhcmcpIHsKICAgIGFyZy5zdHlsZS5jdXJzb3IgPSAicG9pbnRlciI7Cn0KZnVuY3Rp
b24gaXNWYWxpZERhdGUoZGF0ZVN0cikgewogICAgdmFyIGJvb2wgPSB0cnVlOwogICAgaWYgKGRh
dGVTdHIgIT0gIiIgJiYgZGF0ZVN0ciAhPSAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIp
IHsKICAgICAgICB2YXIgZGF0ZVBhdCA9IC9eKFxkezEsMn0pKFwvfC0pKFxkezEsMn0pXDIoXGR7
Mn18XGR7NH0pJC87CiAgICAgICAgdmFyIG1hdGNoQXJyYXkgPSBkYXRlU3RyLm1hdGNoKGRhdGVQ
YXQpOwogICAgICAgIGlmIChkYXRlU3RyID09ICJtbS9kZC95eXl5IiB8fCBkYXRlU3RyID09ICIi
KSB7CiAgICAgICAgICAgIGRhdGVTdHIgPSAiIjsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgfQogICAgICAgIGlmIChtYXRjaEFycmF5ICE9IG51bGwpIHsKICAgICAgICAgICAgbW9u
dGggPSBtYXRjaEFycmF5WzFdOwogICAgICAgICAgICBkYXkgPSBtYXRjaEFycmF5WzNdOwogICAg
ICAgICAgICB5ZWFyID0gbWF0Y2hBcnJheVs0XTsKICAgICAgICAgICAgaWYgKG1vbnRoIDwgMSB8
fCBtb250aCA+IDEyKSB7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dGV4dE1lc3NhZ2UiKS5pbm5lckhUTUwgPSAiTW9udGggbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDEy
LiI7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9ybWF0TWVzc2Fn
ZSIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgICAgICAgICAgYm9vbCA9IGZhbHNl
OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChkYXkgPCAxIHx8IGRheSA+IDMxKSB7CiAg
ICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dE1lc3NhZ2UiKS5pbm5l
ckhUTUwgPSAiRGF5IG11c3QgYmUgYmV0d2VlbiAxIGFuZCAzMS4iOwogICAgICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvcm1hdE1lc3NhZ2UiKS5zdHlsZS5kaXNwbGF5ID0g
ImJsb2NrIjsKICAgICAgICAgICAgICAgIGJvb2wgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAg
ICAgICAgICBpZiAoKG1vbnRoID09IDQgfHwgbW9udGggPT0gNiB8fCBtb250aCA9PSA5IHx8IG1v
bnRoID09IDExKSAmJiBkYXkgPT0gMzEpIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXh0TWVzc2FnZSIpLmlubmVySFRNTCA9ICJNb250aCAiICsgbW9udGggKyAi
IGRvZXNuJ3QgaGF2ZSAzMSBkYXlzISI7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZm9ybWF0TWVzc2FnZSIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAg
ICAgICAgICAgYm9vbCA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChtb250
aCA9PSAyKSB7CiAgICAgICAgICAgICAgICB2YXIgaXNsZWFwID0gKHllYXIgJSA0ID09IDAgJiYg
KHllYXIgJSAxMDAgIT0gMCB8fCB5ZWFyICUgNDAwID09IDApKTsKICAgICAgICAgICAgICAgIGlm
IChkYXkgPiAyOSB8fCAoZGF5ID09IDI5ICYmICFpc2xlYXApKSB7CiAgICAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHRNZXNzYWdlIikuaW5uZXJIVE1MID0gIkZl
YnJ1YXJ5ICIgKyB5ZWFyICsgIiBkb2Vzbid0IGhhdmUgIiArIGRheSArICIgZGF5cyEiOwogICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmb3JtYXRNZXNzYWdlIiku
c3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICAgICAgICAgICAgICAgICAgYm9vbCA9IGZhbHNl
OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh5ZWFyLmxl
bmd0aCAhPSA0KSB7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4
dE1lc3NhZ2UiKS5pbm5lckhUTUwgPSAiWWVhciBmb3JtYXQgc2hvdWxkIGJlIGluICd5eXl5Jy4i
OwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvcm1hdE1lc3NhZ2Ui
KS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICAgICAgICAgIGJvb2wgPSBmYWxzZTsK
ICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXh0TWVzc2FnZSIpLmlubmVySFRNTCA9ICJQbGVhc2UgcHJvdmlkZSBwcm9w
ZXIgZGF0ZSBmb3JtYXQgKG1tL2RkL3l5eXkpIjsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImZvcm1hdE1lc3NhZ2UiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAg
ICAgICAgYm9vbCA9IGZhbHNlOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBib29sOwp9CmZ1
bmN0aW9uIGNoZWNrRGF0ZUFuZFN1Ym1pdChkYXRlMSwgZGF0ZTIsIGZybSwgYnV0dG9uTmFtZSwg
c2VhcmNoUGFnZSkgewogICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0aXRsZUJhckRp
diIpKSB7CiAgICAgICAgdXBkYXRlVGl0aWxlQmFyKCJ1cGRhdGVUaXRsZUJhci5kbz9tZXRob2Q9
dXBkYXRlVGl0bGVCYXImYXRIb21lPWF0SG9tZSIsICJ0aXRsZUJhckRpdiIpOwogICAgfQogICAg
aWYgKHNlYXJjaFBhZ2UpIHsKICAgICAgICBpZiAoc2VhcmNoUGFnZSA9PSAidHJ1ZSIpIHsKICAg
ICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXZSVCIpLnN0eWxlLmRpc3Bs
YXkgPT0gImJsb2NrIikgewogICAgICAgICAgICAgICAgZGF0ZTEgPSBkb2N1bWVudC5mbGlnaHRT
ZWFyY2hSVEZvcm0uZWxlbWVudHNbImZsaWdodFNlYXJjaC5kZXBEYXRlLk1NRERZWVlZIl0udmFs
dWU7CiAgICAgICAgICAgICAgICBkYXRlMiA9IGRvY3VtZW50LmZsaWdodFNlYXJjaFJURm9ybS5l
bGVtZW50c1siZmxpZ2h0U2VhcmNoLnJldHVybkRhdGUuTU1ERFlZWVkiXS52YWx1ZTsKICAgICAg
ICAgICAgICAgIGZybSA9IGRvY3VtZW50LmZsaWdodFNlYXJjaFJURm9ybTsKICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2
T1ciKS5zdHlsZS5kaXNwbGF5ID09ICJibG9jayIpIHsKICAgICAgICAgICAgICAgICAgICBkYXRl
MSA9IGRvY3VtZW50LmZsaWdodFNlYXJjaE9XRm9ybS5lbGVtZW50c1siZmxpZ2h0U2VhcmNoLmRl
cERhdGVPVy5NTUREWVlZWSJdLnZhbHVlOwogICAgICAgICAgICAgICAgICAgIGRhdGUyID0gIm1t
L2RkL3l5eXkiOwogICAgICAgICAgICAgICAgICAgIGZybSA9IGRvY3VtZW50LmZsaWdodFNlYXJj
aE9XRm9ybTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZGF0
ZTEgPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hNQ0Zvcm0uZWxlbWVudHNbImZsaWdodFNlYXJjaC5k
ZXBEYXRlTUMuTU1ERFlZWVkiXS52YWx1ZTsKICAgICAgICAgICAgICAgICAgICBkYXRlMiA9IGRv
Y3VtZW50LmZsaWdodFNlYXJjaE1DRm9ybS5lbGVtZW50c1siZmxpZ2h0U2VhcmNoLnJldHVybkRh
dGVNQy5NTUREWVlZWSJdLnZhbHVlOwogICAgICAgICAgICAgICAgICAgIGZybSA9IGRvY3VtZW50
LmZsaWdodFNlYXJjaE1DRm9ybTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAg
ICAgIH0KICAgIH0KICAgIHZhciBkdCA9IChuZXcgRGF0ZSgpLmdldE1vbnRoKCkgKyAxKSArICIv
IiArIG5ldyBEYXRlKCkuZ2V0RGF0ZSgpICsgIi8iICsgKG5ldyBEYXRlKCkuZ2V0WWVhcigpICsg
MTkwMCk7CiAgICB2YXIgZHQxID0gKG5ldyBEYXRlKCkuZ2V0TW9udGgoKSArIDEpICsgIi8iICsg
bmV3IERhdGUoKS5nZXREYXRlKCkgKyAiLyIgKyAobmV3IERhdGUoKS5nZXRZZWFyKCkpOwogICAg
dmFyIGRhdGUxMSA9IG5ldyBEYXRlKGRhdGUxKTsKICAgIHZhciBkYXRlMjIgPSBuZXcgRGF0ZShk
YXRlMik7CiAgICB2YXIgZXhwaXJlZGF5cyA9IDMwOwogICAgdmFyIGV4ZGF0ZSA9IG5ldyBEYXRl
KCk7CiAgICBleGRhdGUuc2V0RGF0ZShleGRhdGUuZ2V0RGF0ZSgpICsgZXhwaXJlZGF5cyk7CiAg
ICBpZiAoZnJtLm5hbWUgPT0gImZsaWdodFNlYXJjaFJURm9ybSIpIHsKICAgICAgICBzZXRDb29r
aWUoIlRUIiwgInJ0IiwgZXhkYXRlKTsKICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKGZybS5uYW1l
ID09ICJmbGlnaHRTZWFyY2hPV0Zvcm0iKSB7CiAgICAgICAgICAgIHNldENvb2tpZSgiVFQiLCAi
b3ciLCBleGRhdGUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNldENvb2tpZSgiVFQi
LCAibWMiLCBleGRhdGUpOwogICAgICAgIH0KICAgIH0KICAgIGlmIChmcm0uYWN0aW9uLmluZGV4
T2YoIlNjaGVkdWxlUmVzdWx0IikgIT0gLTEpIHsKICAgICAgICBmcm0uZWxlbWVudHNbImZsaWdo
dFNlYXJjaC5hZHVsdHMiXS52YWx1ZSA9ICIxIjsKICAgICAgICBmcm0uZWxlbWVudHNbImZsaWdo
dFNlYXJjaC5raWRzIl0udmFsdWUgPSAiMCI7CiAgICB9CiAgICBzZXRDb29raWVzKCk7CiAgICBp
ZiAoaXNWYWxpZERhdGUoZGF0ZTEpICYmIGlzVmFsaWREYXRlKGRhdGUyKSkgewogICAgICAgIGlm
ICgoKChkYXRlMSArICIiKSA9PSAoZHQgKyAiIikgJiYgKGRhdGUyICsgIiIpID09IChkdCArICIi
KSkgfHwgKChkYXRlMSArICIiKSA9PSAoZHQxICsgIiIpICYmIChkYXRlMiArICIiKSA9PSAoZHQx
ICsgIiIpKSkgJiYgKGRhdGUxICsgIiIpICE9ICJtbS9kZC95eXl5IiAmJiAoZGF0ZTEgKyAiIikg
IT0gIiIpIHsKICAgICAgICAgICAgRnJtVG9TdWJtaXQgPSBmcm07CiAgICAgICAgICAgIGJ1dHRv
blVSTCA9IGJ1dHRvbk5hbWU7CiAgICAgICAgICAgIGZsZ01zZyA9IGZhbHNlOwogICAgICAgICAg
ICBpZiAoYXJndW1lbnRzWzVdICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHNhbWVEYXlGbGln
aHRzTWVzc2FnZU9wZW4oImZhbHNlIiwgYXJndW1lbnRzWzVdKTsKICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgIHNhbWVEYXlGbGlnaHRzTWVzc2FnZU9wZW4oImZhbHNlIik7CiAg
ICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoKChkYXRlMSArICIi
KSA9PSAoZGF0ZTIgKyAiIikpICYmIChkYXRlMiArICIiKSAhPSAoZHQgKyAiIikgJiYgKGRhdGUx
ICsgIiIpICE9ICJtbS9kZC95eXl5IiAmJiAoZGF0ZTEgKyAiIikgIT0gIiIpIHsKICAgICAgICAg
ICAgICAgIGZsZ01zZyA9IHRydWU7CiAgICAgICAgICAgICAgICBGcm1Ub1N1Ym1pdCA9IGZybTsK
ICAgICAgICAgICAgICAgIGJ1dHRvblVSTCA9IGJ1dHRvbk5hbWU7CiAgICAgICAgICAgICAgICBp
ZiAoYXJndW1lbnRzWzVdICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICBzYW1lRGF5Rmxp
Z2h0c01lc3NhZ2VPcGVuKCJmYWxzZSIsIGFyZ3VtZW50c1s1XSk7CiAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHNhbWVEYXlGbGlnaHRzTWVzc2FnZU9wZW4oImZh
bHNlIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICBpZiAoKCgoZGF0ZTEgKyAiIikgPT0gKGR0ICsgIiIpICYmIChkYXRlMiArICIiKSAhPSAo
ZHQgKyAiIikpIHx8ICgoZGF0ZTEgKyAiIikgPT0gKGR0MSArICIiKSAmJiAoZGF0ZTIgKyAiIikg
IT0gKGR0MSArICIiKSkpICYmIChkYXRlMSArICIiKSAhPSAibW0vZGQveXl5eSIgJiYgKGRhdGUx
ICsgIiIpICE9ICIiKSB7CiAgICAgICAgICAgICAgICAgICAgRnJtVG9TdWJtaXQgPSBmcm07CiAg
ICAgICAgICAgICAgICAgICAgZmxnTXNnID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgYnV0
dG9uVVJMID0gYnV0dG9uTmFtZTsKICAgICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzWzVd
ICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2FmYXJpWFkoNDUwLCAzNzUs
IDMwMCwgOTApOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHNldFNhZmFyaVhZKDE1MCwgMTAwLCAxNTAsIDkwKTsKICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgc2V0UG9zaXRpb24oYnV0dG9uVVJMLCBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibWVzc2FnZSIpLCBsb2FkWCwgbG9hZFkpOwogICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtZXNzYWdlIikuc3R5bGUubGVmdCA9ICI0NiUi
OwogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtZXNzYWdlIiku
c3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRpbWVQb3BVcCIpLmZvY3VzKCk7CiAgICAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgIGlmICgoKChkYXRlMSArICIiKSAhPSAoZHQgKyAiIikgJiYg
KGRhdGUyICsgIiIpID09IChkdCArICIiKSkgfHwgKChkYXRlMSArICIiKSAhPSAoZHQxICsgIiIp
ICYmIChkYXRlMiArICIiKSA9PSAoZHQxICsgIiIpKSkgJiYgKGRhdGUxICsgIiIpICE9ICJtbS9k
ZC95eXl5IiAmJiAoZGF0ZTEgKyAiIikgIT0gIiIpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
RnJtVG9TdWJtaXQgPSBmcm07CiAgICAgICAgICAgICAgICAgICAgICAgIGZsZ01zZyA9IGZhbHNl
OwogICAgICAgICAgICAgICAgICAgICAgICBidXR0b25VUkwgPSBidXR0b25OYW1lOwogICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzWzVdICE9IG51bGwpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldFNhZmFyaVhZKDQ1MCwgMzc1LCAzMDAsIDkwKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNh
ZmFyaVhZKDQ1MCwgMTAwLCAxNTAsIDkwKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICBzZXRQb3NpdGlvbihidXR0b25VUkwsIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJtZXNzYWdlIiksIGxvYWRYLCBsb2FkWSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtZXNzYWdlIikuc3R5bGUubGVmdCA9ICI0NiUi
OwogICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWVzc2Fn
ZSIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGltZVBvcFVwIikuZm9jdXMoKTsKICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBzaG93V2FpdEltYWdlKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGZybS5zdWJtaXQoKTsKICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KZnVuY3Rp
b24gdXBkYXRlVGl0aWxlQmFyKG15dXJsLCBkaXYpIHsKICAgIHZhciB0aGV0aW1lID0gbmV3IERh
dGUoKTsKICAgIHZhciBkdW1teSA9ICIiICsgdGhldGltZS5nZXRIb3VycygpICsgdGhldGltZS5n
ZXRNaW51dGVzKCkgKyB0aGV0aW1lLmdldFNlY29uZHMoKTsKICAgIG15dXJsID0gbXl1cmwgKyAi
JmR1bW15PSIgKyBkdW1teTsKICAgIGFqYXhEaXYgPSBkaXY7CiAgICB4bWxodHRwLm9wZW4oIlBP
U1QiLCBteXVybCwgdHJ1ZSk7CiAgICB4bWxodHRwLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGhhbmRs
ZVJlc3BvbnNlb2ZUaXRsZUJhcjsKICAgIHhtbGh0dHAuc2VuZCgiIik7Cn0KZnVuY3Rpb24gaGFu
ZGxlUmVzcG9uc2VvZlRpdGxlQmFyKCkgewogICAgU3RyaW5nLnByb3RvdHlwZS50cmltID0gZnVu
Y3Rpb24gKCkgewogICAgICAgIHJldHVybiB0aGlzLnJlcGxhY2UoL15ccyt8XHMrJC8sICIiKTsK
ICAgIH07CiAgICBpZiAoeG1saHR0cC5yZWFkeVN0YXRlID09IDQpIHsKICAgICAgICBpZiAoeG1s
aHR0cC5zdGF0dXMgPT0gMjAwKSB7CiAgICAgICAgICAgIGlmICgoeG1saHR0cC5yZXNwb25zZVRl
eHQpLnRyaW0oKSA9PSAiQWpheFNlc3Npb25UaW1lT3V0IikgewogICAgICAgICAgICAgICAgd2lu
ZG93LmxvY2F0aW9uID0gIi9ob21lLmRvP21ldGhvZD12aXJnaW5BbWVyaWNhJnNlc3Npb25TdGF0
ZT1zZXNzaW9uVGltZU91dCI7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChhamF4RGl2KS5pbm5lckhUTUwgPSB4bWxodHRwLnJlc3Bv
bnNlVGV4dDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiBjaGFuZ2VG
bGlnaHRTdGF0dXNEZXN0aW5hdGlvbkZpZWxkcyh4LCBkZXNWYWx1ZSwgcGFnZUlkKSB7CiAgICB2
YXIgdGVtcDEgPSBkb2N1bWVudC5mbGlnaHRTdGF0dXNGb3JtLmVsZW1lbnRzWyJmbGlnaHRTdGF0
dXMuZGVzdGluYXRpb24iXTsKICAgIHZhciBzZWxJbmQgPSAwOwogICAgaWYgKHggIT0gMCkgewog
ICAgICAgIGZvciAobSA9IHRlbXAxLm9wdGlvbnMubGVuZ3RoIC0gMTsgbSA+IDA7IG0tLSkgewog
ICAgICAgICAgICB0ZW1wMS5vcHRpb25zW21dID0gbnVsbDsKICAgICAgICB9CiAgICB9CiAgICBm
b3IgKGkgPSAwOyBpIDwgZ3JvdXBbeF0ubGVuZ3RoOyBpKyspIHsKICAgICAgICB0ZW1wMS5vcHRp
b25zW2ldID0gbmV3IE9wdGlvbihncm91cFt4XVtpXS50ZXh0LCBncm91cFt4XVtpXS52YWx1ZSk7
CiAgICAgICAgaWYgKGdyb3VwW3hdW2ldLnZhbHVlID09IGRlc1ZhbHVlKSB7CiAgICAgICAgICAg
IHNlbEluZCA9IGk7CiAgICAgICAgfQogICAgfQogICAgaWYgKGRlc1ZhbHVlID09ICJUbyIpIHsK
ICAgICAgICB0ZW1wMS5vcHRpb25zWzBdLnNlbGVjdGVkID0gdHJ1ZTsKICAgIH0gZWxzZSB7CiAg
ICAgICAgdGVtcDEub3B0aW9uc1tzZWxJbmRdLnNlbGVjdGVkID0gdHJ1ZTsKICAgIH0KICAgIGlm
IChwYWdlSWQpIHsKICAgICAgICBmbHRTdHNsb2FkQ29tYm9Cb3goKTsKICAgIH0KfQpmdW5jdGlv
biBmbHRTdHNsb2FkQ29tYm9Cb3goKSB7CiAgICAkKCIjZmx0U3RzRGVzRGl2IGEiKS5yZW1vdmUo
KTsKICAgICQoIiNmbHRTdHNEZXNEaXYgZGl2IikucmVtb3ZlKCk7CiAgICAkKCIjZmx0U3RzRGVz
RGl2IHNlbGVjdCIpLnNlbGVjdGJveCh7CiAgICAgICAgZGVidWc6IGZhbHNlCiAgICB9KTsKfQpm
dW5jdGlvbiBJc051bWVyaWMoc3RyU3RyaW5nKSB7CiAgICB2YXIgc3RyVmFsaWRDaGFycyA9ICIw
MTIzNDU2Nzg5Li0iOwogICAgdmFyIHN0ckNoYXI7CiAgICB2YXIgYmxuUmVzdWx0ID0gdHJ1ZTsK
ICAgIGlmIChzdHJTdHJpbmcubGVuZ3RoID09IDApIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICB9CiAgICBmb3IgKGkgPSAwOyBpIDwgc3RyU3RyaW5nLmxlbmd0aCAmJiBibG5SZXN1bHQgPT0g
dHJ1ZTsgaSsrKSB7CiAgICAgICAgc3RyQ2hhciA9IHN0clN0cmluZy5jaGFyQXQoaSk7CiAgICAg
ICAgaWYgKHN0clZhbGlkQ2hhcnMuaW5kZXhPZihzdHJDaGFyKSA9PSAtMSkgewogICAgICAgICAg
ICBibG5SZXN1bHQgPSBmYWxzZTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gYmxuUmVzdWx0
Owp9CmZ1bmN0aW9uIGdldFhhbmRZKG9FbGVtZW50KSB7CiAgICBpZiAob0VsZW1lbnQpIHsKICAg
ICAgICBpZiAob0VsZW1lbnQgIT0gbnVsbCkgewogICAgICAgICAgICB2YXIgciA9IDA7CiAgICAg
ICAgICAgIHIgPSB7CiAgICAgICAgICAgICAgICB4OiBvRWxlbWVudC5vZmZzZXRMZWZ0LAogICAg
ICAgICAgICAgICAgeTogb0VsZW1lbnQub2Zmc2V0VG9wCiAgICAgICAgICAgIH07CiAgICAgICAg
ICAgIHdoaWxlIChvRWxlbWVudCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICByLnggKz0gb0Vs
ZW1lbnQub2Zmc2V0TGVmdDsKICAgICAgICAgICAgICAgIHIueSArPSBvRWxlbWVudC5vZmZzZXRU
b3A7CiAgICAgICAgICAgICAgICBvRWxlbWVudCA9IG9FbGVtZW50Lm9mZnNldFBhcmVudDsKICAg
ICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICB9CiAgICB9Cn0KZnVuY3Rp
b24gc2V0T2JqT2Zmc2V0KG9FbGVtZW50LCBkaXZPYmosIGxmdERpcywgdG9wRGlzKSB7CiAgICBp
ZiAob0VsZW1lbnQpIHsKICAgICAgICB2YXIgb2Zmc2V0UGFyZW50ID0gb0VsZW1lbnQub2Zmc2V0
UGFyZW50OwogICAgICAgIHZhciBwYXJlbnQgPSBvRWxlbWVudC5wYXJlbnROb2RlOwogICAgICAg
IHZhciByID0gewogICAgICAgICAgICB4OiBvRWxlbWVudC5vZmZzZXRMZWZ0LAogICAgICAgICAg
ICB5OiBvRWxlbWVudC5vZmZzZXRUb3AKICAgICAgICB9OwogICAgICAgIHdoaWxlIChvZmZzZXRQ
YXJlbnQpIHsKICAgICAgICAgICAgci54ICs9IG9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OwogICAg
ICAgICAgICByLnkgKz0gb2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKICAgICAgICAgICAgb2Zmc2V0
UGFyZW50ID0gb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudDsKICAgICAgICB9CiAgICAgICAgZGl2
T2JqLnN0eWxlLmxlZnQgPSAoci54ICsgbGZ0RGlzKSArICJweCI7CiAgICAgICAgZGl2T2JqLnN0
eWxlLnRvcCA9IChyLnkgKyB0b3BEaXMpICsgInB4IjsKICAgIH0KfQpmdW5jdGlvbiBzaG93TG9h
ZGluZyhvRWxlbWVudCkgewogICAgdmFyIGxvYWRpbmdPYmogPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibG9hZGluZ0FuaW1hdGlvbkRpdiIpOwogICAgaWYgKG9FbGVtZW50KSB7CiAgICAgICAg
dmFyIG9mZnNldFBhcmVudCA9IG9FbGVtZW50Lm9mZnNldFBhcmVudDsKICAgICAgICB2YXIgcGFy
ZW50ID0gb0VsZW1lbnQucGFyZW50Tm9kZTsKICAgICAgICB2YXIgciA9IHsKICAgICAgICAgICAg
eDogb0VsZW1lbnQub2Zmc2V0TGVmdCwKICAgICAgICAgICAgeTogb0VsZW1lbnQub2Zmc2V0VG9w
CiAgICAgICAgfTsKICAgICAgICB3aGlsZSAob2Zmc2V0UGFyZW50KSB7CiAgICAgICAgICAgIHIu
eCArPSBvZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKICAgICAgICAgICAgci55ICs9IG9mZnNldFBh
cmVudC5vZmZzZXRUb3A7CiAgICAgICAgICAgIG9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudC5v
ZmZzZXRQYXJlbnQ7CiAgICAgICAgfQogICAgICAgIGxvYWRpbmdPYmouc3R5bGUubGVmdCA9IChy
LnggLSAxMCkgKyAicHgiOwogICAgICAgIGxvYWRpbmdPYmouc3R5bGUudG9wID0gKHIueSAtIDUw
KSArICJweCI7CiAgICB9CiAgICBsb2FkaW5nT2JqLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwp9
CmZ1bmN0aW9uIHNldFBvc2l0aW9uKG9FbGVtZW50LCBkaXZPYmosIGxmdERpcywgdG9wRGlzKSB7
CiAgICBpZiAob0VsZW1lbnQpIHsKICAgICAgICBkaXZPYmouc3R5bGUubGVmdCA9IChnZXRYYW5k
WShvRWxlbWVudCkueCAtIGxmdERpcykgKyAicHgiOwogICAgICAgIGRpdk9iai5zdHlsZS50b3Ag
PSAoZ2V0WGFuZFkob0VsZW1lbnQpLnkgLSB0b3BEaXMpICsgInB4IjsKICAgIH0KfQpmdW5jdGlv
biBzZXRDb29raWVzKCkgewogICAgdmFyIGkgPSAwOwogICAgdmFyIGV4cGlyZWRheXMgPSAzMDsK
ICAgIHZhciBleGRhdGUgPSBuZXcgRGF0ZSgpOwogICAgZXhkYXRlLnNldERhdGUoZXhkYXRlLmdl
dERhdGUoKSArIGV4cGlyZWRheXMpOwogICAgdmFyIG1jRGVwRGF0ZTIgPSAiIjsKICAgIGZvciAo
aiA9IDA7IGogPCBkb2N1bWVudC5mbGlnaHRTZWFyY2hSVEZvcm0uZWxlbWVudHMubGVuZ3RoOyBq
KyspIHsKICAgICAgICB2YXIgb2JqID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNoUlRGb3JtLmVsZW1l
bnRzW2pdOwogICAgICAgIGlmIChvYmoubmFtZSA9PSAiZmxpZ2h0U2VhcmNoLm9yaWdpbiIpIHsK
ICAgICAgICAgICAgc2V0Q29va2llKG9iai5uYW1lLCBlc2NhcGUob2JqLnZhbHVlKSwgZXhkYXRl
KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAob2JqLm5hbWUgPT0gImZsaWdodFNl
YXJjaC5kZXN0aW5hdGlvbiIpIHsKICAgICAgICAgICAgICAgIHNldENvb2tpZShvYmoubmFtZSwg
ZXNjYXBlKG9iai52YWx1ZSksIGV4ZGF0ZSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICBpZiAob2JqLm5hbWUgPT0gImZsaWdodFNlYXJjaC5kZXBEYXRlLk1NRERZWVlZIikg
ewogICAgICAgICAgICAgICAgICAgIHNldENvb2tpZShvYmoubmFtZSwgZXNjYXBlKG9iai52YWx1
ZSksIGV4ZGF0ZSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
IGlmIChvYmoubmFtZSA9PSAiZmxpZ2h0U2VhcmNoLnJldHVybkRhdGUuTU1ERFlZWVkiKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHNldENvb2tpZShvYmoubmFtZSwgZXNjYXBlKG9iai52YWx1
ZSksIGV4ZGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG9iai5uYW1lID09ICJmbGlnaHRTZWFyY2guYWR1bHRzIikgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0Q29va2llKG9iai5uYW1lLCBlc2NhcGUob2JqLnZhbHVl
KSwgZXhkYXRlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChvYmoubmFtZSA9PSAiZmxpZ2h0U2VhcmNoLmtpZHMiKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29va2llKG9iai5uYW1lLCBlc2NhcGUo
b2JqLnZhbHVlKSwgZXhkYXRlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5uYW1lID09ICJmbGlnaHRT
ZWFyY2guaW5mYW50cyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
Q29va2llKG9iai5uYW1lLCBlc2NhcGUob2JqLnZhbHVlKSwgZXhkYXRlKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBmb3IgKGogPSAwOyBqIDwgZG9j
dW1lbnQuZmxpZ2h0U2VhcmNoT1dGb3JtLmVsZW1lbnRzLmxlbmd0aDsgaisrKSB7CiAgICAgICAg
dmFyIG9iaiA9IGRvY3VtZW50LmZsaWdodFNlYXJjaE9XRm9ybS5lbGVtZW50c1tqXTsKICAgICAg
ICBpZiAob2JqLm5hbWUgPT0gImZsaWdodFNlYXJjaC5vcmlnaW4iKSB7CiAgICAgICAgICAgIHNl
dENvb2tpZShvYmoubmFtZSwgZXNjYXBlKG9iai52YWx1ZSksIGV4ZGF0ZSk7CiAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgaWYgKG9iai5uYW1lID09ICJmbGlnaHRTZWFyY2guZGVzdGluYXRp
b24iKSB7CiAgICAgICAgICAgICAgICBzZXRDb29raWUob2JqLm5hbWUsIGVzY2FwZShvYmoudmFs
dWUpLCBleGRhdGUpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKG9i
ai5uYW1lID09ICJmbGlnaHRTZWFyY2guZGVwRGF0ZU9XLk1NRERZWVlZIikgewogICAgICAgICAg
ICAgICAgICAgIHNldENvb2tpZShvYmoubmFtZSwgZXNjYXBlKG9iai52YWx1ZSksIGV4ZGF0ZSk7
CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmIChvYmoubmFt
ZSA9PSAiZmxpZ2h0U2VhcmNoLmFkdWx0cyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2V0
Q29va2llKG9iai5uYW1lLCBlc2NhcGUob2JqLnZhbHVlKSwgZXhkYXRlKTsKICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqLm5hbWUgPT0g
ImZsaWdodFNlYXJjaC5raWRzIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29v
a2llKG9iai5uYW1lLCBlc2NhcGUob2JqLnZhbHVlKSwgZXhkYXRlKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoubmFt
ZSA9PSAiZmxpZ2h0U2VhcmNoLmluZmFudHMiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0Q29va2llKG9iai5uYW1lLCBlc2NhcGUob2JqLnZhbHVlKSwgZXhkYXRlKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAg
IH0KICAgIH0KICAgIGZvciAoaiA9IDA7IGogPCBkb2N1bWVudC5mbGlnaHRTZWFyY2hNQ0Zvcm0u
ZWxlbWVudHMubGVuZ3RoOyBqKyspIHsKICAgICAgICB2YXIgb2JqID0gZG9jdW1lbnQuZmxpZ2h0
U2VhcmNoTUNGb3JtLmVsZW1lbnRzW2pdOwogICAgICAgIGlmIChvYmoubmFtZSA9PSAiZmxpZ2h0
U2VhcmNoLm9yaWdpbiIpIHsKICAgICAgICAgICAgc2V0Q29va2llKG9iai5uYW1lLCBlc2NhcGUo
b2JqLnZhbHVlKSwgZXhkYXRlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAob2Jq
Lm5hbWUgPT0gImZsaWdodFNlYXJjaC5kZXN0aW5hdGlvbiIpIHsKICAgICAgICAgICAgICAgIHNl
dENvb2tpZShvYmoubmFtZSwgZXNjYXBlKG9iai52YWx1ZSksIGV4ZGF0ZSk7CiAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAob2JqLm5hbWUgPT0gImZsaWdodFNlYXJjaC5k
ZXBEYXRlTUMuTU1ERFlZWVkiKSB7CiAgICAgICAgICAgICAgICAgICAgc2V0Q29va2llKG9iai5u
YW1lLCBlc2NhcGUob2JqLnZhbHVlKSwgZXhkYXRlKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5uYW1lID09ICJmbGlnaHRTZWFyY2gub3JpZ2lu
TUMiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNldENvb2tpZShvYmoubmFtZSwgZXNjYXBl
KG9iai52YWx1ZSksIGV4ZGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKG9iai5uYW1lID09ICJmbGlnaHRTZWFyY2guZGVzdGluYXRp
b25NQyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvb2tpZShvYmoubmFtZSwg
ZXNjYXBlKG9iai52YWx1ZSksIGV4ZGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqLm5hbWUgPT0gImZsaWdodFNl
YXJjaC5yZXR1cm5EYXRlTUMuTU1ERFlZWVkiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0Q29va2llKG9iai5uYW1lLCBlc2NhcGUob2JqLnZhbHVlKSwgZXhkYXRlKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG9iai5uYW1lID09ICJmbGlnaHRTZWFyY2guYWR1bHRzIikgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb29raWUob2JqLm5hbWUsIGVzY2FwZShv
YmoudmFsdWUpLCBleGRhdGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoubmFtZSA9PSAi
ZmxpZ2h0U2VhcmNoLmtpZHMiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRDb29raWUob2JqLm5hbWUsIGVzY2FwZShvYmoudmFsdWUpLCBleGRhdGUpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5uYW1lID09ICJmbGlnaHRTZWFyY2guaW5m
YW50cyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRD
b29raWUob2JqLm5hbWUsIGVzY2FwZShvYmoudmFsdWUpLCBleGRhdGUpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9
CmZ1bmN0aW9uIHNldEZsaWdodFN0YXR1c0Nvb2tpZXMoKSB7CiAgICB2YXIgaSA9IDA7CiAgICB2
YXIgZXhwaXJlZGF5cyA9IDMwOwogICAgdmFyIGV4ZGF0ZSA9IG5ldyBEYXRlKCk7CiAgICBleGRh
dGUuc2V0RGF0ZShleGRhdGUuZ2V0RGF0ZSgpICsgZXhwaXJlZGF5cyk7CiAgICB2YXIgbWNEZXBE
YXRlMiA9ICIiOwogICAgZm9yIChqID0gMDsgaiA8IGRvY3VtZW50LmZsaWdodFN0YXR1c0Zvcm0u
ZWxlbWVudHMubGVuZ3RoOyBqKyspIHsKICAgICAgICB2YXIgb2JqID0gZG9jdW1lbnQuZmxpZ2h0
U3RhdHVzRm9ybS5lbGVtZW50c1tqXTsKICAgICAgICBpZiAob2JqLm5hbWUgPT0gImZsaWdodFN0
YXR1cy5mbGlnaHREYXRlIikgewogICAgICAgICAgICBzZXRDb29raWUob2JqLm5hbWUsIGVzY2Fw
ZShvYmouc2VsZWN0ZWRJbmRleCksIGV4ZGF0ZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgaWYgKG9iai5uYW1lID09ICJmbGlnaHRTdGF0dXMuZmxpZ2h0TnVtYmVyIikgewogICAgICAg
ICAgICAgICAgc2V0Q29va2llKG9iai5uYW1lLCBvYmoudmFsdWUsIGV4ZGF0ZSk7CiAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAob2JqLm5hbWUgPT0gImZsaWdodFN0YXR1
cy5vcmlnaW4iKSB7CiAgICAgICAgICAgICAgICAgICAgc2V0Q29va2llKG9iai5uYW1lLCBlc2Nh
cGUob2JqLnZhbHVlKSwgZXhkYXRlKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgaWYgKG9iai5uYW1lID09ICJmbGlnaHRTdGF0dXMuZGVzdGluYXRpb24iKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIHNldENvb2tpZShvYmoubmFtZSwgZXNjYXBlKG9iai52
YWx1ZSksIGV4ZGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CmZ1bmN0aW9uIHNldENvb2tpZUFycmF5KG5h
bWUpIHsKICAgIHRoaXMubGVuZ3RoID0gc2V0Q29va2llQXJyYXkuYXJndW1lbnRzLmxlbmd0aCAt
IDE7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHsKICAgICAgICB0
aGlzW2kgKyAxXSA9IHNldENvb2tpZUFycmF5LmFyZ3VtZW50c1tpICsgMV07CiAgICAgICAgc2V0
Q29va2llKG5hbWUgKyBpLCB0aGlzW2kgKyAxXSwgZXhwZGF0ZSk7CiAgICB9Cn0KZnVuY3Rpb24g
c2V0Q29va2llKG5hbWUsIHZhbHVlLCBleHBpcmVzKSB7CiAgICBpZiAoIWV4cGlyZXMpIHsKICAg
ICAgICBleHBpcmVzID0gbmV3IERhdGUoKTsKICAgIH0KICAgIGRvY3VtZW50LmNvb2tpZSA9IG5h
bWUgKyAiPSIgKyBlc2NhcGUodmFsdWUpICsgIjsgZXhwaXJlcz0iICsgZXhwaXJlcy50b0dNVFN0
cmluZygpICsgIjsgcGF0aD0vIjsKfQpmdW5jdGlvbiBkZWNpc2lvbihtZXNzYWdlLCBzdWJtaXRG
cm0pIHsKICAgIEZybVRvU3VibWl0ID0gc3VibWl0RnJtOwogICAgZGVjaXNpb25ZZXMoKTsKfQpm
dW5jdGlvbiBkZWNpc2lvblllcygpIHsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtZXNz
YWdlU2hvcnRqb3VybmV5Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgIGlmIChmbGdNc2cp
IHsKICAgICAgICBGcm1Ub1N1Ym1pdC5zdWJtaXQoKTsKICAgICAgICBzaG93V2FpdEltYWdlKGJ1
dHRvblVSTCk7CiAgICB9IGVsc2UgewogICAgICAgIHNldFBvc2l0aW9uKGJ1dHRvblVSTCwgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1lc3NhZ2UiKSwgMTUwLCAxMDApOwogICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJtZXNzYWdlIikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAg
ICB9Cn0KZnVuY3Rpb24gZGVjaXNpb25ObyhkaXZJREZvckhpZGUpIHsKICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKGRpdklERm9ySGlkZSkuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKfQpmdW5j
dGlvbiBzaHJ0RnJtU3VibWl0KGRpdklERm9ySGlkZSkgewogICAgRnJtVG9TdWJtaXQuc3VibWl0
KCk7CiAgICBzaG93V2FpdEltYWdlKCk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWVz
c2FnZSIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Cn0KZnVuY3Rpb24gc2FtZURheUZsaWdodHNN
ZXNzYWdlT3BlbihjaGVja0ZsYWcpIHsKICAgIGlmIChjaGVja0ZsYWcgPT0gImZhbHNlIikgewog
ICAgICAgIGlmIChhcmd1bWVudHNbMV0gIT0gbnVsbCkgewogICAgICAgICAgICBzZXRTYWZhcmlY
WSg0MzUsIDM3NSwgMzAwLCA5MCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgc2V0U2Fm
YXJpWFkoMTUwLCAxMDAsIDE1MCwgOTApOwogICAgICAgIH0KICAgICAgICBzZXRQb3NpdGlvbihi
dXR0b25VUkwsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJTYW1lRGF5RmxpZ2h0c01lc3NhZ2VJ
ZCIpLCBsb2FkWCwgbG9hZFkpOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJTYW1l
RGF5RmxpZ2h0c01lc3NhZ2VJZCIpLnN0eWxlLmxlZnQgPSAiNDUlIjsKICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiU2FtZURheUZsaWdodHNNZXNzYWdlSWQiKS5zdHlsZS5kaXNwbGF5
ID0gImJsb2NrIjsKICAgIH0KfQpmdW5jdGlvbiBzYW1lRGF5RmxpZ2h0c01lc3NhZ2VDbG9zZShj
bG9zZVR5cGUpIHsKICAgIGlmIChjbG9zZVR5cGUgPT0gInRydWUiKSB7CiAgICAgICAgaWYgKGZs
Z01zZykgewogICAgICAgICAgICBGcm1Ub1N1Ym1pdC5zdWJtaXQoKTsKICAgICAgICAgICAgaWYg
KGFyZ3VtZW50c1sxXSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBzaG93V2FpdEltYWdlKGJ1
dHRvblVSTCwgYXJndW1lbnRzWzFdKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgIHNob3dXYWl0SW1hZ2UoYnV0dG9uVVJMKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJTYW1lRGF5RmxpZ2h0c01l
c3NhZ2VJZCIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgIGlmIChhcmd1bWVu
dHNbMV0gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgc2V0U2FmYXJpWFkoNDM1LCAzNzUsIDMw
MCwgOTApOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgc2V0U2FmYXJpWFko
MTUwLCAxMDAsIDE1MCwgOTApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChkb2N1bWVu
dC5mbGlnaHRTZWFyY2hGb3JtICYmIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidG5Nb2RpZnlT
ZWFyY2giKSkgewogICAgICAgICAgICAgICAgJCgiI21lc3NhZ2UiKS5jc3MoewogICAgICAgICAg
ICAgICAgICAgIHRvcDogKCQoIiNidG5Nb2RpZnlTZWFyY2giKS5vZmZzZXQoKS50b3ApICsgInB4
IiwKICAgICAgICAgICAgICAgICAgICBsZWZ0OiAoJCgiI2J0bk1vZGlmeVNlYXJjaCIpLm9mZnNl
dCgpLmxlZnQgLSA2MCkgKyAicHgiCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgIHNldFBvc2l0aW9uKGJ1dHRvblVSTCwgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoIm1lc3NhZ2UiKSwgbG9hZFgsIGxvYWRZKTsKICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJtZXNzYWdlIikuc3R5bGUubGVmdCA9ICI0NSUiOwogICAg
ICAgICAgICB9CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtZXNzYWdlIiku
c3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICAgICAgfQogICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJTYW1lRGF5RmxpZ2h0c01lc3NhZ2VJZCIpLnN0eWxlLmRpc3BsYXkgPSAibm9u
ZSI7CiAgICB9IGVsc2UgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtZXNzYWdl
Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiU2FtZURheUZsaWdodHNNZXNzYWdlSWQiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAg
fQp9CmZ1bmN0aW9uIGNoZWNrRmF4KGZheFR5cGUsIGV2ZW50KSB7CiAgICB2YXIgZmF4Tm8gPSAi
IjsKICAgIHZhciBrZXkgPSAiIjsKICAgIHZhciB0eXBlID0gZmFsc2U7CiAgICB0eXBlID0gQ2hl
Y2tOdW1lcmljKGV2ZW50KTsKICAgIGlmICh0eXBlKSB7CiAgICAgICAgZm9yIChqID0gMDsgaiA8
IGRvY3VtZW50LnJlY2VpcHRGb3JtLmVsZW1lbnRzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAg
IGlmIChkb2N1bWVudC5yZWNlaXB0Rm9ybS5lbGVtZW50c1tqXS5uYW1lID09IGZheFR5cGUpIHsK
ICAgICAgICAgICAgICAgIGZheE5vID0gZG9jdW1lbnQucmVjZWlwdEZvcm0uZWxlbWVudHNbal0u
dmFsdWU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAg
ICAgICB2YXIgaW5kZXggPSBqOwogICAgICAgIGlmICgoZmF4Tm8ubGVuZ3RoID09IDMpIHx8IChm
YXhOby5sZW5ndGggPT0gNykpIHsKICAgICAgICAgICAgdmFyIHNlcGFyYXRvciA9ICItIjsKICAg
ICAgICAgICAgZmF4Tm8gPSBmYXhOby5jb25jYXQoc2VwYXJhdG9yKTsKICAgICAgICAgICAgZG9j
dW1lbnQucmVjZWlwdEZvcm0uZWxlbWVudHNbaW5kZXhdLnZhbHVlID0gZmF4Tm87CiAgICAgICAg
fQogICAgICAgIGlmICgoZmF4Tm8ubGVuZ3RoID09IDEzKSAmJiAoZmF4Tm8uc2VhcmNoKC8tLykg
Pj0gMCkpIHsKICAgICAgICAgICAgdmFyIHN0cjEgPSBmYXhOby5zbGljZSgwLCAzKTsKICAgICAg
ICAgICAgdmFyIHN0cjIgPSBmYXhOby5zbGljZSg0LCA3KTsKICAgICAgICAgICAgdmFyIHN0cjMg
PSBmYXhOby5zbGljZSg4KTsKICAgICAgICAgICAgZmF4Tm8gPSBzdHIxICsgc3RyMiArIHN0cjM7
CiAgICAgICAgICAgIGRvY3VtZW50LnJlY2VpcHRGb3JtLmVsZW1lbnRzW2luZGV4XS52YWx1ZSA9
IGZheE5vOwogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiBDaGVja051bWVyaWMoZSkgewogICAg
dmFyIEtleUlEID0gKHdpbmRvdy5ldmVudCkgPyBldmVudC5rZXlDb2RlIDogZS5rZXlDb2RlOwog
ICAgaWYgKEtleUlEID09IDgpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9IGVsc2Ugewog
ICAgICAgIHJldHVybiB0cnVlOwogICAgfQp9CmZ1bmN0aW9uIGNoYW5nZUltYWdlT25Nb3VzZU92
ZXJPck91dChvYmosIElNRykgewogICAgb2JqLnNyYyA9IElNRzsKICAgIG9iai5zdHlsZS5jdXJz
b3IgPSAicG9pbnRlciI7Cn0KZnVuY3Rpb24gZGl2aGlkZUZ1bmN0aW9uVHJhdmVsMihkaXZJRCwg
Y2xpY2tlZE9iamVjdCwgdG9DaGFuZ2VJTUcsIHRvQ2hhbmdlSU1HQ29sKSB7CiAgICB2YXIgeCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRpdklEKTsKICAgIGlmICh4LnN0eWxlLmRpc3BsYXkg
PT0gImJsb2NrIikgewogICAgICAgIHguc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICBj
bGlja2VkT2JqZWN0LnNyYyA9IHRvQ2hhbmdlSU1HQ29sOwogICAgfSBlbHNlIHsKICAgICAgICBp
ZiAoeC5zdHlsZS5kaXNwbGF5ID09ICJub25lIiB8fCB4LnN0eWxlLmRpc3BsYXkgPT0gIiIpIHsK
ICAgICAgICAgICAgeC5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICAgICAgY2xpY2tl
ZE9iamVjdC5zcmMgPSB0b0NoYW5nZUlNRzsKICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gdmll
d0ZhcmUodmlld0ZhcmVfaWQpIHsKICAgIHZhciB4ID0gIiI7CiAgICBnZXRBbmNob3JYWSh2aWV3
RmFyZV9pZCk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlld0ZhcmUiKS5zdHlsZS5s
ZWZ0ID0gWDEgLSA0MTI7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlld0ZhcmUiKS5z
dHlsZS50b3AgPSBZMSArIDE1OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZpZXdGYXJl
Iikuc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInZpZXdGYXJlIikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Cn0KZnVuY3Rpb24gQ3JlYXRl
UHJvZmlsZUZvcm0oKSB7CiAgICBkb2N1bWVudC5jcmVhdGVQcm9maWxlRm9ybS5tZXRob2QudmFs
dWUgPSAiY3JlYXRlUHJvZmlsZSI7CiAgICBkb2N1bWVudC5jcmVhdGVQcm9maWxlRm9ybS5zdWJt
aXQoKTsKfQpmdW5jdGlvbiBmYXJlUnVsZXNEZXNjcmlwdGlvblBvcFVwKGZhcmVCYXNlQ29kZSwg
ZmFyZUJhc2VDb2RlUywgcm91dGUsIHJvdXRlUywgY2xpY2tPYmpJZCwgcG5yTnVtYmVyKSB7CiAg
ICBzaG93V2FpdEltYWdlKCk7CiAgICB2YXIgdGhpc1hvZmZzZXQgPSAwOwogICAgdmFyIHRoaXNZ
b2Zmc2V0ID0gMDsKICAgIHZhciBVUkwgPSAiZmFyZVJ1bGVEZXNjcmlwdGlvbi5kbz9tZXRob2Q9
ZmFyZVJ1bGVEZXNjcmlwdGlvbiZmYXJlQmFzZUNvZGU9IiArIGZhcmVCYXNlQ29kZSArICImZmFy
ZUJhc2VDb2RlUz0iICsgZmFyZUJhc2VDb2RlUyArICImcm91dGU9IiArIHJvdXRlICsgIiZyb3V0
ZVM9IiArIHJvdXRlUzsKICAgIGlmIChwbnJOdW1iZXIpIHsKICAgICAgICBVUkwgPSBVUkwgKyAi
JnBuck51bWJlcj0iICsgcG5yTnVtYmVyOwogICAgfQogICAgdmFyIHhtbEh0dHAgPSAkLmFqYXgo
ewogICAgICAgIHR5cGU6ICJHRVQiLAogICAgICAgIHVybDogVVJMLAogICAgICAgIGRhdGFUeXBl
OiAiaHRtbCIsCiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGh0bWwpIHsKICAgICAgICAgICAg
JCh4bWxIdHRwLnJlc3BvbnNlVGV4dCkuZmluZCgiI2ZhcmVSdWxlc1RleHQiKS5odG1sKCk7CiAg
ICAgICAgICAgICQoIiNwb3B1cE1zZ0FyZWEiKS5odG1sKCQoeG1sSHR0cC5yZXNwb25zZVRleHQp
LmZpbmQoIiNmYXJlUnVsZXNUZXh0IikuaHRtbCgpKTsKICAgICAgICAgICAgJCgiI3BvcHVwTXNn
QXJlYSIpLmZpbmQoInRhYmxlIikud2lkdGgoNTI1KTsKICAgICAgICAgICAgJCgiI0FjY2VwdElk
Iikuc2hvdygpOwogICAgICAgICAgICAkKCIjcG9wdXBUaXRsZSIpLmh0bWwoIkZhcmUgUnVsZXMi
KTsKICAgICAgICAgICAgJCgiI3BvcHVwVGl0bGUiKS5odG1sKCJGYXJlIFJ1bGVzIik7CiAgICAg
ICAgICAgICQoIiNwb3B1cFRhYmxlIikud2lkdGgoNTI1KTsKICAgICAgICAgICAgJCgiI3BvcHVw
RnJhbWUiKS53aWR0aCg1MjUpOwogICAgICAgICAgICAkKCIjcG9wdXBGcmFtZSIpLmhlaWdodCgk
KCIjcG9wdXBJZCIpLmhlaWdodCgpKTsKICAgICAgICAgICAgaWYgKGNsaWNrT2JqSWQuaW5kZXhP
ZigiZmZSZXZpZXdGYXJlUnVsZXMiKSAhPSAtMSkgewogICAgICAgICAgICAgICAgdGhpc1hvZmZz
ZXQgPSAtMzUwOwogICAgICAgICAgICAgICAgdGhpc1lvZmZzZXQgPSAtMjAwOwogICAgICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZhcmVSdWxlc0JvZHlUYWJsZSIpLnN0eWxl
LndpZHRoID0gIjQ1MCI7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
ZmFyZVJ1bGVzQm9keVRhYmxlIikuc3R5bGUubWFyZ2luTGVmdCA9ICIwcHgiOwogICAgICAgICAg
ICB9CiAgICAgICAgICAgICQoIiNwb3B1cElkIikuY3NzKHsKICAgICAgICAgICAgICAgIHRvcDog
KCQoIiMiICsgY2xpY2tPYmpJZCkub2Zmc2V0KCkudG9wIC0gKCQoIiNwb3B1cElkIikuaGVpZ2h0
KCkpIC0gdGhpc1lvZmZzZXQpICsgInB4IiwKICAgICAgICAgICAgICAgIGxlZnQ6ICgkKCIjIiAr
IGNsaWNrT2JqSWQpLm9mZnNldCgpLmxlZnQgLSAoJCgiI3BvcHVwSWQiKS53aWR0aCgpIC8gMikg
LSB0aGlzWG9mZnNldCkgKyAicHgiCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkKCIjcG9w
dXBJZCIpLnNob3coKTsKICAgICAgICAgICAgY2xvc2VXYWl0SW1hZ2UoKTsKICAgICAgICB9CiAg
ICB9KTsKfQpmdW5jdGlvbiBjYWxsRmFyZVJ1bGVzRGVzY3JpcHRpb24oZmFyZUJhc2VDb2RlLCBm
YXJlQmFzZUNvZGVTLCByb3V0ZSwgcm91dGVTLCBwc0RpdiwgYWN0RGl2KSB7CiAgICBwb3NpdGlv
bkRpdkZhcmUgPSBwc0RpdjsKICAgIGFjdHVhbERpdiA9IGFjdERpdjsKICAgIE5ld015VXJsID0g
ImZhcmVSdWxlRGVzY3JpcHRpb24uZG8/bWV0aG9kPWZhcmVSdWxlRGVzY3JpcHRpb24mZmFyZUJh
c2VDb2RlPSIgKyBmYXJlQmFzZUNvZGUgKyAiJmZhcmVCYXNlQ29kZVM9IiArIGZhcmVCYXNlQ29k
ZVMgKyAiJnJvdXRlPSIgKyByb3V0ZSArICImcm91dGVTPSIgKyByb3V0ZVM7CiAgICBGYXJlUnVs
ZXNBamF4KE5ld015VXJsLCAidmlld0ZhcmVSdWxlRGVzIik7Cn0KZnVuY3Rpb24gZGlzYWJsZVRv
dGFscGFnZSgpIHsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXNhYmxlVG90YWxQYWdl
Iikuc3R5bGUudG9wID0gMDsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXNhYmxlVG90
YWxQYWdlIikuc3R5bGUubGVmdCA9IDA7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGlz
YWJsZVRvdGFsUGFnZSIpLnN0eWxlLmhlaWdodCA9IGdldFhhbmRZKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJDb250YWluZXJGb290ZXIiKSkueTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJkaXNhYmxlVG90YWxQYWdlIikuc3R5bGUud2lkdGggPSA5NTA7CiAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZGlzYWJsZVRvdGFsUGFnZSIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwp9
CmZ1bmN0aW9uIGVuYWJsZVRvdGFsUGFnZSgpIHsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJkaXNhYmxlVG90YWxQYWdlIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKfQp2YXIgRmFyZVJ1
bGVzWG1saHR0cCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwp2YXIgRmFyZVJ1bGVzQWpheERpdiA9
IG51bGw7CgpmdW5jdGlvbiBGYXJlUnVsZXNBamF4KG15dXJsMiwgZGl2KSB7CiAgICB2YXIgdGhl
dGltZTEgPSBuZXcgRGF0ZSgpOwogICAgdmFyIGR1bW15ID0gIiIgKyB0aGV0aW1lMS5nZXRIb3Vy
cygpICsgdGhldGltZTEuZ2V0TWludXRlcygpICsgdGhldGltZTEuZ2V0U2Vjb25kcygpOwogICAg
bXl1cmwyID0gbXl1cmwyICsgIiZkdW1teT0iICsgZHVtbXk7CiAgICBGYXJlUnVsZXNBamF4RGl2
ID0gZGl2OwogICAgRmFyZVJ1bGVzWG1saHR0cC5vcGVuKCJHRVQiLCBteXVybDIsIHRydWUpOwog
ICAgRmFyZVJ1bGVzWG1saHR0cC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBoYW5kbGVSZXNwb25zZUZh
cmVSdWxlczsKICAgIEZhcmVSdWxlc1htbGh0dHAuc2VuZChudWxsKTsKfQpmdW5jdGlvbiBoYW5k
bGVSZXNwb25zZUZhcmVSdWxlcygpIHsKICAgIGlmIChGYXJlUnVsZXNYbWxodHRwLnJlYWR5U3Rh
dGUgPT0gNCkgewogICAgICAgIGlmIChGYXJlUnVsZXNYbWxodHRwLnN0YXR1cyA9PSAyMDApIHsK
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocG9zaXRpb25EaXZGYXJlKS5zdHls
ZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICAgICAgaWYgKHBvc2l0aW9uRGl2RmFyZSA9PSAi
dmlld0ZhcmVSdWxlRGl2IikgewogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInZpZXdGYXJlUnVsZUlubmVyRGl2IikuaW5uZXJIVE1MID0gRmFyZVJ1bGVzWG1saHR0cC5y
ZXNwb25zZVRleHQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHBvc2l0aW9uRGl2RmFy
ZSA9PSAidmlld0ZhcmVSdWxlRGVzVCIpIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ2aWV3RmFyZVJ1bGVEZXNJbm5lclQiKS5pbm5lckhUTUwgPSBGYXJlUnVsZXNY
bWxodHRwLnJlc3BvbnNlVGV4dDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocG9zaXRp
b25EaXZGYXJlID09ICJ2aWV3RmFyZVJ1bGVEZXNSIikgewogICAgICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInZpZXdGYXJlUnVsZURlc0lubmVyUiIpLmlubmVySFRNTCA9IEZh
cmVSdWxlc1htbGh0dHAucmVzcG9uc2VUZXh0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlm
IChwb3NpdGlvbkRpdkZhcmUgPT0gInZpZXdGYXJlUnVsZURlc0IiKSB7CiAgICAgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlld0ZhcmVSdWxlRGVzSW5uZXJCIikuaW5uZXJI
VE1MID0gRmFyZVJ1bGVzWG1saHR0cC5yZXNwb25zZVRleHQ7CiAgICAgICAgICAgIH0KICAgICAg
ICAgICAgaWYgKHBvc2l0aW9uRGl2RmFyZSA9PSAidmlld0ZhcmVSdWxlRGVzVEIiKSB7CiAgICAg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlld0ZhcmVSdWxlRGVzSW5uZXJU
QiIpLmlubmVySFRNTCA9IEZhcmVSdWxlc1htbGh0dHAucmVzcG9uc2VUZXh0OwogICAgICAgICAg
ICB9CiAgICAgICAgICAgIGlmIChwb3NpdGlvbkRpdkZhcmUgPT0gInZpZXdGYXJlUnVsZURlc1RC
UyIpIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWV3RmFyZVJ1
bGVEZXNJbm5lclRCUyIpLmlubmVySFRNTCA9IEZhcmVSdWxlc1htbGh0dHAucmVzcG9uc2VUZXh0
OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChkb2N1bWVudC5hbGwpIHsKICAgICAgICAg
ICAgICAgIGlmIChhY3R1YWxEaXYgIT0gImZhcmVSdWxlRGVzY3JpcHRpb25fY2FuY2VsIiAmJiBh
Y3R1YWxEaXYgIT0gImZhcmVSdWxlRGVzY3JpcHRpb25fUiIpIHsKICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChwb3NpdGlvbkRpdkZhcmUpLnN0eWxlLmxlZnQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChhY3R1YWxEaXYpLm9mZnNldExlZnQgLSAzMDA7CiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKG5hdmlnYXRvci51c2Vy
QWdlbnQuaW5kZXhPZigiU2FmYXJpIikgIT0gLTEpIHsKICAgICAgICAgICAgICAgIGlmIChhY3R1
YWxEaXYgIT0gImZhcmVSdWxlRGVzY3JpcHRpb25fY2FuY2VsIikgewogICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHBvc2l0aW9uRGl2RmFyZSkuc3R5bGUubGVmdCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFjdHVhbERpdikub2Zmc2V0TGVmdCAtIDMwMDsKICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgcG9zeCA9IDA7CiAg
ICAgICAgICAgIHZhciBwb3N5ID0gMDsKICAgICAgICAgICAgdmFyIHhPZmZzZXQgPSAwOwogICAg
ICAgICAgICB2YXIgeU9mZnNldCA9IDA7CiAgICAgICAgICAgIHZhciBvYmogPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChhY3R1YWxEaXYpOwogICAgICAgICAgICBpZiAob2JqLm9mZnNldFBhcmVu
dCkgewogICAgICAgICAgICAgICAgd2hpbGUgKG9iai5vZmZzZXRQYXJlbnQpIHsKICAgICAgICAg
ICAgICAgICAgICBwb3N4ICs9IG9iai5vZmZzZXRMZWZ0OwogICAgICAgICAgICAgICAgICAgIHBv
c3kgKz0gb2JqLm9mZnNldFRvcDsKICAgICAgICAgICAgICAgICAgICBvYmogPSBvYmoub2Zmc2V0
UGFyZW50OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgaWYgKG9iai54KSB7CiAgICAgICAgICAgICAgICAgICAgcG9zeCArPSBvYmoueDsKICAg
ICAgICAgICAgICAgICAgICBwb3N5ICs9IG9iai55OwogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICB9CiAgICAgICAgICAgIHhPZmZzZXQgPSAtMzAwOwogICAgICAgICAgICB5T2Zmc2V0ID0g
MDsKICAgICAgICAgICAgaWYgKGFjdHVhbERpdi5pbmRleE9mKCJ0d28iKSAhPSAtMSB8fCBhY3R1
YWxEaXYuaW5kZXhPZigibWlkIikgIT0gLTEpIHsKICAgICAgICAgICAgICAgIHlPZmZzZXQgPSAt
MjAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChhY3R1YWxEaXYuaW5kZXhPZigidHdv
IikgIT0gLTEgJiYgaXNQQ0lFNiA9PSAxKSB7CiAgICAgICAgICAgICAgICB5T2Zmc2V0ID0gLTIw
MDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYWN0dWFsRGl2LmluZGV4T2YoInR3byIp
ICE9IC0xICYmIGlzRkYgPT0gMSkgewogICAgICAgICAgICAgICAgeU9mZnNldCA9IC0yNTA7CiAg
ICAgICAgICAgIH0KICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocG9zaXRpb25E
aXZGYXJlKS5zdHlsZS5sZWZ0ID0gKHBvc3ggKyB4T2Zmc2V0KTsKICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQocG9zaXRpb25EaXZGYXJlKS5zdHlsZS50b3AgPSAocG9zeSArIHlP
ZmZzZXQpOwogICAgICAgICAgICBpc1Njcm9sbCA9ICJObyI7CiAgICAgICAgfQogICAgfQp9CnZh
ciB2aXNpb24gPSAiIjsKdmFyIHBlb3BsZSA9ICIiOwp2YXIgcHJlc3MgPSAiIjsKdmFyIG5hdnRo
aXNpZCA9ICIiOwoKZnVuY3Rpb24gY2hhbmdlTmF2VGl0bGVCYXJJbWFnZSgpIHsKICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJWaXNpb24iKS5zcmMgPSAiaHR0cHM6Ly9zdGF0aWMudmlyZ2lu
YW1lcmljYS5jb20vaW1hZ2VzL2J0bl93aGF0X3dlX2Fib3V0X29mZi5naWYiOwogICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoIlBlb3BsZSIpLnNyYyA9ICJodHRwczovL3N0YXRpYy52aXJnaW5h
bWVyaWNhLmNvbS9pbWFnZXMvYnRuX3Blb3BsZV9vZmYuZ2lmIjsKICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJQcmVzcyIpLnNyYyA9ICJodHRwczovL3N0YXRpYy52aXJnaW5hbWVyaWNhLmNv
bS9pbWFnZXMvYnRuX3ByZXNzX29mZi5naWYiOwp9CmZ1bmN0aW9uIG5hdm1vdXNlb3ZlcihpbWdD
dXJyT2JqLCB0aGlzaWQpIHsKICAgIGlmICh0aGlzaWQgPT0gIlZpc2lvbiIpIHsKICAgICAgICBp
ZiAodmlzaW9uID09ICIiKSB7CiAgICAgICAgICAgIE1ha2VDdXJzb3IoaW1nQ3Vyck9iaik7CiAg
ICAgICAgICAgIE1NX3N3YXBJbWFnZSgiVmlzaW9uIiwgIiIsICJodHRwczovL3N0YXRpYy52aXJn
aW5hbWVyaWNhLmNvbS9pbWFnZXMvYnRuX3doYXRfd2VfYWJvdXRfb24uZ2lmIiwgMSk7CiAgICAg
ICAgfQogICAgfQogICAgaWYgKHRoaXNpZCA9PSAiUGVvcGxlIikgewogICAgICAgIGlmIChwZW9w
bGUgPT0gIiIpIHsKICAgICAgICAgICAgTWFrZUN1cnNvcihpbWdDdXJyT2JqKTsKICAgICAgICAg
ICAgTU1fc3dhcEltYWdlKCJQZW9wbGUiLCAiIiwgImh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJp
Y2EuY29tL2ltYWdlcy9idG5fcGVvcGxlX29uLmdpZiIsIDEpOwogICAgICAgIH0KICAgIH0KICAg
IGlmICh0aGlzaWQgPT0gIlByZXNzIikgewogICAgICAgIGlmIChwcmVzcyA9PSAiIikgewogICAg
ICAgICAgICBNYWtlQ3Vyc29yKGltZ0N1cnJPYmopOwogICAgICAgICAgICBNTV9zd2FwSW1hZ2Uo
IlByZXNzIiwgIiIsICJodHRwczovL3N0YXRpYy52aXJnaW5hbWVyaWNhLmNvbS9pbWFnZXMvYnRu
X3ByZXNzX29uLmdpZiIsIDEpOwogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiBjYWxsTWVldFZh
UGFnZXModGhpc2lkKSB7CiAgICBuYXZ0aGlzaWQgPSB0aGlzaWQ7CiAgICBkb2N1bWVudC5NZWV0
VmFGb3JtLm1ldGhvZC52YWx1ZSA9ICJzaG93TWVldFZhIjsKICAgIGlmICh0aGlzaWQgPT0gIlZp
c2lvbiIpIHsKICAgICAgICBpZiAodmlzaW9uID09ICIiKSB7CiAgICAgICAgICAgIGRvY3VtZW50
Lk1lZXRWYUZvcm0uTmF2Q2hJbWFnZS52YWx1ZSA9ICJWaXNpb24iOwogICAgICAgICAgICBkb2N1
bWVudC5NZWV0VmFGb3JtLmFjdGlvbiA9ICJtZWV0VmEuZG8iOwogICAgICAgIH0KICAgIH0KICAg
IGlmICh0aGlzaWQgPT0gIlBlb3BsZSIpIHsKICAgICAgICBpZiAocGVvcGxlID09ICIiKSB7CiAg
ICAgICAgICAgIGRvY3VtZW50Lk1lZXRWYUZvcm0uTmF2Q2hJbWFnZS52YWx1ZSA9ICJQZW9wbGUi
OwogICAgICAgICAgICBkb2N1bWVudC5NZWV0VmFGb3JtLmFjdGlvbiA9ICJtZWV0VmFUZWFtLmRv
IjsKICAgICAgICB9CiAgICB9CiAgICBpZiAodGhpc2lkID09ICJQZW9wbGUxIikgewogICAgICAg
IGlmIChwZW9wbGUgPT0gIiIpIHsKICAgICAgICAgICAgZG9jdW1lbnQuTWVldFZhRm9ybS5OYXZD
aEltYWdlLnZhbHVlID0gIlBlb3BsZSI7CiAgICAgICAgICAgIGRvY3VtZW50Lk1lZXRWYUZvcm0u
YWN0aW9uID0gIm1lZXRWYVRlYW0xLmRvIjsKICAgICAgICB9CiAgICB9CiAgICBpZiAodGhpc2lk
ID09ICJQZW9wbGUyIikgewogICAgICAgIGlmIChwZW9wbGUgPT0gIiIpIHsKICAgICAgICAgICAg
ZG9jdW1lbnQuTWVldFZhRm9ybS5OYXZDaEltYWdlLnZhbHVlID0gIlBlb3BsZSI7CiAgICAgICAg
ICAgIGRvY3VtZW50Lk1lZXRWYUZvcm0uYWN0aW9uID0gIm1lZXRWYVRlYW0yLmRvIjsKICAgICAg
ICB9CiAgICB9CiAgICBpZiAodGhpc2lkID09ICJQZW9wbGUzIikgewogICAgICAgIGlmIChwZW9w
bGUgPT0gIiIpIHsKICAgICAgICAgICAgZG9jdW1lbnQuTWVldFZhRm9ybS5OYXZDaEltYWdlLnZh
bHVlID0gIlBlb3BsZSI7CiAgICAgICAgICAgIGRvY3VtZW50Lk1lZXRWYUZvcm0uYWN0aW9uID0g
Im1lZXRWYVRlYW0zLmRvIjsKICAgICAgICB9CiAgICB9CiAgICBpZiAodGhpc2lkID09ICJQZW9w
bGU0IikgewogICAgICAgIGlmIChwZW9wbGUgPT0gIiIpIHsKICAgICAgICAgICAgZG9jdW1lbnQu
TWVldFZhRm9ybS5OYXZDaEltYWdlLnZhbHVlID0gIlBlb3BsZSI7CiAgICAgICAgICAgIGRvY3Vt
ZW50Lk1lZXRWYUZvcm0uYWN0aW9uID0gIm1lZXRWYVRlYW00LmRvIjsKICAgICAgICB9CiAgICB9
CiAgICBpZiAodGhpc2lkID09ICJQZW9wbGU1IikgewogICAgICAgIGlmIChwZW9wbGUgPT0gIiIp
IHsKICAgICAgICAgICAgZG9jdW1lbnQuTWVldFZhRm9ybS5OYXZDaEltYWdlLnZhbHVlID0gIlBl
b3BsZSI7CiAgICAgICAgICAgIGRvY3VtZW50Lk1lZXRWYUZvcm0uYWN0aW9uID0gIm1lZXRWYVRl
YW01LmRvIjsKICAgICAgICB9CiAgICB9CiAgICBpZiAodGhpc2lkID09ICJQZW9wbGU2Iikgewog
ICAgICAgIGlmIChwZW9wbGUgPT0gIiIpIHsKICAgICAgICAgICAgZG9jdW1lbnQuTWVldFZhRm9y
bS5OYXZDaEltYWdlLnZhbHVlID0gIlBlb3BsZSI7CiAgICAgICAgICAgIGRvY3VtZW50Lk1lZXRW
YUZvcm0uYWN0aW9uID0gIm1lZXRWYVRlYW02LmRvIjsKICAgICAgICB9CiAgICB9CiAgICBpZiAo
dGhpc2lkID09ICJQZW9wbGU3IikgewogICAgICAgIGlmIChwZW9wbGUgPT0gIiIpIHsKICAgICAg
ICAgICAgZG9jdW1lbnQuTWVldFZhRm9ybS5OYXZDaEltYWdlLnZhbHVlID0gIlBlb3BsZSI7CiAg
ICAgICAgICAgIGRvY3VtZW50Lk1lZXRWYUZvcm0uYWN0aW9uID0gIm1lZXRWYVRlYW03LmRvIjsK
ICAgICAgICB9CiAgICB9CiAgICBpZiAodGhpc2lkID09ICJQZW9wbGU4IikgewogICAgICAgIGlm
IChwZW9wbGUgPT0gIiIpIHsKICAgICAgICAgICAgZG9jdW1lbnQuTWVldFZhRm9ybS5OYXZDaElt
YWdlLnZhbHVlID0gIlBlb3BsZSI7CiAgICAgICAgICAgIGRvY3VtZW50Lk1lZXRWYUZvcm0uYWN0
aW9uID0gIm1lZXRWYVRlYW04LmRvIjsKICAgICAgICB9CiAgICB9CiAgICBpZiAodGhpc2lkID09
ICJQZW9wbGU5IikgewogICAgICAgIGlmIChwZW9wbGUgPT0gIiIpIHsKICAgICAgICAgICAgZG9j
dW1lbnQuTWVldFZhRm9ybS5OYXZDaEltYWdlLnZhbHVlID0gIlBlb3BsZSI7CiAgICAgICAgICAg
IGRvY3VtZW50Lk1lZXRWYUZvcm0uYWN0aW9uID0gIm1lZXRWYVRlYW05LmRvIjsKICAgICAgICB9
CiAgICB9CiAgICBpZiAodGhpc2lkID09ICJQZW9wbGUxMCIpIHsKICAgICAgICBpZiAocGVvcGxl
ID09ICIiKSB7CiAgICAgICAgICAgIGRvY3VtZW50Lk1lZXRWYUZvcm0uTmF2Q2hJbWFnZS52YWx1
ZSA9ICJQZW9wbGUiOwogICAgICAgICAgICBkb2N1bWVudC5NZWV0VmFGb3JtLmFjdGlvbiA9ICJt
ZWV0VmFUZWFtMTAuZG8iOwogICAgICAgIH0KICAgIH0KICAgIGlmICh0aGlzaWQgPT0gIlBlb3Bs
ZTExIikgewogICAgICAgIGlmIChwZW9wbGUgPT0gIiIpIHsKICAgICAgICAgICAgZG9jdW1lbnQu
TWVldFZhRm9ybS5OYXZDaEltYWdlLnZhbHVlID0gIlBlb3BsZSI7CiAgICAgICAgICAgIGRvY3Vt
ZW50Lk1lZXRWYUZvcm0uYWN0aW9uID0gIm1lZXRWYVRlYW0xMS5kbyI7CiAgICAgICAgfQogICAg
fQogICAgaWYgKHRoaXNpZCA9PSAiUHJlc3MiKSB7CiAgICAgICAgaWYgKHByZXNzID09ICIiKSB7
CiAgICAgICAgICAgIGRvY3VtZW50Lk1lZXRWYUZvcm0uTmF2Q2hJbWFnZS52YWx1ZSA9ICJQcmVz
cyI7CiAgICAgICAgICAgIGRvY3VtZW50Lk1lZXRWYUZvcm0uYWN0aW9uID0gIm1lZXRWYVByZXNz
LmRvIjsKICAgICAgICB9CiAgICB9CiAgICBkb2N1bWVudC5NZWV0VmFGb3JtLnN1Ym1pdCgpOwp9
CmZ1bmN0aW9uIG9wZW5XaW5QcmludEl0aW5lcmFyeShhY3Rpb25VcmwpIHsKICAgIHZhciBkaXNw
X3NldHRpbmcgPSAidG9vbGJhcj1ubyxsb2NhdGlvbj1ubyxkaXJlY3Rvcmllcz1ubyxtZW51YmFy
PXllcywiOwogICAgZGlzcF9zZXR0aW5nICs9ICJzY3JvbGxiYXJzPXllcyx3aWR0aD03NjIsIGhl
aWdodD02NzAsIGxlZnQ9MCwgdG9wPTAiOwogICAgdmFyIHVybHMgPSBhY3Rpb25Vcmw7CiAgICB3
aW5kb3cub3Blbih1cmxzLCAiIiwgZGlzcF9zZXR0aW5nKTsKfQpmdW5jdGlvbiBvcGVuQ2hhbmdl
U2VhdFByaW50SXRpbmVyYXJ5KGFjdGlvblVybCkgewogICAgdmFyIGRpc3Bfc2V0dGluZyA9ICJ0
b29sYmFyPW5vLGxvY2F0aW9uPW5vLGRpcmVjdG9yaWVzPW5vLG1lbnViYXI9eWVzLCI7CiAgICBk
aXNwX3NldHRpbmcgKz0gInNjcm9sbGJhcnM9eWVzLHdpZHRoPTY1MCwgaGVpZ2h0PTY3MCwgbGVm
dD0wLCB0b3A9MCI7CiAgICB2YXIgdXJscyA9IGFjdGlvblVybDsKICAgIHdpbmRvdy5vcGVuKHVy
bHMsICIiLCBkaXNwX3NldHRpbmcpOwp9CmZ1bmN0aW9uIGNsb3NlV2luZG93KCkgewogICAgc2Vs
Zi5jbG9zZSgpOwp9CmZ1bmN0aW9uIENhbGxFbGV2YXRlKCkgewogICAgbG9jYXRpb24uaHJlZiA9
ICJ3aGF0SXNlbGVWQXRlLmRvP21ldGhvZD1zaG93d2hhdElzZWxlVkF0ZSI7Cn0KZnVuY3Rpb24g
aGlkZVBvcFVwKCkgewogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkhyZWZtZXNzYWdlIiku
c3R5bGUuZGlzcGxheSA9ICJub25lIjsKfQpmdW5jdGlvbiBzdW1pdFNlYXJjaFdpdGhFbnRlcktl
eShlbnRlcklkLCBldnQpIHsKICAgIGlmICh3aW5kb3cuZXZlbnQpIHsKICAgICAgICBLZXkgPSB3
aW5kb3cuZXZlbnQua2V5Q29kZTsKICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKGV2dCkgewogICAg
ICAgICAgICBLZXkgPSBldnQud2hpY2g7CiAgICAgICAgfQogICAgfQogICAgaWYgKEtleSA9PSAx
MykgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVudGVySWQpLm9uY2xpY2soKTsK
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB0cnVlOwog
ICAgfQp9CnZhciBjbGVhclBvcHVwSW50ZXJ2YWw7CnZhciBjb3VudGVyID0gMjA7CgpmdW5jdGlv
biB1cGRhdGVQb3B1cChwYWdlTmFtZSwgdGl0bGUsIHBvcHVwV2lkdGgsIGNsa09iaiwgc2hvd0J0
biwgbGZ0TXJnLCByZ3RNcmcsIGRlY2lzaW9uLCBvcGVuUGFyYW1ldGVyLCBmdW5jdGlvbkNhbGxl
ZCkgewogICAgaWYgKGNsZWFyUG9wdXBJbnRlcnZhbCkgewogICAgICAgIGNsZWFySW50ZXJ2YWwo
Y2xlYXJQb3B1cEludGVydmFsKTsKICAgICAgICBjb3VudGVyID0gMjA7CiAgICB9CiAgICAkKCIj
cG9wdXBNc2dBcmVhIikubG9hZChwYWdlTmFtZSwgImNhY2hlOmZhbHNlIiwgZG9uZSk7CgogICAg
ZnVuY3Rpb24gZG9uZSgpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQWNjZXB0
SWQiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJwb3B1cFRpdGxlIikuaW5uZXJIVE1MID0gdGl0bGU7CiAgICAgICAgdmFyIHBvcHVwRWxl
bWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwb3B1cFRhYmxlIik7CiAgICAgICAgcG9w
dXBFbGVtZW50LnN0eWxlLndpZHRoID0gZXZhbChwb3B1cFdpZHRoKTsKICAgICAgICB2YXIgcG9w
dXBGcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwb3B1cEZyYW1lIik7CiAgICAgICAg
c2V0T2JqT2Zmc2V0KGNsa09iaiwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBvcHVwSWQiKSwg
bGZ0TXJnLCByZ3RNcmcpOwogICAgICAgIGlmIChldmFsKHNob3dCdG4pKSB7CiAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJBY2NlcHRJZCIpLnN0eWxlLmRpc3BsYXkgPSAiYmxv
Y2siOwogICAgICAgIH0KICAgICAgICBpZiAoZXZhbChkZWNpc2lvbikpIHsKICAgICAgICAgICAg
dmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkFjY2VwdElkIik7CiAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZWNsaW5lZElkIikuc3R5bGUuZGlzcGxheSA9ICJi
bG9jayI7CiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgib25jbGljayIsIGZ1bmN0aW9uQ2Fs
bGVkICsgIjtjbG9zZVBvcHVwKCdwb3B1cElkJyk7Iik7CiAgICAgICAgfQogICAgICAgIHZhciBw
b3B1cERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwb3B1cElkIik7CiAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBvcHVwSWQiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsK
ICAgICAgICBwb3B1cEZyYW1lLnN0eWxlLndpZHRoID0gZXZhbChwb3B1cFdpZHRoKSAtIDIwOwog
ICAgICAgIHBvcHVwRnJhbWUuc3R5bGUuaGVpZ2h0ID0gcG9wdXBEaXYub2Zmc2V0SGVpZ2h0IC0g
MjA7CiAgICAgICAgaWYgKG9wZW5QYXJhbWV0ZXIpIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInBvcFVwT3BlblBhcmFtZXRlciIpLmlubmVySFRNTCA9IG9wZW5QYXJhbWV0
ZXI7CiAgICAgICAgfQogICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9hZGlu
Z0FuaW1hdGlvbkRpdiIpKSB7CiAgICAgICAgICAgIGNsb3NlV2FpdEltYWdlKCk7CiAgICAgICAg
fQogICAgfQp9CmZ1bmN0aW9uIGNsb3NlUG9wdXAoZGl2SWQpIHsKICAgIGlmIChjbGVhclBvcHVw
SW50ZXJ2YWwpIHsKICAgICAgICBjbGVhckludGVydmFsKGNsZWFyUG9wdXBJbnRlcnZhbCk7CiAg
ICAgICAgY291bnRlciA9IDIwOwogICAgfQogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGl2
SWQpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Cn0KZnVuY3Rpb24gZ29CYWNrVG9UcmF2ZWxNYW5h
Z2VyKGZvcm1OYW1lKSB7CiAgICBmcm1PYmogPSBldmFsKCJkb2N1bWVudC4iICsgZm9ybU5hbWUp
OwogICAgZnJtT2JqLnN1Ym1pdCgpOwp9CmZ1bmN0aW9uIGNhbGxKb2JzUGFnZXModGhpc2lkKSB7
CiAgICBpZiAodGhpc2lkID09ICJqb2JzV2h5VkEiKSB7CiAgICAgICAgZG9jdW1lbnQucHJpdmFj
eVBvbGljeS5tZXRob2QudmFsdWUgPSAic2hvd2pvYnMiOwogICAgICAgIGRvY3VtZW50LnByaXZh
Y3lQb2xpY3kuYWN0aW9uID0gImpvYnNXaHlWQS5kbyI7CiAgICAgICAgZG9jdW1lbnQucHJpdmFj
eVBvbGljeS5zdWJtaXQoKTsKICAgIH0KICAgIGlmICh0aGlzaWQgPT0gImpvYnNBbGV4Iikgewog
ICAgICAgIGRvY3VtZW50LnByaXZhY3lQb2xpY3kubWV0aG9kLnZhbHVlID0gInNob3dqb2JzIjsK
ICAgICAgICBkb2N1bWVudC5wcml2YWN5UG9saWN5LmFjdGlvbiA9ICJqb2JzQWxleC5kbyI7CiAg
ICAgICAgZG9jdW1lbnQucHJpdmFjeVBvbGljeS5zdWJtaXQoKTsKICAgIH0KICAgIGlmICh0aGlz
aWQgPT0gImpvYnNEaXZlcnNpdHkiKSB7CiAgICAgICAgZG9jdW1lbnQucHJpdmFjeVBvbGljeS5t
ZXRob2QudmFsdWUgPSAic2hvd2pvYnMiOwogICAgICAgIGRvY3VtZW50LnByaXZhY3lQb2xpY3ku
YWN0aW9uID0gImpvYnNEaXZlcnNpdHkuZG8iOwogICAgICAgIGRvY3VtZW50LnByaXZhY3lQb2xp
Y3kuc3VibWl0KCk7CiAgICB9CiAgICBpZiAodGhpc2lkID09ICJqb2JzR2V0VG9Lbm93VXMiKSB7
CiAgICAgICAgZG9jdW1lbnQucHJpdmFjeVBvbGljeS5tZXRob2QudmFsdWUgPSAic2hvd2pvYnMi
OwogICAgICAgIGRvY3VtZW50LnByaXZhY3lQb2xpY3kuYWN0aW9uID0gImpvYnNHZXRUb0tub3dV
cy5kbyI7CiAgICAgICAgZG9jdW1lbnQucHJpdmFjeVBvbGljeS5zdWJtaXQoKTsKICAgIH0KICAg
IGlmICh0aGlzaWQgPT0gImpvYnNHZXRUb0tub3dVc0plc3NpY2EiKSB7CiAgICAgICAgZG9jdW1l
bnQucHJpdmFjeVBvbGljeS5tZXRob2QudmFsdWUgPSAic2hvd2pvYnMiOwogICAgICAgIGRvY3Vt
ZW50LnByaXZhY3lQb2xpY3kuYWN0aW9uID0gImpvYnNHZXRUb0tub3dVc0plc3NpY2EuZG8iOwog
ICAgICAgIGRvY3VtZW50LnByaXZhY3lQb2xpY3kuc3VibWl0KCk7CiAgICB9CiAgICBpZiAodGhp
c2lkID09ICJqb2JzSm9pblRoZVRlYW0iKSB7CiAgICAgICAgZG9jdW1lbnQucHJpdmFjeVBvbGlj
eS5tZXRob2QudmFsdWUgPSAic2hvd2pvYnMiOwogICAgICAgIGRvY3VtZW50LnByaXZhY3lQb2xp
Y3kuYWN0aW9uID0gImpvYnNKb2luVGhlVGVhbS5kbyI7CiAgICAgICAgZG9jdW1lbnQucHJpdmFj
eVBvbGljeS5zdWJtaXQoKTsKICAgIH0KICAgIGlmICh0aGlzaWQgPT0gImpvYnNCZW5lZml0cyIp
IHsKICAgICAgICBkb2N1bWVudC5wcml2YWN5UG9saWN5Lm1ldGhvZC52YWx1ZSA9ICJzaG93am9i
cyI7CiAgICAgICAgZG9jdW1lbnQucHJpdmFjeVBvbGljeS5hY3Rpb24gPSAiam9ic0JlbmVmaXRz
LmRvIjsKICAgICAgICBkb2N1bWVudC5wcml2YWN5UG9saWN5LnN1Ym1pdCgpOwogICAgfQp9CmZ1
bmN0aW9uIHNob3dMb2FkaW5nSW1hZ2VvblBvcFVwKGJ1dHRvbk5hbWUpIHsKICAgIHZhciBjUG9w
dXAgPSBnZXRBbmNob3JQb3NpdGlvbihidXR0b25OYW1lKTsKICAgIHZhciB4cCA9IGNQb3B1cC54
OwogICAgdmFyIHlwID0gY1BvcHVwLnkgLSAxMDsKICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibG9hZGluZ0FuaW1hdGlvbkRpdiIpKSB7CiAgICAgICAgc2hvd1dhaXRJbWFnZSgpOwog
ICAgfQp9CmZ1bmN0aW9uIHNob3dMb2FkaW5nSW1hZ2VPcGVuV2l0aEFsbFZhbHVlcyhidXR0b25O
YW1lLCBmaXJzdCwgc2Vjb25kKSB7CiAgICBzaG93V2FpdEltYWdlKCk7Cn0KZnVuY3Rpb24gc2hv
d0xvYWRpbmdJbWFnZU9wZW4oYnV0dG9uTmFtZSkgewogICAgc2hvd1dhaXRJbWFnZSgpOwp9CmZ1
bmN0aW9uIHNob3dMb2FkaW5nSW1hZ2VDbG9zZSgpIHsKICAgIGlmIChkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgibG9hZGluZ0FuaW1hdGlvbkRpdiIpKSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImxvYWRpbmdBbmltYXRpb25EaXYiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwog
ICAgfQp9CmZ1bmN0aW9uIF9zaG93TG9hZGluZ0ltYWdlT3BlbihidXR0b25OYW1lKSB7CiAgICBz
aG93V2FpdEltYWdlKCk7Cn0KZnVuY3Rpb24gc2hvd1BvcFVwKHBvc2l0aW9uSWQsIHRhckdldElk
LCBzZXRYLCBzZXRZKSB7CiAgICBzZXRQb3NpdGlvbigkZ2V0X0pzRWxlbWVudChwb3NpdGlvbklk
KSwgJGdldF9Kc0VsZW1lbnQodGFyR2V0SWQpLCBzZXRYLCBzZXRZKTsKICAgICRnZXRfSnNFbGVt
ZW50KHRhckdldElkKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKfQpmdW5jdGlvbiBfc2hvd0xv
YWRpbmdJbWFnZUNsb3NlKCkgewogICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2Fk
aW5nQW5pbWF0aW9uRGl2IikpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9h
ZGluZ0FuaW1hdGlvbkRpdiIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICB9Cn0KZnVuY3Rp
b24gc2V0RGF0ZUluV2FubmFCb29rRmxpZ2h0V2luZG93KHRyaXBUeXBlLCBjdXJyZW50RGF0ZSwg
c2VnbWVudE51bWJlcikgewogICAgaWYgKHRyaXBUeXBlID09ICJydCIpIHsKICAgICAgICBpZiAo
c2VnbWVudE51bWJlciA9PSAwKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmZsaWdodFNlYXJjaFJU
Rm9ybS5lbGVtZW50c1siZmxpZ2h0U2VhcmNoLmRlcERhdGUuTU1ERFlZWVkiXS52YWx1ZSA9IGN1
cnJlbnREYXRlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGRvY3VtZW50LmZsaWdodFNl
YXJjaFJURm9ybS5lbGVtZW50c1siZmxpZ2h0U2VhcmNoLnJldHVybkRhdGUuTU1ERFlZWVkiXS52
YWx1ZSA9IGN1cnJlbnREYXRlOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKHRy
aXBUeXBlID09ICJtYyIpIHsKICAgICAgICAgICAgaWYgKHNlZ21lbnROdW1iZXIgPT0gMCkgewog
ICAgICAgICAgICAgICAgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoTUNGb3JtLmVsZW1lbnRzWyJmbGln
aHRTZWFyY2guZGVwRGF0ZU1DLk1NRERZWVlZIl0udmFsdWUgPSBjdXJyZW50RGF0ZTsKICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmZsaWdodFNlYXJjaE1DRm9y
bS5lbGVtZW50c1siZmxpZ2h0U2VhcmNoLnJldHVybkRhdGVNQy5NTUREWVlZWSJdLnZhbHVlID0g
Y3VycmVudERhdGU7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBp
ZiAodHJpcFR5cGUgPT0gIm93IikgewogICAgICAgICAgICAgICAgaWYgKHNlZ21lbnROdW1iZXIg
PT0gMCkgewogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZsaWdodFNlYXJjaE9XRm9ybS5l
bGVtZW50c1siZmxpZ2h0U2VhcmNoLmRlcERhdGVPVy5NTUREWVlZWSJdLnZhbHVlID0gY3VycmVu
dERhdGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0K
ZnVuY3Rpb24gc2hvd1NjaGVkdWxlRGV0aWFscyhvYmosIGZsaWdodE51bWJlciwgYWlyY2FyZnRU
eXBlLCBhaXJQb3J0LCBqb3VybmV5VGltZSkgewogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImZsaWdodE51bWJlclNwYW5JZCIpLmlubmVySFRNTCA9IGZsaWdodE51bWJlcjsKICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJhaXJjYXJmdFNwYW5JZCIpLmlubmVySFRNTCA9IGFpcmNhcmZ0
VHlwZTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhaXJQb3J0U3BhbklkIikuaW5uZXJI
VE1MID0gYWlyUG9ydDsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJqb3VybmVUaW1lU3Bh
bklkIikuaW5uZXJIVE1MID0gam91cm5leVRpbWU7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidG90YWxKb3VybmVUaW1lU3BhbklkIikuaW5uZXJIVE1MID0gam91cm5leVRpbWU7CiAgICB2
YXIgcG9zaXRpb25PYmogPSAibG9hZEltZ0NlbnRlcjEiOwogICAgc2V0UG9zaXRpb24ob2JqLCBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmxpZ2h0U2NoZWR1bGVEZXRpYWxzRGl2IiksIDUwLCAz
MCk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmxpZ2h0U2NoZWR1bGVEZXRpYWxzRGl2
Iikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Cn0KZnVuY3Rpb24gQ2hhbmdlR3Vlc3RUeXBlKG9w
dHZhbCwgb2JqKSB7CiAgICB2YXIgb3B0aW9uID0gb2JqLm9wdGlvbnM7CiAgICBpZiAob3B0dmFs
ID09ICJNciIpIHsKICAgICAgICBvcHRpb24uc2VsZWN0ZWRJbmRleCA9IDA7CiAgICB9CiAgICBp
ZiAob3B0dmFsID09ICJNcnMiKSB7CiAgICAgICAgb3B0aW9uLnNlbGVjdGVkSW5kZXggPSAwOwog
ICAgfQogICAgaWYgKG9wdHZhbCA9PSAiTWlzcyAoQWR1bHQpIikgewogICAgICAgIG9wdGlvbi5z
ZWxlY3RlZEluZGV4ID0gMDsKICAgIH0KICAgIGlmIChvcHR2YWwgPT0gIk1pc3MgKENoaWxkKSIp
IHsKICAgICAgICBvcHRpb24uc2VsZWN0ZWRJbmRleCA9IDI7CiAgICB9CiAgICBpZiAob3B0dmFs
ID09ICJNcyIpIHsKICAgICAgICBvcHRpb24uc2VsZWN0ZWRJbmRleCA9IDA7CiAgICB9CiAgICBp
ZiAob3B0dmFsID09ICJNc3RyIChDaGlsZCkiKSB7CiAgICAgICAgb3B0aW9uLnNlbGVjdGVkSW5k
ZXggPSAyOwogICAgfQp9CmZ1bmN0aW9uIGZsdEVycm9yTWVzc2FnZXMoZXJyb3IxLCBlcnJvcjIs
IGVycm9yMywgZXJyb3I0LCBlcnJvcjUsIGVycm9yNiwgZXJyb3I3LCBlcnJvcjgpIHsKICAgIGZs
dFN0YXR1c0Vycm9yc1JlcXVpcmVkID0gZXJyb3IxOwogICAgZmx0U3RhdHVzRXJyb3JzVW5rbm93
biA9IGVycm9yMjsKICAgIGZsdFN0YXR1c0Vycm9yc1NlcnZpY2VSZXF1aXJlZCA9IGVycm9yMzsK
ICAgIGZsdFN0YXR1c0Vycm9yc0luVmFsaWRGbHRObyA9IGVycm9yNDsKICAgIGZsdFN0YXR1c0Vy
cm9yc0luVmFsaWRGbHROb05vdE51bSA9IGVycm9yNTsKICAgIGZsdFN0YXR1c0Vycm9yc0luVmFs
aWRDaXR5UGFpciA9IGVycm9yNjsKICAgIGZsdFN0YXR1c0Vycm9yc05vRmx0R2l2ZW5EYXRlID0g
ZXJyb3I3OwogICAgZmx0U3RhdHVzZXJyb3Jzbm9EYXRhID0gZXJyb3I4Owp9CnZhciBpbWdfSUQg
PSAiIjsKdmFyIGlkQXJyYXkgPSBuZXcgQXJyYXkoIjFBIiwgIjJBIiwgIjFDIiwgIjJDIiwgIjFE
IiwgIjJEIiwgIjFGIiwgIjJGIiwgIjFCIiwgIjJCIik7CnZhciBmaXJzdENsYXNzID0gImZhbHNl
IjsKCmZ1bmN0aW9uIFNob3dFeGl0Um93RGl2KGltZ19pZCkgewogICAgaW1nX0lEID0gaW1nX2lk
OwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZEFycmF5Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAg
aWYgKGlkQXJyYXlbaV0gPT0gaW1nX0lEKSB7CiAgICAgICAgICAgIGltZ19JRCA9ICJmaXJzdENs
YXNzIjsKICAgICAgICB9CiAgICB9CiAgICBpZiAoKCFpc01DUykgfHwgKGltZ19JRCA9PSAiZmly
c3RDbGFzcyIpKSB7CiAgICAgICAgaWYgKGltZ19JRCA9PSAiZmlyc3RDbGFzcyIpIHsKICAgICAg
ICAgICAgeCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJGaXJzdENsYXNzSW5mb3JtYXRpb24i
KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoIlByZW1pdW1TZWF0SW5mb3JtYXRpb24iKTsKICAgICAgICB9CiAgICAgICAgZ2V0QW5jaG9y
WFkoaW1nX2lkKTsKICAgICAgICB4LnN0eWxlLmxlZnQgPSBYMSArIDE0OwogICAgICAgIHguc3R5
bGUudG9wID0gWTEgKyAxNDsKICAgICAgICB4LnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIjsK
ICAgICAgICB4LnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgfQp9CnZhciBjaGVja1ggPSAw
Owp2YXIgY2hlY2tZID0gMDsKCmZ1bmN0aW9uIFNob3dFeGl0Um93RGl2T25TZWxlY3QoaW1nX2lk
KSB7CiAgICBpbWdfSUQgPSBpbWdfaWQ7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlkQXJyYXku
bGVuZ3RoOyBpKyspIHsKICAgICAgICBpZiAoaWRBcnJheVtpXSA9PSBpbWdfSUQpIHsKICAgICAg
ICAgICAgaW1nX0lEID0gImZpcnN0Q2xhc3MiOwogICAgICAgIH0KICAgIH0KICAgIGlmIChpbWdf
SUQgPT0gImZpcnN0Q2xhc3MiKSB7CiAgICAgICAgeCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJGaXJzdENsYXNzSW5mb3JtYXRpb24iKTsKICAgIH0gZWxzZSB7CiAgICAgICAgeCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJQcmVtaXVtU2VhdEluZm9ybWF0aW9uIik7CiAgICB9CiAgICBn
ZXRBbmNob3JYWShpbWdfaWQpOwogICAgeC5zdHlsZS5sZWZ0ID0gWDEgLSBjaGVja1ggKyA4Owog
ICAgeC5zdHlsZS50b3AgPSBZMSAtIGNoZWNrWSArIDg7CiAgICB4LnN0eWxlLnBvc2l0aW9uID0g
ImFic29sdXRlIjsKICAgIHguc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Cn0KZnVuY3Rpb24gSGlk
ZUV4aXRSb3dEaXYoKSB7CiAgICBpZiAoaW1nX0lEICE9ICIiKSB7CiAgICAgICAgaWYgKGltZ19J
RCA9PSAiZmlyc3RDbGFzcyIpIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
IkZpcnN0Q2xhc3NJbmZvcm1hdGlvbiIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkV4aXRTZWF0SW5m
b3JtYXRpb24iKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgIH0KICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiUHJlbWl1bVNlYXRJbmZvcm1hdGlvbiIpLnN0eWxlLmRpc3Bs
YXkgPSAibm9uZSI7CiAgICAgICAgaW1nX0lEID0gIiI7CiAgICB9Cn0KdmFyIGVsZXZhdGVJZFZh
bGlkYXRlZCA9ICIiOwp2YXIgZWxldmF0ZUxhYmVsSWQgPSAiIjsKCmZ1bmN0aW9uIHNob3dUZXN0
RmllbGQoZWxldmF0ZURpdklkLCBhZGREaXZJZCkgewogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoYWRkRGl2SWQpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZChlbGV2YXRlRGl2SWQpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwp9CnZhciBndWVz
dEZGUHJvZzsKdmFyIGVsZXZhdGVJZFZhbGlkYXRlZDsKdmFyIGd1ZXN0SW5kZXg7CnZhciBmZnBy
b2dyYW1saXN0Owp2YXIgc2VsZWN0ZWRGRlBQcm9ncmFtOwoKZnVuY3Rpb24gYWRkRWxldmF0ZUlk
QWN0aW9uKGd1ZXN0Rmlyc3ROYW1lLCBndWVzdExhc3ROYW1lLCBndWVzdEluZCwgcG5yTm8sIGd1
ZXN0SUQpIHsKICAgIGd1ZXN0SW5kZXggPSBndWVzdEluZDsKICAgIHZhciBndWVzdEZpcnN0TGFz
dE5hbWUgPSBndWVzdEZpcnN0TmFtZSArICIgIiArIGd1ZXN0TGFzdE5hbWU7CiAgICBmZnByb2dy
YW1saXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZmUHJvZ3JhbSIgKyBndWVzdEluZCk7
CiAgICBndWVzdEZGUHJvZyA9IGZmcHJvZ3JhbWxpc3Qub3B0aW9uc1tmZnByb2dyYW1saXN0LnNl
bGVjdGVkSW5kZXhdLnZhbHVlOwogICAgc2VsZWN0ZWRGRlBQcm9ncmFtID0gZmZwcm9ncmFtbGlz
dC5vcHRpb25zW2ZmcHJvZ3JhbWxpc3Quc2VsZWN0ZWRJbmRleF0udGV4dDsKICAgIGVsZXZhdGVJ
ZFZhbGlkYXRlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmZnBOdW1iZXIiICsgZ3Vlc3RJ
bmQpLnZhbHVlOwogICAgaWYgKGVsZXZhdGVJZFZhbGlkYXRlZCA9PSAiQWRkICMiKSB7CiAgICAg
ICAgZWxldmF0ZUlkVmFsaWRhdGVkID0gIiI7CiAgICB9CiAgICB2YXIgdXJscyA9ICJhZGRFbGV2
YXRlSWQuZG8/bWV0aG9kPWFkZGVsZXZhdGVJZCZlbGV2YXRlSWRQYXJhbT0iICsgZWxldmF0ZUlk
VmFsaWRhdGVkICsgIiZndWVzdEZpcnN0TGFzdE5hbWU9IiArIGd1ZXN0Rmlyc3RMYXN0TmFtZSAr
ICImZ3Vlc3RJbmQ9IiArIGd1ZXN0SW5kICsgIiZndWVzdEZGUHJvZz0iICsgZ3Vlc3RGRlByb2cg
KyAiJnBuck5vPSIgKyBwbnJObyArICImZ3Vlc3RJRD0iICsgZ3Vlc3RJRDsKICAgIGFqYXhUb2Fk
ZEVsZXZhdGVJZCh1cmxzKTsKICAgIHNob3dXYWl0SW1hZ2UoKTsKfQpmdW5jdGlvbiBhamF4VG9h
ZGRFbGV2YXRlSWQobXl1cmwpIHsKICAgIHhtbGh0dHAgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsK
ICAgIHZhciB0aGV0aW1lID0gbmV3IERhdGUoKTsKICAgIHZhciBkdW1teSA9ICIiICsgdGhldGlt
ZS5nZXRIb3VycygpICsgdGhldGltZS5nZXRNaW51dGVzKCkgKyB0aGV0aW1lLmdldFNlY29uZHMo
KTsKICAgIG15dXJsID0gbXl1cmwgKyAiJmR1bW15PSIgKyBkdW1teTsKICAgIHhtbGh0dHAub3Bl
bigiUE9TVCIsIG15dXJsLCB0cnVlKTsKICAgIHhtbGh0dHAub25yZWFkeXN0YXRlY2hhbmdlID0g
aGFuZGxlUmVzcG9uc2VGb3JBZGRFbGV2YXRlSWQ7CiAgICB4bWxodHRwLnNlbmQoIiIpOwp9CmZ1
bmN0aW9uIGhhbmRsZVJlc3BvbnNlRm9yQWRkRWxldmF0ZUlkKCkgewogICAgaWYgKHhtbGh0dHAu
cmVhZHlTdGF0ZSA9PSA0KSB7CiAgICAgICAgaWYgKHhtbGh0dHAuc3RhdHVzID09IDIwMCkgewog
ICAgICAgICAgICBpZiAoeG1saHR0cC5yZXNwb25zZVRleHQudHJpbSgpID09ICJBamF4U2Vzc2lv
blRpbWVPdXQiKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAiL2hvbWUuZG8/
bWV0aG9kPXZpcmdpbkFtZXJpY2Emc2Vzc2lvblN0YXRlPXNlc3Npb25UaW1lT3V0IjsKICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICh4bWxodHRwLnJlc3BvbnNlVGV4dC50
cmltKCkgPT0gInN1Y2Nlc3MiKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGd1ZXN0SW5kZXgu
bGVuZ3RoID09IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZ3Vlc3RJbmRleCA9ICIwIiAr
IGd1ZXN0SW5kZXguc3Vic3RyaW5nKDEsIDIpOwogICAgICAgICAgICAgICAgICAgICAgICB3aGls
ZSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFqYXhSZWZyZXNoRGl2MSIgKyBndWVzdEluZGV4
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImFqYXhSZWZyZXNoRGl2MSIgKyBndWVzdEluZGV4KS5pbm5lckhUTUwgPSAiPGRpdj4iICsgc2Vs
ZWN0ZWRGRlBQcm9ncmFtICsgIjwvZGl2PiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWpheFJlZnJlc2hEaXYyIiArIGd1ZXN0SW5kZXgpLmlu
bmVySFRNTCA9ICI8ZGl2PiIgKyBlbGV2YXRlSWRWYWxpZGF0ZWQgKyAiPC9kaXY+IjsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicG9pbnRz
IiArIGd1ZXN0SW5kZXgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInBvaW50cyIgKyBndWVzdEluZGV4KS5zdHlsZS5kaXNwbGF5ID0g
ImJsb2NrIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWRkQnRuIiArIGd1ZXN0SW5k
ZXgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImFkZEJ0biIgKyBndWVzdEluZGV4KS5pbm5lckhUTUwgPSAiIjsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiYWpheFJlZnJlc2hEaXYxIiArIGd1ZXN0SW5kZXgpLmlubmVySFRN
TCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiYWpheFJlZnJlc2hEaXYxIiArIGd1ZXN0SW5kZXgpLmlubmVySFRNTC5pbmRleE9m
KCJBbWVyaWNhIikgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicG9pbnRzIiArIGd1ZXN0SW5kZXgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicG9pbnRzIiArIGd1ZXN0SW5kZXgpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cG9pbnRzIiArIGd1ZXN0SW5kZXgpLmlubmVySFRNTCA9ICIiOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Vl
c3RJbmRleCA9IGV2YWwoZXZhbChndWVzdEluZGV4KSArIDEwKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhamF4UmVmcmVzaERpdjEiICsgZ3Vlc3RJbmRl
eCkuaW5uZXJIVE1MID0gIjxkaXY+IiArIGZmcHJvZ3JhbWxpc3Qub3B0aW9uc1tmZnByb2dyYW1s
aXN0LnNlbGVjdGVkSW5kZXhdLnRleHQgKyAiPC9kaXY+IjsKICAgICAgICAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFqYXhSZWZyZXNoRGl2MiIgKyBndWVzdEluZGV4
KS5pbm5lckhUTUwgPSAiPGRpdj4iICsgZWxldmF0ZUlkVmFsaWRhdGVkICsgIjwvZGl2PiI7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicG9pbnRz
IiArIGd1ZXN0SW5kZXgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicG9pbnRzIiArIGd1ZXN0SW5kZXgpLnN0eWxlLmRpc3BsYXkgPSAiYmxv
Y2siOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWRkQnRuIiArIGd1ZXN0SW5kZXgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWRkQnRuIiAr
IGd1ZXN0SW5kZXgpLmlubmVySFRNTCA9ICIiOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWpheFJl
ZnJlc2hEaXYxIiArIGd1ZXN0SW5kZXgpLmlubmVySFRNTCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhamF4UmVmcmVzaERpdjEiICsg
Z3Vlc3RJbmRleCkuaW5uZXJIVE1MLmluZGV4T2YoIkFtZXJpY2EiKSA8IDApIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBvaW50
cyIgKyBndWVzdEluZGV4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicG9pbnRzIiArIGd1ZXN0SW5kZXgpLnN0eWxlLmRpc3Bs
YXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJwb2ludHMiICsgZ3Vlc3RJbmRleCkuaW5uZXJIVE1MID0gIiI7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnRuSm9pbkVsZXZh
dGUiICsgZ3Vlc3RJbmRleCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImJ0bkpvaW5FbGV2YXRlIiArIGd1ZXN0SW5kZXgpLmlubmVySFRNTCA9ICIi
OwogICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnRuSm9p
bkVsZXZhdGUiICsgZ3Vlc3RJbmRleCkuY2xhc3NOYW1lID0gIiI7CiAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmFs
aWRhdGlvbk1lc3NhZ2VEaXYiKSkgewogICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidmFsaWRhdGlvbk1lc3NhZ2VEaXYiKS5pbm5lckhUTUwgPSAiIjsKICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2YWxpZGF0aW9uTWVzc2FnZURpdiIpLmlu
bmVySFRNTCA9IHhtbGh0dHAucmVzcG9uc2VUZXh0OwogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICB9CiAgICAgICAgICAgIHNob3dMb2FkaW5nSW1hZ2VDbG9zZSgpOwogICAgICAgIH0KICAg
IH0KfQpmdW5jdGlvbiBzaG93UG9wdXBXaXRoR3JheUJHKGFuY29yT2JqKSB7CiAgICBzdG9wSXQg
PSAiZmFsc2UiOwogICAgdmFyIHggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiUG9wb3VwT25H
cmF5RGl2Iik7CiAgICB2YXIgYzEgPSBnZXRBbmNob3JQb3NpdGlvbigiSG93SXRXb3JrcyIpOwog
ICAgeC5zdHlsZS5sZWZ0ID0gYzEueDsKICAgIHguc3R5bGUudG9wID0gYzEueTsKICAgIHguc3R5
bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBy
ZW1faGludCIpKSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByZW1faGludCIp
LnN0eWxlLmJhY2tncm91bmQgPSAiI0ZGQjJCNSI7CiAgICB9Cn0KZnVuY3Rpb24gcG9wVXBIb3dX
b3JrcyhkaXZJZCkgewogICAgdmFyIHggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiUG9wb3Vw
T25HcmF5RGl2Iik7CiAgICB2YXIgYzEgPSBnZXRBbmNob3JQb3NpdGlvbihkaXZJZCk7CiAgICB4
LnN0eWxlLmxlZnQgPSBjMS54OwogICAgeC5zdHlsZS50b3AgPSBjMS55OwogICAgeC5zdHlsZS5k
aXNwbGF5ID0gImJsb2NrIjsKICAgIHN0b3BJdCA9ICJ0cnVlIjsKfQpmdW5jdGlvbiBzaG93VGVy
bXNDb25kaXRpb24oZGl2SWQpIHsKICAgIHZhciB4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRpcm1zRGl2Iik7CiAgICB2YXIgYzEgPSBnZXRBbmNob3JQb3NpdGlvbihkaXZJZCk7CiAgICB4
LnN0eWxlLmxlZnQgPSBjMS54OwogICAgeC5zdHlsZS50b3AgPSBjMS55IC0gNTA7CiAgICB4LnN0
eWxlLmRpc3BsYXkgPSAiYmxvY2siOwp9CmZ1bmN0aW9uIGNsb3NlRGl2cygpIHsKICAgIGlmIChk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiUG9wb3VwUG9pbnRCZXRhQWxlcnQiKSAhPSBudWxsKSB7
CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlBvcG91cFBvaW50QmV0YUFsZXJ0Iiku
c3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgIH0KICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiUG9wb3VwT25HcmF5RGl2IikgIT0gbnVsbCkgewogICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJQb3BvdXBPbkdyYXlEaXYiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAg
fQogICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwcmVtX2hpbnQiKSAhPSBudWxsKSB7
CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByZW1faGludCIpLnN0eWxlLmJhY2tn
cm91bmQgPSAiI2ZmZmZmZiI7CiAgICB9Cn0KZnVuY3Rpb24gc2hvd1ByaW50YWJsZVZpZXcoZmly
c3RuYW1lLCBsYXN0bmFtZSwgZWxldmF0ZU5vKSB7CiAgICB2YXIgZGlzcF9zZXR0aW5nID0gInRv
b2xiYXI9bm8sbG9jYXRpb249bm8sZGlyZWN0b3JpZXM9bm8sbWVudWJhcj1ubyxzdGF0dXM9bm8s
IjsKICAgIGRpc3Bfc2V0dGluZyArPSAic2Nyb2xsYmFycz15ZXMsd2lkdGg9NjUwLCBoZWlnaHQ9
NjcwLCBsZWZ0PTAsIHRvcD0wIjsKICAgIHZhciB1cmwgPSAiaHRtbC9lbGV2YXRlX2NhcmRfcHJp
bnQuaHRtbD8mZm49IiArIGZpcnN0bmFtZSArICImbG49IiArIGxhc3RuYW1lICsgIiZlTj0iICsg
ZWxldmF0ZU5vOwogICAgd2luZG93Lm9wZW4odXJsLCAiIiwgZGlzcF9zZXR0aW5nKTsKfQpmdW5j
dGlvbiBwYXNzd29yZFN0cmVuZ3RoKHBhc3N3b3JkKSB7CiAgICB2YXIgZGVzYyA9IG5ldyBBcnJh
eSgpOwogICAgZGVzY1swXSA9ICJWZXJ5IFdlYWsiOwogICAgZGVzY1sxXSA9ICJXZWFrIjsKICAg
IGRlc2NbMl0gPSAiQmV0dGVyIjsKICAgIGRlc2NbM10gPSAiTWVkaXVtIjsKICAgIGRlc2NbNF0g
PSAiU3Ryb25nIjsKICAgIGRlc2NbNV0gPSAiU3Ryb25nZXN0IjsKICAgIHZhciBzY29yZSA9IDA7
CiAgICBpZiAocGFzc3dvcmQubGVuZ3RoID4gNikgewogICAgICAgIHNjb3JlKys7CiAgICB9CiAg
ICBpZiAoKHBhc3N3b3JkLm1hdGNoKC9bYS16XS8pKSAmJiAocGFzc3dvcmQubWF0Y2goL1tBLVpd
LykpKSB7CiAgICAgICAgc2NvcmUrKzsKICAgIH0KICAgIGlmIChwYXNzd29yZC5tYXRjaCgvXGQr
LykpIHsKICAgICAgICBzY29yZSsrOwogICAgfQogICAgaWYgKHBhc3N3b3JkLm1hdGNoKC8uWyEs
QCwjLCQsJSxeLCYsKiw/LF8sfiwtLCgsKV0vKSkgewogICAgICAgIHNjb3JlKys7CiAgICB9CiAg
ICBpZiAocGFzc3dvcmQubGVuZ3RoID4gMTIpIHsKICAgICAgICBzY29yZSsrOwogICAgfQogICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhc3N3b3JkRGVzY3JpcHRpb24iKS5pbm5lckhUTUwg
PSBkZXNjW3Njb3JlXTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXNzd29yZFN0cmVu
Z3RoIikuY2xhc3NOYW1lID0gInN0cmVuZ3RoIiArIHNjb3JlOwp9CmZ1bmN0aW9uIGFwcGx5Q3Jl
ZGl0RmlsZShpZCwgZGl2KSB7CiAgICBzYXZlVHJhdmVsSW5zdXJhbmNlKCk7CiAgICBzaG93V2Fp
dEltYWdlKCk7CiAgICB2YXIgdHJhdmVsSW5zdXJhbmNlRmxhZ1JldGFpbiA9IHRyYXZlbEluc3Vy
YW5jZUZsYWc7CiAgICB2YXIgc2l6ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJjaGVj
a0JveENyZWRpdEZpbGUiKS5sZW5ndGg7CiAgICB2YXIgY3JlZGl0RmlsZSA9ICIiOwogICAgZm9y
IChjcmVkaXRMb29wID0gMDsgY3JlZGl0TG9vcCA8IHNpemU7IGNyZWRpdExvb3ArKykgewogICAg
ICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgiY2hlY2tCb3hDcmVkaXRGaWxlIilb
Y3JlZGl0TG9vcF0uY2hlY2tlZCkgewogICAgICAgICAgICBjcmVkaXRGaWxlID0gY3JlZGl0Rmls
ZSArIGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJjaGVja0JveENyZWRpdEZpbGUiKVtjcmVk
aXRMb29wXS5pZCArICItIjsKICAgICAgICB9CiAgICB9CiAgICB2YXIgVVJMID0gImFwcGx5Q3Jl
ZGl0RmlsZS5kbz9tZXRob2Q9YXBwbHkmY3JlZGl0RmlsZXM9IiArIGNyZWRpdEZpbGU7CiAgICAk
LmFqYXgoewogICAgICAgIHR5cGU6ICJQT1NUIiwKICAgICAgICB1cmw6IFVSTCwKICAgICAgICBj
YWNoZTogZmFsc2UsCiAgICAgICAgZGF0YVR5cGU6ICJodG1sIiwKICAgICAgICBzdWNjZXNzOiBm
dW5jdGlvbiAoaHRtbCkgewogICAgICAgICAgICAkKCIjIiArIGRpdikuaHRtbChodG1sLnRyaW0o
KSk7CiAgICAgICAgICAgIHRyYXZlbEluc3VyYW5jZUZsYWcgPSB0cmF2ZWxJbnN1cmFuY2VGbGFn
UmV0YWluOwogICAgICAgICAgICBzaG93TG9hZGluZ0ltYWdlQ2xvc2UoKTsKICAgICAgICAgICAg
aWYgKGh0bWwudHJpbSgpLmluZGV4T2YoImVycm9ybWVzc2FnZV9ob2xkIikgIT0gLTEpIHsKICAg
ICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTsKICAgICAgICAgICAgfQogICAgICAg
ICAgICByZXRhaW5UcmF2ZWxJbnN1cmFuY2UoKTsKICAgICAgICB9CiAgICB9KTsKfQpmdW5jdGlv
biByZW1vdmVDcmVkaXRGaWxlKGNyZWRpdEZpbGUsIGlkLCBkaXYpIHsKICAgIHNob3dXYWl0SW1h
Z2UoKTsKICAgIHNhdmVUcmF2ZWxJbnN1cmFuY2UoKTsKICAgIHZhciB0cmF2ZWxJbnN1cmFuY2VG
bGFnUmV0YWluID0gdHJhdmVsSW5zdXJhbmNlRmxhZzsKICAgIHZhciBVUkwgPSAicmVtb3ZlQ3Jl
ZGl0RmlsZS5kbz9tZXRob2Q9cmVtb3ZlJmNyZWRpdEZpbGVzPSIgKyBjcmVkaXRGaWxlOwogICAg
JC5hamF4KHsKICAgICAgICB0eXBlOiAiUE9TVCIsCiAgICAgICAgdXJsOiBVUkwsCiAgICAgICAg
Y2FjaGU6IGZhbHNlLAogICAgICAgIGRhdGFUeXBlOiAiaHRtbCIsCiAgICAgICAgc3VjY2Vzczog
ZnVuY3Rpb24gKGh0bWwpIHsKICAgICAgICAgICAgdHJhdmVsSW5zdXJhbmNlRmxhZyA9IHRyYXZl
bEluc3VyYW5jZUZsYWdSZXRhaW47CiAgICAgICAgICAgICQoIiMiICsgZGl2KS5odG1sKGh0bWwu
dHJpbSgpKTsKICAgICAgICAgICAgc2hvd0xvYWRpbmdJbWFnZUNsb3NlKCk7CiAgICAgICAgICAg
IHJldGFpblRyYXZlbEluc3VyYW5jZSgpOwogICAgICAgIH0KICAgIH0pOwp9CmZ1bmN0aW9uIHNo
b3dIaWRlQWRkQ3JlZGl0RmlsZSgpIHsKICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFt
ZSgiY2hlY2tCb3hBZGRDcmVkaXRGaWxlIilbMF0uY2hlY2tlZCkgewogICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJhZGRDcmVkaXRGaWxlRGl2Iikuc3R5bGUuZGlzcGxheSA9ICJibG9j
ayI7CiAgICB9IGVsc2UgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhZGRDcmVk
aXRGaWxlRGl2Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgIH0KfQpmdW5jdGlvbiBhZGRD
cmVkaXRGaWxlKGlkLCBkaXYpIHsKICAgIHNob3dXYWl0SW1hZ2UoKTsKICAgIHZhciBmaWxlTnVt
YmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNyZWRpdEZpbGVOdW1iZXIiKS52YWx1ZTsK
ICAgIHZhciBmaXJzdE5hbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlyc3ROYW1lIiku
dmFsdWU7CiAgICB2YXIgbGFzdE5hbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGFzdE5h
bWUiKS52YWx1ZTsKICAgIHNhdmVUcmF2ZWxJbnN1cmFuY2UoKTsKICAgIHZhciB0cmF2ZWxJbnN1
cmFuY2VGbGFnUmV0YWluID0gdHJhdmVsSW5zdXJhbmNlRmxhZzsKICAgIHZhciBVUkwgPSAiYWRk
Q3JlZGl0RmlsZS5kbz9tZXRob2Q9YWRkJmNyZWRpdEZpbGVOdW1iZXI9IiArIGZpbGVOdW1iZXIg
KyAiJmZpcnN0TmFtZT0iICsgZmlyc3ROYW1lICsgIiZsYXN0TmFtZT0iICsgbGFzdE5hbWU7CiAg
ICAkLmFqYXgoewogICAgICAgIHR5cGU6ICJQT1NUIiwKICAgICAgICB1cmw6IFVSTCwKICAgICAg
ICBjYWNoZTogZmFsc2UsCiAgICAgICAgZGF0YVR5cGU6ICJodG1sIiwKICAgICAgICBzdWNjZXNz
OiBmdW5jdGlvbiAoaHRtbCkgewogICAgICAgICAgICB0cmF2ZWxJbnN1cmFuY2VGbGFnID0gdHJh
dmVsSW5zdXJhbmNlRmxhZ1JldGFpbjsKICAgICAgICAgICAgJCgiIyIgKyBkaXYpLmh0bWwoaHRt
bC50cmltKCkpOwogICAgICAgICAgICBzaG93TG9hZGluZ0ltYWdlQ2xvc2UoKTsKICAgICAgICAg
ICAgaWYgKGh0bWwuaW5kZXhPZigiZXJyb3JtZXNzYWdlX2hvbGQiKSAhPSAtMSkgewogICAgICAg
ICAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIDApOwogICAgICAgICAgICB9CiAgICAgICAgICAg
IHJldGFpblRyYXZlbEluc3VyYW5jZSgpOwogICAgICAgIH0KICAgIH0pOwp9CmZ1bmN0aW9uIGFk
ZENyZWRpdEZpbGVQb3N0Qm9va2luZyhpZCwgZGl2LCBtb2R1bGUpIHsKICAgIHNob3dXYWl0SW1h
Z2UoKTsKICAgIHZhciBmaWxlTnVtYmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNyZWRp
dEZpbGVOdW1iZXIiKS52YWx1ZTsKICAgIHZhciBmaXJzdE5hbWUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZmlyc3ROYW1lIikudmFsdWU7CiAgICB2YXIgbGFzdE5hbWUgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibGFzdE5hbWUiKS52YWx1ZTsKICAgIGlmIChtb2R1bGUgPT0gImNoYW5n
ZVNlYXQiKSB7CiAgICAgICAgdmFyIFVSTCA9ICJhZGRDcmVkaXRGaWxlQ2hhbmdlU2VhdC5kbz9t
ZXRob2Q9YWRkJmNyZWRpdEZpbGVOdW1iZXI9IiArIGZpbGVOdW1iZXIgKyAiJmZpcnN0TmFtZT0i
ICsgZmlyc3ROYW1lICsgIiZsYXN0TmFtZT0iICsgbGFzdE5hbWU7CiAgICB9IGVsc2UgewogICAg
ICAgIGlmIChtb2R1bGUgPT0gImNoYW5nZUZsaWdodCIpIHsKICAgICAgICAgICAgdmFyIFVSTCA9
ICJhZGRDcmVkaXRGaWxlQ2hhbmdlRmxpZ2h0LmRvP21ldGhvZD1hZGQmY3JlZGl0RmlsZU51bWJl
cj0iICsgZmlsZU51bWJlciArICImZmlyc3ROYW1lPSIgKyBmaXJzdE5hbWUgKyAiJmxhc3ROYW1l
PSIgKyBsYXN0TmFtZTsKICAgICAgICB9CiAgICB9CiAgICAkKCIjIiArIGRpdikubG9hZChVUkws
ICIiLCBzaG93TG9hZGluZ0ltYWdlQ2xvc2UpOwp9CmZ1bmN0aW9uIHNldEZhcmVGYXJtYXRUeXBl
KGZhcmVGb3JtYXRWYWx1ZSwgd2luZG93UG9zaXRpb25JZCkgewogICAgaWYgKGZhcmVGb3JtYXRW
YWx1ZSA9PSAiUG9pbnRzIikgewogICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cHJvbW9EZXRhaWxSVCIpKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJw
cm9tb0RldGFpbFJUIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInByb21vRGV0YWlsT1ciKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUi
OwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHJvbW9EZXRhaWxNQyIpLnN0
eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgfQogICAgICAgIGlmIChkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicHJvbW9EZXRhaWxzIikpIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInByb21vRGV0YWlscyIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAg
ICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHJvbW9EZXRhaWxEaXZpZGVyIikpIHsK
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwcm9tb0RldGFpbERpdmlk
ZXIiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAg
ICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiUHJvbW9Db2RlRGl2IikpIHsKICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlByb21vQ29kZURpdiIpLnN0eWxlLmRpc3Bs
YXkgPSAibm9uZSI7CiAgICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHJv
bW9EZXRhaWxEaXZpZGVyIikpIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJwcm9tb0RldGFpbERpdmlkZXIiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAg
ICAgICB9CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInByb21vRGV0YWlsUlQiKSkgewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicHJvbW9EZXRhaWxSVCIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHJvbW9EZXRhaWxPVyIpLnN0eWxlLmRpc3Bs
YXkgPSAiYmxvY2siOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHJvbW9E
ZXRhaWxNQyIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgIH0KICAgICAgICBpZiAo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByb21vRGV0YWlscyIpKSB7CiAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJwcm9tb0RldGFpbHMiKS5zdHlsZS5kaXNwbGF5ID0gImJs
b2NrIjsKICAgICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwcm9tb0RldGFp
bERpdmlkZXIiKSkgewogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBy
b21vRGV0YWlsRGl2aWRlciIpLnN0eWxlLmRpc3BsYXkgPSAiIjsKICAgICAgICAgICAgfQogICAg
ICAgIH0KICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlByb21vQ29kZURpdiIp
KSB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJQcm9tb0NvZGVEaXYiKS5z
dHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJwcm9tb0RldGFpbERpdmlkZXIiKSkgewogICAgICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInByb21vRGV0YWlsRGl2aWRlciIpLnN0eWxlLmRpc3BsYXkgPSAiIjsK
ICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
UG9wb3VwUG9pbnRCZXRhQWxlcnQiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgfQogICAg
aWYgKGRvY3VtZW50LmZsaWdodFNlYXJjaFJURm9ybSkgewogICAgICAgIGRvY3VtZW50LmZsaWdo
dFNlYXJjaFJURm9ybS5lbGVtZW50c1siZmxpZ2h0U2VhcmNoLmZhcmVGb3JtYXRUeXBlIl0udmFs
dWUgPSBmYXJlRm9ybWF0VmFsdWU7CiAgICB9CiAgICBpZiAoZG9jdW1lbnQuZmxpZ2h0U2VhcmNo
TUNGb3JtKSB7CiAgICAgICAgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoTUNGb3JtLmVsZW1lbnRzWyJm
bGlnaHRTZWFyY2guZmFyZUZvcm1hdFR5cGUiXS52YWx1ZSA9IGZhcmVGb3JtYXRWYWx1ZTsKICAg
IH0KICAgIGlmIChkb2N1bWVudC5mbGlnaHRTZWFyY2hPV0Zvcm0pIHsKICAgICAgICBkb2N1bWVu
dC5mbGlnaHRTZWFyY2hPV0Zvcm0uZWxlbWVudHNbImZsaWdodFNlYXJjaC5mYXJlRm9ybWF0VHlw
ZSJdLnZhbHVlID0gZmFyZUZvcm1hdFZhbHVlOwogICAgfQp9CmZ1bmN0aW9uIGFkZFRyYXZlbElu
c3VyYW5jZShjaGVja2JveCwgcGFnZU5hbWUpIHsKICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidG90YWxUb3AiKSkgewogICAgICAgIHZhciBkaXZPYmpzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRvdGFsVG9wIikuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRpdiIpOwogICAgICAg
IGZvciAoaSA9IDA7IGkgPCBkaXZPYmpzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChk
aXZPYmpzW2ldLmdldEF0dHJpYnV0ZSgiaWQiKSAmJiBkaXZPYmpzW2ldLnN0eWxlLmRpc3BsYXkg
IT0gIm5vbmUiKSB7CiAgICAgICAgICAgICAgICBpZiAoZGl2T2Jqc1tpXS5nZXRBdHRyaWJ1dGUo
ImlkIikuaW5kZXhPZigidHJhdmVsRXhwV2l0aFRvdGFsIikgPj0gMCAmJiBjaGVja2JveC52YWx1
ZSA9PSAib24iKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZGl2T2Jqc1tpXS5nZXRBdHRyaWJ1dGUo
ImlkIikuaW5kZXhPZigidHJhdmVsRXhwV2l0aG91dFRvdGFsIikgPj0gMCAmJiBjaGVja2JveC52
YWx1ZSA9PSAib2ZmIikgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQog
ICAgfQogICAgdmFyIGFkZHJlc3NDaGVja0JveFN0YXQgPSAiZmFsc2UiOwogICAgaWYgKGRvY3Vt
ZW50LnJlY2VpcHRGb3JtLmVsZW1lbnRzWyJ2aWV3UHVyY2hhc2VNb2RlbC5pbmZvIl0pIHsKICAg
ICAgICBhZGRyZXNzQ2hlY2tCb3hTdGF0ID0gZG9jdW1lbnQucmVjZWlwdEZvcm0uZWxlbWVudHNb
InZpZXdQdXJjaGFzZU1vZGVsLmluZm8iXS5jaGVja2VkOwogICAgfQogICAgdmFyIGFkZE5ld0Fk
ZHJlc3NTdGF0dXMgPSBmYWxzZTsKICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmV3
QWRkcmVzc0RpdiIpICYmIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJuZXdBZGRyZXNzRGl2Iiku
c3R5bGUuZGlzcGxheSAhPSAibm9uZSIpIHsKICAgICAgICBhZGROZXdBZGRyZXNzU3RhdHVzID0g
dHJ1ZTsKICAgIH0KICAgIHZhciBhZGROZXdDYXJkU3RhdHVzID0gZmFsc2U7CiAgICBpZiAoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5ld0NhcmREaXYiKSAmJiBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibmV3Q2FyZERpdiIpLnN0eWxlLmRpc3BsYXkgIT0gIm5vbmUiKSB7CiAgICAgICAgYWRk
TmV3Q2FyZFN0YXR1cyA9IHRydWU7CiAgICB9CiAgICB2YXIgVVJMID0gIiI7CiAgICBpZiAocGFn
ZU5hbWUgPT0gInBheW1lbnQiKSB7CiAgICAgICAgVVJMID0gImFkZFJlbW92ZVRyYXZlbEluc3Vy
YW5jZS5kbz9tZXRob2Q9dHJhdmVsSW5zdXJhbmNlJmNoZWNrZWQ9IiArIGNoZWNrYm94LnZhbHVl
ICsgIiZhZGRyZXNzQ2hlY2tCb3g9IiArIGFkZHJlc3NDaGVja0JveFN0YXQ7CiAgICB9CiAgICBp
ZiAocGFnZU5hbWUgPT0gInJldmlldyIpIHsKICAgICAgICBVUkwgPSAiYWRkUmVtb3ZlVHJhdmVs
SW5zdXJhbmNlUmV2aWV3LmRvP21ldGhvZD10cmF2ZWxJbnN1cmFuY2UmY2hlY2tlZD0iICsgY2hl
Y2tib3gudmFsdWU7CiAgICB9CiAgICB2YXIgcGFybXMgPSAiIjsKICAgIGlmIChkb2N1bWVudC5y
ZWNlaXB0Rm9ybSkgewogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZG9jdW1lbnQucmVjZWlw
dEZvcm0uZWxlbWVudHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBk
b2N1bWVudC5yZWNlaXB0Rm9ybS5lbGVtZW50c1tpXTsKICAgICAgICAgICAgaWYgKGkgPT0gMCkg
ewogICAgICAgICAgICAgICAgcGFybXMgPSBwYXJtcyArIGVsZW1lbnQubmFtZSArICI9IiArIGVs
ZW1lbnQudmFsdWU7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudC5uYW1lID09ICJ2aWV3UHVyY2hhc2VNb2RlbC53YW5hU2F2ZUNhcmQiICYmIGVsZW1lbnQu
Y2hlY2tlZCAhPSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICBwYXJtcyA9IHBhcm1zICsgIiYiICsgZWxlbWVudC5u
YW1lICsgIj0iICsgZWxlbWVudC52YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0K
ICAgICQuYWpheCh7CiAgICAgICAgdHlwZTogIlBPU1QiLAogICAgICAgIHVybDogVVJMLAogICAg
ICAgIGRhdGE6IHBhcm1zLAogICAgICAgIGRhdGFUeXBlOiAiaHRtbCIsCiAgICAgICAgY2FjaGU6
IGZhbHNlLAogICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJsb2FkaW5nQW5pbWF0aW9uRGl2Iikuc3R5bGUuZGlzcGxheSA9
ICJub25lIjsKICAgICAgICAgICAgaWYgKGNoZWNrYm94LnZhbHVlID09ICJvbiIpIHsKICAgICAg
ICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidHJhdmVsRXhwV2l0aEluc3Vy
YW5jZSIpKSB7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRy
YXZlbEV4cFdpdGhJbnN1cmFuY2UiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0cmF2ZWxF
eHBXaXRoSW5zdXJhbmNlMSIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRyYXZlbEV4cFdpdGhUb3RhbCIpLnN0eWxlLmRp
c3BsYXkgPSAiYmxvY2siOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRyYXZlbEV4cFdpdGhvdXRUb3RhbCIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG90YWxCb3R0b20iKS5pbm5lckhUTUwg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG90YWxUb3AiKS5pbm5lckhUTUw7CiAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRyYXZlbEV4cFdpdGhJbnN1cmFuY2UiKSkgewogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0cmF2ZWxFeHBXaXRoSW5zdXJhbmNlIikuc3R5bGUuZGlzcGxheSA9
ICJub25lIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0cmF2ZWxFeHBXaXRoSW5zdXJhbmNlMSIpLnN0eWxlLmRpc3BsYXkgPSAibm9u
ZSI7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidHJhdmVsRXhwV2l0
aG91dFRvdGFsIikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICAgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidHJhdmVsRXhwV2l0aFRvdGFsIikuc3R5bGUuZGlzcGxheSA9
ICJub25lIjsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b3RhbEJv
dHRvbSIpLmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b3RhbFRvcCIpLmlu
bmVySFRNTDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYWRkTmV3QWRkcmVzc1N0YXR1
cykgewogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5ld0FkZHJlc3NE
aXYiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICAgICAgICAgIGlmIChkb2N1bWVu
dC5yZWNlaXB0Rm9ybS5lbGVtZW50c1sidmlld1B1cmNoYXNlTW9kZWwudXNlU2F2ZWRBZGRyZXNz
Il0pIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZG9jdW1lbnQucmVjZWlw
dEZvcm0uZWxlbWVudHNbInZpZXdQdXJjaGFzZU1vZGVsLnVzZVNhdmVkQWRkcmVzcyJdLmxlbmd0
aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5yZWNlaXB0Rm9y
bS5lbGVtZW50c1sidmlld1B1cmNoYXNlTW9kZWwudXNlU2F2ZWRBZGRyZXNzIl1baV0udmFsdWUg
PT0gIm5ld0FkZHJlc3MiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5y
ZWNlaXB0Rm9ybS5lbGVtZW50c1sidmlld1B1cmNoYXNlTW9kZWwudXNlU2F2ZWRBZGRyZXNzIl1b
aV0uY2hlY2tlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYg
KGFkZE5ld0NhcmRTdGF0dXMpIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJuZXdDYXJkRGl2Iikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICAgICAgICAgICAg
ICBpZiAoZG9jdW1lbnQucmVjZWlwdEZvcm0uZWxlbWVudHNbInZpZXdQdXJjaGFzZU1vZGVsLnVz
ZVNhdmVkQ2FyZCJdKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGRvY3Vt
ZW50LnJlY2VpcHRGb3JtLmVsZW1lbnRzWyJ2aWV3UHVyY2hhc2VNb2RlbC51c2VTYXZlZENhcmQi
XS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQucmVj
ZWlwdEZvcm0uZWxlbWVudHNbInZpZXdQdXJjaGFzZU1vZGVsLnVzZVNhdmVkQ2FyZCJdW2ldLnZh
bHVlID09ICJuZXdDYXJkIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQu
cmVjZWlwdEZvcm0uZWxlbWVudHNbInZpZXdQdXJjaGFzZU1vZGVsLnVzZVNhdmVkQ2FyZCJdW2ld
LmNoZWNrZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgk
KCIjQ29udGFpbmVyUmlnaHQiKS5sZW5ndGggPiAwICYmICQoIiNDb250YWluZXJNaWRkbGUiKS5s
ZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAkKCIjQ29udGFpbmVyUmlnaHQiKS5oZWlnaHQo
KCQoIiNDb250YWluZXJNaWRkbGUiKS5oZWlnaHQoKSAtIDIwKSk7CiAgICAgICAgICAgIH0KICAg
ICAgICB9LAogICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChodG1sKSB7CiAgICAgICAgICAgICQo
IiNib2R5IikuaHRtbChodG1sLnRyaW0oKSk7CiAgICAgICAgfQogICAgfSk7Cn0KZnVuY3Rpb24g
c2hvd0hpZGVUYXhEZXRhaWxzKCkgewogICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJQ
RkMiKS5zdHlsZS5kaXNwbGF5ID09ICJibG9jayIgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
IlBGQyIpLnN0eWxlLmRpc3BsYXkgPT0gIiIpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiUEZDIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiUEZDMSIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInNlY3VyaXR5RmVlIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsK
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VjdXJpdHlGZWUxIikuc3R5bGUuZGlz
cGxheSA9ICJub25lIjsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VnbWVudEZl
ZSIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInNlZ21lbnRGZWUxIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGF4SW1hZ2UiKS5pbm5lckhUTUwgPSAnPGltZyBhbHQ9IiIgc3Jj
PSJodHRwczovL3N0YXRpYy52aXJnaW5hbWVyaWNhLmNvbS9pbWFnZXMvdGF4RmVlc0V4cGFuZC5n
aWYiIG9uY2xpY2s9ImphdmFzY3JpcHQ6c2hvd0hpZGVUYXhEZXRhaWxzKCkiICBvbk1vdXNlT3Zl
cj0iTWFrZUN1cnNvcih0aGlzKSIvPic7CiAgICB9IGVsc2UgewogICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJQRkMiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiUEZDMSIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWN1cml0eUZlZSIpLnN0eWxlLmRpc3BsYXkg
PSAiYmxvY2siOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWN1cml0eUZlZTEi
KS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgic2VnbWVudEZlZSIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJzZWdtZW50RmVlMSIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwog
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXhJbWFnZSIpLmlubmVySFRNTCA9ICc8
aW1nIGFsdD0iIiBzcmM9Imh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy90
YXhGZWVzQ29sbGFwc2UuZ2lmIiBvbmNsaWNrPSJqYXZhc2NyaXB0OnNob3dIaWRlVGF4RGV0YWls
cygpIiAgb25Nb3VzZU92ZXI9Ik1ha2VDdXJzb3IodGhpcykiLz4nOwogICAgfQp9CmZ1bmN0aW9u
IHNob3dIaWRlQUlHVGF4RGV0YWlscyh0YXhJZCwgZmxpZ2h0KSB7CiAgICBpZiAoZmxpZ2h0ID09
ICJvcmlnaW5hbCIpIHsKICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRheEJy
ZWFrZG93biIpLnN0eWxlLmRpc3BsYXkgPT0gImJsb2NrIiB8fCBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGF4QnJlYWtkb3duIikuc3R5bGUuZGlzcGxheSA9PSAiIikgewogICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGF4QnJlYWtkb3duIikuc3R5bGUuZGlzcGxheSA9ICJu
b25lIjsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRheEltYWdlQWlnIiku
aW5uZXJIVE1MID0gJzxpbWcgYWx0PSIiIGlkPSInICsgdGF4SWQgKyAnIiBzcmM9Imh0dHBzOi8v
c3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy90YXhGZWVzRXhwYW5kLmdpZiIgb25jbGlj
az0iamF2YXNjcmlwdDpzaG93SGlkZUFJR1RheERldGFpbHModGhpcy5pZCwnICsgIiciICsgZmxp
Z2h0ICsgIiciICsgJykiICBvbk1vdXNlT3Zlcj0iTWFrZUN1cnNvcih0aGlzKSIvPic7CiAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRheEJyZWFr
ZG93biIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGF4SW1hZ2VBaWciKS5pbm5lckhUTUwgPSAnPGltZyBhbHQ9IiIgaWQ9Iicg
KyB0YXhJZCArICciIHNyYz0iaHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2Vz
L3RheEZlZXNDb2xsYXBzZS5naWYiIG9uY2xpY2s9ImphdmFzY3JpcHQ6c2hvd0hpZGVBSUdUYXhE
ZXRhaWxzKHRoaXMuaWQsJyArICInIiArIGZsaWdodCArICInIiArICcpIiAgb25Nb3VzZU92ZXI9
Ik1ha2VDdXJzb3IodGhpcykiLz4nOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgaWYg
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXhCcmVha2Rvd25OZXciKS5zdHlsZS5kaXNwbGF5
ID09ICJibG9jayIgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRheEJyZWFrZG93bk5ldyIp
LnN0eWxlLmRpc3BsYXkgPT0gIiIpIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRheEJyZWFrZG93bk5ldyIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXhJbWFnZU5ldyIpLmlubmVySFRNTCA9ICc8aW1n
IGFsdD0iIiBpZD0iJyArIHRheElkICsgJyIgc3JjPSJodHRwczovL3N0YXRpYy52aXJnaW5hbWVy
aWNhLmNvbS9pbWFnZXMvdGF4RmVlc0V4cGFuZC5naWYiIG9uY2xpY2s9ImphdmFzY3JpcHQ6c2hv
d0hpZGVBSUdUYXhEZXRhaWxzKHRoaXMuaWQsJyArICInIiArIGZsaWdodCArICInIiArICcpIiAg
b25Nb3VzZU92ZXI9Ik1ha2VDdXJzb3IodGhpcykiLz4nOwogICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXhCcmVha2Rvd25OZXciKS5zdHlsZS5k
aXNwbGF5ID0gImJsb2NrIjsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRh
eEltYWdlTmV3IikuaW5uZXJIVE1MID0gJzxpbWcgYWx0PSIiIGlkPSInICsgdGF4SWQgKyAnIiBz
cmM9Imh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy90YXhGZWVzQ29sbGFw
c2UuZ2lmIiBvbmNsaWNrPSJqYXZhc2NyaXB0OnNob3dIaWRlQUlHVGF4RGV0YWlscyh0aGlzLmlk
LCcgKyAiJyIgKyBmbGlnaHQgKyAiJyIgKyAnKSIgIG9uTW91c2VPdmVyPSJNYWtlQ3Vyc29yKHRo
aXMpIi8+JzsKICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gc2hvd0NvbXBhbmlvbnNMaXN0KG9i
aklkKSB7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvYmpJZCkuc3R5bGUud2lkdGggPSAi
NDIwcHgiOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob2JqSWQpLnN0eWxlLmRpc3BsYXkg
PSAiaW5saW5lIjsKfQpmdW5jdGlvbiBDaGFuZ2VGb3JtVmFsdWUob3B0dmFsLCBudW0pIHsKICAg
IHZhciB2YWx1ZXMgPSBuZXcgU3RyaW5nKG9wdHZhbCk7CiAgICB2YXIgc3RyID0gb3B0dmFsLnNw
bGl0KCJ8Iik7CiAgICB2YXIgdGl0bGVPYmogPSBkb2N1bWVudC5kaXNwbGF5UHVyY2hhc2VGb3Jt
LmVsZW1lbnRzWyJ2aWV3UHVyY2hhc2UudGl0bGVbIiArIG51bSArICJdIl07CiAgICB2YXIgb3B0
aW9uID0gdGl0bGVPYmoub3B0aW9uczsKICAgIHRpdGxlT2JqLnZhbHVlID0gc3RyWzBdOwogICAg
dmFyIHByZWZpeCA9IHN0clswXTsKICAgIGlmIChwcmVmaXggPT0gIk1yIikgewogICAgICAgIG9w
dGlvbi5zZWxlY3RlZEluZGV4ID0gMDsKICAgIH0KICAgIGlmIChwcmVmaXggPT0gIk1ycyIpIHsK
ICAgICAgICBvcHRpb24uc2VsZWN0ZWRJbmRleCA9IDE7CiAgICB9CiAgICBpZiAocHJlZml4ID09
ICJNaXNzIChBZHVsdCkiKSB7CiAgICAgICAgb3B0aW9uLnNlbGVjdGVkSW5kZXggPSAyOwogICAg
fQogICAgaWYgKHByZWZpeCA9PSAiTWlzcyAoQ2hpbGQpIikgewogICAgICAgIG9wdGlvbi5zZWxl
Y3RlZEluZGV4ID0gMzsKICAgIH0KICAgIGlmIChwcmVmaXggPT0gIk1zIikgewogICAgICAgIG9w
dGlvbi5zZWxlY3RlZEluZGV4ID0gNDsKICAgIH0KICAgIGlmIChwcmVmaXggPT0gIk1zdHIgKENo
aWxkKSIpIHsKICAgICAgICBvcHRpb24uc2VsZWN0ZWRJbmRleCA9IDU7CiAgICB9CiAgICBDaGFu
Z2VHdWVzdFR5cGUocHJlZml4LCBkb2N1bWVudC5kaXNwbGF5UHVyY2hhc2VGb3JtLmVsZW1lbnRz
WyJ2aWV3UHVyY2hhc2UuZ3Vlc3RUeXBlWyIgKyBudW0gKyAiXSJdKTsKICAgIGRvY3VtZW50LmRp
c3BsYXlQdXJjaGFzZUZvcm0uZWxlbWVudHNbInZpZXdQdXJjaGFzZS5maXJzdE5hbWVbIiArIG51
bSArICJdIl0udmFsdWUgPSBzdHJbMV07CiAgICBkb2N1bWVudC5kaXNwbGF5UHVyY2hhc2VGb3Jt
LmVsZW1lbnRzWyJ2aWV3UHVyY2hhc2UubGFzdE5hbWVbIiArIG51bSArICJdIl0udmFsdWUgPSBz
dHJbMl07CiAgICBkb2N1bWVudC5kaXNwbGF5UHVyY2hhc2VGb3JtLmVsZW1lbnRzWyJ2aWV3UHVy
Y2hhc2UuZ3Vlc3ROdW1iZXJbIiArIG51bSArICJdIl0udmFsdWUgPSBzdHJbM107Cn0KZnVuY3Rp
b24gc3dpdGNoUGF5bWVudFR5cGUocGF5bWVudFR5cGUsIGlkKSB7CiAgICBzaG93V2FpdEltYWdl
KCk7CiAgICBkb2N1bWVudC5iYXJGb3JtLm1ldGhvZC52YWx1ZSA9ICJzd2l0Y2hQYXltZW50VHlw
ZSI7CiAgICBkb2N1bWVudC5iYXJGb3JtLnRhYlNlbGVjdC52YWx1ZSA9ICI1IjsKICAgIGRvY3Vt
ZW50LmJhckZvcm0uYWN0aW9uID0gInN3aXRjaFBheW1lbnRUeXBlLmRvP3BheW1lbnRUeXBlPSIg
KyBwYXltZW50VHlwZTsKICAgIGRvY3VtZW50LmJhckZvcm0uc3VibWl0KCk7Cn0KdmFyIG1haW50
YWluX0NDUHJlU2NyZWVuU3RhdHVzOwp2YXIgbXlCYXJjbGF5c0NyZWRpdENhcmR3V2luZG93OwoK
ZnVuY3Rpb24gb3BlbkJhcmNsYXlzQ3JlZGl0Q2FyZChmaXJzdERpdklkLCBzZWNvbmREaXZJZCwg
c3RhdHVzSWQpIHsKICAgIGlmIChmaXJzdERpdklkICE9ICJCYXJjbGF5c1ByZWFwcHJvdmVkUmln
aHRCYXJJRCIpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmaXJzdERpdklkKS5z
dHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgfQogICAgZm9ybURhdGFIZXggPSByZWdlbk1ENShk
b2N1bWVudC5iYXJjbGF5c0NyZWRpdENhcmRQcm9tcHRGb3JtLCBzdGF0dXNJZCk7CiAgICBkb2N1
bWVudC5iYXJjbGF5c0NyZWRpdENhcmRQcm9tcHRGb3JtLlNJR05BVFVSRS52YWx1ZSA9IGZvcm1E
YXRhSGV4OwogICAgb3BlblBvcFVwKCk7Cn0KZnVuY3Rpb24gb3BlblBvcFVwKCkgewogICAgZG9j
dW1lbnQuYmFyY2xheXNDcmVkaXRDYXJkUHJvbXB0Rm9ybS50YXJnZXQgPSAiQmFyY2xheXNDcmVk
aXRDYXJkUG9wVXBXaW5kb3ciOwogICAgdmFyIGVsZW1lbnRzVG9CZVVwcGVyID0gIkZJUlNUTkFN
RSxMQVNUTkFNRSxFTUFJTCxBRERSRVNTMSxDSVRZLFNUQVRFLFBPU1RBTENPREUsQUREUkVTUzIi
OwogICAgZm9yIChlbGVDbnQgPSAwOyBlbGVDbnQgPCBkb2N1bWVudC5iYXJjbGF5c0NyZWRpdENh
cmRQcm9tcHRGb3JtLmVsZW1lbnRzLmxlbmd0aDsgZWxlQ250KyspIHsKICAgICAgICBvYmplY3RF
bGUgPSBkb2N1bWVudC5iYXJjbGF5c0NyZWRpdENhcmRQcm9tcHRGb3JtLmVsZW1lbnRzW2VsZUNu
dF07CiAgICAgICAgaWYgKGVsZW1lbnRzVG9CZVVwcGVyLmluZGV4T2Yob2JqZWN0RWxlLm5hbWUp
ID4gLTEpIHsKICAgICAgICAgICAgb2JqZWN0RWxlLnZhbHVlID0gKG9iamVjdEVsZS52YWx1ZSku
dG9VcHBlckNhc2UoKTsKICAgICAgICB9CiAgICB9CiAgICBkb2N1bWVudC5iYXJjbGF5c0NyZWRp
dENhcmRQcm9tcHRGb3JtLnN1Ym1pdCgpOwp9CmZ1bmN0aW9uIHJlZ2VuTUQ1KGYsIHN0YXR1c0lk
KSB7CiAgICBwbGFpbiA9ICIiOwogICAgcGxhaW4gKz0gIlNFU1NJT049IiArIGYuU0VTU0lPTi52
YWx1ZTsKICAgIHBsYWluICs9ICI6UkVUVVJMPSIgKyBmLlJFVFVSTC52YWx1ZTsKICAgIHBsYWlu
ICs9ICI6U0VTU0lPTlNUQVRFPSIgKyBmLlNFU1NJT05TVEFURS52YWx1ZTsKICAgIGlmIChzdGF0
dXNJZCA9PSAiQVBQUk9WRUQiKSB7CiAgICAgICAgcGxhaW4gKz0gIjpQUkVTQ1JFRU5JRD0iICsg
Zi5QUkVTQ1JFRU5JRC52YWx1ZTsKICAgIH0gZWxzZSB7CiAgICAgICAgcGxhaW4gKz0gIjpQUkVT
Q1JFRU5JRD0iOwogICAgfQogICAgcGxhaW4gKz0gIjpMQVNUTkFNRT0iICsgZi5MQVNUTkFNRS52
YWx1ZTsKICAgIHBsYWluICs9ICI6UEFTU1dPUkQ9IiArIGYuUEFTU1dPUkQudmFsdWU7CiAgICBy
ZXR1cm4gaGV4X21kNShwbGFpbik7Cn0KZnVuY3Rpb24gc3RhdHVzVXBkYXRlUHJlU2NyZWVuV2l0
aEFKQVgoZmlyc3REaXZJZCwgYWN0aW9uTW9kZSwgQ0NQcmVTY2VlZW5JZCwgQ0NQcmVTY3JlZW5T
dGF0dXMsIGNjRk5hbWUsIGNjTE5hbWUpIHsKICAgIG15VXJsID0gImNyZWRpdENhcmRQb3N0QmFj
ay5kbz9tZXRob2Q9Z2V0Q2xvc2VQcmVBcHByb3ZlZFNjcmVlbiZhY3Rpb25Nb2RlPSIgKyBhY3Rp
b25Nb2RlICsgIiZDQ1ByZVNjZWVlbklkPSIgKyBDQ1ByZVNjZWVlbklkICsgIiZDQ1ByZVNjcmVl
blN0YXR1cz0iICsgQ0NQcmVTY3JlZW5TdGF0dXMgKyAiJmNjRk5hbWU9IiArIGNjRk5hbWUgKyAi
JmNjTE5hbWU9IiArIGNjTE5hbWU7CiAgICB2YXIgdGhldGltZSA9IG5ldyBEYXRlKCk7CiAgICB2
YXIgZHVtbXkgPSAiIiArIHRoZXRpbWUuZ2V0SG91cnMoKSArIHRoZXRpbWUuZ2V0TWludXRlcygp
ICsgdGhldGltZS5nZXRTZWNvbmRzKCk7CiAgICBteVVybCA9IG15VXJsICsgIiZkdW1teT0iICsg
ZHVtbXk7CiAgICBpZiAoYWN0aW9uTW9kZSA9PSAieWVzIikgewogICAgICAgIG1haW50YWluX0ND
UHJlU2NyZWVuU3RhdHVzID0gQ0NQcmVTY3JlZW5TdGF0dXM7CiAgICAgICAgbXlCYXJjbGF5c0Ny
ZWRpdENhcmR3V2luZG93ID0gd2luZG93Lm9wZW4oIi9odG1sL1Zpcmdpbl9BbWVyaWNhX0NyZWRp
dF9DYXJkLmh0bWwiLCAiQmFyY2xheXNDcmVkaXRDYXJkUG9wVXBXaW5kb3ciLCAidG9vbGJhcj1u
byxzdGF0dXM9eWVzLG1lbnViYXI9bm8sbG9jYXRpb249bm8sc2Nyb2xsYmFycz15ZXMscmVzaXph
YmxlPW5vLCB0b3A9IiArIDIwMCArICIsIGxlZnQ9IiArIDEwMCArICIsIHdpZHRoPSIgKyA4NDAg
KyAiLGhlaWdodD0iICsgNzAwKTsKICAgICAgICBhamF4T3BlblZBQ3JlZGl0Q2FyZChteVVybCwg
Zmlyc3REaXZJZCk7CiAgICB9IGVsc2UgewogICAgICAgIGFqYXhWQUNyZWRpdENhcmRXaXRoQmFy
Y2xheXMobXlVcmwsIGZpcnN0RGl2SWQpOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJCYXJjbGF5c1ByZWFwcHJvdmVkSUQiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgfQog
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpc2FibGVUb3RhbFBhZ2UiKS5zdHlsZS5kaXNw
bGF5ID0gIm5vbmUiOwp9CmZ1bmN0aW9uIGFqYXhWQUNyZWRpdENhcmRXaXRoQmFyY2xheXMobXl1
cmwsIGRpdjEpIHsKICAgIHhtbGh0dHAgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAgIHZhciB0
aGV0aW1lID0gbmV3IERhdGUoKTsKICAgIHZhciBkdW1teSA9ICIiICsgdGhldGltZS5nZXRIb3Vy
cygpICsgdGhldGltZS5nZXRNaW51dGVzKCkgKyB0aGV0aW1lLmdldFNlY29uZHMoKTsKICAgIG15
dXJsID0gbXl1cmwgKyAiJmR1bW15PSIgKyBkdW1teTsKICAgIGFqYXhEaXYgPSBkaXYxOwogICAg
eG1saHR0cC5vcGVuKCJQT1NUIiwgbXl1cmwsIHRydWUpOwogICAgeG1saHR0cC5vbnJlYWR5c3Rh
dGVjaGFuZ2UgPSBoYW5kbGVSZXNwb25zZVZBQ3JlZGl0Q2FyZFdpdGhCYXJjbGF5czsKICAgIHht
bGh0dHAuc2VuZCgiIik7Cn0KZnVuY3Rpb24gaGFuZGxlUmVzcG9uc2VWQUNyZWRpdENhcmRXaXRo
QmFyY2xheXMoKSB7CiAgICBpZiAoeG1saHR0cC5yZWFkeVN0YXRlID09IDQpIHsKICAgICAgICBp
ZiAoeG1saHR0cC5zdGF0dXMgPT0gMjAwKSB7CiAgICAgICAgICAgIGlmICh4bWxodHRwLnJlc3Bv
bnNlVGV4dCAhPSAiIikge30KICAgICAgICB9CiAgICB9Cn0KdmFyIGlzQkNDRXJyb3IgPSBmYWxz
ZTsKCmZ1bmN0aW9uIGFqYXhPcGVuVkFDcmVkaXRDYXJkKG15dXJsLCBkaXYxKSB7CiAgICAkLmFq
YXgoewogICAgICAgIHR5cGU6ICJQT1NUIiwKICAgICAgICB1cmw6IG15dXJsLAogICAgICAgIGNh
Y2hlOiBmYWxzZSwKICAgICAgICBkYXRhVHlwZTogInNjcmlwdCIsCiAgICAgICAgc3VjY2Vzczog
ZnVuY3Rpb24gKGh0bWwpIHsKICAgICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJpc0JDQ0Vycm9yIikpIHsKICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiaXNCQ0NFcnJvciIpLnZhbHVlID09ICJ0cnVlIikgewogICAgICAgICAgICAgICAgICAg
IGlzQkNDRXJyb3IgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAg
ICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkaXYxKSkgewogICAgICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGl2MSkuc3R5bGUuZGlzcGxheSA9ICJub25lIjsK
ICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIWlzQkNDRXJyb3IpIHsKICAgICAgICAgICAg
ICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQmFyY2xheXNDcmVkaXRDYXJkUG9wVXAi
KSkgewogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJCYXJjbGF5
c0NyZWRpdENhcmRQb3BVcCIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgb3BlbkJhcmNsYXlzQ3JlZGl0Q2FyZCgiQmFyY2xheXNQcmVh
cHByb3ZlZElEIiwgIkJhcmNsYXlzQ3JlZGl0Q2FyZFBvcFVwIiwgbWFpbnRhaW5fQ0NQcmVTY3Jl
ZW5TdGF0dXMpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSk7Cn0KdmFyIHNfYWNjb3Vu
dCA9IHNldE9tbml0dXJlRW52KCk7CnZhciBzID0gc19naShzX2FjY291bnQpOwpzLmN1cnJlbmN5
Q29kZSA9ICJVU0QiOwpzLnRyYWNrRG93bmxvYWRMaW5rcyA9IHRydWU7CnMudHJhY2tFeHRlcm5h
bExpbmtzID0gdHJ1ZTsKcy50cmFja0lubGluZVN0YXRzID0gdHJ1ZTsKcy5saW5rRG93bmxvYWRG
aWxlVHlwZXMgPSAiZXhlLHppcCx3YXYsbXAzLG1vdixtcGcsYXZpLHdtdixkb2MscGRmLHhscyI7
CnMubGlua0ludGVybmFsRmlsdGVycyA9ICJqYXZhc2NyaXB0Oix2aXJnaW5hbWVyaWNhLmNvbSI7
CnMubGlua0xlYXZlUXVlcnlTdHJpbmcgPSBmYWxzZTsKcy5saW5rVHJhY2tWYXJzID0gIk5vbmUi
OwpzLmxpbmtUcmFja0V2ZW50cyA9ICJOb25lIjsKcy51c2VQbHVnaW5zID0gdHJ1ZTsKCmZ1bmN0
aW9uIHNfZG9QbHVnaW5zKHMpIHsKICAgIGlmIChzLmV2ZW50cykgewogICAgICAgIGlmIChzLmV2
ZW50cy5pbmRleE9mKCJldmVudDEiKSA+IC0xKSB7CiAgICAgICAgICAgIHMucHJvcDE4ID0gInN0
YXJ0IjsKICAgICAgICAgICAgcy5ndGN0eXBlID0gImJvb2tpbmciOwogICAgICAgIH0KICAgICAg
ICBpZiAocy5ldmVudHMuaW5kZXhPZigicHVyY2hhc2UiKSA+IC0xKSB7CiAgICAgICAgICAgIHMu
cHJvcDE4ID0gInN0b3AiOwogICAgICAgICAgICBzLmd0Y3R5cGUgPSAiYm9va2luZyI7CiAgICAg
ICAgICAgIHMucHJvcDE5ID0gIkJvb2tpbmcgUHJvY2VzcyI7CiAgICAgICAgfQogICAgICAgIGlm
IChzLmV2ZW50cy5pbmRleE9mKCJldmVudDQ1IikgPiAtMSkgewogICAgICAgICAgICBzLnByb3Ax
OCA9ICJzdGFydCI7CiAgICAgICAgICAgIHMuZ3RjdHlwZSA9ICJDaGVjay1JbiI7CiAgICAgICAg
fQogICAgICAgIGlmIChzLmV2ZW50cy5pbmRleE9mKCJldmVudDciKSA+IC0xKSB7CiAgICAgICAg
ICAgIHMucHJvcDE4ID0gInN0b3AiOwogICAgICAgICAgICBzLmd0Y3R5cGUgPSAiQ2hlY2stSW4i
OwogICAgICAgICAgICBzLnByb3AxOSA9ICJDaGVjay1JbiI7CiAgICAgICAgfQogICAgICAgIGlm
IChzLmV2ZW50cy5pbmRleE9mKCJldmVudDE3IikgPiAtMSkgewogICAgICAgICAgICBzLnByb3Ax
OCA9ICJzdGFydCI7CiAgICAgICAgICAgIHMuZ3RjdHlwZSA9ICJDaGFuZ2VTZWF0IjsKICAgICAg
ICB9CiAgICAgICAgaWYgKHMuZXZlbnRzLmluZGV4T2YoImV2ZW50MjAiKSA+IC0xKSB7CiAgICAg
ICAgICAgIHMucHJvcDE4ID0gInN0b3AiOwogICAgICAgICAgICBzLmd0Y3R5cGUgPSAiQ2hhbmdl
U2VhdCI7CiAgICAgICAgICAgIHMucHJvcDE5ID0gIkNoYW5nZSBTZWF0IjsKICAgICAgICB9CiAg
ICAgICAgaWYgKHMuZXZlbnRzLmluZGV4T2YoImV2ZW50NDYiKSA+IC0xKSB7CiAgICAgICAgICAg
IHMucHJvcDE4ID0gInN0YXJ0IjsKICAgICAgICAgICAgcy5ndGN0eXBlID0gIkNoYW5nZUZsaWdo
dCI7CiAgICAgICAgfQogICAgICAgIGlmIChzLmV2ZW50cy5pbmRleE9mKCJldmVudDExIikgPiAt
MSkgewogICAgICAgICAgICBzLnByb3AxOCA9ICJzdG9wIjsKICAgICAgICAgICAgcy5ndGN0eXBl
ID0gIkNoYW5nZUZsaWdodCI7CiAgICAgICAgICAgIHMucHJvcDE5ID0gIkNoYW5nZSBGbGlnaHQi
OwogICAgICAgIH0KICAgICAgICBpZiAocy5ldmVudHMuaW5kZXhPZigiZXZlbnQ0OCIpID4gLTEp
IHsKICAgICAgICAgICAgcy5wcm9wMTggPSAic3RhcnQiOwogICAgICAgICAgICBzLmd0Y3R5cGUg
PSAiQ2FuY2VsIjsKICAgICAgICB9CiAgICAgICAgaWYgKHMuZXZlbnRzLmluZGV4T2YoImV2ZW50
MTAiKSA+IC0xKSB7CiAgICAgICAgICAgIHMucHJvcDE4ID0gInN0b3AiOwogICAgICAgICAgICBz
Lmd0Y3R5cGUgPSAiQ2FuY2VsIjsKICAgICAgICAgICAgcy5wcm9wMTkgPSAiQ2FuY2VsIEZsaWdo
dCI7CiAgICAgICAgfQogICAgICAgIHMucHJvcDE4ID0gcy5nZXRUaW1lVG9Db21wbGV0ZShzLnBy
b3AxOCwgcy5ndGN0eXBlLCAwKTsKICAgICAgICBpZiAocy5ldmVudHMuaW5kZXhPZigiZXZlbnQ0
NCIpID4gLTEpIHsKICAgICAgICAgICAgcy5ldmVudHMgPSBzLmdldFZhbE9uY2Uocy5ldmVudHMs
ICJldmVudDQ0IiwgMCk7CiAgICAgICAgfQogICAgfQogICAgcy5jYW1wYWlnbiA9IHMuZ2V0UXVl
cnlQYXJhbSgidGlkIik7CiAgICBpZiAoIXMuY2FtcGFpZ24pIHsKICAgICAgICBzLmNhbXBhaWdu
ID0gcy5nZXRRdWVyeVBhcmFtKCJjaWQiKTsKICAgICAgICBzLmNhbXBhaWduID0gcy5nZXRWYWxP
bmNlKHMuY2FtcGFpZ24sICJleHRjbXBnbiIsIDApOwogICAgfQogICAgaWYgKCFzLmVWYXI0NCkg
ewogICAgICAgIHMuZVZhcjQ0ID0gcy5nZXRRdWVyeVBhcmFtKCJlaWQiKTsKICAgIH0KICAgIGlm
ICghcy5jYW1wYWlnbikgewogICAgICAgIHMuY2FtcGFpZ24gPSBzLmdldFF1ZXJ5UGFyYW0oImVp
ZCIpOwogICAgfQogICAgaWYgKCFzLmVWYXIzMCkgewogICAgICAgIHMuZVZhcjMwID0gcy5nZXRR
dWVyeVBhcmFtKCJpbnQiKTsKICAgICAgICBzLmVWYXIzMCA9IHMuZ2V0VmFsT25jZShzLmVWYXIz
MCwgImludGNtcGduIiwgMCk7CiAgICB9CiAgICB2YXIgdGVtcGhyID0gcy5nZXRUaW1lUGFydGlu
ZygiaCIsICItOCIsIG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSk7CiAgICB2YXIgdGVtcGRheSA9
IHMuZ2V0VGltZVBhcnRpbmcoImQiLCAiLTgiLCBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkpOwog
ICAgdmFyIHRlbXB3ZWVrID0gcy5nZXRUaW1lUGFydGluZygidyIsICItOCIsIG5ldyBEYXRlKCku
Z2V0RnVsbFllYXIoKSk7CiAgICBpZiAodGVtcGhyKSB7CiAgICAgICAgcy5wcm9wMTQgPSBzLmVW
YXIxOSA9IHRlbXB3ZWVrICsgIiA6ICIgKyB0ZW1wZGF5ICsgIiA6ICIgKyB0ZW1waHI7CiAgICB9
CiAgICBpZiAocy5wcm9wMjApIHsKICAgICAgICBzLmVWYXIzMSA9IHMucHJvcDIwOwogICAgfQog
ICAgaWYgKHMuZVZhcjMwKSB7CiAgICAgICAgcy5wcm9wMTcgPSBzLmVWYXIzMDsKICAgIH0KICAg
IGlmIChzLnByb3AyMSkgewogICAgICAgIHMuZVZhcjQyID0gcy5wcm9wMjE7CiAgICB9CiAgICBp
ZiAocy5wcm9wMjIpIHsKICAgICAgICBzLmVWYXI0MyA9IHMucHJvcDIyOwogICAgfQogICAgaWYg
KHMuY2FtcGFpZ24pIHsKICAgICAgICBzLmVWYXI0MSA9IHMuY2FtcGFpZ247CiAgICB9Cn0Kcy5k
b1BsdWdpbnMgPSBzX2RvUGx1Z2luczsKcy5nZXRRdWVyeVBhcmFtID0gbmV3IEZ1bmN0aW9uKCJw
IiwgImQiLCAidSIsICIiICsgInZhciBzPXRoaXMsdj0nJyxpLHQ7ZD1kP2Q6Jyc7dT11P3U6KHMu
cGFnZVVSTD9zLnBhZ2VVUkw6cy53ZC5sb2NhdGkiICsgIm9uKTtpZih1PT0nZicpdT1zLmd0ZnMo
KS5sb2NhdGlvbjt3aGlsZShwKXtpPXAuaW5kZXhPZignLCcpO2k9aTwwP3AiICsgIi5sZW5ndGg6
aTt0PXMucF9ncHYocC5zdWJzdHJpbmcoMCxpKSx1KycnKTtpZih0KXYrPXY/ZCt0OnQ7cD1wLnN1
YnMiICsgInRyaW5nKGk9PXAubGVuZ3RoP2k6aSsxKX1yZXR1cm4gdiIpOwpzLnBfZ3B2ID0gbmV3
IEZ1bmN0aW9uKCJrIiwgInUiLCAiIiArICJ2YXIgcz10aGlzLHY9JycsaT11LmluZGV4T2YoJz8n
KSxxO2lmKGsmJmk+LTEpe3E9dS5zdWJzdHJpbmcoaSsxKTt2IiArICI9cy5wdChxLCcmJywncF9n
dmYnLGspfXJldHVybiB2Iik7CnMucF9ndmYgPSBuZXcgRnVuY3Rpb24oInQiLCAiayIsICIiICsg
ImlmKHQpe3ZhciBzPXRoaXMsaT10LmluZGV4T2YoJz0nKSxwPWk8MD90OnQuc3Vic3RyaW5nKDAs
aSksdj1pPDA/J1QiICsgInJ1ZSc6dC5zdWJzdHJpbmcoaSsxKTtpZihwLnRvTG93ZXJDYXNlKCk9
PWsudG9Mb3dlckNhc2UoKSlyZXR1cm4gcy4iICsgImVwYSh2KX1yZXR1cm4gJyciKTsKcy5nZXRW
YWxPbmNlID0gbmV3IEZ1bmN0aW9uKCJ2IiwgImMiLCAiZSIsICIiICsgInZhciBzPXRoaXMsaz1z
LmNfcihjKSxhPW5ldyBEYXRlO2U9ZT9lOjA7aWYodil7YS5zZXRUaW1lKGEuZ2V0VGltZSgiICsg
IikrZSo4NjQwMDAwMCk7cy5jX3coYyx2LGU/YTowKTt9cmV0dXJuIHY9PWs/Jyc6diIpOwpzLmdl
dFRpbWVQYXJ0aW5nID0gbmV3IEZ1bmN0aW9uKCJ0IiwgInoiLCAieSIsICIiICsgImRjPW5ldyBE
YXRlKCcxLzEvMjAwMCcpO2Y9MTU7bmU9ODtpZihkYy5nZXREYXkoKSE9Nnx8IiArICJkYy5nZXRN
b250aCgpIT0wKXtyZXR1cm4nRGF0YSBOb3QgQXZhaWxhYmxlJ31lbHNlezt6PXBhcnNlSW50KHop
OyIgKyAiaWYoeT09JzIwMDknKXtmPTg7bmU9MX07Z21hcj1uZXcgRGF0ZSgnMy8xLycreSk7ZHN0
cz1mLWdtYXIuZ2V0RGF5KCIgKyAiKTtnbm92PW5ldyBEYXRlKCcxMS8xLycreSk7ZHN0ZT1uZS1n
bm92LmdldERheSgpO3Nwcj1uZXcgRGF0ZSgnMy8nIiArICIrZHN0cysnLycreSk7Zmw9bmV3IERh
dGUoJzExLycrZHN0ZSsnLycreSk7Y2Q9bmV3IERhdGUoKTsiICsgImlmKGNkPnNwciYmY2Q8Zmwp
e3o9eisxfWVsc2V7ej16fTt1dGM9Y2QuZ2V0VGltZSgpKyhjZC5nZXRUaW1lem9uZU8iICsgImZm
c2V0KCkqNjAwMDApO3R6PW5ldyBEYXRlKHV0YyArICgzNjAwMDAwKnopKTt0aGlzeT10ei5nZXRG
dWxsWWVhcigiICsgIik7dmFyIGRheXM9WydTdW5kYXknLCdNb25kYXknLCdUdWVzZGF5JywnV2Vk
bmVzZGF5JywnVGh1cnNkYXknLCdGciIgKyAiaWRheScsJ1NhdHVyZGF5J107aWYodGhpc3khPXkp
e3JldHVybidEYXRhIE5vdCBBdmFpbGFibGUnfWVsc2V7O3RoaSIgKyAic2g9dHouZ2V0SG91cnMo
KTt0aGlzbWluPXR6LmdldE1pbnV0ZXMoKTt0aGlzZD10ei5nZXREYXkoKTt2YXIgZG93PSIgKyAi
ZGF5c1t0aGlzZF07dmFyIGFwPSdBTSc7dmFyIGR0PSdXZWVrZGF5Jzt2YXIgbWludD0nMDAnO2lm
KHRoaXNtaW4+MyIgKyAiMCl7bWludD0nMzAnfWlmKHRoaXNoPj0xMil7YXA9J1BNJzt0aGlzaD10
aGlzaC0xMn07aWYgKHRoaXNoPT0wKXt0aCIgKyAiaXNoPTEyfTtpZih0aGlzZD09Nnx8dGhpc2Q9
PTApe2R0PSdXZWVrZW5kJ307dmFyIHRpbWVzdHJpbmc9dGhpc2grJyIgKyAiOicrbWludCthcDt2
YXIgZGF5c3RyaW5nPWRvdzt2YXIgZW5kc3RyaW5nPWR0O2lmKHQ9PSdoJyl7cmV0dXJuIHRpbSIg
KyAiZXN0cmluZ31pZih0PT0nZCcpe3JldHVybiBkYXlzdHJpbmd9O2lmKHQ9PSd3Jyl7cmV0dXJu
IGVuIiArICJkc3RyaW5nfX19OyIpOwpzLmdldFRpbWVUb0NvbXBsZXRlID0gbmV3IEZ1bmN0aW9u
KCJ2IiwgImNuIiwgImUiLCAiIiArICJ2YXIgcz10aGlzLGQ9bmV3IERhdGUseD1kLGs7aWYoIXMu
dHRjcil7ZT1lP2U6MDtpZih2PT0nc3RhcnQnfHx2PT0nIiArICJzdG9wJylzLnR0Y3I9MTt4LnNl
dFRpbWUoeC5nZXRUaW1lKCkrZSo4NjQwMDAwMCk7aWYodj09J3N0YXJ0Jyl7cy5jIiArICJfdyhj
bixkLmdldFRpbWUoKSxlP3g6MCk7cmV0dXJuICcnO31pZih2PT0nc3RvcCcpe2s9cy5jX3IoY24p
O2lmKCFzIiArICIuY193KGNuLCcnLGQpfHwhaylyZXR1cm4gJyc7dj0oZC5nZXRUaW1lKCktaykv
MTAwMDt2YXIgdGQ9ODY0MDAsdGg9IiArICIzNjAwLHRtPTYwLHI9NSx1LHVuO2lmKHY+dGQpe3U9
dGQ7dW49J2RheXMnO31lbHNlIGlmKHY+dGgpe3U9dGg7dW49IiArICInaG91cnMnO31lbHNlIGlm
KHY+dG0pe3I9Mjt1PXRtO3VuPSdtaW51dGVzJzt9ZWxzZXtyPS4yO3U9MTt1bj0nc2VjIiArICJv
bmRzJzt9dj12KnIvdTtyZXR1cm4gKE1hdGgucm91bmQodikvcikrJyAnK3VuO319cmV0dXJuICcn
OyIpOwpzLnZpc2l0b3JOYW1lc3BhY2UgPSAidmlyZ2luYW1lcmljYSI7CnMuZGMgPSAxMTI7CnZh
ciBzX2NvZGUgPSAiIiwKICAgIHNfb2JqZWN0SUQ7CgpmdW5jdGlvbiBzX2dpKHVuLCBwZywgc3Mp
IHsKICAgIHZhciBkID0gImZ1bmN0aW9uIHNfZHIiICsgIih4LG8sbil7dmFyIGk9eC5pbmRleE9m
KG8pO2lmKGk+PTAmJnguc3BsaXQpeD0oeC5zcGxpdChvKSkuam9pbihuKTsiICsgImVsc2Ugd2hp
bGUoaT49MCl7eD14LnN1YnN0cmluZygwLGkpK24reC5zdWJzdHJpbmcoaStvLmxlbmd0aCk7aT14
LmkiICsgIm5kZXhPZihvKX1yZXR1cm4geH13LnNfZHI9c19kcjtmdW5jdGlvbiBzX2QoeCkge3Zh
ciB0PSdgXkAkIycsbD0nMDEiICsgIjIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVph
YmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicsZCxuPTAiICsgIixiLGssdyxpPXgubGFzdEluZGV4
T2YoJ35+Jyk7aWYoaT4wKXtkPXguc3Vic3RyaW5nKDAsaSk7eD14LnN1YnN0cmkiICsgIm5nKGkr
Mik7d2hpbGUoZCl7dz1kO2k9ZC5pbmRleE9mKCd+Jyk7aWYoaT4wKXt3PWQuc3Vic3RyaW5nKDAs
aSk7ZD0iICsgImQuc3Vic3RyaW5nKGkrMSl9ZWxzZSBkPScnO2I9cGFyc2VJbnQobi82Mik7az1u
LWIqNjI7az10LnN1YnN0cmluZygiICsgImIsYisxKStsLnN1YnN0cmluZyhrLGsrMSk7eD1zX2Ry
KHgsayx3KTtuKyt9Zm9yKGk9MDtpPDU7aSsrKXt3PXQuc3UiICsgImJzdHJpbmcoaSxpKzEpO3g9
c19kcih4LHcrJyAnLHcpfX1yZXR1cm4geH13LnNfZD1zX2Q7IiwKICAgICAgICBjID0gIi5zdWJz
dHJpbiIgKyAiZyh+LmluZGV4T2YofnJldHVybiB+PWZ1bmBLKH4pe2BPcz1edX5gdCAkNn47JDZ+
LnRvTG93ZXJDYXNlKCl+YGNGdSIgKyAibmBLKCdlYHNgT3M9c19jX2lsWycrQGkrJ11+fTtzLn4u
bGVuZ3Rofi50b1VwcGVyQ2FzZX5gY09iamVjdH5zLndkfiIgKyAidF5Efi5sb2NhdGlvbn4nKXE9
J35keW5hbWljQWNjb3VudH5saW5rfnMuYXB2fmN0aW9ufiRsJFh+KSQ2eF5YIU9iaiIgKyAiZWN0
fHwhT2JqZWN0LnByb3RvdHlwZXx8IU9iamVjdC5wcm90b3R5cGVbeF0pfkBHXkFsKUBHXkFsWycr
QGkrJ10ubSIgKyAicnEoXCInK3VuKydcIiknfnZhciB+cy5wdCh+b29raWVEb21haW5QZXJpb2Rz
fixgcywnfndoaWxlKH4pO3Mufi5wciIgKyAib3RvY29sfil7JDZ+dmlzaXRvcn49Jyd+OicnKX47
QEZeVnNba10sMjU1KX1+c19jMmZ+amF2YUVuYWJsZWR+PW5ldyIgKyAiIH4ubGFzdEluZGV4T2Yo
J350bS5nZXR+QDVcIiRRcy5iLmFkZEJlaGF2aW9yKCcjIGRlZmF1bHQjIH5vbmNsaWNrfiIgKyAi
dGVybmFsRmlsdGVyc35lbnRFbGVtZW50fk5hbWV+amF2YXNjcmlwdFZlcnNpb25+PXBhcnNlRmxv
YXQofmNvb2tpZSIgKyAifnBhcnNlSW50KH5zLl5KflR5cGV+b15qb2lkfmJyb3dzZXJ+JywnfmVs
c2V+cmVmZXJyZXJ+Y29sb3JEZXB0aH5TdCIgKyAicmluZ34uaG9zdH5zLnJlcCh+fWNhdGNoKGUp
e35yPXMubShmKT9zW2ZdKH59JDZ+cy51bn5zLmVvfnMuc3F+dD1zLiIgKyAib3Qobyl+dHJhY2t+
aj0nMS5+KT8nWSc6J04nfiRkVVJMfl5qY19pfnMuaXNtYWN+bHVnaW5zfj09J347Zm9yKH5TYSIg
KyAibXBsaW5nfnMucmNbdW5dfnMuYi5hZGRFdmVudExpc3RlbmVyfkRvd25sb2FkfnRmc35yZXNv
bHV0aW9ufi5nZXRASSIgKyAiKCl+cy5laH5zLmlzaWV+cy52bF9sfnMudmxfdH5IZWlnaHR+dCxo
KXt0PXQ/dH5pc29wZXJhfmVzY2FwZSh+c2NyZSIgKyAiZW4ufnMuZmwofmhhckNvZGV+JiYofnZh
cmlhYmxlUHJvdmlkZXJ+cy5nZygnb2JqZWN0SUQnKX4mJnMufjonJztoPSIgKyAiaD9ofmUmJmwk
a1NFU1NJT04nficpO35mJyx+XycrfkRhdGV+bmFtZX5ob21lJGR+LnNffnMuY19yKH5zLnJsW3V+
byIgKyAiLmhyZWZ+TGlmZXRpbWV+V2lkdGh+c0VuYWJsZWR+Jyl7cT0nfmIuYXR0YWNoRXZlbnR+
JiZsJGtOT05FJyl7fkV4dCIgKyAiZXJuYWxMaW5rc350aGlzfmNoYXJTZXR+b25lcnJvcn5jdXJy
ZW5jeUNvZGV+cz1zX2dpKH5lJFNFbGVtZW50fjtzLiIgKyAiZ2wocy52bF9nfi5wYXJlbnR+QXJy
YXl+bG5rfk9wZXJhfmV2YWwofk1hdGgufnMuZnNnfnMubnM2fmRvY3VtfnMubyIgKyAidW5+Y29u
bmV+SW5saW5lU3RhdHN+VHJhY2t+JzAxMjM0NTY3ODl+c1trXT1+d2luZG93fm9ubG9hZH5UaW1l
fnMuZSIgKyAicGEofnMuY193KH5vLnR5cGV+KHMuc3Nsfm49cy5vaWQobyl+TGVhdmVRdWVyeX4n
KT49fiYmdH4nPScpfil7bj1+KyIgKyAiMSkpficgJyt+cy50KCl9flwiLCcnKSx+PXMub2gobyk7
fisoeTwxOTAwP35pbmdTZXJ2ZXJ+c19nc350cnVlfnNlcyIgKyAic35jYW1wYWlnbn5saWZ+O2Z1
bn4sMTAwKX5zLmNvKH5zLl9pbn54IGluIH49J3NffmZmc2V0fnMuY19kficmcGV+cyIgKyAiLmd2
KH5zLnFhdn5zLnBsfj0oYXBufnNxcycscSk7flllYXIofj1zLm4uYXBwfiYmIX4oJycrfihcIik+
PX4pKycvfiIgKyAiJyxzfnMoKSsnOicrfil7cD1+KCk6Jyd+YSk6Zih+KXt2PXMubi5+Y2hhbm5l
bH5pZih+dW4pfi50YXJnZXR+by52YSIgKyAibHVlfmV0c2NhcGV+KG5zP25zOn5zXycpdD10fm9t
ZVBhZ2V+Kyt9ficpPH4pe3h+MSk7fmUpKX4nK25+aGVpZ2h0fiIgKyAiZXZlbnRzfnRya35yYW5k
b21+Y29kZX51bix+dHJ5e34nTVNJRSB+LnNyY35JTlBVVCd+Zmxvb3IofnMucGd+cy5udSIgKyAi
bSh+cy5hcGUofnMuY19nZH5zLmRjfi5pbm5lcn50cmFuc2F+RXZlbnRzfnBhZ2V+LnNldH5Hcm91
cCx+TWF0Y2gsfiIgKyAiLmZyb21DfisrKXt+PycnOn4hPSd+PScrfihcIik8fj8nJn4rJzt+KGYp
e34+PTUpfiYmaT5+W2JdKH49bFtuXTt+fiIgKyAiZnVuYEsgYGFlJHBgT3hgWCxzPTAsZSxhLGIs
YztgUzEpe2U9ZmAxJ1wiQHopO2I9ZmAxJ1xcXFwnLHMpO2M9ZmAxIiArICciXFxuIixzKWA2ZTww
fHwoYj49MCYmYjwkSWU9YmA2ZTwwfHwoYz49MCYmYzwkSWU9Y2A2ZT49MCRHKz0oZT5zPycgKyAi
ZmAwcyxlKWBZKyhlPT1jPydcXFxcbic6J1xcXFwnK2ZgMGUsZUBUO3M9ZSsxfWB0IGAyeCtmYDBz
KX1gMmZ9dy5gYSIgKyAiZT1gYWVAZmBLIGBhYSRwYE9zPWZgMScoJykrMSxlPWZgMScpJyksYWBY
LGM7YFNzPj0wJiZzPGUpe2M9ZmAwcyxzKyIgKyAiMSlgNmM9PWBzKWErPSdcIixcIic7YDUoXCJc
XG5cXHJcXHQgXCIpYDFjKTwwKWErPWM7cyRFYDJhPydcIicrYSsnIiArICJcIic6YX13LmBhYT1g
YWVAZmBLIGBhKGNjKXtjY2BYK2NjO2BPZmM9J2BPZmBjRnVuYEsoQHo9Y2NgMSc7JyxjY2AxIiAr
ICIneycpKSxlPWNjYGR9JyksbyxhLGQscSxjLGYsaCx4O2ZjKz1gYWEoY2MpKycsXCJgT3NgQzsn
O2M9Y2NgMHMrMSxlIiArICIpO3M9Y2AxJ2Z1bmBLXmRgU3M+PTApe2Q9MTtxYFg7eD0wO2Y9Y2Aw
cyk7YT1gYWEoZik7ZT1vPWNgMSd7QHopO2UrIiArICIrO2BTZD4wKXtoPWNgMGUsZSsxKWA2cWBW
aD09cUB2eClxYFhgNmheRFxcXFwnKXg9eD8wOjE7YHQgeD0wfWB0eyQ2IiArICJoXkRcIid8fGg9
PVwiJ1wiKXE9aGA2aF5EeycpZCsrYDZoXkR9JylkLS1eMWQ+MCllJEVjPWNgMDAscykrJ25ldyBG
IiArICJ1bmBLKCcrKGE/YStgc2BZKydcIicrYGFlKGNgMG8rMSwkSSsnXCIpJytjYDBlKyRIcz1j
YDEnZnVuYEsnKX1mYys9IiArICdgYWUoYykkb2AycyIpO1wnO0A1ZmMpO2AyZn13LmBhPWBhYDZw
Zyl7ZnVuYEsgc19jbyhvKXtgT155Il8iLDEsJCcgKyAiSGAyQGhvKX13Xmpjbz1zX2NvQGZgSyBA
YSgkN3tgT155JFAxLCRIYDJAVndeamdzPUBhQGZgSyBzX2RjKCQ3e2BPXiIgKyAieSRQJEhgMkBW
d15qZGM9c19kYzt9ZnVuYEsgc19jKCRQcGcsc3NgNDtzLl9jQGtjJztgRD1AR2A2IWBEXkFuKXtg
RCIgKyAiXkFsYGNAMjtgRF5Bbj0wO31zLl9pbD1gRF5BbDtAaT1gRF5BbjtzLl9pbFtAaV09cztg
RF5BbisrO3MubWAzbSl7YCIgKyAiMkB3bSlgMSd7JEYwYDlmbGAzeCxsKXtgMng/QHd4KWAwMCxs
KTp4YDljb2Azb2BWIW8pYDJvO2BPbmBDLHheRUBqbyIgKyAiKSQ2eGAxJ3NlbGVjdCRGMCYmeGAx
J2ZpbHRlciRGMCluW3hdPW9beF07YDJuYDludW1gM3gkR2BYK3heRWBPcD0wOyIgKyAicDx4YEE7
cCsrKSQ2KEBFJylgMXhgMHAscEBUPDApYDIwO2AyMWA5cmVwYDN4LG8sbil7YE9pPXhgMW8pO2BT
eCRyPSIgKyAiMCRHPXhgMDAsaSkrbit4YDBpK29gQSk7aT14YDFvLGkrbmBBKX1gMnhgOWFwZWAz
eGA0LGg9QEVBQkNERUYnLGksYyIgKyAiPXMuXnYsbixsLGUseWBYO2M9Yz9jYEIkMmA2eCRHYFgr
eGA2Y15EQVVUTydeWCcnKS5jXldBdCl7Zm9yKGk9MDtpPCIgKyAieGBBO2kkaWM9eGAwaSxpKyRI
bj14LmNeV0F0KGkpYDZuPjEyNyl7bD0wO2VgWDtgU258fGw8NCl7ZT1oYDBuJTE2LCIgKyAibiUx
NisxKStlO249YG5uLzE2KTtsJEV5Kz0nJXUnK2V9YDVjXkQrJyl5Kz0nJTJCJztgdCB5Kz1eVGMp
fXg9eX1gdCIgKyAie3g9eD9geV5UJycreCksJytgcyUyQicpOnhgNngmJmNeYWVtPT0xJiZ4YDEn
JXUkRjAmJnhgMSclVSRGMCl7aT14YCIgKyAiMSclXmRgU2k+PTApe2krK2A2aGAwOClgMXhgMGks
aSsxKWBCKCkpPj0wKWAyeGAwMCxpKSsndTAwJyt4YDBpKTtpPSIgKyAieGAxJyUnLGkpfX19fWAy
eGA5ZXBhYDN4YDQ7YDJ4P3VuXlRgeScnK3gsJytgcyAnKSk6eGA5cHRgM3gsZCxmLGFgNCIgKyAi
LHQ9eCx6PTAseSxyO2BTdCl7eT10YDFkKTt5PXk8MD90YEE6eTt0PXRgMDAseSk7XjB0LCQzdCxh
KWA2cilgMnI7eiIgKyAiKz15K2RgQTt0PXhgMHoseGBBKTt0PXo8eGBBP3Q6Jyd9YDInJ2A5aXNm
YDN0LGEpe2BPYz1hYDEnOicpYDZjPj0wKSIgKyAiYT1hYDAwLGMpYDZ0YDAwLDIpXkQkQ2AwMik7
YDIodCFgWEBRPT1hKWA5ZnNmYDN0LGFgNGA2YFBhYFJpc15ldCkpQCIgKyAiNys9KEA3IWBYP2Bz
YFkrdDtgMjBgOWZzYDN4LGZgNDtAN2BYO2BQeGBSZnNeZWYpO2AyQDdgOWNfZGBYOyRZZmAzdCIg
KyAiLGFgNGA2ISRXdCkpYDIxO2AyMGA5Y19nZGAzYDQsZD1gRGBGYHheaCxuPXMuZnBDYFEscGA2
IW4pbj1zLmNgUWA2ZCIgKyAiQHZAbUBTbj9gbm4pOjI7bj1uPjI/bjoyO3A9ZGBkLicpYDZwPj0w
KXtgU3A+PTAmJm4+MSQxZGBkLicscC0kSG4tLSIgKyAifUBtPXA+MCYmYFBkLCcuYHNjX2dkXmUw
KT9kYDBwKTpkfX1gMkBtYDljX3JgM2tgNDtrPSRYayk7YE9jPUBVcy5kLiIgKyAiYG0saT1jYDFA
VWsrQFIsZT1pPDA/aTpjYDEnOycsaSksdj1pPDAkakBKY2AwaSsyK2tgQSxlPDA/Y2BBOiRJO2Ay
diIgKyAiJGtbW0JdXSc/djonJ2A5Y193YDNrLHYsZWA0LGQ9JFkoKSxsPXMuYG1ebix0O3ZgWCt2
O2w9bD9Ad2wpYEIkMmA2XiIgKyAiY15zdD0odiFgWD9gbmw/bDowKTotNjApYDZ0KXtlYGNeZztl
JGVASShlXkwrKHQqMTAwMCkpfV4xa15zcy5kLmBtPSIgKyAiaysnYEx2IWBYP3Y6J1tbQl1dJykk
byBwYXRoPS87JysoXmM/JyBleHBpcmVzJGxlLnRvR01UYHcoKSRvJ2BZKyhkPyIgKyAiJyBkb21h
aW4kbGQkbydgWTtgMl5rayk9PXZ9YDIwYDllaGAzbyxlLHIsZmA0LGI9J3NeZmUrJ15mQGksbj0t
MSxsLCIgKyAiaSx4YDYhXk1sKV5NbGBjQDI7bD1eTWxeRWk9MDtpPGxgQSYmbjwwO2krK2BWbFtp
XS5vPT1vJiZsW2ldLmU9PWUpbiIgKyAiPWleMW48MEBTaTtsW25dYEN9eCR0eC5vPW87eC5lPWU7
Zj1yP3guYjpmYDZyfHxmJEcuYj1yPzA6b1tlXTt4Lm9bZSIgKyAiXT1mXjF4LmIkRy5vW2JdPXgu
YjtgMmJ9YDIwYDljZXRgM2YsYSx0LG8sYmA0LHJgNmBKPj01Xlghcy5eU3x8YEo+PSIgKyAiNykp
QDUnJFFeMCQzYSlgenI9cy5tKHQpP3NbdF0oZSk6dChlKX1eZGB0eyQ2XkJeYXVgMSRSNEBQMCly
PXMubShiKSIgKyAiP3Mkc2EpOmIoYSk7YHR7Xk0oYEQsJ153JywwLG8pO14wJDNhYFRlaChgRCwn
XncnLDEpfX1gMnJgOWdeSmV0YDNlYCIgKyAnNDtgMmBvYDlnXkpvZWA4O15NKEBHLCJedyIsMWBU
ZV5KPTE7YE9jPXMudCgpYDZjKXMuZC53cml0ZShjYFRlXkonICsgIj0wO2AyQGInYFRnXkpmYmAz
YSl7YDJAR2A5Z15KZmAzd2A0LHA9d0AxLGw9d2BGO2BvPXdgNnAmJnBgRiE9bCYmcGAiICsgIkZg
eD09bGB4KXtgbz1wO2Aycy5nXkpmKGBvKX1gMmBvYDlnXkpgM2A0YDYhYG8pe2BvPWBEYDYhcy5l
XkopYG89cy4iICsgImNldCgnZ15KXmVgbywnZ15KZXRAei5nXkpvZSwnZ15KZmInKX1gMmBvYDlt
cnFgM3VgNCxsPV5sXSxuLHI7XmxdPTAiICsgImA2bClmb3Iobj0wO248bGBBO24kaXIkdHMubXIo
MCwwLHIudCxyLnUsci5yKX1gOW1yYDNAYyxxLHRhLHUscnNgNCwiICsgImRjPSRaLHQxPXMuXjZA
Wix0Mj1zLl42QFpTZWN1cmUsbnM9cy5gV2Bqc3BhY2UsdW49dT91OiRCcy5mJDcsdW5jPWAiICsg
InkkUCdfYHMtJykscmBDLGwsaW1uQGtpXmYoJDcsaW0sYixlYDYhcnMpe3JzPSdodHRwJytATT8n
cydgWSsnOi8vJysiICsgIih0MT9ATUBRMj90Mjp0MSk6KCRCQE0/JzEwMic6dW5jKSkrJy4nKygk
Wj8kWjoxMTIpKycuMm83Lm5ldCcpQHliL3MiICsgInMvJyteMisnLzEvSC4xNC8nK0BjKyc/W0FR
Ql0mbmRoPTEnKyhxP3FgWSsnJltBUUVdJ2A2Xk5Adl5CYFZgSj41LjUiICsgIilycz1eVnJzLDQw
OTUpO2B0IHJzPV5WcnMsMjA0Nyl9XjFzLmQuaW1hZ2VzJiZgSj49M15YIXMuXlN8fGBKPj03KV4i
ICsgIlhAODwwfHxgSj49Ni4xKWBWIXMucmMpcy5yY2BDYDYhXkcpe15HPTFgNiFzLnJsKXMucmxg
QztebG5dYGNAMjtzZXQiICsgIkBJb3V0KCckNmBOLDc1MCl9YHR7bD1ebG5dYDZsKXtyLnQ9dGE7
ci51PXVuO3Iucj1ycztsW2xgQV09cjtgMicnfWkiICsgIm1uKz0nXmZeRzteRyRFaW09YERbaW1u
XWA2IWltKWltPWBEW2ltbl1gY0ltYWdlO2ltXmpsPTA7aW0uQEhgY0Z1bmAiICsgIksoJ2Vgc151
XmpsPTFgNmBOKTtpbSRTPXJzYDZyc2AxQG49QFAwXlghdGF8fHRhXkRfc2VsZid8fHRhXkRfdG9w
J3wiICsgInwoYEQuXmhAUWE9PWBELl5oKSkpe2I9ZWBjXmc7YFMhaW1eamwmJmVeTC1iXkw8NTAw
KWVgY15nfWAyJyd9YDInPGkiICsgIm0nKydnIHNyJysnYz1cIicrcnMrJ1wiIHdpZHRoPTEgJEs9
MSBib3JkZXI9MCBhbHQ9XCJcIj4nYDlnZ2AzdmA0YDYiICsgIiFgRFsnc15mdl0pYERbJ3NeZnZd
YFg7YDJgRFsnc15mdl1gOWdsZmAzdCxhYFZ0YDAwLDIpXkQkQ2AwMik7YE9zPV4iICsgInUsdj1z
LmdnKHQpYDZ2KXNbdF09dmA5Z2xgM3ZgNGA2JFYpYFB2YFJnbF5lMClgOWd2YDN2YDQ7YDJzWyd2
cG1eZnYiICsgIl0/c1sndnB2XmZ2XTooc1t2XT9zW3ZdYFlgOWhhdmZgM3QsYWA0LGI9dGAwMCw0
KSx4PXRgMDQpLG49YG54KSxrPSciICsgImdeZnQsbT0ndnBtXmZ0LHE9dCx2PXMuYElARFZhcnMs
ZT1zLmBJQEQkYztARkBvdClgNnMuQDN8fF4zKXt2PXY/disiICsgImBzK15PK2BzK15PMjonJ2A2
dkB2YFB2YFJpc15ldCkpc1trXWBYYDZgRSRMJyYmZSlARnMuZnMoc1trXSxlKX1zW20iICsgIl09
MGA2YEVgV0lEYEd2aWQnO2A1YEVeOV5xZydgWmA1YEVgdV5xcidgWmA1YEV2bWtgR3ZtdCc7YDVg
RV52XnFjZSciICsgImA2c1trXSYmc1trXWBCKCleREFVVE8nKUBGJ0lTTzg4NTktMSc7YDVzW2td
XmFlbT09MilARidVVEYtOCd9YDVgRWAiICsgIldganNwYWNlYEducyc7YDVgRWNgUWBHY2RwJztg
NWBFYG1ebmBHY2wnO2A1YEVeWWBHdnZwJztgNWBFXnhgR2NjJzsiICsgImA1YEUkNWBHY2gnO2A1
YEUkYmBLSURgR3hhY3QnO2A1YEVAZGBHdjAnO2A1YEVeS2BHcyc7YDVgRWB2YEdjJztgNWAiICsg
IkVga2BHaic7YDVgRWBiYEd2JztgNWBFYG1ecGBHayc7YDVgRWByXm9gR2J3JztgNWBFYHJeUWBH
YmgnO2A1YEVAQmAiICsgIktgcGBHY3QnO2A1YEVeaWBHaHAnO2A1YEVwXkNgR3AnO2A1JFd4KWBW
Yl5EcHJvcGBHYyRKO2A1Yl5EZVZhcmBHdiQiICsgIko7YDViXkRoaWVyXnFoJEpgWl4xc1trXUBR
JGtgSWBqJ0BRJGtgSWBwJylAcCs9JyYnK3ErJ2BMc1trXSk7YDInJ2AiICsgIjloYXZgM2A0O0Bw
YFg7YFBeUGBSaGF2XmUwKTtgMkBwYDlsbmZgM15SYDdeYmA3OicnO2BPdGU9dGAxQFJgNnRAUWUi
ICsgIj4wJiZoYDF0YDB0ZUBUPj0wKWAydGAwMCx0ZSk7YDInJ2A5bG5gM2hgNCxuPXMuYElganNg
Nm4pYDJgUG5gUmxuXmUiICsgImgpO2AyJydgOWx0ZGZgM15SYDdeYmA3OicnO2BPcWk9aGAxJz9e
ZGg9cWk+PTA/aGAwMCxxaSk6aGA2dCYmaGAwaGAiICsgIkEtKHRgQUBUXkQuJyt0KWAyMTtgMjBg
OWx0ZWZgM15SYDdeYmA3OicnYDZ0JiZoYDF0KT49MClgMjE7YDIwYDlsdGAiICsgIjNoYDQsbGZ0
PXMuYEleSUZpbGVgcHMsbGVmPXMuYElFeGBoLEBlPXMuYElJbmBoO0BlPUBlP0BlOmBEYEZgeF5o
O2giICsgIj1oYDdgNnMuXjZeSUxpbmtzJiZsZnQmJmBQbGZ0YFJsdGReZWgpKWAyJ2QnYDZzLl42
XnReWGxlZnx8QGUpXlghbGUiICsgImZ8fGBQbGVmYFJsdGVeZWgpKV5YIUBlfHwhYFBAZWBSbHRl
XmVoKSkpYDInZSc7YDInJ2A5bGNgOCxiPV5NKF51LCIgKyAnImBnImBUQDM9QGhedWBUdChgVEAz
PTBgNmIpYDJedSRzZSk7YDJAYlwnYFRiY2A4LGZgNnMuZF5hZC5hbGxeYWQuJyArICdhbGwuY3Bw
WFljdG5yKXJldHVybjteMz1eej9eejplJDg7QDUiJFEkNl4zXlheMy50YWdganx8XjMucGFyYGl8
fF4nICsgIjNAMU5vZCRJQFZjYXRjaCRwfVwiYFRlbz0wJ2BUb2hgM29gNCxsPWBEYEYsaD1ebT9e
bTonJyxpLGosayxwO2k9aGAiICsgIjEnOl5kaj1oYDEnP15kaz1oYDEnLycpYDZoXlhpPDB8fChq
Pj0wJHJqKXx8KGs+PTAkcmspKSQxb2BVJiZvYFVgQT4iICsgIjE/b2BVOihsYFU/bGBVYFk7aT1s
LnBhdGheaGBkL15kaD0ocD9wKycvLydgWSsob2B4P29geDoobGB4P2xgeGBZKSsiICsgIihoYDAw
LDEpJGsvJz9sLnBhdGheaGAwMCxpPDA/MDppQHknYFkraH1gMmhgOW90YDNvKXtgT3Q9by50YWdg
ajt0PXQiICsgIkBRYEI/dGBCJDJgNmBFU0hBUEUnKXRgWGA2dGBWYEUkVCYmQEwmJkBMYEIpdD1A
TGBCKCk7YDVebSl0PSdBJzt9YDIiICsgInRgOW9pZGAzb2A0LF41LHAsYyxuYFgseD0wYDZ0QHZg
cSQxb2BVO2M9by5gZ2A2Xm1eWGBFQSd8fGBFQVJFQScpXlgiICsgJyFjfHwhcHx8cGA3YDFcJ2ph
dmFzY3JpcHQkRjApKW5AWGA1Y0BTYHlzLnJlcChgeXMucmVwQHdjLCJcXHJAVyJcXCcgKyAibkBX
XCJcXHRAVycgYHNeZHg9Mn1gNSQ5XlhgRSRUfHxgRVNVQk1JVCcpQFMkOTt4PTN9YDVvJFMmJmBF
SU1BR0UnKSIgKyAibj1vJFNgNm4pe2BxPV5WbkBnO2BxdD14fX1gMmBxYDlycWZgM3QsdW5gNCxl
PXRgMUBSLHU9ZT49MD9gcyt0YDAwLCIgKyAiZSkrYHM6Jyc7YDJ1JiZ1YDFgcyt1bitgcyk+PTA/
QEp0YDBlQFQ6JydgOXJxYDN1bmA0LGM9dW5gMWBzKSx2PV5rJyIgKyAic19zcScpLHFgWGA2Yzww
KWAyYFB2LCcmYHNycV5lJDc7YDJgUHVuYFJycScsMClgOXNxcGAzdCxhYDQsZT10YDFAUiIgKyAi
LHE9ZTwwJGpASnRgMGUrMSlgVHNxcVtxXWBYYDZlPj0wKWBQdGAwMCxlKWBSQHNgMjBgOXNxc2Az
JFBxYDQ7XjR1WyIgKyAidW5dPXE7YDIwYDlzcWAzcWA0LGtAa3NxJyx2PV5raykseCxjPTA7XjRx
YEM7XjR1YEM7XjRxW3FdYFg7YFB2LCcmYCIgKyAic3NxcCcsMCk7YFBeMmBSQHN2YFheRUBqXjR1
YE0pXjRxW140dVt4XV0rPSheNHFbXjR1W3hdXT9gc2BZK3heRUBqXiIgKyAiNHFgTSYmXjRxW3hd
Xlh4PT1xfHxjPDIpKXt2Kz0odiRuJ2BZK140cVt4XSsnYEx4KTtjJEVgMkBLayx2LDApYDl3ZCIg
KyAnbGA4LHI9QGIsYj1eTShgRCwiQEgiKSxpLG8sb2NgNmIpcj1edSRzZSleRWk9MDtpPHMuZC5g
SXNgQTtpJGlvPXMnICsgJy5kLmBJc1tpXTtvYz1vLmBnPyIiK28uYGc6IiJgNihvY2AxIkBhJG0w
fHxvY2AxIl5qb2NAeDApJiZvY2AnICsgJzEiLnRsJG0wKV5NKG8sImBnIiwwLHMubGMpO31gMnJe
ZGBEc2AzYDRgNmBKPjNeWCFeTnx8IV5CfHxgSiRxYFYnICsgInMuYl5hXnIpcy5ecignYGdAei5i
Yyk7YDVzLmImJl5IKV5IKCdjbGlja0B6LmJjLGZhbHNlKTtgdCBeTShgRCwnQEgiICsgIicsMCxg
RGwpfWA5dnNgM3hgNCx2PXMuYFdeRixnPXMuYFdeRiRma0BrdnNuXmZeMisoZz8nXmZnYFksbj1e
a2spLGUiICsgImBjXmcseT1lLmdldEB0KTtlJGVAdHkrMTBAWTE5MDA6MCkpYDZ2KXt2Kj0xMDBg
NiFuYFYhQEtrLHgsJElgMjA7bj0iICsgInheMW4lMTAwMDA+dilgMjB9YDIxYDlkeWFzbWZgM3Qs
bWBWdCYmbSYmbWAxdCk+PTApYDIxO2AyMGA5ZHlhc2ZgM3QiICsgIixtYDQsaT10P3RgMUBSOi0x
LG4seGA2aT49MCYmbSl7YE9uPXRgMDAsaSkseD10YDBpKzEpYDZgUHhgUmR5YXNtXmUiICsgIm0p
KWAybn1gMjBgOXVuc2AzYDQseD1zLmBIU2VsZWBLLGw9cy5gSExpc3QsbT1zLmBIJGduLGk7XjI9
XjJgN2A2eCYiICsgIiZsYFYhbSltPWBEYEZgeGA2IW0udG9Mb3dlckNhc2UpbWBYK207bD1sYDc7
bT1tYDc7bj1gUGwsJztgc2R5YXNeZW0iICsgIilgNm4pXjI9bn1pPV4yYDFgc2BUZnVuPWk8MD9e
MjpeMmAwMCxpKWA5c2FgM3VuYDQ7XjI9dW5gNiFAQSlAQT11bjsiICsgImA1KGBzK0BBK2BzKWAx
JDc8MClAQSs9YHMrdW47XjJzKClgOXRgM2A0LCRNPTEsdG1gY15nLHNlZD1NYXRoJiZANiQiICsg
Ik4/QDYkVUA2JE4oKSoxMDAwMDAwMDAwMDAwMCk6YGVASSgpLEBjPSdzJytANiRVYGVASSgpLzEw
ODAwMDAwKSUxMCsiICsgInNlZCx5PWBlQHQpLHZ0PWBlXmcoQHknK2BlTW9udGgoQHknQFl5KzE5
MDA6eSkrQFVgZUhvdXIkMGBlTWludXRlJDAiICsgImBlU2Vjb25kcygpK0BVYGVEYXkoKStAVWBl
QEl6b25lT0BsKCksXko9cy5nXkooKSx0YWBYLHFgWCxxc2BYQDBgVHUiICsgIm5zKClgNiFzLnRk
KXtgT3RsPV5KYEYsYSxvLGkseGBYLGNgWCx2YFgscGBYLGJ3YFgsYmhgWCxeNzAnLGs9QEsnc18i
ICsgImNjYHNAYicsMF44LGhwYFgsY3RgWCxwbj0wLHBzYDZgdyYmYHcucHJvdG90eXBlKXteNzEn
YDZqLm1hdGNoKXteNzIiICsgIidgNnRtJGVVVENeZyl7XjczJ2A2Xk4mJl5CJiZgSiRxXjc0J2A2
cG4udG9QcmVjaXNpb24pe143NSc7YWBjQDJgNmEiICsgIi5mb3JFYWNoKXteNzYnO2k9MDtvYEM7
QDUnJFFpYGNJdGVyYXRvcihvKWB6fScpYDZpJiZpLm5leHQpXjc3J319fX0iICsgIl4xYEo+PTQp
eD1eVXdpZHRoKyd4JyteVSRLYDZzLmlzbnN8fHMuXlNgVmBKPj0zJDRgYiheOGA2YEo+PTQpe2M9
XlUiICsgInBpeGVsRGVwdGg7Ync9YEQkYV5vO2JoPWBEJGFeUX19QHE9cy5uLnBeQ31gNV5OYFZg
Sj49NCQ0YGIoXjg7Yz1eVWAiICsgInZgNmBKJHF7Ync9cy5kLkA5YGkub0BsXm87Ymg9cy5kLkA5
YGkub0BsXlFgNiFeQl5hYil7YGZoJEReZGhwPXMuYi4iICsgJ2lzSCREKHRsXjhgen0iKTtgZmNs
aWVudENhcHNeZGN0PXMuYi5AQmBLYHBgen0iKX19fWB0IHJgWF4xQHEpYFNwJyArICJuPEBxYEEm
JnBuPDMwKXtwcz1eVkBxW3BuXS5eaEBnJG8nYDZwYDFwcyk8MClwKz1wcztwbiRFcy5eSz14O3Mu
YHY9IiArICJjO3MuYGs9ajtzLmBiPXY7cy5gbV5wPWs7cy5gcl5vPWJ3O3MuYHJeUT1iaDtzLkBC
YEtgcD1jdDtzLl5pPWhwO3MuIiArICJwXkM9cDtzLnRkPTFeMXMudXNlUF5DKXMuZG9QXkMocyk7
YE9sPWBEYEYscj1eSi5AOWVudC5gdWA2IXMuXjkpcy5eIiArICI5PWxgNiFzLmB1KXMuYHU9cmA2
cy5AM3x8XjMpe2BPbz1eMz9eMzpzLkAzYDYhbylgMicnO2BPcD1AbyckZGBqJyksIiArICJ3PTEs
XjUsQE4seD1gcXQsaCxsLGksb2NgNl4zJiZvPT1eMyl7YFNvQHZuQFEka0JPRFknKXtvPW8ucGFy
YGk/by5wIiArICJhcmBpOm9AMU5vZGVgNiFvKWAyJyc7XjU7QE47eD1gcXR9b2M9by5gZz8nJytv
LmBnOicnYDYob2NgMVwiQGFAeDAmIiArICImb2NgMVwiXmpvYyRtMCl8fG9jYDFcIi50bEB4MClg
MicnfXRhPW4/byQ4OjE7aEBYaT1oYDEnP15kaD1zLmBJQE9gIiArICJ3fHxpPDA/aDpoYDAwLGkp
O2w9cy5gSWBqP3MuYElgajpzLmxuKGgpO3Q9cy5gSWBwP3MuYElgcGA3OnMubHQoaClgIiArICI2
dF5YaHx8bCkpcSs9QG49QDNeZihgRWQnfHxgRWUnPyRYdCk6J28nKSsoaD9AbnYxYExoKWBZKyhs
P0BudjJgTGwpIiArICJgWTtgdCAkTT0wYDZzLl42QENgViFwJDFAbydeOV5kdz0wfV41O2k9by5z
b3VyY2VJbmRleGA2XlpAU15aO3g9MTtpIiArICI9MV4xcCYmbkBRKXFzPScmcGlkYExeVnAsMjU1
KSkrKHckbnBpZHQkbHdgWSsnJm9pZGBMXlZuQGcpKyh4JG5vaWR0IiArICIkbHhgWSsnJm90YEx0
KSsoaSRub2kkbGlgWX1eMSEkTUB2cXMpYDInJ2A2cy5wX3Ipcy5wX3IoKTtgTyRPYFhgNiRNIiAr
ICJeYXZzKHNlZCkpJE89cy5tcihAYywodnQkbnRgTHZ0KWBZK3MuaGF2KCkrcSsocXM/cXM6cy5y
cSheMikpLHRhYFRzIiArICJxKCRNJGpxc2BUQDM9XjM9cy5gSWBqPXMuYElgcD1gRF5qb2JqZWN0
SUQ9cy5wcHVgWGA2JFYpYEReakAzPWBEXmplIiArICJvPWBEXmpgSWBqPWBEXmpgSWBwYFg7YDIk
T2A5dGxgM28sdCxuYDQ7cy5AMz1AaG9gVGBJYHA9dDtzLmBJYGo9bjtzIiArICIudCgpYDlzc2w9
KGBEYEZgVWA3YDEnaHR0cHNAUDBgVGQ9QDllbnQ7cy5iPXMuZC5ib2R5O3Mubj1uYXZpZ2F0b3I7
IiArICJzLnU9cy5uLnVzZXJBZ2VudDtAOD1zLnVgMSdOJEE2L15kYE9hcG5AdWBqLHZAdVZlcnNp
b24saWU9dmAxJFInKSxvIiArICI9cy51YDEnQDQgJyksaWA2dmAxJ0A0QFAwfHxvPjApYXBuPSdA
NCc7Xk5Acl5ETWljcm9zb2Z0IEludGVybmV0IEV4IiArICJwbG9yZXInYFRpc25zQHJeRE4kQSdg
VF5TQHJeREA0J2BUaXNtYWM9KHMudWAxJ01hY0BQMClgNm8+MClgSmBscy51IiArICJgMG8rNikp
O2A1aWU+MCl7YEo9YG5pPXZgMGllKzUpKWA2YEo+MylgSmBsaSl9YDVAOD4wKWBKYGxzLnVgMEA4
KzEwIiArICIpKTtgdCBgSmBsdmBUZW09MGA2YHckaF5XKXtpPV5UYHckaF5XKDI1NikpYEIoYFRl
bT0oaV5EJUM0JTgwJz8yOihpIiArICJeRCVVMDEwMCc/MTowKSl9cy5zYSh1bmBUdmxfbD0nYFdJ
RCx2bWsscHB1LF52LGBXYGpzcGFjZSxjYFEsYG1ebiwkIiArICJkYGosXjksYHUsXngnO15QPV5P
KycsXlksJDUsc2VydmVyLCRkYHAsJGJgS0lELHB1cmNoYXNlSUQsQGQsc3RhdGUsIiArICJ6aXAs
JEwscHJvZHVjdHMsYElgaixgSWBwJ15FYE9uPTE7bjw1MTtuKyspXlArPScscHJvcCRKKycsZVZh
ciRKKycsIiArICJoaWVyJEo7Xk8yPSdeSyxgdixgayxgYixgbV5wLGByXm8sYHJeUSxAQmBLYHAs
XmkscF5DJzteUCs9YHMrXk8yO3MuIiArICJ2bF9nPV5QKycsYFdeRixgV15GJGZgSFNlbGVgSyxg
SExpc3QsYEgkZ142XklMaW5rcyxeNl50LF42QEMsYElAT2B3IiArICIsYEleSUZpbGVgcHMsYElF
eGBoLGBJSW5gaCxgSUBEVmFycyxgSUBEJGMsYElganMsQDMnOyRWPXBnQDApYDYhc3MpIiArICJg
RHMoKX0iLAogICAgICAgIHcgPSB3aW5kb3csCiAgICAgICAgbCA9IHcuc19jX2lsLAogICAgICAg
IG4gPSBuYXZpZ2F0b3IsCiAgICAgICAgdSA9IG4udXNlckFnZW50LAogICAgICAgIHYgPSBuLmFw
cFZlcnNpb24sCiAgICAgICAgZSA9IHYuaW5kZXhPZigiTVNJRSAiKSwKICAgICAgICBtID0gdS5p
bmRleE9mKCJOZXRzY2FwZTYvIiksCiAgICAgICAgYSwgaSwgczsKICAgIGlmICh1bikgewogICAg
ICAgIHVuID0gdW4udG9Mb3dlckNhc2UoKTsKICAgICAgICBpZiAobCkgewogICAgICAgICAgICBm
b3IgKGkgPSAwOyBpIDwgbC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgcyA9IGxbaV07
CiAgICAgICAgICAgICAgICBpZiAocy5fYyA9PSAic19jIikgewogICAgICAgICAgICAgICAgICAg
IGlmIChzLm91biA9PSB1bikgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gczsKICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAocy5m
cyhzLm91biwgdW4pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnNhKHVuKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9
CiAgICAgICAgfQogICAgfQogICAgZXZhbChkKTsKICAgIGMgPSBzX2QoYyk7CiAgICBpID0gYy5p
bmRleE9mKCJmdW5jdGlvbiBzX2MoIik7CiAgICBldmFsKGMuc3Vic3RyaW5nKDAsIGkpKTsKICAg
IGlmICghdW4pIHsKICAgICAgICByZXR1cm4gMDsKICAgIH0KICAgIGMgPSBjLnN1YnN0cmluZyhp
KTsKICAgIGlmIChlID4gMCkgewogICAgICAgIGEgPSBwYXJzZUludChpID0gdi5zdWJzdHJpbmco
ZSArIDUpKTsKICAgICAgICBpZiAoYSA+IDMpIHsKICAgICAgICAgICAgYSA9IHBhcnNlRmxvYXQo
aSk7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICBpZiAobSA+IDApIHsKICAgICAgICAg
ICAgYSA9IHBhcnNlRmxvYXQodS5zdWJzdHJpbmcobSArIDEwKSk7CiAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgYSA9IHBhcnNlRmxvYXQodik7CiAgICAgICAgfQogICAgfQogICAgaWYgKGEg
Pj0gNSAmJiB2LmluZGV4T2YoIk9wZXJhIikgPCAwICYmIHUuaW5kZXhPZigiT3BlcmEiKSA8IDAp
IHsKICAgICAgICBldmFsKGMpOwogICAgICAgIHJldHVybiBuZXcgc19jKHVuLCBwZywgc3MpOwog
ICAgfSBlbHNlIHsKICAgICAgICBzID0gc19jMmYoYyk7CiAgICB9CiAgICByZXR1cm4gcyh1biwg
cGcsIHNzKTsKfQpzX2dpKCk7CnZhciB0aGlzRG9jSURNYWluID0gbnVsbDsKdmFyIHRoaXNEb2NJ
RCA9ICIiOwp2YXIgZGVhY3RpdmF0ZSA9IGZhbHNlOwp2YXIgc3ViTmF2TGlua05vID0gMDsKCmZ1
bmN0aW9uIHNlbGVjdGVkVGFnKG1vZHVsZUluLCBkZWFjdGl2YXRlTGluaykgewogICAgaWYgKG1v
ZHVsZUluID09ICJmbGlnaHR4IikgewogICAgICAgIHRoaXNEb2NJRCA9ICJsaW5rMiI7CiAgICAg
ICAgc3ViTmF2TGlua05vID0gMDsKICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKG1vZHVsZUluID09
ICJmbGlnaHQiKSB7CiAgICAgICAgICAgIHRoaXNEb2NJRCA9ICJsaW5rMiI7CiAgICAgICAgICAg
IHN1Yk5hdkxpbmtObyA9IDA7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKG1vZHVs
ZUluID09ICJDcnVpc2UiKSB7CiAgICAgICAgICAgICAgICB0aGlzRG9jSUQgPSAibGluazIiOwog
ICAgICAgICAgICAgICAgc3ViTmF2TGlua05vID0gNTsKICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgIGlmIChtb2R1bGVJbiA9PSAiQ2FycyIpIHsKICAgICAgICAgICAgICAgICAg
ICB0aGlzRG9jSUQgPSAibGluazIiOwogICAgICAgICAgICAgICAgICAgIHN1Yk5hdkxpbmtObyA9
IDM7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmIChtb2R1
bGVJbiA9PSAiSG90ZWxzIikgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzRG9jSUQgPSAi
bGluazIiOwogICAgICAgICAgICAgICAgICAgICAgICBzdWJOYXZMaW5rTm8gPSAyOwogICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2R1bGVJ
biA9PSAibWFuYWdlVHJhdmVsIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc0Rv
Y0lEID0gImxpbmszIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk5hdkxpbmtObyA9
IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobW9kdWxlSW4gPT0gIlZpZXdJdGluZXJhcnkiKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpc0RvY0lEID0gImxpbmszIjsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdWJOYXZMaW5rTm8gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kdWxlSW4g
PT0gIkNoZWNrSW4iKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNE
b2NJRCA9ICJsaW5rMyI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk5h
dkxpbmtObyA9IDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZHVsZUluID09ICJjaGFuZ2VG
bGlnaHQiIHx8IG1vZHVsZUluID09ICJDaGFuZ2VGbGlnaHQiKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzRG9jSUQgPSAibGluazMiOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViTmF2TGlua05vID0gMzsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChtb2R1bGVJbiA9PSAiY2FuY2VsRmxpZ2h0IiB8fCBtb2R1bGVJ
biA9PSAiQ2FuY2VsRmxpZ2h0IikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXNEb2NJRCA9ICJsaW5rMyI7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3ViTmF2TGlua05vID0gNDsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1vZHVsZUluID09ICJmbGlnaHRTdGF0dXMiKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNEb2NJRCA9ICJsaW5r
MyI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk5h
dkxpbmtObyA9IDU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG1vZHVsZUluID09ICJmbGlnaHRBbGVydHMiKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzRG9jSUQgPSAibGluazMiOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViTmF2TGlua05v
ID0gNjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChtb2R1bGVJbiA9PSAiaG9tZSIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzRG9jSUQgPSAibGluazEiOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk5hdkxpbmtO
byA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChtb2R1bGVJbiA9PSAidHJhdmVsaW5mbyIgfHwgbW9kdWxlSW4uaW5kZXhP
ZigicGxhbiIpICE9IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXNEb2NJRCA9ICJsaW5rNSI7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk5hdkxpbmtO
byA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlYWN0aXZhdGVMaW5rID0gImRlYWN0aXZhdGUiOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICht
b2R1bGVJbiA9PSAiSW5mb0Rlc2tIZWxwIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc0RvY0lEID0gImxpbms4IjsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN1Yk5hdkxpbmtObyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kdWxlSW4g
PT0gIkluZm9EZXNrUm91dGVNYXAiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc0RvY0lEID0gImxpbms1IjsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdWJOYXZMaW5rTm8gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobW9kdWxlSW4gPT0gIkluZm9EZXNrRGVzdEluZm8iKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNE
b2NJRCA9ICJsaW5rNSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk5hdkxpbmtObyA9IDU7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZHVsZUluID09ICJJbmZvRGVza1NjaGVk
dWxlIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc0RvY0lEID0gImxpbms1IjsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN1Yk5hdkxpbmtObyA9IDY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobW9kdWxlSW4gPT0gImZhcmVUb0ZseUJ5IikgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXNEb2NJRCA9ICJsaW5rNiI7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3ViTmF2TGlua05vID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWFjdGl2YXRlTGluayA9
ICJkZWFjdGl2YXRlIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG1vZHVsZUluID09ICJIZWxwIikgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzRG9jSUQgPSAibGluazgiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJO
YXZMaW5rTm8gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChtb2R1bGVJbiA9PSAic2hvcCIpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXNEb2NJRCA9ICJsaW5rNyI7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdWJOYXZMaW5rTm8gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZHVsZUluID09ICJz
aG9wR0MiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc0RvY0lEID0g
Imxpbms3IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJOYXZMaW5rTm8g
PSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kdWxlSW4gPT0gImxhbmRpbmdTZWFyY2giKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNEb2NJRCA9ICJsaW5r
MSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk5hdkxpbmtObyA9
IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZHVsZUluID09ICJlbGV2YXRlIikg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc0RvY0lEID0g
Imxpbms0IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk5h
dkxpbmtObyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kdWxl
SW4gPT0gIkVhcm5Qb2ludHMiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpc0RvY0lEID0gImxpbms0IjsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdWJOYXZMaW5rTm8gPSAyOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYWN0aXZhdGVMaW5rID0gImRlYWN0aXZh
dGUiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kdWxl
SW4gPT0gIkVuam95UmV3YXJkcyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpc0RvY0lEID0gImxpbms0IjsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViTmF2TGlua05vID0gMzsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVhY3RpdmF0ZUxp
bmsgPSAiZGVhY3RpdmF0ZSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1vZHVsZUluID09ICJQYXJ0bmVycyIpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNEb2NJRCA9ICJsaW5r
NCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdWJOYXZMaW5rTm8gPSA1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVhY3RpdmF0ZUxpbmsgPSAiZGVhY3RpdmF0ZSI7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9k
dWxlSW4gPT0gInJvdXRlbWFwIiB8fCBtb2R1bGVJbi5pbmRleE9mKCJmbGlnaHQtcm91dGVzIikg
IT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzRG9jSUQgPSAibGluazUiOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk5hdkxpbmtObyA9IDE7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVh
Y3RpdmF0ZUxpbmsgPSAiZGVhY3RpdmF0ZSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2R1bGVJbiA9PSAiZW50
ZXJ0YWlubWVudCIgfHwgbW9kdWxlSW4gPT0gIndoYXRzX29uX2JvYXJkIiB8fCBtb2R1bGVJbiA9
PSAibW92aWVzIiB8fCBtb2R1bGVJbiA9PSAibWVhbHMiIHx8IG1vZHVsZUluID09ICJhbWVuaXRp
ZXMiIHx8IG1vZHVsZUluID09ICJzYXRlbGxpdGVfdHYiIHx8IG1vZHVsZUluID09ICJwcmVtaXVt
X3R2IiB8fCBtb2R1bGVJbiA9PSAibXVzaWNfdmlkZW9zIiB8fCBtb2R1bGVJbiA9PSAicmFkaW8i
IHx8IG1vZHVsZUluID09ICJnYW1lcyIgfHwgbW9kdWxlSW4gPT0gImNoYXQiIHx8IG1vZHVsZUlu
ID09ICJzbmFja3MiIHx8IG1vZHVsZUluID09ICJkcmlua3MiIHx8IG1vZHVsZUluID09ICJmaXJz
dF9jbGFzcyIgfHwgbW9kdWxlSW4uaW5kZXhPZigid2hhdHMtb24tYm9hcmQiKSAhPSAtMSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzRG9jSUQgPSAibGluazUiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJOYXZMaW5rTm8gPSAyOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZWFjdGl2YXRlTGluayA9ICJkZWFjdGl2YXRlIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kdWxl
SW4gPT0gImNhYmlucyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNEb2NJRCA9ICJsaW5rNSI7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdWJOYXZMaW5rTm8gPSAzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVhY3RpdmF0ZUxpbmsgPSAiZGVhY3RpdmF0
ZSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kdWxlSW4gPT0gImFpcmxpbmVwYXJ0
bmVycyIgfHwgbW9kdWxlSW4uaW5kZXhPZigidmlyZ2luLXBhcnRuZXJzIikgIT0gLTEpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzRG9jSUQgPSAibGluazUiOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk5hdkxpbmtO
byA9IDQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVhY3RpdmF0ZUxpbmsgPSAiZGVhY3RpdmF0ZSI7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2R1bGVJbiA9PSAiYWlycG9ydGluZm9y
bWF0aW9uIiB8fCBtb2R1bGVJbi5pbmRleE9mKCJhaXJwb3J0aW5mb3JtYXRpb24iKSAhPSAtMSB8
fCBtb2R1bGVJbi5pbmRleE9mKCJzYW4tZGllZ28iKSAhPSAtMSB8fCBtb2R1bGVJbi5pbmRleE9m
KCJsb2dhbi1ib3MiKSAhPSAtMSB8fCBtb2R1bGVJbi5pbmRleE9mKCJsYXMtdmVnYXMiKSAhPSAt
MSB8fCBtb2R1bGVJbi5pbmRleE9mKCJmb3J0LWxhdWRlcmRhbGUiKSAhPSAtMSB8fCBtb2R1bGVJ
bi5pbmRleE9mKCJsb3MtYW5nZWxlcyIpICE9IC0xIHx8IG1vZHVsZUluLmluZGV4T2YoIm5ldy15
b3JrIikgIT0gLTEgfHwgbW9kdWxlSW4uaW5kZXhPZigic2FuLWZyYW5jaXNjbyIpICE9IC0xIHx8
IG1vZHVsZUluLmluZGV4T2YoInNlYXR0bGUiKSAhPSAtMSB8fCBtb2R1bGVJbi5pbmRleE9mKCJ0
b3JvbnRvIikgIT0gLTEgfHwgbW9kdWxlSW4uaW5kZXhPZigiZHVsbGVzIikgIT0gLTEpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpc0RvY0lEID0gImxpbms1IjsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vi
TmF2TGlua05vID0gNTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVhY3RpdmF0ZUxpbmsgPSAiZGVhY3Rp
dmF0ZSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZHVs
ZUluID09ICJjbHViaG91c2UiIHx8IG1vZHVsZUluLmluZGV4T2YoImFpcnBvcnQtbG91bmdlIikg
IT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNEb2NJRCA9ICJsaW5rNSI7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdWJOYXZMaW5rTm8gPSA3OwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVhY3RpdmF0ZUxpbmsgPSAiZGVhY3RpdmF0ZSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kdWxlSW4gPT0gImpvaW5FbGV2YXRlIikgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNEb2NJRCA9ICJsaW5rNCI7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3ViTmF2TGlua05vID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZWFjdGl2YXRlTGluayA9ICJkZWFjdGl2YXRlIjsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZHVsZUluID09ICJidXlHaWZ0
VHJhbnNmZXJQb2ludHMiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNEb2NJ
RCA9ICJsaW5rNCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk5hdkxpbmtObyA9
IDQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYWN0aXZhdGVMaW5rID0gImRlYWN0
aXZhdGUiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChtb2R1bGVJbiA9PSAibWVtYmVyR3VpZGUiKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzRG9jSUQgPSAibGluazQiOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3ViTmF2TGlua05vID0gNjsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlYWN0aXZhdGVMaW5rID0gImRlYWN0aXZhdGUiOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG1vZHVsZUluID09ICJ3aGF0SXNlbGVWQXRlIikgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNEb2NJRCA9ICJsaW5rNCI7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViTmF2TGlua05vID0gMDsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWFjdGl2YXRlTGluayA9ICJkZWFjdGl2YXRlIjsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZHVsZUluID09ICJkZWFsc0hvdGVscyIpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc0RvY0lEID0gImxp
bms2IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViTmF2TGlu
a05vID0gMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVhY3Rp
dmF0ZUxpbmsgPSAiZGVhY3RpdmF0ZSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG1vZHVsZUluID09ICJkZWFsc0NhcnMiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzRG9jSUQgPSAibGluazYiOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViTmF2TGlua05vID0gMjsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYWN0aXZhdGVMaW5rID0gImRl
YWN0aXZhdGUiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1v
ZHVsZUluID09ICJkZWFsc0VsZXZhdGUiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpc0RvY0lEID0gImxpbms2IjsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJOYXZMaW5rTm8gPSA0OwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYWN0aXZhdGVM
aW5rID0gImRlYWN0aXZhdGUiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9
CiAgICAgICAgfQogICAgfQogICAgdGhpc0RvY0lETWFpbiA9IHRoaXNEb2NJRCArICJfbWFpbiI7
CiAgICBpZiAodHlwZW9mIChkZWFjdGl2YXRlTGluaykgIT0gInVuZGVmaW5lZCIpIHsKICAgICAg
ICBkZWFjdGl2YXRlID0gdHJ1ZTsKICAgIH0KfQpmdW5jdGlvbiBzZXRUaXRsZShwYXJhbSkgewog
ICAgaWYgKHBhcmFtID09ICJ0cmF2ZWxpbmZvIikgewogICAgICAgIGRvY3VtZW50LnRpdGxlID0g
IlZpcmdpbiBBbWVyaWNhIHwgVHJhdmVsIEluZm8iOwogICAgfSBlbHNlIHsKICAgICAgICBpZiAo
cGFyYW0gPT0gInJvdXRlbWFwIikgewogICAgICAgICAgICBkb2N1bWVudC50aXRsZSA9ICJWaXJn
aW4gQW1lcmljYSB8IFJvdXRlIE1hcCI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYg
KHBhcmFtID09ICJlbnRlcnRhaW5tZW50IikgewogICAgICAgICAgICAgICAgZG9jdW1lbnQudGl0
bGUgPSAiVmlyZ2luIEFtZXJpY2EgfCBXaGF0J3Mgb24gQm9hcmQiOwogICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgaWYgKHBhcmFtID09ICJjYWJpbnMiKSB7CiAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQudGl0bGUgPSAiVmlyZ2luIEFtZXJpY2EgfCBDYWJpbnMiOwogICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW0gPT0gImFp
cmxpbmVwYXJ0bmVycyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQudGl0bGUg
PSAiVmlyZ2luIEFtZXJpY2EgfCBBaXJsaW5lIFBhcnRuZXJzIjsKICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW0gPT0gImFpcnBvcnRp
bmZvcm1hdGlvbiIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnRpdGxl
ID0gIlZpcmdpbiBBbWVyaWNhIHwgQWlycG9ydCBJbmZvIjsKICAgICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbSA9PSAiY2x1
YmhvdXNlIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnRpdGxl
ID0gIlZpcmdpbiBBbWVyaWNhIHwgQ2x1YiBIb3VzZSI7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbSA9
PSAiYWJvdXR1c0NvcnBvcmF0ZSIgfHwgcGFyYW0gPT0gImVudmlyb25tZW50YWxTdXN0YWluYWJp
bGl0eSIgfHwgcGFyYW0gPT0gImNvbW11bml0eVN1cHBvcnQiKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnRpdGxlID0gIlZpcmdpbiBBbWVyaWNhIHwgQ29y
cG9yYXRlIFJlc3BvbnNpYmlsaXR5IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW0gPT0g
Im1lZXREYXZpZEN1c2giIHx8IHBhcmFtID09ICJtZWV0RGlhbmFXYWxrZSIgfHwgcGFyYW0gPT0g
Im1lZXRGcmFuY2lzRmlvcmlsbG8iIHx8IHBhcmFtID09ICJtZWV0Sm9lSG91Z2h0b24iIHx8IHBh
cmFtID09ICJtZWV0Umlja1d5c29uZyIgfHwgcGFyYW0gPT0gIm1lZXRUb2RkUGF3bG93c2tpIiB8
fCBwYXJhbSA9PSAibWVldERhdmVQZmxpZWdlciIgfHwgcGFyYW0gPT0gIm1lZXRLZW5TY2FyaW5j
ZSIgfHwgcGFyYW0gPT0gIm1lZXRCb2JXZWF0aGVybHkiIHx8IHBhcmFtID09ICJtZWV0TWFya2V0
aW5nIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQu
dGl0bGUgPSAiVmlyZ2luIEFtZXJpY2EgfCBCaW9zIjsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChwYXJhbSA9PSAicHJlc3MiIHx8IHBhcmFtID09ICJwaG90b3MiIHx8IHBhcmFtID09
ICJ0cmF2ZWxBd2FyZHMiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQudGl0bGUgPSAiVmlyZ2luIEFtZXJpY2EgfCBQcmVzcyI7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbSA9PSAiYWJvdXR1c092ZXJ2aWV3
IikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC50aXRsZSA9ICJWaXJnaW4gQW1lcmljYSB8IEFib3V0IFVzIjsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW0gPT0gImNvcnBvcmF0ZXNhbGVz
IikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQudGl0bGUgPSAiVmlyZ2luIEFtZXJpY2EgfCBDb3Jwb3JhdGUgU2FsZXMiOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFt
ID09ICJ3aGF0c19vbl9ib2FyZCIgfHwgcGFyYW0gPT0gIm1vdmllcyIgfHwgcGFyYW0gPT0gIm1l
YWxzIiB8fCBwYXJhbSA9PSAiYW1lbml0aWVzIiB8fCBwYXJhbSA9PSAic25hY2tzIiB8fCBwYXJh
bSA9PSAiZHJpbmtzIiB8fCBwYXJhbSA9PSAiZmlyc3RfY2xhc3MiIHx8IHBhcmFtID09ICJzYXRl
bGxpdGVfdHYiIHx8IHBhcmFtID09ICJwcmVtaXVtX3R2IiB8fCBwYXJhbSA9PSAibXVzaWNfdmlk
ZW9zIiB8fCBwYXJhbSA9PSAicmFkaW8iIHx8IHBhcmFtID09ICJnYW1lcyIgfHwgcGFyYW0gPT0g
ImNoYXQiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQudGl0bGUgPSAiVmlyZ2luIEFtZXJpY2EgfCBXaGF0J3Mgb24gQm9h
cmQiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC50aXRsZSA9ICJWaXJnaW4gQW1lcmljYSAiOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CmZ1bmN0aW9uIHNob3dCb2R5U3Vi
TmF2TGlua3ModGhpc09iaikgewogICAgaWYgKHRoaXNPYmopIHsKICAgICAgICB0aGlzT2JqLmNs
YXNzTmFtZSA9ICJzZWxlY3RlZCI7CiAgICAgICAgdGhpc09iai5ocmVmID0gImphdmFzY3JpcHQ6
dm9pZCgwKSI7CiAgICB9Cn0KZnVuY3Rpb24gc2hvd05hdmlnYXRpb24obmF2SWQsIHN1Yk5hdk5v
KSB7CiAgICB0aGlzRG9jSUQgPSBuYXZJZDsKICAgIHN1Yk5hdkxpbmtObyA9IHN1Yk5hdk5vOwog
ICAgdGhpc0RvY0lETWFpbiA9IHRoaXNEb2NJRCArICJfbWFpbiI7CiAgICBpbnRpYWxpc2VIZWFk
ZXIodGhpc0RvY0lEKTsKfQpmdW5jdGlvbiBpbnRpYWxpc2VIZWFkZXIoX3RoaXNEb2NJRCwgZGVh
Y3RpdmF0ZUxpbmssIF9jdXJzb3IpIHsKICAgIGlmICgoX3RoaXNEb2NJRCAhPSAibGluazEiKSAm
JiAoX3RoaXNEb2NJRCAhPSAibGluazgiKSAmJiAoX3RoaXNEb2NJRCAhPSAibGluazkiKSkgewog
ICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChfdGhpc0RvY0lEKSkgewogICAgICAg
ICAgICBpZiAodHlwZW9mIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChfdGhpc0RvY0lEICsgIl9t
YWluIikuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInVsIilbMF0pICE9ICJ1bmRlZmluZWQiICYmIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKF90aGlzRG9jSUQgKyAiX3N1YiIpKSB7CiAgICAgICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChfdGhpc0RvY0lEICsgIl9zdWIiKS5zdHlsZS52
aXNpYmlsaXR5ID0gInZpc2libGUiOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoX3RoaXNEb2NJRCArICJfc3ViIikuc3R5bGUudG9wID0gMjkgKyAicHgiOwogICAgICAg
ICAgICB9CiAgICAgICAgICAgIGlmICgoc3ViTmF2TGlua05vID09IDApICYmIChfdGhpc0RvY0lE
ID09ICJsaW5rMiIpICYmIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXNEb2NJRCArICJfc3Vi
IikpIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXNEb2NJRCAr
ICJfc3ViIikuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpIilbc3ViTmF2TGlua05vXS5jbGFzc05h
bWUgPSAic2VsZWN0ZWQiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChzdWJOYXZMaW5r
Tm8gIT0gMCAmJiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzRG9jSUQgKyAiX3N1YiIpKSB7
CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzRG9jSUQgKyAiX3N1
YiIpLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaSIpW3N1Yk5hdkxpbmtObyAtIDFdLmNsYXNzTmFt
ZSA9ICJzZWxlY3RlZCI7CiAgICAgICAgICAgICAgICBpZiAoZGVhY3RpdmF0ZUxpbmsgJiYgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoX3RoaXNEb2NJRCArICJfc3ViIikuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImxpIilbc3ViTmF2TGlua05vIC0gMV0pIHt9CiAgICAgICAgICAgIH0KICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoX3RoaXNEb2NJRCkuY2xhc3NOYW1lID0gX3RoaXNE
b2NJRCArICJTZWxlY3RlZCI7CiAgICAgICAgICAgIGlmIChfY3Vyc29yID09IHRydWUpIHsKICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKF90aGlzRG9jSUQpLnN0eWxlLmN1
cnNvciA9ICJwb2ludGVyIjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKF90aGlzRG9jSUQpLnN0eWxlLmN1cnNvciA9ICJwb2ludGVy
IjsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgbGFzdHNlcCA9IF90aGlzRG9jSUQuY2hh
ckF0KDQpIC0gMTsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoX3RoaXNEb2NJ
RCArICJTZXBlcmF0b3IiKS5jbGFzc05hbWUgPSAibm9uZXNlcGVyYXRvciI7CiAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaW5rIiArIGxhc3RzZXAgKyAiU2VwZXJhdG9yIiku
Y2xhc3NOYW1lID0gIm5vbmVzZXBlcmF0b3IiOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoX3RoaXNEb2NJRCkuY2xhc3NOYW1lID0gX3RoaXNE
b2NJRCArICJTZWxlY3RlZCI7CiAgICAgICAgaWYgKF9jdXJzb3IgPT0gdHJ1ZSkgewogICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChfdGhpc0RvY0lEKS5zdHlsZS5jdXJzb3IgPSAi
cG9pbnRlciI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoX3RoaXNEb2NJRCkuc3R5bGUuY3Vyc29yID0gInBvaW50ZXIiOwogICAgICAgIH0KICAg
IH0KfQpmdW5jdGlvbiBkZUludGlhbGlzZUhlYWRlcihfdGhpc0RvY0lEKSB7CiAgICBpZiAoKF90
aGlzRG9jSUQgIT0gImxpbmsxIikgJiYgKF90aGlzRG9jSUQgIT0gImxpbms4IikgJiYgKF90aGlz
RG9jSUQgIT0gImxpbms5IikpIHsKICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
X3RoaXNEb2NJRCkpIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoX3RoaXNE
b2NJRCkuY2xhc3NOYW1lID0gX3RoaXNEb2NJRDsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoX3RoaXNEb2NJRCArICJfc3ViIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4i
OwogICAgICAgIH0KICAgICAgICB2YXIgbGFzdHNlcCA9IF90aGlzRG9jSUQuY2hhckF0KDQpIC0g
MTsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChfdGhpc0RvY0lEICsgIlNlcGVyYXRv
ciIpLmNsYXNzTmFtZSA9ICJzZXBlcmF0b3IiOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJsaW5rIiArIGxhc3RzZXAgKyAiU2VwZXJhdG9yIikuY2xhc3NOYW1lID0gInNlcGVyYXRv
ciI7CiAgICB9Cn0KZnVuY3Rpb24gbWVudU92ZXIoeCkgewogICAgdmFyIGltZ0lkID0geC5wYXJl
bnROb2RlLmZpcnN0Q2hpbGQuaWQ7CiAgICB2YXIgbGFzdHNlcCA9IGltZ0lkLmNoYXJBdCg0KSAt
IDE7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpbWdJZCkuY2xhc3NOYW1lID0gaW1nSWQg
KyAiU2VsZWN0ZWQiOwogICAgaWYgKChpbWdJZCAhPSAibGluazEiKSAmJiAoaW1nSWQgIT0gImxp
bms5IikgJiYgKGltZ0lkICE9ICJsaW5rOCIpKSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoaW1nSWQgKyAiU2VwZXJhdG9yIikuY2xhc3NOYW1lID0gIm5vbmVzZXBlcmF0b3IiOwog
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaW5rIiArIGxhc3RzZXAgKyAiU2VwZXJh
dG9yIikuY2xhc3NOYW1lID0gIm5vbmVzZXBlcmF0b3IiOwogICAgfQogICAgaWYgKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRoaXNEb2NJRCkpIHsKICAgICAgICBkZUludGlhbGlzZUhlYWRlcih0
aGlzRG9jSUQpOwogICAgfQogICAgaWYgKGltZ0lkID09IHRoaXNEb2NJRCkgewogICAgICAgIGlu
dGlhbGlzZUhlYWRlcihpbWdJZCwgZGVhY3RpdmF0ZSwgZmFsc2UpOwogICAgfSBlbHNlIHsKICAg
ICAgICBpbnRpYWxpc2VIZWFkZXIoaW1nSWQsIGRlYWN0aXZhdGUsIHRydWUpOwogICAgfQp9CmZ1
bmN0aW9uIG1lbnVPdXQoeCkgewogICAgdmFyIGltZ0lkID0geC5wYXJlbnROb2RlLmZpcnN0Q2hp
bGQuaWQ7CiAgICB2YXIgbGFzdHNlcCA9IGltZ0lkLmNoYXJBdCg0KSAtIDE7CiAgICBpZiAoKGlt
Z0lkICE9ICJsaW5rMSIpICYmIChpbWdJZCAhPSAibGluazkiKSAmJiAoaW1nSWQgIT0gIjgiKSkg
ewogICAgICAgIGlmIChpbWdJZCAhPSB0aGlzRG9jSUQpIHsKICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoaW1nSWQgKyAiU2VwZXJhdG9yIikuY2xhc3NOYW1lID0gInNlcGVyYXRv
ciI7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaW5rIiArIGxhc3RzZXAg
KyAiU2VwZXJhdG9yIikuY2xhc3NOYW1lID0gInNlcGVyYXRvciI7CiAgICAgICAgfQogICAgfQog
ICAgaWYgKGltZ0lkID09IHRoaXNEb2NJRCkgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKGltZ0lkKS5jbGFzc05hbWUgPSBpbWdJZCArICJTZWxlY3RlZCI7CiAgICB9IGVsc2Ugewog
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGltZ0lkKS5jbGFzc05hbWUgPSBpbWdJZDsK
ICAgICAgICBkZUludGlhbGlzZUhlYWRlcihpbWdJZCk7CiAgICAgICAgaW50aWFsaXNlSGVhZGVy
KHRoaXNEb2NJRCwgZGVhY3RpdmF0ZSk7CiAgICB9Cn0KdmFyIFByZXZEaXZJZCA9ICJCb29rRmxp
Z2h0IjsKCmZ1bmN0aW9uIHJvbGxPdmVyQ2hhbmdlSW1hZ2Uob2JqLCBJTUcsIG1vdXNlU3R5bGUp
IHsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG9iaikuc3JjID0gSU1HOwogICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQob2JqKS5zdHlsZS5jdXJzb3IgPSBtb3VzZVN0eWxlOwp9CmZ1bmN0
aW9uIHNob3dIaWRlRGl2KG9iaikgewogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoUHJldkRp
dklkICsgIkRpdiIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZChQcmV2RGl2SWQgKyAiSW1nIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKG9iaiArICJEaXYiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2Nr
IjsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG9iaiArICJJbWciKS5zdHlsZS5kaXNwbGF5
ID0gImJsb2NrIjsKICAgIFByZXZEaXZJZCA9IG9iajsKfQpmdW5jdGlvbiB1cGRhdGVEYXNoYm9y
ZERpdihkaXZJZCwgc2lnbkluU3RhdHVzKSB7CiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoZGl2SWQgKyAiRGl2IikuaW5uZXJIVE1MICE9ICIiKSB7CiAgICAgICAgc2hvd0hpZGVEaXYo
ZGl2SWQpOwogICAgfSBlbHNlIHsKICAgICAgICAkLmFqYXgoewogICAgICAgICAgICB0eXBlOiAi
UE9TVCIsCiAgICAgICAgICAgIHVybDogInVwZGF0ZURhc2hib2FyZFRvb2wuZG8iLAogICAgICAg
ICAgICBkYXRhOiAiZGl2TmFtZT0iICsgZGl2SWQgKyAiJnNpZ25JblN0YXR1cz0iICsgc2lnbklu
U3RhdHVzLAogICAgICAgICAgICBkYXRhVHlwZTogImh0bWwiLAogICAgICAgICAgICBzdWNjZXNz
OiBmdW5jdGlvbiAoaHRtbCkgewogICAgICAgICAgICAgICAgJGdldF9Kc0VsZW1lbnQoIkNoZWNr
SW5EaXYiKS5pbm5lckhUTUwgPSAiIjsKICAgICAgICAgICAgICAgICRnZXRfSnNFbGVtZW50KCJD
aGFuZ2VGbGlnaHREaXYiKS5pbm5lckhUTUwgPSAiIjsKICAgICAgICAgICAgICAgICRnZXRfSnNF
bGVtZW50KCJDYW5jZWxGbGlnaHREaXYiKS5pbm5lckhUTUwgPSAiIjsKICAgICAgICAgICAgICAg
IGlmIChodG1sLnRyaW0oKSA9PSAic2Vzc2lvbk91dCIpIHsKICAgICAgICAgICAgICAgICAgICB3
aW5kb3cubG9jYXRpb24gPSAiL2hvbWUuZG8/bWV0aG9kPXZpcmdpbkFtZXJpY2EmYmFja1Nlc3Np
b25PdXQ9c2Vzc2lvblRpbWVPdXQiOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICBpZiAoaHRtbC50cmltKCkgPT0gIkFqYXhFcnJvciIpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gIi9ob21lLmRvP21ldGhvZD12aXJnaW5BbWVy
aWNhJmZyb21FcnJvclBhZ2U9ZnJvbUVycm9yUGFnZSI7CiAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJCgiIyIgKyBkaXZJZCArICJEaXYiKS5odG1s
KGh0bWwudHJpbSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0hpZGVEaXYoZGl2SWQp
OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQog
ICAgICAgIH0pOwogICAgfQp9CmZ1bmN0aW9uIHRvZ2dsZVByb21vQXJlYShvYmopIHsKICAgIGlm
IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiUHJvbW9Db2RlRGV0YWlsIikuc3R5bGUuZGlzcGxh
eSA9PSAiYmxvY2siKSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlByb21vQ29k
ZURldGFpbCIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgb2JqLmNsYXNzTmFtZSA9
ICJpbWdQcm9tb0NvZGUgZmxvYXRMZWZ0IjsKICAgICAgICBvYmouZmlyc3RDaGlsZC50aXRsZSA9
ICJPcGVuIjsKICAgIH0gZWxzZSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlBy
b21vQ29kZURldGFpbCIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgIG9iai5jbGFz
c05hbWUgPSAiaW1nUHJvbW9Db2RlU2VsZWN0ZWQgZmxvYXRMZWZ0IjsKICAgICAgICBvYmouZmly
c3RDaGlsZC50aXRsZSA9ICJDbG9zZSI7CiAgICB9Cn0KZnVuY3Rpb24gYXBwbHlQcm9tb0NvZGUo
dHJpcFR5cGUsIHBhZ2VOYW1lKSB7CiAgICB2YXIgcHJvbW9VcmwgPSAiL3Byb21vQ29kZUFwcGx5
LmRvP21ldGhvZD1hcHBseVByb21vQ29kZSZjZXJ0Q29kZT0iICsgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInByb21vQ29kZVRleHQiKS52YWx1ZSArICImdHJpcFR5cGU9IiArIHRyaXBUeXBlICsg
IiZwYWdlTmFtZT0iICsgcGFnZU5hbWU7CiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImxvYWRpbmdBbmltYXRpb25EaXYiKSkgewogICAgICAgIHNob3dXYWl0SW1hZ2UoKTsKICAgIH0g
ZWxzZSB7CiAgICAgICAgc2hvd1dhaXRJbWFnZSgpOwogICAgfQogICAgcHJvbW9Db2RlQWpheChw
cm9tb1VybCk7Cn0KZnVuY3Rpb24gcHJvbW9Db2RlQWN0aW9uKGFjdGlvbiwgcGFnZU5hbWUpIHsK
ICAgIHZhciB0cmlwVHlwZSA9ICJvdGhlciI7CiAgICBzaG93V2FpdEltYWdlKCk7CiAgICBpZiAo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdk9XIikuc3R5bGUuZGlzcGxheSA9PSAiYmxvY2si
KSB7CiAgICAgICAgdHJpcFR5cGUgPSAiT1ciOwogICAgfQogICAgaWYgKGFjdGlvbiA9PSAiYXBw
bHkiKSB7CiAgICAgICAgdmFyIHByb21vVXJsID0gInByb21vQ29kZUFwcGx5LmRvP21ldGhvZD1h
cHBseVByb21vQ29kZSZjZXJ0Q29kZT0iICsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByb21v
Q29kZVZhbHVlIikudmFsdWUgKyAiJnRyaXBUeXBlPSIgKyB0cmlwVHlwZSArICImcGFnZU5hbWU9
IiArIHBhZ2VOYW1lOwogICAgfSBlbHNlIHsKICAgICAgICBpZiAoYWN0aW9uID09ICJyZW1vdmUi
KSB7CiAgICAgICAgICAgIHZhciBwcm9tb1VybCA9ICJwcm9tb0NvZGVSZW1vdmUuZG8/bWV0aG9k
PXJlbW92ZVByb21vQ29kZSZwYWdlTmFtZT0iICsgcGFnZU5hbWU7CiAgICAgICAgfQogICAgfQog
ICAgJCgiI3NlY3QiKS5sb2FkKHByb21vVXJsLCAiIiwgZG9uZSk7CgogICAgZnVuY3Rpb24gZG9u
ZSgpIHsKICAgICAgICBhamF4KCJ1cGRhdGVUaXRsZUJhci5kbz9tZXRob2Q9dXBkYXRlVGl0bGVC
YXIiLCAidGl0bGVCYXJEaXYiKTsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9h
ZGluZ0FuaW1hdGlvbkRpdiIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICB9Cn0KdmFyIG1h
aW5DYWxXID0gIjM1MiI7CnZhciBpbm5lckNhbFcgPSAiMTYwIjsKdmFyIHRhYmxlT3BlbiA9ICI8
dHI+PHRkIGNvbHNwYW49JzMnIGFsaWduPSdsZWZ0JyB2YWxpZ249J3RvcCc+IiArICI8dGFibGUg
d2lkdGg9JzM1MicgYm9yZGVyPScwJyBjZWxscGFkZGluZz0nMCcgY2VsbHNwYWNpbmc9JzAnPiIg
KyAiPHRyPjx0ZCB3aWR0aD0nMTMnIGhlaWdodD0nOScgcm93c3Bhbj0nMycgYWxpZ249J2xlZnQn
IHZhbGlnbj0ndG9wJyBjbGFzcz0nY2FsZW5kZXJMZWZ0Jz48aW1nIHNyYz0naHR0cHM6Ly9zdGF0
aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL3NwYWNlci5naWYnIHdpZHRoPScxMycvPjwvdGQ+
IiArICI8dGQgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6I0ZGRkZGRic+PGltZyBzcmM9J2h0dHBz
Oi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy9zcGFjZXIxLnBuZycgd2lkdGg9JzMy
MCcgaGVpZ2h0PSc5Jy8+PC90ZD4iICsgIjx0ZCB3aWR0aD0nMTQnIGhlaWdodD0nOScgcm93c3Bh
bj0nMycgYWxpZ249J2xlZnQnIHZhbGlnbj0ndG9wJyBjbGFzcz0nY2FsZW5kZXJSaWdodCc+PGlt
ZyBzcmM9J2h0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy9zcGFjZXIuZ2lm
JyB3aWR0aD0nMTQnLz48L3RkPjwvdHI+IiArICI8dHI+PHRkIGFsaWduPSdsZWZ0JyB2YWxpZ249
J3RvcCcgPiIgKyAiPHRhYmxlIHdpZHRoPSczMjUnIGJvcmRlcj0nMCcgY2VsbHNwYWNpbmc9JzAn
IGNlbGxwYWRkaW5nPScwJyBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjojRkZGRkZGJz4iICsgIjx0
cj48dGQgd2lkdGg9IiArIGlubmVyQ2FsVyArICIgYWxpZ249J2xlZnQnIHZhbGlnbj0ndG9wJyA+
IjsKdmFyIHByZXZfY2FsID0gIiI7CnZhciBuZXh0X2NhbCA9ICIiOwp2YXIgdGFibGVDbG9zZVMg
PSAiPC90ZD48L3RyPiIgKyAiPHRyPjx0ZD4iICsgIjx0YWJsZSB3aWR0aD0nMzI1JyBib3JkZXI9
JzAnIGNlbGxzcGFjaW5nPScwJyBjZWxscGFkZGluZz0nMCcgYmdjb2xvcj0nI2U1ZTVlNSc+IiAr
ICI8dHI+IiArICc8dGQgdmFsaWduPSJib3R0b20iIHdpZHRoPSIzNiIgaGVpZ2h0PSIyMCI+JzsK
dmFyIHRhYmxlQ2xvc2VNID0gIjwvdGQ+IiArICI8dGQgd2lkdGg9JzI1NScgaGVpZ2h0PScyMCc+
Jm5ic3A7PC90ZD4iICsgJzx0ZCB2YWxpZ249ImJvdHRvbSIgd2lkdGg9IjM1IiBoZWlnaHQ9IjIw
Ij4nOwp2YXIgdGFibGVDbG9zZUwgPSAiPC90ZD48L3RyPjwvdGFibGU+IiArICI8L3RkPjwvdHI+
IiArICI8L3RhYmxlPjwvdGQ+PC90cj4iICsgIjx0cj48dGQgd2lkdGg9JzM1MicgaGVpZ2h0PScx
NCcgY29sc3Bhbj0nMycgYWxpZ249J2xlZnQnIHZhbGlnbj0ndG9wJyBjbGFzcz0nY2FsZW5kZXJC
YXNlJz48aW1nIHNyYz0naHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL3Nw
YWNlci5naWYnIHdpZHRoPSczNTInIGhlaWdodD0nMTQnIC8+PC90ZD48L3RyPjwvdGFibGU+IjsK
dmFyIHRkRm9yM3JkQ2FsVGFibGUgPSAiPC90ZD48dGQgd2lkdGg9JzUnIGFsaWduPSdsZWZ0JyB2
YWxpZ249J3RvcCc+PGltZyBzcmM9J2h0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2lt
YWdlcy9jYWxlbmRlcl9jdC5wbmcnIHdpZHRoPSc1JyBoZWlnaHQ9JzEzNicgLz48L3RkPjx0ZCB3
aWR0aD0iICsgaW5uZXJDYWxXICsgIiBhbGlnbj0nbGVmdCcgdmFsaWduPSd0b3AnID4iOwoKZnVu
Y3Rpb24gbWFrZUNhbCh3aGljaE1vbnRoKSB7CiAgICBiX2NhbGluaXQgPSAxOwogICAgb19jYWwg
PSAiIjsKICAgIG9fY2FsdHIgPSAiIjsKICAgIG9fY2FsdGQgPSAiIjsKICAgIG5ld00gPSB3aGlj
aE1vbnRoOwogICAgaWYgKG5ld00gPCBjTSkgewogICAgICAgIG5ld1kgPSBuZXdZOwogICAgfQog
ICAgaWYgKG5ld00gPj0gMTIpIHsKICAgICAgICBuZXdNID0gd2hpY2hNb250aCAtIDEyOwogICAg
ICAgIG5ld1krKzsKICAgIH0KICAgIGlmIChpX251bWNhbCA9PSAwKSB7CiAgICAgICAgaV9maXJz
dE1vbnRoID0gbmV3TTsKICAgICAgICBzd2l0Y2ggKHNfaW5wdXR0eXBlKSB7CiAgICAgICAgY2Fz
ZSAib2JqZWN0IjoKICAgICAgICAgICAgaV9vZmlyc3RNb250aCA9IG5ld007CiAgICAgICAgICAg
IGlfb2ZpcnN0WWVhciA9IG5ld1k7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgIGlfc2ZpcnN0TW9udGggPSBuZXdNOwogICAgICAgICAgICBpX3NmaXJzdFll
YXIgPSBuZXdZOwogICAgICAgIH0KICAgIH0KICAgIG5ld0RzID0gZGF0ZXNBcnJheVtuZXdNXTsK
ICAgIGlzTGVhcCA9IChuZXdZICUgNCA9PSAwICYmIChuZXdZICUgMTAwICE9IDAgfHwgbmV3WSAl
IDQwMCA9PSAwKSkgPyAxIDogMDsKICAgIGlmIChuZXdNID09IDEpIHsKICAgICAgICBuZXdEcyA9
IG5ld0RzICsgaXNMZWFwOwogICAgfQogICAgbmV3RCA9IGZpbmRGaXJzdERheSgpOwogICAgY291
bnREYXkgPSBuZXdEOwogICAgc19jYWxjbGFzcyA9IChjYWxEaXJlY3Rpb24gPT0gInZlcnRpY2Fs
IikgPyAiY2FsVGFibGVIIiA6ICJjYWxUYWJsZUgiOwogICAgdmFyIGNoYW5nZVREVE9UQUJMRVZh
bHVlID0gIiI7CiAgICBvX2NhbCArPSAiPHRhYmxlIG1vbnRoPSciICsgbmV3TSArICInIHllYXI9
JyIgKyBuZXdZICsgIicgd2lkdGg9IiArIGlubmVyQ2FsVyArICIgYm9yZGVyPScwJyBjZWxsc3Bh
Y2luZz0nMCcgY2VsbHBhZGRpbmc9JzAnIHN0eWxlPSdiYWNrZ3JvdW5kOmNvbG9yOmJsdWUnPiI7
CiAgICBvX2NhbHRkICs9ICI8dGQgaGVpZ2h0PScyMCcgYWxpZ249J2NlbnRlcicgdmFsaWduPSdt
aWRkbGUnIGNsYXNzPSdjYWxNb24nIGJhY2tncm91bmQ9J2h0dHBzOi8vc3RhdGljLnZpcmdpbmFt
ZXJpY2EuY29tL2ltYWdlcy9tb250aF9iZy5wbmcnIGNvbHNwYW49Nz4iOwogICAgY2hhbmdlVERU
T1RBQkxFVmFsdWUgPSBtQXJyYXlbbmV3TV07CiAgICBvX2NhbHRkICs9ICJSV1RDTVQiOwogICAg
b19jYWx0ZCArPSAiPC90ZD4iOwogICAgb19jYWx0ciA9IHR5X21ha2V0cihvX2NhbHRkKTsKICAg
IG9fY2FsICs9IG9fY2FsdHI7CiAgICBvX2NhbHRkID0gIiI7CiAgICBvX2NhbHRkICs9ICI8dGQg
aGVpZ2h0PScxNCcgYWxpZ249J2xlZnQnIHZhbGlnbj0ndG9wJyBjb2xzcGFuPTcgPjxpbWcgc3Jj
PSdodHRwczovL3N0YXRpYy52aXJnaW5hbWVyaWNhLmNvbS9pbWFnZXMvZGF5X25hbWUucG5nJyB3
aWR0aD0iICsgaW5uZXJDYWxXICsgIiBoZWlnaHQ9JzE0JyAvPjwvdGQ+IjsKICAgIG9fY2FsdHIg
PSB0eV9tYWtldHIob19jYWx0ZCk7CiAgICBvX2NhbHRkID0gIiI7CiAgICBvX2NhbCArPSBvX2Nh
bHRyOwogICAgb19jYWx0ZCA9ICI8dGQgd2lkdGg9JzE2MCcgYmdjb2xvcj0nI2UwZTBlMCcgYWxp
Z249J2NlbnRlcicgY29sc3Bhbj03Pjx0YWJsZSB3aWR0aD0nMTU4JyBib3JkZXI9JzAnIGNlbGxw
YWRkaW5nPScwJyBjZWxsc3BhY2luZz0nMCcgYWxpZ249J2NlbnRlcicgc3R5bGU9J2JhY2tncm91
bmQtY29sb3I6I0ZGRkZGRic+IjsKICAgIG9fY2FsdHIgPSB0eV9tYWtldHIob19jYWx0ZCk7CiAg
ICBvX2NhbCArPSBvX2NhbHRyOwogICAgb19jYWx0ZCArPSAiPHRkID48aW1nIHNyYz0naHR0cHM6
Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL3NwYWNlci5naWYnPjwvdGQ+IjsKICAg
IG9fY2FsdHIgPSB0eV9tYWtldHIob19jYWx0ZCk7CiAgICBvX2NhbCArPSBvX2NhbHRyOwogICAg
b19jYWx0ZCA9ICIiOwogICAgaV9jYWxSb3dzID0gMDsKICAgIGZvciAoZCA9IDE7IGQgPD0gbmV3
RHM7IGQrKykgewogICAgICAgIGlmIChkID09IDEpIHsKICAgICAgICAgICAgZm9yIChiZCA9IDA7
IGJkIDwgbmV3RDsgYmQrKykgewogICAgICAgICAgICAgICAgb19jYWx0ZCArPSAiPHRkIHdpZHRo
PScxOCcgaGVpZ2h0PScxNicgYWxpZ249J2xlZnQnIHZhbGlnbj0ndG9wJz48aW1nIHNyYz0naHR0
cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL3NwYWNlci5naWYnIHdpZHRoPScx
OCcgaGVpZ2h0PScxNicgLz48L3RkPiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAg
b19jYWx0ZCArPSB0eV9tYWtlRGF0ZShkKTsKICAgICAgICBjb3VudERheSsrOwogICAgICAgIGlm
IChjb3VudERheSA9PSA3KSB7CiAgICAgICAgICAgIGNvdW50RGF5ID0gMDsKICAgICAgICAgICAg
b19jYWx0ciA9IHR5X21ha2V0cihvX2NhbHRkKTsKICAgICAgICAgICAgb19jYWwgKz0gb19jYWx0
cjsKICAgICAgICAgICAgb19jYWx0ZCA9ICIiOwogICAgICAgICAgICBpX2NhbFJvd3MrKzsKICAg
ICAgICB9CiAgICAgICAgaWYgKGQgPT0gbmV3RHMgJiYgY291bnREYXkgIT0gMCkgewogICAgICAg
ICAgICBmb3IgKGJkID0gY291bnREYXk7IGJkIDwgNzsgYmQrKykgewogICAgICAgICAgICAgICAg
b19jYWx0ZCArPSAiPHRkIHdpZHRoPScxOCcgaGVpZ2h0PScxNicgYWxpZ249J2xlZnQnIHZhbGln
bj0ndG9wJyBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjojRkZGRkZGJz48L3RkPiI7CiAgICAgICAg
ICAgIH0KICAgICAgICAgICAgb19jYWx0ciA9IHR5X21ha2V0cihvX2NhbHRkKTsKICAgICAgICAg
ICAgb19jYWwgKz0gb19jYWx0cjsKICAgICAgICAgICAgb19jYWx0ZCA9ICIiOwogICAgICAgICAg
ICBpX2NhbFJvd3MrKzsKICAgICAgICB9CiAgICB9CiAgICBpZiAoaV9jYWxSb3dzIDwgNikgewog
ICAgICAgIGZvciAoY2FsUm93ID0gMTsgY2FsUm93IDwgKDcgLSBpX2NhbFJvd3MpOyBjYWxSb3cr
KykgewogICAgICAgICAgICBvX2NhbHRkID0gIiI7CiAgICAgICAgICAgIGZvciAoYmQgPSAwOyBi
ZCA8IDc7IGJkKyspIHsKICAgICAgICAgICAgICAgIG9fY2FsdGQgKz0gIjx0ZCB3aWR0aD0nMTgn
IGhlaWdodD0nNicgIHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkYnPjxpbWcgc3JjPSdo
dHRwczovL3N0YXRpYy52aXJnaW5hbWVyaWNhLmNvbS9pbWFnZXMvc3BhY2VyLmdpZicgd2lkdGg9
JzE4JyBoZWlnaHQ9JzE2JyAvPjwvdGQ+IjsKICAgICAgICAgICAgfQogICAgICAgICAgICBvX2Nh
bHRyID0gdHlfbWFrZXRyKG9fY2FsdGQpOwogICAgICAgICAgICBvX2NhbCArPSBvX2NhbHRyOwog
ICAgICAgIH0KICAgIH0KICAgIG9fY2FsICs9ICI8L3RkPjwvdGFibGU+IjsKICAgIG9fY2FsdGQg
PSAiPHRkIHdpZHRoPSIgKyBpbm5lckNhbFcgKyAiIGhlaWdodD0nNScgYWxpZ249J2xlZnQnIHN0
eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiNlNWU1ZTU7JyBjb2xzcGFuPSc3Jz48aW1nIHNyYz0naHR0
cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL2NhbGVuZGVyX2J0LnBuZycgd2lk
dGg9IiArIGlubmVyQ2FsVyArICIgaGVpZ2h0PSc1JyAvPjwvdGQ+IjsKICAgIG9fY2FsdHIgPSB0
eV9tYWtldHIob19jYWx0ZCk7CiAgICBvX2NhbCArPSBvX2NhbHRyOwogICAgaWYgKGlfbnVtY2Fs
ID09IDApIHsKICAgICAgICBpZiAobmV3TSA9PSBjTSAmJiBuZXdZID09IGNZKSB7CiAgICAgICAg
ICAgIHByZXZfY2FsID0gIiI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcHJldl9jYWwg
PSAiPGEgaHJlZj0nIycgaWQ9J2lkY2FsMScgb25jbGljaz0nIiArIHNfanNjYWxsICsgInR5X2No
YW5nZU1vbnRocygiICsgaV9maXJzdE1vbnRoICsgIi0xKTsiICsgc19qc2NhbGwgKyAicHJldmVu
dENsb3NlKGV2ZW50KTtyZXR1cm4gZmFsc2U7Jz48aW1nIHNyYz0naHR0cHM6Ly9zdGF0aWMudmly
Z2luYW1lcmljYS5jb20vaW1hZ2VzL2NhbGVuZGVyX3ByZXYucG5nJyB3aWR0aD0nMzYnIGhlaWdo
dD0nOScgYm9yZGVyPScwJyAvPjwvYT4iOwogICAgICAgIH0KICAgIH0KICAgIG9fY2FsYm9keS5p
bm5lckhUTUwgKz0gb19jYWw7CiAgICBpX251bWNhbCsrOwogICAgaWYgKGlfbnVtY2FsID09IG51
bUNhbGVuZGFycyAmJiAhYl9kYXRlMzMxKSB7CiAgICAgICAgbmV4dF9jYWwgPSAiPGEgaHJlZj0n
IycgaWQ9J2lkY2FsMicgb25jbGljaz0nIiArIHNfanNjYWxsICsgInR5X2NoYW5nZU1vbnRocygi
ICsgaV9maXJzdE1vbnRoICsgIisxKTsiICsgc19qc2NhbGwgKyAicHJldmVudENsb3NlKGV2ZW50
KTtyZXR1cm4gZmFsc2U7Jz48aW1nIHNyYz0naHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5j
b20vaW1hZ2VzL2NhbGVuZGVyX254dC5wbmcnIHdpZHRoPSczNicgaGVpZ2h0PSc5JyBib3JkZXI9
JzAnIC8+PC9hPiI7CiAgICB9IGVsc2UgewogICAgICAgIG5leHRfY2FsID0gIiI7CiAgICB9CiAg
ICB2YXIgbW9udGh0YWJsZTEgPSAiPHRhYmxlIHdpZHRoPSIgKyBpbm5lckNhbFcgKyAiIGJvcmRl
cj0nMCcgY2VsbHNwYWNpbmc9JzAnIGNlbGxwYWRkaW5nPScwJz4iICsgIjx0cj48dGQgYWxpZ249
J2xlZnQnIHZhbGlnbj0ndG9wJyB3aWR0aD0nNScgaGVpZ2h0PScxNyc+PGltZyBzcmM9J2h0dHBz
Oi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy9zcGFjZXIuZ2lmJyB3aWR0aD0nNScg
aGVpZ2h0PScxNycgYm9yZGVyPScwJyAvPjwvdGQ+IiArICI8dGQgd2lkdGg9JzE2JyBhbGlnbj0n
bGVmdCcgdmFsaWduPSd0b3AnPiI7CiAgICB2YXIgbW9udGh0YWJsZTIgPSAiPC90ZD48dGQgd2lk
dGg9JzUnIGFsaWduPSdjZW50ZXInIHZhbGlnbj0nbWlkZGxlJyBjbGFzcz0nc3R5bGU5Jz48aW1n
IHNyYz0naHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL3NwYWNlci5naWYn
IHdpZHRoPSc1JyBoZWlnaHQ9JzE3JyBib3JkZXI9JzAnIC8+PC90ZD4iICsgIjwvdHI+PC90YWJs
ZT4iOwogICAgaWYgKGlfbnVtY2FsIDwgbnVtQ2FsZW5kYXJzKSB7CiAgICAgICAgb19jYWxib2R5
LmlubmVySFRNTCA9IG9fY2FsYm9keS5pbm5lckhUTUwucmVwbGFjZSgiUldUQ01UIiwgY2hhbmdl
VERUT1RBQkxFVmFsdWUpOwogICAgICAgIG9fY2FsMSA9IG9fY2FsYm9keS5pbm5lckhUTUw7CiAg
ICAgICAgb19jYWxib2R5LmlubmVySFRNTCA9ICIiOwogICAgfSBlbHNlIHsKICAgICAgICBvX2Nh
bGJvZHkuaW5uZXJIVE1MID0gb19jYWxib2R5LmlubmVySFRNTC5yZXBsYWNlKCJSV1RDTVQiLCBj
aGFuZ2VURFRPVEFCTEVWYWx1ZSk7CiAgICAgICAgb19jYWwyID0gb19jYWxib2R5LmlubmVySFRN
TDsKICAgICAgICBvX2NhbDIgPSBvX2NhbDIgKyAiPC90ZD48L3RyPjwvdGFibGU+IjsKICAgICAg
ICBvX2NhbGJvZHkuaW5uZXJIVE1MID0gIiI7CiAgICB9CiAgICBpZiAoaV9udW1jYWwgPCBudW1D
YWxlbmRhcnMpIHsKICAgICAgICBtYWtlQ2FsKG5ld00gKyAxKTsKICAgICAgICB6enp6Kys7CiAg
ICB9IGVsc2UgewogICAgICAgIGlmIChpX2ZpcnN0TW9udGggPiBuZXdNKSB7CiAgICAgICAgICAg
IG5ld1ktLTsKICAgICAgICB9CiAgICB9CiAgICBpZiAoenp6eiAlIDIgPT0gMCkgewogICAgICAg
IG9fY2FsYm9keS5pbm5lckhUTUwgPSBzX2Nsb3NlY2FsICsgdGFibGVPcGVuICsgb19jYWwxICsg
dGRGb3IzcmRDYWxUYWJsZSArIG9fY2FsMiArIHRhYmxlQ2xvc2VTICsgcHJldl9jYWwgKyB0YWJs
ZUNsb3NlTSArIG5leHRfY2FsICsgdGFibGVDbG9zZUw7CiAgICAgICAgenp6eiA9IDE7CiAgICB9
Cn0KZnVuY3Rpb24gb3BlbkNhbGVuZGFyKHZfaW5wdXQsIHNfZnJvbSwgc190bywgc19jYWwsIHNf
cGFyZW50LCBzX21vZGUsIHNfY2FsZGlyLCBwb3MxLCBwb3MyLCBpbWFnZU5hbWUpIHsKICAgIGNh
bFR5cGUgPSAiaG9tZSI7CiAgICBmbGdEb3JSID0gaW1hZ2VOYW1lOwogICAgdmFyIGltYWdlQ2xh
c3NOYW1lOwogICAgZmxnUmV0TmFtZSA9IHNfZnJvbTsKICAgIHZhciByZXRMb2NhbFZhciA9IHNf
ZnJvbTsKICAgIHZhciBkcER0U3RyID0gIiI7CiAgICBjTSA9IHRvZGF5LmdldE1vbnRoKCk7CiAg
ICBjWSA9IHRvZGF5LmdldEZ1bGxZZWFyKCk7CiAgICB2X2lucHV0LmNsYXNzTmFtZSA9ICIiOwog
ICAgaWYgKGRvY3VtZW50LmZsaWdodFNlYXJjaEZvcm0pIHsKICAgICAgICBmb3IgKGkgPSAwOyBp
IDwgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoRm9ybS5lbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAg
ICAgICAgICBpZiAoZG9jdW1lbnQuZmxpZ2h0U2VhcmNoRm9ybS5lbGVtZW50c1tpXS5uYW1lID09
ICJmbGlnaHRTZWFyY2guZGVwRGF0ZS5NTUREWVlZWSIpIHsKICAgICAgICAgICAgICAgIGRwRHRT
dHIgPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hGb3JtLmVsZW1lbnRzW2ldLnZhbHVlOwogICAgICAg
ICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYgKGltYWdlTmFtZSA9PSAicmV0dXJuX2RhdGUu
cG5nIikgewogICAgICAgIGltYWdlQ2xhc3NOYW1lID0gInJldHVybkRhdGUiOwogICAgfSBlbHNl
IHsKICAgICAgICBpbWFnZUNsYXNzTmFtZSA9ICJkZXBhcnREYXRlIjsKICAgIH0KICAgIGlmIChp
bWFnZU5hbWUgPT0gInJldHVybl9kYXRlLnBuZyIgfHwgKHJldExvY2FsVmFyID09ICJmbGlnaHRT
ZWFyY2gucmV0dXJuRGF0ZU1DLk1NRERZWVlZIikpIHsKICAgICAgICBpZiAoZHBEdFN0ciA9PSAi
IiB8fCBkcER0U3RyID09ICJtbS9kZC95eXl5IikgewogICAgICAgICAgICBpX29maXJzdE1vbnRo
ID0gbmV3IERhdGUoKS5nZXRNb250aCgpOwogICAgICAgICAgICBmbGdEYXRlRGlzYWJsZSA9IG5l
dyBEYXRlKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZmxnRGF0ZURpc2FibGUgPSBu
ZXcgRGF0ZShkcER0U3RyKTsKICAgICAgICAgICAgaV9vZmlyc3RNb250aCA9IG5ldyBEYXRlKGRw
RHRTdHIpLmdldE1vbnRoKCk7CiAgICAgICAgICAgIGNNID0gaV9vZmlyc3RNb250aDsKICAgICAg
ICAgICAgY1kgPSBmbGdEYXRlRGlzYWJsZS5nZXRGdWxsWWVhcigpOwogICAgICAgIH0KICAgIH0K
ICAgIGlmIChpc1BDSUUpIHsKICAgICAgICBzX2Nsb3NlY2FsID0gIjx0YWJsZSB3aWR0aD0nMzUw
JyBib3JkZXI9JzAnIGNlbGxwYWRkaW5nPScwJyBjZWxsc3BhY2luZz0nMCc+IjsKICAgIH0gZWxz
ZSB7CiAgICAgICAgc19jbG9zZWNhbCA9ICI8dGFibGUgd2lkdGg9JzM1MCcgYm9yZGVyPScwJyBj
ZWxscGFkZGluZz0nMCcgY2VsbHNwYWNpbmc9JzAnIHN0eWxlPSdtYXJnaW4tbGVmdDotMnB4Jz4i
OwogICAgfQogICAgc19jbG9zZWNhbCA9IHNfY2xvc2VjYWwgKyAiPHRyPjx0ZCB3aWR0aD0nMjgw
JyBoZWlnaHQ9JzMxJyBhbGlnbj0nbGVmdCcgdmFsaWduPSd0b3AnIGNsYXNzPSciICsgaW1hZ2VD
bGFzc05hbWUgKyAiJyA+PGltZyBzcmM9J2h0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29t
L2ltYWdlcy9zcGFjZXIuZ2lmJyB3aWR0aD0nMjgwJyBoZWlnaHQ9JzMxJyAvPjwvdGQ+IiArICI8
dGQgd2lkdGg9JzU4JyBhbGlnbj0nbGVmdCcgdmFsaWduPSd0b3AnIGNsYXNzPSdjbG9zZUNhbCcg
PjxhIGhyZWY9JyMnIGlkPSdpZGNsb3NlJyBvbmNsaWNrPSciICsgc19qc2NhbGwgKyAiY2xvc2VD
YWwoKTtyZXR1cm4gZmFsc2U7Jz48aW1nIHNyYz0naHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmlj
YS5jb20vaW1hZ2VzL3NwYWNlci5naWYnIHdpZHRoPSc1OCcgYm9yZGVyPScwJyBoZWlnaHQ9JzMx
Jy8+PC9hPjwvdGQ+IiArICI8dGQgd2lkdGg9JzE0JyBhbGlnbj0nbGVmdCcgdmFsaWduPSd0b3An
IGNsYXNzPSdkZXBhcnREYXRlUmlnaHQnPjxpbWcgc3JjPSdodHRwczovL3N0YXRpYy52aXJnaW5h
bWVyaWNhLmNvbS9pbWFnZXMvc3BhY2VyLmdpZicgd2lkdGg9JzE0JyBoZWlnaHQ9JzMxJy8+PC90
ZD48L3RyPiI7CiAgICBGaWVsZENsaWNrZWQgPSB2X2lucHV0Lm5hbWU7CiAgICBkaXNwbGF5SW1h
Z2UgPSBpbWFnZU5hbWU7CiAgICBjbGVhclRpbWVvdXQodF9jYWxjbG9zZXIpOwogICAgc19pbnB1
dHR5cGUgPSB0eXBlb2YgKHZfaW5wdXQpOwogICAgYV92X2lucHV0ID0gbnVsbDsKICAgIGNhbG9w
ZW4gPSAwOwogICAgb19jYWxkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzX2NhbCk7CiAg
ICBvX2NhbGRpdi5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgIG9fY2FsZGl2LmNsYXNzTmFt
ZSA9ICJjYWxib3hvbiI7CiAgICBtYWtlQ2FsZW5kYXIodl9pbnB1dCwgc19mcm9tLCBzX3RvLCBz
X21vZGUpOwogICAgb19pbnB1dHJpZ2h0ID0gdl9pbnB1dDsKICAgIG9fcGFyZW50ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoc19wYXJlbnQpOwogICAgb19jYWwgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZChzX2NhbCk7CiAgICBpX2NhbHggPSBwYXJzZUludChvX2lucHV0cmlnaHQub2Zmc2V0
TGVmdCkgKyBwYXJzZUludChvX2lucHV0cmlnaHQub2Zmc2V0V2lkdGgpOwogICAgaV9jYWx5ID0g
cGFyc2VJbnQob19wYXJlbnQub2Zmc2V0VG9wKSArIChwYXJzZUludChvX3BhcmVudC5vZmZzZXRI
ZWlnaHQpIC8gMikgLSAocGFyc2VJbnQob19jYWwub2Zmc2V0SGVpZ2h0KSAvIDIpOwogICAgdmFy
IHRvcCA9IHBhcnNlSW50KCgkKCIjQm9va0ZsaWdodERpdiIpLmhlaWdodCgpIC0gMjA5KSAvIDIp
OwogICAgdmFyIGRpdk1hcmdpbiA9ICQoIiNCb29rRmxpZ2h0RGl2IikuY3NzKCJtYXJnaW5MZWZ0
Iik7CiAgICBpZiAoZGl2TWFyZ2luID09ICJhdXRvIikgewogICAgICAgIGRpdk1hcmdpbiA9ICIw
IjsKICAgIH0gZWxzZSB7CiAgICAgICAgZGl2TWFyZ2luLnJlcGxhY2UoL3B4LywgIiIpOwogICAg
fQogICAgdmFyIGxlZnQgPSBwYXJzZUludCgoJCgiI0Jvb2tGbGlnaHREaXYiKS53aWR0aCgpIC0g
MzUwKSAvIDIpICsgcGFyc2VJbnQoZGl2TWFyZ2luKSArIDIwOwogICAgb19jYWwuc3R5bGUubGVm
dCA9IGxlZnQgKyAicHgiOwogICAgb19jYWwuc3R5bGUudG9wID0gKCQoIiMiICsgc19wYXJlbnQp
Lm9mZnNldCgpLnRvcCAtIDE1MCkgKyAicHgiOwogICAgc2V0VGltZW91dCgiY2Fsb3BlbiA9IDEi
LCAxMDApOwp9CmZ1bmN0aW9uIGxvYWRIb21lSGVhZFNjcmlwdHModGhpc0RhdGUpIHsKICAgIGRv
Y3VtZW50LndyaXRlKCc8c3R5bGUgdHlwZT0idGV4dC9jc3MiPi50YWJiZXJ7ZGlzcGxheTpub25l
O308L3N0eWxlPicpOwogICAgcy5wYWdlTmFtZSA9ICJIb21lIFBhZ2UiOwogICAgcy5jaGFubmVs
ID0gIkhvbWUiOwogICAgZml4ZWRDb25maWd1cmF0ZWREYXRlID0gdGhpc0RhdGU7CiAgICAkKGRv
Y3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7CiAgICAgICAgTU1fcHJlbG9hZEltYWdlcygiaHR0
cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL2xvYWRpbmdCRy5wbmciLCAiaHR0
cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL2hvbWVCZ0ltYWdlLnBuZyIsICJo
dHRwczovL3N0YXRpYy52aXJnaW5hbWVyaWNhLmNvbS9pbWFnZXMvcm9sbE92ZXIucG5nIiwgImh0
dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy9uYXZEYXNoQm9hcmQucG5nIik7
CiAgICB9KTsKfQpmdW5jdGlvbiBsb2FkT3JpZ2lucyhPcmlnaW4sIERlc3RpbmF0aW9uKSB7CiAg
ICB2YXIgb2JqID0gJGdldF9Kc0VsZW1lbnQoImZsaWdodFNlYXJjaEZvcm0iLCAiZmxpZ2h0U2Vh
cmNoLm9yaWdpbiIpOwogICAgb2JqLnZhbHVlID0gT3JpZ2luOwogICAgcmVkaXJlY3Qob2JqLnNl
bGVjdGVkSW5kZXgpOwogICAgJGdldF9Kc0VsZW1lbnQoIm9yaWdpbkZsdE9uZU1DIikuc2VsZWN0
ZWRJbmRleCA9IG9iai5zZWxlY3RlZEluZGV4OwogICAgb2JqID0gJGdldF9Kc0VsZW1lbnQoImZs
aWdodFNlYXJjaEZvcm0iLCAiZmxpZ2h0U2VhcmNoLmRlc3RpbmF0aW9uIik7CiAgICBvYmoudmFs
dWUgPSBEZXN0aW5hdGlvbjsKICAgICRnZXRfSnNFbGVtZW50KCJkZXN0aW5hdGlvbkZsdE9uZU1D
Iikuc2VsZWN0ZWRJbmRleCA9IG9iai5zZWxlY3RlZEluZGV4Owp9CmZ1bmN0aW9uIGxvYWRNQ09y
aWdpbnMoT3JpZ2luLCBEZXN0aW5hdGlvbikgewogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
Im9yaWdpbkZsdFR3b01DIikudmFsdWUgPSBPcmlnaW47CiAgICByZWRpcmVjdE1DKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJvcmlnaW5GbHRUd29NQyIpLnNlbGVjdGVkSW5kZXgpOwogICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc3RpbmF0aW9uRmx0VHdvTUMiKS52YWx1ZSA9IERlc3Rp
bmF0aW9uOwp9CmZ1bmN0aW9uIGxvYWRIb21lQm90dG9tU2NyaXB0cyhlbGV2YXRlT3JBY2N0LCBj
dXJyZW50RGl2SWQpIHsKICAgIGlmIChlcnJvclByZXNlbnQpIHsKICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiRXJyb3JNZXNzYWdlIikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAg
ICB9IGVsc2UgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJFcnJvck1lc3NhZ2Ui
KS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgfQogICAgdmFyIHJhZGlvT2JqID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeU5hbWUoImZsaWdodFNlYXJjaC50cmlwVHlwZSIpOwogICAgZm9yIChp
ID0gMDsgaSA8IHJhZGlvT2JqLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWYgKHJhZGlvT2JqW2ld
LmNoZWNrZWQgPT0gdHJ1ZSkgewogICAgICAgICAgICBjaGFuZ2VUcmlwVHlwZShyYWRpb09ialtp
XS52YWx1ZSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KICAgIHNlbGVjdGVk
VGFnKCJob21lIik7CiAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7CiAgICAgICAg
c2hvd0hpZGVEaXYoY3VycmVudERpdklkKTsKICAgIH0pOwogICAgaWYgKGVsZXZhdGVPckFjY3Qg
PT0gIkpvaW5FbGV2YXRlIikgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJqb2lu
T3JBY2NvdW50IikuaW5uZXJIVE1MID0gIjxhIGhyZWY9Jy9mcmVxdWVudC1mbHllci9qb2luLWVs
ZXZhdGUuaHRtbCc+Sm9pbiBFbGV2YXRlPC9hPiI7CiAgICB9IGVsc2UgewogICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJqb2luT3JBY2NvdW50IikuaW5uZXJIVE1MID0gIjxhIGhyZWY9
J3NpZ25Jbi5kbz9tZXRob2Q9aG9tZVByb2ZpbGVXaXRoUGFnaW5hdGlvbic+TXkgQWNjb3VudDwv
YT4iOwogICAgfQogICAgdmFyIGxvYWRGdW5jdGlvbiA9IHdpbmRvdy5vbmxvYWQ7CiAgICB3aW5k
b3cub25sb2FkID0gZnVuY3Rpb24gKCkgewogICAgICAgIGlmIChsb2FkRnVuY3Rpb24pIHsKICAg
ICAgICAgICAgbG9hZEZ1bmN0aW9uKCk7CiAgICAgICAgfQogICAgICAgIGludGlhbGlzZUhlYWRl
cih0aGlzRG9jSUQsIGRlYWN0aXZhdGUpOwogICAgfTsKfQpmdW5jdGlvbiBvcmlnaW5SVEhvbWUo
KSB7CiAgICBmb3IgKGkgPSAwOyBpIDwgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoRm9ybS5lbGVtZW50
cy5sZW5ndGg7IGkrKykgewogICAgICAgIGVsZW1lbnROYW1lID0gZG9jdW1lbnQuZmxpZ2h0U2Vh
cmNoRm9ybS5lbGVtZW50c1tpXS5uYW1lOwogICAgICAgIGlmIChlbGVtZW50TmFtZSA9PSAiZmxp
Z2h0U2VhcmNoLm9yaWdpbiIpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQp9
CmZ1bmN0aW9uIGxvYWREYXRhRnJvbUNvb2tpZXNIb21lKHRyaXBUeXBlKSB7CiAgICBmb3IgKGog
PSAwOyBqIDwgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoRm9ybS5lbGVtZW50cy5sZW5ndGg7IGorKykg
ewogICAgICAgIHZhciBvYmogPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hGb3JtLmVsZW1lbnRzW2pd
OwogICAgICAgIGlmIChvYmoubmFtZSA9PSAiZmxpZ2h0U2VhcmNoLm9yaWdpbiIpIHsKICAgICAg
ICAgICAgb2JqLnZhbHVlID0gKGdldENvb2tpZShvYmoubmFtZSkgIT0gbnVsbCkgPyBnZXRDb29r
aWUob2JqLm5hbWUpIDogKG9iai52YWx1ZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
aWYgKG9iai5uYW1lID09ICJmbGlnaHRTZWFyY2guZGVzdGluYXRpb24iKSB7CiAgICAgICAgICAg
ICAgICBvYmoudmFsdWUgPSAoZ2V0Q29va2llKG9iai5uYW1lKSAhPSBudWxsKSA/IGdldENvb2tp
ZShvYmoubmFtZSkgOiAob2JqLnZhbHVlKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgIGlmIChvYmoubmFtZSA9PSAiZmxpZ2h0U2VhcmNoLmFkdWx0cyIpIHsKICAgICAgICAg
ICAgICAgICAgICBvYmoudmFsdWUgPSAoZ2V0Q29va2llKG9iai5uYW1lKSAhPSBudWxsKSA/IGdl
dENvb2tpZShvYmoubmFtZSkgOiAob2JqLnZhbHVlKTsKICAgICAgICAgICAgICAgICAgICBpZiAo
b2JqLnZhbHVlICE9IG51bGwgJiYgb2JqLnZhbHVlLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFkdWx0cyIpLnZhbHVlID0gb2Jq
LnZhbHVlLnRyaW0oKTsKICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImFkdWx0c01DIikudmFsdWUgPSBvYmoudmFsdWUudHJpbSgpOwogICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYg
KG9iai5uYW1lID09ICJmbGlnaHRTZWFyY2gua2lkcyIpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgb2JqLnZhbHVlID0gKGdldENvb2tpZShvYmoubmFtZSkgIT0gbnVsbCkgPyBnZXRDb29raWUo
b2JqLm5hbWUpIDogKG9iai52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmou
dmFsdWUgIT0gbnVsbCAmJiBvYmoudmFsdWUubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImtpZHMiKS52YWx1ZSA9IG9iai52
YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJraWRzTUMiKS52YWx1ZSA9IG9iai52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChv
YmoubmFtZSA9PSAiZmxpZ2h0U2VhcmNoLmluZmFudHMiKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvYmoudmFsdWUgPSAoZ2V0Q29va2llKG9iai5uYW1lKSAhPSBudWxsKSA/IGdldENv
b2tpZShvYmoubmFtZSkgOiAob2JqLnZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChvYmoudmFsdWUgIT0gbnVsbCAmJiBvYmoudmFsdWUubGVuZ3RoID4gMCkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbmZhbnRz
IikudmFsdWUgPSBvYmoudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImluZmFudHNNQyIpLnZhbHVlID0gb2JqLnZhbHVlOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5uYW1lID09ICJmbGlnaHRTZWFy
Y2gub3JpZ2luTUMiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnZhbHVl
ID0gKGdldENvb2tpZShvYmoubmFtZSkgIT0gbnVsbCkgPyBnZXRDb29raWUob2JqLm5hbWUpIDog
KG9iai52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iai52YWx1
ZSAhPSBudWxsICYmIG9iai52YWx1ZS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvcmlnaW5GbHRUd29NQyIp
LnZhbHVlID0gb2JqLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG9iai5uYW1lID09ICJmbGlnaHRTZWFyY2guZGVzdGluYXRpb25NQyIpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnZhbHVlID0gKGdldENvb2tp
ZShvYmoubmFtZSkgIT0gbnVsbCkgPyBnZXRDb29raWUob2JqLm5hbWUpIDogKG9iai52YWx1ZSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoudmFsdWUgIT0gbnVs
bCAmJiBvYmoudmFsdWUubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc3RpbmF0aW9uRmx0VHdvTUMi
KS52YWx1ZSA9IG9iai52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAodHJp
cFR5cGUgPT0gIm1jIikgewogICAgICAgICAgICBpZiAob2JqLm5hbWUgPT0gImZsaWdodFNlYXJj
aC5kZXBEYXRlTUMuTU1ERFlZWVkiKSB7CiAgICAgICAgICAgICAgICBvYmoudmFsdWUgPSAoKGdl
dENvb2tpZShvYmoubmFtZSkgIT0gbnVsbCkgJiYgKERhdGUucGFyc2UoZ2V0Q29va2llKG9iai5u
YW1lKSkgPj0gKERhdGUucGFyc2UobmV3IERhdGUoKSkgLSAyNCAqIDYwICogNjAgKiAxMDAwKSkp
ID8gZ2V0Q29va2llKG9iai5uYW1lKSA6IChvYmoudmFsdWUpOwogICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgaWYgKG9iai5uYW1lID09ICJmbGlnaHRTZWFyY2gucmV0dXJuRGF0
ZU1DLk1NRERZWVlZIikgewogICAgICAgICAgICAgICAgICAgIG9iai52YWx1ZSA9ICgoZ2V0Q29v
a2llKG9iai5uYW1lKSAhPSBudWxsKSAmJiAoRGF0ZS5wYXJzZShnZXRDb29raWUob2JqLm5hbWUp
KSA+PSAoRGF0ZS5wYXJzZShuZXcgRGF0ZSgpKSAtIDI0ICogNjAgKiA2MCAqIDEwMDApKSkgPyBn
ZXRDb29raWUoImZsaWdodFNlYXJjaC5yZXR1cm5EYXRlLk1NRERZWVlZIikgOiAob2JqLnZhbHVl
KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgIGlmICh0cmlwVHlwZSA9PSAibWMiICYmIG9iai5uYW1lID09ICJmbGlnaHRTZWFyY2gu
ZGVwRGF0ZU9XLk1NRERZWVlZIikgewogICAgICAgICAgICAgICAgb2JqLnZhbHVlID0gKChnZXRD
b29raWUob2JqLm5hbWUpICE9IG51bGwpICYmIChEYXRlLnBhcnNlKGdldENvb2tpZShvYmoubmFt
ZSkpID49IChEYXRlLnBhcnNlKG5ldyBEYXRlKCkpIC0gMjQgKiA2MCAqIDYwICogMTAwMCkpKSA/
IGdldENvb2tpZShvYmoubmFtZSkgOiAob2JqLnZhbHVlKTsKICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgIGlmICh0cmlwVHlwZSA9PSAicnQiKSB7CiAgICAgICAgICAgICAgICAg
ICAgaWYgKG9iai5uYW1lID09ICJmbGlnaHRTZWFyY2guZGVwRGF0ZS5NTUREWVlZWSIpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgb2JqLnZhbHVlID0gKChnZXRDb29raWUob2JqLm5hbWUpICE9
IG51bGwpICYmIChEYXRlLnBhcnNlKGdldENvb2tpZShvYmoubmFtZSkpID49IChEYXRlLnBhcnNl
KG5ldyBEYXRlKCkpIC0gMjQgKiA2MCAqIDYwICogMTAwMCkpKSA/IGdldENvb2tpZShvYmoubmFt
ZSkgOiAob2JqLnZhbHVlKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICAgICBpZiAob2JqLm5hbWUgPT0gImZsaWdodFNlYXJjaC5yZXR1cm5EYXRlLk1N
RERZWVlZIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnZhbHVlID0gKChnZXRD
b29raWUob2JqLm5hbWUpICE9IG51bGwpICYmIChEYXRlLnBhcnNlKGdldENvb2tpZShvYmoubmFt
ZSkpID49IChEYXRlLnBhcnNlKG5ldyBEYXRlKCkpIC0gMjQgKiA2MCAqIDYwICogMTAwMCkpKSA/
IGdldENvb2tpZShvYmoubmFtZSkgOiAob2JqLnZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
fQogICAgICAgIH0KICAgIH0KICAgIG9yaWdpbigpOwogICAgRGVzdGluYXRpb24oKTsKICAgIHVw
ZGF0ZURlcERhdGVJbkZvcm0oKTsKICAgIHVwZGF0ZVJldERhdGVJbkZvcm0oKTsKfQpmdW5jdGlv
biBsb2FkRGl2Rm9yQ29va2llSG9tZSgpIHsKICAgIGlmIChnZXRDb29raWUoIlRUIikgPT0gbnVs
bCB8fCBnZXRDb29raWUoIlRUIikgPT0gIiIpIHsKICAgICAgICBjaGFuZ2VUcmlwVHlwZSgicnQi
KTsKICAgIH0gZWxzZSB7CiAgICAgICAgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoRm9ybS5lbGVtZW50
c1siZmxpZ2h0U2VhcmNoLnRyaXBUeXBlIl0udmFsdWUgPSBnZXRDb29raWUoIlRUIik7CiAgICAg
ICAgY2hhbmdlVHJpcFR5cGUoZ2V0Q29va2llKCJUVCIpKTsKICAgIH0KfQpmdW5jdGlvbiBEZXN0
aW5hdGlvbigpIHsKICAgIGlmIChjdXJyZW50VHJpcFR5cGUgPT0gIm1jIikgewogICAgICAgIGRv
Y3VtZW50LmZsaWdodFNlYXJjaEZvcm0uZWxlbWVudHNbImZsaWdodFNlYXJjaC5kZXN0aW5hdGlv
biJdLnNlbGVjdGVkSW5kZXggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzdGluYXRpb25G
bHRPbmVNQyIpLnNlbGVjdGVkSW5kZXg7CiAgICB9IGVsc2UgewogICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJkZXN0aW5hdGlvbkZsdE9uZU1DIikuc2VsZWN0ZWRJbmRleCA9IGRvY3Vt
ZW50LmZsaWdodFNlYXJjaEZvcm0uZWxlbWVudHNbImZsaWdodFNlYXJjaC5kZXN0aW5hdGlvbiJd
LnNlbGVjdGVkSW5kZXg7CiAgICB9Cn0KZnVuY3Rpb24gb3JpZ2luKCkgewogICAgaWYgKGN1cnJl
bnRUcmlwVHlwZSA9PSAibWMiKSB7CiAgICAgICAgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoRm9ybS5l
bGVtZW50c1siZmxpZ2h0U2VhcmNoLm9yaWdpbiJdLnNlbGVjdGVkSW5kZXggPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgib3JpZ2luRmx0T25lTUMiKS5zZWxlY3RlZEluZGV4OwogICAgICAgIHZh
ciBkZXN0aW5hdGlvbk1DID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc3RpbmF0aW9uRmx0
VHdvTUMiKS52YWx1ZTsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzdGluYXRp
b25GbHRUd29NQyIpLnZhbHVlOwogICAgICAgIHJlZGlyZWN0TUMoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoIm9yaWdpbkZsdFR3b01DIikuc2VsZWN0ZWRJbmRleCk7CiAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImRlc3RpbmF0aW9uRmx0VHdvTUMiKS52YWx1ZSA9IGRlc3RpbmF0aW9u
TUM7CiAgICB9IGVsc2UgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvcmlnaW5G
bHRPbmVNQyIpLnNlbGVjdGVkSW5kZXggPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hGb3JtLmVsZW1l
bnRzWyJmbGlnaHRTZWFyY2gub3JpZ2luIl0uc2VsZWN0ZWRJbmRleDsKICAgIH0KICAgIHZhciBk
ZXN0aW5hdGlvbiA9IGRvY3VtZW50LmZsaWdodFNlYXJjaEZvcm0uZWxlbWVudHNbImZsaWdodFNl
YXJjaC5kZXN0aW5hdGlvbiJdLnZhbHVlOwogICAgcmVkaXJlY3QoZG9jdW1lbnQuZmxpZ2h0U2Vh
cmNoRm9ybS5lbGVtZW50c1siZmxpZ2h0U2VhcmNoLm9yaWdpbiJdLnNlbGVjdGVkSW5kZXgpOwog
ICAgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoRm9ybS5lbGVtZW50c1siZmxpZ2h0U2VhcmNoLmRlc3Rp
bmF0aW9uIl0udmFsdWUgPSBkZXN0aW5hdGlvbjsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJkZXN0aW5hdGlvbkZsdE9uZU1DIikudmFsdWUgPSBkZXN0aW5hdGlvbjsKfQpmdW5jdGlvbiB1
cGRhdGVEZXBEYXRlSW5Gb3JtKCkgewogICAgaWYgKGN1cnJlbnRUcmlwVHlwZSA9PSAibWMiKSB7
CiAgICAgICAgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoRm9ybS5lbGVtZW50c1siZmxpZ2h0U2VhcmNo
LmRlcERhdGUuTU1ERFlZWVkiXS52YWx1ZSA9IGRvY3VtZW50LmZsaWdodFNlYXJjaEZvcm0uZWxl
bWVudHNbImZsaWdodFNlYXJjaC5kZXBEYXRlTUMuTU1ERFlZWVkiXS52YWx1ZTsKICAgICAgICBk
b2N1bWVudC5mbGlnaHRTZWFyY2hGb3JtLmVsZW1lbnRzWyJmbGlnaHRTZWFyY2guZGVwRGF0ZU9X
Lk1NRERZWVlZIl0udmFsdWUgPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hGb3JtLmVsZW1lbnRzWyJm
bGlnaHRTZWFyY2guZGVwRGF0ZU1DLk1NRERZWVlZIl0udmFsdWU7CiAgICB9IGVsc2UgewogICAg
ICAgIGRvY3VtZW50LmZsaWdodFNlYXJjaEZvcm0uZWxlbWVudHNbImZsaWdodFNlYXJjaC5kZXBE
YXRlTUMuTU1ERFlZWVkiXS52YWx1ZSA9IGRvY3VtZW50LmZsaWdodFNlYXJjaEZvcm0uZWxlbWVu
dHNbImZsaWdodFNlYXJjaC5kZXBEYXRlLk1NRERZWVlZIl0udmFsdWU7CiAgICAgICAgZG9jdW1l
bnQuZmxpZ2h0U2VhcmNoRm9ybS5lbGVtZW50c1siZmxpZ2h0U2VhcmNoLmRlcERhdGVPVy5NTURE
WVlZWSJdLnZhbHVlID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNoRm9ybS5lbGVtZW50c1siZmxpZ2h0
U2VhcmNoLmRlcERhdGUuTU1ERFlZWVkiXS52YWx1ZTsKICAgIH0KfQpmdW5jdGlvbiB1cGRhdGVS
ZXREYXRlSW5Gb3JtKCkgewogICAgaWYgKGN1cnJlbnRUcmlwVHlwZSA9PSAibWMiKSB7CiAgICAg
ICAgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoRm9ybS5lbGVtZW50c1siZmxpZ2h0U2VhcmNoLnJldHVy
bkRhdGUuTU1ERFlZWVkiXS52YWx1ZSA9IGRvY3VtZW50LmZsaWdodFNlYXJjaEZvcm0uZWxlbWVu
dHNbImZsaWdodFNlYXJjaC5yZXR1cm5EYXRlTUMuTU1ERFlZWVkiXS52YWx1ZTsKICAgIH0gZWxz
ZSB7CiAgICAgICAgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoRm9ybS5lbGVtZW50c1siZmxpZ2h0U2Vh
cmNoLnJldHVybkRhdGVNQy5NTUREWVlZWSJdLnZhbHVlID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNo
Rm9ybS5lbGVtZW50c1siZmxpZ2h0U2VhcmNoLnJldHVybkRhdGUuTU1ERFlZWVkiXS52YWx1ZTsK
ICAgIH0KfQpmdW5jdGlvbiBjbG9zZURpdihkaXZJRCkgewogICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoZGl2SUQpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Cn0KZnVuY3Rpb24gY2xvc2VEYXNo
Qm9hcmREaXYoZGl2KSB7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkaXYgKyAiRGl2Iiku
c3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRpdiAr
ICJJbWciKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwp9CmZ1bmN0aW9uIHNob3dIb21lTG9hZGVy
KGRpdklkKSB7CiAgICB2YXIgdG9wID0gcGFyc2VJbnQoKCQoIiMiICsgZGl2SWQpLmhlaWdodCgp
IC0gJCgiI2xvYWRpbmdBbmltYXRpb25EaXYiKS5oZWlnaHQoKSkgLyAyKSArIDEzMjsKICAgIHZh
ciBkaXZNYXJnaW4gPSAkKCIjIiArIGRpdklkKS5jc3MoIm1hcmdpbkxlZnQiKTsKICAgIGlmIChk
aXZNYXJnaW4gPT0gImF1dG8iKSB7CiAgICAgICAgZGl2TWFyZ2luID0gIjAiOwogICAgfSBlbHNl
IHsKICAgICAgICBkaXZNYXJnaW4ucmVwbGFjZSgvcHgvLCAiIik7CiAgICB9CiAgICB2YXIgbGVm
dCA9IHBhcnNlSW50KCgkKCIjIiArIGRpdklkKS53aWR0aCgpIC0gJCgiI2xvYWRpbmdBbmltYXRp
b25EaXYiKS53aWR0aCgpKSAvIDIpICsgcGFyc2VJbnQoZGl2TWFyZ2luKTsKICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJsb2FkaW5nQW5pbWF0aW9uRGl2Iikuc3R5bGUubWFyZ2luVG9wID0g
dG9wICsgInB4IjsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2FkaW5nQW5pbWF0aW9u
RGl2Iikuc3R5bGUubWFyZ2luTGVmdCA9IGxlZnQgKyAicHgiOwogICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImxvYWRpbmdBbmltYXRpb25EaXYiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsK
fQp2YXIgZHJvcERvd25UeXBlID0gIm9yaWdpbkRlc3RpbmF0aW9uIjsKCmZ1bmN0aW9uIHVwZGF0
ZURyb3BEb3ducyhzZWxlY3RvYmosIHNlbGVjdGVkVmFsKSB7CiAgICBpZiAoJChzZWxlY3RvYmop
LnBhcmVudCgpLmF0dHIoImlkIikgPT0gIm9yaWdpbkRpdiIgfHwgJChzZWxlY3RvYmopLmF0dHIo
ImlkIikgPT0gIm9yaWdpbkZsdE9uZU1DIikgewogICAgICAgIHJlZGlyZWN0KHNlbGVjdG9iai5v
cHRpb25zLnNlbGVjdGVkSW5kZXgpOwogICAgICAgIHJlZnJlc2hDb21ib0JveCgiZGVzdGluYXRp
b25EaXYiKTsKICAgICAgICByZWZyZXNoQ29tYm9Cb3goImRlc3RpbmF0aW9uRmx0T25lTUMiKTsK
ICAgICAgICBpZiAoJChzZWxlY3RvYmopLnZhbCgpID09ICIiICYmIHNlbGVjdGVkVmFsLmluZGV4
T2YoIkZsaWdodCIpID09IC0xKSB7CiAgICAgICAgICAgICQoIiNvcmlnaW5GbHRPbmVNQyIpLnBh
cmVudCgpLmZpbmQoImEiKS5lbXB0eSgpLmh0bWwoIjxiPkZsaWdodCAxOiA8L2I+IiArIHNlbGVj
dGVkVmFsKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkKCIjb3JpZ2luRmx0T25lTUMi
KS5wYXJlbnQoKS5maW5kKCJhIikuZW1wdHkoKS5hcHBlbmQoc2VsZWN0ZWRWYWwpOwogICAgICAg
IH0KICAgICAgICAkKCIjb3JpZ2luRGl2IikuZmluZCgiYSIpLmVtcHR5KCkuYXBwZW5kKHNlbGVj
dGVkVmFsKTsKICAgICAgICBpZiAoJChzZWxlY3RvYmopLmF0dHIoImlkIikgPT0gIm9yaWdpbkZs
dE9uZU1DIikgewogICAgICAgICAgICAkKCIjb3JpZ2luRGl2IHNlbGVjdCIpLnZhbCgkKCIjb3Jp
Z2luRmx0T25lTUMiKS52YWwoKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJCgiI29y
aWdpbkZsdE9uZU1DIikudmFsKCQoIiNvcmlnaW5EaXYgc2VsZWN0IikudmFsKCkpOwogICAgICAg
IH0KICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKCQoc2VsZWN0b2JqKS5hdHRyKCJpZCIpID09ICJv
cmlnaW5GbHRUd29NQyIpIHsKICAgICAgICAgICAgcmVkaXJlY3RNQyhzZWxlY3RvYmoub3B0aW9u
cy5zZWxlY3RlZEluZGV4KTsKICAgICAgICAgICAgcmVmcmVzaENvbWJvQm94KCJkZXN0aW5hdGlv
bkZsdFR3b01DIik7CiAgICAgICAgICAgIGlmICgkKHNlbGVjdG9iaikudmFsKCkgPT0gIiIgJiYg
c2VsZWN0ZWRWYWwuaW5kZXhPZigiRmxpZ2h0IikgPT0gLTEpIHsKICAgICAgICAgICAgICAgICQo
IiNvcmlnaW5GbHRUd29NQyIpLnBhcmVudCgpLmZpbmQoImEiKS5lbXB0eSgpLmFwcGVuZCgiPGI+
RmxpZ2h0IDI6IDwvYj4iICsgc2VsZWN0ZWRWYWwpOwogICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgJCgiI29yaWdpbkZsdFR3b01DIikucGFyZW50KCkuZmluZCgiYSIpLmVtcHR5
KCkuYXBwZW5kKHNlbGVjdGVkVmFsKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgIGlmICgkKHNlbGVjdG9iaikuYXR0cigiaWQiKSA9PSAiYWR1bHRzIikgewogICAg
ICAgICAgICAgICAgJCgiI2FkdWx0c01DIikudmFsKCQoc2VsZWN0b2JqKS52YWwoKSk7CiAgICAg
ICAgICAgICAgICAkKCIjYWR1bHRzTUMiKS5wYXJlbnQoKS5maW5kKCJhIikuZW1wdHkoKS5hcHBl
bmQoJChzZWxlY3RvYmopLnZhbCgpKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgIGlmICgkKHNlbGVjdG9iaikuYXR0cigiaWQiKSA9PSAiYWR1bHRzTUMiKSB7CiAgICAgICAg
ICAgICAgICAgICAgJCgiI2FkdWx0cyIpLnZhbCgkKHNlbGVjdG9iaikudmFsKCkpOwogICAgICAg
ICAgICAgICAgICAgICQoIiNhZHVsdHMiKS5wYXJlbnQoKS5maW5kKCJhIikuZW1wdHkoKS5hcHBl
bmQoJChzZWxlY3RvYmopLnZhbCgpKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgaWYgKCQoc2VsZWN0b2JqKS5hdHRyKCJpZCIpID09ICJraWRzIikgewogICAg
ICAgICAgICAgICAgICAgICAgICAkKCIja2lkc01DIikudmFsKCQoc2VsZWN0b2JqKS52YWwoKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICQoIiNraWRzTUMiKS5wYXJlbnQoKS5maW5kKCJhIiku
ZW1wdHkoKS5hcHBlbmQoJChzZWxlY3RvYmopLnZhbCgpKTsKICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJChzZWxlY3RvYmopLmF0dHIoImlk
IikgPT0gImtpZHNNQyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNraWRzIiku
dmFsKCQoc2VsZWN0b2JqKS52YWwoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIj
a2lkcyIpLnBhcmVudCgpLmZpbmQoImEiKS5lbXB0eSgpLmFwcGVuZCgkKHNlbGVjdG9iaikudmFs
KCkpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCQoc2VsZWN0b2JqKS5hdHRyKCJpZCIpID09ICJpbmZhbnRzIikgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNpbmZhbnRzTUMiKS52YWwoJChzZWxlY3Rv
YmopLnZhbCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjaW5mYW50c01D
IikucGFyZW50KCkuZmluZCgiYSIpLmVtcHR5KCkuYXBwZW5kKCQoc2VsZWN0b2JqKS52YWwoKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICgkKHNlbGVjdG9iaikuYXR0cigiaWQiKSA9PSAiaW5mYW50c01DIikg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjaW5mYW50cyIpLnZhbCgk
KHNlbGVjdG9iaikudmFsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
KCIjaW5mYW50cyIpLnBhcmVudCgpLmZpbmQoImEiKS5lbXB0eSgpLmFwcGVuZCgkKHNlbGVjdG9i
aikudmFsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkKHNlbGVjdG9iaikuYXR0cigibmFt
ZSIpID09ICJmbGlnaHRTdGF0dXMub3JpZ2luIikgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlRmxpZ2h0U3RhdHVzRGVzdGluYXRpb25GaWVsZHMoc2VsZWN0
b2JqLm9wdGlvbnMuc2VsZWN0ZWRJbmRleCwgIlRvIiwgImhvbWUiKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICgkKHNlbGVjdG9iaikucGFyZW50KCkuYXR0cigiaWQiKSA9PSAiZGVz
dGluYXRpb25EaXYiIHx8ICQoc2VsZWN0b2JqKS5hdHRyKCJpZCIpID09ICJkZXN0aW5hdGlvbkZs
dE9uZU1DIiB8fCAkKHNlbGVjdG9iaikuYXR0cigiaWQiKSA9PSAiZGVzdGluYXRpb25GbHRUd29N
QyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJChz
ZWxlY3RvYmopLnBhcmVudCgpLmF0dHIoImlkIikgPT0gImRlc3RpbmF0aW9uRGl2IikgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjZGVzdGluYXRp
b25GbHRPbmVNQyIpLnBhcmVudCgpLmZpbmQoImEiKS5lbXB0eSgpLmFwcGVuZChzZWxlY3RlZFZh
bCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNk
ZXN0aW5hdGlvbkZsdE9uZU1DIikudmFsKCQoc2VsZWN0b2JqKS52YWwoKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQoc2VsZWN0b2JqKS5hdHRyKCJp
ZCIpID09ICJkZXN0aW5hdGlvbkZsdE9uZU1DIikgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI2Rlc3RpbmF0aW9uRGl2IikuZmluZCgiYSIp
LmVtcHR5KCkuYXBwZW5kKHNlbGVjdGVkVmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICQoIiNkZXN0aW5hdGlvbkRpdiBzZWxlY3QiKS52YWwo
JChzZWxlY3RvYmopLnZhbCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQog
ICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiB0b2dnbGVQcm9tb0NvZGUob2JqLCBkaXZJRCkgewog
ICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRpdklEKS5zdHlsZS5kaXNwbGF5ID09ICJi
bG9jayIpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkaXZJRCkuc3R5bGUuZGlz
cGxheSA9ICJub25lIjsKICAgICAgICBvYmouc3JjID0gImh0dHBzOi8vc3RhdGljLnZpcmdpbmFt
ZXJpY2EuY29tL2ltYWdlcy9yaWdodEFycm93LmdpZiI7CiAgICAgICAgb2JqLmFsdCA9ICJPcGVu
IjsKICAgICAgICBvYmoudGl0bGUgPSAiT3BlbiI7CiAgICB9IGVsc2UgewogICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKGRpdklEKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAg
ICBvYmouc3JjID0gImh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy9kb3du
QXJyb3cuZ2lmIjsKICAgICAgICBvYmouYWx0ID0gIkNsb3NlIjsKICAgICAgICBvYmoudGl0bGUg
PSAiQ2xvc2UiOwogICAgfQp9CmZ1bmN0aW9uIHNldENvb2tpZXNIb21lKCkgewogICAgdmFyIGkg
PSAwOwogICAgdmFyIGV4cGlyZWRheXMgPSAzMDsKICAgIHZhciBleGRhdGUgPSBuZXcgRGF0ZSgp
OwogICAgZXhkYXRlLnNldERhdGUoZXhkYXRlLmdldERhdGUoKSArIGV4cGlyZWRheXMpOwogICAg
dmFyIG1jRGVwRGF0ZTIgPSAiIjsKICAgIGZvciAoaiA9IDA7IGogPCBkb2N1bWVudC5mbGlnaHRT
ZWFyY2hGb3JtLmVsZW1lbnRzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgdmFyIG9iaiA9IGRvY3Vt
ZW50LmZsaWdodFNlYXJjaEZvcm0uZWxlbWVudHNbal07CiAgICAgICAgaWYgKG9iai5uYW1lID09
ICJmbGlnaHRTZWFyY2gub3JpZ2luIikgewogICAgICAgICAgICBzZXRDb29raWUob2JqLm5hbWUs
IGVzY2FwZShvYmoudmFsdWUpLCBleGRhdGUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
IGlmIChvYmoubmFtZSA9PSAiZmxpZ2h0U2VhcmNoLmRlc3RpbmF0aW9uIikgewogICAgICAgICAg
ICAgICAgc2V0Q29va2llKG9iai5uYW1lLCBlc2NhcGUob2JqLnZhbHVlKSwgZXhkYXRlKTsKICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChvYmoubmFtZSA9PSAiZmxpZ2h0
U2VhcmNoLmRlcERhdGUuTU1ERFlZWVkiKSB7CiAgICAgICAgICAgICAgICAgICAgc2V0Q29va2ll
KG9iai5uYW1lLCBlc2NhcGUob2JqLnZhbHVlKSwgZXhkYXRlKTsKICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5uYW1lID09ICJmbGlnaHRTZWFyY2gu
cmV0dXJuRGF0ZS5NTUREWVlZWSIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29va2ll
KG9iai5uYW1lLCBlc2NhcGUob2JqLnZhbHVlKSwgZXhkYXRlKTsKICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqLm5hbWUgPT0gImZsaWdo
dFNlYXJjaC5kZXBEYXRlT1cuTU1ERFlZWVkiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXRDb29raWUob2JqLm5hbWUsIGVzY2FwZShvYmoudmFsdWUpLCBleGRhdGUpOwogICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG9iai5uYW1lID09ICJmbGlnaHRTZWFyY2guZGVwRGF0ZU1DLk1NRERZWVlZIikgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvb2tpZShvYmoubmFtZSwgZXNjYXBlKG9iai52
YWx1ZSksIGV4ZGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoubmFtZSA9PSAiZmxpZ2h0U2VhcmNo
Lm9yaWdpbk1DIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb29r
aWUob2JqLm5hbWUsIGVzY2FwZShvYmoudmFsdWUpLCBleGRhdGUpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChvYmoubmFtZSA9PSAiZmxpZ2h0U2VhcmNoLmRlc3RpbmF0aW9uTUMiKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb29raWUob2JqLm5hbWUsIGVz
Y2FwZShvYmoudmFsdWUpLCBleGRhdGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG9iai5uYW1lID09ICJmbGlnaHRTZWFyY2gucmV0dXJuRGF0ZU1DLk1NRERZWVlZIikgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvb2tpZShvYmoubmFt
ZSwgZXNjYXBlKG9iai52YWx1ZSksIGV4ZGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChvYmoubmFtZSA9PSAiZmxpZ2h0U2VhcmNoLmFkdWx0cyIpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29va2llKG9iai5u
YW1lLCBlc2NhcGUob2JqLnZhbHVlKSwgZXhkYXRlKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAob2JqLm5hbWUgPT0gImZsaWdodFNlYXJjaC5raWRzIikg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
Q29va2llKG9iai5uYW1lLCBlc2NhcGUob2JqLnZhbHVlKSwgZXhkYXRlKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoubmFtZSA9PSAi
ZmxpZ2h0U2VhcmNoLmluZmFudHMiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29va2llKG9iai5uYW1lLCBlc2NhcGUob2JqLnZh
bHVlKSwgZXhkYXRlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0K
ICAgIH0KfQpmdW5jdGlvbiBjdXN0b21SYWRpb09uQ2xpY2sob2JqKSB7CiAgICBpZiAoJChvYmop
Lm5leHQoImlucHV0IikuYXR0cigibmFtZSIpID09ICJmbGlnaHRTZWFyY2gudHJpcFR5cGUiKSB7
CiAgICAgICAgaWYgKCQob2JqKS5uZXh0KCJpbnB1dCIpLmF0dHIoInZhbHVlIikgIT0gY3VycmVu
dFRyaXBUeXBlKSB7CiAgICAgICAgICAgIGNsZWFyU2VhcmNoRm9ybUVycm9ycygpOwogICAgICAg
IH0KICAgICAgICBjaGFuZ2VUcmlwVHlwZSgkKG9iaikubmV4dCgiaW5wdXQiKS5hdHRyKCJ2YWx1
ZSIpKTsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoRm9ybS5l
bGVtZW50c1siZmxpZ2h0U2VhcmNoLnRyaXBUeXBlIl0ubGVuZ3RoOyBpKyspIHsKICAgICAgICAg
ICAgaWYgKCQob2JqKS5uZXh0KCJpbnB1dCIpLmF0dHIoInZhbHVlIikgPT0gZG9jdW1lbnQuZmxp
Z2h0U2VhcmNoRm9ybS5lbGVtZW50c1siZmxpZ2h0U2VhcmNoLnRyaXBUeXBlIl1baV0udmFsdWUp
IHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmZsaWdodFNlYXJjaEZvcm0uZWxlbWVudHNbImZs
aWdodFNlYXJjaC50cmlwVHlwZSJdW2ldLmNoZWNrZWQgPSB0cnVlOwogICAgICAgICAgICB9CiAg
ICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICBpZiAoJChvYmopLm5leHQoImlucHV0IikuYXR0
cigidmFsdWUiKSA9PSAiUG9pbnRzIikgewogICAgICAgICAgICAkKCIjUG9wb3VwUG9pbnRCZXRh
QWxlcnQiKS5jc3MoewogICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAiMTAwcHgiLAogICAgICAg
ICAgICAgICAgbWFyZ2luTGVmdDogIjEwMHB4IgogICAgICAgICAgICB9KTsKICAgICAgICAgICAg
JCgiI1BvcG91cFBvaW50QmV0YUFsZXJ0Iikuc2hvdygpOwogICAgICAgICAgICAkKCIjUHJvbW9D
b2RlRGl2IikuaGlkZSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICQoIiNQb3BvdXBQ
b2ludEJldGFBbGVydCIpLmhpZGUoKTsKICAgICAgICAgICAgJCgiI1Byb21vQ29kZURpdiIpLnNo
b3coKTsKICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gY2xlYXJTZWFyY2hGb3JtRXJyb3JzKCkg
ewogICAgdmFyIGVscyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJCb29rRmxpZ2h0RGl2Iiku
Z2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJF
cnJvck1lc3NhZ2UiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgZm9yICh2YXIgaSA9IDAs
IGogPSBlbHMubGVuZ3RoOyBpIDwgajsgaSsrKSB7CiAgICAgICAgaWYgKGVsc1tpXS5jbGFzc05h
bWUgPT0gImVycm9yIikgewogICAgICAgICAgICBlbHNbaV0uY2xhc3NOYW1lID0gIiI7CiAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKGVsc1tpXS5jbGFzc05hbWUgIT0gIkVycm9yTWVz
c2FnZSIgJiYgZWxzW2ldLmNsYXNzTmFtZS5pbmRleE9mKCJFcnJvciIpICE9IC0xKSB7CiAgICAg
ICAgICAgICAgICBlbHNbaV0uY2xhc3NOYW1lID0gZWxzW2ldLmNsYXNzTmFtZS5zdWJzdHJpbmco
MCwgZWxzW2ldLmNsYXNzTmFtZS5pbmRleE9mKCJFcnJvciIpKTsKICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgIGlmIChlbHNbaV0uY2xhc3NOYW1lLmluZGV4T2YoImVycm9yTGFi
ZWwiKSAhPSAtMSkgewogICAgICAgICAgICAgICAgICAgIGVsc1tpXS5jbGFzc05hbWUgPSBlbHNb
aV0uY2xhc3NOYW1lLnJlcGxhY2UoImVycm9yTGFiZWwiLCAiIik7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gcmVkaXJlY3QoeCkgewog
ICAgdmFyIGRlc3RPcHRzID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNoRm9ybS5lbGVtZW50c1siZmxp
Z2h0U2VhcmNoLmRlc3RpbmF0aW9uIl07CiAgICB2YXIgZGVzdE9wdHNNQyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJkZXN0aW5hdGlvbkZsdE9uZU1DIik7CiAgICB2YXIgc2VsVmFsID0gZG9j
dW1lbnQuZmxpZ2h0U2VhcmNoRm9ybS5lbGVtZW50c1siZmxpZ2h0U2VhcmNoLmRlc3RpbmF0aW9u
Il0udmFsdWU7CiAgICB2YXIgc2FsVmFsdWVGbGcgPSAwOwogICAgaWYgKHggIT0gIjAiKSB7CiAg
ICAgICAgZm9yIChtID0gZGVzdE9wdHMub3B0aW9ucy5sZW5ndGggLSAxOyBtID4gMDsgbS0tKSB7
CiAgICAgICAgICAgIGRlc3RPcHRzLm9wdGlvbnNbbV0gPSBudWxsOwogICAgICAgICAgICBpZiAo
ZGVzdE9wdHNNQykgewogICAgICAgICAgICAgICAgZGVzdE9wdHNNQy5vcHRpb25zW21dID0gbnVs
bDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZ3JvdXBb
eF0ubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgZGVzdE9wdHMub3B0aW9uc1tpXSA9IG5ldyBP
cHRpb24oZ3JvdXBbeF1baV0udGV4dCwgZ3JvdXBbeF1baV0udmFsdWUpOwogICAgICAgICAgICBp
ZiAoZGVzdE9wdHNNQykgewogICAgICAgICAgICAgICAgZGVzdE9wdHNNQy5vcHRpb25zW2ldID0g
bmV3IE9wdGlvbihncm91cFt4XVtpXS50ZXh0LCBncm91cFt4XVtpXS52YWx1ZSk7CiAgICAgICAg
ICAgIH0KICAgICAgICAgICAgaWYgKGdyb3VwW3hdW2ldLnZhbHVlID09IHNlbFZhbCkgewogICAg
ICAgICAgICAgICAgc2FsVmFsdWVGbGcgPSBpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAg
ICAgIGRlc3RPcHRzLm9wdGlvbnNbc2FsVmFsdWVGbGddLnNlbGVjdGVkID0gdHJ1ZTsKICAgICAg
ICBpZiAoZGVzdE9wdHNNQykgewogICAgICAgICAgICBkZXN0T3B0c01DLm9wdGlvbnNbc2FsVmFs
dWVGbGddLnNlbGVjdGVkID0gdHJ1ZTsKICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gcmVmcmVz
aENvbWJvQm94KGlkKSB7CiAgICBpZiAoaWQgIT0gImRlc3RpbmF0aW9uRGl2IikgewogICAgICAg
ICQoIiMiICsgaWQpLnByZXYoKS5yZW1vdmUoKTsKICAgICAgICAkKCIjIiArIGlkKS5wcmV2KCku
cmVtb3ZlKCk7CiAgICAgICAgJCgiIyIgKyBpZCkuc2VsZWN0Ym94KHsKICAgICAgICAgICAgZGVi
dWc6IGZhbHNlCiAgICAgICAgfSk7CiAgICB9IGVsc2UgewogICAgICAgICQoIiMiICsgaWQgKyAi
IGEiKS5yZW1vdmUoKTsKICAgICAgICAkKCIjIiArIGlkICsgIiBkaXYiKS5yZW1vdmUoKTsKICAg
ICAgICAkKCIjIiArIGlkICsgIiBzZWxlY3QiKS5zZWxlY3Rib3goewogICAgICAgICAgICBkZWJ1
ZzogZmFsc2UKICAgICAgICB9KTsKICAgIH0KfQpmdW5jdGlvbiBlbmFibGVEaXNhYmxlUG9pbnRz
UmFkaW8oZmxhZykgewogICAgJCgiI0Rpc3BsYXlQcmljZURpdiIpLmZpbmQoImlucHV0IikuZWFj
aChmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIGJveHR5cGUgPSAkKHRoaXMpLmF0dHIoInR5cGUi
KTsKICAgICAgICBpZiAoJCh0aGlzKS52YWwoKSA9PSAiUG9pbnRzIikgewogICAgICAgICAgICBp
ZiAoZmxhZykgewogICAgICAgICAgICAgICAgJCh0aGlzKS5wcmV2KCJzcGFuIikucmVtb3ZlQ2xh
c3MoImN1c3RfIiArIGJveHR5cGUgKyAiX29uIikucmVtb3ZlQ2xhc3MoImN1c3RfIiArIGJveHR5
cGUgKyAiX29mZiIpLmFkZENsYXNzKCJjdXN0XyIgKyBib3h0eXBlICsgIl9kaXNhYmxlZF9vZmYi
KS5uZXh0KCJpbnB1dCIpLnJlbW92ZUF0dHIoImNoZWNrZWQiKTsKICAgICAgICAgICAgICAgICQo
dGhpcykuYXR0cigiZGlzYWJsZWQiLCAiZGlzYWJsZWQiKTsKICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICQodGhpcykucHJldigic3BhbiIpLnJlbW92ZUNsYXNzKCJjdXN0XyIg
KyBib3h0eXBlICsgIl9kaXNhYmxlZF9vZmYiKS5hZGRDbGFzcygiY3VzdF8iICsgYm94dHlwZSAr
ICJfb2ZmIik7CiAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoImRpc2FibGVkIiwgImZhbHNl
Iik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KTsKfQpmdW5jdGlvbiBjaGFuZ2VUcmlw
VHlwZSh0cmlwVHlwZSkgewogICAgaWYgKHRyaXBUeXBlID09ICJtYyIpIHsKICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiUm91bmRUcmlwIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsK
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTXVsdGlDaXR5Iikuc3R5bGUuZGlzcGxh
eSA9ICJibG9jayI7CiAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJNdWx0aUNp
dHlPcHRpb24iKS5zdHlsZS5kaXNwbGF5ID09ICJub25lIikgewogICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiQm9va0V4dHJhVGhpbmdNdWx0aSIpLnN0eWxlLmRpc3BsYXkgPSAi
bm9uZSI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoIkJvb2tFeHRyYVRoaW5nTXVsdGkiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAg
ICB9CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkJvb2tGbGlnaHREaXYiKS5zdHls
ZS53aWR0aCA9ICI2MDNweCI7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkJvb2tG
bGlnaHREaXZUb3AiKS5zdHlsZS53aWR0aCA9ICI1OTNweCI7CiAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoIkJvb2tGbGlnaHREaXZCb3R0b20iKS5zdHlsZS53aWR0aCA9ICI1OTNweCI7
CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvb2tGbGlnaHRTcGFjZXIiKS5zdHls
ZS5oZWlnaHQgPSAiMTNweCI7CiAgICB9IGVsc2UgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJSb3VuZFRyaXAiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiUmV0dXJuRGF0ZURpdiIpLnN0eWxlLmRpc3BsYXkgPSAiYmxv
Y2siOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJNdWx0aUNpdHkiKS5zdHlsZS5k
aXNwbGF5ID0gIm5vbmUiOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJCb29rRmxp
Z2h0RGl2Iikuc3R5bGUud2lkdGggPSAiNDg1cHgiOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJCb29rRmxpZ2h0RGl2VG9wIikuc3R5bGUud2lkdGggPSAiNDc1cHgiOwogICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJCb29rRmxpZ2h0RGl2Qm90dG9tIikuc3R5bGUud2lk
dGggPSAiNDc1cHgiOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib29rRmxpZ2h0
U3BhY2VyIikuc3R5bGUuaGVpZ2h0ID0gIjEwcHgiOwogICAgfQogICAgaWYgKHRyaXBUeXBlID09
ICJvdyIpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiUmV0dXJuRGF0ZURpdiIp
LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICB9CiAgICBjdXJyZW50VHJpcFR5cGUgPSB0cmlw
VHlwZTsKICAgIHNldEFkdWx0QW5kSW5mYW50cygibWMiLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiYWR1bHRzIikudmFsdWUsICJhZHVsdHNNQyIpOwp9CmZ1bmN0aW9uIHJlZGlyZWN0TUMoeCkg
ewogICAgdmFyIGRlc3RPcHRzTUMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzdGluYXRp
b25GbHRUd29NQyIpOwogICAgdmFyIHNlbFZhbE1DID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImRlc3RpbmF0aW9uRmx0VHdvTUMiKS52YWx1ZTsKICAgIHZhciBzYWxWYWx1ZUZsZ01DID0gMDsK
ICAgIGlmICh4ICE9ICIwIikgewogICAgICAgIGZvciAobSA9IGRlc3RPcHRzTUMub3B0aW9ucy5s
ZW5ndGggLSAxOyBtID4gMDsgbS0tKSB7CiAgICAgICAgICAgIGRlc3RPcHRzTUMub3B0aW9uc1tt
XSA9IG51bGw7CiAgICAgICAgfQogICAgICAgIGZvciAoaSA9IDA7IGkgPCBncm91cFt4XS5sZW5n
dGg7IGkrKykgewogICAgICAgICAgICBkZXN0T3B0c01DLm9wdGlvbnNbaV0gPSBuZXcgT3B0aW9u
KGdyb3VwW3hdW2ldLnRleHQsIGdyb3VwW3hdW2ldLnZhbHVlKTsKICAgICAgICAgICAgaWYgKGdy
b3VwW3hdW2ldLnZhbHVlID09IHNlbFZhbE1DKSB7CiAgICAgICAgICAgICAgICBzYWxWYWx1ZUZs
Z01DID0gaTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBkZXN0T3B0c01DLm9wdGlv
bnNbc2FsVmFsdWVGbGdNQ10uc2VsZWN0ZWQgPSB0cnVlOwogICAgfQp9CmZ1bmN0aW9uIHJlZGly
ZWN0TUNEKHgpIHsKICAgIHZhciB0ZW1wTUMxRCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJv
cmlnaW5GbHRUd29NQyIpOwogICAgdmFyIHNlbFZhbE1DRCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJvcmlnaW5GbHRUd29NQyIpLnZhbHVlOwogICAgdmFyIHNhbFZhbHVlRmxnTUNEID0gMDsK
ICAgIGlmICh4ICE9ICIwIikgewogICAgICAgIGZvciAobSA9IHRlbXBNQzFELm9wdGlvbnMubGVu
Z3RoIC0gMTsgbSA+IDA7IG0tLSkgewogICAgICAgICAgICB0ZW1wTUMxRC5vcHRpb25zW21dID0g
bnVsbDsKICAgICAgICB9CiAgICAgICAgZm9yIChpID0gMDsgaSA8IGdyb3VwTUNEW3hdLmxlbmd0
aDsgaSsrKSB7CiAgICAgICAgICAgIHRlbXBNQzFELm9wdGlvbnNbaV0gPSBuZXcgT3B0aW9uKGdy
b3VwTUNEW3hdW2ldLnRleHQsIGdyb3VwTUNEW3hdW2ldLnZhbHVlKTsKICAgICAgICAgICAgaWYg
KGdyb3VwTUNEW3hdW2ldLnZhbHVlID09IHNlbFZhbE1DRCkgewogICAgICAgICAgICAgICAgc2Fs
VmFsdWVGbGdNQ0QgPSBpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRlbXBNQzFE
Lm9wdGlvbnNbc2FsVmFsdWVGbGdNQ0RdLnNlbGVjdGVkID0gdHJ1ZTsKICAgIH0KfQpmdW5jdGlv
biBleHBhbmRCb29rRmxpZ2h0V2luZG93KGZsYWcpIHsKICAgIHZhciBleHBhbmQgPSBmYWxzZTsK
ICAgIGlmIChjdXJyZW50VHJpcFR5cGUgPT0gIm1jIikgewogICAgICAgIGlmICgoJCgiI29yaWdp
bkZsdE9uZU1DIikudmFsKCkgIT0gIiIgJiYgJCgiI2Rlc3RpbmF0aW9uRmx0T25lTUMiKS52YWwo
KSAhPSAiIiAmJiAkKCIjb3JpZ2luRmx0VHdvTUMiKS52YWwoKSAhPSAiIiAmJiAkKCIjZGVzdGlu
YXRpb25GbHRUd29NQyIpLnZhbCgpICE9ICIiKSB8fCBmbGFnKSB7CiAgICAgICAgICAgIGV4cGFu
ZCA9IHRydWU7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICBpZiAoKCQoIiNvcmlnaW5E
aXYgc2VsZWN0IikudmFsKCkgIT0gIiIgJiYgJCgiI2Rlc3RpbmF0aW9uRGl2IHNlbGVjdCIpLnZh
bCgpICE9ICIiKSB8fCBmbGFnKSB7CiAgICAgICAgICAgIGV4cGFuZCA9IHRydWU7CiAgICAgICAg
fQogICAgfQogICAgaWYgKGV4cGFuZCkgewogICAgICAgICQoIiNNdWx0aUNpdHlPcHRpb24iKS5z
aG93KCk7CiAgICAgICAgJCgiI1JvdW5kVHJpcE9wdGlvbiIpLnNob3coKTsKICAgICAgICAkKCIj
UHJpY2VQcm9tb1NlYXJjaERpdiIpLnNob3coKTsKICAgICAgICBpZiAoY3VycmVudFRyaXBUeXBl
ID09ICJtYyIpIHsKICAgICAgICAgICAgJCgiI0Jvb2tFeHRyYVRoaW5nTXVsdGkiKS5zaG93KCk7
CiAgICAgICAgfQogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib29rRmxpZ2h0Q29s
bGFwc2VFeHBhbmRCdG4iKS5jbGFzc05hbWUgPSAiY29sbGFwc2UiOwogICAgICAgIHNldENvbGxh
cHNlT25DbGljaygpOwogICAgfQogICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJSb3Vu
ZFRyaXBPcHRpb24iKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIikgewogICAgICAgIGlmIChkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiYnRuRXhwYW5kQkZXIikpIHsKICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImJ0bkV4cGFuZEJGVyIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7
CiAgICAgICAgfQogICAgfQp9CmZ1bmN0aW9uIHN1Ym1pdFNlYXJjaEZvcm0oKSB7CiAgICBpZiAo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm9yaWdpbkZsdFR3b01DIikpIHsKICAgICAgICBkb2N1
bWVudC5mbGlnaHRTZWFyY2hGb3JtLmVsZW1lbnRzWyJmbGlnaHRTZWFyY2gub3JpZ2luTUMiXS52
YWx1ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvcmlnaW5GbHRUd29NQyIpLnZhbHVlOwog
ICAgICAgIGRvY3VtZW50LmZsaWdodFNlYXJjaEZvcm0uZWxlbWVudHNbImZsaWdodFNlYXJjaC5k
ZXN0aW5hdGlvbk1DIl0udmFsdWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGVzdGluYXRp
b25GbHRUd29NQyIpLnZhbHVlOwogICAgfQogICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJhZHVsdHMiKSkgewogICAgICAgIGRvY3VtZW50LmZsaWdodFNlYXJjaEZvcm0uZWxlbWVudHNb
ImZsaWdodFNlYXJjaC5hZHVsdHMiXS52YWx1ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJh
ZHVsdHMiKS52YWx1ZTsKICAgIH0KICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgia2lk
cyIpKSB7CiAgICAgICAgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoRm9ybS5lbGVtZW50c1siZmxpZ2h0
U2VhcmNoLmtpZHMiXS52YWx1ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJraWRzIikudmFs
dWU7CiAgICB9CiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImluZmFudHMiKSkgewog
ICAgICAgIGRvY3VtZW50LmZsaWdodFNlYXJjaEZvcm0uZWxlbWVudHNbImZsaWdodFNlYXJjaC5p
bmZhbnRzIl0udmFsdWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5mYW50cyIpLnZhbHVl
OwogICAgfQogICAgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoRm9ybS5lbGVtZW50c1siZmxpZ2h0U2Vh
cmNoLmRlcERhdGVPVy5NTUREWVlZWSJdLnZhbHVlID0gZG9jdW1lbnQuZmxpZ2h0U2VhcmNoRm9y
bS5lbGVtZW50c1siZmxpZ2h0U2VhcmNoLmRlcERhdGUuTU1ERFlZWVkiXS52YWx1ZTsKICAgIGlm
IChjdXJyZW50VHJpcFR5cGUgPT0gIm1jIikgewogICAgICAgIGRvY3VtZW50LmZsaWdodFNlYXJj
aEZvcm0uZWxlbWVudHNbImZsaWdodFNlYXJjaC5vcmlnaW4iXS52YWx1ZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJvcmlnaW5GbHRPbmVNQyIpLnZhbHVlOwogICAgICAgIGRvY3VtZW50LmZs
aWdodFNlYXJjaEZvcm0uZWxlbWVudHNbImZsaWdodFNlYXJjaC5kZXN0aW5hdGlvbiJdLnZhbHVl
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc3RpbmF0aW9uRmx0T25lTUMiKS52YWx1ZTsK
ICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFkdWx0c01DIikpIHsKICAgICAg
ICAgICAgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoRm9ybS5lbGVtZW50c1siZmxpZ2h0U2VhcmNoLmFk
dWx0cyJdLnZhbHVlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFkdWx0c01DIikudmFsdWU7
CiAgICAgICAgfQogICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgia2lkc01DIikp
IHsKICAgICAgICAgICAgZG9jdW1lbnQuZmxpZ2h0U2VhcmNoRm9ybS5lbGVtZW50c1siZmxpZ2h0
U2VhcmNoLmtpZHMiXS52YWx1ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJraWRzTUMiKS52
YWx1ZTsKICAgICAgICB9CiAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbmZh
bnRzTUMiKSkgewogICAgICAgICAgICBkb2N1bWVudC5mbGlnaHRTZWFyY2hGb3JtLmVsZW1lbnRz
WyJmbGlnaHRTZWFyY2guaW5mYW50cyJdLnZhbHVlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImluZmFudHNNQyIpLnZhbHVlOwogICAgICAgIH0KICAgIH0KICAgIHZhciBtb2RpZnlTZWFyY2gg
PSBmYWxzZTsKICAgIGlmICghZG9jdW1lbnQuZmxpZ2h0U2VhcmNoRm9ybS5lbGVtZW50c1siZGl2
TmFtZSJdIHx8IGRvY3VtZW50LmZsaWdodFNlYXJjaEZvcm0uZWxlbWVudHNbImRpdk5hbWUiXS52
YWx1ZSAhPSAiQm9va0ZsaWdodCIpIHsKICAgICAgICBtb2RpZnlTZWFyY2ggPSB0cnVlOwogICAg
fQogICAgdmFyIGR0ID0gKG5ldyBEYXRlKCkuZ2V0TW9udGgoKSArIDEpICsgIi8iICsgbmV3IERh
dGUoKS5nZXREYXRlKCkgKyAiLyIgKyAobmV3IERhdGUoKS5nZXRZZWFyKCkgKyAxOTAwKTsKICAg
IHZhciBkdDEgPSAobmV3IERhdGUoKS5nZXRNb250aCgpICsgMSkgKyAiLyIgKyBuZXcgRGF0ZSgp
LmdldERhdGUoKSArICIvIiArIChuZXcgRGF0ZSgpLmdldFllYXIoKSk7CiAgICB2YXIgZGVwRGF0
ZVN0ciA9IGRvY3VtZW50LmZsaWdodFNlYXJjaEZvcm0uZWxlbWVudHNbImZsaWdodFNlYXJjaC5k
ZXBEYXRlLk1NRERZWVlZIl0udmFsdWU7CiAgICB2YXIgcmV0RGF0ZVN0ciA9IGRvY3VtZW50LmZs
aWdodFNlYXJjaEZvcm0uZWxlbWVudHNbImZsaWdodFNlYXJjaC5yZXR1cm5EYXRlLk1NRERZWVlZ
Il0udmFsdWU7CiAgICBpZiAoY3VycmVudFRyaXBUeXBlID09ICJvdyIpIHsKICAgICAgICByZXRE
YXRlU3RyID0gIiI7CiAgICAgICAgaWYgKGRvY3VtZW50LmZsaWdodFNlYXJjaEZvcm0uZWxlbWVu
dHNbImZsaWdodFNlYXJjaC5yZXR1cm5EYXRlLk1NRERZWVlZIl0pIHsKICAgICAgICAgICAgZG9j
dW1lbnQuZmxpZ2h0U2VhcmNoRm9ybS5lbGVtZW50c1siZmxpZ2h0U2VhcmNoLnJldHVybkRhdGUu
TU1ERFlZWVkiXS52YWx1ZSA9ICIiOwogICAgICAgIH0KICAgIH0KICAgIHZhciBkZXBEYXRlID0g
bmV3IERhdGUoZGVwRGF0ZVN0cik7CiAgICB2YXIgcmV0RGF0ZSA9IG5ldyBEYXRlKHJldERhdGVT
dHIpOwogICAgRnJtVG9TdWJtaXQgPSBkb2N1bWVudC5mbGlnaHRTZWFyY2hGb3JtOwogICAgdmFy
IGV4cGlyZWRheXMgPSAzMDsKICAgIHZhciBleGRhdGUgPSBuZXcgRGF0ZSgpOwogICAgZXhkYXRl
LnNldERhdGUoZXhkYXRlLmdldERhdGUoKSArIGV4cGlyZWRheXMpOwogICAgaWYgKG1vZGlmeVNl
YXJjaCkgewogICAgICAgIGlmIChnZXRDb29raWUoIlRUIikgPT0gbnVsbCB8fCBnZXRDb29raWUo
IlRUIikgPT0gIiIpIHsKICAgICAgICAgICAgc2V0Q29va2llKCJUVCIsIGN1cnJlbnRUcmlwVHlw
ZSwgZXhkYXRlKTsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIHNldENvb2tpZSgiVFQi
LCBjdXJyZW50VHJpcFR5cGUsIGV4ZGF0ZSk7CiAgICB9CiAgICBzZXRDb29raWVzSG9tZSgpOwog
ICAgJCgiI2Zvcm1hdE1lc3NhZ2UiKS5jc3MoewogICAgICAgIHRvcDogKCQoIiNTZWFyY2hGbGln
aHQiKS5vZmZzZXQoKS50b3AgLSAyNDUpICsgInB4IiwKICAgICAgICBsZWZ0OiAoKCQoIiNCb29r
RmxpZ2h0RGl2Iikud2lkdGgoKSAtICQoIiNmb3JtYXRNZXNzYWdlIikud2lkdGgoKSkgLyAyKSAr
ICJweCIKICAgIH0pOwogICAgaWYgKGlzVmFsaWREYXRlKGRlcERhdGVTdHIpICYmIGlzVmFsaWRE
YXRlKHJldERhdGVTdHIpKSB7CiAgICAgICAgaWYgKCgoKGRlcERhdGVTdHIgKyAiIikgPT0gKGR0
ICsgIiIpICYmIChyZXREYXRlU3RyICsgIiIpID09IChkdCArICIiKSkgfHwgKChkZXBEYXRlU3Ry
ICsgIiIpID09IChkdDEgKyAiIikgJiYgKHJldERhdGVTdHIgKyAiIikgPT0gKGR0MSArICIiKSkp
ICYmIChkZXBEYXRlU3RyICsgIiIpICE9ICJtbS9kZC95eXl5IiAmJiAoZGVwRGF0ZVN0ciArICIi
KSAhPSAiIikgewogICAgICAgICAgICBmbGdNc2cgPSBmYWxzZTsKICAgICAgICAgICAgaWYgKG1v
ZGlmeVNlYXJjaCkgewogICAgICAgICAgICAgICAgJCgiI1NhbWVEYXlGbGlnaHRzTWVzc2FnZUlk
IikuY3NzKHsKICAgICAgICAgICAgICAgICAgICB0b3A6ICgkKCIjYnRuTW9kaWZ5U2VhcmNoIiku
b2Zmc2V0KCkudG9wKSArICJweCIsCiAgICAgICAgICAgICAgICAgICAgbGVmdDogKCQoIiNidG5N
b2RpZnlTZWFyY2giKS5vZmZzZXQoKS5sZWZ0IC0gNjApICsgInB4IgogICAgICAgICAgICAgICAg
fSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkKCIjU2FtZURheUZsaWdo
dHNNZXNzYWdlSWQiKS5jc3MoewogICAgICAgICAgICAgICAgICAgIHRvcDogKCQoIiNTZWFyY2hG
bGlnaHQiKS5vZmZzZXQoKS50b3AgLSAyNDUpICsgInB4IiwKICAgICAgICAgICAgICAgICAgICBs
ZWZ0OiAoKCQoIiNCb29rRmxpZ2h0RGl2Iikud2lkdGgoKSAtICQoIiNTYW1lRGF5RmxpZ2h0c01l
c3NhZ2VJZCIpLndpZHRoKCkpIC8gMikgKyAicHgiCiAgICAgICAgICAgICAgICB9KTsKICAgICAg
ICAgICAgfQogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiU2FtZURheUZsaWdo
dHNNZXNzYWdlSWQiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInNhbWVEYXlDb250aW51ZUlkIikuZm9jdXMoKTsKICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICBpZiAoKChkZXBEYXRlU3RyICsgIiIpID09IChyZXREYXRlU3Ry
ICsgIiIpKSAmJiAocmV0RGF0ZVN0ciArICIiKSAhPSAoZHQgKyAiIikgJiYgKGRlcERhdGVTdHIg
KyAiIikgIT0gIm1tL2RkL3l5eXkiICYmIChkZXBEYXRlU3RyICsgIiIpICE9ICIiKSB7CiAgICAg
ICAgICAgICAgICBmbGdNc2cgPSB0cnVlOwogICAgICAgICAgICAgICAgaWYgKG1vZGlmeVNlYXJj
aCkgewogICAgICAgICAgICAgICAgICAgICQoIiNTYW1lRGF5RmxpZ2h0c01lc3NhZ2VJZCIpLmNz
cyh7CiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogKCQoIiNidG5Nb2RpZnlTZWFyY2giKS5v
ZmZzZXQoKS50b3ApICsgInB4IiwKICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogKCQoIiNi
dG5Nb2RpZnlTZWFyY2giKS5vZmZzZXQoKS5sZWZ0IC0gNjApICsgInB4IgogICAgICAgICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAk
KCIjU2FtZURheUZsaWdodHNNZXNzYWdlSWQiKS5jc3MoewogICAgICAgICAgICAgICAgICAgICAg
ICB0b3A6ICgkKCIjU2VhcmNoRmxpZ2h0Iikub2Zmc2V0KCkudG9wIC0gMjQ1KSArICJweCIsCiAg
ICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6ICgoJCgiI0Jvb2tGbGlnaHREaXYiKS53aWR0aCgp
IC0gJCgiI1NhbWVEYXlGbGlnaHRzTWVzc2FnZUlkIikud2lkdGgoKSkgLyAyKSArICJweCIKICAg
ICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJTYW1lRGF5RmxpZ2h0c01lc3NhZ2VJZCIpLnN0eWxlLmRp
c3BsYXkgPSAiYmxvY2siOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InNhbWVEYXlDb250aW51ZUlkIikuZm9jdXMoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgIGlmICgoKChkZXBEYXRlU3RyICsgIiIpID09IChkdCArICIiKSAmJiAocmV0RGF0
ZVN0ciArICIiKSAhPSAoZHQgKyAiIikpIHx8ICgoZGVwRGF0ZVN0ciArICIiKSA9PSAoZHQxICsg
IiIpICYmIChyZXREYXRlU3RyICsgIiIpICE9IChkdDEgKyAiIikpKSAmJiAoZGVwRGF0ZVN0ciAr
ICIiKSAhPSAibW0vZGQveXl5eSIgJiYgKGRlcERhdGVTdHIgKyAiIikgIT0gIiIpIHsKICAgICAg
ICAgICAgICAgICAgICBmbGdNc2cgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBpZiAobW9k
aWZ5U2VhcmNoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoIiNtZXNzYWdlIikuY3NzKHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogKCQoIiNidG5Nb2RpZnlTZWFyY2giKS5v
ZmZzZXQoKS50b3ApICsgInB4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6ICgk
KCIjYnRuTW9kaWZ5U2VhcmNoIikub2Zmc2V0KCkubGVmdCAtIDYwKSArICJweCIKICAgICAgICAg
ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgJCgiI21lc3NhZ2UiKS5jc3MoewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdG9wOiAoJCgiI1NlYXJjaEZsaWdodCIpLm9mZnNldCgpLnRvcCAtIDI0NSkgKyAicHgi
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogKCgkKCIjQm9va0ZsaWdodERpdiIp
LndpZHRoKCkgLSAkKCIjbWVzc2FnZSIpLndpZHRoKCkpIC8gMikgKyAicHgiCiAgICAgICAgICAg
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWVzc2FnZSIpLnN0eWxlLmRpc3BsYXkgPSAiYmxv
Y2siOwogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0aW1lUG9w
VXAiKS5mb2N1cygpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICBpZiAoKCgoZGVwRGF0ZVN0ciArICIiKSAhPSAoZHQgKyAiIikgJiYgKHJldERhdGVTdHIgKyAi
IikgPT0gKGR0ICsgIiIpKSB8fCAoKGRlcERhdGVTdHIgKyAiIikgIT0gKGR0MSArICIiKSAmJiAo
cmV0RGF0ZVN0ciArICIiKSA9PSAoZHQxICsgIiIpKSkgJiYgKGRlcERhdGVTdHIgKyAiIikgIT0g
Im1tL2RkL3l5eXkiICYmIChkZXBEYXRlU3RyICsgIiIpICE9ICIiKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGZsZ01zZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9k
aWZ5U2VhcmNoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCIjbWVzc2FnZSIpLmNz
cyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAoJCgiI2J0bk1vZGlmeVNl
YXJjaCIpLm9mZnNldCgpLnRvcCkgKyAicHgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxlZnQ6ICgkKCIjYnRuTW9kaWZ5U2VhcmNoIikub2Zmc2V0KCkubGVmdCAtIDYwKSArICJw
eCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgiI21lc3NhZ2UiKS5jc3Mo
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogKCQoIiNTZWFyY2hGbGlnaHQi
KS5vZmZzZXQoKS50b3AgLSAyNDUpICsgInB4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsZWZ0OiAoKCQoIiNCb29rRmxpZ2h0RGl2Iikud2lkdGgoKSAtICQoIiNtZXNzYWdlIiku
d2lkdGgoKSkgLyAyKSArICJweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJtZXNzYWdlIikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0aW1lUG9wVXAiKS5mb2N1
cygpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LmZsaWdodFNlYXJjaEZvcm0uc3VibWl0KCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChpc1BDSUUgPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
dExvYWRpbmdBbmlEaXZMb2NhdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgIHNob3dXYWl0SW1hZ2UoKTsKICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KZnVuY3Rp
b24gc2FtZURheU1lc3NhZ2VDbG9zZShjbG9zZVR5cGUpIHsKICAgIGlmIChjbG9zZVR5cGUgPT0g
InRydWUiKSB7CiAgICAgICAgaWYgKGZsZ01zZykgewogICAgICAgICAgICBGcm1Ub1N1Ym1pdC5z
dWJtaXQoKTsKICAgICAgICAgICAgc2hvd1dhaXRJbWFnZSgpOwogICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJTYW1lRGF5RmxpZ2h0c01lc3NhZ2VJ
ZCIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgIGlmIChkb2N1bWVudC5mbGln
aHRTZWFyY2hGb3JtKSB7CiAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuZmxpZ2h0U2VhcmNo
Rm9ybS5lbGVtZW50c1siZGl2TmFtZSJdICYmIGRvY3VtZW50LmZsaWdodFNlYXJjaEZvcm0uZWxl
bWVudHNbImRpdk5hbWUiXS52YWx1ZSA9PSAiQm9va0ZsaWdodCIpIHsKICAgICAgICAgICAgICAg
ICAgICAkKCIjbWVzc2FnZSIpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogKCQo
IiNTZWFyY2hGbGlnaHQiKS5vZmZzZXQoKS50b3AgLSAyNDUpICsgInB4IiwKICAgICAgICAgICAg
ICAgICAgICAgICAgbGVmdDogKCgkKCIjQm9va0ZsaWdodERpdiIpLndpZHRoKCkgLSAkKCIjbWVz
c2FnZSIpLndpZHRoKCkpIC8gMikgKyAicHgiCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICQoIiNtZXNzYWdlIikuY3Nz
KHsKICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAoJCgiI2J0bk1vZGlmeVNlYXJjaCIpLm9m
ZnNldCgpLnRvcCkgKyAicHgiLAogICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAoJCgiI2J0
bk1vZGlmeVNlYXJjaCIpLm9mZnNldCgpLmxlZnQgLSA2MCkgKyAicHgiCiAgICAgICAgICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ0blNlYXJjaEZsaWdodHMiKSkg
ewogICAgICAgICAgICAgICAgICAgICQoIiNtZXNzYWdlIikuY3NzKHsKICAgICAgICAgICAgICAg
ICAgICAgICAgdG9wOiAoJCgiI2J0blNlYXJjaEZsaWdodHMiKS5vZmZzZXQoKS50b3ApICsgInB4
IiwKICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogKCQoIiNidG5TZWFyY2hGbGlnaHRzIiku
b2Zmc2V0KCkubGVmdCAtIDYwKSArICJweCIKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibWVzc2FnZSIpLnN0eWxlLnRvcCA9ICIyMDBweCI7CiAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJtZXNzYWdlIikuc3R5bGUubGVmdCA9ICI0NiUiOwogICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWVzc2FnZSIpLnN0eWxlLmRpc3BsYXkgPSAiYmxv
Y2siOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGltZVBvcFVwIikuZm9j
dXMoKTsKICAgICAgICB9CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlNhbWVEYXlG
bGlnaHRzTWVzc2FnZUlkIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgIH0gZWxzZSB7CiAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1lc3NhZ2UiKS5zdHlsZS5kaXNwbGF5ID0g
Im5vbmUiOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJTYW1lRGF5RmxpZ2h0c01l
c3NhZ2VJZCIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICB9Cn0KZnVuY3Rpb24gZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZShjbGFzc25hbWUsIG5vZGUpIHsKICAgIGlmICghbm9kZSkgewogICAg
ICAgIG5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdOwogICAg
fQogICAgdmFyIGEgPSBbXTsKICAgIHZhciByZSA9IG5ldyBSZWdFeHAoIlxcYiIgKyBjbGFzc25h
bWUgKyAiXFxiIik7CiAgICB2YXIgZWxzID0gbm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIp
OwogICAgZm9yICh2YXIgaSA9IDAsIGogPSBlbHMubGVuZ3RoOyBpIDwgajsgaSsrKSB7CiAgICAg
ICAgaWYgKHJlLnRlc3QoZWxzW2ldLmNsYXNzTmFtZSkpIHsKICAgICAgICAgICAgYS5wdXNoKGVs
c1tpXSk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGE7Cn0KZnVuY3Rpb24gb3BlbkNvbmZp
cm1hdGlvbkNvZGVQb3BVcEhvbWUoKSB7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9j
YXRlQ29uZmlybWF0aW9uRGl2SWQiKS5zdHlsZS50b3AgPSAoJCgiI2xvY2F0ZSIpLm9mZnNldCgp
LnRvcCArIDE1KSArICJweCI7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9jYXRlQ29u
ZmlybWF0aW9uRGl2SWQiKS5zdHlsZS5sZWZ0ID0gKCQoIiNsb2NhdGUiKS5vZmZzZXQoKS5sZWZ0
IC0gMTUwKSArICJweCI7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9jYXRlQ29uZmly
bWF0aW9uRGl2SWQiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKfQpmdW5jdGlvbiBjc3NfYnJv
d3Nlcl9zZWxlY3Rvcih1KSB7CiAgICB2YXIgdWEgPSB1LnRvTG93ZXJDYXNlKCksCiAgICAgICAg
aXMgPSBmdW5jdGlvbiAodCkgewogICAgICAgICAgICByZXR1cm4gdWEuaW5kZXhPZih0KSA+IC0x
OwogICAgICAgIH0sCiAgICAgICAgZyA9ICJnZWNrbyIsCiAgICAgICAgdyA9ICJ3ZWJraXQiLAog
ICAgICAgIHMgPSAic2FmYXJpIiwKICAgICAgICBoID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImh0bWwiKVswXSwKICAgICAgICBiID0gWyghKC9vcGVyYXx3ZWJ0di9pLnRlc3QodWEp
KSAmJiAvbXNpZVxzKFxkKS8udGVzdCh1YSkpID8gKCJpZSBpZSIgKyBSZWdFeHAuJDEpIDogaXMo
ImZpcmVmb3gvMiIpID8gZyArICIgZmYyIiA6IGlzKCJmaXJlZm94LzMiKSA/IGcgKyAiIGZmMyIg
OiBpcygiZ2Vja28vIikgPyBnIDogL29wZXJhKFxzfFwvKShcZCspLy50ZXN0KHVhKSA/ICJvcGVy
YSBvcGVyYSIgKyBSZWdFeHAuJDIgOiBpcygia29ucXVlcm9yIikgPyAia29ucXVlcm9yIiA6IGlz
KCJjaHJvbWUiKSA/IHcgKyAiICIgKyBzICsgIiBjaHJvbWUiIDogaXMoImFwcGxld2Via2l0LyIp
ID8gdyArICIgIiArIHMgKyAoL3ZlcnNpb25cLyhcZCspLy50ZXN0KHVhKSA/ICIgIiArIHMgKyBS
ZWdFeHAuJDEgOiAiIikgOiBpcygibW96aWxsYS8iKSA/IGcgOiAiIiwgaXMoImoybWUiKSA/ICJt
b2JpbGUiIDogaXMoImlwaG9uZSIpID8gImlwaG9uZSIgOiBpcygiaXBvZCIpID8gImlwb2QiIDog
aXMoIm1hYyIpID8gIm1hYyIgOiBpcygiZGFyd2luIikgPyAibWFjIiA6IGlzKCJ3ZWJ0diIpID8g
IndlYnR2IiA6IGlzKCJ3aW4iKSA/ICJ3aW4iIDogaXMoImZyZWVic2QiKSA/ICJmcmVlYnNkIiA6
IChpcygieDExIikgfHwgaXMoImxpbnV4IikpID8gImxpbnV4IiA6ICIiLCAianMiXTsKICAgIGMg
PSBiLmpvaW4oIiAiKTsKICAgIGguY2xhc3NOYW1lICs9ICIgIiArIGM7CiAgICByZXR1cm4gYzsK
fQpjc3NfYnJvd3Nlcl9zZWxlY3RvcihuYXZpZ2F0b3IudXNlckFnZW50KTsKdmFyIGltYWdlR2Fs
bGVyeSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgYyA9IDA7CiAgICAgICAgdmFyIHBhZ2Ug
PSAxOwogICAgICAgIHZhciBpZEFyciA9IG5ldyBBcnJheShbIkEiLCA2NV0sIFsiQiIsIDIwNV0s
IFsiQyIsIDM1NV0pOwogICAgICAgIHZhciBwYWdlRmxhZyA9ICJ0cnVlIjsKICAgICAgICB2YXIg
eCA9IDA7CiAgICAgICAgdmFyIGN2YWwgPSAwLjk7CiAgICAgICAgdmFyIGl2YWwgPSAxMDA7CiAg
ICAgICAgdmFyIGFyZyA9IG51bGw7CiAgICAgICAgdmFyIHRoaXNPYmogPSBudWxsOwogICAgICAg
IHZhciB0ZW1wUGF0aCA9IG51bGw7CiAgICAgICAgdmFyIHZhWE1MID0gewogICAgICAgICAgICBs
b2FkWE1MOiBmdW5jdGlvbiAoeG1sRmlsZSkgewogICAgICAgICAgICAgICAgeG1saHR0cC5vcGVu
KCJHRVQiLCB4bWxGaWxlLCBmYWxzZSk7CiAgICAgICAgICAgICAgICB4bWxodHRwLnNlbmQoIiIp
OwogICAgICAgICAgICAgICAgeG1sRG9jID0geG1saHR0cC5yZXNwb25zZVhNTDsKICAgICAgICAg
ICAgfSwKICAgICAgICAgICAgY3JlYXRlT2JqczogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAg
ICAgeG1sT2JqID0geG1sRG9jLmRvY3VtZW50RWxlbWVudDsKICAgICAgICAgICAgICAgIGNvbnRh
aW5lci5jcmVhdGVDb250YWluZXIoInVsSWQiKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAg
ICAgICAgdmFyIGNvbnRhaW5lciA9IHsKICAgICAgICAgICAgY3JlYXRlQ29udGFpbmVyOiBmdW5j
dGlvbiAodWxJZCkgewogICAgICAgICAgICAgICAgdmFyIGltZ1BhdGggPSBudWxsOwogICAgICAg
ICAgICAgICAgdmFyIGltZ05hbWUgPSBudWxsOwogICAgICAgICAgICAgICAgdmFyIHVsT2JqID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidWwiKTsKICAgICAgICAgICAgICAgIHZhciBpbWdDb250
YWluZXIgPSBudWxsOwogICAgICAgICAgICAgICAgdWxPYmouc2V0QXR0cmlidXRlKCJpZCIsIHVs
SWQpOwogICAgICAgICAgICAgICAgdG90YWxJbWFnZXMgPSB4bWxPYmouZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImltYWdlIikubGVuZ3RoOwogICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRv
dGFsSW1hZ2VzOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAodG90YWxJbWFnZXMgJSAz
ICE9IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxJbWFnZXMgPSB0b3RhbEltYWdl
cyArIDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh0b3Rh
bEltYWdlcyAlIDMgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICB0b3RhbFBhZ2VzID0g
dG90YWxJbWFnZXMgLyAzOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwYWdlQXJyID0g
bmV3IEFycmF5KHRvdGFsUGFnZXMpOwogICAgICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IDI7
IGsrKykgewogICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0b3RhbFBhZ2VzOyBp
KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYWdlQXJyW2ldKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYWdlQXJyW2ldID0gbmV3IEFycmF5KDIpOwogICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID09IDApIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VBcnJbaV1ba10gPSBpICsgMTsKICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9PSAxKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSAwKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFnZUFycltpXVtrXSA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VBcnJbaV1b
a10gPSAzICogaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgIGZvciAobiA9IDA7IG4gPCB0b3RhbEltYWdlczsgbisrKSB7CiAgICAgICAgICAg
ICAgICAgICAgdmFyIGxpT2JqID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKICAgICAg
ICAgICAgICAgICAgICB2YXIgc21hbGxJbWdFbCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAg
c2xpZGVzcGVlZCA9IHhtbE9iai5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2xpZGVzcGVlZCIpWzBd
LmZpcnN0Q2hpbGQubm9kZVZhbHVlOwogICAgICAgICAgICAgICAgICAgIHZhciBwYXRoSW5mbyA9
IHhtbE9iai5nZXRFbGVtZW50c0J5VGFnTmFtZSgicGF0aGluZm8iKVswXTsKICAgICAgICAgICAg
ICAgICAgICB2YXIgaW1hZ2VFbCA9IHhtbE9iai5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW1hZ2Ui
KVtuXTsKICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2VFbCkgewogICAgICAgICAgICAgICAg
ICAgICAgICBzbWFsbEltZ0VsID0gaW1hZ2VFbC5maXJzdENoaWxkOwogICAgICAgICAgICAgICAg
ICAgICAgICBpbWdOYW1lID0gc21hbGxJbWdFbC5maXJzdENoaWxkLm5vZGVWYWx1ZTsKICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpbWdOYW1lID0g
IndoaXRlU2VhdF92aWV3LnBuZyI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgIGltZ1BhdGggPSBwYXRoSW5mby5nZXRBdHRyaWJ1dGUoInNtYWxsaW1ncGF0aCIpOwog
ICAgICAgICAgICAgICAgICAgIGxhckltZ1BhdGggPSBwYXRoSW5mby5nZXRBdHRyaWJ1dGUoImxh
cmdlaW1ncGF0aCIpOwogICAgICAgICAgICAgICAgICAgIGhpUmVzSW1nUGF0aCA9IHBhdGhJbmZv
LmdldEF0dHJpYnV0ZSgiaGlyZXNpbWdwYXRoIik7CiAgICAgICAgICAgICAgICAgICAgdmFyIGlt
Z09iaiA9IGltYWdlLmNyZWF0ZUltYWdlT2JqKGltZ1BhdGgsIGltZ05hbWUsIG4pOwogICAgICAg
ICAgICAgICAgICAgIGlmIChpbWFnZUVsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGltZ0Nv
bnRhaW5lciA9IGltYWdlLmNyZWF0ZUltZ0NvbnRhaW5lcihpbWdPYmosIGltZ1BhdGgsIGhpUmVz
SW1nUGF0aCwgaW1nTmFtZSwgc21hbGxJbWdFbC5nZXRBdHRyaWJ1dGUoInNpemUiKSwgaW1hZ2VF
bC5jaGlsZE5vZGVzWzFdLmdldEF0dHJpYnV0ZSgic2l6ZSIpKTsKICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpbWdDb250YWluZXIgPSBpbWFnZS5j
cmVhdGVJbWdDb250YWluZXIoaW1nT2JqLCBpbWdQYXRoLCBsYXJJbWdQYXRoLCBpbWdOYW1lLCAi
dW5kZWZpbmVkIik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlm
IChpbWFnZUVsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxpT2JqLmFwcGVuZENoaWxkKGlt
Z0NvbnRhaW5lcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlm
IChuIDwgMykgewogICAgICAgICAgICAgICAgICAgICAgICBsaU9iai5zZXRBdHRyaWJ1dGUoImNs
YXNzIiwgImlubGluZUNzcyIpOwogICAgICAgICAgICAgICAgICAgICAgICBsaU9iai5zZXRBdHRy
aWJ1dGUoImNsYXNzTmFtZSIsICJpbmxpbmVDc3MiKTsKICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICAgICBsaU9iai5zZXRBdHRyaWJ1dGUoImNsYXNzIiwg
Im5vbmVDc3MiKTsKICAgICAgICAgICAgICAgICAgICAgICAgbGlPYmouc2V0QXR0cmlidXRlKCJj
bGFzc05hbWUiLCAibm9uZUNzcyIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICB1bE9iai5hcHBlbmRDaGlsZChsaU9iaik7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAkZ2V0X0pzRWxlbWVudCgiaW1nR2FsbGVyeSIpLmFwcGVuZENoaWxkKHVsT2Jq
KTsKICAgICAgICAgICAgICAgIHVsb2JqID0gJGdldF9Kc0VsZW1lbnQoInVsSWQiKTsKICAgICAg
ICAgICAgICAgICRnZXRfSnNFbGVtZW50KCJkaXNwbGF5UGFnZSIpLmlubmVySFRNTCA9ICJEaXNw
bGF5aW5nOiAiICsgcGFnZSArICIgb2YgIiArIHRvdGFsUGFnZXM7CiAgICAgICAgICAgIH0KICAg
ICAgICB9OwogICAgICAgIHZhciBpbWFnZSA9IHsKICAgICAgICAgICAgaW5kZXg6IGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzT2JqLmlkID09IGlkQXJyWzBdWzBdKSB7CiAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIChwYWdlICogMyAtIDMpOwogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgaWYgKHRoaXNPYmouaWQgPT0gaWRBcnJbMV1bMF0pIHsKICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gKHBhZ2UgKiAzIC0gMik7CiAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICBpZiAodGhpc09iai5pZCA9PSBpZEFyclsyXVswXSkgewogICAgICAgICAg
ICAgICAgICAgIHJldHVybiAocGFnZSAqIDMgLSAxKTsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgfSwKICAgICAgICAgICAgd3JpdGVNc2c6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAg
ICAgIG1zZyA9IHhtbE9iai5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW1hZ2UiKVtpbWFnZS5pbmRl
eCgpXS5sYXN0Q2hpbGQuZmlyc3RDaGlsZC5ub2RlVmFsdWU7CiAgICAgICAgICAgICAgICAkZ2V0
X0pzRWxlbWVudCgic2VhdE1zZyIpLmlubmVySFRNTCA9IG1zZzsKICAgICAgICAgICAgfSwKICAg
ICAgICAgICAgY3JlYXRlSW1hZ2VPYmo6IGZ1bmN0aW9uIChpbWdQYXRoLCBpbWdOYW1lLCBudmFs
KSB7CiAgICAgICAgICAgICAgICB2YXIgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1n
Iik7CiAgICAgICAgICAgICAgICBpbWcuc2V0QXR0cmlidXRlKCJzcmMiLCBpbWdQYXRoICsgaW1n
TmFtZSk7CiAgICAgICAgICAgICAgICBpZiAobnZhbCA9PSAwKSB7CiAgICAgICAgICAgICAgICAg
ICAgaW1nLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCAic2VsZWN0ZWQiKTsKICAgICAgICAgICAgICAg
ICAgICBpbWcuc2V0QXR0cmlidXRlKCJjbGFzc05hbWUiLCAic2VsZWN0ZWQiKTsKICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaW1nLnNldEF0dHJpYnV0ZSgiY2xh
c3MiLCAidW5zZWxlY3RlZCIpOwogICAgICAgICAgICAgICAgICAgIGltZy5zZXRBdHRyaWJ1dGUo
ImNsYXNzTmFtZSIsICJ1bnNlbGVjdGVkIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICBpZiAobnZhbCA8IDMpIHsKICAgICAgICAgICAgICAgICAgICBpbWcuc2V0QXR0cmlidXRl
KCJpZCIsIGlkQXJyW252YWxdWzBdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
IHJldHVybiBpbWc7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNyZWF0ZUltZ0NvbnRhaW5l
cjogZnVuY3Rpb24gKGltZ09iaiwgc21hbGxJbWdQYXRoLCBoaVJlc0ltZ1BhdGgsIGltZ05hbWUs
IGltZ1NpemUsIGltZ1NpemVCaWcpIHsKICAgICAgICAgICAgICAgIHZhciBzID0gIiI7CiAgICAg
ICAgICAgICAgICB2YXIgZGl2bWFpbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwog
ICAgICAgICAgICAgICAgZGl2bWFpbi5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgImltZ0dhbGxlcnlU
aHVtYm5haWwiKTsKICAgICAgICAgICAgICAgIGRpdm1haW4uc2V0QXR0cmlidXRlKCJjbGFzc05h
bWUiLCAiaW1nR2FsbGVyeVRodW1ibmFpbCIpOwogICAgICAgICAgICAgICAgdmFyIGRpdmlubmVy
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgICAgICBkaXZpbm5l
ci5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgInBvZEJvZHlCZyIpOwogICAgICAgICAgICAgICAgZGl2
aW5uZXIuc2V0QXR0cmlidXRlKCJjbGFzc05hbWUiLCAicG9kQm9keUJnIik7CiAgICAgICAgICAg
ICAgICB2YXIgaDRFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImg0Iik7CiAgICAgICAgICAg
ICAgICB2YXIgaDRUZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIkRvd25sb2FkIik7CiAg
ICAgICAgICAgICAgICBoNEVsLmFwcGVuZENoaWxkKGg0VGV4dCk7CiAgICAgICAgICAgICAgICB2
YXIgcEVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpOwogICAgICAgICAgICAgICAgdmFy
IGFFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKICAgICAgICAgICAgICAgIHMgPSBz
bWFsbEltZ1BhdGggKyBpbWdOYW1lOwogICAgICAgICAgICAgICAgYUVsLnNldEF0dHJpYnV0ZSgi
aHJlZiIsIHMpOwogICAgICAgICAgICAgICAgYUVsLnNldEF0dHJpYnV0ZSgidGFyZ2V0IiwgIl9i
bGFuayIpOwogICAgICAgICAgICAgICAgdmFyIGFUZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoIlNtYWxsIik7CiAgICAgICAgICAgICAgICBhRWwuYXBwZW5kQ2hpbGQoYVRleHQpOwogICAg
ICAgICAgICAgICAgcEVsLmFwcGVuZENoaWxkKGFFbCk7CiAgICAgICAgICAgICAgICB2YXIgc3Bh
bkVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICAgICAgICAgdmFy
IHNwYW5UZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoaW1nU2l6ZSk7CiAgICAgICAgICAg
ICAgICBwRWwuYXBwZW5kQ2hpbGQoc3BhbkVsKTsKICAgICAgICAgICAgICAgIGlmIChpbWdPYmou
YWRkRXZlbnRMaXN0ZW5lcikgewogICAgICAgICAgICAgICAgICAgIGltZ09iai5hZGRFdmVudExp
c3RlbmVyKCJjbGljayIsIGltYWdlR2FsbGVyeS5mYWRlSW5FZmZlY3QsIGZhbHNlKTsKICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaW1nT2JqLm9uY2xpY2sgPSBu
ZXcgRnVuY3Rpb24oImltYWdlR2FsbGVyeS5mYWRlSW5FZmZlY3QoZXZlbnQpOyIpOwogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgZGl2aW5uZXIuYXBwZW5kQ2hpbGQoaW1nT2JqKTsK
ICAgICAgICAgICAgICAgIGRpdmlubmVyLmFwcGVuZENoaWxkKGg0RWwpOwogICAgICAgICAgICAg
ICAgZGl2aW5uZXIuYXBwZW5kQ2hpbGQocEVsKTsKICAgICAgICAgICAgICAgIHBFbCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInAiKTsKICAgICAgICAgICAgICAgIGFFbCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImEiKTsKICAgICAgICAgICAgICAgIHMgPSBoaVJlc0ltZ1BhdGggKyBpbWdO
YW1lOwogICAgICAgICAgICAgICAgYUVsLnNldEF0dHJpYnV0ZSgiaHJlZiIsIHMpOwogICAgICAg
ICAgICAgICAgYUVsLnNldEF0dHJpYnV0ZSgidGFyZ2V0IiwgIl9ibGFuayIpOwogICAgICAgICAg
ICAgICAgYVRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiTGFyZ2UiKTsKICAgICAgICAg
ICAgICAgIGFFbC5hcHBlbmRDaGlsZChhVGV4dCk7CiAgICAgICAgICAgICAgICBwRWwuYXBwZW5k
Q2hpbGQoYUVsKTsKICAgICAgICAgICAgICAgIHNwYW5FbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInNwYW4iKTsKICAgICAgICAgICAgICAgIHNwYW5UZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoaW1nU2l6ZUJpZyk7CiAgICAgICAgICAgICAgICBwRWwuYXBwZW5kQ2hpbGQoc3BhbkVs
KTsKICAgICAgICAgICAgICAgIGRpdmlubmVyLmFwcGVuZENoaWxkKHBFbCk7CiAgICAgICAgICAg
ICAgICBkaXZtYWluLmFwcGVuZENoaWxkKGRpdmlubmVyKTsKICAgICAgICAgICAgICAgIHJldHVy
biBkaXZtYWluOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICB2YXIgbW92ZSA9IHsK
ICAgICAgICAgICAgTGVmdDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgaWYgKHBhZ2Ug
IT0gdG90YWxQYWdlcykgewogICAgICAgICAgICAgICAgICAgIGlmIChwYWdlRmxhZyA9PSAidHJ1
ZSIgJiYgcGFnZSA9PSBwYWdlQXJyW3BhZ2UgLSAxXVswXSkgewogICAgICAgICAgICAgICAgICAg
ICAgICBjID0gcGFnZUFycltwYWdlIC0gMV1bMV07CiAgICAgICAgICAgICAgICAgICAgICAgIHBh
Z2VGbGFnID0gImZhbHNlIjsKICAgICAgICAgICAgICAgICAgICAgICAgeCA9IDA7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGltYWdlR2FsbGVyeS5zZXRCb3JkZXJXaGl0ZSgpOwogICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjID0gYyArIDE7CiAgICAgICAgICAgICAg
ICAgICAgbGlvYmogPSB1bG9iai5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGkiKVtjIC0gMV07CiAg
ICAgICAgICAgICAgICAgICAgbGlvYmouZmlyc3RDaGlsZC5maXJzdENoaWxkLmZpcnN0Q2hpbGQu
aWQgPSAiIjsKICAgICAgICAgICAgICAgICAgICBsaW9iai5zdHlsZS5kaXNwbGF5ID0gIm5vbmUi
OwogICAgICAgICAgICAgICAgICAgIGxpb2JqID0gdWxvYmouZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImxpIilbYyArIDJdOwogICAgICAgICAgICAgICAgICAgIGlmIChsaW9iai5maXJzdENoaWxkKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIGxpb2JqLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZC5maXJz
dENoaWxkLmlkID0gaWRBcnJbeF1bMF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgIGxpb2JqLnN0eWxlLmRpc3BsYXkgPSAiaW5saW5lIjsKICAgICAgICAgICAgICAg
ICAgICB4ID0geCArIDE7CiAgICAgICAgICAgICAgICAgICAgdCA9IHNldFRpbWVvdXQoImltYWdl
R2FsbGVyeS5tb3ZlTGVmdCgpIiwgc2xpZGVzcGVlZCk7CiAgICAgICAgICAgICAgICAgICAgaWYg
KGMgJSAzID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGFnZSA9IHBhZ2UgKyAxOwog
ICAgICAgICAgICAgICAgICAgICAgICBwYWdlRmxhZyA9ICJ0cnVlIjsKICAgICAgICAgICAgICAg
ICAgICAgICAgbW92ZS5TdG9wKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICRnZXRfSnNFbGVt
ZW50KCJBIikuY2xhc3NOYW1lID0gInNlbGVjdGVkIjsKICAgICAgICAgICAgICAgICAgICAgICAg
aW1hZ2VHYWxsZXJ5Lm1vdmVBcnJvdygkZ2V0X0pzRWxlbWVudCgiQSIpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgaW1hZ2VHYWxsZXJ5LmZhZGVJbkVmZmVjdCgkZ2V0X0pzRWxlbWVudCgiQSIp
KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJGdldF9Kc0VsZW1l
bnQoImRpc3BsYXlQYWdlIikuaW5uZXJIVE1MID0gIkRpc3BsYXlpbmc6ICIgKyBwYWdlICsgIiBv
ZiAiICsgdG90YWxQYWdlczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAg
ICAgICAgUmlnaHQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmIChwYWdlICE9IDEp
IHsKICAgICAgICAgICAgICAgICAgICBpZiAocGFnZUZsYWcgPT0gInRydWUiICYmIHBhZ2UgPT0g
cGFnZUFycltwYWdlIC0gMV1bMF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHBhZ2VB
cnJbcGFnZSAtIDFdWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBwYWdlRmxhZyA9ICJmYWxz
ZSI7CiAgICAgICAgICAgICAgICAgICAgICAgIHggPSAyOwogICAgICAgICAgICAgICAgICAgICAg
ICBpbWFnZUdhbGxlcnkuc2V0Qm9yZGVyV2hpdGUoKTsKICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgbGlvYmogPSB1bG9iai5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGki
KVtjICsgMl07CiAgICAgICAgICAgICAgICAgICAgaWYgKGxpb2JqLmZpcnN0Q2hpbGQpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgbGlvYmouZmlyc3RDaGlsZC5maXJzdENoaWxkLmZpcnN0Q2hp
bGQuaWQgPSAiIjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbGlv
Ymouc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgICAgICAgICBsaW9iaiA9IHVs
b2JqLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaSIpW2MgLSAxXTsKICAgICAgICAgICAgICAgICAg
ICBsaW9iai5maXJzdENoaWxkLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZC5pZCA9IGlkQXJyW3hdWzBd
OwogICAgICAgICAgICAgICAgICAgIGxpb2JqLnN0eWxlLmRpc3BsYXkgPSAiaW5saW5lIjsKICAg
ICAgICAgICAgICAgICAgICBjID0gYyAtIDE7CiAgICAgICAgICAgICAgICAgICAgeCA9IHggLSAx
OwogICAgICAgICAgICAgICAgICAgIHQgPSBzZXRUaW1lb3V0KCJpbWFnZUdhbGxlcnkubW92ZVJp
Z2h0KCkiLCBzbGlkZXNwZWVkKTsKICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAwIHx8IGMg
JSAzID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGFnZSA9IHBhZ2UgLSAxOwogICAg
ICAgICAgICAgICAgICAgICAgICBwYWdlRmxhZyA9ICJ0cnVlIjsKICAgICAgICAgICAgICAgICAg
ICAgICAgeCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUuU3RvcCgpOwogICAgICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQSIpLmNsYXNzTmFtZSA9
ICJzZWxlY3RlZCI7CiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlR2FsbGVyeS5tb3ZlQXJy
b3coJGdldF9Kc0VsZW1lbnQoIkEiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlR2Fs
bGVyeS5mYWRlSW5FZmZlY3QoJGdldF9Kc0VsZW1lbnQoIkEiKSk7CiAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICRnZXRfSnNFbGVtZW50KCJkaXNwbGF5UGFnZSIpLmlu
bmVySFRNTCA9ICJEaXNwbGF5aW5nOiAiICsgcGFnZSArICIgb2YgIiArIHRvdGFsUGFnZXM7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN0b3A6IGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0KTsKICAgICAgICAgICAgfQogICAg
ICAgIH07CiAgICAgICAgdmFyIGZhZGUgPSB7CiAgICAgICAgICAgIEluRWZmZWN0OiBmdW5jdGlv
biAoKSB7CiAgICAgICAgICAgICAgICBpZiAoY3ZhbCA9PSAwLjkgfHwgaXZhbCA9PSAxMDApIHsK
ICAgICAgICAgICAgICAgICAgICBpZiAoYXJnLnNyY0VsZW1lbnQpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpc09iaiA9IGFyZy5zcmNFbGVtZW50OwogICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNPYmogPSBhcmcudGFyZ2V0OwogICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAodGhpc09iaiA9PSBudWxs
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNPYmogPSBhcmc7CiAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICRnZXRfSnNFbGVtZW50KCJpbWdNc2ciKS5zdHls
ZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICAgICAgICAgIHRlbXBQYXRoID0gbGFySW1n
UGF0aCArICh0aGlzT2JqLnNyYykuc3Vic3RyaW5nKCh0aGlzT2JqLnNyYykubGFzdEluZGV4T2Yo
Ii8iKSArIDEsICh0aGlzT2JqLnNyYykubGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICBpbWFn
ZUdhbGxlcnkubW92ZUFycm93KHRoaXNPYmopOwogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgbGFyZ2VJbWdPYmouc3R5bGUub3BhY2l0eSA9IGN2YWw7CiAgICAgICAgICAgICAgICBs
YXJnZUltZ09iai5zdHlsZS5maWx0ZXIgPSAiYWxwaGEob3BhY2l0eT0iICsgaXZhbCArICIpIjsK
ICAgICAgICAgICAgICAgIGN2YWwgPSBjdmFsIC0gMC4wODsKICAgICAgICAgICAgICAgIGl2YWwg
PSBpdmFsIC0gODsKICAgICAgICAgICAgICAgIHIgPSBzZXRUaW1lb3V0KCJpbWFnZUdhbGxlcnku
ZmFkZUluRWZmZWN0KCkiLCAyNSk7CiAgICAgICAgICAgICAgICBpZiAoY3ZhbCA8IDAuMSB8fCBp
dmFsIDwgMTApIHsKICAgICAgICAgICAgICAgICAgICBsYXJnZUltZ09iai5zdHlsZS5vcGFjaXR5
ID0gMC4wMzsKICAgICAgICAgICAgICAgICAgICBsYXJnZUltZ09iai5zdHlsZS5maWx0ZXIgPSAi
YWxwaGEob3BhY2l0eT0uMykiOwogICAgICAgICAgICAgICAgICAgIGN2YWwgPSAwOwogICAgICAg
ICAgICAgICAgICAgIGl2YWwgPSAwOwogICAgICAgICAgICAgICAgICAgIGZhZGUuU3RvcCgpOwog
ICAgICAgICAgICAgICAgICAgICRnZXRfSnNFbGVtZW50KCJsb2FkaW5nSW1hZ2UiKS5zdHlsZS5k
aXNwbGF5ID0gImJsb2NrIjsKICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCJpbWFnZUdh
bGxlcnkuaW5zZXJ0SW1nKCkiLCAwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwK
ICAgICAgICAgICAgT3V0RWZmZWN0OiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAkZ2V0
X0pzRWxlbWVudCgibG9hZGluZ0ltYWdlIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAg
ICAgICAgICAgIGxhcmdlSW1nT2JqLnN0eWxlLm9wYWNpdHkgPSBjdmFsOwogICAgICAgICAgICAg
ICAgbGFyZ2VJbWdPYmouc3R5bGUuZmlsdGVyID0gImFscGhhKG9wYWNpdHk9IiArIGl2YWwgKyAi
KSI7CiAgICAgICAgICAgICAgICBjdmFsID0gY3ZhbCArIDAuMDU7CiAgICAgICAgICAgICAgICBp
dmFsID0gaXZhbCArIDU7CiAgICAgICAgICAgICAgICByID0gc2V0VGltZW91dCgiaW1hZ2VHYWxs
ZXJ5LmZhZGVPdXRFZmZlY3QoKSIsIDE1KTsKICAgICAgICAgICAgICAgIGlmIChjdmFsID4gMC44
IHx8IGl2YWwgPiA4MCkgewogICAgICAgICAgICAgICAgICAgIGxhcmdlSW1nT2JqLnN0eWxlLm9w
YWNpdHkgPSAxOwogICAgICAgICAgICAgICAgICAgIGxhcmdlSW1nT2JqLnN0eWxlLmZpbHRlciA9
ICJhbHBoYShvcGFjaXR5PTEwMCkiOwogICAgICAgICAgICAgICAgICAgIGN2YWwgPSAwLjk7CiAg
ICAgICAgICAgICAgICAgICAgaXZhbCA9IDEwMDsKICAgICAgICAgICAgICAgICAgICBmYWRlLlN0
b3AoKTsKICAgICAgICAgICAgICAgICAgICBpbWFnZS53cml0ZU1zZygpOwogICAgICAgICAgICAg
ICAgICAgICRnZXRfSnNFbGVtZW50KCJpbWdNc2ciKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsK
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3RvcDogZnVuY3Rp
b24gKCkgewogICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHIpOwogICAgICAgICAgICB9CiAg
ICAgICAgfTsKICAgICAgICB2YXIgdmFJTUcgPSB7CiAgICAgICAgICAgIGxvYWRJTUc6IGZ1bmN0
aW9uIChpbWdQYXRoKSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAg
IHZhciB1cmwgPSAiZHVtbXkuanNwP2ltZ1BhdGg9IiArIGltZ1BhdGg7CiAgICAgICAgICAgICAg
ICAgICAgeG1saHR0cC5vcGVuKCJHRVQiLCB1cmwsIGZhbHNlKTsKICAgICAgICAgICAgICAgICAg
ICB4bWxodHRwLnNlbmQobnVsbCk7CiAgICAgICAgICAgICAgICAgICAgeG1saHR0cC5vbnJlYWR5
c3RhdGVjaGFuZ2UgPSB2YUlNRy5pbnNlcnRJbWcoaW1nUGF0aCk7CiAgICAgICAgICAgICAgICB9
IGNhdGNoIChlKSB7fQogICAgICAgICAgICB9LAogICAgICAgICAgICBpbnNlcnRJbWc6IGZ1bmN0
aW9uIChpbWdQYXRoKSB7CiAgICAgICAgICAgICAgICBpZiAoeG1saHR0cC5yZWFkeVN0YXRlID09
IDQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoeG1saHR0cC5zdGF0dXMgPT0gMjAwKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICRnZXRfSnNFbGVtZW50KCJpbWdQYXJlbnROb2RlIikuaW5u
ZXJIVE1MID0geG1saHR0cC5yZXNwb25zZVRleHQudHJpbSgpOwogICAgICAgICAgICAgICAgICAg
ICAgICBsYXJnZUltZ09iai5zcmMgPSAkZ2V0X0pzRWxlbWVudCgibGFyZ2VJbWdJZFRlbXAiKS5z
cmM7CiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlR2FsbGVyeS5mYWRlT3V0RWZmZWN0KCk7
CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAg
ICAgICAgfTsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBpbml0OiBmdW5jdGlvbiAoeG1s
RmlsZSkgewogICAgICAgICAgICAgICAgdmFYTUwubG9hZFhNTCh4bWxGaWxlKTsKICAgICAgICAg
ICAgICAgIHZhWE1MLmNyZWF0ZU9ianMoKTsKICAgICAgICAgICAgICAgIGxhcmdlSW1nT2JqID0g
JGdldF9Kc0VsZW1lbnQoImxhcmdlSW1nSWQiKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAg
c2V0Qm9yZGVyV2hpdGU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICgkZ2V0X0pz
RWxlbWVudCgiQSIpKSB7CiAgICAgICAgICAgICAgICAgICAgJGdldF9Kc0VsZW1lbnQoIkEiKS5j
bGFzc05hbWUgPSAidW5zZWxlY3RlZCI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICBpZiAoJGdldF9Kc0VsZW1lbnQoIkIiKSkgewogICAgICAgICAgICAgICAgICAgICRnZXRfSnNF
bGVtZW50KCJCIikuY2xhc3NOYW1lID0gInVuc2VsZWN0ZWQiOwogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgaWYgKCRnZXRfSnNFbGVtZW50KCJDIikpIHsKICAgICAgICAgICAgICAg
ICAgICAkZ2V0X0pzRWxlbWVudCgiQyIpLmNsYXNzTmFtZSA9ICJ1bnNlbGVjdGVkIjsKICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgZmFkZUluRWZmZWN0OiBmdW5j
dGlvbiAoKSB7CiAgICAgICAgICAgICAgICBpZiAoYXJnID09IG51bGwgfHwgYXJnICE9IGFyZ3Vt
ZW50c1swXSkgewogICAgICAgICAgICAgICAgICAgIGFyZyA9IGFyZ3VtZW50c1swXTsKICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZhZGUuSW5FZmZlY3QoKTsKICAgICAgICAgICAg
fSwKICAgICAgICAgICAgZmFkZU91dEVmZmVjdDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAg
ICAgZmFkZS5PdXRFZmZlY3QoKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgbW92ZUFycm93
OiBmdW5jdGlvbiAoaW1nT2JqKSB7CiAgICAgICAgICAgICAgICB2YXIgaW1nQXJyT2JqID0gJGdl
dF9Kc0VsZW1lbnQoImltZ0FyciIpOwogICAgICAgICAgICAgICAgaW1hZ2VHYWxsZXJ5LnNldEJv
cmRlcldoaXRlKCk7CiAgICAgICAgICAgICAgICBpZiAoaW1nT2JqLmlkID09ICJBIikgewogICAg
ICAgICAgICAgICAgICAgIGltZ0Fyck9iai5zdHlsZS5tYXJnaW5MZWZ0ID0gaWRBcnJbMF1bMV0g
KyAicHgiOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGltZ09iai5pZCA9
PSAiQiIpIHsKICAgICAgICAgICAgICAgICAgICBpbWdBcnJPYmouc3R5bGUubWFyZ2luTGVmdCA9
IGlkQXJyWzFdWzFdICsgInB4IjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlm
IChpbWdPYmouaWQgPT0gIkMiKSB7CiAgICAgICAgICAgICAgICAgICAgaW1nQXJyT2JqLnN0eWxl
Lm1hcmdpbkxlZnQgPSBpZEFyclsyXVsxXSArICJweCI7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICBpbWdPYmouY2xhc3NOYW1lID0gInNlbGVjdGVkIjsKICAgICAgICAgICAgfSwK
ICAgICAgICAgICAgbW92ZUxlZnQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIG1vdmUu
TGVmdCgpOwogICAgICAgICAgICB9LAogICAgICAgICAgICBtb3ZlUmlnaHQ6IGZ1bmN0aW9uICgp
IHsKICAgICAgICAgICAgICAgIG1vdmUuUmlnaHQoKTsKICAgICAgICAgICAgfSwKICAgICAgICAg
ICAgaW5zZXJ0SW1nOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YUlNRy5sb2FkSU1H
KHRlbXBQYXRoKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9KCk7CgpmdW5jdGlvbiBj
aGFuZ2VBaXJwb3J0SW5mb1BhZ2UoYWlycG9ydCkgewogICAgc2hvd1dhaXRJbWFnZSgpOwogICAg
aWYgKGFpcnBvcnQgPT0gIlNGTyIpIHsKICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICJz
YW4tZnJhbmNpc2NvLXNmby5odG1sIjsKICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKGFpcnBvcnQg
PT0gIkJPUyIpIHsKICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAibG9nYW4tYm9z
Lmh0bWwiOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChhaXJwb3J0ID09ICJDVU4i
KSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICJjYW5jdW4tbWV4aWNv
LWN1bi5odG1sIjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChhaXJw
b3J0ID09ICJPUkQiKSB7CiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYg
PSAiY2hpY2Fnby1vcmQuaHRtbCI7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgIGlmIChhaXJwb3J0ID09ICJERlciKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gImRhbGxhcy1mb3J0LXdvcnRoLWRmdy5odG1sIjsKICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWly
cG9ydCA9PSAiRkxMIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0
aW9uLmhyZWYgPSAiZm9ydC1sYXVkZXJkYWxlLWZsbC5odG1sIjsKICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhaXJwb3J0ID09
ICJMQVMiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9u
LmhyZWYgPSAibGFzLXZlZ2FzLmh0bWwiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWlycG9ydCA9PSAiTEFY
IikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24u
aHJlZiA9ICJsb3MtYW5nZWxlcy1sYXguaHRtbCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFp
cnBvcnQgPT0gIlNKRCIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gImxvcy1jYWJvcy1zamQuaHRtbCI7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoYWlycG9ydCA9PSAiSkZLIikgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gIm5ldy15
b3JrLWpmay5odG1sIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFp
cnBvcnQgPT0gIk1DTyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAib3JsYW5kby1tY28uaHRtbCI7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFpcnBvcnQgPT0gIlBW
UiIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gInB1ZXJ0by12YWxsYXJ0YS1wdnIuaHRtbCI7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWlycG9y
dCA9PSAiU0FOIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gInNhbi1kaWVnby1zYW4uaHRtbCI7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChhaXJwb3J0ID09ICJTRUEiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gInNl
YXR0bGUtc2VhLmh0bWwiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhaXJwb3J0ID09ICJJQUQiKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICJkdWxsZXMtaWFkLmh0bWwiOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAiYWlycG9ydGluZm9ybWF0aW9uLmh0bWwiOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CnZh
ciBzZXRMaW5rU2VsZWN0ZWQgPSBmdW5jdGlvbiAocGFnZU5hbWUpIHsKICAgICAgICBpZiAoJGdl
dF9Kc0VsZW1lbnQocGFnZU5hbWUpKSB7CiAgICAgICAgICAgICRnZXRfSnNFbGVtZW50KHBhZ2VO
YW1lKS5jbGFzc05hbWUgPSAic2VsZWN0ZWQiOwogICAgICAgIH0KICAgICAgICBpZiAoJGdldF9K
c0VsZW1lbnQocGFnZU5hbWUgKyAiRm9vdGVyIikpIHsKICAgICAgICAgICAgJGdldF9Kc0VsZW1l
bnQocGFnZU5hbWUgKyAiRm9vdGVyIikuY2xhc3NOYW1lID0gInNlbGVjdGVkIjsKICAgICAgICB9
CiAgICB9OwooZnVuY3Rpb24gKCkgewogICAgdmFyIF9qUXVlcnkgPSB3aW5kb3cualF1ZXJ5LAog
ICAgICAgIF8kID0gd2luZG93LiQ7CiAgICB2YXIgalF1ZXJ5ID0gd2luZG93LmpRdWVyeSA9IHdp
bmRvdy4kID0gZnVuY3Rpb24gKHNlbGVjdG9yLCBjb250ZXh0KSB7CiAgICAgICAgICAgIHJldHVy
biBuZXcgalF1ZXJ5LmZuLmluaXQoc2VsZWN0b3IsIGNvbnRleHQpOwogICAgICAgIH07CiAgICB2
YXIgcXVpY2tFeHByID0gL15bXjxdKig8KC58XHMpKz4pW14+XSokfF4jKFx3KykkLywKICAgICAg
ICBpc1NpbXBsZSA9IC9eLlteOiNcW1wuXSokLywKICAgICAgICB1bmRlZmluZWQ7CiAgICBqUXVl
cnkuZm4gPSBqUXVlcnkucHJvdG90eXBlID0gewogICAgICAgIGluaXQ6IGZ1bmN0aW9uIChzZWxl
Y3RvciwgY29udGV4dCkgewogICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yIHx8IGRvY3Vt
ZW50OwogICAgICAgICAgICBpZiAoc2VsZWN0b3Iubm9kZVR5cGUpIHsKICAgICAgICAgICAgICAg
IHRoaXNbMF0gPSBzZWxlY3RvcjsKICAgICAgICAgICAgICAgIHRoaXMubGVuZ3RoID0gMTsKICAg
ICAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh0
eXBlb2Ygc2VsZWN0b3IgPT0gInN0cmluZyIpIHsKICAgICAgICAgICAgICAgIHZhciBtYXRjaCA9
IHF1aWNrRXhwci5leGVjKHNlbGVjdG9yKTsKICAgICAgICAgICAgICAgIGlmIChtYXRjaCAmJiAo
bWF0Y2hbMV0gfHwgIWNvbnRleHQpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoWzFd
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yID0galF1ZXJ5LmNsZWFuKFttYXRj
aFsxXV0sIGNvbnRleHQpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobWF0Y2hbM10p
OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGVsZW0uaWQgIT0gbWF0Y2hbM10pIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4galF1ZXJ5KCkuZmluZChzZWxlY3Rvcik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5
KGVsZW0pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGVjdG9yID0gW107CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5KGNvbnRleHQpLmZpbmQoc2Vs
ZWN0b3IpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgaWYgKGpRdWVyeS5pc0Z1bmN0aW9uKHNlbGVjdG9yKSkgewogICAgICAgICAgICAgICAg
ICAgIHJldHVybiBqUXVlcnkoZG9jdW1lbnQpW2pRdWVyeS5mbi5yZWFkeSA/ICJyZWFkeSIgOiAi
bG9hZCJdKHNlbGVjdG9yKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAg
ICAgICByZXR1cm4gdGhpcy5zZXRBcnJheShqUXVlcnkubWFrZUFycmF5KHNlbGVjdG9yKSk7CiAg
ICAgICAgfSwKICAgICAgICBqcXVlcnk6ICIxLjIuNiIsCiAgICAgICAgc2l6ZTogZnVuY3Rpb24g
KCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5sZW5ndGg7CiAgICAgICAgfSwKICAgICAgICBs
ZW5ndGg6IDAsCiAgICAgICAgZ2V0OiBmdW5jdGlvbiAobnVtKSB7CiAgICAgICAgICAgIHJldHVy
biBudW0gPT0gdW5kZWZpbmVkID8galF1ZXJ5Lm1ha2VBcnJheSh0aGlzKSA6IHRoaXNbbnVtXTsK
ICAgICAgICB9LAogICAgICAgIHB1c2hTdGFjazogZnVuY3Rpb24gKGVsZW1zKSB7CiAgICAgICAg
ICAgIHZhciByZXQgPSBqUXVlcnkoZWxlbXMpOwogICAgICAgICAgICByZXQucHJldk9iamVjdCA9
IHRoaXM7CiAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICAgfSwKICAgICAgICBzZXRBcnJh
eTogZnVuY3Rpb24gKGVsZW1zKSB7CiAgICAgICAgICAgIHRoaXMubGVuZ3RoID0gMDsKICAgICAg
ICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkodGhpcywgZWxlbXMpOwogICAgICAgICAg
ICByZXR1cm4gdGhpczsKICAgICAgICB9LAogICAgICAgIGVhY2g6IGZ1bmN0aW9uIChjYWxsYmFj
aywgYXJncykgewogICAgICAgICAgICByZXR1cm4galF1ZXJ5LmVhY2godGhpcywgY2FsbGJhY2ss
IGFyZ3MpOwogICAgICAgIH0sCiAgICAgICAgaW5kZXg6IGZ1bmN0aW9uIChlbGVtKSB7CiAgICAg
ICAgICAgIHZhciByZXQgPSAtMTsKICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5pbkFycmF5KGVs
ZW0gJiYgZWxlbS5qcXVlcnkgPyBlbGVtWzBdIDogZWxlbSwgdGhpcyk7CiAgICAgICAgfSwKICAg
ICAgICBhdHRyOiBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIHR5cGUpIHsKICAgICAgICAgICAgdmFy
IG9wdGlvbnMgPSBuYW1lOwogICAgICAgICAgICBpZiAobmFtZS5jb25zdHJ1Y3RvciA9PSBTdHJp
bmcpIHsKICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXNbMF0gJiYgalF1ZXJ5W3R5cGUgfHwgImF0dHIiXSh0aGlz
WzBdLCBuYW1lKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
b3B0aW9ucyA9IHt9OwogICAgICAgICAgICAgICAgICAgIG9wdGlvbnNbbmFtZV0gPSB2YWx1ZTsK
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5l
YWNoKGZ1bmN0aW9uIChpKSB7CiAgICAgICAgICAgICAgICBmb3IgKG5hbWUgaW4gb3B0aW9ucykg
ewogICAgICAgICAgICAgICAgICAgIGpRdWVyeS5hdHRyKHR5cGUgPyB0aGlzLnN0eWxlIDogdGhp
cywgbmFtZSwgalF1ZXJ5LnByb3AodGhpcywgb3B0aW9uc1tuYW1lXSwgdHlwZSwgaSwgbmFtZSkp
OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICAgIGNz
czogZnVuY3Rpb24gKGtleSwgdmFsdWUpIHsKICAgICAgICAgICAgaWYgKChrZXkgPT0gIndpZHRo
IiB8fCBrZXkgPT0gImhlaWdodCIpICYmIHBhcnNlRmxvYXQodmFsdWUpIDwgMCkgewogICAgICAg
ICAgICAgICAgdmFsdWUgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0
dXJuIHRoaXMuYXR0cihrZXksIHZhbHVlLCAiY3VyQ1NTIik7CiAgICAgICAgfSwKICAgICAgICB0
ZXh0OiBmdW5jdGlvbiAodGV4dCkgewogICAgICAgICAgICBpZiAodHlwZW9mIHRleHQgIT0gIm9i
amVjdCIgJiYgdGV4dCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbXB0
eSgpLmFwcGVuZCgodGhpc1swXSAmJiB0aGlzWzBdLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQp
LmNyZWF0ZVRleHROb2RlKHRleHQpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgcmV0
ID0gIiI7CiAgICAgICAgICAgIGpRdWVyeS5lYWNoKHRleHQgfHwgdGhpcywgZnVuY3Rpb24gKCkg
ewogICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2godGhpcy5jaGlsZE5vZGVzLCBmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZVR5cGUgIT0gOCkgewogICAgICAg
ICAgICAgICAgICAgICAgICByZXQgKz0gdGhpcy5ub2RlVHlwZSAhPSAxID8gdGhpcy5ub2RlVmFs
dWUgOiBqUXVlcnkuZm4udGV4dChbdGhpc10pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgcmV0dXJuIHJldDsKICAg
ICAgICB9LAogICAgICAgIHdyYXBBbGw6IGZ1bmN0aW9uIChodG1sKSB7CiAgICAgICAgICAgIGlm
ICh0aGlzWzBdKSB7CiAgICAgICAgICAgICAgICBqUXVlcnkoaHRtbCwgdGhpc1swXS5vd25lckRv
Y3VtZW50KS5jbG9uZSgpLmluc2VydEJlZm9yZSh0aGlzWzBdKS5tYXAoZnVuY3Rpb24gKCkgewog
ICAgICAgICAgICAgICAgICAgIHZhciBlbGVtID0gdGhpczsKICAgICAgICAgICAgICAgICAgICB3
aGlsZSAoZWxlbS5maXJzdENoaWxkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0gPSBl
bGVtLmZpcnN0Q2hpbGQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
IHJldHVybiBlbGVtOwogICAgICAgICAgICAgICAgfSkuYXBwZW5kKHRoaXMpOwogICAgICAgICAg
ICB9CiAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgIH0sCiAgICAgICAgd3JhcElubmVy
OiBmdW5jdGlvbiAoaHRtbCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgICAgIGpRdWVyeSh0aGlzKS5jb250ZW50cygpLndyYXBBbGwoaHRt
bCk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0sCiAgICAgICAgd3JhcDogZnVuY3Rpb24gKGh0
bWwpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAg
ICAgICAgICBqUXVlcnkodGhpcykud3JhcEFsbChodG1sKTsKICAgICAgICAgICAgfSk7CiAgICAg
ICAgfSwKICAgICAgICBhcHBlbmQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcmV0dXJuIHRo
aXMuZG9tTWFuaXAoYXJndW1lbnRzLCB0cnVlLCBmYWxzZSwgZnVuY3Rpb24gKGVsZW0pIHsKICAg
ICAgICAgICAgICAgIGlmICh0aGlzLm5vZGVUeXBlID09IDEpIHsKICAgICAgICAgICAgICAgICAg
ICB0aGlzLmFwcGVuZENoaWxkKGVsZW0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9
KTsKICAgICAgICB9LAogICAgICAgIHByZXBlbmQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAg
cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCB0cnVlLCB0cnVlLCBmdW5jdGlvbiAoZWxl
bSkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZVR5cGUgPT0gMSkgewogICAgICAgICAg
ICAgICAgICAgIHRoaXMuaW5zZXJ0QmVmb3JlKGVsZW0sIHRoaXMuZmlyc3RDaGlsZCk7CiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0sCiAgICAgICAgYmVmb3JlOiBm
dW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywg
ZmFsc2UsIGZhbHNlLCBmdW5jdGlvbiAoZWxlbSkgewogICAgICAgICAgICAgICAgdGhpcy5wYXJl
bnROb2RlLmluc2VydEJlZm9yZShlbGVtLCB0aGlzKTsKICAgICAgICAgICAgfSk7CiAgICAgICAg
fSwKICAgICAgICBhZnRlcjogZnVuY3Rpb24gKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5k
b21NYW5pcChhcmd1bWVudHMsIGZhbHNlLCB0cnVlLCBmdW5jdGlvbiAoZWxlbSkgewogICAgICAg
ICAgICAgICAgdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlbGVtLCB0aGlzLm5leHRTaWJs
aW5nKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICBlbmQ6IGZ1bmN0aW9uICgp
IHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJldk9iamVjdCB8fCBqUXVlcnkoW10pOwogICAg
ICAgIH0sCiAgICAgICAgZmluZDogZnVuY3Rpb24gKHNlbGVjdG9yKSB7CiAgICAgICAgICAgIHZh
ciBlbGVtcyA9IGpRdWVyeS5tYXAodGhpcywgZnVuY3Rpb24gKGVsZW0pIHsKICAgICAgICAgICAg
ICAgIHJldHVybiBqUXVlcnkuZmluZChzZWxlY3RvciwgZWxlbSk7CiAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soL1teKz5dIFteKz5dLy50ZXN0KHNlbGVj
dG9yKSB8fCBzZWxlY3Rvci5pbmRleE9mKCIuLiIpID4gLTEgPyBqUXVlcnkudW5pcXVlKGVsZW1z
KSA6IGVsZW1zKTsKICAgICAgICB9LAogICAgICAgIGNsb25lOiBmdW5jdGlvbiAoZXZlbnRzKSB7
CiAgICAgICAgICAgIHZhciByZXQgPSB0aGlzLm1hcChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAg
ICAgICBpZiAoalF1ZXJ5LmJyb3dzZXIubXNpZSAmJiAhalF1ZXJ5LmlzWE1MRG9jKHRoaXMpKSB7
CiAgICAgICAgICAgICAgICAgICAgdmFyIGNsb25lID0gdGhpcy5jbG9uZU5vZGUodHJ1ZSksCiAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChjbG9uZSk7
CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5jbGVhbihbY29udGFpbmVyLmlubmVy
SFRNTF0pWzBdOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5jbG9uZU5vZGUodHJ1ZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
IH0pOwogICAgICAgICAgICB2YXIgY2xvbmUgPSByZXQuZmluZCgiKiIpLmFuZFNlbGYoKS5lYWNo
KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzW2V4cGFuZG9dICE9IHVuZGVm
aW5lZCkgewogICAgICAgICAgICAgICAgICAgIHRoaXNbZXhwYW5kb10gPSBudWxsOwogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgaWYgKGV2ZW50cyA9PT0gdHJ1
ZSkgewogICAgICAgICAgICAgICAgdGhpcy5maW5kKCIqIikuYW5kU2VsZigpLmVhY2goZnVuY3Rp
b24gKGkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlVHlwZSA9PSAzKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgdmFyIGV2ZW50cyA9IGpRdWVyeS5kYXRhKHRoaXMsICJldmVudHMiKTsK
ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0eXBlIGluIGV2ZW50cykgewogICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgKHZhciBoYW5kbGVyIGluIGV2ZW50c1t0eXBlXSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LmFkZChjbG9uZVtpXSwgdHlwZSwgZXZl
bnRzW3R5cGVdW2hhbmRsZXJdLCBldmVudHNbdHlwZV1baGFuZGxlcl0uZGF0YSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgIH0sCiAgICAg
ICAgZmlsdGVyOiBmdW5jdGlvbiAoc2VsZWN0b3IpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMu
cHVzaFN0YWNrKGpRdWVyeS5pc0Z1bmN0aW9uKHNlbGVjdG9yKSAmJiBqUXVlcnkuZ3JlcCh0aGlz
LCBmdW5jdGlvbiAoZWxlbSwgaSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdG9yLmNh
bGwoZWxlbSwgaSk7CiAgICAgICAgICAgIH0pIHx8IGpRdWVyeS5tdWx0aUZpbHRlcihzZWxlY3Rv
ciwgdGhpcykpOwogICAgICAgIH0sCiAgICAgICAgbm90OiBmdW5jdGlvbiAoc2VsZWN0b3IpIHsK
ICAgICAgICAgICAgaWYgKHNlbGVjdG9yLmNvbnN0cnVjdG9yID09IFN0cmluZykgewogICAgICAg
ICAgICAgICAgaWYgKGlzU2ltcGxlLnRlc3Qoc2VsZWN0b3IpKSB7CiAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKGpRdWVyeS5tdWx0aUZpbHRlcihzZWxlY3RvciwgdGhp
cywgdHJ1ZSkpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBz
ZWxlY3RvciA9IGpRdWVyeS5tdWx0aUZpbHRlcihzZWxlY3RvciwgdGhpcyk7CiAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGlzQXJyYXlMaWtlID0gc2VsZWN0
b3IubGVuZ3RoICYmIHNlbGVjdG9yW3NlbGVjdG9yLmxlbmd0aCAtIDFdICE9PSB1bmRlZmluZWQg
JiYgIXNlbGVjdG9yLm5vZGVUeXBlOwogICAgICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIoZnVu
Y3Rpb24gKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlID8galF1ZXJ5Lmlu
QXJyYXkodGhpcywgc2VsZWN0b3IpIDwgMCA6IHRoaXMgIT0gc2VsZWN0b3I7CiAgICAgICAgICAg
IH0pOwogICAgICAgIH0sCiAgICAgICAgYWRkOiBmdW5jdGlvbiAoc2VsZWN0b3IpIHsKICAgICAg
ICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKGpRdWVyeS51bmlxdWUoalF1ZXJ5Lm1lcmdlKHRo
aXMuZ2V0KCksIHR5cGVvZiBzZWxlY3RvciA9PSAic3RyaW5nIiA/IGpRdWVyeShzZWxlY3Rvcikg
OiBqUXVlcnkubWFrZUFycmF5KHNlbGVjdG9yKSkpKTsKICAgICAgICB9LAogICAgICAgIGlzOiBm
dW5jdGlvbiAoc2VsZWN0b3IpIHsKICAgICAgICAgICAgcmV0dXJuICEhc2VsZWN0b3IgJiYgalF1
ZXJ5Lm11bHRpRmlsdGVyKHNlbGVjdG9yLCB0aGlzKS5sZW5ndGggPiAwOwogICAgICAgIH0sCiAg
ICAgICAgaGFzQ2xhc3M6IGZ1bmN0aW9uIChzZWxlY3RvcikgewogICAgICAgICAgICByZXR1cm4g
dGhpcy5pcygiLiIgKyBzZWxlY3Rvcik7CiAgICAgICAgfSwKICAgICAgICB2YWw6IGZ1bmN0aW9u
ICh2YWx1ZSkgewogICAgICAgICAgICBpZiAodmFsdWUgPT0gdW5kZWZpbmVkKSB7CiAgICAgICAg
ICAgICAgICBpZiAodGhpcy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbSA9
IHRoaXNbMF07CiAgICAgICAgICAgICAgICAgICAgaWYgKGpRdWVyeS5ub2RlTmFtZShlbGVtLCAi
c2VsZWN0IikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gZWxlbS5zZWxl
Y3RlZEluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gW10sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gZWxlbS5vcHRpb25zLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb25lID0gZWxlbS50eXBlID09ICJzZWxlY3Qtb25lIjsKICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IG9uZSA/IGluZGV4IDogMCwgbWF4ID0gb25lID8gaW5k
ZXggKyAxIDogb3B0aW9ucy5sZW5ndGg7IGkgPCBtYXg7IGkrKykgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIG9wdGlvbiA9IG9wdGlvbnNbaV07CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAob3B0aW9uLnNlbGVjdGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWUgPSBqUXVlcnkuYnJvd3Nlci5tc2llICYmICFvcHRpb24uYXR0cmlidXRlcy52
YWx1ZS5zcGVjaWZpZWQgPyBvcHRpb24udGV4dCA6IG9wdGlvbi52YWx1ZTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAob25lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLnB1c2godmFsdWUpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZXM7CiAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh0aGlzWzBdLnZhbHVlIHx8ICIi
KS5yZXBsYWNlKC9cci9nLCAiIik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgICAgICAgfQogICAg
ICAgICAgICBpZiAodmFsdWUuY29uc3RydWN0b3IgPT0gTnVtYmVyKSB7CiAgICAgICAgICAgICAg
ICB2YWx1ZSArPSAiIjsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNo
KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLm5vZGVUeXBlICE9IDEpIHsK
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICBpZiAodmFsdWUuY29uc3RydWN0b3IgPT0gQXJyYXkgJiYgL3JhZGlvfGNoZWNrYm94Ly50
ZXN0KHRoaXMudHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrZWQgPSAoalF1
ZXJ5LmluQXJyYXkodGhpcy52YWx1ZSwgdmFsdWUpID49IDAgfHwgalF1ZXJ5LmluQXJyYXkodGhp
cy5uYW1lLCB2YWx1ZSkgPj0gMCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgIGlmIChqUXVlcnkubm9kZU5hbWUodGhpcywgInNlbGVjdCIpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciB2YWx1ZXMgPSBqUXVlcnkubWFrZUFycmF5KHZhbHVlKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCJvcHRpb24iLCB0aGlzKS5lYWNoKGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSAoalF1ZXJ5
LmluQXJyYXkodGhpcy52YWx1ZSwgdmFsdWVzKSA+PSAwIHx8IGpRdWVyeS5pbkFycmF5KHRoaXMu
dGV4dCwgdmFsdWVzKSA+PSAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghdmFsdWVzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gLTE7CiAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLnZhbHVlID0gdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICAgIGh0bWw6IGZ1bmN0aW9uICh2YWx1
ZSkgewogICAgICAgICAgICByZXR1cm4gdmFsdWUgPT0gdW5kZWZpbmVkID8gKHRoaXNbMF0gPyB0
aGlzWzBdLmlubmVySFRNTCA6IG51bGwpIDogdGhpcy5lbXB0eSgpLmFwcGVuZCh2YWx1ZSk7CiAg
ICAgICAgfSwKICAgICAgICByZXBsYWNlV2l0aDogZnVuY3Rpb24gKHZhbHVlKSB7CiAgICAgICAg
ICAgIHJldHVybiB0aGlzLmFmdGVyKHZhbHVlKS5yZW1vdmUoKTsKICAgICAgICB9LAogICAgICAg
IGVxOiBmdW5jdGlvbiAoaSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zbGljZShpLCBpICsg
MSk7CiAgICAgICAgfSwKICAgICAgICBzbGljZTogZnVuY3Rpb24gKCkgewogICAgICAgICAgICBy
ZXR1cm4gdGhpcy5wdXNoU3RhY2soQXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KHRoaXMsIGFy
Z3VtZW50cykpOwogICAgICAgIH0sCiAgICAgICAgbWFwOiBmdW5jdGlvbiAoY2FsbGJhY2spIHsK
ICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKGpRdWVyeS5tYXAodGhpcywgZnVuY3Rp
b24gKGVsZW0sIGkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjay5jYWxsKGVsZW0s
IGksIGVsZW0pOwogICAgICAgICAgICB9KSk7CiAgICAgICAgfSwKICAgICAgICBhbmRTZWxmOiBm
dW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZCh0aGlzLnByZXZPYmplY3Qp
OwogICAgICAgIH0sCiAgICAgICAgZGF0YTogZnVuY3Rpb24gKGtleSwgdmFsdWUpIHsKICAgICAg
ICAgICAgdmFyIHBhcnRzID0ga2V5LnNwbGl0KCIuIik7CiAgICAgICAgICAgIHBhcnRzWzFdID0g
cGFydHNbMV0gPyAiLiIgKyBwYXJ0c1sxXSA6ICIiOwogICAgICAgICAgICBpZiAodmFsdWUgPT09
IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLnRyaWdnZXJIYW5k
bGVyKCJnZXREYXRhIiArIHBhcnRzWzFdICsgIiEiLCBbcGFydHNbMF1dKTsKICAgICAgICAgICAg
ICAgIGlmIChkYXRhID09PSB1bmRlZmluZWQgJiYgdGhpcy5sZW5ndGgpIHsKICAgICAgICAgICAg
ICAgICAgICBkYXRhID0galF1ZXJ5LmRhdGEodGhpc1swXSwga2V5KTsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgIHJldHVybiBkYXRhID09PSB1bmRlZmluZWQgJiYgcGFydHNbMV0g
PyB0aGlzLmRhdGEocGFydHNbMF0pIDogZGF0YTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzLnRyaWdnZXIoInNldERhdGEiICsgcGFydHNbMV0gKyAiISIs
IFtwYXJ0c1swXSwgdmFsdWVdKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAg
ICBqUXVlcnkuZGF0YSh0aGlzLCBrZXksIHZhbHVlKTsKICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICByZW1vdmVEYXRhOiBmdW5jdGlvbiAoa2V5KSB7
CiAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICAg
ICAgalF1ZXJ5LnJlbW92ZURhdGEodGhpcywga2V5KTsKICAgICAgICAgICAgfSk7CiAgICAgICAg
fSwKICAgICAgICBkb21NYW5pcDogZnVuY3Rpb24gKGFyZ3MsIHRhYmxlLCByZXZlcnNlLCBjYWxs
YmFjaykgewogICAgICAgICAgICB2YXIgY2xvbmUgPSB0aGlzLmxlbmd0aCA+IDEsCiAgICAgICAg
ICAgICAgICBlbGVtczsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7
CiAgICAgICAgICAgICAgICBpZiAoIWVsZW1zKSB7CiAgICAgICAgICAgICAgICAgICAgZWxlbXMg
PSBqUXVlcnkuY2xlYW4oYXJncywgdGhpcy5vd25lckRvY3VtZW50KTsKICAgICAgICAgICAgICAg
ICAgICBpZiAocmV2ZXJzZSkgewogICAgICAgICAgICAgICAgICAgICAgICBlbGVtcy5yZXZlcnNl
KCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgdmFyIG9iaiA9IHRoaXM7CiAgICAgICAgICAgICAgICBpZiAodGFibGUgJiYgalF1ZXJ5Lm5v
ZGVOYW1lKHRoaXMsICJ0YWJsZSIpICYmIGpRdWVyeS5ub2RlTmFtZShlbGVtc1swXSwgInRyIikp
IHsKICAgICAgICAgICAgICAgICAgICBvYmogPSB0aGlzLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
Ym9keSIpWzBdIHx8IHRoaXMuYXBwZW5kQ2hpbGQodGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInRib2R5IikpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIHNj
cmlwdHMgPSBqUXVlcnkoW10pOwogICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2goZWxlbXMsIGZ1
bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbSA9IGNsb25lID8galF1ZXJ5
KHRoaXMpLmNsb25lKHRydWUpWzBdIDogdGhpczsKICAgICAgICAgICAgICAgICAgICBpZiAoalF1
ZXJ5Lm5vZGVOYW1lKGVsZW0sICJzY3JpcHQiKSkgewogICAgICAgICAgICAgICAgICAgICAgICBz
Y3JpcHRzID0gc2NyaXB0cy5hZGQoZWxlbSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW0ubm9kZVR5cGUgPT0gMSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2NyaXB0cyA9IHNjcmlwdHMuYWRkKGpRdWVyeSgic2NyaXB0
IiwgZWxlbSkucmVtb3ZlKCkpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwob2JqLCBlbGVtKTsKICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHNjcmlwdHMuZWFjaChldmFs
U2NyaXB0KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfTsKICAgIGpRdWVyeS5mbi5p
bml0LnByb3RvdHlwZSA9IGpRdWVyeS5mbjsKCiAgICBmdW5jdGlvbiBldmFsU2NyaXB0KGksIGVs
ZW0pIHsKICAgICAgICBpZiAoZWxlbS5zcmMpIHsKICAgICAgICAgICAgalF1ZXJ5LmFqYXgoewog
ICAgICAgICAgICAgICAgdXJsOiBlbGVtLnNyYywKICAgICAgICAgICAgICAgIGFzeW5jOiBmYWxz
ZSwKICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAic2NyaXB0IgogICAgICAgICAgICB9KTsKICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICBqUXVlcnkuZ2xvYmFsRXZhbChlbGVtLnRleHQgfHwg
ZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVySFRNTCB8fCAiIik7CiAgICAgICAgfQogICAg
ICAgIGlmIChlbGVtLnBhcmVudE5vZGUpIHsKICAgICAgICAgICAgZWxlbS5wYXJlbnROb2RlLnJl
bW92ZUNoaWxkKGVsZW0pOwogICAgICAgIH0KICAgIH0KICAgIGZ1bmN0aW9uIG5vdygpIHsKICAg
ICAgICByZXR1cm4gK25ldyBEYXRlOwogICAgfQogICAgalF1ZXJ5LmV4dGVuZCA9IGpRdWVyeS5m
bi5leHRlbmQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIHRhcmdldCA9IGFyZ3VtZW50c1sw
XSB8fCB7fSwKICAgICAgICAgICAgaSA9IDEsCiAgICAgICAgICAgIGxlbmd0aCA9IGFyZ3VtZW50
cy5sZW5ndGgsCiAgICAgICAgICAgIGRlZXAgPSBmYWxzZSwKICAgICAgICAgICAgb3B0aW9uczsK
ICAgICAgICBpZiAodGFyZ2V0LmNvbnN0cnVjdG9yID09IEJvb2xlYW4pIHsKICAgICAgICAgICAg
ZGVlcCA9IHRhcmdldDsKICAgICAgICAgICAgdGFyZ2V0ID0gYXJndW1lbnRzWzFdIHx8IHt9Owog
ICAgICAgICAgICBpID0gMjsKICAgICAgICB9CiAgICAgICAgaWYgKHR5cGVvZiB0YXJnZXQgIT0g
Im9iamVjdCIgJiYgdHlwZW9mIHRhcmdldCAhPSAiZnVuY3Rpb24iKSB7CiAgICAgICAgICAgIHRh
cmdldCA9IHt9OwogICAgICAgIH0KICAgICAgICBpZiAobGVuZ3RoID09IGkpIHsKICAgICAgICAg
ICAgdGFyZ2V0ID0gdGhpczsKICAgICAgICAgICAgLS1pOwogICAgICAgIH0KICAgICAgICBmb3Ig
KDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmICgob3B0aW9ucyA9IGFyZ3VtZW50
c1tpXSkgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBvcHRpb25z
KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNyYyA9IHRhcmdldFtuYW1lXSwKICAgICAgICAg
ICAgICAgICAgICAgICAgY29weSA9IG9wdGlvbnNbbmFtZV07CiAgICAgICAgICAgICAgICAgICAg
aWYgKHRhcmdldCA9PT0gY29weSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGRlZXAgJiYgY29w
eSAmJiB0eXBlb2YgY29weSA9PSAib2JqZWN0IiAmJiAhY29weS5ub2RlVHlwZSkgewogICAgICAg
ICAgICAgICAgICAgICAgICB0YXJnZXRbbmFtZV0gPSBqUXVlcnkuZXh0ZW5kKGRlZXAsIHNyYyB8
fCAoY29weS5sZW5ndGggIT0gbnVsbCA/IFtdIDoge30pLCBjb3B5KTsKICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29weSAhPT0gdW5kZWZp
bmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRbbmFtZV0gPSBjb3B5Owog
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB0YXJnZXQ7CiAg
ICB9OwogICAgdmFyIGV4cGFuZG8gPSAialF1ZXJ5IiArIG5vdygpLAogICAgICAgIHV1aWQgPSAw
LAogICAgICAgIHdpbmRvd0RhdGEgPSB7fSwKICAgICAgICBleGNsdWRlID0gL3otP2luZGV4fGZv
bnQtP3dlaWdodHxvcGFjaXR5fHpvb218bGluZS0/aGVpZ2h0L2ksCiAgICAgICAgZGVmYXVsdFZp
ZXcgPSBkb2N1bWVudC5kZWZhdWx0VmlldyB8fCB7fTsKICAgIGpRdWVyeS5leHRlbmQoewogICAg
ICAgIG5vQ29uZmxpY3Q6IGZ1bmN0aW9uIChkZWVwKSB7CiAgICAgICAgICAgIHdpbmRvdy4kID0g
XyQ7CiAgICAgICAgICAgIGlmIChkZWVwKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cualF1ZXJ5
ID0gX2pRdWVyeTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4galF1ZXJ5OwogICAg
ICAgIH0sCiAgICAgICAgaXNGdW5jdGlvbjogZnVuY3Rpb24gKGZuKSB7CiAgICAgICAgICAgIHJl
dHVybiAhIWZuICYmIHR5cGVvZiBmbiAhPSAic3RyaW5nIiAmJiAhZm4ubm9kZU5hbWUgJiYgZm4u
Y29uc3RydWN0b3IgIT0gQXJyYXkgJiYgL15bXHNbXT9mdW5jdGlvbi8udGVzdChmbiArICIiKTsK
ICAgICAgICB9LAogICAgICAgIGlzWE1MRG9jOiBmdW5jdGlvbiAoZWxlbSkgewogICAgICAgICAg
ICByZXR1cm4gZWxlbS5kb2N1bWVudEVsZW1lbnQgJiYgIWVsZW0uYm9keSB8fCBlbGVtLnRhZ05h
bWUgJiYgZWxlbS5vd25lckRvY3VtZW50ICYmICFlbGVtLm93bmVyRG9jdW1lbnQuYm9keTsKICAg
ICAgICB9LAogICAgICAgIGdsb2JhbEV2YWw6IGZ1bmN0aW9uIChkYXRhKSB7CiAgICAgICAgICAg
IGRhdGEgPSBqUXVlcnkudHJpbShkYXRhKTsKICAgICAgICAgICAgaWYgKGRhdGEpIHsKICAgICAg
ICAgICAgICAgIHZhciBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQi
KVswXSB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgc2Ny
aXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICAgICAgICAgICAgICBz
Y3JpcHQudHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiOwogICAgICAgICAgICAgICAgaWYgKGpRdWVy
eS5icm93c2VyLm1zaWUpIHsKICAgICAgICAgICAgICAgICAgICBzY3JpcHQudGV4dCA9IGRhdGE7
CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHNjcmlwdC5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShkYXRhKSk7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICBoZWFkLmluc2VydEJlZm9yZShzY3JpcHQsIGhlYWQuZmlyc3RDaGls
ZCk7CiAgICAgICAgICAgICAgICBoZWFkLnJlbW92ZUNoaWxkKHNjcmlwdCk7CiAgICAgICAgICAg
IH0KICAgICAgICB9LAogICAgICAgIG5vZGVOYW1lOiBmdW5jdGlvbiAoZWxlbSwgbmFtZSkgewog
ICAgICAgICAgICByZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvVXBwZXJD
YXNlKCkgPT0gbmFtZS50b1VwcGVyQ2FzZSgpOwogICAgICAgIH0sCiAgICAgICAgY2FjaGU6IHt9
LAogICAgICAgIGRhdGE6IGZ1bmN0aW9uIChlbGVtLCBuYW1lLCBkYXRhKSB7CiAgICAgICAgICAg
IGVsZW0gPSBlbGVtID09IHdpbmRvdyA/IHdpbmRvd0RhdGEgOiBlbGVtOwogICAgICAgICAgICB2
YXIgaWQgPSBlbGVtW2V4cGFuZG9dOwogICAgICAgICAgICBpZiAoIWlkKSB7CiAgICAgICAgICAg
ICAgICBpZCA9IGVsZW1bZXhwYW5kb10gPSArK3V1aWQ7CiAgICAgICAgICAgIH0KICAgICAgICAg
ICAgaWYgKG5hbWUgJiYgIWpRdWVyeS5jYWNoZVtpZF0pIHsKICAgICAgICAgICAgICAgIGpRdWVy
eS5jYWNoZVtpZF0gPSB7fTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZGF0YSAhPT0g
dW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICBqUXVlcnkuY2FjaGVbaWRdW25hbWVdID0gZGF0
YTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbmFtZSA/IGpRdWVyeS5jYWNoZVtp
ZF1bbmFtZV0gOiBpZDsKICAgICAgICB9LAogICAgICAgIHJlbW92ZURhdGE6IGZ1bmN0aW9uIChl
bGVtLCBuYW1lKSB7CiAgICAgICAgICAgIGVsZW0gPSBlbGVtID09IHdpbmRvdyA/IHdpbmRvd0Rh
dGEgOiBlbGVtOwogICAgICAgICAgICB2YXIgaWQgPSBlbGVtW2V4cGFuZG9dOwogICAgICAgICAg
ICBpZiAobmFtZSkgewogICAgICAgICAgICAgICAgaWYgKGpRdWVyeS5jYWNoZVtpZF0pIHsKICAg
ICAgICAgICAgICAgICAgICBkZWxldGUgalF1ZXJ5LmNhY2hlW2lkXVtuYW1lXTsKICAgICAgICAg
ICAgICAgICAgICBuYW1lID0gIiI7CiAgICAgICAgICAgICAgICAgICAgZm9yIChuYW1lIGluIGpR
dWVyeS5jYWNoZVtpZF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICghbmFtZSkgewogICAgICAgICAg
ICAgICAgICAgICAgICBqUXVlcnkucmVtb3ZlRGF0YShlbGVtKTsKICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICB0cnkgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBlbGVtW2V4cGFuZG9dOwogICAgICAg
ICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgIGlmIChlbGVtLnJlbW92
ZUF0dHJpYnV0ZSkgewogICAgICAgICAgICAgICAgICAgICAgICBlbGVtLnJlbW92ZUF0dHJpYnV0
ZShleHBhbmRvKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICBkZWxldGUgalF1ZXJ5LmNhY2hlW2lkXTsKICAgICAgICAgICAgfQogICAgICAg
IH0sCiAgICAgICAgZWFjaDogZnVuY3Rpb24gKG9iamVjdCwgY2FsbGJhY2ssIGFyZ3MpIHsKICAg
ICAgICAgICAgdmFyIG5hbWUsIGkgPSAwLAogICAgICAgICAgICAgICAgbGVuZ3RoID0gb2JqZWN0
Lmxlbmd0aDsKICAgICAgICAgICAgaWYgKGFyZ3MpIHsKICAgICAgICAgICAgICAgIGlmIChsZW5n
dGggPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChuYW1lIGluIG9iamVj
dCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2suYXBwbHkob2JqZWN0W25h
bWVdLCBhcmdzKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKDsgaSA8IGxlbmd0aDsp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrLmFwcGx5KG9iamVjdFtpKytd
LCBhcmdzKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA9
PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKG5hbWUgaW4gb2JqZWN0KSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjay5jYWxsKG9iamVjdFtuYW1lXSwg
bmFtZSwgb2JqZWN0W25hbWVdKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB2
YWx1ZSA9IG9iamVjdFswXTsgaSA8IGxlbmd0aCAmJiBjYWxsYmFjay5jYWxsKHZhbHVlLCBpLCB2
YWx1ZSkgIT09IGZhbHNlOyB2YWx1ZSA9IG9iamVjdFsrK2ldKSB7fQogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgICAgfSwKICAg
ICAgICBwcm9wOiBmdW5jdGlvbiAoZWxlbSwgdmFsdWUsIHR5cGUsIGksIG5hbWUpIHsKICAgICAg
ICAgICAgaWYgKGpRdWVyeS5pc0Z1bmN0aW9uKHZhbHVlKSkgewogICAgICAgICAgICAgICAgdmFs
dWUgPSB2YWx1ZS5jYWxsKGVsZW0sIGkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVy
biB2YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvciA9PSBOdW1iZXIgJiYgdHlwZSA9PSAiY3VyQ1NT
IiAmJiAhZXhjbHVkZS50ZXN0KG5hbWUpID8gdmFsdWUgKyAicHgiIDogdmFsdWU7CiAgICAgICAg
fSwKICAgICAgICBjbGFzc05hbWU6IHsKICAgICAgICAgICAgYWRkOiBmdW5jdGlvbiAoZWxlbSwg
Y2xhc3NOYW1lcykgewogICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2goKGNsYXNzTmFtZXMgfHwg
IiIpLnNwbGl0KC9ccysvKSwgZnVuY3Rpb24gKGksIGNsYXNzTmFtZSkgewogICAgICAgICAgICAg
ICAgICAgIGlmIChlbGVtLm5vZGVUeXBlID09IDEgJiYgIWpRdWVyeS5jbGFzc05hbWUuaGFzKGVs
ZW0uY2xhc3NOYW1lLCBjbGFzc05hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0u
Y2xhc3NOYW1lICs9IChlbGVtLmNsYXNzTmFtZSA/ICIgIiA6ICIiKSArIGNsYXNzTmFtZTsKICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSwKICAg
ICAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiAoZWxlbSwgY2xhc3NOYW1lcykgewogICAgICAgICAg
ICAgICAgaWYgKGVsZW0ubm9kZVR5cGUgPT0gMSkgewogICAgICAgICAgICAgICAgICAgIGVsZW0u
Y2xhc3NOYW1lID0gY2xhc3NOYW1lcyAhPSB1bmRlZmluZWQgPyBqUXVlcnkuZ3JlcChlbGVtLmNs
YXNzTmFtZS5zcGxpdCgvXHMrLyksIGZ1bmN0aW9uIChjbGFzc05hbWUpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuICFqUXVlcnkuY2xhc3NOYW1lLmhhcyhjbGFzc05hbWVzLCBjbGFz
c05hbWUpOwogICAgICAgICAgICAgICAgICAgIH0pLmpvaW4oIiAiKSA6ICIiOwogICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBoYXM6IGZ1bmN0aW9uIChlbGVtLCBj
bGFzc05hbWUpIHsKICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkuaW5BcnJheShjbGFzc05h
bWUsIChlbGVtLmNsYXNzTmFtZSB8fCBlbGVtKS50b1N0cmluZygpLnNwbGl0KC9ccysvKSkgPiAt
MTsKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgc3dhcDogZnVuY3Rpb24gKGVsZW0s
IG9wdGlvbnMsIGNhbGxiYWNrKSB7CiAgICAgICAgICAgIHZhciBvbGQgPSB7fTsKICAgICAgICAg
ICAgZm9yICh2YXIgbmFtZSBpbiBvcHRpb25zKSB7CiAgICAgICAgICAgICAgICBvbGRbbmFtZV0g
PSBlbGVtLnN0eWxlW25hbWVdOwogICAgICAgICAgICAgICAgZWxlbS5zdHlsZVtuYW1lXSA9IG9w
dGlvbnNbbmFtZV07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2FsbGJhY2suY2FsbChlbGVt
KTsKICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBvcHRpb25zKSB7CiAgICAgICAgICAgICAg
ICBlbGVtLnN0eWxlW25hbWVdID0gb2xkW25hbWVdOwogICAgICAgICAgICB9CiAgICAgICAgfSwK
ICAgICAgICBjc3M6IGZ1bmN0aW9uIChlbGVtLCBuYW1lLCBmb3JjZSkgewogICAgICAgICAgICBp
ZiAobmFtZSA9PSAid2lkdGgiIHx8IG5hbWUgPT0gImhlaWdodCIpIHsKICAgICAgICAgICAgICAg
IHZhciB2YWwsIHByb3BzID0gewogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAiYWJzb2x1
dGUiLAogICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6ICJoaWRkZW4iLAogICAgICAgICAg
ICAgICAgICAgIGRpc3BsYXk6ICJibG9jayIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAg
ICAgICAgICAgd2hpY2ggPSBuYW1lID09ICJ3aWR0aCIgPyBbIkxlZnQiLCAiUmlnaHQiXSA6IFsi
VG9wIiwgIkJvdHRvbSJdOwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGdldFdIKCkgewogICAg
ICAgICAgICAgICAgICAgIHZhbCA9IG5hbWUgPT0gIndpZHRoIiA/IGVsZW0ub2Zmc2V0V2lkdGgg
OiBlbGVtLm9mZnNldEhlaWdodDsKICAgICAgICAgICAgICAgICAgICB2YXIgcGFkZGluZyA9IDAs
CiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlciA9IDA7CiAgICAgICAgICAgICAgICAgICAg
alF1ZXJ5LmVhY2god2hpY2gsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
cGFkZGluZyArPSBwYXJzZUZsb2F0KGpRdWVyeS5jdXJDU1MoZWxlbSwgInBhZGRpbmciICsgdGhp
cywgdHJ1ZSkpIHx8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlciArPSBwYXJzZUZs
b2F0KGpRdWVyeS5jdXJDU1MoZWxlbSwgImJvcmRlciIgKyB0aGlzICsgIldpZHRoIiwgdHJ1ZSkp
IHx8IDA7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgdmFsIC09
IE1hdGgucm91bmQocGFkZGluZyArIGJvcmRlcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICBpZiAoalF1ZXJ5KGVsZW0pLmlzKCI6dmlzaWJsZSIpKSB7CiAgICAgICAgICAgICAg
ICAgICAgZ2V0V0goKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgalF1ZXJ5LnN3YXAoZWxlbSwgcHJvcHMsIGdldFdIKTsKICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgIHJldHVybiBNYXRoLm1heCgwLCB2YWwpOwogICAgICAgICAgICB9CiAgICAg
ICAgICAgIHJldHVybiBqUXVlcnkuY3VyQ1NTKGVsZW0sIG5hbWUsIGZvcmNlKTsKICAgICAgICB9
LAogICAgICAgIGN1ckNTUzogZnVuY3Rpb24gKGVsZW0sIG5hbWUsIGZvcmNlKSB7CiAgICAgICAg
ICAgIHZhciByZXQsIHN0eWxlID0gZWxlbS5zdHlsZTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIGNv
bG9yKGVsZW0pIHsKICAgICAgICAgICAgICAgIGlmICghalF1ZXJ5LmJyb3dzZXIuc2FmYXJpKSB7
CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgdmFyIHJldCA9IGRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWxlbSwg
bnVsbCk7CiAgICAgICAgICAgICAgICByZXR1cm4gIXJldCB8fCByZXQuZ2V0UHJvcGVydHlWYWx1
ZSgiY29sb3IiKSA9PSAiIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAobmFtZSA9PSAi
b3BhY2l0eSIgJiYgalF1ZXJ5LmJyb3dzZXIubXNpZSkgewogICAgICAgICAgICAgICAgcmV0ID0g
alF1ZXJ5LmF0dHIoc3R5bGUsICJvcGFjaXR5Iik7CiAgICAgICAgICAgICAgICByZXR1cm4gcmV0
ID09ICIiID8gIjEiIDogcmV0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChqUXVlcnku
YnJvd3Nlci5vcGVyYSAmJiBuYW1lID09ICJkaXNwbGF5IikgewogICAgICAgICAgICAgICAgdmFy
IHNhdmUgPSBzdHlsZS5vdXRsaW5lOwogICAgICAgICAgICAgICAgc3R5bGUub3V0bGluZSA9ICIw
IHNvbGlkIGJsYWNrIjsKICAgICAgICAgICAgICAgIHN0eWxlLm91dGxpbmUgPSBzYXZlOwogICAg
ICAgICAgICB9CiAgICAgICAgICAgIGlmIChuYW1lLm1hdGNoKC9mbG9hdC9pKSkgewogICAgICAg
ICAgICAgICAgbmFtZSA9IHN0eWxlRmxvYXQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYg
KCFmb3JjZSAmJiBzdHlsZSAmJiBzdHlsZVtuYW1lXSkgewogICAgICAgICAgICAgICAgcmV0ID0g
c3R5bGVbbmFtZV07CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoZGVm
YXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSkgewogICAgICAgICAgICAgICAgICAgIGlmIChuYW1l
Lm1hdGNoKC9mbG9hdC9pKSkgewogICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gImZsb2F0
IjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUu
cmVwbGFjZSgvKFtBLVpdKS9nLCAiLSQxIikudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgICAg
ICAgICB2YXIgY29tcHV0ZWRTdHlsZSA9IGRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWxl
bSwgbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXB1dGVkU3R5bGUgJiYgIWNvbG9y
KGVsZW0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IGNvbXB1dGVkU3R5bGUuZ2V0
UHJvcGVydHlWYWx1ZShuYW1lKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgc3dhcCA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhY2sgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlbGVtLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciAoOyBhICYmIGNvbG9yKGEpOyBhID0gYS5wYXJlbnROb2RlKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGFjay51bnNoaWZ0KGEpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBpIDwgc3RhY2subGVuZ3RoOyBpKyspIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2xvcihzdGFja1tpXSkpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzd2FwW2ldID0gc3RhY2tbaV0uc3R5bGUuZGlzcGxheTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja1tpXS5zdHlsZS5kaXNwbGF5ID0g
ImJsb2NrIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBuYW1lID09ICJkaXNwbGF5IiAm
JiBzd2FwW3N0YWNrLmxlbmd0aCAtIDFdICE9IG51bGwgPyAibm9uZSIgOiAoY29tcHV0ZWRTdHls
ZSAmJiBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUobmFtZSkpIHx8ICIiOwogICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc3dhcC5sZW5ndGg7IGkrKykgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN3YXBbaV0gIT0gbnVsbCkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YWNrW2ldLnN0eWxlLmRpc3BsYXkgPSBzd2FwW2ldOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChuYW1lID09ICJvcGFj
aXR5IiAmJiByZXQgPT0gIiIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gIjEiOwog
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgaWYgKGVsZW0uY3VycmVudFN0eWxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBjYW1lbENhc2UgPSBuYW1lLnJlcGxhY2UoL1wtKFx3KS9nLCBmdW5jdGlvbiAoYWxsLCBs
ZXR0ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsZXR0ZXIudG9VcHBl
ckNhc2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHJldCA9IGVsZW0uY3VycmVudFN0eWxlW25hbWVdIHx8IGVsZW0uY3VycmVudFN0eWxlW2Nh
bWVsQ2FzZV07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghL15cZCsocHgpPyQvaS50ZXN0
KHJldCkgJiYgL15cZC8udGVzdChyZXQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YXIgbGVmdCA9IHN0eWxlLmxlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnNM
ZWZ0ID0gZWxlbS5ydW50aW1lU3R5bGUubGVmdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVsZW0ucnVudGltZVN0eWxlLmxlZnQgPSBlbGVtLmN1cnJlbnRTdHlsZS5sZWZ0OwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3R5bGUubGVmdCA9IHJldCB8fCAwOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0ID0gc3R5bGUucGl4ZWxMZWZ0ICsgInB4IjsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0eWxlLmxlZnQgPSBsZWZ0OwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWxlbS5ydW50aW1lU3R5bGUubGVmdCA9IHJzTGVmdDsKICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgfQogICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgIH0sCiAgICAgICAgY2xlYW46IGZ1
bmN0aW9uIChlbGVtcywgY29udGV4dCkgewogICAgICAgICAgICB2YXIgcmV0ID0gW107CiAgICAg
ICAgICAgIGNvbnRleHQgPSBjb250ZXh0IHx8IGRvY3VtZW50OwogICAgICAgICAgICBpZiAodHlw
ZW9mIGNvbnRleHQuY3JlYXRlRWxlbWVudCA9PSAidW5kZWZpbmVkIikgewogICAgICAgICAgICAg
ICAgY29udGV4dCA9IGNvbnRleHQub3duZXJEb2N1bWVudCB8fCBjb250ZXh0WzBdICYmIGNvbnRl
eHRbMF0ub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudDsKICAgICAgICAgICAgfQogICAgICAgICAg
ICBqUXVlcnkuZWFjaChlbGVtcywgZnVuY3Rpb24gKGksIGVsZW0pIHsKICAgICAgICAgICAgICAg
IGlmICghZWxlbSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgIGlmIChlbGVtLmNvbnN0cnVjdG9yID09IE51bWJlcikgewogICAg
ICAgICAgICAgICAgICAgIGVsZW0gKz0gIiI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICBpZiAodHlwZW9mIGVsZW0gPT0gInN0cmluZyIpIHsKICAgICAgICAgICAgICAgICAgICBl
bGVtID0gZWxlbS5yZXBsYWNlKC8oPChcdyspW14+XSo/KVwvPi9nLCBmdW5jdGlvbiAoYWxsLCBm
cm9udCwgdGFnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0YWcubWF0Y2goL14o
YWJicnxicnxjb2x8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbXxocnxhcmVhfGVtYmVkKSQvaSkg
PyBhbGwgOiBmcm9udCArICI+PC8iICsgdGFnICsgIj4iOwogICAgICAgICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgICAgICAgIHZhciB0YWdzID0galF1ZXJ5LnRyaW0oZWxlbSkudG9Mb3dl
ckNhc2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgZGl2ID0gY29udGV4dC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgd3JhcCA9ICF0YWdzLmluZGV4T2Yo
IjxvcHQiKSAmJiBbMSwgIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCAiPC9zZWxlY3Q+
Il0gfHwgIXRhZ3MuaW5kZXhPZigiPGxlZyIpICYmIFsxLCAiPGZpZWxkc2V0PiIsICI8L2ZpZWxk
c2V0PiJdIHx8IHRhZ3MubWF0Y2goL148KHRoZWFkfHRib2R5fHRmb290fGNvbGd8Y2FwKS8pICYm
IFsxLCAiPHRhYmxlPiIsICI8L3RhYmxlPiJdIHx8ICF0YWdzLmluZGV4T2YoIjx0ciIpICYmIFsy
LCAiPHRhYmxlPjx0Ym9keT4iLCAiPC90Ym9keT48L3RhYmxlPiJdIHx8ICghdGFncy5pbmRleE9m
KCI8dGQiKSB8fCAhdGFncy5pbmRleE9mKCI8dGgiKSkgJiYgWzMsICI8dGFibGU+PHRib2R5Pjx0
cj4iLCAiPC90cj48L3Rib2R5PjwvdGFibGU+Il0gfHwgIXRhZ3MuaW5kZXhPZigiPGNvbCIpICYm
IFsyLCAiPHRhYmxlPjx0Ym9keT48L3Rib2R5Pjxjb2xncm91cD4iLCAiPC9jb2xncm91cD48L3Rh
YmxlPiJdIHx8IGpRdWVyeS5icm93c2VyLm1zaWUgJiYgWzEsICJkaXY8ZGl2PiIsICI8L2Rpdj4i
XSB8fCBbMCwgIiIsICIiXTsKICAgICAgICAgICAgICAgICAgICBkaXYuaW5uZXJIVE1MID0gd3Jh
cFsxXSArIGVsZW0gKyB3cmFwWzJdOwogICAgICAgICAgICAgICAgICAgIHdoaWxlICh3cmFwWzBd
LS0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGl2ID0gZGl2Lmxhc3RDaGlsZDsKICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGpRdWVyeS5icm93c2VyLm1z
aWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRib2R5ID0gIXRhZ3MuaW5kZXhPZigi
PHRhYmxlIikgJiYgdGFncy5pbmRleE9mKCI8dGJvZHkiKSA8IDAgPyBkaXYuZmlyc3RDaGlsZCAm
JiBkaXYuZmlyc3RDaGlsZC5jaGlsZE5vZGVzIDogd3JhcFsxXSA9PSAiPHRhYmxlPiIgJiYgdGFn
cy5pbmRleE9mKCI8dGJvZHkiKSA8IDAgPyBkaXYuY2hpbGROb2RlcyA6IFtdOwogICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgKHZhciBqID0gdGJvZHkubGVuZ3RoIC0gMTsgaiA+PSAwOyAtLWop
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqUXVlcnkubm9kZU5hbWUodGJvZHlb
al0sICJ0Ym9keSIpICYmICF0Ym9keVtqXS5jaGlsZE5vZGVzLmxlbmd0aCkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRib2R5W2pdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGJv
ZHlbal0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvXlxzLy50ZXN0KGVsZW0pKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkaXYuaW5zZXJ0QmVmb3JlKGNvbnRleHQuY3JlYXRl
VGV4dE5vZGUoZWxlbS5tYXRjaCgvXlxzKi8pWzBdKSwgZGl2LmZpcnN0Q2hpbGQpOwogICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgIGVsZW0gPSBqUXVlcnkubWFrZUFycmF5KGRpdi5jaGlsZE5vZGVzKTsKICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgIGlmIChlbGVtLmxlbmd0aCA9PT0gMCAmJiAoIWpRdWVyeS5u
b2RlTmFtZShlbGVtLCAiZm9ybSIpICYmICFqUXVlcnkubm9kZU5hbWUoZWxlbSwgInNlbGVjdCIp
KSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgIGlmIChlbGVtWzBdID09IHVuZGVmaW5lZCB8fCBqUXVlcnkubm9kZU5hbWUoZWxl
bSwgImZvcm0iKSB8fCBlbGVtLm9wdGlvbnMpIHsKICAgICAgICAgICAgICAgICAgICByZXQucHVz
aChlbGVtKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0
ID0galF1ZXJ5Lm1lcmdlKHJldCwgZWxlbSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
IH0pOwogICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgIH0sCiAgICAgICAgYXR0cjogZnVu
Y3Rpb24gKGVsZW0sIG5hbWUsIHZhbHVlKSB7CiAgICAgICAgICAgIGlmICghZWxlbSB8fCBlbGVt
Lm5vZGVUeXBlID09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PSA4KSB7CiAgICAgICAgICAgICAgICBy
ZXR1cm4gdW5kZWZpbmVkOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBub3R4bWwgPSAh
alF1ZXJ5LmlzWE1MRG9jKGVsZW0pLAogICAgICAgICAgICAgICAgc2V0ID0gdmFsdWUgIT09IHVu
ZGVmaW5lZCwKICAgICAgICAgICAgICAgIG1zaWUgPSBqUXVlcnkuYnJvd3Nlci5tc2llOwogICAg
ICAgICAgICBuYW1lID0gbm90eG1sICYmIGpRdWVyeS5wcm9wc1tuYW1lXSB8fCBuYW1lOwogICAg
ICAgICAgICBpZiAoZWxlbS50YWdOYW1lKSB7CiAgICAgICAgICAgICAgICB2YXIgc3BlY2lhbCA9
IC9ocmVmfHNyY3xzdHlsZS8udGVzdChuYW1lKTsKICAgICAgICAgICAgICAgIGlmIChuYW1lID09
ICJzZWxlY3RlZCIgJiYgalF1ZXJ5LmJyb3dzZXIuc2FmYXJpKSB7CiAgICAgICAgICAgICAgICAg
ICAgZWxlbS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICBpZiAobmFtZSBpbiBlbGVtICYmIG5vdHhtbCAmJiAhc3BlY2lhbCkgewogICAg
ICAgICAgICAgICAgICAgIGlmIChzZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5h
bWUgPT0gInR5cGUiICYmIGpRdWVyeS5ub2RlTmFtZShlbGVtLCAiaW5wdXQiKSAmJiBlbGVtLnBh
cmVudE5vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93ICJ0eXBlIHByb3Bl
cnR5IGNhbid0IGJlIGNoYW5nZWQiOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgIGVsZW1bbmFtZV0gPSB2YWx1ZTsKICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgaWYgKGpRdWVyeS5ub2RlTmFtZShlbGVtLCAiZm9ybSIpICYm
IGVsZW0uZ2V0QXR0cmlidXRlTm9kZShuYW1lKSkgewogICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGVOb2RlKG5hbWUpLm5vZGVWYWx1ZTsKICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1bbmFtZV07CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAobXNpZSAmJiBub3R4bWwgJiYgbmFtZSA9PSAi
c3R5bGUiKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5hdHRyKGVsZW0uc3R5
bGUsICJjc3NUZXh0IiwgdmFsdWUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
aWYgKHNldCkgewogICAgICAgICAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKG5hbWUsICIi
ICsgdmFsdWUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGF0dHIgPSBt
c2llICYmIG5vdHhtbCAmJiBzcGVjaWFsID8gZWxlbS5nZXRBdHRyaWJ1dGUobmFtZSwgMikgOiBl
bGVtLmdldEF0dHJpYnV0ZShuYW1lKTsKICAgICAgICAgICAgICAgIHJldHVybiBhdHRyID09PSBu
dWxsID8gdW5kZWZpbmVkIDogYXR0cjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAobXNp
ZSAmJiBuYW1lID09ICJvcGFjaXR5IikgewogICAgICAgICAgICAgICAgaWYgKHNldCkgewogICAg
ICAgICAgICAgICAgICAgIGVsZW0uem9vbSA9IDE7CiAgICAgICAgICAgICAgICAgICAgZWxlbS5m
aWx0ZXIgPSAoZWxlbS5maWx0ZXIgfHwgIiIpLnJlcGxhY2UoL2FscGhhXChbXildKlwpLywgIiIp
ICsgKHBhcnNlSW50KHZhbHVlKSArICIiID09ICJOYU4iID8gIiIgOiAiYWxwaGEob3BhY2l0eT0i
ICsgdmFsdWUgKiAxMDAgKyAiKSIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
cmV0dXJuIGVsZW0uZmlsdGVyICYmIGVsZW0uZmlsdGVyLmluZGV4T2YoIm9wYWNpdHk9IikgPj0g
MCA/IChwYXJzZUZsb2F0KGVsZW0uZmlsdGVyLm1hdGNoKC9vcGFjaXR5PShbXildKikvKVsxXSkg
LyAxMDApICsgIiIgOiAiIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBuYW1lID0gbmFtZS5y
ZXBsYWNlKC8tKFthLXpdKS9pZywgZnVuY3Rpb24gKGFsbCwgbGV0dGVyKSB7CiAgICAgICAgICAg
ICAgICByZXR1cm4gbGV0dGVyLnRvVXBwZXJDYXNlKCk7CiAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICBpZiAoc2V0KSB7CiAgICAgICAgICAgICAgICBlbGVtW25hbWVdID0gdmFsdWU7CiAgICAg
ICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGVsZW1bbmFtZV07CiAgICAgICAgfSwKICAgICAg
ICB0cmltOiBmdW5jdGlvbiAodGV4dCkgewogICAgICAgICAgICByZXR1cm4gKHRleHQgfHwgIiIp
LnJlcGxhY2UoL15ccyt8XHMrJC9nLCAiIik7CiAgICAgICAgfSwKICAgICAgICBtYWtlQXJyYXk6
IGZ1bmN0aW9uIChhcnJheSkgewogICAgICAgICAgICB2YXIgcmV0ID0gW107CiAgICAgICAgICAg
IGlmIChhcnJheSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICB2YXIgaSA9IGFycmF5Lmxlbmd0
aDsKICAgICAgICAgICAgICAgIGlmIChpID09IG51bGwgfHwgYXJyYXkuc3BsaXQgfHwgYXJyYXku
c2V0SW50ZXJ2YWwgfHwgYXJyYXkuY2FsbCkgewogICAgICAgICAgICAgICAgICAgIHJldFswXSA9
IGFycmF5OwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB3aGls
ZSAoaSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXRbLS1pXSA9IGFycmF5W2ldOwogICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAg
ICAgICByZXR1cm4gcmV0OwogICAgICAgIH0sCiAgICAgICAgaW5BcnJheTogZnVuY3Rpb24gKGVs
ZW0sIGFycmF5KSB7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBhcnJheS5s
ZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgaWYgKGFycmF5W2ldID09
PSBlbGVtKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgIH0sCiAgICAgICAg
bWVyZ2U6IGZ1bmN0aW9uIChmaXJzdCwgc2Vjb25kKSB7CiAgICAgICAgICAgIHZhciBpID0gMCwK
ICAgICAgICAgICAgICAgIGVsZW0sIHBvcyA9IGZpcnN0Lmxlbmd0aDsKICAgICAgICAgICAgaWYg
KGpRdWVyeS5icm93c2VyLm1zaWUpIHsKICAgICAgICAgICAgICAgIHdoaWxlIChlbGVtID0gc2Vj
b25kW2krK10pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbS5ub2RlVHlwZSAhPSA4KSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0W3BvcysrXSA9IGVsZW07CiAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgd2hpbGUgKGVsZW0gPSBzZWNvbmRbaSsrXSkgewogICAgICAgICAgICAgICAgICAg
IGZpcnN0W3BvcysrXSA9IGVsZW07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAg
ICAgICAgICAgcmV0dXJuIGZpcnN0OwogICAgICAgIH0sCiAgICAgICAgdW5pcXVlOiBmdW5jdGlv
biAoYXJyYXkpIHsKICAgICAgICAgICAgdmFyIHJldCA9IFtdLAogICAgICAgICAgICAgICAgZG9u
ZSA9IHt9OwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAs
IGxlbmd0aCA9IGFycmF5Lmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAg
ICAgICAgdmFyIGlkID0galF1ZXJ5LmRhdGEoYXJyYXlbaV0pOwogICAgICAgICAgICAgICAgICAg
IGlmICghZG9uZVtpZF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgZG9uZVtpZF0gPSB0cnVl
OwogICAgICAgICAgICAgICAgICAgICAgICByZXQucHVzaChhcnJheVtpXSk7CiAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAg
ICAgICAgICAgICAgICByZXQgPSBhcnJheTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1
cm4gcmV0OwogICAgICAgIH0sCiAgICAgICAgZ3JlcDogZnVuY3Rpb24gKGVsZW1zLCBjYWxsYmFj
aywgaW52KSB7CiAgICAgICAgICAgIHZhciByZXQgPSBbXTsKICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDAsIGxlbmd0aCA9IGVsZW1zLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAg
ICAgICAgICBpZiAoIWludiAhPSAhY2FsbGJhY2soZWxlbXNbaV0sIGkpKSB7CiAgICAgICAgICAg
ICAgICAgICAgcmV0LnB1c2goZWxlbXNbaV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICB9CiAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICAgfSwKICAgICAgICBtYXA6IGZ1bmN0
aW9uIChlbGVtcywgY2FsbGJhY2spIHsKICAgICAgICAgICAgdmFyIHJldCA9IFtdOwogICAgICAg
ICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZWxlbXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBp
KyspIHsKICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGNhbGxiYWNrKGVsZW1zW2ldLCBpKTsK
ICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAg
cmV0W3JldC5sZW5ndGhdID0gdmFsdWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0K
ICAgICAgICAgICAgcmV0dXJuIHJldC5jb25jYXQuYXBwbHkoW10sIHJldCk7CiAgICAgICAgfQog
ICAgfSk7CiAgICB2YXIgdXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2Fz
ZSgpOwogICAgalF1ZXJ5LmJyb3dzZXIgPSB7CiAgICAgICAgdmVyc2lvbjogKHVzZXJBZ2VudC5t
YXRjaCgvLisoPzpydnxpdHxyYXxpZSlbXC86IF0oW1xkLl0rKS8pIHx8IFtdKVsxXSwKICAgICAg
ICBzYWZhcmk6IC93ZWJraXQvLnRlc3QodXNlckFnZW50KSwKICAgICAgICBvcGVyYTogL29wZXJh
Ly50ZXN0KHVzZXJBZ2VudCksCiAgICAgICAgbXNpZTogL21zaWUvLnRlc3QodXNlckFnZW50KSAm
JiAhL29wZXJhLy50ZXN0KHVzZXJBZ2VudCksCiAgICAgICAgbW96aWxsYTogL21vemlsbGEvLnRl
c3QodXNlckFnZW50KSAmJiAhLyhjb21wYXRpYmxlfHdlYmtpdCkvLnRlc3QodXNlckFnZW50KQog
ICAgfTsKICAgIHZhciBzdHlsZUZsb2F0ID0galF1ZXJ5LmJyb3dzZXIubXNpZSA/ICJzdHlsZUZs
b2F0IiA6ICJjc3NGbG9hdCI7CiAgICBqUXVlcnkuZXh0ZW5kKHsKICAgICAgICBib3hNb2RlbDog
IWpRdWVyeS5icm93c2VyLm1zaWUgfHwgZG9jdW1lbnQuY29tcGF0TW9kZSA9PSAiQ1NTMUNvbXBh
dCIsCiAgICAgICAgcHJvcHM6IHsKICAgICAgICAgICAgImZvciI6ICJodG1sRm9yIiwKICAgICAg
ICAgICAgImNsYXNzIjogImNsYXNzTmFtZSIsCiAgICAgICAgICAgICJmbG9hdCI6IHN0eWxlRmxv
YXQsCiAgICAgICAgICAgIGNzc0Zsb2F0OiBzdHlsZUZsb2F0LAogICAgICAgICAgICBzdHlsZUZs
b2F0OiBzdHlsZUZsb2F0LAogICAgICAgICAgICByZWFkb25seTogInJlYWRPbmx5IiwKICAgICAg
ICAgICAgbWF4bGVuZ3RoOiAibWF4TGVuZ3RoIiwKICAgICAgICAgICAgY2VsbHNwYWNpbmc6ICJj
ZWxsU3BhY2luZyIKICAgICAgICB9CiAgICB9KTsKICAgIGpRdWVyeS5lYWNoKHsKICAgICAgICBw
YXJlbnQ6IGZ1bmN0aW9uIChlbGVtKSB7CiAgICAgICAgICAgIHJldHVybiBlbGVtLnBhcmVudE5v
ZGU7CiAgICAgICAgfSwKICAgICAgICBwYXJlbnRzOiBmdW5jdGlvbiAoZWxlbSkgewogICAgICAg
ICAgICByZXR1cm4galF1ZXJ5LmRpcihlbGVtLCAicGFyZW50Tm9kZSIpOwogICAgICAgIH0sCiAg
ICAgICAgbmV4dDogZnVuY3Rpb24gKGVsZW0pIHsKICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5u
dGgoZWxlbSwgMiwgIm5leHRTaWJsaW5nIik7CiAgICAgICAgfSwKICAgICAgICBwcmV2OiBmdW5j
dGlvbiAoZWxlbSkgewogICAgICAgICAgICByZXR1cm4galF1ZXJ5Lm50aChlbGVtLCAyLCAicHJl
dmlvdXNTaWJsaW5nIik7CiAgICAgICAgfSwKICAgICAgICBuZXh0QWxsOiBmdW5jdGlvbiAoZWxl
bSkgewogICAgICAgICAgICByZXR1cm4galF1ZXJ5LmRpcihlbGVtLCAibmV4dFNpYmxpbmciKTsK
ICAgICAgICB9LAogICAgICAgIHByZXZBbGw6IGZ1bmN0aW9uIChlbGVtKSB7CiAgICAgICAgICAg
IHJldHVybiBqUXVlcnkuZGlyKGVsZW0sICJwcmV2aW91c1NpYmxpbmciKTsKICAgICAgICB9LAog
ICAgICAgIHNpYmxpbmdzOiBmdW5jdGlvbiAoZWxlbSkgewogICAgICAgICAgICByZXR1cm4galF1
ZXJ5LnNpYmxpbmcoZWxlbS5wYXJlbnROb2RlLmZpcnN0Q2hpbGQsIGVsZW0pOwogICAgICAgIH0s
CiAgICAgICAgY2hpbGRyZW46IGZ1bmN0aW9uIChlbGVtKSB7CiAgICAgICAgICAgIHJldHVybiBq
UXVlcnkuc2libGluZyhlbGVtLmZpcnN0Q2hpbGQpOwogICAgICAgIH0sCiAgICAgICAgY29udGVu
dHM6IGZ1bmN0aW9uIChlbGVtKSB7CiAgICAgICAgICAgIHJldHVybiBqUXVlcnkubm9kZU5hbWUo
ZWxlbSwgImlmcmFtZSIpID8gZWxlbS5jb250ZW50RG9jdW1lbnQgfHwgZWxlbS5jb250ZW50V2lu
ZG93LmRvY3VtZW50IDogalF1ZXJ5Lm1ha2VBcnJheShlbGVtLmNoaWxkTm9kZXMpOwogICAgICAg
IH0KICAgIH0sIGZ1bmN0aW9uIChuYW1lLCBmbikgewogICAgICAgIGpRdWVyeS5mbltuYW1lXSA9
IGZ1bmN0aW9uIChzZWxlY3RvcikgewogICAgICAgICAgICB2YXIgcmV0ID0galF1ZXJ5Lm1hcCh0
aGlzLCBmbik7CiAgICAgICAgICAgIGlmIChzZWxlY3RvciAmJiB0eXBlb2Ygc2VsZWN0b3IgPT0g
InN0cmluZyIpIHsKICAgICAgICAgICAgICAgIHJldCA9IGpRdWVyeS5tdWx0aUZpbHRlcihzZWxl
Y3RvciwgcmV0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3Rh
Y2soalF1ZXJ5LnVuaXF1ZShyZXQpKTsKICAgICAgICB9OwogICAgfSk7CiAgICBqUXVlcnkuZWFj
aCh7CiAgICAgICAgYXBwZW5kVG86ICJhcHBlbmQiLAogICAgICAgIHByZXBlbmRUbzogInByZXBl
bmQiLAogICAgICAgIGluc2VydEJlZm9yZTogImJlZm9yZSIsCiAgICAgICAgaW5zZXJ0QWZ0ZXI6
ICJhZnRlciIsCiAgICAgICAgcmVwbGFjZUFsbDogInJlcGxhY2VXaXRoIgogICAgfSwgZnVuY3Rp
b24gKG5hbWUsIG9yaWdpbmFsKSB7CiAgICAgICAgalF1ZXJ5LmZuW25hbWVdID0gZnVuY3Rpb24g
KCkgewogICAgICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50czsKICAgICAgICAgICAgcmV0dXJu
IHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwg
bGVuZ3RoID0gYXJncy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAg
ICAgIGpRdWVyeShhcmdzW2ldKVtvcmlnaW5hbF0odGhpcyk7CiAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgIH0pOwogICAgICAgIH07CiAgICB9KTsKICAgIGpRdWVyeS5lYWNoKHsKICAgICAg
ICByZW1vdmVBdHRyOiBmdW5jdGlvbiAobmFtZSkgewogICAgICAgICAgICBqUXVlcnkuYXR0cih0
aGlzLCBuYW1lLCAiIik7CiAgICAgICAgICAgIGlmICh0aGlzLm5vZGVUeXBlID09IDEpIHsKICAg
ICAgICAgICAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpOwogICAgICAgICAgICB9CiAg
ICAgICAgfSwKICAgICAgICBhZGRDbGFzczogZnVuY3Rpb24gKGNsYXNzTmFtZXMpIHsKICAgICAg
ICAgICAgalF1ZXJ5LmNsYXNzTmFtZS5hZGQodGhpcywgY2xhc3NOYW1lcyk7CiAgICAgICAgfSwK
ICAgICAgICByZW1vdmVDbGFzczogZnVuY3Rpb24gKGNsYXNzTmFtZXMpIHsKICAgICAgICAgICAg
alF1ZXJ5LmNsYXNzTmFtZS5yZW1vdmUodGhpcywgY2xhc3NOYW1lcyk7CiAgICAgICAgfSwKICAg
ICAgICB0b2dnbGVDbGFzczogZnVuY3Rpb24gKGNsYXNzTmFtZXMpIHsKICAgICAgICAgICAgalF1
ZXJ5LmNsYXNzTmFtZVtqUXVlcnkuY2xhc3NOYW1lLmhhcyh0aGlzLCBjbGFzc05hbWVzKSA/ICJy
ZW1vdmUiIDogImFkZCJdKHRoaXMsIGNsYXNzTmFtZXMpOwogICAgICAgIH0sCiAgICAgICAgcmVt
b3ZlOiBmdW5jdGlvbiAoc2VsZWN0b3IpIHsKICAgICAgICAgICAgaWYgKCFzZWxlY3RvciB8fCBq
UXVlcnkuZmlsdGVyKHNlbGVjdG9yLCBbdGhpc10pLnIubGVuZ3RoKSB7CiAgICAgICAgICAgICAg
ICBqUXVlcnkoIioiLCB0aGlzKS5hZGQodGhpcykuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAg
ICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnJlbW92ZSh0aGlzKTsKICAgICAgICAgICAgICAgICAg
ICBqUXVlcnkucmVtb3ZlRGF0YSh0aGlzKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgICAgaWYgKHRoaXMucGFyZW50Tm9kZSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
fQogICAgICAgIH0sCiAgICAgICAgZW1wdHk6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgalF1
ZXJ5KCI+KiIsIHRoaXMpLnJlbW92ZSgpOwogICAgICAgICAgICB3aGlsZSAodGhpcy5maXJzdENo
aWxkKSB7CiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUNoaWxkKHRoaXMuZmlyc3RDaGlsZCk7
CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LCBmdW5jdGlvbiAobmFtZSwgZm4pIHsKICAg
ICAgICBqUXVlcnkuZm5bbmFtZV0gPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHJldHVybiB0
aGlzLmVhY2goZm4sIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgIH0pOwogICAgalF1ZXJ5LmVh
Y2goWyJIZWlnaHQiLCAiV2lkdGgiXSwgZnVuY3Rpb24gKGksIG5hbWUpIHsKICAgICAgICB2YXIg
dHlwZSA9IG5hbWUudG9Mb3dlckNhc2UoKTsKICAgICAgICBqUXVlcnkuZm5bdHlwZV0gPSBmdW5j
dGlvbiAoc2l6ZSkgewogICAgICAgICAgICByZXR1cm4gdGhpc1swXSA9PSB3aW5kb3cgPyBqUXVl
cnkuYnJvd3Nlci5vcGVyYSAmJiBkb2N1bWVudC5ib2R5WyJjbGllbnQiICsgbmFtZV0gfHwgalF1
ZXJ5LmJyb3dzZXIuc2FmYXJpICYmIHdpbmRvd1siaW5uZXIiICsgbmFtZV0gfHwgZG9jdW1lbnQu
Y29tcGF0TW9kZSA9PSAiQ1NTMUNvbXBhdCIgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJj
bGllbnQiICsgbmFtZV0gfHwgZG9jdW1lbnQuYm9keVsiY2xpZW50IiArIG5hbWVdIDogdGhpc1sw
XSA9PSBkb2N1bWVudCA/IE1hdGgubWF4KE1hdGgubWF4KGRvY3VtZW50LmJvZHlbInNjcm9sbCIg
KyBuYW1lXSwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJzY3JvbGwiICsgbmFtZV0pLCBNYXRo
Lm1heChkb2N1bWVudC5ib2R5WyJvZmZzZXQiICsgbmFtZV0sIGRvY3VtZW50LmRvY3VtZW50RWxl
bWVudFsib2Zmc2V0IiArIG5hbWVdKSkgOiBzaXplID09IHVuZGVmaW5lZCA/ICh0aGlzLmxlbmd0
aCA/IGpRdWVyeS5jc3ModGhpc1swXSwgdHlwZSkgOiBudWxsKSA6IHRoaXMuY3NzKHR5cGUsIHNp
emUuY29uc3RydWN0b3IgPT0gU3RyaW5nID8gc2l6ZSA6IHNpemUgKyAicHgiKTsKICAgICAgICB9
OwogICAgfSk7CgogICAgZnVuY3Rpb24gbnVtKGVsZW0sIHByb3ApIHsKICAgICAgICByZXR1cm4g
ZWxlbVswXSAmJiBwYXJzZUludChqUXVlcnkuY3VyQ1NTKGVsZW1bMF0sIHByb3AsIHRydWUpLCAx
MCkgfHwgMDsKICAgIH0KICAgIHZhciBjaGFycyA9IGpRdWVyeS5icm93c2VyLnNhZmFyaSAmJiBw
YXJzZUludChqUXVlcnkuYnJvd3Nlci52ZXJzaW9uKSA8IDQxNyA/ICIoPzpbXFx3Kl8tXXxcXFxc
LikiIDogIig/OltcXHdcdTAxMjgtXHVGRkZGKl8tXXxcXFxcLikiLAogICAgICAgIHF1aWNrQ2hp
bGQgPSBuZXcgUmVnRXhwKCJePlxccyooIiArIGNoYXJzICsgIispIiksCiAgICAgICAgcXVpY2tJ
RCA9IG5ldyBSZWdFeHAoIl4oIiArIGNoYXJzICsgIispKCMpKCIgKyBjaGFycyArICIrKSIpLAog
ICAgICAgIHF1aWNrQ2xhc3MgPSBuZXcgUmVnRXhwKCJeKFsjLl0/KSgiICsgY2hhcnMgKyAiKiki
KTsKICAgIGpRdWVyeS5leHRlbmQoewogICAgICAgIGV4cHI6IHsKICAgICAgICAgICAgIiI6IGZ1
bmN0aW9uIChhLCBpLCBtKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbVsyXSA9PSAiKiIgfHwg
alF1ZXJ5Lm5vZGVOYW1lKGEsIG1bMl0pOwogICAgICAgICAgICB9LAogICAgICAgICAgICAiIyI6
IGZ1bmN0aW9uIChhLCBpLCBtKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYS5nZXRBdHRyaWJ1
dGUoImlkIikgPT0gbVsyXTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgIjoiOiB7CiAgICAg
ICAgICAgICAgICBsdDogZnVuY3Rpb24gKGEsIGksIG0pIHsKICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gaSA8IG1bM10gLSAwOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGd0
OiBmdW5jdGlvbiAoYSwgaSwgbSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBpID4gbVsz
XSAtIDA7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgbnRoOiBmdW5jdGlvbiAo
YSwgaSwgbSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBtWzNdIC0gMCA9PSBpOwogICAg
ICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGVxOiBmdW5jdGlvbiAoYSwgaSwgbSkgewog
ICAgICAgICAgICAgICAgICAgIHJldHVybiBtWzNdIC0gMCA9PSBpOwogICAgICAgICAgICAgICAg
fSwKICAgICAgICAgICAgICAgIGZpcnN0OiBmdW5jdGlvbiAoYSwgaSkgewogICAgICAgICAgICAg
ICAgICAgIHJldHVybiBpID09IDA7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAg
bGFzdDogZnVuY3Rpb24gKGEsIGksIG0sIHIpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4g
aSA9PSByLmxlbmd0aCAtIDE7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZXZl
bjogZnVuY3Rpb24gKGEsIGkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSAlIDIgPT0g
MDsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBvZGQ6IGZ1bmN0aW9uIChhLCBp
KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgJSAyOwogICAgICAgICAgICAgICAgfSwK
ICAgICAgICAgICAgICAgICJmaXJzdC1jaGlsZCI6IGZ1bmN0aW9uIChhKSB7CiAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGEucGFyZW50Tm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpWzBd
ID09IGE7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImxhc3QtY2hpbGQiOiBm
dW5jdGlvbiAoYSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkubnRoKGEucGFy
ZW50Tm9kZS5sYXN0Q2hpbGQsIDEsICJwcmV2aW91c1NpYmxpbmciKSA9PSBhOwogICAgICAgICAg
ICAgICAgfSwKICAgICAgICAgICAgICAgICJvbmx5LWNoaWxkIjogZnVuY3Rpb24gKGEpIHsKICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gIWpRdWVyeS5udGgoYS5wYXJlbnROb2RlLmxhc3RDaGls
ZCwgMiwgInByZXZpb3VzU2libGluZyIpOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAg
ICAgIHBhcmVudDogZnVuY3Rpb24gKGEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5m
aXJzdENoaWxkOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGVtcHR5OiBmdW5j
dGlvbiAoYSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhYS5maXJzdENoaWxkOwogICAg
ICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBmdW5jdGlvbiAoYSwgaSwg
bSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAoYS50ZXh0Q29udGVudCB8fCBhLmlubmVy
VGV4dCB8fCBqUXVlcnkoYSkudGV4dCgpIHx8ICIiKS5pbmRleE9mKG1bM10pID49IDA7CiAgICAg
ICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdmlzaWJsZTogZnVuY3Rpb24gKGEpIHsKICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gImhpZGRlbiIgIT0gYS50eXBlICYmIGpRdWVyeS5jc3Mo
YSwgImRpc3BsYXkiKSAhPSAibm9uZSIgJiYgalF1ZXJ5LmNzcyhhLCAidmlzaWJpbGl0eSIpICE9
ICJoaWRkZW4iOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGhpZGRlbjogZnVu
Y3Rpb24gKGEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImhpZGRlbiIgPT0gYS50eXBl
IHx8IGpRdWVyeS5jc3MoYSwgImRpc3BsYXkiKSA9PSAibm9uZSIgfHwgalF1ZXJ5LmNzcyhhLCAi
dmlzaWJpbGl0eSIpID09ICJoaWRkZW4iOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAg
ICAgIGVuYWJsZWQ6IGZ1bmN0aW9uIChhKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFh
LmRpc2FibGVkOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRpc2FibGVkOiBm
dW5jdGlvbiAoYSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmRpc2FibGVkOwogICAg
ICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNoZWNrZWQ6IGZ1bmN0aW9uIChhKSB7CiAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuY2hlY2tlZDsKICAgICAgICAgICAgICAgIH0sCiAg
ICAgICAgICAgICAgICBzZWxlY3RlZDogZnVuY3Rpb24gKGEpIHsKICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gYS5zZWxlY3RlZCB8fCBqUXVlcnkuYXR0cihhLCAic2VsZWN0ZWQiKTsKICAgICAg
ICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0ZXh0OiBmdW5jdGlvbiAoYSkgewogICAgICAg
ICAgICAgICAgICAgIHJldHVybiAidGV4dCIgPT0gYS50eXBlOwogICAgICAgICAgICAgICAgfSwK
ICAgICAgICAgICAgICAgIHJhZGlvOiBmdW5jdGlvbiAoYSkgewogICAgICAgICAgICAgICAgICAg
IHJldHVybiAicmFkaW8iID09IGEudHlwZTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAg
ICAgICBjaGVja2JveDogZnVuY3Rpb24gKGEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ImNoZWNrYm94IiA9PSBhLnR5cGU7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAg
ZmlsZTogZnVuY3Rpb24gKGEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gImZpbGUiID09
IGEudHlwZTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBwYXNzd29yZDogZnVu
Y3Rpb24gKGEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gInBhc3N3b3JkIiA9PSBhLnR5
cGU7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc3VibWl0OiBmdW5jdGlvbiAo
YSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAic3VibWl0IiA9PSBhLnR5cGU7CiAgICAg
ICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaW1hZ2U6IGZ1bmN0aW9uIChhKSB7CiAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuICJpbWFnZSIgPT0gYS50eXBlOwogICAgICAgICAgICAgICAg
fSwKICAgICAgICAgICAgICAgIHJlc2V0OiBmdW5jdGlvbiAoYSkgewogICAgICAgICAgICAgICAg
ICAgIHJldHVybiAicmVzZXQiID09IGEudHlwZTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAg
ICAgICAgICBidXR0b246IGZ1bmN0aW9uIChhKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICJidXR0b24iID09IGEudHlwZSB8fCBqUXVlcnkubm9kZU5hbWUoYSwgImJ1dHRvbiIpOwogICAg
ICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGlucHV0OiBmdW5jdGlvbiAoYSkgewogICAg
ICAgICAgICAgICAgICAgIHJldHVybiAvaW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbi9pLnRl
c3QoYS5ub2RlTmFtZSk7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaGFzOiBm
dW5jdGlvbiAoYSwgaSwgbSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkuZmlu
ZChtWzNdLCBhKS5sZW5ndGg7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgaGVh
ZGVyOiBmdW5jdGlvbiAoYSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAvaFxkL2kudGVz
dChhLm5vZGVOYW1lKTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBhbmltYXRl
ZDogZnVuY3Rpb24gKGEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5LmdyZXAo
alF1ZXJ5LnRpbWVycywgZnVuY3Rpb24gKGZuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBhID09IGZuLmVsZW07CiAgICAgICAgICAgICAgICAgICAgfSkubGVuZ3RoOwogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBwYXJzZTogWy9eKFxb
KSAqQD8oW1x3LV0rKSAqKFshKiRefj1dKikgKignPyI/KSguKj8pXDQgKlxdLywgL14oOikoW1x3
LV0rKVwoIj8nPyguKj8oXCguKj9cKSk/W14oXSo/KSI/Jz9cKS8sIG5ldyBSZWdFeHAoIl4oWzou
I10qKSgiICsgY2hhcnMgKyAiKykiKV0sCiAgICAgICAgbXVsdGlGaWx0ZXI6IGZ1bmN0aW9uIChl
eHByLCBlbGVtcywgbm90KSB7CiAgICAgICAgICAgIHZhciBvbGQsIGN1ciA9IFtdOwogICAgICAg
ICAgICB3aGlsZSAoZXhwciAmJiBleHByICE9IG9sZCkgewogICAgICAgICAgICAgICAgb2xkID0g
ZXhwcjsKICAgICAgICAgICAgICAgIHZhciBmID0galF1ZXJ5LmZpbHRlcihleHByLCBlbGVtcywg
bm90KTsKICAgICAgICAgICAgICAgIGV4cHIgPSBmLnQucmVwbGFjZSgvXlxzKixccyovLCAiIik7
CiAgICAgICAgICAgICAgICBjdXIgPSBub3QgPyBlbGVtcyA9IGYuciA6IGpRdWVyeS5tZXJnZShj
dXIsIGYucik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGN1cjsKICAgICAgICB9
LAogICAgICAgIGZpbmQ6IGZ1bmN0aW9uICh0LCBjb250ZXh0KSB7CiAgICAgICAgICAgIGlmICh0
eXBlb2YgdCAhPSAic3RyaW5nIikgewogICAgICAgICAgICAgICAgcmV0dXJuIFt0XTsKICAgICAg
ICAgICAgfQogICAgICAgICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0Lm5vZGVUeXBlICE9IDEg
JiYgY29udGV4dC5ub2RlVHlwZSAhPSA5KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gW107CiAg
ICAgICAgICAgIH0KICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHQgfHwgZG9jdW1lbnQ7CiAg
ICAgICAgICAgIHZhciByZXQgPSBbY29udGV4dF0sCiAgICAgICAgICAgICAgICBkb25lID0gW10s
CiAgICAgICAgICAgICAgICBsYXN0LCBub2RlTmFtZTsKICAgICAgICAgICAgd2hpbGUgKHQgJiYg
bGFzdCAhPSB0KSB7CiAgICAgICAgICAgICAgICB2YXIgciA9IFtdOwogICAgICAgICAgICAgICAg
bGFzdCA9IHQ7CiAgICAgICAgICAgICAgICB0ID0galF1ZXJ5LnRyaW0odCk7CiAgICAgICAgICAg
ICAgICB2YXIgZm91bmRUb2tlbiA9IGZhbHNlLAogICAgICAgICAgICAgICAgICAgIHJlID0gcXVp
Y2tDaGlsZCwKICAgICAgICAgICAgICAgICAgICBtID0gcmUuZXhlYyh0KTsKICAgICAgICAgICAg
ICAgIGlmIChtKSB7CiAgICAgICAgICAgICAgICAgICAgbm9kZU5hbWUgPSBtWzFdLnRvVXBwZXJD
YXNlKCk7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IHJldFtpXTsgaSsrKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGMgPSByZXRbaV0uZmlyc3RDaGlsZDsg
YzsgYyA9IGMubmV4dFNpYmxpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChj
Lm5vZGVUeXBlID09IDEgJiYgKG5vZGVOYW1lID09ICIqIiB8fCBjLm5vZGVOYW1lLnRvVXBwZXJD
YXNlKCkgPT0gbm9kZU5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5w
dXNoKGMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldCA9IHI7
CiAgICAgICAgICAgICAgICAgICAgdCA9IHQucmVwbGFjZShyZSwgIiIpOwogICAgICAgICAgICAg
ICAgICAgIGlmICh0LmluZGV4T2YoIiAiKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3Vu
ZFRva2VuID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgcmUgPSAvXihbPit+XSlccyooXHcqKS9pOwogICAgICAgICAgICAgICAgICAgIGlmICgobSA9
IHJlLmV4ZWModCkpICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgciA9IFtdOwog
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWVyZ2UgPSB7fTsKICAgICAgICAgICAgICAgICAg
ICAgICAgbm9kZU5hbWUgPSBtWzJdLnRvVXBwZXJDYXNlKCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgIG0gPSBtWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMCwgcmwg
PSByZXQubGVuZ3RoOyBqIDwgcmw7IGorKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIG4gPSBtID09ICJ+IiB8fCBtID09ICIrIiA/IHJldFtqXS5uZXh0U2libGluZyA6IHJldFtq
XS5maXJzdENoaWxkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IG47IG4gPSBu
Lm5leHRTaWJsaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4ubm9k
ZVR5cGUgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaWQg
PSBqUXVlcnkuZGF0YShuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG0gPT0gIn4iICYmIG1lcmdlW2lkXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlTmFtZSB8fCBuLm5vZGVO
YW1lLnRvVXBwZXJDYXNlKCkgPT0gbm9kZU5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChtID09ICJ+IikgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1lcmdlW2lkXSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByLnB1c2gobik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG0gPT0gIisiKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICByZXQgPSByOwogICAgICAgICAgICAgICAgICAgICAgICB0ID0g
alF1ZXJ5LnRyaW0odC5yZXBsYWNlKHJlLCAiIikpOwogICAgICAgICAgICAgICAgICAgICAgICBm
b3VuZFRva2VuID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICBpZiAodCAmJiAhZm91bmRUb2tlbikgewogICAgICAgICAgICAgICAg
ICAgIGlmICghdC5pbmRleE9mKCIsIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNv
bnRleHQgPT0gcmV0WzBdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQuc2hpZnQo
KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBkb25l
ID0galF1ZXJ5Lm1lcmdlKGRvbmUsIHJldCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBy
ZXQgPSBbY29udGV4dF07CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAiICIgKyB0LnN1YnN0
cigxLCB0Lmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHJlMiA9IHF1aWNrSUQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciBtID0gcmUyLmV4ZWModCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtID0gWzAsIG1bMl0sIG1bM10sIG1bMV1dOwogICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmUy
ID0gcXVpY2tDbGFzczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSByZTIuZXhlYyh0
KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBtWzJd
ID0gbVsyXS5yZXBsYWNlKC9cXC9nLCAiIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBl
bGVtID0gcmV0W3JldC5sZW5ndGggLSAxXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1b
MV0gPT0gIiMiICYmIGVsZW0gJiYgZWxlbS5nZXRFbGVtZW50QnlJZCAmJiAhalF1ZXJ5LmlzWE1M
RG9jKGVsZW0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb2lkID0gZWxlbS5n
ZXRFbGVtZW50QnlJZChtWzJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoalF1
ZXJ5LmJyb3dzZXIubXNpZSB8fCBqUXVlcnkuYnJvd3Nlci5vcGVyYSkgJiYgb2lkICYmIHR5cGVv
ZiBvaWQuaWQgPT0gInN0cmluZyIgJiYgb2lkLmlkICE9IG1bMl0pIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvaWQgPSBqUXVlcnkoJ1tAaWQ9IicgKyBtWzJdICsgJyJdJywgZWxl
bSlbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXQgPSByID0gb2lkICYmICghbVszXSB8fCBqUXVlcnkubm9kZU5hbWUob2lkLCBt
WzNdKSkgPyBbb2lkXSA6IFtdOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IHJldFtpXTsgaSsrKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRhZyA9IG1bMV0gPT0gIiMiICYmIG1b
M10gPyBtWzNdIDogbVsxXSAhPSAiIiB8fCBtWzBdID09ICIiID8gIioiIDogbVsyXTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFnID09ICIqIiAmJiByZXRbaV0ubm9kZU5h
bWUudG9Mb3dlckNhc2UoKSA9PSAib2JqZWN0IikgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0YWcgPSAicGFyYW0iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0galF1ZXJ5Lm1lcmdlKHIsIHJl
dFtpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSh0YWcpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtWzFdID09ICIuIikgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBqUXVlcnkuY2xhc3NGaWx0ZXIociwgbVsy
XSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobVsxXSA9PSAiIyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YXIgdG1wID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IHJbaV07IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
cltpXS5nZXRBdHRyaWJ1dGUoImlkIikgPT0gbVsyXSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdG1wID0gW3JbaV1dOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgciA9IHRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHQucmVwbGFjZShyZTIsICIiKTsKICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAodCkgewog
ICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSBqUXVlcnkuZmlsdGVyKHQsIHIpOwogICAgICAg
ICAgICAgICAgICAgIHJldCA9IHIgPSB2YWwucjsKICAgICAgICAgICAgICAgICAgICB0ID0galF1
ZXJ5LnRyaW0odmFsLnQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAg
ICAgIGlmICh0KSB7CiAgICAgICAgICAgICAgICByZXQgPSBbXTsKICAgICAgICAgICAgfQogICAg
ICAgICAgICBpZiAocmV0ICYmIGNvbnRleHQgPT0gcmV0WzBdKSB7CiAgICAgICAgICAgICAgICBy
ZXQuc2hpZnQoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBkb25lID0galF1ZXJ5Lm1lcmdl
KGRvbmUsIHJldCk7CiAgICAgICAgICAgIHJldHVybiBkb25lOwogICAgICAgIH0sCiAgICAgICAg
Y2xhc3NGaWx0ZXI6IGZ1bmN0aW9uIChyLCBtLCBub3QpIHsKICAgICAgICAgICAgbSA9ICIgIiAr
IG0gKyAiICI7CiAgICAgICAgICAgIHZhciB0bXAgPSBbXTsKICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IHJbaV07IGkrKykgewogICAgICAgICAgICAgICAgdmFyIHBhc3MgPSAoIiAiICsgcltp
XS5jbGFzc05hbWUgKyAiICIpLmluZGV4T2YobSkgPj0gMDsKICAgICAgICAgICAgICAgIGlmICgh
bm90ICYmIHBhc3MgfHwgbm90ICYmICFwYXNzKSB7CiAgICAgICAgICAgICAgICAgICAgdG1wLnB1
c2gocltpXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0
dXJuIHRtcDsKICAgICAgICB9LAogICAgICAgIGZpbHRlcjogZnVuY3Rpb24gKHQsIHIsIG5vdCkg
ewogICAgICAgICAgICB2YXIgbGFzdDsKICAgICAgICAgICAgd2hpbGUgKHQgJiYgdCAhPSBsYXN0
KSB7CiAgICAgICAgICAgICAgICBsYXN0ID0gdDsKICAgICAgICAgICAgICAgIHZhciBwID0galF1
ZXJ5LnBhcnNlLAogICAgICAgICAgICAgICAgICAgIG07CiAgICAgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgcFtpXTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgbSA9IHBbaV0uZXhlYyh0
KTsKICAgICAgICAgICAgICAgICAgICBpZiAobSkgewogICAgICAgICAgICAgICAgICAgICAgICB0
ID0gdC5zdWJzdHJpbmcobVswXS5sZW5ndGgpOwogICAgICAgICAgICAgICAgICAgICAgICBtWzJd
ID0gbVsyXS5yZXBsYWNlKC9cXC9nLCAiIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
IGlmICghbSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgaWYgKG1bMV0gPT0gIjoiICYmIG1bMl0gPT0gIm5vdCIpIHsKICAgICAg
ICAgICAgICAgICAgICByID0gaXNTaW1wbGUudGVzdChtWzNdKSA/IGpRdWVyeS5maWx0ZXIobVsz
XSwgciwgdHJ1ZSkuciA6IGpRdWVyeShyKS5ub3QobVszXSk7CiAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgIGlmIChtWzFdID09ICIuIikgewogICAgICAgICAgICAg
ICAgICAgICAgICByID0galF1ZXJ5LmNsYXNzRmlsdGVyKHIsIG1bMl0sIG5vdCk7CiAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1bMV0gPT0g
IlsiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdG1wID0gW10sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IG1bM107CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgKHZhciBpID0gMCwgcmwgPSByLmxlbmd0aDsgaSA8IHJsOyBpKyspIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHJbaV0sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHogPSBhW2pRdWVyeS5wcm9wc1ttWzJdXSB8fCBtWzJdXTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeiA9PSBudWxsIHx8IC9ocmVmfHNy
Y3xzZWxlY3RlZC8udGVzdChtWzJdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB6ID0galF1ZXJ5LmF0dHIoYSwgbVsyXSkgfHwgIiI7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodHlwZSA9
PSAiIiAmJiAhISB6IHx8IHR5cGUgPT0gIj0iICYmIHogPT0gbVs1XSB8fCB0eXBlID09ICIhPSIg
JiYgeiAhPSBtWzVdIHx8IHR5cGUgPT0gIl49IiAmJiB6ICYmICF6LmluZGV4T2YobVs1XSkgfHwg
dHlwZSA9PSAiJD0iICYmIHouc3Vic3RyKHoubGVuZ3RoIC0gbVs1XS5sZW5ndGgpID09IG1bNV0g
fHwgKHR5cGUgPT0gIio9IiB8fCB0eXBlID09ICJ+PSIpICYmIHouaW5kZXhPZihtWzVdKSA+PSAw
KSBeIG5vdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAucHVzaChh
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gdG1wOwogICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1b
MV0gPT0gIjoiICYmIG1bMl0gPT0gIm50aC1jaGlsZCIpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgbWVyZ2UgPSB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdG1wID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Qg
PSAvKC0/KShcZCopbigoPzpcK3wtKT9cZCopLy5leGVjKG1bM10gPT0gImV2ZW4iICYmICIybiIg
fHwgbVszXSA9PSAib2RkIiAmJiAiMm4rMSIgfHwgIS9cRC8udGVzdChtWzNdKSAmJiAiMG4rIiAr
IG1bM10gfHwgbVszXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0
ID0gKHRlc3RbMV0gKyAodGVzdFsyXSB8fCAxKSkgLSAwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsYXN0ID0gdGVzdFszXSAtIDA7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDAsIHJsID0gci5sZW5ndGg7IGkgPCBybDsgaSsrKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBub2RlID0gcltpXSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudE5vZGUgPSBub2RlLnBhcmVu
dE5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IGpRdWVy
eS5kYXRhKHBhcmVudE5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIW1lcmdlW2lkXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIGMgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2
YXIgbiA9IHBhcmVudE5vZGUuZmlyc3RDaGlsZDsgbjsgbiA9IG4ubmV4dFNpYmxpbmcpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobi5ub2RlVHlwZSA9
PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4u
bm9kZUluZGV4ID0gYysrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlW2lkXSA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIGFkZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoZmlyc3QgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG5vZGUubm9kZUluZGV4ID09IGxhc3QpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhZGQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChub2Rl
Lm5vZGVJbmRleCAtIGxhc3QpICUgZmlyc3QgPT0gMCAmJiAobm9kZS5ub2RlSW5kZXggLSBsYXN0
KSAvIGZpcnN0ID49IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhZGQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChhZGQgXiBub3QpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRtcC5wdXNoKG5vZGUpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB0bXA7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmbiA9IGpR
dWVyeS5leHByW21bMV1dOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBl
b2YgZm4gPT0gIm9iamVjdCIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zm4gPSBmblttWzJdXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmbiA9PSAic3RyaW5nIikgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbiA9IGV2YWwoImZhbHNlfHxmdW5jdGlv
bihhLGkpe3JldHVybiAiICsgZm4gKyAiO30iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGpRdWVyeS5ncmVwKHIs
IGZ1bmN0aW9uIChlbGVtLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmbihlbGVtLCBpLCBtLCByKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LCBub3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICB9CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICByOiByLAogICAgICAg
ICAgICAgICAgdDogdAogICAgICAgICAgICB9OwogICAgICAgIH0sCiAgICAgICAgZGlyOiBmdW5j
dGlvbiAoZWxlbSwgZGlyKSB7CiAgICAgICAgICAgIHZhciBtYXRjaGVkID0gW10sCiAgICAgICAg
ICAgICAgICBjdXIgPSBlbGVtW2Rpcl07CiAgICAgICAgICAgIHdoaWxlIChjdXIgJiYgY3VyICE9
IGRvY3VtZW50KSB7CiAgICAgICAgICAgICAgICBpZiAoY3VyLm5vZGVUeXBlID09IDEpIHsKICAg
ICAgICAgICAgICAgICAgICBtYXRjaGVkLnB1c2goY3VyKTsKICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgIGN1ciA9IGN1cltkaXJdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJl
dHVybiBtYXRjaGVkOwogICAgICAgIH0sCiAgICAgICAgbnRoOiBmdW5jdGlvbiAoY3VyLCByZXN1
bHQsIGRpciwgZWxlbSkgewogICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgfHwgMTsKICAgICAg
ICAgICAgdmFyIG51bSA9IDA7CiAgICAgICAgICAgIGZvciAoOyBjdXI7IGN1ciA9IGN1cltkaXJd
KSB7CiAgICAgICAgICAgICAgICBpZiAoY3VyLm5vZGVUeXBlID09IDEgJiYgKytudW0gPT0gcmVz
dWx0KSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGN1cjsKICAgICAgICB9LAogICAgICAgIHNpYmxp
bmc6IGZ1bmN0aW9uIChuLCBlbGVtKSB7CiAgICAgICAgICAgIHZhciByID0gW107CiAgICAgICAg
ICAgIGZvciAoOyBuOyBuID0gbi5uZXh0U2libGluZykgewogICAgICAgICAgICAgICAgaWYgKG4u
bm9kZVR5cGUgPT0gMSAmJiBuICE9IGVsZW0pIHsKICAgICAgICAgICAgICAgICAgICByLnB1c2go
bik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHI7
CiAgICAgICAgfQogICAgfSk7CiAgICBqUXVlcnkuZXZlbnQgPSB7CiAgICAgICAgYWRkOiBmdW5j
dGlvbiAoZWxlbSwgdHlwZXMsIGhhbmRsZXIsIGRhdGEpIHsKICAgICAgICAgICAgaWYgKGVsZW0u
bm9kZVR5cGUgPT0gMyB8fCBlbGVtLm5vZGVUeXBlID09IDgpIHsKICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoalF1ZXJ5LmJyb3dzZXIubXNpZSAm
JiBlbGVtLnNldEludGVydmFsKSB7CiAgICAgICAgICAgICAgICBlbGVtID0gd2luZG93OwogICAg
ICAgICAgICB9CiAgICAgICAgICAgIGlmICghaGFuZGxlci5ndWlkKSB7CiAgICAgICAgICAgICAg
ICBoYW5kbGVyLmd1aWQgPSB0aGlzLmd1aWQrKzsKICAgICAgICAgICAgfQogICAgICAgICAgICBp
ZiAoZGF0YSAhPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgIHZhciBmbiA9IGhhbmRsZXI7
CiAgICAgICAgICAgICAgICBoYW5kbGVyID0gdGhpcy5wcm94eShmbiwgZnVuY3Rpb24gKCkgewog
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAg
ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBoYW5kbGVyLmRhdGEgPSBkYXRhOwogICAg
ICAgICAgICB9CiAgICAgICAgICAgIHZhciBldmVudHMgPSBqUXVlcnkuZGF0YShlbGVtLCAiZXZl
bnRzIikgfHwgalF1ZXJ5LmRhdGEoZWxlbSwgImV2ZW50cyIsIHt9KSwKICAgICAgICAgICAgICAg
IGhhbmRsZSA9IGpRdWVyeS5kYXRhKGVsZW0sICJoYW5kbGUiKSB8fCBqUXVlcnkuZGF0YShlbGVt
LCAiaGFuZGxlIiwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yg
alF1ZXJ5ICE9ICJ1bmRlZmluZWQiICYmICFqUXVlcnkuZXZlbnQudHJpZ2dlcmVkKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkuZXZlbnQuaGFuZGxlLmFwcGx5KGFyZ3Vt
ZW50cy5jYWxsZWUuZWxlbSwgYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICB9KTsKICAgICAgICAgICAgaGFuZGxlLmVsZW0gPSBlbGVtOwogICAgICAgICAg
ICBqUXVlcnkuZWFjaCh0eXBlcy5zcGxpdCgvXHMrLyksIGZ1bmN0aW9uIChpbmRleCwgdHlwZSkg
ewogICAgICAgICAgICAgICAgdmFyIHBhcnRzID0gdHlwZS5zcGxpdCgiLiIpOwogICAgICAgICAg
ICAgICAgdHlwZSA9IHBhcnRzWzBdOwogICAgICAgICAgICAgICAgaGFuZGxlci50eXBlID0gcGFy
dHNbMV07CiAgICAgICAgICAgICAgICB2YXIgaGFuZGxlcnMgPSBldmVudHNbdHlwZV07CiAgICAg
ICAgICAgICAgICBpZiAoIWhhbmRsZXJzKSB7CiAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnMg
PSBldmVudHNbdHlwZV0gPSB7fTsKICAgICAgICAgICAgICAgICAgICBpZiAoIWpRdWVyeS5ldmVu
dC5zcGVjaWFsW3R5cGVdIHx8IGpRdWVyeS5ldmVudC5zcGVjaWFsW3R5cGVdLnNldHVwLmNhbGwo
ZWxlbSkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtLmFkZEV2
ZW50TGlzdGVuZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uYWRkRXZlbnRM
aXN0ZW5lcih0eXBlLCBoYW5kbGUsIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtLmF0dGFjaEV2ZW50KSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5hdHRhY2hFdmVudCgib24iICsg
dHlwZSwgaGFuZGxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgIGhhbmRsZXJzW2hhbmRsZXIuZ3VpZF0gPSBoYW5kbGVyOwogICAgICAgICAg
ICAgICAgalF1ZXJ5LmV2ZW50Lmdsb2JhbFt0eXBlXSA9IHRydWU7CiAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICBlbGVtID0gbnVsbDsKICAgICAgICB9LAogICAgICAgIGd1aWQ6IDEsCiAgICAg
ICAgZ2xvYmFsOiB7fSwKICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIChlbGVtLCB0eXBlcywgaGFu
ZGxlcikgewogICAgICAgICAgICBpZiAoZWxlbS5ub2RlVHlwZSA9PSAzIHx8IGVsZW0ubm9kZVR5
cGUgPT0gOCkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAg
ICAgIHZhciBldmVudHMgPSBqUXVlcnkuZGF0YShlbGVtLCAiZXZlbnRzIiksCiAgICAgICAgICAg
ICAgICByZXQsIGluZGV4OwogICAgICAgICAgICBpZiAoZXZlbnRzKSB7CiAgICAgICAgICAgICAg
ICBpZiAodHlwZXMgPT0gdW5kZWZpbmVkIHx8ICh0eXBlb2YgdHlwZXMgPT0gInN0cmluZyIgJiYg
dHlwZXMuY2hhckF0KDApID09ICIuIikpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciB0
eXBlIGluIGV2ZW50cykgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZShlbGVt
LCB0eXBlICsgKHR5cGVzIHx8ICIiKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAodHlwZXMudHlwZSkgewogICAg
ICAgICAgICAgICAgICAgICAgICBoYW5kbGVyID0gdHlwZXMuaGFuZGxlcjsKICAgICAgICAgICAg
ICAgICAgICAgICAgdHlwZXMgPSB0eXBlcy50eXBlOwogICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICBqUXVlcnkuZWFjaCh0eXBlcy5zcGxpdCgvXHMrLyksIGZ1bmN0aW9u
IChpbmRleCwgdHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydHMgPSB0eXBl
LnNwbGl0KCIuIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBwYXJ0c1swXTsKICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50c1t0eXBlXSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGhhbmRsZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZWxldGUgZXZlbnRzW3R5cGVdW2hhbmRsZXIuZ3VpZF07CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaGFu
ZGxlciBpbiBldmVudHNbdHlwZV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFwYXJ0c1sxXSB8fCBldmVudHNbdHlwZV1baGFuZGxlcl0udHlwZSA9PSBwYXJ0c1sx
XSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGV2ZW50
c1t0eXBlXVtoYW5kbGVyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAocmV0IGluIGV2ZW50c1t0eXBl
XSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXQpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWpRdWVyeS5ldmVudC5zcGVjaWFs
W3R5cGVdIHx8IGpRdWVyeS5ldmVudC5zcGVjaWFsW3R5cGVdLnRlYXJkb3duLmNhbGwoZWxlbSkg
PT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVt
LnJlbW92ZUV2ZW50TGlzdGVuZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBqUXVlcnkuZGF0YShlbGVtLCAi
aGFuZGxlIiksIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtLmRl
dGFjaEV2ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWxlbS5kZXRhY2hFdmVudCgib24iICsgdHlwZSwgalF1ZXJ5LmRhdGEoZWxlbSwgImhhbmRsZSIp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBudWxsOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBldmVudHNbdHlwZV07CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAocmV0IGluIGV2
ZW50cykgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgaWYgKCFyZXQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaGFuZGxlID0g
alF1ZXJ5LmRhdGEoZWxlbSwgImhhbmRsZSIpOwogICAgICAgICAgICAgICAgICAgIGlmIChoYW5k
bGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlLmVsZW0gPSBudWxsOwogICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBqUXVlcnkucmVtb3ZlRGF0YShlbGVt
LCAiZXZlbnRzIik7CiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnJlbW92ZURhdGEoZWxlbSwg
ImhhbmRsZSIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAg
ICAgICB0cmlnZ2VyOiBmdW5jdGlvbiAodHlwZSwgZGF0YSwgZWxlbSwgZG9uYXRpdmUsIGV4dHJh
KSB7CiAgICAgICAgICAgIGRhdGEgPSBqUXVlcnkubWFrZUFycmF5KGRhdGEpOwogICAgICAgICAg
ICBpZiAodHlwZS5pbmRleE9mKCIhIikgPj0gMCkgewogICAgICAgICAgICAgICAgdHlwZSA9IHR5
cGUuc2xpY2UoMCwgLTEpOwogICAgICAgICAgICAgICAgdmFyIGV4Y2x1c2l2ZSA9IHRydWU7CiAg
ICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCFlbGVtKSB7CiAgICAgICAgICAgICAgICBpZiAo
dGhpcy5nbG9iYWxbdHlwZV0pIHsKICAgICAgICAgICAgICAgICAgICBqUXVlcnkoIioiKS5hZGQo
W3dpbmRvdywgZG9jdW1lbnRdKS50cmlnZ2VyKHR5cGUsIGRhdGEpOwogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKGVsZW0ubm9kZVR5cGUg
PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09IDgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dW5kZWZpbmVkOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIHZhbCwgcmV0
LCBmbiA9IGpRdWVyeS5pc0Z1bmN0aW9uKGVsZW1bdHlwZV0gfHwgbnVsbCksCiAgICAgICAgICAg
ICAgICAgICAgZXZlbnQgPSAhZGF0YVswXSB8fCAhZGF0YVswXS5wcmV2ZW50RGVmYXVsdDsKICAg
ICAgICAgICAgICAgIGlmIChldmVudCkgewogICAgICAgICAgICAgICAgICAgIGRhdGEudW5zaGlm
dCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgIHRhcmdldDogZWxlbSwKICAgICAgICAgICAgICAgICAgICAgICAgcHJldmVudERlZmF1
bHQ6IGZ1bmN0aW9uICgpIHt9LAogICAgICAgICAgICAgICAgICAgICAgICBzdG9wUHJvcGFnYXRp
b246IGZ1bmN0aW9uICgpIHt9LAogICAgICAgICAgICAgICAgICAgICAgICB0aW1lU3RhbXA6IG5v
dygpCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgZGF0YVswXVtl
eHBhbmRvXSA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkYXRhWzBd
LnR5cGUgPSB0eXBlOwogICAgICAgICAgICAgICAgaWYgKGV4Y2x1c2l2ZSkgewogICAgICAgICAg
ICAgICAgICAgIGRhdGFbMF0uZXhjbHVzaXZlID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgIHZhciBoYW5kbGUgPSBqUXVlcnkuZGF0YShlbGVtLCAiaGFuZGxlIik7CiAg
ICAgICAgICAgICAgICBpZiAoaGFuZGxlKSB7CiAgICAgICAgICAgICAgICAgICAgdmFsID0gaGFu
ZGxlLmFwcGx5KGVsZW0sIGRhdGEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
aWYgKCghZm4gfHwgKGpRdWVyeS5ub2RlTmFtZShlbGVtLCAiYSIpICYmIHR5cGUgPT0gImNsaWNr
IikpICYmIGVsZW1bIm9uIiArIHR5cGVdICYmIGVsZW1bIm9uIiArIHR5cGVdLmFwcGx5KGVsZW0s
IGRhdGEpID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgIHZhbCA9IGZhbHNlOwogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGV2ZW50KSB7CiAgICAgICAgICAgICAg
ICAgICAgZGF0YS5zaGlmdCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYg
KGV4dHJhICYmIGpRdWVyeS5pc0Z1bmN0aW9uKGV4dHJhKSkgewogICAgICAgICAgICAgICAgICAg
IHJldCA9IGV4dHJhLmFwcGx5KGVsZW0sIHZhbCA9PSBudWxsID8gZGF0YSA6IGRhdGEuY29uY2F0
KHZhbCkpOwogICAgICAgICAgICAgICAgICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkgewogICAg
ICAgICAgICAgICAgICAgICAgICB2YWwgPSByZXQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGZuICYmIGRvbmF0aXZlICE9PSBmYWxz
ZSAmJiB2YWwgIT09IGZhbHNlICYmICEoalF1ZXJ5Lm5vZGVOYW1lKGVsZW0sICJhIikgJiYgdHlw
ZSA9PSAiY2xpY2siKSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlcmVkID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBlbGVt
W3R5cGVdKCk7CiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlcmVkID0gZmFsc2U7CiAgICAgICAgICAg
IH0KICAgICAgICAgICAgcmV0dXJuIHZhbDsKICAgICAgICB9LAogICAgICAgIGhhbmRsZTogZnVu
Y3Rpb24gKGV2ZW50KSB7CiAgICAgICAgICAgIHZhciB2YWwsIHJldCwgbmFtZXNwYWNlLCBhbGws
IGhhbmRsZXJzOwogICAgICAgICAgICBldmVudCA9IGFyZ3VtZW50c1swXSA9IGpRdWVyeS5ldmVu
dC5maXgoZXZlbnQgfHwgd2luZG93LmV2ZW50KTsKICAgICAgICAgICAgbmFtZXNwYWNlID0gZXZl
bnQudHlwZS5zcGxpdCgiLiIpOwogICAgICAgICAgICBldmVudC50eXBlID0gbmFtZXNwYWNlWzBd
OwogICAgICAgICAgICBuYW1lc3BhY2UgPSBuYW1lc3BhY2VbMV07CiAgICAgICAgICAgIGFsbCA9
ICFuYW1lc3BhY2UgJiYgIWV2ZW50LmV4Y2x1c2l2ZTsKICAgICAgICAgICAgaGFuZGxlcnMgPSAo
alF1ZXJ5LmRhdGEodGhpcywgImV2ZW50cyIpIHx8IHt9KVtldmVudC50eXBlXTsKICAgICAgICAg
ICAgZm9yICh2YXIgaiBpbiBoYW5kbGVycykgewogICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIg
PSBoYW5kbGVyc1tqXTsKICAgICAgICAgICAgICAgIGlmIChhbGwgfHwgaGFuZGxlci50eXBlID09
IG5hbWVzcGFjZSkgewogICAgICAgICAgICAgICAgICAgIGV2ZW50LmhhbmRsZXIgPSBoYW5kbGVy
OwogICAgICAgICAgICAgICAgICAgIGV2ZW50LmRhdGEgPSBoYW5kbGVyLmRhdGE7CiAgICAgICAg
ICAgICAgICAgICAgcmV0ID0gaGFuZGxlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAg
ICAgICAgICAgICAgIGlmICh2YWwgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IHZhbCA9IHJldDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYg
KHJldCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERl
ZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7
CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAg
ICAgICAgICAgIHJldHVybiB2YWw7CiAgICAgICAgfSwKICAgICAgICBmaXg6IGZ1bmN0aW9uIChl
dmVudCkgewogICAgICAgICAgICBpZiAoZXZlbnRbZXhwYW5kb10gPT0gdHJ1ZSkgewogICAgICAg
ICAgICAgICAgcmV0dXJuIGV2ZW50OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBvcmln
aW5hbEV2ZW50ID0gZXZlbnQ7CiAgICAgICAgICAgIGV2ZW50ID0gewogICAgICAgICAgICAgICAg
b3JpZ2luYWxFdmVudDogb3JpZ2luYWxFdmVudAogICAgICAgICAgICB9OwogICAgICAgICAgICB2
YXIgcHJvcHMgPSAiYWx0S2V5IGF0dHJDaGFuZ2UgYXR0ck5hbWUgYnViYmxlcyBidXR0b24gY2Fu
Y2VsYWJsZSBjaGFyQ29kZSBjbGllbnRYIGNsaWVudFkgY3RybEtleSBjdXJyZW50VGFyZ2V0IGRh
dGEgZGV0YWlsIGV2ZW50UGhhc2UgZnJvbUVsZW1lbnQgaGFuZGxlciBrZXlDb2RlIG1ldGFLZXkg
bmV3VmFsdWUgb3JpZ2luYWxUYXJnZXQgcGFnZVggcGFnZVkgcHJldlZhbHVlIHJlbGF0ZWROb2Rl
IHJlbGF0ZWRUYXJnZXQgc2NyZWVuWCBzY3JlZW5ZIHNoaWZ0S2V5IHNyY0VsZW1lbnQgdGFyZ2V0
IHRpbWVTdGFtcCB0b0VsZW1lbnQgdHlwZSB2aWV3IHdoZWVsRGVsdGEgd2hpY2giLnNwbGl0KCIg
Iik7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSBwcm9wcy5sZW5ndGg7IGk7IGktLSkgewogICAg
ICAgICAgICAgICAgZXZlbnRbcHJvcHNbaV1dID0gb3JpZ2luYWxFdmVudFtwcm9wc1tpXV07CiAg
ICAgICAgICAgIH0KICAgICAgICAgICAgZXZlbnRbZXhwYW5kb10gPSB0cnVlOwogICAgICAgICAg
ICBldmVudC5wcmV2ZW50RGVmYXVsdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlm
IChvcmlnaW5hbEV2ZW50LnByZXZlbnREZWZhdWx0KSB7CiAgICAgICAgICAgICAgICAgICAgb3Jp
Z2luYWxFdmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgb3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZSA9IGZhbHNlOwogICAgICAgICAgICB9Owog
ICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24gPSBmdW5jdGlvbiAoKSB7CiAgICAgICAg
ICAgICAgICBpZiAob3JpZ2luYWxFdmVudC5zdG9wUHJvcGFnYXRpb24pIHsKICAgICAgICAgICAg
ICAgICAgICBvcmlnaW5hbEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudC5jYW5jZWxCdWJibGUgPSB0cnVlOwogICAg
ICAgICAgICB9OwogICAgICAgICAgICBldmVudC50aW1lU3RhbXAgPSBldmVudC50aW1lU3RhbXAg
fHwgbm93KCk7CiAgICAgICAgICAgIGlmICghZXZlbnQudGFyZ2V0KSB7CiAgICAgICAgICAgICAg
ICBldmVudC50YXJnZXQgPSBldmVudC5zcmNFbGVtZW50IHx8IGRvY3VtZW50OwogICAgICAgICAg
ICB9CiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQubm9kZVR5cGUgPT0gMykgewogICAgICAg
ICAgICAgICAgZXZlbnQudGFyZ2V0ID0gZXZlbnQudGFyZ2V0LnBhcmVudE5vZGU7CiAgICAgICAg
ICAgIH0KICAgICAgICAgICAgaWYgKCFldmVudC5yZWxhdGVkVGFyZ2V0ICYmIGV2ZW50LmZyb21F
bGVtZW50KSB7CiAgICAgICAgICAgICAgICBldmVudC5yZWxhdGVkVGFyZ2V0ID0gZXZlbnQuZnJv
bUVsZW1lbnQgPT0gZXZlbnQudGFyZ2V0ID8gZXZlbnQudG9FbGVtZW50IDogZXZlbnQuZnJvbUVs
ZW1lbnQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGV2ZW50LnBhZ2VYID09IG51bGwg
JiYgZXZlbnQuY2xpZW50WCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICB2YXIgZG9jID0gZG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50LAogICAgICAgICAgICAgICAgICAgIGJvZHkgPSBkb2N1bWVu
dC5ib2R5OwogICAgICAgICAgICAgICAgZXZlbnQucGFnZVggPSBldmVudC5jbGllbnRYICsgKGRv
YyAmJiBkb2Muc2Nyb2xsTGVmdCB8fCBib2R5ICYmIGJvZHkuc2Nyb2xsTGVmdCB8fCAwKSAtIChk
b2MuY2xpZW50TGVmdCB8fCAwKTsKICAgICAgICAgICAgICAgIGV2ZW50LnBhZ2VZID0gZXZlbnQu
Y2xpZW50WSArIChkb2MgJiYgZG9jLnNjcm9sbFRvcCB8fCBib2R5ICYmIGJvZHkuc2Nyb2xsVG9w
IHx8IDApIC0gKGRvYy5jbGllbnRUb3AgfHwgMCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAg
aWYgKCFldmVudC53aGljaCAmJiAoKGV2ZW50LmNoYXJDb2RlIHx8IGV2ZW50LmNoYXJDb2RlID09
PSAwKSA/IGV2ZW50LmNoYXJDb2RlIDogZXZlbnQua2V5Q29kZSkpIHsKICAgICAgICAgICAgICAg
IGV2ZW50LndoaWNoID0gZXZlbnQuY2hhckNvZGUgfHwgZXZlbnQua2V5Q29kZTsKICAgICAgICAg
ICAgfQogICAgICAgICAgICBpZiAoIWV2ZW50Lm1ldGFLZXkgJiYgZXZlbnQuY3RybEtleSkgewog
ICAgICAgICAgICAgICAgZXZlbnQubWV0YUtleSA9IGV2ZW50LmN0cmxLZXk7CiAgICAgICAgICAg
IH0KICAgICAgICAgICAgaWYgKCFldmVudC53aGljaCAmJiBldmVudC5idXR0b24pIHsKICAgICAg
ICAgICAgICAgIGV2ZW50LndoaWNoID0gKGV2ZW50LmJ1dHRvbiAmIDEgPyAxIDogKGV2ZW50LmJ1
dHRvbiAmIDIgPyAzIDogKGV2ZW50LmJ1dHRvbiAmIDQgPyAyIDogMCkpKTsKICAgICAgICAgICAg
fQogICAgICAgICAgICByZXR1cm4gZXZlbnQ7CiAgICAgICAgfSwKICAgICAgICBwcm94eTogZnVu
Y3Rpb24gKGZuLCBwcm94eSkgewogICAgICAgICAgICBwcm94eS5ndWlkID0gZm4uZ3VpZCA9IGZu
Lmd1aWQgfHwgcHJveHkuZ3VpZCB8fCB0aGlzLmd1aWQrKzsKICAgICAgICAgICAgcmV0dXJuIHBy
b3h5OwogICAgICAgIH0sCiAgICAgICAgc3BlY2lhbDogewogICAgICAgICAgICByZWFkeTogewog
ICAgICAgICAgICAgICAgc2V0dXA6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICBi
aW5kUmVhZHkoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9
LAogICAgICAgICAgICAgICAgdGVhcmRvd246IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAg
IG1vdXNlZW50ZXI6IHsKICAgICAgICAgICAgICAgIHNldHVwOiBmdW5jdGlvbiAoKSB7CiAgICAg
ICAgICAgICAgICAgICAgaWYgKGpRdWVyeS5icm93c2VyLm1zaWUpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICBqUXVlcnkodGhpcykuYmluZCgibW91c2VvdmVyIiwgalF1ZXJ5LmV2ZW50LnNwZWNp
YWwubW91c2VlbnRlci5oYW5kbGVyKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0ZWFyZG93bjogZnVuY3Rpb24gKCkg
ewogICAgICAgICAgICAgICAgICAgIGlmIChqUXVlcnkuYnJvd3Nlci5tc2llKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgalF1ZXJ5KHRoaXMpLnVuYmluZCgibW91c2VvdmVyIiwgalF1ZXJ5LmV2
ZW50LnNwZWNpYWwubW91c2VlbnRlci5oYW5kbGVyKTsKICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5j
dGlvbiAoZXZlbnQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAod2l0aGluRWxlbWVudChldmVu
dCwgdGhpcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGV2ZW50LnR5cGUgPSAibW91c2VlbnRl
ciI7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5ldmVudC5oYW5kbGUuYXBwbHko
dGhpcywgYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAg
ICAgICAgbW91c2VsZWF2ZTogewogICAgICAgICAgICAgICAgc2V0dXA6IGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgICAgICAgICAgICBpZiAoalF1ZXJ5LmJyb3dzZXIubXNpZSkgewogICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgIGpRdWVyeSh0aGlzKS5iaW5kKCJtb3VzZW91dCIsIGpRdWVyeS5ldmVudC5z
cGVjaWFsLm1vdXNlbGVhdmUuaGFuZGxlcik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdGVhcmRvd246IGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoalF1ZXJ5LmJyb3dzZXIubXNpZSkgewogICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgIGpRdWVyeSh0aGlzKS51bmJpbmQoIm1vdXNlb3V0IiwgalF1ZXJ5
LmV2ZW50LnNwZWNpYWwubW91c2VsZWF2ZS5oYW5kbGVyKTsKICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBoYW5kbGVyOiBm
dW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAod2l0aGluRWxlbWVudChl
dmVudCwgdGhpcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGV2ZW50LnR5cGUgPSAibW91c2Vs
ZWF2ZSI7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5ldmVudC5oYW5kbGUuYXBw
bHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAg
ICAgIH0KICAgIH07CiAgICBqUXVlcnkuZm4uZXh0ZW5kKHsKICAgICAgICBiaW5kOiBmdW5jdGlv
biAodHlwZSwgZGF0YSwgZm4pIHsKICAgICAgICAgICAgcmV0dXJuIHR5cGUgPT0gInVubG9hZCIg
PyB0aGlzLm9uZSh0eXBlLCBkYXRhLCBmbikgOiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgewogICAg
ICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LmFkZCh0aGlzLCB0eXBlLCBmbiB8fCBkYXRhLCBmbiAm
JiBkYXRhKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICBvbmU6IGZ1bmN0aW9u
ICh0eXBlLCBkYXRhLCBmbikgewogICAgICAgICAgICB2YXIgb25lID0galF1ZXJ5LmV2ZW50LnBy
b3h5KGZuIHx8IGRhdGEsIGZ1bmN0aW9uIChldmVudCkgewogICAgICAgICAgICAgICAgalF1ZXJ5
KHRoaXMpLnVuYmluZChldmVudCwgb25lKTsKICAgICAgICAgICAgICAgIHJldHVybiAoZm4gfHwg
ZGF0YSkuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
IHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgalF1ZXJ5LmV2
ZW50LmFkZCh0aGlzLCB0eXBlLCBvbmUsIGZuICYmIGRhdGEpOwogICAgICAgICAgICB9KTsKICAg
ICAgICB9LAogICAgICAgIHVuYmluZDogZnVuY3Rpb24gKHR5cGUsIGZuKSB7CiAgICAgICAgICAg
IHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgalF1ZXJ5LmV2
ZW50LnJlbW92ZSh0aGlzLCB0eXBlLCBmbik7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0sCiAg
ICAgICAgdHJpZ2dlcjogZnVuY3Rpb24gKHR5cGUsIGRhdGEsIGZuKSB7CiAgICAgICAgICAgIHJl
dHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50
LnRyaWdnZXIodHlwZSwgZGF0YSwgdGhpcywgdHJ1ZSwgZm4pOwogICAgICAgICAgICB9KTsKICAg
ICAgICB9LAogICAgICAgIHRyaWdnZXJIYW5kbGVyOiBmdW5jdGlvbiAodHlwZSwgZGF0YSwgZm4p
IHsKICAgICAgICAgICAgcmV0dXJuIHRoaXNbMF0gJiYgalF1ZXJ5LmV2ZW50LnRyaWdnZXIodHlw
ZSwgZGF0YSwgdGhpc1swXSwgZmFsc2UsIGZuKTsKICAgICAgICB9LAogICAgICAgIHRvZ2dsZTog
ZnVuY3Rpb24gKGZuKSB7CiAgICAgICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLAogICAgICAg
ICAgICAgICAgaSA9IDE7CiAgICAgICAgICAgIHdoaWxlIChpIDwgYXJncy5sZW5ndGgpIHsKICAg
ICAgICAgICAgICAgIGpRdWVyeS5ldmVudC5wcm94eShmbiwgYXJnc1tpKytdKTsKICAgICAgICAg
ICAgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5jbGljayhqUXVlcnkuZXZlbnQucHJveHkoZm4s
IGZ1bmN0aW9uIChldmVudCkgewogICAgICAgICAgICAgICAgdGhpcy5sYXN0VG9nZ2xlID0gKHRo
aXMubGFzdFRvZ2dsZSB8fCAwKSAlIGk7CiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVm
YXVsdCgpOwogICAgICAgICAgICAgICAgcmV0dXJuIGFyZ3NbdGhpcy5sYXN0VG9nZ2xlKytdLmFw
cGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgZmFsc2U7CiAgICAgICAgICAgIH0pKTsKICAgICAgICB9
LAogICAgICAgIGhvdmVyOiBmdW5jdGlvbiAoZm5PdmVyLCBmbk91dCkgewogICAgICAgICAgICBy
ZXR1cm4gdGhpcy5iaW5kKCJtb3VzZWVudGVyIiwgZm5PdmVyKS5iaW5kKCJtb3VzZWxlYXZlIiwg
Zm5PdXQpOwogICAgICAgIH0sCiAgICAgICAgcmVhZHk6IGZ1bmN0aW9uIChmbikgewogICAgICAg
ICAgICBiaW5kUmVhZHkoKTsKICAgICAgICAgICAgaWYgKGpRdWVyeS5pc1JlYWR5KSB7CiAgICAg
ICAgICAgICAgICBmbi5jYWxsKGRvY3VtZW50LCBqUXVlcnkpOwogICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgalF1ZXJ5LnJlYWR5TGlzdC5wdXNoKGZ1bmN0aW9uICgpIHsKICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZm4uY2FsbCh0aGlzLCBqUXVlcnkpOwogICAgICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAg
fQogICAgfSk7CiAgICBqUXVlcnkuZXh0ZW5kKHsKICAgICAgICBpc1JlYWR5OiBmYWxzZSwKICAg
ICAgICByZWFkeUxpc3Q6IFtdLAogICAgICAgIHJlYWR5OiBmdW5jdGlvbiAoKSB7CiAgICAgICAg
ICAgIGlmICghalF1ZXJ5LmlzUmVhZHkpIHsKICAgICAgICAgICAgICAgIGpRdWVyeS5pc1JlYWR5
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGlmIChqUXVlcnkucmVhZHlMaXN0KSB7CiAgICAgICAg
ICAgICAgICAgICAgalF1ZXJ5LmVhY2goalF1ZXJ5LnJlYWR5TGlzdCwgZnVuY3Rpb24gKCkgewog
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGwoZG9jdW1lbnQpOwogICAgICAgICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGpRdWVyeS5yZWFkeUxpc3QgPSBudWxsOwog
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgalF1ZXJ5KGRvY3VtZW50KS50cmlnZ2Vy
SGFuZGxlcigicmVhZHkiKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pOwogICAgdmFy
IHJlYWR5Qm91bmQgPSBmYWxzZTsKCiAgICBmdW5jdGlvbiBiaW5kUmVhZHkoKSB7CiAgICAgICAg
aWYgKHJlYWR5Qm91bmQpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBy
ZWFkeUJvdW5kID0gdHJ1ZTsKICAgICAgICBpZiAoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciAm
JiAhalF1ZXJ5LmJyb3dzZXIub3BlcmEpIHsKICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGpRdWVyeS5yZWFkeSwgZmFsc2UpOwogICAgICAg
IH0KICAgICAgICBpZiAoalF1ZXJ5LmJyb3dzZXIubXNpZSAmJiB3aW5kb3cgPT0gdG9wKSB7CiAg
ICAgICAgICAgIChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBpZiAoalF1ZXJ5LmlzUmVh
ZHkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxl
bWVudC5kb1Njcm9sbCgibGVmdCIpOwogICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsK
ICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGFyZ3VtZW50cy5jYWxsZWUsIDApOwogICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
IGpRdWVyeS5yZWFkeSgpOwogICAgICAgICAgICB9KSgpOwogICAgICAgIH0KICAgICAgICBpZiAo
alF1ZXJ5LmJyb3dzZXIub3BlcmEpIHsKICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlm
IChqUXVlcnkuaXNSZWFkeSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZG9jdW1lbnQuc3R5
bGVTaGVldHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQu
c3R5bGVTaGVldHNbaV0uZGlzYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChhcmd1bWVudHMuY2FsbGVlLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
IGpRdWVyeS5yZWFkeSgpOwogICAgICAgICAgICB9LCBmYWxzZSk7CiAgICAgICAgfQogICAgICAg
IGlmIChqUXVlcnkuYnJvd3Nlci5zYWZhcmkpIHsKICAgICAgICAgICAgdmFyIG51bVN0eWxlczsK
ICAgICAgICAgICAgKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmIChqUXVlcnkuaXNS
ZWFkeSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlICE9ICJsb2FkZWQiICYmIGRvY3Vt
ZW50LnJlYWR5U3RhdGUgIT0gImNvbXBsZXRlIikgewogICAgICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoYXJndW1lbnRzLmNhbGxlZSwgMCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG51bVN0eWxlcyA9PT0gdW5kZWZp
bmVkKSB7CiAgICAgICAgICAgICAgICAgICAgbnVtU3R5bGVzID0galF1ZXJ5KCJzdHlsZSwgbGlu
a1tyZWw9c3R5bGVzaGVldF0iKS5sZW5ndGg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICBpZiAoZG9jdW1lbnQuc3R5bGVTaGVldHMubGVuZ3RoICE9IG51bVN0eWxlcykgewogICAg
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoYXJndW1lbnRzLmNhbGxlZSwgMCk7CiAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgalF1
ZXJ5LnJlYWR5KCk7CiAgICAgICAgICAgIH0pKCk7CiAgICAgICAgfQogICAgICAgIGpRdWVyeS5l
dmVudC5hZGQod2luZG93LCAibG9hZCIsIGpRdWVyeS5yZWFkeSk7CiAgICB9CiAgICBqUXVlcnku
ZWFjaCgoImJsdXIsZm9jdXMsbG9hZCxyZXNpemUsc2Nyb2xsLHVubG9hZCxjbGljayxkYmxjbGlj
aywiICsgIm1vdXNlZG93bixtb3VzZXVwLG1vdXNlbW92ZSxtb3VzZW92ZXIsbW91c2VvdXQsY2hh
bmdlLHNlbGVjdCwiICsgInN1Ym1pdCxrZXlkb3duLGtleXByZXNzLGtleXVwLGVycm9yIikuc3Bs
aXQoIiwiKSwgZnVuY3Rpb24gKGksIG5hbWUpIHsKICAgICAgICBqUXVlcnkuZm5bbmFtZV0gPSBm
dW5jdGlvbiAoZm4pIHsKICAgICAgICAgICAgcmV0dXJuIGZuID8gdGhpcy5iaW5kKG5hbWUsIGZu
KSA6IHRoaXMudHJpZ2dlcihuYW1lKTsKICAgICAgICB9OwogICAgfSk7CiAgICB2YXIgd2l0aGlu
RWxlbWVudCA9IGZ1bmN0aW9uIChldmVudCwgZWxlbSkgewogICAgICAgICAgICB2YXIgcGFyZW50
ID0gZXZlbnQucmVsYXRlZFRhcmdldDsKICAgICAgICAgICAgd2hpbGUgKHBhcmVudCAmJiBwYXJl
bnQgIT0gZWxlbSkgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBw
YXJlbnQgPSBwYXJlbnQucGFyZW50Tm9kZTsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9y
KSB7CiAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gZWxlbTsKICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcGFyZW50ID09IGVsZW07CiAgICAgICAg
fTsKICAgIGpRdWVyeSh3aW5kb3cpLmJpbmQoInVubG9hZCIsIGZ1bmN0aW9uICgpIHsKICAgICAg
ICBqUXVlcnkoIioiKS5hZGQoZG9jdW1lbnQpLnVuYmluZCgpOwogICAgfSk7CiAgICBqUXVlcnku
Zm4uZXh0ZW5kKHsKICAgICAgICBfbG9hZDogalF1ZXJ5LmZuLmxvYWQsCiAgICAgICAgbG9hZDog
ZnVuY3Rpb24gKHVybCwgcGFyYW1zLCBjYWxsYmFjaykgewogICAgICAgICAgICBpZiAodHlwZW9m
IHVybCAhPSAic3RyaW5nIikgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xvYWQodXJs
KTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgb2ZmID0gdXJsLmluZGV4T2YoIiAiKTsK
ICAgICAgICAgICAgaWYgKG9mZiA+PSAwKSB7CiAgICAgICAgICAgICAgICB2YXIgc2VsZWN0b3Ig
PSB1cmwuc2xpY2Uob2ZmLCB1cmwubGVuZ3RoKTsKICAgICAgICAgICAgICAgIHVybCA9IHVybC5z
bGljZSgwLCBvZmYpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhbGxiYWNrID0gY2FsbGJh
Y2sgfHwKICAgICAgICAgICAgZnVuY3Rpb24gKCkge307CiAgICAgICAgICAgIHZhciB0eXBlID0g
IkdFVCI7CiAgICAgICAgICAgIGlmIChwYXJhbXMpIHsKICAgICAgICAgICAgICAgIGlmIChqUXVl
cnkuaXNGdW5jdGlvbihwYXJhbXMpKSB7CiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sgPSBw
YXJhbXM7CiAgICAgICAgICAgICAgICAgICAgcGFyYW1zID0gbnVsbDsKICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcGFyYW1zID0galF1ZXJ5LnBhcmFtKHBhcmFt
cyk7CiAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJQT1NUIjsKICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgICAgIGpR
dWVyeS5hamF4KHsKICAgICAgICAgICAgICAgIHVybDogdXJsLAogICAgICAgICAgICAgICAgdHlw
ZTogdHlwZSwKICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAiaHRtbCIsCiAgICAgICAgICAgICAg
ICBkYXRhOiBwYXJhbXMsCiAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKHJlcywg
c3RhdHVzKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAic3VjY2VzcyIgfHwg
c3RhdHVzID09ICJub3Rtb2RpZmllZCIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5o
dG1sKHNlbGVjdG9yID8galF1ZXJ5KCI8ZGl2Lz4iKS5hcHBlbmQocmVzLnJlc3BvbnNlVGV4dC5y
ZXBsYWNlKC88c2NyaXB0KC58XHMpKj9cL3NjcmlwdD4vZywgIiIpKS5maW5kKHNlbGVjdG9yKSA6
IHJlcy5yZXNwb25zZVRleHQpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICBzZWxmLmVhY2goY2FsbGJhY2ssIFtyZXMucmVzcG9uc2VUZXh0LCBzdGF0dXMsIHJlc10p
OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgcmV0dXJuIHRo
aXM7CiAgICAgICAgfSwKICAgICAgICBzZXJpYWxpemU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAg
ICAgcmV0dXJuIGpRdWVyeS5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpOwogICAgICAgIH0s
CiAgICAgICAgc2VyaWFsaXplQXJyYXk6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcmV0dXJu
IHRoaXMubWFwKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkubm9k
ZU5hbWUodGhpcywgImZvcm0iKSA/IGpRdWVyeS5tYWtlQXJyYXkodGhpcy5lbGVtZW50cykgOiB0
aGlzOwogICAgICAgICAgICB9KS5maWx0ZXIoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXMubmFtZSAmJiAhdGhpcy5kaXNhYmxlZCAmJiAodGhpcy5jaGVja2VkIHx8IC9z
ZWxlY3R8dGV4dGFyZWEvaS50ZXN0KHRoaXMubm9kZU5hbWUpIHx8IC90ZXh0fGhpZGRlbnxwYXNz
d29yZC9pLnRlc3QodGhpcy50eXBlKSk7CiAgICAgICAgICAgIH0pLm1hcChmdW5jdGlvbiAoaSwg
ZWxlbSkgewogICAgICAgICAgICAgICAgdmFyIHZhbCA9IGpRdWVyeSh0aGlzKS52YWwoKTsKICAg
ICAgICAgICAgICAgIHJldHVybiB2YWwgPT0gbnVsbCA/IG51bGwgOiB2YWwuY29uc3RydWN0b3Ig
PT0gQXJyYXkgPyBqUXVlcnkubWFwKHZhbCwgZnVuY3Rpb24gKHZhbCwgaSkgewogICAgICAgICAg
ICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGVsZW0ubmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbAogICAgICAgICAgICAgICAgICAg
IH07CiAgICAgICAgICAgICAgICB9KSA6IHsKICAgICAgICAgICAgICAgICAgICBuYW1lOiBlbGVt
Lm5hbWUsCiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZhbAogICAgICAgICAgICAgICAgfTsK
ICAgICAgICAgICAgfSkuZ2V0KCk7CiAgICAgICAgfQogICAgfSk7CiAgICBqUXVlcnkuZWFjaCgi
YWpheFN0YXJ0LGFqYXhTdG9wLGFqYXhDb21wbGV0ZSxhamF4RXJyb3IsYWpheFN1Y2Nlc3MsYWph
eFNlbmQiLnNwbGl0KCIsIiksIGZ1bmN0aW9uIChpLCBvKSB7CiAgICAgICAgalF1ZXJ5LmZuW29d
ID0gZnVuY3Rpb24gKGYpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmluZChvLCBmKTsKICAg
ICAgICB9OwogICAgfSk7CiAgICB2YXIganNjID0gbm93KCk7CiAgICBqUXVlcnkuZXh0ZW5kKHsK
ICAgICAgICBnZXQ6IGZ1bmN0aW9uICh1cmwsIGRhdGEsIGNhbGxiYWNrLCB0eXBlKSB7CiAgICAg
ICAgICAgIGlmIChqUXVlcnkuaXNGdW5jdGlvbihkYXRhKSkgewogICAgICAgICAgICAgICAgY2Fs
bGJhY2sgPSBkYXRhOwogICAgICAgICAgICAgICAgZGF0YSA9IG51bGw7CiAgICAgICAgICAgIH0K
ICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5hamF4KHsKICAgICAgICAgICAgICAgIHR5cGU6ICJH
RVQiLAogICAgICAgICAgICAgICAgdXJsOiB1cmwsCiAgICAgICAgICAgICAgICBkYXRhOiBkYXRh
LAogICAgICAgICAgICAgICAgc3VjY2VzczogY2FsbGJhY2ssCiAgICAgICAgICAgICAgICBkYXRh
VHlwZTogdHlwZQogICAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICAgIGdldFNjcmlwdDog
ZnVuY3Rpb24gKHVybCwgY2FsbGJhY2spIHsKICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5nZXQo
dXJsLCBudWxsLCBjYWxsYmFjaywgInNjcmlwdCIpOwogICAgICAgIH0sCiAgICAgICAgZ2V0SlNP
TjogZnVuY3Rpb24gKHVybCwgZGF0YSwgY2FsbGJhY2spIHsKICAgICAgICAgICAgcmV0dXJuIGpR
dWVyeS5nZXQodXJsLCBkYXRhLCBjYWxsYmFjaywgImpzb24iKTsKICAgICAgICB9LAogICAgICAg
IHBvc3Q6IGZ1bmN0aW9uICh1cmwsIGRhdGEsIGNhbGxiYWNrLCB0eXBlKSB7CiAgICAgICAgICAg
IGlmIChqUXVlcnkuaXNGdW5jdGlvbihkYXRhKSkgewogICAgICAgICAgICAgICAgY2FsbGJhY2sg
PSBkYXRhOwogICAgICAgICAgICAgICAgZGF0YSA9IHt9OwogICAgICAgICAgICB9CiAgICAgICAg
ICAgIHJldHVybiBqUXVlcnkuYWpheCh7CiAgICAgICAgICAgICAgICB0eXBlOiAiUE9TVCIsCiAg
ICAgICAgICAgICAgICB1cmw6IHVybCwKICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsCiAgICAg
ICAgICAgICAgICBzdWNjZXNzOiBjYWxsYmFjaywKICAgICAgICAgICAgICAgIGRhdGFUeXBlOiB0
eXBlCiAgICAgICAgICAgIH0pOwogICAgICAgIH0sCiAgICAgICAgYWpheFNldHVwOiBmdW5jdGlv
biAoc2V0dGluZ3MpIHsKICAgICAgICAgICAgalF1ZXJ5LmV4dGVuZChqUXVlcnkuYWpheFNldHRp
bmdzLCBzZXR0aW5ncyk7CiAgICAgICAgfSwKICAgICAgICBhamF4U2V0dGluZ3M6IHsKICAgICAg
ICAgICAgdXJsOiBsb2NhdGlvbi5ocmVmLAogICAgICAgICAgICBnbG9iYWw6IHRydWUsCiAgICAg
ICAgICAgIHR5cGU6ICJHRVQiLAogICAgICAgICAgICB0aW1lb3V0OiAwLAogICAgICAgICAgICBj
b250ZW50VHlwZTogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIsCiAgICAgICAg
ICAgIHByb2Nlc3NEYXRhOiB0cnVlLAogICAgICAgICAgICBhc3luYzogdHJ1ZSwKICAgICAgICAg
ICAgZGF0YTogbnVsbCwKICAgICAgICAgICAgdXNlcm5hbWU6IG51bGwsCiAgICAgICAgICAgIHBh
c3N3b3JkOiBudWxsLAogICAgICAgICAgICBhY2NlcHRzOiB7CiAgICAgICAgICAgICAgICB4bWw6
ICJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sIiwKICAgICAgICAgICAgICAgIGh0bWw6ICJ0ZXh0
L2h0bWwiLAogICAgICAgICAgICAgICAgc2NyaXB0OiAidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0IiwKICAgICAgICAgICAgICAgIGpzb246ICJhcHBsaWNhdGlvbi9qc29u
LCB0ZXh0L2phdmFzY3JpcHQiLAogICAgICAgICAgICAgICAgdGV4dDogInRleHQvcGxhaW4iLAog
ICAgICAgICAgICAgICAgX2RlZmF1bHQ6ICIqLyoiCiAgICAgICAgICAgIH0KICAgICAgICB9LAog
ICAgICAgIGxhc3RNb2RpZmllZDoge30sCiAgICAgICAgYWpheDogZnVuY3Rpb24gKHMpIHsKICAg
ICAgICAgICAgcyA9IGpRdWVyeS5leHRlbmQodHJ1ZSwgcywgalF1ZXJ5LmV4dGVuZCh0cnVlLCB7
fSwgalF1ZXJ5LmFqYXhTZXR0aW5ncywgcykpOwogICAgICAgICAgICB2YXIganNvbnAsIGpzcmUg
PSAvPVw/KCZ8JCkvZywKICAgICAgICAgICAgICAgIHN0YXR1cywgZGF0YSwgdHlwZSA9IHMudHlw
ZS50b1VwcGVyQ2FzZSgpOwogICAgICAgICAgICBpZiAocy5kYXRhICYmIHMucHJvY2Vzc0RhdGEg
JiYgdHlwZW9mIHMuZGF0YSAhPSAic3RyaW5nIikgewogICAgICAgICAgICAgICAgcy5kYXRhID0g
alF1ZXJ5LnBhcmFtKHMuZGF0YSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHMuZGF0
YVR5cGUgPT0gImpzb25wIikgewogICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gIkdFVCIpIHsK
ICAgICAgICAgICAgICAgICAgICBpZiAoIXMudXJsLm1hdGNoKGpzcmUpKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHMudXJsICs9IChzLnVybC5tYXRjaCgvXD8vKSA/ICImIiA6ICI/IikgKyAo
cy5qc29ucCB8fCAiY2FsbGJhY2siKSArICI9PyI7CiAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXMuZGF0YSB8fCAh
cy5kYXRhLm1hdGNoKGpzcmUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHMuZGF0YSA9IChz
LmRhdGEgPyBzLmRhdGEgKyAiJiIgOiAiIikgKyAocy5qc29ucCB8fCAiY2FsbGJhY2siKSArICI9
PyI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgcy5kYXRhVHlwZSA9ICJqc29uIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocy5k
YXRhVHlwZSA9PSAianNvbiIgJiYgKHMuZGF0YSAmJiBzLmRhdGEubWF0Y2goanNyZSkgfHwgcy51
cmwubWF0Y2goanNyZSkpKSB7CiAgICAgICAgICAgICAgICBqc29ucCA9ICJqc29ucCIgKyBqc2Mr
KzsKICAgICAgICAgICAgICAgIGlmIChzLmRhdGEpIHsKICAgICAgICAgICAgICAgICAgICBzLmRh
dGEgPSAocy5kYXRhICsgIiIpLnJlcGxhY2UoanNyZSwgIj0iICsganNvbnAgKyAiJDEiKTsKICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHMudXJsID0gcy51cmwucmVwbGFjZShqc3Jl
LCAiPSIgKyBqc29ucCArICIkMSIpOwogICAgICAgICAgICAgICAgcy5kYXRhVHlwZSA9ICJzY3Jp
cHQiOwogICAgICAgICAgICAgICAgd2luZG93W2pzb25wXSA9IGZ1bmN0aW9uICh0bXApIHsKICAg
ICAgICAgICAgICAgICAgICBkYXRhID0gdG1wOwogICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3Mo
KTsKICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZSgpOwogICAgICAgICAgICAgICAgICAgIHdp
bmRvd1tqc29ucF0gPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAg
ICAgICAgICAgICAgICAgICAgZGVsZXRlIHdpbmRvd1tqc29ucF07CiAgICAgICAgICAgICAgICAg
ICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgICAgICAgICAgICBpZiAoaGVhZCkgewogICAgICAg
ICAgICAgICAgICAgICAgICBoZWFkLnJlbW92ZUNoaWxkKHNjcmlwdCk7CiAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAo
cy5kYXRhVHlwZSA9PSAic2NyaXB0IiAmJiBzLmNhY2hlID09IG51bGwpIHsKICAgICAgICAgICAg
ICAgIHMuY2FjaGUgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocy5jYWNo
ZSA9PT0gZmFsc2UgJiYgdHlwZSA9PSAiR0VUIikgewogICAgICAgICAgICAgICAgdmFyIHRzID0g
bm93KCk7CiAgICAgICAgICAgICAgICB2YXIgcmV0ID0gcy51cmwucmVwbGFjZSgvKFw/fCYpXz0u
Kj8oJnwkKS8sICIkMV89IiArIHRzICsgIiQyIik7CiAgICAgICAgICAgICAgICBzLnVybCA9IHJl
dCArICgocmV0ID09IHMudXJsKSA/IChzLnVybC5tYXRjaCgvXD8vKSA/ICImIiA6ICI/IikgKyAi
Xz0iICsgdHMgOiAiIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHMuZGF0YSAmJiB0
eXBlID09ICJHRVQiKSB7CiAgICAgICAgICAgICAgICBzLnVybCArPSAocy51cmwubWF0Y2goL1w/
LykgPyAiJiIgOiAiPyIpICsgcy5kYXRhOwogICAgICAgICAgICAgICAgcy5kYXRhID0gbnVsbDsK
ICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocy5nbG9iYWwgJiYgIWpRdWVyeS5hY3RpdmUr
KykgewogICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpOwog
ICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciByZW1vdGUgPSAvXig/Olx3KzopP1wvXC8oW15c
Lz8jXSspLzsKICAgICAgICAgICAgaWYgKHMuZGF0YVR5cGUgPT0gInNjcmlwdCIgJiYgdHlwZSA9
PSAiR0VUIiAmJiByZW1vdGUudGVzdChzLnVybCkgJiYgcmVtb3RlLmV4ZWMocy51cmwpWzFdICE9
IGxvY2F0aW9uLmhvc3QpIHsKICAgICAgICAgICAgICAgIHZhciBoZWFkID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXTsKICAgICAgICAgICAgICAgIHZhciBzY3JpcHQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKICAgICAgICAgICAgICAgIHNjcmlw
dC5zcmMgPSBzLnVybDsKICAgICAgICAgICAgICAgIGlmIChzLnNjcmlwdENoYXJzZXQpIHsKICAg
ICAgICAgICAgICAgICAgICBzY3JpcHQuY2hhcnNldCA9IHMuc2NyaXB0Q2hhcnNldDsKICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghanNvbnApIHsKICAgICAgICAgICAgICAg
ICAgICB2YXIgZG9uZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIHNjcmlwdC5vbmxvYWQg
PSBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIWRvbmUgJiYgKCF0aGlzLnJlYWR5U3RhdGUgfHwgdGhpcy5yZWFkeVN0
YXRlID09ICJsb2FkZWQiIHx8IHRoaXMucmVhZHlTdGF0ZSA9PSAiY29tcGxldGUiKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdWNjZXNzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZSgp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZC5yZW1vdmVDaGlsZChzY3JpcHQpOwog
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTsKICAgICAg
ICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFy
IHJlcXVlc3REb25lID0gZmFsc2U7CiAgICAgICAgICAgIHZhciB4aHIgPSB3aW5kb3cuQWN0aXZl
WE9iamVjdCA/IG5ldyBBY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MSFRUUCIpIDogbmV3IFhN
TEh0dHBSZXF1ZXN0KCk7CiAgICAgICAgICAgIGlmIChzLnVzZXJuYW1lKSB7CiAgICAgICAgICAg
ICAgICB4aHIub3Blbih0eXBlLCBzLnVybCwgcy5hc3luYywgcy51c2VybmFtZSwgcy5wYXNzd29y
ZCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB4aHIub3Blbih0eXBlLCBz
LnVybCwgcy5hc3luYyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdHJ5IHsKICAgICAgICAg
ICAgICAgIGlmIChzLmRhdGEpIHsKICAgICAgICAgICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhl
YWRlcigiQ29udGVudC1UeXBlIiwgcy5jb250ZW50VHlwZSk7CiAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICBpZiAocy5pZk1vZGlmaWVkKSB7CiAgICAgICAgICAgICAgICAgICAgeGhy
LnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIiwgalF1ZXJ5Lmxhc3RNb2RpZmll
ZFtzLnVybF0gfHwgIlRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIik7CiAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcigiWC1SZXF1ZXN0ZWQt
V2l0aCIsICJYTUxIdHRwUmVxdWVzdCIpOwogICAgICAgICAgICAgICAgeGhyLnNldFJlcXVlc3RI
ZWFkZXIoIkFjY2VwdCIsIHMuZGF0YVR5cGUgJiYgcy5hY2NlcHRzW3MuZGF0YVR5cGVdID8gcy5h
Y2NlcHRzW3MuZGF0YVR5cGVdICsgIiwgKi8qIiA6IHMuYWNjZXB0cy5fZGVmYXVsdCk7CiAgICAg
ICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgIGlmIChzLmJlZm9yZVNlbmQgJiYgcy5i
ZWZvcmVTZW5kKHhociwgcykgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICBzLmdsb2JhbCAm
JiBqUXVlcnkuYWN0aXZlLS07CiAgICAgICAgICAgICAgICB4aHIuYWJvcnQoKTsKICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocy5nbG9i
YWwpIHsKICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC50cmlnZ2VyKCJhamF4U2VuZCIsIFt4
aHIsIHNdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgb25yZWFkeXN0YXRlY2hhbmdl
ID0gZnVuY3Rpb24gKGlzVGltZW91dCkgewogICAgICAgICAgICAgICAgICAgIGlmICghcmVxdWVz
dERvbmUgJiYgeGhyICYmICh4aHIucmVhZHlTdGF0ZSA9PSA0IHx8IGlzVGltZW91dCA9PSAidGlt
ZW91dCIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3REb25lID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGl2YWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNsZWFySW50ZXJ2YWwoaXZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdmFs
ID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0dXMgPSBpc1RpbWVvdXQgPT0gInRpbWVvdXQiICYmICJ0aW1lb3V0IiB8fCAhalF1ZXJ5
Lmh0dHBTdWNjZXNzKHhocikgJiYgImVycm9yIiB8fCBzLmlmTW9kaWZpZWQgJiYgalF1ZXJ5Lmh0
dHBOb3RNb2RpZmllZCh4aHIsIHMudXJsKSAmJiAibm90bW9kaWZpZWQiIHx8ICJzdWNjZXNzIjsK
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAic3VjY2VzcyIpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YSA9IGpRdWVyeS5odHRwRGF0YSh4aHIsIHMuZGF0YVR5cGUsIHMuZGF0YUZpbHRlcik7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdHVzID0gInBhcnNlcmVycm9yIjsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoc3RhdHVzID09ICJzdWNjZXNzIikgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIG1vZFJlczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kUmVzID0geGhyLmdldFJlc3BvbnNlSGVhZGVy
KCJMYXN0LU1vZGlmaWVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChl
KSB7fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMuaWZNb2RpZmllZCAmJiBtb2RS
ZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkubGFzdE1vZGlmaWVk
W3MudXJsXSA9IG1vZFJlczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghanNvbnApIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdWNjZXNzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVl
cnkuaGFuZGxlRXJyb3IocywgeGhyLCBzdGF0dXMpOwogICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlKCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChzLmFzeW5jKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHIgPSBudWxs
OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKHMuYXN5bmMpIHsKICAgICAgICAgICAgICAgIHZh
ciBpdmFsID0gc2V0SW50ZXJ2YWwob25yZWFkeXN0YXRlY2hhbmdlLCAxMyk7CiAgICAgICAgICAg
ICAgICBpZiAocy50aW1lb3V0ID4gMCkgewogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGhyKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB4aHIuYWJvcnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghcmVxdWVzdERvbmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
bnJlYWR5c3RhdGVjaGFuZ2UoInRpbWVvdXQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sIHMudGlt
ZW91dCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdHJ5IHsK
ICAgICAgICAgICAgICAgIHhoci5zZW5kKHMuZGF0YSk7CiAgICAgICAgICAgIH0gY2F0Y2ggKGUp
IHsKICAgICAgICAgICAgICAgIGpRdWVyeS5oYW5kbGVFcnJvcihzLCB4aHIsIG51bGwsIGUpOwog
ICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghcy5hc3luYykgewogICAgICAgICAgICAgICAg
b25yZWFkeXN0YXRlY2hhbmdlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZnVuY3Rpb24g
c3VjY2VzcygpIHsKICAgICAgICAgICAgICAgIGlmIChzLnN1Y2Nlc3MpIHsKICAgICAgICAgICAg
ICAgICAgICBzLnN1Y2Nlc3MoZGF0YSwgc3RhdHVzKTsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgIGlmIChzLmdsb2JhbCkgewogICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVu
dC50cmlnZ2VyKCJhamF4U3VjY2VzcyIsIFt4aHIsIHNdKTsKICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBjb21wbGV0ZSgpIHsKICAgICAgICAgICAg
ICAgIGlmIChzLmNvbXBsZXRlKSB7CiAgICAgICAgICAgICAgICAgICAgcy5jb21wbGV0ZSh4aHIs
IHN0YXR1cyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocy5nbG9iYWwp
IHsKICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZXZlbnQudHJpZ2dlcigiYWpheENvbXBsZXRl
IiwgW3hociwgc10pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHMuZ2xv
YmFsICYmICEtLWpRdWVyeS5hY3RpdmUpIHsKICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZXZl
bnQudHJpZ2dlcigiYWpheFN0b3AiKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQog
ICAgICAgICAgICByZXR1cm4geGhyOwogICAgICAgIH0sCiAgICAgICAgaGFuZGxlRXJyb3I6IGZ1
bmN0aW9uIChzLCB4aHIsIHN0YXR1cywgZSkgewogICAgICAgICAgICBpZiAocy5lcnJvcikgewog
ICAgICAgICAgICAgICAgcy5lcnJvcih4aHIsIHN0YXR1cywgZSk7CiAgICAgICAgICAgIH0KICAg
ICAgICAgICAgaWYgKHMuZ2xvYmFsKSB7CiAgICAgICAgICAgICAgICBqUXVlcnkuZXZlbnQudHJp
Z2dlcigiYWpheEVycm9yIiwgW3hociwgcywgZV0pOwogICAgICAgICAgICB9CiAgICAgICAgfSwK
ICAgICAgICBhY3RpdmU6IDAsCiAgICAgICAgaHR0cFN1Y2Nlc3M6IGZ1bmN0aW9uICh4aHIpIHsK
ICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiAheGhyLnN0YXR1cyAmJiBs
b2NhdGlvbi5wcm90b2NvbCA9PSAiZmlsZToiIHx8ICh4aHIuc3RhdHVzID49IDIwMCAmJiB4aHIu
c3RhdHVzIDwgMzAwKSB8fCB4aHIuc3RhdHVzID09IDMwNCB8fCB4aHIuc3RhdHVzID09IDEyMjMg
fHwgalF1ZXJ5LmJyb3dzZXIuc2FmYXJpICYmIHhoci5zdGF0dXMgPT0gdW5kZWZpbmVkOwogICAg
ICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
fSwKICAgICAgICBodHRwTm90TW9kaWZpZWQ6IGZ1bmN0aW9uICh4aHIsIHVybCkgewogICAgICAg
ICAgICB0cnkgewogICAgICAgICAgICAgICAgdmFyIHhoclJlcyA9IHhoci5nZXRSZXNwb25zZUhl
YWRlcigiTGFzdC1Nb2RpZmllZCIpOwogICAgICAgICAgICAgICAgcmV0dXJuIHhoci5zdGF0dXMg
PT0gMzA0IHx8IHhoclJlcyA9PSBqUXVlcnkubGFzdE1vZGlmaWVkW3VybF0gfHwgalF1ZXJ5LmJy
b3dzZXIuc2FmYXJpICYmIHhoci5zdGF0dXMgPT0gdW5kZWZpbmVkOwogICAgICAgICAgICB9IGNh
dGNoIChlKSB7fQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSwKICAgICAgICBo
dHRwRGF0YTogZnVuY3Rpb24gKHhociwgdHlwZSwgZmlsdGVyKSB7CiAgICAgICAgICAgIHZhciBj
dCA9IHhoci5nZXRSZXNwb25zZUhlYWRlcigiY29udGVudC10eXBlIiksCiAgICAgICAgICAgICAg
ICB4bWwgPSB0eXBlID09ICJ4bWwiIHx8ICF0eXBlICYmIGN0ICYmIGN0LmluZGV4T2YoInhtbCIp
ID49IDAsCiAgICAgICAgICAgICAgICBkYXRhID0geG1sID8geGhyLnJlc3BvbnNlWE1MIDogeGhy
LnJlc3BvbnNlVGV4dDsKICAgICAgICAgICAgaWYgKHhtbCAmJiBkYXRhLmRvY3VtZW50RWxlbWVu
dC50YWdOYW1lID09ICJwYXJzZXJlcnJvciIpIHsKICAgICAgICAgICAgICAgIHRocm93ICJwYXJz
ZXJlcnJvciI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGZpbHRlcikgewogICAgICAg
ICAgICAgICAgZGF0YSA9IGZpbHRlcihkYXRhLCB0eXBlKTsKICAgICAgICAgICAgfQogICAgICAg
ICAgICBpZiAodHlwZSA9PSAic2NyaXB0IikgewogICAgICAgICAgICAgICAgalF1ZXJ5Lmdsb2Jh
bEV2YWwoZGF0YSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHR5cGUgPT0gImpzb24i
KSB7CiAgICAgICAgICAgICAgICBkYXRhID0gZXZhbCgiKCIgKyBkYXRhICsgIikiKTsKICAgICAg
ICAgICAgfQogICAgICAgICAgICByZXR1cm4gZGF0YTsKICAgICAgICB9LAogICAgICAgIHBhcmFt
OiBmdW5jdGlvbiAoYSkgewogICAgICAgICAgICB2YXIgcyA9IFtdOwogICAgICAgICAgICBpZiAo
YS5jb25zdHJ1Y3RvciA9PSBBcnJheSB8fCBhLmpxdWVyeSkgewogICAgICAgICAgICAgICAgalF1
ZXJ5LmVhY2goYSwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIHMucHVzaChlbmNv
ZGVVUklDb21wb25lbnQodGhpcy5uYW1lKSArICI9IiArIGVuY29kZVVSSUNvbXBvbmVudCh0aGlz
LnZhbHVlKSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgIGZvciAodmFyIGogaW4gYSkgewogICAgICAgICAgICAgICAgICAgIGlmIChhW2pd
ICYmIGFbal0uY29uc3RydWN0b3IgPT0gQXJyYXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
alF1ZXJ5LmVhY2goYVtqXSwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcy5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChqKSArICI9IiArIGVuY29kZVVSSUNvbXBvbmVu
dCh0aGlzKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHMucHVzaChlbmNvZGVVUklDb21wb25l
bnQoaikgKyAiPSIgKyBlbmNvZGVVUklDb21wb25lbnQoalF1ZXJ5LmlzRnVuY3Rpb24oYVtqXSkg
PyBhW2pdKCkgOiBhW2pdKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBzLmpvaW4oIiYiKS5yZXBsYWNlKC8l
MjAvZywgIisiKTsKICAgICAgICB9CiAgICB9KTsKICAgIGpRdWVyeS5mbi5leHRlbmQoewogICAg
ICAgIHNob3c6IGZ1bmN0aW9uIChzcGVlZCwgY2FsbGJhY2spIHsKICAgICAgICAgICAgcmV0dXJu
IHNwZWVkID8gdGhpcy5hbmltYXRlKHsKICAgICAgICAgICAgICAgIGhlaWdodDogInNob3ciLAog
ICAgICAgICAgICAgICAgd2lkdGg6ICJzaG93IiwKICAgICAgICAgICAgICAgIG9wYWNpdHk6ICJz
aG93IgogICAgICAgICAgICB9LCBzcGVlZCwgY2FsbGJhY2spIDogdGhpcy5maWx0ZXIoIjpoaWRk
ZW4iKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHRoaXMuc3R5bGUuZGlzcGxh
eSA9IHRoaXMub2xkYmxvY2sgfHwgIiI7CiAgICAgICAgICAgICAgICBpZiAoalF1ZXJ5LmNzcyh0
aGlzLCAiZGlzcGxheSIpID09ICJub25lIikgewogICAgICAgICAgICAgICAgICAgIHZhciBlbGVt
ID0galF1ZXJ5KCI8IiArIHRoaXMudGFnTmFtZSArICIgLz4iKS5hcHBlbmRUbygiYm9keSIpOwog
ICAgICAgICAgICAgICAgICAgIHRoaXMuc3R5bGUuZGlzcGxheSA9IGVsZW0uY3NzKCJkaXNwbGF5
Iik7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3R5bGUuZGlzcGxheSA9PSAibm9uZSIp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsK
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxlbS5yZW1vdmUoKTsK
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkuZW5kKCk7CiAgICAgICAgfSwKICAgICAg
ICBoaWRlOiBmdW5jdGlvbiAoc3BlZWQsIGNhbGxiYWNrKSB7CiAgICAgICAgICAgIHJldHVybiBz
cGVlZCA/IHRoaXMuYW5pbWF0ZSh7CiAgICAgICAgICAgICAgICBoZWlnaHQ6ICJoaWRlIiwKICAg
ICAgICAgICAgICAgIHdpZHRoOiAiaGlkZSIsCiAgICAgICAgICAgICAgICBvcGFjaXR5OiAiaGlk
ZSIKICAgICAgICAgICAgfSwgc3BlZWQsIGNhbGxiYWNrKSA6IHRoaXMuZmlsdGVyKCI6dmlzaWJs
ZSIpLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdGhpcy5vbGRibG9jayA9IHRo
aXMub2xkYmxvY2sgfHwgalF1ZXJ5LmNzcyh0aGlzLCAiZGlzcGxheSIpOwogICAgICAgICAgICAg
ICAgdGhpcy5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICB9KS5lbmQoKTsKICAg
ICAgICB9LAogICAgICAgIF90b2dnbGU6IGpRdWVyeS5mbi50b2dnbGUsCiAgICAgICAgdG9nZ2xl
OiBmdW5jdGlvbiAoZm4sIGZuMikgewogICAgICAgICAgICByZXR1cm4galF1ZXJ5LmlzRnVuY3Rp
b24oZm4pICYmIGpRdWVyeS5pc0Z1bmN0aW9uKGZuMikgPyB0aGlzLl90b2dnbGUuYXBwbHkodGhp
cywgYXJndW1lbnRzKSA6IGZuID8gdGhpcy5hbmltYXRlKHsKICAgICAgICAgICAgICAgIGhlaWdo
dDogInRvZ2dsZSIsCiAgICAgICAgICAgICAgICB3aWR0aDogInRvZ2dsZSIsCiAgICAgICAgICAg
ICAgICBvcGFjaXR5OiAidG9nZ2xlIgogICAgICAgICAgICB9LCBmbiwgZm4yKSA6IHRoaXMuZWFj
aChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBqUXVlcnkodGhpcylbalF1ZXJ5KHRoaXMp
LmlzKCI6aGlkZGVuIikgPyAic2hvdyIgOiAiaGlkZSJdKCk7CiAgICAgICAgICAgIH0pOwogICAg
ICAgIH0sCiAgICAgICAgc2xpZGVEb3duOiBmdW5jdGlvbiAoc3BlZWQsIGNhbGxiYWNrKSB7CiAg
ICAgICAgICAgIHJldHVybiB0aGlzLmFuaW1hdGUoewogICAgICAgICAgICAgICAgaGVpZ2h0OiAi
c2hvdyIKICAgICAgICAgICAgfSwgc3BlZWQsIGNhbGxiYWNrKTsKICAgICAgICB9LAogICAgICAg
IHNsaWRlVXA6IGZ1bmN0aW9uIChzcGVlZCwgY2FsbGJhY2spIHsKICAgICAgICAgICAgcmV0dXJu
IHRoaXMuYW5pbWF0ZSh7CiAgICAgICAgICAgICAgICBoZWlnaHQ6ICJoaWRlIgogICAgICAgICAg
ICB9LCBzcGVlZCwgY2FsbGJhY2spOwogICAgICAgIH0sCiAgICAgICAgc2xpZGVUb2dnbGU6IGZ1
bmN0aW9uIChzcGVlZCwgY2FsbGJhY2spIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuYW5pbWF0
ZSh7CiAgICAgICAgICAgICAgICBoZWlnaHQ6ICJ0b2dnbGUiCiAgICAgICAgICAgIH0sIHNwZWVk
LCBjYWxsYmFjayk7CiAgICAgICAgfSwKICAgICAgICBmYWRlSW46IGZ1bmN0aW9uIChzcGVlZCwg
Y2FsbGJhY2spIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuYW5pbWF0ZSh7CiAgICAgICAgICAg
ICAgICBvcGFjaXR5OiAic2hvdyIKICAgICAgICAgICAgfSwgc3BlZWQsIGNhbGxiYWNrKTsKICAg
ICAgICB9LAogICAgICAgIGZhZGVPdXQ6IGZ1bmN0aW9uIChzcGVlZCwgY2FsbGJhY2spIHsKICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuYW5pbWF0ZSh7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAi
aGlkZSIKICAgICAgICAgICAgfSwgc3BlZWQsIGNhbGxiYWNrKTsKICAgICAgICB9LAogICAgICAg
IGZhZGVUbzogZnVuY3Rpb24gKHNwZWVkLCB0bywgY2FsbGJhY2spIHsKICAgICAgICAgICAgcmV0
dXJuIHRoaXMuYW5pbWF0ZSh7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiB0bwogICAgICAgICAg
ICB9LCBzcGVlZCwgY2FsbGJhY2spOwogICAgICAgIH0sCiAgICAgICAgYW5pbWF0ZTogZnVuY3Rp
b24gKHByb3AsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrKSB7CiAgICAgICAgICAgIHZhciBvcHRh
bGwgPSBqUXVlcnkuc3BlZWQoc3BlZWQsIGVhc2luZywgY2FsbGJhY2spOwogICAgICAgICAgICBy
ZXR1cm4gdGhpc1tvcHRhbGwucXVldWUgPT09IGZhbHNlID8gImVhY2giIDogInF1ZXVlIl0oZnVu
Y3Rpb24gKCkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZVR5cGUgIT0gMSkgewogICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgIHZhciBvcHQgPSBqUXVlcnkuZXh0ZW5kKHt9LCBvcHRhbGwpLAogICAgICAgICAgICAg
ICAgICAgIHAsIGhpZGRlbiA9IGpRdWVyeSh0aGlzKS5pcygiOmhpZGRlbiIpLAogICAgICAgICAg
ICAgICAgICAgIHNlbGYgPSB0aGlzOwogICAgICAgICAgICAgICAgZm9yIChwIGluIHByb3ApIHsK
ICAgICAgICAgICAgICAgICAgICBpZiAocHJvcFtwXSA9PSAiaGlkZSIgJiYgaGlkZGVuIHx8IHBy
b3BbcF0gPT0gInNob3ciICYmICFoaWRkZW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG9wdC5jb21wbGV0ZS5jYWxsKHRoaXMpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICBpZiAocCA9PSAiaGVpZ2h0IiB8fCBwID09ICJ3aWR0aCIpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgb3B0LmRpc3BsYXkgPSBqUXVlcnkuY3NzKHRoaXMsICJkaXNwbGF5
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIG9wdC5vdmVyZmxvdyA9IHRoaXMuc3R5bGUub3Zl
cmZsb3c7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgaWYgKG9wdC5vdmVyZmxvdyAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgdGhp
cy5zdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iOwogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgb3B0LmN1ckFuaW0gPSBqUXVlcnkuZXh0ZW5kKHt9LCBwcm9wKTsKICAgICAgICAgICAg
ICAgIGpRdWVyeS5lYWNoKHByb3AsIGZ1bmN0aW9uIChuYW1lLCB2YWwpIHsKICAgICAgICAgICAg
ICAgICAgICB2YXIgZSA9IG5ldyBqUXVlcnkuZngoc2VsZiwgb3B0LCBuYW1lKTsKICAgICAgICAg
ICAgICAgICAgICBpZiAoL3RvZ2dsZXxzaG93fGhpZGUvLnRlc3QodmFsKSkgewogICAgICAgICAg
ICAgICAgICAgICAgICBlW3ZhbCA9PSAidG9nZ2xlIiA/IGhpZGRlbiA/ICJzaG93IiA6ICJoaWRl
IiA6IHZhbF0ocHJvcCk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHBhcnRzID0gdmFsLnRvU3RyaW5nKCkubWF0Y2goL14oWystXT0pPyhb
XGQrLS5dKykoLiopJC8pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBlLmN1
cih0cnVlKSB8fCAwOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFydHMpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBlbmQgPSBwYXJzZUZsb2F0KHBhcnRzWzJdKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0ID0gcGFydHNbM10gfHwgInB4IjsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bml0ICE9ICJweCIpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLnN0eWxlW25hbWVdID0gKGVuZCB8fCAxKSArIHVuaXQ7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSAoKGVuZCB8fCAxKSAvIGUu
Y3VyKHRydWUpKSAqIHN0YXJ0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
c3R5bGVbbmFtZV0gPSBzdGFydCArIHVuaXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFydHNbMV0pIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbmQgPSAoKHBhcnRzWzFdID09ICItPSIgPyAtMSA6IDEpICog
ZW5kKSArIHN0YXJ0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZS5jdXN0b20oc3RhcnQsIGVuZCwgdW5pdCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmN1c3RvbShz
dGFydCwgdmFsLCAiIik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICAgIHF1ZXVlOiBmdW5jdGlvbiAodHlwZSwg
Zm4pIHsKICAgICAgICAgICAgaWYgKGpRdWVyeS5pc0Z1bmN0aW9uKHR5cGUpIHx8ICh0eXBlICYm
IHR5cGUuY29uc3RydWN0b3IgPT0gQXJyYXkpKSB7CiAgICAgICAgICAgICAgICBmbiA9IHR5cGU7
CiAgICAgICAgICAgICAgICB0eXBlID0gImZ4IjsKICAgICAgICAgICAgfQogICAgICAgICAgICBp
ZiAoIXR5cGUgfHwgKHR5cGVvZiB0eXBlID09ICJzdHJpbmciICYmICFmbikpIHsKICAgICAgICAg
ICAgICAgIHJldHVybiBxdWV1ZSh0aGlzWzBdLCB0eXBlKTsKICAgICAgICAgICAgfQogICAgICAg
ICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmIChm
bi5jb25zdHJ1Y3RvciA9PSBBcnJheSkgewogICAgICAgICAgICAgICAgICAgIHF1ZXVlKHRoaXMs
IHR5cGUsIGZuKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
cXVldWUodGhpcywgdHlwZSkucHVzaChmbik7CiAgICAgICAgICAgICAgICAgICAgaWYgKHF1ZXVl
KHRoaXMsIHR5cGUpLmxlbmd0aCA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZuLmNh
bGwodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICB9KTsKICAgICAgICB9LAogICAgICAgIHN0b3A6IGZ1bmN0aW9uIChjbGVhclF1ZXVlLCBn
b3RvRW5kKSB7CiAgICAgICAgICAgIHZhciB0aW1lcnMgPSBqUXVlcnkudGltZXJzOwogICAgICAg
ICAgICBpZiAoY2xlYXJRdWV1ZSkgewogICAgICAgICAgICAgICAgdGhpcy5xdWV1ZShbXSk7CiAg
ICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAg
ICAgICAgIGZvciAodmFyIGkgPSB0aW1lcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAg
ICAgICAgICAgICAgICAgICBpZiAodGltZXJzW2ldLmVsZW0gPT0gdGhpcykgewogICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoZ290b0VuZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGltZXJzW2ldKHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbWVycy5zcGxpY2UoaSwgMSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgaWYgKCFnb3RvRW5kKSB7
CiAgICAgICAgICAgICAgICB0aGlzLmRlcXVldWUoKTsKICAgICAgICAgICAgfQogICAgICAgICAg
ICByZXR1cm4gdGhpczsKICAgICAgICB9CiAgICB9KTsKICAgIHZhciBxdWV1ZSA9IGZ1bmN0aW9u
IChlbGVtLCB0eXBlLCBhcnJheSkgewogICAgICAgICAgICBpZiAoZWxlbSkgewogICAgICAgICAg
ICAgICAgdHlwZSA9IHR5cGUgfHwgImZ4IjsKICAgICAgICAgICAgICAgIHZhciBxID0galF1ZXJ5
LmRhdGEoZWxlbSwgdHlwZSArICJxdWV1ZSIpOwogICAgICAgICAgICAgICAgaWYgKCFxIHx8IGFy
cmF5KSB7CiAgICAgICAgICAgICAgICAgICAgcSA9IGpRdWVyeS5kYXRhKGVsZW0sIHR5cGUgKyAi
cXVldWUiLCBqUXVlcnkubWFrZUFycmF5KGFycmF5KSk7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHE7CiAgICAgICAgfTsKICAgIGpRdWVyeS5mbi5k
ZXF1ZXVlID0gZnVuY3Rpb24gKHR5cGUpIHsKICAgICAgICB0eXBlID0gdHlwZSB8fCAiZngiOwog
ICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgcSA9
IHF1ZXVlKHRoaXMsIHR5cGUpOwogICAgICAgICAgICBxLnNoaWZ0KCk7CiAgICAgICAgICAgIGlm
IChxLmxlbmd0aCkgewogICAgICAgICAgICAgICAgcVswXS5jYWxsKHRoaXMpOwogICAgICAgICAg
ICB9CiAgICAgICAgfSk7CiAgICB9OwogICAgalF1ZXJ5LmV4dGVuZCh7CiAgICAgICAgc3BlZWQ6
IGZ1bmN0aW9uIChzcGVlZCwgZWFzaW5nLCBmbikgewogICAgICAgICAgICB2YXIgb3B0ID0gc3Bl
ZWQgJiYgc3BlZWQuY29uc3RydWN0b3IgPT0gT2JqZWN0ID8gc3BlZWQgOiB7CiAgICAgICAgICAg
ICAgICBjb21wbGV0ZTogZm4gfHwgIWZuICYmIGVhc2luZyB8fCBqUXVlcnkuaXNGdW5jdGlvbihz
cGVlZCkgJiYgc3BlZWQsCiAgICAgICAgICAgICAgICBkdXJhdGlvbjogc3BlZWQsCiAgICAgICAg
ICAgICAgICBlYXNpbmc6IGZuICYmIGVhc2luZyB8fCBlYXNpbmcgJiYgZWFzaW5nLmNvbnN0cnVj
dG9yICE9IEZ1bmN0aW9uICYmIGVhc2luZwogICAgICAgICAgICB9OwogICAgICAgICAgICBvcHQu
ZHVyYXRpb24gPSAob3B0LmR1cmF0aW9uICYmIG9wdC5kdXJhdGlvbi5jb25zdHJ1Y3RvciA9PSBO
dW1iZXIgPyBvcHQuZHVyYXRpb24gOiBqUXVlcnkuZnguc3BlZWRzW29wdC5kdXJhdGlvbl0pIHx8
IGpRdWVyeS5meC5zcGVlZHMuZGVmOwogICAgICAgICAgICBvcHQub2xkID0gb3B0LmNvbXBsZXRl
OwogICAgICAgICAgICBvcHQuY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAg
ICBpZiAob3B0LnF1ZXVlICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgIGpRdWVyeSh0
aGlzKS5kZXF1ZXVlKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoalF1
ZXJ5LmlzRnVuY3Rpb24ob3B0Lm9sZCkpIHsKICAgICAgICAgICAgICAgICAgICBvcHQub2xkLmNh
bGwodGhpcyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHJl
dHVybiBvcHQ7CiAgICAgICAgfSwKICAgICAgICBlYXNpbmc6IHsKICAgICAgICAgICAgbGluZWFy
OiBmdW5jdGlvbiAocCwgbiwgZmlyc3ROdW0sIGRpZmYpIHsKICAgICAgICAgICAgICAgIHJldHVy
biBmaXJzdE51bSArIGRpZmYgKiBwOwogICAgICAgICAgICB9LAogICAgICAgICAgICBzd2luZzog
ZnVuY3Rpb24gKHAsIG4sIGZpcnN0TnVtLCBkaWZmKSB7CiAgICAgICAgICAgICAgICByZXR1cm4g
KCgtTWF0aC5jb3MocCAqIE1hdGguUEkpIC8gMikgKyAwLjUpICogZGlmZiArIGZpcnN0TnVtOwog
ICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB0aW1lcnM6IFtdLAogICAgICAgIHRpbWVy
SWQ6IG51bGwsCiAgICAgICAgZng6IGZ1bmN0aW9uIChlbGVtLCBvcHRpb25zLCBwcm9wKSB7CiAg
ICAgICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7CiAgICAgICAgICAgIHRoaXMuZWxlbSA9
IGVsZW07CiAgICAgICAgICAgIHRoaXMucHJvcCA9IHByb3A7CiAgICAgICAgICAgIGlmICghb3B0
aW9ucy5vcmlnKSB7CiAgICAgICAgICAgICAgICBvcHRpb25zLm9yaWcgPSB7fTsKICAgICAgICAg
ICAgfQogICAgICAgIH0KICAgIH0pOwogICAgalF1ZXJ5LmZ4LnByb3RvdHlwZSA9IHsKICAgICAg
ICB1cGRhdGU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zdGVw
KSB7CiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSwgdGhp
cy5ub3csIHRoaXMpOwogICAgICAgICAgICB9KGpRdWVyeS5meC5zdGVwW3RoaXMucHJvcF0gfHwg
alF1ZXJ5LmZ4LnN0ZXAuX2RlZmF1bHQpKHRoaXMpOwogICAgICAgICAgICBpZiAodGhpcy5wcm9w
ID09ICJoZWlnaHQiIHx8IHRoaXMucHJvcCA9PSAid2lkdGgiKSB7CiAgICAgICAgICAgICAgICB0
aGlzLmVsZW0uc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICAgICAgICAgIH0KICAgICAgICB9
LAogICAgICAgIGN1cjogZnVuY3Rpb24gKGZvcmNlKSB7CiAgICAgICAgICAgIGlmICh0aGlzLmVs
ZW1bdGhpcy5wcm9wXSAhPSBudWxsICYmIHRoaXMuZWxlbS5zdHlsZVt0aGlzLnByb3BdID09IG51
bGwpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVsZW1bdGhpcy5wcm9wXTsKICAgICAg
ICAgICAgfQogICAgICAgICAgICB2YXIgciA9IHBhcnNlRmxvYXQoalF1ZXJ5LmNzcyh0aGlzLmVs
ZW0sIHRoaXMucHJvcCwgZm9yY2UpKTsKICAgICAgICAgICAgcmV0dXJuIHIgJiYgciA+IC0xMDAw
MCA/IHIgOiBwYXJzZUZsb2F0KGpRdWVyeS5jdXJDU1ModGhpcy5lbGVtLCB0aGlzLnByb3ApKSB8
fCAwOwogICAgICAgIH0sCiAgICAgICAgY3VzdG9tOiBmdW5jdGlvbiAoZnJvbSwgdG8sIHVuaXQp
IHsKICAgICAgICAgICAgdGhpcy5zdGFydFRpbWUgPSBub3coKTsKICAgICAgICAgICAgdGhpcy5z
dGFydCA9IGZyb207CiAgICAgICAgICAgIHRoaXMuZW5kID0gdG87CiAgICAgICAgICAgIHRoaXMu
dW5pdCA9IHVuaXQgfHwgdGhpcy51bml0IHx8ICJweCI7CiAgICAgICAgICAgIHRoaXMubm93ID0g
dGhpcy5zdGFydDsKICAgICAgICAgICAgdGhpcy5wb3MgPSB0aGlzLnN0YXRlID0gMDsKICAgICAg
ICAgICAgdGhpcy51cGRhdGUoKTsKICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgICAg
ICAgICAgZnVuY3Rpb24gdChnb3RvRW5kKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5z
dGVwKGdvdG9FbmQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHQuZWxlbSA9IHRoaXMuZWxl
bTsKICAgICAgICAgICAgalF1ZXJ5LnRpbWVycy5wdXNoKHQpOwogICAgICAgICAgICBpZiAoalF1
ZXJ5LnRpbWVySWQgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgalF1ZXJ5LnRpbWVySWQgPSBz
ZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHRpbWVycyA9
IGpRdWVyeS50aW1lcnM7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
aW1lcnMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aW1lcnNb
aV0oKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXJzLnNwbGljZShpLS0sIDEp
OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgIGlmICghdGltZXJzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAg
ICBjbGVhckludGVydmFsKGpRdWVyeS50aW1lcklkKTsKICAgICAgICAgICAgICAgICAgICAgICAg
alF1ZXJ5LnRpbWVySWQgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgIH0sIDEzKTsKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgc2hvdzogZnVuY3Rp
b24gKCkgewogICAgICAgICAgICB0aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnByb3BdID0galF1ZXJ5
LmF0dHIodGhpcy5lbGVtLnN0eWxlLCB0aGlzLnByb3ApOwogICAgICAgICAgICB0aGlzLm9wdGlv
bnMuc2hvdyA9IHRydWU7CiAgICAgICAgICAgIHRoaXMuY3VzdG9tKDAsIHRoaXMuY3VyKCkpOwog
ICAgICAgICAgICBpZiAodGhpcy5wcm9wID09ICJ3aWR0aCIgfHwgdGhpcy5wcm9wID09ICJoZWln
aHQiKSB7CiAgICAgICAgICAgICAgICB0aGlzLmVsZW0uc3R5bGVbdGhpcy5wcm9wXSA9ICIxcHgi
OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGpRdWVyeSh0aGlzLmVsZW0pLnNob3coKTsKICAg
ICAgICB9LAogICAgICAgIGhpZGU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdGhpcy5vcHRp
b25zLm9yaWdbdGhpcy5wcm9wXSA9IGpRdWVyeS5hdHRyKHRoaXMuZWxlbS5zdHlsZSwgdGhpcy5w
cm9wKTsKICAgICAgICAgICAgdGhpcy5vcHRpb25zLmhpZGUgPSB0cnVlOwogICAgICAgICAgICB0
aGlzLmN1c3RvbSh0aGlzLmN1cigpLCAwKTsKICAgICAgICB9LAogICAgICAgIHN0ZXA6IGZ1bmN0
aW9uIChnb3RvRW5kKSB7CiAgICAgICAgICAgIHZhciB0ID0gbm93KCk7CiAgICAgICAgICAgIGlm
IChnb3RvRW5kIHx8IHQgPiB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKyB0aGlzLnN0YXJ0VGltZSkg
ewogICAgICAgICAgICAgICAgdGhpcy5ub3cgPSB0aGlzLmVuZDsKICAgICAgICAgICAgICAgIHRo
aXMucG9zID0gdGhpcy5zdGF0ZSA9IDE7CiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZSgpOwog
ICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmN1ckFuaW1bdGhpcy5wcm9wXSA9IHRydWU7CiAg
ICAgICAgICAgICAgICB2YXIgZG9uZSA9IHRydWU7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBp
IGluIHRoaXMub3B0aW9ucy5jdXJBbmltKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMu
b3B0aW9ucy5jdXJBbmltW2ldICE9PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRv
bmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICBpZiAoZG9uZSkgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlv
bnMuZGlzcGxheSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbS5z
dHlsZS5vdmVyZmxvdyA9IHRoaXMub3B0aW9ucy5vdmVyZmxvdzsKICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy5lbGVtLnN0eWxlLmRpc3BsYXkgPSB0aGlzLm9wdGlvbnMuZGlzcGxheTsKICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGpRdWVyeS5jc3ModGhpcy5lbGVtLCAiZGlzcGxheSIp
ID09ICJub25lIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtLnN0eWxl
LmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuaGlkZSkgewog
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW0uc3R5bGUuZGlzcGxheSA9ICJub25lIjsK
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9u
cy5oaWRlIHx8IHRoaXMub3B0aW9ucy5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciAodmFyIHAgaW4gdGhpcy5vcHRpb25zLmN1ckFuaW0pIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGpRdWVyeS5hdHRyKHRoaXMuZWxlbS5zdHlsZSwgcCwgdGhpcy5vcHRpb25zLm9yaWdb
cF0pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGRvbmUpIHsKICAgICAgICAgICAgICAg
ICAgICB0aGlzLm9wdGlvbnMuY29tcGxldGUuY2FsbCh0aGlzLmVsZW0pOwogICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgdmFyIG4gPSB0IC0gdGhpcy5zdGFydFRpbWU7CiAgICAgICAgICAgICAg
ICB0aGlzLnN0YXRlID0gbiAvIHRoaXMub3B0aW9ucy5kdXJhdGlvbjsKICAgICAgICAgICAgICAg
IHRoaXMucG9zID0galF1ZXJ5LmVhc2luZ1t0aGlzLm9wdGlvbnMuZWFzaW5nIHx8IChqUXVlcnku
ZWFzaW5nLnN3aW5nID8gInN3aW5nIiA6ICJsaW5lYXIiKV0odGhpcy5zdGF0ZSwgbiwgMCwgMSwg
dGhpcy5vcHRpb25zLmR1cmF0aW9uKTsKICAgICAgICAgICAgICAgIHRoaXMubm93ID0gdGhpcy5z
dGFydCArICgodGhpcy5lbmQgLSB0aGlzLnN0YXJ0KSAqIHRoaXMucG9zKTsKICAgICAgICAgICAg
ICAgIHRoaXMudXBkYXRlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgfQogICAgfTsKICAgIGpRdWVyeS5leHRlbmQoalF1ZXJ5LmZ4LCB7CiAgICAgICAg
c3BlZWRzOiB7CiAgICAgICAgICAgIHNsb3c6IDYwMCwKICAgICAgICAgICAgZmFzdDogMjAwLAog
ICAgICAgICAgICBkZWY6IDQwMAogICAgICAgIH0sCiAgICAgICAgc3RlcDogewogICAgICAgICAg
ICBzY3JvbGxMZWZ0OiBmdW5jdGlvbiAoZngpIHsKICAgICAgICAgICAgICAgIGZ4LmVsZW0uc2Ny
b2xsTGVmdCA9IGZ4Lm5vdzsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2Nyb2xsVG9wOiBm
dW5jdGlvbiAoZngpIHsKICAgICAgICAgICAgICAgIGZ4LmVsZW0uc2Nyb2xsVG9wID0gZngubm93
OwogICAgICAgICAgICB9LAogICAgICAgICAgICBvcGFjaXR5OiBmdW5jdGlvbiAoZngpIHsKICAg
ICAgICAgICAgICAgIGpRdWVyeS5hdHRyKGZ4LmVsZW0uc3R5bGUsICJvcGFjaXR5IiwgZngubm93
KTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgX2RlZmF1bHQ6IGZ1bmN0aW9uIChmeCkgewog
ICAgICAgICAgICAgICAgZnguZWxlbS5zdHlsZVtmeC5wcm9wXSA9IGZ4Lm5vdyArIGZ4LnVuaXQ7
CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KTsKICAgIGpRdWVyeS5mbi5vZmZzZXQgPSBm
dW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIGxlZnQgPSAwLAogICAgICAgICAgICB0b3AgPSAwLAog
ICAgICAgICAgICBlbGVtID0gdGhpc1swXSwKICAgICAgICAgICAgcmVzdWx0czsKICAgICAgICBp
ZiAoZWxlbSkgewogICAgICAgICAgICB3aXRoKGpRdWVyeS5icm93c2VyKSB7CiAgICAgICAgICAg
ICAgICB2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlLAogICAgICAgICAgICAgICAgICAgIG9m
ZnNldENoaWxkID0gZWxlbSwKICAgICAgICAgICAgICAgICAgICBvZmZzZXRQYXJlbnQgPSBlbGVt
Lm9mZnNldFBhcmVudCwKICAgICAgICAgICAgICAgICAgICBkb2MgPSBlbGVtLm93bmVyRG9jdW1l
bnQsCiAgICAgICAgICAgICAgICAgICAgc2FmYXJpMiA9IHNhZmFyaSAmJiBwYXJzZUludCh2ZXJz
aW9uKSA8IDUyMiAmJiAhL2Fkb2JlYWlyL2kudGVzdCh1c2VyQWdlbnQpLAogICAgICAgICAgICAg
ICAgICAgIGNzcyA9IGpRdWVyeS5jdXJDU1MsCiAgICAgICAgICAgICAgICAgICAgZml4ZWQgPSBj
c3MoZWxlbSwgInBvc2l0aW9uIikgPT0gImZpeGVkIjsKICAgICAgICAgICAgICAgIGlmIChlbGVt
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCkgewogICAgICAgICAgICAgICAgICAgIHZhciBib3ggPSBl
bGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICAgICAgICAgIGFkZChib3gu
bGVmdCArIE1hdGgubWF4KGRvYy5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCwgZG9jLmJvZHku
c2Nyb2xsTGVmdCksIGJveC50b3AgKyBNYXRoLm1heChkb2MuZG9jdW1lbnRFbGVtZW50LnNjcm9s
bFRvcCwgZG9jLmJvZHkuc2Nyb2xsVG9wKSk7CiAgICAgICAgICAgICAgICAgICAgYWRkKC1kb2Mu
ZG9jdW1lbnRFbGVtZW50LmNsaWVudExlZnQsIC1kb2MuZG9jdW1lbnRFbGVtZW50LmNsaWVudFRv
cCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGFkZChlbGVt
Lm9mZnNldExlZnQsIGVsZW0ub2Zmc2V0VG9wKTsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAo
b2Zmc2V0UGFyZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFkZChvZmZzZXRQYXJlbnQu
b2Zmc2V0TGVmdCwgb2Zmc2V0UGFyZW50Lm9mZnNldFRvcCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChtb3ppbGxhICYmICEvXnQoYWJsZXxkfGgpJC9pLnRlc3Qob2Zmc2V0UGFyZW50LnRh
Z05hbWUpIHx8IHNhZmFyaSAmJiAhc2FmYXJpMikgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9yZGVyKG9mZnNldFBhcmVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFmaXhlZCAmJiBjc3Mob2Zmc2V0UGFyZW50LCAicG9zaXRp
b24iKSA9PSAiZml4ZWQiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZCA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgb2Zm
c2V0Q2hpbGQgPSAvXmJvZHkkL2kudGVzdChvZmZzZXRQYXJlbnQudGFnTmFtZSkgPyBvZmZzZXRD
aGlsZCA6IG9mZnNldFBhcmVudDsKICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0UGFyZW50
ID0gb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgd2hpbGUgKHBhcmVudCAmJiBwYXJlbnQudGFnTmFtZSAmJiAhL15ib2R5
fGh0bWwkL2kudGVzdChwYXJlbnQudGFnTmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCEvXmlubGluZXx0YWJsZS4qJC9pLnRlc3QoY3NzKHBhcmVudCwgImRpc3BsYXkiKSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCgtcGFyZW50LnNjcm9sbExlZnQsIC1wYXJl
bnQuc2Nyb2xsVG9wKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobW96aWxsYSAmJiBjc3MocGFyZW50LCAib3ZlcmZsb3ciKSAhPSAidmlzaWJs
ZSIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcihwYXJlbnQpOwogICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVu
dC5wYXJlbnROb2RlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBp
ZiAoKHNhZmFyaTIgJiYgKGZpeGVkIHx8IGNzcyhvZmZzZXRDaGlsZCwgInBvc2l0aW9uIikgPT0g
ImFic29sdXRlIikpIHx8IChtb3ppbGxhICYmIGNzcyhvZmZzZXRDaGlsZCwgInBvc2l0aW9uIikg
IT0gImFic29sdXRlIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYWRkKC1kb2MuYm9keS5v
ZmZzZXRMZWZ0LCAtZG9jLmJvZHkub2Zmc2V0VG9wKTsKICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgaWYgKGZpeGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFk
ZChNYXRoLm1heChkb2MuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQsIGRvYy5ib2R5LnNjcm9s
bExlZnQpLCBNYXRoLm1heChkb2MuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCwgZG9jLmJvZHku
c2Nyb2xsVG9wKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgcmVzdWx0cyA9IHsKICAgICAgICAgICAgICAgICAgICB0b3A6IHRvcCwKICAg
ICAgICAgICAgICAgICAgICBsZWZ0OiBsZWZ0CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAg
ICB9CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIGJvcmRlcihlbGVtKSB7CiAgICAgICAgICAg
IGFkZChqUXVlcnkuY3VyQ1NTKGVsZW0sICJib3JkZXJMZWZ0V2lkdGgiLCB0cnVlKSwgalF1ZXJ5
LmN1ckNTUyhlbGVtLCAiYm9yZGVyVG9wV2lkdGgiLCB0cnVlKSk7CiAgICAgICAgfQogICAgICAg
IGZ1bmN0aW9uIGFkZChsLCB0KSB7CiAgICAgICAgICAgIGxlZnQgKz0gcGFyc2VJbnQobCwgMTAp
IHx8IDA7CiAgICAgICAgICAgIHRvcCArPSBwYXJzZUludCh0LCAxMCkgfHwgMDsKICAgICAgICB9
CiAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9OwogICAgalF1ZXJ5LmZuLmV4dGVuZCh7CiAg
ICAgICAgcG9zaXRpb246IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIGxlZnQgPSAwLAog
ICAgICAgICAgICAgICAgdG9wID0gMCwKICAgICAgICAgICAgICAgIHJlc3VsdHM7CiAgICAgICAg
ICAgIGlmICh0aGlzWzBdKSB7CiAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0UGFyZW50ID0gdGhp
cy5vZmZzZXRQYXJlbnQoKSwKICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSB0aGlzLm9mZnNl
dCgpLAogICAgICAgICAgICAgICAgICAgIHBhcmVudE9mZnNldCA9IC9eYm9keXxodG1sJC9pLnRl
c3Qob2Zmc2V0UGFyZW50WzBdLnRhZ05hbWUpID8gewogICAgICAgICAgICAgICAgICAgICAgICB0
b3A6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDAKICAgICAgICAgICAgICAgICAg
ICB9IDogb2Zmc2V0UGFyZW50Lm9mZnNldCgpOwogICAgICAgICAgICAgICAgb2Zmc2V0LnRvcCAt
PSBudW0odGhpcywgIm1hcmdpblRvcCIpOwogICAgICAgICAgICAgICAgb2Zmc2V0LmxlZnQgLT0g
bnVtKHRoaXMsICJtYXJnaW5MZWZ0Iik7CiAgICAgICAgICAgICAgICBwYXJlbnRPZmZzZXQudG9w
ICs9IG51bShvZmZzZXRQYXJlbnQsICJib3JkZXJUb3BXaWR0aCIpOwogICAgICAgICAgICAgICAg
cGFyZW50T2Zmc2V0LmxlZnQgKz0gbnVtKG9mZnNldFBhcmVudCwgImJvcmRlckxlZnRXaWR0aCIp
OwogICAgICAgICAgICAgICAgcmVzdWx0cyA9IHsKICAgICAgICAgICAgICAgICAgICB0b3A6IG9m
ZnNldC50b3AgLSBwYXJlbnRPZmZzZXQudG9wLAogICAgICAgICAgICAgICAgICAgIGxlZnQ6IG9m
ZnNldC5sZWZ0IC0gcGFyZW50T2Zmc2V0LmxlZnQKICAgICAgICAgICAgICAgIH07CiAgICAgICAg
ICAgIH0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICAgICAgfSwKICAgICAgICBvZmZz
ZXRQYXJlbnQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIG9mZnNldFBhcmVudCA9IHRo
aXNbMF0ub2Zmc2V0UGFyZW50OwogICAgICAgICAgICB3aGlsZSAob2Zmc2V0UGFyZW50ICYmICgh
L15ib2R5fGh0bWwkL2kudGVzdChvZmZzZXRQYXJlbnQudGFnTmFtZSkgJiYgalF1ZXJ5LmNzcyhv
ZmZzZXRQYXJlbnQsICJwb3NpdGlvbiIpID09ICJzdGF0aWMiKSkgewogICAgICAgICAgICAgICAg
b2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudDsKICAgICAgICAgICAgfQog
ICAgICAgICAgICByZXR1cm4galF1ZXJ5KG9mZnNldFBhcmVudCk7CiAgICAgICAgfQogICAgfSk7
CiAgICBqUXVlcnkuZWFjaChbIkxlZnQiLCAiVG9wIl0sIGZ1bmN0aW9uIChpLCBuYW1lKSB7CiAg
ICAgICAgdmFyIG1ldGhvZCA9ICJzY3JvbGwiICsgbmFtZTsKICAgICAgICBqUXVlcnkuZm5bbWV0
aG9kXSA9IGZ1bmN0aW9uICh2YWwpIHsKICAgICAgICAgICAgaWYgKCF0aGlzWzBdKSB7CiAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHZhbCAh
PSB1bmRlZmluZWQgPyB0aGlzLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdGhp
cyA9PSB3aW5kb3cgfHwgdGhpcyA9PSBkb2N1bWVudCA/IHdpbmRvdy5zY3JvbGxUbyghaSA/IHZh
bCA6IGpRdWVyeSh3aW5kb3cpLnNjcm9sbExlZnQoKSwgaSA/IHZhbCA6IGpRdWVyeSh3aW5kb3cp
LnNjcm9sbFRvcCgpKSA6IHRoaXNbbWV0aG9kXSA9IHZhbDsKICAgICAgICAgICAgfSkgOiB0aGlz
WzBdID09IHdpbmRvdyB8fCB0aGlzWzBdID09IGRvY3VtZW50ID8gc2VsZltpID8gInBhZ2VZT2Zm
c2V0IiA6ICJwYWdlWE9mZnNldCJdIHx8IGpRdWVyeS5ib3hNb2RlbCAmJiBkb2N1bWVudC5kb2N1
bWVudEVsZW1lbnRbbWV0aG9kXSB8fCBkb2N1bWVudC5ib2R5W21ldGhvZF0gOiB0aGlzWzBdW21l
dGhvZF07CiAgICAgICAgfTsKICAgIH0pOwogICAgalF1ZXJ5LmVhY2goWyJIZWlnaHQiLCAiV2lk
dGgiXSwgZnVuY3Rpb24gKGksIG5hbWUpIHsKICAgICAgICB2YXIgdGwgPSBpID8gIkxlZnQiIDog
IlRvcCIsCiAgICAgICAgICAgIGJyID0gaSA/ICJSaWdodCIgOiAiQm90dG9tIjsKICAgICAgICBq
UXVlcnkuZm5bImlubmVyIiArIG5hbWVdID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICByZXR1
cm4gdGhpc1tuYW1lLnRvTG93ZXJDYXNlKCldKCkgKyBudW0odGhpcywgInBhZGRpbmciICsgdGwp
ICsgbnVtKHRoaXMsICJwYWRkaW5nIiArIGJyKTsKICAgICAgICB9OwogICAgICAgIGpRdWVyeS5m
blsib3V0ZXIiICsgbmFtZV0gPSBmdW5jdGlvbiAobWFyZ2luKSB7CiAgICAgICAgICAgIHJldHVy
biB0aGlzWyJpbm5lciIgKyBuYW1lXSgpICsgbnVtKHRoaXMsICJib3JkZXIiICsgdGwgKyAiV2lk
dGgiKSArIG51bSh0aGlzLCAiYm9yZGVyIiArIGJyICsgIldpZHRoIikgKyAobWFyZ2luID8gbnVt
KHRoaXMsICJtYXJnaW4iICsgdGwpICsgbnVtKHRoaXMsICJtYXJnaW4iICsgYnIpIDogMCk7CiAg
ICAgICAgfTsKICAgIH0pOwp9KSgpOwpqUXVlcnkuYWpheFNldHVwKHsKICAgIGRhdGFUeXBlOiAi
c2NyaXB0IiwKICAgIGNhY2hlOiBmYWxzZQp9KTsKCmZ1bmN0aW9uIGhlYWRsaW5lX3JvdGF0ZSgp
IHsKICAgIGN1cnJlbnRfaGVhZGxpbmUgPSAob2xkX2hlYWRsaW5lICsgMSkgJSBoZWFkbGluZV9j
b3VudDsKICAgICQoImRpdi5oZWFkbGluZTplcSgiICsgb2xkX2hlYWRsaW5lICsgIikiKS5hbmlt
YXRlKHsKICAgICAgICBsZWZ0OiAtNjI4CiAgICB9LCAic2xvdyIsIGZ1bmN0aW9uICgpIHsKICAg
ICAgICAkKHRoaXMpLmNzcygibGVmdCIsICI2MzNweCIpOwogICAgfSk7CiAgICAkKCJkaXYuaGVh
ZGxpbmU6ZXEoIiArIGN1cnJlbnRfaGVhZGxpbmUgKyAiKSIpLnNob3coKS5hbmltYXRlKHsKICAg
ICAgICBsZWZ0OiAwCiAgICB9LCAic2xvdyIpOwogICAgb2xkX2hlYWRsaW5lID0gY3VycmVudF9o
ZWFkbGluZTsKfQpmdW5jdGlvbiBzZXRTYXZlZENhcmRJbkZvcm0oY2FyZE5hbWUsIGNhcmRUeXBl
LCB2YWwpIHsKICAgIGNhcmROYW1lLnZhbHVlID0gdmFsLnNwbGl0KCJ8IilbMF07CiAgICBjYXJk
VHlwZS52YWx1ZSA9IHZhbC5zcGxpdCgifCIpWzFdOwogICAgc2hvd0hpZGVTZWN1cml0eUNvZGUo
Y2FyZFR5cGUudmFsdWUsICJzYXZlZENhcmRDb2RlVGQiKTsKfQpmdW5jdGlvbiBzaG93SGlkZVNl
Y3VyaXR5Q29kZShjYXJkVHlwZSwgc2VjdXJpdHlDb2RlSWQpIHsKICAgIGlmIChjYXJkVHlwZSA9
PSAiVUFUUCIpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWN1cml0eUNvZGVJ
ZCkuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwogICAgfSBlbHNlIHsKICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChzZWN1cml0eUNvZGVJZCkuc3R5bGUudmlzaWJpbGl0eSA9ICJ2
aXNpYmxlIjsKICAgIH0KfShmdW5jdGlvbiAoJCkgewogICAgJC5mbi5jdXN0Q2hlY2tCb3ggPSBm
dW5jdGlvbiAob3B0aW9ucykgewogICAgICAgIHZhciBkZWZhdWx0cyA9IHsKICAgICAgICAgICAg
ZGlzYWJsZV9hbGw6IGZhbHNlLAogICAgICAgICAgICB3cmFwcGVyY2xhc3M6ICJncm91cCIKICAg
ICAgICB9OwogICAgICAgIHZhciBvcHRzID0gJC5leHRlbmQoZGVmYXVsdHMsIG9wdGlvbnMpOwog
ICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgb2Jq
ID0gJCh0aGlzKTsKICAgICAgICAgICAgJC5mbi5idWlsZGJveCA9IGZ1bmN0aW9uICh0aGlzRWxt
KSB7CiAgICAgICAgICAgICAgICB2YXIgY3VyckVsbSA9ICQodGhpc0VsbSk7CiAgICAgICAgICAg
ICAgICAkKGN1cnJFbG0pLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogIm5vbmUi
CiAgICAgICAgICAgICAgICB9KS5iZWZvcmUoJzxzcGFuIGNsYXNzPSJjdXN0X2NoZWNrYm94Ij4m
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+Jyk7CiAgICAgICAgICAgICAgICB2YXIgaXND
aGVja2VkID0gJChjdXJyRWxtKS5hdHRyKCJjaGVja2VkIik7CiAgICAgICAgICAgICAgICB2YXIg
Ym94dHlwZSA9ICQoY3VyckVsbSkuYXR0cigidHlwZSIpOwogICAgICAgICAgICAgICAgdmFyIGRp
c2FibGVkID0gJChjdXJyRWxtKS5hdHRyKCJkaXNhYmxlZCIpOwogICAgICAgICAgICAgICAgaWYg
KGJveHR5cGUgPT09ICJjaGVja2JveCIpIHsKICAgICAgICAgICAgICAgICAgICAkKGN1cnJFbG0p
LnByZXYoInNwYW4iKS5hZGRDbGFzcygiY2hlY2tib3giKTsKICAgICAgICAgICAgICAgICAgICBp
ZiAoZGlzYWJsZWQgfHwgb3B0cy5kaXNhYmxlX2FsbCkgewogICAgICAgICAgICAgICAgICAgICAg
ICBib3h0eXBlID0gImNoZWNrYm94X2Rpc2FibGVkIjsKICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICQoY3VyckVsbSkucHJl
digic3BhbiIpLmFkZENsYXNzKCJyYWRpbyIpOwogICAgICAgICAgICAgICAgICAgIGlmIChkaXNh
YmxlZCB8fCBvcHRzLmRpc2FibGVfYWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJveHR5
cGUgPSAicmFkaW9fZGlzYWJsZWQiOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgIGlmIChpc0NoZWNrZWQpIHsKICAgICAgICAgICAgICAgICAg
ICAkKGN1cnJFbG0pLnByZXYoInNwYW4iKS5hZGRDbGFzcygiY3VzdF8iICsgYm94dHlwZSArICJf
b24iKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJChjdXJy
RWxtKS5wcmV2KCJzcGFuIikuYWRkQ2xhc3MoImN1c3RfIiArIGJveHR5cGUgKyAiX29mZiIpOwog
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG9wdHMuZGlzYWJsZV9hbGwpIHsK
ICAgICAgICAgICAgICAgICAgICAkKGN1cnJFbG0pLmF0dHIoImRpc2FibGVkIiwgImRpc2FibGVk
Iik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgICAgICQuZm4uYnVp
bGRib3goJChvYmopKTsKICAgICAgICAgICAgJCgiLiIgKyBvcHRzLndyYXBwZXJjbGFzcyArICIg
bGFiZWwiKS51bmJpbmQoKS5jbGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBpZiAo
IW9wdHMuZGlzYWJsZV9hbGwpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgY3VzdGJveCA9ICQo
dGhpcykucHJldigpLnByZXYoKTsKICAgICAgICAgICAgICAgICAgICB2YXIgYm94dHlwZSA9ICQo
Y3VzdGJveCkubmV4dCgiaW5wdXQiKS5hdHRyKCJ0eXBlIik7CiAgICAgICAgICAgICAgICAgICAg
dmFyIGRpc2FibGVkID0gJChjdXN0Ym94KS5uZXh0KCJpbnB1dCIpLmF0dHIoImRpc2FibGVkIik7
CiAgICAgICAgICAgICAgICAgICAgaWYgKCQoY3VzdGJveCkuaGFzQ2xhc3MoImNoZWNrYm94Iikp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQoY3VzdGJveCkuaGFzQ2xhc3MoImN1c3Rf
IiArIGJveHR5cGUgKyAiX29mZiIpICYmICFkaXNhYmxlZCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJChjdXN0Ym94KS5yZW1vdmVDbGFzcygiY3VzdF8iICsgYm94dHlwZSArICJfb2Zm
IikuYWRkQ2xhc3MoImN1c3RfIiArIGJveHR5cGUgKyAiX29uIik7CiAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRpc2FibGVk
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChjdXN0Ym94KS5yZW1vdmVDbGFz
cygiY3VzdF8iICsgYm94dHlwZSArICJfb24iKS5hZGRDbGFzcygiY3VzdF8iICsgYm94dHlwZSAr
ICJfb2ZmIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIWRpc2FibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGN1c3Ri
b3gpLnBhcmVudCgpLmZpbmQoIi5jdXN0X2NoZWNrYm94IikucmVtb3ZlQ2xhc3MoImN1c3RfIiAr
IGJveHR5cGUgKyAiX29uIikuYWRkQ2xhc3MoImN1c3RfIiArIGJveHR5cGUgKyAiX29mZiIpLm5l
eHQoImlucHV0IikucmVtb3ZlQXR0cigiY2hlY2tlZCIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJChjdXN0Ym94KS5yZW1vdmVDbGFzcygiY3VzdF8iICsgYm94dHlwZSArICJfb2ZmIiku
YWRkQ2xhc3MoImN1c3RfIiArIGJveHR5cGUgKyAiX29uIik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjdXN0b21SYWRpb09uQ2xpY2soJChjdXN0Ym94KSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgIH0pOwogICAgICAgICAgICAkKCIuY3VzdF9jaGVja2JveCIpLnVuYmluZCgpLmNsaWNrKGZ1
bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICghb3B0cy5kaXNhYmxlX2FsbCkgewogICAg
ICAgICAgICAgICAgICAgIHZhciBib3h0eXBlID0gJCh0aGlzKS5uZXh0KCJpbnB1dCIpLmF0dHIo
InR5cGUiKTsKICAgICAgICAgICAgICAgICAgICB2YXIgZGlzYWJsZWQgPSAkKHRoaXMpLm5leHQo
ImlucHV0IikuYXR0cigiZGlzYWJsZWQiKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlz
KS5oYXNDbGFzcygiY2hlY2tib3giKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJCh0
aGlzKS5oYXNDbGFzcygiY3VzdF8iICsgYm94dHlwZSArICJfb2ZmIikgJiYgIWRpc2FibGVkKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCJjdXN0XyIg
KyBib3h0eXBlICsgIl9vZmYiKS5hZGRDbGFzcygiY3VzdF8iICsgYm94dHlwZSArICJfb24iKS5u
ZXh0KCJpbnB1dCIpLmF0dHIoImNoZWNrZWQiLCAiY2hlY2tlZCIpOwogICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkaXNhYmxl
ZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3Mo
ImN1c3RfIiArIGJveHR5cGUgKyAiX29uIikuYWRkQ2xhc3MoImN1c3RfIiArIGJveHR5cGUgKyAi
X29mZiIpLm5leHQoImlucHV0IikucmVtb3ZlQXR0cigiY2hlY2tlZCIpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkaXNhYmxlZCkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnQoKS5maW5kKCIuY3VzdF9j
aGVja2JveCIpLnJlbW92ZUNsYXNzKCJjdXN0XyIgKyBib3h0eXBlICsgIl9vbiIpLmFkZENsYXNz
KCJjdXN0XyIgKyBib3h0eXBlICsgIl9vZmYiKS5uZXh0KCJpbnB1dCIpLnJlbW92ZUF0dHIoImNo
ZWNrZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3Mo
ImN1c3RfIiArIGJveHR5cGUgKyAiX29mZiIpLmFkZENsYXNzKCJjdXN0XyIgKyBib3h0eXBlICsg
Il9vbiIpLm5leHQoImlucHV0IikuYXR0cigiY2hlY2tlZCIsICJjaGVja2VkIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjdXN0b21SYWRpb09uQ2xpY2soJCh0aGlzKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgfTsKfSkoalF1ZXJ5KTsKalF1ZXJ5LmZu
LmV4dGVuZCh7CiAgICBzZWxlY3Rib3g6IGZ1bmN0aW9uIChvcHRpb25zKSB7CiAgICAgICAgcmV0
dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIG5ldyBqUXVlcnkuU2VsZWN0
Qm94KHRoaXMsIG9wdGlvbnMpOwogICAgICAgIH0pOwogICAgfQp9KTsKalF1ZXJ5LlNlbGVjdEJv
eCA9IGZ1bmN0aW9uIChzZWxlY3RvYmosIG9wdGlvbnMpIHsKICAgIHZhciBvcHQgPSBvcHRpb25z
IHx8IHt9OwogICAgb3B0LmlucHV0Q2xhc3MgPSBvcHQuaW5wdXRDbGFzcyB8fCAic2VsZWN0Ym94
IjsKICAgIG9wdC5pbnB1dENoQmdDbGFzcyA9IG9wdC5pbnB1dENoQmdDbGFzcyB8fCAiY2hJbnB1
dEJnIjsKICAgIG9wdC5jb250YWluZXJDbGFzcyA9IG9wdC5jb250YWluZXJDbGFzcyB8fCAic2Vs
ZWN0Qm94V3JhcHBlciI7CiAgICBvcHQuaG92ZXJDbGFzcyA9IG9wdC5ob3ZlckNsYXNzIHx8ICJj
dXJyZW50IjsKICAgIG9wdC5jdXJyZW50Q2xhc3MgPSBvcHQuc2VsZWN0ZWRDbGFzcyB8fCAic2Vs
ZWN0ZWQiOwogICAgb3B0LmZpcnN0T3B0aW9uQ2xhc3MgPSBvcHQuZmlyc3RPcHRpb25DbGFzcyB8
fCAiZmlyc3QiOwogICAgb3B0Lmxhc3RPcHRpb25DbGFzcyA9IG9wdC5sYXN0T3B0aW9uQ2xhc3Mg
fHwgImxhc3QiOwogICAgb3B0LmlucHV0Q2xhc3NFcnJvciA9IG9wdC5pbnB1dENsYXNzRXJyb3Ig
fHwgInNlbGVjdGJveEVycm9yIjsKICAgIG9wdC5pbnB1dENsYXNzRm9jdXMgPSBvcHQuaW5wdXRD
bGFzc0ZvY3VzIHx8ICJzZWxlY3Rib3hGb2N1cyI7CiAgICBvcHQuZGVidWcgPSBvcHQuZGVidWcg
fHwgZmFsc2U7CiAgICB2YXIgTGlJbmRBcnJheSA9IG51bGw7CiAgICB2YXIgZkNoYXJJbkxpc3Qg
PSBuZXcgQXJyYXkoKTsKICAgIHZhciB0ZW1wUHJlc3NLZXkgPSAiIjsKICAgIHZhciBhY3RMZW4g
PSAwOwogICAgdmFyIGNoYXJJbkxpc3QgPSBmYWxzZTsKICAgIHZhciBrZXlDYWNoZSA9ICIiOwog
ICAgdmFyIGVsbV9pZCA9IHNlbGVjdG9iai5uYW1lOwogICAgdmFyIGFjdGl2ZSA9IC0xOwogICAg
dmFyIGluRm9jdXMgPSBmYWxzZTsKICAgIHZhciBoYXNmb2N1cyA9IDA7CiAgICB2YXIgY2xlYXJU
aW1lSWQgPSAwOwogICAgdmFyICRzZWxlY3QgPSAkKHNlbGVjdG9iaik7CiAgICB2YXIgJGNvbnRh
aW5lciA9IHNldHVwQ29udGFpbmVyKG9wdCk7CiAgICB2YXIgJGlucHV0ID0gc2V0dXBJbnB1dChv
cHQpOwogICAgJHNlbGVjdC5oaWRlKCkuYmVmb3JlKCRpbnB1dCkuYmVmb3JlKCRjb250YWluZXIp
OwogICAgaW5pdCgpOwogICAgJGlucHV0LmNsaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICBpZiAo
IWluRm9jdXMpIHsKICAgICAgICAgICAgJGNvbnRhaW5lci50b2dnbGUoKTsKICAgICAgICB9CiAg
ICAgICAgJChzZWxlY3RvYmopLnJlbW92ZUNsYXNzKCIxIik7CiAgICAgICAgaWYgKCRpbnB1dC5o
YXNDbGFzcyhvcHRpb25zLmlucHV0Q2xhc3NFcnJvcikpIHsKICAgICAgICAgICAgJGlucHV0LmFk
ZENsYXNzKG9wdGlvbnMuaW5wdXRDbGFzcyk7CiAgICAgICAgICAgICRpbnB1dC5yZW1vdmVDbGFz
cyhvcHRpb25zLmlucHV0Q2xhc3NFcnJvcik7CiAgICAgICAgfQogICAgICAgIGlmICgkY29udGFp
bmVyLmlzKCI6dmlzaWJsZSIpKSB7CiAgICAgICAgICAgICRpbnB1dC5hZGRDbGFzcyhvcHRpb25z
LmlucHV0Q2hCZ0NsYXNzKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkaW5wdXQucmVt
b3ZlQ2xhc3Mob3B0aW9ucy5pbnB1dENoQmdDbGFzcyk7CiAgICAgICAgICAgICQodGhpcykudHJp
Z2dlcigiYmx1ciIpOwogICAgICAgIH0KICAgICAgICAkaW5wdXQucmVtb3ZlQ2xhc3Mob3B0aW9u
cy5pbnB1dENsYXNzRm9jdXMpOwogICAgfSkuZm9jdXMoZnVuY3Rpb24gKCkgewogICAgICAgIGlm
ICghJGNvbnRhaW5lci5pcygiOnZpc2libGUiKSkgewogICAgICAgICAgICAkKHNlbGVjdG9iaiku
cmVtb3ZlQ2xhc3MoIjEiKTsKICAgICAgICAgICAgJGlucHV0LnJlbW92ZUNsYXNzKG9wdGlvbnMu
aW5wdXRDbGFzc0Vycm9yKTsKICAgICAgICAgICAgJGlucHV0LmFkZENsYXNzKG9wdGlvbnMuaW5w
dXRDbGFzc0ZvY3VzKTsKICAgICAgICB9CiAgICAgICAgY2xvc2VDYWwoKTsKICAgIH0pLmtleWRv
d24oZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgc3dpdGNoIChldmVudC5rZXlDb2RlKSB7CiAg
ICAgICAgY2FzZSAzODoKICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAg
ICAgICAgbW92ZVNlbGVjdCgtMSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgNDA6
CiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIG1vdmVTZWxl
Y3QoMSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgIGV2
ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIGlmICgkY29udGFpbmVyLmlzKCI6dmlz
aWJsZSIpKSB7CiAgICAgICAgICAgICAgICAkKCJsaS4iICsgb3B0LmN1cnJlbnRDbGFzcykudHJp
Z2dlcigiY2xpY2siKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHN1bWl0
U2VhcmNoV2l0aEVudGVyS2V5KCJTZWFyY2hGbGlnaHRCdCIsIGV2ZW50KTsKICAgICAgICAgICAg
fQogICAgICAgICAgICBpbkZvY3VzID0gZmFsc2U7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgIGlmICgkY29udGFpbmVyLmlzKCI6dmlzaWJsZSIpKSB7CiAg
ICAgICAgICAgICAgICBzZXRGb2N1c09uTGlzdChldmVudCk7CiAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoY2xlYXJUaW1lSWQpOwogICAgICAgICAgICAg
ICAgc3VnZ2VzdE5leHRWYWx1ZShldmVudCk7CiAgICAgICAgICAgICAgICBjbGVhclRpbWVJZCA9
IHNldFRpbWVvdXQoImtleUNhY2hlPScnOyIsIDEwMDApOwogICAgICAgICAgICB9CiAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0pLmJsdXIoZnVuY3Rpb24gKCkgewogICAgICAgIGlm
ICgkY29udGFpbmVyLmlzKCI6dmlzaWJsZSIpICYmIGhhc2ZvY3VzID4gMCkgewogICAgICAgICAg
ICBpZiAob3B0LmRlYnVnKSB7CiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiY29udGFpbmVy
IHZpc2libGUgYW5kIGhhcyBmb2N1cyIpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgaWYgKCEkY29udGFpbmVyLmlzKCI6dmlzaWJsZSIpKSB7CiAgICAgICAgICAg
ICAgICB1cGRhdGVEcm9wRG93bnMoc2VsZWN0b2JqLCAkaW5wdXQuaHRtbCgpKTsKICAgICAgICAg
ICAgfQogICAgICAgICAgICAkaW5wdXQucmVtb3ZlQ2xhc3Mob3B0aW9ucy5pbnB1dENsYXNzRm9j
dXMpOwogICAgICAgICAgICAkaW5wdXQuYWRkQ2xhc3Mob3B0aW9ucy5pbnB1dENsYXNzKTsKICAg
ICAgICAgICAgaGlkZU1lKCk7CiAgICAgICAgfQogICAgfSk7CgogICAgZnVuY3Rpb24gaGlkZU1l
KCkgewogICAgICAgIGhhc2ZvY3VzID0gMDsKICAgICAgICAkaW5wdXQucmVtb3ZlQ2xhc3Mob3B0
aW9ucy5pbnB1dENoQmdDbGFzcyk7CiAgICAgICAgJGlucHV0LmFkZENsYXNzKG9wdGlvbnMuaW5w
dXRDbGFzcyk7CiAgICAgICAgJGNvbnRhaW5lci5oaWRlKCk7CiAgICB9CiAgICBmdW5jdGlvbiBp
bml0KCkgewogICAgICAgICRjb250YWluZXIuYXBwZW5kKGdldFNlbGVjdE9wdGlvbnMoJGlucHV0
LmF0dHIoImlkIikpKS5oaWRlKCk7CiAgICAgICAgdmFyIHdpZHRoID0gJGNvbnRhaW5lci5jc3Mo
IndpZHRoIik7CiAgICAgICAgJGNvbnRhaW5lci53aWR0aCh3aWR0aCk7CiAgICB9CiAgICBmdW5j
dGlvbiBzZXR1cENvbnRhaW5lcihvcHRpb25zKSB7CiAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICRjb250YWluZXIgPSAkKGNvbnRh
aW5lcik7CiAgICAgICAgJGNvbnRhaW5lci5hdHRyKCJpZCIsIGVsbV9pZCArICJfY29udGFpbmVy
Iik7CiAgICAgICAgJGNvbnRhaW5lci5hZGRDbGFzcyhvcHRpb25zLmNvbnRhaW5lckNsYXNzKTsK
ICAgICAgICByZXR1cm4gJGNvbnRhaW5lcjsKICAgIH0KICAgIGZ1bmN0aW9uIHN1Z2dlc3ROZXh0
VmFsdWUoZXZlbnQpIHsKICAgICAgICB2YXIgbGlzID0gJCgibGkiLCAkY29udGFpbmVyKTsKICAg
ICAgICB2YXIgcHJlc3NLZXkgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGV2ZW50LmtleUNvZGUpOwog
ICAgICAgIHZhciBtYXRjaEZvdW5kID0gZmFsc2U7CiAgICAgICAgdmFyIGZpcnN0T3B0ID0gLTE7
CiAgICAgICAgaWYgKCFsaXMpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAg
ICBpZiAodHlwZW9mIChhcmd1bWVudHNbMV0pID09ICJ1bmRlZmluZWQiKSB7CiAgICAgICAgICAg
IGtleUNhY2hlICs9IHByZXNzS2V5OwogICAgICAgIH0KICAgICAgICB2YXIgb3B0cyA9IGZpbmRP
cHRpb25zRm9yS2V5KCk7CiAgICAgICAgaWYgKG9wdHMubGVuZ3RoID4gMCkgewogICAgICAgICAg
ICBmb3IgKGogPSAwOyBqIDwgb3B0cy5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgaWYg
KCRpbnB1dC5odG1sKCkuc3Vic3RyaW5nKDAsIDEpID09IG9wdHNbal0uc3Vic3RyaW5nKDAsIDEp
ICYmIG9wdHMubGVuZ3RoID4gMSkgewogICAgICAgICAgICAgICAgICAgIGlmICgkaW5wdXQuaHRt
bCgpID09IG9wdHNbal0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChqICsgMSkgPj0g
b3B0cy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbnB1dC5odG1sKG9w
dHNbMF0pOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJGlucHV0Lmh0bWwob3B0c1tqICsgMV0pOwogICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoRm91bmQgPSB0cnVlOwogICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRpbnB1dC5odG1sKG9wdHNbMF0pOwog
ICAgICAgICAgICAgICAgICAgIG1hdGNoRm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAg
IGlmICghbWF0Y2hGb3VuZCkgewogICAgICAgICAgICBpZiAoa2V5Q2FjaGUubGVuZ3RoID4gMSkg
ewogICAgICAgICAgICAgICAga2V5Q2FjaGUgPSBrZXlDYWNoZS5zdWJzdHJpbmcoa2V5Q2FjaGUu
bGVuZ3RoIC0gMSwga2V5Q2FjaGUubGVuZ3RoKTsKICAgICAgICAgICAgICAgIHN1Z2dlc3ROZXh0
VmFsdWUoZXZlbnQsICJyZWN1cnNpdmUiKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgIGtleUNhY2hlID0gIiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgc2V0
Q3VycmVudFNlbGVjdGVkKCk7CiAgICB9CiAgICBmdW5jdGlvbiBmaW5kT3B0aW9uc0ZvcktleSgp
IHsKICAgICAgICB2YXIgbGlzID0gJCgibGkiLCAkY29udGFpbmVyKTsKICAgICAgICB2YXIgb3B0
cyA9IG5ldyBBcnJheSgpOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBsaXMubGVuZ3RoOyBpKysp
IHsKICAgICAgICAgICAgaWYgKCQobGlzW2ldKS5odG1sKCkgIT0gIiIgJiYgJChsaXNbaV0pLmh0
bWwoKS5zdWJzdHJpbmcoMCwga2V5Q2FjaGUubGVuZ3RoKS50b1VwcGVyQ2FzZSgpID09IGtleUNh
Y2hlLnRvVXBwZXJDYXNlKCkpIHsKICAgICAgICAgICAgICAgIG9wdHMucHVzaCgkKGxpc1tpXSku
aHRtbCgpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gb3B0czsKICAg
IH0KICAgIGZ1bmN0aW9uIHNldEN1cnJlbnRTZWxlY3RlZCgpIHsKICAgICAgICB2YXIgdmFsID0g
IiI7CiAgICAgICAgdmFyIG9wdHMgPSAkc2VsZWN0LmNoaWxkcmVuKCJvcHRpb24iKTsKICAgICAg
ICBmb3IgKGkgPSAwOyBpIDwgb3B0cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoJChv
cHRzW2ldKS5odG1sKCkgPT0gJGlucHV0Lmh0bWwoKSkgewogICAgICAgICAgICAgICAgdmFsID0g
JChvcHRzW2ldKS52YWwoKTsKICAgICAgICAgICAgICAgIHVwZGF0ZUlucHV0VmFsdWUodmFsLCAk
KG9wdHNbaV0pLmh0bWwoKSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQog
ICAgICAgIH0KICAgICAgICAkc2VsZWN0LnZhbCh2YWwpOwogICAgfQogICAgZnVuY3Rpb24gc2V0
dXBJbnB1dChvcHRpb25zKSB7CiAgICAgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiYSIpOwogICAgICAgIHZhciAkaW5wdXQgPSAkKGlucHV0KTsKICAgICAgICBpZiAoJHNl
bGVjdC5hdHRyKCJ0aXRsZSIpKSB7CiAgICAgICAgICAgICRpbnB1dC5hdHRyKCJ0aXRsZSIsICRz
ZWxlY3QuYXR0cigidGl0bGUiKSk7CiAgICAgICAgfQogICAgICAgICRpbnB1dC5hdHRyKCJpZCIs
IGVsbV9pZCArICJfaW5wdXQiKTsKICAgICAgICAkKGlucHV0KS5hZGRDbGFzcyhvcHRpb25zLmlu
cHV0Q2xhc3MpOwogICAgICAgIGlmICgkKHNlbGVjdG9iaikuaGFzQ2xhc3MoIjEiKSkgewogICAg
ICAgICAgICAkKGlucHV0KS5hZGRDbGFzcyhvcHRpb25zLmlucHV0Q2xhc3NFcnJvcik7CiAgICAg
ICAgfQogICAgICAgICRpbnB1dC5hdHRyKCJ0YWJJbmRleCIsICRzZWxlY3QuYXR0cigidGFiSW5k
ZXgiKSk7CiAgICAgICAgcmV0dXJuICRpbnB1dDsKICAgIH0KICAgIGZ1bmN0aW9uIHNldEZvY3Vz
T25MaXN0KGV2ZW50KSB7CiAgICAgICAgdmFyIGsgPSAwOwogICAgICAgIHZhciBuID0gMDsKICAg
ICAgICB2YXIgc2VsZWN0VmFsdWUgPSAiIjsKICAgICAgICB2YXIgcHJlc3NLZXkgPSBTdHJpbmcu
ZnJvbUNoYXJDb2RlKGV2ZW50LmtleUNvZGUpOwogICAgICAgICRzZWxlY3QuY2hpbGRyZW4oIm9w
dGlvbiIpLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICBzZWxlY3RWYWx1ZSA9ICQodGhp
cykuaHRtbCgpOwogICAgICAgICAgICBmQ2hhckluTGlzdFtrXSA9IHNlbGVjdFZhbHVlLnN1YnN0
cmluZygwLCAxKTsKICAgICAgICAgICAgaWYgKGNoYXJJbkxpc3QgPT0gZmFsc2UpIHsKICAgICAg
ICAgICAgICAgIGlmIChwcmVzc0tleSA9PSBmQ2hhckluTGlzdFtrXSkgewogICAgICAgICAgICAg
ICAgICAgIGNoYXJJbkxpc3QgPSB0cnVlOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICBjaGFySW5MaXN0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgIH0KICAgICAgICAgICAgaysrOwogICAgICAgIH0pOwogICAgICAgIGlmIChjaGFySW5M
aXN0ID09IHRydWUpIHsKICAgICAgICAgICAgY2hhckluTGlzdCA9IGZhbHNlOwogICAgICAgICAg
ICBpZiAodGVtcFByZXNzS2V5ICE9IHByZXNzS2V5KSB7CiAgICAgICAgICAgICAgICBMaUluZEFy
cmF5ID0gbmV3IEFycmF5KCk7CiAgICAgICAgICAgICAgICBmb3IgKG0gPSAwOyBtIDwgZkNoYXJJ
bkxpc3QubGVuZ3RoOyBtKyspIHsKICAgICAgICAgICAgICAgICAgICBzZWxlY3RWYWx1ZSA9IGZD
aGFySW5MaXN0W21dOwogICAgICAgICAgICAgICAgICAgIGlmIChwcmVzc0tleSA9PSBzZWxlY3RW
YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICB0ZW1wUHJlc3NLZXkgPSBwcmVzc0tleTsK
ICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlID0gbTsKICAgICAgICAgICAgICAgICAgICAg
ICAgTGlJbmRBcnJheS5wdXNoKG0pOwogICAgICAgICAgICAgICAgICAgICAgICBjaGFySW5MaXN0
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICBhY3RMZW4gPSAxOwogICAgICAgICAgICAgICAgYWN0aXZlID0gTGlJbmRBcnJheVsw
XTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBsZW4gPSBMaUluZEFy
cmF5Lmxlbmd0aDsKICAgICAgICAgICAgICAgIGlmIChsZW4gIT0gYWN0TGVuKSB7CiAgICAgICAg
ICAgICAgICAgICAgZm9yICh2YXIgbSA9IDA7IG0gPCBsZW47IG0rKykgewogICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoYWN0aXZlID09IExpSW5kQXJyYXlbbV0pIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFjdExlbisrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZl
Kys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgYWN0TGVuID0gMTsKICAgICAgICAgICAgICAgICAgICBhY3RpdmUg
PSBMaUluZEFycmF5WzBdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAg
ICAgIHZhciBsaXMgPSAkKCJsaSIsICRjb250YWluZXIpOwogICAgICAgICAgICBpZiAodHlwZW9m
IChsaXMpICE9ICJ1bmRlZmluZWQiICYmIHR5cGVvZiAoJChsaXNbYWN0aXZlXSkuaHRtbCgpKSAh
PSAidW5kZWZpbmVkIikgewogICAgICAgICAgICAgICAgJCgibGkuIiArIG9wdC5jdXJyZW50Q2xh
c3MpLnJlbW92ZUNsYXNzKG9wdC5jdXJyZW50Q2xhc3MpOwogICAgICAgICAgICAgICAgbGlzLnJl
bW92ZUNsYXNzKG9wdC5ob3ZlckNsYXNzKTsKICAgICAgICAgICAgICAgICQobGlzW2FjdGl2ZV0p
LmFkZENsYXNzKG9wdC5jdXJyZW50Q2xhc3MpOwogICAgICAgICAgICAgICAgc2V0Q3VycmVudFZh
bHVlKCQobGlzW2FjdGl2ZV0pKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGZ1
bmN0aW9uIG1vdmVTZWxlY3Qoc3RlcCkgewogICAgICAgIHZhciBsaXMgPSAkKCJsaSIsICRjb250
YWluZXIpOwogICAgICAgIGlmICghbGlzKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9
CiAgICAgICAgZm9yIChpID0gMDsgaSA8IGxpcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBp
ZiAoJChsaXNbaV0pLmh0bWwoKSA9PSAkaW5wdXQuaHRtbCgpKSB7CiAgICAgICAgICAgICAgICBh
Y3RpdmUgPSBpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9
CiAgICAgICAgYWN0aXZlICs9IHN0ZXA7CiAgICAgICAgaWYgKGFjdGl2ZSA8IDApIHsKICAgICAg
ICAgICAgYWN0aXZlID0gMDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoYWN0aXZl
ID49IGxpcy5zaXplKCkpIHsKICAgICAgICAgICAgICAgIGFjdGl2ZSA9IGxpcy5zaXplKCkgLSAx
OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICgkY29udGFpbmVyLmlzKCI6dmlz
aWJsZSIpKSB7CiAgICAgICAgICAgICQobGlzW2FjdGl2ZV0pLnBhcmVudCgpLmNoaWxkcmVuKCJs
aSIpLnJlbW92ZUNsYXNzKG9wdC5ob3ZlckNsYXNzKTsKICAgICAgICAgICAgJChsaXNbYWN0aXZl
XSkucGFyZW50KCkuY2hpbGRyZW4oImxpIikucmVtb3ZlQ2xhc3Mob3B0LmN1cnJlbnRDbGFzcyk7
CiAgICAgICAgICAgICQobGlzW2FjdGl2ZV0pLmFkZENsYXNzKG9wdC5jdXJyZW50Q2xhc3MpOwog
ICAgICAgIH0KICAgICAgICB2YXIgYXIgPSAoIiIgKyAkKGxpc1thY3RpdmVdKS5hdHRyKCJpZCIp
KS5zcGxpdCgiXyIpOwogICAgICAgIHZhciBlbCA9IGFyW2FyLmxlbmd0aCAtIDFdOwogICAgICAg
ICRzZWxlY3QudmFsKGVsKTsKICAgICAgICB1cGRhdGVJbnB1dFZhbHVlKCRzZWxlY3QudmFsKCks
ICQobGlzW2FjdGl2ZV0pLmh0bWwoKSk7CiAgICB9CiAgICBmdW5jdGlvbiBzZXRDdXJyZW50KCkg
ewogICAgICAgIHZhciBsaSA9ICQoImxpLiIgKyBvcHQuY3VycmVudENsYXNzLCAkY29udGFpbmVy
KS5nZXQoMCk7CiAgICAgICAgdmFyIGFyID0gKCIiICsgbGkuaWQpLnNwbGl0KCJfIik7CiAgICAg
ICAgdmFyIGVsID0gYXJbYXIubGVuZ3RoIC0gMV07CiAgICAgICAgJHNlbGVjdC52YWwoZWwpOwog
ICAgICAgIHVwZGF0ZUlucHV0VmFsdWUoJHNlbGVjdC52YWwoKSwgJChsaSkuaHRtbCgpKTsKICAg
ICAgICB1cGRhdGVEcm9wRG93bnMoc2VsZWN0b2JqLCAkKGxpKS5odG1sKCkpOwogICAgICAgIHJl
dHVybiB0cnVlOwogICAgfQogICAgZnVuY3Rpb24gdXBkYXRlSW5wdXRWYWx1ZSh2YWwsIGxpc3RW
YWwpIHsKICAgICAgICAkaW5wdXQuZW1wdHkoKTsKICAgICAgICBpZiAodmFsID09ICIiICYmICgk
c2VsZWN0LmF0dHIoImlkIikgPT0gIm9yaWdpbkZsdE9uZU1DIiB8fCAkc2VsZWN0LmF0dHIoImlk
IikgPT0gIm9yaWdpbkZsdFR3b01DIikpIHsKICAgICAgICAgICAgaWYgKCRzZWxlY3QuYXR0cigi
aWQiKSA9PSAib3JpZ2luRmx0VHdvTUMiKSB7CiAgICAgICAgICAgICAgICAkaW5wdXQuaHRtbCgi
PGI+RmxpZ2h0IDI6IDwvYj4iICsgbGlzdFZhbCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAkaW5wdXQuaHRtbCgiPGI+RmxpZ2h0IDE6IDwvYj4iICsgbGlzdFZhbCk7CiAg
ICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkaW5wdXQuaHRtbChsaXN0
VmFsKTsKICAgICAgICB9CiAgICB9CiAgICBmdW5jdGlvbiBzZXRDdXJyZW50VmFsdWUobGkpIHsK
ICAgICAgICB2YXIgYXIgPSAoIiIgKyBsaS5pZCkuc3BsaXQoIl8iKTsKICAgICAgICB2YXIgZWwg
PSBhclthci5sZW5ndGggLSAxXTsKICAgICAgICAkc2VsZWN0LnZhbChlbCk7CiAgICAgICAgdXBk
YXRlSW5wdXRWYWx1ZSgkc2VsZWN0LnZhbCgpLCAkKGxpKS5odG1sKCkpOwogICAgfQogICAgZnVu
Y3Rpb24gZ2V0Q3VycmVudFNlbGVjdGVkKCkgewogICAgICAgIHJldHVybiAkc2VsZWN0LnZhbCgp
OwogICAgfQogICAgZnVuY3Rpb24gZ2V0Q3VycmVudFZhbHVlKCkgewogICAgICAgIHJldHVybiAk
aW5wdXQudmFsKCk7CiAgICB9CiAgICBmdW5jdGlvbiBnZXRTZWxlY3RPcHRpb25zKHBhcmVudGlk
KSB7CiAgICAgICAgdmFyIHNlbGVjdF9vcHRpb25zID0gbmV3IEFycmF5KCk7CiAgICAgICAgdmFy
IHVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidWwiKTsKICAgICAgICAkKHVsKS5iaW5kKCJt
b3VzZWxlYXZlIiwgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgJCh1bCkuY2hpbGRyZW4oImxp
IikuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgY3VycmVudFZhbCA9ICRp
bnB1dC5odG1sKCk7CiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFZhbCA9PSAkKHRoaXMpLmh0
bWwoKSB8fCBjdXJyZW50VmFsLmluZGV4T2YoJCh0aGlzKS5odG1sKCkpICE9IC0xKSB7CiAgICAg
ICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcyhvcHQuY3VycmVudENsYXNzKTsKICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICAgICAgdmFyIGxhc3RJ
ZHggPSAkc2VsZWN0LmNoaWxkcmVuKCJvcHRpb24iKS5sZW5ndGggLSAxOwogICAgICAgIHZhciBp
ID0gMDsKICAgICAgICAkc2VsZWN0LmNoaWxkcmVuKCJvcHRpb24iKS5lYWNoKGZ1bmN0aW9uICgp
IHsKICAgICAgICAgICAgdmFyIGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKICAg
ICAgICAgICAgbGkuc2V0QXR0cmlidXRlKCJpZCIsIHBhcmVudGlkICsgIl8iICsgJCh0aGlzKS52
YWwoKSk7CiAgICAgICAgICAgIGxpLmlubmVySFRNTCA9ICQodGhpcykuaHRtbCgpOwogICAgICAg
ICAgICBpZiAob3B0LmRlYnVnKSB7CiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygib3B0aW9u
cyAgOiIgKyAkKHRoaXMpLnZhbCgpICsgIiBbXSAiICsgb3B0Lmxhc3RPcHRpb25DbGFzcyk7CiAg
ICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGkgPT0gbGFzdElkeCkgewogICAgICAgICAgICAg
ICAgJChsaSkuYWRkQ2xhc3Mob3B0Lmxhc3RPcHRpb25DbGFzcyk7CiAgICAgICAgICAgIH0KICAg
ICAgICAgICAgaWYgKCQodGhpcykuaXMoIjpzZWxlY3RlZCIpKSB7CiAgICAgICAgICAgICAgICB1
cGRhdGVJbnB1dFZhbHVlKCRzZWxlY3QudmFsKCksICQobGkpLmh0bWwoKSk7CiAgICAgICAgICAg
ICAgICAkKGxpKS5hZGRDbGFzcyhvcHQuY3VycmVudENsYXNzKTsKICAgICAgICAgICAgfQogICAg
ICAgICAgICB1bC5hcHBlbmRDaGlsZChsaSk7CiAgICAgICAgICAgICQobGkpLm1vdXNlb3Zlcihm
dW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICAgICAgICAgIGhhc2ZvY3VzID0gMTsKICAgICAgICAg
ICAgICAgIGlmIChvcHQuZGVidWcpIHsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygi
b3ZlciBvbiA6ICIgKyB0aGlzLmlkKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICQodGhpcykucGFyZW50KCkuY2hpbGRyZW4oImxpIikucmVtb3ZlQ2xhc3Mob3B0LmN1cnJlbnRD
bGFzcyk7CiAgICAgICAgICAgICAgICBqUXVlcnkoZXZlbnQudGFyZ2V0LCAkY29udGFpbmVyKS5h
ZGRDbGFzcyhvcHQuaG92ZXJDbGFzcyk7CiAgICAgICAgICAgIH0pLm1vdXNlb3V0KGZ1bmN0aW9u
IChldmVudCkgewogICAgICAgICAgICAgICAgaGFzZm9jdXMgPSAtMTsKICAgICAgICAgICAgICAg
IGlmIChvcHQuZGVidWcpIHsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygib3V0IG9u
IDogIiArIHRoaXMuaWQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgalF1ZXJ5
KGV2ZW50LnRhcmdldCwgJGNvbnRhaW5lcikucmVtb3ZlQ2xhc3Mob3B0LmhvdmVyQ2xhc3MpOwog
ICAgICAgICAgICB9KS5jbGljayhmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICAgICAgICAgIGlm
IChvcHQuZGVidWcpIHsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiY2xpY2sgb24g
OiIgKyB0aGlzLmlkKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICQodGhpcyku
cGFyZW50KCkuY2hpbGRyZW4oImxpIikucmVtb3ZlQ2xhc3Mob3B0LmhvdmVyQ2xhc3MpOwogICAg
ICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnQoKS5jaGlsZHJlbigibGkiKS5yZW1vdmVDbGFzcyhv
cHQuY3VycmVudENsYXNzKTsKICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3Mob3B0LmN1
cnJlbnRDbGFzcyk7CiAgICAgICAgICAgICAgICBzZXRDdXJyZW50KCk7CiAgICAgICAgICAgICAg
ICBoaWRlTWUoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGkrKzsKICAgICAgICB9KTsK
ICAgICAgICByZXR1cm4gdWw7CiAgICB9Cn07CgpmdW5jdGlvbiBjaGVja0NsaWNrKGRpdklkKSB7
CiAgICB2YXIgeCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRpdklkKTsKICAgIGlmIChkaXZJ
ZCA9PSAiY2hlY2tib3gxMCIpIHsKICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ZGl2SWQpLmNoZWNrZWQgJiYgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoZWNrYm94MTEiKSAh
PSBudWxsKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGVja2JveDEx
IikuY2hlY2tlZCA9IHRydWU7CiAgICAgICAgfQogICAgICAgIGlmICgheC5jaGVja2VkICYmIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGVja2JveDExIikgIT0gbnVsbCkgewogICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hlY2tib3gxMSIpLmNoZWNrZWQgPSBmYWxzZTsK
ICAgICAgICB9CiAgICB9CiAgICBpZiAoZGl2SWQgPT0gImNoZWNrYm94MTEiKSB7CiAgICAgICAg
aWYgKHguY2hlY2tlZCkgewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hl
Y2tib3gxMCIpLmNoZWNrZWQgPSB0cnVlOwogICAgICAgIH0KICAgICAgICBpZiAoIXguY2hlY2tl
ZCkgewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hlY2tib3gxMCIpLmNo
ZWNrZWQgPSBmYWxzZTsKICAgICAgICB9CiAgICB9CiAgICBpZiAoZGl2SWQgPT0gImNoZWNrYm94
MjAiKSB7CiAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRpdklkKS5jaGVja2Vk
ICYmIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGVja2JveDIxIikgIT0gbnVsbCkgewogICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hlY2tib3gyMSIpLmNoZWNrZWQgPSB0
cnVlOwogICAgICAgIH0KICAgICAgICBpZiAoIXguY2hlY2tlZCAmJiBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY2hlY2tib3gyMSIpICE9IG51bGwpIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNoZWNrYm94MjEiKS5jaGVja2VkID0gZmFsc2U7CiAgICAgICAgfQogICAg
fQogICAgaWYgKGRpdklkID09ICJjaGVja2JveDIxIikgewogICAgICAgIGlmICh4LmNoZWNrZWQp
IHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoZWNrYm94MjAiKS5jaGVj
a2VkID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgaWYgKCF4LmNoZWNrZWQpIHsKICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoZWNrYm94MjAiKS5jaGVja2VkID0gZmFsc2U7
CiAgICAgICAgfQogICAgfQp9CmZ1bmN0aW9uIGVuYWJsZUVtYWlsKCkgewogICAgaWYgKGRvY3Vt
ZW50LnJlY2VpcHRGb3JtLmVsZW1lbnRzWyJ2aWV3UHVyY2hhc2VNb2RlbC5jb250YWN0Il0uY2hl
Y2tlZCA9PSB0cnVlKSB7CiAgICAgICAgZG9jdW1lbnQucmVjZWlwdEZvcm0uZWxlbWVudHNbInZp
ZXdQdXJjaGFzZU1vZGVsLmNvbnRhY3RFbWFpbCJdLmRpc2FibGVkID0gZmFsc2U7CiAgICB9Cn0K
ZnVuY3Rpb24gb3BlblRyYXZlbEZsYWdDb2RlRGl2KGxpbmtJZCkgewogICAgdmFyIHBvc2l0aW9u
T2JqID0gbGlua0lkOwogICAgc2V0UG9zaXRpb24oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocG9z
aXRpb25PYmopLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidHJhdmVsRmxhZ0NvZGVEaXYiKSwg
LTkwLCAzNTApOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRyYXZlbEZsYWdDb2RlRGl2
Iikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Cn0KZnVuY3Rpb24gY2xvc2VUcmF2ZWxGbGFnQ29k
ZURpdigpIHsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0cmF2ZWxGbGFnQ29kZURpdiIp
LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICBkb2N1bWVudC5iYXJGb3JtLm1ldGhvZC52YWx1
ZSA9ICJ2aWV3UHVyY2hhc2VUYWJMaW5rIjsKICAgIGRvY3VtZW50LmJhckZvcm0udGFiU2VsZWN0
LnZhbHVlID0gIjUiOwogICAgZG9jdW1lbnQuYmFyRm9ybS50YWJGbGcudmFsdWUgPSAiNiI7CiAg
ICBkb2N1bWVudC5iYXJGb3JtLmFjdGlvbiA9ICJ2aWV3UHVyY2hhc2VUYWJMaW5rLmRvIjsKICAg
IGRvY3VtZW50LmJhckZvcm0uc3VibWl0KCk7Cn0KZnVuY3Rpb24gb3BlblRyYXZlbEluc3VyYW5j
ZVBvcHVwRGl2KGxpbmtJZCkgewogICAgdmFyIHBvc2l0aW9uT2JqID0gbGlua0lkOwogICAgc2V0
UG9zaXRpb24oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocG9zaXRpb25PYmopLCBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidHJhdmVsSW5zdXJhbmNlRGVzX29uZSIpLCAzMDAsIDE1MCk7CiAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidHJhdmVsSW5zdXJhbmNlRGVzIikuc3R5bGUuZGlzcGxh
eSA9ICJibG9jayI7Cn0KZnVuY3Rpb24gY2xvc2VUcmF2ZWxJbnN1cmFuY2VQb3B1cERpdigpIHsK
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0cmF2ZWxJbnN1cmFuY2VEZXMiKS5zdHlsZS5k
aXNwbGF5ID0gIm5vbmUiOwp9CmZ1bmN0aW9uIHN1Ym1pdFBSRm9ybSgpIHsKICAgIGRvY3VtZW50
LnJlY2VpcHRGb3JtLnRhYk51bWJlci52YWx1ZSA9ICI3IjsKICAgIGRvY3VtZW50LnJlY2VpcHRG
b3JtLnRhYlNlbGVjdC52YWx1ZSA9ICI3IjsKICAgIGRvY3VtZW50LnJlY2VpcHRGb3JtLm1ldGhv
ZC52YWx1ZSA9ICJmaW5hbFJlY2VpcHQiOwogICAgZG9jdW1lbnQucmVjZWlwdEZvcm0uYWN0aW9u
ID0gInZpZXdSZWNlaXB0LmRvIjsKICAgIGlmIChnZXRDb29raWUoImNoYW5uZWxfc2Vzc2lvbl9p
ZCIpICE9IG51bGwpIHsKICAgICAgICBkb2N1bWVudC5yZWNlaXB0Rm9ybS5jaGFubmVsSWQudmFs
dWUgPSBnZXRDb29raWUoImNoYW5uZWxfc2Vzc2lvbl9pZCIpOwogICAgfQogICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInB1cmNoYXNlQnRuSHJlZiIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7
CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHVyY2hhc2VCdG5IcmVmRGlzYWJsZWQiKS5z
dHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgIGRvY3VtZW50LnJlY2VpcHRGb3JtLnN1Ym1pdCgp
OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRyYW5zYWN0aW9uSW1hZ2VTaG93Iikuc3R5
bGUuZGlzcGxheSA9ICJibG9jayI7Cn0KdmFyIGlzQWR1bHRXaXRoSW5mYW50ID0gMDsKdmFyIGNs
ZWFyUG9wdXBJbnRlcnZhbDsKdmFyIGNvdW50ZXIgPSA4Owp2YXIgdXBHcmFkZVR5cGU7CnZhciBu
ZXdTZWF0TnVtYmVyOwp2YXIgc2VhdFR5cGVVcGdyYWRlOwp2YXIgY3VycmVuY3lDb2RlRG9sbGFy
ID0gIiQiOwp2YXIgY3VycmVudFNlYXQgPSAiIjsKdmFyIHByZXZpb3VzU3R5bGVDbGFzcyA9ICIi
Owp2YXIgc2VsZWN0ZWRTZWF0ID0gIiI7CnZhciBzZWxlY3RlZFNlYXRJZCA9ICIiOwp2YXIgc2Vs
ZWN0ZWRTZWF0Q2xhc3NOYW1lID0gIiI7CnZhciBzZWxlY3RlZFNlYXRDYWJpbkNsYXNzID0gIiI7
CnZhciBzZWxlY3RlZFNlYXRTdHlsZUNsYXNzID0gIiI7CnZhciBzZWxlY3RlZFNlYXREaXNwbGF5
ID0gIiI7CnZhciBzZWxlY3RlZFNlYXRDYWJpbkNsYXNzRGlzcGxheSA9ICIiOwp2YXIgc2VsZWN0
ZWRTZWF0VHlwZSA9ICIiOwp2YXIgblNTSW5kZXggPSAwOwp2YXIgblNTSW5kZXgxID0gMDsKdmFy
IGFjdGl2ZVNlZ21lbnQgPSAwOwp2YXIgb2FuZERDb3VudCA9IDA7CnZhciBhY3RpdmVHdWVzdCA9
IDA7CnZhciB1cGdyYWRlQW1vdW50TUNTID0gMDsKdmFyIGZhcmVGb3JtYXRUeXBlID0gMDsKdmFy
IHJlc3RyaWN0R3Vlc3RBcnIgPSAiIjsKdmFyIGlzVXBnclNlYXQgPSBuZXcgQXJyYXkoMSk7CnZh
ciBhR3Vlc3RTZWF0c09yaWcgPSBuZXcgQXJyYXkoMSk7CmFHdWVzdFNlYXRzT3JpZ1swXSA9IG5l
dyBBcnJheSgxKTsKYUd1ZXN0U2VhdHNPcmlnWzBdWzBdID0gIiI7CnZhciBzZWF0U2VsZWN0UGFn
ZUlkID0gMDsKCmZ1bmN0aW9uIGlzUmVhY2NvbW1vZGF0ZWQoKSB7CiAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZGlhYmlsaXR5TXNnSWQiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7
CiAgICBmb3IgKGVhY2hTZWdDbnQgPSAwOyBlYWNoU2VnQ250IDwgYUd1ZXN0U2VhdHMubGVuZ3Ro
OyBlYWNoU2VnQ250KyspIHsKICAgICAgICBmb3IgKGVhY2hHdWVzdENudCA9IDA7IGVhY2hHdWVz
dENudCA8IGFHdWVzdFNlYXRzW2VhY2hTZWdDbnRdLmxlbmd0aDsgZWFjaEd1ZXN0Q250KyspIHsK
ICAgICAgICAgICAgaWYgKGFHdWVzdFNlYXRzW2VhY2hTZWdDbnRdW2VhY2hHdWVzdENudF0gPT0g
IjNDIiB8fCBhR3Vlc3RTZWF0c1tlYWNoU2VnQ250XVtlYWNoR3Vlc3RDbnRdID09ICIzRCIpIHsK
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaWFiaWxpdHlNc2dJZCIp
LnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7CiAgICAgICAgICAgICAgICBlYWNoU2VnQ250
ID0gYUd1ZXN0U2VhdHMubGVuZ3RoOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoYUd1ZXN0U2VhdHNbZWFjaFNlZ0NudF1bZWFj
aEd1ZXN0Q250XSA9PSAiTm90IFNlbGVjdGVkIiAmJiBzZWF0U2VsZWN0UGFnZUlkID09IDEpIHsK
ICAgICAgICAgICAgICAgICAgICBpZiAoYUd1ZXN0U2VhdHNPcmlnW2VhY2hTZWdDbnRdW2VhY2hH
dWVzdENudF0gPT0gIjNDIiB8fCBhR3Vlc3RTZWF0c09yaWdbZWFjaFNlZ0NudF1bZWFjaEd1ZXN0
Q250XSA9PSAiM0QiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJkaWFiaWxpdHlNc2dJZCIpLnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGVhY2hTZWdDbnQgPSBhR3Vlc3RTZWF0cy5sZW5ndGg7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiBjaGVj
a0NhYmluQ2xhc3Moc2VsZWN0ZWRDbGFzcywgYWN0aW9uLCBzZWF0T2JqZWN0KSB7CiAgICBpZiAo
Y2xlYXJQb3B1cEludGVydmFsKSB7CiAgICAgICAgY2xlYXJJbnRlcnZhbChjbGVhclBvcHVwSW50
ZXJ2YWwpOwogICAgICAgIGNvdW50ZXIgPSA4OwogICAgfQogICAgdmFyIHlTY3JvbGxPZmZzZXQg
PSBmX3Njcm9sbFRvcCgpOwogICAgdmFyIHVwZ3JhZGVDb3N0ID0gIiI7CiAgICB2YXIgcG9wVXBI
VE1MID0gIiI7CiAgICB2YXIgc2VhdCA9IHNlYXRPYmplY3QuaWQuc3Vic3RyKDcpOwogICAgdmFy
IHVwZ3JhZGUgPSB0cnVlOwogICAgdmFyIHlQb3NPZmZTZXQgPSAwOwogICAgdmFyIHJvdyA9IDA7
CiAgICBpZiAoc2VhdC5sZW5ndGggPT0gMikgewogICAgICAgIHJvdyA9IHNlYXQuc3Vic3RyKDAs
IDEpOwogICAgfSBlbHNlIHsKICAgICAgICBpZiAoc2VhdC5sZW5ndGggPT0gMykgewogICAgICAg
ICAgICByb3cgPSBzZWF0LnN1YnN0cigwLCAyKTsKICAgICAgICB9CiAgICB9CiAgICBpZiAoYUNh
YmluQ2xhc3NbYWN0aXZlU2VnbWVudEluZGV4XSAhPSBzZWxlY3RlZENsYXNzKSB7CiAgICAgICAg
aWYgKHNlbGVjdGVkQ2xhc3MgPT0gIkZJUlNUIikgewogICAgICAgICAgICB1cGdyYWRlQ29zdCA9
IHVwZ3JhZGVBbW91bnRGaXJzdDsKICAgICAgICAgICAgcG9wVXBIVE1MID0gImh0bWwvcG9wdXAt
c2VhdHNlbGVjdC1maXJzdGNsYXNzLmh0bWwiOwogICAgICAgICAgICBwb3BVcFRpdGxlID0gIkZp
cnN0IENsYXNzIjsKICAgICAgICAgICAgeVBvc09mZlNldCA9IC0xNjg7CiAgICAgICAgICAgIGlm
ICh5U2Nyb2xsT2Zmc2V0ID49IDIyMCkgewogICAgICAgICAgICAgICAgeVBvc09mZlNldCA9IDI1
OwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKHNlbGVjdGVk
Q2xhc3MgPT0gIk1DUyIpIHsKICAgICAgICAgICAgICAgIGlmICh1cGdyYWRlQW1vdW50TUNTIDwg
MCB8fCBldmFsKHVwZ3JhZGVBbW91bnRNQ1MucmVwbGFjZSgiLCIsICIiKSkgPT0gOTk5OTk5KSB7
CiAgICAgICAgICAgICAgICAgICAgdXBncmFkZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAg
IHBvcFVwSFRNTCA9ICJodG1sL3BvcHVwLXNlYXRzZWxlY3QtbWFpbmNhYmluLXJlZnVuZGFibGUt
aGYuaHRtbCI7CiAgICAgICAgICAgICAgICAgICAgcG9wVXBUaXRsZSA9ICJNYWluIENhYmluIFNl
bGVjdCI7CiAgICAgICAgICAgICAgICAgICAgeVBvc09mZlNldCA9IC0xNTA7CiAgICAgICAgICAg
ICAgICAgICAgaWYgKHlTY3JvbGxPZmZzZXQgPj0gMzI1ICYmIHJvdyA9PSAiMyIpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgeVBvc09mZlNldCA9IDI1OwogICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdXBncmFkZUNvc3Qg
PSB1cGdyYWRlQW1vdW50TUNTOwogICAgICAgICAgICAgICAgICAgIHBvcFVwSFRNTCA9ICJodG1s
L3BvcHVwLXNlYXRzZWxlY3QtbWFpbmNhYmluc2VsZWN0Lmh0bWwiOwogICAgICAgICAgICAgICAg
ICAgIHBvcFVwVGl0bGUgPSAiTWFpbiBDYWJpbiBTZWxlY3QiOwogICAgICAgICAgICAgICAgICAg
IHlQb3NPZmZTZXQgPSAtMTg1OwogICAgICAgICAgICAgICAgICAgIGlmICh5U2Nyb2xsT2Zmc2V0
ID49IDMyNSAmJiByb3cgPT0gIjMiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHlQb3NPZmZT
ZXQgPSAyNTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoeVNjcm9sbE9mZnNldCA+PSA1NDYgJiYgKHJvdyA9PSAiMTAiIHx8IHJvdyA9PSAi
OSIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5UG9zT2ZmU2V0ID0gMjU7CiAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpZiAoYWN0aW9uID09ICJtb3Vz
ZW92ZXIiICYmIHBvcFVwSFRNTCAhPSAiIikgewogICAgICAgIGlmIChhQ2FiaW5DbGFzc1thY3Rp
dmVTZWdtZW50SW5kZXhdICE9IHNlbGVjdGVkQ2xhc3MpIHsKICAgICAgICAgICAgaWYgKHVwZ3Jh
ZGUpIHsKICAgICAgICAgICAgICAgIGlmIChmYXJlRm9ybWF0VHlwZSA9PSAiRG9sbGFycyIpIHsK
ICAgICAgICAgICAgICAgICAgICB1cGdyYWRlQ29zdCA9IGN1cnJlbmN5Q29kZURvbGxhciArIHVw
Z3JhZGVDb3N0LnNwbGl0KCIuIilbMF0gKyAiLjAwIjsKICAgICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgdXBncmFkZUNvc3QgPSB1cGdyYWRlQ29zdC5zcGxpdCgiLiIp
WzBdICsgIiBwb2ludHMiOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAg
ICAgIHVwZGF0ZVBvcHVwKHBvcFVwSFRNTCwgcG9wVXBUaXRsZSwgMzUwLCBzZWF0T2JqZWN0LCBm
YWxzZSwgLTE1MCwgeVBvc09mZlNldCwgZmFsc2UsIHVwZ3JhZGVDb3N0KTsKICAgICAgICB9CiAg
ICB9CiAgICBpZiAoYWN0aW9uID09ICJtb3VzZW91dCIpIHsKICAgICAgICBjbG9zZVBvcHVwKCJw
b3B1cElkIik7CiAgICB9Cn0KZnVuY3Rpb24gY2hhbmdlR3Vlc3RTZWdtZW50KHR5cGUsIGd1ZXN0
LCBzZWdtZW50LCBpc1BhZ2VSZWZyZXNoLCBzZXNzaW9uTGVnSW5kZXgsIGVsZW1lbnRJZCkgewog
ICAgdmFyIHByZXZBY3RpdmVTZWdtZW50ID0gYWN0aXZlU2VnbWVudDsKICAgIHZhciBjdXJyZW50
QWN0aXZlR3Vlc3QgPSBhY3RpdmVHdWVzdDsKICAgIGlmICh0eXBlID09ICJjaGFuZ2VHdWVzdCIp
IHsKICAgICAgICBpZiAoZ3Vlc3QgIT0gOTkpIHsKICAgICAgICAgICAgYWN0aXZlR3Vlc3QgPSBn
dWVzdDsKICAgICAgICAgICAgYWN0aXZlR3Vlc3RJbmRleCA9IGd1ZXN0OwogICAgICAgIH0KICAg
ICAgICBpZiAoc2VnbWVudCAhPSA5OSkgewogICAgICAgICAgICBhY3RpdmVTZWdtZW50ID0gc2Vn
bWVudDsKICAgICAgICAgICAgYWN0aXZlU2VnbWVudEluZGV4ID0gc2VnbWVudDsKICAgICAgICB9
CiAgICAgICAgaWYgKHNlZ21lbnQgPT0gOTkpIHsKICAgICAgICAgICAgYWN0aXZlU2VnbWVudCA9
IHByZXZBY3RpdmVTZWdtZW50OwogICAgICAgICAgICBhY3RpdmVTZWdtZW50SW5kZXggPSBwcmV2
QWN0aXZlU2VnbWVudDsKICAgICAgICAgICAgYWN0aXZlR3Vlc3QgPSBndWVzdDsKICAgICAgICAg
ICAgYWN0aXZlR3Vlc3RJbmRleCA9IGd1ZXN0OwogICAgICAgIH0KICAgICAgICBpZiAoZ3Vlc3Qg
PT0gOTkpIHsKICAgICAgICAgICAgYWN0aXZlR3Vlc3QgPSAwOwogICAgICAgICAgICBhY3RpdmVH
dWVzdEluZGV4ID0gMDsKICAgICAgICAgICAgYWN0aXZlU2VnbWVudCA9IHNlZ21lbnQ7CiAgICAg
ICAgICAgIGFjdGl2ZVNlZ21lbnRJbmRleCA9IHNlZ21lbnQ7CiAgICAgICAgfQogICAgICAgIHZh
ciBpOwogICAgICAgIHZhciBqOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZWdtZW50Q291bnQ7
IGkrKykgewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VnbWVudF8iICsg
aSkuY2xhc3NOYW1lID0gInNzR3Vlc3RUYWJsZUluYWN0aXZlIjsKICAgICAgICAgICAgZm9yIChq
ID0gMDsgaiA8IHBheENvdW50OyBqKyspIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJzZWdtZW50R3Vlc3RfIiArIGkgKyAiXyIgKyBqKS5jbGFzc05hbWUgPSAic3NH
dWVzdFRhYmxlSW5hY3RpdmUiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZvciAo
aiA9IDA7IGogPCBwYXhDb3VudDsgaisrKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJndWVzdF8iICsgaikuY2xhc3NOYW1lID0gInNzR3Vlc3RUYWJsZUluYWN0aXZlIjsK
ICAgICAgICB9CiAgICAgICAgaWYgKGFjdGl2ZVNlZ21lbnQgIT0gcHJldkFjdGl2ZVNlZ21lbnQg
JiYgYWN0aXZlU2VnbWVudCA8PSBzZWdtZW50Q291bnQpIHsKICAgICAgICAgICAgaWYgKGlzUGFn
ZVJlZnJlc2ggIT0gInRydWUiKSB7CiAgICAgICAgICAgICAgICByZWxvYWRTZWF0TWFwRm9yVGhp
c1NlZ21lbnQoYWN0aXZlU2VnbWVudCwgcHJldkFjdGl2ZVNlZ21lbnQsIHNlc3Npb25MZWdJbmRl
eCwgZWxlbWVudElkKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZ3Vlc3RfIiArIGFjdGl2ZUd1ZXN0SW5kZXgpLmNsYXNzTmFtZSA9ICJz
c0d1ZXN0VGFibGVBY3RpdmUiOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWdt
ZW50XyIgKyBhY3RpdmVTZWdtZW50SW5kZXgpLmNsYXNzTmFtZSA9ICJzc0d1ZXN0VGFibGVBY3Rp
dmUiOwogICAgICAgIGZvciAoaiA9IDA7IGogPCBwYXhDb3VudDsgaisrKSB7CiAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWdtZW50R3Vlc3RfIiArIGFjdGl2ZVNlZ21lbnRJ
bmRleCArICJfIiArIGopLmNsYXNzTmFtZSA9ICJzc0d1ZXN0VGFibGVBY3RpdmUiOwogICAgICAg
IH0KICAgICAgICBmb3IgKGsgPSAwOyBrIDwgc2VnbWVudENvdW50OyBrKyspIHsKICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlZ21lbnRHdWVzdF8iICsgayArICJfIiArIGFj
dGl2ZUd1ZXN0SW5kZXgpLmNsYXNzTmFtZSA9ICJzc0d1ZXN0VGFibGVBY3RpdmUiOwogICAgICAg
IH0KICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VnbWVudEd1ZXN0XyIgKyBhY3Rp
dmVTZWdtZW50SW5kZXggKyAiXyIgKyBhY3RpdmVHdWVzdEluZGV4KS5jbGFzc05hbWUgPSAic3NH
dWVzdFRhYmxlQWN0aXZlSW50ZXJzZWN0IjsKICAgIH0KfQpmdW5jdGlvbiBzZXRHdWVzdFNlYXQo
c2VhdE9iamVjdCwgY2FiaW5DbGFzcywgaXNFeGl0Um93LCBzZWF0VHlwZSwgaXNOUlNSb3cpIHsK
ICAgIHZhciBpOwogICAgdmFyIGo7CiAgICBzZWxlY3RlZFNlYXQgPSBzZWF0T2JqZWN0LmlkLnN1
YnN0cig3KTsKICAgIHNlbGVjdGVkU2VhdENsYXNzTmFtZSA9IHNlYXRPYmplY3QuY2xhc3NOYW1l
OwogICAgc2VsZWN0ZWRTZWF0Q2FiaW5DbGFzcyA9ICIiOwogICAgc2VsZWN0ZWRTZWF0SWQgPSBz
ZWF0T2JqZWN0LmlkOwogICAgY3VycmVudENhYmluQ2xhc3MgPSBhQ2FiaW5DbGFzc1thY3RpdmVT
ZWdtZW50SW5kZXhdOwogICAgY3VycmVudFNlYXQgPSBhR3Vlc3RTZWF0c1thY3RpdmVHdWVzdElu
ZGV4XVthY3RpdmVTZWdtZW50SW5kZXhdOwogICAgcHJldmlvdXNTdHlsZUNsYXNzID0gYVByZXZT
ZWF0U3R5bGVbYWN0aXZlR3Vlc3RJbmRleF1bYWN0aXZlU2VnbWVudEluZGV4XTsKICAgIHZhciBh
bm90aGVyR3Vlc3RzU2VhdCA9ICJmYWxzZSI7CiAgICB2YXIgdXBncmFkZUNvc3QgPSAiIjsKICAg
IHZhciBwb3BVcEhUTUwgPSAiIjsKICAgIHZhciBwb3BVcFdpZHRoID0gIjI1MCI7CiAgICB2YXIg
cG9wVXBUaXRsZSA9ICIiOwogICAgdmFyIHBvcFVwUmVjbGluZSA9IGZhbHNlOwogICAgdmFyIHBv
cFVwTUNTRXhpdFJvdyA9IGZhbHNlOwogICAgdmFyIHBvcFVwVXBncmFkZSA9IGZhbHNlOwogICAg
dmFyIHBvcFVwTm9VcGdyYWRlID0gZmFsc2U7CiAgICB2YXIgcG9wVXBOb1VwR3JhZGUgPSBmYWxz
ZTsKICAgIGlmIChhR3Vlc3RTZWF0c1thY3RpdmVHdWVzdEluZGV4XVthY3RpdmVTZWdtZW50SW5k
ZXhdICYmIChhR3Vlc3RTZWF0c1thY3RpdmVHdWVzdEluZGV4XVthY3RpdmVTZWdtZW50SW5kZXhd
ICE9IG51bGwgJiYgYUd1ZXN0U2VhdHNbYWN0aXZlR3Vlc3RJbmRleF1bYWN0aXZlU2VnbWVudElu
ZGV4XSAhPSAiIiAmJiBhR3Vlc3RTZWF0c1thY3RpdmVHdWVzdEluZGV4XVthY3RpdmVTZWdtZW50
SW5kZXhdICE9IG5vdFNlbGVjdGVkKSkgewogICAgICAgIGN1cnJlbnRTZWF0ID0gInNlYXRJZF8i
ICsgYUd1ZXN0U2VhdHNbYWN0aXZlR3Vlc3RJbmRleF1bYWN0aXZlU2VnbWVudEluZGV4XTsKICAg
IH0KICAgIGlmIChzZWF0T2JqZWN0LmlkICE9IGN1cnJlbnRTZWF0KSB7CiAgICAgICAgaWYgKGNh
YmluQ2xhc3MgPT0gIkZJUlNUIikgewogICAgICAgICAgICBzZWxlY3RlZFNlYXRDYWJpbkNsYXNz
RGlzcGxheSA9ICJGaXJzdCI7CiAgICAgICAgICAgIHNlbGVjdGVkU2VhdFN0eWxlQ2xhc3MgPSAi
c3NTZWF0TWFwRkNTZWxlY3RlZCI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKGNh
YmluQ2xhc3MgPT0gIk1DUyIpIHsKICAgICAgICAgICAgICAgIHNlbGVjdGVkU2VhdENhYmluQ2xh
c3NEaXNwbGF5ID0gIk1haW4gQ2FiaW4gU2VsZWN0IjsKICAgICAgICAgICAgICAgIHNlbGVjdGVk
U2VhdFN0eWxlQ2xhc3MgPSAic3NTZWF0TWFwTUNTU2VsZWN0ZWQiOwogICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgc2VsZWN0ZWRTZWF0Q2FiaW5DbGFzc0Rpc3BsYXkgPSAiTWFp
biBDYWJpbiI7CiAgICAgICAgICAgICAgICBzZWxlY3RlZFNlYXRTdHlsZUNsYXNzID0gInNzU2Vh
dE1hcE1DU2VsZWN0ZWQiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChjYWJp
bkNsYXNzID09ICJGSVJTVCIpIHsKICAgICAgICAgICAgaWYgKGFDYWJpbkNsYXNzW2FjdGl2ZVNl
Z21lbnRJbmRleF0gPT0gIkZJUlNUIikgewogICAgICAgICAgICAgICAgc2VsZWN0ZWRTZWF0Q2Fi
aW5DbGFzcyA9ICJGSVJTVCI7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBw
b3BVcEhUTUwgPSAiaHRtbC9wb3B1cC1zZWF0c2VsZWN0LXVnLWZpcnN0Y2xhc3MuaHRtbCI7CiAg
ICAgICAgICAgICAgICB1cGdyYWRlQ29zdCA9IHVwZ3JhZGVBbW91bnRGaXJzdDsKICAgICAgICAg
ICAgICAgIHBvcFVwVGl0bGUgPSAiRmlyc3QgQ2xhc3MiOwogICAgICAgICAgICAgICAgeVBvc09m
ZlNldCA9IDA7CiAgICAgICAgICAgICAgICBwb3B1cFdpZHRoID0gNTE4OwogICAgICAgICAgICAg
ICAgc2VsZWN0ZWRTZWF0Q2FiaW5DbGFzcyA9ICJGSVJTVCI7CiAgICAgICAgICAgICAgICBwb3BV
cFVwZ3JhZGUgPSB0cnVlOwogICAgICAgICAgICAgICAgdXBHcmFkZVR5cGUgPSAiRklSU1QiOwog
ICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKGNhYmluQ2xhc3Mg
PT0gIk1DUyIgJiYgaXNFeGl0Um93ID09ICJmYWxzZSIgJiYgYUNhYmluQ2xhc3NbYWN0aXZlU2Vn
bWVudEluZGV4XSA9PSAiRUNPTk9NWSIpIHsKICAgICAgICAgICAgICAgIGlmICh1cGdyYWRlQW1v
dW50TUNTIDwgMCB8fCBldmFsKHVwZ3JhZGVBbW91bnRNQ1MucmVwbGFjZSgiLCIsICIiKSkgPT0g
OTk5OTk5KSB7CiAgICAgICAgICAgICAgICAgICAgcG9wVXBIVE1MID0gImh0bWwvcG9wdXAtc2Vh
dHNlbGVjdC1tY3MtY2Fubm90LXVwZ3JhZGUuaHRtbCI7CiAgICAgICAgICAgICAgICAgICAgcG9w
VXBUaXRsZSA9ICJNYWluIENhYmluIFNlbGVjdCI7CiAgICAgICAgICAgICAgICAgICAgcG9wdXBX
aWR0aCA9IDQwMDsKICAgICAgICAgICAgICAgICAgICB5UG9zT2ZmU2V0ID0gMDsKICAgICAgICAg
ICAgICAgICAgICBwb3BVcFVwZ3JhZGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBwb3BV
cE5vVXBHcmFkZSA9IHRydWU7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgIHBvcFVwSFRNTCA9ICJodG1sL3BvcHVwLXNlYXRzZWxlY3QtdWctbWFpbmNhYmluc2Vs
ZWN0Lmh0bWwiOwogICAgICAgICAgICAgICAgICAgIHBvcFVwVGl0bGUgPSAiTWFpbiBDYWJpbiBT
ZWxlY3QiOwogICAgICAgICAgICAgICAgICAgIHVwZ3JhZGVDb3N0ID0gdXBncmFkZUFtb3VudE1D
UzsKICAgICAgICAgICAgICAgICAgICB5UG9zT2ZmU2V0ID0gMDsKICAgICAgICAgICAgICAgICAg
ICBwb3B1cFdpZHRoID0gNTE4OwogICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkU2VhdENhYmlu
Q2xhc3MgPSAiTUNTIjsKICAgICAgICAgICAgICAgICAgICBwb3BVcFVwZ3JhZGUgPSB0cnVlOwog
ICAgICAgICAgICAgICAgICAgIHVwR3JhZGVUeXBlID0gIk1DUyI7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoY2FiaW5DbGFzcyA9PSAi
TUNTIiAmJiBpc0V4aXRSb3cgPT0gInRydWUiKSB7CiAgICAgICAgICAgICAgICAgICAgcG9wdXBX
aWR0aCA9IDUxODsKICAgICAgICAgICAgICAgICAgICBpZiAodXBncmFkZUFtb3VudE1DUyA8IDAg
fHwgKGV2YWwodXBncmFkZUFtb3VudE1DUy5yZXBsYWNlKCIsIiwgIiIpKSA9PSA5OTk5OTkgJiYg
YUNhYmluQ2xhc3NbYWN0aXZlU2VnbWVudEluZGV4XSA9PSAiRUNPTk9NWSIpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHBvcFVwSFRNTCA9ICJodG1sL3BvcHVwLXNlYXRzZWxlY3QtbWNzLWNh
bm5vdC11cGdyYWRlLmh0bWwiOwogICAgICAgICAgICAgICAgICAgICAgICBwb3BVcFRpdGxlID0g
Ik1haW4gQ2FiaW4gU2VsZWN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgcG9wdXBXaWR0aCA9
IDM1MDsKICAgICAgICAgICAgICAgICAgICAgICAgeVBvc09mZlNldCA9IC0xNTA7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHBvcFVwVXBncmFkZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAg
ICAgICBwb3BVcE1DU0V4aXRSb3cgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgcG9w
VXBOb1VwR3JhZGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChhQ2FiaW5DbGFzc1thY3RpdmVTZWdtZW50SW5kZXhdID09ICJN
Q1MiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdHJpY3RHdWVzdEFyclth
Y3RpdmVHdWVzdEluZGV4XSAmJiAocmVzdHJpY3RHdWVzdEFyclthY3RpdmVHdWVzdEluZGV4XSA9
PSAicmVzdHJpY3QiIHx8IHJlc3RyaWN0R3Vlc3RBcnJbYWN0aXZlR3Vlc3RJbmRleF0gPT0gImZ1
bGxSZXN0cmljdCIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9wVXBIVE1M
ID0gImh0bWwvcG9wdXAtc2VhdHNlbGVjdC1yZXN0cmljdGVkLmh0bWwiOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBvcHVwV2lkdGggPSAzNzU7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcFVwSFRN
TCA9ICJodG1sL3BvcHVwLXNlYXRzZWxlY3QtbWFpbmNhYmluc2VsZWN0LWV4aXRyb3cuaHRtbCI7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwb3BVcE1DU0V4aXRSb3cgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBncmFkZUNvc3QgPSB1cGdyYWRlQW1vdW50
TUNTOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBHcmFkZVR5cGUgPSAiTUNTIjsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN0cmljdEd1ZXN0QXJyW2FjdGl2ZUd1ZXN0
SW5kZXhdICYmIChyZXN0cmljdEd1ZXN0QXJyW2FjdGl2ZUd1ZXN0SW5kZXhdID09ICJyZXN0cmlj
dCIgfHwgcmVzdHJpY3RHdWVzdEFyclthY3RpdmVHdWVzdEluZGV4XSA9PSAiZnVsbFJlc3RyaWN0
IikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3BVcEhUTUwgPSAiaHRtbC9w
b3B1cC1zZWF0c2VsZWN0LXJlc3RyaWN0ZWQuaHRtbCI7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcG9wdXBXaWR0aCA9IDM3NTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwb3BVcE1DU0V4aXRSb3cgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3BVcEhUTUwgPSAiaHRtbC9w
b3B1cC1zZWF0c2VsZWN0LXVnLW1haW5jYWJpbnNlbGVjdC1leGl0cm93Lmh0bWwiOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBvcFVwVXBncmFkZSA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcG9wVXBUaXRsZSA9ICJNYWluIENhYmluIFNl
bGVjdCI7CiAgICAgICAgICAgICAgICAgICAgeVBvc09mZlNldCA9IDA7CiAgICAgICAgICAgICAg
ICAgICAgc2VsZWN0ZWRTZWF0Q2FiaW5DbGFzcyA9ICJNQ1MiOwogICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoY2FiaW5DbGFzcyA9PSAiRUNPTk9NWSIgJiYg
aXNOUlNSb3cgPT0gInRydWUiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvcFVwUmVjbGlu
ZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvcFVwSFRNTCA9ICJodG1sL3BvcHVw
LXNlYXRzZWxlY3QtcmVjbGluZS5odG1sIjsKICAgICAgICAgICAgICAgICAgICAgICAgcG9wVXBU
aXRsZSA9ICJGQUEgUmVzdHJpY3Rpb25zIjsKICAgICAgICAgICAgICAgICAgICAgICAgeVBvc09m
ZlNldCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVwV2lkdGggPSA0MDA7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkU2VhdENhYmluQ2xhc3MgPSAiRUNPTk9NWSI7CiAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAg
ICAgfQogICAgICAgIHNlbGVjdGVkU2VhdFR5cGUgPSBzZWF0VHlwZTsKICAgICAgICBzZWxlY3Rl
ZFNlYXRDYWJpbkNsYXNzRGlzcGxheSA9IHNlbGVjdGVkU2VhdENhYmluQ2xhc3NEaXNwbGF5ICsg
Ii8iICsgc2VsZWN0ZWRTZWF0VHlwZTsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGF4Q291bnQ7
IGkrKykgewogICAgICAgICAgICBpZiAoYUd1ZXN0U2VhdHNbaV1bYWN0aXZlU2VnbWVudEluZGV4
XSA9PSBzZWxlY3RlZFNlYXQpIHsKICAgICAgICAgICAgICAgIGFub3RoZXJHdWVzdHNTZWF0ID0g
InRydWUiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChhbm90aGVyR3Vlc3Rz
U2VhdCA9PSAiZmFsc2UiKSB7CiAgICAgICAgICAgIGlmIChwb3BVcFVwZ3JhZGUpIHsKICAgICAg
ICAgICAgICAgIGNsb3NlUG9wdXAoInBvcHVwSWQiKTsKICAgICAgICAgICAgICAgIG5ld1NlYXRO
dW1iZXIgPSBzZWxlY3RlZFNlYXQ7CiAgICAgICAgICAgICAgICBzZWF0VHlwZVVwZ3JhZGUgPSBz
ZWF0VHlwZTsKICAgICAgICAgICAgICAgIGlmIChmYXJlRm9ybWF0VHlwZSA9PSAiRG9sbGFycyIp
IHsKICAgICAgICAgICAgICAgICAgICB1cGdyYWRlQ29zdCA9IGN1cnJlbmN5Q29kZURvbGxhciAr
IHVwZ3JhZGVDb3N0OwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICB1cGdyYWRlQ29zdCA9IHVwZ3JhZGVDb3N0LnNwbGl0KCIuIilbMF0gKyAiIHBvaW50cyI7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwb3B1cE92ZXJsYXkocG9wVXBIVE1MLCBw
b3BVcFRpdGxlLCBwb3B1cFdpZHRoLCBzZWF0T2JqZWN0LCBmYWxzZSwgLTIwMCwgeVBvc09mZlNl
dCwgZmFsc2UsIHVwZ3JhZGVDb3N0KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgIGlmIChwb3BVcE5vVXBHcmFkZSkgewogICAgICAgICAgICAgICAgICAgIGNsb3NlUG9wdXAo
InBvcHVwSWQiKTsKICAgICAgICAgICAgICAgICAgICBwb3B1cE92ZXJsYXkocG9wVXBIVE1MLCBw
b3BVcFRpdGxlLCBwb3B1cFdpZHRoLCBzZWF0T2JqZWN0LCBmYWxzZSwgLTIwMCwgeVBvc09mZlNl
dCwgZmFsc2UsICIiKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgaWYgKHBvcFVwUmVjbGluZSA9PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNs
b3NlUG9wdXAoInBvcHVwSWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgcG9wdXBPdmVybGF5
KHBvcFVwSFRNTCwgcG9wVXBUaXRsZSwgcG9wdXBXaWR0aCwgc2VhdE9iamVjdCwgZmFsc2UsIC0y
MDAsIHlQb3NPZmZTZXQsIGZhbHNlLCAiIiwgc2V0U2VhdCgpKTsKICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9wVXBSZWNsaW5lID09IHRy
dWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlUG9wdXAoInBvcHVwSWQiKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVwT3ZlcmxheShwb3BVcEhUTUwsIHBvcFVw
VGl0bGUsIHBvcHVwV2lkdGgsIHNlYXRPYmplY3QsIGZhbHNlLCAtMjAwLCB5UG9zT2ZmU2V0LCBm
YWxzZSwgIiIsIHNldFNlYXQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9wVXBNQ1NFeGl0Um93ID09IHRydWUpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFyZUZvcm1hdFR5cGUgPT0gIkRv
bGxhcnMiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZ3JhZGVDb3N0
ID0gY3VycmVuY3lDb2RlRG9sbGFyICsgdXBncmFkZUNvc3Q7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVwT3Zlcmxh
eShwb3BVcEhUTUwsIHBvcFVwVGl0bGUsIHBvcHVwV2lkdGgsIHNlYXRPYmplY3QsIGZhbHNlLCAt
MjAwLCB5UG9zT2ZmU2V0LCBmYWxzZSwgdXBncmFkZUNvc3QpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWF0
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0K
ICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIGFHdWVzdFNlYXRzW2FjdGl2ZUd1ZXN0SW5k
ZXhdW2FjdGl2ZVNlZ21lbnRJbmRleF0gPSBub3RTZWxlY3RlZDsKICAgICAgICBhUHJldlNlYXRT
dHlsZVthY3RpdmVHdWVzdEluZGV4XVthY3RpdmVTZWdtZW50SW5kZXhdID0gIiI7CiAgICAgICAg
YVNlYXRUeXBlW2FjdGl2ZUd1ZXN0SW5kZXhdW2FjdGl2ZVNlZ21lbnRJbmRleF0gPSBub3RTZWxl
Y3RlZDsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzZWF0T2JqZWN0LmlkKS5jbGFz
c05hbWUgPSBwcmV2aW91c1N0eWxlQ2xhc3M7CiAgICAgICAgdmFyIGRpc3BsYXlTZWF0VmFsID0g
Ii0tIjsKICAgICAgICBpZiAoc2VhdFNlbGVjdFBhZ2VJZCA9PSAxICYmIGFHdWVzdFNlYXRzT3Jp
Z1thY3RpdmVHdWVzdEluZGV4XVthY3RpdmVTZWdtZW50SW5kZXhdICE9ICIiICYmIGFHdWVzdFNl
YXRzT3JpZ1thY3RpdmVHdWVzdEluZGV4XVthY3RpdmVTZWdtZW50SW5kZXhdICE9ICJOb3QgU2Vs
ZWN0ZWQiKSB7CiAgICAgICAgICAgIGRpc3BsYXlTZWF0VmFsID0gYUd1ZXN0U2VhdHNPcmlnW2Fj
dGl2ZUd1ZXN0SW5kZXhdW2FjdGl2ZVNlZ21lbnRJbmRleF07CiAgICAgICAgICAgIGRpc3BsYXlT
ZWF0VmFsICs9ICIzQywzRCIuaW5kZXhPZihkaXNwbGF5U2VhdFZhbC50b1VwcGVyQ2FzZSgpKSA+
PSAwID8gIioiIDogIiI7CiAgICAgICAgfQogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJzZWdtZW50R3Vlc3RfIiArIGFjdGl2ZVNlZ21lbnRJbmRleCArICJfIiArIGFjdGl2ZUd1ZXN0
SW5kZXgpLmlubmVySFRNTCA9IGRpc3BsYXlTZWF0VmFsOwogICAgICAgIGlmIChzZWF0U2VsZWN0
UGFnZUlkID09IDEpIHsKICAgICAgICAgICAgaWYgKGV2YWwoaXNVcGdyU2VhdFthY3RpdmVMZWdJ
bmRleF1bYWN0aXZlU2VnbWVudEluZGV4XSkpIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJHdWVzdF8iICsgYWN0aXZlTGVnSW5kZXggKyAiXyIgKyBhY3RpdmVTZWdt
ZW50SW5kZXggKyAiXyIgKyBhY3RpdmVHdWVzdEluZGV4KS5pbm5lckhUTUwgPSAiTm90IFNlbGVj
dGVkIjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJHdWVzdF8iICsgYWN0aXZlTGVnSW5kZXggKyAiXyIgKyBhY3RpdmVTZWdtZW50
SW5kZXggKyAiXyIgKyBhY3RpdmVHdWVzdEluZGV4KS5pbm5lckhUTUwgPSBhR3Vlc3RTZWF0c09y
aWdbYWN0aXZlR3Vlc3RJbmRleF1bYWN0aXZlU2VnbWVudEluZGV4XSAhPSAiIiAmJiBhR3Vlc3RT
ZWF0c09yaWdbYWN0aXZlR3Vlc3RJbmRleF1bYWN0aXZlU2VnbWVudEluZGV4XSAhPSAiTm90IFNl
bGVjdGVkIiA/IGFHdWVzdFNlYXRzT3JpZ1thY3RpdmVHdWVzdEluZGV4XVthY3RpdmVTZWdtZW50
SW5kZXhdIDogIk5vdCBTZWxlY3RlZCI7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiR3Vlc3RfIiArIGFjdGl2ZUxlZ0lu
ZGV4ICsgIl8iICsgYWN0aXZlU2VnbWVudEluZGV4ICsgIl8iICsgYWN0aXZlR3Vlc3RJbmRleCku
aW5uZXJIVE1MID0gIk5vdCBTZWxlY3RlZCI7CiAgICAgICAgfQogICAgICAgIGlzUmVhY2NvbW1v
ZGF0ZWQoKTsKICAgIH0KICAgIGZ1bmN0aW9uIHNldFNlYXQoKSB7CiAgICAgICAgdmFyIHNldFNl
YXQgPSAidHJ1ZSI7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IHBheENvdW50OyBpKyspIHsKICAg
ICAgICAgICAgaWYgKGFHdWVzdFNlYXRzW2ldW2FjdGl2ZVNlZ21lbnRJbmRleF0gPT0gc2VsZWN0
ZWRTZWF0KSB7CiAgICAgICAgICAgICAgICBzZXRTZWF0ID0gImZhbHNlIjsKICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChzZXRTZWF0ID09
ICJ0cnVlIikgewogICAgICAgICAgICB2YXIgc2VsZWN0ZWRTZWF0RGlzcGxheSA9IHNlbGVjdGVk
U2VhdC50b1VwcGVyQ2FzZSgpOwogICAgICAgICAgICBpZiAoY3VycmVudFNlYXQgJiYgY3VycmVu
dFNlYXQgIT0gbm90U2VsZWN0ZWQgJiYgY3VycmVudFNlYXQgIT0gIiIpIHsKICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGN1cnJlbnRTZWF0KS5jbGFzc05hbWUgPSBwcmV2
aW91c1N0eWxlQ2xhc3M7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYUd1ZXN0U2VhdHNbYWN0
aXZlR3Vlc3RJbmRleF1bYWN0aXZlU2VnbWVudEluZGV4XSA9IHNlbGVjdGVkU2VhdDsKICAgICAg
ICAgICAgYVByZXZTZWF0U3R5bGVbYWN0aXZlR3Vlc3RJbmRleF1bYWN0aXZlU2VnbWVudEluZGV4
XSA9IHNlYXRPYmplY3QuY2xhc3NOYW1lOwogICAgICAgICAgICBhU2VhdFR5cGVbYWN0aXZlR3Vl
c3RJbmRleF1bYWN0aXZlU2VnbWVudEluZGV4XSA9IHNlYXRUeXBlOwogICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChzZWF0T2JqZWN0LmlkKS5jbGFzc05hbWUgPSBzZWxlY3RlZFNl
YXRTdHlsZUNsYXNzOwogICAgICAgICAgICB2YXIgc2VsZWN0ZWRTZWF0RGlzcGxheVlUUyA9IHNl
bGVjdGVkU2VhdERpc3BsYXk7CiAgICAgICAgICAgIGlmIChzZWxlY3RlZFNlYXREaXNwbGF5ID09
ICIzQyIgfHwgc2VsZWN0ZWRTZWF0RGlzcGxheSA9PSAiM0QiKSB7CiAgICAgICAgICAgICAgICBz
ZWxlY3RlZFNlYXREaXNwbGF5ID0gc2VsZWN0ZWRTZWF0RGlzcGxheSArICIqIjsKICAgICAgICAg
ICAgfQogICAgICAgICAgICBpZiAoc2VhdFNlbGVjdFBhZ2VJZCA9PSAxICYmIGFHdWVzdFNlYXRz
T3JpZ1thY3RpdmVHdWVzdEluZGV4XVthY3RpdmVTZWdtZW50SW5kZXhdICE9ICIiICYmIGFHdWVz
dFNlYXRzT3JpZ1thY3RpdmVHdWVzdEluZGV4XVthY3RpdmVTZWdtZW50SW5kZXhdICE9ICJOb3Qg
U2VsZWN0ZWQiKSB7CiAgICAgICAgICAgICAgICBzZWxlY3RlZFNlYXREaXNwbGF5ID0gJzxzcGFu
IGNsYXNzPSJzdHJpa2VPdXQiPicgKyBhR3Vlc3RTZWF0c09yaWdbYWN0aXZlR3Vlc3RJbmRleF1b
YWN0aXZlU2VnbWVudEluZGV4XSArICI8L3NwYW4+IC8iICsgc2VsZWN0ZWRTZWF0RGlzcGxheTsK
ICAgICAgICAgICAgfQogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VnbWVu
dEd1ZXN0XyIgKyBhY3RpdmVTZWdtZW50SW5kZXggKyAiXyIgKyBhY3RpdmVHdWVzdEluZGV4KS5p
bm5lckhUTUwgPSBzZWxlY3RlZFNlYXREaXNwbGF5ICsgJzxicj48c3BhbiBzdHlsZT0iZm9udC1z
aXplOjlweDtmb250LWZhbWlseTphcmlhbDsiPicgKyBzZWxlY3RlZFNlYXRDYWJpbkNsYXNzRGlz
cGxheSArICI8L3NwYW4+IjsKICAgICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJHdWVzdF8iICsgYWN0aXZlTGVnSW5kZXggKyAiXyIgKyBhY3RpdmVTZWdtZW50SW5kZXggKyAi
XyIgKyBhY3RpdmVHdWVzdEluZGV4KSkgewogICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoIkd1ZXN0XyIgKyBhY3RpdmVMZWdJbmRleCArICJfIiArIGFjdGl2ZVNlZ21lbnRJ
bmRleCArICJfIiArIGFjdGl2ZUd1ZXN0SW5kZXgpLmlubmVySFRNTCA9IHNlbGVjdGVkU2VhdERp
c3BsYXlZVFM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2V0TmV4dEd1ZXN0KCk7CiAgICAg
ICAgICAgIGlzUmVhY2NvbW1vZGF0ZWQoKTsKICAgICAgICB9CiAgICB9Cn0KdmFyIG1ldGhvZFZh
bHVlUmVVc2UgPSAiIjsKCmZ1bmN0aW9uIHVwZ3JhZGVTZWF0KCkgewogICAgc2hvd1dhaXRJbWFn
ZSgpOwogICAgZG9jdW1lbnQuc2VhdE1hcEZvcm0uZ3Vlc3RJbmRleC52YWx1ZSA9IGFjdGl2ZUd1
ZXN0SW5kZXg7CiAgICBkb2N1bWVudC5zZWF0TWFwRm9ybS5uZXdTZWF0TnVtYmVyLnZhbHVlID0g
bmV3U2VhdE51bWJlcjsKICAgIGRvY3VtZW50LnNlYXRNYXBGb3JtLnVwZ3JhZGVUeXBlLnZhbHVl
ID0gdXBHcmFkZVR5cGU7CiAgICBkb2N1bWVudC5zZWF0TWFwRm9ybS5zZWF0VHlwZS52YWx1ZSA9
IHNlYXRUeXBlVXBncmFkZTsKICAgIGRvY3VtZW50LnNlYXRNYXBGb3JtLmFjdGl2ZVNlZ21lbnRJ
bmRleC52YWx1ZSA9IGFjdGl2ZVNlZ21lbnRJbmRleDsKICAgIGRvY3VtZW50LnNlYXRNYXBGb3Jt
LnNlbGVjdGVkU2VhdHNGb3JTZWdtZW50LnZhbHVlID0gIiI7CiAgICBpZiAobWV0aG9kVmFsdWVS
ZVVzZSA9PSBudWxsIHx8IG1ldGhvZFZhbHVlUmVVc2UgPT0gIiIpIHsKICAgICAgICBkb2N1bWVu
dC5zZWF0TWFwRm9ybS5tZXRob2QudmFsdWUgPSAic2VhdFVwZ3JhZGUiOwogICAgfSBlbHNlIHsK
ICAgICAgICBkb2N1bWVudC5zZWF0TWFwRm9ybS5tZXRob2QudmFsdWUgPSBtZXRob2RWYWx1ZVJl
VXNlOwogICAgfQogICAgZG9jdW1lbnQuc2VhdE1hcEZvcm0uc3VibWl0KCk7Cn0KZnVuY3Rpb24g
c2V0TmV4dEd1ZXN0KCkgewogICAgdmFyIGFzc2lnbmVkU2VhdENvdW50ID0gMDsKICAgIGZvciAo
aSA9IDA7IGkgPCBwYXhDb3VudDsgaSsrKSB7CiAgICAgICAgaWYgKGFHdWVzdFNlYXRzW2ldW2Fj
dGl2ZVNlZ21lbnRJbmRleF0gPT0gbnVsbCB8fCBhR3Vlc3RTZWF0c1tpXVthY3RpdmVTZWdtZW50
SW5kZXhdID09ICIiIHx8IGFHdWVzdFNlYXRzW2ldW2FjdGl2ZVNlZ21lbnRJbmRleF0gPT0gbm90
U2VsZWN0ZWQpIHsKICAgICAgICAgICAgY2hhbmdlR3Vlc3RTZWdtZW50KCJjaGFuZ2VHdWVzdCIs
IGksIGFjdGl2ZVNlZ21lbnRJbmRleCk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAg
IH0KfQpmdW5jdGlvbiBwb3B1bGF0ZVNlbGVjdGVkU2VhdHMoc2VnbXROdW1iZXIpIHsKICAgIHZh
ciBzZWF0c0ZvckFzZWdtZW50ID0gIiI7CiAgICB2YXIgc2VsZWN0ZWRTZWF0TmFtZVR5cGVzID0g
IiI7CiAgICBmb3IgKGogPSAwOyBqIDwgcGF4Q291bnQ7IGorKykgewogICAgICAgIHZhciBzZWF0
ID0gYUd1ZXN0U2VhdHNbal1bc2VnbXROdW1iZXJdOwogICAgICAgIHZhciBzZWF0VHlwZSA9IGFT
ZWF0VHlwZVtqXVtzZWdtdE51bWJlcl07CiAgICAgICAgaWYgKHNlYXRzRm9yQXNlZ21lbnQgPT0g
IiIgfHwgc2VhdHNGb3JBc2VnbWVudCA9PSBudWxsKSB7CiAgICAgICAgICAgIHNlYXRzRm9yQXNl
Z21lbnQgPSBzZWF0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNlYXRzRm9yQXNlZ21l
bnQgPSBzZWF0c0ZvckFzZWdtZW50ICsgIiwiICsgc2VhdDsKICAgICAgICB9CiAgICAgICAgaWYg
KHNlbGVjdGVkU2VhdE5hbWVUeXBlcyA9PSAiIiB8fCBzZWxlY3RlZFNlYXROYW1lVHlwZXMgPT0g
bnVsbCkgewogICAgICAgICAgICBzZWxlY3RlZFNlYXROYW1lVHlwZXMgPSBzZWF0VHlwZTsKICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICBzZWxlY3RlZFNlYXROYW1lVHlwZXMgPSBzZWxlY3Rl
ZFNlYXROYW1lVHlwZXMgKyAiLCIgKyBzZWF0VHlwZTsKICAgICAgICB9CiAgICB9CiAgICBkb2N1
bWVudC5zZWF0TWFwRm9ybS5zZWxlY3RlZFNlYXRzRm9yU2VnbWVudC52YWx1ZSA9IHNlYXRzRm9y
QXNlZ21lbnQ7CiAgICBkb2N1bWVudC5zZWF0TWFwRm9ybS5zZWxlY3RlZFNlYXROYW1lVHlwZXMu
dmFsdWUgPSBzZWxlY3RlZFNlYXROYW1lVHlwZXM7Cn0KZnVuY3Rpb24gcmVsb2FkU2VhdE1hcEZv
clRoaXNTZWdtZW50KHNlZ21lbnRJZCwgcHJldkFjdGl2ZVNlZ21lbnQsIHNlc3Npb25MZWdJbmRl
eCwgZWxlbWVudElkKSB7CiAgICBzaG93V2FpdEltYWdlKCk7CiAgICB2YXIgdGhldGltZSA9IG5l
dyBEYXRlKCk7CiAgICB2YXIgZHVtbXkgPSAiIiArIHRoZXRpbWUuZ2V0SG91cnMoKSArIHRoZXRp
bWUuZ2V0TWludXRlcygpICsgdGhldGltZS5nZXRTZWNvbmRzKCk7CiAgICB2YXIgbmV4dEFjdGlv
biA9ICIiOwogICAgaWYgKGFjdGlvblZhbCA9PSAic2VhdHNlbGVjdCIgfHwgYWN0aW9uVmFsID09
ICJwb3N0c2VhdHNlbGVjdCIpIHsKICAgICAgICBtZXRob2RWYWx1ZVJlVXNlID0gInNlYXRzZWxl
Y3QiOwogICAgICAgIG5leHRBY3Rpb24gPSAic2VhdHNlbGVjdCI7CiAgICB9IGVsc2UgewogICAg
ICAgIG5leHRBY3Rpb24gPSBhY3Rpb25WYWw7CiAgICB9CiAgICBteXVybCA9IG5leHRBY3Rpb24g
KyAiLmRvP21ldGhvZD0iICsgbWV0aG9kVmFsdWVSZVVzZSArICImYWN0aXZlU2VnbWVudEluZGV4
PSIgKyBzZWdtZW50SWQgKyAiJnByZXZBY3RpdmVTZWdtZW50PSIgKyBwcmV2QWN0aXZlU2VnbWVu
dCArICImYWpheENhbGw9dHJ1ZSI7CiAgICBpZiAoYWN0aW9uVmFsID09ICJzaG93Q2hhbmdlU2Vh
dE1hcCIgfHwgYWN0aW9uVmFsID09ICJjaGVja0luU2VhdFNlbGVjdCIpIHsKICAgICAgICBwb3B1
bGF0ZVNlbGVjdGVkU2VhdHMocHJldkFjdGl2ZVNlZ21lbnQpOwogICAgICAgIG15dXJsID0gbXl1
cmwgKyAiJnNlbGVjdGVkU2VhdHNGb3JTZWdtZW50PSIgKyBkb2N1bWVudC5zZWF0TWFwRm9ybS5z
ZWxlY3RlZFNlYXRzRm9yU2VnbWVudC52YWx1ZSArICImc2VsZWN0ZWRTZWF0TmFtZVR5cGVzPSIg
KyBkb2N1bWVudC5zZWF0TWFwRm9ybS5zZWxlY3RlZFNlYXROYW1lVHlwZXMudmFsdWUgKyAiIjsK
ICAgIH0KICAgIG15dXJsID0gbXl1cmwgKyAiJmR1bW15PSIgKyBkdW1teTsKICAgIHZhciBzZWF0
c0ZvckFzZWdtZW50ID0gIiI7CiAgICB2YXIgc2VsZWN0ZWRTZWF0TmFtZVR5cGVzID0gIiI7CiAg
ICBmb3IgKGogPSAwOyBqIDwgcGF4Q291bnQ7IGorKykgewogICAgICAgIHZhciBzZWF0ID0gYUd1
ZXN0U2VhdHNbal1bcHJldkFjdGl2ZVNlZ21lbnRdOwogICAgICAgIHZhciBzZWF0VHlwZSA9IGFT
ZWF0VHlwZVtqXVtwcmV2QWN0aXZlU2VnbWVudF07CiAgICAgICAgaWYgKHNlYXRzRm9yQXNlZ21l
bnQgPT0gIiIgfHwgc2VhdHNGb3JBc2VnbWVudCA9PSBudWxsKSB7CiAgICAgICAgICAgIHNlYXRz
Rm9yQXNlZ21lbnQgPSBzZWF0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNlYXRzRm9y
QXNlZ21lbnQgPSBzZWF0c0ZvckFzZWdtZW50ICsgIiwiICsgc2VhdDsKICAgICAgICB9CiAgICAg
ICAgaWYgKHNlbGVjdGVkU2VhdE5hbWVUeXBlcyA9PSAiIiB8fCBzZWxlY3RlZFNlYXROYW1lVHlw
ZXMgPT0gbnVsbCkgewogICAgICAgICAgICBzZWxlY3RlZFNlYXROYW1lVHlwZXMgPSBzZWF0VHlw
ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzZWxlY3RlZFNlYXROYW1lVHlwZXMgPSBz
ZWxlY3RlZFNlYXROYW1lVHlwZXMgKyAiLCIgKyBzZWF0VHlwZTsKICAgICAgICB9CiAgICB9CiAg
ICBteXVybCA9IG15dXJsICsgIiZzZWxlY3RlZFNlYXRzRm9yU2VnbWVudD0iICsgc2VhdHNGb3JB
c2VnbWVudCArICImc2VsZWN0ZWRTZWF0TmFtZVR5cGVzPSIgKyBzZWxlY3RlZFNlYXROYW1lVHlw
ZXM7CiAgICBteXVybCA9IHJlcGxhY2VBbGxGdW5jdGlvbihteXVybCwgIiAiLCAiJTIwIik7CiAg
ICAkKCIjc3NTZWF0TWFwMDEiKS5sb2FkKG15dXJsLCAiZGF0YTpzY3JpcHQiLCBzaG93TG9hZGlu
Z0ltYWdlQ2xvc2UpOwp9CmZ1bmN0aW9uIHJlcGxhY2VBbGxGdW5jdGlvbih0eHQsIHJlcGxhY2Us
IHdpdGhfdGhpcykgewogICAgcmV0dXJuIHR4dC5yZXBsYWNlKG5ldyBSZWdFeHAocmVwbGFjZSwg
ImciKSwgd2l0aF90aGlzKTsKfQpmdW5jdGlvbiBzdWJtaXRUYWIobGVnSW5kZXgpIHsKICAgIHNo
b3dXYWl0SW1hZ2UoKTsKICAgIHZhciBzZWF0c0ZvckFzZWdtZW50ID0gIiI7CiAgICB2YXIgc2Vs
ZWN0ZWRTZWF0TmFtZVR5cGVzID0gIiI7CiAgICBmb3IgKGogPSAwOyBqIDwgcGF4Q291bnQ7IGor
KykgewogICAgICAgIHZhciBzZWF0ID0gYUd1ZXN0U2VhdHNbal1bYWN0aXZlU2VnbWVudEluZGV4
XTsKICAgICAgICB2YXIgc2VhdFR5cGUgPSBhU2VhdFR5cGVbal1bYWN0aXZlU2VnbWVudEluZGV4
XTsKICAgICAgICBpZiAoc2VhdHNGb3JBc2VnbWVudCA9PSAiIiB8fCBzZWF0c0ZvckFzZWdtZW50
ID09IG51bGwpIHsKICAgICAgICAgICAgc2VhdHNGb3JBc2VnbWVudCA9IHNlYXQ7CiAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgc2VhdHNGb3JBc2VnbWVudCA9IHNlYXRzRm9yQXNlZ21lbnQg
KyAiLCIgKyBzZWF0OwogICAgICAgIH0KICAgICAgICBpZiAoc2VsZWN0ZWRTZWF0TmFtZVR5cGVz
ID09ICIiIHx8IHNlbGVjdGVkU2VhdE5hbWVUeXBlcyA9PSBudWxsKSB7CiAgICAgICAgICAgIHNl
bGVjdGVkU2VhdE5hbWVUeXBlcyA9IHNlYXRUeXBlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgIHNlbGVjdGVkU2VhdE5hbWVUeXBlcyA9IHNlbGVjdGVkU2VhdE5hbWVUeXBlcyArICIsIiAr
IHNlYXRUeXBlOwogICAgICAgIH0KICAgIH0KICAgIGlmICghKGFjdGlvblZhbCA9PSBudWxsIHx8
IGFjdGlvblZhbCA9PSAiIikpIHsKICAgICAgICBkb2N1bWVudC5zZWF0TWFwRm9ybS5hY3Rpb24g
PSBhY3Rpb25WYWwgKyAiLmRvIjsKICAgIH0KICAgIGlmICghKG1ldGhvZFZhbHVlUmVVc2UgPT0g
bnVsbCB8fCBtZXRob2RWYWx1ZVJlVXNlID09ICIiKSkgewogICAgICAgIGRvY3VtZW50LnNlYXRN
YXBGb3JtLm1ldGhvZC52YWx1ZSA9IG1ldGhvZFZhbHVlUmVVc2U7CiAgICB9CiAgICBkb2N1bWVu
dC5zZWF0TWFwRm9ybS5zZWxlY3RlZFNlYXRzRm9yU2VnbWVudC52YWx1ZSA9IHNlYXRzRm9yQXNl
Z21lbnQ7CiAgICBkb2N1bWVudC5zZWF0TWFwRm9ybS5zZWxlY3RlZFNlYXROYW1lVHlwZXMudmFs
dWUgPSBzZWxlY3RlZFNlYXROYW1lVHlwZXM7CiAgICBkb2N1bWVudC5zZWF0TWFwRm9ybS50YWJT
ZWxlY3RlZC52YWx1ZSA9IGxlZ0luZGV4OwogICAgZG9jdW1lbnQuc2VhdE1hcEZvcm0uYWN0aXZl
U2VnbWVudEluZGV4LnZhbHVlID0gYWN0aXZlTGVnSW5kZXg7CiAgICBkb2N1bWVudC5zZWF0TWFw
Rm9ybS5zdWJtaXQoKTsKfQpmdW5jdGlvbiBoYW5kbGVUYWJzKCkgewogICAgdmFyIHRhYklkID0g
InRhYl8iICsgYWN0aXZlTGVnSW5kZXg7CiAgICB2YXIgdHJpcElkID0gInRhYl90cmlwXyIgKyBh
Y3RpdmVMZWdJbmRleDsKICAgIHZhciBsYWJlbElkID0gInRhYl9sYWJlbF8iICsgYWN0aXZlTGVn
SW5kZXg7CiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFiSWQpICYmIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKGxhYmVsSWQpKSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFiSWQpLmNsYXNzTmFtZSA9ICJmc1RyaXBUeXBlQWN0aXZlIjsKICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0cmlwSWQpLmNsYXNzTmFtZSA9ICJmc1RyaXBUeXBlTnVtQWN0aXZl
IjsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChsYWJlbElkKS5jbGFzc05hbWUgPSAi
ZnNUcmlwVHlwZUxhYmVsQWN0aXZlIjsKICAgIH0KICAgIGRpc2FibGVPdGhlclRhYnMoKTsKCiAg
ICBmdW5jdGlvbiBkaXNhYmxlT3RoZXJUYWJzKCkgewogICAgICAgIGZvciAoaSA9IDA7IGkgPCBv
YW5kRENvdW50OyBpKyspIHsKICAgICAgICAgICAgaWYgKGkgIT0gYWN0aXZlTGVnSW5kZXgpIHsK
ICAgICAgICAgICAgICAgIHZhciB0YWJJZCA9ICJ0YWJfIiArIGk7CiAgICAgICAgICAgICAgICB2
YXIgdHJpcElkID0gInRhYl90cmlwXyIgKyBpOwogICAgICAgICAgICAgICAgdmFyIGxhYmVsSWQg
PSAidGFiX2xhYmVsXyIgKyBpOwogICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhYklkKSAmJiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChsYWJlbElkKSkgewogICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhYklkKS5jbGFzc05hbWUg
PSAiZnNUcmlwVHlwZUluYWN0aXZlIjsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0cmlwSWQpLmNsYXNzTmFtZSA9ICJmc1RyaXBUeXBlTnVtSW5hY3RpdmUiOwog
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGxhYmVsSWQpLmNsYXNz
TmFtZSA9ICJmc1RyaXBUeXBlTGFiZWxJbmFjdGl2ZSI7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gdmFsaWRhdGVFeGl0Um93KGZ1bmN0
aW9uVHlwZSkgewogICAgdmFyIGNoZWNrQm94T2JqZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInNzRXhpdFJvd0FjY2VwdCIpOwogICAgaWYgKGNoZWNrQm94T2JqZWN0LnZhbHVlID09ICIw
IikgewogICAgICAgIHZhciBkaXZPYmplY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXhp
dFJvd0Vycm9yRGl2Iik7CiAgICAgICAgdmFyIGVycm9yTXNnID0gJzx0YWJsZSB3aWR0aD0iMTAw
JSI+PHRyPjx0ZD4nOwogICAgICAgIGVycm9yTXNnICs9ICc8aW1nIHNyYz0iaHR0cHM6Ly9zdGF0
aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL2VzYy1zaWduLmdpZiI+JzsKICAgICAgICBlcnJv
ck1zZyArPSAnPC90ZD48dGQgY2xhc3M9ImZvbnQxMSB2YWxpZGF0aW9uRGVmYXVsdCBmb250Qm9s
ZCI+JzsKICAgICAgICBlcnJvck1zZyArPSAiVG8gc2VsZWN0IHRoaXMgc2VhdCwgcGxlYXNlIGNo
ZWNrIHRoZSBib3ggYmVsb3cgdG8gYWNjZXB0IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyI7CiAg
ICAgICAgZXJyb3JNc2cgKz0gIjwvdGQ+PC90cj48L3RhYmxlPiI7CiAgICAgICAgZGl2T2JqZWN0
LnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgIGRpdk9iamVjdC5pbm5lckhUTUwgPSBl
cnJvck1zZzsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3NFeGl0Um93QWNjZXB0
Q29udGFpbmVyIikuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gIiM5OTMzOTkiOwogICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJleGl0Um93VEMiKS5jbGFzc05hbWUgPSAidmFsaWRhdGlv
bkRlZmF1bHQgZm9udEJvbGQiOwogICAgfSBlbHNlIHsKICAgICAgICBjbG9zZVBvcHVwKCJwb3B1
cE92ZXJsYXlCZyIpOwogICAgICAgIGlmIChmdW5jdGlvblR5cGUgPT0gInNldFVwZ3JhZGUiKSB7
CiAgICAgICAgICAgIHVwZ3JhZGVTZWF0KCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
YXNzaWduU2VhdCgpOwogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiBhc3NpZ25TZWF0KCkgewog
ICAgdmFyIHNldFNlYXQgPSAidHJ1ZSI7CiAgICBmb3IgKGkgPSAwOyBpIDwgcGF4Q291bnQ7IGkr
KykgewogICAgICAgIGlmIChhR3Vlc3RTZWF0c1tpXVthY3RpdmVTZWdtZW50SW5kZXhdID09IHNl
bGVjdGVkU2VhdCkgewogICAgICAgICAgICBzZXRTZWF0ID0gImZhbHNlIjsKICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgfQogICAgfQogICAgaWYgKHNldFNlYXQgPT0gInRydWUiKSB7CiAgICAg
ICAgdmFyIHNlbGVjdGVkU2VhdERpc3BsYXkgPSBzZWxlY3RlZFNlYXQudG9VcHBlckNhc2UoKTsK
ICAgICAgICBpZiAoY3VycmVudFNlYXQgJiYgY3VycmVudFNlYXQgIT0gbm90U2VsZWN0ZWQgJiYg
Y3VycmVudFNlYXQgIT0gIiIpIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
Y3VycmVudFNlYXQpLmNsYXNzTmFtZSA9IHByZXZpb3VzU3R5bGVDbGFzczsKICAgICAgICB9CiAg
ICAgICAgaWYgKHNlbGVjdGVkU2VhdENhYmluQ2xhc3MgPT0gIkZJUlNUIikgewogICAgICAgICAg
ICBzZWxlY3RlZFNlYXRTdHlsZUNsYXNzID0gInNzU2VhdE1hcEZDU2VsZWN0ZWQiOwogICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChzZWxlY3RlZFNlYXRDYWJpbkNsYXNzID09ICJNQ1Mi
KSB7CiAgICAgICAgICAgICAgICBzZWxlY3RlZFNlYXRTdHlsZUNsYXNzID0gInNzU2VhdE1hcE1D
U1NlbGVjdGVkIjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChzZWxl
Y3RlZFNlYXRDYWJpbkNsYXNzID09ICJFQ09OT01ZIikgewogICAgICAgICAgICAgICAgICAgIHNl
bGVjdGVkU2VhdFN0eWxlQ2xhc3MgPSAic3NTZWF0TWFwTUNTZWxlY3RlZCI7CiAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgYUd1ZXN0U2VhdHNbYWN0aXZl
R3Vlc3RJbmRleF1bYWN0aXZlU2VnbWVudEluZGV4XSA9IHNlbGVjdGVkU2VhdDsKICAgICAgICBh
U2VhdFR5cGVbYWN0aXZlR3Vlc3RJbmRleF1bYWN0aXZlU2VnbWVudEluZGV4XSA9IHNlbGVjdGVk
U2VhdFR5cGU7CiAgICAgICAgYUNhYmluQ2xhc3NbYWN0aXZlU2VnbWVudEluZGV4XSA9IHNlbGVj
dGVkU2VhdENhYmluQ2xhc3M7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VsZWN0
ZWRTZWF0SWQpLmNsYXNzTmFtZSA9IHNlbGVjdGVkU2VhdFN0eWxlQ2xhc3M7CiAgICAgICAgdmFy
IHNlbGVjdGVkU2VhdERpc3BsYXlZVFMgPSBzZWxlY3RlZFNlYXREaXNwbGF5OwogICAgICAgIGlm
IChzZWxlY3RlZFNlYXREaXNwbGF5ID09ICIzQyIgfHwgc2VsZWN0ZWRTZWF0RGlzcGxheSA9PSAi
M0QiKSB7CiAgICAgICAgICAgIHNlbGVjdGVkU2VhdERpc3BsYXkgPSBzZWxlY3RlZFNlYXREaXNw
bGF5ICsgIioiOwogICAgICAgIH0KICAgICAgICBpZiAoc2VhdFNlbGVjdFBhZ2VJZCA9PSAxICYm
IGFHdWVzdFNlYXRzT3JpZ1thY3RpdmVHdWVzdEluZGV4XVthY3RpdmVTZWdtZW50SW5kZXhdICE9
ICIiICYmIGFHdWVzdFNlYXRzT3JpZ1thY3RpdmVHdWVzdEluZGV4XVthY3RpdmVTZWdtZW50SW5k
ZXhdICE9ICJOb3QgU2VsZWN0ZWQiKSB7CiAgICAgICAgICAgIHNlbGVjdGVkU2VhdERpc3BsYXkg
PSAnPHNwYW4gY2xhc3M9InN0cmlrZU91dCI+JyArIGFHdWVzdFNlYXRzT3JpZ1thY3RpdmVHdWVz
dEluZGV4XVthY3RpdmVTZWdtZW50SW5kZXhdICsgIjwvc3Bhbj4gLyIgKyBzZWxlY3RlZFNlYXRE
aXNwbGF5OwogICAgICAgIH0KICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VnbWVu
dEd1ZXN0XyIgKyBhY3RpdmVTZWdtZW50SW5kZXggKyAiXyIgKyBhY3RpdmVHdWVzdEluZGV4KS5p
bm5lckhUTUwgPSBzZWxlY3RlZFNlYXREaXNwbGF5ICsgJzxicj48c3BhbiBzdHlsZT0iZm9udC1z
aXplOjlweDtmb250LWZhbWlseTphcmlhbDsiPicgKyBzZWxlY3RlZFNlYXRDYWJpbkNsYXNzRGlz
cGxheSArICI8L3NwYW4+IjsKICAgICAgICBhUHJldlNlYXRTdHlsZVthY3RpdmVHdWVzdEluZGV4
XVthY3RpdmVTZWdtZW50SW5kZXhdID0gc2VsZWN0ZWRTZWF0Q2xhc3NOYW1lOwogICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJHdWVzdF8iICsgYWN0aXZlTGVnSW5kZXggKyAiXyIgKyBh
Y3RpdmVTZWdtZW50SW5kZXggKyAiXyIgKyBhY3RpdmVHdWVzdEluZGV4KS5pbm5lckhUTUwgPSBz
ZWxlY3RlZFNlYXREaXNwbGF5WVRTOwogICAgICAgIHNldE5leHRHdWVzdCgpOwogICAgICAgIGlz
UmVhY2NvbW1vZGF0ZWQoKTsKICAgIH0KfQpmdW5jdGlvbiB0b2dnbGVFeGl0Um93KCkgewogICAg
dmFyIGNoZWNrQm94T2JqID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNzRXhpdFJvd0FjY2Vw
dCIpOwogICAgaWYgKGNoZWNrQm94T2JqLnZhbHVlID09ICIwIikgewogICAgICAgIGNoZWNrQm94
T2JqLnZhbHVlID0gIjEiOwogICAgfSBlbHNlIHsKICAgICAgICBjaGVja0JveE9iai52YWx1ZSA9
ICIwIjsKICAgIH0KfQpmdW5jdGlvbiBnb0JhY2soKSB7CiAgICBkb2N1bWVudC5iYXJGb3JtLm1l
dGhvZC52YWx1ZSA9ICJmbGlnaHRTZWFyY2hUYWJMaW5rIjsKICAgIGRvY3VtZW50LmJhckZvcm0u
dGFiU2VsZWN0LnZhbHVlID0gIjIiOwogICAgaWYgKGFjdGlvblZhbCA9PSAic2VhdHNlbGVjdCIp
IHsKICAgICAgICBkb2N1bWVudC5iYXJGb3JtLmFjdGlvbiA9ICJmbGlnaHRTZWFyY2hUYWJMaW5r
LmRvIjsKICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKGFjdGlvblZhbCA9PSAicG9zdHNlYXRzZWxl
Y3QiKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmJhckZvcm0uYWN0aW9uID0gInBvc3RGbGlnaHRT
ZWFyY2hUYWJMaW5rLmRvIjsKICAgICAgICB9CiAgICB9CiAgICBzaG93V2FpdEltYWdlKCk7CiAg
ICBkb2N1bWVudC5iYXJGb3JtLnN1Ym1pdCgpOwp9CmZ1bmN0aW9uIG5leHRQYWdlKCkgewogICAg
c2hvd1dhaXRJbWFnZSgpOwogICAgdmFyIHNlYXRzRm9yQXNlZ21lbnQgPSAiIjsKICAgIHZhciBz
ZWxlY3RlZFNlYXROYW1lVHlwZXMgPSAiIjsKICAgIGZvciAoaiA9IDA7IGogPCBwYXhDb3VudDsg
aisrKSB7CiAgICAgICAgdmFyIHNlYXQgPSBhR3Vlc3RTZWF0c1tqXVthY3RpdmVTZWdtZW50SW5k
ZXhdOwogICAgICAgIHZhciBzZWF0VHlwZSA9IGFTZWF0VHlwZVtqXVthY3RpdmVTZWdtZW50SW5k
ZXhdOwogICAgICAgIGlmIChzZWF0c0ZvckFzZWdtZW50ID09ICIiIHx8IHNlYXRzRm9yQXNlZ21l
bnQgPT0gbnVsbCkgewogICAgICAgICAgICBzZWF0c0ZvckFzZWdtZW50ID0gc2VhdDsKICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICBzZWF0c0ZvckFzZWdtZW50ID0gc2VhdHNGb3JBc2VnbWVu
dCArICIsIiArIHNlYXQ7CiAgICAgICAgfQogICAgICAgIGlmIChzZWxlY3RlZFNlYXROYW1lVHlw
ZXMgPT0gIiIgfHwgc2VsZWN0ZWRTZWF0TmFtZVR5cGVzID09IG51bGwpIHsKICAgICAgICAgICAg
c2VsZWN0ZWRTZWF0TmFtZVR5cGVzID0gc2VhdFR5cGU7CiAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgc2VsZWN0ZWRTZWF0TmFtZVR5cGVzID0gc2VsZWN0ZWRTZWF0TmFtZVR5cGVzICsgIiwi
ICsgc2VhdFR5cGU7CiAgICAgICAgfQogICAgfQogICAgZG9jdW1lbnQuc2VhdE1hcEZvcm0uc2Vs
ZWN0ZWRTZWF0c0ZvclNlZ21lbnQudmFsdWUgPSBzZWF0c0ZvckFzZWdtZW50OwogICAgZG9jdW1l
bnQuc2VhdE1hcEZvcm0uc2VsZWN0ZWRTZWF0TmFtZVR5cGVzLnZhbHVlID0gc2VsZWN0ZWRTZWF0
TmFtZVR5cGVzOwogICAgZG9jdW1lbnQuc2VhdE1hcEZvcm0ubWV0aG9kLnZhbHVlID0gInZpZXdQ
cmljaW5nIjsKICAgIGlmIChhY3Rpb25WYWwgPT0gInNlYXRzZWxlY3QiKSB7CiAgICAgICAgZG9j
dW1lbnQuc2VhdE1hcEZvcm0uYWN0aW9uID0gInZpZXdQcmljaW5nLmRvIjsKICAgIH0gZWxzZSB7
CiAgICAgICAgZG9jdW1lbnQuc2VhdE1hcEZvcm0uYWN0aW9uID0gInBvc3RWaWV3UHJpY2luZy5k
byI7CiAgICB9CiAgICBkb2N1bWVudC5zZWF0TWFwRm9ybS5zdWJtaXQoKTsKfQpmdW5jdGlvbiBz
ZWxlY3ROZXh0RmxpZ2h0U2VhdHMoKSB7CiAgICBzaG93V2FpdEltYWdlKCk7CiAgICB2YXIgc2Vh
dHNGb3JBc2VnbWVudCA9ICIiOwogICAgdmFyIHNlbGVjdGVkU2VhdE5hbWVUeXBlcyA9ICIiOwog
ICAgZm9yIChqID0gMDsgaiA8IHBheENvdW50OyBqKyspIHsKICAgICAgICB2YXIgc2VhdCA9IGFH
dWVzdFNlYXRzW2pdW2FjdGl2ZVNlZ21lbnRJbmRleF07CiAgICAgICAgdmFyIHNlYXRUeXBlID0g
YVNlYXRUeXBlW2pdW2FjdGl2ZVNlZ21lbnRJbmRleF07CiAgICAgICAgaWYgKHNlYXRzRm9yQXNl
Z21lbnQgPT0gIiIgfHwgc2VhdHNGb3JBc2VnbWVudCA9PSBudWxsKSB7CiAgICAgICAgICAgIHNl
YXRzRm9yQXNlZ21lbnQgPSBzZWF0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNlYXRz
Rm9yQXNlZ21lbnQgPSBzZWF0c0ZvckFzZWdtZW50ICsgIiwiICsgc2VhdDsKICAgICAgICB9CiAg
ICAgICAgaWYgKHNlbGVjdGVkU2VhdE5hbWVUeXBlcyA9PSAiIiB8fCBzZWxlY3RlZFNlYXROYW1l
VHlwZXMgPT0gbnVsbCkgewogICAgICAgICAgICBzZWxlY3RlZFNlYXROYW1lVHlwZXMgPSBzZWF0
VHlwZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzZWxlY3RlZFNlYXROYW1lVHlwZXMg
PSBzZWxlY3RlZFNlYXROYW1lVHlwZXMgKyAiLCIgKyBzZWF0VHlwZTsKICAgICAgICB9CiAgICB9
CiAgICBkb2N1bWVudC5zZWF0TWFwRm9ybS5zZWxlY3RlZFNlYXRzRm9yU2VnbWVudC52YWx1ZSA9
IHNlYXRzRm9yQXNlZ21lbnQ7CiAgICBkb2N1bWVudC5zZWF0TWFwRm9ybS5zZWxlY3RlZFNlYXRO
YW1lVHlwZXMudmFsdWUgPSBzZWxlY3RlZFNlYXROYW1lVHlwZXM7CiAgICBkb2N1bWVudC5zZWF0
TWFwRm9ybS50YWJTZWxlY3RlZC52YWx1ZSA9ICIxIjsKICAgIGRvY3VtZW50LnNlYXRNYXBGb3Jt
LmFjdGl2ZVNlZ21lbnRJbmRleC52YWx1ZSA9IGFjdGl2ZUxlZ0luZGV4OwogICAgZG9jdW1lbnQu
c2VhdE1hcEZvcm0uc3VibWl0KCk7Cn0KZnVuY3Rpb24gYXZhaWxhYmxlU2VhdHNQcmV2aWV3KGZs
dEJvYXJkUG9pbnQsIGZsdE9mZlBvaW50LCBmbHROdW1iZXIsIGZsdERhdGUsIGNsaWNrZWRPYmop
IHsKICAgIHNob3dXYWl0SW1hZ2UoKTsKICAgIGFjdGlvblVybCA9ICJzaG93c2VhdG1hcC5kbz9t
ZXRob2Q9c2VhdHNlbGVjdCZib2FyZFBvaW50PSIgKyBmbHRCb2FyZFBvaW50ICsgIiZvZmZQb2lu
dD0iICsgZmx0T2ZmUG9pbnQgKyAiJmZsaWdodE51bWJlcj0iICsgZmx0TnVtYmVyICsgIiZmbGln
aHREYXRlPSIgKyBmbHREYXRlOwogICAgdXBkYXRlUG9wdXAoYWN0aW9uVXJsLCAiU2VhdHMgQXZh
aWxhYmxlIG9uIHRoaXMgRmxpZ2h0IiwgNDUwLCBjbGlja2VkT2JqLCBmYWxzZSwgNTAsIC0xMjAs
IGZhbHNlKTsKfQpmdW5jdGlvbiByZWZyZXNoRGl2KHVybCwgZGl2aWQsIHBhcmFtZXRlciwgaXNS
ZWZyZXNoKSB7CiAgICB2YXIgcmVzcFl0cyA9ICQucG9zdCh1cmwsIHBhcmFtZXRlciwgZG9uZSwg
Imh0bWwiKTsKCiAgICBmdW5jdGlvbiBkb25lKCkgewogICAgICAgIGlmIChpc1JlZnJlc2ggPT0g
InRydWUiICYmIHJlc3BZdHMucmVzcG9uc2VUZXh0ICE9ICIiKSB7CiAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKGRpdmlkKS5pbm5lckhUTUwgPSByZXNwWXRzLnJlc3BvbnNlVGV4
dDsKICAgICAgICAgICAgaWYgKGRpdmlkID09ICJ0cmF2ZWxFeHBlaW5jZSIpIHsKICAgICAgICAg
ICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG90YWxCb3R0b20iKSkgewogICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b3RhbFRvcCIpLmlubmVy
SFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b3RhbEJvdHRvbSIpLmlubmVySFRNTDsK
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjbG9zZVdh
aXRJbWFnZSgpOwogICAgfQp9CmZ1bmN0aW9uIGFkZEdpZnRWb3VjaGVyKGlkLCBkaXYpIHsKICAg
IHNob3dXYWl0SW1hZ2UoKTsKICAgIHNhdmVUcmF2ZWxJbnN1cmFuY2UoKTsKICAgIHZhciB0cmF2
ZWxJbnN1cmFuY2VGbGFnUmV0YWluID0gdHJhdmVsSW5zdXJhbmNlRmxhZzsKICAgIHZhciB2b3Vj
aGVyTnVtYmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdpZnRWb3VjaGVyTnVtYmVyIiku
dmFsdWU7CiAgICB2YXIgdHJhbnNhY3Rpb25OdW1iZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZ2lmdFRyYW5zYWN0aW9uTnVtYmVyIikudmFsdWU7CiAgICB2YXIgVVJMID0gImdpZnRWb3Vj
aGVyLmRvP21ldGhvZD1hZGQmZ2lmdFZvdWNoZXJOdW1iZXI9IiArIHZvdWNoZXJOdW1iZXIgKyAi
JmdpZnRUcmFuc2FjdGlvbk51bWJlcj0iICsgdHJhbnNhY3Rpb25OdW1iZXI7CiAgICAkLmFqYXgo
ewogICAgICAgIHR5cGU6ICJQT1NUIiwKICAgICAgICB1cmw6IFVSTCwKICAgICAgICBjYWNoZTog
ZmFsc2UsCiAgICAgICAgZGF0YVR5cGU6ICJodG1sIiwKICAgICAgICBzdWNjZXNzOiBmdW5jdGlv
biAoaHRtbCkgewogICAgICAgICAgICAkKCIjIiArIGRpdikuaHRtbChodG1sLnRyaW0oKSk7CiAg
ICAgICAgICAgIGlmIChodG1sLnRyaW0oKS5pbmRleE9mKCJlcnJvcm1lc3NhZ2VfaG9sZCIpICE9
IC0xKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7CiAgICAgICAgICAg
IH0KICAgICAgICAgICAgY2xvc2VXYWl0SW1hZ2UoKTsKICAgICAgICAgICAgdHJhdmVsSW5zdXJh
bmNlRmxhZyA9IHRyYXZlbEluc3VyYW5jZUZsYWdSZXRhaW47CiAgICAgICAgICAgIHJldGFpblRy
YXZlbEluc3VyYW5jZSgpOwogICAgICAgIH0KICAgIH0pOwp9CmZ1bmN0aW9uIHJlbW92ZUdpZnRW
b3VjaGVyKHZvdWNoZXJOdW1iZXIsIGlkLCBkaXYpIHsKICAgIHNob3dXYWl0SW1hZ2UoKTsKICAg
IHNhdmVUcmF2ZWxJbnN1cmFuY2UoKTsKICAgIHZhciB0cmF2ZWxJbnN1cmFuY2VGbGFnUmV0YWlu
ID0gdHJhdmVsSW5zdXJhbmNlRmxhZzsKICAgIHZhciBVUkwgPSAiZ2lmdFZvdWNoZXIuZG8/bWV0
aG9kPXJlbW92ZSZnaWZ0Vm91Y2hlck51bWJlcj0iICsgdm91Y2hlck51bWJlcjsKICAgICQuYWph
eCh7CiAgICAgICAgdHlwZTogIlBPU1QiLAogICAgICAgIHVybDogVVJMLAogICAgICAgIGNhY2hl
OiBmYWxzZSwKICAgICAgICBkYXRhVHlwZTogImh0bWwiLAogICAgICAgIHN1Y2Nlc3M6IGZ1bmN0
aW9uIChodG1sKSB7CiAgICAgICAgICAgICQoIiMiICsgZGl2KS5odG1sKGh0bWwudHJpbSgpKTsK
ICAgICAgICAgICAgdHJhdmVsSW5zdXJhbmNlRmxhZyA9IHRyYXZlbEluc3VyYW5jZUZsYWdSZXRh
aW47CiAgICAgICAgICAgIHJldGFpblRyYXZlbEluc3VyYW5jZSgpOwogICAgICAgICAgICBzaG93
TG9hZGluZ0ltYWdlQ2xvc2UoKTsKICAgICAgICB9CiAgICB9KTsKfQp2YXIgY2xlYXJUb29sVGlw
SW50ZXJ2YWw7CnZhciBjbGVhclBvcHVwSW50ZXJ2YWw7CnZhciBjb3VudGVyID0gMjA7CgpmdW5j
dGlvbiBjaGVja1BvcHVwSW50ZXJ2YWwoZGl2aWQsIGludGVydmFsSWQpIHsKICAgIGlmIChkaXZp
ZCkgewogICAgICAgIGRpdlRvQ2xvc2UgPSBkaXZpZDsKICAgIH0gZWxzZSB7CiAgICAgICAgZGl2
VG9DbG9zZSA9ICJwb3B1cElkIjsKICAgIH0KICAgIGlmIChpbnRlcnZhbElkKSB7CiAgICAgICAg
aW50ZXJ2YWxUb0NsZWFyID0gaW50ZXJ2YWxJZDsKICAgIH0gZWxzZSB7CiAgICAgICAgaW50ZXJ2
YWxUb0NsZWFyID0gImNsZWFyUG9wVXBJbnRlcnZhbCI7CiAgICB9CiAgICBpZiAoY291bnRlciA+
IDApIHsKICAgICAgICBjb3VudGVyLS07CiAgICB9IGVsc2UgewogICAgICAgIGNsb3NlUG9wdXAo
ZGl2VG9DbG9zZSk7CiAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoY2xlYXJQb3B1cEludGVy
dmFsKTsKICAgICAgICBjb3VudGVyID0gMjA7CiAgICB9Cn0KZnVuY3Rpb24gcG9wdXBUb29sVGlw
KHBhZ2VOYW1lLCB0aXRsZSwgcG9wdXBXaWR0aCwgY2xrT2JqLCBzaG93QnRuLCBsZnRNcmcsIHJn
dE1yZywgZGVjaXNpb24sIG9wZW5QYXJhbWV0ZXIsIGZ1bmN0aW9uQ2FsbGVkKSB7CiAgICBpZiAo
Y2xlYXJUb29sVGlwSW50ZXJ2YWwpIHsKICAgICAgICBjbGVhckludGVydmFsKGNsZWFyVG9vbFRp
cEludGVydmFsKTsKICAgICAgICBjb3VudGVyID0gMjA7CiAgICB9CiAgICAkKCIjdG9vbFRpcE1z
Z0FyZWEiKS5sb2FkKHBhZ2VOYW1lLCAiY2FjaGU6ZmFsc2UiLCB0b29sVGlwKTsKCiAgICBmdW5j
dGlvbiB0b29sVGlwKCkgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b29sVGlw
VGl0bGUiKS5pbm5lckhUTUwgPSB0aXRsZTsKICAgICAgICB2YXIgcG9wdXBGcmFtZSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0b29sVGlwRnJhbWUiKTsKICAgICAgICBzZXRPYmpPZmZzZXQo
Y2xrT2JqLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9vbFRpcElkIiksIGxmdE1yZywgcmd0
TXJnKTsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9vbFRpcElkIikuc3R5bGUu
ZGlzcGxheSA9ICJibG9jayI7CiAgICAgICAgcG9wdXBGcmFtZS5zdHlsZS53aWR0aCA9IGV2YWwo
cG9wdXBXaWR0aCk7CiAgICAgICAgcG9wdXBGcmFtZS5zdHlsZS5oZWlnaHQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidG9vbFRpcElkIikub2Zmc2V0SGVpZ2h0OwogICAgICAgIGlmIChvcGVu
UGFyYW1ldGVyICYmIG9wZW5QYXJhbWV0ZXIgIT0gIiIpIHsKICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRvb2xUaXBPcGVuUGFyYW1ldGVyIikuaW5uZXJIVE1MID0gb3BlblBh
cmFtZXRlcjsKICAgICAgICB9CiAgICB9CiAgICBjbGVhclRvb2xUaXBJbnRlcnZhbCA9IHdpbmRv
dy5zZXRJbnRlcnZhbCgnY2hlY2tQb3B1cEludGVydmFsKCJ0b29sVGlwSWQiKScsIDEwMDApOwp9
CmZ1bmN0aW9uIGZfc2Nyb2xsVG9wKCkgewogICAgcmV0dXJuIGZfZmlsdGVyUmVzdWx0cyh3aW5k
b3cucGFnZVlPZmZzZXQgPyB3aW5kb3cucGFnZVlPZmZzZXQgOiAwLCBkb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnQgPyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIDogMCwgZG9jdW1l
bnQuYm9keSA/IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIDogMCk7Cn0KZnVuY3Rpb24gZl9maWx0
ZXJSZXN1bHRzKG5fd2luLCBuX2RvY2VsLCBuX2JvZHkpIHsKICAgIHZhciBuX3Jlc3VsdCA9IG5f
d2luID8gbl93aW4gOiAwOwogICAgaWYgKG5fZG9jZWwgJiYgKCFuX3Jlc3VsdCB8fCAobl9yZXN1
bHQgPiBuX2RvY2VsKSkpIHsKICAgICAgICBuX3Jlc3VsdCA9IG5fZG9jZWw7CiAgICB9CiAgICBy
ZXR1cm4gbl9ib2R5ICYmICghbl9yZXN1bHQgfHwgKG5fcmVzdWx0ID4gbl9ib2R5KSkgPyBuX2Jv
ZHkgOiBuX3Jlc3VsdDsKfQpmdW5jdGlvbiB4RG9jU2l6ZSgpIHsKICAgIHZhciBiID0gZG9jdW1l
bnQuYm9keSwKICAgICAgICBlID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwogICAgdmFyIGVz
dyA9IDAsCiAgICAgICAgZW93ID0gMCwKICAgICAgICBic3cgPSAwLAogICAgICAgIGJvdyA9IDAs
CiAgICAgICAgZXNoID0gMCwKICAgICAgICBlb2ggPSAwLAogICAgICAgIGJzaCA9IDAsCiAgICAg
ICAgYm9oID0gMDsKICAgIGlmIChlKSB7CiAgICAgICAgZXN3ID0gZS5zY3JvbGxXaWR0aDsKICAg
ICAgICBlb3cgPSBlLm9mZnNldFdpZHRoOwogICAgICAgIGVzaCA9IGUuc2Nyb2xsSGVpZ2h0Owog
ICAgICAgIGVvaCA9IGUub2Zmc2V0SGVpZ2h0OwogICAgfQogICAgaWYgKGIpIHsKICAgICAgICBi
c3cgPSBiLnNjcm9sbFdpZHRoOwogICAgICAgIGJvdyA9IGIub2Zmc2V0V2lkdGg7CiAgICAgICAg
YnNoID0gYi5zY3JvbGxIZWlnaHQ7CiAgICAgICAgYm9oID0gYi5vZmZzZXRIZWlnaHQ7CiAgICB9
CiAgICByZXR1cm4gewogICAgICAgIHc6IE1hdGgubWF4KGVzdywgZW93LCBic3csIGJvdyksCiAg
ICAgICAgaDogTWF0aC5tYXgoZXNoLCBlb2gsIGJzaCwgYm9oKQogICAgfTsKfQpmdW5jdGlvbiBn
ZXRWaWV3YWJsZUFyZWEoKSB7CiAgICBpZiAocGFyc2VJbnQobmF2aWdhdG9yLmFwcFZlcnNpb24p
ID4gMykgewogICAgICAgIGlmIChuYXZpZ2F0b3IuYXBwTmFtZSA9PSAiTmV0c2NhcGUiKSB7CiAg
ICAgICAgICAgIHdpblcgPSB3aW5kb3cuaW5uZXJXaWR0aDsKICAgICAgICAgICAgd2luSCA9IHdp
bmRvdy5pbm5lckhlaWdodDsKICAgICAgICB9CiAgICAgICAgaWYgKG5hdmlnYXRvci5hcHBOYW1l
LmluZGV4T2YoIk1pY3Jvc29mdCIpICE9IC0xKSB7CiAgICAgICAgICAgIHdpblcgPSBkb2N1bWVu
dC5ib2R5Lm9mZnNldFdpZHRoOwogICAgICAgICAgICB3aW5IID0gZG9jdW1lbnQuYm9keS5vZmZz
ZXRIZWlnaHQ7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHdpbkg7Cn0KZnVuY3Rpb24gc2V0
TG9hZGluZ0FuaURpdkxvY2F0aW9uKCkgewogICAgdmFyIHZIZWlnaHQgPSBnZXRWaWV3YWJsZUFy
ZWEoKTsKICAgIHZhciB5U2Nyb2xsT2Zmc2V0ID0gZl9zY3JvbGxUb3AoKTsKICAgIHZhciBsb2Fk
ZXJZUG9zaXRpb24gPSB2SGVpZ2h0IC8gMjsKICAgIGxvYWRlcllQb3NpdGlvbiArPSB5U2Nyb2xs
T2Zmc2V0OwogICAgbG9hZGVyWVBvc2l0aW9uICs9IC0xMDA7CiAgICB2YXIgaFdpZHRoID0geERv
Y1NpemUoKS53OwogICAgdmFyIGxvYWRlclhQb3NpdGlvbiA9ICgoaFdpZHRoIC8gMikgLSAxMDAp
OwogICAgdmFyIGxvYWRpbmdBbmltYXRpb25PYmplY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgibG9hZGluZ0FuaW1hdGlvbkJvZHkiKTsKICAgIGxvYWRpbmdBbmltYXRpb25PYmplY3Quc3R5
bGUudG9wID0gbG9hZGVyWVBvc2l0aW9uICsgInB4IjsKICAgIGxvYWRpbmdBbmltYXRpb25PYmpl
Y3Quc3R5bGUubGVmdCA9IGxvYWRlclhQb3NpdGlvbiArICJweCI7CiAgICB2YXIgbG9hZGluZ0Fu
aW1hdGlvbkJnT2JqZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvYWRpbmdBbmltYXRp
b25Cb2R5QmciKTsKICAgIGxvYWRpbmdBbmltYXRpb25CZ09iamVjdC5zdHlsZS50b3AgPSBsb2Fk
ZXJZUG9zaXRpb24gKyAicHgiOwogICAgbG9hZGluZ0FuaW1hdGlvbkJnT2JqZWN0LnN0eWxlLmxl
ZnQgPSBsb2FkZXJYUG9zaXRpb24gKyAicHgiOwp9CmZ1bmN0aW9uIHNob3dXYWl0SW1hZ2UoKSB7
CiAgICB2YXIgdkhlaWdodCA9IGdldFZpZXdhYmxlQXJlYSgpOwogICAgdmFyIHlTY3JvbGxPZmZz
ZXQgPSBmX3Njcm9sbFRvcCgpOwogICAgdmFyIGxvYWRlcllQb3NpdGlvbiA9IHZIZWlnaHQgLyAy
OwogICAgbG9hZGVyWVBvc2l0aW9uICs9IHlTY3JvbGxPZmZzZXQ7CiAgICBsb2FkZXJZUG9zaXRp
b24gKz0gLTEwMDsKICAgIHZhciBoV2lkdGggPSB4RG9jU2l6ZSgpLnc7CiAgICB2YXIgbG9hZGVy
WFBvc2l0aW9uID0gKChoV2lkdGggLyAyKSAtIDExMCk7CiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImxvYWRpbmdBbmltYXRpb25EaXYiKSkgewogICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJsb2FkaW5nQW5pbWF0aW9uRGl2Iikuc3R5bGUudG9wID0gIjBweCI7CiAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvYWRpbmdBbmltYXRpb25EaXYiKS5zdHlsZS5s
ZWZ0ID0gIjBweCI7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvYWRpbmdBbmlt
YXRpb25EaXYiKS5zdHlsZS53aWR0aCA9IGhXaWR0aCArICJweCI7CiAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImxvYWRpbmdBbmltYXRpb25EaXYiKS5zdHlsZS5oZWlnaHQgPSB2SGVp
Z2h0ICsgInB4IjsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9hZGluZ0FuaW1h
dGlvbkRpdiIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJsb2FkaW5nQW5pbWF0aW9uRGlzYWJsZURpdiIpLnN0eWxlLmRpc3BsYXkgPSAi
YmxvY2siOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2FkaW5nQW5pbWF0aW9u
Qm9keSIpLnN0eWxlLmxlZnQgPSBsb2FkZXJYUG9zaXRpb247CiAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImxvYWRpbmdBbmltYXRpb25Cb2R5Iikuc3R5bGUudG9wID0gbG9hZGVyWVBv
c2l0aW9uOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2FkaW5nQW5pbWF0aW9u
Qm9keUJnIikuc3R5bGUubGVmdCA9IGxvYWRlclhQb3NpdGlvbjsKICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibG9hZGluZ0FuaW1hdGlvbkJvZHlCZyIpLnN0eWxlLnRvcCA9IGxvYWRl
cllQb3NpdGlvbjsKICAgICAgICBpZiAoaXNQQ0lFNiA9PSAxKSB7CiAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJsb2FkaW5nRGl2SUZyYW1lIikuc3R5bGUudG9wID0gIjBweCI7
CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2FkaW5nRGl2SUZyYW1lIiku
c3R5bGUubGVmdCA9ICIwcHgiOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
bG9hZGluZ0RpdklGcmFtZSIpLnN0eWxlLmhlaWdodCA9IHhEb2NTaXplKCkuaDsKICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvYWRpbmdEaXZJRnJhbWUiKS5zdHlsZS53aWR0
aCA9IGhXaWR0aDsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvYWRpbmdE
aXZJRnJhbWUiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICB9CiAgICB9Cn0KZnVu
Y3Rpb24gY2xvc2VXYWl0SW1hZ2UoKSB7CiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImxvYWRpbmdBbmltYXRpb25EaXYiKSkgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJsb2FkaW5nQW5pbWF0aW9uRGl2Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgIH0KfQpm
dW5jdGlvbiBnZXRQYWdlU2l6ZVdpdGhTY3JvbGwoKSB7CiAgICBpZiAod2luZG93LmlubmVySGVp
Z2h0ICYmIHdpbmRvdy5zY3JvbGxNYXhZKSB7CiAgICAgICAgeVdpdGhTY3JvbGwgPSB3aW5kb3cu
aW5uZXJIZWlnaHQgKyB3aW5kb3cuc2Nyb2xsTWF4WTsKICAgICAgICB4V2l0aFNjcm9sbCA9IHdp
bmRvdy5pbm5lcldpZHRoICsgd2luZG93LnNjcm9sbE1heFg7CiAgICB9IGVsc2UgewogICAgICAg
IGlmIChkb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodCA+IGRvY3VtZW50LmJvZHkub2Zmc2V0SGVp
Z2h0KSB7CiAgICAgICAgICAgIHlXaXRoU2Nyb2xsID0gZG9jdW1lbnQuYm9keS5zY3JvbGxIZWln
aHQ7CiAgICAgICAgICAgIHhXaXRoU2Nyb2xsID0gZG9jdW1lbnQuYm9keS5zY3JvbGxXaWR0aDsK
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB5V2l0aFNjcm9sbCA9IGRvY3VtZW50LmJvZHku
b2Zmc2V0SGVpZ2h0OwogICAgICAgICAgICB4V2l0aFNjcm9sbCA9IGRvY3VtZW50LmJvZHkub2Zm
c2V0V2lkdGg7CiAgICAgICAgfQogICAgfQogICAgYXJyYXlQYWdlU2l6ZVdpdGhTY3JvbGwgPSBu
ZXcgQXJyYXkoeFdpdGhTY3JvbGwsIHlXaXRoU2Nyb2xsKTsKICAgIHJldHVybiBhcnJheVBhZ2VT
aXplV2l0aFNjcm9sbDsKfQpmdW5jdGlvbiBwb3B1cEVsZXZhdGVJbnR1cnJ1cHQoKSB7CiAgICB2
YXIgdkhlaWdodCA9IGdldFZpZXdhYmxlQXJlYSgpOwogICAgdmFyIHlTY3JvbGxPZmZzZXQgPSBm
X3Njcm9sbFRvcCgpOwogICAgdmFyIGxvYWRlcllQb3NpdGlvbiA9IHZIZWlnaHQgLyAyOwogICAg
bG9hZGVyWVBvc2l0aW9uICs9IHlTY3JvbGxPZmZzZXQ7CiAgICBsb2FkZXJZUG9zaXRpb24gKz0g
LTEwMDsKICAgIHZhciBoV2lkdGggPSB4RG9jU2l6ZSgpLnc7CiAgICB2YXIgaEhlaWdodCA9IHhE
b2NTaXplKCkuaDsKICAgIHZhciBsb2FkZXJYUG9zaXRpb24gPSA1MDA7CiAgICBsb2FkZXJYUG9z
aXRpb24gPSBsb2FkZXJYUG9zaXRpb24gLSAyODA7CiAgICB2YXIgZm9vdGVyT2JqID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInBhZ2VMZW5ndGhJZGVudGlmaWVyIik7CiAgICB2YXIgZm9vdGVy
WSA9IDA7CiAgICBpZiAoaXNQQ0lFID09IDEgfHwgaXNTYWZhcmkgPT0gMSkgewogICAgICAgIHZh
ciBpZU9mZnNldCA9IDE1MDsKICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKGlzTWFjRkYgPT0gMSkg
ewogICAgICAgICAgICB2YXIgaWVPZmZzZXQgPSAtMjUwOwogICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgIHZhciBpZU9mZnNldCA9IDEwMDsKICAgICAgICB9CiAgICB9CiAgICB2YXIgdGVzdCA9
IGdldFBhZ2VTaXplV2l0aFNjcm9sbCgpOwogICAgZm9vdGVyWSA9IGFycmF5UGFnZVNpemVXaXRo
U2Nyb2xsWzFdICsgaWVPZmZzZXQ7CiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVs
ZXZhdGVJbnRlcnJ1cHREaXYiKSkgewogICAgICAgIHZhciBpbnR1cnJ1cHRPYmogPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiZWxldmF0ZUludGVycnVwdERpdiIpOwogICAgICAgIHZhciBpbnR1
cnJ1cHREaXZPYmogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWxldmF0ZU92ZXJsYXlJZCIp
OwogICAgICAgIHZhciBpbnR1cnJ1cHRPdmVybGF5RGl2T2JqID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImVsZXZhdGVPdmVybGF5QmciKTsKICAgICAgICB2YXIgaW50dXJydXB0SUZyYW1lT2Jq
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBvcHVwT3ZlcmxheUZyYW1lIik7CiAgICAgICAg
aW50dXJydXB0T3ZlcmxheURpdk9iai5zdHlsZS5oZWlnaHQgPSBmb290ZXJZICsgInB4IjsKICAg
ICAgICBpbnR1cnJ1cHREaXZPYmouc3R5bGUubGVmdCA9IGxvYWRlclhQb3NpdGlvbjsKICAgICAg
ICBpbnR1cnJ1cHREaXZPYmouc3R5bGUudG9wID0gbG9hZGVyWVBvc2l0aW9uOwogICAgICAgIGlu
dHVycnVwdE9iai5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICBpZiAoaXNQQ0lFNiA9
PSAxKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwb3B1cE92ZXJsYXlG
cmFtZUZvcklFNiIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgIH0KICAgICAgICBp
ZiAoaXNTYWZhcmkpIHsKICAgICAgICAgICAgaW50dXJydXB0T3ZlcmxheURpdk9iai5zdHlsZS53
aWR0aCA9ICIxMDAlIjsKICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gcG9wdXBPdmVybGF5KHBh
Z2VOYW1lLCB0aXRsZSwgcG9wdXBXaWR0aCwgY2xrT2JqLCBzaG93QnRuLCBsZnRNcmcsIHJndE1y
ZywgZGVjaXNpb24sIG9wZW5QYXJhbWV0ZXIsIGZ1bmN0aW9uQ2FsbGVkKSB7CiAgICAkKCIjcG9w
dXBPdmVybGF5TXNnQXJlYSIpLmxvYWQocGFnZU5hbWUsICIiLCBvdmVybGF5KTsKCiAgICBmdW5j
dGlvbiBvdmVybGF5KCkgewogICAgICAgIHZhciB5U2Nyb2xsT2Zmc2V0ID0gZl9zY3JvbGxUb3Ao
KTsKICAgICAgICB2YXIgcGFnZVdpZHRoID0geERvY1NpemUoKS53OwogICAgICAgIHZhciBwYWdl
SGVpZ2h0ID0geERvY1NpemUoKS5oOwogICAgICAgIHZhciB2SGVpZ2h0ID0gZ2V0Vmlld2FibGVB
cmVhKCk7CiAgICAgICAgdmFyIHhPZmZTZXQgPSBwb3B1cFdpZHRoIC8gMjsKICAgICAgICB2YXIg
eExvY2F0aW9uID0gKHBhZ2VXaWR0aCAvIDIpOwogICAgICAgIHhMb2NhdGlvbiA9IHhMb2NhdGlv
biAtIHhPZmZTZXQ7CiAgICAgICAgdmFyIHlMb2NhdGlvbiA9ICh2SGVpZ2h0IC8gMik7CiAgICAg
ICAgeUxvY2F0aW9uICs9IHlTY3JvbGxPZmZzZXQ7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInBvcHVwT3ZlcmxheVRpdGxlIikuaW5uZXJIVE1MID0gdGl0bGU7CiAgICAgICAgdmFy
IHBvcHVwRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwb3B1cE92ZXJsYXlUYWJs
ZSIpOwogICAgICAgIHZhciBwb3B1cEZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBv
cHVwT3ZlcmxheUZyYW1lIik7CiAgICAgICAgdmFyIHBvcHVwRGl2ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInBvcHVwT3ZlcmxheUJnIik7CiAgICAgICAgcG9wdXBFbGVtZW50LnN0eWxlLndp
ZHRoID0gZXZhbChwb3B1cFdpZHRoKTsKICAgICAgICBwb3B1cEZyYW1lLnN0eWxlLndpZHRoID0g
ZXZhbChwb3B1cFdpZHRoKSAtIDMwOwogICAgICAgIHBvcHVwRnJhbWUuc3R5bGUuaGVpZ2h0ID0g
cG9wdXBFbGVtZW50LnN0eWxlLmhlaWdodDsKICAgICAgICBwb3B1cERpdi5zdHlsZS5oZWlnaHQg
PSBwYWdlSGVpZ2h0OwogICAgICAgIGlmIChmYXJlRm9ybWF0VHlwZSA9PSAiRG9sbGFycyIpIHsK
ICAgICAgICAgICAgb3BlblBhcmFtZXRlciA9IHJlcGxhY2VBbGxGdW5jdGlvbihvcGVuUGFyYW1l
dGVyLCAiLCIsICIiKTsKICAgICAgICAgICAgb3BlblBhcmFtZXRlciA9IG9wZW5QYXJhbWV0ZXIu
c3BsaXQoIi4iKVswXSArICIuMDAiOwogICAgICAgIH0KICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicG9wdXBPdmVybGF5SWQiKS5zdHlsZS5sZWZ0ID0gIjUwJSI7CiAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBvcHVwT3ZlcmxheUlkIikuc3R5bGUudG9wID0geUxvY2F0
aW9uOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwb3B1cE92ZXJsYXlCZyIpLnN0
eWxlLnRvcCA9IDA7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBvcHVwT3Zlcmxh
eUJnIikuc3R5bGUud2lkdGggPSBwYWdlV2lkdGggKyAicHgiOwogICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJwb3B1cE92ZXJsYXlCZyIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwog
ICAgICAgIGlmIChvcGVuUGFyYW1ldGVyICYmIG9wZW5QYXJhbWV0ZXIgIT0gIiIpIHsKICAgICAg
ICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwb3BVcE92ZXJsYXlPcGVuUGFyYW1l
dGVyIikpIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwb3BVcE92
ZXJsYXlPcGVuUGFyYW1ldGVyIikuaW5uZXJIVE1MID0gb3BlblBhcmFtZXRlcjsKICAgICAgICAg
ICAgfQogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiBjaUNvbGxhcHNlRXhwYW5kKGRpdklkLCBi
dG5PYmplY3QpIHsKICAgIHZhciBkaXZPYmplY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChk
aXZJZCk7CiAgICBpZiAoZGl2T2JqZWN0LnN0eWxlLmRpc3BsYXkgPT0gIm5vbmUiKSB7CiAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGl2SWQpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2si
OwogICAgICAgIGJ0bk9iamVjdC5zcmMgPSAiaHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5j
b20vaW1hZ2VzL2J0bi1jaGVja2luLWNvbGxhcHNlLnBuZyI7CiAgICB9IGVsc2UgewogICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRpdklkKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwog
ICAgICAgIGJ0bk9iamVjdC5zcmMgPSAiaHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20v
aW1hZ2VzL2J0bi1jaGVja2luLWV4cGFuZC5wbmciOwogICAgfQp9CmZ1bmN0aW9uIHRvZ2dsZUV4
dHJhRmVlcyhkaXZJZCkgewogICAgdmFyIGV4RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ZGl2SWQpOwogICAgaWYgKGV4RGl2LnN0eWxlLmRpc3BsYXkgPT0gImJsb2NrIikgewogICAgICAg
IGV4RGl2LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICB9IGVsc2UgewogICAgICAgIGV4RGl2
LnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgfQp9CmZ1bmN0aW9uIHNob3dEaXYoZGl2SWQp
IHsKICAgIHZhciBleERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRpdklkKTsKICAgIGV4
RGl2LnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwp9CmZ1bmN0aW9uIGhpZGVEaXYoZGl2SWQpIHsK
ICAgIHZhciBleERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRpdklkKTsKICAgIGV4RGl2
LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Cn0KZnVuY3Rpb24gdG9nZ2xlUGx1c01pbnVzKGltZ09i
amVjdCkgewogICAgaWYgKGltZ09iamVjdC5zcmMuaW5kZXhPZigicGx1cyIpICE9IC0xKSB7CiAg
ICAgICAgaW1nT2JqZWN0LnNyYyA9ICJodHRwczovL3N0YXRpYy52aXJnaW5hbWVyaWNhLmNvbS9p
bWFnZXMvaWNvbi1taW51cy5wbmciOwogICAgfSBlbHNlIHsKICAgICAgICBpbWdPYmplY3Quc3Jj
ID0gImh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy9pY29uLXBsdXMucG5n
IjsKICAgIH0KfQpmdW5jdGlvbiB0b2dnbGVUcmF2ZWxPcHRpb25zRmxpZ2h0cyhuZXdBY3RpdmVG
bGlnaHQsIHRhYk9iamVjdCkgewogICAgZm9yIChpID0gMTsgaSA8PSBmbGlnaHRDb3VudDsgaSsr
KSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZzVHJpcFR5cGVCZzAiICsgaSku
Y2xhc3NOYW1lID0gImZzVHJpcFR5cGVJbmFjdGl2ZSI7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImZzVHJpcFR5cGVOdW0wIiArIGkpLmNsYXNzTmFtZSA9ICJmc1RyaXBUeXBlTnVt
SW5hY3RpdmUiOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmc1RyaXBUeXBlTGFi
ZWwwIiArIGkpLmNsYXNzTmFtZSA9ICJmc1RyaXBUeXBlTGFiZWxJbmFjdGl2ZSI7CiAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvRmxpZ2h0MCIgKyBpKS5zdHlsZS5kaXNwbGF5ID0g
Im5vbmUiOwogICAgfQogICAgdGFiT2JqZWN0LmNsYXNzTmFtZSA9ICJmc1RyaXBUeXBlQWN0aXZl
IjsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmc1RyaXBUeXBlTnVtMCIgKyBuZXdBY3Rp
dmVGbGlnaHQpLmNsYXNzTmFtZSA9ICJmc1RyaXBUeXBlTnVtQWN0aXZlIjsKICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJmc1RyaXBUeXBlTGFiZWwwIiArIG5ld0FjdGl2ZUZsaWdodCkuY2xh
c3NOYW1lID0gImZzVHJpcFR5cGVMYWJlbEFjdGl2ZSI7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidG9GbGlnaHQwIiArIG5ld0FjdGl2ZUZsaWdodCkuc3R5bGUuZGlzcGxheSA9ICJibG9j
ayI7Cn0KZnVuY3Rpb24gaW1nUm9sbE92ZXIoaW1nT2JqZWN0KSB7CiAgICB2YXIgaW1hZ2VEaXIg
PSAiIjsKICAgIHZhciBpbWFnZU9iaiA9IGltZ09iamVjdC5zcmMuc3Vic3RyKGltZ09iamVjdC5z
cmMuaW5kZXhPZigiaW1hZ2VzLyIpICsgNyk7CiAgICB2YXIgaW1hZ2VOYW1lID0gaW1hZ2VPYmou
c3Vic3RyKDAsIGltYWdlT2JqLmluZGV4T2YoIi4iKSk7CiAgICB2YXIgaW1hZ2VUeXBlID0gaW1h
Z2VPYmouc3Vic3RyKGltYWdlT2JqLmluZGV4T2YoIi4iKSk7CiAgICBpZiAoaW1hZ2VOYW1lLmlu
ZGV4T2YoIi8iKSAhPSAtMSkgewogICAgICAgIGltYWdlRGlyID0gaW1hZ2VOYW1lLnN1YnN0cigw
LCBpbWFnZU5hbWUuaW5kZXhPZigiLyIpICsgMSk7CiAgICAgICAgaW1hZ2VOYW1lID0gaW1hZ2VO
YW1lLnN1YnN0cihpbWFnZU5hbWUuaW5kZXhPZigiLyIpICsgMSk7CiAgICB9CiAgICBpbWdPYmpl
Y3Quc3JjID0gImh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy8iICsgaW1h
Z2VEaXIgKyBpbWFnZU5hbWUgKyAiLXJvbGwiICsgaW1hZ2VUeXBlOwp9CmZ1bmN0aW9uIGltZ1Jv
bGxPdXQoaW1nT2JqZWN0KSB7CiAgICB2YXIgaW1hZ2VEaXIgPSAiIjsKICAgIHZhciBpbWFnZU9i
aiA9IGltZ09iamVjdC5zcmMuc3Vic3RyKGltZ09iamVjdC5zcmMuaW5kZXhPZigiaW1hZ2VzLyIp
ICsgNyk7CiAgICB2YXIgaW1hZ2VOYW1lID0gaW1hZ2VPYmouc3Vic3RyKDAsIGltYWdlT2JqLmlu
ZGV4T2YoIi1yb2xsLiIpKTsKICAgIHZhciBpbWFnZVR5cGUgPSBpbWFnZU9iai5zdWJzdHIoaW1h
Z2VPYmouaW5kZXhPZigiLiIpKTsKICAgIGlmIChpbWFnZU5hbWUuaW5kZXhPZigiLyIpICE9IC0x
KSB7CiAgICAgICAgaW1hZ2VEaXIgPSBpbWFnZU5hbWUuc3Vic3RyKDAsIGltYWdlTmFtZS5pbmRl
eE9mKCIvIikgKyAxKTsKICAgICAgICBpbWFnZU5hbWUgPSBpbWFnZU5hbWUuc3Vic3RyKGltYWdl
TmFtZS5pbmRleE9mKCIvIikgKyAxKTsKICAgIH0KICAgIGltZ09iamVjdC5zcmMgPSAiaHR0cHM6
Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzLyIgKyBpbWFnZURpciArIGltYWdlTmFt
ZSArIGltYWdlVHlwZTsKfQpmdW5jdGlvbiBidG5Sb2xsKGJ1dHRvbk9iamVjdCwgYnRuQ2xhc3NO
YW1lKSB7CiAgICBidXR0b25PYmplY3QuY2xhc3NOYW1lID0gYnRuQ2xhc3NOYW1lOwp9CnZhciBu
ZXh0RGF5RmxpZ2h0ID0gbmV3IEFycmF5KDEpOwp2YXIgYWpheERpdjsKdmFyIHNlYXRBY3Rpb25V
cmwgPSAic2VhdFNlbGVjdE5ldy5kbyI7CnZhciBmbHRzSW5mb0lkeCA9IDA7CnZhciBmcm9tTmV4
dERheU1zZyA9IGZhbHNlOwoKZnVuY3Rpb24gcG9wRlNEaXZzKGUsIGRpdklELCBpbmRleCkgewog
ICAgdmFyIHBvc3ggPSAwOwogICAgdmFyIHBvc3kgPSAwOwogICAgdmFyIHhPZmZzZXQgPSAwOwog
ICAgdmFyIHlPZmZzZXQgPSAwOwogICAgdmFyIEFsbFBvcFVwWCA9IDA7CiAgICB2YXIgQWxsUG9w
VXBZID0gMDsKICAgIHZhciBvYmogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWNQb3BVcElu
Zm9JY29uRGVwYXJ0dXJlMCIgKyBpbmRleCk7CiAgICB2YXIgb2JqRmFyZURldGFpbHMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiYnRuRmFyZURldGFpbHMwMSIpOwogICAgeE9mZnNldCA9IDEy
MDsKICAgIHlPZmZzZXQgPSAwOwogICAgaWYgKGRpdklEID09ICJwb3B1cEdvdkZlZXNBbmRUYXhl
cyIpIHsKICAgICAgICBvYmogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG5rR292ZXJubWVu
dEZlZVRheGVzIik7CiAgICAgICAgeU9mZnNldCA9IC0xMzA7CiAgICB9CiAgICBpZiAoIWUpIHsK
ICAgICAgICB2YXIgZSA9IHdpbmRvdy5ldmVudDsKICAgIH0KICAgIGlmIChlLnBhZ2VYIHx8IGUu
cGFnZVkpIHsKICAgICAgICBwb3N4ID0gZS5wYWdlWDsKICAgIH0gZWxzZSB7CiAgICAgICAgaWYg
KGUuY2xpZW50WCB8fCBlLmNsaWVudFkpIHsKICAgICAgICAgICAgcG9zeCA9IGUuY2xpZW50WCAr
IGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCArIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3Jv
bGxMZWZ0OwogICAgICAgIH0KICAgIH0KICAgIGlmIChvYmogJiYgb2JqLm9mZnNldFBhcmVudCkg
ewogICAgICAgIHdoaWxlIChvYmoub2Zmc2V0UGFyZW50KSB7CiAgICAgICAgICAgIHBvc3kgKz0g
b2JqLm9mZnNldFRvcDsKICAgICAgICAgICAgb2JqID0gb2JqLm9mZnNldFBhcmVudDsKICAgICAg
ICB9CiAgICB9IGVsc2UgewogICAgICAgIGlmIChvYmogJiYgb2JqLngpIHsKICAgICAgICAgICAg
cG9zeSArPSBvYmoueTsKICAgICAgICB9CiAgICB9CiAgICBpZiAob2JqRmFyZURldGFpbHMub2Zm
c2V0UGFyZW50KSB7CiAgICAgICAgd2hpbGUgKG9iakZhcmVEZXRhaWxzLm9mZnNldFBhcmVudCkg
ewogICAgICAgICAgICBBbGxQb3BVcFggKz0gb2JqRmFyZURldGFpbHMub2Zmc2V0TGVmdDsKICAg
ICAgICAgICAgQWxsUG9wVXBZICs9IG9iakZhcmVEZXRhaWxzLm9mZnNldFRvcDsKICAgICAgICAg
ICAgb2JqRmFyZURldGFpbHMgPSBvYmpGYXJlRGV0YWlscy5vZmZzZXRQYXJlbnQ7CiAgICAgICAg
fQogICAgfSBlbHNlIHsKICAgICAgICBpZiAob2JqRmFyZURldGFpbHMueCkgewogICAgICAgICAg
ICBBbGxQb3BVcFggKz0gb2JqRmFyZURldGFpbHMueDsKICAgICAgICAgICAgQWxsUG9wVXBZICs9
IG9iakZhcmVEZXRhaWxzLnk7CiAgICAgICAgfQogICAgfQogICAgeE9mZnNldCA9IDEyMDsKICAg
IHlPZmZzZXQgPSAwOwogICAgaWYgKGRpdklEID09ICJtY1BvcFVwIiB8fCBkaXZJRCA9PSAibWNS
ZWZ1bmRQb3BVcCIgfHwgZGl2SUQgPT0gIm1jc0l1UG9wVXAiIHx8IGRpdklEID09ICJtY3NQb3BV
cCIgfHwgZGl2SUQgPT0gImZjUG9wVXAiIHx8IGRpdklEID09ICJmY3JQb3BVcCIpIHsKICAgICAg
ICB5T2Zmc2V0ID0gMjY7CiAgICB9CiAgICBpZiAoZGl2SUQgPT0gImFsbFBvcFVwIikgewogICAg
ICAgIHBvc3ggPSBBbGxQb3BVcFggLSA0MDA7CiAgICAgICAgcG9zeSA9IEFsbFBvcFVwWSArIDIw
OwogICAgfQogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1jc0l1UG9wVXAiKS5zdHlsZS52
aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWNzUG9w
VXAiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibWNQb3BVcCIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJtY1JlZnVuZFBvcFVwIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRk
ZW4iOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZjUG9wVXAiKS5zdHlsZS52aXNpYmls
aXR5ID0gImhpZGRlbiI7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmNyUG9wVXAiKS5z
dHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
YWxsUG9wVXAiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZChkaXZJRCkuc3R5bGUubGVmdCA9IChwb3N4IC0geE9mZnNldCk7CiAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChkaXZJRCkuc3R5bGUudG9wID0gKHBvc3kgKyB5T2Zmc2V0KTsK
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRpdklEKS5zdHlsZS52aXNpYmlsaXR5ID0gInZp
c2libGUiOwp9CmZ1bmN0aW9uIHBvcEZTRGl2c0Nsb3NlKGRpdklEKSB7CiAgICBpZiAoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoZGl2SUQpLnN0eWxlLnZpc2liaWxpdHkgPT0gInZpc2libGUiKSB7
CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGl2SUQpLnN0eWxlLnZpc2liaWxpdHkg
PSAiaGlkZGVuIjsKICAgIH0KfQpmdW5jdGlvbiB0b2dnbGVNb2RpZnlTZWFyY2hEaXYoKSB7CiAg
ICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZzTW9kaWZ5U2VhcmNoIikuc3R5bGUuZGlz
cGxheSA9PSAiYmxvY2siKSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZzTW9k
aWZ5U2VhcmNoIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgibW9kaWZ5U2VhcmNoQXJyb3ciKS5zcmMgPSAiaHR0cHM6Ly9zdGF0aWMudmly
Z2luYW1lcmljYS5jb20vaW1hZ2VzL2ZhcmVzZWxlY3QtbW9kaWZ5c2VhcmNoLXJpZ2h0YXJyb3ct
cmVkLmdpZiI7CiAgICB9IGVsc2UgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJm
c01vZGlmeVNlYXJjaCIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJtb2RpZnlTZWFyY2hBcnJvdyIpLnNyYyA9ICJodHRwczovL3N0YXRp
Yy52aXJnaW5hbWVyaWNhLmNvbS9pbWFnZXMvZmFyZXNlbGVjdC1tb2RpZnlzZWFyY2gtZG93bmFy
cm93LXJlZC5naWYiOwogICAgfQp9CmZ1bmN0aW9uIHRvZ2dsZUFjdGl2ZUNlbGwodGhpc0FjdGl2
ZUNlbGwsIHRoaXNBY3RpdmVSYWRpbywgaWR4KSB7CiAgICB2YXIgY3VycmVudEFjdGl2ZUNlbGwg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgoImFjdGl2ZUNlbGwiICsgaWR4KSkudmFsdWU7CiAg
ICB2YXIgY3VycmVudEFjdGl2ZVJhZGlvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoKCJhY3Rp
dmVSYWRpbyIgKyBpZHgpKS52YWx1ZTsKICAgIHZhciBjdXJyZW50Q2xhc3MgPSBjdXJyZW50QWN0
aXZlQ2VsbC5zcGxpdCgifCIpWzJdOwogICAgaWYgKGN1cnJlbnRBY3RpdmVDZWxsICYmIGN1cnJl
bnRBY3RpdmVDZWxsICE9ICIiKSB7CiAgICAgICAgaWYgKGN1cnJlbnRDbGFzcyA9PSAiTUNTIiB8
fCBjdXJyZW50Q2xhc3MgPT0gIklVTUNTIikgewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZChjdXJyZW50QWN0aXZlQ2VsbCkuY2xhc3NOYW1lID0gImZzVGFibGVDZWxsTUNTIjsK
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoY3VycmVudENsYXNzID09ICJGQyIpIHsK
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGN1cnJlbnRBY3RpdmVDZWxs
KS5jbGFzc05hbWUgPSAiZnNUYWJsZUNlbGxGQyI7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjdXJyZW50QWN0aXZlQ2VsbCkuY2xh
c3NOYW1lID0gImZzVGFibGVDZWxsIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAg
IGlmIChjdXJyZW50QWN0aXZlUmFkaW8gJiYgY3VycmVudEFjdGl2ZVJhZGlvICE9ICIiKSB7CiAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY3VycmVudEFjdGl2ZVJhZGlvKS5jaGVja2Vk
ID0gZmFsc2U7CiAgICB9CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzQWN0aXZlQ2Vs
bCkuY2xhc3NOYW1lID0gImZzVGFibGVDZWxsQWN0aXZlIjsKICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRoaXNBY3RpdmVSYWRpbykuY2hlY2tlZCA9IHRydWU7CiAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgoImFjdGl2ZUNlbGwiICsgaWR4KSkudmFsdWUgPSB0aGlzQWN0aXZlQ2VsbDsK
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCgiYWN0aXZlUmFkaW8iICsgaWR4KSkudmFsdWUg
PSB0aGlzQWN0aXZlUmFkaW87Cn0KZnVuY3Rpb24gY2hhbmdlRmxpZ2h0VGFiKGluZGV4LCBjdXJy
ZW50SWQsIGJ1dHRvbklkLCBpc0ludGVybmF0aW9uYWwpIHsKICAgIHZhciBjaGVja0RlcGFydCA9
IHRydWU7CiAgICBpZiAoaXNJbnRlcm5hdGlvbmFsICYmIGlzSW50ZXJuYXRpb25hbCA9PSAidHJ1
ZSIpIHsKICAgICAgICBpZiAoIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmbGlnaHROdW1iZXIw
IikgJiYgaW5kZXggPiAwKSB7CiAgICAgICAgICAgIGNoZWNrRGVwYXJ0ID0gZmFsc2U7CiAgICAg
ICAgfQogICAgfQogICAgaWYgKGNoZWNrRGVwYXJ0KSB7CiAgICAgICAgdG9nZ2xlRmxpZ2h0c0lu
Zm8oaW5kZXgpOwogICAgICAgIHRvZ2dsZUFjdGl2ZVRhYihjdXJyZW50SWQpOwogICAgICAgIHRv
Z2dsZUFjdGl2ZUJ1dHRvbnMoYnV0dG9uSWQpOwogICAgfSBlbHNlIHsKICAgICAgICB1cGRhdGVQ
b3B1cCgiaHRtbC9wb3B1cC1mYXJlc2VsZWN0LWNob29zZWRlcGFydGZpcnN0Lmh0bWwiLCAiU2Vs
ZWN0IERlcGFydGluZyBGbGlnaHQiLCAzNTAsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYWdl
SGVhZGVyQmFyIiksIGZhbHNlLCAxNzAsIDUwLCBmYWxzZSk7CiAgICB9CiAgICBpZiAoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImZsaWdodDAiKSkgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJmbGlnaHQwIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgIH0KICAgIGlmIChk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmxpZ2h0MSIpKSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImZsaWdodDEiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgfQogICAg
aWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmbGlnaHQiICsgaW5kZXgpKSB7CiAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZsaWdodCIgKyBpbmRleCkuc3R5bGUuZGlzcGxheSA9
ICJibG9jayI7CiAgICB9Cn0KZnVuY3Rpb24gdG9nZ2xlRmxpZ2h0c0luZm8oaW5kZXgpIHsKICAg
IGN1cnJlbnRJZCA9ICJmbGlnaHRJbmZvIiArIGluZGV4OwogICAgdmFyIGJ1dHRvbklkID0gImJ1
dHRvbiIgKyBpbmRleDsKICAgIHZhciBvYmpzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZh
cmVTZWxlY3RGbGlnaHRMaXN0IikuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRpdiIpOwogICAgZm9y
IChpID0gMDsgaSA8IG9ianMubGVuZ3RoOyBpKyspIHsKICAgICAgICBpZiAob2Jqc1tpXS5pZCA9
PSBjdXJyZW50SWQpIHsKICAgICAgICAgICAgZmx0c0luZm9JZHggPSBpbmRleDsKICAgICAgICAg
ICAgb2Jqc1tpXS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJvdXRlSW5mbyIpLmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCgicm91dGVJbmZvIiArIGluZGV4KSkuaW5uZXJIVE1MOwogICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChidXR0b25JZCkuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKChvYmpzW2ldLmlkKS5pbmRleE9mKCJmbGln
aHRJbmZvIikgPj0gMCkgewogICAgICAgICAgICAgICAgb2Jqc1tpXS5zdHlsZS5kaXNwbGF5ID0g
Im5vbmUiOwogICAgICAgICAgICAgICAgJCgiI2J1dHRvbiIgKyBpKS5oaWRlKCk7CiAgICAgICAg
ICAgIH0KICAgICAgICB9CiAgICB9Cn0KZnVuY3Rpb24gdG9nZ2xlQWN0aXZlVGFiKGN1cnJlbnRJ
ZCkgewogICAgdmFyIG9ianMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWxsVGFicyIpLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpOwogICAgZm9yIChpID0gMDsgaSA8IG9ianMubGVuZ3Ro
OyBpKyspIHsKICAgICAgICBpZiAob2Jqc1tpXS5pZCA9PSBjdXJyZW50SWQpIHsKICAgICAgICAg
ICAgdG9nZ2xlQ2xhc3Mob2Jqc1tpXSwgIkFjdGl2ZSIpOwogICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgIGlmICgob2Jqc1tpXS5pZCkuaW5kZXhPZigidGFiIikgPj0gMCkgewogICAgICAgICAg
ICAgICAgdG9nZ2xlQ2xhc3Mob2Jqc1tpXSwgIkluYWN0aXZlIik7CiAgICAgICAgICAgIH0KICAg
ICAgICB9CiAgICB9CiAgICBmdW5jdGlvbiB0b2dnbGVDbGFzcyhvYmosIGNsYXNzVHlwZSkgewog
ICAgICAgIG9iai5jbGFzc05hbWUgPSAiZnNUcmlwVHlwZSIgKyBjbGFzc1R5cGU7CiAgICAgICAg
dmFyIHRkT2JqcyA9IG9iai5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGFibGUiKVswXS5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgidHIiKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKTsKICAgICAg
ICBmb3IgKGogPSAwOyBqIDwgdGRPYmpzLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgIGlmICh0
ZE9ianNbal0uY2xhc3NOYW1lLmluZGV4T2YoImZzVHJpcFR5cGVOdW0iKSA+PSAwKSB7CiAgICAg
ICAgICAgICAgICB0ZE9ianNbal0uY2xhc3NOYW1lID0gImZzVHJpcFR5cGVOdW0iICsgY2xhc3NU
eXBlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKHRkT2Jqc1tqXS5j
bGFzc05hbWUuaW5kZXhPZigiZnNUcmlwVHlwZUxhYmVsIikgPj0gMCkgewogICAgICAgICAgICAg
ICAgICAgIHRkT2Jqc1tqXS5jbGFzc05hbWUgPSAiZnNUcmlwVHlwZUxhYmVsIiArIGNsYXNzVHlw
ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQpmdW5j
dGlvbiB0b2dnbGVBY3RpdmVCdXR0b25zKGN1cnJlbnRJZCkgewogICAgdmFyIG9ianMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGludWVCdG5zIikuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImRpdiIpOwogICAgZm9yIChpID0gMDsgaSA8IG9ianMubGVuZ3RoOyBpKyspIHsKICAgICAgICBp
ZiAob2Jqc1tpXS5pZCA9PSBjdXJyZW50SWQpIHsKICAgICAgICAgICAgb2Jqc1tpXS5zdHlsZS5k
aXNwbGF5ID0gImJsb2NrIjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoKG9ianNb
aV0uaWQpLmluZGV4T2YoImJ1dHRvbiIpID49IDApIHsKICAgICAgICAgICAgICAgIG9ianNbaV0u
c3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQpm
dW5jdGlvbiBsb2FkRmFyZURldGFpbHMoZmFyZUlkLCByYWRpb1ZhbHVlLCBmbGlnaHROdW1iZXIs
IGFpcnBvcnQsIGZhcmVGb3JtYXRUeXBlLCBmYXJlTGV2ZWwsIGZhcmVCYXNpc0NvZGUsIG1haW5Q
b2ludHMsIG1jc1BvaW50cywgZmlyc3RQb2ludHMsIG5leHREYXlGbGlnaHRJbmQpIHsKICAgIG15
VXJsID0gImxvYWRGYXJlUXVvdGUuZG8/bWV0aG9kPWxvYWRGYXJlUXVvdGUmZmFyZUlkPSIgKyBm
YXJlSWQgKyAiJmZhcmU9IiArIHJhZGlvVmFsdWUgKyAiJmZsaWdodE51bWJlcj0iICsgZmxpZ2h0
TnVtYmVyICsgIiZhaXJwb3J0TmFtZT0iICsgYWlycG9ydCArICImZmFyZUxldmVsPSIgKyBmYXJl
TGV2ZWwgKyAiJmZhcmVGb3JtYXRUeXBlPSIgKyBmYXJlRm9ybWF0VHlwZSArICImZmFyZUJhc2lz
Q29kZT0iICsgZmFyZUJhc2lzQ29kZSArICImbWFpblBvaW50cz0iICsgbWFpblBvaW50cyArICIm
bWNzUG9pbnRzPSIgKyBtY3NQb2ludHMgKyAiJmZpcnN0UG9pbnRzPSIgKyBmaXJzdFBvaW50czsK
ICAgICQoIiNuZXh0RGF5TXNnT0tidG4iKS51bmJpbmQoImNsaWNrIik7CiAgICAkKCIjbmV4dERh
eU1zZ0NhbmNlbGJ0biIpLnVuYmluZCgiY2xpY2siKTsKICAgIGlmIChkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZXJyb3JEaXYiKSkgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJl
cnJvckRpdiIpLmlubmVySFRNTCA9ICIiOwogICAgfQogICAgZmx0c0luZm9JZHggPSBldmFsKGZh
cmVJZC5zcGxpdCgifCIpWzBdKTsKICAgIGlmIChuZXh0RGF5RmxpZ2h0SW5kID09ICJ0cnVlIiAm
JiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm92ZXJOaWdodEZsaWdodE1lc3NhZ2UiKS5zdHls
ZS5kaXNwbGF5ID09ICJub25lIiB8fCAhZnJvbU5leHREYXlNc2cpKSB7CiAgICAgICAgJCgiI292
ZXJOaWdodEZsaWdodE1lc3NhZ2UiKS5jc3MoewogICAgICAgICAgICB0b3A6ICgkKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKGZhcmVJZCArICJ8UiIpKS5vZmZzZXQoKS50b3AgLSA2MCkgKyAicHgi
LAogICAgICAgICAgICBsZWZ0OiAoJChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmYXJlSWQgKyAi
fFIiKSkub2Zmc2V0KCkubGVmdCAtIDExMCkgKyAicHgiCiAgICAgICAgfSk7CiAgICAgICAgJCgi
I25leHREYXlNc2dPS2J0biIpLmNsaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgZnJvbU5l
eHREYXlNc2cgPSB0cnVlOwogICAgICAgICAgICAkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZh
cmVJZCkpLnRyaWdnZXIoImNsaWNrIik7CiAgICAgICAgICAgIG5leHREYXlGbGlnaHRbZmx0c0lu
Zm9JZHhdID0gdHJ1ZTsKICAgICAgICAgICAgJCgiI292ZXJOaWdodEZsaWdodE1lc3NhZ2UiKS5o
aWRlKCk7CiAgICAgICAgfSk7CiAgICAgICAgJCgiI25leHREYXlNc2dDYW5jZWxidG4iKS5jbGlj
ayhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGlmIChmYXJlSWQuc3BsaXQoInwiKVsyXSAmJiAo
ZmFyZUlkLnNwbGl0KCJ8IilbMl0gPT0gIk1DUyIgfHwgZmFyZUlkLnNwbGl0KCJ8IilbMl0gPT0g
IklVTUNTIikpIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZhcmVJ
ZCkuY2xhc3NOYW1lID0gImZzVGFibGVDZWxsTUNTIjsKICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgIGlmIChmYXJlSWQuc3BsaXQoInwiKVsyXSAmJiBmYXJlSWQuc3BsaXQoInwi
KVsyXSA9PSAiRkMiKSB7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoZmFyZUlkKS5jbGFzc05hbWUgPSAiZnNUYWJsZUNlbGxGQyI7CiAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZhcmVJ
ZCkuY2xhc3NOYW1lID0gImZzVGFibGVDZWxsIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgfQogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmYXJlSWQgKyAifFIiKS5j
aGVja2VkID0gZmFsc2U7CiAgICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgo
ImFjdGl2ZUNlbGwiICsgZmx0c0luZm9JZHgpKSAmJiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgo
ImFjdGl2ZUNlbGwiICsgZmx0c0luZm9JZHgpKS52YWx1ZSAhPSAiIikgewogICAgICAgICAgICAg
ICAgdmFyIHNlbGVjdGVkQ2VsbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCgiYWN0aXZlQ2Vs
bCIgKyBmbHRzSW5mb0lkeCkpLnZhbHVlOwogICAgICAgICAgICAgICAgdG9nZ2xlQWN0aXZlQ2Vs
bChzZWxlY3RlZENlbGwsIHNlbGVjdGVkQ2VsbCArICJ8UiIsIGZsdHNJbmZvSWR4KTsKICAgICAg
ICAgICAgfQogICAgICAgICAgICAkKCIjb3Zlck5pZ2h0RmxpZ2h0TWVzc2FnZSIpLmhpZGUoKTsK
ICAgICAgICB9KTsKICAgICAgICAkKCIjb3Zlck5pZ2h0RmxpZ2h0TWVzc2FnZSIpLnNob3coKTsK
ICAgICAgICByZXR1cm47CiAgICB9IGVsc2UgewogICAgICAgIG5leHREYXlGbGlnaHRbZmx0c0lu
Zm9JZHhdID0gZmFsc2U7CiAgICB9CiAgICB0b2dnbGVBY3RpdmVDZWxsKGZhcmVJZCwgZmFyZUlk
ICsgInxSIiwgZmx0c0luZm9JZHgpOwogICAgc2hvd1dhaXRJbWFnZSgpOwogICAgZnJvbU5leHRE
YXlNc2cgPSBmYWxzZTsKICAgICQoIiNvdmVyTmlnaHRGbGlnaHRNZXNzYWdlIikuaGlkZSgpOwog
ICAgZGlzYWJsZVNlbGVjdFBhZ2UoKTsKICAgIGlmICh3aW5kb3cucG9wdWxhdGVPbW5pdHVyZUVs
ZW1lbnRzKSB7CiAgICAgICAgcG9wdWxhdGVPbW5pdHVyZUVsZW1lbnRzKGZsdHNJbmZvSWR4LCBh
aXJwb3J0KTsKICAgIH0KICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicG9zdFRyYXZl
bEV4cGVpbmNlIikpIHsKICAgICAgICBhamF4U2VsZWN0KG15VXJsLCAicG9zdFRyYXZlbEV4cGVp
bmNlIiwgZmFyZUZvcm1hdFR5cGUpOwogICAgfSBlbHNlIHsKICAgICAgICBhamF4U2VsZWN0KG15
VXJsLCAidHJhdmVsRXhwZWluY2UiLCBmYXJlRm9ybWF0VHlwZSk7CiAgICB9Cn0KZnVuY3Rpb24g
ZGlzYWJsZVNlbGVjdFBhZ2UoKSB7CiAgICBwYWdlU2l6ZSA9IGdldFBhZ2VTaXplV2l0aFNjcm9s
bCgpOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpc2FibGVUb3RhbFBhZ2UiKS5zdHls
ZS53aWR0aCA9IHBhZ2VTaXplWzBdOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpc2Fi
bGVUb3RhbFBhZ2UiKS5zdHlsZS5oZWlnaHQgPSBwYWdlU2l6ZVsxXTsKICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJkaXNhYmxlVG90YWxQYWdlIikuc3R5bGUubGVmdCA9ICIwIjsKICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXNhYmxlVG90YWxQYWdlIikuc3R5bGUudG9wID0gIjAi
OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpc2FibGVUb3RhbFBhZ2UiKS5zdHlsZS5k
aXNwbGF5ID0gImJsb2NrIjsKfQpmdW5jdGlvbiBhamF4U2VsZWN0KG15dXJsLCBkaXYsIGZhcmVG
b3JtYXRUeXBlKSB7CiAgICB2YXIgdGhldGltZSA9IG5ldyBEYXRlKCk7CiAgICB2YXIgZHVtbXkg
PSAiIiArIHRoZXRpbWUuZ2V0SG91cnMoKSArIHRoZXRpbWUuZ2V0TWludXRlcygpICsgdGhldGlt
ZS5nZXRTZWNvbmRzKCk7CiAgICBteXVybCA9IG15dXJsICsgIiZkdW1teT0iICsgZHVtbXk7CiAg
ICBhamF4RGl2ID0gZGl2OwogICAgZmFyZUZvcm1hdFR5cGVQYWdlID0gZmFyZUZvcm1hdFR5cGU7
CiAgICB4bWxodHRwLm9wZW4oIlBPU1QiLCBteXVybCwgdHJ1ZSk7CiAgICB4bWxodHRwLm9ucmVh
ZHlzdGF0ZWNoYW5nZSA9IGhhbmRsZVJlc3BvbnNlU2VsZWN0OwogICAgeG1saHR0cC5zZW5kKCIi
KTsKfQpmdW5jdGlvbiBoYW5kbGVSZXNwb25zZVNlbGVjdCgpIHsKICAgIFN0cmluZy5wcm90b3R5
cGUudHJpbSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gdGhpcy5yZXBsYWNlKC9eXHMr
fFxzKyQvLCAiIik7CiAgICB9OwogICAgaWYgKHhtbGh0dHAucmVhZHlTdGF0ZSA9PSA0KSB7CiAg
ICAgICAgaWYgKHhtbGh0dHAuc3RhdHVzID09IDIwMCkgewogICAgICAgICAgICBpZiAoKHhtbGh0
dHAucmVzcG9uc2VUZXh0KS50cmltKCkgPT0gIkFqYXhTZXNzaW9uVGltZU91dCIpIHsKICAgICAg
ICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICIvaG9tZS5kbz9tZXRob2Q9dmlyZ2luQW1lcmlj
YSZzZXNzaW9uU3RhdGU9c2Vzc2lvblRpbWVPdXQiOwogICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgaWYgKCh4bWxodHRwLnJlc3BvbnNlVGV4dCkudHJpbSgpID09ICJBamF4RXJy
b3IiKSB7CiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gIi9ob21lLmRvP21l
dGhvZD12aXJnaW5BbWVyaWNhJmZyb21FcnJvclBhZ2U9ZnJvbUVycm9yUGFnZSI7CiAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmICgoeG1saHR0cC5yZXNwb25z
ZVRleHQpLnRyaW0oKSA9PSAiSW52ZW50b3J5VXBkYXRlIiB8fCAoKHhtbGh0dHAucmVzcG9uc2VU
ZXh0KS5sZW5ndGggPiA0ICYmICh4bWxodHRwLnJlc3BvbnNlVGV4dCkuc3Vic3RyaW5nKDAsIDUp
ID09ICJlcnJvciIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoeG1saHR0cC5yZXNw
b25zZVRleHQpLnRyaW0oKSA9PSAiSW52ZW50b3J5VXBkYXRlIikgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlZGX3BvcHVwIikuc3R5bGUuZGlz
cGxheSA9ICJibG9jayI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXJyb3JEaXYiKS5z
dHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJlcnJvckRpdiIpLmlubmVySFRNTCA9ICc8dGFibGU+PHRyPjx0
ZD48aW1nIHNyYz0iaHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL2VzYy1z
aWduLmdpZiIgd2lkdGg9IjQwIiBoZWlnaHQ9IjM1IiBhbHQ9IiIgPjwvdGQ+PHRkPjxzcGFuIGNs
YXNzPSJ2YWxpZGF0aW9uRGVmYXVsdCI+JyArICh4bWxodHRwLnJlc3BvbnNlVGV4dCkuc3Vic3Ry
aW5nKDYpICsgIjwvc3Bhbj48L3RkPjwvdHI+PC90YWJsZT4iOwogICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0RGF5RmxpZ2h0W2ZsdHNJbmZv
SWR4XSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dERheUZsaWdodFtmbHRzSW5m
b0lkeF0gPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoKCJhY3RpdmVDZWxsIiArIGZsdHNJ
bmZvSWR4KSkgJiYgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoKCJhY3RpdmVDZWxsIiArIGZsdHNJ
bmZvSWR4KSkudmFsdWUgIT0gIiIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCgiYWN0aXZlQ2VsbCIg
KyBmbHRzSW5mb0lkeCkpLnZhbHVlKS5jbGFzc05hbWUgPSAiZnNUYWJsZUNlbGwiOwogICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgoImFjdGl2ZVJhZGlvIiArIGZsdHNJbmZvSWR4KSkgJiYgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoKCJhY3RpdmVSYWRpbyIgKyBmbHRzSW5mb0lkeCkpLnZhbHVlICE9ICIi
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgoImFjdGl2ZVJhZGlvIiArIGZsdHNJbmZvSWR4KSkudmFs
dWUpLmNoZWNrZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4bWxodHRwLnJl
c3BvbnNlVGV4dC5pbmRleE9mKCJlc2Mtc2lnbiIpID49IDAgfHwgeG1saHR0cC5yZXNwb25zZVRl
eHQuaW5kZXhPZigiZXNjU2lnbkltZyIpID49IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlcnJvckRpdiIpLnN0eWxlLmRpc3BsYXkgPSAi
YmxvY2siOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImVycm9yRGl2IikuaW5uZXJIVE1MID0geG1saHR0cC5yZXNwb25zZVRleHQ7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9hZGluZ0FuaW1h
dGlvbkRpdiIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobmV4dERheUZsaWdodFtmbHRzSW5mb0lkeF0pIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuZXh0RGF5RmxpZ2h0W2ZsdHNJbmZvSWR4XSA9IGZhbHNlOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCgiYWN0aXZlQ2VsbCIgKyBmbHRzSW5mb0lkeCkpICYmIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCgiYWN0aXZlQ2VsbCIgKyBmbHRzSW5mb0lkeCkpLnZhbHVl
ICE9ICIiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoKCJhY3RpdmVDZWxsIiArIGZsdHNJbmZv
SWR4KSkudmFsdWUpLmNsYXNzTmFtZSA9ICJmc1RhYmxlQ2VsbCI7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoKCJhY3RpdmVSYWRpbyIgKyBmbHRzSW5mb0lkeCkpICYmIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCgiYWN0aXZlUmFkaW8iICsgZmx0c0luZm9JZHgpKS52YWx1ZSAhPSAiIikg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCgiYWN0aXZlUmFkaW8iICsgZmx0c0luZm9JZHgpKS52
YWx1ZSkuY2hlY2tlZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYWpheERpdikuaW5uZXJIVE1MID0geG1saHR0cC5yZXNw
b25zZVRleHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWpheERpdiA9PSAidHJh
dmVsRXhwZWluY2UiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0b3RhbEJvdHRvbSIpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b3RhbFRvcCIpLmlubmVy
SFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b3RhbEJvdHRvbSIpLmlubmVySFRNTDsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGZhcmVGb3JtYXRUeXBlUGFnZSA9PSAiUG9pbnRzIiAmJiBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicG9pbnRzQm90dG9tIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBvaW50c1RvcCIpLmlubmVySFRN
TCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwb2ludHNCb3R0b20iKS5pbm5lckhUTUw7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFqYXgoInVwZGF0ZVRpdGxlQmFyLmRvP21ldGhvZD11cGRhdGVUaXRsZUJhciIsICJ0
aXRsZUJhckRpdiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGFqYXhEaXYgPT0gInBvc3RUcmF2ZWxFeHBlaW5jZSIpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhamF4KCJwb3N0VXBkYXRlVGl0bGVCYXIuZG8/
bWV0aG9kPXVwZGF0ZVRpdGxlQmFyIiwgInBvc3RUaXRsZUJhckRpdiIpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJuZXdGbGlnaHRUb3Rh
bCIpLmlubmVySFRNTCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b3RhbEFtb3VudE5ldyIp
LmlubmVySFRNTDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgib3JpZ2luYWxGbGlnaHRUb3RhbCIpLmlubmVySFRNTCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0b3RhbEFtb3VudG9yaWdpbmFsIikuaW5uZXJIVE1MOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJs
b2FkaW5nQW5pbWF0aW9uRGl2Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGlzYWJsZVRvdGFsUGFnZSIpLnN0eWxl
LmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICAgICAgc2V0UG9zaXRpb25UcmF2ZWxF
eHAoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGlzYWJsZVRvdGFsUGFnZSIpLnN0eWxlLmRpc3BsYXkg
PSAibm9uZSI7CiAgICB9Cn0KZnVuY3Rpb24gY2hhbmdlVHJhdmVsRGF0ZShvZmZzZXQsIE9hbmRE
ZXRhaWxzTnVtYmVyKSB7CiAgICBmbHRzSW5mb0lkeCA9IE9hbmREZXRhaWxzTnVtYmVyOwogICAg
aWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlcnJvckRpdiIpKSB7CiAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImVycm9yRGl2IikuaW5uZXJIVE1MID0gIiI7CiAgICB9CiAgICB2
YXIgcG9zaXRpb25PYmogPSAiZmFyZVNlbGVjdENhcm91c2VsIiArIE9hbmREZXRhaWxzTnVtYmVy
OwogICAgc2hvd1dhaXRJbWFnZSgpOwogICAgbXlVcmwgPSAiY2hhbmdlVHJhdmVsRGF0ZUFjdGlv
bi5kbz9tZXRob2Q9Y2hhbmdlVHJhdmVsRGF0ZSZvYW5kRGV0YWlsc051bWJlcj0iICsgT2FuZERl
dGFpbHNOdW1iZXIgKyAiJm9mZnNldD0iICsgb2Zmc2V0OwogICAgYWpheFdpdGhDYWNoZShteVVy
bCwgImZhcmVTZWxlY3RGbGlnaHRMaXN0Iik7Cn0KZnVuY3Rpb24gY2hhbmdlV2Vla1N1Ym1pdChP
YW5kRGV0YWlsc051bWJlciwgd2Vla1N0YXR1cywgb2FuZERldGFpbHNMaXN0U2l6ZSkgewogICAg
Zmx0c0luZm9JZHggPSBPYW5kRGV0YWlsc051bWJlcjsKICAgIGlmIChkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZXJyb3JEaXYiKSkgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJl
cnJvckRpdiIpLmlubmVySFRNTCA9ICIiOwogICAgfQogICAgdmFyIHBvc2l0aW9uT2JqID0gImZh
cmVTZWxlY3RDYXJvdXNlbCIgKyBPYW5kRGV0YWlsc051bWJlcjsKICAgIG15VXJsID0gImNoYW5n
ZVdlZWtEYXRlQWN0aW9uLmRvP21ldGhvZD1jaGFuZ2VXZWVrRGF0ZSZvYW5kRGV0YWlsc051bWJl
cj0iICsgT2FuZERldGFpbHNOdW1iZXIgKyAiJndlZWtTdGF0dXM9IiArIHdlZWtTdGF0dXMgKyAi
Jm9hbmREZXRhaWxzTGlzdFNpemU9IiArIG9hbmREZXRhaWxzTGlzdFNpemU7CiAgICBzaG93V2Fp
dEltYWdlKCk7CiAgICBhamF4V2l0aENhY2hlKG15VXJsLCAiZmFyZVNlbGVjdEZsaWdodExpc3Qi
KTsKfQpmdW5jdGlvbiBzaG93QWxsQW5kRGlzY291bnRlZEZsaWdodHMoc2hvd0ZsaWdodFR5cGUp
IHsKICAgIG15VXJsID0gInNob3dBbGxGbGlnaHRzLmRvP21ldGhvZD1zaG93QWxsRmxpZ2h0cyZh
Y3Rpb25Gb3I9IiArIHNob3dGbGlnaHRUeXBlOwogICAgc2hvd1dhaXRJbWFnZSgpOwogICAgYWph
eFdpdGhDYWNoZShteVVybCwgImZhcmVTZWxlY3RGbGlnaHRMaXN0Iik7Cn0KZnVuY3Rpb24gYWph
eFdpdGhDYWNoZShteXVybCwgZGl2KSB7CiAgICB2YXIgdGhldGltZSA9IG5ldyBEYXRlKCk7CiAg
ICB2YXIgZHVtbXkgPSAiIiArIHRoZXRpbWUuZ2V0SG91cnMoKSArIHRoZXRpbWUuZ2V0TWludXRl
cygpICsgdGhldGltZS5nZXRTZWNvbmRzKCk7CiAgICBteXVybCA9IG15dXJsICsgIiZkdW1teT0i
ICsgZHVtbXk7CiAgICBhamF4RGl2ID0gZGl2OwogICAgeG1saHR0cC5vcGVuKCJQT1NUIiwgbXl1
cmwsIHRydWUpOwogICAgeG1saHR0cC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBoYW5kbGVSZXNwb25z
ZVdpdGhDYWNoZTsKICAgIHhtbGh0dHAuc2VuZCgiIik7Cn0KZnVuY3Rpb24gaGFuZGxlUmVzcG9u
c2VXaXRoQ2FjaGUoKSB7CiAgICBTdHJpbmcucHJvdG90eXBlLnRyaW0gPSBmdW5jdGlvbiAoKSB7
CiAgICAgICAgcmV0dXJuIHRoaXMucmVwbGFjZSgvXlxzK3xccyskLywgIiIpOwogICAgfTsKICAg
IGlmICh4bWxodHRwLnJlYWR5U3RhdGUgPT0gNCkgewogICAgICAgIGlmICh4bWxodHRwLnN0YXR1
cyA9PSAyMDApIHsKICAgICAgICAgICAgaWYgKCh4bWxodHRwLnJlc3BvbnNlVGV4dCkudHJpbSgp
ID09ICJBamF4U2Vzc2lvblRpbWVPdXQiKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRp
b24gPSAiL2hvbWUuZG8/bWV0aG9kPXZpcmdpbkFtZXJpY2Emc2Vzc2lvblN0YXRlPXNlc3Npb25U
aW1lT3V0IjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICgoeG1saHR0
cC5yZXNwb25zZVRleHQuaW5kZXhPZigiZXNjLXNpZ24iKSA+PSAwIHx8IHhtbGh0dHAucmVzcG9u
c2VUZXh0LmluZGV4T2YoImVzY1NpZ25JbWciKSA+PSAwKSAmJiB4bWxodHRwLnJlc3BvbnNlVGV4
dC5pbmRleE9mKCJmc0Nhcm91c2VsQmdBY3RpdmVOb3RBdmFpbGFibGUiKSA8IDApIHsKICAgICAg
ICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXJyb3JEaXYiKS5pbm5lckhU
TUwgPSB4bWxodHRwLnJlc3BvbnNlVGV4dDsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibG9hZGluZ0FuaW1hdGlvbkRpdiIpLnN0eWxlLmRpc3BsYXkgPSAibm9u
ZSI7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKGFqYXhEaXYpLmlubmVySFRNTCA9IHhtbGh0dHAucmVzcG9uc2VUZXh0
OwogICAgICAgICAgICAgICAgICAgIHZhciBpID0gMDsKICAgICAgICAgICAgICAgICAgICB3aGls
ZSAoJCgoIiNhY3RpdmVDZWxsIiArIGkpKS5sZW5ndGggPiAwICYmICQoKCIjYWN0aXZlQ2VsbCIg
KyBpKSkudmFsKCkgIT0gIiIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQWN0aXZl
Q2VsbCgkKCgiI2FjdGl2ZUNlbGwiICsgaSkpLnZhbCgpLCAkKCgiI2FjdGl2ZUNlbGwiICsgaSkp
LnZhbCgpICsgInxSIiwgaSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhamF4KCJ1cGRh
dGVUaXRsZUJhci5kbz9tZXRob2Q9dXBkYXRlVGl0bGVCYXIiLCAidGl0bGVCYXJEaXYiKTsKICAg
ICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2FkaW5nQW5pbWF0aW9uRGl2
Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgic2hvd1dJRklEZXAiKSkgewogICAgICAgICAgICAgICAgICAgIGlmIChk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmxpZ2h0MCIpICYmIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJXaUZpSW1nMCIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgic2hvd1dJRklEZXAiKS52YWx1ZSA9PSAidHJ1ZSIpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICRnZXRfSnNFbGVtZW50KCJXaUZpSW1nMCIpLnNyYyA9ICJodHRw
czovL3N0YXRpYy52aXJnaW5hbWVyaWNhLmNvbS9pbWFnZXMvd2lmaV9yaWdodGJhcl8xMDI4MjAx
MGEuZ2lmIjsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICRnZXRfSnNFbGVtZW50KCJXaUZpSW1nMCIpLnNyYyA9ICJodHRwczovL3N0
YXRpYy52aXJnaW5hbWVyaWNhLmNvbS9pbWFnZXMvd2lmaV9yaWdodGJhci5naWYiOwogICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaG93V0lGSVJl
dCIpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJm
bGlnaHQxIikgJiYgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIldpRmlJbWcxIikpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaG93V0lGSVJl
dCIpLnZhbHVlID09ICJ0cnVlIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGdldF9K
c0VsZW1lbnQoIldpRmlJbWcxIikuc3JjID0gImh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2Eu
Y29tL2ltYWdlcy93aWZpX3JpZ2h0YmFyXzEwMjgyMDEwYS5naWYiOwogICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGdldF9Kc0VsZW1l
bnQoIldpRmlJbWcxIikuc3JjID0gImh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2lt
YWdlcy93aWZpX3JpZ2h0YmFyLmdpZiI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzZXRQb3Np
dGlvblRyYXZlbEV4cCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRvZ2dsZUZsaWdodHNJ
bmZvKGZsdHNJbmZvSWR4KTsKICAgICAgICAgICAgdG9nZ2xlQWN0aXZlQnV0dG9ucygoImJ1dHRv
biIgKyBmbHRzSW5mb0lkeCkpOwogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiBjaGFuZ2VGYXJl
Rm9ybWF0VHlwZShvYmopIHsKICAgIGRvY3VtZW50LmRpc3BsYXlQcmljaW5nRm9ybS5mYXJlVHlw
ZS52YWx1ZSA9IG9iai52YWx1ZTsKICAgIGRvY3VtZW50LmRpc3BsYXlQcmljaW5nRm9ybS5vYW5k
RGV0YWlsc051bWJlci52YWx1ZSA9IGZsdHNJbmZvSWR4OwogICAgZG9jdW1lbnQuZGlzcGxheVBy
aWNpbmdGb3JtLm1ldGhvZC52YWx1ZSA9ICJjaGFuZ2VGYXJlSW5Qb2ludHNEb2xsYXIiOwogICAg
ZG9jdW1lbnQuZGlzcGxheVByaWNpbmdGb3JtLmFjdGlvbiA9ICJjaGFuZ2VGYXJlSW5Qb2ludHNE
b2xsYXJBY3Rpb24uZG8iOwogICAgZG9jdW1lbnQuZGlzcGxheVByaWNpbmdGb3JtLnN1Ym1pdCgp
OwogICAgc2hvd1dhaXRJbWFnZSgpOwp9CmZ1bmN0aW9uIHN1Ym1pdFNlYXRGb3JtKG9iaikgewog
ICAgc2hvd1dhaXRJbWFnZSgpOwogICAgZG9jdW1lbnQuZGlzcGxheVByaWNpbmdGb3JtLm1ldGhv
ZC52YWx1ZSA9ICJzZWF0c2VsZWN0IjsKICAgIGRvY3VtZW50LmRpc3BsYXlQcmljaW5nRm9ybS5h
Y3Rpb24gPSBzZWF0QWN0aW9uVXJsOwogICAgZG9jdW1lbnQuZGlzcGxheVByaWNpbmdGb3JtLnN1
Ym1pdCgpOwp9CmZ1bmN0aW9uIHBhZ2VPdmVybGF5KGRpdklkLCB0aXRsZSwgcG9wdXBXaWR0aCwg
Y2xrT2JqLCBzaG93QnRuLCBsZnRNcmcsIHJndE1yZywgZGVjaXNpb24sIG9wZW5QYXJhbWV0ZXIs
IGZ1bmN0aW9uQ2FsbGVkKSB7CiAgICAkKCIjcG9wdXBPdmVybGF5TXNnQXJlYSIpLmh0bWwoJCgi
IyIgKyBkaXZJZCkuaHRtbCgpKTsKICAgICQoIiMiICsgZGl2SWQpLmh0bWwoIiIpOwogICAgdmFy
IHlTY3JvbGxPZmZzZXQgPSBmX3Njcm9sbFRvcCgpOwogICAgdmFyIHBhZ2VXaWR0aCA9IHhEb2NT
aXplKCkudzsKICAgIHZhciBwYWdlSGVpZ2h0ID0geERvY1NpemUoKS5oOwogICAgdmFyIHZIZWln
aHQgPSBnZXRWaWV3YWJsZUFyZWEoKTsKICAgIHZhciB4T2ZmU2V0ID0gcG9wdXBXaWR0aCAvIDI7
CiAgICB2YXIgeExvY2F0aW9uID0gKHBhZ2VXaWR0aCAvIDIpOwogICAgeExvY2F0aW9uID0geExv
Y2F0aW9uIC0geE9mZlNldDsKICAgIHZhciB5TG9jYXRpb24gPSAodkhlaWdodCAvIDIpOwogICAg
eUxvY2F0aW9uICs9IHlTY3JvbGxPZmZzZXQ7CiAgICBpZiAobmF2aWdhdG9yLmFwcE5hbWUuaW5k
ZXhPZigiTWljcm9zb2Z0IikgIT0gLTEpIHsKICAgICAgICBwYWdlSGVpZ2h0ICs9IDM0MDsKICAg
IH0KICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwb3B1cE92ZXJsYXlUaXRsZSIpLmlubmVy
SFRNTCA9IHRpdGxlOwogICAgdmFyIHBvcHVwRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJwb3B1cE92ZXJsYXlUYWJsZSIpOwogICAgdmFyIHBvcHVwRnJhbWUgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicG9wdXBPdmVybGF5RnJhbWUiKTsKICAgIHZhciBwb3B1cERpdiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJwb3B1cE92ZXJsYXlCZyIpOwogICAgcG9wdXBFbGVtZW50
LnN0eWxlLndpZHRoID0gZXZhbChwb3B1cFdpZHRoKTsKICAgIHBvcHVwRnJhbWUuc3R5bGUud2lk
dGggPSBldmFsKHBvcHVwV2lkdGgpOwogICAgcG9wdXBEaXYuc3R5bGUuaGVpZ2h0ID0gcGFnZUhl
aWdodDsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwb3B1cE92ZXJsYXlJZCIpLnN0eWxl
LmxlZnQgPSAiNTAlIjsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwb3B1cE92ZXJsYXlJ
ZCIpLnN0eWxlLnRvcCA9IHlMb2NhdGlvbjsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJw
b3B1cE92ZXJsYXlCZyIpLnN0eWxlLnRvcCA9IDA7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicG9wdXBPdmVybGF5QmciKS5zdHlsZS5oZWlnaHQgPSBwYWdlSGVpZ2h0ICsgMjAwICsgInB4
IjsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwb3B1cE92ZXJsYXlCZyIpLnN0eWxlLndp
ZHRoID0gcGFnZVdpZHRoICsgInB4IjsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwb3B1
cE92ZXJsYXlCZyIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgaWYgKG9wZW5QYXJhbWV0
ZXIgJiYgb3BlblBhcmFtZXRlciAhPSAiIikgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJwb3BVcE92ZXJsYXlPcGVuUGFyYW1ldGVyIikuaW5uZXJIVE1MID0gb3BlblBhcmFtZXRl
cjsKICAgIH0KfQpmdW5jdGlvbiBjaVRvZ2dsZUNoZWNrQm94ZXMoY21PYmplY3QsIGNtRm9ybUlk
LCBwYXhDb3VudCkgewogICAgdmFyIGNtU3RhdGUgPSBjbU9iamVjdC5zcmM7CiAgICB2YXIgY21B
cHBlbmQgPSAiIjsKICAgIHZhciBjbUZsaWdodElkID0gY21PYmplY3QuaWQuc3Vic3RyKDExLCAx
KTsKICAgIHZhciBjbUZsaWdodElkSW5kZXggPSBjbUZsaWdodElkIC0gMTsKICAgIHZhciBjbUZv
cm1UZW1wSWQgPSAiIjsKICAgIHZhciBjbUZvcm1UZW1wVmFsdWUgPSAiIjsKICAgIHZhciBhbGxG
bGlnaHRzUGFzc1NlbGVjdGVkID0gMDsKICAgIGlmIChjbU9iamVjdC5pZC5pbmRleE9mKCJfQWxs
IikgIT0gLTEpIHsKICAgICAgICBpZiAoY21TdGF0ZS5pbmRleE9mKCItb2ZmIikgPT0gLTEpIHsK
ICAgICAgICAgICAgY21PYmplY3Quc3JjID0gImh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2Eu
Y29tL2ltYWdlcy9pY29uLWNoZWNrYm94LW9mZi5wbmciOwogICAgICAgICAgICBjbUFwcGVuZCA9
ICItb2ZmIjsKICAgICAgICAgICAgY21Gb3JtVGVtcFZhbHVlID0gIm5hIjsKICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICBjbU9iamVjdC5zcmMgPSAiaHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1l
cmljYS5jb20vaW1hZ2VzL2ljb24tY2hlY2tib3gucG5nIjsKICAgICAgICAgICAgY21Gb3JtVGVt
cFZhbHVlID0gInNlbGVjdGVkIjsKICAgICAgICB9CiAgICAgICAgZm9yIChpID0gMDsgaSA8IHBh
eENvdW50OyBpKyspIHsKICAgICAgICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
aUNoZWNrQm94MCIgKyBjbUZsaWdodElkICsgIl8wIiArIGkpLnNyYy5pbmRleE9mKCJyZXN0cmlj
dGVkIikgPT0gLTEgJiYgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNpQ2hlY2tCb3gwIiArIGNt
RmxpZ2h0SWQgKyAiXzAiICsgaSkuc3JjLmluZGV4T2YoImNoZWNrZWRpbiIpID09IC0xICYmIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaUNoZWNrQm94MCIgKyBjbUZsaWdodElkICsgIl8wIiAr
IGkpLnNyYy5pbmRleE9mKCJ1bmF2YWlsYWJsZSIpID09IC0xKSB7CiAgICAgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2lDaGVja0JveDAiICsgY21GbGlnaHRJZCArICJfMCIg
KyBpKS5zcmMgPSAiaHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2VzL2ljb24t
Y2hlY2tib3giICsgY21BcHBlbmQgKyAiLnBuZyI7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZ3Vlc3QiICsgY21GbGlnaHRJZCArICJfIiArIGkpLnZhbHVlID0gY21G
b3JtVGVtcFZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAg
ICBpZiAoY21TdGF0ZS5pbmRleE9mKCItb2ZmIikgPT0gLTEpIHsKICAgICAgICAgICAgY21PYmpl
Y3Quc3JjID0gImh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy9pY29uLWNo
ZWNrYm94LW9mZi5wbmciOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjbUZv
cm1JZCkudmFsdWUgPSAibmEiOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y2lDaGVja0JveDAiICsgY21GbGlnaHRJZCArICJfQWxsIikuc3JjID0gImh0dHBzOi8vc3RhdGlj
LnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy9pY29uLWNoZWNrYm94LW9mZi5wbmciOwogICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgIGNtT2JqZWN0LnNyYyA9ICJodHRwczovL3N0YXRpYy52aXJn
aW5hbWVyaWNhLmNvbS9pbWFnZXMvaWNvbi1jaGVja2JveC5wbmciOwogICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChjbUZvcm1JZCkudmFsdWUgPSAic2VsZWN0ZWQiOwogICAgICAg
ICAgICBmb3IgKGkgPSAwOyBpIDwgcGF4Q291bnQ7IGkrKykgewogICAgICAgICAgICAgICAgaWYg
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaUNoZWNrQm94MCIgKyBjbUZsaWdodElkICsgIl8w
IiArIGkpLnNyYy5pbmRleE9mKCItb2ZmIikgIT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICBh
bGxGbGlnaHRzUGFzc1NlbGVjdGVkID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
fQogICAgICAgICAgICBpZiAoYWxsRmxpZ2h0c1Bhc3NTZWxlY3RlZCA9PSAwKSB7CiAgICAgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2lDaGVja0JveDAiICsgY21GbGlnaHRJ
ZCArICJfQWxsIikuc3JjID0gImh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdl
cy9pY29uLWNoZWNrYm94LnBuZyI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KZnVu
Y3Rpb24gY2lDb2xsYXBzZUV4cGFuZChkaXZJZCwgYnRuT2JqZWN0KSB7CiAgICB2YXIgZGl2T2Jq
ZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGl2SWQpOwogICAgaWYgKGRpdk9iamVjdC5z
dHlsZS5kaXNwbGF5ID09ICJub25lIikgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KGRpdklkKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICBidG5PYmplY3Quc3JjID0g
Imh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy9idG4tY2hlY2tpbi1jb2xs
YXBzZS5wbmciOwogICAgfSBlbHNlIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChk
aXZJZCkuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICBidG5PYmplY3Quc3JjID0gImh0
dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdlcy9idG4tY2hlY2tpbi1leHBhbmQu
cG5nIjsKICAgIH0KfQpmdW5jdGlvbiByZXNldENoZWNrQm94KGZsaWdodENvdW50LCBndWVzdENv
dW50KSB7CiAgICBmb3IgKGogPSAwOyBqIDwgZmxpZ2h0Q291bnQ7IGorKykgewogICAgICAgIGZv
ciAoaSA9IDA7IGkgPCBndWVzdENvdW50OyBpKyspIHsKICAgICAgICAgICAgaWYgKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjaUNoZWNrQm94MCIgKyBqICsgIl8wIiArIGkpKSB7CiAgICAgICAg
ICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNpQ2hlY2tCb3gwIiArIGogKyAi
XzAiICsgaSkuc3JjLmluZGV4T2YoIi1vZmYiKSAhPSAtMSB8fCBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY2lDaGVja0JveDAiICsgaiArICJfMCIgKyBpKS5zcmMuaW5kZXhPZigiLXJlc3RyaWN0
ZWQiKSAhPSAtMSkgewogICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY2lDaGVja0JveDAiICsgaiArICJfQWxsIikpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNpQ2hlY2tCb3gwIiArIGogKyAiX0FsbCIpLnNy
YyA9ICJodHRwczovL3N0YXRpYy52aXJnaW5hbWVyaWNhLmNvbS9pbWFnZXMvaWNvbi1jaGVja2Jv
eC1vZmYucG5nIjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KZnVu
Y3Rpb24gcHJpbnRCb2FyZGluZ1Bhc3MoZ3Vlc3RJRCwgZmxpZ2h0SUQsIHNob3dDbHViSG91c2Up
IHsKICAgIHZhciBvc2RldGVjdCA9IE9TRGV0ZWN0Lk9TOwogICAgdmFyIGJyb3dzZXJkZXRlY3Qg
PSBPU0RldGVjdC5icm93c2VyOwogICAgdmFyIHVybCA9ICJwcmludEJvYXJkaW5nUGFzcy5kbz9t
ZXRob2Q9cHJpbnRCb2FyZGluZ1Bhc3MmZ3Vlc3RJRD0iICsgZ3Vlc3RJRCArICImZmxpZ2h0SUQ9
IiArIGZsaWdodElEICsgIiZPU0RldGVjdD0iICsgb3NkZXRlY3QgKyAiJmJyb3dzZXJkZXRlY3Q9
IiArIGJyb3dzZXJkZXRlY3QgKyAiJnNob3dDbHViSG91c2U9IiArIHNob3dDbHViSG91c2U7CiAg
ICBteXdpbmRvd0Zvckh0bWwgPSB3aW5kb3cub3BlbigiL2h0bWwvVmlyZ2luX0FtZXJpY2FfQm9h
cmRpbmdfUGFzcy5odG1sIiwgIkJvYXJkaW5nUGFzcyIsICJ0b29sYmFyPW5vLGxvY2F0aW9uPW5v
LGRpcmVjdG9yaWVzPW5vLG1lbnViYXI9eWVzLHNjcm9sbGJhcnM9eWVzLHRvcD0iICsgMTAgKyAi
LGxlZnQ9IiArIDE4MCArICIsd2lkdGg9IiArIDg0NSArICIsaGVpZ2h0PSIgKyA3MDApOwogICAg
YWpheFRvR2VuZXJhdGVQZGZIVE1MKHVybCk7Cn0KZnVuY3Rpb24gY2hhbmdlVGFiKGZsaWdodElE
KSB7CiAgICBkb2N1bWVudC5jaGVja0luRGV0YWlsRm9ybS5tZXRob2QudmFsdWUgPSAiY2hhbmdl
VGFiIjsKICAgIGRvY3VtZW50LmNoZWNrSW5EZXRhaWxGb3JtLmluZGV4SUQudmFsdWUgPSBmbGln
aHRJRDsKICAgIGRvY3VtZW50LmNoZWNrSW5EZXRhaWxGb3JtLnN1Ym1pdCgpOwp9CmZ1bmN0aW9u
IHN1Ym1pdENoZWNrSW5Gb3JtKG1ldGhvZE5hbWUsIGZsaWdodElELCBhY3Rpb25OYW1lLCBndWVz
dElELCBmbGlnaHROYW1lKSB7CiAgICBkb2N1bWVudC5jaGVja0luRGV0YWlsRm9ybS5tZXRob2Qu
dmFsdWUgPSBtZXRob2ROYW1lOwogICAgaWYgKGZsaWdodElEICYmIGZsaWdodElEICE9ICIiKSB7
CiAgICAgICAgZG9jdW1lbnQuY2hlY2tJbkRldGFpbEZvcm0uaW5kZXhJRC52YWx1ZSA9IGZsaWdo
dElEOwogICAgfQogICAgaWYgKGFjdGlvbk5hbWUpIHsKICAgICAgICBpZiAoYWN0aW9uTmFtZSAh
PSAiIikgewogICAgICAgICAgICBkb2N1bWVudC5jaGVja0luRGV0YWlsRm9ybS5hY3Rpb24gPSBh
Y3Rpb25OYW1lICsgIi5kbyI7CiAgICAgICAgfQogICAgfQogICAgaWYgKGd1ZXN0SUQpIHsKICAg
ICAgICBpZiAoZ3Vlc3RJRCAhPSAiIikgewogICAgICAgICAgICBkb2N1bWVudC5jaGVja0luRGV0
YWlsRm9ybS5lbGVtZW50c1siY2hlY2tJbkd1ZXN0RGV0YWlscy5ndWVzdElEIl0udmFsdWUgPSBn
dWVzdElEOwogICAgICAgIH0KICAgIH0KICAgIGlmIChmbGlnaHROYW1lKSB7CiAgICAgICAgaWYg
KGZsaWdodE5hbWUgIT0gIiIpIHsKICAgICAgICAgICAgZG9jdW1lbnQuY2hlY2tJbkRldGFpbEZv
cm0uZWxlbWVudHNbImNoZWNrSW5HdWVzdERldGFpbHMuZmxpZ2h0TmFtZSJdLnZhbHVlID0gZmxp
Z2h0TmFtZTsKICAgICAgICB9CiAgICB9CiAgICBkb2N1bWVudC5jaGVja0luRGV0YWlsRm9ybS5z
dWJtaXQoKTsKfQpmdW5jdGlvbiB1cGRhdGVDaGVja0luVGl0bGVCYXIoKSB7CiAgICB2YXIgeG1s
SHR0cCA9IG51bGw7CiAgICB4bWxIdHRwID0gJC5wb3N0KCJjaGVja0luUHJvZ3Jlc3NCYXIuanNw
IiwgIiIsIHVwZGF0ZVRpdGxlLCAiaHRtbCIpOwoKICAgIGZ1bmN0aW9uIHVwZGF0ZVRpdGxlKCkg
ewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwb3N0VGl0bGVCYXJEaXYiKS5pbm5l
ckhUTUwgPSB4bWxIdHRwLnJlc3BvbnNlVGV4dDsKICAgICAgICBjbG9zZVdhaXRJbWFnZSgpOwog
ICAgfQp9CmZ1bmN0aW9uIHN1Ym1pdENoZWNrSW5SZXZpZXcoKSB7CiAgICBpZiAoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRyYW5zYWN0aW9uSW1hZ2UiKSkgewogICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0cmFuc2FjdGlvbkltYWdlIikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7
CiAgICB9CiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInB1cmNoYXNlQnV0dG9uIikp
IHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHVyY2hhc2VCdXR0b24iKS5pbm5l
ckhUTUwgPSAnPGltZyBzcmM9Imh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2EuY29tL2ltYWdl
cy9idG4tcHVyY2hhc2UucG5nIiA+JzsKICAgIH0KICAgIGRvY3VtZW50LmNoZWNrSW5EZXRhaWxG
b3JtLnN1Ym1pdCgpOwp9CmZ1bmN0aW9uIGNhbGN1bGF0ZUJhZ0Ftb3VudChmbGlnaHRJRCwgbnVt
T2ZHdWVzdCkgewogICAgc2hvd1dhaXRJbWFnZSgpOwogICAgZG9jdW1lbnQuY2hlY2tJbkRldGFp
bEZvcm0uaW5kZXhJRC52YWx1ZSA9IGZsaWdodElEOwogICAgdmFyIHBhcm1zID0gIiI7CiAgICB2
YXIgVVJMID0gImNoZWNrSW5BZGRCYWdzLmRvP21ldGhvZD1jYWxjdWxhdGVCYWdBbW91bnQiOwog
ICAgaWYgKGRvY3VtZW50LmNoZWNrSW5EZXRhaWxGb3JtKSB7CiAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBkb2N1bWVudC5jaGVja0luRGV0YWlsRm9ybS5lbGVtZW50cy5sZW5ndGg7IGkrKykg
ewogICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNoZWNrSW5EZXRhaWxGb3JtLmVs
ZW1lbnRzW2ldOwogICAgICAgICAgICBpZiAoaSA9PSAwKSB7CiAgICAgICAgICAgICAgICBwYXJt
cyA9IHBhcm1zICsgZWxlbWVudC5uYW1lICsgIj0iICsgZWxlbWVudC52YWx1ZTsKICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHBhcm1zID0gcGFybXMgKyAiJiIgKyBlbGVtZW50
Lm5hbWUgKyAiPSIgKyBlbGVtZW50LnZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAg
fQogICAgdmFyIHJlc3BZdHMgPSAkLnBvc3QoVVJMLCBwYXJtcywgZG9uZSwgImh0bWwiKTsKCiAg
ICBmdW5jdGlvbiBkb25lKCkgewogICAgICAgIGlmICgocmVzcFl0cy5yZXNwb25zZVRleHQpLmlu
ZGV4T2YoImVycm9ybWVzc2FnZV9ob2xkIikgPT0gLTEpIHsKICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImFyZWFZVFMiKS5pbm5lckhUTUwgPSByZXNwWXRzLnJlc3BvbnNlVGV4
dDsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVycm9yRGl2Iikuc3R5bGUu
ZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkdv
T25CdXR0b24iKS5pbm5lckhUTUwgPSAnPGltZyBzcmM9Imh0dHBzOi8vc3RhdGljLnZpcmdpbmFt
ZXJpY2EuY29tL2ltYWdlcy9idG4tZ28tb24uZ2lmIiBhbHQ9IkdvIE9uIiBhbHQ9IkdvIE9uIiBv
bm1vdXNlb3Zlcj0iTWFrZUN1cnNvcih0aGlzKTtpbWdSb2xsT3Zlcih0aGlzKTsiIG9ubW91c2Vv
dXQ9ImltZ1JvbGxPdXQodGhpcyk7IiBvbmNsaWNrPSJqYXZhc2NyaXB0OmRvY3VtZW50LmNoZWNr
SW5EZXRhaWxGb3JtLnN1Ym1pdCgpO3Nob3dXYWl0SW1hZ2UoKTsiPic7CiAgICAgICAgICAgIHVw
ZGF0ZUNoZWNrSW5UaXRsZUJhcigpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJlcnJvckRpdiIpLmlubmVySFRNTCA9IHJlc3BZdHMucmVzcG9u
c2VUZXh0OwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXJyb3JEaXYiKS5z
dHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIDAp
OwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiR29PbkJ1dHRvbiIpLmlubmVy
SFRNTCA9ICc8aW1nIHNyYz0iaHR0cHM6Ly9zdGF0aWMudmlyZ2luYW1lcmljYS5jb20vaW1hZ2Vz
L2J0bi1nby1vbi5naWYiIGFsdD0iR28gT24iIGFsdD0iR28gT24iID4nOwogICAgICAgICAgICBj
bG9zZVdhaXRJbWFnZSgpOwogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiBuZXh0UGFnZUNoZWNr
aW4oYWN0aW9uTmFtZSwgbWV0aG9kTmFtZSkgewogICAgc2hvd1dhaXRJbWFnZSgpOwogICAgdmFy
IHNlYXRzRm9yQXNlZ21lbnQgPSAiIjsKICAgIHZhciBzZWxlY3RlZFNlYXROYW1lVHlwZXMgPSAi
IjsKICAgIGZvciAoaiA9IDA7IGogPCBwYXhDb3VudDsgaisrKSB7CiAgICAgICAgdmFyIHNlYXQg
PSBhR3Vlc3RTZWF0c1tqXVthY3RpdmVTZWdtZW50SW5kZXhdOwogICAgICAgIHZhciBzZWF0VHlw
ZSA9IGFTZWF0VHlwZVtqXVthY3RpdmVTZWdtZW50SW5kZXhdOwogICAgICAgIGlmIChzZWF0c0Zv
ckFzZWdtZW50ID09ICIiIHx8IHNlYXRzRm9yQXNlZ21lbnQgPT0gbnVsbCkgewogICAgICAgICAg
ICBzZWF0c0ZvckFzZWdtZW50ID0gc2VhdDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBz
ZWF0c0ZvckFzZWdtZW50ID0gc2VhdHNGb3JBc2VnbWVudCArICIsIiArIHNlYXQ7CiAgICAgICAg
fQogICAgICAgIGlmIChzZWxlY3RlZFNlYXROYW1lVHlwZXMgPT0gIiIgfHwgc2VsZWN0ZWRTZWF0
TmFtZVR5cGVzID09IG51bGwpIHsKICAgICAgICAgICAgc2VsZWN0ZWRTZWF0TmFtZVR5cGVzID0g
c2VhdFR5cGU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgc2VsZWN0ZWRTZWF0TmFtZVR5
cGVzID0gc2VsZWN0ZWRTZWF0TmFtZVR5cGVzICsgIiwiICsgc2VhdFR5cGU7CiAgICAgICAgfQog
ICAgfQogICAgZG9jdW1lbnQuc2VhdE1hcEZvcm0uc2VsZWN0ZWRTZWF0c0ZvclNlZ21lbnQudmFs
dWUgPSBzZWF0c0ZvckFzZWdtZW50OwogICAgZG9jdW1lbnQuc2VhdE1hcEZvcm0uc2VsZWN0ZWRT
ZWF0TmFtZVR5cGVzLnZhbHVlID0gc2VsZWN0ZWRTZWF0TmFtZVR5cGVzOwogICAgZG9jdW1lbnQu
c2VhdE1hcEZvcm0ubWV0aG9kLnZhbHVlID0gbWV0aG9kTmFtZTsKICAgIGRvY3VtZW50LnNlYXRN
YXBGb3JtLmFjdGlvbiA9IGFjdGlvbk5hbWUgKyAiLmRvIjsKICAgIGRvY3VtZW50LnNlYXRNYXBG
b3JtLnN1Ym1pdCgpOwp9CmZ1bmN0aW9uIHByb2dyZXNzQmFyKHNlbGVjdGVkTGluaykgewogICAg
ZG9jdW1lbnQucHJvZ3Jlc3NCYXJGb3JtLmFjdGlvbiA9ICJjaGVja0luUHJvY2Vzcy5kbyI7CiAg
ICBpZiAoc2VsZWN0ZWRMaW5rID09ICJDaGVja0luUGF5bWVudCIgfHwgc2VsZWN0ZWRMaW5rID09
ICJDaGVja0luUmV2aWV3IikgewogICAgICAgIGRvY3VtZW50LnByb2dyZXNzQmFyRm9ybS5hY3Rp
b24gPSAiY2hlY2tJblByb2Nlc3NTZWN1cmUuZG8iOwogICAgfQogICAgZG9jdW1lbnQucHJvZ3Jl
c3NCYXJGb3JtLm1ldGhvZC52YWx1ZSA9ICJjaGVja0luUHJvY2VzcyI7CiAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgic2VsZWN0ZWRMaW5rIikudmFsdWUgPSBzZWxlY3RlZExpbms7CiAgICBz
aG93V2FpdEltYWdlKCk7CiAgICBkb2N1bWVudC5wcm9ncmVzc0JhckZvcm0uc3VibWl0KCk7Cn0K
ZnVuY3Rpb24gY2xlYXJUZXh0KG9iaiwgdGV4dFZhbHVlKSB7CiAgICBpZiAodGV4dFZhbHVlKSB7
CiAgICAgICAgaWYgKG9iai52YWx1ZSA9PSB0ZXh0VmFsdWUpIHsKICAgICAgICAgICAgb2JqLnZh
bHVlID0gIiI7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICBpZiAob2JqLnZhbHVlID09
ICJFbWFpbCwgQWxpYXMgb3IgRWxldmF0ZSMiKSB7CiAgICAgICAgICAgIG9iai52YWx1ZSA9ICIi
OwogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiBjaGFuZ2VUZXh0KHZhbHVlLCBhcmVhSWQpIHsK
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFyZWFJZCkuaW5uZXJIVE1MID0gdmFsdWU7Cn0K
ZnVuY3Rpb24gc2hvd1RleHQoZmllbGRPYmosIHRleHQpIHsKICAgIGlmICgoZmllbGRPYmoudmFs
dWUpLnRyaW0oKSA9PSAiIikgewogICAgICAgIGZpZWxkT2JqLnZhbHVlID0gdGV4dDsKICAgIH0K
fQpmdW5jdGlvbiBzZXRUZXh0KG9iaiwgdGV4dFZhbHVlKSB7CiAgICBpZiAob2JqLnZhbHVlID09
ICIiKSB7CiAgICAgICAgb2JqLnZhbHVlID0gdGV4dFZhbHVlOwogICAgfQp9CmZ1bmN0aW9uIGlu
Y3JlYXNlRXJyb3JDb3VudChlcnJvclR5cGUsIGZvcm0pIHsKICAgIHZhciBjb3VudCA9IDA7CiAg
ICBpZiAoZm9ybSkgewogICAgICAgIGlmIChlcnJvclR5cGUgPT0gInByb21vQ29kZSIpIHsKICAg
ICAgICAgICAgY291bnQgPSBmb3JtLnByb21vX2NvZGVfZXJyb3IudmFsdWU7CiAgICAgICAgICAg
IGNvdW50Kys7CiAgICAgICAgICAgIGZvcm0ucHJvbW9fY29kZV9lcnJvci52YWx1ZSA9IGNvdW50
OwogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiBzdWJtaXRVcHNlbGxPcHRpb25zKG1ldGhvZE5h
bWUsIGZvcm0sIHZhbHVlLCBhY3Rpb24pIHsKICAgIHNob3dXYWl0SW1hZ2UoKTsKICAgIGZvcm0u
bWV0aG9kLnZhbHVlID0gbWV0aG9kTmFtZTsKICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSAhPSAiIikg
ewogICAgICAgIHZhciBuZXdPYmplY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIp
OwogICAgICAgIG5ld09iamVjdC5uYW1lID0gdmFsdWU7CiAgICAgICAgbmV3T2JqZWN0LnR5cGUg
PSAiaGlkZGVuIjsKICAgICAgICBuZXdPYmplY3QudmFsdWUgPSAib24iOwogICAgICAgIGZvcm0u
YXBwZW5kQ2hpbGQobmV3T2JqZWN0KTsKICAgIH0KICAgIGlmIChhY3Rpb24gJiYgYWN0aW9uICE9
ICIiKSB7CiAgICAgICAgZm9ybS5hY3Rpb24gPSBhY3Rpb24gKyAiLmRvIjsKICAgIH0KICAgIGZv
cm0uc3VibWl0KCk7Cn0KZnVuY3Rpb24gc3VibWl0RnJvbVJldmlldyhmb3JtKSB7CiAgICBpZiAo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRyYW5zYWN0aW9uSW1hZ2UiKSkgewogICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0cmFuc2FjdGlvbkltYWdlIikuc3R5bGUuZGlzcGxheSA9
ICJibG9jayI7CiAgICB9CiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInB1cmNoYXNl
QnV0dG9uIikpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHVyY2hhc2VCdXR0
b24iKS5pbm5lckhUTUwgPSAnPGltZyBzcmM9Imh0dHBzOi8vc3RhdGljLnZpcmdpbmFtZXJpY2Eu
Y29tL2ltYWdlcy9idG4tcHVyY2hhc2UucG5nIiA+JzsKICAgIH0KICAgIGZvcm0uc3VibWl0KCk7
Cn0KZnVuY3Rpb24gcHJvZ3Jlc3NCYXJVcFNlbGwoc2VsZWN0ZWRMaW5rKSB7CiAgICBkb2N1bWVu
dC5wcm9ncmVzc0JhckZvcm0uYWN0aW9uID0gInVwU2VsbFByb2Nlc3MuZG8iOwogICAgaWYgKHNl
bGVjdGVkTGluayA9PSAiVVBTZWxsUGF5bWVudCIgfHwgc2VsZWN0ZWRMaW5rID09ICJVUFNlbGxS
ZXZpZXciKSB7CiAgICAgICAgZG9jdW1lbnQucHJvZ3Jlc3NCYXJGb3JtLmFjdGlvbiA9ICJ1cFNl
bGxQcm9jZXNzU2VjdXJlLmRvIjsKICAgIH0KICAgIGRvY3VtZW50LnByb2dyZXNzQmFyRm9ybS5t
ZXRob2QudmFsdWUgPSAidXBTZWxsUHJvY2Vzc0JhciI7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgic2VsZWN0ZWRMaW5rIikudmFsdWUgPSBzZWxlY3RlZExpbms7CiAgICBzaG93V2FpdElt
YWdlKCk7CiAgICBkb2N1bWVudC5wcm9ncmVzc0JhckZvcm0uc3VibWl0KCk7Cn0KZnVuY3Rpb24g
cHJpbnRDbHViSG91c2VQYXNzKCkgewogICAgdmFyIG9zZGV0ZWN0ID0gT1NEZXRlY3QuT1M7CiAg
ICB2YXIgYnJvd3NlcmRldGVjdCA9IE9TRGV0ZWN0LmJyb3dzZXI7CiAgICB2YXIgdXJsID0gInBy
aW50Q2x1YkhvdXNlUGFzcy5kbz9tZXRob2Q9Z2V0Q2x1YkhvdXNlUGFzcyZPU0RldGVjdD0iICsg
b3NkZXRlY3QgKyAiJmJyb3dzZXJkZXRlY3Q9IiArIGJyb3dzZXJkZXRlY3Q7CiAgICBteXdpbmRv
d0Zvckh0bWwgPSB3aW5kb3cub3BlbigiL2h0bWwvVmlyZ2luX0FtZXJpY2FfQm9hcmRpbmdfUGFz
cy5odG1sIiwgIkJvYXJkaW5nUGFzcyIsICJ0b29sYmFyPW5vLGxvY2F0aW9uPW5vLGRpcmVjdG9y
aWVzPW5vLG1lbnViYXI9eWVzLHNjcm9sbGJhcnM9eWVzLHRvcD0iICsgMTAgKyAiLGxlZnQ9IiAr
IDE4MCArICIsd2lkdGg9IiArIDg0NSArICIsaGVpZ2h0PSIgKyA3MDApOwogICAgYWpheFRvR2Vu
ZXJhdGVQZGZIVE1MKHVybCk7Cn0KZnVuY3Rpb24gY2hhbmdlSW5wdXRUeXBlKG9sZE9iamVjdCwg
b1R5cGUsIGV4ZWN1dGVPbmNlLCBzZXRUZXh0KSB7CiAgICB2YXIgbmV3T2JqZWN0ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgIG5ld09iamVjdC50eXBlID0gb1R5cGU7CiAg
ICBpZiAob2xkT2JqZWN0LnZhbHVlICYmIG9sZE9iamVjdC50eXBlID09IG9UeXBlKSB7CiAgICAg
ICAgbmV3T2JqZWN0LnZhbHVlID0gb2xkT2JqZWN0LnZhbHVlOwogICAgfQogICAgaWYgKHNldFRl
eHQpIHsKICAgICAgICBuZXdPYmplY3QudmFsdWUgPSBzZXRUZXh0OwogICAgfQogICAgaWYgKG9s
ZE9iamVjdC5uYW1lKSB7CiAgICAgICAgbmV3T2JqZWN0Lm5hbWUgPSBvbGRPYmplY3QubmFtZTsK
ICAgIH0KICAgIGlmIChvbGRPYmplY3QuaWQpIHsKICAgICAgICBuZXdPYmplY3QuaWQgPSBvbGRP
YmplY3QuaWQ7CiAgICB9CiAgICBpZiAob2xkT2JqZWN0LmNsYXNzTmFtZSkgewogICAgICAgIG5l
d09iamVjdC5jbGFzc05hbWUgPSBvbGRPYmplY3QuY2xhc3NOYW1lOwogICAgfQogICAgaWYgKG9s
ZE9iamVjdC5zaXplKSB7CiAgICAgICAgbmV3T2JqZWN0LnNpemUgPSBvbGRPYmplY3Quc2l6ZTsK
ICAgIH0KICAgIG5ld09iamVjdC5vbmJsdXIgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKG5l
d09iamVjdC52YWx1ZSA9PSAiIikgewogICAgICAgICAgICBjaGFuZ2VJbnB1dFR5cGUobmV3T2Jq
ZWN0LCAidGV4dCIsIHRydWUsICJQYXNzd29yZCIpOwogICAgICAgIH0KICAgIH07CiAgICBuZXdP
YmplY3Qub25mb2N1cyA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBpZiAobmV3T2JqZWN0LnR5cGUg
PT0gInRleHQiKSB7CiAgICAgICAgICAgIGNoYW5nZUlucHV0VHlwZShuZXdPYmplY3QsICJwYXNz
d29yZCIsIGZhbHNlKTsKICAgICAgICB9CiAgICB9OwogICAgbmV3T2JqZWN0Lm9ua2V5cHJlc3Mg
PSBvbGRPYmplY3Qub25rZXlwcmVzczsKICAgIG5ld09iamVjdC5vbmNoYW5nZSA9IGZ1bmN0aW9u
ICgpIHsKICAgICAgICBpZiAoZG9jdW1lbnQuc2lnbkluRm9ybSkgewogICAgICAgICAgICBkb2N1
bWVudC5zaWduSW5Gb3JtLnBhc3N3b3JkLnZhbHVlID0gbmV3T2JqZWN0LnZhbHVlOwogICAgICAg
IH0KICAgIH07CiAgICBvbGRPYmplY3QucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3T2JqZWN0
LCBvbGRPYmplY3QpOwogICAgaWYgKCFleGVjdXRlT25jZSkgewogICAgICAgIG5ld09iamVjdC5m
b2N1cygpOwogICAgICAgIG5ld09iamVjdC5zZWxlY3QoKTsKICAgIH0KICAgIHJldHVybiBuZXdP
YmplY3Q7Cn0KZnVuY3Rpb24gc3VibWl0UHJlZmVyZW5jZXMoKSB7CiAgICBzaG93V2FpdEltYWdl
KCk7CiAgICB2YXIgdXNlck9wdGlvbnMgPSAiIjsKICAgIGZvciAob3B0Q250ID0gMDsgb3B0Q250
IDwgZG9jdW1lbnQuZW1haWxQcmVmZXJlbmNlc0Zvcm0ucHJlZmVyZW5jZS5sZW5ndGg7IG9wdENu
dCsrKSB7CiAgICAgICAgb3B0T2JqZWN0ID0gZG9jdW1lbnQuZW1haWxQcmVmZXJlbmNlc0Zvcm0u
cHJlZmVyZW5jZVtvcHRDbnRdOwogICAgICAgIHVzZXJPcHRpb25zID0gdXNlck9wdGlvbnMgKyBv
cHRPYmplY3QudmFsdWUgKyAiLSIgKyBvcHRPYmplY3QuY2hlY2tlZCArICIsIjsKICAgIH0KICAg
IGRvY3VtZW50LmVtYWlsUHJlZmVyZW5jZXNGb3JtLnByZWZlcmVuY2VzLnZhbHVlID0gdXNlck9w
dGlvbnM7CiAgICBkb2N1bWVudC5lbWFpbFByZWZlcmVuY2VzRm9ybS5zdWJtaXQoKTsKfQpmdW5j
dGlvbiBtYWtlU3Vic2NyaXB0aW9uKCkgewogICAgbXl1cmwgPSAiZW1haWwtcHJlZmVyZW5jZS1v
cHRpb25zLmRvPyI7CiAgICBmb3IgKG9wdENudCA9IDA7IG9wdENudCA8IGRvY3VtZW50LmVtYWls
UHJlZmVyZW5jZXNGb3JtLmVsZW1lbnRzLmxlbmd0aDsgb3B0Q250KyspIHsKICAgICAgICBvcHRP
YmplY3QgPSBkb2N1bWVudC5lbWFpbFByZWZlcmVuY2VzRm9ybS5lbGVtZW50c1tvcHRDbnRdOwog
ICAgICAgIG15dXJsID0gbXl1cmwgKyBvcHRPYmplY3QubmFtZSArICI9IiArIG9wdE9iamVjdC52
YWx1ZSArICImIjsKICAgIH0KICAgICQoIiNDb250YWluZXJEZWFsc0FuZE9mZmVyIikubG9hZCht
eXVybCwgIiIsIGRvbmUpOwoKICAgIGZ1bmN0aW9uIGRvbmUoKSB7CiAgICAgICAgY2xvc2VXYWl0
SW1hZ2UoKTsKICAgIH0KfQpmdW5jdGlvbiBzZXRBZHVsdEFuZEluZmFudHModHJpcFR5cGUsIHBh
eENvdW50LCBmaWVsZElkKSB7CiAgICB2YXIgYWR1bHRzID0gbmV3IEFycmF5KCk7CiAgICB2YXIg
aW5mYW50cyA9IG5ldyBBcnJheSgpOwogICAgdmFyIGNoaWxkcmVuID0gbmV3IEFycmF5KCk7CiAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKICAgICAgICBpbmZhbnRzW2ldID0gbmV3
IEFycmF5KCk7CiAgICAgICAgaW5mYW50c1tpXVswXSA9IGk7CiAgICAgICAgaW5mYW50c1tpXVsx
XSA9IGk7CiAgICB9CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDk7IGkrKykgewogICAgICAgIGNo
aWxkcmVuW2ldID0gbmV3IEFycmF5KCk7CiAgICAgICAgY2hpbGRyZW5baV1bMF0gPSBpOwogICAg
ICAgIGNoaWxkcmVuW2ldWzFdID0gaTsKICAgIH0KICAgIGZvciAodmFyIGkgPSAwOyBpIDwgOTsg
aSsrKSB7CiAgICAgICAgYWR1bHRzW2ldID0gbmV3IEFycmF5KCk7CiAgICAgICAgYWR1bHRzW2ld
WzBdID0gaSArIDE7CiAgICAgICAgYWR1bHRzW2ldWzFdID0gaSArIDE7CiAgICB9CiAgICB2YXIg
dGhpc0luZGV4ID0gMDsKICAgIHZhciB0aGlzRWxlbWVudElkQXBwZW5kID0gIiI7CiAgICBpZiAo
dHJpcFR5cGUgPT0gIm1jIikgewogICAgICAgIHRoaXNFbGVtZW50SWRBcHBlbmQgPSAiTUMiOwog
ICAgfSBlbHNlIHsKICAgICAgICBpZiAodHJpcFR5cGUgPT0gIm93IikgewogICAgICAgICAgICB0
aGlzRWxlbWVudElkQXBwZW5kID0gIk9XIjsKICAgICAgICB9CiAgICB9CiAgICB2YXIgY3VycmVu
dEFkdWx0Q291bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWR1bHRzIiArIHRoaXNFbGVt
ZW50SWRBcHBlbmQpLnZhbHVlOwogICAgdmFyIGN1cnJlbnRLaWRzQ291bnQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgia2lkcyIgKyB0aGlzRWxlbWVudElkQXBwZW5kKS52YWx1ZTsKICAgIHZh
ciBjdXJyZW50SW5mYW50Q291bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5mYW50cyIg
KyB0aGlzRWxlbWVudElkQXBwZW5kKS52YWx1ZTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJhZHVsdHMiICsgdGhpc0VsZW1lbnRJZEFwcGVuZCkub3B0aW9ucy5sZW5ndGggPSAwOwogICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImtpZHMiICsgdGhpc0VsZW1lbnRJZEFwcGVuZCkub3B0
aW9ucy5sZW5ndGggPSAwOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImluZmFudHMiICsg
dGhpc0VsZW1lbnRJZEFwcGVuZCkub3B0aW9ucy5sZW5ndGggPSAwOwogICAgdmFyIHBheENlaWxp
bmdBZHVsdHMgPSA5IC0gY3VycmVudEtpZHNDb3VudDsKICAgIHZhciBwYXhDZWlsaW5nS2lkcyA9
IDEwIC0gY3VycmVudEFkdWx0Q291bnQ7CiAgICB2YXIgcGF4Q2VpbGluZ0luZmFudHMgPSBwYXJz
ZUludChjdXJyZW50QWR1bHRDb3VudCkgKyAxOwogICAgZm9yICh2YXIgaiA9IDA7IGogPCBwYXhD
ZWlsaW5nQWR1bHRzOyBqKyspIHsKICAgICAgICBpZiAoaXNGRiA9PSAxIHx8IGlzTWFjRkYgPT0g
MSkgewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWR1bHRzIiArIHRoaXNF
bGVtZW50SWRBcHBlbmQpLmFkZChuZXcgT3B0aW9uKGFkdWx0c1tqXVswXSwgYWR1bHRzW2pdWzFd
KSwgbnVsbCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImFkdWx0cyIgKyB0aGlzRWxlbWVudElkQXBwZW5kKS5hZGQobmV3IE9wdGlvbihhZHVs
dHNbal1bMF0sIGFkdWx0c1tqXVsxXSkpOwogICAgICAgIH0KICAgIH0KICAgIGZvciAodmFyIGog
PSAwOyBqIDwgcGF4Q2VpbGluZ0tpZHM7IGorKykgewogICAgICAgIGlmIChpc0ZGID09IDEgfHwg
aXNNYWNGRiA9PSAxKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJraWRz
IiArIHRoaXNFbGVtZW50SWRBcHBlbmQpLmFkZChuZXcgT3B0aW9uKGNoaWxkcmVuW2pdWzBdLCBj
aGlsZHJlbltqXVsxXSksIG51bGwpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJraWRzIiArIHRoaXNFbGVtZW50SWRBcHBlbmQpLmFkZChuZXcg
T3B0aW9uKGNoaWxkcmVuW2pdWzBdLCBjaGlsZHJlbltqXVsxXSkpOwogICAgICAgIH0KICAgIH0K
ICAgIGZvciAodmFyIGogPSAwOyBqIDwgcGF4Q2VpbGluZ0luZmFudHM7IGorKykgewogICAgICAg
IGlmIChpc0ZGID09IDEgfHwgaXNNYWNGRiA9PSAxKSB7CiAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJpbmZhbnRzIiArIHRoaXNFbGVtZW50SWRBcHBlbmQpLmFkZChuZXcgT3B0
aW9uKGluZmFudHNbal1bMF0sIGluZmFudHNbal1bMV0pLCBudWxsKTsKICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5mYW50cyIgKyB0aGlzRWxl
bWVudElkQXBwZW5kKS5hZGQobmV3IE9wdGlvbihpbmZhbnRzW2pdWzBdLCBpbmZhbnRzW2pdWzFd
KSk7CiAgICAgICAgfQogICAgfQogICAgaWYgKGN1cnJlbnRJbmZhbnRDb3VudCA+IGN1cnJlbnRB
ZHVsdENvdW50KSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImluZmFudHMiICsg
dGhpc0VsZW1lbnRJZEFwcGVuZCkub3B0aW9uc1tjdXJyZW50QWR1bHRDb3VudF0uc2VsZWN0ZWQg
PSAic2VsZWN0ZWQiOwogICAgICAgIGlmIChpc1BDSUU2ID09IDEpIHsKICAgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImluZmFudHMiICsgdGhpc0VsZW1lbnRJZEFwcGVuZCkub3B0
aW9uc1tjdXJyZW50QWR1bHRDb3VudF0uc2VsZWN0ZWQgPSB0cnVlOwogICAgICAgIH0KICAgIH0K
ICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5mYW50c01DIikpIHsKICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5mYW50c01DIikudmFsdWUgPSBjdXJyZW50SW5mYW50
Q291bnQ7CiAgICB9CiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImluZmFudHNPVyIp
KSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImluZmFudHNPVyIpLnZhbHVlID0g
Y3VycmVudEluZmFudENvdW50OwogICAgfQogICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJpbmZhbnRzIikpIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5mYW50cyIp
LnZhbHVlID0gY3VycmVudEluZmFudENvdW50OwogICAgfQogICAgaWYgKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJraWRzTUMiKSkgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJr
aWRzTUMiKS52YWx1ZSA9IGN1cnJlbnRLaWRzQ291bnQ7CiAgICB9CiAgICBpZiAoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImtpZHNPVyIpKSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImtpZHNPVyIpLnZhbHVlID0gY3VycmVudEtpZHNDb3VudDsKICAgIH0KICAgIGlmIChkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgia2lkcyIpKSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImtpZHMiKS52YWx1ZSA9IGN1cnJlbnRLaWRzQ291bnQ7CiAgICB9CiAgICBpZiAoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFkdWx0c01DIikpIHsKICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiYWR1bHRzTUMiKS52YWx1ZSA9IGN1cnJlbnRBZHVsdENvdW50OwogICAgfQog
ICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhZHVsdHNPVyIpKSB7CiAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFkdWx0c09XIikudmFsdWUgPSBjdXJyZW50QWR1bHRDb3Vu
dDsKICAgIH0KICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWR1bHRzIikpIHsKICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWR1bHRzIikudmFsdWUgPSBjdXJyZW50QWR1
bHRDb3VudDsKICAgIH0KfQpmdW5jdGlvbiBwYXNzcG9ydEFkZFJlcUZpZWxkSW5kKHRyYXZlbGVy
TnVtKSB7CiAgICBpZiAoZG9jdW1lbnQuZGlzcGxheVB1cmNoYXNlRm9ybS5lbGVtZW50c1sidmll
d1B1cmNoYXNlLnBhc3Nwb3J0Q291bnRyeVsiICsgdHJhdmVsZXJOdW0gKyAiXSJdLnZhbHVlICE9
ICIiIHx8IGRvY3VtZW50LmRpc3BsYXlQdXJjaGFzZUZvcm0uZWxlbWVudHNbInZpZXdQdXJjaGFz
ZS5wYXNzcG9ydE51bWJlclsiICsgdHJhdmVsZXJOdW0gKyAiXSJdLnZhbHVlICE9ICIiIHx8IGRv
Y3VtZW50LmRpc3BsYXlQdXJjaGFzZUZvcm0uZWxlbWVudHNbInZpZXdQdXJjaGFzZS5wYXNzcG9y
dEV4cE1vbnRoWyIgKyB0cmF2ZWxlck51bSArICJdIl0udmFsdWUgIT0gIiIgfHwgZG9jdW1lbnQu
ZGlzcGxheVB1cmNoYXNlRm9ybS5lbGVtZW50c1sidmlld1B1cmNoYXNlLnBhc3Nwb3J0RXhwRGF5
WyIgKyB0cmF2ZWxlck51bSArICJdIl0udmFsdWUgIT0gIiIgfHwgZG9jdW1lbnQuZGlzcGxheVB1
cmNoYXNlRm9ybS5lbGVtZW50c1sidmlld1B1cmNoYXNlLnBhc3Nwb3J0RXhwWWVhclsiICsgdHJh
dmVsZXJOdW0gKyAiXSJdLnZhbHVlICE9ICIiIHx8IGRvY3VtZW50LmRpc3BsYXlQdXJjaGFzZUZv
cm0uZWxlbWVudHNbInZpZXdQdXJjaGFzZS5jb3VudHJ5T2ZSZXNpZGVuY2VbIiArIHRyYXZlbGVy
TnVtICsgIl0iXS52YWx1ZSAhPSAiIiB8fCBkb2N1bWVudC5kaXNwbGF5UHVyY2hhc2VGb3JtLmVs
ZW1lbnRzWyJ2aWV3UHVyY2hhc2UuY2l0aXplbnNoaXBbIiArIHRyYXZlbGVyTnVtICsgIl0iXS52
YWx1ZSAhPSAiIikgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXNzcG9ydENv
dW50cnlUZCIgKyB0cmF2ZWxlck51bSkuaW5uZXJIVE1MID0gJ0lzc3VpbmcgQ291bnRyeSA8c3Bh
biBjbGFzcz0icmVkQXN0ZXJpc2siPio8L3NwYW4+JzsKICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicGFzc3BvcnROdW1iZXJUZCIgKyB0cmF2ZWxlck51bSkuaW5uZXJIVE1MID0gJ1Bh
c3Nwb3J0ICMgPHNwYW4gY2xhc3M9InJlZEFzdGVyaXNrIj4qPC9zcGFuPic7CiAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhc3Nwb3J0RXhwRGF0ZVRkIiArIHRyYXZlbGVyTnVtKS5p
bm5lckhUTUwgPSAnUGFzc3BvcnQgRXhwLiBEYXRlIDxzcGFuIGNsYXNzPSJyZWRBc3RlcmlzayI+
Kjwvc3Bhbj4nOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb3VudHJ5T2ZSZXNp
ZGVuY2VUZCIgKyB0cmF2ZWxlck51bSkuaW5uZXJIVE1MID0gJ0NvdW50cnkgb2YgUmVzaWRlbmNl
IDxzcGFuIGNsYXNzPSJyZWRBc3RlcmlzayI+Kjwvc3Bhbj4nOwogICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjaXRpemVuc2hpcFRkIiArIHRyYXZlbGVyTnVtKS5pbm5lckhUTUwgPSAn
Q2l0aXplbnNoaXAgPHNwYW4gY2xhc3M9InJlZEFzdGVyaXNrIj4qPC9zcGFuPic7CiAgICB9CiAg
ICBpZiAoZG9jdW1lbnQuZGlzcGxheVB1cmNoYXNlRm9ybS5lbGVtZW50c1sidmlld1B1cmNoYXNl
LnBhc3Nwb3J0Q291bnRyeVsiICsgdHJhdmVsZXJOdW0gKyAiXSJdLnZhbHVlID09ICIiICYmIGRv
Y3VtZW50LmRpc3BsYXlQdXJjaGFzZUZvcm0uZWxlbWVudHNbInZpZXdQdXJjaGFzZS5wYXNzcG9y
dE51bWJlclsiICsgdHJhdmVsZXJOdW0gKyAiXSJdLnZhbHVlID09ICIiICYmIGRvY3VtZW50LmRp
c3BsYXlQdXJjaGFzZUZvcm0uZWxlbWVudHNbInZpZXdQdXJjaGFzZS5wYXNzcG9ydEV4cE1vbnRo
WyIgKyB0cmF2ZWxlck51bSArICJdIl0udmFsdWUgPT0gIiIgJiYgZG9jdW1lbnQuZGlzcGxheVB1
cmNoYXNlRm9ybS5lbGVtZW50c1sidmlld1B1cmNoYXNlLnBhc3Nwb3J0RXhwRGF5WyIgKyB0cmF2
ZWxlck51bSArICJdIl0udmFsdWUgPT0gIiIgJiYgZG9jdW1lbnQuZGlzcGxheVB1cmNoYXNlRm9y
bS5lbGVtZW50c1sidmlld1B1cmNoYXNlLnBhc3Nwb3J0RXhwWWVhclsiICsgdHJhdmVsZXJOdW0g
KyAiXSJdLnZhbHVlID09ICIiICYmIGRvY3VtZW50LmRpc3BsYXlQdXJjaGFzZUZvcm0uZWxlbWVu
dHNbInZpZXdQdXJjaGFzZS5jb3VudHJ5T2ZSZXNpZGVuY2VbIiArIHRyYXZlbGVyTnVtICsgIl0i
XS52YWx1ZSAhPSAiIiAmJiBkb2N1bWVudC5kaXNwbGF5UHVyY2hhc2VGb3JtLmVsZW1lbnRzWyJ2
aWV3UHVyY2hhc2UuY2l0aXplbnNoaXBbIiArIHRyYXZlbGVyTnVtICsgIl0iXS52YWx1ZSAhPSAi
IikgewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwYXNzcG9ydENvdW50cnlUZCIg
KyB0cmF2ZWxlck51bSkuaW5uZXJIVE1MID0gIklzc3VpbmcgQ291bnRyeSI7CiAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBhc3Nwb3J0TnVtYmVyVGQiICsgdHJhdmVsZXJOdW0pLmlu
bmVySFRNTCA9ICJQYXNzcG9ydCAjIjsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cGFzc3BvcnRFeHBEYXRlVGQiICsgdHJhdmVsZXJOdW0pLmlubmVySFRNTCA9ICJQYXNzcG9ydCBF
eHAuIERhdGUiOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb3VudHJ5T2ZSZXNp
ZGVuY2VUZCIgKyB0cmF2ZWxlck51bSkuaW5uZXJIVE1MID0gIkNvdW50cnkgb2YgUmVzaWRlbmNl
IjsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2l0aXplbnNoaXBUZCIgKyB0cmF2
ZWxlck51bSkuaW5uZXJIVE1MID0gIkNpdGl6ZW5zaGlwIjsKICAgIH0KfQpmdW5jdGlvbiBzZXRP
bW5pdHVyZUVudigpIHsKICAgIHZhciBvbW5pdHVyZUhvc3ROYW1lID0gd2luZG93LmxvY2F0aW9u
Lmhvc3RuYW1lOwogICAgdmFyIG9tbml0dXJlRW52ID0gInZhZGV2IjsKICAgIGlmIChvbW5pdHVy
ZUhvc3ROYW1lID09ICJ3d3cudmlyZ2luYW1lcmljYS5jb20iIHx8IG9tbml0dXJlSG9zdE5hbWUg
PT0gInZpcmdpbmFtZXJpY2EuY29tIikgewogICAgICAgIG9tbml0dXJlRW52ID0gInZhdGVzdCI7
CiAgICB9CiAgICByZXR1cm4gb21uaXR1cmVFbnY7Cn0KZnVuY3Rpb24gc3VibWl0UG5yRGF0YSgp
IHsKICAgICQucG9zdCgidmlld1JlY2VpcHQuZG8/bWV0aG9kPXN1Ym1pdFBuckRhdGEiKTsKfQpm
dW5jdGlvbiBzaWduSW5Qb3BVcE92ZXJsYXkoaXNBamF4LCB0YWJOdW1iZXIpIHsKICAgIGlmIChk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWxldmF0ZUludGVycnVwdERpdiIpKSB7CiAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVsZXZhdGVJbnRlcnJ1cHREaXYiKS5zdHlsZS5kaXNw
bGF5ID0gIm5vbmUiOwogICAgfQogICAgc2hvd1dhaXRJbWFnZSgpOwogICAgZG9jdW1lbnQuc2ln
bkluRm9ybS5hY3Rpb24gPSAicmVmZXItZnJpZW5kLmRvIjsKICAgIGRvY3VtZW50LnNpZ25JbkZv
cm0uc3VibWl0KCk7Cn0KZnVuY3Rpb24gc2F2ZVRyYXZlbEluc3VyYW5jZSgpIHsKICAgIHRyYXZl
bEluc3VyYW5jZUZsYWcgPSAtMTsKICAgIGlmIChkb2N1bWVudC5yZWNlaXB0Rm9ybSkgewogICAg
ICAgIGlmIChkb2N1bWVudC5yZWNlaXB0Rm9ybS5lbGVtZW50c1sidmlld1B1cmNoYXNlTW9kZWwu
dHJhdmVsRmxhZyJdKSB7CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBkb2N1bWVudC5yZWNl
aXB0Rm9ybS5lbGVtZW50c1sidmlld1B1cmNoYXNlTW9kZWwudHJhdmVsRmxhZyJdLmxlbmd0aDsg
aSsrKSB7CiAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQucmVjZWlwdEZvcm0uZWxlbWVudHNb
InZpZXdQdXJjaGFzZU1vZGVsLnRyYXZlbEZsYWciXVtpXS5jaGVja2VkID09IHRydWUpIHsKICAg
ICAgICAgICAgICAgICAgICB0cmF2ZWxJbnN1cmFuY2VGbGFnID0gaTsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiByZXRhaW5UcmF2ZWxJ
bnN1cmFuY2UoKSB7CiAgICBpZiAoZG9jdW1lbnQucmVjZWlwdEZvcm0pIHsKICAgICAgICBpZiAo
ZG9jdW1lbnQucmVjZWlwdEZvcm0uZWxlbWVudHNbInZpZXdQdXJjaGFzZU1vZGVsLnRyYXZlbEZs
YWciXSkgewogICAgICAgICAgICBpZiAodHJhdmVsSW5zdXJhbmNlRmxhZyA+PSAwKSB7CiAgICAg
ICAgICAgICAgICBpZiAoZG9jdW1lbnQucmVjZWlwdEZvcm0uZWxlbWVudHNbInZpZXdQdXJjaGFz
ZU1vZGVsLnRyYXZlbEZsYWciXVt0cmF2ZWxJbnN1cmFuY2VGbGFnXSkgewogICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50LnJlY2VpcHRGb3JtLmVsZW1lbnRzWyJ2aWV3UHVyY2hhc2VNb2RlbC50
cmF2ZWxGbGFnIl1bdHJhdmVsSW5zdXJhbmNlRmxhZ10uY2hlY2tlZCA9IHRydWU7CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0=
</data>

          </attachment>
      

    </bug>

</bugzilla>