FW: [xmlc] Re: [enhydra] java.lang.StackOverflowError File attached

"Mohammed Rafeeq" <[email protected]> Tue, 5 Dec 2006 11:44:14 -0800
Newsgroups gmane.comp.java.enhydra.general
Message-ID <[email protected]>
This is a multi-part message in MIME format.

------_=_NextPart_001_01C718A5.BE334AE3
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

This is a big show stopper. my project is stalled. Need some help

If the 'syncWithDocument(Node node)' cannot be optimized. Cant the stack
size be increased by mentioning the '-xss' option from appropriate
command line options.


I need a solution Please help. For people viewing this message freshly.
The attached file fails on 'xmlc'


My project is stalled due to this problem.

-rafeeq


=20

-----Original Message-----
From: Mohammed Rafeeq [mailto:[email protected]]=20
Sent: Thursday, November 30, 2006 1:34 PM
To: [email protected]
Subject: RE: [xmlc] Re: [enhydra] java.lang.StackOverflowError File
attached

I hit the limit again. Now there is no way that I can change my .html
file to trim down the number of 'id'  attributes. A fix is required.


Please let know which file to change to optimise this.


-rafeeq=20

-----Original Message-----
From: Slobodan Vujasinovic [mailto:[email protected]]
Sent: Wednesday, August 30, 2006 3:07 AM
To: [email protected]
Subject: Re: [xmlc] Re: [enhydra] java.lang.StackOverflowError File
attached

Hi,

I don't think that recursion is causing  the problem here!

I think that problem lies in large number of 'else if' statements
(inside 'syncWithDocument(Node node)' method) and that this is the part
of code (logic) that needs to get reimplemented (maybe by using some
generic setter methods and/or Map objects).

Regards,
  Slobodan Vujasinovic
Enhydra Development Team



Jacob Kjome wrote:

> At 04:31 PM 8/29/2006, you wrote:
> > My html has grown further  and it has reached the limit again. It=20
> >fails to compile.
> >
> >My worry is why is the parameter stack size -xss that I specify in=20
> >enhydrahome\ant.bat is not picked up
> >
>
> You'd want to check with the Ant-user list to see how to best set that

> using ant.bat.
>
> >I mention this in xmlc.bat too.
>
> I haven't been distributing a new version of xmlc.bat for quite a=20
> while.  It would make sense, but I haven't really gotten around to it.

> For now, it is not a priority, unless you want to contribute it.
> I think there does exist a version in the source, but I haven't=20
> modified the build to put this in a proper location in the=20
> distribution and I haven't verified how well it works.  You are=20
> welcome to look into it.
>
> >
> >A fix is required.
>
> I think we can do more here.  The crux of the matter is determining=20
> the best way to avoid excessive recursion.  Again, normally it isn't a

> problem because usually there are not so many Id's.  However, since=20
> you do have many Id's, we may as well come up with a solution.  Here's

> a much smaller version of the generated method....
>
>     protected void syncWithDocument(Node node) {
>         if (node instanceof Element) {
>             String id =3D ((Element)node).getAttribute("id");
>
>             if (id.length() =3D=3D 0) {
>             } else if (id.equals("hello")) {
>                 $element_Hello =3D
> (org.enhydra.xml.xhtml.dom.HTMLSpanElement)node;
>             }
>         }
>
>         Node child =3D node.getFirstChild();
>         while (child !=3D null) {
>             syncWithDocument(child);
>             child =3D child.getNextSibling();
>         }
>     }
>
> The challenge is to determine the best way to implement this without=20
> recursion.  Of course, recursion here makes the code short, sweet, and

> clean.  The problem is that too much recursion brings down the JVM.
> One possibility would be putting first block of code inside a while=20
> loop and test the next sibling nodes inside that loop and then=20
> evaluating them rather than calling syncWithDocument(Node)=20
> recursively.  That would be a pretty straightforward way, but the=20
> while loop itself would be massively large in your case.  I'm not sure

> it would matter, but it wouldn't look quite as pretty as the recursive

> version does.  Of course there may be other approaches.  That's why=20
> I'm opening this up to a discussion.
>
> I'd like to hear as many suggestions as possible; preferably fully=20
> coded solutions.  Code away!!!
>
> Jake
>
> >
> >-rafeeq
> >
> >
> >-----Original Message-----
> >From: Jacob Kjome [mailto:[email protected]]
> >Sent: Wednesday, August 16, 2006 9:27 PM
> >To: [email protected]
> >Cc: Mohammed Rafeeq; [email protected]
> >Subject: RE: [xmlc] Re: [enhydra] java.lang.StackOverflowError File=20
> >attached
> >
> >
> >Ok, I think I see the problem.  The java source file is just too big=20
> >for the java compiler to handle.  The source file, even with deferred

> >parsing, which stores zero information on how to actually build the=20
> >DOM, is 535k and 18,579 lines long!  That's a *lot* of Id's!!!
> >
> >As such, I don't think this is a matter of an XMLC bug, per-say.
> >Though, then thing it seems to be bombing out on is the massive if=20
> >statement in the recursive method syncWithDocument(Node node).  The=20
> >thing is, normally, this doesn't cause problems.  It's just when this

> >upper limit of Id's is hit.  So, I don't think it's a high priority=20
> >issue to search for a fix, but it couldn't hurt to find an=20
> >optimization here.
> >
> >I think the approach you took to solving the issue - removing the=20
> >excess Id's and taking a different approach in your presentation=20
> >object - is the proper one.
> >
> >If anyone has suggestions on improving the generated and recursive=20
> >syncWithDocument(Node node) method, I'd be glad to hear it.
> >
> >
> >Jake
> >
> >At 12:59 PM 8/16/2006, Jacob Kjome wrote:
> > >
> > >Glad to hear you were able to work around it.  I will try your
> >original file
> > >when I get home tonight to see if it does, indeed, still fail with
> >deferred
> > >parsing.  If it does, its definitely something that should be
> >investigated and
> > >fixed.  I just noticed that you reported this issue in the XMLC
> >objectweb forge
> > >tracker.  I was going to suggest you do that before I saw that you=20
> > >already did.
> > >Thanks!
> > >
> > >Jake
> > >
> > >
> > >Quoting Mohammed Rafeeq <[email protected]>:
> > >
> > >> I am not sure how to check if the command line utility passes the

> > >> "-for-deferred-parsing" flag to XMLC.
> > >>
> > >> Now I cleaned up my html and moved all my javascript, css to
> >external
> > >> files. More over I converted
> > >>
> > >> <td id =3D"abc"> <input type =3D"text" id=3D"xyz"></td>
> > >>
> > >> To
> > >>
> > >> <td><input type =3D"text" id=3D"xyz"></td>
> > >>
> > >> And now it compiles. I changed the way my presentation object is=20
> > >> reaching each table cell element and manipulating the content.
> > >>
> > >> But I am still curious enough to know why the earlier file failed

> > >> to compile. If it is a bug in xmlc we can fix it .
> > >>
> > >> Thank you.
> > >> -rafeeq
> > >>
> > >>
> > >>
> > >>
> > >>
> > >> -----Original Message-----
> > >> From: Jacob Kjome [mailto:[email protected]]
> > >> Sent: Wednesday, August 16, 2006 10:07 AM
> > >> To: Mohammed Rafeeq
> > >> Cc: [email protected]; [email protected]
> > >> Subject: RE: [xmlc] Re: [enhydra] java.lang.StackOverflowError=20
> > >> File attached
> > >>
> > >> Quoting Mohammed Rafeeq <[email protected]>:
> > >>
> > >> > The file that is failing to compile is attached.
> > >> >
> > >> > I tried using deferred parsing  by specifying
> > >> >
> > >> > C:\xmlc -for-deferred-parsing CARGO2QC.html
> > >> >
> > >> > I get the same error
> > >>
> > >> Are you sure that the command line utility you are using passes=20
> > >> the "-for-deferred-parsing" flag to XMLC to evaluate as a=20
> > >> metadata
> >option?
> > >>
> > >> >
> > >> > I am using I am using enhydra 5.1 and xmlc.jar: 2.2.5.. I am
> >working
> > >> > on Windows xp professional. I tried downloading the latest
> >xmlc.jar
> > >> > but it did not help either. I tried downloading the latest=20
> > >> > version enhydra app
> > >> > server(7.x) , created a application and tried to compile this=20
> > >> > file
> >,
> > >> > it did not help either.
> > >> >
> > >> > Since this is a show stopper I am proceeding by chopping and
> >reducing
> > >> > a few content in my html file.
> > >> >
> > >>
> > >> Is the full content of the HTML file needed or is some of it just
> >mockup
> > >> markup that could be removed?  You can set a CSS class name to=20
> > >> each
> >row
> > >> in the table, such as "removeMe", that is just mockup data and
> >provide
> > >> the XMLC command line option "-delete-class removeMe" or the
XML...
> > >>
> > >> <domEdits>
> > >>         <deleteElement elementClasses=3D"removeMe"/> </domEdits>
> > >>
> > >> > I wanted to debug by downloading the source code. But did not=20
> > >> > know
> >how
> > >>
> > >> > to download that particular version from sourceforge.net
> > >> >
> > >>
> > >> You can check out the CVS for the tag XMLC_2_2_X (where X is the
> >version
> > >> you are interested in).  I would try XMLC_2_2_10, since it is the
> >latest
> > >> and has Eclipse project files available for it.  That will make=20
> > >> it easier to get up and running.
> > >>  See the following page for information on checking out XMLC CVS=20
> > >> source...
> > >>
> > >> http://forge.objectweb.org/scm/?group_id=3D49
> > >>
> > >> If you don't currently use a CVS client, I recommend using
> >TortoiseCVS
> > >> at http://www.tortoisecvs.org/ .  It makes things easy.  Either=20
> > >> go
> >for
> > >> the 1.8.xx versions or the 1.9.11 version.  The latest versions=20
> > >> of
> >1.9,
> > >> including 1.9.12 through 1.9.14, seem to suffer from various
> >problems
> > >> that prevent proper usage.
> > >>  I hope 1.9.15 will clear things up, but it isn't out yet.
> > >>
> > >> Jake
> > >>
> > >> > Thanks,
> > >> > -rafeeq
> > >> >
> > >> >
> > >> >
> > >> >
> > >> > -----Original Message-----
> > >> > From: Jacob Kjome [mailto:[email protected]]
> > >> > Sent: Tuesday, August 15, 2006 9:21 PM
> > >> > To: [email protected]; [email protected]
> > >> > Cc: Mohammed Rafeeq
> > >> > Subject: Re: [xmlc] Re: [enhydra] java.lang.StackOverflowError
> > >> >
> > >> >
> > >> > What version of XMLC is being used?  Can you provide the file=20
> > >> > that causes the error?  Have you tried using XMLC's deferred=20
> > >> > parsing
> > >> feature?
> > >> > I think deferred parsing would solve this issue.
> > >> >
> > >> > Jake
> > >> >
> > >> > At 03:25 AM 8/14/2006, Slobodan Vujasinovic wrote:
> > >> >  >Hi,
> > >> >  >
> > >> >  >I've forwarded your message to XMLC mailing list!
> > >> >  >Maybe someone else already had this problem with large HTML
> >pages!?
> > >> >  >
> > >> >  >Which Enhydra and XMLC versions are you using currently=20
> > >> > (please
> >post
> > >> > >your response on XMLC mailing list too - [email protected])?
> > >> >  >
> > >> >  >Regards,
> > >> >  >  Slobodan Vujasinovic
> > >> >  >Enhydra Development Team
> > >> >  >
> > >> >  >
> > >> >  >
> > >> >  >[email protected] wrote:
> > >> >  >
> > >> >  >>Hi all
> > >> >  >>
> > >> >  >>I have a big html file ( consisting of 550 <td> cells) .=20
> > >> > when i
> >run
> > >>
> > >> > the xmlc  >>  >>When I run the ant task to compile my html to
> >.java
> > >> > files it throws  >an exception like below. ( i run a xmlc task)
> >>>
> > >> >  >>xmlc:
> > >> >  >>    [xmlc]     CARGO2QC.html --> CARGO2QC.class
> > >> >  >>     [xmlc] >>> parsing
> > >> >  >C:\xdx\svndatafinder\src\datafinder\resources\CARGO2QC.html
> > >> >  >>     [xmlc] >>> using DOM Factory class:
> > >> >  >org.enhydra.xml.xmlc.dom.lazydom.LazyHTMLDomFactory
> > >> >  >>     [xmlc] >>> generating code
> > >> >  >>     [xmlc]     creating class:
> > >> >  >C:\xdx\svndatafinder\classes\Generated
> > >> >  >Source\datafinder\presentation\CARGO2QCHTML.java
> > >> >  >>     [xmlc] >>> compiling code
> > >> >  >>     [xmlc] javac -d C:\xdx\svndatafinder\classes -encoding
> > >> >  >ISO-8859-1 C:\xdx\svndatafinder\classes\Generated
> > >> >  >Source\datafinder\presentation\CARGO2QCHTML.java
> > >> >  >>
> > >> >  >>
> > >> >  >>The system is out of resources.
> > >> >  >>Consult the following stack trace for details.
> > >> >  >>java.lang.StackOverflowError
> > >> >  >>     [xmlc] Error: compile of generated java code failed
> > >> >  >>     [xmlc] org.enhydra.xml.xmlc.XMLCException: compile of
> > >> generated
> > >> >  >java code failed
> > >> >  >>     [xmlc]     at
> > >> >
> >>org.enhydra.xml.xmlc.misc.ProcessRunner.run(ProcessRunner.java:283)
> > >> >  >>     [xmlc]     at
> > >> >
> > >>
> >>org.enhydra.xml.xmlc.codegen.JavaCompile.compile(JavaCompile.java:14
> >>5)
> > >> >  >>     [xmlc]     at
> > >> > org.enhydra.xml.xmlc.compiler.Javac.compile(Javac.java:88)
> > >> >  >>     [xmlc]     at
> > >> >
> > >> >
> > >>
>
>>org.enhydra.xml.xmlc.compiler.Compiler.compileJavaSource(Compiler.java
:
> > >> > 153)
> > >> >  >>     [xmlc]     at
> > >> >
> > >> >
>
>>org.enhydra.xml.xmlc.compiler.Compiler.compileDocument(Compiler.java:
> > >> > >18
> > >> > 5)
> > >> >  >>     [xmlc]     at
> > >> >
> >>org.enhydra.xml.xmlc.compiler.Compiler.compile(Compiler.java:226)
> > >> >  >>     [xmlc]     at
> > >> >
>org.enhydra.xml.xmlc.commands.xmlc.XMLC.compile(XMLC.java:132)
> > >> >  >>     [xmlc]     at
> > >> >
> > >> >
> >>org.enhydra.xml.xmlc.commands.xmlc.XMLC.compileHandleErrors(XMLC.jav
> >>a
> > >> > >:1
> > >> > 42)
> > >> >  >>     [xmlc]     at
> > >> > org.enhydra.xml.xmlc.commands.xmlc.XMLC.main(XMLC.java:153)
> > >> >  >>     [xmlc]     at
> > >> > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > >> >  >>     [xmlc]     at
> > >> >
> > >> >
>
>>sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
> > >> > >ja
> > >> > va:39)
> > >> >  >>     [xmlc]     at
> > >> >
> > >> >
> >>sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcce
> >>s
> > >> > s
> > >> >  >orImpl.java:25)
> > >> >  >>     [xmlc]     at
> >java.lang.reflect.Method.invoke(Method.java:324)
> > >> >  >>     [xmlc]     at
com.lutris.ant.taskdefs.Xmlc.execute(Unknown
> > >> > Source)
> > >> >  >>     [xmlc]     at
> >org.apache.tools.ant.Task.perform(Task.java:317)
> > >> >  >>     [xmlc]     at
> > >> > org.apache.tools.ant.Target.execute(Target.java:309)
> > >> >  >>     [xmlc]     at
> > >> > org.apache.tools.ant.Target.performTasks(Target.java:334)
> > >> >  >>     [xmlc]     at
> > >> >  >org.apache.tools.ant.Project.executeTarget(Project.java:1306)
> > >> >  >>     [xmlc]     at
> > >> >
>org.apache.tools.ant.Project.executeTargets(Project.java:1250)
> > >> >  >>     [xmlc]     at
> > >> org.apache.tools.ant.Main.runBuild(Main.java:610)
> > >> >  >>     [xmlc]     at
> >org.apache.tools.ant.Main.start(Main.java:196)
> > >> >  >>     [xmlc]     at
> >org.apache.tools.ant.Main.main(Main.java:235)
> > >> >  >>
> > >> >  >>
> > >> >  >>On researching I found out that the java stack is getting
> > >> overflown.
> > >> >  >I tried to increase the java stack size and os stack size by=20
> > >> > mentioning  >>  >>%JAVA% -Xms256M -Xmx512M -Xss1000K -Xoss5000K
> >-cp
> > >> > %CLASSPATH% .........
> > >> >  >>
> > >> >  >>in %ENHYDRA_HOME%/bin/ant.bat  >>  >>I am using jdk 1.4.2=20
> > >> > and the operating system is windows xp professional.
> > >> >  >>
> > >> >  >>but this did not solve the problem. Any leads will be much=20
> > >> > appreciated  >>  >>I have posted this problem in this forum too
> >>>
> > >> >
> >>>http://forums.devx.com/showthread.php?t=3D155222&highlight=3Djava.lang.
> >>>S
> > >> > >>t
> > >> >  >ackOverflowError
> > >> >  >>
> > >> >  >>Thanksm
> > >> >  >>-Rafeeq([email protected])
> > >> >  >>
> > >> >  >>
> > >> >  >>
> > >> >
> > >> >
> >>>-------------------------------------------------------------------
> >>>-
> > >> > >>--
> > >> > --
> > >> >  >>
> > >> >  >>
> > >> >  >>--
> > >> >  >>You receive this message as a subscriber of the=20
> > >> > [email protected]
> > >> > >mailing list.
> > >> >  >>To unsubscribe: mailto:[email protected]
> > >> >  >>For general help: mailto:[email protected]?subject=3Dhelp
> > >> >  >>ObjectWeb mailing lists service home page:
> > >> > http://www.objectweb.org/wws  >>  >>  >  >  >
> > >> >  >--
> > >> >  >You receive this message as a subscriber of the
> >[email protected]
> > >> > >mailing list.
> > >> >  >To unsubscribe: mailto:[email protected]
> > >> >  >For general help: mailto:[email protected]?subject=3Dhelp
> > >> >  >ObjectWeb mailing lists service home page:
> > >> > http://www.objectweb.org/wws
> > >> >
> > >> >
> > >>
> > >>
> > >>
> > >
> > >
> > >
> > >
> > >
> > >
> > >--
> > >You receive this message as a subscriber of the [email protected]=20
> > >mailing list.
> > >To unsubscribe: mailto:[email protected]
> > >For general help: mailto:[email protected]?subject=3Dhelp
> > >ObjectWeb mailing lists service home page:
> >http://www.objectweb.org/wws
>
>
>-----------------------------------------------------------------------
>-
>
>
>--
>You receive this message as a subscriber of the [email protected]
mailing list.
>To unsubscribe: mailto:[email protected]
>For general help: mailto:[email protected]?subject=3Dhelp
>ObjectWeb mailing lists service home page: http://www.objectweb.org/wws
>=20=20
>



------_=_NextPart_001_01C718A5.BE334AE3
Content-Type: application/octet-stream;
	name="LARGOQCeCRFViewPO.java"
Content-Transfer-Encoding: base64
Content-Description: LARGOQCeCRFViewPO.java
Content-Disposition: attachment;
	filename="LARGOQCeCRFViewPO.java"

cGFja2FnZSBkYXRhZmluZGVyLnByZXNlbnRhdGlvbjsNCg0KLy8gRW5oeWRy
YSBTdXBlclNlcnZsZXQgaW1wb3J0cw0KaW1wb3J0IGphdmEubGFuZy5yZWZs
ZWN0Lk1ldGhvZDsNCmltcG9ydCBqYXZhLnRleHQuU2ltcGxlRGF0ZUZvcm1h
dDsNCmltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0Ow0KaW1wb3J0IGphdmEu
dXRpbC5BcnJheXM7DQppbXBvcnQgamF2YS51dGlsLkRhdGU7DQppbXBvcnQg
amF2YS51dGlsLkl0ZXJhdG9yOw0KaW1wb3J0IGphdmEudXRpbC5MaXN0Ow0K
aW1wb3J0IGphdmEudXRpbC5MaXN0SXRlcmF0b3I7DQppbXBvcnQgamF2YS5s
YW5nLnJlZmxlY3QuKjsNCmltcG9ydCBvcmcuZW5oeWRyYS54bWwueG1sYy5Y
TUxDVXRpbDsNCmltcG9ydCBvcmcuZW5oeWRyYS54bWwueG1sYy5YTUxPYmpl
Y3Q7DQppbXBvcnQgb3JnLnczYy5kb20uTm9kZTsNCmltcG9ydCBvcmcudzNj
LmRvbS5OYW1lZE5vZGVNYXA7DQppbXBvcnQgb3JnLnczYy5kb20uTm9kZUxp
c3Q7DQppbXBvcnQgb3JnLnczYy5kb20uaHRtbC5IVE1MSW5wdXRFbGVtZW50
Ow0KaW1wb3J0IG9yZy53M2MuZG9tLmh0bWwuSFRNTE9wdGlvbkVsZW1lbnQ7
DQppbXBvcnQgb3JnLnczYy5kb20uaHRtbC5IVE1MVGFibGVDZWxsRWxlbWVu
dDsNCmltcG9ydCBvcmcudzNjLmRvbS5odG1sLkhUTUxUYWJsZVJvd0VsZW1l
bnQ7DQppbXBvcnQgb3JnLnczYy5kb20uaHRtbC4qOw0KDQppbXBvcnQgY29t
Lmx1dHJpcy5hcHBzZXJ2ZXIuc2VydmVyLmh0dHBQcmVzZW50YXRpb24uQ2xp
ZW50UGFnZVJlZGlyZWN0RXhjZXB0aW9uOw0KaW1wb3J0IGNvbS5sdXRyaXMu
YXBwc2VydmVyLnNlcnZlci5odHRwUHJlc2VudGF0aW9uLkh0dHBQcmVzZW50
YXRpb25FeGNlcHRpb247DQppbXBvcnQgY29tLmx1dHJpcy5hcHBzZXJ2ZXIu
c2VydmVyLmh0dHBQcmVzZW50YXRpb24uU2VydmVyUGFnZVJlZGlyZWN0RXhj
ZXB0aW9uOw0KDQppbXBvcnQgZGF0YWZpbmRlci5idXNpbmVzcy5MdW5nQ0RP
dXRjb21lOw0KaW1wb3J0IGRhdGFmaW5kZXIuYnVzaW5lc3MuVHJhbnNwbGFu
dFV0aWw7DQppbXBvcnQgZGF0YWZpbmRlci5kYXRhLkx1bmdPdXRjb21lUXVl
cnk7DQppbXBvcnQgZGF0YWZpbmRlci5kYXRhLkxhcmdvUXVlcnk7DQppbXBv
cnQgamF2YS51dGlsLnJlZ2V4Lk1hdGNoZXI7DQppbXBvcnQgamF2YS51dGls
LnJlZ2V4LlBhdHRlcm47DQppbXBvcnQgZGF0YWZpbmRlci5wcmVzZW50YXRp
b24uKjsNCmltcG9ydCBkYXRhZmluZGVyLmJ1c2luZXNzLio7DQoNCi8vSU1Q
T1JUQU5UIE5PVEUgQU5ZIENIQU5HRSBUSEFUIEhBUFBFTlMgSU4gQlVTSU5F
U1MgTE9HSUMgT0YgVEhJUyBDTEFTUyBIQVMgVE8NCi8vQkUgUkVQTElDQVRF
RCBJTiBMQVJHT1FDUE8gVE9PICwgQkVDQVVTRSBPRiBUSEUgMiBESUZGRVJF
TlQgVklFV1MgT0YgVEhFIEZPUk1TIFRIQVQgSVMgUkVRVUlSRUQgDQoNCg0K
cHVibGljIGNsYXNzIExBUkdPUUNlQ1JGVmlld1BPIGV4dGVuZHMgQmFzZVBP
IHsNCg0KCUFycmF5TGlzdCBzclJvd3M7DQoNCglTdHJpbmcgZmV2ZW50Ow0K
CVN0cmluZyBmcXVlcnlJZDsNCglTdHJpbmcgZnF1ZXJ5TmFtZTsNCglTdHJp
bmcgZnF1ZXJ5Ow0KDQoJU3RyaW5nIGZjZW50ZXJJZDsNCglTdHJpbmcgZmNl
bnRlck5hbWU7DQoJU3RyaW5nIGZwYXRpZW50TGlzdDsNCglTdHJpbmcgZnNh
bXBsZUxpc3Q7DQoJU3RyaW5nIGZzYW1wbGVGd2Q7DQoJU3RyaW5nIGZzYW1w
bGVSZXY7DQoJU3RyaW5nIGZpbmRDb21wRmlsdGVyOw0KCVN0cmluZyBmaW5k
RmlsdGVyOw0KCVN0cmluZyBmYmlvRmlsdGVyOw0KCQ0KCVN0cmluZyBmYWN1
dGVDb21wRmlsdGVyOw0KCVN0cmluZyBmTWFjdXRlQ29tcEZpbHRlcjsNCglT
dHJpbmcgZkJhY3V0ZUNvbXBGaWx0ZXI7DQoJU3RyaW5nIGZZYWN1dGVDb21w
RmlsdGVyOw0KCVN0cmluZyBmTUJhY3V0ZUNvbXBGaWx0ZXI7DQoJDQoJU3Ry
aW5nIGZhY3V0ZUZpbHRlcjsJDQoJU3RyaW5nIGZNYWN1dGVGaWx0ZXI7DQoJ
U3RyaW5nIGZCYWN1dGVGaWx0ZXI7DQoJU3RyaW5nIGZZYWN1dGVGaWx0ZXI7
DQoJU3RyaW5nIGZNQmFjdXRlRmlsdGVyOw0KCQ0KCVN0cmluZyBmYWlyQ29t
cEZpbHRlcjsNCglTdHJpbmcgZk1haXJDb21wRmlsdGVyOw0KCVN0cmluZyBm
QmFpckNvbXBGaWx0ZXI7DQoJU3RyaW5nIGZZYWlyQ29tcEZpbHRlcjsNCglT
dHJpbmcgZk1CYWlyQ29tcEZpbHRlcjsNCgkNCglTdHJpbmcgZmFpcndheUZp
bHRlcjsJDQoJU3RyaW5nIGZNYWlyd2F5RmlsdGVyOw0KCVN0cmluZyBmQmFp
cndheUZpbHRlcjsNCglTdHJpbmcgZllhaXJ3YXlGaWx0ZXI7DQoJU3RyaW5n
IGZNQmFpcndheUZpbHRlcjsNCgkNCglTdHJpbmcgZm9iRmlsdGVyOw0KCVN0
cmluZyBmY3ZyRmlsdGVyOw0KCVN0cmluZyBmaW5mT3JnQ29tcEZpbHRlcjsN
CglTdHJpbmcgZmluZkZpbHRlcjsNCglTdHJpbmcgZnJlakZpbHRlcjsNCglT
dHJpbmcgZnJlalRoRmlsdGVyOw0KDQoJU3RyaW5nIGZjbXZGaWx0ZXI7DQoJ
U3RyaW5nIGZhZG1GaWx0ZXI7DQoJU3RyaW5nIGZjb21wRmlsdGVyOw0KCVN0
cmluZyBmY0Rlc2NDb21wRmlsdGVyOw0KCVN0cmluZyBmY0Rlc2NGaWx0ZXI7
DQoJU3RyaW5nIGZkYXlzQ29tcEZpbHRlcjsNCglTdHJpbmcgZmRheXNGaWx0
ZXI7DQoJU3RyaW5nIGZiYWxGaWx0ZXI7DQoJU3RyaW5nIGZiYWxDZWxsRmls
dGVyOw0KCVN0cmluZyBmZnRGaWx0ZXI7DQoJU3RyaW5nIGZkRkVWMUNvbXBG
aWx0ZXI7DQoJU3RyaW5nIGZkRkVWMUZpbHRlcjsNCglTdHJpbmcgZmluZk9y
Z0ZpbHRlcjsNCglTdHJpbmcgZmJhbE9yZ0NvbXBGaWx0ZXI7DQoJU3RyaW5n
IGZiYWxPcmdGaWx0ZXI7DQoJU3RyaW5nIGZyZWpUaFJlYXNvbnNDb21wRmls
dGVyOw0KCVN0cmluZyBmcmVqVGhSZWFzb25zRmlsdGVyOw0KCVN0cmluZyBm
YWdlQ29tcEZpbHRlcjsNCglTdHJpbmcgZmFnZUZpbHRlcjsNCglTdHJpbmcg
Zm8yU2F0Q29tcEZpbHRlcjsNCglTdHJpbmcgZm8yU2F0RmlsdGVyOw0KCVN0
cmluZyBmYXR0ckxpc3Q7DQoJU3RyaW5nIGZwYXhDb21wRmlsdGVyOw0KCVN0
cmluZyBmcGF4RmlsdGVyOw0KCVN0cmluZyBmY3B0Q29tcEZpbHRlcjsNCglT
dHJpbmcgZmNwdEZpbHRlcjsNCg0KCVN0cmluZyBmY3NDb21wRmlsdGVyOw0K
CVN0cmluZyBmY3NGaWx0ZXI7DQoJDQoJU3RyaW5nIGZlbnJvbGxEdENvbXBG
aWx0ZXI7DQoJU3RyaW5nIGZlbnJvbGxEdEZpbHRlcjsNCg0KCVN0cmluZyBm
aW5kVGhlcmFweUNvbXBGaWx0ZXI7DQoJU3RyaW5nIGZpbmRUaGVyYXB5Rmls
dGVyOw0KCQ0KCVN0cmluZyBmb3RoZXJNZWRpY2F0aW9uQ29tcEZpbHRlcjsN
CglTdHJpbmcgZm90aGVyTWVkaWNhdGlvbkZpbHRlcjsNCgkNCglTdHJpbmcg
ZnJlalRyZWF0bWVudEhpc3RvcnlDb21wRmlsdGVyOw0KCVN0cmluZyBmcmVq
VHJlYXRtZW50SGlzdG9yeUZpbHRlcjsNCg0KCVN0cmluZyBmcmVjZXBpZW50
Q01WTWV0aG9kQ29tcEZpbHRlcjsNCglTdHJpbmcgZnJlY2VwaWVudENNVk1l
dGhvZEZpbHRlcjsNCgkNCglTdHJpbmcgZnJlamVjdGlvblRyZWF0bWVudHND
b21wRmlsdGVyOw0KCVN0cmluZyBmcmVqZWN0aW9uVHJlYXRtZW50c0ZpbHRl
cjsNCgkNCglTdHJpbmcgZmNvbXBDb21tZW50c0NvbXBGaWx0ZXI7DQoJU3Ry
aW5nIGZjb21wQ29tbWVudHNGaWx0ZXI7DQoJDQoJU3RyaW5nIGZmbkNvbW1l
bnRzQ29tcEZpbHRlcjsNCglTdHJpbmcgZmZuQ29tbWVudHNGaWx0ZXI7DQoJ
DQoJU3RyaW5nIGZiQUxDb21tZW50c0NvbXBGaWx0ZXI7DQoJU3RyaW5nIGZi
QUxDb21tZW50c0ZpbHRlcjsNCgkNCglTdHJpbmcgaW5mQ29tbWVudHNDb21w
RmlsdGVyOw0KCVN0cmluZyBpbmZDb21tZW50c0ZpbHRlcjsNCgkNCglTdHJp
bmcgbWJDb21tZW50c0NvbXBGaWx0ZXI7DQoJU3RyaW5nIG1iQ29tbWVudHNG
aWx0ZXI7DQoJDQoJU3RyaW5nIHN1bW1hcnlDb21tZW50c0NvbXBGaWx0ZXI7
DQoJU3RyaW5nIHN1bW1hcnlDb21tZW50c0ZpbHRlcjsNCgkNCglTdHJpbmcg
aW5kVGhlcmFweUNvbW1lbnRzQ29tcEZpbHRlcjsNCglTdHJpbmcgaW5kVGhl
cmFweUNvbW1lbnRzRmlsdGVyOw0KCQ0KCVN0cmluZyByZWplY3Rpb25FcGlz
b2RlQ29tbWVudHNDb21wRmlsdGVyOw0KCVN0cmluZyByZWplY3Rpb25FcGlz
b2RlQ29tbWVudHNGaWx0ZXI7DQoNCglTdHJpbmdbXSBmYXR0ciA9IG5ldyBT
dHJpbmdbMF07Ow0KCVN0cmluZ1tdIGZRQzE7DQoJU3RyaW5nW10gZlFDMjsN
CglTdHJpbmdbXSBmQXVkaXQ7DQoNCglMdW5nT3V0Y29tZVF1ZXJ5IGxxID0g
bnVsbDsNCg0KCXB1YmxpYyBib29sZWFuIGxvZ2dlZEluVXNlclJlcXVpcmVk
KCkgew0KCQlyZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCg0KCXByaXZhdGUgdm9p
ZCBzZXRQYXJhbXMoKSB0aHJvd3MgSHR0cFByZXNlbnRhdGlvbkV4Y2VwdGlv
biAgew0KCQkvL1N5c3RlbS5vdXQucHJpbnRsbigic2V0UGFyYW1zKCkgIG1l
dGhvZCBjYWxsZWQgPT09PT09PT0gIik7DQoJCWZhdHRyID0gdGhpcy5nZXRD
b21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyVmFsdWVzKCJzQXR0ciIpOw0K
CQlmYXR0ckxpc3QgPSB0aGlzLmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJh
bWV0ZXIoImF0dHJMaXN0Iik7DQoNCgkJZmF0dHJMaXN0ID0gKGZhdHRyTGlz
dCA9PSBudWxsKSA/ICIiIDogZmF0dHJMaXN0Ow0KDQoJCWlmIChmYXR0ci5s
ZW5ndGggIT0gMCkgew0KCQkJZm9yIChpbnQgaT0wO2k8ZmF0dHIubGVuZ3Ro
O2krKykgZmF0dHJMaXN0ICs9ICIsIitmYXR0cltpXTsNCgkJCWZhdHRyTGlz
dCA9IGZhdHRyTGlzdC5zdWJzdHJpbmcoMSk7DQoJCX0NCg0KCQkNCgkJLy9p
ZiAoKGZhdHRyLmxlbmd0aCA9PSAwKSAmJiAoZmF0dHJMaXN0ICE9IG51bGwp
KSBmYXR0ciA9IGZhdHRyTGlzdC5zcGxpdCgiLCIpOw0KDQoNCgkJZmV2ZW50
ID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJldmVu
dCIpOw0KCQlmcXVlcnlJZCA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0Lmdl
dFBhcmFtZXRlcigicXVlcnlJZCIpOw0KCQlmcXVlcnlOYW1lID0gdGhpcy5n
ZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJxdWVyeU5hbWUiKTsN
CgkJZnF1ZXJ5ID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1l
dGVyKCJxdWVyeSIpOw0KDQoJCS8vZmNlbnRlcklkID0gdGhpcy5nZXRDb21t
cygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJjZW50ZXJJZCIpOw0KCQlmY2Vu
dGVySWQgPSIiOw0KCQlTdHJpbmdbXSBhcnJDZW50ZXJJZCA9IHRoaXMuZ2V0
Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlclZhbHVlcygiY2VudGVySWQi
KTsNCgkJZm9yKGludCBpPTA7aTxhcnJDZW50ZXJJZC5sZW5ndGg7aSsrKXsN
CgkJCWlmKGk9PTApew0KCQkJCWZjZW50ZXJJZCArPWFyckNlbnRlcklkW2ld
OwkNCgkJCX1lbHNlew0KCQkJCWZjZW50ZXJJZCArPSAiLCIrIGFyckNlbnRl
cklkW2ldOw0KCQkJfQ0KCQl9DQoJCWZjZW50ZXJOYW1lID0gdGhpcy5nZXRD
b21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJjZW50ZXJOYW1lIik7DQoJ
CWZwYXRpZW50TGlzdCA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBh
cmFtZXRlcigicGF0aWVudExpc3QiKTsNCgkJZnNhbXBsZUxpc3QgPSB0aGlz
LmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJhbWV0ZXIoInNhbXBsZUxpc3Qi
KTsNCgkJZnNhbXBsZUZ3ZCA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0Lmdl
dFBhcmFtZXRlcigic2FtcGxlRndkIik7DQoJCWZzYW1wbGVSZXYgPSB0aGlz
LmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJhbWV0ZXIoInNhbXBsZVJldiIp
Ow0KDQoJCWZRQzEgPSB0aGlzLmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJh
bWV0ZXJWYWx1ZXMoIlFDMSIpOw0KCQlmUUMyID0gdGhpcy5nZXRDb21tcygp
LnJlcXVlc3QuZ2V0UGFyYW1ldGVyVmFsdWVzKCJRQzIiKTsNCgkJZmluZENv
bXBGaWx0ZXIgPSB0aGlzLmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJhbWV0
ZXIoImluZENvbXBGaWx0ZXIiKTsNCgkJZmluZEZpbHRlciA9IHRoaXMuZ2V0
Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiaW5kRmlsdGVyIik7DQoJ
CWZiaW9GaWx0ZXIgPSB0aGlzLmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJh
bWV0ZXIoImJpb0ZpbHRlciIpOw0KCQkNCgkJZmFjdXRlQ29tcEZpbHRlciA9
IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiYWN1dGVD
b21wRmlsdGVyIik7DQoJCWZNYWN1dGVDb21wRmlsdGVyID0gdGhpcy5nZXRD
b21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJtQWN1dGVDb21wRmlsdGVy
Iik7DQoJCWZCYWN1dGVDb21wRmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJl
cXVlc3QuZ2V0UGFyYW1ldGVyKCJiQWN1dGVDb21wRmlsdGVyIik7DQoJCWZZ
YWN1dGVDb21wRmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0
UGFyYW1ldGVyKCJ5QWN1dGVDb21wRmlsdGVyIik7DQoJCWZNQmFjdXRlQ29t
cEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRl
cigibWJBY3V0ZUNvbXBGaWx0ZXIiKTsNCgkJDQoJCWZhY3V0ZUZpbHRlciA9
IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiYWN1dGVG
aWx0ZXIiKTsNCgkJZk1hY3V0ZUZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5y
ZXF1ZXN0LmdldFBhcmFtZXRlcigibUFjdXRlRmlsdGVyIik7DQoJCWZCYWN1
dGVGaWx0ZXIgPSB0aGlzLmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJhbWV0
ZXIoImJBY3V0ZUZpbHRlciIpOw0KCQlmWWFjdXRlRmlsdGVyID0gdGhpcy5n
ZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJ5QWN1dGVGaWx0ZXIi
KTsNCgkJZk1CYWN1dGVGaWx0ZXIgPSB0aGlzLmdldENvbW1zKCkucmVxdWVz
dC5nZXRQYXJhbWV0ZXIoIm1iQWN1dGVGaWx0ZXIiKTsNCgkJDQoJCWZhaXJD
b21wRmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1l
dGVyKCJhaXJDb21wRmlsdGVyIik7DQoJCWZNYWlyQ29tcEZpbHRlciA9IHRo
aXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigibUFpckNvbXBG
aWx0ZXIiKTsNCgkJZkJhaXJDb21wRmlsdGVyID0gdGhpcy5nZXRDb21tcygp
LnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJiQWlyQ29tcEZpbHRlciIpOw0KCQlm
WWFpckNvbXBGaWx0ZXIgPSB0aGlzLmdldENvbW1zKCkucmVxdWVzdC5nZXRQ
YXJhbWV0ZXIoInlBaXJDb21wRmlsdGVyIik7DQoJCWZNQmFpckNvbXBGaWx0
ZXIgPSB0aGlzLmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJhbWV0ZXIoIm1i
QWlyQ29tcEZpbHRlciIpOw0KDQoJCQ0KCQkNCgkJZmFpcndheUZpbHRlciA9
IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiYWlyd2F5
RmlsdGVyIik7DQoJCWZNYWlyd2F5RmlsdGVyID0gdGhpcy5nZXRDb21tcygp
LnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJtQWlyd2F5RmlsdGVyIik7DQoJCWZC
YWlyd2F5RmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFy
YW1ldGVyKCJtQWlyd2F5RmlsdGVyIik7DQoJCWZZYWlyd2F5RmlsdGVyID0g
dGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJ5QWlyd2F5
RmlsdGVyIik7DQoJCWZNQmFpcndheUZpbHRlciA9IHRoaXMuZ2V0Q29tbXMo
KS5yZXF1ZXN0LmdldFBhcmFtZXRlcigibWJBaXJ3YXlGaWx0ZXIiKTsNCg0K
CQkNCgkJZmN2ckZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0Lmdl
dFBhcmFtZXRlcigiY3ZyRmlsdGVyIik7DQoJCWZvYkZpbHRlciA9IHRoaXMu
Z2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigib2JGaWx0ZXIiKTsN
CgkJZnBheEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBh
cmFtZXRlcigicGF4RmlsdGVyIik7DQoJCWZwYXhDb21wRmlsdGVyID0gdGhp
cy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJwYXhDb21wRmls
dGVyIik7DQoJCWZjcHRGaWx0ZXIgPSB0aGlzLmdldENvbW1zKCkucmVxdWVz
dC5nZXRQYXJhbWV0ZXIoImNwdEZpbHRlciIpOw0KCQlmY3B0Q29tcEZpbHRl
ciA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiY3B0
Q29tcEZpbHRlciIpOw0KDQoJCWZjc0ZpbHRlciA9IHRoaXMuZ2V0Q29tbXMo
KS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiY3NGaWx0ZXIiKTsNCgkJZmNzQ29t
cEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRl
cigiY3NDb21wRmlsdGVyIik7DQoJCQ0KCQlmZW5yb2xsRHRDb21wRmlsdGVy
ID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJlbnJv
bGxEdENvbXBGaWx0ZXIiKTsNCgkJZmVucm9sbER0RmlsdGVyID0gdGhpcy5n
ZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJlbnJvbGxEdEZpbHRl
ciIpOw0KDQoJCWZpbmRUaGVyYXB5Q29tcEZpbHRlciA9IHRoaXMuZ2V0Q29t
bXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiaW5kVGhlcmFweUNvbXBGaWx0
ZXIiKTsNCgkJZmluZFRoZXJhcHlGaWx0ZXIgPSB0aGlzLmdldENvbW1zKCku
cmVxdWVzdC5nZXRQYXJhbWV0ZXIoImluZFRoZXJhcHlGaWx0ZXIiKTsNCg0K
CQlmb3RoZXJNZWRpY2F0aW9uQ29tcEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMo
KS5yZXF1ZXN0LmdldFBhcmFtZXRlcigib3RoZXJNZWRpY2F0aW9uQ29tcEZp
bHRlciIpOw0KCQlmb3RoZXJNZWRpY2F0aW9uRmlsdGVyID0gdGhpcy5nZXRD
b21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJvdGhlck1lZGljYXRpb25G
aWx0ZXIiKTsNCg0KCQlmcmVqVHJlYXRtZW50SGlzdG9yeUNvbXBGaWx0ZXIg
PSB0aGlzLmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJhbWV0ZXIoInJlalRy
ZWF0bWVudEhpc3RvcnlDb21wRmlsdGVyIik7DQoJCWZyZWpUcmVhdG1lbnRI
aXN0b3J5RmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFy
YW1ldGVyKCJyZWpUcmVhdG1lbnRIaXN0b3J5RmlsdGVyIik7DQoJCQ0KCQlm
cmVjZXBpZW50Q01WTWV0aG9kQ29tcEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMo
KS5yZXF1ZXN0LmdldFBhcmFtZXRlcigicmVjZXBpZW50Q01WTWV0aG9kQ29t
cEZpbHRlciIpOw0KCQlmcmVjZXBpZW50Q01WTWV0aG9kRmlsdGVyID0gdGhp
cy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJyZWNlcGllbnRD
TVZNZXRob2RGaWx0ZXIiKTsNCgkJDQoJCWZyZWplY3Rpb25UcmVhdG1lbnRz
Q29tcEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFt
ZXRlcigicmVqZWN0aW9uVHJlYXRtZW50c0NvbXBGaWx0ZXIiKTsNCgkJZnJl
amVjdGlvblRyZWF0bWVudHNGaWx0ZXIgPSB0aGlzLmdldENvbW1zKCkucmVx
dWVzdC5nZXRQYXJhbWV0ZXIoInJlamVjdGlvblRyZWF0bWVudHNGaWx0ZXIi
KTsNCg0KCQlmY29tcENvbW1lbnRzQ29tcEZpbHRlciA9IHRoaXMuZ2V0Q29t
bXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiY29tcENvbW1lbnRzQ29tcEZp
bHRlciIpOwkJDQoJCWZjb21wQ29tbWVudHNGaWx0ZXIgPSB0aGlzLmdldENv
bW1zKCkucmVxdWVzdC5nZXRQYXJhbWV0ZXIoImNvbXBDb21tZW50c0ZpbHRl
ciIpOw0KCQkNCgkJZmZuQ29tbWVudHNDb21wRmlsdGVyID0gdGhpcy5nZXRD
b21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJmbkNvbW1lbnRzQ29tcEZp
bHRlciIpOwkJDQoJCWZmbkNvbW1lbnRzRmlsdGVyID0gdGhpcy5nZXRDb21t
cygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJmbkNvbW1lbnRzRmlsdGVyIik7
DQoNCgkJZmJBTENvbW1lbnRzQ29tcEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMo
KS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiYkFMQ29tbWVudHNDb21wRmlsdGVy
Iik7DQoJCWZiQUxDb21tZW50c0ZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5y
ZXF1ZXN0LmdldFBhcmFtZXRlcigiYkFMQ29tbWVudHNGaWx0ZXIiKTsNCgkJ
DQoJCWluZkNvbW1lbnRzQ29tcEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5y
ZXF1ZXN0LmdldFBhcmFtZXRlcigiSW5mQ29tbWVudHNDb21wRmlsdGVyIik7
DQoJCWluZkNvbW1lbnRzRmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJlcXVl
c3QuZ2V0UGFyYW1ldGVyKCJJbmZDb21tZW50c0ZpbHRlciIpOw0KDQoJCW1i
Q29tbWVudHNDb21wRmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3Qu
Z2V0UGFyYW1ldGVyKCJNQkNvbW1lbnRzQ29tcEZpbHRlciIpOw0KCQltYkNv
bW1lbnRzRmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFy
YW1ldGVyKCJNQkNvbW1lbnRzRmlsdGVyIik7DQoNCgkJc3VtbWFyeUNvbW1l
bnRzQ29tcEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBh
cmFtZXRlcigiU3VtbWFyeUNvbW1lbnRzQ29tcEZpbHRlciIpOw0KCQlzdW1t
YXJ5Q29tbWVudHNGaWx0ZXIgPSB0aGlzLmdldENvbW1zKCkucmVxdWVzdC5n
ZXRQYXJhbWV0ZXIoIlN1bW1hcnlDb21tZW50c0ZpbHRlciIpOw0KDQoJCWlu
ZFRoZXJhcHlDb21tZW50c0NvbXBGaWx0ZXIgPSB0aGlzLmdldENvbW1zKCku
cmVxdWVzdC5nZXRQYXJhbWV0ZXIoIkluZFRoZXJhcHlDb21tZW50c0NvbXBG
aWx0ZXIiKTsNCgkJaW5kVGhlcmFweUNvbW1lbnRzRmlsdGVyID0gdGhpcy5n
ZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJJbmRUaGVyYXB5Q29t
bWVudHNGaWx0ZXIiKTsNCg0KCQlyZWplY3Rpb25FcGlzb2RlQ29tbWVudHND
b21wRmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1l
dGVyKCJSZWplY3Rpb25FcGlzb2RlQ29tbWVudHNDb21wRmlsdGVyIik7DQoJ
CXJlamVjdGlvbkVwaXNvZGVDb21tZW50c0ZpbHRlciA9IHRoaXMuZ2V0Q29t
bXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiUmVqZWN0aW9uRXBpc29kZUNv
bW1lbnRzRmlsdGVyIik7DQoNCgkJDQoJCWZpbmZGaWx0ZXIgPSB0aGlzLmdl
dENvbW1zKCkucmVxdWVzdC5nZXRQYXJhbWV0ZXIoImluZkZpbHRlciIpOw0K
CQlmcmVqRmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFy
YW1ldGVyKCJyZWpGaWx0ZXIiKTsNCgkJZnJlalRoRmlsdGVyID0gdGhpcy5n
ZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJyZWpUaEZpbHRlciIp
Ow0KCQlmY212RmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0
UGFyYW1ldGVyKCJjbXZGaWx0ZXIiKTsNCgkJZmFkbUZpbHRlciA9IHRoaXMu
Z2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiYWRtRmlsdGVyIik7
DQoJCWZjb21wRmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0
UGFyYW1ldGVyKCJjb21wRmlsdGVyIik7DQoJCWZjRGVzY0NvbXBGaWx0ZXIg
PSB0aGlzLmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJhbWV0ZXIoImNEZXNj
Q29tcEZpbHRlciIpOw0KCQlmY0Rlc2NGaWx0ZXIgPSB0aGlzLmdldENvbW1z
KCkucmVxdWVzdC5nZXRQYXJhbWV0ZXIoImNEZXNjRmlsdGVyIik7DQoJCWZk
YXlzQ29tcEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBh
cmFtZXRlcigiZGF5c0NvbXBGaWx0ZXIiKTsNCgkJZmRheXNGaWx0ZXIgPSB0
aGlzLmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJhbWV0ZXIoImRheXNGaWx0
ZXIiKTsNCgkJZmJhbEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0
LmdldFBhcmFtZXRlcigiYmFsRmlsdGVyIik7DQoJCWZiYWxDZWxsRmlsdGVy
ID0gdGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJiYWxD
ZWxsRmlsdGVyIik7DQoJCWZmdEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5y
ZXF1ZXN0LmdldFBhcmFtZXRlcigiZnRGaWx0ZXIiKTsNCgkJZmRGRVYxQ29t
cEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRl
cigiZEZFVjFDb21wRmlsdGVyIik7DQoJCWZkRkVWMUZpbHRlciA9IHRoaXMu
Z2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiZEZFVjFGaWx0ZXIi
KTsNCgkJZmluZk9yZ0NvbXBGaWx0ZXIgPSB0aGlzLmdldENvbW1zKCkucmVx
dWVzdC5nZXRQYXJhbWV0ZXIoImluZk9yZ0NvbXBGaWx0ZXIiKTsNCgkJZmlu
Zk9yZ0ZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFt
ZXRlcigiaW5mT3JnRmlsdGVyIik7DQoJCWZiYWxPcmdDb21wRmlsdGVyID0g
dGhpcy5nZXRDb21tcygpLnJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJiYWxPcmdD
b21wRmlsdGVyIik7DQoJCWZiYWxPcmdGaWx0ZXIgPSB0aGlzLmdldENvbW1z
KCkucmVxdWVzdC5nZXRQYXJhbWV0ZXIoImJhbE9yZ0ZpbHRlciIpOw0KCQlm
cmVqVGhSZWFzb25zQ29tcEZpbHRlciA9IHRoaXMuZ2V0Q29tbXMoKS5yZXF1
ZXN0LmdldFBhcmFtZXRlcigicmVqVGhSZWFzb25zQ29tcEZpbHRlciIpOw0K
CQlmcmVqVGhSZWFzb25zRmlsdGVyID0gdGhpcy5nZXRDb21tcygpLnJlcXVl
c3QuZ2V0UGFyYW1ldGVyKCJyZWpUaFJlYXNvbnNGaWx0ZXIiKTsNCgkJZmFn
ZUNvbXBGaWx0ZXIgPSB0aGlzLmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJh
bWV0ZXIoImFnZUNvbXBGaWx0ZXIiKTsNCgkJZmFnZUZpbHRlciA9IHRoaXMu
Z2V0Q29tbXMoKS5yZXF1ZXN0LmdldFBhcmFtZXRlcigiYWdlRmlsdGVyIik7
DQoJCWZvMlNhdENvbXBGaWx0ZXIgPSB0aGlzLmdldENvbW1zKCkucmVxdWVz
dC5nZXRQYXJhbWV0ZXIoIm8yU2F0Q29tcEZpbHRlciIpOw0KCQlmbzJTYXRG
aWx0ZXIgPSB0aGlzLmdldENvbW1zKCkucmVxdWVzdC5nZXRQYXJhbWV0ZXIo
Im8yU2F0RmlsdGVyIik7DQoNCgkJZmV2ZW50ID0gKGZldmVudCA9PSBudWxs
KSA/ICIiIDogZmV2ZW50Ow0KCQlmcXVlcnlJZCA9IChmcXVlcnlJZCA9PSBu
dWxsKSA/ICIiIDogZnF1ZXJ5SWQ7DQoJCWZxdWVyeU5hbWUgPSAoZnF1ZXJ5
TmFtZSA9PSBudWxsKSA/ICIiIDogZnF1ZXJ5TmFtZTsNCgkJZnF1ZXJ5ID0g
KGZxdWVyeSA9PSBudWxsKSA/ICIiIDogZnF1ZXJ5Ow0KCQlmYXR0ckxpc3Qg
PSAoZmF0dHJMaXN0ID09IG51bGwpID8gIiIgOiBmYXR0ckxpc3Q7DQoJCWZj
ZW50ZXJJZCA9IChmY2VudGVySWQgPT0gbnVsbCkgPyAiIiA6IGZjZW50ZXJJ
ZDsNCgkJZmNlbnRlck5hbWUgPSAoZmNlbnRlck5hbWUgPT0gbnVsbCkgPyAi
IiA6IGZjZW50ZXJOYW1lOw0KCQlmcGF0aWVudExpc3QgPSAoZnBhdGllbnRM
aXN0ID09IG51bGwpID8gIiIgOiBmcGF0aWVudExpc3Q7DQoJCWZzYW1wbGVM
aXN0ID0gKGZzYW1wbGVMaXN0ID09IG51bGwpID8gIiIgOiBmc2FtcGxlTGlz
dDsNCgkJZnNhbXBsZUZ3ZCA9IChmc2FtcGxlRndkID09IG51bGwpID8gIiIg
OiBmc2FtcGxlRndkOw0KCQlmc2FtcGxlUmV2ID0gKGZzYW1wbGVSZXYgPT0g
bnVsbCkgPyAiIiA6IGZzYW1wbGVSZXY7DQoNCgkJZmluZENvbXBGaWx0ZXIg
PSAoZmluZENvbXBGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZpbmRDb21wRmls
dGVyOw0KCQlmaW5kRmlsdGVyID0gKGZpbmRGaWx0ZXIgPT0gbnVsbCkgPyAi
IiA6IGZpbmRGaWx0ZXI7DQoNCgkJZmJpb0ZpbHRlciA9IChmYmlvRmlsdGVy
ID09IG51bGwpID8gIiIgOiBmYmlvRmlsdGVyOw0KCQkNCgkJZmFjdXRlQ29t
cEZpbHRlciA9IChmYWN1dGVDb21wRmlsdGVyID09IG51bGwpID8gIiIgOiBm
YWN1dGVDb21wRmlsdGVyOw0KCQlmTWFjdXRlQ29tcEZpbHRlciA9IChmTWFj
dXRlQ29tcEZpbHRlciA9PSBudWxsKSA/ICIiIDogZk1hY3V0ZUNvbXBGaWx0
ZXI7DQoJCWZCYWN1dGVDb21wRmlsdGVyID0gKGZCYWN1dGVDb21wRmlsdGVy
ID09IG51bGwpID8gIiIgOiBmQmFjdXRlQ29tcEZpbHRlcjsNCgkJZllhY3V0
ZUNvbXBGaWx0ZXIgPSAoZllhY3V0ZUNvbXBGaWx0ZXIgPT0gbnVsbCkgPyAi
IiA6IGZZYWN1dGVDb21wRmlsdGVyOw0KCQlmTUJhY3V0ZUNvbXBGaWx0ZXIg
PSAoZk1CYWN1dGVDb21wRmlsdGVyID09IG51bGwpID8gIiIgOiBmTUJhY3V0
ZUNvbXBGaWx0ZXI7DQoJCQ0KCQkNCgkJZmFjdXRlRmlsdGVyID0gKGZhY3V0
ZUZpbHRlciA9PSBudWxsKSA/ICIiIDogZmFjdXRlRmlsdGVyOw0KCQlmTWFj
dXRlRmlsdGVyID0gKGZNYWN1dGVGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZN
YWN1dGVGaWx0ZXI7DQoJCWZCYWN1dGVGaWx0ZXIgPSAoZkJhY3V0ZUZpbHRl
ciA9PSBudWxsKSA/ICIiIDogZkJhY3V0ZUZpbHRlcjsNCgkJZllhY3V0ZUZp
bHRlciA9IChmWWFjdXRlRmlsdGVyID09IG51bGwpID8gIiIgOiBmWWFjdXRl
RmlsdGVyOw0KCQlmTUJhY3V0ZUZpbHRlciA9IChmTUJhY3V0ZUZpbHRlciA9
PSBudWxsKSA/ICIiIDogZk1CYWN1dGVGaWx0ZXI7DQoJCQ0KCQlmYWlyQ29t
cEZpbHRlciA9IChmYWlyQ29tcEZpbHRlciA9PSBudWxsKSA/ICIiIDogZmFp
ckNvbXBGaWx0ZXI7DQoJCWZNYWlyQ29tcEZpbHRlciA9IChmTWFpckNvbXBG
aWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZNYWlyQ29tcEZpbHRlcjsNCgkJZkJh
aXJDb21wRmlsdGVyID0gKGZCYWlyQ29tcEZpbHRlciA9PSBudWxsKSA/ICIi
IDogZkJhaXJDb21wRmlsdGVyOw0KCQlmWWFpckNvbXBGaWx0ZXIgPSAoZllh
aXJDb21wRmlsdGVyID09IG51bGwpID8gIiIgOiBmWWFpckNvbXBGaWx0ZXI7
DQoJCWZNQmFpckNvbXBGaWx0ZXIgPSAoZk1CYWlyQ29tcEZpbHRlciA9PSBu
dWxsKSA/ICIiIDogZk1CYWlyQ29tcEZpbHRlcjsNCgkJDQoJCWZhaXJ3YXlG
aWx0ZXIgPSAoZmFpcndheUZpbHRlciA9PSBudWxsKSA/ICIiIDogZmFpcndh
eUZpbHRlcjsNCgkJZk1haXJ3YXlGaWx0ZXIgPSAoZk1haXJ3YXlGaWx0ZXIg
PT0gbnVsbCkgPyAiIiA6IGZNYWlyd2F5RmlsdGVyOw0KCQlmQmFpcndheUZp
bHRlciA9IChmQmFpcndheUZpbHRlciA9PSBudWxsKSA/ICIiIDogZkJhaXJ3
YXlGaWx0ZXI7DQoJCWZZYWlyd2F5RmlsdGVyID0gKGZZYWlyd2F5RmlsdGVy
ID09IG51bGwpID8gIiIgOiBmWWFpcndheUZpbHRlcjsNCgkJZk1CYWlyd2F5
RmlsdGVyID0gKGZNQmFpcndheUZpbHRlciA9PSBudWxsKSA/ICIiIDogZk1C
YWlyd2F5RmlsdGVyOw0KCQkNCgkJZmN2ckZpbHRlciA9IChmY3ZyRmlsdGVy
ID09IG51bGwpID8gIiIgOiBmY3ZyRmlsdGVyOw0KCQlmb2JGaWx0ZXIgPSAo
Zm9iRmlsdGVyID09IG51bGwpID8gIiIgOiBmb2JGaWx0ZXI7DQoNCgkJZmlu
ZkZpbHRlciA9IChmaW5mRmlsdGVyID09IG51bGwpID8gIiIgOiBmaW5mRmls
dGVyOw0KCQlmcmVqRmlsdGVyID0gKGZyZWpGaWx0ZXIgPT0gbnVsbCkgPyAi
IiA6IGZyZWpGaWx0ZXI7DQoJCWZyZWpUaEZpbHRlciA9IChmcmVqVGhGaWx0
ZXIgPT0gbnVsbCkgPyAiIiA6IGZyZWpUaEZpbHRlcjsNCgkJZmNtdkZpbHRl
ciA9IChmY212RmlsdGVyID09IG51bGwpID8gIiIgOiBmY212RmlsdGVyOw0K
CQlmYWRtRmlsdGVyID0gKGZhZG1GaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZh
ZG1GaWx0ZXI7DQoJCWZjb21wRmlsdGVyID0gKGZjb21wRmlsdGVyID09IG51
bGwpID8gIiIgOiBmY29tcEZpbHRlcjsNCgkJZmNEZXNjQ29tcEZpbHRlciA9
IChmY0Rlc2NDb21wRmlsdGVyID09IG51bGwpID8gIiIgOiBmY0Rlc2NDb21w
RmlsdGVyOw0KCQlmY0Rlc2NGaWx0ZXIgPSAoZmNEZXNjRmlsdGVyID09IG51
bGwpID8gIiIgOiBmY0Rlc2NGaWx0ZXI7DQoJCWZkYXlzQ29tcEZpbHRlciA9
IChmZGF5c0NvbXBGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZkYXlzQ29tcEZp
bHRlcjsNCgkJZmRheXNGaWx0ZXIgPSAoZmRheXNGaWx0ZXIgPT0gbnVsbCkg
PyAiIiA6IGZkYXlzRmlsdGVyOw0KCQlmYmFsRmlsdGVyID0gKGZiYWxGaWx0
ZXIgPT0gbnVsbCkgPyAiIiA6IGZiYWxGaWx0ZXI7DQoJCWZiYWxDZWxsRmls
dGVyID0gKGZiYWxDZWxsRmlsdGVyID09IG51bGwpID8gIiIgOiBmYmFsQ2Vs
bEZpbHRlcjsNCgkJZmZ0RmlsdGVyID0gKGZmdEZpbHRlciA9PSBudWxsKSA/
ICIiIDogZmZ0RmlsdGVyOw0KCQlmZEZFVjFDb21wRmlsdGVyID0gKGZkRkVW
MUNvbXBGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZkRkVWMUNvbXBGaWx0ZXI7
DQoJCWZkRkVWMUZpbHRlciA9IChmZEZFVjFGaWx0ZXIgPT0gbnVsbCkgPyAi
IiA6IGZkRkVWMUZpbHRlcjsNCgkJZmluZk9yZ0NvbXBGaWx0ZXIgPSAoZmlu
Zk9yZ0NvbXBGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZpbmZPcmdDb21wRmls
dGVyOw0KCQlmaW5mT3JnRmlsdGVyID0gKGZpbmZPcmdGaWx0ZXIgPT0gbnVs
bCkgPyAiIiA6IGZpbmZPcmdGaWx0ZXI7DQoJCWZiYWxPcmdDb21wRmlsdGVy
ID0gKGZiYWxPcmdDb21wRmlsdGVyID09IG51bGwpID8gIiIgOiBmYmFsT3Jn
Q29tcEZpbHRlcjsNCgkJZmJhbE9yZ0ZpbHRlciA9IChmYmFsT3JnRmlsdGVy
ID09IG51bGwpID8gIiIgOiBmYmFsT3JnRmlsdGVyOw0KCQlmcmVqVGhSZWFz
b25zQ29tcEZpbHRlciA9IChmcmVqVGhSZWFzb25zQ29tcEZpbHRlciA9PSBu
dWxsKSA/ICIiIDogZnJlalRoUmVhc29uc0NvbXBGaWx0ZXI7DQoJCWZyZWpU
aFJlYXNvbnNGaWx0ZXIgPSAoZnJlalRoUmVhc29uc0ZpbHRlciA9PSBudWxs
KSA/ICIiIDogZnJlalRoUmVhc29uc0ZpbHRlcjsNCgkJZmFnZUNvbXBGaWx0
ZXIgPSAoZmFnZUNvbXBGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZhZ2VDb21w
RmlsdGVyOw0KCQlmYWdlRmlsdGVyID0gKGZhZ2VGaWx0ZXIgPT0gbnVsbCkg
PyAiIiA6IGZhZ2VGaWx0ZXI7DQoJCWZvMlNhdENvbXBGaWx0ZXIgPSAoZm8y
U2F0Q29tcEZpbHRlciA9PSBudWxsKSA/ICIiIDogZm8yU2F0Q29tcEZpbHRl
cjsNCgkJZm8yU2F0RmlsdGVyID0gKGZvMlNhdEZpbHRlciA9PSBudWxsKSA/
ICIiIDogZm8yU2F0RmlsdGVyOw0KDQoJCWZwYXhDb21wRmlsdGVyID0gKGZw
YXhDb21wRmlsdGVyID09IG51bGwpID8gIiIgOiBmcGF4Q29tcEZpbHRlcjsN
CgkJZnBheEZpbHRlciA9IChmcGF4RmlsdGVyID09IG51bGwpID8gIiIgOiBm
cGF4RmlsdGVyOw0KCQlmY3B0Q29tcEZpbHRlciA9IChmY3B0Q29tcEZpbHRl
ciA9PSBudWxsKSA/ICIiIDogZmNwdENvbXBGaWx0ZXI7DQoJCWZjcHRGaWx0
ZXIgPSAoZmNwdEZpbHRlciA9PSBudWxsKSA/ICIiIDogZmNwdEZpbHRlcjsN
CgkJZmNzQ29tcEZpbHRlciA9IChmY3NDb21wRmlsdGVyID09IG51bGwpID8g
IiIgOiBmY3NDb21wRmlsdGVyOw0KCQlmY3NGaWx0ZXIgPSAoZmNzRmlsdGVy
ID09IG51bGwpID8gIiIgOiBmY3NGaWx0ZXI7DQoJCQ0KCQlmZW5yb2xsRHRD
b21wRmlsdGVyID0gKGZlbnJvbGxEdENvbXBGaWx0ZXIgPT0gbnVsbCkgPyAi
IiA6IGZlbnJvbGxEdENvbXBGaWx0ZXI7DQoJCWZlbnJvbGxEdEZpbHRlciA9
IChmZW5yb2xsRHRGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZlbnJvbGxEdEZp
bHRlcjsNCgkJDQoJCWZpbmRUaGVyYXB5Q29tcEZpbHRlciA9IChmaW5kVGhl
cmFweUNvbXBGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZpbmRUaGVyYXB5Q29t
cEZpbHRlcjsNCgkJZmluZFRoZXJhcHlGaWx0ZXIgPSAoZmluZFRoZXJhcHlG
aWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZpbmRUaGVyYXB5RmlsdGVyOw0KDQoJ
CWZvdGhlck1lZGljYXRpb25Db21wRmlsdGVyID0gKGZvdGhlck1lZGljYXRp
b25Db21wRmlsdGVyID09IG51bGwpID8gIiIgOiBmb3RoZXJNZWRpY2F0aW9u
Q29tcEZpbHRlcjsNCgkJZm90aGVyTWVkaWNhdGlvbkZpbHRlciA9IChmb3Ro
ZXJNZWRpY2F0aW9uRmlsdGVyID09IG51bGwpID8gIiIgOiBmb3RoZXJNZWRp
Y2F0aW9uRmlsdGVyOw0KDQoJCWZyZWpUcmVhdG1lbnRIaXN0b3J5Q29tcEZp
bHRlciA9IChmcmVqVHJlYXRtZW50SGlzdG9yeUNvbXBGaWx0ZXIgPT0gbnVs
bCkgPyAiIiA6IGZyZWpUcmVhdG1lbnRIaXN0b3J5Q29tcEZpbHRlcjsNCgkJ
ZnJlalRyZWF0bWVudEhpc3RvcnlGaWx0ZXIgPSAoZnJlalRyZWF0bWVudEhp
c3RvcnlGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZyZWpUcmVhdG1lbnRIaXN0
b3J5RmlsdGVyOw0KCQkNCgkJZnJlY2VwaWVudENNVk1ldGhvZENvbXBGaWx0
ZXIgPSAoZnJlY2VwaWVudENNVk1ldGhvZENvbXBGaWx0ZXIgPT0gbnVsbCkg
PyAiIiA6IGZyZWNlcGllbnRDTVZNZXRob2RDb21wRmlsdGVyOw0KCQlmcmVj
ZXBpZW50Q01WTWV0aG9kRmlsdGVyID0gKGZyZWNlcGllbnRDTVZNZXRob2RG
aWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZyZWNlcGllbnRDTVZNZXRob2RGaWx0
ZXI7DQoJCQ0KCQlmcmVqZWN0aW9uVHJlYXRtZW50c0NvbXBGaWx0ZXIgPSAo
ZnJlamVjdGlvblRyZWF0bWVudHNDb21wRmlsdGVyID09IG51bGwpID8gIiIg
OiBmcmVqZWN0aW9uVHJlYXRtZW50c0NvbXBGaWx0ZXI7DQoJCWZyZWplY3Rp
b25UcmVhdG1lbnRzRmlsdGVyID0gKGZyZWplY3Rpb25UcmVhdG1lbnRzRmls
dGVyID09IG51bGwpID8gIiIgOiBmcmVqZWN0aW9uVHJlYXRtZW50c0ZpbHRl
cjsNCgkJDQoJCWZjb21wQ29tbWVudHNDb21wRmlsdGVyID0gKGZjb21wQ29t
bWVudHNDb21wRmlsdGVyID09IG51bGwpID8gIiIgOiBmY29tcENvbW1lbnRz
Q29tcEZpbHRlcjsNCgkJZmNvbXBDb21tZW50c0ZpbHRlciA9IChmY29tcENv
bW1lbnRzRmlsdGVyID09IG51bGwpID8gIiIgOiBmY29tcENvbW1lbnRzRmls
dGVyOw0KDQoJCWZmbkNvbW1lbnRzQ29tcEZpbHRlciA9IChmZm5Db21tZW50
c0NvbXBGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IGZmbkNvbW1lbnRzQ29tcEZp
bHRlcjsNCgkJZmZuQ29tbWVudHNGaWx0ZXIgPSAoZmZuQ29tbWVudHNGaWx0
ZXIgPT0gbnVsbCkgPyAiIiA6IGZmbkNvbW1lbnRzRmlsdGVyOw0KCQkNCgkJ
ZmJBTENvbW1lbnRzQ29tcEZpbHRlciA9IChmYkFMQ29tbWVudHNDb21wRmls
dGVyID09IG51bGwpID8gIiIgOiBmYkFMQ29tbWVudHNDb21wRmlsdGVyOw0K
CQlmYkFMQ29tbWVudHNGaWx0ZXIgPSAoZmJBTENvbW1lbnRzRmlsdGVyID09
IG51bGwpID8gIiIgOiBmYkFMQ29tbWVudHNGaWx0ZXI7CQkNCgkJDQoJCWlu
ZkNvbW1lbnRzQ29tcEZpbHRlciA9IChpbmZDb21tZW50c0NvbXBGaWx0ZXIg
PT0gbnVsbCkgPyAiIiA6IGluZkNvbW1lbnRzQ29tcEZpbHRlcjsNCgkJaW5m
Q29tbWVudHNGaWx0ZXIgPSAoaW5mQ29tbWVudHNGaWx0ZXIgPT0gbnVsbCkg
PyAiIiA6IGluZkNvbW1lbnRzRmlsdGVyOw0KCQkNCgkJbWJDb21tZW50c0Nv
bXBGaWx0ZXIgPSAobWJDb21tZW50c0NvbXBGaWx0ZXIgPT0gbnVsbCkgPyAi
IiA6IG1iQ29tbWVudHNDb21wRmlsdGVyOw0KCQltYkNvbW1lbnRzRmlsdGVy
ID0gKG1iQ29tbWVudHNGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IG1iQ29tbWVu
dHNGaWx0ZXI7DQoJCQ0KCQlzdW1tYXJ5Q29tbWVudHNDb21wRmlsdGVyID0g
KHN1bW1hcnlDb21tZW50c0NvbXBGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6IHN1
bW1hcnlDb21tZW50c0NvbXBGaWx0ZXI7DQoJCXN1bW1hcnlDb21tZW50c0Zp
bHRlciA9IChzdW1tYXJ5Q29tbWVudHNGaWx0ZXIgPT0gbnVsbCkgPyAiIiA6
c3VtbWFyeUNvbW1lbnRzRmlsdGVyOw0KDQoJCWluZFRoZXJhcHlDb21tZW50
c0NvbXBGaWx0ZXIgPSAoaW5kVGhlcmFweUNvbW1lbnRzQ29tcEZpbHRlciA9
PSBudWxsKSA/ICIiIDogaW5kVGhlcmFweUNvbW1lbnRzQ29tcEZpbHRlcjsN
CgkJaW5kVGhlcmFweUNvbW1lbnRzRmlsdGVyID0gKGluZFRoZXJhcHlDb21t
ZW50c0ZpbHRlciA9PSBudWxsKSA/ICIiIDppbmRUaGVyYXB5Q29tbWVudHNG
aWx0ZXI7DQoNCgkJcmVqZWN0aW9uRXBpc29kZUNvbW1lbnRzQ29tcEZpbHRl
ciA9IChyZWplY3Rpb25FcGlzb2RlQ29tbWVudHNDb21wRmlsdGVyID09IG51
bGwpID8gIiIgOiByZWplY3Rpb25FcGlzb2RlQ29tbWVudHNDb21wRmlsdGVy
Ow0KCQlyZWplY3Rpb25FcGlzb2RlQ29tbWVudHNGaWx0ZXIgPSAocmVqZWN0
aW9uRXBpc29kZUNvbW1lbnRzRmlsdGVyID09IG51bGwpID8gIiIgOnJlamVj
dGlvbkVwaXNvZGVDb21tZW50c0ZpbHRlcjsNCg0KCX0NCg0KCXByaXZhdGUg
dm9pZCByZWFkUXVlcnlDcml0ZXJpYShMYXJnb1F1ZXJ5IGxvYykgIHsNCgkJ
Ly9TeXN0ZW0ub3V0LnByaW50bG4oInJlYWRRdWVyeUNyaXRlcmlhKCkgIG1l
dGhvZCBjYWxsZWQgPT09PT09PT0gIik7DQoJCWZldmVudCA9ICIiOw0KCQlm
cXVlcnlJZCA9IGxvYy5nZXRRdWVyeUlkKCkrIiI7DQoNCgkJLy9TeXN0ZW0u
b3V0LnByaW50bG4oIlJlYWQgIitsb2MuZ2V0QXR0ckxpc3QoKSk7DQoJCWlm
IChmYXR0ckxpc3QuZXF1YWxzKCIiKSkgew0KCQkJZmF0dHJMaXN0ID0gbG9j
LmdldEF0dHJMaXN0KCk7DQoJCQlmYXR0ckxpc3QgPSAoZmF0dHJMaXN0ID09
IG51bGwpID8gIiIgOiBmYXR0ckxpc3Q7DQoJCX0NCg0KCQkvL2lmIChmYXR0
ci5sZW5ndGggPT0gMCkNCgkJLy8JZmF0dHIgPSBsb2MuZ2V0QXR0ckxpc3Qo
KS5zcGxpdCgiLCIpOw0KDQoJCWlmIChmY2VudGVySWQuZXF1YWxzKCIiKSkg
ew0KCQkJZmNlbnRlcklkID0gKGxvYy5nZXRDZW50ZXJJZCgpID09IG51bGwp
ID8gIiIgOiBsb2MuZ2V0Q2VudGVySWQoKTsNCgkJCWZjZW50ZXJOYW1lID0g
KGxvYy5nZXRDZW50ZXJOYW1lKCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRD
ZW50ZXJOYW1lKCk7DQoJCX0NCgkJZWxzZSB7DQoJCQlsb2Muc2V0Q2VudGVy
SWQoZmNlbnRlcklkKTsNCgkJCWxvYy5zZXRDZW50ZXJOYW1lKGZjZW50ZXJO
YW1lKTsNCgkJfQ0KCQlpZiAoZnBhdGllbnRMaXN0LmVxdWFscygiIikpDQoJ
CQlmcGF0aWVudExpc3QgPSAobG9jLmdldFBhdGllbnRMaXN0KCkgPT0gbnVs
bCkgPyAiIiA6IGxvYy5nZXRQYXRpZW50TGlzdCgpOw0KCQllbHNlDQoJCQls
b2Muc2V0UGF0aWVudExpc3QoZnBhdGllbnRMaXN0KTsNCg0KCQlpZiAoZnNh
bXBsZUxpc3QuZXF1YWxzKCIiKSkNCgkJCWZzYW1wbGVMaXN0ID0gKGxvYy5n
ZXRTYW1wbGVMaXN0KCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRTYW1wbGVM
aXN0KCk7DQoJCWVsc2UNCgkJCWxvYy5zZXRTYW1wbGVMaXN0KGZzYW1wbGVM
aXN0KTsNCg0KCQlpZiAoZnNhbXBsZUZ3ZC5lcXVhbHMoIiIpKQ0KCQkJZnNh
bXBsZUZ3ZCA9IChsb2MuZ2V0U2FtcGxlRndkKCkgPT0gbnVsbCkgPyAiIiA6
IGxvYy5nZXRTYW1wbGVGd2QoKTsNCgkJZWxzZQ0KCQkJbG9jLnNldFNhbXBs
ZUZ3ZChmc2FtcGxlRndkKTsNCg0KCQlpZiAoZnNhbXBsZVJldi5lcXVhbHMo
IiIpKQ0KCQkJZnNhbXBsZVJldiA9IChsb2MuZ2V0U2FtcGxlUmV2KCkgPT0g
bnVsbCkgPyAiIiA6IGxvYy5nZXRTYW1wbGVSZXYoKTsNCgkJZWxzZQ0KCQkJ
bG9jLnNldFNhbXBsZVJldihmc2FtcGxlUmV2KTsNCg0KCQlib29sZWFuIHF1
ZXJ5Q2hhbmdlZCA9IGZhbHNlOw0KDQoJCWlmIChmcXVlcnkuZXF1YWxzKCJD
IikgJiYgIShmY2VudGVySWQuZXF1YWxzKGxvYy5nZXRDZW50ZXJJZCgpKSkp
IHF1ZXJ5Q2hhbmdlZCA9IHRydWU7DQoJCS8vaWYgKGZxdWVyeS5lcXVhbHMo
IiIpICYmICEoZmNlbnRlck5hbWUuZXF1YWxzKGxvYy5nZXRDZW50ZXJOYW1l
KCkpKSkgcXVlcnlDaGFuZ2VkID0gdHJ1ZTsNCgkJaWYgKGZxdWVyeS5lcXVh
bHMoIkMiKSAmJiAhKGZwYXRpZW50TGlzdC5lcXVhbHMobG9jLmdldFBhdGll
bnRMaXN0KCkpKSkgcXVlcnlDaGFuZ2VkID0gdHJ1ZTsNCgkJaWYgKGZxdWVy
eS5lcXVhbHMoIkMiKSAmJiAhKGZzYW1wbGVMaXN0LmVxdWFscyhsb2MuZ2V0
U2FtcGxlTGlzdCgpKSkpIHF1ZXJ5Q2hhbmdlZCA9IHRydWU7DQoNCgkJaWYg
KGZxdWVyeS5lcXVhbHMoIkMiKSAmJiAhKGZhdHRyTGlzdC5lcXVhbHMobG9j
LmdldEF0dHJMaXN0KCkpKSkgcXVlcnlDaGFuZ2VkID0gdHJ1ZTsNCg0KCQkv
L2ZxdWVyeU5hbWUgPSAocXVlcnlDaGFuZ2VkKSA/IGxvYy5nZXRRdWVyeU5h
bWUoKSsiKiIgOiBsb2MuZ2V0UXVlcnlOYW1lKCk7DQoNCgkJZnF1ZXJ5TmFt
ZSA9IGxvYy5nZXRRdWVyeU5hbWUoKTsNCg0KCQkvKmZjZW50ZXJJZCA9IGxv
Yy5nZXRDZW50ZXJJZCgpOw0KCQlpZiAoZmNlbnRlck5hbWUuZXF1YWxzKCIi
KSkgZmNlbnRlck5hbWUgPSBsb2MuZ2V0Q2VudGVyTmFtZSgpOw0KCQlpZiAo
ZnNhbXBsZUxpc3QuZXF1YWxzKCIiKSkgZnNhbXBsZUxpc3QgPSBsb2MuZ2V0
U2FtcGxlTGlzdCgpOyovDQoNCg0KCQlmUUMxID0gbmV3IFN0cmluZ1swXTsN
CgkJZlFDMiA9IG5ldyBTdHJpbmdbMF07DQoNCgkJZmluZENvbXBGaWx0ZXIg
PSAobG9jLmdldEluZENvbXBGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDogbG9j
LmdldEluZENvbXBGaWx0ZXIoKTsNCgkJZmluZEZpbHRlciA9IChsb2MuZ2V0
SW5kRmlsdGVyKCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRJbmRGaWx0ZXIo
KTsNCgkJZmJpb0ZpbHRlciA9IChsb2MuZ2V0QmlvRmlsdGVyKCkgPT0gbnVs
bCkgPyAiIiA6IGxvYy5nZXRCaW9GaWx0ZXIoKTsNCgkJDQoJCWZhY3V0ZUNv
bXBGaWx0ZXIgPSAobG9jLmdldEFjdXRlQ29tcEZpbHRlcigpID09IG51bGwp
ID8gIiIgOiBsb2MuZ2V0QWN1dGVDb21wRmlsdGVyKCk7DQoJCWZNYWN1dGVD
b21wRmlsdGVyID0gKGxvYy5nZXRNQWN1dGVDb21wRmlsdGVyKCkgPT0gbnVs
bCkgPyAiIiA6IGxvYy5nZXRNQWN1dGVDb21wRmlsdGVyKCk7DQoJCWZCYWN1
dGVDb21wRmlsdGVyID0gKGxvYy5nZXRCQWN1dGVDb21wRmlsdGVyKCkgPT0g
bnVsbCkgPyAiIiA6IGxvYy5nZXRCQWN1dGVDb21wRmlsdGVyKCk7DQoJCWZZ
YWN1dGVDb21wRmlsdGVyID0gKGxvYy5nZXRZQWN1dGVDb21wRmlsdGVyKCkg
PT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRZQWN1dGVDb21wRmlsdGVyKCk7DQoJ
CWZNQmFjdXRlQ29tcEZpbHRlciA9IChsb2MuZ2V0TWJBY3V0ZUNvbXBGaWx0
ZXIoKSA9PSBudWxsKSA/ICIiIDogbG9jLmdldE1iQWN1dGVDb21wRmlsdGVy
KCk7DQoJCQ0KCQlmYWN1dGVGaWx0ZXIgPSAobG9jLmdldEFjdXRlRmlsdGVy
KCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRBY3V0ZUZpbHRlcigpOw0KCQlm
TWFjdXRlRmlsdGVyID0gKGxvYy5nZXRNQWN1dGVGaWx0ZXIoKSA9PSBudWxs
KSA/ICIiIDogbG9jLmdldE1BY3V0ZUZpbHRlcigpOw0KCQlmQmFjdXRlRmls
dGVyID0gKGxvYy5nZXRCQWN1dGVGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDog
bG9jLmdldEJBY3V0ZUZpbHRlcigpOw0KCQlmWWFjdXRlRmlsdGVyID0gKGxv
Yy5nZXRZQWN1dGVGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDogbG9jLmdldFlB
Y3V0ZUZpbHRlcigpOw0KCQlmTUJhY3V0ZUZpbHRlciA9IChsb2MuZ2V0TWJB
Y3V0ZUZpbHRlcigpID09IG51bGwpID8gIiIgOiBsb2MuZ2V0TWJBY3V0ZUZp
bHRlcigpOw0KCQkNCgkJZmFpckNvbXBGaWx0ZXIgPSAobG9jLmdldEFpckNv
bXBGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDogbG9jLmdldEFpckNvbXBGaWx0
ZXIoKTsNCgkJZk1haXJDb21wRmlsdGVyID0gKGxvYy5nZXRNQWlyQ29tcEZp
bHRlcigpID09IG51bGwpID8gIiIgOiBsb2MuZ2V0TUFpckNvbXBGaWx0ZXIo
KTsNCgkJZkJhaXJDb21wRmlsdGVyID0gKGxvYy5nZXRCQWlyQ29tcEZpbHRl
cigpID09IG51bGwpID8gIiIgOiBsb2MuZ2V0QkFpckNvbXBGaWx0ZXIoKTsN
CgkJZllhaXJDb21wRmlsdGVyID0gKGxvYy5nZXRZQWlyQ29tcEZpbHRlcigp
ID09IG51bGwpID8gIiIgOiBsb2MuZ2V0WUFpckNvbXBGaWx0ZXIoKTsNCgkJ
Zk1CYWlyQ29tcEZpbHRlciA9IChsb2MuZ2V0TWJBaXJDb21wRmlsdGVyKCkg
PT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRNYkFpckNvbXBGaWx0ZXIoKTsNCgkJ
DQoJCQ0KCQlmYWlyd2F5RmlsdGVyID0gKGxvYy5nZXRBaXJ3YXlGaWx0ZXIo
KSA9PSBudWxsKSA/ICIiIDogbG9jLmdldEFpcndheUZpbHRlcigpOw0KCQlm
TWFpcndheUZpbHRlciA9IChsb2MuZ2V0TUFpcndheUZpbHRlcigpID09IG51
bGwpID8gIiIgOiBsb2MuZ2V0TUFpcndheUZpbHRlcigpOw0KCQlmQmFpcndh
eUZpbHRlciA9IChsb2MuZ2V0QkFpcndheUZpbHRlcigpID09IG51bGwpID8g
IiIgOiBsb2MuZ2V0QkFpcndheUZpbHRlcigpOw0KCQlmWWFpcndheUZpbHRl
ciA9IChsb2MuZ2V0WUFpcndheUZpbHRlcigpID09IG51bGwpID8gIiIgOiBs
b2MuZ2V0WUFpcndheUZpbHRlcigpOw0KCQlmTUJhaXJ3YXlGaWx0ZXIgPSAo
bG9jLmdldE1iQWlyd2F5RmlsdGVyKCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5n
ZXRNYkFpcndheUZpbHRlcigpOw0KDQoJCWZvYkZpbHRlciA9IChsb2MuZ2V0
T2JGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDogbG9jLmdldE9iRmlsdGVyKCk7
DQoJCWZjdnJGaWx0ZXIgPSAobG9jLmdldEN2ckZpbHRlcigpID09IG51bGwp
ID8gIiIgOiBsb2MuZ2V0Q3ZyRmlsdGVyKCk7DQoNCgkJZmluZkZpbHRlciA9
IChsb2MuZ2V0SW5mRmlsdGVyKCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRJ
bmZGaWx0ZXIoKTsNCgkJZnJlakZpbHRlciA9IChsb2MuZ2V0UmVqRmlsdGVy
KCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRSZWpGaWx0ZXIoKTsNCgkJZnJl
alRoRmlsdGVyID0gKGxvYy5nZXRSZWpUaEZpbHRlcigpID09IG51bGwpID8g
IiIgOiBsb2MuZ2V0UmVqVGhGaWx0ZXIoKTsNCgkJZmNtdkZpbHRlciA9IChs
b2MuZ2V0Q212RmlsdGVyKCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRDbXZG
aWx0ZXIoKTsNCgkJZmFkbUZpbHRlciA9IChsb2MuZ2V0QWRtRmlsdGVyKCkg
PT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRBZG1GaWx0ZXIoKTsNCgkJZmNvbXBG
aWx0ZXIgPSAobG9jLmdldENvbXBGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDog
bG9jLmdldENvbXBGaWx0ZXIoKTsNCgkJZmNEZXNjQ29tcEZpbHRlciA9IChs
b2MuZ2V0Q2Rlc2NDb21wRmlsdGVyKCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5n
ZXRDZGVzY0NvbXBGaWx0ZXIoKTsNCgkJZmNEZXNjRmlsdGVyID0gKGxvYy5n
ZXRDZGVzY0ZpbHRlcigpID09IG51bGwpID8gIiIgOiBsb2MuZ2V0Q2Rlc2NG
aWx0ZXIoKTsNCgkJZmRheXNDb21wRmlsdGVyID0gKGxvYy5nZXREYXlzQ29t
cEZpbHRlcigpID09IG51bGwpID8gIiIgOiBsb2MuZ2V0RGF5c0NvbXBGaWx0
ZXIoKTsNCgkJZmRheXNGaWx0ZXIgPSAobG9jLmdldERheXNGaWx0ZXIoKSA9
PSBudWxsKSA/ICIiIDogbG9jLmdldERheXNGaWx0ZXIoKTsNCgkJZmJhbEZp
bHRlciA9IChsb2MuZ2V0QmFsRmlsdGVyKCkgPT0gbnVsbCkgPyAiIiA6IGxv
Yy5nZXRCYWxGaWx0ZXIoKTsNCgkJZmJhbENlbGxGaWx0ZXIgPSAobG9jLmdl
dEJhbENlbGxGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDogbG9jLmdldEJhbENl
bGxGaWx0ZXIoKTsNCgkJZmZ0RmlsdGVyID0gKGxvYy5nZXRGdEZpbHRlcigp
ID09IG51bGwpID8gIiIgOiBsb2MuZ2V0RnRGaWx0ZXIoKTsNCgkJZmRGRVYx
Q29tcEZpbHRlciA9IChsb2MuZ2V0RGZldjFDb21wRmlsdGVyKCkgPT0gbnVs
bCkgPyAiIiA6IGxvYy5nZXREZmV2MUNvbXBGaWx0ZXIoKTsNCgkJZmRGRVYx
RmlsdGVyID0gKGxvYy5nZXREZmV2MUZpbHRlcigpID09IG51bGwpID8gIiIg
OiBsb2MuZ2V0RGZldjFGaWx0ZXIoKTsNCgkJZmluZk9yZ0NvbXBGaWx0ZXIg
PSAobG9jLmdldEluZk9yZ0NvbXBGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDog
bG9jLmdldEluZk9yZ0NvbXBGaWx0ZXIoKTsNCgkJZmluZk9yZ0ZpbHRlciA9
IChsb2MuZ2V0SW5mT3JnRmlsdGVyKCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5n
ZXRJbmZPcmdGaWx0ZXIoKTsNCgkJZmJhbE9yZ0NvbXBGaWx0ZXIgPSAobG9j
LmdldEJhbE9yZ0NvbXBGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDogbG9jLmdl
dEJhbE9yZ0NvbXBGaWx0ZXIoKTsNCgkJZmJhbE9yZ0ZpbHRlciA9IChsb2Mu
Z2V0QmFsT3JnRmlsdGVyKCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRCYWxP
cmdGaWx0ZXIoKTsNCgkJZnJlalRoUmVhc29uc0NvbXBGaWx0ZXIgPSAobG9j
LmdldFJlalRoUmVhc29uc0NvbXBGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDog
bG9jLmdldFJlalRoUmVhc29uc0NvbXBGaWx0ZXIoKTsNCgkJZnJlalRoUmVh
c29uc0ZpbHRlciA9IChsb2MuZ2V0UmVqVGhSZWFzb25zRmlsdGVyKCkgPT0g
bnVsbCkgPyAiIiA6IGxvYy5nZXRSZWpUaFJlYXNvbnNGaWx0ZXIoKTsNCg0K
CQlmYWdlQ29tcEZpbHRlciA9IChsb2MuZ2V0QWdlQ29tcEZpbHRlcigpID09
IG51bGwpID8gIiIgOiBsb2MuZ2V0QWdlQ29tcEZpbHRlcigpOw0KCQlmYWdl
RmlsdGVyID0gKGxvYy5nZXRBZ2VGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDog
bG9jLmdldEFnZUZpbHRlcigpOw0KCQlmbzJTYXRDb21wRmlsdGVyID0gKGxv
Yy5nZXRPMlNhdENvbXBGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDogbG9jLmdl
dE8yU2F0Q29tcEZpbHRlcigpOw0KCQlmbzJTYXRGaWx0ZXIgPSAobG9jLmdl
dE8yU2F0RmlsdGVyKCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRPMlNhdEZp
bHRlcigpOw0KDQoJCWZwYXhDb21wRmlsdGVyID0gKGxvYy5nZXRQYXhDb21w
RmlsdGVyKCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRQYXhDb21wRmlsdGVy
KCk7DQoJCWZwYXhGaWx0ZXIgPSAobG9jLmdldFBheEZpbHRlcigpID09IG51
bGwpID8gIiIgOiBsb2MuZ2V0UGF4RmlsdGVyKCk7DQoJCWZjcHRDb21wRmls
dGVyID0gKGxvYy5nZXRDcHRDb21wRmlsdGVyKCkgPT0gbnVsbCkgPyAiIiA6
IGxvYy5nZXRDcHRDb21wRmlsdGVyKCk7DQoJCWZjcHRGaWx0ZXIgPSAobG9j
LmdldENwdEZpbHRlcigpID09IG51bGwpID8gIiIgOiBsb2MuZ2V0Q3B0Rmls
dGVyKCk7DQoJCWZjc0NvbXBGaWx0ZXIgPSAobG9jLmdldENzQ29tcEZpbHRl
cigpID09IG51bGwpID8gIiIgOiBsb2MuZ2V0Q3NDb21wRmlsdGVyKCk7DQoJ
CWZjc0ZpbHRlciA9IChsb2MuZ2V0Q3NGaWx0ZXIoKSA9PSBudWxsKSA/ICIi
IDogbG9jLmdldENzRmlsdGVyKCk7DQoJCWZlbnJvbGxEdENvbXBGaWx0ZXIg
PSAobG9jLmdldEVucm9sbER0Q29tcEZpbHRlcigpID09IG51bGwpID8gIiIg
OiBsb2MuZ2V0RW5yb2xsRHRDb21wRmlsdGVyKCk7DQoJCWZlbnJvbGxEdEZp
bHRlciA9IChsb2MuZ2V0RW5yb2xsRHRGaWx0ZXIoKSA9PSBudWxsKSA/ICIi
IDogbG9jLmdldEVucm9sbER0RmlsdGVyKCk7DQoNCgkJZmluZFRoZXJhcHlD
b21wRmlsdGVyID0gKGxvYy5nZXRJbmRUaGVyYXB5Q29tcEZpbHRlcigpID09
IG51bGwpID8gIiIgOiBsb2MuZ2V0SW5kVGhlcmFweUNvbXBGaWx0ZXIoKTsN
CgkJZmluZFRoZXJhcHlGaWx0ZXIgICAgID0gKGxvYy5nZXRJbmRUaGVyYXB5
RmlsdGVyKCkgPT0gbnVsbCkgPyAiIiA6IGxvYy5nZXRJbmRUaGVyYXB5Rmls
dGVyKCk7DQoNCgkJZm90aGVyTWVkaWNhdGlvbkNvbXBGaWx0ZXIgPSAobG9j
LmdldE90aGVyTWVkaWNhdGlvbkNvbXBGaWx0ZXIoKSA9PSBudWxsKSA/ICIi
IDogbG9jLmdldE90aGVyTWVkaWNhdGlvbkNvbXBGaWx0ZXIoKTsNCgkJZm90
aGVyTWVkaWNhdGlvbkZpbHRlciAgICAgPSAobG9jLmdldE90aGVyTWVkaWNh
dGlvbkZpbHRlcigpID09IG51bGwpID8gIiIgOiBsb2MuZ2V0T3RoZXJNZWRp
Y2F0aW9uRmlsdGVyKCk7DQoJCQkJDQoJCWZyZWpUcmVhdG1lbnRIaXN0b3J5
Q29tcEZpbHRlciA9IChsb2MuZ2V0UmVqVHJlYXRtZW50SGlzdG9yeUNvbXBG
aWx0ZXIoKSA9PSBudWxsKSA/ICIiIDogbG9jLmdldFJlalRyZWF0bWVudEhp
c3RvcnlDb21wRmlsdGVyKCk7DQoJCWZyZWpUcmVhdG1lbnRIaXN0b3J5Rmls
dGVyICAgICA9IChsb2MuZ2V0UmVqVHJlYXRtZW50SGlzdG9yeUZpbHRlcigp
ID09IG51bGwpID8gIiIgOiBsb2MuZ2V0UmVqVHJlYXRtZW50SGlzdG9yeUZp
bHRlcigpOw0KDQoJCWZyZWNlcGllbnRDTVZNZXRob2RDb21wRmlsdGVyID0g
KGxvYy5nZXRSZWNlcGllbnRDTVZNZXRob2RDb21wRmlsdGVyKCkgPT0gbnVs
bCkgPyAiIiA6IGxvYy5nZXRSZWNlcGllbnRDTVZNZXRob2RDb21wRmlsdGVy
KCk7DQoJCWZyZWNlcGllbnRDTVZNZXRob2RGaWx0ZXIgICAgID0gKGxvYy5n
ZXRSZWNlcGllbnRDTVZNZXRob2RGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDog
bG9jLmdldFJlY2VwaWVudENNVk1ldGhvZEZpbHRlcigpOw0KDQoJCWZyZWpl
Y3Rpb25UcmVhdG1lbnRzQ29tcEZpbHRlciA9IChsb2MuZ2V0UmVqZWN0aW9u
VHJlYXRtZW50c0NvbXBGaWx0ZXIoKSA9PSBudWxsKSA/ICIiIDogbG9jLmdl
dFJlamVjdGlvblRyZWF0bWVudHNDb21wRmlsdGVyKCk7DQoJCWZyZWplY3Rp
b25UcmVhdG1lbnRzRmlsdGVyICAgICA9IChsb2MuZ2V0UmVqZWN0aW9uVHJl
YXRtZW50c0ZpbHRlcigpID09IG51bGwpID8gIiIgOiBsb2MuZ2V0UmVqZWN0
aW9uVHJlYXRtZW50c0ZpbHRlcigpOw0KCQkNCgkJDQoJfQ0KDQoJcHVibGlj
IEx1bmdPdXRjb21lUXVlcnkgbWFrZVF1ZXJ5KCkgdGhyb3dzIEV4Y2VwdGlv
biB7DQoJCS8vU3lzdGVtLm91dC5wcmludGxuKCJtYWtlUXVlcnkoKSAgbWV0
aG9kIGNhbGxlZCA9PT09PT09PSAiKTsNCgkJcmV0dXJuIG1ha2VRdWVyeShu
dWxsKTsNCgl9DQoNCglwdWJsaWMgTHVuZ091dGNvbWVRdWVyeSBtYWtlUXVl
cnkoU3RyaW5nIHVzZXJJZCkgdGhyb3dzIEV4Y2VwdGlvbiB7DQoJCS8vU3lz
dGVtLm91dC5wcmludGxuKCJtYWtlUXVlcnkoU3RyaW5nIHVzZXJJZCkgIG1l
dGhvZCBjYWxsZWQgPT09PT09PT0gIik7DQoJCS8vU3RyaW5nIGl0ZW1MaXN0
ID0gZ2V0U2FtcGxlc1N0cmluZyhmc2FtcGxlTGlzdCk7DQoNCgkJTGFyZ29R
dWVyeSBsb2MgPSBuZXcgTGFyZ29RdWVyeSgpOw0KDQoJCWlmICghKGZxdWVy
eUlkLmVxdWFscygiIikpKSB7DQoJCQlJbnRlZ2VyIHF1ZXJ5SWRJID0gbmV3
IEludGVnZXIoZnF1ZXJ5SWQpOw0KCQkJbG9jLnNldFF1ZXJ5SWQocXVlcnlJ
ZEkuaW50VmFsdWUoKSk7DQoJCX0NCg0KCQlsb2Muc2V0VXNlcklkKHVzZXJJ
ZCk7DQoJCWxvYy5zZXRRdWVyeU5hbWUoZnF1ZXJ5TmFtZSk7DQoJCWxvYy5z
ZXREQk5hbWUoIkxBUkdPIik7DQoNCgkJaWYgKCEoZmNlbnRlcklkLmVxdWFs
cygiIikpKQ0KCQkJbG9jLnNldENlbnRlcklkKGZjZW50ZXJJZCk7DQoNCgkJ
U3RyaW5nIGF0dHJMaXN0ID0gIiI7DQoNCg0KCQkNCgkJLy9mb3IgKGludCBp
PTA7aTxmYXR0ci5sZW5ndGg7aSsrKSBhdHRyTGlzdCArPSAiLCIgKyBmYXR0
cltpXTsNCg0KCQlpZiAoIShmYXR0ckxpc3QuZXF1YWxzKCIiKSkpewkJCQ0K
CQkJbG9jLnNldEF0dHJMaXN0KGZhdHRyTGlzdCk7DQoJCX0NCg0KDQoJCS8v
U3lzdGVtLm91dC5wcmludGxuKCJDZW50ZXIgTmFtZSA6ICIgKyBmY2VudGVy
TmFtZSk7DQoNCgkJaWYgKCEoZmNlbnRlck5hbWUuZXF1YWxzKCIiKSkpDQoJ
CQlsb2Muc2V0Q2VudGVyTmFtZShmY2VudGVyTmFtZSk7DQoJCWlmICghKGZw
YXRpZW50TGlzdC5lcXVhbHMoIiIpKSkNCgkJCWxvYy5zZXRQYXRpZW50TGlz
dChmcGF0aWVudExpc3QpOw0KCQlpZiAoIShmc2FtcGxlTGlzdC5lcXVhbHMo
IiIpKSkNCgkJCWxvYy5zZXRTYW1wbGVMaXN0KGZzYW1wbGVMaXN0KTsNCg0K
CQlpZiAoIShmc2FtcGxlRndkLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldFNh
bXBsZUZ3ZChmc2FtcGxlRndkKTsNCgkJaWYgKCEoZnNhbXBsZVJldi5lcXVh
bHMoIiIpKSkNCgkJCWxvYy5zZXRTYW1wbGVSZXYoZnNhbXBsZVJldik7DQoN
CgkJaWYgKCEoZmluZENvbXBGaWx0ZXIuZXF1YWxzKCIiKSkpDQoJCQlsb2Mu
c2V0SW5kQ29tcEZpbHRlcihmaW5kQ29tcEZpbHRlcik7DQoJCWlmICghKGZp
bmRGaWx0ZXIuZXF1YWxzKCIiKSkpDQoJCQlsb2Muc2V0SW5kRmlsdGVyKGZp
bmRGaWx0ZXIpOw0KCQlpZiAoIShmYmlvRmlsdGVyLmVxdWFscygiIikpKQ0K
CQkJbG9jLnNldEJpb0ZpbHRlcihmYmlvRmlsdGVyKTsNCgkJDQoJCWlmICgh
KGZhY3V0ZUNvbXBGaWx0ZXIuZXF1YWxzKCIiKSkpDQoJCQlsb2Muc2V0QWN1
dGVDb21wRmlsdGVyKGZhY3V0ZUNvbXBGaWx0ZXIpOw0KCQlpZiAoIShmTWFj
dXRlQ29tcEZpbHRlci5lcXVhbHMoIiIpKSkNCgkJCWxvYy5zZXRNQWN1dGVD
b21wRmlsdGVyKGZNYWN1dGVDb21wRmlsdGVyKTsNCgkJDQoJCWlmICghKGZC
YWN1dGVDb21wRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldEJBY3V0
ZUNvbXBGaWx0ZXIoZkJhY3V0ZUNvbXBGaWx0ZXIpOw0KCQkNCgkJaWYgKCEo
Zk1CYWN1dGVDb21wRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldE1i
QWN1dGVDb21wRmlsdGVyKGZNQmFjdXRlQ29tcEZpbHRlcik7CQkNCgkJaWYg
KCEoZllhY3V0ZUNvbXBGaWx0ZXIuZXF1YWxzKCIiKSkpDQoJCQlsb2Muc2V0
WUFjdXRlQ29tcEZpbHRlcihmWWFjdXRlQ29tcEZpbHRlcik7CQkNCgkJDQoJ
CWlmICghKGZhY3V0ZUZpbHRlci5lcXVhbHMoIiIpKSkNCgkJCWxvYy5zZXRB
Y3V0ZUZpbHRlcihmYWN1dGVGaWx0ZXIpOw0KCQlpZiAoIShmTWFjdXRlRmls
dGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldE1BY3V0ZUZpbHRlcihmTWFj
dXRlRmlsdGVyKTsNCgkJaWYgKCEoZkJhY3V0ZUZpbHRlci5lcXVhbHMoIiIp
KSkNCgkJCWxvYy5zZXRCQWN1dGVGaWx0ZXIoZkJhY3V0ZUZpbHRlcik7DQoJ
CWlmICghKGZNQmFjdXRlRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNl
dE1iQWN1dGVGaWx0ZXIoZk1CYWN1dGVGaWx0ZXIpOw0KCQlpZiAoIShmWWFj
dXRlRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldFlBY3V0ZUZpbHRl
cihmWWFjdXRlRmlsdGVyKTsNCgkJDQoJCQ0KCQlpZiAoIShmYWlyQ29tcEZp
bHRlci5lcXVhbHMoIiIpKSkNCgkJCWxvYy5zZXRBaXJDb21wRmlsdGVyKGZh
aXJDb21wRmlsdGVyKTsNCgkJaWYgKCEoZk1haXJDb21wRmlsdGVyLmVxdWFs
cygiIikpKQ0KCQkJbG9jLnNldE1BaXJDb21wRmlsdGVyKGZNYWlyQ29tcEZp
bHRlcik7DQoJCWlmICghKGZCYWlyQ29tcEZpbHRlci5lcXVhbHMoIiIpKSkN
CgkJCWxvYy5zZXRCQWlyQ29tcEZpbHRlcihmQmFpckNvbXBGaWx0ZXIpOw0K
CQlpZiAoIShmTUJhaXJDb21wRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9j
LnNldE1iQWlyQ29tcEZpbHRlcihmTUJhaXJDb21wRmlsdGVyKTsNCgkJaWYg
KCEoZllhaXJDb21wRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldFlB
aXJDb21wRmlsdGVyKGZZYWlyQ29tcEZpbHRlcik7DQoJCQ0KCQlpZiAoIShm
YWlyd2F5RmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldEFpcndheUZp
bHRlcihmYWlyd2F5RmlsdGVyKTsNCgkJaWYgKCEoZk1haXJ3YXlGaWx0ZXIu
ZXF1YWxzKCIiKSkpDQoJCQlsb2Muc2V0TUFpcndheUZpbHRlcihmTWFpcndh
eUZpbHRlcik7DQoJCWlmICghKGZCYWlyd2F5RmlsdGVyLmVxdWFscygiIikp
KQ0KCQkJbG9jLnNldEJBaXJ3YXlGaWx0ZXIoZkJhaXJ3YXlGaWx0ZXIpOw0K
CQlpZiAoIShmTUJhaXJ3YXlGaWx0ZXIuZXF1YWxzKCIiKSkpDQoJCQlsb2Mu
c2V0TWJBaXJ3YXlGaWx0ZXIoZk1CYWlyd2F5RmlsdGVyKTsNCgkJaWYgKCEo
ZllhaXJ3YXlGaWx0ZXIuZXF1YWxzKCIiKSkpDQoJCQlsb2Muc2V0WUFpcndh
eUZpbHRlcihmWWFpcndheUZpbHRlcik7DQoJCQ0KCQlpZiAoIShmY3ZyRmls
dGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldEN2ckZpbHRlcihmY3ZyRmls
dGVyKTsNCgkJaWYgKCEoZm9iRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9j
LnNldE9iRmlsdGVyKGZvYkZpbHRlcik7DQoJCWlmICghKGZpbmZGaWx0ZXIu
ZXF1YWxzKCIiKSkpDQoJCQlsb2Muc2V0SW5mRmlsdGVyKGZpbmZGaWx0ZXIp
Ow0KCQlpZiAoIShmcmVqRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNl
dFJlakZpbHRlcihmcmVqRmlsdGVyKTsNCgkJaWYgKCEoZnJlalRoRmlsdGVy
LmVxdWFscygiIikpKQ0KCQkJbG9jLnNldFJlalRoRmlsdGVyKGZyZWpUaEZp
bHRlcik7DQoJCWlmICghKGZjbXZGaWx0ZXIuZXF1YWxzKCIiKSkpDQoJCQls
b2Muc2V0Q212RmlsdGVyKGZjbXZGaWx0ZXIpOw0KCQlpZiAoIShmYWRtRmls
dGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldEFkbUZpbHRlcihmYWRtRmls
dGVyKTsNCgkJaWYgKCEoZmNEZXNjQ29tcEZpbHRlci5lcXVhbHMoIiIpKSkN
CgkJCWxvYy5zZXRDZGVzY0NvbXBGaWx0ZXIoZmNEZXNjQ29tcEZpbHRlcik7
DQoJCWlmICghKGZjRGVzY0ZpbHRlci5lcXVhbHMoIiIpKSkNCgkJCWxvYy5z
ZXRDZGVzY0ZpbHRlcihmY0Rlc2NGaWx0ZXIpOw0KCQlpZiAoIShmY29tcEZp
bHRlci5lcXVhbHMoIiIpKSkNCgkJCWxvYy5zZXRDb21wRmlsdGVyKGZjb21w
RmlsdGVyKTsNCgkJaWYgKCEoZmRheXNDb21wRmlsdGVyLmVxdWFscygiIikp
KQ0KCQkJbG9jLnNldERheXNDb21wRmlsdGVyKGZkYXlzQ29tcEZpbHRlcik7
DQoJCWlmICghKGZkYXlzRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNl
dERheXNGaWx0ZXIoZmRheXNGaWx0ZXIpOw0KCQlpZiAoIShmYmFsRmlsdGVy
LmVxdWFscygiIikpKQ0KCQkJbG9jLnNldEJhbEZpbHRlcihmYmFsRmlsdGVy
KTsNCgkJaWYgKCEoZmJhbENlbGxGaWx0ZXIuZXF1YWxzKCIiKSkpDQoJCQls
b2Muc2V0QmFsQ2VsbEZpbHRlcihmYmFsQ2VsbEZpbHRlcik7DQoJCWlmICgh
KGZmdEZpbHRlci5lcXVhbHMoIiIpKSkNCgkJCWxvYy5zZXRGdEZpbHRlcihm
ZnRGaWx0ZXIpOw0KCQlpZiAoIShmZEZFVjFDb21wRmlsdGVyLmVxdWFscygi
IikpKQ0KCQkJbG9jLnNldERmZXYxQ29tcEZpbHRlcihmZEZFVjFDb21wRmls
dGVyKTsNCgkJaWYgKCEoZmRGRVYxRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJ
bG9jLnNldERmZXYxRmlsdGVyKGZkRkVWMUZpbHRlcik7DQoJCWlmICghKGZp
bmZPcmdDb21wRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldEluZk9y
Z0NvbXBGaWx0ZXIoZmluZk9yZ0NvbXBGaWx0ZXIpOw0KCQlpZiAoIShmaW5m
T3JnRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldEluZk9yZ0ZpbHRl
cihmaW5mT3JnRmlsdGVyKTsNCgkJaWYgKCEoZmJhbE9yZ0NvbXBGaWx0ZXIu
ZXF1YWxzKCIiKSkpDQoJCQlsb2Muc2V0QmFsT3JnQ29tcEZpbHRlcihmYmFs
T3JnQ29tcEZpbHRlcik7DQoJCWlmICghKGZiYWxPcmdGaWx0ZXIuZXF1YWxz
KCIiKSkpDQoJCQlsb2Muc2V0QmFsT3JnRmlsdGVyKGZiYWxPcmdGaWx0ZXIp
Ow0KCQlpZiAoIShmcmVqVGhSZWFzb25zQ29tcEZpbHRlci5lcXVhbHMoIiIp
KSkNCgkJCWxvYy5zZXRSZWpUaFJlYXNvbnNDb21wRmlsdGVyKGZyZWpUaFJl
YXNvbnNDb21wRmlsdGVyKTsNCgkJaWYgKCEoZnJlalRoUmVhc29uc0ZpbHRl
ci5lcXVhbHMoIiIpKSkNCgkJCWxvYy5zZXRSZWpUaFJlYXNvbnNGaWx0ZXIo
ZnJlalRoUmVhc29uc0ZpbHRlcik7DQoNCgkJaWYgKCEoZmFnZUNvbXBGaWx0
ZXIuZXF1YWxzKCIiKSkpDQoJCQlsb2Muc2V0QWdlQ29tcEZpbHRlcihmYWdl
Q29tcEZpbHRlcik7DQoJCWlmICghKGZhZ2VGaWx0ZXIuZXF1YWxzKCIiKSkp
DQoJCQlsb2Muc2V0QWdlRmlsdGVyKGZhZ2VGaWx0ZXIpOw0KCQlpZiAoIShm
bzJTYXRDb21wRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldE8yU2F0
Q29tcEZpbHRlcihmbzJTYXRDb21wRmlsdGVyKTsNCgkJaWYgKCEoZm8yU2F0
RmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldE8yU2F0RmlsdGVyKGZv
MlNhdEZpbHRlcik7DQoJCWlmICghKGZwYXhDb21wRmlsdGVyLmVxdWFscygi
IikpKQ0KCQkJbG9jLnNldFBheENvbXBGaWx0ZXIoZnBheENvbXBGaWx0ZXIp
Ow0KCQlpZiAoIShmcGF4RmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNl
dFBheEZpbHRlcihmcGF4RmlsdGVyKTsNCgkJaWYgKCEoZmNwdENvbXBGaWx0
ZXIuZXF1YWxzKCIiKSkpDQoJCQlsb2Muc2V0Q3B0Q29tcEZpbHRlcihmY3B0
Q29tcEZpbHRlcik7DQoJCWlmICghKGZjcHRGaWx0ZXIuZXF1YWxzKCIiKSkp
DQoJCQlsb2Muc2V0Q3B0RmlsdGVyKGZjcHRGaWx0ZXIpOw0KCQlpZiAoIShm
Y3NDb21wRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldENzQ29tcEZp
bHRlcihmY3NDb21wRmlsdGVyKTsNCgkJaWYgKCEoZmNzRmlsdGVyLmVxdWFs
cygiIikpKQ0KCQkJbG9jLnNldENzRmlsdGVyKGZjc0ZpbHRlcik7DQoNCgkJ
aWYgKCEoZmVucm9sbER0Q29tcEZpbHRlci5lcXVhbHMoIiIpKSkNCgkJCWxv
Yy5zZXRFbnJvbGxEdENvbXBGaWx0ZXIoZmVucm9sbER0Q29tcEZpbHRlcik7
DQoNCgkJaWYgKCEoZmVucm9sbER0RmlsdGVyLmVxdWFscygiIikpKQ0KCQkJ
bG9jLnNldEVucm9sbER0RmlsdGVyKGZlbnJvbGxEdEZpbHRlcik7DQoNCgkJ
aWYgKCEoZmluZFRoZXJhcHlDb21wRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJ
bG9jLnNldEluZFRoZXJhcHlDb21wRmlsdGVyKGZpbmRUaGVyYXB5Q29tcEZp
bHRlcik7DQoNCgkJaWYgKCEoZmluZFRoZXJhcHlGaWx0ZXIuZXF1YWxzKCIi
KSkpDQoJCQlsb2Muc2V0SW5kVGhlcmFweUZpbHRlcihmaW5kVGhlcmFweUZp
bHRlcik7DQoNCgkJaWYgKCEoZm90aGVyTWVkaWNhdGlvbkNvbXBGaWx0ZXIu
ZXF1YWxzKCIiKSkpDQoJCQlsb2Muc2V0T3RoZXJNZWRpY2F0aW9uQ29tcEZp
bHRlcihmb3RoZXJNZWRpY2F0aW9uQ29tcEZpbHRlcik7DQoNCgkJaWYgKCEo
Zm90aGVyTWVkaWNhdGlvbkZpbHRlci5lcXVhbHMoIiIpKSkNCgkJCWxvYy5z
ZXRPdGhlck1lZGljYXRpb25GaWx0ZXIoZm90aGVyTWVkaWNhdGlvbkZpbHRl
cik7DQoNCgkJaWYgKCEoZnJlalRyZWF0bWVudEhpc3RvcnlDb21wRmlsdGVy
LmVxdWFscygiIikpKQ0KCQkJbG9jLnNldFJlalRyZWF0bWVudEhpc3RvcnlD
b21wRmlsdGVyKGZyZWpUcmVhdG1lbnRIaXN0b3J5Q29tcEZpbHRlcik7DQoN
CgkJaWYgKCEoZnJlalRyZWF0bWVudEhpc3RvcnlGaWx0ZXIuZXF1YWxzKCIi
KSkpDQoJCQlsb2Muc2V0UmVqVHJlYXRtZW50SGlzdG9yeUZpbHRlcihmcmVq
VHJlYXRtZW50SGlzdG9yeUZpbHRlcik7DQoJCQ0KCQkNCgkJaWYgKCEoZnJl
Y2VwaWVudENNVk1ldGhvZENvbXBGaWx0ZXIuZXF1YWxzKCIiKSkpDQoJCQls
b2Muc2V0UmVjZXBpZW50Q01WTWV0aG9kQ29tcEZpbHRlcihmcmVjZXBpZW50
Q01WTWV0aG9kQ29tcEZpbHRlcik7DQoNCgkJaWYgKCEoZnJlY2VwaWVudENN
Vk1ldGhvZEZpbHRlci5lcXVhbHMoIiIpKSkNCgkJCWxvYy5zZXRSZWNlcGll
bnRDTVZNZXRob2RGaWx0ZXIoZnJlY2VwaWVudENNVk1ldGhvZEZpbHRlcik7
DQoNCgkJaWYgKCEoZnJlamVjdGlvblRyZWF0bWVudHNDb21wRmlsdGVyLmVx
dWFscygiIikpKQ0KCQkJbG9jLnNldFJlamVjdGlvblRyZWF0bWVudHNDb21w
RmlsdGVyKGZyZWplY3Rpb25UcmVhdG1lbnRzQ29tcEZpbHRlcik7DQoNCgkJ
aWYgKCEoZnJlamVjdGlvblRyZWF0bWVudHNGaWx0ZXIuZXF1YWxzKCIiKSkp
DQoJCQlsb2Muc2V0UmVqZWN0aW9uVHJlYXRtZW50c0ZpbHRlcihmcmVqZWN0
aW9uVHJlYXRtZW50c0ZpbHRlcik7DQoNCgkJDQoJCQ0KCQlpZiAoIShmY29t
cENvbW1lbnRzQ29tcEZpbHRlci5lcXVhbHMoIiIpKSkNCgkJCWxvYy5zZXRD
b21wQ29tbWVudHNDb21wRmlsdGVyKGZjb21wQ29tbWVudHNDb21wRmlsdGVy
KTsNCg0KCQlpZiAoIShmY29tcENvbW1lbnRzRmlsdGVyLmVxdWFscygiIikp
KQ0KCQkJbG9jLnNldENvbXBDb21tZW50c0ZpbHRlcihmY29tcENvbW1lbnRz
RmlsdGVyKTsNCg0KCQ0KCQlpZiAoIShmYkFMQ29tbWVudHNDb21wRmlsdGVy
LmVxdWFscygiIikpKQ0KCQkJbG9jLnNldEJBTENvbW1lbnRzQ29tcEZpbHRl
cihmYkFMQ29tbWVudHNDb21wRmlsdGVyKTsNCg0KCQkNCgkJaWYgKCEoZmJB
TENvbW1lbnRzRmlsdGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldEJBTENv
bW1lbnRzRmlsdGVyKGZiQUxDb21tZW50c0ZpbHRlcik7DQoJCQ0KCQlpZiAo
IShpbmZDb21tZW50c0NvbXBGaWx0ZXIuZXF1YWxzKCIiKSkpDQoJCQlsb2Mu
c2V0SW5mQ29tbWVudHNDb21wRmlsdGVyKGluZkNvbW1lbnRzQ29tcEZpbHRl
cik7DQoNCgkJDQoJCWlmICghKGluZkNvbW1lbnRzRmlsdGVyLmVxdWFscygi
IikpKQ0KCQkJbG9jLnNldEluZkNvbW1lbnRzRmlsdGVyKGluZkNvbW1lbnRz
RmlsdGVyKTsNCgkJDQoJCWlmICghKG1iQ29tbWVudHNDb21wRmlsdGVyLmVx
dWFscygiIikpKQ0KCQkJbG9jLnNldE1CQ29tbWVudHNDb21wRmlsdGVyKG1i
Q29tbWVudHNDb21wRmlsdGVyKTsNCg0KCQlpZiAoIShtYkNvbW1lbnRzRmls
dGVyLmVxdWFscygiIikpKQ0KCQkJbG9jLnNldE1CQ29tbWVudHNGaWx0ZXIo
bWJDb21tZW50c0ZpbHRlcik7DQoJCQ0KCQkNCgkJaWYgKCEoc3VtbWFyeUNv
bW1lbnRzQ29tcEZpbHRlci5lcXVhbHMoIiIpKSkNCgkJCWxvYy5zZXRTdW1t
YXJ5Q29tbWVudHNDb21wRmlsdGVyKHN1bW1hcnlDb21tZW50c0NvbXBGaWx0
ZXIpOw0KDQoJCWlmICghKHN1bW1hcnlDb21tZW50c0ZpbHRlci5lcXVhbHMo
IiIpKSkNCgkJCWxvYy5zZXRTdW1tYXJ5Q29tbWVudHNGaWx0ZXIoc3VtbWFy
eUNvbW1lbnRzRmlsdGVyKTsNCgkJDQoJCWlmICghKGluZFRoZXJhcHlDb21t
ZW50c0NvbXBGaWx0ZXIuZXF1YWxzKCIiKSkpDQoJCQlsb2Muc2V0SW5kVGhl
cmFweUNvbW1lbnRzQ29tcEZpbHRlcihpbmRUaGVyYXB5Q29tbWVudHNDb21w
RmlsdGVyKTsNCg0KCQlpZiAoIShpbmRUaGVyYXB5Q29tbWVudHNGaWx0ZXIu
ZXF1YWxzKCIiKSkpDQoJCQlsb2Muc2V0SW5kVGhlcmFweUNvbW1lbnRzRmls
dGVyKGluZFRoZXJhcHlDb21tZW50c0ZpbHRlcik7DQoJCQ0KCQlpZiAoIShy
ZWplY3Rpb25FcGlzb2RlQ29tbWVudHNDb21wRmlsdGVyLmVxdWFscygiIikp
KQ0KCQkJbG9jLnNldFJlamVjdGlvbkVwaXNvZGVDb21tZW50c0NvbXBGaWx0
ZXIocmVqZWN0aW9uRXBpc29kZUNvbW1lbnRzQ29tcEZpbHRlcik7DQoNCgkJ
aWYgKCEocmVqZWN0aW9uRXBpc29kZUNvbW1lbnRzRmlsdGVyLmVxdWFscygi
IikpKQ0KCQkJbG9jLnNldFJlamVjdGlvbkVwaXNvZGVDb21tZW50c0ZpbHRl
cihyZWplY3Rpb25FcGlzb2RlQ29tbWVudHNGaWx0ZXIpOw0KDQoJCQ0KCQlp
ZiAoIShmZm5Db21tZW50c0NvbXBGaWx0ZXIuZXF1YWxzKCIiKSkpDQoJCQls
b2Muc2V0Rm5Db21tZW50c0NvbXBGaWx0ZXIoZmZuQ29tbWVudHNDb21wRmls
dGVyKTsNCg0KCQlpZiAoIShmZm5Db21tZW50c0ZpbHRlci5lcXVhbHMoIiIp
KSkNCgkJCWxvYy5zZXRGbkNvbW1lbnRzRmlsdGVyKGZmbkNvbW1lbnRzRmls
dGVyKTsNCgkJDQoJCQ0KCQlMdW5nT3V0Y29tZVF1ZXJ5IGxxID0gbmV3IEx1
bmdPdXRjb21lUXVlcnkoKTsNCgkJbHEuc2V0TG9jQ3JpdGVyaWEobG9jKTsN
Cg0KCQlyZXR1cm4gbHE7DQoJfQ0KCQ0KCQ0KDQoJcHVibGljIFhNTE9iamVj
dCBoYW5kbGVTYXZlUXVlcnkoKQ0KCSAgICAgIHRocm93cyBIdHRwUHJlc2Vu
dGF0aW9uRXhjZXB0aW9uIHsNCgkJLy9TeXN0ZW0ub3V0LnByaW50bG4oImhh
bmRsZVNhdmVRdWVyeSgpICBtZXRob2QgY2FsbGVkID09PT09PT09ICIpOw0K
CQlNeVF1ZXJpZXNIVE1MIHBhZ2UgPSAoTXlRdWVyaWVzSFRNTCkgbXlDb21t
cy54bWxjRmFjdG9yeS5jcmVhdGUoTXlRdWVyaWVzSFRNTC5jbGFzcyk7Ow0K
DQoJCXNldFBhcmFtcygpOw0KDQoJCXRyeSB7DQoNCgkJCWxxID0gbWFrZVF1
ZXJ5KHRoaXMuZ2V0VXNlcigpKTsNCg0KCQkJYm9vbGVhbiByZXQgPSBUcmFu
c3BsYW50VXRpbC5zYXZlUXVlcnkobHEuZ2V0TG9jQ3JpdGVyaWEoKSwiTEFS
R08iKTsNCg0KCQl9IGNhdGNoKEV4Y2VwdGlvbiBlKSB7CQkJDQoJCQllLnBy
aW50U3RhY2tUcmFjZSgpOw0KCQkJU3lzdGVtLm91dC5wcmludGxuKGUuZ2V0
TWVzc2FnZSgpKTsNCgkJfQ0KDQoNCgkJdGhyb3cgbmV3IENsaWVudFBhZ2VS
ZWRpcmVjdEV4Y2VwdGlvbigiTXlRdWVyaWVzUE8ucG8/c3R1ZHk9TEFSR08i
KTsNCg0KCX0NCg0KCXB1YmxpYyBYTUxPYmplY3QgaGFuZGxlU3RhcnQoKQ0K
CSAgICAgIHRocm93cyBIdHRwUHJlc2VudGF0aW9uRXhjZXB0aW9uIHsNCgkJ
Ly9TeXN0ZW0ub3V0LnByaW50bG4oImhhbmRsZVN0YXJ0KCkgIG1ldGhvZCBj
YWxsZWQgPT09PT09PT0gIik7DQoJCXRocm93IG5ldyBDbGllbnRQYWdlUmVk
aXJlY3RFeGNlcHRpb24oIkxEYXRhUUNGaW5kZUNSRlZpZXdQTy5wbyIpOw0K
CX0NCg0KCXB1YmxpYyBYTUxPYmplY3QgaGFuZGxlQWRkQXR0cigpDQoJICAg
ICAgdGhyb3dzIEh0dHBQcmVzZW50YXRpb25FeGNlcHRpb24gew0KCQkvL1N5
c3RlbS5vdXQucHJpbnRsbigiaGFuZGxlQWRkQXR0cigpICBtZXRob2QgY2Fs
bGVkID09PT09PT09ICIpOw0KCQl0aHJvdyBuZXcgU2VydmVyUGFnZVJlZGly
ZWN0RXhjZXB0aW9uKCJMRGF0YVFDRmluZGVDUkZWaWV3UE8ucG8iKTsNCgl9
DQoNCglwdWJsaWMgWE1MT2JqZWN0IGhhbmRsZVNlbEVuYygpDQoJICAgICAg
dGhyb3dzIEh0dHBQcmVzZW50YXRpb25FeGNlcHRpb24gew0KCQkvL1N5c3Rl
bS5vdXQucHJpbnRsbigiaGFuZGxlU2VsRW5jKCkgIG1ldGhvZCBjYWxsZWQg
PT09PT09PT0gIik7DQoJCXRocm93IG5ldyBTZXJ2ZXJQYWdlUmVkaXJlY3RF
eGNlcHRpb24oIkxEYXRhUUNGaW5kZUNSRlZpZXdQTy5wbyIpOw0KCX0NCgkN
CglwdWJsaWMgWE1MT2JqZWN0IGhhbmRsZVNlbFBhdCgpIHRocm93cyBIdHRw
UHJlc2VudGF0aW9uRXhjZXB0aW9uIHsNCgkJdGhyb3cgbmV3IFNlcnZlclBh
Z2VSZWRpcmVjdEV4Y2VwdGlvbigiTERhdGFRQ0ZpbmRlQ1JGVmlld1BPLnBv
Iik7DQoJfQ0KCQ0KCQ0KCXB1YmxpYyBYTUxPYmplY3QgaGFuZGxlRGVmYXVs
dCgpDQoJICAgICAgdGhyb3dzIEh0dHBQcmVzZW50YXRpb25FeGNlcHRpb24g
ew0KCQkvL1N5c3RlbS5vdXQucHJpbnRsbigiaGFuZGxlRGVmYXVsdCgpICBt
ZXRob2QgY2FsbGVkID09PT09PT09ICIpOw0KCQkNCgkJaWYobnVsbCA9PSB0
aGlzLmdldFVzZXIoKSkgew0KCQkJdGhyb3cgbmV3IENsaWVudFBhZ2VSZWRp
cmVjdEV4Y2VwdGlvbigiTG9naW5QcmVzZW50YXRpb24ucG8iKTsNCgkJfQ0K
CQlMQVJHT1FDZUNSRlZpZXdIVE1MIHBhZ2UgPSBudWxsOw0KDQoJCXNldFBh
cmFtcygpOw0KDQoJCVN0cmluZyB1c2VySWQgPSB0aGlzLmdldFVzZXIoKTsN
CgkJDQoJCVN5c3RlbS5vdXQucHJpbnRsbigidXNlciBpZCAiK3VzZXJJZCk7
DQoJCVN5c3RlbS5vdXQucHJpbnRsbigiUm9sZSBpZCAiK3RoaXMuZ2V0Um9s
ZSgpKTsNCgkJdHJ5IHsNCg0KCQkJaWYgKCEoZnF1ZXJ5LmVxdWFscygiIikp
ICYmICEoZnF1ZXJ5SWQuZXF1YWxzKCIiKSkpIHsNCg0KCQkJCUxhcmdvUXVl
cnkgbG9jID0gKExhcmdvUXVlcnkpIFRyYW5zcGxhbnRVdGlsLnJlc3RvcmVR
dWVyeShmcXVlcnlJZCwiTEFSR08iKTsNCg0KCQkJCWxxID0gbmV3IEx1bmdP
dXRjb21lUXVlcnkoKTsNCgkJCQlscS5zZXRMb2NDcml0ZXJpYShsb2MpOw0K
DQoJCQkJcmVhZFF1ZXJ5Q3JpdGVyaWEobG9jKTsNCgkJCX0NCgkJCWVsc2Ug
ew0KCQkJCWxxID0gbWFrZVF1ZXJ5KCk7DQoJCQl9DQoNCgkJCXNyUm93cyA9
IFRyYW5zcGxhbnRVdGlsLmdldEx1bmdPdXRjb21lcyhscSx0aGlzLmdldFJv
bGUoKSk7DQoNCgkJCWlmIChzclJvd3MgIT0gbnVsbCkNCgkJCQlTeXN0ZW0u
b3V0LnByaW50bG4oIlNpemUiICsgc3JSb3dzLnNpemUoKSk7DQoNCg0KCQkJ
cGFnZSA9IChMQVJHT1FDZUNSRlZpZXdIVE1MKSAgZGlzcGxheURhdGEoKTsN
CgkJCUhUTUxJbnB1dEVsZW1lbnQgZVF1ZXJ5TmFtZSA9IChIVE1MSW5wdXRF
bGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKCJRdWVyeU5hbWUiKTs7DQoJ
CQllUXVlcnlOYW1lLnNldFZhbHVlKGZxdWVyeU5hbWUpOw0KCQkJDQoNCgkJ
fSBjYXRjaChFeGNlcHRpb24gZSkgew0KCQkJU3lzdGVtLm91dC5wcmludGxu
KCJJIGFtIGV4Iik7DQoJCQllLnByaW50U3RhY2tUcmFjZSgpOw0KCQkJU3lz
dGVtLm91dC5wcmludGxuKGUuZ2V0TWVzc2FnZSgpKTsNCgkJfQ0KDQoJCXJl
dHVybiBwYWdlOw0KDQoJfQ0KDQoJcHVibGljIFhNTE9iamVjdCBoYW5kbGVT
aG93KCkNCgkgICAgICB0aHJvd3MgSHR0cFByZXNlbnRhdGlvbkV4Y2VwdGlv
biB7DQoJCS8vU3lzdGVtLm91dC5wcmludGxuKCJoYW5kbGVTaG93KCkgIG1l
dGhvZCBjYWxsZWQgPT09PT09PT0gIik7DQoNCgkJU3RyaW5nIGNlbGxDb2xv
ciA9ICIjRDhEOEQ4IjsNCg0KDQoJLy8gU2hvdyByZWNvcmRzIHRoYXQgaGF2
ZSBmYWlsZWQgdGhlc2UgcGFyYW1ldGVycw0KDQoJCUxBUkdPUUNlQ1JGVmll
d0hUTUwgcGFnZSA9IG51bGw7DQoJCXRyeSB7DQoNCgkJc2V0UGFyYW1zKCk7
DQoJCWxxID0gbWFrZVF1ZXJ5KCk7DQoJCXNyUm93cyA9IFRyYW5zcGxhbnRV
dGlsLmdldEx1bmdPdXRjb21lcyhscSx0aGlzLmdldFJvbGUoKSk7DQoNCgkJ
QXJyYXlMaXN0IGZMaXN0ID0gbmV3IEFycmF5TGlzdCgpOw0KDQoJCWlmIChz
clJvd3MgIT0gbnVsbCkNCgkJCVN5c3RlbS5vdXQucHJpbnRsbigiU2l6ZSIg
KyBzclJvd3Muc2l6ZSgpKTsNCgkJTHVuZ0NET3V0Y29tZSBsdW5nQ0RPdXRj
b21lID0gbnVsbDsNCgkJZm9yIChJdGVyYXRvciBkYXRhPXNyUm93cy5pdGVy
YXRvcigpOyBkYXRhLmhhc05leHQoKTspIHsNCg0KCQkJbHVuZ0NET3V0Y29t
ZSA9IChMdW5nQ0RPdXRjb21lKSBkYXRhLm5leHQoKTsNCg0KCQkJYm9vbGVh
biBxY0ZhaWxlZCA9IGZhbHNlOw0KCQkJZm9yIChpbnQgaT0wO2k8ZlFDMS5s
ZW5ndGg7aSsrKSB7DQoJCQkJLy9TeXN0ZW0ub3V0LnByaW50bG4obHVuZ0NE
T3V0Y29tZS5zdGVyb2lkcysiZ2V0UUNSZXN1bHQobHVuZ0NET3V0Y29tZSwn
cWMnK2ZRQzFbaV0pIitnZXRRQ1Jlc3VsdChsdW5nQ0RPdXRjb21lLCJxYyIr
ZlFDMVtpXSkpOw0KCQkJCWlmICghZ2V0UUNSZXN1bHQobHVuZ0NET3V0Y29t
ZSwicWMiK2ZRQzFbaV0pKSB7DQoJCQkJCXFjRmFpbGVkID0gdHJ1ZTsNCgkJ
CQkJYnJlYWs7DQoJCQkJfQ0KCQkJfQ0KDQoJCQlmb3IgKGludCBpPTA7aTxm
UUMyLmxlbmd0aDtpKyspIHsNCgkJCQlpZiAoIWdldFFDUmVzdWx0KGx1bmdD
RE91dGNvbWUsInFjMiIrZlFDMltpXSkpIHsNCgkJCQkJcWNGYWlsZWQgPSB0
cnVlOw0KCQkJCQlicmVhazsNCgkJCQl9DQoJCQl9DQoNCgkJCWlmIChxY0Zh
aWxlZCkgZkxpc3QuYWRkKGx1bmdDRE91dGNvbWUpOw0KDQoJCQkvL2lmIChs
dW5nQ0RPdXRjb21lLnFjQWN1dGVHcmFkZSgpKSB7DQoJCQkvLwlmTGlzdC5h
ZGQobHVuZ0NET3V0Y29tZSk7DQoJCQkvL30NCgkJCS8vU3lzdGVtLm91dC5w
cmludGxuKCJlbmNvdW50ZXJpZCAiK2x1bmdDRE91dGNvbWUuZW5jb3VudGVy
aWQrInFjRmFpbGVkIitxY0ZhaWxlZCk7DQoJCX0NCg0KICAJCS8vaWYgKCEo
ZmNlbnRlcklkLmVxdWFscygiIikpKSBoZHIgKz0gZmNlbnRlck5hbWU7IGVs
c2UgaGRyICs9ICJBbGwgQ2VudGVycyI7DQoJCQkNCgkJCXNyUm93cy5jbGVh
cigpOw0KCQkJc3JSb3dzLmFkZEFsbChmTGlzdCk7DQoJCQlwYWdlID0gKExB
UkdPUUNlQ1JGVmlld0hUTUwpICBkaXNwbGF5RGF0YSgpOw0KDQoJCWZvciAo
aW50IGk9MDtpPGZRQzIubGVuZ3RoO2krKykgew0KCQkJTm9kZSBjb2xDaGVj
ayA9IHBhZ2UuZ2V0RWxlbWVudEJ5SWQoZlFDMltpXSsiUUMyIik7DQoJCQlI
VE1MVGFibGVDZWxsRWxlbWVudCBjZWxsQ2hlY2sgPSAoSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQpIGNvbENoZWNrLmdldFBhcmVudE5vZGUoKTsNCgkJCWNlbGxD
aGVjay5zZXRCZ0NvbG9yKGNlbGxDb2xvcik7DQoJCX0NCg0KCQlmb3IgKGlu
dCBpPTA7aTxmUUMyLmxlbmd0aDtpKyspIHsNCgkJCU5vZGUgY29sQ2hlY2sg
PSBwYWdlLmdldEVsZW1lbnRCeUlkKGZRQzJbaV0rIlFDMiIpOw0KCQkJSFRN
TFRhYmxlQ2VsbEVsZW1lbnQgY2VsbENoZWNrID0gKEhUTUxUYWJsZUNlbGxF
bGVtZW50KSBjb2xDaGVjay5nZXRQYXJlbnROb2RlKCk7DQoJCQljZWxsQ2hl
Y2suc2V0QmdDb2xvcihjZWxsQ29sb3IpOw0KCQl9DQoNCgkJfSBjYXRjaChF
eGNlcHRpb24gZSkgew0KCQkJU3lzdGVtLm91dC5wcmludGxuKCJJIGFtIGV4
Iik7DQoJCQllLnByaW50U3RhY2tUcmFjZSgpOw0KCQkJU3lzdGVtLm91dC5w
cmludGxuKGUuZ2V0TWVzc2FnZSgpKTsNCgkJfQ0KDQoJCXJldHVybiBwYWdl
Ow0KDQoNCgl9DQoJcHVibGljIFhNTE9iamVjdCBoYW5kbGVGaWx0ZXJCbGlu
ZGVkKCkNCiAgICB0aHJvd3MgSHR0cFByZXNlbnRhdGlvbkV4Y2VwdGlvbiB7
DQoJLy9TeXN0ZW0ub3V0LnByaW50bG4oImhhbmRsZUZpbHRlcigpICBtZXRo
b2QgY2FsbGVkID09PT09PT09ICIpOw0KCQlMQVJHT1FDZUNSRlZpZXdIVE1M
IHBhZ2UgPSBudWxsOw0KCXRyeSB7DQoNCgkJc2V0UGFyYW1zKCk7DQoJCWxx
ID0gbWFrZVF1ZXJ5KCk7DQoJCXNyUm93cyA9IFRyYW5zcGxhbnRVdGlsLmdl
dEx1bmdPdXRjb21lcyhscSx0aGlzLmdldFJvbGUoKSk7DQoJCUFycmF5TGlz
dCBmTGlzdCA9IG5ldyBBcnJheUxpc3QoKTsNCgkJZm9yIChJdGVyYXRvciBk
YXRhPXNyUm93cy5pdGVyYXRvcigpOyBkYXRhLmhhc05leHQoKTspIHsNCgkJ
CUx1bmdDRE91dGNvbWUgbHVuZ0NET3V0Y29tZSA9IChMdW5nQ0RPdXRjb21l
KSBkYXRhLm5leHQoKTsNCgkJCWlmKGx1bmdDRE91dGNvbWUuaXNEYXRhVG9C
ZUJsaW5kZWQ9PWZhbHNlKXsNCgkJCSAgIGZMaXN0LmFkZChsdW5nQ0RPdXRj
b21lKTsNCgkJCX0NCgkJfQ0KCQlzclJvd3MuY2xlYXIoKTsNCgkJc3JSb3dz
LmFkZEFsbChmTGlzdCk7DQoJCXBhZ2UgPSAoTEFSR09RQ2VDUkZWaWV3SFRN
TCkgIGRpc3BsYXlEYXRhKCk7DQoJfSBjYXRjaChFeGNlcHRpb24gZSkgew0K
CQlTeXN0ZW0ub3V0LnByaW50bG4oIkkgYW0gZXgiKTsNCgkJZS5wcmludFN0
YWNrVHJhY2UoKTsNCgkJU3lzdGVtLm91dC5wcmludGxuKGUuZ2V0TWVzc2Fn
ZSgpKTsNCgl9DQoJcmV0dXJuIHBhZ2U7DQoJfQ0KDQoJcHVibGljIFhNTE9i
amVjdCBoYW5kbGVGaWx0ZXIoKQ0KCSAgICAgIHRocm93cyBIdHRwUHJlc2Vu
dGF0aW9uRXhjZXB0aW9uIHsNCgkJLy9TeXN0ZW0ub3V0LnByaW50bG4oImhh
bmRsZUZpbHRlcigpICBtZXRob2QgY2FsbGVkID09PT09PT09ICIpOw0KCQlM
QVJHT1FDZUNSRlZpZXdIVE1MIHBhZ2UgPSBudWxsOw0KCQl0cnkgew0KDQoJ
CXNldFBhcmFtcygpOw0KCQlscSA9IG1ha2VRdWVyeSgpOw0KCQlzclJvd3Mg
PSBUcmFuc3BsYW50VXRpbC5nZXRMdW5nT3V0Y29tZXMobHEsdGhpcy5nZXRS
b2xlKCkpOw0KDQoJCUFycmF5TGlzdCBmTGlzdCA9IG5ldyBBcnJheUxpc3Qo
KTsNCg0KCQlpZiAoc3JSb3dzICE9IG51bGwpDQoJCQlTeXN0ZW0ub3V0LnBy
aW50bG4oIlNpemUiICsgc3JSb3dzLnNpemUoKSk7DQoNCgkJZm9yIChJdGVy
YXRvciBkYXRhPXNyUm93cy5pdGVyYXRvcigpOyBkYXRhLmhhc05leHQoKTsp
IHsNCg0KCQkJTHVuZ0NET3V0Y29tZSBsdW5nQ0RPdXRjb21lID0gKEx1bmdD
RE91dGNvbWUpIGRhdGEubmV4dCgpOw0KDQoJCQlib29sZWFuIHFjRmFpbGVk
ID0gZmFsc2U7DQoJCQlmb3IgKGludCBpPTA7aTxmUUMxLmxlbmd0aDtpKysp
IHsNCgkJCQlpZiAoIWdldFFDUmVzdWx0KGx1bmdDRE91dGNvbWUsInFjIitm
UUMxW2ldKSkgew0KCQkJCQlxY0ZhaWxlZCA9IHRydWU7DQoJCQkJCWJyZWFr
Ow0KCQkJCX0NCgkJCX0NCg0KCQkJZm9yIChpbnQgaT0wO2k8ZlFDMi5sZW5n
dGg7aSsrKSB7DQoJCQkJaWYgKCFnZXRRQ1Jlc3VsdChsdW5nQ0RPdXRjb21l
LCJxYzIiK2ZRQzJbaV0pKSB7DQoJCQkJCXFjRmFpbGVkID0gdHJ1ZTsNCgkJ
CQkJYnJlYWs7DQoJCQkJfQ0KCQkJfQ0KDQoNCgkJCWlmICghcWNGYWlsZWQp
IGZMaXN0LmFkZChsdW5nQ0RPdXRjb21lKTsNCg0KCQl9DQoNCgkJc3JSb3dz
LmNsZWFyKCk7DQoJCXNyUm93cy5hZGRBbGwoZkxpc3QpOw0KCQlwYWdlID0g
KExBUkdPUUNlQ1JGVmlld0hUTUwpICBkaXNwbGF5RGF0YSgpOw0KCQl9IGNh
dGNoKEV4Y2VwdGlvbiBlKSB7DQoJCQlTeXN0ZW0ub3V0LnByaW50bG4oIkkg
YW0gZXgiKTsNCgkJCWUucHJpbnRTdGFja1RyYWNlKCk7DQoJCQlTeXN0ZW0u
b3V0LnByaW50bG4oZS5nZXRNZXNzYWdlKCkpOw0KCQl9DQoNCgkJcmV0dXJu
IHBhZ2U7DQoNCg0KCX0NCg0KCXB1YmxpYyBYTUxPYmplY3QgZGlzcGxheURh
dGEoKSB0aHJvd3MgRXhjZXB0aW9uIHsNCgkJLy9TeXN0ZW0ub3V0LnByaW50
bG4oImRpc3BsYXlEYXRhKCkgIG1ldGhvZCBjYWxsZWQgPT09PT09PT0gIik7
DQoJCQ0KCQlTdHJpbmcgcWMxQ2VsbENvbG9yID0gIiNjNmM2YzYiOw0KCQlT
dHJpbmcgcWMyQ2VsbENvbG9yID0gIiNmZmNjMzMiOw0KCQkNCgkJTEFSR09R
Q2VDUkZWaWV3SFRNTCBwYWdlID0gKExBUkdPUUNlQ1JGVmlld0hUTUwpIG15
Q29tbXMueG1sY0ZhY3RvcnkuY3JlYXRlKExBUkdPUUNlQ1JGVmlld0hUTUwu
Y2xhc3MpOw0KCQkNCgkJU3RyaW5nIHZpZXcgPSAiIjsNCgkJU3RyaW5nIGRp
ciA9ICJOb25lIjsNCg0KCQlTeXN0ZW0ub3V0LnByaW50bG4oIlxuZmV2ZW50
IitmZXZlbnQpOw0KDQoJCWlmIChmZXZlbnQuZXF1YWxzKCIiKSkNCgkJCXZp
ZXcgPSAiQWxsIjsNCgkJZWxzZSBpZiAoZmV2ZW50LmVxdWFscygic2hvdyIp
KQ0KCQkJdmlldyA9ICJGYWlsZWQiOw0KCQllbHNlIGlmIChmZXZlbnQuZXF1
YWxzKCJmaWx0ZXIiKSkNCgkJCXZpZXcgPSAiRmlsZXRlcmVkIjsNCg0KCQlp
ZiAoZnNhbXBsZUZ3ZC5lcXVhbHMoIjEiKSkNCgkJCWRpciA9ICJGb3J3YXJk
IjsNCgkJZWxzZSBpZiAoZnNhbXBsZVJldi5lcXVhbHMoIjEiKSkNCgkJCWRp
ciA9ICJSZXZlcnNlIjsNCg0KCQlwYWdlLnNldFRleHRWaWV3KHZpZXcpOw0K
CQlwYWdlLnNldFRleHREaXIoZGlyKTsNCg0KDQoJCUhUTUxJbnB1dEVsZW1l
bnQgZUNlbnRlcklkID0gKEhUTUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxl
bWVudEJ5SWQoIkNlbnRlcklkIik7DQoJCWVDZW50ZXJJZC5zZXRWYWx1ZShm
Y2VudGVySWQpOw0KDQoJCUhUTUxJbnB1dEVsZW1lbnQgZVBhdGllbnRMaXN0
ID0gKEhUTUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoIlBh
dGllbnRMaXN0Iik7DQoJCWVQYXRpZW50TGlzdC5zZXRWYWx1ZShmcGF0aWVu
dExpc3QpOw0KDQoJCUhUTUxJbnB1dEVsZW1lbnQgZVNhbXBsZUxpc3QgPSAo
SFRNTElucHV0RWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZCgiU2FtcGxl
TGlzdCIpOw0KCQllU2FtcGxlTGlzdC5zZXRWYWx1ZShmc2FtcGxlTGlzdCk7
DQoJCQ0KCQlIVE1MSW5wdXRFbGVtZW50IGVTYW1wbGVGd2QgPSAoSFRNTElu
cHV0RWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZCgiU2FtcGxlRndkIik7
DQoJCWVTYW1wbGVGd2Quc2V0VmFsdWUoZnNhbXBsZUZ3ZCk7DQoNCgkJSFRN
TElucHV0RWxlbWVudCBlU2FtcGxlUmV2ID0gKEhUTUxJbnB1dEVsZW1lbnQp
IHBhZ2UuZ2V0RWxlbWVudEJ5SWQoIlNhbXBsZVJldiIpOw0KCQllU2FtcGxl
UmV2LnNldFZhbHVlKGZzYW1wbGVSZXYpOw0KDQoJCUhUTUxJbnB1dEVsZW1l
bnQgZUF0dHJMaXN0ID0gKEhUTUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxl
bWVudEJ5SWQoIkF0dHJMaXN0Iik7DQoJCWVBdHRyTGlzdC5zZXRWYWx1ZShm
YXR0ckxpc3QpOw0KDQoJCUhUTUxJbnB1dEVsZW1lbnQgZUNlbnRlck5hbWUg
PSAoSFRNTElucHV0RWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZCgiQ2Vu
dGVyTmFtZSIpOw0KCQllQ2VudGVyTmFtZS5zZXRWYWx1ZShmY2VudGVyTmFt
ZSk7DQoNCgkJSFRNTElucHV0RWxlbWVudCBlUXVlcnlJZCA9IChIVE1MSW5w
dXRFbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKCJRdWVyeUlkIik7DQoJ
CWVRdWVyeUlkLnNldFZhbHVlKGZxdWVyeUlkKTsNCg0KCQlIVE1MSW5wdXRF
bGVtZW50IGVRdWVyeU5hbWUgPSAoSFRNTElucHV0RWxlbWVudCkgcGFnZS5n
ZXRFbGVtZW50QnlJZCgiUXVlcnlOYW1lIik7DQoJCWVRdWVyeU5hbWUuc2V0
VmFsdWUoZnF1ZXJ5TmFtZSk7DQoNCgkJU3RyaW5nIGVycm9yTXNnID0gdGhp
cy5nZXRTZXNzaW9uRGF0YSgpLmdldEFuZENsZWFyVXNlck1lc3NhZ2UoKTsN
CgkgICAgaWYobnVsbCA9PSBlcnJvck1zZykgew0KCQkJcGFnZS5nZXRFbGVt
ZW50RXJyb3JUZXh0KCkuZ2V0UGFyZW50Tm9kZSgpLnJlbW92ZUNoaWxkKHBh
Z2UuZ2V0RWxlbWVudEVycm9yVGV4dCgpKTsNCgkJfSBlbHNlIHsNCgkJCXBh
Z2Uuc2V0VGV4dEVycm9yVGV4dChlcnJvck1zZyk7DQoJCX0NCg0KCQlTdHJp
bmcgY3VyQ2VudGVySWQgPSAiIjsNCgkJU3RyaW5nIGN1clBhdGllbnRJZCA9
ICIiOw0KCQlTdHJpbmcgY3VyRW5jSWQgPSAiIjsNCg0KCQkvL1N0cmluZyBz
YW1wbGVzID0gZ2V0U2FtcGxlc0RlbGltZXRlZChmc2FtcGxlTGlzdCk7DQoN
Cg0KCQlTdHJpbmcgcWMxVGV4dCA9ICIiOw0KCQlTdHJpbmcgcWMyVGV4dCA9
ICIiOw0KCQlIVE1MSW5wdXRFbGVtZW50IHFjQ2hlY2tFbGVtZW50Ow0KCQlp
ZiAoIShmZXZlbnQuZXF1YWxzKCIiKSkpIHsNCgkJCWZvciAoaW50IGk9MDtp
PGZRQzEubGVuZ3RoO2krKykgew0KCQkJCSBxY0NoZWNrRWxlbWVudCA9IChI
VE1MSW5wdXRFbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKGZRQzFbaV0r
IlFDMSIpOw0KCQkJCXFjQ2hlY2tFbGVtZW50LnNldENoZWNrZWQodHJ1ZSk7
DQoJCQkJcWMxVGV4dCArPSAiLCAiICsgIGZRQzFbaV07DQoJCQl9DQoNCgkJ
CWZvciAoaW50IGk9MDtpPGZRQzIubGVuZ3RoO2krKykgew0KCQkJCSBxY0No
ZWNrRWxlbWVudCA9IChIVE1MSW5wdXRFbGVtZW50KSBwYWdlLmdldEVsZW1l
bnRCeUlkKGZRQzJbaV0rIlFDMiIpOw0KCQkJCXFjQ2hlY2tFbGVtZW50LnNl
dENoZWNrZWQodHJ1ZSk7DQoJCQkJcWMyVGV4dCArPSAiLCAiICsgZlFDMltp
XTsNCgkJCX0NCgkJfQ0KDQoJCUhUTUxUYWJsZVJvd0VsZW1lbnQgdGVtcGxh
dGVSb3cgPSBwYWdlLmdldEVsZW1lbnRUZW1wbGF0ZVJvdygpOw0KCQl0ZW1w
bGF0ZVJvdy5yZW1vdmVBdHRyaWJ1dGUoImlkIik7DQoJCU5vZGUgdGVtcGxh
dGVUYWJsZSA9IHRlbXBsYXRlUm93LmdldFBhcmVudE5vZGUoKTsNCg0KDQoJ
CUhUTUxUYWJsZVJvd0VsZW1lbnQgdGVtcGxhdGVIZHJSb3cgPSBwYWdlLmdl
dEVsZW1lbnRIZHJSb3coKTsNCgkJdGVtcGxhdGVIZHJSb3cucmVtb3ZlQXR0
cmlidXRlKCJpZCIpOw0KDQoJCUhUTUxJbnB1dEVsZW1lbnQgc2F2ZVFCdG4g
PSAoSFRNTElucHV0RWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZCgiU2F2
ZVFCdG4iKTsNCg0KCQlpZiAodGhpcy5nZXRVc2VyKCkgPT0gbnVsbCkgc2F2
ZVFCdG4uZ2V0UGFyZW50Tm9kZSgpLnJlbW92ZUNoaWxkKHNhdmVRQnRuKTsN
Cg0KDQoJCVN0cmluZ1tdIGF0dHIgPSBuZXcgU3RyaW5nWzBdOw0KDQoJCWlm
ICghKGZhdHRyTGlzdC5lcXVhbHMoIiIpKSkgYXR0ciA9IGZhdHRyTGlzdC5z
cGxpdCgiLCIpOw0KDQoJCUxpc3QgYXR0ckxpc3QgPSBBcnJheXMuYXNMaXN0
KGF0dHIpOw0KCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkVuY291bnRlcklk
RCIpKXsNCgkJCSAgIEhUTUxJbnB1dEVsZW1lbnQgc2VsZWN0RW5jb3VudGVy
ID0gKEhUTUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoIlNl
bFBhdEJ0biIpOw0KCQkJICAgc2VsZWN0RW5jb3VudGVyLmdldFBhcmVudE5v
ZGUoKS5yZW1vdmVDaGlsZChzZWxlY3RFbmNvdW50ZXIpOw0KCQkJfWVsc2V7
DQoJCQkgICBIVE1MSW5wdXRFbGVtZW50IHNlbGVjdEVuY291bnRlciA9IChI
VE1MSW5wdXRFbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKCJTZWxFbmNC
dG4iKTsNCgkJCSAgIHNlbGVjdEVuY291bnRlci5nZXRQYXJlbnROb2RlKCku
cmVtb3ZlQ2hpbGQoc2VsZWN0RW5jb3VudGVyKTsNCgkJCX0NCgkJDQoJCU5v
ZGVMaXN0IG5sID0gdGVtcGxhdGVSb3cuZ2V0Q2hpbGROb2RlcygpOw0KCQlO
b2RlIG5vOw0KCQlIVE1MVGFibGVDZWxsRWxlbWVudCBuIDsNCgkJTm9kZUxp
c3QgdGRDaGlsZExpc3QgOw0KCQlOb2RlIHRkTm9kZTsNCgkJDQoJCU5hbWVk
Tm9kZU1hcCBubm0gOw0KCQlTdHJpbmcgIGlucHV0SWRWYWx1ZSA7DQoJCVN0
cmluZyBpZEF0dHJpYnV0ZVZhbHVlOw0KCQlmb3IgKGludCBpPW5sLmdldExl
bmd0aCgpLTE7aT49MTtpLS0pIHsNCgkJCW5vID0gbmwuaXRlbShpKTsNCgkJ
CWlmIChuby5nZXROb2RlTmFtZSgpLnN1YnN0cmluZygwLDEpLmVxdWFscygi
IyIpKSBjb250aW51ZTsNCg0KCQkJbiA9IChIVE1MVGFibGVDZWxsRWxlbWVu
dCkgbmwuaXRlbShpKTsNCgkJCWlmKG4uZ2V0SWQoKS5sZW5ndGgoKT4wKXsN
CgkJCQlpZiAoIShhdHRyTGlzdC5jb250YWlucyhuLmdldElkKCkpKSl7DQoJ
CQkJCS8vU3lzdGVtLm91dC5wcmludGxuKCJyZW1vdmluZyBjb250ZW50IGZy
b20gdG9wICIrbi5nZXRJZCgpKTsNCgkJCQkJbi5nZXRQYXJlbnROb2RlKCku
cmVtb3ZlQ2hpbGQobik7DQoJCQkJfQ0KCQkJfWVsc2V7DQoJCQkJdGRDaGls
ZExpc3QgPSBuLmdldENoaWxkTm9kZXMoKTsNCgkJCQkNCgkJCQlmb3IoaW50
IGo9MDtqPHRkQ2hpbGRMaXN0LmdldExlbmd0aCgpO2orKyl7DQoJCQkJCXRk
Tm9kZSA9IHRkQ2hpbGRMaXN0Lml0ZW0oaik7DQoJCQkJCQ0KCQkJCQlubm0g
PSB0ZE5vZGUuZ2V0QXR0cmlidXRlcygpOw0KCQkJCQ0KCQkJCQlpZEF0dHJp
YnV0ZVZhbHVlID0gbm5tLmdldE5hbWVkSXRlbSgiaWQiKS5nZXROb2RlVmFs
dWUoKTsNCgkJCQkJDQoJCQkJCWlucHV0SWRWYWx1ZSA9IGlkQXR0cmlidXRl
VmFsdWUuc3Vic3RyaW5nKDAsaWRBdHRyaWJ1dGVWYWx1ZS5sZW5ndGgoKSkg
KyJEIjsNCgkJCQkJaWYgKCEoYXR0ckxpc3QuY29udGFpbnMoaW5wdXRJZFZh
bHVlKSkpIHsJDQoJCQkJCQkvL1N5c3RlbS5vdXQucHJpbnRsbigicmVtb3Zp
bmcgY29udGVudCBmcm9tIHRvcCAiK2lkQXR0cmlidXRlVmFsdWUpOw0KCQkJ
CQkJbi5nZXRQYXJlbnROb2RlKCkucmVtb3ZlQ2hpbGQobik7DQoJCQkJCX0N
CgkJCQl9CQkJCQ0KCQkJfQ0KCQl9DQoJCQ0KCQkNCgkJDQoJCS8vSFRNTFRh
YmxlQ2VsbEVsZW1lbnQgbjsNCgkJLyogbmwgPSB0ZW1wbGF0ZVJvdy5nZXRD
aGlsZE5vZGVzKCk7DQoJCWZvciAoaW50IGk9bmwuZ2V0TGVuZ3RoKCktMTtp
Pj0xO2ktLSkgewkJCQ0KCQkJIG4gPSAoSFRNTFRhYmxlQ2VsbEVsZW1lbnQp
IG5sLml0ZW0oaSk7DQoJCQkvL1N5c3RlbS5vdXQucHJpbnRsbihuLmdldElk
KCkrIiAiICtuLmdldElkKCkuc3Vic3RyaW5nKDAsbi5nZXRJZCgpLmxlbmd0
aCgpLTEpICk7DQoJCQlpZiAoIShhdHRyTGlzdC5jb250YWlucyhuLmdldElk
KCkpKSkNCgkJCQluLmdldFBhcmVudE5vZGUoKS5yZW1vdmVDaGlsZChuKTsN
CgkJfSovDQoNCg0KCQlubCA9IHRlbXBsYXRlSGRyUm93LmdldENoaWxkTm9k
ZXMoKTsNCgkJZm9yIChpbnQgaT1ubC5nZXRMZW5ndGgoKS0xO2k+PTE7aS0t
KSB7DQoJCQkgbiA9IChIVE1MVGFibGVDZWxsRWxlbWVudCkgbmwuaXRlbShp
KTsNCgkJCS8vU3lzdGVtLm91dC5wcmludGxuKG4uZ2V0SWQoKSsiICIgK24u
Z2V0SWQoKS5zdWJzdHJpbmcoMCxuLmdldElkKCkubGVuZ3RoKCktMSkgKTsN
CgkJCWlmICghKGF0dHJMaXN0LmNvbnRhaW5zKG4uZ2V0SWQoKS5zdWJzdHJp
bmcoMCxuLmdldElkKCkubGVuZ3RoKCktMSkpKSkNCgkJCQluLmdldFBhcmVu
dE5vZGUoKS5yZW1vdmVDaGlsZChuKTsNCgkJfQ0KCQkNCgkJSFRNTFRhYmxl
Um93RWxlbWVudCB0ZW1wbGF0ZVFDMVJvdyA9IHBhZ2UuZ2V0RWxlbWVudFFD
MVJvdygpOw0KCQlubCA9IHRlbXBsYXRlUUMxUm93LmdldENoaWxkTm9kZXMo
KTsNCgkJDQoJCWZvciAoaW50IGk9bmwuZ2V0TGVuZ3RoKCktMTtpPj0xO2kt
LSkgew0KCQkJbiA9IChIVE1MVGFibGVDZWxsRWxlbWVudCkgbmwuaXRlbShp
KTsNCgkJCWlmKG4uZ2V0SWQoKS5sZW5ndGgoKT4wKXsNCgkJCQlpZiAoIShh
dHRyTGlzdC5jb250YWlucyhuLmdldElkKCkuc3Vic3RyaW5nKDAsbi5nZXRJ
ZCgpLmxlbmd0aCgpLTMpKSkpIHsNCgkJCQkJLy9TeXN0ZW0ub3V0LnByaW50
bG4oInJlbW92aW5nIHFjMSBmcm9tIHRvcCAiK24uZ2V0SWQoKSk7DQoJCQkJ
CW4uZ2V0UGFyZW50Tm9kZSgpLnJlbW92ZUNoaWxkKG4pOwkJCQkNCgkJCQl9
DQoJCQl9ZWxzZXsNCgkJCQl0ZENoaWxkTGlzdCA9IG4uZ2V0Q2hpbGROb2Rl
cygpOwkJCQkNCgkJCQlmb3IoaW50IGo9MDtqPHRkQ2hpbGRMaXN0LmdldExl
bmd0aCgpO2orKyl7DQoJCQkJCXRkTm9kZSA9IHRkQ2hpbGRMaXN0Lml0ZW0o
aik7DQoJCQkJCW5ubSA9IHRkTm9kZS5nZXRBdHRyaWJ1dGVzKCk7DQoJCQkJ
CWlkQXR0cmlidXRlVmFsdWUgPSBubm0uZ2V0TmFtZWRJdGVtKCJpZCIpLmdl
dE5vZGVWYWx1ZSgpOw0KCQkJCQlpbnB1dElkVmFsdWUgPSBpZEF0dHJpYnV0
ZVZhbHVlLnN1YnN0cmluZygwLGlkQXR0cmlidXRlVmFsdWUubGVuZ3RoKCkt
MykrIkQiOwkJCQkJDQoJCQkJCWlmICghKGF0dHJMaXN0LmNvbnRhaW5zKGlu
cHV0SWRWYWx1ZSkpKSB7CQkJCQkJDQoJCQkJCQkvL1N5c3RlbS5vdXQucHJp
bnRsbigicmVtb3ZpbmcgcWMxIGZyb20gYm90dG9tICIraW5wdXRJZFZhbHVl
KTsNCgkJCQkJCW4uZ2V0UGFyZW50Tm9kZSgpLnJlbW92ZUNoaWxkKG4pOw0K
CQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCUhUTUxUYWJsZVJvd0VsZW1l
bnQgdGVtcGxhdGVRQzJSb3cgPSBwYWdlLmdldEVsZW1lbnRRQzJSb3coKTsN
CgkJbmwgPSB0ZW1wbGF0ZVFDMlJvdy5nZXRDaGlsZE5vZGVzKCk7DQoJCWZv
ciAoaW50IGk9bmwuZ2V0TGVuZ3RoKCktMTtpPj0xO2ktLSkgew0KCQkJbiA9
IChIVE1MVGFibGVDZWxsRWxlbWVudCkgbmwuaXRlbShpKTsNCgkJCWlmKG4u
Z2V0SWQoKS5sZW5ndGgoKT4wKXsJCQkNCgkJCQlpZiAoIShhdHRyTGlzdC5j
b250YWlucyhuLmdldElkKCkuc3Vic3RyaW5nKDAsbi5nZXRJZCgpLmxlbmd0
aCgpLTMpKSkpIHsNCgkJCQkJLy9TeXN0ZW0ub3V0LnByaW50bG4oInJlbW92
aW5nIHFjMiBmcm9tIHRvcCAiK24uZ2V0SWQoKSk7DQoJCQkJCW4uZ2V0UGFy
ZW50Tm9kZSgpLnJlbW92ZUNoaWxkKG4pOw0KCQkJCX0NCgkJCX1lbHNlew0K
CQkJCXRkQ2hpbGRMaXN0ID0gbi5nZXRDaGlsZE5vZGVzKCk7CQkJCQ0KCQkJ
CWZvcihpbnQgaj0wO2o8dGRDaGlsZExpc3QuZ2V0TGVuZ3RoKCk7aisrKXsN
CgkJCQkJdGROb2RlID0gdGRDaGlsZExpc3QuaXRlbShqKTsNCgkJCQkJbm5t
ID0gdGROb2RlLmdldEF0dHJpYnV0ZXMoKTsNCgkJCQkJaWRBdHRyaWJ1dGVW
YWx1ZSA9IG5ubS5nZXROYW1lZEl0ZW0oImlkIikuZ2V0Tm9kZVZhbHVlKCk7
DQoJCQkJCWlucHV0SWRWYWx1ZSA9IGlkQXR0cmlidXRlVmFsdWUuc3Vic3Ry
aW5nKDAsaWRBdHRyaWJ1dGVWYWx1ZS5sZW5ndGgoKS0zKSsiRCI7CQkJCQkN
CgkJCQkJaWYgKCEoYXR0ckxpc3QuY29udGFpbnMoaW5wdXRJZFZhbHVlKSkp
IHsJCQkJCQkNCgkJCQkJCS8vU3lzdGVtLm91dC5wcmludGxuKCJyZW1vdmlu
ZyBxYzIgZnJvbSBib3R0b20gIitpbnB1dElkVmFsdWUpOw0KCQkJCQkJbi5n
ZXRQYXJlbnROb2RlKCkucmVtb3ZlQ2hpbGQobik7DQoJCQkJCX0NCgkJCQl9
DQoJCQl9DQoJCQkNCgkJfQ0KCQlIVE1MVGFibGVSb3dFbGVtZW50IHRlbXBs
YXRlRlJvdyA9IHBhZ2UuZ2V0RWxlbWVudEZpbHRlclJvdygpOw0KCQlubCA9
IHRlbXBsYXRlRlJvdy5nZXRDaGlsZE5vZGVzKCk7DQoJCWZvciAoaW50IGk9
bmwuZ2V0TGVuZ3RoKCktMTtpPj0xO2ktLSkgew0KCQkJbiA9IChIVE1MVGFi
bGVDZWxsRWxlbWVudCkgbmwuaXRlbShpKTsNCgkJCS8vU3lzdGVtLm91dC5w
cmludGxuKG4uZ2V0SWQoKSsiICIgK24uZ2V0SWQoKS5zdWJzdHJpbmcoMCxu
LmdldElkKCkubGVuZ3RoKCktMSkgKTsNCgkJCWlmICghKGF0dHJMaXN0LmNv
bnRhaW5zKG4uZ2V0SWQoKS5zdWJzdHJpbmcoMCxuLmdldElkKCkubGVuZ3Ro
KCktMSkpKSkgew0KCQkJCS8vU3lzdGVtLm91dC5wcmludGxuKG4uZ2V0SWQo
KSsiICIgK24uZ2V0SWQoKS5zdWJzdHJpbmcoMCxuLmdldElkKCkubGVuZ3Ro
KCktMSkgKTsNCgkJCQluLmdldFBhcmVudE5vZGUoKS5yZW1vdmVDaGlsZChu
KTsNCgkJCX0NCgkJfQ0KDQoJCWludCBjZW50ZXJDb3VudCA9IDA7DQoJCWlu
dCBwYXRpZW50Q291bnQgPSAwOw0KCQlpbnQgZW5jQ291bnQgPSAwOw0KCQlp
bnQgcm93Q291bnQgPSAwOw0KCQlpbnQgcmVjQ291bnQgPSAwOw0KCQlib29s
ZWFuIHNhbWVQYXQgPSBmYWxzZTsNCgkJDQoJCUx1bmdDRE91dGNvbWUgbHVu
Z0NET3V0Y29tZSA9IG51bGw7DQoJCUx1bmdDRE91dGNvbWUgcHJldkx1bmdD
RE91dGNvbWUgPSBudWxsOw0KCQkNCgkJU3RyaW5nIGNlbnRlcklkID0gbnVs
bDsNCgkJU3RyaW5nIGNlbnRlck5hbWUgPSBudWxsOw0KCQlTdHJpbmcgcGF0
aWVudElkID0gbnVsbDsNCgkJU3RyaW5nIGVuY0lkID1udWxsOw0KCQlIVE1M
SW5wdXRFbGVtZW50IGVuY1NlbD1udWxsOw0KCQlIVE1MVGFibGVDZWxsRWxl
bWVudCBjZWxsID0gbnVsbDsNCgkJTm9kZSBzcGFuVGFnID1udWxsOw0KCQlI
VE1MVGFibGVSb3dFbGVtZW50IGxhc3RSb3cgPW51bGw7DQoJCUhUTUxUYWJs
ZVJvd0VsZW1lbnQgaGRyUm93ID0gbnVsbDsNCgkJU3RyaW5nIHF1ZXJ5VGV4
dCA9IG51bGw7DQoJCWludCBjb3VudGVyPTA7DQoJCQ0KCQkNCgkJU3RyaW5n
IHN0ck1pc3NpbmdEYXRhID0gIm1pc3NpbmciOw0KCQlEYXRlIGJsaW5kaW5n
U3RhcnREYXRlID0gbnVsbDsNCgkJRGF0ZSBibGluZGluZ0VuZERhdGUgPSBu
dWxsOw0KCQkvL3JlbW92ZUR1cGxpY2F0ZVJvd3Moc3JSb3dzLGF0dHJMaXN0
KTsNCgkJZm9yIChMaXN0SXRlcmF0b3IgZGF0YT1zclJvd3MubGlzdEl0ZXJh
dG9yKCk7IGRhdGEuaGFzTmV4dCgpO2NvdW50ZXIrKykgew0KDQoJCQlsdW5n
Q0RPdXRjb21lID0gKEx1bmdDRE91dGNvbWUpIGRhdGEubmV4dCgpOw0KCQkJ
DQoJCQlpZihjb3VudGVyPjApew0KCQkJCXByZXZMdW5nQ0RPdXRjb21lID0g
KEx1bmdDRE91dGNvbWUpIHNyUm93cy5nZXQoY291bnRlci0xKTsNCgkJCX0N
Cg0KCQkJIGNlbnRlcklkID0gbHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY2Vu
dGVyaWQiKTsNCgkJCSBjZW50ZXJOYW1lID0gbHVuZ0NET3V0Y29tZS5nZXRW
YWx1ZSgiY2VudGVyTmFtZSIpOw0KCQkJIHBhdGllbnRJZCA9IGx1bmdDRE91
dGNvbWUuZ2V0VmFsdWUoInBhdGllbnRpZCIpOw0KCQkJIGVuY0lkID0gbHVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgiZW5jb3VudGVyaWQiKTsNCgkJCSANCgkJ
CSANCgkJCSANCgkJCSANCgkJCXJvd0NvdW50Kys7DQoJCQlyZWNDb3VudCsr
Ow0KDQoNCgkJCWlmICghKGNlbnRlcklkLmVxdWFscyhjdXJDZW50ZXJJZCkp
KSB7DQoJCQkJLyppZiAoIShjdXJDZW50ZXJJZC5lcXVhbHMoIiIpKSkgew0K
CQkJCQlvdXQucHJpbnRsbigiPHRyPjx0ZCBjb2xzcGFuPSIrZGlzcGxheURh
dGFMaXN0LnNpemUoKSsiPiZuYnNwOzwvdGQ+PC90cj4iKTsNCgkJCQl9DQoJ
CQkJb3V0LnByaW50bG4oIjx0cj48dGQgY29sc3Bhbj0iK2Rpc3BsYXlEYXRh
TGlzdC5zaXplKCkrIj4iK2NlbnRlck5hbWUrIjwvdGQ+PC90cj4iKTsqLw0K
CQkJCWN1ckNlbnRlcklkID0gY2VudGVySWQ7DQoJCQkJY2VudGVyQ291bnQr
KzsNCgkJCX0NCg0KCQkJaWYgKCEocGF0aWVudElkLmVxdWFscyhjdXJQYXRp
ZW50SWQpKSkgew0KCQkJCWN1clBhdGllbnRJZCA9IHBhdGllbnRJZDsNCgkJ
CQlwYXRpZW50Q291bnQrKzsNCgkJCX0NCg0KCQkJaWYgKCEoZW5jSWQuZXF1
YWxzKGN1ckVuY0lkKSkpIHsNCgkJCQljdXJFbmNJZCA9IGVuY0lkOw0KCQkJ
CWVuY0NvdW50Kys7DQoJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJfQ0KCQkJ
ZWxzZSBzYW1lUGF0ID0gdHJ1ZTsNCg0KCQkJaWYgKCByb3dDb3VudCA+IDEy
ICYmICghKGZldmVudC5lcXVhbHMoInNhdmUiKSkpICkgew0KCQkJCWhkclJv
dyA9IChIVE1MVGFibGVSb3dFbGVtZW50KSB0ZW1wbGF0ZUhkclJvdy5jbG9u
ZU5vZGUodHJ1ZSk7DQoJCQkJdGVtcGxhdGVUYWJsZS5hcHBlbmRDaGlsZCho
ZHJSb3cpOw0KCQkJCXJvd0NvdW50ID0gMTsNCgkJCX0NCg0KCQkJaWYgKGF0
dHJMaXN0LmNvbnRhaW5zKCJFbmNvdW50ZXJJZEQiKSl7DQoJCQkJICAgcGFn
ZS5zZXRUZXh0RW5jb3VudGVyKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImVu
Y291bnRlcmlkIikpOw0KCQkJCQllbmNTZWwgPSAoSFRNTElucHV0RWxlbWVu
dCkgcGFnZS5nZXRFbGVtZW50QnlJZCgiU2VsRW5jIik7DQoJCQkJCWVuY1Nl
bC5zZXRWYWx1ZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJlbmNvdW50ZXJp
ZCIpKTsNCgkJCQl9ZWxzZXsNCgkJCQkgICBpZihwcmV2THVuZ0NET3V0Y29t
ZSE9bnVsbCAmJiBwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicGF0aWVu
dGlkIikuZXF1YWxzKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBhdGllbnRp
ZCIpKSl7DQoJCQkJICAgICAgc2FtZVBhdCA9IHRydWU7DQoJCQkJICAgfWVs
c2V7DQoJCQkJICAgCSBzYW1lUGF0ID0gZmFsc2U7DQoJCQkJICAgfQ0KCQkJ
CSAgIHBhZ2Uuc2V0VGV4dEVuY291bnRlcihsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJwYXRpZW50aWQiKSk7DQoJCQkJICAgcGFnZS5zZXRUZXh0RW5jb3Vu
dGVySWQoIlBhdGllbnQgSWQiKTsNCgkJCQkgICANCgkJCQkgICBlbmNTZWwg
PSAoSFRNTElucHV0RWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZCgiU2Vs
RW5jIik7DQoJCQkJICAgZW5jU2VsLnNldFZhbHVlKGx1bmdDRE91dGNvbWUu
Z2V0VmFsdWUoInBhdGllbnRpZCIpKTsJCQkgICANCgkJCQl9CQkNCg0KCQkJ
DQoJCQkvL3BhZ2Uuc2V0VGV4dEVuY291bnRlcihsdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJlbmNvdW50ZXJpZCIpKTsNCg0KCQkJaWYgKGF0dHJMaXN0LmNv
bnRhaW5zKCJWaXNpdERhdGVEIikpew0KCQkJCWlmKHByZXZMdW5nQ0RPdXRj
b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgidmlzaXREYXRlIikpDQoJCQkJCQkuZXF1YWxzKFN0cmlu
Zy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInZpc2l0RGF0ZSIp
KSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQkJCQkJDQoJCQkJ
cGFnZS5zZXRUZXh0VmlzaXREYXRlKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo
InZpc2l0RGF0ZSIpKTsNCgkJCQkNCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5j
b250YWlucygiQ29tcHV0ZWRWaXNpdEFnZUQiKSl7DQoJCQkJaWYocHJldkx1
bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJjb21wdXRlZFZpc2l0QWdlIikpDQoJCQkJ
CQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFs
dWUoImNvbXB1dGVkVmlzaXRBZ2UiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZh
bHNlOw0KCQkJCX0JCQkJCQ0KCQkJCXBhZ2Uuc2V0VGV4dENvbXB1dGVkVmlz
aXRBZ2UobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY29tcHV0ZWRWaXNpdEFn
ZSIpKTsJCQkJDQoJCQl9DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlBB
WEQiKSl7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0
cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwYXhO
dW0iKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgicGF4TnVtIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBm
YWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0UEFYKGx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoInBheE51bSIpKTsNCgkJCQkNCgkJCX0NCgkJCWlmIChh
dHRyTGlzdC5jb250YWlucygiQ1BURCIpKSB7DQoJCQkJaWYocHJldkx1bmdD
RE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJjcHROdW0iKSkNCgkJCQkJCS5lcXVhbHMoU3Ry
aW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY3B0TnVtIikp
KSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5z
ZXRUZXh0Q1BUKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNwdE51bSIpKTsN
CgkJCQkNCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiU2V4RCIp
KSB7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmlu
Zy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJzZXgiKSkN
CgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgic2V4IikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJ
CQl9DQoJCQkJcGFnZS5zZXRUZXh0U2V4KGx1bmdDRE91dGNvbWUuZ2V0VmFs
dWUoInNleCIpKTsJCQkJDQoJCQl9DQoJCQlpZiAoYXR0ckxpc3QuY29udGFp
bnMoIlJhY2VEIikpIHsNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVs
bCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFs
dWUoInJhY2UiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgicmFjZSIpKSkpew0KCQkJCQlzYW1lUGF0
ID0gZmFsc2U7DQoJCQkJfQ0KCQkJCXBhZ2Uuc2V0VGV4dFJhY2UobHVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgicmFjZSIpKTsJCQkJDQoJCQl9DQoJCQlpZiAo
YXR0ckxpc3QuY29udGFpbnMoIlR4VHlwZUQiKSl7DQoJCQkJaWYocHJldkx1
bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJ0cmFuc3BsYW50VHlwZSIpKQ0KCQkJCQkJ
LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJ0cmFuc3BsYW50VHlwZSIpKSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7
DQoJCQkJfQ0KCQkJCXBhZ2Uuc2V0VGV4dFR4VHlwZShsdW5nQ0RPdXRjb21l
LmdldFZhbHVlKCJ0cmFuc3BsYW50VHlwZSIpKTsJCQkJDQoJCQl9DQoNCgkJ
CWlmIChhdHRyTGlzdC5jb250YWlucygiVHhEYXRlRCIpKXsNCgkJCQlpZihw
cmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJl
dkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInRyYW5zcGxhbnREYXRlIikpDQoJ
CQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0
VmFsdWUoInRyYW5zcGxhbnREYXRlIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBm
YWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0VHhEYXRlKGx1bmdDRE91
dGNvbWUuZ2V0VmFsdWUoInRyYW5zcGxhbnREYXRlIikpOwkJCQkNCgkJCX0N
CgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiVHhJbmREIikpew0KCQkJCWlm
KHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihw
cmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidHJhbnNwbGFudEluZCIpKQ0K
CQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJ0cmFuc3BsYW50SW5kIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBm
YWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0VHhJbmQobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgidHJhbnNwbGFudEluZCIpKTsJCQkJDQoJCQl9DQoJ
CQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkRheXNEIikpew0KCQkJCWlmKHBy
ZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2
THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZGF5c0Zyb21UeCIpKQ0KCQkJCQkJ
LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJkYXlzRnJvbVR4IikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJ
CQl9DQoJCQkJcGFnZS5zZXRUZXh0RGF5cyhsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJkYXlzRnJvbVR4IikpOwkJCQkNCgkJCX0NCgkJCWlmIChhdHRyTGlz
dC5jb250YWlucygiQWdlRCIpKXsNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29t
ZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUu
Z2V0VmFsdWUoImFnZSIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVP
ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJhZ2UiKSkpKXsNCgkJCQkJc2Ft
ZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRleHRBZ2UobHVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgiYWdlIikpOwkJCQkNCgkJCX0NCgkJCWlm
IChhdHRyTGlzdC5jb250YWlucygiQ29tcHV0ZWRFbnJvbGxBZ2VEIikpew0K
CQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFs
dWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY29tcHV0ZWRFbnJv
bGxtZW50QWdlIikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNvbXB1dGVkRW5yb2xsbWVudEFnZSIp
KSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJCXBhZ2Uu
c2V0VGV4dENvbXB1dGVkRW5yb2xsQWdlKGx1bmdDRE91dGNvbWUuZ2V0VmFs
dWUoImNvbXB1dGVkRW5yb2xsbWVudEFnZSIpKTsJCQkJDQoJCQl9DQoJCQlp
ZiAoYXR0ckxpc3QuY29udGFpbnMoIklzVHhSZWNpcGllbnREIikpew0KCQkJ
CWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVP
ZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaXNUeFJlY2VwaWVudCIp
KQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21l
LmdldFZhbHVlKCJpc1R4UmVjZXBpZW50IikpKSl7DQoJCQkJCXNhbWVQYXQg
PSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0SXNUeFJlY2lwaWVu
dChsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpc1R4UmVjZXBpZW50IikpOwkJ
CQkNCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiSGFzUmVjZWl2
ZWRGdW5kb3BsaWNhdGlvbkQiKSl7CQ0KCQkJCWlmKHByZXZMdW5nQ0RPdXRj
b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgiaGFzUmVjZWl2ZWRGdW5kb3BsaWNhdGlvbiIpKQ0KCQkJ
CQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJoYXNSZWNlaXZlZEZ1bmRvcGxpY2F0aW9uIikpKSl7DQoJCQkJCXNh
bWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0SGFzUmVj
ZWl2ZWRGdW5kb3BsaWNhdGlvbihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJo
YXNSZWNlaXZlZEZ1bmRvcGxpY2F0aW9uIikpOwkNCgkJCX0NCgkJCWlmIChh
dHRyTGlzdC5jb250YWlucygiRG9iRCIpKXsNCgkJCQlpZihwcmV2THVuZ0NE
T3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91
dGNvbWUuZ2V0VmFsdWUoImRvYiIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcu
dmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkb2IiKSkpKXsNCgkJ
CQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRleHRE
b2IobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZG9iIikpOwkJCQkNCgkJCX0N
CgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiRW5yb2xsRHREIikpew0KCQkJ
CWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVP
ZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZW5yb2xsRHQiKSkNCgkJ
CQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRW
YWx1ZSgiZW5yb2xsRHQiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K
CQkJCX0NCgkJCQlwYWdlLnNldFRleHRFbnJvbGxEdChsdW5nQ0RPdXRjb21l
LmdldFZhbHVlKCJlbnJvbGxEdCIpKTsJCQkJDQoJCQl9DQoJCQlpZiAoYXR0
ckxpc3QuY29udGFpbnMoIkFnZUNSRkQiKSl7DQoJCQkJaWYocHJldkx1bmdD
RE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJhZ2VDUkYiKSkNCgkJCQkJCS5lcXVhbHMoU3Ry
aW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYWdlQ1JGIikp
KSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5z
ZXRUZXh0QWdlQ1JGKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImFnZUNSRiIp
KTsJCQkJDQoJCQl9DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlBhdGll
bnRTdGF0dXNEIikpIHsNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVs
bCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFs
dWUoInBhdGllbnRTdGF0dXMiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZh
bHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicGF0aWVudFN0YXR1cyIp
KSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJCXBhZ2Uu
c2V0VGV4dFBhdGllbnRTdGF0dXMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
cGF0aWVudFN0YXR1cyIpKTsNCgkJCQkNCgkJCX0NCgkJCWlmIChhdHRyTGlz
dC5jb250YWlucygiSW5kaWNhdGlvbkQiKSl7DQoJCQkJaWYocHJldkx1bmdD
RE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJpbmRpY2F0aW9uIikpDQoJCQkJCQkuZXF1YWxz
KFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZGlj
YXRpb24iKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJ
CQlwYWdlLnNldFRleHRJbmRpY2F0aW9uKGx1bmdDRE91dGNvbWUuZ2V0VmFs
dWUoImluZGljYXRpb24iKSk7DQoJCQkJDQoJCQl9DQoNCgkJCWlmIChhdHRy
TGlzdC5jb250YWlucygiT0JEIikpew0KCQkJCWlmKHByZXZMdW5nQ0RPdXRj
b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgiT0IiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVl
T2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiT0IiKSkpKXsNCgkJCQkJc2Ft
ZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRleHRPQihsdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJPQiIpKTsNCgkJCQ0KCQkJfQ0KCQkJaWYg
KGF0dHJMaXN0LmNvbnRhaW5zKCJDVlJEIikpIHsNCgkJCQlpZihwcmV2THVu
Z0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoIkNWUiIpKQ0KCQkJCQkJLmVxdWFscyhTdHJp
bmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJDVlIiKSkpKXsN
CgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRl
eHRDVlIobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiQ1ZSIikpOw0KCQkJfQ0K
DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkJpb3BzeUQiKSkgew0KCQkJ
CWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVP
ZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmlvcHN5IikpDQoJCQkJ
CQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFs
dWUoImJpb3BzeSIpKSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJ
fQ0KCQkJCXBhZ2Uuc2V0VGV4dEJpb3BzeShsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJiaW9wc3kiKSk7DQoJCQkJDQoJCQl9DQoJCQkNCgkJCWlmIChhdHRy
TGlzdC5jb250YWlucygiQmlvcHN5RGF0ZUQiKSkgew0KCQkJCWlmKHByZXZM
dW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgiYmlvcHN5RGF0ZSIpKQ0KCQkJCQkJLmVx
dWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJi
aW9wc3lEYXRlIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9
DQoJCQkJcGFnZS5zZXRUZXh0QmlvcHN5RGF0ZShsdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJiaW9wc3lEYXRlIikpOw0KCQkJCQ0KCQkJfQ0KCQkJaWYgKGF0
dHJMaXN0LmNvbnRhaW5zKCJCaW9wc3lDb21tZW50c0QiKSkgew0KCQkJCWlm
KHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihw
cmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmlvcHN5Q29tbWVudHMiKSkN
CgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgiYmlvcHN5Q29tbWVudHMiKSkpKXsNCgkJCQkJc2FtZVBhdCA9
IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRleHRCaW9wc3lDb21tZW50
cyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiaW9wc3lDb21tZW50cyIpKTsJ
CQkJDQoJCQl9DQoJCQkNCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQWN1
dGVHcmFkZUQiKSkgew0KCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxs
ICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiYWN1dGVHcmFkZSIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVP
ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJhY3V0ZUdyYWRlIikpKSl7DQoJ
CQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkgICAgcGFnZS5zZXRU
ZXh0QWN1dGVHcmFkZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJhY3V0ZUdy
YWRlIikpOw0KCQkJfQ0KCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJBaXJ3
YXlHcmFkZUQiKSkgew0KCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxs
ICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiYWlyd2F5R3JhZGUiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVl
T2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYWlyd2F5R3JhZGUiKSkpKXsN
CgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCSAgICBwYWdlLnNl
dFRleHRBaXJ3YXlHcmFkZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJhaXJ3
YXlHcmFkZSIpKTsNCgkJCX0NCg0KCQkJLyppZiAoYXR0ckxpc3QuY29udGFp
bnMoIk1hcmJvZUFjdXRlR3JhZGVEIikpIHBhZ2Uuc2V0VGV4dE1hcmJvZUFj
dXRlR3JhZGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgibWFyYm9lQWN1dGVH
cmFkZSIpKTsNCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiTWFyYm9lQWly
d2F5R3JhZGVEIikpIHBhZ2Uuc2V0VGV4dE1hcmJvZUFpcndheUdyYWRlKGx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm1hcmJvZUFpcndheUdyYWRlIikpOw0K
CQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJNYXJib2VDb21tZW50c0QiKSkg
cGFnZS5zZXRUZXh0TWFyYm9lQ29tbWVudHMobHVuZ0NET3V0Y29tZS5nZXRW
YWx1ZSgibWFyYm9lQ29tbWVudHMiKSk7DQoNCgkJCWlmIChhdHRyTGlzdC5j
b250YWlucygiQmVycnlBY3V0ZUdyYWRlRCIpKSBwYWdlLnNldFRleHRCZXJy
eUFjdXRlR3JhZGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmVycnlBY3V0
ZUdyYWRlIikpOw0KCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJCZXJyeUFp
cndheUdyYWRlRCIpKSBwYWdlLnNldFRleHRCZXJyeUFpcndheUdyYWRlKGx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJlcnJ5QWlyd2F5R3JhZGUiKSk7DQoJ
CQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkJlcnJ5Q29tbWVudHNEIikpIHBh
Z2Uuc2V0VGV4dEJlcnJ5Q29tbWVudHMobHVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiYmVycnlDb21tZW50cyIpKTsNCg0KCQkJaWYgKGF0dHJMaXN0LmNvbnRh
aW5zKCJZb3VzZW1BY3V0ZUdyYWRlRCIpKSBwYWdlLnNldFRleHRZb3VzZW1B
Y3V0ZUdyYWRlKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInlvdXNlbUFjdXRl
R3JhZGUiKSk7DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIllvdXNlbUFp
cndheUdyYWRlRCIpKSBwYWdlLnNldFRleHRZb3VzZW1BaXJ3YXlHcmFkZShs
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ5b3VzZW1BaXJ3YXlHcmFkZSIpKTsN
CgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiWW91c2VtQ29tbWVudHNEIikp
IHBhZ2Uuc2V0VGV4dFlvdXNlbUNvbW1lbnRzKGx1bmdDRE91dGNvbWUuZ2V0
VmFsdWUoInlvdXNlbUNvbW1lbnRzIikpOyovDQoJCQkNCgkJCWlmIChhdHRy
TGlzdC5jb250YWlucygiTUJBY3V0ZUdyYWRlRCIpKXsNCgkJCQlpZihwcmV2
THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm1iQWN1dGVHcmFkZSIpKQ0KCQkJCQkJ
LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJtYkFjdXRlR3JhZGUiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K
CQkJCX0NCgkJCQlwYWdlLnNldFRleHRNQkFjdXRlR3JhZGUobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgibWJBY3V0ZUdyYWRlIikpOw0KCQkJfQ0KCQkJaWYg
KGF0dHJMaXN0LmNvbnRhaW5zKCJNQkFpcndheUdyYWRlRCIpKXsNCgkJCQlp
ZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2Yo
cHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm1iQWlyd2F5R3JhZGUiKSkN
CgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgibWJBaXJ3YXlHcmFkZSIpKSkpew0KCQkJCQlzYW1lUGF0ID0g
ZmFsc2U7DQoJCQkJfQ0KCQkJCXBhZ2Uuc2V0VGV4dE1CQWlyd2F5R3JhZGUo
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgibWJBaXJ3YXlHcmFkZSIpKTsNCgkJ
CX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiTUJDb21tZW50c0QiKSl7
DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52
YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJtYkNvbW1lbnRz
IikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoIm1iQ29tbWVudHMiKSkpKXsNCgkJCQkJc2FtZVBhdCA9
IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRleHRNQkNvbW1lbnRzKGx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm1iQ29tbWVudHMiKSk7DQoJCQl9DQoN
CgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQk9TRCIpKXsNCgkJCQlpZihw
cmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJl
dkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJvcyIpKQ0KCQkJCQkJLmVxdWFs
cyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJib3Mi
KSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdl
LnNldFRleHRCT1MobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYm9zIikpOw0K
CQkJfQ0KDQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkNNVkQiKSl7DQoJ
CQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1
ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjbXZJbmZlY3Rpb24i
KSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgiY212SW5mZWN0aW9uIikpKSl7DQoJCQkJCXNhbWVQYXQg
PSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0Q01WKGx1bmdDRE91
dGNvbWUuZ2V0VmFsdWUoImNtdkluZmVjdGlvbiIpKTsNCgkJCX0NCgkJCWlm
IChhdHRyTGlzdC5jb250YWlucygiSW5mRCIpKSB7DQoJCQkJaWYocHJldkx1
bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJvdGhlckluZmVjdGlvbiIpKQ0KCQkJCQkJ
LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJvdGhlckluZmVjdGlvbiIpKSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7
DQoJCQkJfQ0KCQkJCXBhZ2Uuc2V0VGV4dEluZihsdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJvdGhlckluZmVjdGlvbiIpKTsNCgkJCX0NCgkJCWlmIChhdHRy
TGlzdC5jb250YWlucygiSW5mT3JnYW5pc21zRCIpKXsNCgkJCQlpZihwcmV2
THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZk9yZ2FuaXNtcyIpKQ0KCQkJCQkJ
LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJpbmZPcmdhbmlzbXMiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K
CQkJCX0NCgkJCQlwYWdlLnNldFRleHRJbmZPcmdhbmlzbXMobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgiaW5mT3JnYW5pc21zIikpOw0KCQkJfQ0KCQkJLy9p
ZiAoYXR0ckxpc3QuY29udGFpbnMoIkdDVkRvc2VEIikpIHBhZ2Uuc2V0VGV4
dEdDVkRvc2UobHVuZ0NET3V0Y29tZS5nZXRHQ1ZEb3NlKCkpOw0KCQkJLy9p
ZiAoYXR0ckxpc3QuY29udGFpbnMoIlZHQ1ZEb3NlRCIpKSBwYWdlLnNldFRl
eHRWR0NWRG9zZShsdW5nQ0RPdXRjb21lLmdldFZHQ1ZEb3NlKCkpOw0KCQkJ
aWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJDb21wRCIpKXsNCgkJCQlpZihwcmV2
THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNvbXBsaWNhdGlvbiIpKQ0KCQkJCQkJ
LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJjb21wbGljYXRpb24iKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K
CQkJCX0NCgkJCQlwYWdlLnNldFRleHRDb21wKGx1bmdDRE91dGNvbWUuZ2V0
VmFsdWUoImNvbXBsaWNhdGlvbiIpKTsNCgkJCX0NCgkJCWlmIChhdHRyTGlz
dC5jb250YWlucygiQ29tcERlc2NEIikpew0KCQkJCWlmKHByZXZMdW5nQ0RP
dXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgiY29tcGxpY2F0aW9uRGVzYyIpKQ0KCQkJCQkJLmVx
dWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJj
b21wbGljYXRpb25EZXNjIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsN
CgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0Q29tcERlc2MobHVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgiY29tcGxpY2F0aW9uRGVzYyIpKTsJCQkJDQoJCQl9DQoN
CgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQWRtaXR0ZWREIikpew0KCQkJ
CWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVP
ZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaG9zcGl0YWxpemF0aW9u
IikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoImhvc3BpdGFsaXphdGlvbiIpKSkpew0KCQkJCQlzYW1l
UGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJCXBhZ2Uuc2V0VGV4dEFkbWl0dGVk
KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImhvc3BpdGFsaXphdGlvbiIpKTsJ
CQkJDQoJCQl9DQoJCQkNCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiU3Vt
bWFyeUNvbW1lbnRzRCIpKXsNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9
bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0
VmFsdWUoInN1bW1hcnlDb21tZW50cyIpKQ0KCQkJCQkJLmVxdWFscyhTdHJp
bmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJzdW1tYXJ5Q29t
bWVudHMiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJ
CQlwYWdlLnNldFRleHRTdW1tYXJ5Q29tbWVudHMobHVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgic3VtbWFyeUNvbW1lbnRzIikpOwkJCQkNCgkJCX0NCgkJCQ0K
CQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJEb25vckNNVklnR0QiKSl7CQ0K
CQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFs
dWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZG9ub3JDTVZJZ0ci
KSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgiZG9ub3JDTVZJZ0ciKSkpKXsNCgkJCQkJc2FtZVBhdCA9
IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRleHRJbmZUaGVyYXB5KGx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoImRvbm9yQ01WSWdHIikpOwkJCQkNCgkJ
CX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiRG9ub3JDTVZJZ0dEYXRl
RCIpKXsNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3Ry
aW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImRvbm9y
Q01WSWdHRGF0ZSIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihs
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkb25vckNNVklnR0RhdGUiKSkpKXsN
CgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRl
eHREb25vckNNVklnR0RhdGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZG9u
b3JDTVZJZ0dEYXRlIikpOwkJCQ0KCQkJfQ0KCQkJaWYgKGF0dHJMaXN0LmNv
bnRhaW5zKCJEb25vckNNVklnTUQiKSl7DQoJCQkJaWYocHJldkx1bmdDRE91
dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRj
b21lLmdldFZhbHVlKCJkb25vckNNVklnTSIpKQ0KCQkJCQkJLmVxdWFscyhT
dHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkb25vckNN
VklnTSIpKSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJ
CXBhZ2Uuc2V0VGV4dERvbm9yQ01WSWdNKGx1bmdDRE91dGNvbWUuZ2V0VmFs
dWUoImRvbm9yQ01WSWdNIikpOwkJCQkNCgkJCX0NCgkJCWlmIChhdHRyTGlz
dC5jb250YWlucygiRG9ub3JDTVZJZ01EYXRlRCIpKXsNCgkJCQlpZihwcmV2
THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoImRvbm9yQ01WSWdNRGF0ZSIpKQ0KCQkJ
CQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJkb25vckNNVklnTURhdGUiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZh
bHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRleHREb25vckNNVklnTURhdGUo
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZG9ub3JDTVZJZ01EYXRlIikpOwkJ
CQkNCgkJCX0NCg0KCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJQcmVUeENN
VklnR0QiKSl7CQkNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAm
JiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo
InByZVR4Q01WSWdHIikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9m
KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInByZVR4Q01WSWdHIikpKSl7DQoJ
CQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0
UHJlVHhDTVZJZ0cobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicHJlVHhDTVZJ
Z0ciKSk7DQoJCQl9DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlByZVR4
Q01WSWdHRGF0ZUQiKSl7CQkNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9
bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0
VmFsdWUoInByZVR4Q01WSWdHRGF0ZSIpKQ0KCQkJCQkJLmVxdWFscyhTdHJp
bmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwcmVUeENNVkln
R0RhdGUiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJ
CQlwYWdlLnNldFRleHRQcmVUeENNVklnR0RhdGUobHVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgicHJlVHhDTVZJZ0dEYXRlIikpOw0KCQkJfQ0KCQkJDQoJCQlp
ZiAoYXR0ckxpc3QuY29udGFpbnMoIlByZVR4Q01WSWdNRCIpKXsJDQoJCQkJ
aWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9m
KHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwcmVUeENNVklnTSIpKQ0K
CQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJwcmVUeENNVklnTSIpKSkpew0KCQkJCQlzYW1lUGF0ID0gZmFs
c2U7DQoJCQkJfQ0KCQkJCXBhZ2Uuc2V0VGV4dFByZVR4Q01WSWdNKGx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoInByZVR4Q01WSWdNIikpOw0KCQkJfQ0KCQkJ
aWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJQcmVUeENNVklnTURhdGVEIikpewkJ
DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52
YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwcmVUeENNVkln
TURhdGUiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgicHJlVHhDTVZJZ01EYXRlIikpKSl7DQoJCQkJ
CXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0UHJl
VHhDTVZJZ01EYXRlKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInByZVR4Q01W
SWdNRGF0ZSIpKTsNCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygi
QkFMRCIpKSB7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYg
IVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJi
YWwiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgiYmFsIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxz
ZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0QkFMKGx1bmdDRE91dGNvbWUu
Z2V0VmFsdWUoImJhbCIpKTsNCgkJCQkNCgkJCX0NCgkJCWlmIChhdHRyTGlz
dC5jb250YWlucygiQkFMRGF0ZUQiKSkgew0KCQkJCWlmKHByZXZMdW5nQ0RP
dXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgiYmFsRGF0ZSIpKQ0KCQkJCQkJLmVxdWFscyhTdHJp
bmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiYWxEYXRlIikp
KSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5z
ZXRUZXh0QkFMRGF0ZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiYWxEYXRl
IikpOw0KCQkJCQ0KCQkJfQ0KCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJC
QUxDdWx0dXJlRCIpKSB7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51
bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJiYWxDZWxsQ3VsdHVyZSIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcu
dmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiYWxDZWxsQ3VsdHVy
ZSIpKSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJCXBh
Z2Uuc2V0VGV4dEJBTEN1bHR1cmUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
YmFsQ2VsbEN1bHR1cmUiKSk7DQoJCQkJDQoJCQl9DQoJCQlpZiAoYXR0ckxp
c3QuY29udGFpbnMoIkJBTE9yZ2FuaXNtc0QiKSl7DQoJCQkJaWYocHJldkx1
bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJiYWxPcmdhbmlzbXMiKSkNCgkJCQkJCS5l
cXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
YmFsT3JnYW5pc21zIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJ
CQl9DQoJCQkJcGFnZS5zZXRUZXh0QkFMT3JnYW5pc21zKGx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoImJhbE9yZ2FuaXNtcyIpKTsNCgkJCQkNCgkJCX0NCgkJ
CWlmIChhdHRyTGlzdC5jb250YWlucygiQkFMSUNEIikpew0KCQkJCWlmKHBy
ZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2
THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFsSUMiKSkNCgkJCQkJCS5lcXVh
bHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFs
SUMiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQlw
YWdlLnNldFRleHRCQUxJQyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiYWxJ
QyIpKTsNCgkJCQkNCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygi
QkFMUENEIikpIHsNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAm
JiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo
ImJhbFBDIikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoImJhbFBDIikpKSl7DQoJCQkJCXNhbWVQYXQg
PSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0QkFMUEMobHVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgiYmFsUEMiKSk7DQoJCQkJDQoJCQl9DQoJCQlp
ZiAoYXR0ckxpc3QuY29udGFpbnMoIkZ1bmN0aW9uVGVzdEQiKSl7DQoJCQkJ
aWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9m
KHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJmdW5jdGlvblRlc3QiKSkN
CgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgiZnVuY3Rpb25UZXN0IikpKSl7DQoJCQkJCXNhbWVQYXQgPSBm
YWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0RnVuY3Rpb25UZXN0KGx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoImZ1bmN0aW9uVGVzdCIpKTsNCgkJCQkN
CgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQmVzdEZFVjFEIikp
ew0KCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcu
dmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmVzdEZFVjEi
KSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgiYmVzdEZFVjEiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZh
bHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRleHRCZXN0RkVWMShsdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJiZXN0RkVWMSIpKTsNCgkJCQkNCgkJCX0NCgkJ
CWlmIChhdHRyTGlzdC5jb250YWlucygiRkVWMUQiKSl7DQoJCQkJaWYocHJl
dkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZM
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJGRVYxIikpDQoJCQkJCQkuZXF1YWxz
KFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIkZFVjEi
KSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdl
LnNldFRleHRGRVYxKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIkZFVjEiKSk7
DQoJCQkJDQoJCQl9DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkRlbHRh
RkVWMUQiKSl7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYg
IVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJk
ZWx0YUZFVjEiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgiZGVsdGFGRVYxIikpKSl7DQoJCQkJCXNh
bWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0RGVsdGFG
RVYxKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImRlbHRhRkVWMSIpKTsNCgkJ
CQkNCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiRlZDRCIpKXsN
CgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZh
bHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIkZWQyIpKQ0KCQkJ
CQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJGVkMiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0N
CgkJCQlwYWdlLnNldFRleHRGVkMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
RlZDIikpOw0KCQkJCQ0KCQkJfQ0KCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5z
KCJPMlNhdEQiKSl7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwg
JiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJvMlNhdCIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJvMlNhdCIpKSkpew0KCQkJCQlzYW1lUGF0
ID0gZmFsc2U7DQoJCQkJfQ0KCQkJCXBhZ2Uuc2V0VGV4dE8yU2F0KGx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoIm8yU2F0IikpOw0KCQkJCQ0KCQkJfQ0KCQkJ
aWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJSZWpEIikpIHsNCgkJCQlpZihwcmV2
THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlaiIpKQ0KCQkJCQkJLmVxdWFscyhT
dHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWoiKSkp
KXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNl
dFRleHRSZWoobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVqIikpOw0KCQkJ
fQ0KCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJSZWpUaEQiKSkgew0KCQkJ
CWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVP
ZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVqVGgiKSkNCgkJCQkJ
CS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgicmVqVGgiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0N
CgkJCQlwYWdlLnNldFRleHRSZWpUaChsdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJyZWpUaCIpKTsNCgkJCQkNCgkJCX0NCgkJCS8vaWYgKGF0dHJMaXN0LmNv
bnRhaW5zKCJDQURvc2VEIikpIHBhZ2Uuc2V0VGV4dENBRG9zZShsdW5nQ0RP
dXRjb21lLmdldENBRG9zZSgpKTsNCgkJCS8vaWYgKGF0dHJMaXN0LmNvbnRh
aW5zKCJGS0Rvc2VEIikpIHBhZ2Uuc2V0VGV4dEZLRG9zZShsdW5nQ0RPdXRj
b21lLmdldEZLRG9zZSgpKTsNCgkJCS8vaWYgKGF0dHJMaXN0LmNvbnRhaW5z
KCJTdGVyb2lkRG9zZUQiKSkgcGFnZS5zZXRUZXh0U3Rlcm9pZERvc2UobHVu
Z0NET3V0Y29tZS5nZXRTdGVyb2lkRG9zZSgpKTsNCg0KCQkJaWYgKGF0dHJM
aXN0LmNvbnRhaW5zKCJXQkNDb3VudEQiKSl7DQoJCQkJaWYobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgid2JjQ291bnQiKSE9bnVsbCAgJiYgIWx1bmdDRE91
dGNvbWUuZ2V0VmFsdWUoIndiY0NvdW50IikudHJpbSgpLmVxdWFscygiIikp
ew0KCQkJCQlpZighU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRW
YWx1ZSgid2JjQ291bnQiKSkuc3RhcnRzV2l0aCgiLTEiKSl7DQoJCQkJCQlw
YWdlLnNldFRleHRXQkNDb3VudChsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ3
YmNDb3VudCIpKTsNCgkJCQkJfQ0KCQkJCQlpZihTdHJpbmcudmFsdWVPZihs
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ3YmNDb3VudCIpKS5zdGFydHNXaXRo
KCItMSIpKXsNCgkJCQkJCXBhZ2Uuc2V0VGV4dFdCQ0NvdW50KCIoIitsdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJ3YmNDb3VudCIpKyIpIik7DQoJCQkJCX0N
CgkJCQl9ZWxzZXsNCgkJCQkJcGFnZS5zZXRUZXh0V0JDQ291bnQoIiIpOw0K
CQkJCX0NCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3Ry
aW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIndiY0Nv
dW50IikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91
dGNvbWUuZ2V0VmFsdWUoIndiY0NvdW50IikpKSl7DQoJCQkJCXNhbWVQYXQg
PSBmYWxzZTsNCgkJCQl9DQoJCQkJDQoJCQkJLy9wYWdlLnNldFRleHRXQkND
b3VudChsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ3YmNDb3VudCIpKTsNCgkJ
CX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiSEdCQ291bnREIikpew0K
CQkJCWlmKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImhnYkNvdW50IikhPW51
bGwgICYmICFsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJoZ2JDb3VudCIpLnRy
aW0oKS5lcXVhbHMoIiIpKXsgDQoJCQkJCWlmKCFTdHJpbmcudmFsdWVPZihs
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJoZ2JDb3VudCIpKS5zdGFydHNXaXRo
KCItMSIpKXsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEhHQkNvdW50KGx1bmdDRE91
dGNvbWUuZ2V0VmFsdWUoImhnYkNvdW50IikpOw0KCQkJCQl9DQoJCQkJCWlm
KFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImhnYkNv
dW50IikpLnN0YXJ0c1dpdGgoIi0xIikpew0KCQkJCQkJcGFnZS5zZXRUZXh0
SEdCQ291bnQoIigiK2x1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImhnYkNvdW50
IikrIikiKTsNCgkJCQkJfQ0KCQkJCX1lbHNlew0KCQkJCQlwYWdlLnNldFRl
eHRIR0JDb3VudCgiIik7DQoJCQkJfQ0KCQkJCWlmKHByZXZMdW5nQ0RPdXRj
b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgiaGdiQ291bnQiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5n
LnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaGdiQ291bnQiKSkp
KXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQkvL3BhZ2Uu
c2V0VGV4dEhHQkNvdW50KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImhnYkNv
dW50IikpOw0KCQkJfQ0KCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJQbGF0
ZWxldENvdW50RCIpKXsNCgkJCQlpZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJwbGF0ZWxldENvdW50IikhPW51bGwgICYmICFsdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJwbGF0ZWxldENvdW50IikudHJpbSgpLmVxdWFscygiIikpeyAN
CgkJCQkJaWYoIVN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFs
dWUoInBsYXRlbGV0Q291bnQiKSkuc3RhcnRzV2l0aCgiLTEiKSl7DQoJCQkJ
CQlwYWdlLnNldFRleHRQbGF0ZWxldENvdW50KGx1bmdDRE91dGNvbWUuZ2V0
VmFsdWUoInBsYXRlbGV0Q291bnQiKSk7DQoJCQkJCX0NCgkJCQkJaWYoU3Ry
aW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicGxhdGVsZXRD
b3VudCIpKS5zdGFydHNXaXRoKCItMSIpKXsNCgkJCQkJCXBhZ2Uuc2V0VGV4
dFBsYXRlbGV0Q291bnQoIigiK2x1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBs
YXRlbGV0Q291bnQiKSsiKSIpOw0KCQkJCQl9DQoJCQkJfWVsc2V7DQoJCQkJ
CXBhZ2Uuc2V0VGV4dFBsYXRlbGV0Q291bnQoIiIpOw0KCQkJCX0NCgkJCQkN
CgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZh
bHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBsYXRlbGV0Q291
bnQiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgicGxhdGVsZXRDb3VudCIpKSkpew0KCQkJCQlzYW1l
UGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJCS8vcGFnZS5zZXRUZXh0UGxhdGVs
ZXRDb3VudChsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwbGF0ZWxldENvdW50
IikpOw0KCQkJfQ0KCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJCYW5kc0Qi
KSl7CQkJCQ0KCQkJCWlmKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhbmRz
IikhPW51bGwgICYmICFsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiYW5kcyIp
LnRyaW0oKS5lcXVhbHMoIiIpKXsgDQoJCQkJCWlmKERvdWJsZS52YWx1ZU9m
KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhbmRzIikpLmRvdWJsZVZhbHVl
KCk+MC4wKXsNCgkJCQkgICAgICAgcGFnZS5zZXRUZXh0QmFuZHMobHVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgiYmFuZHMiKSk7DQoJCQkJCX0NCgkJCQkJaWYo
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFuZHMiKSE9bnVsbCAmJiANCgkJ
CQkJCQlEb3VibGUudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJi
YW5kcyIpKS5kb3VibGVWYWx1ZSgpPDAuMCl7DQoJCQkJCSAgIHBhZ2Uuc2V0
VGV4dEJhbmRzKCIoIitsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiYW5kcyIp
KyIpIik7DQoJCQkJCX0NCgkJCQl9ZWxzZXsNCgkJCQkJcGFnZS5zZXRUZXh0
QmFuZHMoIiIpOw0KCQkJCX0NCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9
bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0
VmFsdWUoImJhbmRzIikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9m
KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhbmRzIikpKSl7DQoJCQkJCXNh
bWVQYXQgPSBmYWxzZTsNCgkJCQl9CQkJCQ0KCQkJfQ0KCQkJDQoJCQlpZiAo
YXR0ckxpc3QuY29udGFpbnMoIkNyZWF0aW5pbmVEIikpewkJCQkNCgkJCQlp
ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjcmVhdGluaW5lIikhPW51bGwg
ICYmICFsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjcmVhdGluaW5lIikudHJp
bSgpLmVxdWFscygiIikpeyANCgkJCQkJaWYoRG91YmxlLnZhbHVlT2YobHVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgiY3JlYXRpbmluZSIpKS5kb3VibGVWYWx1
ZSgpPjAuMCl7DQoJCQkJICAgICAgIHBhZ2Uuc2V0VGV4dENyZWF0aW5pbmUo
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY3JlYXRpbmluZSIpKTsNCgkJCQkJ
fQ0KCQkJCQlpZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjcmVhdGluaW5l
IikhPW51bGwgJiYgDQoJCQkJCQkJRG91YmxlLnZhbHVlT2YobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgiY3JlYXRpbmluZSIpKS5kb3VibGVWYWx1ZSgpPDAu
MCl7DQoJCQkJCSAgIHBhZ2Uuc2V0VGV4dENyZWF0aW5pbmUoIigiK2x1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoImNyZWF0aW5pbmUiKSsiKSIpOw0KCQkJCQl9
DQoJCQkJfWVsc2V7DQoJCQkJCXBhZ2Uuc2V0VGV4dENyZWF0aW5pbmUoIiIp
Ow0KCQkJCX0NCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAh
U3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNy
ZWF0aW5pbmUiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgiY3JlYXRpbmluZSIpKSkpew0KCQkJCQlz
YW1lUGF0ID0gZmFsc2U7DQoJCQkJfQkJCQkNCgkJCX0NCgkJCQ0KCQkJaWYg
KGF0dHJMaXN0LmNvbnRhaW5zKCJDcmVhdGluaW5lRGF0ZUQiKSl7CQkJCQ0K
CQkJCXBhZ2Uuc2V0VGV4dENyZWF0aW5pbmVEYXRlKGx1bmdDRE91dGNvbWUu
Z2V0VmFsdWUoImNyZWF0aW5pbmVEYXRlIikpOwkJCQkNCgkJCQlpZihwcmV2
THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNyZWF0aW5pbmVEYXRlIikpDQoJCQkJ
CQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFs
dWUoImNyZWF0aW5pbmVEYXRlIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxz
ZTsNCgkJCQl9CQkJCQ0KCQkJfQ0KCQkJDQoJCQlpZiAoYXR0ckxpc3QuY29u
dGFpbnMoIkJVTkQiKSl7CQkJCQ0KCQkJCWlmKGx1bmdDRE91dGNvbWUuZ2V0
VmFsdWUoImJ1biIpIT1udWxsICAmJiAhbHVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiYnVuIikudHJpbSgpLmVxdWFscygiIikpeyANCgkJCQkJaWYoRG91Ymxl
LnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYnVuIikpLmRvdWJs
ZVZhbHVlKCk+MC4wKXsNCgkJCQkgICAgICAgcGFnZS5zZXRUZXh0Q3JlYXRp
bmluZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJidW4iKSk7DQoJCQkJCX0N
CgkJCQkJaWYobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYnVuIikhPW51bGwg
JiYgDQoJCQkJCQkJRG91YmxlLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRW
YWx1ZSgiYnVuIikpLmRvdWJsZVZhbHVlKCk8MC4wKXsNCgkJCQkJICAgcGFn
ZS5zZXRUZXh0Q3JlYXRpbmluZSgiKCIrbHVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiYnVuIikrIikiKTsNCgkJCQkJfQ0KCQkJCX1lbHNlew0KCQkJCQlwYWdl
LnNldFRleHRDcmVhdGluaW5lKCIiKTsNCgkJCQl9DQoJCQkJaWYocHJldkx1
bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJidW4iKSkNCgkJCQkJCS5lcXVhbHMoU3Ry
aW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYnVuIikpKSl7
DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9CQkJCQ0KCQkJfQ0KCQkJ
DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkJVTkRhdGVEIikpewkJCQkN
CgkJCQlwYWdlLnNldFRleHRDcmVhdGluaW5lRGF0ZShsdW5nQ0RPdXRjb21l
LmdldFZhbHVlKCJidW5EYXRlIikpOwkJCQkNCgkJCQlpZihwcmV2THVuZ0NE
T3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91
dGNvbWUuZ2V0VmFsdWUoImJ1bkRhdGUiKSkNCgkJCQkJCS5lcXVhbHMoU3Ry
aW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYnVuRGF0ZSIp
KSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQkJCQkNCgkJCX0N
CgkJCQ0KCQkJDQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkJBTENvbW1l
bnRzRCIpKXsNCgkJCQlwYWdlLnNldFRleHRCQUxDb21tZW50cyhsdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJiYWxDb21tZW50cyIpKTsNCgkJCQlpZihwcmV2
THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhbENvbW1lbnRzIikpDQoJCQkJCQku
ZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo
ImJhbENvbW1lbnRzIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJ
CQl9DQoJCQl9DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkluZlNjb3Jl
RCIpKXsNCgkJCQlwYWdlLnNldFRleHRJbmZTY29yZShsdW5nQ0RPdXRjb21l
LmdldFZhbHVlKCJpbmZlY3Rpb25TY29yZSIpKTsNCgkJCQlpZihwcmV2THVu
Z0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoImluZmVjdGlvblNjb3JlIikpDQoJCQkJCQku
ZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo
ImluZmVjdGlvblNjb3JlIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsN
CgkJCQl9DQoJCQl9DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkluZlNj
b3JlQ29tbWVudHNEIikpIHsNCgkJCQlwYWdlLnNldFRleHRJbmZTY29yZUNv
bW1lbnRzKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZmVjdGlvblNjb3Jl
Q29tbWVudHMiKSk7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwg
JiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJpbmZlY3Rpb25TY29yZUNvbW1lbnRzIikpDQoJCQkJCQkuZXF1YWxzKFN0
cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZmVjdGlv
blNjb3JlQ29tbWVudHMiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K
CQkJCX0NCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiSW5mQ29t
bWVudHNEIikpIHsNCgkJCQlwYWdlLnNldFRleHRJbmZDb21tZW50cyhsdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJpbmZlY3Rpb25Db21tZW50cyIpKTsNCgkJ
CQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVl
T2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZmVjdGlvbkNvbW1l
bnRzIikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91
dGNvbWUuZ2V0VmFsdWUoImluZmVjdGlvbkNvbW1lbnRzIikpKSl7DQoJCQkJ
CXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQl9DQoJCQlpZiAoYXR0ckxp
c3QuY29udGFpbnMoIkNvbXBDb21tZW50c0QiKSkgew0KCQkJCXBhZ2Uuc2V0
VGV4dENvbXBDb21tZW50cyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjb21w
Q29tbWVudHMiKSk7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwg
JiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJjb21wQ29tbWVudHMiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVl
T2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY29tcENvbW1lbnRzIikpKSl7
DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQl9DQoJCQlpZiAo
YXR0ckxpc3QuY29udGFpbnMoIk1lZENvbW1lbnRzRCIpKXsNCgkJCQlwYWdl
LnNldFRleHRNZWRDb21tZW50cyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJt
ZWRDb21tZW50cyIpKTsNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVs
bCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFs
dWUoIm1lZENvbW1lbnRzIikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1
ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm1lZENvbW1lbnRzIikpKSl7
DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQl9DQoJCQlpZiAo
YXR0ckxpc3QuY29udGFpbnMoIkZuQ29tbWVudHNEIikpIHsNCgkJCQlwYWdl
LnNldFRleHRGbkNvbW1lbnRzKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImZ1
bmN0aW9uQ29tbWVudHMiKSk7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUh
PW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJmdW5jdGlvbkNvbW1lbnRzIikpDQoJCQkJCQkuZXF1YWxzKFN0
cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImZ1bmN0aW9u
Q29tbWVudHMiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0N
CgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUmVqZWN0aW9uVHJl
YXRtZW50c0QiKSl7DQoJCQkJcGFnZS5zZXRUZXh0UmVqZWN0aW9uVHJlYXRt
ZW50cyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWplY3Rpb25UcmVhdG1l
bnRzIikpOw0KCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFT
dHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVq
ZWN0aW9uVHJlYXRtZW50cyIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFs
dWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWplY3Rpb25UcmVhdG1l
bnRzIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQl9
DQoJCQkNCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUmVqVGhSZWFzb25z
RCIpKXsNCgkJCQlwYWdlLnNldFRleHRSZWpUaFJlYXNvbnMobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgicmVqVGhSZWFzb25zIikpOw0KCQkJCWlmKHByZXZM
dW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgicmVqVGhSZWFzb25zIikpDQoJCQkJCQku
ZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo
InJlalRoUmVhc29ucyIpKSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJ
CQkJfQ0KCQkJfQ0KLy8JCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkluZFRo
RGF0ZUQiKSkgcGFnZS5zZXRUZXh0SW5kVGhEYXRlKGx1bmdDRE91dGNvbWUu
Z2V0VmFsdWUoImluZFRoRGF0ZSIpKTsNCg0KCQkJaWYgKGF0dHJMaXN0LmNv
bnRhaW5zKCJJbmZUaGVyYXB5RCIpKSB7DQoJCQkJcGFnZS5zZXRUZXh0SW5m
VGhlcmFweShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmZUaGVyYXB5Iikp
Ow0KCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcu
dmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5mVGhlcmFw
eSIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRj
b21lLmdldFZhbHVlKCJpbmZUaGVyYXB5IikpKSl7DQoJCQkJCXNhbWVQYXQg
PSBmYWxzZTsNCgkJCQl9DQoJCQl9DQoJCQlpZiAoYXR0ckxpc3QuY29udGFp
bnMoIkRyYXdEIikpIHsNCgkJCQlwYWdlLnNldFRleHREcmF3KGx1bmdDRE91
dGNvbWUuZ2V0VmFsdWUoImRyYXciKSk7DQoJCQkJaWYocHJldkx1bmdDRE91
dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRj
b21lLmdldFZhbHVlKCJkcmF3IikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52
YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImRyYXciKSkpKXsNCgkJ
CQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCX0NCg0KCQkJaWYgKGF0
dHJMaXN0LmNvbnRhaW5zKCJDU0QiKSl7DQoJCQkJcGFnZS5zZXRUZXh0Q1Mo
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY2xpbmljYWxTeW1wdG9tcyIpKTsN
CgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZh
bHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNsaW5pY2FsU3lt
cHRvbXMiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgiY2xpbmljYWxTeW1wdG9tcyIpKSkpew0KCQkJ
CQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKGF0dHJM
aXN0LmNvbnRhaW5zKCJJbmRUaGVyYXB5RCIpKXsNCgkJCQlwYWdlLnNldFRl
eHRJbmRUaGVyYXB5KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZFRoZXJh
cHkiKSk7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0
cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmRU
aGVyYXB5IikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoImluZFRoZXJhcHkiKSkpKXsNCgkJCQkJc2Ft
ZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5j
b250YWlucygiSW5kVGhlcmFweVlORCIpKXsNCgkJCQlwYWdlLnNldFRleHRJ
bmRUaGVyYXB5WU4obHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFw
eVlOIikpOw0KCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFT
dHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5k
VGhlcmFweVlOIikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZFRoZXJhcHlZTiIpKSkpew0KCQkJ
CQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKGF0dHJM
aXN0LmNvbnRhaW5zKCJJbmRUaGVyYXB5Q29tcERhdGVEIikpew0KCQkJCXBh
Z2Uuc2V0VGV4dEluZFRoZXJhcHlDb21wRGF0ZShsdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJpbmRUaGVyYXB5Q29tcGxldGlvbkRhdGUiKSk7DQoJCQkJaWYo
cHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHBy
ZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmRUaGVyYXB5Q29tcGxldGlv
bkRhdGUiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweUNvbXBsZXRpb25EYXRlIikp
KSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQl9DQoJCQlp
ZiAoYXR0ckxpc3QuY29udGFpbnMoIkluZFRoZXJhcHlOb09mRG9zZXNEIikp
ew0KCQkJCXBhZ2Uuc2V0VGV4dEluZFRoZXJhcHlOb09mRG9zZXMobHVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweU5vT2ZEb3NlcyIpKTsNCgkJ
CQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVl
T2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZFRoZXJhcHlOb09m
RG9zZXMiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweU5vT2ZEb3NlcyIpKSkpew0K
CQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKGF0
dHJMaXN0LmNvbnRhaW5zKCJJbmRUaGVyYXB5QW10UGVyRG9zZUQiKSl7DQoJ
CQkJcGFnZS5zZXRUZXh0SW5kVGhlcmFweUFtdFBlckRvc2UobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweUFtdFBlckRvc2UiKSk7DQoJCQkJ
aWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9m
KHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmRUaGVyYXB5QW10UGVy
RG9zZSIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJpbmRUaGVyYXB5QW10UGVyRG9zZSIpKSkpew0K
CQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKGF0
dHJMaXN0LmNvbnRhaW5zKCJJbmRUaGVyYXB5Q29tbWVudHNEIikpew0KCQkJ
CXBhZ2Uuc2V0VGV4dEluZFRoZXJhcHlDb21tZW50cyhsdW5nQ0RPdXRjb21l
LmdldFZhbHVlKCJpbmRUaGVyYXB5Q29tbWVudHMiKSk7DQoJCQkJaWYocHJl
dkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZM
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmRUaGVyYXB5Q29tbWVudHMiKSkN
CgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgiaW5kVGhlcmFweUNvbW1lbnRzIikpKSl7DQoJCQkJCXNhbWVQ
YXQgPSBmYWxzZTsNCgkJCQl9DQoJCQl9DQoNCgkJCQ0KCQkJDQoJCQlpZiAo
YXR0ckxpc3QuY29udGFpbnMoIkhlbWF0b2xvZ3lEIikpew0KCQkJCXBhZ2Uu
c2V0VGV4dEhlbWF0b2xvZ3kobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaGVt
YXRvbG9neSIpKTsNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAm
JiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo
ImhlbWF0b2xvZ3kiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2Yo
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaGVtYXRvbG9neSIpKSkpew0KCQkJ
CQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKGF0dHJM
aXN0LmNvbnRhaW5zKCJSZWNlcENNVklnR0QiKSl7DQoJCQkJcGFnZS5zZXRU
ZXh0UmVjZXBDTVZJZ0cobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVjZXBD
TVZJZ0ciKSk7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYg
IVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJy
ZWNlcENNVklnRyIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihs
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWNlcENNVklnRyIpKSkpew0KCQkJ
CQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKGF0dHJM
aXN0LmNvbnRhaW5zKCJSZWNlcENNVkRpYWdEYXRlRCIpKXsNCgkJCQlwYWdl
LnNldFRleHRSZWNlcENNVkRpYWdEYXRlKGx1bmdDRE91dGNvbWUuZ2V0VmFs
dWUoInJlY2VwQ01WRGlhZ0RhdGUiKSk7DQoJCQkJaWYocHJldkx1bmdDRE91
dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRj
b21lLmdldFZhbHVlKCJyZWNlcENNVkRpYWdEYXRlIikpDQoJCQkJCQkuZXF1
YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJl
Y2VwQ01WRGlhZ0RhdGUiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K
CQkJCX0NCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUmVjZXBD
TVZJbmZUeXBlRCIpKSB7DQoJCQkJcGFnZS5zZXRUZXh0UmVjZXBDTVZJbmZU
eXBlKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlY2VwQ01WSW5mVHlwZSIp
KTsNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5n
LnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlY2VwQ01W
SW5mVHlwZSIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJyZWNlcENNVkluZlR5cGUiKSkpKXsNCgkJ
CQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCX0NCgkJCWlmIChhdHRy
TGlzdC5jb250YWlucygiUmVjZXBpZW50Q01WTWV0aG9kRCIpKXsNCgkJCQlw
YWdlLnNldFRleHRSZWNlcGllbnRDTVZNZXRob2QobHVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgicmVjZXBDTVZNZXRob2QiKSk7DQoJCQkJaWYocHJldkx1bmdD
RE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJyZWNlcENNVk1ldGhvZCIpKQ0KCQkJCQkJLmVx
dWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJy
ZWNlcENNVk1ldGhvZCIpKSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJ
CQkJfQ0KCQkJfQ0KCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJSZWNlcGll
bnRDTVZPcmdhbkQiKSl7DQoJCQkJcGFnZS5zZXRUZXh0UmVjZXBpZW50Q01W
T3JnYW4obHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVjZXBDTVZPcmdhbiIp
KTsNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5n
LnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlY2VwQ01W
T3JnYW4iKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgicmVjZXBDTVZPcmdhbiIpKSkpew0KCQkJCQlz
YW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKGF0dHJMaXN0
LmNvbnRhaW5zKCJEb25vckNNVklnR0QiKSl7DQoJCQkJcGFnZS5zZXRUZXh0
RG9ub3JDTVZJZ0cobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZG9ub3JDTVZJ
Z0ciKSk7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0
cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkb25v
ckNNVklnRyIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJkb25vckNNVklnRyIpKSkpew0KCQkJCQlz
YW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKGF0dHJMaXN0
LmNvbnRhaW5zKCJCaW9wc3lIaXN0b3J5RCIpKXsNCgkJCQlwYWdlLnNldFRl
eHRCaW9wc3lIaXN0b3J5KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJpb3Bz
eUhpc3RvcnkiKSk7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwg
JiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJiaW9wc3lIaXN0b3J5IikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1
ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJpb3BzeUhpc3RvcnkiKSkp
KXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCX0NCgkJCWlm
IChhdHRyTGlzdC5jb250YWlucygiUmVqZWN0aW9uRXBpc29kZUNvbW1lbnRz
RCIpKXsNCgkJCQlwYWdlLnNldFRleHRSZWplY3Rpb25FcGlzb2RlQ29tbWVu
dHMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVqZWN0aW9uRXBpc29kZUNv
bW1lbnRzIikpOw0KCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYm
ICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
cmVqZWN0aW9uRXBpc29kZUNvbW1lbnRzIikpDQoJCQkJCQkuZXF1YWxzKFN0
cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlamVjdGlv
bkVwaXNvZGVDb21tZW50cyIpKSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7
DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJSZWpU
cmVhdG1lbnRIaXN0b3J5RCIpKXsNCgkJCQlwYWdlLnNldFRleHRSZWpUcmVh
dG1lbnRIaXN0b3J5KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlalRyZWF0
bWVudEhpc3RvcnkiKSk7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51
bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJyZWpUcmVhdG1lbnRIaXN0b3J5IikpDQoJCQkJCQkuZXF1YWxzKFN0
cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlalRyZWF0
bWVudEhpc3RvcnkiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJ
CX0NCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiU3Rlcm9pZHNE
Iikpew0KCQkJCXBhZ2Uuc2V0VGV4dFN0ZXJvaWRzKGx1bmdDRE91dGNvbWUu
Z2V0U3Rlcm9pZHMoKSk7DQoJCQkJc3BhblRhZyA9IHBhZ2UuZ2V0RWxlbWVu
dEJ5SWQoIlN0ZXJvaWRzIik7DQoJCQkJY2VsbCA9IChIVE1MVGFibGVDZWxs
RWxlbWVudCkgc3BhblRhZy5nZXRQYXJlbnROb2RlKCk7DQoJCQkJY2VsbC5z
ZXRBdHRyaWJ1dGUoInRpdGxlIixlbmNJZCk7DQoJCQkJaWYocHJldkx1bmdD
RE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RP
dXRjb21lLmdldFN0ZXJvaWRzKCkpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52
YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0U3Rlcm9pZHMoKSkpKXsNCgkJCQkJ
c2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCX0NCgkJCWlmIChhdHRyTGlz
dC5jb250YWlucygiUHJlZG5pc29uZUQiKSl7DQoJCQkJaWYocHJldkx1bmdD
RE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJwcmVkbmlzb25lIikpDQoJCQkJCQkuZXF1YWxz
KFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInByZWRu
aXNvbmUiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJ
CQlwYWdlLnNldFRleHRQcmVkbmlzb25lKGx1bmdDRE91dGNvbWUuZ2V0VmFs
dWUoInByZWRuaXNvbmUiKSk7CQkJCQ0KCQkJfQ0KCQkJaWYgKGF0dHJMaXN0
LmNvbnRhaW5zKCJQcmVkbmlzb2xvbmVEIikpew0KCQkJCWlmKHByZXZMdW5n
Q0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgicHJlZG5pc29sb25lIikpDQoJCQkJCQkuZXF1
YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBy
ZWRuaXNvbG9uZSIpKSkpew0KCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJ
fQ0KCQkJCXBhZ2Uuc2V0VGV4dFByZWRuaXNvbG9uZShsdW5nQ0RPdXRjb21l
LmdldFZhbHVlKCJwcmVkbmlzb2xvbmUiKSk7CQkJCQ0KCQkJfQ0KCQkJaWYg
KGF0dHJMaXN0LmNvbnRhaW5zKCJJbmhTdGVyb2lkc0QiKSkgew0KCQkJCWlm
KHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihw
cmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5oU3Rlcm9pZHMiKSkNCgkJ
CQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRW
YWx1ZSgiaW5oU3Rlcm9pZHMiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNl
Ow0KCQkJCX0NCgkJCQlwYWdlLnNldFRleHRJbmhTdGVyb2lkcyhsdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJpbmhTdGVyb2lkcyIpKTsJCQkJDQoJCQl9DQoN
CgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQ3ljbG9zcG9yaW5EIikpew0K
CQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFs
dWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY3ljbG9zcG9yaW4i
KSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgiY3ljbG9zcG9yaW4iKSkpKXsNCgkJCQkJc2FtZVBhdCA9
IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRleHRDeWNsb3Nwb3Jpbihs
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjeWNsb3Nwb3JpbiIpKTsJCQkJDQoJ
CQl9DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlRhY3JvbGltdXNEIikp
ew0KCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcu
dmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidGFjcm9saW11
cyIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRj
b21lLmdldFZhbHVlKCJ0YWNyb2xpbXVzIikpKSl7DQoJCQkJCXNhbWVQYXQg
PSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0VGFjcm9saW11cyhs
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0YWNyb2xpbXVzIikpOwkJCQkNCgkJ
CX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQXphdGhpb3ByaW5lRCIp
KXsNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5n
LnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImF6YXRoaW9w
cmluZSIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJhemF0aGlvcHJpbmUiKSkpKXsNCgkJCQkJc2Ft
ZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRleHRBemF0aGlv
cHJpbmUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYXphdGhpb3ByaW5lIikp
OwkJCQkNCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiTXljb3Bo
ZW5vbGF0ZUQiKSkgew0KCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxs
ICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgibXljb3BoZW5vbGF0ZSIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFs
dWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJteWNvcGhlbm9sYXRlIikp
KSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5z
ZXRUZXh0TXljb3BoZW5vbGF0ZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJt
eWNvcGhlbm9sYXRlIikpOwkJCQkNCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5j
b250YWlucygiQmFzaWxpeGltYWJEIikpew0KCQkJCWlmKHByZXZMdW5nQ0RP
dXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgiYmFzaWxpeGltYWIiKSkNCgkJCQkJCS5lcXVhbHMo
U3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFzaWxp
eGltYWIiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJ
CQlwYWdlLnNldFRleHRCYXNpbGl4aW1hYihsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJiYXNpbGl4aW1hYiIpKTsJCQkJDQoJCQl9DQoJCQlpZiAoYXR0ckxp
c3QuY29udGFpbnMoIkRhY2x1emltYWJEIikpew0KCQkJCWlmKHByZXZMdW5n
Q0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgiZGFjbHV6aW1hYiIpKQ0KCQkJCQkJLmVxdWFs
cyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkYWNs
dXppbWFiIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJ
CQkJcGFnZS5zZXRUZXh0RGFjbHV6aW1hYihsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJkYWNsdXppbWFiIikpOwkJCQkNCgkJCX0NCgkJCWlmIChhdHRyTGlz
dC5jb250YWlucygiU2lyb2xpbXVzRCIpKXsNCgkJCQlpZihwcmV2THVuZ0NE
T3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91
dGNvbWUuZ2V0VmFsdWUoInNpcm9saW11cyIpKQ0KCQkJCQkJLmVxdWFscyhT
dHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJzaXJvbGlt
dXMiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQlw
YWdlLnNldFRleHRTaXJvbGltdXMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
c2lyb2xpbXVzIikpOwkJCQkNCgkJCX0NCgkJCQ0KCQkJLy8gYW50aW1pY3Jv
YmlhbHMgc3RhcnQNCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQXppdGhy
b215Y2luRCIpKSB7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwg
JiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJheml0aHJvbXljaW4iKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVl
T2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYXppdGhyb215Y2luIikpKSl7
DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRU
ZXh0QXppdGhyb215Y2luKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImF6aXRo
cm9teWNpbiIpKTsJCQkJDQoJCQl9DQoJCQlpZiAoYXR0ckxpc3QuY29udGFp
bnMoIlRNWC1TdWxmYUQiKSkgew0KCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21l
IT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgidE1YU3VsZmEiKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZh
bHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidE1YU3VsZmEiKSkpKXsN
CgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQlwYWdlLnNldFRl
eHRUTVhTdWxmYShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0TVhTdWxmYSIp
KTsJCQkJDQoJCQl9DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlRvYnJh
bXljaW5EIikpIHsNCgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAm
JiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo
InRvYnJhbXljaW4iKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2Yo
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidG9icmFteWNpbiIpKSkpew0KCQkJ
CQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJCXBhZ2Uuc2V0VGV4dFRv
YnJhbXljaW4obHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidG9icmFteWNpbiIp
KTsJCQkJDQoJCQl9DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkdhbmNp
Y2xvdmlyRCIpKSB7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwg
JiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJnYW5jaWNsb3ZpciIpKQ0KCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVP
ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJnYW5jaWNsb3ZpciIpKSkpew0K
CQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJCXBhZ2Uuc2V0VGV4
dEdhbmNpY2xvdmlyKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImdhbmNpY2xv
dmlyIikpOwkJCQkNCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250YWlucygi
VmFsZ2FuY3ljbG92aXJEIikpew0KCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21l
IT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgidmFsZ2FuY3ljbG92aXIiKSkNCgkJCQkJCS5lcXVhbHMoU3Ry
aW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidmFsZ2FuY3lj
bG92aXIiKSkpKXsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJ
CQlwYWdlLnNldFRleHRWYWxnYW5jeWNsb3ZpcihsdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJ2YWxnYW5jeWNsb3ZpciIpKTsJCQkJDQoJCQl9DQoJCQlpZiAo
YXR0ckxpc3QuY29udGFpbnMoIkl0cmFjb25hem9sZUQiKSl7DQoJCQkJaWYo
cHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHBy
ZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpdHJhY29uYXpvbGUiKSkNCgkJ
CQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRW
YWx1ZSgiaXRyYWNvbmF6b2xlIikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxz
ZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0SXRyYWNvbmF6b2xlKGx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoIml0cmFjb25hem9sZSIpKTsJCQkJDQoJCQl9
DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkZsdWNvbmF6b2xlRCIpKXsN
CgkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZh
bHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImZsdWNvbmF6b2xl
IikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoImZsdWNvbmF6b2xlIikpKSl7DQoJCQkJCXNhbWVQYXQg
PSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0Rmx1Y29uYXpvbGUo
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZmx1Y29uYXpvbGUiKSk7CQkJCQ0K
CQkJfQ0KCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJWb3JpY29uYXpvbGVE
Iikpew0KCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJp
bmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidm9yaWNv
bmF6b2xlIikpDQoJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoInZvcmljb25hem9sZSIpKSkpew0KCQkJCQlz
YW1lUGF0ID0gZmFsc2U7DQoJCQkJfQ0KCQkJCXBhZ2Uuc2V0VGV4dFZvcmlj
b25hem9sZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ2b3JpY29uYXpvbGUi
KSk7CQkJCQ0KCQkJfQ0KCQkJLy8gCWFudGltaWNyb2JpYWxzIGVuZA0KCQkJ
DQoJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIk90aGVyTWVkaWNhdGlvbkQi
KSl7DQoJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmlu
Zy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJvdGhlck1l
ZGljYXRpb24iKSkNCgkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgib3RoZXJNZWRpY2F0aW9uIikpKSl7DQoJ
CQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFnZS5zZXRUZXh0
T3RoZXJNZWRpY2F0aW9uKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm90aGVy
TWVkaWNhdGlvbiIpKTsJCQkJDQoJCQl9DQoJCQlpZiAoYXR0ckxpc3QuY29u
dGFpbnMoIlBBWFdlaWdodDFEIikpew0KCQkJCWlmKHByZXZMdW5nQ0RPdXRj
b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgicGF4V2VpZ2h0MSIpKQ0KCQkJCQkJLmVxdWFscyhTdHJp
bmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwYXhXZWlnaHQx
IikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFn
ZS5zZXRUZXh0UEFYV2VpZ2h0MShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJw
YXhXZWlnaHQxIikpOwkJCQkNCgkJCX0NCgkJCWlmIChhdHRyTGlzdC5jb250
YWlucygiUEFYV2VpZ2h0MkQiKSkgew0KCQkJCWlmKHByZXZMdW5nQ0RPdXRj
b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgicGF4V2VpZ2h0MiIpKQ0KCQkJCQkJLmVxdWFscyhTdHJp
bmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwYXhXZWlnaHQy
IikpKSl7DQoJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQl9DQoJCQkJcGFn
ZS5zZXRUZXh0UEFYV2VpZ2h0MihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJw
YXhXZWlnaHQyIikpOwkJCQkNCgkJCX0NCgkJCQ0KLy8JCQkgdG8gc2V0IHRv
b2x0aXANCgkJCXRlbXBsYXRlUm93ID0gcGFnZS5nZXRFbGVtZW50VGVtcGxh
dGVSb3coKTsJCQkNCgkJCXRlbXBsYXRlUm93LnNldEF0dHJpYnV0ZSgidGl0
bGUiLGVuY0lkKTsNCgkJCWlmKGNvdW50ZXIlMj09MCl7DQoJCQkJdGVtcGxh
dGVSb3cuc2V0QXR0cmlidXRlKCJiZ2NvbG9yIiwid2hpdGUiKTsNCgkJCX1l
bHNlew0KCQkJCXRlbXBsYXRlUm93LnNldEF0dHJpYnV0ZSgiYmdjb2xvciIs
IiNFRkVGRUYiKTsNCgkJCX0NCgkJCQ0KCQkJaWYgKCEoZmV2ZW50LmVxdWFs
cygiIikpKSB7DQoJCQkJZm9yIChpbnQgaT0wO2k8ZlFDMS5sZW5ndGg7aSsr
KSB7DQoJCQkJCWlmICghZ2V0UUNSZXN1bHQobHVuZ0NET3V0Y29tZSwicWMi
K2ZRQzFbaV0pKSB7DQoJCQkJCQlzcGFuVGFnID0gcGFnZS5nZXRFbGVtZW50
QnlJZChmUUMxW2ldKTsNCgkJCQkJCWlmKFhNTENVdGlsLmdldEZpcnN0VGV4
dChzcGFuVGFnKS5nZXREYXRhKCkudHJpbSgpLmxlbmd0aCgpPjApew0KCQkJ
CQkJCXFjMUNlbGxDb2xvciA9ICIjRkY2NjAwIjsJDQoJCQkJCQkJc3RyTWlz
c2luZ0RhdGEgPSAiICI7DQoJCQkJCQl9ZWxzZXsNCgkJCQkJCQlxYzFDZWxs
Q29sb3IgPSAiI0ZGMzMzMyI7DQoJCQkJCQkJc3RyTWlzc2luZ0RhdGEgPSAi
IG1pc3NpbmcgIjsNCgkJCQkJCX0NCgkJCQkJCVhNTENVdGlsLmdldEZpcnN0
VGV4dChzcGFuVGFnKS5zZXREYXRhKFhNTENVdGlsLmdldEZpcnN0VGV4dChz
cGFuVGFnKS5nZXREYXRhKCkudHJpbSgpK3N0ck1pc3NpbmdEYXRhKTsNCgkJ
CQkJCWNlbGwgPSAoSFRNTFRhYmxlQ2VsbEVsZW1lbnQpIHNwYW5UYWcuZ2V0
UGFyZW50Tm9kZSgpOw0KCQkJCQkJY2VsbC5zZXRCZ0NvbG9yKHFjMUNlbGxD
b2xvcik7DQoJCQkJCX0NCgkJCQl9DQoNCgkJCQlmb3IgKGludCBpPTA7aTxm
UUMyLmxlbmd0aDtpKyspIHsNCgkJCQkJaWYgKCFnZXRRQ1Jlc3VsdChsdW5n
Q0RPdXRjb21lLCJxYzIiK2ZRQzJbaV0pKSB7DQoNCgkJCQkJCXNwYW5UYWcg
PSBwYWdlLmdldEVsZW1lbnRCeUlkKGZRQzJbaV0pOw0KCQkJCQkJY2VsbCA9
IChIVE1MVGFibGVDZWxsRWxlbWVudCkgc3BhblRhZy5nZXRQYXJlbnROb2Rl
KCk7DQoJCQkJCQljZWxsLnNldEJnQ29sb3IocWMyQ2VsbENvbG9yKTsNCgkJ
CQkJfQ0KCQkJCX0NCgkJCX0NCgkJCQ0KCQkJdGVtcGxhdGVUYWJsZS5hcHBl
bmRDaGlsZCh0ZW1wbGF0ZVJvdy5jbG9uZU5vZGUodHJ1ZSkpOw0KCQkJaWYg
KHNhbWVQYXQpIHsNCgkJCQlsYXN0Um93ID0gKEhUTUxUYWJsZVJvd0VsZW1l
bnQpIHRlbXBsYXRlVGFibGUuZ2V0TGFzdENoaWxkKCk7DQoJCQkJbGFzdFJv
dy5zZXRCZ0NvbG9yKCIjZmZmZjk5Iik7DQoJCQkJbGFzdFJvdy5nZXRQYXJl
bnROb2RlKCkucmVtb3ZlQ2hpbGQobGFzdFJvdyk7DQoJCQkJcm93Q291bnQt
LTsNCgkJCQlyZWNDb3VudC0tOw0KCQkJCQ0KCQkJfQ0KDQoJCQlmb3IgKGlu
dCBpPTA7aTxmUUMxLmxlbmd0aDtpKyspIHsNCgkJCQlzcGFuVGFnID0gcGFn
ZS5nZXRFbGVtZW50QnlJZChmUUMxW2ldKTsNCgkJCQkvL1N5c3RlbS5vdXQu
cHJpbnRsbigiUWMxOiAiK2ZRQzFbaV0gKyAiOiIgKyBzcGFuVGFnKTsNCgkJ
CQljZWxsID0gKEhUTUxUYWJsZUNlbGxFbGVtZW50KSBzcGFuVGFnLmdldFBh
cmVudE5vZGUoKTsNCgkJCQljZWxsLnNldEJnQ29sb3IoIiIpOw0KCQkJfQ0K
CQkJZm9yIChpbnQgaT0wO2k8ZlFDMi5sZW5ndGg7aSsrKSB7DQoJCQkJc3Bh
blRhZyA9IHBhZ2UuZ2V0RWxlbWVudEJ5SWQoZlFDMltpXSk7DQoJCQkJY2Vs
bCA9IChIVE1MVGFibGVDZWxsRWxlbWVudCkgc3BhblRhZy5nZXRQYXJlbnRO
b2RlKCk7DQoJCQkJY2VsbC5zZXRCZ0NvbG9yKCIiKTsNCgkJCX0NCgkJCS8v
IGdhcmJhZ2UgY29sbGVjdGlvbiBiZWdpbg0KCQkJbHVuZ0NET3V0Y29tZSA9
ICAgIG51bGw7DQoJCQllbmNJZCA9IG51bGw7DQoJCQlwYXRpZW50SWQgPSBu
dWxsOw0KCQkJY2VudGVyTmFtZSA9IG51bGw7DQoJCQljZW50ZXJJZCA9IG51
bGw7DQoJCQlpZihjb3VudGVyJTQwMD09MCl7DQoJCQkgICBSdW50aW1lLmdl
dFJ1bnRpbWUoKS5nYygpOw0KCQkJfQkJCQ0KCQkJLy8gZ2FyYmFnZSBjb2xs
ZWN0aW9uIGVuZCANCgkJfQ0KCQkNCg0KCQkNCgkJdGVtcGxhdGVUYWJsZS5y
ZW1vdmVDaGlsZCh0ZW1wbGF0ZVJvdyk7DQoNCgkJcGFnZS5zZXRUZXh0UGF0
Q291bnQocGF0aWVudENvdW50KyIiKTsNCgkJcGFnZS5zZXRUZXh0RW5jQ291
bnQoZW5jQ291bnQrIiIpOw0KCQlwYWdlLnNldFRleHRSZWNDb3VudChyZWND
b3VudCsiIik7DQoNCg0KCQlzZXRGaWx0ZXJzKHBhZ2UpOw0KDQoJCXF1ZXJ5
VGV4dCA9IGxxLmdldExvY0NyaXRlcmlhKCkudG9TdHJpbmcoKTsNCg0KCQlw
YWdlLnNldFRleHRRdWVyeVRleHQocXVlcnlUZXh0KTsNCgkJcGFnZS5zZXRU
ZXh0UUMxVGV4dChxYzFUZXh0KTsNCgkJcGFnZS5zZXRUZXh0UUMyVGV4dChx
YzJUZXh0KTsNCgkJDQoJCXJldHVybiBwYWdlOw0KDQoNCiAgICB9DQoNCiAg
ICBwcml2YXRlIHZvaWQgc2V0RmlsdGVycyhYTUxPYmplY3QgcGFnZSkgew0K
ICAgIAkvL1N5c3RlbS5vdXQucHJpbnRsbigic2V0RmlsdGVycygpICBtZXRo
b2QgY2FsbGVkID09PT09PT09ICIpOw0KCQlpZiAoIShmZGF5c0NvbXBGaWx0
ZXIuZXF1YWxzKCIiKSkgJiYgIShmZGF5c0ZpbHRlci5lcXVhbHMoIiIpKSkg
ew0KCQkJU3RyaW5nIGNvbXBPcHQgPSAiRGF5c0NvbXAiKyBmZGF5c0NvbXBG
aWx0ZXIucmVwbGFjZUFsbCgiICIsIiIpOw0KCQkJSFRNTE9wdGlvbkVsZW1l
bnQgZUNvbXBPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0RWxl
bWVudEJ5SWQoY29tcE9wdCk7DQoJCQllQ29tcE9wdC5zZXRTZWxlY3RlZCh0
cnVlKTsNCg0KCQkJSFRNTElucHV0RWxlbWVudCBlRGF5cyA9IChIVE1MSW5w
dXRFbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKCJEYXlzRmlsdGVyIik7
DQoJCQllRGF5cy5zZXRWYWx1ZShmZGF5c0ZpbHRlcik7DQoJCX0NCgkJaWYg
KCEoZnBheENvbXBGaWx0ZXIuZXF1YWxzKCIiKSkgJiYgIShmcGF4RmlsdGVy
LmVxdWFscygiIikpKSB7DQoJCQlTdHJpbmcgcGF4T3B0ID0gIlBBWENvbXAi
KyBmcGF4Q29tcEZpbHRlci5yZXBsYWNlQWxsKCIgIiwiIik7DQoJCQlIVE1M
T3B0aW9uRWxlbWVudCBlUEFYT3B0ID0gKEhUTUxPcHRpb25FbGVtZW50KSBw
YWdlLmdldEVsZW1lbnRCeUlkKHBheE9wdCk7DQoJCQllUEFYT3B0LnNldFNl
bGVjdGVkKHRydWUpOw0KDQoJCQlIVE1MSW5wdXRFbGVtZW50IGVQQVggPSAo
SFRNTElucHV0RWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZCgiUEFYRmls
dGVyIik7DQoJCQllUEFYLnNldFZhbHVlKGZwYXhGaWx0ZXIpOw0KCQl9DQoJ
CWlmICghKGZlbnJvbGxEdENvbXBGaWx0ZXIuZXF1YWxzKCIiKSkgJiYgIShm
ZW5yb2xsRHRGaWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCVN0cmluZyBlbnJv
bGxEdENvbXAgPSAiRW5yb2xsRHRDb21wIisgZmVucm9sbER0Q29tcEZpbHRl
ci5yZXBsYWNlQWxsKCIgIiwiIik7DQoJCQlIVE1MT3B0aW9uRWxlbWVudCBl
bnJvbGxEdENvbXBPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0
RWxlbWVudEJ5SWQoZW5yb2xsRHRDb21wKTsNCgkJCWVucm9sbER0Q29tcE9w
dC5zZXRTZWxlY3RlZCh0cnVlKTsNCg0KCQkJSFRNTElucHV0RWxlbWVudCBl
bnJvbGxEdEZpbHRlciA9IChIVE1MSW5wdXRFbGVtZW50KSBwYWdlLmdldEVs
ZW1lbnRCeUlkKCJFbnJvbGxEdEZpbHRlciIpOw0KCQkJZW5yb2xsRHRGaWx0
ZXIuc2V0VmFsdWUoZmVucm9sbER0RmlsdGVyKTsNCgkJfQ0KCQkNCgkJaWYg
KCEoZmluZFRoZXJhcHlDb21wRmlsdGVyLmVxdWFscygiIikpICYmICEoZmlu
ZFRoZXJhcHlGaWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCVN0cmluZyBpbmRU
aGVyYXB5Q29tcEZpbHRlciA9ICJJbmRUaGVyYXB5Q29tcE9wdCIrIGZpbmRU
aGVyYXB5Q29tcEZpbHRlci5yZXBsYWNlQWxsKCIgIiwiIik7DQoJCQlIVE1M
T3B0aW9uRWxlbWVudCBpbmRUaGVyYXB5Q29tcE9wdCA9IChIVE1MT3B0aW9u
RWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZChpbmRUaGVyYXB5Q29tcEZp
bHRlcik7DQoJCQlpbmRUaGVyYXB5Q29tcE9wdC5zZXRTZWxlY3RlZCh0cnVl
KTsNCg0KCQkJSFRNTElucHV0RWxlbWVudCBpbmRUaGVyYXB5RmlsdGVyID0g
KEhUTUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoIkluZFRo
ZXJhcHlGaWx0ZXIiKTsNCgkJCWluZFRoZXJhcHlGaWx0ZXIuc2V0VmFsdWUo
ZmluZFRoZXJhcHlGaWx0ZXIpOw0KCQl9DQoJCQ0KCQlpZiAoIShmb3RoZXJN
ZWRpY2F0aW9uQ29tcEZpbHRlci5lcXVhbHMoIiIpKSAmJiAhKGZvdGhlck1l
ZGljYXRpb25GaWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCVN0cmluZyBvdGhl
ck1lZGljYXRpb25Db21wRmlsdGVyID0gIk90aGVyTWVkaWNhdGlvbkNvbXBP
cHQiKyBmb3RoZXJNZWRpY2F0aW9uQ29tcEZpbHRlci5yZXBsYWNlQWxsKCIg
IiwiIikucmVwbGFjZUFsbCgiISIsIk5vdCIpLnJlcGxhY2VBbGwoIj0iLCJF
cXVhbHMiKTsNCgkJCQ0KCQkJSFRNTE9wdGlvbkVsZW1lbnQgb3RoZXJNZWRp
Y2F0aW9uQ29tcE9wdCA9IChIVE1MT3B0aW9uRWxlbWVudCkgcGFnZS5nZXRF
bGVtZW50QnlJZChvdGhlck1lZGljYXRpb25Db21wRmlsdGVyKTsNCgkJCW90
aGVyTWVkaWNhdGlvbkNvbXBPcHQuc2V0U2VsZWN0ZWQodHJ1ZSk7DQoNCgkJ
CUhUTUxJbnB1dEVsZW1lbnQgb3RoZXJNZWRpY2F0aW9uRmlsdGVyID0gKEhU
TUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoIk90aGVyTWVk
aWNhdGlvbkZpbHRlciIpOw0KCQkJb3RoZXJNZWRpY2F0aW9uRmlsdGVyLnNl
dFZhbHVlKGZvdGhlck1lZGljYXRpb25GaWx0ZXIpOw0KCQl9DQoJCQ0KCQlp
ZiAoIShmcmVqVHJlYXRtZW50SGlzdG9yeUNvbXBGaWx0ZXIuZXF1YWxzKCIi
KSkgJiYgIShmcmVqVHJlYXRtZW50SGlzdG9yeUZpbHRlci5lcXVhbHMoIiIp
KSkgew0KCQkJU3RyaW5nIHJlalRyZWF0bWVudEhpc3RvcnlDb21wRmlsdGVy
ID0gIlJlalRyZWF0bWVudEhpc3RvcnlDb21wT3B0IisgZnJlalRyZWF0bWVu
dEhpc3RvcnlDb21wRmlsdGVyLnJlcGxhY2VBbGwoIiAiLCIiKS5yZXBsYWNl
QWxsKCIhIiwiTm90IikucmVwbGFjZUFsbCgiPSIsIkVxdWFscyIpOw0KCQkJ
DQoJCQlIVE1MT3B0aW9uRWxlbWVudCByZWpUcmVhdG1lbnRIaXN0b3J5Q29t
cE9wdCA9IChIVE1MT3B0aW9uRWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJ
ZChyZWpUcmVhdG1lbnRIaXN0b3J5Q29tcEZpbHRlcik7DQoJCQlyZWpUcmVh
dG1lbnRIaXN0b3J5Q29tcE9wdC5zZXRTZWxlY3RlZCh0cnVlKTsNCg0KCQkJ
SFRNTElucHV0RWxlbWVudCByZWpUcmVhdG1lbnRIaXN0b3J5RmlsdGVyID0g
KEhUTUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoIlJlalRy
ZWF0bWVudEhpc3RvcnlGaWx0ZXIiKTsNCgkJCXJlalRyZWF0bWVudEhpc3Rv
cnlGaWx0ZXIuc2V0VmFsdWUoZnJlalRyZWF0bWVudEhpc3RvcnlGaWx0ZXIp
Ow0KCQl9DQoJCQ0KCQkNCgkJaWYgKCEoZnJlY2VwaWVudENNVk1ldGhvZENv
bXBGaWx0ZXIuZXF1YWxzKCIiKSkgJiYgIShmcmVjZXBpZW50Q01WTWV0aG9k
RmlsdGVyLmVxdWFscygiIikpKSB7DQoJCQlTdHJpbmcgcmVjZXBpZW50Q01W
TWV0aG9kQ29tcEZpbHRlciA9ICJSZWNlcGllbnRDTVZNZXRob2RDb21wT3B0
IisgZnJlY2VwaWVudENNVk1ldGhvZENvbXBGaWx0ZXIucmVwbGFjZUFsbCgi
ICIsIiIpLnJlcGxhY2VBbGwoIiEiLCJOb3QiKS5yZXBsYWNlQWxsKCI9Iiwi
RXF1YWxzIik7DQoJCQkNCgkJCUhUTUxPcHRpb25FbGVtZW50IHJlY2VwaWVu
dENNVk1ldGhvZENvbXBPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2Uu
Z2V0RWxlbWVudEJ5SWQocmVjZXBpZW50Q01WTWV0aG9kQ29tcEZpbHRlcik7
DQoJCQlyZWNlcGllbnRDTVZNZXRob2RDb21wT3B0LnNldFNlbGVjdGVkKHRy
dWUpOw0KDQoJCQlIVE1MSW5wdXRFbGVtZW50IHJlY2VwaWVudENNVk1ldGhv
ZEZpbHRlciA9IChIVE1MSW5wdXRFbGVtZW50KSBwYWdlLmdldEVsZW1lbnRC
eUlkKCJSZWNlcGllbnRDTVZNZXRob2RGaWx0ZXIiKTsNCgkJCXJlY2VwaWVu
dENNVk1ldGhvZEZpbHRlci5zZXRWYWx1ZShmcmVjZXBpZW50Q01WTWV0aG9k
RmlsdGVyKTsNCgkJfQ0KCQkNCgkJaWYgKCEoZnJlamVjdGlvblRyZWF0bWVu
dHNDb21wRmlsdGVyLmVxdWFscygiIikpICYmICEoZnJlamVjdGlvblRyZWF0
bWVudHNGaWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCVN0cmluZyByZWplY3Rp
b25UcmVhdG1lbnRzQ29tcEZpbHRlciA9ICJSZWplY3Rpb25UcmVhdG1lbnRz
Q29tcE9wdCIrIGZyZWplY3Rpb25UcmVhdG1lbnRzQ29tcEZpbHRlci5yZXBs
YWNlQWxsKCIgIiwiIikucmVwbGFjZUFsbCgiISIsIk5vdCIpLnJlcGxhY2VB
bGwoIj0iLCJFcXVhbHMiKTsNCgkJCQ0KCQkJSFRNTE9wdGlvbkVsZW1lbnQg
cmVqZWN0aW9uVHJlYXRtZW50c0NvbXBPcHQgPSAoSFRNTE9wdGlvbkVsZW1l
bnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQocmVqZWN0aW9uVHJlYXRtZW50c0Nv
bXBGaWx0ZXIpOw0KCQkJcmVqZWN0aW9uVHJlYXRtZW50c0NvbXBPcHQuc2V0
U2VsZWN0ZWQodHJ1ZSk7DQoNCgkJCUhUTUxJbnB1dEVsZW1lbnQgcmVqZWN0
aW9uVHJlYXRtZW50c0ZpbHRlciA9IChIVE1MSW5wdXRFbGVtZW50KSBwYWdl
LmdldEVsZW1lbnRCeUlkKCJSZWplY3Rpb25UcmVhdG1lbnRzRmlsdGVyIik7
DQoJCQlyZWplY3Rpb25UcmVhdG1lbnRzRmlsdGVyLnNldFZhbHVlKGZyZWpl
Y3Rpb25UcmVhdG1lbnRzRmlsdGVyKTsNCgkJfQ0KCQkNCgkJDQoJCWlmICgh
KGZjb21wQ29tbWVudHNDb21wRmlsdGVyLmVxdWFscygiIikpICYmICEoZmNv
bXBDb21tZW50c0ZpbHRlci5lcXVhbHMoIiIpKSkgew0KCQkJU3RyaW5nIGNv
bXBDb21tZW50c0NvbXBGaWx0ZXIgPSAiQ29tcENvbW1lbnRzQ29tcE9wdCIr
IGZjb21wQ29tbWVudHNDb21wRmlsdGVyLnJlcGxhY2VBbGwoIiAiLCIiKS5y
ZXBsYWNlQWxsKCIhIiwiTm90IikucmVwbGFjZUFsbCgiPSIsIkVxdWFscyIp
Ow0KCQkJDQoJCQlIVE1MT3B0aW9uRWxlbWVudCBjb21wQ29tbWVudHNDb21w
T3B0ID0gKEhUTUxPcHRpb25FbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlk
KGNvbXBDb21tZW50c0NvbXBGaWx0ZXIpOw0KCQkJY29tcENvbW1lbnRzQ29t
cE9wdC5zZXRTZWxlY3RlZCh0cnVlKTsNCg0KCQkJSFRNTElucHV0RWxlbWVu
dCBjb21wQ29tbWVudHNGaWx0ZXIgPSAoSFRNTElucHV0RWxlbWVudCkgcGFn
ZS5nZXRFbGVtZW50QnlJZCgiQ29tcENvbW1lbnRzRmlsdGVyIik7DQoJCQlj
b21wQ29tbWVudHNGaWx0ZXIuc2V0VmFsdWUoZmNvbXBDb21tZW50c0ZpbHRl
cik7DQoJCX0NCgkJaWYgKCEoZmJBTENvbW1lbnRzQ29tcEZpbHRlci5lcXVh
bHMoIiIpKSAmJiAhKGZiQUxDb21tZW50c0ZpbHRlci5lcXVhbHMoIiIpKSkg
ew0KCQkJU3RyaW5nIGJBTENvbW1lbnRzQ29tcEZpbHRlciA9ICJCQUxDb21t
ZW50c0NvbXBPcHQiKyBmYkFMQ29tbWVudHNDb21wRmlsdGVyLnJlcGxhY2VB
bGwoIiAiLCIiKS5yZXBsYWNlQWxsKCIhIiwiTm90IikucmVwbGFjZUFsbCgi
PSIsIkVxdWFscyIpOw0KCQkJDQoJCQlIVE1MT3B0aW9uRWxlbWVudCBiQUxD
b21tZW50c0NvbXBPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0
RWxlbWVudEJ5SWQoYkFMQ29tbWVudHNDb21wRmlsdGVyKTsNCgkJCWJBTENv
bW1lbnRzQ29tcE9wdC5zZXRTZWxlY3RlZCh0cnVlKTsNCg0KCQkJSFRNTElu
cHV0RWxlbWVudCBiQUxDb21tZW50c0ZpbHRlciA9IChIVE1MSW5wdXRFbGVt
ZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKCJCQUxDb21tZW50c0ZpbHRlciIp
Ow0KCQkJYkFMQ29tbWVudHNGaWx0ZXIuc2V0VmFsdWUoZmJBTENvbW1lbnRz
RmlsdGVyKTsNCgkJfQ0KCQlpZiAoIShpbmZDb21tZW50c0NvbXBGaWx0ZXIu
ZXF1YWxzKCIiKSkgJiYgIShpbmZDb21tZW50c0ZpbHRlci5lcXVhbHMoIiIp
KSkgew0KCQkJU3RyaW5nIHN0cmluZkNvbW1lbnRzQ29tcEZpbHRlciA9ICJJ
bmZDb21tZW50c0NvbXBPcHQiKyBpbmZDb21tZW50c0NvbXBGaWx0ZXIucmVw
bGFjZUFsbCgiICIsIiIpLnJlcGxhY2VBbGwoIiEiLCJOb3QiKS5yZXBsYWNl
QWxsKCI9IiwiRXF1YWxzIik7DQoJCQkNCgkJCUhUTUxPcHRpb25FbGVtZW50
IGluZkNvbW1lbnRzQ29tcE9wdCA9IChIVE1MT3B0aW9uRWxlbWVudCkgcGFn
ZS5nZXRFbGVtZW50QnlJZChzdHJpbmZDb21tZW50c0NvbXBGaWx0ZXIpOw0K
CQkJaW5mQ29tbWVudHNDb21wT3B0LnNldFNlbGVjdGVkKHRydWUpOw0KDQoJ
CQlIVE1MSW5wdXRFbGVtZW50IEluZkNvbW1lbnRzRmlsdGVyID0gKEhUTUxJ
bnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoIkluZkNvbW1lbnRz
RmlsdGVyIik7DQoJCQlJbmZDb21tZW50c0ZpbHRlci5zZXRWYWx1ZShpbmZD
b21tZW50c0ZpbHRlcik7DQoJCX0NCgkJaWYgKCEobWJDb21tZW50c0NvbXBG
aWx0ZXIuZXF1YWxzKCIiKSkgJiYgIShtYkNvbW1lbnRzRmlsdGVyLmVxdWFs
cygiIikpKSB7DQoJCQlTdHJpbmcgc3RybWJDb21tZW50c0NvbXBGaWx0ZXIg
PSAiTUJDb21tZW50c0NvbXBPcHQiKyBtYkNvbW1lbnRzQ29tcEZpbHRlci5y
ZXBsYWNlQWxsKCIgIiwiIikucmVwbGFjZUFsbCgiISIsIk5vdCIpLnJlcGxh
Y2VBbGwoIj0iLCJFcXVhbHMiKTsNCgkJCQ0KCQkJSFRNTE9wdGlvbkVsZW1l
bnQgbWJDb21tZW50c0NvbXBPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBh
Z2UuZ2V0RWxlbWVudEJ5SWQoc3RybWJDb21tZW50c0NvbXBGaWx0ZXIpOw0K
CQkJbWJDb21tZW50c0NvbXBPcHQuc2V0U2VsZWN0ZWQodHJ1ZSk7DQoNCgkJ
CUhUTUxJbnB1dEVsZW1lbnQgTUJDb21tZW50c0ZpbHRlciA9IChIVE1MSW5w
dXRFbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKCJNQkNvbW1lbnRzRmls
dGVyIik7DQoJCQlNQkNvbW1lbnRzRmlsdGVyLnNldFZhbHVlKG1iQ29tbWVu
dHNGaWx0ZXIpOw0KCQl9DQoJCQkNCgkJaWYgKCEoc3VtbWFyeUNvbW1lbnRz
Q29tcEZpbHRlci5lcXVhbHMoIiIpKSAmJiAhKHN1bW1hcnlDb21tZW50c0Zp
bHRlci5lcXVhbHMoIiIpKSkgew0KCQkJU3RyaW5nIHN0cnN1bW1hcnlDb21t
ZW50c0NvbXBGaWx0ZXIgPSAiU3VtbWFyeUNvbW1lbnRzQ29tcE9wdCIrIHN1
bW1hcnlDb21tZW50c0NvbXBGaWx0ZXIucmVwbGFjZUFsbCgiICIsIiIpLnJl
cGxhY2VBbGwoIiEiLCJOb3QiKS5yZXBsYWNlQWxsKCI9IiwiRXF1YWxzIik7
DQoJCQkNCgkJCUhUTUxPcHRpb25FbGVtZW50IHN1bW1hcnlDb21tZW50c0Nv
bXBPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5
SWQoc3Ryc3VtbWFyeUNvbW1lbnRzQ29tcEZpbHRlcik7DQoJCQlzdW1tYXJ5
Q29tbWVudHNDb21wT3B0LnNldFNlbGVjdGVkKHRydWUpOw0KDQoJCQlIVE1M
SW5wdXRFbGVtZW50IHR4dHN1bW1hcnlDb21tZW50c0ZpbHRlciA9IChIVE1M
SW5wdXRFbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKCJTdW1tYXJ5Q29t
bWVudHNGaWx0ZXIiKTsNCgkJCXR4dHN1bW1hcnlDb21tZW50c0ZpbHRlci5z
ZXRWYWx1ZShzdW1tYXJ5Q29tbWVudHNGaWx0ZXIpOw0KCQl9DQoJCQ0KCQlp
ZiAoIShpbmRUaGVyYXB5Q29tbWVudHNDb21wRmlsdGVyLmVxdWFscygiIikp
ICYmICEoaW5kVGhlcmFweUNvbW1lbnRzRmlsdGVyLmVxdWFscygiIikpKSB7
DQoJCQlTdHJpbmcgc3RyaW5kVGhlcmFweUNvbW1lbnRzQ29tcEZpbHRlciA9
ICJJbmRUaGVyYXB5Q29tbWVudHNDb21wT3B0IisgaW5kVGhlcmFweUNvbW1l
bnRzQ29tcEZpbHRlci5yZXBsYWNlQWxsKCIgIiwiIikucmVwbGFjZUFsbCgi
ISIsIk5vdCIpLnJlcGxhY2VBbGwoIj0iLCJFcXVhbHMiKTsNCgkJCQ0KCQkJ
SFRNTE9wdGlvbkVsZW1lbnQgaW5kVGhlcmFweUNvbW1lbnRzQ29tcE9wdCA9
IChIVE1MT3B0aW9uRWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZChzdHJp
bmRUaGVyYXB5Q29tbWVudHNDb21wRmlsdGVyKTsNCgkJCWluZFRoZXJhcHlD
b21tZW50c0NvbXBPcHQuc2V0U2VsZWN0ZWQodHJ1ZSk7DQoNCgkJCUhUTUxJ
bnB1dEVsZW1lbnQgdHh0aW5kVGhlcmFweUNvbW1lbnRzRmlsdGVyID0gKEhU
TUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoIkluZFRoZXJh
cHlDb21tZW50c0ZpbHRlciIpOw0KCQkJdHh0aW5kVGhlcmFweUNvbW1lbnRz
RmlsdGVyLnNldFZhbHVlKGluZFRoZXJhcHlDb21tZW50c0ZpbHRlcik7DQoJ
CX0NCgkJDQoJCWlmICghKHJlamVjdGlvbkVwaXNvZGVDb21tZW50c0NvbXBG
aWx0ZXIuZXF1YWxzKCIiKSkgJiYgIShyZWplY3Rpb25FcGlzb2RlQ29tbWVu
dHNGaWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCVN0cmluZyBzdHJyZWplY3Rp
b25FcGlzb2RlQ29tbWVudHNDb21wRmlsdGVyID0gIlJlamVjdGlvbkVwaXNv
ZGVDb21tZW50c0NvbXBPcHQiKyByZWplY3Rpb25FcGlzb2RlQ29tbWVudHND
b21wRmlsdGVyLnJlcGxhY2VBbGwoIiAiLCIiKS5yZXBsYWNlQWxsKCIhIiwi
Tm90IikucmVwbGFjZUFsbCgiPSIsIkVxdWFscyIpOw0KCQkJDQoJCQlIVE1M
T3B0aW9uRWxlbWVudCByZWplY3Rpb25FcGlzb2RlQ29tbWVudHNDb21wT3B0
ID0gKEhUTUxPcHRpb25FbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKHN0
cnJlamVjdGlvbkVwaXNvZGVDb21tZW50c0NvbXBGaWx0ZXIpOw0KCQkJcmVq
ZWN0aW9uRXBpc29kZUNvbW1lbnRzQ29tcE9wdC5zZXRTZWxlY3RlZCh0cnVl
KTsNCg0KCQkJSFRNTElucHV0RWxlbWVudCB0eHRyZWplY3Rpb25FcGlzb2Rl
Q29tbWVudHNGaWx0ZXIgPSAoSFRNTElucHV0RWxlbWVudCkgcGFnZS5nZXRF
bGVtZW50QnlJZCgiUmVqZWN0aW9uRXBpc29kZUNvbW1lbnRzRmlsdGVyIik7
DQoJCQl0eHRyZWplY3Rpb25FcGlzb2RlQ29tbWVudHNGaWx0ZXIuc2V0VmFs
dWUocmVqZWN0aW9uRXBpc29kZUNvbW1lbnRzRmlsdGVyKTsNCgkJfQ0KCQkN
CgkJaWYgKCEoZmZuQ29tbWVudHNDb21wRmlsdGVyLmVxdWFscygiIikpICYm
ICEoZmZuQ29tbWVudHNGaWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCVN0cmlu
ZyBmbkNvbW1lbnRzQ29tcEZpbHRlciA9ICJGbkNvbW1lbnRzQ29tcE9wdCIr
IGZmbkNvbW1lbnRzQ29tcEZpbHRlci5yZXBsYWNlQWxsKCIgIiwiIikucmVw
bGFjZUFsbCgiISIsIk5vdCIpLnJlcGxhY2VBbGwoIj0iLCJFcXVhbHMiKTsN
CgkJCQ0KCQkJSFRNTE9wdGlvbkVsZW1lbnQgZm5Db21tZW50c0NvbXBPcHQg
PSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoZm5D
b21tZW50c0NvbXBGaWx0ZXIpOw0KCQkJZm5Db21tZW50c0NvbXBPcHQuc2V0
U2VsZWN0ZWQodHJ1ZSk7DQoNCgkJCUhUTUxJbnB1dEVsZW1lbnQgZm5Db21t
ZW50c0ZpbHRlciA9IChIVE1MSW5wdXRFbGVtZW50KSBwYWdlLmdldEVsZW1l
bnRCeUlkKCJGbkNvbW1lbnRzRmlsdGVyIik7DQoJCQlmbkNvbW1lbnRzRmls
dGVyLnNldFZhbHVlKGZmbkNvbW1lbnRzRmlsdGVyKTsNCgkJfQ0KCQkNCgkJ
DQoJCWlmICghKGZjcHRDb21wRmlsdGVyLmVxdWFscygiIikpICYmICEoZmNw
dEZpbHRlci5lcXVhbHMoIiIpKSkgew0KCQkJU3RyaW5nIGNwdE9wdCA9ICJD
UFRDb21wIisgZnBheENvbXBGaWx0ZXIucmVwbGFjZUFsbCgiICIsIiIpOw0K
CQkJSFRNTE9wdGlvbkVsZW1lbnQgZUNQVE9wdCA9IChIVE1MT3B0aW9uRWxl
bWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZChjcHRPcHQpOw0KCQkJZUNQVE9w
dC5zZXRTZWxlY3RlZCh0cnVlKTsNCg0KCQkJSFRNTElucHV0RWxlbWVudCBl
Q1BUID0gKEhUTUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQo
IkNQVEZpbHRlciIpOw0KCQkJZUNQVC5zZXRWYWx1ZShmY3B0RmlsdGVyKTsN
CgkJfQ0KDQoJCWlmICghKGZpbmRGaWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJ
CWlmICghKGZpbmRDb21wRmlsdGVyLmVxdWFscygiIikpKSB7DQoJCQkJU3Ry
aW5nIGluZENvbXBPcHQgPSAiSW5kQ29tcCIrIGZpbmRDb21wRmlsdGVyLnJl
cGxhY2VBbGwoIiAiLCIiKTsNCgkJCQlIVE1MT3B0aW9uRWxlbWVudCBlSW5k
Q29tcE9wdCA9IChIVE1MT3B0aW9uRWxlbWVudCkgcGFnZS5nZXRFbGVtZW50
QnlJZChpbmRDb21wT3B0KTsNCgkJCQllSW5kQ29tcE9wdC5zZXRTZWxlY3Rl
ZCh0cnVlKTsNCgkJCX0NCg0KCQkJaWYgKCEoZmluZEZpbHRlci5lcXVhbHMo
IiIpKSkgew0KCQkJCUhUTUxJbnB1dEVsZW1lbnQgZUluZCA9IChIVE1MSW5w
dXRFbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKCJJbmRGaWx0ZXIiKTsN
CgkJCQllSW5kLnNldFZhbHVlKGZpbmRGaWx0ZXIpOw0KCQkJfQ0KCQl9DQoJ
CWlmICghKGZjc0ZpbHRlci5lcXVhbHMoIiIpKSkgew0KCQkJaWYgKCEoZmNz
Q29tcEZpbHRlci5lcXVhbHMoIiIpKSkgew0KCQkJCVN0cmluZyBjc0NvbXBP
cHQgPSAiQ1NDb21wIisgZmNzQ29tcEZpbHRlci5yZXBsYWNlQWxsKCIgIiwi
Iik7DQoJCQkJSFRNTE9wdGlvbkVsZW1lbnQgZUNTQ29tcE9wdCA9IChIVE1M
T3B0aW9uRWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZChjc0NvbXBPcHQp
Ow0KCQkJCWVDU0NvbXBPcHQuc2V0U2VsZWN0ZWQodHJ1ZSk7DQoJCQl9DQoN
CgkJCWlmICghKGZjc0ZpbHRlci5lcXVhbHMoIiIpKSkgew0KCQkJCUhUTUxJ
bnB1dEVsZW1lbnQgZUNTID0gKEhUTUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0
RWxlbWVudEJ5SWQoIkNTRmlsdGVyIik7DQoJCQkJZUNTLnNldFZhbHVlKGZj
c0ZpbHRlcik7DQoJCQl9DQoJCX0NCgkJaWYgKCEoZmFnZUNvbXBGaWx0ZXIu
ZXF1YWxzKCIiKSkgJiYgIShmYWdlRmlsdGVyLmVxdWFscygiIikpKSB7DQoJ
CQlTdHJpbmcgYWdlQ29tcE9wdCA9ICJBZ2VDb21wIiArIGZhZ2VDb21wRmls
dGVyLnJlcGxhY2VBbGwoIiAiLCIiKTsNCgkJCUhUTUxPcHRpb25FbGVtZW50
IGVBZ2VDb21wT3B0ID0gKEhUTUxPcHRpb25FbGVtZW50KSBwYWdlLmdldEVs
ZW1lbnRCeUlkKGFnZUNvbXBPcHQpOw0KCQkJZUFnZUNvbXBPcHQuc2V0U2Vs
ZWN0ZWQodHJ1ZSk7DQoNCgkJCUhUTUxJbnB1dEVsZW1lbnQgZUFnZT0gKEhU
TUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoIkFnZUZpbHRl
ciIpOw0KCQkJZUFnZS5zZXRWYWx1ZShmYWdlRmlsdGVyKTsNCgkJfQ0KDQoJ
CWlmICghKGZiaW9GaWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCVN0cmluZyBi
aW9PcHQgPSAiQklPIisgZmJpb0ZpbHRlci5yZXBsYWNlQWxsKCIgIiwiIik7
DQoJCQlIVE1MT3B0aW9uRWxlbWVudCBlQmlvT3B0ID0gKEhUTUxPcHRpb25F
bGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKGJpb09wdCk7DQoJCQllQmlv
T3B0LnNldFNlbGVjdGVkKHRydWUpOw0KCQl9DQoNCgkJaWYgKGZhY3V0ZUNv
bXBGaWx0ZXIhPW51bGwgJiYgIShmYWN1dGVDb21wRmlsdGVyLmVxdWFscygi
IikpIA0KCQkJCSYmIGZhY3V0ZUZpbHRlciE9bnVsbCAmJiAhKGZhY3V0ZUZp
bHRlci5lcXVhbHMoIiIpKSkgew0KCQkJU3RyaW5nIGdyYWRlQ29tcE9wdCA9
ICJBY3RDb21wIiArIGZhY3V0ZUNvbXBGaWx0ZXIucmVwbGFjZUFsbCgiICIs
IiIpOw0KCQkJSFRNTE9wdGlvbkVsZW1lbnQgZUdyYWRlQ29tcE9wdCA9IChI
VE1MT3B0aW9uRWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZChncmFkZUNv
bXBPcHQpOw0KCQkJZUdyYWRlQ29tcE9wdC5zZXRTZWxlY3RlZCh0cnVlKTsN
Cg0KCQkJU3RyaW5nIGdyYWRlT3B0ID0gIkFjdCIrIGZhY3V0ZUZpbHRlci5y
ZXBsYWNlQWxsKCIgIiwiIik7DQoJCQlIVE1MT3B0aW9uRWxlbWVudCBlR3Jh
ZGVPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5
SWQoZ3JhZGVPcHQpOw0KCQkJZUdyYWRlT3B0LnNldFNlbGVjdGVkKHRydWUp
Ow0KCQl9DQoJCWlmIChmTWFjdXRlQ29tcEZpbHRlciE9bnVsbCAmJiAhKGZN
YWN1dGVDb21wRmlsdGVyLmVxdWFscygiIikpIA0KCQkJCSYmIGZNYWN1dGVG
aWx0ZXIhPW51bGwgJiYgIShmTWFjdXRlRmlsdGVyLmVxdWFscygiIikpKSB7
DQoJCQlTdHJpbmcgZ3JhZGVDb21wT3B0ID0gIm1BY3RDb21wIiArIGZNYWN1
dGVDb21wRmlsdGVyLnJlcGxhY2VBbGwoIiAiLCIiKTsJCQkNCgkJCUhUTUxP
cHRpb25FbGVtZW50IGVHcmFkZUNvbXBPcHQgPSAoSFRNTE9wdGlvbkVsZW1l
bnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoZ3JhZGVDb21wT3B0KTsJCQkNCgkJ
CWVHcmFkZUNvbXBPcHQuc2V0U2VsZWN0ZWQodHJ1ZSk7DQoNCgkJCVN0cmlu
ZyBncmFkZU9wdCA9ICJtQWN0IisgZk1hY3V0ZUZpbHRlci5yZXBsYWNlQWxs
KCIgIiwiIik7DQoJCQlIVE1MT3B0aW9uRWxlbWVudCBlR3JhZGVPcHQgPSAo
SFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoZ3JhZGVP
cHQpOw0KCQkJZUdyYWRlT3B0LnNldFNlbGVjdGVkKHRydWUpOw0KCQl9DQoN
CgkJaWYgKGZCYWN1dGVDb21wRmlsdGVyIT1udWxsICYmICEoZkJhY3V0ZUNv
bXBGaWx0ZXIuZXF1YWxzKCIiKSkgDQoJCQkJJiYgZkJhY3V0ZUZpbHRlciE9
bnVsbCAmJiAhKGZCYWN1dGVGaWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCVN0
cmluZyBncmFkZUNvbXBPcHQgPSAiYkFjdENvbXAiICsgZkJhY3V0ZUNvbXBG
aWx0ZXIucmVwbGFjZUFsbCgiICIsIiIpOw0KCQkJSFRNTE9wdGlvbkVsZW1l
bnQgZUdyYWRlQ29tcE9wdCA9IChIVE1MT3B0aW9uRWxlbWVudCkgcGFnZS5n
ZXRFbGVtZW50QnlJZChncmFkZUNvbXBPcHQpOw0KCQkJZUdyYWRlQ29tcE9w
dC5zZXRTZWxlY3RlZCh0cnVlKTsNCg0KCQkJU3RyaW5nIGdyYWRlT3B0ID0g
ImJBY3QiKyBmQmFjdXRlRmlsdGVyLnJlcGxhY2VBbGwoIiAiLCIiKTsNCgkJ
CUhUTUxPcHRpb25FbGVtZW50IGVHcmFkZU9wdCA9IChIVE1MT3B0aW9uRWxl
bWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZChncmFkZU9wdCk7DQoJCQllR3Jh
ZGVPcHQuc2V0U2VsZWN0ZWQodHJ1ZSk7DQoJCX0NCgkJDQoJCWlmIChmWWFj
dXRlQ29tcEZpbHRlciE9bnVsbCAmJiAhKGZZYWN1dGVDb21wRmlsdGVyLmVx
dWFscygiIikpIA0KCQkJCSYmIGZZYWN1dGVGaWx0ZXIhPW51bGwgJiYgIShm
WWFjdXRlRmlsdGVyLmVxdWFscygiIikpKSB7DQoJCQlTdHJpbmcgZ3JhZGVD
b21wT3B0ID0gInlBY3RDb21wIiArIGZZYWN1dGVDb21wRmlsdGVyLnJlcGxh
Y2VBbGwoIiAiLCIiKTsNCgkJCUhUTUxPcHRpb25FbGVtZW50IGVHcmFkZUNv
bXBPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5
SWQoZ3JhZGVDb21wT3B0KTsNCgkJCWVHcmFkZUNvbXBPcHQuc2V0U2VsZWN0
ZWQodHJ1ZSk7DQoNCgkJCVN0cmluZyBncmFkZU9wdCA9ICJ5QWN0IisgZllh
Y3V0ZUZpbHRlci5yZXBsYWNlQWxsKCIgIiwiIik7DQoJCQlIVE1MT3B0aW9u
RWxlbWVudCBlR3JhZGVPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2Uu
Z2V0RWxlbWVudEJ5SWQoZ3JhZGVPcHQpOw0KCQkJZUdyYWRlT3B0LnNldFNl
bGVjdGVkKHRydWUpOw0KCQl9DQoJCQ0KCQlpZiAoZk1CYWN1dGVDb21wRmls
dGVyIT1udWxsICYmICEoZk1CYWN1dGVDb21wRmlsdGVyLmVxdWFscygiIikp
IA0KCQkJCSYmIGZNQmFjdXRlRmlsdGVyIT1udWxsICYmICEoZk1CYWN1dGVG
aWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCVN0cmluZyBncmFkZUNvbXBPcHQg
PSAibWJBY3RDb21wIiArIGZNQmFjdXRlQ29tcEZpbHRlci5yZXBsYWNlQWxs
KCIgIiwiIik7DQoJCQlIVE1MT3B0aW9uRWxlbWVudCBlR3JhZGVDb21wT3B0
ID0gKEhUTUxPcHRpb25FbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKGdy
YWRlQ29tcE9wdCk7DQoJCQllR3JhZGVDb21wT3B0LnNldFNlbGVjdGVkKHRy
dWUpOw0KDQoJCQlTdHJpbmcgZ3JhZGVPcHQgPSAibWJBY3QiKyBmTUJhY3V0
ZUZpbHRlci5yZXBsYWNlQWxsKCIgIiwiIik7DQoJCQlIVE1MT3B0aW9uRWxl
bWVudCBlR3JhZGVPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0
RWxlbWVudEJ5SWQoZ3JhZGVPcHQpOw0KCQkJZUdyYWRlT3B0LnNldFNlbGVj
dGVkKHRydWUpOw0KCQl9DQoJCQ0KCQlpZiAoZmFpckNvbXBGaWx0ZXIhPW51
bGwgJiYgIShmYWlyQ29tcEZpbHRlci5lcXVhbHMoIiIpKSANCgkJCQkmJiBm
YWlyd2F5RmlsdGVyIT1udWxsICYmICEoZmFpcndheUZpbHRlci5lcXVhbHMo
IiIpKSkgew0KCQkJU3RyaW5nIGFpckNvbXBPcHQgPSAiQWlyQ29tcCIrIGZh
aXJDb21wRmlsdGVyLnJlcGxhY2VBbGwoIiAiLCIiKTsNCgkJCUhUTUxPcHRp
b25FbGVtZW50IGVBaXJDb21wT3B0ID0gKEhUTUxPcHRpb25FbGVtZW50KSBw
YWdlLmdldEVsZW1lbnRCeUlkKGFpckNvbXBPcHQpOw0KCQkJZUFpckNvbXBP
cHQuc2V0U2VsZWN0ZWQodHJ1ZSk7DQoNCgkJCVN0cmluZyBhaXJ3YXlPcHQg
PSAiQWlyIisgZmFpcndheUZpbHRlci5yZXBsYWNlQWxsKCIgIiwiIik7DQoJ
CQlIVE1MT3B0aW9uRWxlbWVudCBlQWlyd2F5T3B0ID0gKEhUTUxPcHRpb25F
bGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKGFpcndheU9wdCk7DQoJCQll
QWlyd2F5T3B0LnNldFNlbGVjdGVkKHRydWUpOw0KCQl9DQoJCWlmIChmTWFp
ckNvbXBGaWx0ZXIhPW51bGwgJiYgIShmTWFpckNvbXBGaWx0ZXIuZXF1YWxz
KCIiKSkgDQoJCQkJJiZmTWFpcndheUZpbHRlciE9bnVsbCAmJiAgIShmTWFp
cndheUZpbHRlci5lcXVhbHMoIiIpKSkgew0KCQkJU3RyaW5nIG1haXJDb21w
T3B0ID0gIm1BaXJDb21wIisgZk1haXJDb21wRmlsdGVyLnJlcGxhY2VBbGwo
IiAiLCIiKTsNCgkJCUhUTUxPcHRpb25FbGVtZW50IGVBaXJDb21wT3B0ID0g
KEhUTUxPcHRpb25FbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKG1haXJD
b21wT3B0KTsNCgkJCWVBaXJDb21wT3B0LnNldFNlbGVjdGVkKHRydWUpOw0K
DQoJCQlTdHJpbmcgbWFpcndheU9wdCA9ICJtQWlyIisgZk1haXJ3YXlGaWx0
ZXIucmVwbGFjZUFsbCgiICIsIiIpOw0KCQkJSFRNTE9wdGlvbkVsZW1lbnQg
ZUFpcndheU9wdCA9IChIVE1MT3B0aW9uRWxlbWVudCkgcGFnZS5nZXRFbGVt
ZW50QnlJZChtYWlyd2F5T3B0KTsNCgkJCWVBaXJ3YXlPcHQuc2V0U2VsZWN0
ZWQodHJ1ZSk7DQoJCX0NCgkJaWYgKGZCYWlyQ29tcEZpbHRlciE9bnVsbCAm
JiAhKGZCYWlyQ29tcEZpbHRlci5lcXVhbHMoIiIpKSANCgkJCQkmJiBmQmFp
cndheUZpbHRlciE9bnVsbCAmJiAhKGZCYWlyd2F5RmlsdGVyLmVxdWFscygi
IikpKSB7DQoJCQlTdHJpbmcgYmFpckNvbXBPcHQgPSAiYkFpckNvbXAiKyBm
QmFpckNvbXBGaWx0ZXIucmVwbGFjZUFsbCgiICIsIiIpOw0KCQkJSFRNTE9w
dGlvbkVsZW1lbnQgZUFpckNvbXBPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQp
IHBhZ2UuZ2V0RWxlbWVudEJ5SWQoYmFpckNvbXBPcHQpOw0KCQkJZUFpckNv
bXBPcHQuc2V0U2VsZWN0ZWQodHJ1ZSk7DQoNCgkJCVN0cmluZyBiYWlyd2F5
T3B0ID0gImJBaXIiKyBmQmFpcndheUZpbHRlci5yZXBsYWNlQWxsKCIgIiwi
Iik7DQoJCQlIVE1MT3B0aW9uRWxlbWVudCBlQWlyd2F5T3B0ID0gKEhUTUxP
cHRpb25FbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKGJhaXJ3YXlPcHQp
Ow0KCQkJZUFpcndheU9wdC5zZXRTZWxlY3RlZCh0cnVlKTsNCgkJfQ0KCQlp
ZiAoZllhaXJDb21wRmlsdGVyIT1udWxsICYmICEoZllhaXJDb21wRmlsdGVy
LmVxdWFscygiIikpIA0KCQkJCSYmIGZZYWlyd2F5RmlsdGVyIT1udWxsICYm
ICEoZllhaXJ3YXlGaWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCVN0cmluZyB5
YWlyQ29tcE9wdCA9ICJ5QWlyQ29tcCIrIGZZYWlyQ29tcEZpbHRlci5yZXBs
YWNlQWxsKCIgIiwiIik7DQoJCQlIVE1MT3B0aW9uRWxlbWVudCBlQWlyQ29t
cE9wdCA9IChIVE1MT3B0aW9uRWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJ
ZCh5YWlyQ29tcE9wdCk7DQoJCQllQWlyQ29tcE9wdC5zZXRTZWxlY3RlZCh0
cnVlKTsNCg0KCQkJU3RyaW5nIHlhaXJ3YXlPcHQgPSAieUFpciIrIGZZYWly
d2F5RmlsdGVyLnJlcGxhY2VBbGwoIiAiLCIiKTsNCgkJCUhUTUxPcHRpb25F
bGVtZW50IGVBaXJ3YXlPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2Uu
Z2V0RWxlbWVudEJ5SWQoeWFpcndheU9wdCk7DQoJCQllQWlyd2F5T3B0LnNl
dFNlbGVjdGVkKHRydWUpOw0KCQl9DQoJCWlmIChmTUJhaXJDb21wRmlsdGVy
IT1udWxsICYmICEoZk1CYWlyQ29tcEZpbHRlci5lcXVhbHMoIiIpKSANCgkJ
CQkmJiBmTUJhaXJ3YXlGaWx0ZXIhPW51bGwgJiYgIShmTUJhaXJ3YXlGaWx0
ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCVN0cmluZyBiYWlyQ29tcE9wdCA9ICJt
YkFpckNvbXAiKyBmTUJhaXJDb21wRmlsdGVyLnJlcGxhY2VBbGwoIiAiLCIi
KTsNCgkJCUhUTUxPcHRpb25FbGVtZW50IGVBaXJDb21wT3B0ID0gKEhUTUxP
cHRpb25FbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKGJhaXJDb21wT3B0
KTsNCgkJCWVBaXJDb21wT3B0LnNldFNlbGVjdGVkKHRydWUpOw0KDQoJCQlT
dHJpbmcgYmFpcndheU9wdCA9ICJtYkFpciIrIGZNQmFpcndheUZpbHRlci5y
ZXBsYWNlQWxsKCIgIiwiIik7DQoJCQlIVE1MT3B0aW9uRWxlbWVudCBlQWly
d2F5T3B0ID0gKEhUTUxPcHRpb25FbGVtZW50KSBwYWdlLmdldEVsZW1lbnRC
eUlkKGJhaXJ3YXlPcHQpOw0KCQkJZUFpcndheU9wdC5zZXRTZWxlY3RlZCh0
cnVlKTsNCgkJfQ0KCQkNCgkJaWYgKCEoZmN2ckZpbHRlci5lcXVhbHMoIiIp
KSkgew0KCQkJU3RyaW5nIGN2ck9wdCA9ICJDVlIiKyBmY3ZyRmlsdGVyLnJl
cGxhY2VBbGwoIiAiLCIiKTsNCgkJCUhUTUxPcHRpb25FbGVtZW50IGVDVlJP
cHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQo
Y3ZyT3B0KTsNCgkJCWVDVlJPcHQuc2V0U2VsZWN0ZWQodHJ1ZSk7DQoJCX0N
CgkJaWYgKCEoZm9iRmlsdGVyLmVxdWFscygiIikpKSB7DQoJCQlTdHJpbmcg
b2JPcHQgPSAiT0IiKyBmb2JGaWx0ZXIucmVwbGFjZUFsbCgiICIsIiIpOw0K
CQkJSFRNTE9wdGlvbkVsZW1lbnQgZU9CT3B0ID0gKEhUTUxPcHRpb25FbGVt
ZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKG9iT3B0KTsNCgkJCWVPQk9wdC5z
ZXRTZWxlY3RlZCh0cnVlKTsNCgkJfQ0KDQoJCWlmICghKGZjbXZGaWx0ZXIu
ZXF1YWxzKCIiKSkpIHsNCgkJCVN0cmluZyBjbXZPcHQgPSAiQ01WIisgZmNt
dkZpbHRlci5yZXBsYWNlQWxsKCIgIiwiIik7DQoJCQlIVE1MT3B0aW9uRWxl
bWVudCBlQ01WT3B0ID0gKEhUTUxPcHRpb25FbGVtZW50KSBwYWdlLmdldEVs
ZW1lbnRCeUlkKGNtdk9wdCk7DQoJCQllQ01WT3B0LnNldFNlbGVjdGVkKHRy
dWUpOw0KCQl9DQoJCWlmICghKGZpbmZGaWx0ZXIuZXF1YWxzKCIiKSkpIHsN
CgkJCVN0cmluZyBpbmZPcHQgPSAiSW5mIisgZmluZkZpbHRlci5yZXBsYWNl
QWxsKCIgIiwiIik7DQoJCQlIVE1MT3B0aW9uRWxlbWVudCBlSW5mT3B0ID0g
KEhUTUxPcHRpb25FbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKGluZk9w
dCk7DQoJCQllSW5mT3B0LnNldFNlbGVjdGVkKHRydWUpOw0KCQl9DQoNCgkJ
aWYgKCEoZmluZk9yZ0ZpbHRlci5lcXVhbHMoIiIpKSkgew0KCQkJaWYgKCEo
ZmluZk9yZ0NvbXBGaWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCQlTdHJpbmcg
aW5mT3JnQ29tcE9wdCA9ICJJbmZPcmdDb21wIisgZmluZk9yZ0NvbXBGaWx0
ZXIucmVwbGFjZUFsbCgiICIsIiIpOw0KCQkJCUhUTUxPcHRpb25FbGVtZW50
IGVJbmZPcmdDb21wT3B0ID0gKEhUTUxPcHRpb25FbGVtZW50KSBwYWdlLmdl
dEVsZW1lbnRCeUlkKGluZk9yZ0NvbXBPcHQpOw0KCQkJCWVJbmZPcmdDb21w
T3B0LnNldFNlbGVjdGVkKHRydWUpOw0KCQkJfQ0KDQoJCQlpZiAoIShmaW5m
T3JnRmlsdGVyLmVxdWFscygiIikpKSB7DQoJCQkJSFRNTElucHV0RWxlbWVu
dCBlSW5mT3JnID0gKEhUTUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVu
dEJ5SWQoIkluZk9yZ0ZpbHRlciIpOw0KCQkJCWVJbmZPcmcuc2V0VmFsdWUo
ZmluZk9yZ0ZpbHRlcik7DQoJCQl9DQoJCX0NCgkJaWYgKCEoZmJhbEZpbHRl
ci5lcXVhbHMoIiIpKSkgew0KCQkJU3RyaW5nIGJhbE9wdCA9ICJCQUwiKyBm
YmFsRmlsdGVyLnJlcGxhY2VBbGwoIiAiLCIiKTsNCgkJCUhUTUxPcHRpb25F
bGVtZW50IGVCQUxPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0
RWxlbWVudEJ5SWQoYmFsT3B0KTsNCgkJCWVCQUxPcHQuc2V0U2VsZWN0ZWQo
dHJ1ZSk7DQoJCX0NCg0KCQlpZiAoIShmYmFsQ2VsbEZpbHRlci5lcXVhbHMo
IiIpKSkgew0KCQkJU3RyaW5nIGJhbENlbGxPcHQgPSAiQkFMQ2VsbCIrIGZi
YWxDZWxsRmlsdGVyLnJlcGxhY2VBbGwoIiAiLCIiKTsNCgkJCUhUTUxPcHRp
b25FbGVtZW50IGVCQUxDZWxsT3B0ID0gKEhUTUxPcHRpb25FbGVtZW50KSBw
YWdlLmdldEVsZW1lbnRCeUlkKGJhbENlbGxPcHQpOw0KCQkJZUJBTENlbGxP
cHQuc2V0U2VsZWN0ZWQodHJ1ZSk7DQoJCX0NCg0KCQlpZiAoIShmYmFsT3Jn
RmlsdGVyLmVxdWFscygiIikpKSB7DQoJCQlpZiAoIShmYmFsT3JnQ29tcEZp
bHRlci5lcXVhbHMoIiIpKSkgew0KCQkJCVN0cmluZyBiYWxPcmdDb21wT3B0
ID0gIkJhbE9yZ0NvbXAiKyBmYmFsT3JnQ29tcEZpbHRlci5yZXBsYWNlQWxs
KCIgIiwiIik7DQoJCQkJSFRNTE9wdGlvbkVsZW1lbnQgZUJhbE9yZ0NvbXBP
cHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQo
YmFsT3JnQ29tcE9wdCk7DQoJCQkJZUJhbE9yZ0NvbXBPcHQuc2V0U2VsZWN0
ZWQodHJ1ZSk7DQoJCQl9DQoNCgkJCWlmICghKGZiYWxPcmdGaWx0ZXIuZXF1
YWxzKCIiKSkpIHsNCgkJCQlIVE1MSW5wdXRFbGVtZW50IGVCYWxPcmcgPSAo
SFRNTElucHV0RWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZCgiQmFsT3Jn
RmlsdGVyIik7DQoJCQkJZUJhbE9yZy5zZXRWYWx1ZShmYmFsT3JnRmlsdGVy
KTsNCgkJCX0NCgkJfQ0KDQoJCWlmICghKGZmdEZpbHRlci5lcXVhbHMoIiIp
KSkgew0KCQkJU3RyaW5nIGZ0T3B0ID0gIkZUIisgZmZ0RmlsdGVyLnJlcGxh
Y2VBbGwoIiAiLCIiKTsNCgkJCUhUTUxPcHRpb25FbGVtZW50IGVGVE9wdCA9
IChIVE1MT3B0aW9uRWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZChmdE9w
dCk7DQoJCQllRlRPcHQuc2V0U2VsZWN0ZWQodHJ1ZSk7DQoJCX0NCgkJaWYg
KCEoZmRGRVYxQ29tcEZpbHRlci5lcXVhbHMoIiIpKSAmJiAhKGZkRkVWMUZp
bHRlci5lcXVhbHMoIiIpKSkgew0KCQkJU3RyaW5nIGRGRVYxY29tcE9wdCA9
ICJERkVWMUNvbXAiKyBmZEZFVjFDb21wRmlsdGVyLnJlcGxhY2VBbGwoIiAi
LCIiKTsNCgkJCUhUTUxPcHRpb25FbGVtZW50IGVERkVWMUNvbXBPcHQgPSAo
SFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoZEZFVjFj
b21wT3B0KTsNCgkJCWVERkVWMUNvbXBPcHQuc2V0U2VsZWN0ZWQodHJ1ZSk7
DQoNCgkJCUhUTUxJbnB1dEVsZW1lbnQgZURGRVYxPSAoSFRNTElucHV0RWxl
bWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZCgiREZFVjFGaWx0ZXIiKTsNCgkJ
CWVERkVWMS5zZXRWYWx1ZShmZEZFVjFGaWx0ZXIpOw0KCQl9DQoNCgkJaWYg
KCEoZmNvbXBGaWx0ZXIuZXF1YWxzKCIiKSkpIHsNCgkJCVN0cmluZyBjb21w
T3B0ID0gIkNvbXAiKyBmY29tcEZpbHRlci5yZXBsYWNlQWxsKCIgIiwiIik7
DQoJCQlIVE1MT3B0aW9uRWxlbWVudCBlQ29tcE9wdCA9IChIVE1MT3B0aW9u
RWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZChjb21wT3B0KTsNCgkJCWVD
b21wT3B0LnNldFNlbGVjdGVkKHRydWUpOw0KCQl9DQoNCgkJaWYgKCEoZmNE
ZXNjRmlsdGVyLmVxdWFscygiIikpKSB7DQoJCQlpZiAoIShmY0Rlc2NDb21w
RmlsdGVyLmVxdWFscygiIikpKSB7DQoJCQkJU3RyaW5nIGNEZXNjQ29tcE9w
dCA9ICJDRGVzY0NvbXAiKyBmY0Rlc2NDb21wRmlsdGVyLnJlcGxhY2VBbGwo
IiAiLCIiKTsNCgkJCQlIVE1MT3B0aW9uRWxlbWVudCBlQ0Rlc2NDb21wT3B0
ID0gKEhUTUxPcHRpb25FbGVtZW50KSBwYWdlLmdldEVsZW1lbnRCeUlkKGNE
ZXNjQ29tcE9wdCk7DQoJCQkJZUNEZXNjQ29tcE9wdC5zZXRTZWxlY3RlZCh0
cnVlKTsNCgkJCX0NCg0KCQkJaWYgKCEoZmNEZXNjRmlsdGVyLmVxdWFscygi
IikpKSB7DQoJCQkJSFRNTElucHV0RWxlbWVudCBlQ0Rlc2MgPSAoSFRNTElu
cHV0RWxlbWVudCkgcGFnZS5nZXRFbGVtZW50QnlJZCgiQ0Rlc2NGaWx0ZXIi
KTsNCgkJCQllQ0Rlc2Muc2V0VmFsdWUoZmNEZXNjRmlsdGVyKTsNCgkJCX0N
CgkJfQ0KDQoNCgkJaWYgKCEoZmFkbUZpbHRlci5lcXVhbHMoIiIpKSkgew0K
CQkJU3RyaW5nIGFkbU9wdCA9ICJBZG0iKyBmYWRtRmlsdGVyLnJlcGxhY2VB
bGwoIiAiLCIiKTsNCgkJCUhUTUxPcHRpb25FbGVtZW50IGVBZG1PcHQgPSAo
SFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoYWRtT3B0
KTsNCgkJCWVBZG1PcHQuc2V0U2VsZWN0ZWQodHJ1ZSk7DQoJCX0NCgkJaWYg
KCEoZnJlakZpbHRlci5lcXVhbHMoIiIpKSkgew0KCQkJU3RyaW5nIHJlak9w
dCA9ICJSZWoiKyBmcmVqRmlsdGVyLnJlcGxhY2VBbGwoIiAiLCIiKTsNCgkJ
CUhUTUxPcHRpb25FbGVtZW50IGVSZWpPcHQgPSAoSFRNTE9wdGlvbkVsZW1l
bnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQocmVqT3B0KTsNCgkJCWVSZWpPcHQu
c2V0U2VsZWN0ZWQodHJ1ZSk7DQoJCX0NCgkJaWYgKCEoZnJlalRoRmlsdGVy
LmVxdWFscygiIikpKSB7DQoJCQlTdHJpbmcgcmVqVGhPcHQgPSAiUmVqVGgi
KyBmcmVqVGhGaWx0ZXIucmVwbGFjZUFsbCgiICIsIiIpOw0KCQkJSFRNTE9w
dGlvbkVsZW1lbnQgZVJlalRoT3B0ID0gKEhUTUxPcHRpb25FbGVtZW50KSBw
YWdlLmdldEVsZW1lbnRCeUlkKHJlalRoT3B0KTsNCgkJCWVSZWpUaE9wdC5z
ZXRTZWxlY3RlZCh0cnVlKTsNCgkJfQ0KDQoNCgkJaWYgKCEoZnJlalRoUmVh
c29uc0ZpbHRlci5lcXVhbHMoIiIpKSApIHsNCgkJCWlmICghKGZyZWpUaFJl
YXNvbnNDb21wRmlsdGVyLmVxdWFscygiIikpKSB7DQoJCQkJU3RyaW5nIHJl
alRoUkNvbXBPcHQgPSAiUmVqVGhSQ29tcCIrIGZyZWpUaFJlYXNvbnNDb21w
RmlsdGVyLnJlcGxhY2VBbGwoIiAiLCIiKTsNCgkJCQlIVE1MT3B0aW9uRWxl
bWVudCBlUmVqVGhSQ29tcE9wdCA9IChIVE1MT3B0aW9uRWxlbWVudCkgcGFn
ZS5nZXRFbGVtZW50QnlJZChyZWpUaFJDb21wT3B0KTsNCgkJCQllUmVqVGhS
Q29tcE9wdC5zZXRTZWxlY3RlZCh0cnVlKTsNCgkJCX0NCg0KCQkJaWYgKCEo
ZnJlalRoUmVhc29uc0ZpbHRlci5lcXVhbHMoIiIpKSkgew0KCQkJCUhUTUxJ
bnB1dEVsZW1lbnQgZVRleHQgPSAoSFRNTElucHV0RWxlbWVudCkgcGFnZS5n
ZXRFbGVtZW50QnlJZCgiUmVqVGhSZWFzb25zRmlsdGVyIik7DQoJCQkJZVRl
eHQuc2V0VmFsdWUoZnJlalRoUmVhc29uc0ZpbHRlcik7DQoJCQl9DQoNCgkJ
fQ0KCQlpZiAoIShmbzJTYXRDb21wRmlsdGVyLmVxdWFscygiIikpICYmICEo
Zm8yU2F0RmlsdGVyLmVxdWFscygiIikpKSB7DQoJCQlTdHJpbmcgbzJTYXRD
b21wT3B0ID0gIk8yU2F0Q29tcCIgKyBmbzJTYXRDb21wRmlsdGVyLnJlcGxh
Y2VBbGwoIiAiLCIiKTsNCgkJCUhUTUxPcHRpb25FbGVtZW50IGVPMlNhdENv
bXBPcHQgPSAoSFRNTE9wdGlvbkVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5
SWQobzJTYXRDb21wT3B0KTsNCgkJCWVPMlNhdENvbXBPcHQuc2V0U2VsZWN0
ZWQodHJ1ZSk7DQoNCgkJCUhUTUxJbnB1dEVsZW1lbnQgZU8yU2F0ID0gKEhU
TUxJbnB1dEVsZW1lbnQpIHBhZ2UuZ2V0RWxlbWVudEJ5SWQoIk8yU2F0Rmls
dGVyIik7DQoJCQllTzJTYXQuc2V0VmFsdWUoZm8yU2F0RmlsdGVyKTsNCgkJ
fQ0KDQoJfQ0KDQoNCiAgICBwcml2YXRlIFN0cmluZyBnZXRTYW1wbGVzRGVs
aW1ldGVkKFN0cmluZyBzYW1wbGVMaXN0KSB7DQogICAgCS8vU3lzdGVtLm91
dC5wcmludGxuKCJnZXRTYW1wbGVzRGVsaW1ldGVkKFN0cmluZyBzYW1wbGVM
aXN0KSAgbWV0aG9kIGNhbGxlZCA9PT09PT09PSAiKTsNCgkJU3RyaW5nW10g
aXRlbXMgPSBuZXcgU3RyaW5nWzBdOw0KCQlpZiAoc2FtcGxlTGlzdCAhPSBu
dWxsKSB7DQoJCQlpdGVtcyA9IHNhbXBsZUxpc3Quc3BsaXQoIlxccysiKTsN
CgkJfQ0KDQoJCVN0cmluZyBpdGVtTGlzdCA9ICIiOw0KCQlmb3IgKGludCBp
PTA7aTxpdGVtcy5sZW5ndGg7aSsrKSB7DQoJCQlpZiAoaXRlbXNbaV0uZXF1
YWxzKCIiKSkgY29udGludWU7DQoJCQlpdGVtTGlzdCArPSAiLCIgKyBpdGVt
c1tpXSArICIgIjsNCgkJfQ0KDQoJCWlmICghaXRlbUxpc3QuZXF1YWxzKCIi
KSkNCgkJCWl0ZW1MaXN0ID0gaXRlbUxpc3Quc3Vic3RyaW5nKDEpOw0KDQoJ
CXJldHVybiBpdGVtTGlzdDsNCgl9DQoNCiAgICBwcml2YXRlIFN0cmluZyBn
ZXRTYW1wbGVzU3RyaW5nKFN0cmluZyBzYW1wbGVMaXN0KSB7DQogICAgCS8v
U3lzdGVtLm91dC5wcmludGxuKCJnZXRTYW1wbGVzU3RyaW5nKFN0cmluZyBz
YW1wbGVMaXN0KSAgbWV0aG9kIGNhbGxlZCA9PT09PT09PSAiKTsNCgkJU3Ry
aW5nW10gaXRlbXMgPSBuZXcgU3RyaW5nWzBdOw0KCQlpZiAoc2FtcGxlTGlz
dCAhPSBudWxsKSB7DQoJCQlpdGVtcyA9IHNhbXBsZUxpc3Quc3BsaXQoIlxc
cysiKTsNCgkJfQ0KDQoJCVN0cmluZyBpdGVtTGlzdCA9ICIiOw0KCQlmb3Ig
KGludCBpPTA7aTxpdGVtcy5sZW5ndGg7aSsrKSB7DQoJCQlpZiAoaXRlbXNb
aV0uZXF1YWxzKCIiKSkgY29udGludWU7DQoJCQlpdGVtTGlzdCArPSAiLCci
ICsgaXRlbXNbaV0gKyAiJyI7DQoJCX0NCg0KCQlpZiAoIWl0ZW1MaXN0LmVx
dWFscygiIikpDQoJCQlpdGVtTGlzdCA9IGl0ZW1MaXN0LnN1YnN0cmluZygx
KTsNCg0KCQlyZXR1cm4gaXRlbUxpc3Q7DQoJfQ0KDQoJcHJpdmF0ZSBib29s
ZWFuIGdldFFDUmVzdWx0KEx1bmdDRE91dGNvbWUgbHVuZ0NET3V0Y29tZSwg
U3RyaW5nIGF0dHJOYW1lKSB0aHJvd3MgRXhjZXB0aW9uIHsNCgkJQm9vbGVh
biByZXRPYmogPSBuZXcgQm9vbGVhbihmYWxzZSk7DQoJCXRyeSB7DQoJCQkv
L1N5c3RlbS5vdXQucHJpbnRsbigiYXR0cjoiK2F0dHJOYW1lKTsNCgkJCQ0K
Ly8JCQlmb3IgdGhlIGJsaW5kZWQgZGF0YSBmb3IgdGhlIGludGVybmFsIHVz
ZXJzIHRoZSBxYyBydWxlIHNob3VsZCBub3QgYmUgYXBwbGllZCANCgkJCWlm
ICgoYXR0ck5hbWUuZXF1YWxzKCJBY3V0ZUdyYWRlRCIpDQoJCQkJCXx8YXR0
ck5hbWUuZXF1YWxzKCJBaXJ3YXlHcmFkZUQiKQ0KCQkJCQl8fGF0dHJOYW1l
LmVxdWFscygiT0JEIikNCgkJCQkJfHxhdHRyTmFtZS5lcXVhbHMoIkNWUkQi
KQ0KCQkJCQl8fGF0dHJOYW1lLmVxdWFscygiUmVqRCIpDQoJCQkJCXx8YXR0
ck5hbWUuZXF1YWxzKCJSZWpUaEQiKQ0KCQkJCQl8fGF0dHJOYW1lLmVxdWFs
cygiUmVqVGhSZWFzb25zRCIpDQoJCQkJCXx8YXR0ck5hbWUuZXF1YWxzKCJE
cmF3RCIpDQoJCQkJCXx8YXR0ck5hbWUuZXF1YWxzKCJSZWplY3Rpb25UcmVh
dG1lbnRzRCIpDQoJCQkJCXx8YXR0ck5hbWUuZXF1YWxzKCJNQkFjdXRlR3Jh
ZGVEIikNCgkJCQkJfHxhdHRyTmFtZS5lcXVhbHMoIk1CQWlyd2F5R3JhZGVE
IikNCgkJCQkJfHxhdHRyTmFtZS5lcXVhbHMoIk1CQ29tbWVudHNEIikpIA0K
CQkJCQkNCgkJCQkpew0KCQkJCQlpZih0aGlzLmdldFJvbGUoKSE9bnVsbCAm
JiAodGhpcy5nZXRSb2xlKCkuZXF1YWxzSWdub3JlQ2FzZShEYXRhRmluZGVy
Q29uc3RhbnRzLklOVEVSTkFMX1VTRVIpDQoJCQkJCQkJfHwgdGhpcy5nZXRS
b2xlKCkuZXF1YWxzSWdub3JlQ2FzZShEYXRhRmluZGVyQ29uc3RhbnRzLkFE
TUlOX1VTRVIpKSl7CQkJCQ0KCQkJCQkJaWYobHVuZ0NET3V0Y29tZS5pc0Rh
dGFUb0JlQmxpbmRlZD09dHJ1ZSl7DQoJCQkJCQkgICByZXR1cm4gdHJ1ZTsN
CgkJCQkJCX0NCgkJCQkJfQkJCQ0KCQkJfQ0KDQoJCQkNCgkJCQ0KCQkJTWV0
aG9kIG1ldGhvZCA9IGx1bmdDRE91dGNvbWUuZ2V0Q2xhc3MoKS5nZXRNZXRo
b2QoYXR0ck5hbWUsIG51bGwpOw0KCQkJcmV0T2JqID0gKEJvb2xlYW4pIG1l
dGhvZC5pbnZva2UobHVuZ0NET3V0Y29tZSxudWxsKTsNCg0KCQl9IGNhdGNo
IChOb1N1Y2hNZXRob2RFeGNlcHRpb24gZXgpIHsNCgkJCVN5c3RlbS5vdXQu
cHJpbnRsbigiYXR0cjoiK2F0dHJOYW1lKTsNCgkJCWV4LnByaW50U3RhY2tU
cmFjZSgpOw0KCQl9DQoJCXJldHVybiByZXRPYmouYm9vbGVhblZhbHVlKCk7
DQoNCgl9DQoNCiAgICBwcml2YXRlIFN0cmluZyBnZXRQcmludFZhbChTdHJp
bmcgdmFsKSB7DQoJCVN0cmluZyByZXQgPSAodmFsICE9IG51bGwpID8gdmFs
IDogIiI7DQoJCWlmIChyZXQubGFzdEluZGV4T2YoIn4iKSAhPSAtMSkgcmV0
ID0gcmV0LnN1YnN0cmluZyhyZXQubGFzdEluZGV4T2YoIn4iKSsxKTsNCgkJ
cmV0dXJuIHJldDsNCgl9DQoJcHVibGljIFhNTE9iamVjdCBoYW5kbGVTYXZl
KCkNCiAgICB0aHJvd3MgSHR0cFByZXNlbnRhdGlvbkV4Y2VwdGlvbiB7DQoJ
CVNpbXBsZURhdGVGb3JtYXQgZm9ybWF0dGVyID0gbmV3IFNpbXBsZURhdGVG
b3JtYXQgKCJ5eXl5TU1kZGhobW1zcyIpOw0KCQlTdHJpbmcgcWMxQ2VsbENv
bG9yID0gIiNjNmM2YzYiOw0KCQlTdHJpbmcgcWMyQ2VsbENvbG9yID0gIiNm
ZmNjMzMiOw0KCSAJU3RyaW5nIG5vdyA9IGZvcm1hdHRlci5mb3JtYXQobmV3
IERhdGUoKSk7DQoNCgkgCVN0cmluZyBmaWxlTmFtZSA9ICBub3cgKyAiTHVu
Z0RhdGFRQy54bHMiOw0KCSAJYm9vbGVhbiBzYW1lUGF0ID0gZmFsc2U7DQoJ
CQ0KCQlMdW5nQ0RPdXRjb21lIGx1bmdDRE91dGNvbWUgPSBudWxsOw0KCQlM
dW5nQ0RPdXRjb21lIHByZXZMdW5nQ0RPdXRjb21lID0gbnVsbDsNCgkJDQoJ
CXNldFBhcmFtcygpOw0KCQlTdHJpbmdbXSBhdHRyID0gbmV3IFN0cmluZ1sw
XTsNCg0KCQlpZiAoIShmYXR0ckxpc3QuZXF1YWxzKCIiKSkpIGF0dHIgPSBm
YXR0ckxpc3Quc3BsaXQoIiwiKTsNCg0KCQlMaXN0IGF0dHJMaXN0ID0gQXJy
YXlzLmFzTGlzdChhdHRyKTsNCgkJDQoJCQ0KCQlpbnQgY2VudGVyQ291bnQg
PSAwOw0KCQlpbnQgcGF0aWVudENvdW50ID0gMDsNCgkJaW50IGVuY0NvdW50
ID0gMDsNCgkJaW50IHJvd0NvdW50ID0gMDsNCgkJaW50IHJlY0NvdW50ID0g
MDsNCgkJU3RyaW5nIGN1ckNlbnRlcklkID0gIiI7DQoJCVN0cmluZyBjdXJQ
YXRpZW50SWQgPSAiIjsNCgkJU3RyaW5nIGN1ckVuY0lkID0gIiI7DQoNCgkJ
DQoJCVN0cmluZyBjZW50ZXJJZCA9IG51bGw7DQoJCVN0cmluZyBjZW50ZXJO
YW1lID0gbnVsbDsNCgkJU3RyaW5nIHBhdGllbnRJZCA9IG51bGw7DQoJCVN0
cmluZyBlbmNJZCA9bnVsbDsNCg0KCQlIVE1MVGFibGVDZWxsRWxlbWVudCBj
ZWxsID0gbnVsbDsNCgkJTm9kZSBzcGFuVGFnID1udWxsOw0KCQlIVE1MVGFi
bGVSb3dFbGVtZW50IGxhc3RSb3cgPW51bGw7DQoJCUhUTUxUYWJsZVJvd0Vs
ZW1lbnQgaGRyUm93ID0gbnVsbDsNCgkJU3RyaW5nIHF1ZXJ5VGV4dCA9IG51
bGw7DQoJCWludCBjb3VudGVyPTA7DQoJCVN0cmluZyBzdHJNaXNzaW5nRGF0
YSA9ICJtaXNzaW5nIjsNCgkJRGF0ZSBibGluZGluZ1N0YXJ0RGF0ZSA9IG51
bGw7DQoJCURhdGUgYmxpbmRpbmdFbmREYXRlID0gbnVsbDsNCgkJDQoJCU5v
ZGUgbm87DQoJCUhUTUxUYWJsZUNlbGxFbGVtZW50IG4gOw0KCQlOb2RlTGlz
dCB0ZENoaWxkTGlzdCA7DQoJCU5vZGUgdGROb2RlOw0KCQkNCgkJTmFtZWRO
b2RlTWFwIG5ubSA7DQoJCVN0cmluZyAgaW5wdXRJZFZhbHVlIDsNCgkJU3Ry
aW5nIGlkQXR0cmlidXRlVmFsdWU7DQoJCQ0KCSAJdGhpcy5nZXRDb21tcygp
LnJlc3BvbnNlLnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi9tcy1leGNl
bCIpOw0KCQl0aGlzLmdldENvbW1zKCkucmVzcG9uc2Uuc2V0SGVhZGVyKCJD
b250ZW50LURpc3Bvc2l0aW9uIiwgImF0dGFjaG1lbnQ7IGZpbGVuYW1lPSIg
KyBmaWxlTmFtZSk7DQoNCgkJTGFyZ29ERkV4cG9ydEV4Y2VsZUNSRkhUTUwg
cGFnZSA9IG51bGw7DQoJCQlwYWdlID0gKExhcmdvREZFeHBvcnRFeGNlbGVD
UkZIVE1MKSBteUNvbW1zLnhtbGNGYWN0b3J5LmNyZWF0ZShMYXJnb0RGRXhw
b3J0RXhjZWxlQ1JGSFRNTC5jbGFzcyk7DQoJCQlIVE1MVGFibGVSb3dFbGVt
ZW50IHRlbXBsYXRlSGRyUm93ID0gcGFnZS5nZXRFbGVtZW50SGRyUm93KCk7
DQoJCQlIVE1MVGFibGVSb3dFbGVtZW50IHRlbXBsYXRlUm93ID0gcGFnZS5n
ZXRFbGVtZW50VGVtcGxhdGVSb3coKTsNCgkJCU5vZGVMaXN0IG5sID0gdGVt
cGxhdGVSb3cuZ2V0Q2hpbGROb2RlcygpOwkJCQ0KCQkJTm9kZSB0ZW1wbGF0
ZVRhYmxlID0gdGVtcGxhdGVSb3cuZ2V0UGFyZW50Tm9kZSgpOw0KDQoJCQlm
b3IgKGludCBpPW5sLmdldExlbmd0aCgpLTE7aT49MTtpLS0pIHsNCgkJCQlu
byA9IG5sLml0ZW0oaSk7DQoJCQkJaWYgKG5vLmdldE5vZGVOYW1lKCkuc3Vi
c3RyaW5nKDAsMSkuZXF1YWxzKCIjIikpIGNvbnRpbnVlOw0KDQoJCQkJbiA9
IChIVE1MVGFibGVDZWxsRWxlbWVudCkgbmwuaXRlbShpKTsNCgkJCQlpZihu
LmdldElkKCkubGVuZ3RoKCk+MCl7DQoJCQkJCWlmICghKGF0dHJMaXN0LmNv
bnRhaW5zKG4uZ2V0SWQoKSkpKXsNCgkJCQkJCW4uZ2V0UGFyZW50Tm9kZSgp
LnJlbW92ZUNoaWxkKG4pOw0KCQkJCQl9DQoJCQkJfWVsc2V7DQoJCQkJCXRk
Q2hpbGRMaXN0ID0gbi5nZXRDaGlsZE5vZGVzKCk7DQoJCQkJCQ0KCQkJCQlm
b3IoaW50IGo9MDtqPHRkQ2hpbGRMaXN0LmdldExlbmd0aCgpO2orKyl7DQoJ
CQkJCQl0ZE5vZGUgPSB0ZENoaWxkTGlzdC5pdGVtKGopOw0KCQkJCQkJDQoJ
CQkJCQlubm0gPSB0ZE5vZGUuZ2V0QXR0cmlidXRlcygpOw0KCQkJCQkNCgkJ
CQkJCWlkQXR0cmlidXRlVmFsdWUgPSBubm0uZ2V0TmFtZWRJdGVtKCJpZCIp
LmdldE5vZGVWYWx1ZSgpOw0KCQkJCQkJDQoJCQkJCQlpbnB1dElkVmFsdWUg
PSBpZEF0dHJpYnV0ZVZhbHVlLnN1YnN0cmluZygwLGlkQXR0cmlidXRlVmFs
dWUubGVuZ3RoKCkpICsiRCI7DQoJCQkJCQlpZiAoIShhdHRyTGlzdC5jb250
YWlucyhpbnB1dElkVmFsdWUpKSkgewkNCgkJCQkJCQluLmdldFBhcmVudE5v
ZGUoKS5yZW1vdmVDaGlsZChuKTsNCgkJCQkJCX0NCgkJCQkJfQkJCQkNCgkJ
CQl9DQoJCQl9DQoJCQlubCA9IHRlbXBsYXRlSGRyUm93LmdldENoaWxkTm9k
ZXMoKTsNCgkJCWZvciAoaW50IGk9bmwuZ2V0TGVuZ3RoKCktMTtpPj0xO2kt
LSkgew0KCQkJCSBuID0gKEhUTUxUYWJsZUNlbGxFbGVtZW50KSBubC5pdGVt
KGkpOw0KCQkJCWlmICghKGF0dHJMaXN0LmNvbnRhaW5zKG4uZ2V0SWQoKS5z
dWJzdHJpbmcoMCxuLmdldElkKCkubGVuZ3RoKCktMSkpKSkNCgkJCQkJbi5n
ZXRQYXJlbnROb2RlKCkucmVtb3ZlQ2hpbGQobik7DQoJCQl9DQoJCQl0cnl7
DQoJCQlscSA9IG1ha2VRdWVyeSgpOwkJCQkJCQkNCgkJCXNyUm93cyA9IFRy
YW5zcGxhbnRVdGlsLmdldEx1bmdPdXRjb21lcyhscSx0aGlzLmdldFJvbGUo
KSk7DQoJCQlmb3IgKExpc3RJdGVyYXRvciBkYXRhPXNyUm93cy5saXN0SXRl
cmF0b3IoKTsgZGF0YS5oYXNOZXh0KCk7Y291bnRlcisrKSB7DQoJCQkJbHVu
Z0NET3V0Y29tZSA9IChMdW5nQ0RPdXRjb21lKSBkYXRhLm5leHQoKTsNCgkJ
CQkNCgkJCQlpZihjb3VudGVyPjApew0KCQkJCQlwcmV2THVuZ0NET3V0Y29t
ZSA9IChMdW5nQ0RPdXRjb21lKSBzclJvd3MuZ2V0KGNvdW50ZXItMSk7DQoJ
CQkJfQ0KDQoJCQkJIGNlbnRlcklkID0gbHVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiY2VudGVyaWQiKTsNCgkJCQkgY2VudGVyTmFtZSA9IGx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoImNlbnRlck5hbWUiKTsNCgkJCQkgcGF0aWVudElkID0g
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicGF0aWVudGlkIik7DQoJCQkJIGVu
Y0lkID0gbHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZW5jb3VudGVyaWQiKTsN
CgkJCQkgDQoJCQkJcm93Q291bnQrKzsNCgkJCQlyZWNDb3VudCsrOw0KDQoJ
CQkJaWYgKCEoY2VudGVySWQuZXF1YWxzKGN1ckNlbnRlcklkKSkpIHsNCgkJ
CQkJY3VyQ2VudGVySWQgPSBjZW50ZXJJZDsNCgkJCQkJY2VudGVyQ291bnQr
KzsNCgkJCQl9DQoNCgkJCQlpZiAoIShwYXRpZW50SWQuZXF1YWxzKGN1clBh
dGllbnRJZCkpKSB7DQoJCQkJCWN1clBhdGllbnRJZCA9IHBhdGllbnRJZDsN
CgkJCQkJcGF0aWVudENvdW50Kys7DQoJCQkJfQ0KDQoJCQkJaWYgKCEoZW5j
SWQuZXF1YWxzKGN1ckVuY0lkKSkpIHsNCgkJCQkJY3VyRW5jSWQgPSBlbmNJ
ZDsNCgkJCQkJZW5jQ291bnQrKzsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K
CQkJCX0NCgkJCQllbHNlIHNhbWVQYXQgPSB0cnVlOw0KDQovLwkJCQlpZiAo
IHJvd0NvdW50ID4gMTIgJiYgKCEoZmV2ZW50LmVxdWFscygic2F2ZSIpKSkg
KSB7DQovLwkJCQkJaGRyUm93ID0gKEhUTUxUYWJsZVJvd0VsZW1lbnQpIHRl
bXBsYXRlSGRyUm93LmNsb25lTm9kZSh0cnVlKTsNCi8vCQkJCQl0ZW1wbGF0
ZVRhYmxlLmFwcGVuZENoaWxkKGhkclJvdyk7DQovLwkJCQkJcm93Q291bnQg
PSAxOw0KLy8JCQkJfQ0KDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJF
bmNvdW50ZXJJZEQiKSl7DQoJCQkJICAgcGFnZS5zZXRUZXh0RW5jb3VudGVy
KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImVuY291bnRlcmlkIikpOw0KCQkJ
CX1lbHNlew0KCQkJCSAgIGlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYm
IHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwYXRpZW50aWQiKS5lcXVh
bHMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicGF0aWVudGlkIikpKXsNCgkJ
CQkgICAgICBzYW1lUGF0ID0gdHJ1ZTsNCgkJCQkgICB9ZWxzZXsNCgkJCQkg
ICAJIHNhbWVQYXQgPSBmYWxzZTsNCgkJCQkgICB9DQoJCQkJICAgcGFnZS5z
ZXRUZXh0RW5jb3VudGVyKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBhdGll
bnRpZCIpKTsNCgkJCQkgICBwYWdlLnNldFRleHRFbmNvdW50ZXJJZCgiUGF0
aWVudCBJZCIpOw0KCQkJCX0JCQkJDQoNCgkJCQlpZiAoYXR0ckxpc3QuY29u
dGFpbnMoIlZpc2l0RGF0ZUQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRj
b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgidmlzaXREYXRlIikpDQoJCQkJCQkJLmVxdWFscyhTdHJp
bmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ2aXNpdERhdGUi
KSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQkJCQkJDQoJ
CQkJCXBhZ2Uuc2V0VGV4dFZpc2l0RGF0ZShsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJ2aXNpdERhdGUiKSk7DQoJCQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0
ckxpc3QuY29udGFpbnMoIkNvbXB1dGVkVmlzaXRBZ2VEIikpew0KCQkJCQlp
ZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2Yo
cHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNvbXB1dGVkVmlzaXRBZ2Ui
KSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoImNvbXB1dGVkVmlzaXRBZ2UiKSkpKXsNCgkJCQkJCXNh
bWVQYXQgPSBmYWxzZTsNCgkJCQkJfQkJCQkJDQoJCQkJCXBhZ2Uuc2V0VGV4
dENvbXB1dGVkVmlzaXRBZ2UobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY29t
cHV0ZWRWaXNpdEFnZSIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlz
dC5jb250YWlucygiUEFYRCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNv
bWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21l
LmdldFZhbHVlKCJwYXhOdW0iKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52
YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBheE51bSIpKSkpew0K
CQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0
VGV4dFBBWChsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwYXhOdW0iKSk7DQoJ
CQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkNQVEQi
KSkgew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3Ry
aW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNwdE51
bSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgiY3B0TnVtIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0g
ZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0Q1BUKGx1bmdDRE91
dGNvbWUuZ2V0VmFsdWUoImNwdE51bSIpKTsNCgkJCQkJDQoJCQkJfQ0KCQkJ
CWlmIChhdHRyTGlzdC5jb250YWlucygiU2V4RCIpKSB7DQoJCQkJCWlmKHBy
ZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2
THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgic2V4IikpDQoJCQkJCQkJLmVxdWFs
cyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJzZXgi
KSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlw
YWdlLnNldFRleHRTZXgobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgic2V4Iikp
OwkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJSYWNl
RCIpKSB7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFT
dHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmFj
ZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgicmFjZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZh
bHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dFJhY2UobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgicmFjZSIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChh
dHRyTGlzdC5jb250YWlucygiVHhUeXBlRCIpKXsNCgkJCQkJaWYocHJldkx1
bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJ0cmFuc3BsYW50VHlwZSIpKQ0KCQkJCQkJ
CS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgidHJhbnNwbGFudFR5cGUiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxz
ZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRUeFR5cGUobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgidHJhbnNwbGFudFR5cGUiKSk7CQkJCQ0KCQkJCX0N
Cg0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiVHhEYXRlRCIpKXsNCgkJ
CQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1
ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0cmFuc3BsYW50RGF0
ZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgidHJhbnNwbGFudERhdGUiKSkpKXsNCgkJCQkJCXNh
bWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRUeERh
dGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidHJhbnNwbGFudERhdGUiKSk7
CQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlR4SW5k
RCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0
cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0cmFu
c3BsYW50SW5kIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihs
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0cmFuc3BsYW50SW5kIikpKSl7DQoJ
CQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRU
ZXh0VHhJbmQobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidHJhbnNwbGFudElu
ZCIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygi
RGF5c0QiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYm
ICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
ZGF5c0Zyb21UeCIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2Yo
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZGF5c0Zyb21UeCIpKSkpew0KCQkJ
CQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4
dERheXMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZGF5c0Zyb21UeCIpKTsJ
CQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQWdlRCIp
KXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmlu
Zy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJhZ2UiKSkN
CgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUu
Z2V0VmFsdWUoImFnZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K
CQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dEFnZShsdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJhZ2UiKSk7CQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3Qu
Y29udGFpbnMoIkNvbXB1dGVkRW5yb2xsQWdlRCIpKXsNCgkJCQkJaWYocHJl
dkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZM
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjb21wdXRlZEVucm9sbG1lbnRBZ2Ui
KSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoImNvbXB1dGVkRW5yb2xsbWVudEFnZSIpKSkpew0KCQkJ
CQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4
dENvbXB1dGVkRW5yb2xsQWdlKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNv
bXB1dGVkRW5yb2xsbWVudEFnZSIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChh
dHRyTGlzdC5jb250YWlucygiSXNUeFJlY2lwaWVudEQiKSl7DQoJCQkJCWlm
KHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihw
cmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaXNUeFJlY2VwaWVudCIpKQ0K
CQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgiaXNUeFJlY2VwaWVudCIpKSkpew0KCQkJCQkJc2FtZVBhdCA9
IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dElzVHhSZWNpcGll
bnQobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaXNUeFJlY2VwaWVudCIpKTsJ
CQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiSGFzUmVj
ZWl2ZWRGdW5kb3BsaWNhdGlvbkQiKSl7CQ0KCQkJCQlpZihwcmV2THVuZ0NE
T3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91
dGNvbWUuZ2V0VmFsdWUoImhhc1JlY2VpdmVkRnVuZG9wbGljYXRpb24iKSkN
CgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUu
Z2V0VmFsdWUoImhhc1JlY2VpdmVkRnVuZG9wbGljYXRpb24iKSkpKXsNCgkJ
CQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRl
eHRIYXNSZWNlaXZlZEZ1bmRvcGxpY2F0aW9uKGx1bmdDRE91dGNvbWUuZ2V0
VmFsdWUoImhhc1JlY2VpdmVkRnVuZG9wbGljYXRpb24iKSk7CQ0KCQkJCX0N
CgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkRvYkQiKSl7DQoJCQkJCWlm
KHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihw
cmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZG9iIikpDQoJCQkJCQkJLmVx
dWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJk
b2IiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJ
CQlwYWdlLnNldFRleHREb2IobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZG9i
IikpOwkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJF
bnJvbGxEdEQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxs
ICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiZW5yb2xsRHQiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9m
KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImVucm9sbER0IikpKSl7DQoJCQkJ
CQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0
RW5yb2xsRHQobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZW5yb2xsRHQiKSk7
CQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkFnZUNS
RkQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFT
dHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYWdl
Q1JGIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJhZ2VDUkYiKSkpKXsNCgkJCQkJCXNhbWVQYXQg
PSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRBZ2VDUkYobHVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgiYWdlQ1JGIikpOwkJCQkNCgkJCQl9DQoJ
CQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJQYXRpZW50U3RhdHVzRCIpKSB7
DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcu
dmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicGF0aWVudFN0
YXR1cyIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgicGF0aWVudFN0YXR1cyIpKSkpew0KCQkJCQkJ
c2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dFBh
dGllbnRTdGF0dXMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicGF0aWVudFN0
YXR1cyIpKTsNCgkJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250
YWlucygiSW5kaWNhdGlvbkQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRj
b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgiaW5kaWNhdGlvbiIpKQ0KCQkJCQkJCS5lcXVhbHMoU3Ry
aW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5kaWNhdGlv
biIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJ
CXBhZ2Uuc2V0VGV4dEluZGljYXRpb24obHVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiaW5kaWNhdGlvbiIpKTsNCgkJCQkJDQoJCQkJfQ0KDQoJCQkJaWYgKGF0
dHJMaXN0LmNvbnRhaW5zKCJPQkQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RP
dXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgiT0IiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52
YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIk9CIikpKSl7DQoJCQkJ
CQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0
T0IobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiT0IiKSk7DQoJCQkJDQoJCQkJ
fQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQ1ZSRCIpKSB7DQoJCQkJ
CWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVP
ZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiQ1ZSIikpDQoJCQkJCQkJ
LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJDVlIiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0K
CQkJCQlwYWdlLnNldFRleHRDVlIobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
Q1ZSIikpOw0KCQkJCX0NCg0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygi
QmlvcHN5RCIpKSB7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxs
ICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiYmlvcHN5IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihs
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiaW9wc3kiKSkpKXsNCgkJCQkJCXNh
bWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRCaW9w
c3kobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmlvcHN5IikpOw0KCQkJCQkN
CgkJCQl9DQoJCQkJDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJCaW9w
c3lEYXRlRCIpKSB7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxs
ICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiYmlvcHN5RGF0ZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVl
T2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmlvcHN5RGF0ZSIpKSkpew0K
CQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0
VGV4dEJpb3BzeURhdGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmlvcHN5
RGF0ZSIpKTsNCgkJCQkJDQoJCQkJfQ0KCQkJCQ0KCQkJCWlmIChhdHRyTGlz
dC5jb250YWlucygiQmlvcHN5Q29tbWVudHNEIikpIHsNCgkJCQkJaWYocHJl
dkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZM
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiaW9wc3lDb21tZW50cyIpKQ0KCQkJ
CQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRW
YWx1ZSgiYmlvcHN5Q29tbWVudHMiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBm
YWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRCaW9wc3lDb21tZW50
cyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiaW9wc3lDb21tZW50cyIpKTsJ
CQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQWN1dGVH
cmFkZUQiKSkgew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAm
JiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo
ImFjdXRlR3JhZGUiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9m
KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImFjdXRlR3JhZGUiKSkpKXsNCgkJ
CQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCSAgICBwYWdlLnNl
dFRleHRBY3V0ZUdyYWRlKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImFjdXRl
R3JhZGUiKSk7DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygi
QWlyd2F5R3JhZGVEIikpIHsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUh
PW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJhaXJ3YXlHcmFkZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5n
LnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYWlyd2F5R3JhZGUi
KSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCSAg
ICBwYWdlLnNldFRleHRBaXJ3YXlHcmFkZShsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJhaXJ3YXlHcmFkZSIpKTsNCgkJCQl9DQoJCQkJDQoJCQkJaWYgKGF0
dHJMaXN0LmNvbnRhaW5zKCJNQkFjdXRlR3JhZGVEIikpew0KCQkJCQlpZihw
cmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJl
dkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm1iQWN1dGVHcmFkZSIpKQ0KCQkJ
CQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRW
YWx1ZSgibWJBY3V0ZUdyYWRlIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFs
c2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0TUJBY3V0ZUdyYWRlKGx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm1iQWN1dGVHcmFkZSIpKTsNCgkJCQl9
DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJNQkFpcndheUdyYWRlRCIp
KXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmlu
Zy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJtYkFpcndh
eUdyYWRlIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJtYkFpcndheUdyYWRlIikpKSl7DQoJCQkJ
CQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0
TUJBaXJ3YXlHcmFkZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJtYkFpcndh
eUdyYWRlIikpOw0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMo
Ik1CQ29tbWVudHNEIikpew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9
bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0
VmFsdWUoIm1iQ29tbWVudHMiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52
YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm1iQ29tbWVudHMiKSkp
KXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdl
LnNldFRleHRNQkNvbW1lbnRzKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm1i
Q29tbWVudHMiKSk7DQoJCQkJfQ0KDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRh
aW5zKCJCT1NEIikpew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVs
bCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFs
dWUoImJvcyIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgiYm9zIikpKSl7DQoJCQkJCQlzYW1lUGF0
ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0Qk9TKGx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoImJvcyIpKTsNCgkJCQl9DQoNCgkJCQlpZiAo
YXR0ckxpc3QuY29udGFpbnMoIkNNVkQiKSl7DQoJCQkJCWlmKHByZXZMdW5n
Q0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgiY212SW5mZWN0aW9uIikpDQoJCQkJCQkJLmVx
dWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJj
bXZJbmZlY3Rpb24iKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJ
CQkJfQ0KCQkJCQlwYWdlLnNldFRleHRDTVYobHVuZ0NET3V0Y29tZS5nZXRW
YWx1ZSgiY212SW5mZWN0aW9uIikpOw0KCQkJCX0NCgkJCQlpZiAoYXR0ckxp
c3QuY29udGFpbnMoIkluZkQiKSkgew0KCQkJCQlpZihwcmV2THVuZ0NET3V0
Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoIm90aGVySW5mZWN0aW9uIikpDQoJCQkJCQkJLmVxdWFs
cyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJvdGhl
ckluZmVjdGlvbiIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJ
CQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dEluZihsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJvdGhlckluZmVjdGlvbiIpKTsNCgkJCQl9DQoJCQkJaWYgKGF0dHJM
aXN0LmNvbnRhaW5zKCJJbmZPcmdhbmlzbXNEIikpew0KCQkJCQlpZihwcmV2
THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZk9yZ2FuaXNtcyIpKQ0KCQkJCQkJ
CS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiaW5mT3JnYW5pc21zIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7
DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0SW5mT3JnYW5pc21zKGx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoImluZk9yZ2FuaXNtcyIpKTsNCgkJCQl9DQoJ
CQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJDb21wRCIpKXsNCgkJCQkJaWYo
cHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHBy
ZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjb21wbGljYXRpb24iKSkNCgkJ
CQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0
VmFsdWUoImNvbXBsaWNhdGlvbiIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZh
bHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dENvbXAobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgiY29tcGxpY2F0aW9uIikpOw0KCQkJCX0NCgkJCQlp
ZiAoYXR0ckxpc3QuY29udGFpbnMoIkNvbXBEZXNjRCIpKXsNCgkJCQkJaWYo
cHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHBy
ZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjb21wbGljYXRpb25EZXNjIikp
DQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21l
LmdldFZhbHVlKCJjb21wbGljYXRpb25EZXNjIikpKSl7DQoJCQkJCQlzYW1l
UGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0Q29tcERl
c2MobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY29tcGxpY2F0aW9uRGVzYyIp
KTsJCQkJDQoJCQkJfQ0KDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJB
ZG1pdHRlZEQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxs
ICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiaG9zcGl0YWxpemF0aW9uIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcu
dmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJob3NwaXRhbGl6YXRp
b24iKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJ
CQlwYWdlLnNldFRleHRBZG1pdHRlZChsdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJob3NwaXRhbGl6YXRpb24iKSk7CQkJCQ0KCQkJCX0NCgkJCQkNCgkJCQlp
ZiAoYXR0ckxpc3QuY29udGFpbnMoIlN1bW1hcnlDb21tZW50c0QiKSl7DQoJ
CQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFs
dWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgic3VtbWFyeUNvbW1l
bnRzIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJzdW1tYXJ5Q29tbWVudHMiKSkpKXsNCgkJCQkJ
CXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRT
dW1tYXJ5Q29tbWVudHMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgic3VtbWFy
eUNvbW1lbnRzIikpOwkJCQkNCgkJCQl9DQoJCQkJDQoJCQkJaWYgKGF0dHJM
aXN0LmNvbnRhaW5zKCJEb25vckNNVklnR0QiKSl7CQ0KCQkJCQlpZihwcmV2
THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoImRvbm9yQ01WSWdHIikpDQoJCQkJCQkJ
LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJkb25vckNNVklnRyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K
CQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dEluZlRoZXJhcHkobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgiZG9ub3JDTVZJZ0ciKSk7CQkJCQ0KCQkJCX0NCgkJ
CQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkRvbm9yQ01WSWdHRGF0ZUQiKSl7
DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcu
dmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZG9ub3JDTVZJ
Z0dEYXRlIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJkb25vckNNVklnR0RhdGUiKSkpKXsNCgkJ
CQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRl
eHREb25vckNNVklnR0RhdGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZG9u
b3JDTVZJZ0dEYXRlIikpOwkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3Qu
Y29udGFpbnMoIkRvbm9yQ01WSWdNRCIpKXsNCgkJCQkJaWYocHJldkx1bmdD
RE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJkb25vckNNVklnTSIpKQ0KCQkJCQkJCS5lcXVh
bHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZG9u
b3JDTVZJZ00iKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJ
fQ0KCQkJCQlwYWdlLnNldFRleHREb25vckNNVklnTShsdW5nQ0RPdXRjb21l
LmdldFZhbHVlKCJkb25vckNNVklnTSIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlm
IChhdHRyTGlzdC5jb250YWlucygiRG9ub3JDTVZJZ01EYXRlRCIpKXsNCgkJ
CQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1
ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkb25vckNNVklnTURh
dGUiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91
dGNvbWUuZ2V0VmFsdWUoImRvbm9yQ01WSWdNRGF0ZSIpKSkpew0KCQkJCQkJ
c2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dERv
bm9yQ01WSWdNRGF0ZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkb25vckNN
VklnTURhdGUiKSk7CQkJCQ0KCQkJCX0NCg0KCQkJCWlmIChhdHRyTGlzdC5j
b250YWlucygiUHJlVHhDTVZJZ0dEIikpewkJDQoJCQkJCWlmKHByZXZMdW5n
Q0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgicHJlVHhDTVZJZ0ciKSkNCgkJCQkJCQkuZXF1
YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBy
ZVR4Q01WSWdHIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJ
CX0NCgkJCQkJcGFnZS5zZXRUZXh0UHJlVHhDTVZJZ0cobHVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgicHJlVHhDTVZJZ0ciKSk7DQoJCQkJfQ0KCQkJCWlmIChh
dHRyTGlzdC5jb250YWlucygiUHJlVHhDTVZJZ0dEYXRlRCIpKXsJCQ0KCQkJ
CQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVl
T2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInByZVR4Q01WSWdHRGF0
ZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgicHJlVHhDTVZJZ0dEYXRlIikpKSl7DQoJCQkJCQlz
YW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0UHJl
VHhDTVZJZ0dEYXRlKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInByZVR4Q01W
SWdHRGF0ZSIpKTsNCgkJCQl9DQoJCQkJDQoJCQkJaWYgKGF0dHJMaXN0LmNv
bnRhaW5zKCJQcmVUeENNVklnTUQiKSl7CQ0KCQkJCQlpZihwcmV2THVuZ0NE
T3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91
dGNvbWUuZ2V0VmFsdWUoInByZVR4Q01WSWdNIikpDQoJCQkJCQkJLmVxdWFs
cyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwcmVU
eENNVklnTSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9
DQoJCQkJCXBhZ2Uuc2V0VGV4dFByZVR4Q01WSWdNKGx1bmdDRE91dGNvbWUu
Z2V0VmFsdWUoInByZVR4Q01WSWdNIikpOw0KCQkJCX0NCgkJCQlpZiAoYXR0
ckxpc3QuY29udGFpbnMoIlByZVR4Q01WSWdNRGF0ZUQiKSl7CQkNCgkJCQkJ
aWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9m
KHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwcmVUeENNVklnTURhdGUi
KSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoInByZVR4Q01WSWdNRGF0ZSIpKSkpew0KCQkJCQkJc2Ft
ZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dFByZVR4
Q01WSWdNRGF0ZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwcmVUeENNVkln
TURhdGUiKSk7DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygi
QkFMRCIpKSB7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYm
ICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
YmFsIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJiYWwiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBm
YWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRCQUwobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgiYmFsIikpOw0KCQkJCQkNCgkJCQl9DQoJCQkJaWYg
KGF0dHJMaXN0LmNvbnRhaW5zKCJCQUxEYXRlRCIpKSB7DQoJCQkJCWlmKHBy
ZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2
THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFsRGF0ZSIpKQ0KCQkJCQkJCS5l
cXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
YmFsRGF0ZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9
DQoJCQkJCXBhZ2Uuc2V0VGV4dEJBTERhdGUobHVuZ0NET3V0Y29tZS5nZXRW
YWx1ZSgiYmFsRGF0ZSIpKTsNCgkJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRy
TGlzdC5jb250YWlucygiQkFMQ3VsdHVyZUQiKSkgew0KCQkJCQlpZihwcmV2
THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhbENlbGxDdWx0dXJlIikpDQoJCQkJ
CQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJiYWxDZWxsQ3VsdHVyZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZh
bHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dEJBTEN1bHR1cmUobHVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFsQ2VsbEN1bHR1cmUiKSk7DQoJCQkJ
CQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkJBTE9yZ2Fu
aXNtc0QiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYm
ICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
YmFsT3JnYW5pc21zIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVP
ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiYWxPcmdhbmlzbXMiKSkpKXsN
CgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNl
dFRleHRCQUxPcmdhbmlzbXMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFs
T3JnYW5pc21zIikpOw0KCQkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0
LmNvbnRhaW5zKCJCQUxJQ0QiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRj
b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgiYmFsSUMiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52
YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhbElDIikpKSl7DQoJ
CQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRU
ZXh0QkFMSUMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFsSUMiKSk7DQoJ
CQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkJBTFBD
RCIpKSB7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFT
dHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFs
UEMiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91
dGNvbWUuZ2V0VmFsdWUoImJhbFBDIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0g
ZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0QkFMUEMobHVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgiYmFsUEMiKSk7DQoJCQkJCQ0KCQkJCX0NCgkJ
CQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkZ1bmN0aW9uVGVzdEQiKSl7DQoJ
CQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFs
dWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZnVuY3Rpb25UZXN0
IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRj
b21lLmdldFZhbHVlKCJmdW5jdGlvblRlc3QiKSkpKXsNCgkJCQkJCXNhbWVQ
YXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRGdW5jdGlv
blRlc3QobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZnVuY3Rpb25UZXN0Iikp
Ow0KCQkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJC
ZXN0RkVWMUQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxs
ICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiYmVzdEZFVjEiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9m
KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJlc3RGRVYxIikpKSl7DQoJCQkJ
CQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0
QmVzdEZFVjEobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmVzdEZFVjEiKSk7
DQoJCQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkZF
VjFEIikpew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAh
U3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIkZF
VjEiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91
dGNvbWUuZ2V0VmFsdWUoIkZFVjEiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBm
YWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRGRVYxKGx1bmdDRE91
dGNvbWUuZ2V0VmFsdWUoIkZFVjEiKSk7DQoJCQkJCQ0KCQkJCX0NCgkJCQlp
ZiAoYXR0ckxpc3QuY29udGFpbnMoIkRlbHRhRkVWMUQiKSl7DQoJCQkJCWlm
KHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihw
cmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZGVsdGFGRVYxIikpDQoJCQkJ
CQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJkZWx0YUZFVjEiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsN
CgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHREZWx0YUZFVjEobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgiZGVsdGFGRVYxIikpOw0KCQkJCQkNCgkJCQl9DQoJ
CQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJGVkNEIikpew0KCQkJCQlpZihw
cmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJl
dkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIkZWQyIpKQ0KCQkJCQkJCS5lcXVh
bHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiRlZD
IikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJ
cGFnZS5zZXRUZXh0RlZDKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIkZWQyIp
KTsNCgkJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygi
TzJTYXREIikpew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAm
JiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo
Im8yU2F0IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJvMlNhdCIpKSkpew0KCQkJCQkJc2FtZVBh
dCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dE8yU2F0KGx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm8yU2F0IikpOw0KCQkJCQkNCgkJCQl9
DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJSZWpEIikpIHsNCgkJCQkJ
aWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9m
KHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWoiKSkNCgkJCQkJCQku
ZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo
InJlaiIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJ
CQkJCXBhZ2Uuc2V0VGV4dFJlaihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJy
ZWoiKSk7DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUmVq
VGhEIikpIHsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYg
IVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJy
ZWpUaCIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgicmVqVGgiKSkpKXsNCgkJCQkJCXNhbWVQYXQg
PSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRSZWpUaChsdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJyZWpUaCIpKTsNCgkJCQkJDQoJCQkJfQ0K
DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJXQkNDb3VudEQiKSl7DQoJ
CQkJCWlmKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIndiY0NvdW50IikhPW51
bGwgICYmICFsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ3YmNDb3VudCIpLnRy
aW0oKS5lcXVhbHMoIiIpKXsNCgkJCQkJCWlmKCFTdHJpbmcudmFsdWVPZihs
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ3YmNDb3VudCIpKS5zdGFydHNXaXRo
KCItMSIpKXsNCgkJCQkJCQlwYWdlLnNldFRleHRXQkNDb3VudChsdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJ3YmNDb3VudCIpKTsNCgkJCQkJCX0NCgkJCQkJ
CWlmKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIndi
Y0NvdW50IikpLnN0YXJ0c1dpdGgoIi0xIikpew0KCQkJCQkJCXBhZ2Uuc2V0
VGV4dFdCQ0NvdW50KCIoIitsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ3YmND
b3VudCIpKyIpIik7DQoJCQkJCQl9DQoJCQkJCX1lbHNlew0KCQkJCQkJcGFn
ZS5zZXRUZXh0V0JDQ291bnQoIiIpOw0KCQkJCQl9DQoJCQkJCWlmKHByZXZM
dW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgid2JjQ291bnQiKSkNCgkJCQkJCQkuZXF1
YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIndi
Y0NvdW50IikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0N
CgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJIR0JDb3VudEQi
KSl7DQoJCQkJCWlmKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImhnYkNvdW50
IikhPW51bGwgICYmICFsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJoZ2JDb3Vu
dCIpLnRyaW0oKS5lcXVhbHMoIiIpKXsgDQoJCQkJCQlpZighU3RyaW5nLnZh
bHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaGdiQ291bnQiKSkuc3Rh
cnRzV2l0aCgiLTEiKSl7DQoJCQkJCQkJcGFnZS5zZXRUZXh0SEdCQ291bnQo
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaGdiQ291bnQiKSk7DQoJCQkJCQl9
DQoJCQkJCQlpZihTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJoZ2JDb3VudCIpKS5zdGFydHNXaXRoKCItMSIpKXsNCgkJCQkJCQlw
YWdlLnNldFRleHRIR0JDb3VudCgiKCIrbHVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiaGdiQ291bnQiKSsiKSIpOw0KCQkJCQkJfQ0KCQkJCQl9ZWxzZXsNCgkJ
CQkJCXBhZ2Uuc2V0VGV4dEhHQkNvdW50KCIiKTsNCgkJCQkJfQ0KCQkJCQlp
ZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2Yo
cHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImhnYkNvdW50IikpDQoJCQkJ
CQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJoZ2JDb3VudCIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K
CQkJCQl9DQoJCQkJCS8vcGFnZS5zZXRUZXh0SEdCQ291bnQobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgiaGdiQ291bnQiKSk7DQoJCQkJfQ0KCQkJCWlmIChh
dHRyTGlzdC5jb250YWlucygiUGxhdGVsZXRDb3VudEQiKSl7DQoJCQkJCWlm
KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBsYXRlbGV0Q291bnQiKSE9bnVs
bCAgJiYgIWx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBsYXRlbGV0Q291bnQi
KS50cmltKCkuZXF1YWxzKCIiKSl7IA0KCQkJCQkJaWYoIVN0cmluZy52YWx1
ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBsYXRlbGV0Q291bnQiKSku
c3RhcnRzV2l0aCgiLTEiKSl7DQoJCQkJCQkJcGFnZS5zZXRUZXh0UGxhdGVs
ZXRDb3VudChsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwbGF0ZWxldENvdW50
IikpOw0KCQkJCQkJfQ0KCQkJCQkJaWYoU3RyaW5nLnZhbHVlT2YobHVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgicGxhdGVsZXRDb3VudCIpKS5zdGFydHNXaXRo
KCItMSIpKXsNCgkJCQkJCQlwYWdlLnNldFRleHRQbGF0ZWxldENvdW50KCIo
IitsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwbGF0ZWxldENvdW50IikrIiki
KTsNCgkJCQkJCX0NCgkJCQkJfWVsc2V7DQoJCQkJCQlwYWdlLnNldFRleHRQ
bGF0ZWxldENvdW50KCIiKTsNCgkJCQkJfQ0KCQkJCQkNCgkJCQkJaWYocHJl
dkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZM
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwbGF0ZWxldENvdW50IikpDQoJCQkJ
CQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJwbGF0ZWxldENvdW50IikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFs
c2U7DQoJCQkJCX0NCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5z
KCJCYW5kc0QiKSl7CQkJCQ0KCQkJCQlpZihsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJiYW5kcyIpIT1udWxsICAmJiAhbHVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiYmFuZHMiKS50cmltKCkuZXF1YWxzKCIiKSl7IA0KCQkJCQkJaWYoRG91
YmxlLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFuZHMiKSku
ZG91YmxlVmFsdWUoKT4wLjApew0KCQkJCQkgICAgICAgcGFnZS5zZXRUZXh0
QmFuZHMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFuZHMiKSk7DQoJCQkJ
CQl9DQoJCQkJCQlpZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiYW5kcyIp
IT1udWxsICYmIA0KCQkJCQkJCQlEb3VibGUudmFsdWVPZihsdW5nQ0RPdXRj
b21lLmdldFZhbHVlKCJiYW5kcyIpKS5kb3VibGVWYWx1ZSgpPDAuMCl7DQoJ
CQkJCQkgICBwYWdlLnNldFRleHRCYW5kcygiKCIrbHVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgiYmFuZHMiKSsiKSIpOw0KCQkJCQkJfQ0KCQkJCQl9ZWxzZXsN
CgkJCQkJCXBhZ2Uuc2V0VGV4dEJhbmRzKCIiKTsNCgkJCQkJfQ0KCQkJCQlp
ZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2Yo
cHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhbmRzIikpDQoJCQkJCQkJ
LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJiYW5kcyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9
CQkJCQkNCgkJCQl9DQoJCQkJDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5z
KCJDcmVhdGluaW5lRCIpKXsJCQkJDQoJCQkJCWlmKGx1bmdDRE91dGNvbWUu
Z2V0VmFsdWUoImNyZWF0aW5pbmUiKSE9bnVsbCAgJiYgIWx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoImNyZWF0aW5pbmUiKS50cmltKCkuZXF1YWxzKCIiKSl7
IA0KCQkJCQkJaWYoRG91YmxlLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRW
YWx1ZSgiY3JlYXRpbmluZSIpKS5kb3VibGVWYWx1ZSgpPjAuMCl7DQoJCQkJ
CSAgICAgICBwYWdlLnNldFRleHRDcmVhdGluaW5lKGx1bmdDRE91dGNvbWUu
Z2V0VmFsdWUoImNyZWF0aW5pbmUiKSk7DQoJCQkJCQl9DQoJCQkJCQlpZihs
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjcmVhdGluaW5lIikhPW51bGwgJiYg
DQoJCQkJCQkJCURvdWJsZS52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFs
dWUoImNyZWF0aW5pbmUiKSkuZG91YmxlVmFsdWUoKTwwLjApew0KCQkJCQkJ
ICAgcGFnZS5zZXRUZXh0Q3JlYXRpbmluZSgiKCIrbHVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgiY3JlYXRpbmluZSIpKyIpIik7DQoJCQkJCQl9DQoJCQkJCX1l
bHNlew0KCQkJCQkJcGFnZS5zZXRUZXh0Q3JlYXRpbmluZSgiIik7DQoJCQkJ
CX0NCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmlu
Zy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjcmVhdGlu
aW5lIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJjcmVhdGluaW5lIikpKSl7DQoJCQkJCQlzYW1l
UGF0ID0gZmFsc2U7DQoJCQkJCX0JCQkJDQoJCQkJfQ0KCQkJCQ0KCQkJCWlm
IChhdHRyTGlzdC5jb250YWlucygiQ3JlYXRpbmluZURhdGVEIikpewkJCQkN
CgkJCQkJcGFnZS5zZXRUZXh0Q3JlYXRpbmluZURhdGUobHVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgiY3JlYXRpbmluZURhdGUiKSk7CQkJCQ0KCQkJCQlpZihw
cmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJl
dkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNyZWF0aW5pbmVEYXRlIikpDQoJ
CQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJjcmVhdGluaW5lRGF0ZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9
IGZhbHNlOw0KCQkJCQl9CQkJCQ0KCQkJCX0NCgkJCQkNCgkJCQlpZiAoYXR0
ckxpc3QuY29udGFpbnMoIkJVTkQiKSl7CQkJCQ0KCQkJCQlpZihsdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJidW4iKSE9bnVsbCAgJiYgIWx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoImJ1biIpLnRyaW0oKS5lcXVhbHMoIiIpKXsgDQoJCQkJ
CQlpZihEb3VibGUudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJi
dW4iKSkuZG91YmxlVmFsdWUoKT4wLjApew0KCQkJCQkgICAgICAgcGFnZS5z
ZXRUZXh0Q3JlYXRpbmluZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJidW4i
KSk7DQoJCQkJCQl9DQoJCQkJCQlpZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJidW4iKSE9bnVsbCAmJiANCgkJCQkJCQkJRG91YmxlLnZhbHVlT2YobHVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgiYnVuIikpLmRvdWJsZVZhbHVlKCk8MC4w
KXsNCgkJCQkJCSAgIHBhZ2Uuc2V0VGV4dENyZWF0aW5pbmUoIigiK2x1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoImJ1biIpKyIpIik7DQoJCQkJCQl9DQoJCQkJ
CX1lbHNlew0KCQkJCQkJcGFnZS5zZXRUZXh0Q3JlYXRpbmluZSgiIik7DQoJ
CQkJCX0NCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0
cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJidW4i
KSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoImJ1biIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNl
Ow0KCQkJCQl9CQkJCQ0KCQkJCX0NCgkJCQkNCgkJCQlpZiAoYXR0ckxpc3Qu
Y29udGFpbnMoIkJVTkRhdGVEIikpewkJCQkNCgkJCQkJcGFnZS5zZXRUZXh0
Q3JlYXRpbmluZURhdGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYnVuRGF0
ZSIpKTsJCQkJDQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYm
ICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
YnVuRGF0ZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgiYnVuRGF0ZSIpKSkpew0KCQkJCQkJc2Ft
ZVBhdCA9IGZhbHNlOw0KCQkJCQl9CQkJCQ0KCQkJCX0NCgkJCQkNCgkJCQlp
ZiAoYXR0ckxpc3QuY29udGFpbnMoIkJBTENvbW1lbnRzRCIpKXsNCgkJCQkJ
cGFnZS5zZXRUZXh0QkFMQ29tbWVudHMobHVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiYmFsQ29tbWVudHMiKSk7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21l
IT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgiYmFsQ29tbWVudHMiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmlu
Zy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhbENvbW1lbnRz
IikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQl9
DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJJbmZTY29yZUQiKSl7DQoJ
CQkJCXBhZ2Uuc2V0VGV4dEluZlNjb3JlKGx1bmdDRE91dGNvbWUuZ2V0VmFs
dWUoImluZmVjdGlvblNjb3JlIikpOw0KCQkJCQlpZihwcmV2THVuZ0NET3V0
Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoImluZmVjdGlvblNjb3JlIikpDQoJCQkJCQkJLmVxdWFs
cyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmZl
Y3Rpb25TY29yZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJ
CQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiSW5mU2Nv
cmVDb21tZW50c0QiKSkgew0KCQkJCQlwYWdlLnNldFRleHRJbmZTY29yZUNv
bW1lbnRzKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZmVjdGlvblNjb3Jl
Q29tbWVudHMiKSk7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxs
ICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiaW5mZWN0aW9uU2NvcmVDb21tZW50cyIpKQ0KCQkJCQkJCS5lcXVhbHMo
U3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5mZWN0
aW9uU2NvcmVDb21tZW50cyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNl
Ow0KCQkJCQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygi
SW5mQ29tbWVudHNEIikpIHsNCgkJCQkJcGFnZS5zZXRUZXh0SW5mQ29tbWVu
dHMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5mZWN0aW9uQ29tbWVudHMi
KSk7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJp
bmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5mZWN0
aW9uQ29tbWVudHMiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9m
KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZmVjdGlvbkNvbW1lbnRzIikp
KSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQl9DQoJ
CQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJDb21wQ29tbWVudHNEIikpIHsN
CgkJCQkJcGFnZS5zZXRUZXh0Q29tcENvbW1lbnRzKGx1bmdDRE91dGNvbWUu
Z2V0VmFsdWUoImNvbXBDb21tZW50cyIpKTsNCgkJCQkJaWYocHJldkx1bmdD
RE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJjb21wQ29tbWVudHMiKSkNCgkJCQkJCQkuZXF1
YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNv
bXBDb21tZW50cyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJ
CQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiTWVkQ29t
bWVudHNEIikpew0KCQkJCQlwYWdlLnNldFRleHRNZWRDb21tZW50cyhsdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJtZWRDb21tZW50cyIpKTsNCgkJCQkJaWYo
cHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHBy
ZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJtZWRDb21tZW50cyIpKQ0KCQkJ
CQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRW
YWx1ZSgibWVkQ29tbWVudHMiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxz
ZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMo
IkZuQ29tbWVudHNEIikpIHsNCgkJCQkJcGFnZS5zZXRUZXh0Rm5Db21tZW50
cyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJmdW5jdGlvbkNvbW1lbnRzIikp
Ow0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5n
LnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImZ1bmN0aW9u
Q29tbWVudHMiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoImZ1bmN0aW9uQ29tbWVudHMiKSkpKXsN
CgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlp
ZiAoYXR0ckxpc3QuY29udGFpbnMoIlJlamVjdGlvblRyZWF0bWVudHNEIikp
ew0KCQkJCQlwYWdlLnNldFRleHRSZWplY3Rpb25UcmVhdG1lbnRzKGx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoInJlamVjdGlvblRyZWF0bWVudHMiKSk7DQoJ
CQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFs
dWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVqZWN0aW9uVHJl
YXRtZW50cyIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgicmVqZWN0aW9uVHJlYXRtZW50cyIpKSkp
ew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJ
CQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUmVqVGhSZWFzb25zRCIp
KXsNCgkJCQkJcGFnZS5zZXRUZXh0UmVqVGhSZWFzb25zKGx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoInJlalRoUmVhc29ucyIpKTsNCgkJCQkJaWYocHJldkx1
bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJyZWpUaFJlYXNvbnMiKSkNCgkJCQkJCQku
ZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo
InJlalRoUmVhc29ucyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K
CQkJCQl9DQoJCQkJfQ0KDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJJ
bmZUaGVyYXB5RCIpKSB7DQoJCQkJCXBhZ2Uuc2V0VGV4dEluZlRoZXJhcHko
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5mVGhlcmFweSIpKTsNCgkJCQkJ
aWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9m
KHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmZUaGVyYXB5IikpDQoJ
CQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJpbmZUaGVyYXB5IikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFs
c2U7DQoJCQkJCX0NCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5z
KCJEcmF3RCIpKSB7DQoJCQkJCXBhZ2Uuc2V0VGV4dERyYXcobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgiZHJhdyIpKTsNCgkJCQkJaWYocHJldkx1bmdDRE91
dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRj
b21lLmdldFZhbHVlKCJkcmF3IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcu
dmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkcmF3IikpKSl7DQoJ
CQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQl9DQoNCgkJCQlp
ZiAoYXR0ckxpc3QuY29udGFpbnMoIkNTRCIpKXsNCgkJCQkJcGFnZS5zZXRU
ZXh0Q1MobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY2xpbmljYWxTeW1wdG9t
cyIpKTsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0
cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjbGlu
aWNhbFN5bXB0b21zIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVP
ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjbGluaWNhbFN5bXB0b21zIikp
KSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQl9DQoJ
CQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJJbmRUaGVyYXB5RCIpKXsNCgkJ
CQkJcGFnZS5zZXRUZXh0SW5kVGhlcmFweShsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJpbmRUaGVyYXB5IikpOw0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29t
ZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUu
Z2V0VmFsdWUoImluZFRoZXJhcHkiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmlu
Zy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZFRoZXJhcHki
KSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0N
CgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkluZFRoZXJhcHlZTkQiKSl7
DQoJCQkJCXBhZ2Uuc2V0VGV4dEluZFRoZXJhcHlZTihsdW5nQ0RPdXRjb21l
LmdldFZhbHVlKCJpbmRUaGVyYXB5WU4iKSk7DQoJCQkJCWlmKHByZXZMdW5n
Q0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweVlOIikpDQoJCQkJCQkJLmVx
dWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJp
bmRUaGVyYXB5WU4iKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJ
CQkJfQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkluZFRo
ZXJhcHlDb21wRGF0ZUQiKSl7DQoJCQkJCXBhZ2Uuc2V0VGV4dEluZFRoZXJh
cHlDb21wRGF0ZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmRUaGVyYXB5
Q29tcGxldGlvbkRhdGUiKSk7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21l
IT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgiaW5kVGhlcmFweUNvbXBsZXRpb25EYXRlIikpDQoJCQkJCQkJ
LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJpbmRUaGVyYXB5Q29tcGxldGlvbkRhdGUiKSkpKXsNCgkJCQkJCXNhbWVQ
YXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3Qu
Y29udGFpbnMoIkluZFRoZXJhcHlOb09mRG9zZXNEIikpew0KCQkJCQlwYWdl
LnNldFRleHRJbmRUaGVyYXB5Tm9PZkRvc2VzKGx1bmdDRE91dGNvbWUuZ2V0
VmFsdWUoImluZFRoZXJhcHlOb09mRG9zZXMiKSk7DQoJCQkJCWlmKHByZXZM
dW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweU5vT2ZEb3NlcyIpKQ0K
CQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgiaW5kVGhlcmFweU5vT2ZEb3NlcyIpKSkpew0KCQkJCQkJc2Ft
ZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlz
dC5jb250YWlucygiSW5kVGhlcmFweUFtdFBlckRvc2VEIikpew0KCQkJCQlw
YWdlLnNldFRleHRJbmRUaGVyYXB5QW10UGVyRG9zZShsdW5nQ0RPdXRjb21l
LmdldFZhbHVlKCJpbmRUaGVyYXB5QW10UGVyRG9zZSIpKTsNCgkJCQkJaWYo
cHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHBy
ZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmRUaGVyYXB5QW10UGVyRG9z
ZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweUFtdFBlckRvc2UiKSkpKXsNCgkJ
CQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlpZiAo
YXR0ckxpc3QuY29udGFpbnMoIkluZFRoZXJhcHlDb21tZW50c0QiKSl7DQoJ
CQkJCXBhZ2Uuc2V0VGV4dEluZFRoZXJhcHlDb21tZW50cyhsdW5nQ0RPdXRj
b21lLmdldFZhbHVlKCJpbmRUaGVyYXB5Q29tbWVudHMiKSk7DQoJCQkJCWlm
KHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihw
cmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweUNvbW1lbnRz
IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRj
b21lLmdldFZhbHVlKCJpbmRUaGVyYXB5Q29tbWVudHMiKSkpKXsNCgkJCQkJ
CXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0NCg0KCQkJCQ0KCQkJ
CQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiSGVtYXRvbG9neUQiKSl7
DQoJCQkJCXBhZ2Uuc2V0VGV4dEhlbWF0b2xvZ3kobHVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgiaGVtYXRvbG9neSIpKTsNCgkJCQkJaWYocHJldkx1bmdDRE91
dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRj
b21lLmdldFZhbHVlKCJoZW1hdG9sb2d5IikpDQoJCQkJCQkJLmVxdWFscyhT
dHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJoZW1hdG9s
b2d5IikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJ
CQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJSZWNlcENNVklnR0Qi
KSl7DQoJCQkJCXBhZ2Uuc2V0VGV4dFJlY2VwQ01WSWdHKGx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoInJlY2VwQ01WSWdHIikpOw0KCQkJCQlpZihwcmV2THVu
Z0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoInJlY2VwQ01WSWdHIikpDQoJCQkJCQkJLmVx
dWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJy
ZWNlcENNVklnRyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJ
CQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUmVjZXBD
TVZEaWFnRGF0ZUQiKSl7DQoJCQkJCXBhZ2Uuc2V0VGV4dFJlY2VwQ01WRGlh
Z0RhdGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVjZXBDTVZEaWFnRGF0
ZSIpKTsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0
cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWNl
cENNVkRpYWdEYXRlIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVP
ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWNlcENNVkRpYWdEYXRlIikp
KSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQl9DQoJ
CQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJSZWNlcENNVkluZlR5cGVEIikp
IHsNCgkJCQkJcGFnZS5zZXRUZXh0UmVjZXBDTVZJbmZUeXBlKGx1bmdDRE91
dGNvbWUuZ2V0VmFsdWUoInJlY2VwQ01WSW5mVHlwZSIpKTsNCgkJCQkJaWYo
cHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHBy
ZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWNlcENNVkluZlR5cGUiKSkN
CgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUu
Z2V0VmFsdWUoInJlY2VwQ01WSW5mVHlwZSIpKSkpew0KCQkJCQkJc2FtZVBh
dCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5j
b250YWlucygiUmVjZXBpZW50Q01WTWV0aG9kRCIpKXsNCgkJCQkJcGFnZS5z
ZXRUZXh0UmVjZXBpZW50Q01WTWV0aG9kKGx1bmdDRE91dGNvbWUuZ2V0VmFs
dWUoInJlY2VwQ01WTWV0aG9kIikpOw0KCQkJCQlpZihwcmV2THVuZ0NET3V0
Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoInJlY2VwQ01WTWV0aG9kIikpDQoJCQkJCQkJLmVxdWFs
cyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWNl
cENNVk1ldGhvZCIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJ
CQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUmVjZXBp
ZW50Q01WT3JnYW5EIikpew0KCQkJCQlwYWdlLnNldFRleHRSZWNlcGllbnRD
TVZPcmdhbihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWNlcENNVk9yZ2Fu
IikpOw0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3Ry
aW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlY2Vw
Q01WT3JnYW4iKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlY2VwQ01WT3JnYW4iKSkpKXsNCgkJ
CQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlpZiAo
YXR0ckxpc3QuY29udGFpbnMoIkRvbm9yQ01WSWdHRCIpKXsNCgkJCQkJcGFn
ZS5zZXRUZXh0RG9ub3JDTVZJZ0cobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
ZG9ub3JDTVZJZ0ciKSk7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1u
dWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRW
YWx1ZSgiZG9ub3JDTVZJZ0ciKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52
YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImRvbm9yQ01WSWdHIikp
KSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQl9DQoJ
CQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJCaW9wc3lIaXN0b3J5RCIpKXsN
CgkJCQkJcGFnZS5zZXRUZXh0QmlvcHN5SGlzdG9yeShsdW5nQ0RPdXRjb21l
LmdldFZhbHVlKCJiaW9wc3lIaXN0b3J5IikpOw0KCQkJCQlpZihwcmV2THVu
Z0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoImJpb3BzeUhpc3RvcnkiKSkNCgkJCQkJCQku
ZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo
ImJpb3BzeUhpc3RvcnkiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsN
CgkJCQkJfQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlJl
amVjdGlvbkVwaXNvZGVDb21tZW50c0QiKSl7DQoJCQkJCXBhZ2Uuc2V0VGV4
dFJlamVjdGlvbkVwaXNvZGVDb21tZW50cyhsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJyZWplY3Rpb25FcGlzb2RlQ29tbWVudHMiKSk7DQoJCQkJCWlmKHBy
ZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2
THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVqZWN0aW9uRXBpc29kZUNvbW1l
bnRzIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJyZWplY3Rpb25FcGlzb2RlQ29tbWVudHMiKSkp
KXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0NCgkJ
CQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlJlalRyZWF0bWVudEhpc3RvcnlE
Iikpew0KCQkJCQlwYWdlLnNldFRleHRSZWpUcmVhdG1lbnRIaXN0b3J5KGx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlalRyZWF0bWVudEhpc3RvcnkiKSk7
DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcu
dmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVqVHJlYXRt
ZW50SGlzdG9yeSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2Yo
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVqVHJlYXRtZW50SGlzdG9yeSIp
KSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJfQ0K
CQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiU3Rlcm9pZHNEIikpew0KCQkJ
CQlwYWdlLnNldFRleHRTdGVyb2lkcyhsdW5nQ0RPdXRjb21lLmdldFN0ZXJv
aWRzKCkpOw0KCQkJCQlzcGFuVGFnID0gcGFnZS5nZXRFbGVtZW50QnlJZCgi
U3Rlcm9pZHMiKTsNCgkJCQkJY2VsbCA9IChIVE1MVGFibGVDZWxsRWxlbWVu
dCkgc3BhblRhZy5nZXRQYXJlbnROb2RlKCk7DQoJCQkJCWNlbGwuc2V0QXR0
cmlidXRlKCJ0aXRsZSIsZW5jSWQpOw0KCQkJCQlpZihwcmV2THVuZ0NET3V0
Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNv
bWUuZ2V0U3Rlcm9pZHMoKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1
ZU9mKGx1bmdDRE91dGNvbWUuZ2V0U3Rlcm9pZHMoKSkpKXsNCgkJCQkJCXNh
bWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxp
c3QuY29udGFpbnMoIlByZWRuaXNvbmVEIikpew0KCQkJCQlpZihwcmV2THVu
Z0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoInByZWRuaXNvbmUiKSkNCgkJCQkJCQkuZXF1
YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBy
ZWRuaXNvbmUiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJ
fQ0KCQkJCQlwYWdlLnNldFRleHRQcmVkbmlzb25lKGx1bmdDRE91dGNvbWUu
Z2V0VmFsdWUoInByZWRuaXNvbmUiKSk7CQkJCQ0KCQkJCX0NCgkJCQlpZiAo
YXR0ckxpc3QuY29udGFpbnMoIlByZWRuaXNvbG9uZUQiKSl7DQoJCQkJCWlm
KHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihw
cmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicHJlZG5pc29sb25lIikpDQoJ
CQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJwcmVkbmlzb2xvbmUiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBm
YWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRQcmVkbmlzb2xvbmUo
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicHJlZG5pc29sb25lIikpOwkJCQkN
CgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJJbmhTdGVyb2lk
c0QiKSkgew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAh
U3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImlu
aFN0ZXJvaWRzIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihs
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmhTdGVyb2lkcyIpKSkpew0KCQkJ
CQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4
dEluaFN0ZXJvaWRzKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluaFN0ZXJv
aWRzIikpOwkJCQkNCgkJCQl9DQoNCgkJCQlpZiAoYXR0ckxpc3QuY29udGFp
bnMoIkN5Y2xvc3BvcmluRCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNv
bWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21l
LmdldFZhbHVlKCJjeWNsb3Nwb3JpbiIpKQ0KCQkJCQkJCS5lcXVhbHMoU3Ry
aW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY3ljbG9zcG9y
aW4iKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJ
CQlwYWdlLnNldFRleHRDeWNsb3Nwb3JpbihsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJjeWNsb3Nwb3JpbiIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRy
TGlzdC5jb250YWlucygiVGFjcm9saW11c0QiKSl7DQoJCQkJCWlmKHByZXZM
dW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgidGFjcm9saW11cyIpKQ0KCQkJCQkJCS5l
cXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
dGFjcm9saW11cyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJ
CQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dFRhY3JvbGltdXMobHVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgidGFjcm9saW11cyIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlm
IChhdHRyTGlzdC5jb250YWlucygiQXphdGhpb3ByaW5lRCIpKXsNCgkJCQkJ
aWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9m
KHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJhemF0aGlvcHJpbmUiKSkN
CgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUu
Z2V0VmFsdWUoImF6YXRoaW9wcmluZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9
IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dEF6YXRoaW9wcmlu
ZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJhemF0aGlvcHJpbmUiKSk7CQkJ
CQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIk15Y29waGVu
b2xhdGVEIikpIHsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwg
JiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJteWNvcGhlbm9sYXRlIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFs
dWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJteWNvcGhlbm9sYXRlIikp
KSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFn
ZS5zZXRUZXh0TXljb3BoZW5vbGF0ZShsdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJteWNvcGhlbm9sYXRlIikpOwkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJM
aXN0LmNvbnRhaW5zKCJCYXNpbGl4aW1hYkQiKSl7DQoJCQkJCWlmKHByZXZM
dW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFzaWxpeGltYWIiKSkNCgkJCQkJCQku
ZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo
ImJhc2lsaXhpbWFiIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJ
CQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0QmFzaWxpeGltYWIobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgiYmFzaWxpeGltYWIiKSk7CQkJCQ0KCQkJCX0NCgkJ
CQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkRhY2x1emltYWJEIikpew0KCQkJ
CQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVl
T2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImRhY2x1emltYWIiKSkN
CgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUu
Z2V0VmFsdWUoImRhY2x1emltYWIiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBm
YWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHREYWNsdXppbWFiKGx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoImRhY2x1emltYWIiKSk7CQkJCQ0KCQkJ
CX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlNpcm9saW11c0QiKSl7
DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcu
dmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgic2lyb2xpbXVz
IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRj
b21lLmdldFZhbHVlKCJzaXJvbGltdXMiKSkpKXsNCgkJCQkJCXNhbWVQYXQg
PSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRTaXJvbGltdXMo
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgic2lyb2xpbXVzIikpOwkJCQkNCgkJ
CQl9DQoJCQkJDQoJCQkJLy8gYW50aW1pY3JvYmlhbHMgc3RhcnQNCgkJCQlp
ZiAoYXR0ckxpc3QuY29udGFpbnMoIkF6aXRocm9teWNpbkQiKSkgew0KCQkJ
CQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVl
T2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImF6aXRocm9teWNpbiIp
KQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgiYXppdGhyb215Y2luIikpKSl7DQoJCQkJCQlzYW1lUGF0
ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0QXppdGhyb215
Y2luKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImF6aXRocm9teWNpbiIpKTsJ
CQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiVE1YLVN1
bGZhRCIpKSB7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYm
ICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
dE1YU3VsZmEiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoInRNWFN1bGZhIikpKSl7DQoJCQkJCQlz
YW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0VE1Y
U3VsZmEobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidE1YU3VsZmEiKSk7CQkJ
CQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlRvYnJhbXlj
aW5EIikpIHsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYg
IVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0
b2JyYW15Y2luIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihs
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0b2JyYW15Y2luIikpKSl7DQoJCQkJ
CQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0
VG9icmFteWNpbihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0b2JyYW15Y2lu
IikpOwkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJH
YW5jaWNsb3ZpckQiKSkgew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9
bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0
VmFsdWUoImdhbmNpY2xvdmlyIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcu
dmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJnYW5jaWNsb3ZpciIp
KSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBh
Z2Uuc2V0VGV4dEdhbmNpY2xvdmlyKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo
ImdhbmNpY2xvdmlyIikpOwkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0
LmNvbnRhaW5zKCJWYWxnYW5jeWNsb3ZpckQiKSl7DQoJCQkJCWlmKHByZXZM
dW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgidmFsZ2FuY3ljbG92aXIiKSkNCgkJCQkJ
CQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFs
dWUoInZhbGdhbmN5Y2xvdmlyIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFs
c2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0VmFsZ2FuY3ljbG92aXIo
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidmFsZ2FuY3ljbG92aXIiKSk7CQkJ
CQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkl0cmFjb25h
em9sZUQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYm
ICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
aXRyYWNvbmF6b2xlIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVP
ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpdHJhY29uYXpvbGUiKSkpKXsN
CgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNl
dFRleHRJdHJhY29uYXpvbGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaXRy
YWNvbmF6b2xlIikpOwkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNv
bnRhaW5zKCJGbHVjb25hem9sZUQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RP
dXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgiZmx1Y29uYXpvbGUiKSkNCgkJCQkJCQkuZXF1YWxz
KFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImZsdWNv
bmF6b2xlIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0N
CgkJCQkJcGFnZS5zZXRUZXh0Rmx1Y29uYXpvbGUobHVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgiZmx1Y29uYXpvbGUiKSk7CQkJCQ0KCQkJCX0NCgkJCQlpZiAo
YXR0ckxpc3QuY29udGFpbnMoIlZvcmljb25hem9sZUQiKSl7DQoJCQkJCWlm
KHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihw
cmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidm9yaWNvbmF6b2xlIikpDQoJ
CQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJ2b3JpY29uYXpvbGUiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBm
YWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRWb3JpY29uYXpvbGUo
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidm9yaWNvbmF6b2xlIikpOwkJCQkN
CgkJCQl9DQoJCQkJLy8gCWFudGltaWNyb2JpYWxzIGVuZA0KCQkJCQ0KCQkJ
CWlmIChhdHRyTGlzdC5jb250YWlucygiT3RoZXJNZWRpY2F0aW9uRCIpKXsN
CgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52
YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJvdGhlck1lZGlj
YXRpb24iKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoIm90aGVyTWVkaWNhdGlvbiIpKSkpew0KCQkJ
CQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4
dE90aGVyTWVkaWNhdGlvbihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJvdGhl
ck1lZGljYXRpb24iKSk7CQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3Qu
Y29udGFpbnMoIlBBWFdlaWdodDFEIikpew0KCQkJCQlpZihwcmV2THVuZ0NE
T3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91
dGNvbWUuZ2V0VmFsdWUoInBheFdlaWdodDEiKSkNCgkJCQkJCQkuZXF1YWxz
KFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBheFdl
aWdodDEiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0K
CQkJCQlwYWdlLnNldFRleHRQQVhXZWlnaHQxKGx1bmdDRE91dGNvbWUuZ2V0
VmFsdWUoInBheFdlaWdodDEiKSk7CQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0
ckxpc3QuY29udGFpbnMoIlBBWFdlaWdodDJEIikpIHsNCgkJCQkJaWYocHJl
dkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZM
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwYXhXZWlnaHQyIikpDQoJCQkJCQkJ
LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJwYXhXZWlnaHQyIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJ
CQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0UEFYV2VpZ2h0MihsdW5nQ0RPdXRj
b21lLmdldFZhbHVlKCJwYXhXZWlnaHQyIikpOwkJCQkNCgkJCQl9DQoJCQkJ
DQovLwkJCQkgdG8gc2V0IHRvb2x0aXANCgkJCQl0ZW1wbGF0ZVJvdyA9IHBh
Z2UuZ2V0RWxlbWVudFRlbXBsYXRlUm93KCk7CQkJDQoJCQkJdGVtcGxhdGVS
b3cuc2V0QXR0cmlidXRlKCJ0aXRsZSIsZW5jSWQpOw0KCQkJCQ0KCQkJCWlm
ICghKGZldmVudC5lcXVhbHMoIiIpKSkgew0KCQkJCQlmb3IgKGludCBpPTA7
aTxmUUMxLmxlbmd0aDtpKyspIHsNCgkJCQkJCWlmICghZ2V0UUNSZXN1bHQo
bHVuZ0NET3V0Y29tZSwicWMiK2ZRQzFbaV0pKSB7DQoJCQkJCQkJc3BhblRh
ZyA9IHBhZ2UuZ2V0RWxlbWVudEJ5SWQoZlFDMVtpXSk7DQoJCQkJCQkJaWYo
WE1MQ1V0aWwuZ2V0Rmlyc3RUZXh0KHNwYW5UYWcpLmdldERhdGEoKS50cmlt
KCkubGVuZ3RoKCk+MCl7DQoJCQkJCQkJCXFjMUNlbGxDb2xvciA9ICIjRkY2
NjAwIjsJDQoJCQkJCQkJCXN0ck1pc3NpbmdEYXRhID0gIiAiOw0KCQkJCQkJ
CX1lbHNlew0KCQkJCQkJCQlxYzFDZWxsQ29sb3IgPSAiI0ZGMzMzMyI7DQoJ
CQkJCQkJCXN0ck1pc3NpbmdEYXRhID0gIiBtaXNzaW5nICI7DQoJCQkJCQkJ
fQ0KCQkJCQkJCVhNTENVdGlsLmdldEZpcnN0VGV4dChzcGFuVGFnKS5zZXRE
YXRhKFhNTENVdGlsLmdldEZpcnN0VGV4dChzcGFuVGFnKS5nZXREYXRhKCku
dHJpbSgpK3N0ck1pc3NpbmdEYXRhKTsNCgkJCQkJCQljZWxsID0gKEhUTUxU
YWJsZUNlbGxFbGVtZW50KSBzcGFuVGFnLmdldFBhcmVudE5vZGUoKTsNCgkJ
CQkJCQljZWxsLnNldEJnQ29sb3IocWMxQ2VsbENvbG9yKTsNCgkJCQkJCX0N
CgkJCQkJfQ0KDQoJCQkJCWZvciAoaW50IGk9MDtpPGZRQzIubGVuZ3RoO2kr
Kykgew0KCQkJCQkJaWYgKCFnZXRRQ1Jlc3VsdChsdW5nQ0RPdXRjb21lLCJx
YzIiK2ZRQzJbaV0pKSB7DQoJCQkJCQkJc3BhblRhZyA9IHBhZ2UuZ2V0RWxl
bWVudEJ5SWQoZlFDMltpXSk7DQoJCQkJCQkJY2VsbCA9IChIVE1MVGFibGVD
ZWxsRWxlbWVudCkgc3BhblRhZy5nZXRQYXJlbnROb2RlKCk7DQoJCQkJCQkJ
Y2VsbC5zZXRCZ0NvbG9yKHFjMkNlbGxDb2xvcik7DQoJCQkJCQl9DQoJCQkJ
CX0NCgkJCQl9DQoJCQkJDQoJCQkJdGVtcGxhdGVUYWJsZS5hcHBlbmRDaGls
ZCh0ZW1wbGF0ZVJvdy5jbG9uZU5vZGUodHJ1ZSkpOw0KCQkJCWlmIChzYW1l
UGF0KSB7DQoJCQkJCWxhc3RSb3cgPSAoSFRNTFRhYmxlUm93RWxlbWVudCkg
dGVtcGxhdGVUYWJsZS5nZXRMYXN0Q2hpbGQoKTsNCgkJCQkJbGFzdFJvdy5z
ZXRCZ0NvbG9yKCIjZmZmZjk5Iik7DQoJCQkJCWxhc3RSb3cuZ2V0UGFyZW50
Tm9kZSgpLnJlbW92ZUNoaWxkKGxhc3RSb3cpOw0KCQkJCQlyb3dDb3VudC0t
Ow0KCQkJCQlyZWNDb3VudC0tOw0KCQkJCX0NCg0KCQkJCWZvciAoaW50IGk9
MDtpPGZRQzEubGVuZ3RoO2krKykgew0KCQkJCQlzcGFuVGFnID0gcGFnZS5n
ZXRFbGVtZW50QnlJZChmUUMxW2ldKTsNCgkJCQkJY2VsbCA9IChIVE1MVGFi
bGVDZWxsRWxlbWVudCkgc3BhblRhZy5nZXRQYXJlbnROb2RlKCk7DQoJCQkJ
CWNlbGwuc2V0QmdDb2xvcigiIik7DQoJCQkJfQ0KCQkJCWZvciAoaW50IGk9
MDtpPGZRQzIubGVuZ3RoO2krKykgew0KCQkJCQlzcGFuVGFnID0gcGFnZS5n
ZXRFbGVtZW50QnlJZChmUUMyW2ldKTsNCgkJCQkJY2VsbCA9IChIVE1MVGFi
bGVDZWxsRWxlbWVudCkgc3BhblRhZy5nZXRQYXJlbnROb2RlKCk7DQoJCQkJ
CWNlbGwuc2V0QmdDb2xvcigiIik7DQoJCQkJfQ0KCQkJCS8vIGdhcmJhZ2Ug
Y29sbGVjdGlvbiBiZWdpbg0KCQkJCWx1bmdDRE91dGNvbWUgPSAgICBudWxs
Ow0KCQkJCWVuY0lkID0gbnVsbDsNCgkJCQlwYXRpZW50SWQgPSBudWxsOw0K
CQkJCWNlbnRlck5hbWUgPSBudWxsOw0KCQkJCWNlbnRlcklkID0gbnVsbDsN
CgkJCQlpZihjb3VudGVyJTQwMD09MCl7DQoJCQkJICAgUnVudGltZS5nZXRS
dW50aW1lKCkuZ2MoKTsNCgkJCQl9DQoJCQkJLy8gZ2FyYmFnZSBjb2xsZWN0
aW9uIGVuZCANCgkJCX0NCgkJCXRlbXBsYXRlVGFibGUucmVtb3ZlQ2hpbGQo
dGVtcGxhdGVSb3cpOw0KCQkJfWNhdGNoKEV4Y2VwdGlvbiBlKXsNCgkJCQll
LnByaW50U3RhY2tUcmFjZSgpOwkJCQkNCgkJCX0JCQ0KCQlyZXR1cm4gcGFn
ZTsNCn0NCg0KDQoJcHVibGljIFhNTE9iamVjdCBoYW5kbGVFeHBvcnRBbmFs
eXNpcygpDQogICAgdGhyb3dzIEh0dHBQcmVzZW50YXRpb25FeGNlcHRpb24g
ew0KCQlMYXJnb0RGRXhwb3J0QW5hbHlzaXNlQ1JGSFRNTCBwYWdlID0gbnVs
bDsNCgkJDQoNCgkJU2ltcGxlRGF0ZUZvcm1hdCBmb3JtYXR0ZXIgPSBuZXcg
U2ltcGxlRGF0ZUZvcm1hdCAoInl5eXlNTWRkaGhtbXNzIik7DQoJCVN0cmlu
ZyBxYzFDZWxsQ29sb3IgPSAiI2M2YzZjNiI7DQoJCVN0cmluZyBxYzJDZWxs
Q29sb3IgPSAiI2ZmY2MzMyI7DQoJIAlTdHJpbmcgbm93ID0gZm9ybWF0dGVy
LmZvcm1hdChuZXcgRGF0ZSgpKTsNCg0KCSAJU3RyaW5nIGZpbGVOYW1lID0g
IG5vdyArICJMdW5nRGF0YVFDLnhscyI7DQoJIAlib29sZWFuIHNhbWVQYXQg
PSBmYWxzZTsNCgkJDQoJCUx1bmdDRE91dGNvbWUgbHVuZ0NET3V0Y29tZSA9
IG51bGw7DQoJCUx1bmdDRE91dGNvbWUgcHJldkx1bmdDRE91dGNvbWUgPSBu
dWxsOw0KCQkNCgkJc2V0UGFyYW1zKCk7DQoJCQ0KDQoJCWlmKGZhdHRyTGlz
dC5pbmRleE9mKCJCaW9wc3lIaXN0b3J5RCIpIT0tMSl7DQoJCQlmYXR0ckxp
c3QrPSIsQmlvcHN5SGlzdG9yeUEwRCI7DQoJCQlmYXR0ckxpc3QrPSIsQmlv
cHN5SGlzdG9yeUExRCI7DQoJCQlmYXR0ckxpc3QrPSIsQmlvcHN5SGlzdG9y
eUEyRCI7DQoJCQlmYXR0ckxpc3QrPSIsQmlvcHN5SGlzdG9yeUEzRCI7DQoJ
CQlmYXR0ckxpc3QrPSIsQmlvcHN5SGlzdG9yeUE0RCI7DQoJCQlmYXR0ckxp
c3QrPSIsQmlvcHN5SGlzdG9yeU9CREQiOw0KCQkJZmF0dHJMaXN0Kz0iLEJp
b3BzeUhpc3RvcnlCT1NEIjsNCgkJCWZhdHRyTGlzdCs9IixCaW9wc3lIaXN0
b3J5Q1ZSRCI7DQoJCQlmYXR0ckxpc3QrPSIsQmlvcHN5SGlzdG9yeUIwRCI7
DQoJCQlmYXR0ckxpc3QrPSIsQmlvcHN5SGlzdG9yeUIxRCI7DQoJCQlmYXR0
ckxpc3QrPSIsQmlvcHN5SGlzdG9yeUIyRCI7DQoJCQlmYXR0ckxpc3QrPSIs
QmlvcHN5SGlzdG9yeUIzRCI7DQoJCQlmYXR0ckxpc3QrPSIsQmlvcHN5SGlz
dG9yeUI0RCI7DQoJCQlmYXR0ckxpc3QrPSIsQmlvcHN5SGlzdG9yeUJ4RCI7
DQoJCQlmYXR0ckxpc3QrPSIsQmlvcHN5SGlzdG9yeUNvbW1lbnRzRCI7DQoJ
ICAgfQ0KCQkNCgkJaWYoZmF0dHJMaXN0LmluZGV4T2YoIlJlalRyZWF0bWVu
dEhpc3RvcnlEIikhPS0xKXsNCgkJCWZhdHRyTGlzdCs9IixSZWpUcmVhdG1l
bnRIaXN0b3J5VHJlYXRtZW50c0QiOw0KCQkJZmF0dHJMaXN0Kz0iLFJlalRy
ZWF0bWVudEhpc3RvcnlOb09mVHJlYXRtZW50RCI7DQoJCQlmYXR0ckxpc3Qr
PSIsUmVqVHJlYXRtZW50SGlzdG9yeUVuZERhdGVEIjsNCgkJCQ0KCQl9DQoJ
CQ0KCQlpZiAoZmF0dHJMaXN0LmluZGV4T2YoIlN0ZXJvaWRzRCIpIT0tMSl7
DQoJCQlmYXR0ckxpc3QrPSIsU3Rlcm9pZHNVbml0c0QiOw0KCQl9DQoJCWlm
IChmYXR0ckxpc3QuaW5kZXhPZigiUHJlZG5pc29sb25lRCIpIT0tMSl7DQoJ
CQlmYXR0ckxpc3QrPSIsUHJlZG5pc29sb25lVW5pdHNEIjsNCgkJfQkNCgkJ
aWYgKGZhdHRyTGlzdC5pbmRleE9mKCJQcmVkbmlzb25lRCIpIT0tMSl7DQoJ
CQlmYXR0ckxpc3QrPSIsUHJlZG5pc29uZVVuaXRzRCI7DQoJCX0NCgkJaWYg
KGZhdHRyTGlzdC5pbmRleE9mKCJJbmhTdGVyb2lkc0QiKSE9LTEpew0KCQkJ
ZmF0dHJMaXN0Kz0iLEluaFN0ZXJvaWRzVW5pdHNEIjsNCgkJfQ0KCQlpZiAo
ZmF0dHJMaXN0LmluZGV4T2YoIkN5Y2xvc3BvcmluRCIpIT0tMSl7DQoJCQlm
YXR0ckxpc3QrPSIsQ3ljbG9zcG9yaW5Vbml0c0QiOw0KCQl9DQoJCWlmIChm
YXR0ckxpc3QuaW5kZXhPZigiVGFjcm9saW11c0QiKSE9LTEpew0KCQkJZmF0
dHJMaXN0Kz0iLFRhY3JvbGltdXNVbml0c0QiOw0KCQl9DQoJCWlmIChmYXR0
ckxpc3QuaW5kZXhPZigiQXphdGhpb3ByaW5lRCIpIT0tMSl7DQoJCQlmYXR0
ckxpc3QrPSIsQXphdGhpb3ByaW5lVW5pdHNEIjsNCgkJfQ0KCQlpZiAoZmF0
dHJMaXN0LmluZGV4T2YoIk15Y29waGVub2xhdGVEIikhPS0xKXsNCgkJCWZh
dHRyTGlzdCs9IixNeWNvcGhlbm9sYXRlVW5pdHNEIjsNCgkJfQ0KCQlpZiAo
ZmF0dHJMaXN0LmluZGV4T2YoIkJhc2lsaXhpbWFiRCIpIT0tMSl7DQoJCQlm
YXR0ckxpc3QrPSIsQmFzaWxpeGltYWJVbml0c0QiOw0KCQl9DQoJCWlmIChm
YXR0ckxpc3QuaW5kZXhPZigiRGFjbHV6aW1hYkQiKSE9LTEpew0KCQkJZmF0
dHJMaXN0Kz0iLERhY2x1emltYWJVbml0c0QiOw0KCQl9DQoJCWlmIChmYXR0
ckxpc3QuaW5kZXhPZigiU2lyb2xpbXVzRCIpIT0tMSl7DQoJCQlmYXR0ckxp
c3QrPSIsU2lyb2xpbXVzVW5pdHNEIjsNCgkJfQ0KCQlpZiAoZmF0dHJMaXN0
LmluZGV4T2YoIkF6aXRocm9teWNpbkQiKSE9LTEpew0KCQkJZmF0dHJMaXN0
Kz0iLEF6aXRocm9teWNpblVuaXRzRCI7DQoJCX0NCgkJaWYgKGZhdHRyTGlz
dC5pbmRleE9mKCJUTVgtU3VsZmFEIikhPS0xKXsNCgkJCWZhdHRyTGlzdCs9
IixUTVgtU3VsZmFVbml0c0QiOw0KCQl9DQoJCQ0KCQlpZiAoZmF0dHJMaXN0
LmluZGV4T2YoIkdhbmNpY2xvdmlyRCIpIT0tMSl7DQoJCQlmYXR0ckxpc3Qr
PSIsR2FuY2ljbG92aXJVbml0c0QiOw0KCQl9DQoJCWlmIChmYXR0ckxpc3Qu
aW5kZXhPZigiVG9icmFteWNpbkQiKSE9LTEpew0KCQkJZmF0dHJMaXN0Kz0i
LFRvYnJhbXljaW5Vbml0c0QiOw0KCQl9DQoJCWlmIChmYXR0ckxpc3QuaW5k
ZXhPZigiVmFsZ2FuY3ljbG92aXJEIikhPS0xKXsNCgkJCWZhdHRyTGlzdCs9
IixWYWxnYW5jeWNsb3ZpclVuaXRzRCI7DQoJCX0NCgkJaWYgKGZhdHRyTGlz
dC5pbmRleE9mKCJJdHJhY29uYXpvbGVEIikhPS0xKXsNCgkJCWZhdHRyTGlz
dCs9IixJdHJhY29uYXpvbGVVbml0c0QiOw0KCQl9DQoJCWlmIChmYXR0ckxp
c3QuaW5kZXhPZigiRmx1Y29uYXpvbGVEIikhPS0xKXsNCgkJCWZhdHRyTGlz
dCs9IixGbHVjb25hem9sZVVuaXRzRCI7DQoJCX0NCgkJaWYgKGZhdHRyTGlz
dC5pbmRleE9mKCJWb3JpY29uYXpvbGVEIikhPS0xKXsNCgkJCWZhdHRyTGlz
dCs9IixWb3JpY29uYXpvbGVVbml0c0QiOw0KCQl9DQoJCQkJDQoJCQ0KCQlT
dHJpbmdbXSBhdHRyID0gbmV3IFN0cmluZ1swXTsNCgkJaWYgKCEoZmF0dHJM
aXN0LmVxdWFscygiIikpKSBhdHRyID0gZmF0dHJMaXN0LnNwbGl0KCIsIik7
DQoJCVN5c3RlbS5vdXQucHJpbnRsbigiZmF0dHJMaXN0ICA9PSIrZmF0dHJM
aXN0KTsNCgkJDQoJCUxpc3QgYXR0ckxpc3QgPSBBcnJheXMuYXNMaXN0KGF0
dHIpOw0KCQkNCgkJDQoJCWludCBjZW50ZXJDb3VudCA9IDA7DQoJCWludCBw
YXRpZW50Q291bnQgPSAwOw0KCQlpbnQgZW5jQ291bnQgPSAwOw0KCQlpbnQg
cm93Q291bnQgPSAwOw0KCQlpbnQgcmVjQ291bnQgPSAwOw0KCQlTdHJpbmcg
Y3VyQ2VudGVySWQgPSAiIjsNCgkJU3RyaW5nIGN1clBhdGllbnRJZCA9ICIi
Ow0KCQlTdHJpbmcgY3VyRW5jSWQgPSAiIjsNCg0KCQkNCgkJU3RyaW5nIGNl
bnRlcklkID0gbnVsbDsNCgkJU3RyaW5nIGNlbnRlck5hbWUgPSBudWxsOw0K
CQlTdHJpbmcgcGF0aWVudElkID0gbnVsbDsNCgkJU3RyaW5nIGVuY0lkID1u
dWxsOw0KDQoJCUhUTUxUYWJsZUNlbGxFbGVtZW50IGNlbGwgPSBudWxsOw0K
CQlOb2RlIHNwYW5UYWcgPW51bGw7DQoJCUhUTUxUYWJsZVJvd0VsZW1lbnQg
bGFzdFJvdyA9bnVsbDsNCgkJSFRNTFRhYmxlUm93RWxlbWVudCBoZHJSb3cg
PSBudWxsOw0KCQlTdHJpbmcgcXVlcnlUZXh0ID0gbnVsbDsNCgkJaW50IGNv
dW50ZXI9MDsNCgkJU3RyaW5nIHN0ck1pc3NpbmdEYXRhID0gIm1pc3Npbmci
Ow0KCQlEYXRlIGJsaW5kaW5nU3RhcnREYXRlID0gbnVsbDsNCgkJRGF0ZSBi
bGluZGluZ0VuZERhdGUgPSBudWxsOw0KCQkNCgkJTm9kZSBubzsNCgkJSFRN
TFRhYmxlQ2VsbEVsZW1lbnQgbiA7DQoJCU5vZGVMaXN0IHRkQ2hpbGRMaXN0
IDsNCgkJTm9kZSB0ZE5vZGU7DQoJCQ0KCQlOYW1lZE5vZGVNYXAgbm5tIDsN
CgkJU3RyaW5nICBpbnB1dElkVmFsdWUgOw0KCQlTdHJpbmcgaWRBdHRyaWJ1
dGVWYWx1ZTsNCgkJQXJyYXlMaXN0IGFsOw0KCQlTdHJpbmdbXSAgQ09MVU1O
X1RPX0JFX1NQTElUID17IkJpb3BzeUhpc3RvcnkifTsNCgkgCXRoaXMuZ2V0
Q29tbXMoKS5yZXNwb25zZS5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24v
bXMtZXhjZWwiKTsNCgkJdGhpcy5nZXRDb21tcygpLnJlc3BvbnNlLnNldEhl
YWRlcigiQ29udGVudC1EaXNwb3NpdGlvbiIsICJhdHRhY2htZW50OyBmaWxl
bmFtZT0iICsgZmlsZU5hbWUpOw0KCQkNCgkJCXBhZ2UgPSAoTGFyZ29ERkV4
cG9ydEFuYWx5c2lzZUNSRkhUTUwpIG15Q29tbXMueG1sY0ZhY3RvcnkuY3Jl
YXRlKExhcmdvREZFeHBvcnRBbmFseXNpc2VDUkZIVE1MLmNsYXNzKTsNCgkJ
CUhUTUxUYWJsZVJvd0VsZW1lbnQgdGVtcGxhdGVIZHJSb3cgPSBwYWdlLmdl
dEVsZW1lbnRIZHJSb3coKTsNCgkJCUhUTUxUYWJsZVJvd0VsZW1lbnQgdGVt
cGxhdGVSb3cgPSBwYWdlLmdldEVsZW1lbnRUZW1wbGF0ZVJvdygpOw0KCQkJ
Tm9kZUxpc3QgbmwgPSB0ZW1wbGF0ZVJvdy5nZXRDaGlsZE5vZGVzKCk7CQkJ
DQoJCQlOb2RlIHRlbXBsYXRlVGFibGUgPSB0ZW1wbGF0ZVJvdy5nZXRQYXJl
bnROb2RlKCk7DQoJCQkNCgkJCVN5c3RlbS5vdXQucHJpbnRsbigiYXR0ckxp
c3QgIithdHRyTGlzdCk7DQoNCgkJCWZvciAoaW50IGk9bmwuZ2V0TGVuZ3Ro
KCktMTtpPj0xO2ktLSkgew0KCQkJCW5vID0gbmwuaXRlbShpKTsNCgkJCQlp
ZiAobm8uZ2V0Tm9kZU5hbWUoKS5zdWJzdHJpbmcoMCwxKS5lcXVhbHMoIiMi
KSkgY29udGludWU7DQoNCgkJCQluID0gKEhUTUxUYWJsZUNlbGxFbGVtZW50
KSBubC5pdGVtKGkpOw0KCQkJCWlmKG4uZ2V0SWQoKS5sZW5ndGgoKT4wKXsN
CgkJCQkJaWYgKCEoYXR0ckxpc3QuY29udGFpbnMobi5nZXRJZCgpKSkpew0K
CQkJCQkJbi5nZXRQYXJlbnROb2RlKCkucmVtb3ZlQ2hpbGQobik7DQoJCQkJ
CX0NCgkJCQl9ZWxzZXsNCgkJCQkJdGRDaGlsZExpc3QgPSBuLmdldENoaWxk
Tm9kZXMoKTsJCQkJCQ0KCQkJCQlmb3IoaW50IGo9MDtqPHRkQ2hpbGRMaXN0
LmdldExlbmd0aCgpO2orKyl7DQoJCQkJCQl0ZE5vZGUgPSB0ZENoaWxkTGlz
dC5pdGVtKGopOw0KCQkJCQkJDQoJCQkJCQlubm0gPSB0ZE5vZGUuZ2V0QXR0
cmlidXRlcygpOw0KCQkJCQkNCgkJCQkJCWlkQXR0cmlidXRlVmFsdWUgPSBu
bm0uZ2V0TmFtZWRJdGVtKCJpZCIpLmdldE5vZGVWYWx1ZSgpOw0KCQkJCQkJ
DQoJCQkJCQlpbnB1dElkVmFsdWUgPSBpZEF0dHJpYnV0ZVZhbHVlLnN1YnN0
cmluZygwLGlkQXR0cmlidXRlVmFsdWUubGVuZ3RoKCkpICsiRCI7DQoJCQkJ
CQlpZiAoIShhdHRyTGlzdC5jb250YWlucyhpbnB1dElkVmFsdWUpKSkgew0K
CQkJCQkJCSAgIG4uZ2V0UGFyZW50Tm9kZSgpLnJlbW92ZUNoaWxkKG4pOw0K
CQkJCQkJfQ0KCQkJCQl9CQkJCQ0KCQkJCX0NCgkJCX0NCgkJCW5sID0gdGVt
cGxhdGVIZHJSb3cuZ2V0Q2hpbGROb2RlcygpOw0KCQkJZm9yIChpbnQgaT1u
bC5nZXRMZW5ndGgoKS0xO2k+PTE7aS0tKSB7DQoJCQkJIG4gPSAoSFRNTFRh
YmxlQ2VsbEVsZW1lbnQpIG5sLml0ZW0oaSk7DQoJCQkJaWYgKCEoYXR0ckxp
c3QuY29udGFpbnMobi5nZXRJZCgpLnN1YnN0cmluZygwLG4uZ2V0SWQoKS5s
ZW5ndGgoKS0xKSkpKXsNCgkJCQkgICBuLmdldFBhcmVudE5vZGUoKS5yZW1v
dmVDaGlsZChuKTsNCgkJCQl9DQoJCQl9DQoJCQl0cnl7DQoJCQlscSA9IG1h
a2VRdWVyeSgpOwkJCQkJCQkNCgkJCXNyUm93cyA9IFRyYW5zcGxhbnRVdGls
LmdldEx1bmdPdXRjb21lcyhscSx0aGlzLmdldFJvbGUoKSk7DQoJCQlmb3Ig
KExpc3RJdGVyYXRvciBkYXRhPXNyUm93cy5saXN0SXRlcmF0b3IoKTsgZGF0
YS5oYXNOZXh0KCk7Y291bnRlcisrKSB7DQoJCQkJbHVuZ0NET3V0Y29tZSA9
IChMdW5nQ0RPdXRjb21lKSBkYXRhLm5leHQoKTsNCgkJCQkNCgkJCQlpZihj
b3VudGVyPjApew0KCQkJCQlwcmV2THVuZ0NET3V0Y29tZSA9IChMdW5nQ0RP
dXRjb21lKSBzclJvd3MuZ2V0KGNvdW50ZXItMSk7DQoJCQkJfQ0KDQoJCQkJ
IGNlbnRlcklkID0gbHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY2VudGVyaWQi
KTsNCgkJCQkgY2VudGVyTmFtZSA9IGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo
ImNlbnRlck5hbWUiKTsNCgkJCQkgcGF0aWVudElkID0gbHVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgicGF0aWVudGlkIik7DQoJCQkJIGVuY0lkID0gbHVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgiZW5jb3VudGVyaWQiKTsNCgkJCQkgDQoJCQkJ
cm93Q291bnQrKzsNCgkJCQlyZWNDb3VudCsrOw0KDQoJCQkJaWYgKCEoY2Vu
dGVySWQuZXF1YWxzKGN1ckNlbnRlcklkKSkpIHsNCgkJCQkJY3VyQ2VudGVy
SWQgPSBjZW50ZXJJZDsNCgkJCQkJY2VudGVyQ291bnQrKzsNCgkJCQl9DQoN
CgkJCQlpZiAoIShwYXRpZW50SWQuZXF1YWxzKGN1clBhdGllbnRJZCkpKSB7
DQoJCQkJCWN1clBhdGllbnRJZCA9IHBhdGllbnRJZDsNCgkJCQkJcGF0aWVu
dENvdW50Kys7DQoJCQkJfQ0KDQoJCQkJaWYgKCEoZW5jSWQuZXF1YWxzKGN1
ckVuY0lkKSkpIHsNCgkJCQkJY3VyRW5jSWQgPSBlbmNJZDsNCgkJCQkJZW5j
Q291bnQrKzsNCgkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCX0NCgkJCQll
bHNlIHNhbWVQYXQgPSB0cnVlOw0KDQovLwkJCQlpZiAoIHJvd0NvdW50ID4g
MTIgJiYgKCEoZmV2ZW50LmVxdWFscygic2F2ZSIpKSkgKSB7DQovLwkJCQkJ
aGRyUm93ID0gKEhUTUxUYWJsZVJvd0VsZW1lbnQpIHRlbXBsYXRlSGRyUm93
LmNsb25lTm9kZSh0cnVlKTsNCi8vCQkJCQl0ZW1wbGF0ZVRhYmxlLmFwcGVu
ZENoaWxkKGhkclJvdyk7DQovLwkJCQkJcm93Q291bnQgPSAxOw0KLy8JCQkJ
fQ0KDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJFbmNvdW50ZXJJZEQi
KSl7DQoJCQkJCSAgIHBhZ2Uuc2V0VGV4dEVuY291bnRlcihsdW5nQ0RPdXRj
b21lLmdldFZhbHVlKCJlbmNvdW50ZXJpZCIpKTsNCgkJCQkJfWVsc2V7DQoJ
CQkJCSAgIGlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmIHByZXZMdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJwYXRpZW50aWQiKS5lcXVhbHMobHVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgicGF0aWVudGlkIikpKXsNCgkJCQkJICAgICAg
c2FtZVBhdCA9IHRydWU7DQoJCQkJCSAgIH1lbHNlew0KCQkJCQkgICAJIHNh
bWVQYXQgPSBmYWxzZTsNCgkJCQkJICAgfQ0KCQkJCQkgICBwYWdlLnNldFRl
eHRFbmNvdW50ZXIobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicGF0aWVudGlk
IikpOw0KCQkJCQkgICBwYWdlLnNldFRleHRFbmNvdW50ZXJJZCgiUGF0aWVu
dCBJZCIpOw0KCQkJCQl9DQoNCg0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlu
cygiVmlzaXREYXRlRCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUh
PW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJ2aXNpdERhdGUiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52
YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInZpc2l0RGF0ZSIpKSkp
ew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9CQkJCQkNCgkJCQkJ
cGFnZS5zZXRUZXh0VmlzaXREYXRlKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo
InZpc2l0RGF0ZSIpKTsJCQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3Qu
Y29udGFpbnMoIkNvbXB1dGVkVmlzaXRBZ2VEIikpew0KCQkJCQlpZihwcmV2
THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNvbXB1dGVkVmlzaXRBZ2UiKSkNCgkJ
CQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0
VmFsdWUoImNvbXB1dGVkVmlzaXRBZ2UiKSkpKXsNCgkJCQkJCXNhbWVQYXQg
PSBmYWxzZTsNCgkJCQkJfQkJCQkJDQoJCQkJCXBhZ2Uuc2V0VGV4dENvbXB1
dGVkVmlzaXRBZ2UobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY29tcHV0ZWRW
aXNpdEFnZSIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250
YWlucygiUmVqZWN0aW9uRXBpc29kZUNvbW1lbnRzRCIpKXsNCgkJCQkJcGFn
ZS5zZXRUZXh0UmVqZWN0aW9uRXBpc29kZUNvbW1lbnRzKGx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoInJlamVjdGlvbkVwaXNvZGVDb21tZW50cyIpKTsNCgkJ
CQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1
ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWplY3Rpb25FcGlz
b2RlQ29tbWVudHMiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9m
KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlamVjdGlvbkVwaXNvZGVDb21t
ZW50cyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJ
CQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUEFYRCIpKXsNCgkJ
CQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1
ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwYXhOdW0iKSkNCgkJ
CQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0
VmFsdWUoInBheE51bSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K
CQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dFBBWChsdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJwYXhOdW0iKSk7DQoJCQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0
ckxpc3QuY29udGFpbnMoIkNQVEQiKSkgew0KCQkJCQlpZihwcmV2THVuZ0NE
T3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91
dGNvbWUuZ2V0VmFsdWUoImNwdE51bSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3Ry
aW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY3B0TnVtIikp
KSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFn
ZS5zZXRUZXh0Q1BUKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNwdE51bSIp
KTsNCgkJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygi
U2V4RCIpKSB7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYm
ICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
c2V4IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJzZXgiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBm
YWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRTZXgobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgic2V4IikpOwkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0
dHJMaXN0LmNvbnRhaW5zKCJSYWNlRCIpKSB7DQoJCQkJCWlmKHByZXZMdW5n
Q0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgicmFjZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3Ry
aW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmFjZSIpKSkp
ew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uu
c2V0VGV4dFJhY2UobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmFjZSIpKTsJ
CQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiVHhUeXBl
RCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0
cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0cmFu
c3BsYW50VHlwZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2Yo
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidHJhbnNwbGFudFR5cGUiKSkpKXsN
CgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNl
dFRleHRUeFR5cGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidHJhbnNwbGFu
dFR5cGUiKSk7CQkJCQ0KCQkJCX0NCg0KCQkJCWlmIChhdHRyTGlzdC5jb250
YWlucygiVHhEYXRlRCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUh
PW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJ0cmFuc3BsYW50RGF0ZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3Ry
aW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidHJhbnNwbGFu
dERhdGUiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0K
CQkJCQlwYWdlLnNldFRleHRUeERhdGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgidHJhbnNwbGFudERhdGUiKSk7CQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0
ckxpc3QuY29udGFpbnMoIlR4SW5kRCIpKXsNCgkJCQkJaWYocHJldkx1bmdD
RE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJ0cmFuc3BsYW50SW5kIikpDQoJCQkJCQkJLmVx
dWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0
cmFuc3BsYW50SW5kIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJ
CQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0VHhJbmQobHVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgidHJhbnNwbGFudEluZCIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlm
IChhdHRyTGlzdC5jb250YWlucygiRGF5c0QiKSl7DQoJCQkJCWlmKHByZXZM
dW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgiZGF5c0Zyb21UeCIpKQ0KCQkJCQkJCS5l
cXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
ZGF5c0Zyb21UeCIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJ
CQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dERheXMobHVuZ0NET3V0Y29tZS5nZXRW
YWx1ZSgiZGF5c0Zyb21UeCIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRy
TGlzdC5jb250YWlucygiQWdlRCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91
dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRj
b21lLmdldFZhbHVlKCJhZ2UiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52
YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImFnZSIpKSkpew0KCQkJ
CQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4
dEFnZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJhZ2UiKSk7CQkJCQ0KCQkJ
CX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkNvbXB1dGVkRW5yb2xs
QWdlRCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYg
IVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJj
b21wdXRlZEVucm9sbG1lbnRBZ2UiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmlu
Zy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNvbXB1dGVkRW5y
b2xsbWVudEFnZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJ
CQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dENvbXB1dGVkRW5yb2xsQWdlKGx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoImNvbXB1dGVkRW5yb2xsbWVudEFnZSIpKTsJ
CQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiSXNUeFJl
Y2lwaWVudEQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxs
ICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiaXNUeFJlY2VwaWVudCIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZh
bHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaXNUeFJlY2VwaWVudCIp
KSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBh
Z2Uuc2V0VGV4dElzVHhSZWNpcGllbnQobHVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiaXNUeFJlY2VwaWVudCIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRy
TGlzdC5jb250YWlucygiSGFzUmVjZWl2ZWRGdW5kb3BsaWNhdGlvbkQiKSl7
CQ0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5n
LnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImhhc1JlY2Vp
dmVkRnVuZG9wbGljYXRpb24iKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52
YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImhhc1JlY2VpdmVkRnVu
ZG9wbGljYXRpb24iKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJ
CQkJfQ0KCQkJCQlwYWdlLnNldFRleHRIYXNSZWNlaXZlZEZ1bmRvcGxpY2F0
aW9uKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImhhc1JlY2VpdmVkRnVuZG9w
bGljYXRpb24iKSk7CQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFp
bnMoIkRvYkQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxs
ICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiZG9iIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJkb2IiKSkpKXsNCgkJCQkJCXNhbWVQYXQg
PSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHREb2IobHVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgiZG9iIikpOwkJCQkNCgkJCQl9DQoJCQkJaWYg
KGF0dHJMaXN0LmNvbnRhaW5zKCJFbnJvbGxEdEQiKSl7DQoJCQkJCWlmKHBy
ZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2
THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZW5yb2xsRHQiKSkNCgkJCQkJCQku
ZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo
ImVucm9sbER0IikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJ
CX0NCgkJCQkJcGFnZS5zZXRUZXh0RW5yb2xsRHQobHVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgiZW5yb2xsRHQiKSk7CQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0
ckxpc3QuY29udGFpbnMoIkFnZUNSRkQiKSl7DQoJCQkJCWlmKHByZXZMdW5n
Q0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgiYWdlQ1JGIikpDQoJCQkJCQkJLmVxdWFscyhT
dHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJhZ2VDUkYi
KSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlw
YWdlLnNldFRleHRBZ2VDUkYobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYWdl
Q1JGIikpOwkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5z
KCJQYXRpZW50U3RhdHVzRCIpKSB7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRj
b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgicGF0aWVudFN0YXR1cyIpKQ0KCQkJCQkJCS5lcXVhbHMo
U3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicGF0aWVu
dFN0YXR1cyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9
DQoJCQkJCXBhZ2Uuc2V0VGV4dFBhdGllbnRTdGF0dXMobHVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgicGF0aWVudFN0YXR1cyIpKTsNCgkJCQkJDQoJCQkJfQ0K
CQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiSW5kaWNhdGlvbkQiKSl7DQoJ
CQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFs
dWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5kaWNhdGlvbiIp
KQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgiaW5kaWNhdGlvbiIpKSkpew0KCQkJCQkJc2FtZVBhdCA9
IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dEluZGljYXRpb24o
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5kaWNhdGlvbiIpKTsNCgkJCQkJ
DQoJCQkJfQ0KDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJPQkQiKSl7
DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcu
dmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiT0IiKSkNCgkJ
CQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0
VmFsdWUoIk9CIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJ
CX0NCgkJCQkJcGFnZS5zZXRUZXh0T0IobHVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiT0IiKSk7DQoJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250
YWlucygiQ1ZSRCIpKSB7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1u
dWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRW
YWx1ZSgiQ1ZSIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihs
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJDVlIiKSkpKXsNCgkJCQkJCXNhbWVQ
YXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRDVlIobHVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgiQ1ZSIikpOw0KCQkJCX0NCg0KCQkJCWlm
IChhdHRyTGlzdC5jb250YWlucygiQmlvcHN5RCIpKSB7DQoJCQkJCWlmKHBy
ZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2
THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmlvcHN5IikpDQoJCQkJCQkJLmVx
dWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJi
aW9wc3kiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0K
CQkJCQlwYWdlLnNldFRleHRCaW9wc3kobHVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiYmlvcHN5IikpOw0KCQkJCQkNCgkJCQl9DQoJCQkJDQoJCQkJaWYgKGF0
dHJMaXN0LmNvbnRhaW5zKCJCaW9wc3lEYXRlRCIpKSB7DQoJCQkJCWlmKHBy
ZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2
THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmlvcHN5RGF0ZSIpKQ0KCQkJCQkJ
CS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiYmlvcHN5RGF0ZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K
CQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dEJpb3BzeURhdGUobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgiYmlvcHN5RGF0ZSIpKTsNCgkJCQkJDQoJCQkJfQ0K
CQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQmlvcHN5Q29tbWVudHNEIikp
IHsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmlu
Zy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiaW9wc3lD
b21tZW50cyIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgiYmlvcHN5Q29tbWVudHMiKSkpKXsNCgkJ
CQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRl
eHRCaW9wc3lDb21tZW50cyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiaW9w
c3lDb21tZW50cyIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5j
b250YWlucygiQWN1dGVHcmFkZUQiKSkgew0KCQkJCQlpZihwcmV2THVuZ0NE
T3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91
dGNvbWUuZ2V0VmFsdWUoImFjdXRlR3JhZGUiKSkNCgkJCQkJCQkuZXF1YWxz
KFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImFjdXRl
R3JhZGUiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0K
CQkJCSAgICBwYWdlLnNldFRleHRBY3V0ZUdyYWRlKGx1bmdDRE91dGNvbWUu
Z2V0VmFsdWUoImFjdXRlR3JhZGUiKSk7DQoJCQkJfQ0KCQkJCWlmIChhdHRy
TGlzdC5jb250YWlucygiQWlyd2F5R3JhZGVEIikpIHsNCgkJCQkJaWYocHJl
dkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZM
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJhaXJ3YXlHcmFkZSIpKQ0KCQkJCQkJ
CS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiYWlyd2F5R3JhZGUiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsN
CgkJCQkJfQ0KCQkJCSAgICBwYWdlLnNldFRleHRBaXJ3YXlHcmFkZShsdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJhaXJ3YXlHcmFkZSIpKTsNCgkJCQl9DQoJ
CQkJDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJNQkFjdXRlR3JhZGVE
Iikpew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3Ry
aW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm1iQWN1
dGVHcmFkZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgibWJBY3V0ZUdyYWRlIikpKSl7DQoJCQkJ
CQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0
TUJBY3V0ZUdyYWRlKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm1iQWN1dGVH
cmFkZSIpKTsNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJN
QkFpcndheUdyYWRlRCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUh
PW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJtYkFpcndheUdyYWRlIikpDQoJCQkJCQkJLmVxdWFscyhTdHJp
bmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJtYkFpcndheUdy
YWRlIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJ
CQkJcGFnZS5zZXRUZXh0TUJBaXJ3YXlHcmFkZShsdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJtYkFpcndheUdyYWRlIikpOw0KCQkJCX0NCgkJCQlpZiAoYXR0
ckxpc3QuY29udGFpbnMoIk1CQ29tbWVudHNEIikpew0KCQkJCQlpZihwcmV2
THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm1iQ29tbWVudHMiKSkNCgkJCQkJCQku
ZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo
Im1iQ29tbWVudHMiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJ
CQkJfQ0KCQkJCQlwYWdlLnNldFRleHRNQkNvbW1lbnRzKGx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoIm1iQ29tbWVudHMiKSk7DQoJCQkJfQ0KDQoJCQkJaWYg
KGF0dHJMaXN0LmNvbnRhaW5zKCJCT1NEIikpew0KCQkJCQlpZihwcmV2THVu
Z0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoImJvcyIpKQ0KCQkJCQkJCS5lcXVhbHMoU3Ry
aW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYm9zIikpKSl7
DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5z
ZXRUZXh0Qk9TKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJvcyIpKTsNCgkJ
CQl9DQoNCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkNNVkQiKSl7DQoJ
CQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFs
dWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY212SW5mZWN0aW9u
IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRj
b21lLmdldFZhbHVlKCJjbXZJbmZlY3Rpb24iKSkpKXsNCgkJCQkJCXNhbWVQ
YXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRDTVYobHVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgiY212SW5mZWN0aW9uIikpOw0KCQkJCX0N
CgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkluZkQiKSkgew0KCQkJCQlp
ZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2Yo
cHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm90aGVySW5mZWN0aW9uIikp
DQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21l
LmdldFZhbHVlKCJvdGhlckluZmVjdGlvbiIpKSkpew0KCQkJCQkJc2FtZVBh
dCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dEluZihsdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJvdGhlckluZmVjdGlvbiIpKTsNCgkJCQl9
DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJJbmZPcmdhbmlzbXNEIikp
ew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5n
LnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZk9yZ2Fu
aXNtcyIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgiaW5mT3JnYW5pc21zIikpKSl7DQoJCQkJCQlz
YW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0SW5m
T3JnYW5pc21zKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZk9yZ2FuaXNt
cyIpKTsNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJDb21w
RCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0
cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjb21w
bGljYXRpb24iKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNvbXBsaWNhdGlvbiIpKSkpew0KCQkJ
CQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4
dENvbXAobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY29tcGxpY2F0aW9uIikp
Ow0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkNvbXBEZXNj
RCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0
cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjb21w
bGljYXRpb25EZXNjIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVP
ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjb21wbGljYXRpb25EZXNjIikp
KSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFn
ZS5zZXRUZXh0Q29tcERlc2MobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY29t
cGxpY2F0aW9uRGVzYyIpKTsJCQkJDQoJCQkJfQ0KDQoJCQkJaWYgKGF0dHJM
aXN0LmNvbnRhaW5zKCJBZG1pdHRlZEQiKSl7DQoJCQkJCWlmKHByZXZMdW5n
Q0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgiaG9zcGl0YWxpemF0aW9uIikpDQoJCQkJCQkJ
LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJob3NwaXRhbGl6YXRpb24iKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxz
ZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRBZG1pdHRlZChsdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJob3NwaXRhbGl6YXRpb24iKSk7CQkJCQ0KCQkJ
CX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlN1bW1hcnlDb21tZW50
c0QiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFT
dHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgic3Vt
bWFyeUNvbW1lbnRzIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVP
ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJzdW1tYXJ5Q29tbWVudHMiKSkp
KXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdl
LnNldFRleHRTdW1tYXJ5Q29tbWVudHMobHVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgic3VtbWFyeUNvbW1lbnRzIikpOwkJCQkNCgkJCQl9DQoJCQkJDQoJCQkJ
aWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJEb25vckNNVklnR0QiKSl7CQ0KCQkJ
CQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVl
T2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImRvbm9yQ01WSWdHIikp
DQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21l
LmdldFZhbHVlKCJkb25vckNNVklnRyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9
IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dEluZlRoZXJhcHko
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZG9ub3JDTVZJZ0ciKSk7CQkJCQ0K
CQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkRvbm9yQ01WSWdH
RGF0ZUQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYm
ICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
ZG9ub3JDTVZJZ0dEYXRlIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFs
dWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkb25vckNNVklnR0RhdGUi
KSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlw
YWdlLnNldFRleHREb25vckNNVklnR0RhdGUobHVuZ0NET3V0Y29tZS5nZXRW
YWx1ZSgiZG9ub3JDTVZJZ0dEYXRlIikpOwkJCQ0KCQkJCX0NCgkJCQlpZiAo
YXR0ckxpc3QuY29udGFpbnMoIkRvbm9yQ01WSWdNRCIpKXsNCgkJCQkJaWYo
cHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHBy
ZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkb25vckNNVklnTSIpKQ0KCQkJ
CQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRW
YWx1ZSgiZG9ub3JDTVZJZ00iKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxz
ZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHREb25vckNNVklnTShsdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJkb25vckNNVklnTSIpKTsJCQkJDQoJCQkJ
fQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiRG9ub3JDTVZJZ01EYXRl
RCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0
cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkb25v
ckNNVklnTURhdGUiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9m
KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImRvbm9yQ01WSWdNRGF0ZSIpKSkp
ew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uu
c2V0VGV4dERvbm9yQ01WSWdNRGF0ZShsdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJkb25vckNNVklnTURhdGUiKSk7CQkJCQ0KCQkJCX0NCg0KCQkJCWlmIChh
dHRyTGlzdC5jb250YWlucygiUHJlVHhDTVZJZ0dEIikpewkJDQoJCQkJCWlm
KHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihw
cmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicHJlVHhDTVZJZ0ciKSkNCgkJ
CQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0
VmFsdWUoInByZVR4Q01WSWdHIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFs
c2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0UHJlVHhDTVZJZ0cobHVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgicHJlVHhDTVZJZ0ciKSk7DQoJCQkJfQ0K
CQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUHJlVHhDTVZJZ0dEYXRlRCIp
KXsJCQ0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3Ry
aW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInByZVR4
Q01WSWdHRGF0ZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2Yo
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicHJlVHhDTVZJZ0dEYXRlIikpKSl7
DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5z
ZXRUZXh0UHJlVHhDTVZJZ0dEYXRlKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo
InByZVR4Q01WSWdHRGF0ZSIpKTsNCgkJCQl9DQoJCQkJDQoJCQkJaWYgKGF0
dHJMaXN0LmNvbnRhaW5zKCJQcmVUeENNVklnTUQiKSl7CQ0KCQkJCQlpZihw
cmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJl
dkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInByZVR4Q01WSWdNIikpDQoJCQkJ
CQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJwcmVUeENNVklnTSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNl
Ow0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dFByZVR4Q01WSWdNKGx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoInByZVR4Q01WSWdNIikpOw0KCQkJCX0NCgkJ
CQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlByZVR4Q01WSWdNRGF0ZUQiKSl7
CQkNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmlu
Zy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwcmVUeENN
VklnTURhdGUiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoInByZVR4Q01WSWdNRGF0ZSIpKSkpew0K
CQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0
VGV4dFByZVR4Q01WSWdNRGF0ZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJw
cmVUeENNVklnTURhdGUiKSk7DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5j
b250YWlucygiQkFMRCIpKSB7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21l
IT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgiYmFsIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVP
ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiYWwiKSkpKXsNCgkJCQkJCXNh
bWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRCQUwo
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFsIikpOw0KCQkJCQkNCgkJCQl9
DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJCQUxEYXRlRCIpKSB7DQoJ
CQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFs
dWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFsRGF0ZSIpKQ0K
CQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgiYmFsRGF0ZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNl
Ow0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dEJBTERhdGUobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgiYmFsRGF0ZSIpKTsNCgkJCQkJDQoJCQkJfQ0KCQkJ
CWlmIChhdHRyTGlzdC5jb250YWlucygiQkFMQ3VsdHVyZUQiKSkgew0KCQkJ
CQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVl
T2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhbENlbGxDdWx0dXJl
IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRj
b21lLmdldFZhbHVlKCJiYWxDZWxsQ3VsdHVyZSIpKSkpew0KCQkJCQkJc2Ft
ZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dEJBTEN1
bHR1cmUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFsQ2VsbEN1bHR1cmUi
KSk7DQoJCQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMo
IkJBTE9yZ2FuaXNtc0QiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21l
IT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgiYmFsT3JnYW5pc21zIikpDQoJCQkJCQkJLmVxdWFscyhTdHJp
bmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiYWxPcmdhbmlz
bXMiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJ
CQlwYWdlLnNldFRleHRCQUxPcmdhbmlzbXMobHVuZ0NET3V0Y29tZS5nZXRW
YWx1ZSgiYmFsT3JnYW5pc21zIikpOw0KCQkJCQkNCgkJCQl9DQoJCQkJaWYg
KGF0dHJMaXN0LmNvbnRhaW5zKCJCQUxJQ0QiKSl7DQoJCQkJCWlmKHByZXZM
dW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFsSUMiKSkNCgkJCQkJCQkuZXF1YWxz
KFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhbElD
IikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJ
cGFnZS5zZXRUZXh0QkFMSUMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFs
SUMiKSk7DQoJCQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFp
bnMoIkJBTFBDRCIpKSB7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1u
dWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRW
YWx1ZSgiYmFsUEMiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9m
KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhbFBDIikpKSl7DQoJCQkJCQlz
YW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0QkFM
UEMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFsUEMiKSk7DQoJCQkJCQ0K
CQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkZ1bmN0aW9uVGVz
dEQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFT
dHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZnVu
Y3Rpb25UZXN0IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihs
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJmdW5jdGlvblRlc3QiKSkpKXsNCgkJ
CQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRl
eHRGdW5jdGlvblRlc3QobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZnVuY3Rp
b25UZXN0IikpOw0KCQkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNv
bnRhaW5zKCJCZXN0RkVWMUQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRj
b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgiYmVzdEZFVjEiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmlu
Zy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJlc3RGRVYxIikp
KSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJcGFn
ZS5zZXRUZXh0QmVzdEZFVjEobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmVz
dEZFVjEiKSk7DQoJCQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29u
dGFpbnMoIkZFVjFEIikpew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9
bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0
VmFsdWUoIkZFVjEiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9m
KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIkZFVjEiKSkpKXsNCgkJCQkJCXNh
bWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRGRVYx
KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIkZFVjEiKSk7DQoJCQkJCQ0KCQkJ
CX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkRlbHRhRkVWMUQiKSl7
DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcu
dmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZGVsdGFGRVYx
IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRj
b21lLmdldFZhbHVlKCJkZWx0YUZFVjEiKSkpKXsNCgkJCQkJCXNhbWVQYXQg
PSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHREZWx0YUZFVjEo
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZGVsdGFGRVYxIikpOw0KCQkJCQkN
CgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJGVkNEIikpew0K
CQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZh
bHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIkZWQyIpKQ0KCQkJ
CQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRW
YWx1ZSgiRlZDIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJ
CX0NCgkJCQkJcGFnZS5zZXRUZXh0RlZDKGx1bmdDRE91dGNvbWUuZ2V0VmFs
dWUoIkZWQyIpKTsNCgkJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5j
b250YWlucygiTzJTYXREIikpew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29t
ZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUu
Z2V0VmFsdWUoIm8yU2F0IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFs
dWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJvMlNhdCIpKSkpew0KCQkJ
CQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4
dE8yU2F0KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm8yU2F0IikpOw0KCQkJ
CQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJSZWpEIikp
IHsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmlu
Zy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWoiKSkN
CgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUu
Z2V0VmFsdWUoInJlaiIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K
CQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dFJlaihsdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJyZWoiKSk7DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250
YWlucygiUmVqVGhEIikpIHsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUh
PW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJyZWpUaCIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVl
T2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVqVGgiKSkpKXsNCgkJCQkJ
CXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNldFRleHRS
ZWpUaChsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWpUaCIpKTsNCgkJCQkJ
DQoJCQkJfQ0KDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJXQkNDb3Vu
dEQiKSl7DQoJCQkJCWlmKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoIndiY0Nv
dW50IikhPW51bGwgICYmICFsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ3YmND
b3VudCIpLnRyaW0oKS5lcXVhbHMoIiIpKXsNCgkJCQkJCWlmKCFTdHJpbmcu
dmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ3YmNDb3VudCIpKS5z
dGFydHNXaXRoKCItMSIpKXsNCgkJCQkJCQlwYWdlLnNldFRleHRXQkNDb3Vu
dChsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ3YmNDb3VudCIpKTsNCgkJCQkJ
CX0NCgkJCQkJCWlmKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0
VmFsdWUoIndiY0NvdW50IikpLnN0YXJ0c1dpdGgoIi0xIikpew0KCQkJCQkJ
CXBhZ2Uuc2V0VGV4dFdCQ0NvdW50KCIoIitsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJ3YmNDb3VudCIpKyIpIik7DQoJCQkJCQl9DQoJCQkJCX1lbHNlew0K
CQkJCQkJcGFnZS5zZXRUZXh0V0JDQ291bnQoIiIpOw0KCQkJCQl9DQoJCQkJ
CWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVP
ZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgid2JjQ291bnQiKSkNCgkJ
CQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0
VmFsdWUoIndiY0NvdW50IikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7
DQoJCQkJCX0NCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJI
R0JDb3VudEQiKSl7DQoJCQkJCWlmKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo
ImhnYkNvdW50IikhPW51bGwgICYmICFsdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJoZ2JDb3VudCIpLnRyaW0oKS5lcXVhbHMoIiIpKXsgDQoJCQkJCQlpZigh
U3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaGdiQ291
bnQiKSkuc3RhcnRzV2l0aCgiLTEiKSl7DQoJCQkJCQkJcGFnZS5zZXRUZXh0
SEdCQ291bnQobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaGdiQ291bnQiKSk7
DQoJCQkJCQl9DQoJCQkJCQlpZihTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRj
b21lLmdldFZhbHVlKCJoZ2JDb3VudCIpKS5zdGFydHNXaXRoKCItMSIpKXsN
CgkJCQkJCQlwYWdlLnNldFRleHRIR0JDb3VudCgiKCIrbHVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgiaGdiQ291bnQiKSsiKSIpOw0KCQkJCQkJfQ0KCQkJCQl9
ZWxzZXsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEhHQkNvdW50KCIiKTsNCgkJCQkJ
fQ0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5n
LnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImhnYkNvdW50
IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRj
b21lLmdldFZhbHVlKCJoZ2JDb3VudCIpKSkpew0KCQkJCQkJc2FtZVBhdCA9
IGZhbHNlOw0KCQkJCQl9DQoJCQkJCS8vcGFnZS5zZXRUZXh0SEdCQ291bnQo
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaGdiQ291bnQiKSk7DQoJCQkJfQ0K
CQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUGxhdGVsZXRDb3VudEQiKSl7
DQoJCQkJCWlmKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBsYXRlbGV0Q291
bnQiKSE9bnVsbCAgJiYgIWx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBsYXRl
bGV0Q291bnQiKS50cmltKCkuZXF1YWxzKCIiKSl7IA0KCQkJCQkJaWYoIVN0
cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBsYXRlbGV0
Q291bnQiKSkuc3RhcnRzV2l0aCgiLTEiKSl7DQoJCQkJCQkJcGFnZS5zZXRU
ZXh0UGxhdGVsZXRDb3VudChsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwbGF0
ZWxldENvdW50IikpOw0KCQkJCQkJfQ0KCQkJCQkJaWYoU3RyaW5nLnZhbHVl
T2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicGxhdGVsZXRDb3VudCIpKS5z
dGFydHNXaXRoKCItMSIpKXsNCgkJCQkJCQlwYWdlLnNldFRleHRQbGF0ZWxl
dENvdW50KCIoIitsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwbGF0ZWxldENv
dW50IikrIikiKTsNCgkJCQkJCX0NCgkJCQkJfWVsc2V7DQoJCQkJCQlwYWdl
LnNldFRleHRQbGF0ZWxldENvdW50KCIiKTsNCgkJCQkJfQ0KCQkJCQkNCgkJ
CQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1
ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwbGF0ZWxldENvdW50
IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRj
b21lLmdldFZhbHVlKCJwbGF0ZWxldENvdW50IikpKSl7DQoJCQkJCQlzYW1l
UGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0
LmNvbnRhaW5zKCJCYW5kc0QiKSl7CQkJCQ0KCQkJCQlpZihsdW5nQ0RPdXRj
b21lLmdldFZhbHVlKCJiYW5kcyIpIT1udWxsICAmJiAhbHVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgiYmFuZHMiKS50cmltKCkuZXF1YWxzKCIiKSl7IA0KCQkJ
CQkJaWYoRG91YmxlLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
YmFuZHMiKSkuZG91YmxlVmFsdWUoKT4wLjApew0KCQkJCQkgICAgICAgcGFn
ZS5zZXRUZXh0QmFuZHMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYmFuZHMi
KSk7DQoJCQkJCQl9DQoJCQkJCQlpZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJiYW5kcyIpIT1udWxsICYmIA0KCQkJCQkJCQlEb3VibGUudmFsdWVPZihs
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiYW5kcyIpKS5kb3VibGVWYWx1ZSgp
PDAuMCl7DQoJCQkJCQkgICBwYWdlLnNldFRleHRCYW5kcygiKCIrbHVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgiYmFuZHMiKSsiKSIpOw0KCQkJCQkJfQ0KCQkJ
CQl9ZWxzZXsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEJhbmRzKCIiKTsNCgkJCQkJ
fQ0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5n
LnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhbmRzIikp
DQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21l
LmdldFZhbHVlKCJiYW5kcyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNl
Ow0KCQkJCQl9CQkJCQkNCgkJCQl9DQoJCQkJDQoJCQkJaWYgKGF0dHJMaXN0
LmNvbnRhaW5zKCJDcmVhdGluaW5lRCIpKXsJCQkJDQoJCQkJCWlmKGx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoImNyZWF0aW5pbmUiKSE9bnVsbCAgJiYgIWx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNyZWF0aW5pbmUiKS50cmltKCkuZXF1
YWxzKCIiKSl7IA0KCQkJCQkJaWYoRG91YmxlLnZhbHVlT2YobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgiY3JlYXRpbmluZSIpKS5kb3VibGVWYWx1ZSgpPjAu
MCl7DQoJCQkJCSAgICAgICBwYWdlLnNldFRleHRDcmVhdGluaW5lKGx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoImNyZWF0aW5pbmUiKSk7DQoJCQkJCQl9DQoJ
CQkJCQlpZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjcmVhdGluaW5lIikh
PW51bGwgJiYgDQoJCQkJCQkJCURvdWJsZS52YWx1ZU9mKGx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoImNyZWF0aW5pbmUiKSkuZG91YmxlVmFsdWUoKTwwLjAp
ew0KCQkJCQkJICAgcGFnZS5zZXRUZXh0Q3JlYXRpbmluZSgiKCIrbHVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgiY3JlYXRpbmluZSIpKyIpIik7DQoJCQkJCQl9
DQoJCQkJCX1lbHNlew0KCQkJCQkJcGFnZS5zZXRUZXh0Q3JlYXRpbmluZSgi
Iik7DQoJCQkJCX0NCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwg
JiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJjcmVhdGluaW5lIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVP
ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjcmVhdGluaW5lIikpKSl7DQoJ
CQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0JCQkJDQoJCQkJfQ0KCQkJ
CQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQ3JlYXRpbmluZURhdGVE
IikpewkJCQkNCgkJCQkJcGFnZS5zZXRUZXh0Q3JlYXRpbmluZURhdGUobHVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgiY3JlYXRpbmluZURhdGUiKSk7CQkJCQ0K
CQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZh
bHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImNyZWF0aW5pbmVE
YXRlIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJjcmVhdGluaW5lRGF0ZSIpKSkpew0KCQkJCQkJ
c2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9CQkJCQ0KCQkJCX0NCgkJCQkNCgkJ
CQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkJVTkQiKSl7CQkJCQ0KCQkJCQlp
ZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJidW4iKSE9bnVsbCAgJiYgIWx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJ1biIpLnRyaW0oKS5lcXVhbHMoIiIp
KXsgDQoJCQkJCQlpZihEb3VibGUudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJidW4iKSkuZG91YmxlVmFsdWUoKT4wLjApew0KCQkJCQkgICAg
ICAgcGFnZS5zZXRUZXh0Q3JlYXRpbmluZShsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJidW4iKSk7DQoJCQkJCQl9DQoJCQkJCQlpZihsdW5nQ0RPdXRjb21l
LmdldFZhbHVlKCJidW4iKSE9bnVsbCAmJiANCgkJCQkJCQkJRG91YmxlLnZh
bHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYnVuIikpLmRvdWJsZVZh
bHVlKCk8MC4wKXsNCgkJCQkJCSAgIHBhZ2Uuc2V0VGV4dENyZWF0aW5pbmUo
IigiK2x1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJ1biIpKyIpIik7DQoJCQkJ
CQl9DQoJCQkJCX1lbHNlew0KCQkJCQkJcGFnZS5zZXRUZXh0Q3JlYXRpbmlu
ZSgiIik7DQoJCQkJCX0NCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51
bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJidW4iKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJ1biIpKSkpew0KCQkJCQkJc2FtZVBh
dCA9IGZhbHNlOw0KCQkJCQl9CQkJCQ0KCQkJCX0NCgkJCQkNCgkJCQlpZiAo
YXR0ckxpc3QuY29udGFpbnMoIkJVTkRhdGVEIikpewkJCQkNCgkJCQkJcGFn
ZS5zZXRUZXh0Q3JlYXRpbmluZURhdGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiYnVuRGF0ZSIpKTsJCQkJDQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21l
IT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgiYnVuRGF0ZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZh
bHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYnVuRGF0ZSIpKSkpew0K
CQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9CQkJCQ0KCQkJCX0NCgkJ
CQkNCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkJBTENvbW1lbnRzRCIp
KXsNCgkJCQkJcGFnZS5zZXRUZXh0QkFMQ29tbWVudHMobHVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgiYmFsQ29tbWVudHMiKSk7DQoJCQkJCWlmKHByZXZMdW5n
Q0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgiYmFsQ29tbWVudHMiKSkNCgkJCQkJCQkuZXF1
YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJh
bENvbW1lbnRzIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJ
CX0NCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJJbmZTY29y
ZUQiKSl7DQoJCQkJCXBhZ2Uuc2V0VGV4dEluZlNjb3JlKGx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoImluZmVjdGlvblNjb3JlIikpOw0KCQkJCQlpZihwcmV2
THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZmVjdGlvblNjb3JlIikpDQoJCQkJ
CQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJpbmZlY3Rpb25TY29yZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZh
bHNlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlu
cygiSW5mU2NvcmVDb21tZW50c0QiKSkgew0KCQkJCQlwYWdlLnNldFRleHRJ
bmZTY29yZUNvbW1lbnRzKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZmVj
dGlvblNjb3JlQ29tbWVudHMiKSk7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRj
b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgiaW5mZWN0aW9uU2NvcmVDb21tZW50cyIpKQ0KCQkJCQkJ
CS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiaW5mZWN0aW9uU2NvcmVDb21tZW50cyIpKSkpew0KCQkJCQkJc2FtZVBh
dCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5j
b250YWlucygiSW5mQ29tbWVudHNEIikpIHsNCgkJCQkJcGFnZS5zZXRUZXh0
SW5mQ29tbWVudHMobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5mZWN0aW9u
Q29tbWVudHMiKSk7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxs
ICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiaW5mZWN0aW9uQ29tbWVudHMiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmlu
Zy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluZmVjdGlvbkNv
bW1lbnRzIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0N
CgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJDb21wQ29tbWVu
dHNEIikpIHsNCgkJCQkJcGFnZS5zZXRUZXh0Q29tcENvbW1lbnRzKGx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoImNvbXBDb21tZW50cyIpKTsNCgkJCQkJaWYo
cHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHBy
ZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjb21wQ29tbWVudHMiKSkNCgkJ
CQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0
VmFsdWUoImNvbXBDb21tZW50cyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZh
bHNlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlu
cygiTWVkQ29tbWVudHNEIikpew0KCQkJCQlwYWdlLnNldFRleHRNZWRDb21t
ZW50cyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJtZWRDb21tZW50cyIpKTsN
CgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52
YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJtZWRDb21tZW50
cyIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgibWVkQ29tbWVudHMiKSkpKXsNCgkJCQkJCXNhbWVQ
YXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3Qu
Y29udGFpbnMoIkZuQ29tbWVudHNEIikpIHsNCgkJCQkJcGFnZS5zZXRUZXh0
Rm5Db21tZW50cyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJmdW5jdGlvbkNv
bW1lbnRzIikpOw0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAm
JiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo
ImZ1bmN0aW9uQ29tbWVudHMiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52
YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImZ1bmN0aW9uQ29tbWVu
dHMiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJ
CX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIlJlamVjdGlvblRyZWF0
bWVudHNEIikpew0KCQkJCQlwYWdlLnNldFRleHRSZWplY3Rpb25UcmVhdG1l
bnRzKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlamVjdGlvblRyZWF0bWVu
dHMiKSk7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFT
dHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVq
ZWN0aW9uVHJlYXRtZW50cyIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZh
bHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVqZWN0aW9uVHJlYXRt
ZW50cyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJ
CQkJfQ0KCQkJCQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUmVqVGhS
ZWFzb25zRCIpKXsNCgkJCQkJcGFnZS5zZXRUZXh0UmVqVGhSZWFzb25zKGx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlalRoUmVhc29ucyIpKTsNCgkJCQkJ
aWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9m
KHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWpUaFJlYXNvbnMiKSkN
CgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUu
Z2V0VmFsdWUoInJlalRoUmVhc29ucyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9
IGZhbHNlOw0KCQkJCQl9DQoJCQkJfQ0KDQoJCQkJaWYgKGF0dHJMaXN0LmNv
bnRhaW5zKCJJbmZUaGVyYXB5RCIpKSB7DQoJCQkJCXBhZ2Uuc2V0VGV4dElu
ZlRoZXJhcHkobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5mVGhlcmFweSIp
KTsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmlu
Zy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmZUaGVy
YXB5IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJpbmZUaGVyYXB5IikpKSl7DQoJCQkJCQlzYW1l
UGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0
LmNvbnRhaW5zKCJEcmF3RCIpKSB7DQoJCQkJCXBhZ2Uuc2V0VGV4dERyYXco
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZHJhdyIpKTsNCgkJCQkJaWYocHJl
dkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZM
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkcmF3IikpDQoJCQkJCQkJLmVxdWFs
cyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJkcmF3
IikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQl9
DQoNCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkNTRCIpKXsNCgkJCQkJ
cGFnZS5zZXRUZXh0Q1MobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiY2xpbmlj
YWxTeW1wdG9tcyIpKTsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51
bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJjbGluaWNhbFN5bXB0b21zIikpDQoJCQkJCQkJLmVxdWFscyhTdHJp
bmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJjbGluaWNhbFN5
bXB0b21zIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0N
CgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJJbmRUaGVyYXB5
RCIpKXsNCgkJCQkJcGFnZS5zZXRUZXh0SW5kVGhlcmFweShsdW5nQ0RPdXRj
b21lLmdldFZhbHVlKCJpbmRUaGVyYXB5IikpOw0KCQkJCQlpZihwcmV2THVu
Z0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoImluZFRoZXJhcHkiKSkNCgkJCQkJCQkuZXF1
YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImlu
ZFRoZXJhcHkiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJ
fQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkluZFRoZXJh
cHlZTkQiKSl7DQoJCQkJCXBhZ2Uuc2V0VGV4dEluZFRoZXJhcHlZTihsdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJpbmRUaGVyYXB5WU4iKSk7DQoJCQkJCWlm
KHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihw
cmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweVlOIikpDQoJ
CQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJpbmRUaGVyYXB5WU4iKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBm
YWxzZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFp
bnMoIkluZFRoZXJhcHlDb21wRGF0ZUQiKSl7DQoJCQkJCXBhZ2Uuc2V0VGV4
dEluZFRoZXJhcHlDb21wRGF0ZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJp
bmRUaGVyYXB5Q29tcGxldGlvbkRhdGUiKSk7DQoJCQkJCWlmKHByZXZMdW5n
Q0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweUNvbXBsZXRpb25EYXRlIikp
DQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21l
LmdldFZhbHVlKCJpbmRUaGVyYXB5Q29tcGxldGlvbkRhdGUiKSkpKXsNCgkJ
CQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlpZiAo
YXR0ckxpc3QuY29udGFpbnMoIkluZFRoZXJhcHlOb09mRG9zZXNEIikpew0K
CQkJCQlwYWdlLnNldFRleHRJbmRUaGVyYXB5Tm9PZkRvc2VzKGx1bmdDRE91
dGNvbWUuZ2V0VmFsdWUoImluZFRoZXJhcHlOb09mRG9zZXMiKSk7DQoJCQkJ
CWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVP
ZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweU5vT2ZE
b3NlcyIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweU5vT2ZEb3NlcyIpKSkpew0K
CQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWlm
IChhdHRyTGlzdC5jb250YWlucygiSW5kVGhlcmFweUFtdFBlckRvc2VEIikp
ew0KCQkJCQlwYWdlLnNldFRleHRJbmRUaGVyYXB5QW10UGVyRG9zZShsdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJpbmRUaGVyYXB5QW10UGVyRG9zZSIpKTsN
CgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52
YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmRUaGVyYXB5
QW10UGVyRG9zZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2Yo
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFweUFtdFBlckRvc2Ui
KSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0N
CgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkluZFRoZXJhcHlDb21tZW50
c0QiKSl7DQoJCQkJCXBhZ2Uuc2V0VGV4dEluZFRoZXJhcHlDb21tZW50cyhs
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmRUaGVyYXB5Q29tbWVudHMiKSk7
DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcu
dmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiaW5kVGhlcmFw
eUNvbW1lbnRzIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihs
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmRUaGVyYXB5Q29tbWVudHMiKSkp
KXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0NCg0K
CQkJCQ0KCQkJCQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiSGVtYXRv
bG9neUQiKSl7DQoJCQkJCXBhZ2Uuc2V0VGV4dEhlbWF0b2xvZ3kobHVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgiaGVtYXRvbG9neSIpKTsNCgkJCQkJaWYocHJl
dkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZM
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJoZW1hdG9sb2d5IikpDQoJCQkJCQkJ
LmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVl
KCJoZW1hdG9sb2d5IikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJ
CQkJCX0NCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJSZWNl
cENNVklnR0QiKSl7DQoJCQkJCXBhZ2Uuc2V0VGV4dFJlY2VwQ01WSWdHKGx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlY2VwQ01WSWdHIikpOw0KCQkJCQlp
ZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2Yo
cHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlY2VwQ01WSWdHIikpDQoJ
CQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJyZWNlcENNVklnRyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZh
bHNlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlu
cygiUmVjZXBDTVZEaWFnRGF0ZUQiKSl7DQoJCQkJCXBhZ2Uuc2V0VGV4dFJl
Y2VwQ01WRGlhZ0RhdGUobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicmVjZXBD
TVZEaWFnRGF0ZSIpKTsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51
bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJyZWNlcENNVkRpYWdEYXRlIikpDQoJCQkJCQkJLmVxdWFscyhTdHJp
bmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWNlcENNVkRp
YWdEYXRlIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0N
CgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJSZWNlcENNVklu
ZlR5cGVEIikpIHsNCgkJCQkJcGFnZS5zZXRUZXh0UmVjZXBDTVZJbmZUeXBl
KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlY2VwQ01WSW5mVHlwZSIpKTsN
CgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52
YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWNlcENNVklu
ZlR5cGUiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoInJlY2VwQ01WSW5mVHlwZSIpKSkpew0KCQkJ
CQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWlmIChh
dHRyTGlzdC5jb250YWlucygiUmVjZXBpZW50Q01WTWV0aG9kRCIpKXsNCgkJ
CQkJcGFnZS5zZXRUZXh0UmVjZXBpZW50Q01WTWV0aG9kKGx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoInJlY2VwQ01WTWV0aG9kIikpOw0KCQkJCQlpZihwcmV2
THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlY2VwQ01WTWV0aG9kIikpDQoJCQkJ
CQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJyZWNlcENNVk1ldGhvZCIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZh
bHNlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlu
cygiUmVjZXBpZW50Q01WT3JnYW5EIikpew0KCQkJCQlwYWdlLnNldFRleHRS
ZWNlcGllbnRDTVZPcmdhbihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJyZWNl
cENNVk9yZ2FuIikpOw0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVs
bCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFs
dWUoInJlY2VwQ01WT3JnYW4iKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52
YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlY2VwQ01WT3JnYW4i
KSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0N
CgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkRvbm9yQ01WSWdHRCIpKXsN
CgkJCQkJcGFnZS5zZXRUZXh0RG9ub3JDTVZJZ0cobHVuZ0NET3V0Y29tZS5n
ZXRWYWx1ZSgiZG9ub3JDTVZJZ0ciKSk7DQoJCQkJCWlmKHByZXZMdW5nQ0RP
dXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgiZG9ub3JDTVZJZ0ciKSkNCgkJCQkJCQkuZXF1YWxz
KFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImRvbm9y
Q01WSWdHIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0N
CgkJCQl9DQoJCQkJU3RyaW5nIGJpb3BzeUhpc3RvcnkgPSBudWxsOw0KCQkJ
CVN0cmluZyBhcnJCaW9wc3lIaXN0b3J5W10gPSBudWxsOw0KCQkJCWlmIChh
dHRyTGlzdC5jb250YWlucygiQmlvcHN5SGlzdG9yeUQiKSl7DQoJCQkJCWJp
b3BzeUhpc3RvcnkgPSBsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiaW9wc3lI
aXN0b3J5Iik7DQoJCQkJCQ0KCQkJCQlpZihiaW9wc3lIaXN0b3J5IT1udWxs
ICYmIGJpb3BzeUhpc3RvcnkudHJpbSgpLmxlbmd0aCgpPjApew0KCQkJCQkJ
YXJyQmlvcHN5SGlzdG9yeSA9IGJpb3BzeUhpc3Rvcnkuc3BsaXQoIiwiKTsJ
CQkJCQkJDQoJCQkJCQkvL3BhZ2Uuc2V0VGV4dEJpb3BzeUhpc3RvcnlBMChh
cnJCaW9wc3lIaXN0b3J5WzBdLnN1YnN0cmluZyhhcnJCaW9wc3lIaXN0b3J5
WzBdLmluZGV4T2YoJy0nKSsxLGFyckJpb3BzeUhpc3RvcnlbMF0ubGVuZ3Ro
KCkpKTsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEJpb3BzeUhpc3RvcnkoYXJyQmlv
cHN5SGlzdG9yeVswXS5zdWJzdHJpbmcoYXJyQmlvcHN5SGlzdG9yeVswXS5p
bmRleE9mKCctJykrMSxhcnJCaW9wc3lIaXN0b3J5WzBdLmxlbmd0aCgpKSk7
DQoJCQkJCQlwYWdlLnNldFRleHRCaW9wc3lIaXN0b3J5QTEoYXJyQmlvcHN5
SGlzdG9yeVsxXS5zdWJzdHJpbmcoYXJyQmlvcHN5SGlzdG9yeVsxXS5pbmRl
eE9mKCctJykrMSxhcnJCaW9wc3lIaXN0b3J5WzFdLmxlbmd0aCgpKSk7DQoJ
CQkJCQlwYWdlLnNldFRleHRCaW9wc3lIaXN0b3J5QTIoYXJyQmlvcHN5SGlz
dG9yeVsyXS5zdWJzdHJpbmcoYXJyQmlvcHN5SGlzdG9yeVsyXS5pbmRleE9m
KCctJykrMSxhcnJCaW9wc3lIaXN0b3J5WzJdLmxlbmd0aCgpKSk7DQoJCQkJ
CQlwYWdlLnNldFRleHRCaW9wc3lIaXN0b3J5QTMoYXJyQmlvcHN5SGlzdG9y
eVszXS5zdWJzdHJpbmcoYXJyQmlvcHN5SGlzdG9yeVszXS5pbmRleE9mKCct
JykrMSxhcnJCaW9wc3lIaXN0b3J5WzNdLmxlbmd0aCgpKSk7DQoJCQkJCQlw
YWdlLnNldFRleHRCaW9wc3lIaXN0b3J5QTQoYXJyQmlvcHN5SGlzdG9yeVs0
XS5zdWJzdHJpbmcoYXJyQmlvcHN5SGlzdG9yeVs0XS5pbmRleE9mKCctJykr
MSxhcnJCaW9wc3lIaXN0b3J5WzRdLmxlbmd0aCgpKSk7DQoJCQkJCQlwYWdl
LnNldFRleHRCaW9wc3lIaXN0b3J5T0IoYXJyQmlvcHN5SGlzdG9yeVs1XS5z
dWJzdHJpbmcoYXJyQmlvcHN5SGlzdG9yeVs1XS5pbmRleE9mKCctJykrMSxh
cnJCaW9wc3lIaXN0b3J5WzVdLmxlbmd0aCgpKSk7DQoJCQkJCQlwYWdlLnNl
dFRleHRCaW9wc3lIaXN0b3J5Qk9TKGFyckJpb3BzeUhpc3RvcnlbNl0uc3Vi
c3RyaW5nKGFyckJpb3BzeUhpc3RvcnlbNl0uaW5kZXhPZignLScpKzEsYXJy
QmlvcHN5SGlzdG9yeVs2XS5sZW5ndGgoKSkpOw0KCQkJCQkJcGFnZS5zZXRU
ZXh0QmlvcHN5SGlzdG9yeUNWUihhcnJCaW9wc3lIaXN0b3J5WzddLnN1YnN0
cmluZyhhcnJCaW9wc3lIaXN0b3J5WzddLmluZGV4T2YoJy0nKSsxLGFyckJp
b3BzeUhpc3RvcnlbN10ubGVuZ3RoKCkpKTsNCgkJCQkJCXBhZ2Uuc2V0VGV4
dEJpb3BzeUhpc3RvcnlCMChhcnJCaW9wc3lIaXN0b3J5WzhdLnN1YnN0cmlu
ZyhhcnJCaW9wc3lIaXN0b3J5WzhdLmluZGV4T2YoJy0nKSsxLGFyckJpb3Bz
eUhpc3RvcnlbOF0ubGVuZ3RoKCkpKTsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEJp
b3BzeUhpc3RvcnlCMShhcnJCaW9wc3lIaXN0b3J5WzldLnN1YnN0cmluZyhh
cnJCaW9wc3lIaXN0b3J5WzldLmluZGV4T2YoJy0nKSsxLGFyckJpb3BzeUhp
c3RvcnlbOV0ubGVuZ3RoKCkpKTsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEJpb3Bz
eUhpc3RvcnlCMihhcnJCaW9wc3lIaXN0b3J5WzEwXS5zdWJzdHJpbmcoYXJy
QmlvcHN5SGlzdG9yeVsxMF0uaW5kZXhPZignLScpKzEsYXJyQmlvcHN5SGlz
dG9yeVsxMF0ubGVuZ3RoKCkpKTsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEJpb3Bz
eUhpc3RvcnlCMyhhcnJCaW9wc3lIaXN0b3J5WzExXS5zdWJzdHJpbmcoYXJy
QmlvcHN5SGlzdG9yeVsxMV0uaW5kZXhPZignLScpKzEsYXJyQmlvcHN5SGlz
dG9yeVsxMV0ubGVuZ3RoKCkpKTsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEJpb3Bz
eUhpc3RvcnlCNChhcnJCaW9wc3lIaXN0b3J5WzEyXS5zdWJzdHJpbmcoYXJy
QmlvcHN5SGlzdG9yeVsxMl0uaW5kZXhPZignLScpKzEsYXJyQmlvcHN5SGlz
dG9yeVsxMl0ubGVuZ3RoKCkpKTsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEJpb3Bz
eUhpc3RvcnlCWChhcnJCaW9wc3lIaXN0b3J5WzEzXS5zdWJzdHJpbmcoYXJy
QmlvcHN5SGlzdG9yeVsxM10uaW5kZXhPZignLScpKzEsYXJyQmlvcHN5SGlz
dG9yeVsxM10ubGVuZ3RoKCkpKTsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEJpb3Bz
eUhpc3RvcnlDb21tZW50cyhhcnJCaW9wc3lIaXN0b3J5WzE0XS5zdWJzdHJp
bmcoOSxhcnJCaW9wc3lIaXN0b3J5WzE0XS5sZW5ndGgoKSkpOw0KCQkJCQkJ
aWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9m
KHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJiaW9wc3lIaXN0b3J5Iikp
DQoJCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgiYmlvcHN5SGlzdG9yeSIpKSkpew0KCQkJCQkJCXNhbWVQ
YXQgPSBmYWxzZTsNCgkJCQkJCX0NCgkJCQkJfWVsc2V7DQoJCQkJCQlwYWdl
LnNldFRleHRCaW9wc3lIaXN0b3J5KCIiKTsNCgkJCQkJCS8vcGFnZS5zZXRU
ZXh0QmlvcHN5SGlzdG9yeUEwKCIiKTsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEJp
b3BzeUhpc3RvcnlBMSgiIik7DQoJCQkJCQlwYWdlLnNldFRleHRCaW9wc3lI
aXN0b3J5QTIoIiIpOw0KCQkJCQkJcGFnZS5zZXRUZXh0QmlvcHN5SGlzdG9y
eUEzKCIiKTsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEJpb3BzeUhpc3RvcnlBNCgi
Iik7DQoJCQkJCQlwYWdlLnNldFRleHRCaW9wc3lIaXN0b3J5T0IoIiIpOw0K
CQkJCQkJcGFnZS5zZXRUZXh0QmlvcHN5SGlzdG9yeUJPUygiIik7DQoJCQkJ
CQlwYWdlLnNldFRleHRCaW9wc3lIaXN0b3J5Q1ZSKCIiKTsNCgkJCQkJCXBh
Z2Uuc2V0VGV4dEJpb3BzeUhpc3RvcnlCMCgiIik7DQoJCQkJCQlwYWdlLnNl
dFRleHRCaW9wc3lIaXN0b3J5QjEoIiIpOw0KCQkJCQkJcGFnZS5zZXRUZXh0
QmlvcHN5SGlzdG9yeUIyKCIiKTsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEJpb3Bz
eUhpc3RvcnlCMygiIik7DQoJCQkJCQlwYWdlLnNldFRleHRCaW9wc3lIaXN0
b3J5QjQoIiIpOw0KCQkJCQkJcGFnZS5zZXRUZXh0QmlvcHN5SGlzdG9yeUJY
KCIiKTsNCgkJCQkJCXBhZ2Uuc2V0VGV4dEJpb3BzeUhpc3RvcnlDb21tZW50
cygiIik7DQoJCQkJCQliaW9wc3lIaXN0b3J5ID0gbnVsbDsNCgkJCQkJCWFy
ckJpb3BzeUhpc3RvcnkgPSBudWxsOw0KCQkJCQkJDQoJCQkJCX0NCgkJCQl9
DQoJCQkJDQoJCQkJDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJSZWpU
cmVhdG1lbnRIaXN0b3J5RCIpKXsNCgkJCQkJU3RyaW5nW10gcmVqVHJlYXRt
ZW50SGlzdG9yeUFyciA9IGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlalRy
ZWF0bWVudEhpc3RvcnkiKS5zcGxpdCgiLy8iKTsNCgkJCQkJDQoJCQkJCVN0
cmluZyByZWpUcmVhdG1lbnRzID0iIjsNCgkJCQkJU3RyaW5nIG5vT2ZSZWpU
cmVhdG1lbnRzPSIiOw0KCQkJCQlTdHJpbmcgcmVqVHJlYXRtZW50RW5kRGF0
ZT0iIjsNCgkJCQkJDQoJCQkJCVN0cmluZyBbXSByZWpUcmVhdG1lbnRzQXJy
PW51bGw7DQoJCQkJCWlmKHJlalRyZWF0bWVudEhpc3RvcnlBcnIhPW51bGwg
JiYgcmVqVHJlYXRtZW50SGlzdG9yeUFyci5sZW5ndGg+MCl7DQoJCQkJCQlm
b3IoaW50IG0gPTA7bTxyZWpUcmVhdG1lbnRIaXN0b3J5QXJyLmxlbmd0aDtt
Kyspew0KCQkJCQkJCWlmKHJlalRyZWF0bWVudEhpc3RvcnlBcnIhPW51bGwg
JiYgcmVqVHJlYXRtZW50SGlzdG9yeUFyci5sZW5ndGg+MCl7DQoJCQkJCQkJ
CXJlalRyZWF0bWVudHNBcnIgPSByZWpUcmVhdG1lbnRIaXN0b3J5QXJyW21d
LnNwbGl0KCItIik7CQkJCQkJCQkNCgkJCQkJCQkJaWYocmVqVHJlYXRtZW50
c0FyciE9bnVsbCAmJiByZWpUcmVhdG1lbnRzQXJyLmxlbmd0aD4xKXsNCgkJ
CQkJCQkJCWlmKG09PTApew0KCQkJCQkJCQkJCXJlalRyZWF0bWVudHMgKz0g
cmVqVHJlYXRtZW50c0FyclswXS50cmltKCk7DQoJCQkJCQkJCQkJbm9PZlJl
alRyZWF0bWVudHMgKz0gcmVqVHJlYXRtZW50c0FyclsxXS50cmltKCk7DQoJ
CQkJCQkJCQkJcmVqVHJlYXRtZW50RW5kRGF0ZSArPSByZWpUcmVhdG1lbnRz
QXJyWzJdLnRyaW0oKTsNCgkJCQkJCQkJCX1lbHNlew0KCQkJCQkJCQkJCXJl
alRyZWF0bWVudHMgKz0gIiAsICIrcmVqVHJlYXRtZW50c0FyclswXS50cmlt
KCk7DQoJCQkJCQkJCQkJbm9PZlJlalRyZWF0bWVudHMgKz0gIiAsICIrcmVq
VHJlYXRtZW50c0FyclsxXS50cmltKCk7DQoJCQkJCQkJCQkJcmVqVHJlYXRt
ZW50RW5kRGF0ZSArPSAiICwgIisgcmVqVHJlYXRtZW50c0FyclsyXS50cmlt
KCk7DQoJCQkJCQkJCQkJDQoJCQkJCQkJCQl9DQoJCQkJCQkJCX0NCgkJCQkJ
CQl9DQoJCQkJCQl9DQoJCQkJCQlwYWdlLnNldFRleHRSZWpUcmVhdG1lbnRI
aXN0b3J5KHJlalRyZWF0bWVudHMpOw0KCQkJCQkJcGFnZS5zZXRUZXh0UmVq
VHJlYXRtZW50SGlzdG9yeU5vT2ZUcmVhdG1lbnQobm9PZlJlalRyZWF0bWVu
dHMpOw0KCQkJCQkJcGFnZS5zZXRUZXh0UmVqVHJlYXRtZW50SGlzdG9yeUVu
ZERhdGUocmVqVHJlYXRtZW50RW5kRGF0ZSk7DQoJCQkJCX0NCgkJCQkJDQoJ
CQkJCS8vcGFnZS5zZXRUZXh0UmVqVHJlYXRtZW50SGlzdG9yeShsdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJyZWpUcmVhdG1lbnRIaXN0b3J5IikpOw0KCQkJ
CQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVl
T2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInJlalRyZWF0bWVudEhp
c3RvcnkiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoInJlalRyZWF0bWVudEhpc3RvcnkiKSkpKXsN
CgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQlp
ZiAoYXR0ckxpc3QuY29udGFpbnMoIlN0ZXJvaWRzRCIpKXsNCgkJCQkJYWwg
PSBzcGxpdE1lZGljYXRpb25Gb3JFeHBvcnQobHVuZ0NET3V0Y29tZS5nZXRT
dGVyb2lkcygpKTsNCgkJCQkJcGFnZS5zZXRUZXh0U3Rlcm9pZHMoIiIrYWwu
Z2V0KDApKTsNCgkJCQkJcGFnZS5zZXRUZXh0U3Rlcm9pZHNVbml0cygiIith
bC5nZXQoMSkpOw0KCQkJCQkvL3BhZ2Uuc2V0VGV4dFN0ZXJvaWRzKGx1bmdD
RE91dGNvbWUuZ2V0U3Rlcm9pZHMoKSk7DQoJCQkJCWlmKHByZXZMdW5nQ0RP
dXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0
Y29tZS5nZXRTdGVyb2lkcygpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZh
bHVlT2YobHVuZ0NET3V0Y29tZS5nZXRTdGVyb2lkcygpKSkpew0KCQkJCQkJ
c2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWlmIChhdHRy
TGlzdC5jb250YWlucygiUHJlZG5pc29uZUQiKSl7DQoJCQkJCWlmKHByZXZM
dW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgicHJlZG5pc29uZSIpKQ0KCQkJCQkJCS5l
cXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
cHJlZG5pc29uZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJ
CQl9DQoJCQkJCWFsID0gc3BsaXRNZWRpY2F0aW9uRm9yRXhwb3J0KGx1bmdD
RE91dGNvbWUuZ2V0VmFsdWUoInByZWRuaXNvbmUiKSk7DQoJCQkJCXBhZ2Uu
c2V0VGV4dFByZWRuaXNvbmUoIiIrYWwuZ2V0KDApKTsNCgkJCQkJcGFnZS5z
ZXRUZXh0UHJlZG5pc29uZVVuaXRzKCIiK2FsLmdldCgxKSk7CQkJCQkNCgkJ
CQkJLy9wYWdlLnNldFRleHRQcmVkbmlzb25lKGx1bmdDRE91dGNvbWUuZ2V0
VmFsdWUoInByZWRuaXNvbmUiKSk7CQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0
ckxpc3QuY29udGFpbnMoIlByZWRuaXNvbG9uZUQiKSl7DQoJCQkJCWlmKHBy
ZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2
THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicHJlZG5pc29sb25lIikpDQoJCQkJ
CQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJwcmVkbmlzb2xvbmUiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxz
ZTsNCgkJCQkJfQ0KCQkJCQlhbCA9IHNwbGl0TWVkaWNhdGlvbkZvckV4cG9y
dChsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJwcmVkbmlzb2xvbmUiKSk7DQoJ
CQkJCXBhZ2Uuc2V0VGV4dFByZWRuaXNvbG9uZSgiIithbC5nZXQoMCkpOw0K
CQkJCQlwYWdlLnNldFRleHRQcmVkbmlzb2xvbmVVbml0cygiIithbC5nZXQo
MSkpOwkNCgkJCQkJLy9wYWdlLnNldFRleHRQcmVkbmlzb2xvbmUobHVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgicHJlZG5pc29sb25lIikpOwkJCQkNCgkJCQl9
DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJJbmhTdGVyb2lkc0QiKSkg
ew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5n
LnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluaFN0ZXJv
aWRzIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJpbmhTdGVyb2lkcyIpKSkpew0KCQkJCQkJc2Ft
ZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCWFsID0gc3BsaXRNZWRpY2F0
aW9uRm9yRXhwb3J0KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImluaFN0ZXJv
aWRzIikpOw0KCQkJCQlwYWdlLnNldFRleHRJbmhTdGVyb2lkcygiIithbC5n
ZXQoMCkpOw0KCQkJCQlwYWdlLnNldFRleHRJbmhTdGVyb2lkc1VuaXRzKCIi
K2FsLmdldCgxKSk7DQoNCgkJCQkJLy9wYWdlLnNldFRleHRJbmhTdGVyb2lk
cyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJpbmhTdGVyb2lkcyIpKTsJCQkJ
DQoJCQkJfQ0KDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5zKCJDeWNsb3Nw
b3JpbkQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYm
ICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
Y3ljbG9zcG9yaW4iKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1ZU9m
KGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImN5Y2xvc3BvcmluIikpKSl7DQoJ
CQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJYWwgPSBzcGxp
dE1lZGljYXRpb25Gb3JFeHBvcnQobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
Y3ljbG9zcG9yaW4iKSk7DQoJCQkJCXBhZ2Uuc2V0VGV4dEN5Y2xvc3Bvcmlu
KCIiK2FsLmdldCgwKSk7DQoJCQkJCXBhZ2Uuc2V0VGV4dEN5Y2xvc3Bvcmlu
VW5pdHMoIiIrYWwuZ2V0KDEpKTsJCQkJCQ0KCQkJCQkvL3BhZ2Uuc2V0VGV4
dEN5Y2xvc3BvcmluKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImN5Y2xvc3Bv
cmluIikpOwkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRhaW5z
KCJUYWNyb2xpbXVzRCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUh
PW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJ0YWNyb2xpbXVzIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcu
dmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0YWNyb2xpbXVzIikp
KSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJYWwg
PSBzcGxpdE1lZGljYXRpb25Gb3JFeHBvcnQobHVuZ0NET3V0Y29tZS5nZXRW
YWx1ZSgidGFjcm9saW11cyIpKTsNCgkJCQkJcGFnZS5zZXRUZXh0VGFjcm9s
aW11cygiIithbC5nZXQoMCkpOw0KCQkJCQlwYWdlLnNldFRleHRUYWNyb2xp
bXVzVW5pdHMoIiIrYWwuZ2V0KDEpKTsNCgkJCQkJDQoJCQkJCS8vcGFnZS5z
ZXRUZXh0VGFjcm9saW11cyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0YWNy
b2xpbXVzIikpOwkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRh
aW5zKCJBemF0aGlvcHJpbmVEIikpew0KCQkJCQlpZihwcmV2THVuZ0NET3V0
Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoImF6YXRoaW9wcmluZSIpKQ0KCQkJCQkJCS5lcXVhbHMo
U3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiYXphdGhp
b3ByaW5lIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0N
CgkJCQkJYWwgPSBzcGxpdE1lZGljYXRpb25Gb3JFeHBvcnQobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgiYXphdGhpb3ByaW5lIikpOw0KCQkJCQlwYWdlLnNl
dFRleHRBemF0aGlvcHJpbmUoIiIrYWwuZ2V0KDApKTsNCgkJCQkJcGFnZS5z
ZXRUZXh0QXphdGhpb3ByaW5lVW5pdHMoIiIrYWwuZ2V0KDEpKTsJCQkJCQ0K
CQkJCQkvL3BhZ2Uuc2V0VGV4dEF6YXRoaW9wcmluZShsdW5nQ0RPdXRjb21l
LmdldFZhbHVlKCJhemF0aGlvcHJpbmUiKSk7CQkJCQ0KCQkJCX0NCgkJCQlp
ZiAoYXR0ckxpc3QuY29udGFpbnMoIk15Y29waGVub2xhdGVEIikpIHsNCgkJ
CQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1
ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJteWNvcGhlbm9sYXRl
IikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcudmFsdWVPZihsdW5nQ0RPdXRj
b21lLmdldFZhbHVlKCJteWNvcGhlbm9sYXRlIikpKSl7DQoJCQkJCQlzYW1l
UGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJYWwgPSBzcGxpdE1lZGljYXRp
b25Gb3JFeHBvcnQobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgibXljb3BoZW5v
bGF0ZSIpKTsNCgkJCQkJcGFnZS5zZXRUZXh0TXljb3BoZW5vbGF0ZSgiIith
bC5nZXQoMCkpOw0KCQkJCQlwYWdlLnNldFRleHRNeWNvcGhlbm9sYXRlVW5p
dHMoIiIrYWwuZ2V0KDEpKTsNCgkJCQkJDQoJCQkJCS8vcGFnZS5zZXRUZXh0
TXljb3BoZW5vbGF0ZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJteWNvcGhl
bm9sYXRlIikpOwkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRh
aW5zKCJCYXNpbGl4aW1hYkQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRj
b21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgiYmFzaWxpeGltYWIiKSkNCgkJCQkJCQkuZXF1YWxzKFN0
cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImJhc2lsaXhp
bWFiIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJCX0NCgkJ
CQkJYWwgPSBzcGxpdE1lZGljYXRpb25Gb3JFeHBvcnQobHVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgiYmFzaWxpeGltYWIiKSk7DQoJCQkJCXBhZ2Uuc2V0VGV4
dEJhc2lsaXhpbWFiKCIiK2FsLmdldCgwKSk7DQoJCQkJCXBhZ2Uuc2V0VGV4
dEJhc2lsaXhpbWFiVW5pdHMoIiIrYWwuZ2V0KDEpKTsNCgkJCQkJLy9wYWdl
LnNldFRleHRCYXNpbGl4aW1hYihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJi
YXNpbGl4aW1hYiIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5j
b250YWlucygiRGFjbHV6aW1hYkQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RP
dXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgiZGFjbHV6aW1hYiIpKQ0KCQkJCQkJCS5lcXVhbHMo
U3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgiZGFjbHV6
aW1hYiIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJ
CQkJCWFsID0gc3BsaXRNZWRpY2F0aW9uRm9yRXhwb3J0KGx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoImRhY2x1emltYWIiKSk7DQoJCQkJCXBhZ2Uuc2V0VGV4
dERhY2x1emltYWIoIiIrYWwuZ2V0KDApKTsNCgkJCQkJcGFnZS5zZXRUZXh0
RGFjbHV6aW1hYlVuaXRzKCIiK2FsLmdldCgxKSk7DQoJCQkJCQ0KCQkJCQkv
L3BhZ2Uuc2V0VGV4dERhY2x1emltYWIobHVuZ0NET3V0Y29tZS5nZXRWYWx1
ZSgiZGFjbHV6aW1hYiIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlz
dC5jb250YWlucygiU2lyb2xpbXVzRCIpKXsNCgkJCQkJaWYocHJldkx1bmdD
RE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RP
dXRjb21lLmdldFZhbHVlKCJzaXJvbGltdXMiKSkNCgkJCQkJCQkuZXF1YWxz
KFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInNpcm9s
aW11cyIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJ
CQkJCWFsID0gc3BsaXRNZWRpY2F0aW9uRm9yRXhwb3J0KGx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoInNpcm9saW11cyIpKTsNCgkJCQkJcGFnZS5zZXRUZXh0
U2lyb2xpbXVzKCIiK2FsLmdldCgwKSk7DQoJCQkJCXBhZ2Uuc2V0VGV4dFNp
cm9saW11c1VuaXRzKCIiK2FsLmdldCgxKSk7DQoJCQkJCQ0KCQkJCQkvL3Bh
Z2Uuc2V0VGV4dFNpcm9saW11cyhsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJz
aXJvbGltdXMiKSk7CQkJCQ0KCQkJCX0NCgkJCQkNCgkJCQkvLyBhbnRpbWlj
cm9iaWFscyBzdGFydA0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiQXpp
dGhyb215Y2luRCIpKSB7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1u
dWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRW
YWx1ZSgiYXppdGhyb215Y2luIikpDQoJCQkJCQkJLmVxdWFscyhTdHJpbmcu
dmFsdWVPZihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJheml0aHJvbXljaW4i
KSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlh
bCA9IHNwbGl0TWVkaWNhdGlvbkZvckV4cG9ydChsdW5nQ0RPdXRjb21lLmdl
dFZhbHVlKCJheml0aHJvbXljaW4iKSk7DQoJCQkJCXBhZ2Uuc2V0VGV4dEF6
aXRocm9teWNpbigiIithbC5nZXQoMCkpOw0KCQkJCQlwYWdlLnNldFRleHRB
eml0aHJvbXljaW5Vbml0cygiIithbC5nZXQoMSkpOw0KCQkJCQkNCgkJCQkJ
Ly9wYWdlLnNldFRleHRBeml0aHJvbXljaW4obHVuZ0NET3V0Y29tZS5nZXRW
YWx1ZSgiYXppdGhyb215Y2luIikpOwkJCQkNCgkJCQl9DQoJCQkJaWYgKGF0
dHJMaXN0LmNvbnRhaW5zKCJUTVgtU3VsZmFEIikpIHsNCgkJCQkJaWYocHJl
dkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZM
dW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0TVhTdWxmYSIpKQ0KCQkJCQkJCS5l
cXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
dE1YU3VsZmEiKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJ
fQ0KCQkJCQkNCgkJCQkJYWwgPSBzcGxpdE1lZGljYXRpb25Gb3JFeHBvcnQo
bHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgidE1YU3VsZmEiKSk7DQoJCQkJCXBh
Z2Uuc2V0VGV4dFRNWFN1bGZhKCIiK2FsLmdldCgwKSk7DQoJCQkJCXBhZ2Uu
c2V0VGV4dFRNWFN1bGZhVW5pdHMoIiIrYWwuZ2V0KDEpKTsNCgkJCQkJLy9w
YWdlLnNldFRleHRUTVhTdWxmYShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ0
TVhTdWxmYSIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250
YWlucygiVG9icmFteWNpbkQiKSkgew0KCQkJCQlpZihwcmV2THVuZ0NET3V0
Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNv
bWUuZ2V0VmFsdWUoInRvYnJhbXljaW4iKSkNCgkJCQkJCQkuZXF1YWxzKFN0
cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInRvYnJhbXlj
aW4iKSkpKXsNCgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJ
CQlhbCA9IHNwbGl0TWVkaWNhdGlvbkZvckV4cG9ydChsdW5nQ0RPdXRjb21l
LmdldFZhbHVlKCJ0b2JyYW15Y2luIikpOw0KCQkJCQlwYWdlLnNldFRleHRU
b2JyYW15Y2luKCIiK2FsLmdldCgwKSk7DQoJCQkJCXBhZ2Uuc2V0VGV4dFRv
YnJhbXljaW5Vbml0cygiIithbC5nZXQoMSkpOw0KCQkJCQkNCgkJCQkJLy9w
YWdlLnNldFRleHRUb2JyYW15Y2luKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo
InRvYnJhbXljaW4iKSk7CQkJCQ0KCQkJCX0NCgkJCQlpZiAoYXR0ckxpc3Qu
Y29udGFpbnMoIkdhbmNpY2xvdmlyRCIpKSB7DQoJCQkJCWlmKHByZXZMdW5n
Q0RPdXRjb21lIT1udWxsICYmICFTdHJpbmcudmFsdWVPZihwcmV2THVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgiZ2FuY2ljbG92aXIiKSkNCgkJCQkJCQkuZXF1
YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoImdh
bmNpY2xvdmlyIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7DQoJCQkJ
CX0NCgkJCQkJYWwgPSBzcGxpdE1lZGljYXRpb25Gb3JFeHBvcnQobHVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgiZ2FuY2ljbG92aXIiKSk7DQoJCQkJCXBhZ2Uu
c2V0VGV4dEdhbmNpY2xvdmlyKCIiK2FsLmdldCgwKSk7DQoJCQkJCXBhZ2Uu
c2V0VGV4dEdhbmNpY2xvdmlyVW5pdHMoIiIrYWwuZ2V0KDEpKTsNCgkJCQkJ
DQoJCQkJCS8vcGFnZS5zZXRUZXh0R2FuY2ljbG92aXIobHVuZ0NET3V0Y29t
ZS5nZXRWYWx1ZSgiZ2FuY2ljbG92aXIiKSk7CQkJCQ0KCQkJCX0NCgkJCQlp
ZiAoYXR0ckxpc3QuY29udGFpbnMoIlZhbGdhbmN5Y2xvdmlyRCIpKXsNCgkJ
CQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1
ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ2YWxnYW5jeWNsb3Zp
ciIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0
Y29tZS5nZXRWYWx1ZSgidmFsZ2FuY3ljbG92aXIiKSkpKXsNCgkJCQkJCXNh
bWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlhbCA9IHNwbGl0TWVkaWNh
dGlvbkZvckV4cG9ydChsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ2YWxnYW5j
eWNsb3ZpciIpKTsNCgkJCQkJcGFnZS5zZXRUZXh0VmFsZ2FuY3ljbG92aXIo
IiIrYWwuZ2V0KDApKTsNCgkJCQkJcGFnZS5zZXRUZXh0VmFsZ2FuY3ljbG92
aXJVbml0cygiIithbC5nZXQoMSkpOw0KCQkJCQkNCgkJCQkJLy9wYWdlLnNl
dFRleHRWYWxnYW5jeWNsb3ZpcihsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJ2
YWxnYW5jeWNsb3ZpciIpKTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlz
dC5jb250YWlucygiSXRyYWNvbmF6b2xlRCIpKXsNCgkJCQkJaWYocHJldkx1
bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJpdHJhY29uYXpvbGUiKSkNCgkJCQkJCQku
ZXF1YWxzKFN0cmluZy52YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUo
Iml0cmFjb25hem9sZSIpKSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0K
CQkJCQl9DQoJCQkJCWFsID0gc3BsaXRNZWRpY2F0aW9uRm9yRXhwb3J0KGx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoIml0cmFjb25hem9sZSIpKTsNCgkJCQkJ
cGFnZS5zZXRUZXh0SXRyYWNvbmF6b2xlKCIiK2FsLmdldCgwKSk7DQoJCQkJ
CXBhZ2Uuc2V0VGV4dEl0cmFjb25hem9sZVVuaXRzKCIiK2FsLmdldCgxKSk7
DQoJCQkJCQ0KCQkJCQkvL3BhZ2Uuc2V0VGV4dEl0cmFjb25hem9sZShsdW5n
Q0RPdXRjb21lLmdldFZhbHVlKCJpdHJhY29uYXpvbGUiKSk7CQkJCQ0KCQkJ
CX0NCgkJCQlpZiAoYXR0ckxpc3QuY29udGFpbnMoIkZsdWNvbmF6b2xlRCIp
KXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51bGwgJiYgIVN0cmlu
Zy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJmbHVjb25h
em9sZSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NE
T3V0Y29tZS5nZXRWYWx1ZSgiZmx1Y29uYXpvbGUiKSkpKXsNCgkJCQkJCXNh
bWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlhbCA9IHNwbGl0TWVkaWNh
dGlvbkZvckV4cG9ydChsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJmbHVjb25h
em9sZSIpKTsNCgkJCQkJcGFnZS5zZXRUZXh0Rmx1Y29uYXpvbGUoIiIrYWwu
Z2V0KDApKTsNCgkJCQkJcGFnZS5zZXRUZXh0Rmx1Y29uYXpvbGVVbml0cygi
IithbC5nZXQoMSkpOw0KCQkJCQkNCgkJCQkJLy9wYWdlLnNldFRleHRGbHVj
b25hem9sZShsdW5nQ0RPdXRjb21lLmdldFZhbHVlKCJmbHVjb25hem9sZSIp
KTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiVm9y
aWNvbmF6b2xlRCIpKXsNCgkJCQkJaWYocHJldkx1bmdDRE91dGNvbWUhPW51
bGwgJiYgIVN0cmluZy52YWx1ZU9mKHByZXZMdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJ2b3JpY29uYXpvbGUiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52
YWx1ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInZvcmljb25hem9sZSIp
KSkpew0KCQkJCQkJc2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCWFs
ID0gc3BsaXRNZWRpY2F0aW9uRm9yRXhwb3J0KGx1bmdDRE91dGNvbWUuZ2V0
VmFsdWUoInZvcmljb25hem9sZSIpKTsNCgkJCQkJcGFnZS5zZXRUZXh0Vm9y
aWNvbmF6b2xlKCIiK2FsLmdldCgwKSk7DQoJCQkJCXBhZ2Uuc2V0VGV4dFZv
cmljb25hem9sZVVuaXRzKCIiK2FsLmdldCgxKSk7DQoJCQkJCQ0KCQkJCQkv
L3BhZ2Uuc2V0VGV4dFZvcmljb25hem9sZShsdW5nQ0RPdXRjb21lLmdldFZh
bHVlKCJ2b3JpY29uYXpvbGUiKSk7CQkJCQ0KCQkJCX0NCgkJCQkvLyAJYW50
aW1pY3JvYmlhbHMgZW5kDQoJCQkJDQoJCQkJaWYgKGF0dHJMaXN0LmNvbnRh
aW5zKCJPdGhlck1lZGljYXRpb25EIikpew0KCQkJCQlpZihwcmV2THVuZ0NE
T3V0Y29tZSE9bnVsbCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91
dGNvbWUuZ2V0VmFsdWUoIm90aGVyTWVkaWNhdGlvbiIpKQ0KCQkJCQkJCS5l
cXVhbHMoU3RyaW5nLnZhbHVlT2YobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgi
b3RoZXJNZWRpY2F0aW9uIikpKSl7DQoJCQkJCQlzYW1lUGF0ID0gZmFsc2U7
DQoJCQkJCX0NCgkJCQkJcGFnZS5zZXRUZXh0T3RoZXJNZWRpY2F0aW9uKGx1
bmdDRE91dGNvbWUuZ2V0VmFsdWUoIm90aGVyTWVkaWNhdGlvbiIpKTsJCQkJ
DQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUEFYV2VpZ2h0
MUQiKSl7DQoJCQkJCWlmKHByZXZMdW5nQ0RPdXRjb21lIT1udWxsICYmICFT
dHJpbmcudmFsdWVPZihwcmV2THVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicGF4
V2VpZ2h0MSIpKQ0KCQkJCQkJCS5lcXVhbHMoU3RyaW5nLnZhbHVlT2YobHVu
Z0NET3V0Y29tZS5nZXRWYWx1ZSgicGF4V2VpZ2h0MSIpKSkpew0KCQkJCQkJ
c2FtZVBhdCA9IGZhbHNlOw0KCQkJCQl9DQoJCQkJCXBhZ2Uuc2V0VGV4dFBB
WFdlaWdodDEobHVuZ0NET3V0Y29tZS5nZXRWYWx1ZSgicGF4V2VpZ2h0MSIp
KTsJCQkJDQoJCQkJfQ0KCQkJCWlmIChhdHRyTGlzdC5jb250YWlucygiUEFY
V2VpZ2h0MkQiKSkgew0KCQkJCQlpZihwcmV2THVuZ0NET3V0Y29tZSE9bnVs
bCAmJiAhU3RyaW5nLnZhbHVlT2YocHJldkx1bmdDRE91dGNvbWUuZ2V0VmFs
dWUoInBheFdlaWdodDIiKSkNCgkJCQkJCQkuZXF1YWxzKFN0cmluZy52YWx1
ZU9mKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBheFdlaWdodDIiKSkpKXsN
CgkJCQkJCXNhbWVQYXQgPSBmYWxzZTsNCgkJCQkJfQ0KCQkJCQlwYWdlLnNl
dFRleHRQQVhXZWlnaHQyKGx1bmdDRE91dGNvbWUuZ2V0VmFsdWUoInBheFdl
aWdodDIiKSk7CQkJCQ0KCQkJCX0NCgkJCQkNCi8vCQkJCSB0byBzZXQgdG9v
bHRpcA0KCQkJCXRlbXBsYXRlUm93ID0gcGFnZS5nZXRFbGVtZW50VGVtcGxh
dGVSb3coKTsJCQkNCgkJCQl0ZW1wbGF0ZVJvdy5zZXRBdHRyaWJ1dGUoInRp
dGxlIixlbmNJZCk7DQoJCQkJDQoJCQkJaWYgKCEoZmV2ZW50LmVxdWFscygi
IikpKSB7DQoJCQkJCWZvciAoaW50IGk9MDtpPGZRQzEubGVuZ3RoO2krKykg
ew0KCQkJCQkJaWYgKCFnZXRRQ1Jlc3VsdChsdW5nQ0RPdXRjb21lLCJxYyIr
ZlFDMVtpXSkpIHsNCgkJCQkJCQlzcGFuVGFnID0gcGFnZS5nZXRFbGVtZW50
QnlJZChmUUMxW2ldKTsJCQkJCQkJDQoJCQkJCQkJaWYoWE1MQ1V0aWwuZ2V0
Rmlyc3RUZXh0KHNwYW5UYWcpLmdldERhdGEoKS50cmltKCkubGVuZ3RoKCk+
MCl7DQoJCQkJCQkJCXFjMUNlbGxDb2xvciA9ICIjRkY2NjAwIjsJDQoJCQkJ
CQkJCXN0ck1pc3NpbmdEYXRhID0gIiAiOw0KCQkJCQkJCX1lbHNlew0KCQkJ
CQkJCQlxYzFDZWxsQ29sb3IgPSAiI0ZGMzMzMyI7DQoJCQkJCQkJCXN0ck1p
c3NpbmdEYXRhID0gIiBtaXNzaW5nICI7DQoJCQkJCQkJfQ0KCQkJCQkJCVhN
TENVdGlsLmdldEZpcnN0VGV4dChzcGFuVGFnKS5zZXREYXRhKFhNTENVdGls
LmdldEZpcnN0VGV4dChzcGFuVGFnKS5nZXREYXRhKCkudHJpbSgpK3N0ck1p
c3NpbmdEYXRhKTsNCgkJCQkJCQljZWxsID0gKEhUTUxUYWJsZUNlbGxFbGVt
ZW50KSBzcGFuVGFnLmdldFBhcmVudE5vZGUoKTsNCgkJCQkJCQljZWxsLnNl
dEJnQ29sb3IocWMxQ2VsbENvbG9yKTsNCgkJCQkJCX0NCgkJCQkJfQ0KDQoJ
CQkJCWZvciAoaW50IGk9MDtpPGZRQzIubGVuZ3RoO2krKykgew0KCQkJCQkJ
aWYgKCFnZXRRQ1Jlc3VsdChsdW5nQ0RPdXRjb21lLCJxYzIiK2ZRQzJbaV0p
KSB7DQoJCQkJCQkJc3BhblRhZyA9IHBhZ2UuZ2V0RWxlbWVudEJ5SWQoZlFD
MltpXSk7DQoJCQkJCQkJY2VsbCA9IChIVE1MVGFibGVDZWxsRWxlbWVudCkg
c3BhblRhZy5nZXRQYXJlbnROb2RlKCk7DQoJCQkJCQkJY2VsbC5zZXRCZ0Nv
bG9yKHFjMkNlbGxDb2xvcik7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJ
CQkJDQoJCQkJdGVtcGxhdGVUYWJsZS5hcHBlbmRDaGlsZCh0ZW1wbGF0ZVJv
dy5jbG9uZU5vZGUodHJ1ZSkpOw0KCQkJCWlmIChzYW1lUGF0KSB7DQoJCQkJ
CWxhc3RSb3cgPSAoSFRNTFRhYmxlUm93RWxlbWVudCkgdGVtcGxhdGVUYWJs
ZS5nZXRMYXN0Q2hpbGQoKTsNCgkJCQkJbGFzdFJvdy5zZXRCZ0NvbG9yKCIj
ZmZmZjk5Iik7DQoJCQkJCWxhc3RSb3cuZ2V0UGFyZW50Tm9kZSgpLnJlbW92
ZUNoaWxkKGxhc3RSb3cpOw0KCQkJCQlyb3dDb3VudC0tOw0KCQkJCQlyZWND
b3VudC0tOw0KCQkJCX0NCg0KCQkJCWZvciAoaW50IGk9MDtpPGZRQzEubGVu
Z3RoO2krKykgew0KCQkJCQlzcGFuVGFnID0gcGFnZS5nZXRFbGVtZW50QnlJ
ZChmUUMxW2ldKTsNCgkJCQkJY2VsbCA9IChIVE1MVGFibGVDZWxsRWxlbWVu
dCkgc3BhblRhZy5nZXRQYXJlbnROb2RlKCk7DQoJCQkJCWNlbGwuc2V0QmdD
b2xvcigiIik7DQoJCQkJfQ0KCQkJCWZvciAoaW50IGk9MDtpPGZRQzIubGVu
Z3RoO2krKykgew0KCQkJCQlzcGFuVGFnID0gcGFnZS5nZXRFbGVtZW50QnlJ
ZChmUUMyW2ldKTsNCgkJCQkJY2VsbCA9IChIVE1MVGFibGVDZWxsRWxlbWVu
dCkgc3BhblRhZy5nZXRQYXJlbnROb2RlKCk7DQoJCQkJCWNlbGwuc2V0QmdD
b2xvcigiIik7DQoJCQkJfQ0KCQkJCS8vIGdhcmJhZ2UgY29sbGVjdGlvbiBi
ZWdpbg0KCQkJCWx1bmdDRE91dGNvbWUgPSAgICBudWxsOw0KCQkJCWVuY0lk
ID0gbnVsbDsNCgkJCQlwYXRpZW50SWQgPSBudWxsOw0KCQkJCWNlbnRlck5h
bWUgPSBudWxsOw0KCQkJCWNlbnRlcklkID0gbnVsbDsNCgkJCQlpZihjb3Vu
dGVyJTQwMD09MCl7DQoJCQkJICAgUnVudGltZS5nZXRSdW50aW1lKCkuZ2Mo
KTsNCgkJCQl9DQoJCQkJLy8gZ2FyYmFnZSBjb2xsZWN0aW9uIGVuZCANCgkJ
CX0NCgkJCXRlbXBsYXRlVGFibGUucmVtb3ZlQ2hpbGQodGVtcGxhdGVSb3cp
Ow0KCQkJDQoJCQl9Y2F0Y2goRXhjZXB0aW9uIGUpew0KCQkJCWUucHJpbnRT
dGFja1RyYWNlKCk7CQkJCQ0KCQkJfQkJDQoJCXJldHVybiBwYWdlOw0KICAg
IH0gICAgDQoJDQovKglwdWJsaWMgWE1MT2JqZWN0IGhhbmRsZVNhdmUoKQ0K
CSAgICAgIHRocm93cyBIdHRwUHJlc2VudGF0aW9uRXhjZXB0aW9uIHsNCgkJ
Ly9TeXN0ZW0ub3V0LnByaW50bG4oImhhbmRsZVNhdmUoKSAgbWV0aG9kIGNh
bGxlZCA9PT09PT09PSAiKTsNCgkJCVNpbXBsZURhdGVGb3JtYXQgZm9ybWF0
dGVyID0gbmV3IFNpbXBsZURhdGVGb3JtYXQgKCJ5eXl5TU1kZGhobW1zcyIp
Ow0KDQoJCSAJU3RyaW5nIG5vdyA9IGZvcm1hdHRlci5mb3JtYXQobmV3IERh
dGUoKSk7DQoNCgkJIAlTdHJpbmcgZmlsZU5hbWUgPSAgbm93ICsgIkx1bmdE
YXRhUUMueGxzIjsNCg0KCQkgCXRoaXMuZ2V0Q29tbXMoKS5yZXNwb25zZS5z
ZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24vbXMtZXhjZWwiKTsNCgkJCXRo
aXMuZ2V0Q29tbXMoKS5yZXNwb25zZS5zZXRIZWFkZXIoIkNvbnRlbnQtRGlz
cG9zaXRpb24iLCAiYXR0YWNobWVudDsgZmlsZW5hbWU9IiArIGZpbGVOYW1l
KTsNCg0KCQkJTEFSR09RQ2VDUkZWaWV3SFRNTCBwYWdlID0gbnVsbDsNCgkJ
CQ0KCQkJCXBhZ2UgPSAoTEFSR09RQ2VDUkZWaWV3SFRNTCkgaGFuZGxlRGVm
YXVsdCgpOw0KDQoNCgkJCUhUTUxUYWJsZVJvd0VsZW1lbnQgcWMxUm93ID0g
cGFnZS5nZXRFbGVtZW50UUMxUm93KCk7DQoJCQlxYzFSb3cuZ2V0UGFyZW50
Tm9kZSgpLnJlbW92ZUNoaWxkKHFjMVJvdyk7DQoNCgkJCUhUTUxUYWJsZVJv
d0VsZW1lbnQgcWMyUm93ID0gcGFnZS5nZXRFbGVtZW50UUMyUm93KCk7DQoJ
CQlxYzJSb3cuZ2V0UGFyZW50Tm9kZSgpLnJlbW92ZUNoaWxkKHFjMlJvdyk7
DQoNCgkJCS8vSFRNTFRhYmxlUm93RWxlbWVudCBhdWRpdFJvdyA9ICBwYWdl
LmdldEVsZW1lbnRBdWRpdFJvdygpOw0KCQkJLy9hdWRpdFJvdy5nZXRQYXJl
bnROb2RlKCkucmVtb3ZlQ2hpbGQoYXVkaXRSb3cpOw0KDQoJCQlIVE1MVGFi
bGVSb3dFbGVtZW50IGZpbHRlclJvdyA9IHBhZ2UuZ2V0RWxlbWVudEZpbHRl
clJvdygpOw0KCQkJZmlsdGVyUm93LmdldFBhcmVudE5vZGUoKS5yZW1vdmVD
aGlsZChmaWx0ZXJSb3cpOw0KDQoJCQkNCgkJCUhUTUxUYWJsZVJvd0VsZW1l
bnQgcm93VG9SZW1vdmUgPSBwYWdlLmdldEVsZW1lbnRSZXBvcnRoZWFkZXIo
KTsNCgkJCXJvd1RvUmVtb3ZlLmdldFBhcmVudE5vZGUoKS5yZW1vdmVDaGls
ZChyb3dUb1JlbW92ZSk7DQoJCQkNCgkJCXJvd1RvUmVtb3ZlID0gcGFnZS5n
ZXRFbGVtZW50QnV0dG9uUm93KCk7DQoJCQlyb3dUb1JlbW92ZS5nZXRQYXJl
bnROb2RlKCkucmVtb3ZlQ2hpbGQocm93VG9SZW1vdmUpOw0KCQkJDQoJCQly
b3dUb1JlbW92ZSA9IHBhZ2UuZ2V0RWxlbWVudFF1ZXJ5VGV4dFJvdygpOw0K
CQkJcm93VG9SZW1vdmUuZ2V0UGFyZW50Tm9kZSgpLnJlbW92ZUNoaWxkKHJv
d1RvUmVtb3ZlKTsNCgkJCQ0KCQkJcm93VG9SZW1vdmUgPSBwYWdlLmdldEVs
ZW1lbnRSZXN1bHRTdGF0aXN0aWNzKCk7DQoJCQlyb3dUb1JlbW92ZS5nZXRQ
YXJlbnROb2RlKCkucmVtb3ZlQ2hpbGQocm93VG9SZW1vdmUpOw0KCQkJDQoJ
CQkNCgkJCXJvd1RvUmVtb3ZlID0gcGFnZS5nZXRFbGVtZW50Q29sb3VyTGVn
ZW5kKCk7DQoJCQlyb3dUb1JlbW92ZS5nZXRQYXJlbnROb2RlKCkucmVtb3Zl
Q2hpbGQocm93VG9SZW1vdmUpOw0KCQkJDQoJCQkJCQ0KCQkJTm9kZUxpc3Qg
bmwgPSBwYWdlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpOw0KDQoJ
CQlmb3IgKGludCBpPW5sLmdldExlbmd0aCgpLTE7aT49MDtpLS0pIHsNCgkJ
CQlOb2RlIG4gPSBubC5pdGVtKGkpOw0KCQkJCW4uZ2V0UGFyZW50Tm9kZSgp
LnJlbW92ZUNoaWxkKG4pOw0KCQkJfQ0KCQkJDQoJCQlyZXR1cm4gcGFnZTsN
Cgl9DQoqLw0KCXByaXZhdGUgU3RyaW5nIHJlcGxhY2UoU3RyaW5nIHN0ciwg
U3RyaW5nIHBhdHRlcm4sIFN0cmluZyByZXBsYWNlKSB7DQogICAgICAgIGlu
dCBzID0gMDsNCiAgICAgICAgaW50IGUgPSAwOw0KICAgICAgICBTdHJpbmdC
dWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOw0KICAgIA0KICAg
ICAgICB3aGlsZSAoKGUgPSBzdHIuaW5kZXhPZihwYXR0ZXJuLCBzKSkgPj0g
MCkgew0KICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzdHIuc3Vic3RyaW5n
KHMsIGUpKTsNCiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVwbGFjZSk7
DQogICAgICAgICAgICBzID0gZStwYXR0ZXJuLmxlbmd0aCgpOw0KICAgICAg
ICB9DQogICAgICAgIHJlc3VsdC5hcHBlbmQoc3RyLnN1YnN0cmluZyhzKSk7
DQogICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsNCiAgICB9DQoJ
DQoJDQoJDQoJcHJpdmF0ZSBBcnJheUxpc3Qgc3BsaXRNZWRpY2F0aW9uRm9y
RXhwb3J0KFN0cmluZyBtZWRpY2F0aW9uVG9TcGxpdCl7DQoJCUFycmF5TGlz
dCByZXN1bHRBbCA9IG5ldyBBcnJheUxpc3QoKTsNCgkJU3RyaW5nW10gbWVk
aWNhdGlvbkFyciA9IG1lZGljYXRpb25Ub1NwbGl0LnNwbGl0KCIvIik7CQkJ
CQkNCgkJU3RyaW5nIG1lZGljYXRpb25Eb3NhZ2UgPSIiOw0KCQlTdHJpbmcg
bWVkaWNhdGlvblVuaXRzID0iIjsNCgkJDQoJCVN0cmluZyBtZWRpY2F0aW9u
RG9zYWdlU3VtbWFyeSA9IiI7DQoJCVN0cmluZyBtZWRpY2F0aW9uVW5pdHNT
dW1tYXJ5ID0iIjsNCgkJDQoJCWlmKG1lZGljYXRpb25BcnIhPW51bGwgJiYg
bWVkaWNhdGlvbkFyci5sZW5ndGg+MCl7DQoJCQlmb3IoaW50IG0gPTA7bTxt
ZWRpY2F0aW9uQXJyLmxlbmd0aDttKyspew0KCQkJCS8vU3lzdGVtLm91dC5w
cmludGxuKCJtZWRpY2F0aW9uQXJyW21dIittZWRpY2F0aW9uQXJyW21dKTsN
CgkJCQlpZihtZWRpY2F0aW9uQXJyW21dIT1udWxsICYmIG1lZGljYXRpb25B
cnJbbV0udHJpbSgpLmxlbmd0aCgpPjApew0KCQkJCQltZWRpY2F0aW9uRG9z
YWdlID0gbWVkaWNhdGlvbkFyclttXS5zdWJzdHJpbmcoMCxtZWRpY2F0aW9u
QXJyW21dLmluZGV4T2YoIiAiKSk7DQoJCQkJCWlmKG1lZGljYXRpb25BcnJb
bV0uaW5kZXhPZigiLSIpIT0tMSl7DQoJCQkJCQlpZihtZWRpY2F0aW9uQXJy
W21dLmluZGV4T2YoIi0iKTxtZWRpY2F0aW9uQXJyW21dLmluZGV4T2YoIiAi
KSl7DQoJCQkJCQkJbWVkaWNhdGlvblVuaXRzICA9ICBtZWRpY2F0aW9uQXJy
W21dLnN1YnN0cmluZygwLG1lZGljYXRpb25BcnJbbV0uaW5kZXhPZigiLSIp
KTsNCgkJCQkJCX1lbHNlew0KCQkJCQkgICAgICAgbWVkaWNhdGlvblVuaXRz
ICA9ICBtZWRpY2F0aW9uQXJyW21dLnN1YnN0cmluZyhtZWRpY2F0aW9uQXJy
W21dLmluZGV4T2YoIiAiKSsxLG1lZGljYXRpb25BcnJbbV0uaW5kZXhPZigi
LSIpKTsNCgkJCQkJCX0NCgkJCQkJfWVsc2V7DQoJCQkJCSAgIG1lZGljYXRp
b25Vbml0cyAgPSAgbWVkaWNhdGlvbkFyclttXS5zdWJzdHJpbmcobWVkaWNh
dGlvbkFyclttXS5pbmRleE9mKCIgIikrMSxtZWRpY2F0aW9uQXJyW21dLmxl
bmd0aCgpKTsJDQoJCQkJCX0NCgkJCQkJaWYobT09MCl7DQoJCQkJCQltZWRp
Y2F0aW9uRG9zYWdlU3VtbWFyeSArPSBtZWRpY2F0aW9uRG9zYWdlLnRyaW0o
KTsNCgkJCQkJCW1lZGljYXRpb25Vbml0c1N1bW1hcnkgICs9IG1lZGljYXRp
b25Vbml0cy50cmltKCk7CQkJCQkJCQkNCgkJCQkJfWVsc2V7DQoJCQkJCQlt
ZWRpY2F0aW9uRG9zYWdlU3VtbWFyeSArPSAiLCIrbWVkaWNhdGlvbkRvc2Fn
ZS50cmltKCk7DQoJCQkJCQltZWRpY2F0aW9uVW5pdHNTdW1tYXJ5ICArPSAi
LCIrbWVkaWNhdGlvblVuaXRzLnRyaW0oKTsJCQkJCQkJCQkNCgkJCQkJfQ0K
CQkJCX0NCgkJCX0JCQkJCQ0KCQl9DQoJCS8vU3lzdGVtLm91dC5wcmludGxu
KCJtZWRpY2F0aW9uRG9zYWdlICIrbWVkaWNhdGlvbkRvc2FnZVN1bW1hcnkr
IiBtZWRpY2F0aW9uVW5pdHMgIittZWRpY2F0aW9uVW5pdHNTdW1tYXJ5KTsN
CgkJcmVzdWx0QWwuYWRkKG1lZGljYXRpb25Eb3NhZ2VTdW1tYXJ5KTsNCgkJ
cmVzdWx0QWwuYWRkKG1lZGljYXRpb25Vbml0c1N1bW1hcnkpOw0KCQkNCgkJ
cmV0dXJuIHJlc3VsdEFsOw0KCX0NCn0NCg==

------_=_NextPart_001_01C718A5.BE334AE3
Content-Type: text/plain; name="message-footer.txt"
Content-Disposition: inline; filename="message-footer.txt"
Content-Transfer-Encoding: 8bit


--
You receive this message as a subscriber of the [email protected] mailing list.
To unsubscribe: mailto:[email protected]
For general help: mailto:[email protected]?subject=help
ObjectWeb mailing lists service home page: http://www.objectweb.org/wws

------_=_NextPart_001_01C718A5.BE334AE3--