Go to main content

Textpattern CMS support forum

You are not logged in. Register | Login | Help

#97 2009-11-15 22:21:08

photonomad
Member
Registered: 2005-09-10
Posts: 290
Website

Re: [plugin] [ORPHAN] wow_menu-Full menu control (order, hide/show items, subtree)

BUG NOTE: wow_menu works in 4.2.0 – but it does not work with the “remora” admin template. Leave it in “classic” (with the tabs) and it should work fine. also noted here

Offline

#98 2011-08-09 16:33:15

WebKat
Member
Registered: 2007-01-16
Posts: 301

Re: [plugin] [ORPHAN] wow_menu-Full menu control (order, hide/show items, subtree)

I’m having a problem. I just rearranged something in my categories to take it out of a subcategory and move it into its own top level category. Now it just doesn’t appear on the menu at all. I’m using Textpattern 4.4.1 and wow_menu 1.02

Does anyone know what is going on? Is there an alternative to this plugin that does the same thing that is actively being developed?

Site: http://http://opalcat.com “Reviews” should appear directly above “Fun” in the list.



WebKat

Offline

#99 2012-03-30 02:06:42

WebKat
Member
Registered: 2007-01-16
Posts: 301

Re: [plugin] [ORPHAN] wow_menu-Full menu control (order, hide/show items, subtree)

Me again. Apparently I fixed my previous problem by just hardcoding the “Reviews” category before calling the wow_menu tag. But that’s not why I’m here now.

My problem is that the indent for subcategories is way too wide and I don’t know CSS well enough to fix it. I thought I knew what I was doing, and I changed the numbers around for a lot of these options, but the only thing I managed to do was make the intent wider (though changing the number in the other direction didn’t make it narrower!! Anyway I need the indent to be 1/3 to 1/2 of what it is now… can anyone help me? Here is my css:

.menutree {
	position: relative;
	margin-left: -10px;
	margin-right: -10px;
}

.menutree ul {
	font-size: .8em;
	margin-top:0px;
	padding-top: 0px;
	list-style: none;
}

.menutree li {
	padding-left: 5px;
	padding-right: 5px;
	position:relative;
	list-style: none;
}


.menutree ul li ul {
	font-size: .8em;
	margin-left: -30px;
	list-style: none;
}

.menutree li li {
	margin-left: -10px;
	list-style: none;
}

.menutree a:hover {
	border-bottom: 1px dotted black;
}


WebKat

Offline

#100 2012-03-30 03:52:33

maruchan
Member
From: Ukiah, California
Registered: 2010-06-12
Posts: 590
Website

Re: [plugin] [ORPHAN] wow_menu-Full menu control (order, hide/show items, subtree)

What about this?

.x-small {
  /* keep font-size here, just add this next line */
  margin-left:22px;

}

div#leftmenu li {
  /* keep other stuff here, just change this next line: */
  padding: 0 0 2px 20px; /* 20px left padding instead of 55px */  

}

.menutree {
  margin-left:22px; /*use this to replace all the other stuff that was here */

}

Offline

#101 2012-03-30 04:14:34

WebKat
Member
Registered: 2007-01-16
Posts: 301

Re: [plugin] [ORPHAN] wow_menu-Full menu control (order, hide/show items, subtree)

Well I use x-small all over the place, not just in my menu. I use it in articles all the time. I don’t want everything I’ve ever put in small text to shift over… Also, a lot of my other left-menu stuff that isn’t wow_menu related is very precariously positioned via the CSS that is there, and div#leftmenu is probably one of those things keeping everything else in place…

I would be willing to TRY the leftmenu li thing, but not if it relies on the x-small change, because like I said that is not a menu-specific class. It is used all over the place.



WebKat

Offline

#102 2012-03-30 04:29:54

maruchan
Member
From: Ukiah, California
Registered: 2010-06-12
Posts: 590
Website

Re: [plugin] [ORPHAN] wow_menu-Full menu control (order, hide/show items, subtree)

You can be more specific with selectors, like #leftmenu .x-small if .x-small is inside #leftmenu (I can’t tell, site isn’t loading ATM).

Offline

#103 2012-03-30 04:43:11

WebKat
Member
Registered: 2007-01-16
Posts: 301

Re: [plugin] [ORPHAN] wow_menu-Full menu control (order, hide/show items, subtree)

Yeah I know—the site just went down about 10 minutes ago; I am about to call tech support.



WebKat

Offline

#104 2012-03-30 05:17:31

WebKat
Member
Registered: 2007-01-16
Posts: 301

Re: [plugin] [ORPHAN] wow_menu-Full menu control (order, hide/show items, subtree)

Ok that helped a lot, though I had to make a new class for some of the other things in the leftmenu that used x-small already… but now the indent is too small—barely noticeable. Which of these lines/numbers affects the subcategory indent?:

#leftmenu .x-small {
	font-size: 0.7em;
	margin-left:22px;
}

div#leftmenu .menutree li {
	padding:0 0 2px 55px; 
	margin-bottom:0 0 0 0; 
	font-weight:bold; 
	font-size:1em; 
	list-style-type:none; 
	text-decoration: none;
	border:0;
	padding: 0 0 2px 20px;
}

.menutree {
	margin-left:22px;

}


WebKat

Offline

#105 2012-03-30 05:29:18

maruchan
Member
From: Ukiah, California
Registered: 2010-06-12
Posts: 590
Website

Re: [plugin] [ORPHAN] wow_menu-Full menu control (order, hide/show items, subtree)

If you made the changes I suggested, then padding:0 0 2px 55px; would be where you’d go. The last number there, the 55.

(Which, if it helps, the numbers go TRBL (TROUBLE) – Top, Right, Bottom, Left, so that’s left padding at the end.)

Last edited by maruchan (2012-03-30 05:30:01)

Offline

#106 2012-03-30 05:52:46

WebKat
Member
Registered: 2007-01-16
Posts: 301

Re: [plugin] [ORPHAN] wow_menu-Full menu control (order, hide/show items, subtree)

Hmmm… it isn’t doing anything I tried changing it to a 5 and to 100 (to see which way and how much it was moving) but it stayed the same. Here is my left menu css:

	div#leftcolumn  {
		position:absolute; left:0px; top:0px; width:190px;
		padding:0 0 0 0; 
		margin:0 0 0 0; 
		border:0;
		}
	div.menu-line {
		padding:0 0 0px 38px; 
		}
	div#leftmenu {
		padding:0 0 0 0; 
		margin:0 0 0 0; 
		border:0;
		}
	div#leftmenu ul {
		padding:0 0 0 0; 
		margin:0 0 10px 0;
		border:0;
		}
	div#leftmenu li {
		padding:0 0 2px 55px; 
		margin-bottom:0 0 0 0; 
		font-weight:bold; 
		font-size:1em; 
		list-style-type:none; 
		text-decoration: none;
		border:0;
		}
	div#leftmenu p {
		position:relative; left:35px; top:-15px; 
		text-decoration: none;
		font-size:1em; 
		}
	div#leftmenu span {
		padding:0px 0px 0px 45px; 
		}

	div#leftmenu h3 {
		font: 1.1em Georgia, Times, serif;
		margin-top:-10px; 
		padding-left:45px;
		}
	div#leftmenu img {
		padding-bottom:0px; 
		padding-top:0px; 
		margin-bottom:0px;
		margin-top:0px;
		line-height:0;
		}
	div.leftscroll {
		padding:0 0 0 0; 
		margin:0 0 0 0; 
		border:0;
		background-image: url(/images/nav/scroll-body-tile.png);
		background-repeat: repeat-y;
		background-position: 0px;
		}
	div.topscroll {
		padding:0 0 0 0; 
		margin:0 0 0 0; 
		border:0;
		background-image: url(/images/nav/scroll-top-curl.png);
		background-repeat: no-repeat;
		background-position: top;
		}
	div.bottomscroll {
		padding-top:20px;
		padding-bottom:15px;
		margin:0 0 0 0; 
		border:0;
		background-image: url(/images/nav/scroll-bottom-curl.png);
		background-repeat: no-repeat;
		background-position: bottom;
		}

and here is my wow_menu CSS with your changes:

#leftmenu .x-small {
	font-size: 0.7em;
	margin-left:22px;
}

div#leftmenu .menutree li {
	padding:0 0 2px 20px; 
	margin-bottom:0 0 0 0; 
	font-weight:bold; 
	font-size:1em; 
	list-style-type:none; 
	text-decoration: none;
	border:0;
	padding: 0 0 2px 20px; /* 20px left padding instead of 55px */  
}

.menutree {
	margin-left:22px; /*use this to replace all the other stuff that was here */

}

.menutree ul {
	font-size: .8em;
	margin-top:0px;
	padding-top: 0px;
	list-style: none;
}

.menutree li {
	padding-left: 5px;
	padding-right: 5px;
	position:relative;
	list-style: square;
}


.menutree ul li ul {
	font-size: .8em;
	margin-left: -30px;
	list-style: square;
}

.menutree li li {
	margin-left: -15px;
	list-style: square;
}

.menutree a:hover {
	border-bottom: 1px dotted black;
}


WebKat

Offline

#107 2020-08-03 17:08:24

Amin
Member
Registered: 2020-08-03
Posts: 17

Re: [plugin] [ORPHAN] wow_menu-Full menu control (order, hide/show items, subtree)

Hi,

I cannot download this plugin. Link is not available now. Can someone upload it here?

Thanks

Offline

#108 2020-08-03 17:17:52

gaekwad
Server grease monkey
From: People's Republic of Cornwall
Registered: 2005-11-19
Posts: 4,134
GitHub

Re: [plugin] [ORPHAN] wow_menu-Full menu control (order, hide/show items, subtree)

Amin wrote #325097:

I cannot download this plugin. Link is not available now. Can someone upload it here?

Download page

# wow_menu v1.02
# Allows you to display categories as a menu tree of list elements, and to apply a custom order to all items as well as hiding tree elements or displaying just a part of the tree, giving you full menu control. No hacks/mods required.
# Bjoern Schwenzer, Andrei Zinca
# http://www.shadowplanet.com/

# ......................................................................
# This is a plugin for Textpattern - http://textpattern.com/
# To install: textpattern > admin > plugins
# Paste the following text into the 'Install plugin' box:
# ......................................................................

YTo5OntzOjQ6Im5hbWUiO3M6ODoid293X21lbnUiO3M6NzoidmVyc2lvbiI7czo0OiIxLjAy
IjtzOjY6ImF1dGhvciI7czozMDoiQmpvZXJuIFNjaHdlbnplciwgQW5kcmVpIFppbmNhIjtz
OjEwOiJhdXRob3JfdXJpIjtzOjI4OiJodHRwOi8vd3d3LnNoYWRvd3BsYW5ldC5jb20vIjtz
OjExOiJkZXNjcmlwdGlvbiI7czoyMzE6IkFsbG93cyB5b3UgdG8gZGlzcGxheSBjYXRlZ29y
aWVzIGFzIGEgbWVudSB0cmVlIG9mIGxpc3QgZWxlbWVudHMsIGFuZCB0byBhcHBseSBhIGN1
c3RvbSBvcmRlciB0byBhbGwgaXRlbXMgYXMgd2VsbCBhcyBoaWRpbmcgdHJlZSBlbGVtZW50
cyBvciBkaXNwbGF5aW5nIGp1c3QgYSBwYXJ0IG9mIHRoZSB0cmVlLCBnaXZpbmcgeW91IGZ1
bGwgbWVudSBjb250cm9sLiBObyBoYWNrcy9tb2RzIHJlcXVpcmVkLiI7czo0OiJ0eXBlIjtp
OjE7czo0OiJoZWxwIjtzOjEyOTM2OiIKPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KIHRkIHsg
dmVydGljYWwtYWxpZ246dG9wOyB9CiBjb2RlIHsgY29sb3I6IzAwOTsgZm9udC13ZWlnaHQ6
Ym9sZDsgfQo8L3N0eWxlPgoKPGgxPjxiPndvd19NZW51IC0gZGVzY3JpcHRpb248L2I+PC9o
MT4KPHA+VGhlIHdvd19tZW51IHBsdWdpbiBnaXZlcyB5b3UgY29tcGxldGUgY29udHJvbCBv
dmVyIHlvdXIgY2F0ZWdvcnktYmFzZWQgbWVudSAtIG5vIGhhY2tzIHJlcXVpcmVkLjwvcD4K
CjxoMj48Yj5BZG1pbiBzaWRlPC9iPjwvaDI+CjxwPkFmdGVyIGluc3RhbGxhdGlvbiwgYSBu
ZXcgdGFiIG5hbWVkICI8aT5tZW51IGNvbnRyb2w8L2k+IiB3aWxsIGJlIHZpc2libGUgdW5k
ZXIgIjxpPmV4dGVuc2lvbnM8L2k+Ii4gQ2xpY2tpbmcgdGhpcyB0YWIgd2lsbCBkaXNwbGF5
IHRoZSBjdXJyZW50IG1lbnUgc3RydWN0dXJlIGJhc2VkIG9uIGNhdGVnb3JpZXMsIG9yZGVy
ZWQgYnkgdGhlIG1lbnUgaXRlbSBJRHMgYXMgc2V0IGluIHRoZSBkYXRhYmFzZS4gVGhlc2Ug
SURzIGFyZSBzaG93biBpbiBbc3F1YXJlIGJyYWNrZXRzXSBiZWhpbmQgZWFjaCBtZW51IGl0
ZW0gLSB5b3UgbWlnaHQgbmVlZCB0aGVtIGxhdGVyLCBzbyB0aGF0J3Mgd2hlcmUgeW91IGNh
biBmaW5kIHRoZW0uPC9wPgo8cD5Zb3Ugd2lsbCBiZSBhYmxlIHRvIG1vdmUgc2luZ2xlIGVs
ZW1lbnRzIG9yIGVudGlyZSBicmFuY2ggc3RydWN0dXJlcyB1cCBhbmQgZG93biBpbiB0aGUg
dHJlZSwgY3JlYXRpbmcgeW91ciBwcmVmZXJyZWQgbWVudSBpdGVtIG9yZGVyLiBXaGVuIHlv
dSdyZSBkb25lLCBjbGljayAiPGk+c2F2ZSBjaGFuZ2VzPC9pPiIuPC9wPgo8cD48Yj5Ob3Rl
OjwvYj4gV2hlbiBhY2Nlc3NpbmcgdGhlIG1lbnUgY29udHJvbCB0YWIgZm9yIHRoZSBmaXJz
dCB0aW1lLCBhIG5ldyBmaWVsZCB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhlIGRhdGFiYXNlLiBJ
ZiB0aGlzIHNob3VsZCBmYWlsLCB5b3Ugc2hvdWxkIHNlZSBhbiBlcnJvciBtZXNzYWdlLiBJ
biB0aGlzIGNhc2UsIHBsZWFzZSBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBkaXNwbGF5ZWQg
dG8gY3JlYXRlIHRoZSBmaWVsZCBtYW51YWxseS48L3A+Cgo8aDI+PGI+VGVtcGxhdGUgc2lk
ZTwvYj48L2gyPgo8cD5UbyB1c2UgdGhlIHdvd19tZW51IHBsdWdpbiBpbiB5b3VyIHRlbXBs
YXRlIGNvZGUsIHVzZSB0aGlzIHRhZzogPGNvZGU+Jmx0O3R4cDp3b3dfbWVudSAvJmd0Ozwv
Y29kZT48L3A+CjxwPlRoaXMgd2lsbCBkaXNwbGF5IHRoZSBtZW51IHRyZWUgaW4gdGhlIG9y
ZGVyIHlvdSBoYXZlIHNldCBwcmV2aW91c2x5IG9uIHRoZSBhZG1pbiBzaWRlLiA8Yj5Ob3Rl
IHRoYXQgeW91IG11c3QgaGF2ZSBhY2Nlc3NlZCB0aGUgYWRtaW4gc2lkZSBvZiB0aGUgcGx1
Z2luIGF0IGxlYXN0IG9uY2Ugc28gdGhlIGRhdGFiYXNlIGNoYW5nZSBoYXMgYmVlbiBlZmZl
Y3RlZC48L2I+IHdvd19tZW51IHdpbGwgbm90IHdvcmsgd2l0aG91dCB0aGlzLjwvcD4KPHA+
VGhlcmUgYWxzbyBpcyBhIGNvbmRpdGlvbmFsIHRhZyB3aGljaCB5b3UgY2FuIHVzZSB0byBv
bmx5IGRpc3BsYXkgY29udGVudCBpZiB0aGUgY3VycmVudCBjYXRlZ29yeSBiZWxvbmdzIHRv
IHRoZSBzYW1lIGJyYW5jaCBhcyBhIGdpdmVuIHBhcmVudCBjYXRlZ29yeTogPGNvZGU+Jmx0
O3R4cDp3b3dfbWVudV9pZl9zdWJfb2YgY2F0PSJNeSBDYXRlZ29yeSImZ3Q7PC9jb2RlPi4g
U2VlIGJlbG93IGZvciBkZXRhaWxzLjwvcD4KPGgzPlVzaW5nIHRoZSAmbHQ7dHhwOndvd19t
ZW51IC8mZ3Q7IHRhZzwvaDM+CjxwPjx0YWJsZT4KIDx0cj48dGg+QXR0cmlidXRlPC90aD48
dGg+RXhhbXBsZTwvdGg+PHRoPkRlc2NyaXB0aW9uPC90aD48L3RyPgogPHRyPjx0ZD48Y29k
ZT5zdGFydDwvY29kZT48L3RkPjx0ZD48Y29kZT4mbHQ7dHhwOndvd19tZW51IHN0YXJ0PSJt
eS1jYXRlZ29yeSIgLyZndDs8L2NvZGU+PC90ZD48dGQ+RG9lcyBub3QgYmVnaW4gdG8gYnVp
bGQgdGhlIHRyZWUgd2l0aCB0aGUgZmlyc3Qgcm9vdCBjYXRlZ29yeSBlbGVtZW50IChkZWZh
dWx0KSwgYnV0IHdpdGggdGhlIGdpdmVuIDxiPmFydGljbGUgY2F0ZWdvcnkgbmFtZSAobm90
IHRoZSBJRCBvciB0aGUgdGl0bGUhKTwvYj4uIEZvciBleGFtcGxlLCBpZiB5b3Ugc2V0IDxj
b2RlPnN0YXJ0PSJteS1jYXRlZ29yeSI8L2NvZGU+LCBvbmx5IHRoZSBlbGVtZW50IHdpdGgg
dGhpcyBuYW1lIHdpbGwgYmUgZGlzcGxheWVkLCBhbG9uZyB3aXRoIGFsbCBjaGlsZCBlbGVt
ZW50cy4gVGhpcyBlbGVtZW50IGlzIDxiPm5vdCBjdW11bGF0aXZlPC9iPiAtIG9ubHkgb25l
IGVsZW1lbnQgaXMgYWxsb3dlZC4gSWYgeW91IHdhbnQgdG8gc2VsZWN0aXZlbHkgZGlzcGxh
eSBzZXZlcmFsIHN1YiBicmFuY2hlcywgeW91IHNob3VsZCB1c2UgdHdvIHNlcGFyYXRlIHdv
d19tZW51IHRhZ3MuPC90ZD48L3RyPgogPHRyPjx0ZD48Y29kZT5zaG93cGFyZW50PC9jb2Rl
PjwvdGQ+PHRkPjxjb2RlPiZsdDt0eHA6d293X21lbnUgc2hvd3BhcmVudD0iMCIgLyZndDs8
L2NvZGU+PC90ZD48dGQ+T25seSB1c2VmdWwgaW4gY29ubmVjdGlvbiB3aXRoIHRoZSA8Y29k
ZT5zdGFydDwvY29kZT4gcGFyYW1ldGVyLiBJZiBzZXQgdG8gIjEiLCB0aGUgc3RhcnQgZWxl
bWVudCB3aWxsIGJlIGRpc3BsYXllZCBhbG9uZyB3aXRoIHRoZSBjaGlsZCBpdGVtcy4gU2V0
dGluZyBpdCB0byAiMCIgZGlzcGxheXMgb25seSB0aGUgY2hpbGQgZWxlbWVudHMgb2YgdGhl
IHN0YXJ0IG1lbnUgaXRlbS4gRGVmYXVsdCBpcyAiMSIuPC90ZD48L3RyPgogPHRyPjx0ZD48
Y29kZT5oaWRlPC9jb2RlPjwvdGQ+PHRkPjxjb2RlPiZsdDt0eHA6d293X21lbnUgaGlkZT0i
MTUiIC8mZ3Q7PC9jb2RlPjwvdGQ+PHRkPkFsbG93cyB5b3UgdG8gbm90IGRpc3BsYXkgYSBj
ZXJ0YWluIGVsZW1lbnQgPGI+aW5jbHVkaW5nPC9iPiBhbGwgaXRzIGNoaWxkIGVsZW1lbnRz
LiBUaGlzIGF0dHJpYnV0ZSBpcyBjdW11bGF0aXZlIC0gdG8gaGlkZSBtb3JlIG1lbnUgaXRl
bXMsIGFkZCB0aGUgSURzIHNlcGFyYXRlZCBieSBjb21tYXRhLCBsaWtlIHNvOiA8Y29kZT5o
aWRlPSIxNSwyMCwzMSI8L2NvZGU+IGV0Yy48L3RkPjwvdHI+CiA8dHI+PHRkPjxjb2RlPnNo
b3djb3VudDwvY29kZT48L3RkPjx0ZD48Y29kZT4mbHQ7dHhwOndvd19tZW51IHNob3djb3Vu
dD0iMSIgLyZndDs8L2NvZGU+PC90ZD48dGQ+U2V0IHRvIDxjb2RlPjE8L2NvZGU+IGlmIHlv
dSB3b3VsZCBsaWtlIHRvIGRpc3BsYXkgdGhlIG51bWJlciBvZiBjYXRlZ29yeSdzIGFydGlj
bGVzIGluIGJyYWNrZXRzIGJlaGluZCB0aGUgY2F0ZWdvcnkgbGluay4gVXNlIDxjb2RlPjI8
L2NvZGU+IHRvIGp1c3QgZGlzcGxheSB0aGUgbnVtYmVyIHdpdGhvdXQgdGhlIHdvcmQgJnF1
b3Q7YXJ0aWNsZS9zJnF1b3Q7LiBEZWZhdWx0IGlzIDxjb2RlPjA8L2NvZGU+IChvZmYpLjwv
dGQ+PC90cj4KIDx0cj48dGQ+PGNvZGU+c2FsPC9jb2RlPjwvdGQ+PHRkPjxjb2RlPiZsdDt0
eHA6d293X21lbnUgc2FsPSIwIiAvJmd0OzwvY29kZT48L3RkPjx0ZD5Td2l0Y2hlcyB0aGUg
c2VjdGlvbiBhdXRvLWxpbmsgKHNhbCkgZmVhdHVyZSBvbiBvciBvZmYuIFdoZW5ldmVyIHRo
ZXJlIGlzIGEgY2F0ZWdvcnkgYW5kIGEgc2VjdGlvbiB3aXRoIHRoZSBzYW1lIG5hbWUsIHRo
ZSBzZWN0aW9uIHdpbGwgYmUgbGlua2VkIGluc3RlYWQgb2YgdGhlIGNhdGVnb3J5IGF1dG9t
YXRpY2FsbHkuIEluIG90aGVyIHdvcmRzOiBJZiB5b3Ugd2FudCBhIHNlY3Rpb24gbGluayB0
byBiZSB2aXNpYmxlIGluIHlvdXIgbWVudSB0cmVlLCBqdXN0IGFkZCBhbiAoZW1wdHkpIGNh
dGVnb3J5IHdpdGggdGhlIHNlY3Rpb24ncyBuYW1lLCBhbmQgdGhlcmUgeW91IGdvLiBEZWZh
dWx0IGlzIDxjb2RlPjE8L2NvZGU+IChvbikuPC90ZD48L3RyPgogPHRyPjx0ZD48Y29kZT5q
c19hcnJheXM8L2NvZGU+PC90ZD48dGQ+PGNvZGU+Jmx0O3R4cDp3b3dfbWVudSBqc19hcnJh
eXM9IjAiIC8mZ3Q7PC9jb2RlPjwvdGQ+PHRkPkRpc3BsYXlzICgxKSBvciBoaWRlcyAoMCkg
dGhlIEphdmFTY3JpcHQgaGVscGVyIGFycmF5cy4gRGVmYXVsdCBpcyA8Y29kZT4xPC9jb2Rl
PiAob24pLiBUaGVyZSBhcmUgdGhyZWUgaGVscGVyIGFycmF5czoKICA8dWw+CiAgIDxsaT48
Y29kZT5tZW51X2xldmVsczwvY29kZT46IENvbnRhaW5zIHRoZSBtZW51IGxldmVscyB3aGlj
aCBtdXN0IGJlIHZpc2libGUgdG8gZGlzcGxheSB0aGUgYnJhbmNoIGEgY2VydGFpbiBtZW51
IGVsZW1lbnQgcmVzaWRlcyBpbi4gRXhhbXBsZTogPGNvZGU+bWVudV9sZXZlbHNbMl0gPSAi
MCwxIjwvY29kZT4gbWVhbnMgdGhhdCBmb3IgbWVudSBpdGVtIDIgKHRoZSA8Y29kZT4mbHQ7
bGkgaWQ9IjIiJmd0OzwvY29kZT4gZWxlbWVudCkgdGhlIFVMcyA8Y29kZT4mbHQ7dWwgaWQ9
IjAiJmd0OzwvY29kZT4gYW5kIDxjb2RlPiZsdDt1bCBpZD0iMSImZ3Q7PC9jb2RlPiBtdXN0
IGJlIGRpc3BsYXllZC4gVmVyeSBoZWxwZnVsIGlmIHlvdSBoYXZlIGFuIDxjb2RlPk9uTW91
c2VPdmVyPC9jb2RlPiBvbiBhIGNlcnRhaW4gZWxlbWVudCBhbmQgd2FudCB0byBtYWtlIHN1
cmUgdGhlIGNvcnJlY3QgVUxzIGFyZSBhY3R1YWxseSB2aXNpYmxlLjwvbGk+CiAgIDxsaT48
Y29kZT5tZW51X25hbWVzPC9jb2RlPjogVGhpcyBhc3NvY2lhdGl2ZSBhcnJheSBjb250YWlu
cyBhbGwgbWVudSBpdGVtIHRpdGxlcyAoZS5nLiAiTXktdGl0bGUiKSBhcyBuYW1lIGFuZCB0
aGUgbWVudSBpdGVtIElEIGFzIHZhbHVlLiBFeGFtcGxlOiA8Y29kZT5tZW51X25hbWVzWydN
eS10aXRsZSddID0gODwvY29kZT4gdGVsbHMgeW91IHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcg
PGNvZGU+Jmx0O2xpJmd0OzwvY29kZT4gZWxlbWVudCBjYW4gYmUgYWRkcmVzc2VkIGJ5IDxj
b2RlPmdldEVsZW1lbnRCeUlkKDgpOzwvY29kZT4uIFZlcnkgaGVscGZ1bCBpZiB5b3UgcmV0
cmlldmUgYSBjYXRlZ29yeS9zZWN0aW9uIG5hbWUgZGlyZWN0bHkgZnJvbSB0aGUgVVJMIGFu
ZCB3YW50IHRvIGRldGVybWluZSB3aGljaCBpdGVtIHRvIHNob3cuPC9saT4KICAgPGxpPjxj
b2RlPm1lbnVfc3VibGV2ZWw8L2NvZGU+OiBUaGlzIGlzIHRoZSBvcHBvc2l0ZSB0byB0aGUg
bWVudV9sZXZlbHMgYXJyYXkgYXMgaXQgY29udGFpbnMgdGhlIHN1YmxldmVscyB0aGF0IGFu
IG1lbnUgZWxlbWVudCAoPGNvZGU+Jmx0O2xpJmd0OzwvY29kZT4pIG93bnMuIEV4YW1wbGU6
IDxjb2RlPm1lbnVfc3VibGV2ZWxbNV0gPSAiMyI8L2NvZGU+IG1lYW5zIHRoYXQgdGhlIDxj
b2RlPiZsdDt1bCZndDs8L2NvZGU+IHRhZyB3aXRoIHRoZSBJRCAzIGlzIHNwYXduZWQgdW5k
ZXIgdGhpcyA8Y29kZT4mbHQ7bGkmZ3Q7PC9jb2RlPi4gVmVyeSBoZWxwZnVsIGlmIHlvdSB3
YW50IHRvIGR5bmFtaWNhbGx5IGRpc3BsYXkgdGhlIGNoaWxkIG1lbnUgbGV2ZWwgb2YgYSBn
aXZlbiBtZW51IGl0ZW0uPC9saT4KICA8L3VsPgogV2UgZm91bmQgdGhhdCB1c2luZyBDU1Mg
b25seSB0byBjb250cm9sIHRoZSBtZW51IHdvcmtzIG5pY2VseSwgYnV0IG9sZGVyIGJyb3dz
ZXJzIChzdWNoIGFzIElFIDopIHNjcmV3cyBpdCB1cCBhcyBJRTYsIGZvciBleGFtcGxlLCBk
b2VzIG5vdCBrbm93IHRoZSA8Y29kZT5ob3ZlcjwvY29kZT4gYXR0cmlidXRlIGluIGNvbm5l
Y3Rpb24gd2l0aCB0YWdzIG90aGVyIHRoYW4gPGNvZGU+Jmx0O2EmZ3Q7PC9jb2RlPi4gSWYg
eW91IGNhbid0IG9yIGRvbid0IHdhbnQgdG8gdXNlIC5odGMgZmlsZXMgdG8gZ2V0IElFIHVw
IHRvIHNwZWVkLCBKYXZhU2NyaXB0IGlzIHlvdXIgb25seSBjaG9pY2UuIFRvIHN1cHBvcnQg
eW91IGluIGRldmVsb3BpbmcgeW91ciBvd24gbWVudSBjb250cm9sIGZ1bmN0aW9ucywgd293
X21lbnUgZGVsaXZlcnMgdGhlc2UgaGVscGVyIGFycmF5cy4gUGxlYXNlIG5vdGUgdGhhdCB3
b3dfbWVudSBhbHNvIG9mZmVycyB0byBjb25uZWN0IGN1c3RvbSBKYXZhU2NyaXB0IGV2ZW50
IGhhbmRsZXIgZnVuY3Rpb24gY2FsbHMgd2l0aCBlYWNoIDxjb2RlPiZsdDthJmd0OzwvY29k
ZT4sIDxjb2RlPiZsdDtsaSZndDs8L2NvZGU+IGFuZCA8Y29kZT4mbHQ7dWwmZ3Q7PC9jb2Rl
PiBlbGVtZW50IHdoaWNoIG1ha2VzIHRoaXMgYXBwcm9hY2ggZXZlbiBtb3JlIHBvd2VyZnVs
IChzZWUgYmVsb3cpLjwvdGQ+PC90cj4KICA8dHI+PHRkPjxjb2RlPmpzX2E8L2NvZGU+PC90
ZD48dGQ+PGNvZGU+Jmx0O3R4cDp3b3dfbWVudSBqc19hPSJvbkNsaWNrPW15RnVuY3Rpb24i
IC8mZ3Q7PC9jb2RlPjwvdGQ+PHRkPlRoZSBjb250ZW50IG9mIHRoaXMgYXR0cmlidXRlIHdp
bGwgYmUgdHJhbnNmb3JtZWQgaW50byBhbiBldmVudCBoYW5kbGVyLWJhc2VkIEphdmFTY3Jp
cHQgZnVuY3Rpb24gY2FsbCBmb3IgYWxsIDxjb2RlPiZsdDthJmd0OzwvY29kZT4gdGFncywg
YXV0b21hdGljYWxseSBhcHBlbmRpbmcgdGhlIElEIG9mIHRoZSBjdXJyZW50IGVsZW1lbnQg
YXMgaGFuZG92ZXIgdmFsdWUuIDxiPlBsZWFzZSBtaW5kIHRoZSBub3RhdGlvbiBvZiB0aGlz
IGF0dHJpYnV0ZSEgVGhlIHN5bnRheCBpcyA8Y29kZT5ldmVudEhhbmRsZXI9ZnVuY3Rpb25D
YWxsPC9jb2RlPiB3aXRob3V0IGFueSBxdW90ZXMgb3IgYnJhY2tldHMhPC9iPiBUaGVzZSB3
aWxsIGJlIGFkZGVkIGF1dG9tYXRpY2FsbHkgdG8gdHJhbnNmb3JtIHRoZSBleGFtcGxlIHN0
cmluZyBpbnRvIDxjb2RlPiZsdDthIGlkPSJ4IiBvbkNsaWNrPSJteUZ1bmN0aW9uKHgpIiBo
cmVmPS4uLiZndDs8L2NvZGU+LCB3aXRoIDxjb2RlPng8L2NvZGU+IGJlaW5nIHRoZSB0YWcg
aWQuIFRvIGFkZCBhbm90aGVyIGV2ZW50IGhhbmRsZXIgZnVuY3Rpb24gY2FsbCwgdXNlIGNv
bW1hcywgbGlrZSBzbzogPGNvZGU+anNfYT0ib25DbGljaz1teUZ1bmN0aW9uLG9uRm9jdXM9
bXlOZXh0RnVuY3Rpb24iPC9jb2RlPi4gVGhpcyBhdHRyaWJ1dGUgaXMgZW1wdHkgYnkgZGVm
YXVsdC48L3RkPjwvdHI+CiAgPHRyPjx0ZD48Y29kZT5qc19saTwvY29kZT48L3RkPjx0ZD48
Y29kZT4mbHQ7dHhwOndvd19tZW51IGpzX2xpPSJvbkNsaWNrPW15RnVuY3Rpb24iIC8mZ3Q7
PC9jb2RlPjwvdGQ+PHRkPlNhbWUgYXMgYWJvdmUsIG9ubHkgZm9yIGFsbCA8Y29kZT4mbHQ7
bGkmZ3Q7PC9jb2RlPiBlbGVtZW50cy4gPGI+UGxlYXNlIHJlYWQgdGhlIGRlc2NyaXB0aW9u
IG9mIHRoZSA8Y29kZT5qc19hPC9jb2RlPiBhdHRyaWJ1dGUgYWJvdmUhPC9iPiBUaGlzIGF0
dHJpYnV0ZSBpcyBlbXB0eSBieSBkZWZhdWx0LjwvdGQ+PC90cj4KICA8dHI+PHRkPjxjb2Rl
PmpzX3VsPC9jb2RlPjwvdGQ+PHRkPjxjb2RlPiZsdDt0eHA6d293X21lbnUganNfdWw9Im9u
Q2xpY2s9bXlGdW5jdGlvbiIgLyZndDs8L2NvZGU+PC90ZD48dGQ+U2FtZSBhcyBhYm92ZSwg
b25seSBmb3IgYWxsIDxjb2RlPiZsdDt1bCZndDs8L2NvZGU+IGVsZW1lbnRzLiA8Yj5QbGVh
c2UgcmVhZCB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIDxjb2RlPmpzX2E8L2NvZGU+IGF0dHJp
YnV0ZSBhYm92ZSE8L2I+IFRoaXMgYXR0cmlidXRlIGlzIGVtcHR5IGJ5IGRlZmF1bHQuPC90
ZD48L3RyPgo8L3RhYmxlPjwvcD4KPHA+V2l0aCB0aGVzZSBvcHRpb25zLCB5b3Ugc2hvdWxk
IGJlIGFibGUgdG8gaW1wbGVtZW50IGFsbCB0aGUgY3VzdG9tIG1lbnUgc3RydWN0dXJlcyB5
b3UgbmVlZC4gWW91IG1heSBhbHNvIGNvbWJpbmUgaXQgd2l0aCB0aGUgd293X3Nlc3Npb24g
YW5kIHdvd19sb2dpbmJveCBwbHVnaW5zIChhdmFpbGFibGUgc29vbikgdG8gY3JlYXRlIG1l
bnUgc3RydWN0dXJlcyBmb3IgbG9nZ2VkLWluIGFuZCBsb2dnZWQtb3V0IGFyZWFzLjwvcD4K
PHA+UGxlYXNlIG5vdGU6IElmIHlvdSBjb21iaW5lIDxjb2RlPnN0YXJ0PSJ4IjwvY29kZT4g
YW5kIDxjb2RlPmhpZGU9InkiPC9jb2RlPiB2YWx1ZXMsIG1ha2Ugc3VyZSB5b3VyIHNldHRp
bmdzIGFyZSBsb2dpY2FsbHkgc291bmQgLSB5b3UgY2FuIGVhc2lseSBjcmVhdGUgYSBzaXR1
YXRpb24gd2hpY2ggd2lsbCBjYXVzZSB0aGUgcGx1Z2luIHRvIGNyYXNoIG9yIHJldHVybiB2
ZXJ5IHN0cmFuZ2UgcmVzdWx0cyAoZm9yIGV4YW1wbGUgc3RhcnRpbmcgdGhlIHRyZWUgd2l0
aCBhIGNhdGVnb3J5IHlvdSBzcGVjaWZpZWQgYXMgaGlkZGVuLCBldGMpLjwvcD4KCjxoMz5V
c2luZyB0aGUgJmx0O3R4cDp3b3dfbWVudV9pZl9zdWJfb2YmZ3Q7IGNvbmRpdGlvbmFsIHRh
ZzwvaDM+CjxwPklmIHlvdSB3b3VsZCBsaWtlIHRvIG9ubHkgc2hvdyBjb250ZW50IGlmIHRo
ZSBjdXJyZW50IGNhdGVnb3J5L2FydGljbGUncyBjYXRlZ29yeSBpcyBhIGNoaWxkIG9mIGEg
Y2VydGFpbiBwYXJlbnQgY2F0ZWdvcnksIHVzZSB0aGlzIGNvbmRpdGlvbmFsIHRhZy4gRm9y
IGV4YW1wbGU6IEEgcGFydCBvZiB5b3VyIHNpdGUncyBjYXRlZ29yeSB0cmVlIGxvb2tzIGxp
a2UgdGhpczogSG9tZSAtJmd0OyBNeSBwYWdlcyAtJmd0OyBEYWlseSBibG9nLiBJZiB5b3Ug
d2FudCB0byBzaG93IHRoZSBxdW90ZSBvZiB0aGUgZGF5IGZvciBhbGwgY2F0ZWdvcmllcyBi
ZWxvdyAiTXkgcGFnZXMiIChlLmcuICJEYWlseSBibG9nIiksIGJ1dCBub3Qgb24gdGhlIHJl
c3Qgb2YgeW91ciBzaXRlLCB5b3UgY2FuIGFkZCB0aGlzIHRhZyB0byB5b3VyIGRlZmF1bHQg
cGFnZSBsaWtlIHNvOiA8Y29kZT4mbHQ7dHhwOndvd19tZW51X2lmX3N1Yl9vZiBjYXQ9Ik15
IHBhZ2VzIiZndDtNeSBxdW90ZSBvZiB0aGUgZGF5Jmx0Oy90eHA6d293X21lbnVfaWZfc3Vi
X29mJmd0OzwvY29kZT4uPC9wPgo8cD48dGFibGU+CiA8dHI+PHRoPkF0dHJpYnV0ZTwvdGg+
PHRoPkV4YW1wbGU8L3RoPjx0aD5EZXNjcmlwdGlvbjwvdGg+PC90cj4KIDx0cj48dGQ+PGNv
ZGU+Y2F0PC9jb2RlPjwvdGQ+PHRkPjxjb2RlPiZsdDt0eHA6d293X21lbnVfaWZfc3ViX29m
IGNhdD0iTXkgcGFnZXMiJmd0OzwvY29kZT48L3RkPjx0ZD5DaGVja3MgaWYgdGhlIGN1cnJl
bnQgY2F0ZWdvcnkgKG5vIG1hdHRlciBpZiBhcnRpY2xlJ3MgY2F0ZWdvcnkgKGlkPS4uKSBv
ciB2aWV3ZWQgY2F0ZWdvcnkgKGM9Li4pKSBpcyBhIHN1YmNhdGVnb3J5IChyZWdhcmRsZXNz
IG9mIHRoZSBuZXN0aW5nIGxldmVsKSBvZiB0aGUgb25lIGdpdmVuIGluIHRoZSA8Y29kZT5j
YXQ8L2NvZGU+IGF0dHJpYnV0ZS4gSWYgeWVzLCB0aGUgZW5jYXBzdWxhdGVkIGNvbnRlbnQg
d2lsbCBiZSBkaXNwbGF5ZWQuIERvIG5vdCBmb3JnZXQgdG8gY2xvc2UgdGhlIHRhZyBsaWtl
IHdpdGggYW55IG90aGVyIGNvbmRpdGlvbmFsIHRhZ3MgaW4gVFhQLjwvdGQ+PC90cj4KIDx0
cj48dGQ+PGNvZGU+aW5jbHVkZV9jYXQ8L2NvZGU+PC90ZD48dGQ+PGNvZGU+Jmx0O3R4cDp3
b3dfbWVudV9pZl9zdWJfb2YgY2F0PSJNeSBwYWdlcyIgaW5jbHVkZV9jYXQ9IjEiJmd0Ozwv
Y29kZT48L3RkPjx0ZD5JbiBhZGRpdGlvbiB0byB0aGUgcnVsZSBzdGF0ZWQgYWJvdmUsIGFs
c28gZGlzcGxheXMgdGhlIGNvbnRlbnQgaWYgdGhlIGN1cnJlbnQgY2F0ZWdvcnkgPHN0cm9u
Zz5lcXVhbHM8L3N0cm9uZz4gdGhlIG9uZSBnaXZlbiBpbiB0aGUgPGNvZGU+Y2F0PC9jb2Rl
PiBhdHRyaWJ1dGUuIERlZmF1bHQgaXMgb2ZmICgwKS48L3RkPjwvdHI+CjwvdGFibGU+PC9w
PgoKPHA+VGhhbmsgeW91IGZvciB1c2luZyB0aGUgd293X21lbnUgcGx1Z2luLiBFbmpveSE8
L3A+CjxwPlBsZWFzZSBzZW5kIGNvbW1lbnRzIHRvIDxhIGhyZWY9Im1haWx0bzpzY2h3ZW56
ZXJAbmlnaHR3b3Jrcy5kZSI+c2Nod2VuemVyQG5pZ2h0d29ya3MuZGU8L2E+LjwvcD4KPGgy
PjxiPkNoYW5nZWxvZzwvYj48L2gyPgo8cD48dGFibGU+CiA8dHI+PHRoPlZlcnNpb248L3Ro
Pjx0aD5SZWxlYXNlIGRhdGU8L3RoPjx0aD5Db21tZW50PC90aD48L3RyPgogPHRyPjx0ZD4w
LjE8L3RkPjx0ZD4yMDA1MTEwMTwvdGQ+PHRkPkluaXRpYWwgdmVyc2lvbiBqdXN0IGZvciB0
ZXN0aW5nLCBub3QgcHVibGljbHkgcmVsZWFzZWQuPC90ZD48L3RyPgogPHRyPjx0ZD4wLjI8
L3RkPjx0ZD4yMDA1MTEzMDwvdGQ+PHRkPk9mZmljaWFsIGJldGE8L3RkPjwvdHI+CiA8dHI+
PHRkPjAuMzwvdGQ+PHRkPjIwMDUxMjAxPC90ZD48dGQ+RGlzcGxheSBjYXRlZ29yaWVzIGFz
IGxpbmtzLCBjb2RlIGNsZWFudXA8L3RkPjwvdHI+CiA8dHI+PHRkPjAuNDwvdGQ+PHRkPjIw
MDUxMjAzPC90ZD48dGQ+Rml4ZWQgdHJlZSB3aXRoICJoaWRlIiBhbmQgInN0YXJ0IiBhdHRy
aWJ1dGVzIGluIHVzZSwgZml4ZWQgcm9vdCBlbGVtZW50IGRpc3BsYXkgaWYgc3RhcnQgYXR0
cmlidXRlIGluIHVzZSwgY2hhbmdlZCBkaXNwbGF5IHRvIGN1cnJlbnQgbWVudSBvcmRlciBv
biAibWVudSBjb250cm9sIiwgY29ycmVjdGVkIG1ham9yIGVycm9yIGluIGhlbHAgdGV4dCwg
cmVmb3JtYXR0ZWQgaGVscCB0ZXh0IHRvIHVzZSBIVE1MIHRhZ3MgaW5zdGVhZCBvZiBUZXh0
aWxlPC90ZD48L3RyPgogPHRyPjx0ZD4wLjU8L3RkPjx0ZD4yMDA1MTIxNDwvdGQ+PHRkPkFk
ZGVkIG5ldyBvcHRpb24gInNob3dwYXJlbnQiIGZvciBzdWJ0cmVlcywgZml4ZWQgaXNzdWUg
d2hlcmUgdGhlIGNsb3NpbmcgdGFncyBhdCB0aGUgZW5kIG9mIHRoZSB0cmVlIGRpZCBub3Qg
bWF0Y2ggdGhlIG9wZW5pbmcgdGFncywgYW1lbmRlZCBoZWxwIHRleHQsIGNsZWFuZWQtdXAg
Y29kZTwvdGQ+PC90cj4KIDx0cj48dGQ+MC42PC90ZD48dGQ+MjAwNTEyMjU8L3RkPjx0ZD5G
aXhlZCBtaXNzaW5nIHBhcmFtZXRlciBidWcgZm9yICJkaXNwbGF5TWVudSIgZnVuY3Rpb24g
Y2FsbCwgYWxsIEhUTUwgdGFncyBub3cgdW5jYXBpdGFsaXplZCBmb3Igc3VjY2Vzc2Z1bCBj
b2RlIHZhbGlkYXRpb248L3RkPjwvdHI+CiA8dHI+PHRkPjAuNzwvdGQ+PHRkPjIwMDYwMTE2
PC90ZD48dGQ+TWVyZ2VkIGNvZGUgd2l0aCBBbmRyZWkncyBpbXByb3ZlbWVudHMgKHNob3dj
b3VudCksIGFkZGVkIGJ1Z2ZpeCBmb3Igc3VidHJlZSBkaXNwbGF5IChBbmRyZWkpLCBtYW51
YWwgYW1lbmRlZCwgZmlyc3QgcmVsZWFzZSBtYW5hZ2VkIHRocm91Z2ggU1ZOLiBOb3QgcHVi
bGljbHkgcmVsZWFzZWQuPC90ZD48L3RyPgogPHRyPjx0ZD4wLjg8L3RkPjx0ZD4yMDA2MDIw
NDwvdGQ+PHRkPkFkZGVkIGlkIGF0dHJpYnV0ZSBmb3IgYWxsICZsdDtsaSZndDsgYW5kICZs
dDt1bCZndDsgdGFncyB0byBhbGxvdyBET00gdHJlZSBtYW5pcHVsYXRpb24gd2l0aCBKYXZh
U2NyaXB0LCBhZGRlZCBKYXZhU2NyaXB0IGFycmF5ICgibWVudV9sZXZlbHMiKSB3aXRoIGFs
bCByZWxhdGVkICZsdDt1bCZndDsgdGFnIGlkJ3MgZm9yIGV2ZXJ5ICZsdDtsaSZndDsgZWxl
bWVudCwgYWRkZWQgc2VjdGlvbiBhdXRvLWxpbmsgZmVhdHVyZSwgYnVnZml4IGluIGhpZGUg
aXRlbSBwcm9jZWR1cmU8L3RkPjwvdHI+CiA8dHI+PHRkPjAuOC4xPC90ZD48dGQ+MjAwNjAy
Mjc8L3RkPjx0ZD5SZW1vdmVkIDxpPnNob3dlbXB0eTwvaT4gYXR0cmlidXRlIGFuZCB0aGUg
YWJpbGl0eSB0byBkZWNpZGUgaWYgZW1wdHkgY2F0ZWdvcmllcyBzaG91bGQgYmUgZGlzcGxh
eWVkLCBidWdmaXggZm9yIHNob3dpbmcgbnVtYmVyIG9mIGFydGljbGVzIGNvcnJlY3RseSwg
Zml4ZWQgcGVybWxpbmsgaXNzdWVzLjwvdGQ+PC90cj4KIDx0cj48dGQ+MC45PC90ZD48dGQ+
MjAwNjAzMTM8L3RkPjx0ZD5JbXByb3ZlZCBKYXZhU2NyaXB0IHN1cHBvcnQgYnkgYWRkaW5n
IG5ldyBoZWxwZXIgYXJyYXlzLCBhYmlsaXR5IHRvIGluc2VydCBjdXN0b20gSmF2YVNjcmlw
dCBjb2RlIGZvciBlYWNoIGxpLCB1bCBhbmQgYSB0YWcgaW4gdGhlIHRyZWUsIGFiaWxpdHkg
dG8gaW5jbHVkZS9leGNsdWRlIEphdmFTY3JpcHQgaGVscGVyIGFycmF5cywgYW1lbmRlZCBo
ZWxwIHRleHQuPC90ZD48L3RyPgogPHRyPjx0ZD4xLjAgUkMxPC90ZD48dGQ+MjAwNjA2MTU8
L3RkPjx0ZD5BZGRlZCBESVYgdGFnIGJlZm9yZSBhbmQgYWZ0ZXIgSFJFRnM8L3RkPjwvdHI+
CiA8dHI+PHRkPjEuMCBSQzI8L3RkPjx0ZD4yMDA2MTAwMzwvdGQ+PHRkPkZpeGVkIGJ1ZyB3
aGljaCBkaWQgbm90IGNsb3NlIGxpLXRhZ3MgcHJvcGVybHkuPC90ZD48L3RyPgogPHRyPjx0
ZD4xLjA8L3RkPjx0ZD4yMDA3MDEwNzwvdGQ+PHRkPkFkZGVkIHdvd19tZW51X2lmX3N1Yl9v
ZiBjb25kaXRpb25hbCB0YWcuIENvZGUtY2xlYW51cCwgQ1NTIGRpc3BsYXkgaXNzdWVzIHdp
dGggVFhQIDQuMC40IG9uIHRoZSBhZG1pbiBzY3JlZW4gZml4ZWQsIGhlbHAgdGV4dCBhbWVu
ZGVkLjwvdGQ+PC90cj4KIDx0cj48dGQ+MS4wMTwvdGQ+PHRkPjIwMDcwMTI3PC90ZD48dGQ+
Rml4ZWQgPGNvZGU+c2hvd2NvdW50PSZxdW90OzImcXVvdDs8L2NvZGU+IGJ1ZzwvdGQ+PC90
cj4KIDx0cj48dGQ+MS4wMjwvdGQ+PHRkPjIwMDcwMzI0PC90ZD48dGQ+QWRkZWQgYXR0cmli
dXRlIDxjb2RlPmluY2x1ZGVfY2F0PC9jb2RlPiB0byB3b3dfbWVudV9pZl9zdWJfb2YgdGFn
PC90ZD48L3RyPgo8L3RhYmxlPjwvcD4KPGgyPjxiPktub3duIGlzc3VlczwvYj48L2gyPgo8
cD48dWw+PGxpPndvd19tZW51IHdvbid0IHdvcmsgd2l0aCBJRTYuIEkgcmVjb21tZW5kIHVz
aW5nIEZpcmVmb3ggb3IgYW5vdGhlciB1cC10by1kYXRlIGJyb3dzZXIuIFN1cHBvcnQgZm9y
IElFIHdpbGwgPGI+bm90PC9iPiBiZSBhZGRlZC48L2xpPgo8bGk+QWxsIGxpbmtzIHRvIHNl
Y3Rpb25zIGFuZCBjYXRlZ29yaWVzIHRocm91Z2ggdGhlIHdvd19tZW51IG91dHB1dCB1c2Ug
dGhlIG1lc3N5IGxpbmsgbW9kZS4gVGhpcyBkb2VzIG5vdCBhZmZlY3QgeW91ciBwZXJtbGlu
ayBtb2RlIHNldHRpbmdzLCB0aG91Z2guPC9saT4KPGxpPkFydGljbGUgY291bnQgb25seSB3
b3JrcyB3aXRoIGNhdGVnb3JpZXMuIElmIHlvdSB1c2UgPGNvZGU+c2FsPC9jb2RlPiwgcmVt
ZW1iZXIgdGhhdCB0aGUgYXJ0aWNsZSBjb3VudCByZWZlcnMgdG8gYXJ0aWNsZXMgY2F0ZWdv
cml6ZWQgZm9yIHRoZSBzZWN0aW9uIHdpdGggdGhhdCBuYW1lLjwvbGk+CjwvdWw+PC9wPgoi
O3M6NDoiY29kZSI7czoyNDA0MzoiCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZnVuY3Rpb24gd293X21lbnUoJGF0dHMpIHsKCWds
b2JhbCAkanNfYTsKCS8vIDx0eHA6d293X21lbnUgc3RhcnQ9InJvb3QiIGhpZGU9IjE1IiBz
aG93cGFyZW50PSIxIiAvPgoKCS8vIEFuYWx5emUgdGFnCglleHRyYWN0KGxBdHRzKGFycmF5
KAoJCSdzdGFydCcgICAgICA9PiAncm9vdCcsICAvLyBjYXRlZ29yeSB0byBzdGFydCB0cmVl
IHdpdGg7ICI/IiBzdGFydHMgd2l0aCBjdXJyZW50IGNhdGVnb3J5CgkJJ2hpZGUnICAgICAg
ID0+ICcnLCAgICAgIC8vIGxpc3Qgb2YgaXRlbXMgdG8gaGlkZSAoY2F0ZWdvcnkgbmFtZXMg
b3IgSURzKSA8LS0gTkFNRVMgbm90IGltcGxlbWVudGVkIHlldCEhCgkJJ3Nob3dwYXJlbnQn
ID0+ICcxJywgICAgIC8vIHNob3cgcGFyZW50IGl0ZW0gKGFwcGxpY2FibGUgZm9yIHN1YnRy
ZWVzIHVzaW5nIHRoZSBzdGFydCBhdHRyaWJ1dGUpCgkJJ3Nob3djb3VudCcgID0+ICcwJywg
ICAgIC8vIHNob3cgbnVtYmVyIG9mIGFydGljbGVzIGluIGNhdGVnb3J5CgkJJ3NhbCcgICAg
ICAgID0+ICcxJywgICAgIC8vIHNhbCAoU2VjdGlvbiBBdXRvLUxpbmspIG9uL29mZgoJCSdq
c19hcnJheXMnICA9PiAnMScsICAgICAvLyBzaG93cygxKS9oaWRlcygwKSB0aGUgSmF2YVNj
cmlwdCBoZWxwZXIgYXJyYXlzIHRvIGFzc2lzdCBpbiBKYXZhU2NyaXB0IG1lbnUgY29udHJv
bAogICAgICAgIC8vIEhlcmUgY29tZXMgYSBzcGVjaWFsdHk6IEphdmFTY3JpcHQgZnVuY3Rp
b24gY2FsbHMgYmFzZWQgb24ganMgZXZlbnRzLCBsaWtlICJvbk1vdXNlT3ZlciIuCiAgICAg
ICAgLy8gVGhlIGN1cnJlbnQgSUQgb2YgdGhlIGdpdmVuIGVsZW1lbnQgLSA8YT4sIDxsaT4s
IG9yIDx1bD4gLSB3aWxsIGJlIHBhc3NlZCBvbiBhdXRvbWF0aWNhbGx5IHRvIHRoZSBnaXZl
biBmdW5jdGlvbi4KICAgICAgICAvLyBVc2UgdGhpcyBmb3JtYXQ6ICdqc0V2ZW50PWZ1bmN0
aW9uJywgbXVsdGlwbGUgY2FsbHMgc2VwYXJhdGVkIGJ5IGNvbW1hLCBlLmcuICdvbkNsaWNr
PW15YWN0aW9uMSxvbkZvY3VzPW15YWN0aW9uMicKICAgICAgICAvLyBVc2VkIG9uIDxsaT4g
dGFncywgdGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlOiA8bGkgaWQ9IngiIG9uQ2xp
Y2s9Im15YWN0aW9uMSh4KTsiIG9uRm9jdXM9Im15YWN0aW9uMih4KTsiPgoJCSdqc19hJyAg
ICAgICA9PiAnJywgICAgICAvLyBKYXZhU2NyaXB0IGZ1bmN0aW9ucyBmb3IgdGhlIDxhPiB0
YWdzCgkJJ2pzX2xpJyAgICAgID0+ICcnLCAgICAgIC8vIEphdmFTY3JpcHQgZnVuY3Rpb25z
IGZvciB0aGUgPGxpPiB0YWdzCgkJJ2pzX3VsJyAgICAgID0+ICcnICAgICAgIC8vIEphdmFT
Y3JpcHQgZnVuY3Rpb25zIGZvciB0aGUgPHVsPiB0YWdzCgkpLCRhdHRzKSk7CgoJJG1lbnVS
ZW5kZXJlZCA9IGRpc3BsYXlNZW51KCRzdGFydCwgJGhpZGUsICRzaG93cGFyZW50LCAkc2hv
d2NvdW50LCAkc2FsLCAkanNfYXJyYXlzLCAkanNfYSwgJGpzX2xpLCAkanNfdWwpOwoJcmV0
dXJuKCRtZW51UmVuZGVyZWQpOwp9CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJLy8gQWRkIGEgbmV3IHRhYiB0byB0aGUgQ29u
dGVudCBhcmVhLgoJaWYgKEB0eHBpbnRlcmZhY2UgPT0gJ2FkbWluJykgewoJCSRteWV2ZW50
ID0gJ21lbnVfY29udHJvbCc7CgkJJG15dGFiID0gJ01lbnUgY29udHJvbCc7CgoJCS8vIFNl
dCB0aGUgcHJpdmlsZWdlIGxldmVscyBmb3Igb3VyIG5ldyBldmVudAoJCWFkZF9wcml2cygk
bXlldmVudCwgJzEsMicpOwoKCQkvLyBBZGQgYSBuZXcgdGFiIHVuZGVyICdleHRlbnNpb25z
JyBhc3NvY2lhdGVkIHdpdGggb3VyIGV2ZW50CgkJcmVnaXN0ZXJfdGFiKCJleHRlbnNpb25z
IiwgJG15ZXZlbnQsICRteXRhYik7CgoJCS8vIFJlZ2lzdGVyIHdvd19tZW51X2NvbnRyb2wg
YXMgY2FsbGJhY2sgZnVuY3Rpb24KCQlyZWdpc3Rlcl9jYWxsYmFjaygid293X21lbnVfY29u
dHJvbCIsICRteWV2ZW50KTsKCX0KCmZ1bmN0aW9uIHdvd19tZW51X2NvbnRyb2woJGV2ZW50
LCAkc3RlcCkgewogcGFnZXRvcCgiTWVudSBDb250cm9sIik7CgplY2hvIDw8PENTU19CTE9D
SwogPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KIGgxIHsgdGV4dC1hbGlnbjpjZW50ZXI7IH0K
ICNtZW51Ym94IHsKIAl3aWR0aDo1MDBweDsKIAl0ZXh0LWFsaWduOmNlbnRlcjsKCW1hcmdp
bi1sZWZ0OmF1dG87CgltYXJnaW4tcmlnaHQ6YXV0bzsKIH0KCiAjbWVudXRyZWUgewogCXRl
eHQtYWxpZ246bGVmdDsKCW1hcmdpbi1sZWZ0Oi0zMHB4OwogfQoKICNtZW51Ym94IGEgewog
CWZvbnQtd2VpZ2h0OmJvbGQ7CiAJZm9udC1zaXplOjE0cHg7CiB9CgojbWVudXRyZWUgdWwg
ewoJbWFyZ2luOjA7CgltYXJnaW4tbGVmdDoxMHB4OwoJcGFkZGluZzowOwp9CgogI21lbnV0
cmVlIGxpLAogI21lbnV0cmVlIGxpIGxpLAogI21lbnV0cmVlIGxpIGxpIGxpLAogI21lbnV0
cmVlIGxpIGxpIGxpIGxpIHsKIAltYXJnaW46MXB4IDBweCAwcHggMjBweDsKCWxpc3Qtc3R5
bGUtdHlwZTpub25lOwogfQoKICNtZW51dHJlZSBsaSB7IGJhY2tncm91bmQ6I2VlZTsgfQog
I21lbnV0cmVlIGxpIGxpIHsgYmFja2dyb3VuZDojZGRkOyB9CiAjbWVudXRyZWUgbGkgbGkg
bGkgeyBiYWNrZ3JvdW5kOiNjY2M7IH0KICNtZW51dHJlZSBsaSBsaSBsaSBsaSB7IGJhY2tn
cm91bmQ6I2JiYjsgfQoKICNtZW51dHJlZSB7CgltYXJnaW4tYm90dG9tOjIwcHg7CiB9CiA8
L3N0eWxlPgpDU1NfQkxPQ0s7CgogcHJpbnQoIjxkaXYgaWQ9XCJtZW51Ym94XCI+XG4iKTsK
IHByaW50KCI8aDE+TWVudSBDb250cm9sPC9oMT5cbiIpOwogaWYgKCRzdGVwICE9IDIpIHsK
CiBwcmludCgnPHA+QmVsb3cgeW91IHNlZSBhbGwgeW91ciBtZW51IGl0ZW1zIHRvZ2V0aGVy
IHdpdGggdGhlaXIgW0lEXS4gVG8gY2hhbmdlIHRoZSBvcmRlciBvZiB0aGUgaXRlbXMsIHVz
ZSB0aGUgJnVBcnI7IGFuZCAmZEFycjsgaWNvbnMuIFRoaXMgd2lsbCBtb3ZlIHRoZSBjdXJy
ZW50IGl0ZW0gQU5EIGFsbCBpdHMgY2hpbGQgZWxlbWVudHMgdXAgYW5kIGRvd24gdGhlIHRy
ZWUuPC9wPicpOwoKLy8gV0FSTklORzogRE8gTk9UIEFMVEVSIFRIRSBKQVZBU0NSSVBUIEJM
T0NLIFVOTEVTUyBZT1UgS05PVyBFWEFDVExZIFdIQVQgWU9VJ1JFIERPSU5HIQovLyBUaGVz
ZSBmb3VyIEphdmFTY3JpcHQgZnVuY3Rpb25zIGNvbnRhaW4gdGhlIG1lbnUgaXRlbSBzaGlm
dGluZyBsb2dpYyB3aGljaCBkaXJlY3RseSBhbHRlcnMgdGhlIERPTSB0cmVlIG9mIHRoZSBt
ZW51IGFzIGEgbGlzdC4KZWNobyA8PDxTQ1JJUFRfQkxPQ0sKCTxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KCWZ1bmN0aW9uIG1vdmUoZGlyLGlkKXthY3RpdmVOb2RlPWRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKGlkKTtpZihkaXI9PSJ1cCIpe3JlbE5vZGU9cHJldmlvdXNO
b2RlU2libGluZyhhY3RpdmVOb2RlKTtpZighcmVsTm9kZSlyZWxOb2RlPWFjdGl2ZU5vZGU7
fWVsc2UgcmVsTm9kZT1uZXh0Tm9kZVNpYmxpbmcoYWN0aXZlTm9kZSk7cGFyZW50PWFjdGl2
ZU5vZGUucGFyZW50Tm9kZTtpZighKCghcmVsTm9kZSkmJihkaXIgPT0gInVwIikpKXBhcmVu
dC5pbnNlcnRCZWZvcmUoYWN0aXZlTm9kZSxyZWxOb2RlKTtyZXR1cm47fQoJZnVuY3Rpb24g
cHJldmlvdXNOb2RlU2libGluZyhub2RlKXtyZXM9bm9kZS5wcmV2aW91c1NpYmxpbmc7d2hp
bGUoKHJlcyAhPW51bGwpJiYocmVzLm5vZGVUeXBlIT0xKSlyZXM9cmVzLnByZXZpb3VzU2li
bGluZztyZXR1cm4gcmVzO30KCWZ1bmN0aW9uIG5leHROb2RlU2libGluZyhub2RlKXtyZXM9
bm9kZS5uZXh0U2libGluZztyZXNjb3VudD0wO3doaWxlKChyZXMpJiYoKHJlcy5ub2RlVHlw
ZSE9MSl8fChyZXNjb3VudDwxKSkpe2lmKHJlcy5ub2RlVHlwZT09MSlyZXNjb3VudCsrO3Jl
cz1yZXMubmV4dFNpYmxpbmc7fXJldHVybiByZXM7fQoJZnVuY3Rpb24gZmluYWxpemUoKXtl
bGVtZW50X2NvdW50PWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaSIpLmxlbmd0
aDtpPTA7cGFzc19vbj0nJzt3aGlsZShpPGVsZW1lbnRfY291bnQpe3Bhc3Nfb24rPWRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaSIpW2krK10uaWQ7aWYoaTxlbGVtZW50X2Nv
dW50KXBhc3Nfb24rPSIsIjt9ZG9jdW1lbnQubWVudV9yZXN1bHQubWVudV9vcmRlci52YWx1
ZT1wYXNzX29uO2RvY3VtZW50Lm1lbnVfcmVzdWx0LnN1Ym1pdCgpO30KCTwvc2NyaXB0PgpT
Q1JJUFRfQkxPQ0s7CgoJLy8gQ2hlY2sgaWYgImlkeCIgZmllbGQgZXhpc3RzCgkkcXVlcnlz
dHJpbmcgPSAic2hvdyBjb2x1bW5zIGZyb20gIi5QRlguInR4cF9jYXRlZ29yeSBsaWtlICdp
ZHgnOyI7CgkkZmllbGRfZXhpc3RzID0gZ2V0Um93KCRxdWVyeXN0cmluZyk7CglpZighJGZp
ZWxkX2V4aXN0cykgewoJCS8vIENyZWF0ZSBmaWVsZCBpZHggZm9yIHN0b3JpbmcgdGhlIG1l
bnUgaXRlbSBvcmRlcklECgkJcHJpbnQoIjxwPkZpZWxkIHN0YXR1czogTWVudSBpdGVtIG9y
ZGVyIElEIGZpZWxkIDxzdHJvbmc+Tk9UIGZvdW5kPC9zdHJvbmc+IC0gYXR0ZW1wdGluZyB0
byBjcmVhdGUgaXQuLi48L3A+XG4iKTsKCQkkcmV0dXJuX3ZhbHVlID0gc2FmZV9hbHRlcigi
dHhwX2NhdGVnb3J5IiwiQUREIGlkeCBJTlQ7Iik7CgkJaWYoJHJldHVybl92YWx1ZSkgcHJp
bnQoIjxwPkZpZWxkIHN1Y2Nlc3NmdWxseSBjcmVhdGVkLjwvcD5cbiIpOwoJCWVsc2UgZGll
KCI8cCBzdHlsZT1cImNvbG9yOiNmMDBcIj5FcnJvciBjcmVhdGluZyBmaWVsZCEgUGxlYXNl
IGNyZWF0ZSBmaWVsZCAnaWR4JyAodHlwZSBJTlQsIGRlZmF1bHQgTlVMTCkgaW4gdGFibGUg
Jmx0O1BSRUZJWCZndDt0eHBfY2F0ZWdvcnkgbWFudWFsbHkgYW5kIHRyeSBhZ2Fpbi48L3A+
XG4iKTsKCX0KCWVsc2UgcHJpbnQoIjxwPkZpZWxkIHN0YXR1czogTWVudSBpdGVtIG9yZGVy
IElEIGZpZWxkIGZvdW5kLjwvcD5cbiIpOwoKCSRyb290X2VsZW1lbnRzID0gc2FmZV9yb3dz
KCJpZCxuYW1lLHR5cGUscGFyZW50LHRpdGxlIiwidHhwX2NhdGVnb3J5IiwibmFtZSAhPSAn
cm9vdCcgYW5kIHR5cGUgPSAnYXJ0aWNsZScgYW5kIHBhcmVudCA9ICdyb290JyBvcmRlciBi
eSBpZHgiKTsKCXByaW50KCI8ZGl2IGlkPVwibWVudXRyZWVcIj48dWw+Iik7Cglmb3JlYWNo
KCRyb290X2VsZW1lbnRzIGFzICRyb290X2l0ZW0pIGdldENoaWxkcmVuKCRyb290X2l0ZW0p
OwoJcHJpbnQoIjwvdWw+PC9kaXY+Iik7CglwcmludCgnPGZvcm0gbmFtZT0ibWVudV9yZXN1
bHQiIGFjdGlvbj0iaW5kZXgucGhwIiBtZXRob2Q9InBvc3QiPicpOwoJcHJpbnQoJzxpbnB1
dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im1lbnVfb3JkZXIiIHZhbHVlPSIiIC8+Jyk7Cglwcmlu
dCgnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZXZlbnQiIHZhbHVlPSJtZW51X2NvbnRy
b2wiIC8+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3RlcCIgdmFsdWU9IjIiIC8+Jyk7
CglwcmludCgnPGEgc3R5bGU9ImJhY2tncm91bmQ6I0ZGRkY5OTtwYWRkaW5nOjRweDtwYWRk
aW5nOjNweDttYXJnaW4tdG9wOjIwcHg7Ym9yZGVyOnNvbGlkIDJweCAjRkZDQzMzOyIgaHJl
Zj0iamF2YXNjcmlwdDpmaW5hbGl6ZSgpIj5TQVZFIENIQU5HRVM8L2E+PC9mb3JtPicpOwoJ
cHJpbnQoJzxwIHN0eWxlPSJtYXJnaW4tdG9wOjIwcHg7cGFkZGluZzoxMHB4O2ZvbnQtd2Vp
Z2h0OmJvbGQ7Ym9yZGVyLWJvdHRvbTpzb2xpZCAxcHg7Ij53b3ctTWVudSBFeHBsYW5hdGlv
bjwvcD4KCTxwPlRoZSBudW1iZXIgaW4gc3F1YXJlIGJyYWNrZXRzIHNob3dzIHRoZSBJRCBv
ZiB0aGUgaXRlbSBhcyBzZXQgaW4gdGhlIGRhdGFiYXNlLCBlLmcuIFsxNV0uIElmIHlvdSB3
YW50IHRvIGhpZGUgYSBtZW51IGl0ZW0gYW5kIGl0cyBjaGlsZCBlbGVtZW50cywgcGFzcyBv
biB0aGUgSUQgb2YgdGhpcyBpdGVtIHdoZW4gY2FsbGluZyB0aGUgd293X21lbnUgcGx1Z2lu
IGZyb20gd2l0aGluIHlvdXIgdGVtcGxhdGUgY29kZS4gRm9yIGV4YW1wbGUsIHVzZSAmbHQ7
dHhwOndvd19tZW51Jm5ic3A7aGlkZT0iMTUiJm5ic3A7IC8mZ3Q7LiBCeSBhZGRpbmcgbW9y
ZSBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzLCB5b3UgY2FuIGhpZGUgbW9yZSBpdGVtcy48L3A+
Cgk8cD5Zb3UgY2FuIGFsc28gc2V0IHRoZSBzdGFydGluZyAoInJvb3QiKSBlbGVtZW50IGlm
IHlvdSB3b3VsZCBsaWtlIHRvIGp1c3QgZGlzcGxheSBhIHBhcnQgb2YgdGhlIHRyZWUsIGZv
ciBleGFtcGxlIGlmIGl0IGlzIHRvbyBjb21wbGV4IHRvIGRpc3BsYXkgYWxsIGl0ZW1zIG9u
IHRoZSBmcm9udCBwYWdlLiBUbyBkbyBzbywgYWRkIHRoZSA8aT5zdGFydDwvaT4gYXR0cmli
dXRlIHRvIHRoZSB3b3dfbWVudSBjYWxsLCBsaWtlIHNvOiAmbHQ7dHhwOndvd19tZW51Jm5i
c3A7c3RhcnQ9Im15LWNhdGVnb3J5IiZuYnNwOy8mZ3Q7LiBUaGUgZ2l2ZW4gY2F0ZWdvcnkg
bmFtZSB3aWxsIHNldCB0aGUgc3RhcnRpbmcgZWxlbWVudCBmb3IgdGhlIHRyZWUsIGRpc3Bs
YXlpbmcgYWxsIGNoaWxkIGVsZW1lbnRzLCBidXQgbm9uZSBvbiB0aGUgc2FtZSBsZXZlbCBv
ciBhYm92ZSBvZiB0aGUgcm9vdCBlbGVtZW50LiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAicm9v
dCIuPC9wPgoJPHA+WW91IG1heSB1c2UgPGk+c2hvd3BhcmVudDwvaT4gaW4gY29ubmVjdGlv
biB3aXRoIDxpPnN0YXJ0PC9pPiB0byBkZXRlcm1pbmUgaWYgdGhlIHN0YXJ0IGVsZW1lbnQg
c2hvdWxkIGJlIGRpc3BsYXllZCBiZWZvcmUgdGhlIGNoaWxkIGVsZW1lbnRzICgxKSwgb3Ig
anVzdCB0aGUgY2hpbGQgZWxlbWVudHMgYWxvbmUgKDApLjwvcD4KCTxwPkJvdGggPGk+c3Rh
cnQ8L2k+IGFuZCA8aT5oaWRlPC9pPiBhdHRyaWJ1dGVzIG1heSBiZSBjb21iaW5lZCBpbiB0
aGUgcGx1Z2luIGNhbGwsIGJ1dCBwbGVhc2UgbWFrZSBzdXJlIHRoZSBjb21iaW5hdGlvbiBp
cyBsb2dpY2FsbHkgc291bmQgLSBvdGhlcndpc2UgdGhlIHNjcmlwdCB3aWxsIGNyYXNoIGFz
IGl0XCdzIG5vdCBmb29sLXByb29mLiA6KTwvcD4KCTxwPlBsZWFzZSBzZWUgdGhlIHBsdWdp
biBoZWxwIHBhZ2UgKGFkbWluICZndDsgcGx1Z2lucykgZm9yIGEgZGVzY3JpcHRpb24gb2Yg
YWxsIGF2YWlsYWJsZSBhdHRyaWJ1dGVzLjwvcD4KCTxwIHN0eWxlPSJib3JkZXItYm90dG9t
OnNvbGlkIDFweDtwYWRkaW5nLWJvdHRvbToxMHB4OyI+Q29tbWVudHMgd2VsY29tZTogPGEg
c3R5bGU9ImZvbnQtc2l6ZToxMXB4IiBocmVmPSJtYWlsdG86c2Nod2VuemVyQG5pZ2h0d29y
a3MuZGU/c3ViamVjdD13b3dfbWVudSI+U2VuZCBtZSBhbiBlLW1haWw8L2E+LjwvcD4KIAkn
KTsKIH0KCiBlbHNlIHsKCS8vIEdldCBwb3N0dmFycwoJJG1lbnVpdGVtX29yZGVyID0gZXhw
bG9kZSgiLCIscHMoIm1lbnVfb3JkZXIiKSk7CgkvLyBGaXJzdCwgcmVzZXQgdGhlIHByZXZp
b3VzIG9yZGVyIGJ5IGluc2VydGluZyBOVUxMIGludG8gdGhlIGlkeCBkYXRhYmFzZSBmaWVs
ZAoJc2FmZV91cGRhdGUoInR4cF9jYXRlZ29yeSIsImlkeCA9IE5VTEwiLCAiMSIpOwoJLy8g
VXBkYXRlIHRoZSBpZHggLSB0aGUgY29uc2VjdXRpdmUgbnVtYmVyIG9mIHRoZSBtZW51IGl0
ZW1zIC0gaW4gdGhlIGRiCglmb3JlYWNoKCRtZW51aXRlbV9vcmRlciBhcyAkbmFtZSA9PiAk
dmFsdWUpIHNhZmVfdXBkYXRlKCJ0eHBfY2F0ZWdvcnkiLCJpZHggPSAkbmFtZSIsICJpZCA9
ICR2YWx1ZSIpOwoJcHJpbnQoIk5ldyBtZW51IG9yZGVyIHN1Y2Nlc3NmdWxseSBzYXZlZC5c
biIpOwoJJG1lbnVSZW5kZXJlZCA9IGRpc3BsYXlNZW51KCJyb290IiwiIiwiIiwiIiwiIiww
LCIiLCIiLCIiKTsKCXByaW50KCRtZW51UmVuZGVyZWQpOwogfQogcHJpbnQoIjwvZGl2PiIp
Owp9CgpmdW5jdGlvbiBkaXNwbGF5TWVudSgkcm9vdF9pdGVtLCAkZGVueSwgJHNob3dwYXJl
bnRpdGVtLCAkc2hvd2NvdW50LCAkc2FsLCAkanNfYXJyYXlzLCAkanNfYSwgJGpzX2xpLCAk
anNfdWwpIHsKCgkvLyBHZXQgZGF0YSBmcm9tIGdsb2JhbHMgdG8gcmV0cmlldmUgdGhlIGNh
dGVnb3J5IG9mIGFuIGFydGljbGUgbGF0ZXIKCWdsb2JhbCAkcHJldGV4dDsKCWdsb2JhbCAk
Y291bnRfYTsKCiAgICAgICAgLy8gVGhlIGZvbGxvd2luZyB2YXJzIGFyZSB1c2VkIHRvIGFs
bG93IG1vcmUgY29udHJvbCBvZiB0aGUgPGxpPiBhbmQgPHVsPiB0YWdzIHRocm91Z2ggSmF2
YVNjcmlwdCBET00gdHJlZSBtYW5pcHVsYXRpb24uCiAgICAgICAgLy8gVGhleSBhcmUgdXNl
ZCB0byBhZGQgYSB1bmlxdWUgSUQgdG8gYWxsIDxsaT4gYW5kIDx1bD4gdGFncyB3aGljaCBj
YW4gdGhlIGJlIHVzZWQgdG8gYWNjZXNzIHRoZSBub2RlcyBpbiB0aGUgRE9NIHRyZWUuCiAg
ICAgICAgLy8gRm9yIGV4YW1wbGUsIGlmIHlvdSBrbm93IHRoYXQgYSBjZXJ0YWluIFRleHRw
YXR0ZXJuIHBhZ2UgaXMgbG9jYXRlZCB1bmRlciBsZWFmICg8bGk+KSAjMzAsIHlvdSBjYW4g
aGlnaGxpZ2h0CiAgICAgICAgLy8gdGhpcyBlbGVtZW50LCBhbmQgeW91IGNhbiBtYWtlIHN1
cmUgdGhlIGNvcnJlc3BvbmRpbmcgPHVsPnMgYXJlIHZpc2libGUgKGltcG9ydGFudCBpZiB5
b3UgdXNlIGR5bmFtaWMgbWVudXMpLgoKICAgICAgICAkY291bnQgPSAiIjsgICAgLy8gVGhp
cyB2YXIgaXMgdXNlZCB0byBjb3VudCB0aGUgYXJ0aWNsZXMgb2YgYSBjYXRlZ29yeQogICAg
ICAgICRjb3VudF9saSA9IDA7ICAvLyBUaGlzIHNpbXBseSBjb3VudHMgdGhlIG51bWJlciBv
ZiA8bGk+IHRhZ3M7IHVzZWQgaW4gdGhlIGlkIGF0dHJpYnV0ZSBvZiB0aGUgPGxpPnMsIGUu
Zy4gaWQ9IkwxMyIKICAgICAgICAkY291bnRfdWwgPSAwOyAgLy8gVGhpcyBzaW1wbHkgY291
bnRzIHRoZSBudW1iZXIgb2YgPHVsPiB0YWdzOyB1c2VkIGluIHRoZSBpZCBhdHRyaWJ1dGUg
b2YgdGhlIDx1bD5zLCBlLmcuIGlkPSJVMiIKICAgICAgICAkY291bnRfYSA9IDA7ICAgLy8g
VGh1cyBzaW1wbHkgY291bnRzIHRoZSBudW1iZXIgb2YgPGE+IHRhZ3Mgd2l0aGluIDxsaT4g
dGFncywgdXNlZCBhcyBpZCBhdHRyaWJ1dGUsIGUuZy4gaWQ9IkE0IgogICAgICAgICR1bF9s
aXN0ID0gIiI7ICAvLyBUaGlzIHN0cmluZyBjb250YWlucyBhIGNvbW1hLXNlcGFyYXRlZCBs
aXN0IG9mIHRoZSA8dWw+IElEcyB3aGljaCBuZWVkIHRvIGJlIGZvbGxvd2VkIGluIG9yZGVy
CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGdldCB0byB0aGUgY3VycmVudCA8bGk+
IHRhZywgbGlrZSBhIGRlc2NyaXB0aW9uIHdoaWNoIGJyYW5jaGVzIChVKSB0byB0YWtlIHRv
IGdldCB0byBhIGxlYWYgKEwpLgogICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgbGlz
dCBpcyB1cGRhdGVkIGV2ZXJ5dGltZSBhIG5ldyBicmFuY2ggaXMgb3BlbmVkICg8dWw+KSBv
ciBjbG9zZWQgKDwvdWw+KS4KICAgICAgICAkbGlfYXJyYXkgPSAiXG4gbWVudV9sZXZlbHMg
PSBuZXcgQXJyYXkoKTsiOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHZhcmlh
YmxlIGlzIHVzZWQgdG8gYXNzZW1ibGUgYSBKYXZhU2NyaXB0IHdoaWNoIGJ1aWxkcyBhbiBh
cnJheSBvZiB0aGUgdWxfbGlzdCBmb3IgZWFjaCA8bGk+LgogICAgICAgICAgICAgICAgICAg
ICAgICAvLyBUaGUgYXJyYXkncyBzdHJ1Y3R1cmUgaXMgPGxpIGlkPiA9PiB1bF9saXN0LCBl
LmcuIFs1XSA9ICIwLDQiLiBUaGlzIG1lYW5zIHRoYXQgaW4gb3JkZXIgdG8gdmlldwogICAg
ICAgICAgICAgICAgICAgICAgICAvLyA8bGkgaWQ9Ikw1Ij4sIHRoZSA8dWwgaWQ9IlUwIj4g
YW5kIDx1bCBpZD0iVTQiPiBub2RlcyBtdXN0IGJlIGRpc3BsYXllZC4KICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gQXQgdGhlIHRpbWUgYSA8bGk+IGlzIGFkZGVkIHRvICRvdXRwdXQs
IGEgc25hcHNob3QgaXMgdGFrZW4gb2YgdWxfbGlzdCBhbmQgYWRkZWQgdG8gdGhlIHZhcmlh
YmxlCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIHRoZSBwcm9wZXIgSmF2YVNjcmlw
dCBjb2RlLgogICAgICAgICRsaV9zdWJsZXZlbCA9ICJcbiBtZW51X3N1YmxldmVsID0gbmV3
IEFycmF5KCk7IjsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBKYXZhU2NyaXB0
IGFycmF5IHdpbGwgY29udGFpbiB0aGUgc3VibGV2ZWwgKDx1bD4pIG9mIGFuIDxsaT4gZWxl
bWVudCwgaWYgYXBwbGljYWJsZS4KICAgICAgICAkbGlfbmFtZXMgPSAiXG4gbWVudV9uYW1l
cyA9IG5ldyBBcnJheSgpOyI7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgSmF2
YVNjcmlwdCBhcnJheSB3aWxsIGNvbnRhaW4gYWxsIG1lbnUgaXRlbSBuYW1lcy4KCgkvLyBO
b3csIGJhY2sgdG8gdG9waWMuIEZpcnN0LCByZXRyaWV2ZSB0aGUgb3JkZXJlZCBtZW51IGl0
ZW0gbGlzdCBmcm9tIHRoZSBkYi4KCSRtZW51aXRlbXNfb3JkZXJlZCA9IHNhZmVfcm93cygn
KicsICd0eHBfY2F0ZWdvcnknLCAiaWR4IGlzIG5vdCBOVUxMIG9yZGVyIGJ5IGlkeCIpOwoK
CS8vIEFsc28gcmV0cmlldmUgYWxsIHNlY3Rpb24gbmFtZXMuCgkkc2VjdGlvbl9uYW1lc190
ZW1wID0gc2FmZV9yb3dzKCduYW1lJywgJ3R4cF9zZWN0aW9uJywgIm5hbWUgaXMgbm90IE5V
TEwiKTsKCWZvcmVhY2goJHNlY3Rpb25fbmFtZXNfdGVtcCBhcyAkdG1wKSAkc2VjdGlvbl9u
YW1lc1tdID0gJHRtcFsnbmFtZSddOwoKCS8vIEFkZCBhYmlsaXR5IHRvIGhhbmRsZSBjYXRl
Z29yeSBuYW1lcyBpbiBhZGRpdGlvbiB0byBJRHMgaGVyZQoJaWYgKCRkZW55KSB7CgkgICAg
ICAgICRpZHNfZGVuaWVkID0gZXhwbG9kZSgiLCIsJGRlbnkpOwoJCSRtZW51aXRlbXNfZGVu
aWVkID0gYXJyYXkoKTsKCQlmb3JlYWNoICgkaWRzX2RlbmllZCBhcyAkaikgewoJCQkkdGVt
cCA9IHNhZmVfcm93KCJuYW1lIiwidHhwX2NhdGVnb3J5IiwiaWQgPSAkaiIpOwoJCQkkbWVu
dWl0ZW1zX2RlbmllZFtdID0gJHRlbXBbJ25hbWUnXTsKCQl9Cgl9CgogICAgICAgICR1bF9s
aXN0IC49ICRjb3VudF91bDsKCS8vIEluaXRpYWxpemUgb3V0cHV0IHZhcmlhYmxlIGFuZCBp
bml0aWFsaXplIG1lbnUgdHJlZSBzdHJ1Y3R1cmUKCSRqc1RlbXAgPSBqc0NhbGxCdWlsZGVy
KCRqc191bCwgJGNvdW50X3VsKTsKCSRvdXRwdXQgPSAiPGRpdiBpZD1cIm1lbnV0cmVlXCI+
PHVsIGlkPVwiVSIgLiAkY291bnRfdWwrKyAuICJcIiIgLiAkanNUZW1wIC4gIj4iOwoJLy8g
SW5pdGlhbGl6ZSBwYXRoIGFycmF5LCB3aGljaCB3aWxsIHN0b3JlIHRoZSBwYXJlbnQgaXRl
bSBuYW1lcyBhbmQgYWx3YXlzIGNvbnRhaW4gdGhlIHVwLXRvLWRhdGUgcGF0aCB0byBhbiBp
dGVtCgkkcGF0aCA9IGFycmF5KCk7CgkvLyBTZXQgZGVmYXVsdHMKCSRpdGVtX3N0YXJ0ID0g
MDsKCSRwYXRoWzBdID0gInJvb3QiOwoJLy8gTGV0J3MgcmVtZW1iZXIgdGhlIGxhc3QgYWN0
aXZlIHBhdGggLSBuZWVkZWQgd2hlbiB0aGUgImhpZGUiIGF0dHJpYnV0ZSAoJGRlbnkgdmFs
dWVzKSBpcyBpbiB1c2UKCSRsYXN0YWN0aXZlcGF0aCA9ICRwYXRoOwoJLy8gU2luY2Ugbm8g
aXRlbSBoYXMgYmVlbiBkaXNwbGF5ZWQgeWV0LCBzZXQgdG8gZmFsc2UKCSRmaXJzdGl0ZW1k
aXNwbGF5ZWQgPSBmYWxzZTsKCSRtb2RpZmllciA9IDE7CgkvLyBUaGUgIm1vZGlmaWVyIiBp
cyB1c2VkIHRvIGFsdGVyIHNvbWUgY291bnRpbmcgb2Zmc2V0cyB3aGljaCBuZWVkIHRvIGJl
ICIxIiBpZiB3ZSdyZSBsb29raW5nIGF0IHRoZSBmdWxsIHRyZWUuCgkvLyBJZiBhIHN1YnRy
ZWUgaXMgdG8gYmUgZGlzcGxheWVkLCB0aGUgbW9kaWZpZXIgbmVlZHMgdG8gYmUgIjIiLiBU
aGUgcmVhc29uIGlzIHRoZSBwYXRoIGxlbmd0aDogSWYgd2UncmUgbG9va2luZyBhdAoJLy8g
YSBzdWJ0cmVlLCB0aGUgcGF0aCB3aWxsIGFsd2F5cyBjb250YWluICJyb290IiBhcyBmaXJz
dCBlbGVtZW50LCBhbmQgdGhlbiB0aGUgcm9vdF9pdGVtJ3MgbmFtZSAobm8gbWF0dGVyIGhv
dyBtYW55IG5vZGVzIGFyZSBpbiBiZXR3ZWVuKS4KCS8vIFRoaXMgbWVhbnMgdGhhdCBmb3Ig
YSBmdWxsIHRyZWUsIHRoZSBtaW5pbXVtIHBhdGggbGVuZ3RoIGlzIDEgKHJvb3QpLCBhbmQg
MiBmb3IgYSBzdWJ0cmVlIChyb290L3Jvb3RfaXRlbSkuCgoJLy8gV2hlbiAic3RhcnQiIGlz
IHNldCB0byAnPycsIHRoZW4gdGhlIGN1cnJlbnQgY2F0ZWdvcnkgaXMgZXZhbHVhdGVkIGFz
IHN0YXJ0IGVsZW1lbnQKICAgICAgICAkY3VycmVudENhdGVnb3J5ID0gJHByZXRleHRbJ2Mn
XSA/ICRwcmV0ZXh0WydjJ10gOiAncm9vdCc7CgoJaWYgKCRyb290X2l0ZW0gPT0gJz8nKSAk
cm9vdF9pdGVtID0gJGN1cnJlbnRDYXRlZ29yeTsKCglpZiAoJHJvb3RfaXRlbSAhPSAicm9v
dCIpIHsKCQkvLyBJZiB0aGUgc3RhcnQgaXRlbSBpc24ndCByb290LCBmaW5kIG91dCB0aGUg
b3JkZXJJRCBvZiB0aGUgcm9vdCBlbGVtZW50CgkJZm9yZWFjaCgkbWVudWl0ZW1zX29yZGVy
ZWQgYXMgJHgpIGlmICgkeFsnbmFtZSddID09ICRyb290X2l0ZW0pICRpdGVtX3N0YXJ0ID0g
JHhbJ2lkeCddOwoJCSRwYXRoWzFdID0gJHJvb3RfaXRlbTsKCQkvLyBSZW1lbWJlciB0aGUg
Zmlyc3Qgc2VsZWN0ZWQgaXRlbQoJCSRtYWluX2l0ZW0gPSAkbWVudWl0ZW1zX29yZGVyZWRb
JGl0ZW1fc3RhcnRdOwoJCS8vIE9ubHkgcHJpbnQgcm9vdCBlbGVtZW50IGlmICRzaG93cGFy
ZW50aXRlbSBpcyBzZXQgdG8gMQoJCWlmICgkc2hvd3BhcmVudGl0ZW0pIHsKCSAgICAgICAg
ICAgICAgICBpZihpbl9hcnJheSgkbWVudWl0ZW1zX29yZGVyZWRbJGl0ZW1fc3RhcnRdWydu
YW1lJ10sICRzZWN0aW9uX25hbWVzKSkgJGhyZWYgPSBidWlsZGhyZWYoInMiLCAkbWVudWl0
ZW1zX29yZGVyZWRbJGl0ZW1fc3RhcnRdWyduYW1lJ10sICRtZW51aXRlbXNfb3JkZXJlZFsk
aXRlbV9zdGFydF1bJ3RpdGxlJ10sICRzYWwpOwoJICAgICAgICAgICAgICAgIGVsc2UgJGhy
ZWYgPSBidWlsZGhyZWYoImMiLCAkbWVudWl0ZW1zX29yZGVyZWRbJGl0ZW1fc3RhcnRdWydu
YW1lJ10sICRtZW51aXRlbXNfb3JkZXJlZFskaXRlbV9zdGFydF1bJ3RpdGxlJ10sICRzYWwp
OwogICAgICAgICAgICAgICAgICAgICAgICAkdWxfbGlzdCAuPSAiLCIgLiAkY291bnRfdWw7
CiAgICAgICAgICAgICAgICAgICAgICAgICRsaV9hcnJheSAuPSAnbWVudV9sZXZlbHNbJyAu
ICRjb3VudF9saSAuICddID0gIicgLiAkdWxfbGlzdCAuICciOyc7CgkJCSRqc1RlbXAgPSBq
c0NhbGxCdWlsZGVyKCRqc19saSwgJGNvdW50X2xpKTsKCQkJJG91dHB1dCAuPSAnPGxpIGlk
PSJMJyAuICRjb3VudF9saSsrIC4gJyInIC4gJGpzVGVtcCAuICc+JyAuICRocmVmOwoJCQkk
anNUZW1wID0ganNDYWxsQnVpbGRlcigkanNfdWwsICRjb3VudF91bCk7CgkJCSRvdXRwdXQg
Lj0gJzx1bCBpZD0iVScgLiAkY291bnRfdWwrKyAuICciJyAuICRqc1RlbXAgLiAnPic7CgkJ
CSRsaV9zdWJsZXZlbCAuPSAibWVudV9zdWJsZXZlbFsiIC4gKCRjb3VudF9saSAtIDEpIC4g
Il0gPSAiIC4gKCRjb3VudF91bCAtIDEpIC4gIjsiOwoJCX0KCQkkbW9kaWZpZXIgPSAyOwoJ
CSRzdGFydF9wYXJlbnQgPSAkbWVudWl0ZW1zX29yZGVyZWRbJGl0ZW1fc3RhcnRdWydwYXJl
bnQnXTsKCQkkaXRlbV9zdGFydCsrOwoJfQoJZm9yKCRpdGVtX2NvdW50ID0gJGl0ZW1fc3Rh
cnQ7ICRpdGVtX2NvdW50IDwgY291bnQoJG1lbnVpdGVtc19vcmRlcmVkKTsgJGl0ZW1fY291
bnQrKykgewoJCS8vIEZldGNoIGl0ZW0gd2UnbGwgd29yayB3aXRoIGluIHRoaXMgaXRlcmF0
aW9uCgkJJGl0ZW0gPSAkbWVudWl0ZW1zX29yZGVyZWRbJGl0ZW1fY291bnRdOwoJCSRvdXRw
dXRfdGVtcCA9ICIiOwoKCQkvLyBpcyB0aGlzIHN0aWxsIG5lZWRlZCB3aXRoIHRoZSBmb2xs
b3dpbmcgbGluZSBpbiBwbGFjZT8KCQlpZiAoKCRyb290X2l0ZW0gIT0gInJvb3QiKSAmJiAo
JGl0ZW1bJ3BhcmVudCddID09ICRzdGFydF9wYXJlbnQpKSBicmVhazsKCgkJLy8gRmV0Y2hp
bmcgY29udGludWVkIHdpdGggdGhlIG5leHQgcm9vdCBlbGVtZW50cyB3aGVuIGEgbGVhc3Qg
Y2hpbGQgd2FzIHNlbGVjdGVkCgkJLy8gSXQgY2hlY2tzIGlmIHRoZSBleHRyZW1lIGxpbWl0
IG9mIHRoZSB0cmVlIG5vZGUgaGFzIGJlZW4gcmVhY2hlZAoJCWlmICgoJHJvb3RfaXRlbSAh
PSAicm9vdCIpICYmICgkaXRlbVsncmd0J10gPiAkbWFpbl9pdGVtWydyZ3QnXSkpIGJyZWFr
OwoKCQlpZiAoJGl0ZW1bJ3BhcmVudCddID09ICRyb290X2l0ZW0pIHsKCQkJLy8gSWYgaXQn
cyBhIHJvb3QgaXRlbSBhbmQgdGhlIHBhdGggYWxyZWFkeSBjb250YWlucyB2YWx1ZXMgKGku
ZS4gdGhlIHByZXZpb3VzIGl0ZW0gd2Fzbid0IHJvb3QpLCBjbG9zZSBhbGwgcHJldmlvdXNs
eSBjcmVhdGVkIGJyYW5jaGVzCgkJCWlmKGNvdW50KCRwYXRoKSA+ICRtb2RpZmllcikgewoJ
CQkgICAgICAgIGZvciAoJGkgPSAkbW9kaWZpZXI7ICRpIDwgY291bnQoJHBhdGgpOyAkaSsr
KSB7CgkJCSAgICAgICAgICAgICAgICAkb3V0cHV0X3RlbXAgLj0gIjwvbGk+PC91bD5cbiI7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHVsX2xpc3Qg
IT0gIjAiKSAkdWxfbGlzdCA9IHN1YnN0cigkdWxfbGlzdCwgMCwgc3RycnBvcygkdWxfbGlz
dCwiLCIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgkJCX0KCQkJLy8g
Tm93LCBraWxsIHRoZSBwYXRoIC0gd2UgaGF2ZSBhIHJvb3QgZWxlbWVudCwgdGhlcmUgYXJl
IG5vIHBhcmVudHMuCgkJCSRwYXRoID0gYXJyYXlfc2xpY2UoJHBhdGgsIDAsICRtb2RpZmll
cik7CgkJCS8vIGlmICgkcm9vdF9pdGVtICE9ICJyb290IikgJHBhdGhbXSA9ICRyb290X2l0
ZW07CgkJCS8vIFNwZWNpYWwgY2FzZSBmb3IgdGhlIGZvciB0aGUgdmVyeSBmaXJzdCBlbGVt
ZW50IC0gdGhlcmUgaGFzbid0IGJlZW4gYW4gb3BlbmluZyA8bGk+IHRhZyB5ZXQsIHNvIGRv
bid0IGNsb3NlIGl0CgkJCS8vIGlmICgkaXRlbVsnaWR4J10gIT0gMCkgJG91dHB1dF90ZW1w
IC49ICI8L2xpPiI7CgkJCWlmICgkZmlyc3RpdGVtZGlzcGxheWVkKSAkb3V0cHV0X3RlbXAg
Lj0gIjwvbGk+IjsKCQl9CgkJZWxzZSAJaWYgKCFpbl9hcnJheSgkaXRlbVsncGFyZW50J10s
ICRwYXRoKSkgewoJCQkJLy8gSWYgaXQncyBub3QgaW4gdGhlIHBhdGgsIHB1dCBpdCBpbiEK
CQkJCSRwYXRoW10gPSAkaXRlbVsncGFyZW50J107CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJHVsX2xpc3QgLj0gIiwiIC4gJGNvdW50X3VsOwoJCQkJLy8gV2UgaGF2ZSBq
dXN0IGNyZWF0ZWQgYSBuZXcgYnJhbmNoIC0gaW5zZXJ0IHRoZSA8dWw+IGZvciB0aGF0Lgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaV9zdWJsZXZlbCAuPSAibWVudV9z
dWJsZXZlbFsiIC4gKCRjb3VudF9saSAtIDEpIC4gIl0gPSAiIC4gJGNvdW50X3VsIC4gIjsi
OwoJCQkJJGpzVGVtcCA9IGpzQ2FsbEJ1aWxkZXIoJGpzX3VsLCAkY291bnRfdWwpOwoJCQkJ
JG91dHB1dF90ZW1wIC49ICI8dWwgaWQ9XCJVIiAuICRjb3VudF91bCsrIC4gIlwiIiAuICRq
c1RlbXAgLiAiPiI7CgkJCX0KCQkJZWxzZSB7CgkJCQkvLyBUaGlzIGJsb2NrIHdpbGwgYmUg
YWNjZXNzZWQgd2hlbiBhbiBpdGVtJ3MgcGFyZW50IGlzIGluIHRoZSBhcnJheSAtIHRoaXMg
bWVhbnMgd2UncmUgb24gdGhlIHNhbWUgYnJhbmNoIG9yIGp1bXBlZCB1cCBhIGZldyBsZXZl
bHMuCgkJCQkvLyBMZXQncyBmaW5kIG91dCB3aGljaCBJRCBvZiB0aGUgcGF0aCBhcnJheSBj
b250YWlucyBvdXQgcGFyZW50LgoJCQkJJGlkX2V4aXN0cyA9IGFycmF5X3NlYXJjaCgkaXRl
bVsncGFyZW50J10sICRwYXRoKTsKCQkJCS8vIElmIHdlIHdlbnQgc29tZSBsZXZlbHMgdXAg
aW4gdGhlIHRyZWUsIHdlIG5lZWQgdG8ga25vdyBob3cgbWFueS4KCQkJCSRsZXZlbHNfdXAg
PSBjb3VudCgkcGF0aCkgLSAoJGlkX2V4aXN0cyArIDEpOwoJCQkJLy8gSWYgd2UgaGF2ZSBh
IGxldmVsc191cCwgY2xvc2UgYSBicmFuY2ggZm9yIGVhY2ggbGV2ZWxzX3VwCgkJCQlpZiAo
JGxldmVsc191cCA+IDApIGZvciAoJGkgPSAwOyAkaSA8ICRsZXZlbHNfdXA7ICRpKyspIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvdXRwdXRfdGVtcCAu
PSAiPC9saT48L3VsPjwvbGk+XG4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCR1bF9saXN0ICE9ICIwIikgJHVsX2xpc3QgPSBzdWJzdHIoJHVsX2xp
c3QsIDAsIHN0cnJwb3MoJHVsX2xpc3QsIiwiKSk7CgkJCQl9CgkJCQkvLyBJZiB3ZSBkaWRu
J3QganVtcCBhbnkgbGV2ZWxzLCB3ZWxsLi4uIGp1c3QgY2xvc2UgdGhlIHByZXZpb3VzIDxs
aT4gdGFnLgoJCQkJZWxzZSAkb3V0cHV0X3RlbXAgLj0gIjwvbGk+XG4iOwoJCQkJLy8gQ3V0
IGF3YXkgYW55dGhpbmcgaW4gdGhlIHBhdGggYXJyYXkgYmVsb3cgdGhlIGN1cnJlbnQgcGFy
ZW50IChub3QgY2hlY2tpbmcgaWYgaXQncyBuZWNlc3Nhcnkgb3Igbm90LCBqdXN0IGRvIGl0
KQoJCQkJJHBhdGggPSBhcnJheV9zbGljZSgkcGF0aCwgMCwgJGlkX2V4aXN0cyArIDEpOwoJ
CQl9CgogICAgICAgICAgICAgICAgaWYgKCRzaG93Y291bnQpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgJHNuYW1lID0gZG9TbGFzaCgkaXRlbVsnbmFtZSddKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgJGFydGljbGVfY291bnQgPSBzYWZlX2NvdW50KCd0ZXh0cGF0dGVybics
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
KCAoQ2F0ZWdvcnkxID0gJyRzbmFtZScpIE9SICIgLgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihDYXRlZ29yeTIgPSAnJHNuYW1lJykg
KSBBTkQgU3RhdHVzID0gNCIpOwoJCSAgICAgICAgaWYgKCRhcnRpY2xlX2NvdW50KSB7CgkJ
CQkvLyBJZiBzaG93Y291bnQgaXMgZW5hYmxlZCBBTkQgaWYgd2UgaGF2ZSBhcnRpY2xlcyBp
biB0aGlzIGl0ZW0gdGhlbiBzaG93IGNvdW50IChsb2NhbGl6ZWQpCgkJCQkJaWYoJHNob3dj
b3VudCA9PSAxKSAkY291bnQgPSAnICgnIC4gJGFydGljbGVfY291bnQgLiAnICcgLiAoJGFy
dGljbGVfY291bnQgPiAxIHx8ICRhcnRpY2xlX2NvdW50ID09IDAgPyBnVHh0KCdhcnRpY2xl
cycpIDogZ1R4dCgnYXJ0aWNsZScpKSAuICcpJzsKCQkJCQlpZigkc2hvd2NvdW50ID09IDIp
ICRjb3VudCA9ICcgKCcgLiAkYXJ0aWNsZV9jb3VudCAuICcpJzsKCQkJfQoJCQllbHNlICRj
b3VudCA9ICIiOwoJCX0KCi8vIEFoIC0gZmluYWxseSwgdGhlIG91dHB1dCBvZiB0aGUgZWxl
bWVudCEKCiAgICAgICAgaWYgKGluX2FycmF5KCRpdGVtWyduYW1lJ10sICRzZWN0aW9uX25h
bWVzKSkgJGhyZWYgPSBidWlsZGhyZWYoInMiLCAkaXRlbVsnbmFtZSddLCAoJGl0ZW1bJ3Rp
dGxlJ10uJGNvdW50KSwgJHNhbCk7CiAgICAgICAgZWxzZSAkaHJlZiA9IGJ1aWxkaHJlZigi
YyIsICRpdGVtWyduYW1lJ10sICRpdGVtWyd0aXRsZSddLiRjb3VudCwgJHNhbCk7CgogICAg
ICAgICRsaV9hcnJheSAuPSAnbWVudV9sZXZlbHNbJyAuICRjb3VudF9saSAuICddID0gIicg
LiAkdWxfbGlzdCAuICciOyc7CiAgICAgICAgJGpzVGVtcCA9IGpzQ2FsbEJ1aWxkZXIoJGpz
X2xpLCAkY291bnRfbGkpOwogICAgICAgICRvdXRwdXRfdGVtcCAuPSAnPGxpIGlkPSJMJyAu
ICRjb3VudF9saSsrIC4gJyInIC4gJGpzVGVtcCAuICc+JyAuICRocmVmOwoKCQlpZigkZGVu
eSkgewoJCQkvLyBJZiB0aGVyZSBhcmUgImRlbnkiIHZhbHVlKHMpLCBjaGVjayBpZiB0aGUg
Y3VycmVudCBpdGVtIGlzIG9yIHRoZSBjdXJyZW50IHBhdGggY29udGFpbnMgdGhlIGZvcmJp
ZGRlbiBpdGVtIElEcy4gT25seSB1c2UgJG91dHB1dF90ZW1wIGlmIHRoaXMgaXMgbm90IHRo
ZSBjYXNlLgoJCQlpZiAoKCFhcnJheV9pbnRlcnNlY3QoJG1lbnVpdGVtc19kZW5pZWQsICRw
YXRoKSkgJiYgKCFpbl9hcnJheSgkaXRlbVsnbmFtZSddLCAkbWVudWl0ZW1zX2RlbmllZCkp
KSB7CgkJCSAgICAgICAgaWYgKCRkZW55YWN0aXZlKSB7CgkJCQkJLy8gSWYgdGhpcyBpcyB0
aGUgZmlyc3QgdmlzaWJsZSBpdGVtIGFmdGVyIGEgbnVtYmVyIG9mIGhpZGRlbiBpdGVtcywg
ZG86CgkJCQkJJGxldmVsZGlmZiA9IGNvdW50KCRwYXRoKSAtIGNvdW50KCRsYXN0YWN0aXZl
cGF0aCk7CgkJCQkJLy8gSWYgdGhlIGN1cnJlbnQgcGF0aCBsZXZlbCBkb2VzIG5vdCBlcXVh
bCB0aGUgb25lIHdlIGtlcHQgaW4gbWVtb3J5LCB3ZSd2ZSBqdW1wZWQuIENvcnJlY3QgdGhl
IHRyZWUgYWNjb3JkaW5nbHkuCgkJCQkJaWYgKCRsZXZlbGRpZmYgPiAwKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1bF9saXN0IC49ICIs
IiAuICRjb3VudF91bDsKCQkJCQkgICAgICAgICRqc1RlbXAgPSBqc0NhbGxCdWlsZGVyKCRq
c191bCwgJGNvdW50X3VsKTsKCQkJCQkgICAgICAgICRvdXRwdXQgLj0gIjx1bCBpZD1cIlUi
IC4gJGNvdW50X3VsKysgLiAiXCIiIC4gJGpzVGVtcCAuICI+IjsKCQkJCQkgICAgICAgICRs
aV9zdWJsZXZlbCAuPSAibWVudV9zdWJsZXZlbFsiIC4gKCRjb3VudF9saSAtIDEpIC4gIl0g
PSAiIC4gKCRjb3VudF91bCAtIDEpIC4gIjsiOwoJCQkJCX0KCQkJCQlpZiAoJGxldmVsZGlm
ZiA8IDApIGZvciAoJGsgPSAwOyAkayA8IGFicygkbGV2ZWxkaWZmKTsgJGsrKykgewoJCQkJ
CSAgICAgICAgJG91dHB1dCAuPSAiPC9saT48L3VsPlxuIjsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR1bF9saXN0ICE9ICIwIikgJHVs
X2xpc3QgPSBzdWJzdHIoJHVsX2xpc3QsIDAsIHN0cnJwb3MoJHVsX2xpc3QsIiwiKSk7CgkJ
CQkJfQoJCQkJCS8vIGZpcnN0aXRlbWRpc3BsYXllZCBtYWtlcyBzdXJlIHdlIGRvbid0IGNs
b3NlIGEgPGxpPiBiZWZvcmUgdGhlIGZpcnN0IGl0ZW0gaGFzIG9wZW5lZCBpdC4KCQkJCQlp
ZiAoKCRsZXZlbGRpZmYgPT0gMCkgJiYgKCRmaXJzdGl0ZW1kaXNwbGF5ZWQpKSAkb3V0cHV0
IC49ICI8L2xpPiI7CiAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgIGlmKGluX2Fy
cmF5KCRpdGVtWyduYW1lJ10sICRzZWN0aW9uX25hbWVzKSkgJGhyZWYgPSBidWlsZGhyZWYo
InMiLCAkaXRlbVsnbmFtZSddLCAkaXRlbVsndGl0bGUnXSwgJHNhbCk7CgkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UgJGhyZWYgPSBidWlsZGhyZWYoImMiLCAkaXRl
bVsnbmFtZSddLCAkaXRlbVsndGl0bGUnXSwgJHNhbCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAkbGlfYXJyYXkgLj0gJ21lbnVfbGV2ZWxzWycgLiAkY291
bnRfbGkgLiAnXSA9ICInIC4gJHVsX2xpc3QgLiAnIjsnOwoJCQkJCSRqc1RlbXAgPSBqc0Nh
bGxCdWlsZGVyKCRqc19saSwgJGNvdW50X2xpKTsKCQkJCQkkb3V0cHV0IC49ICc8bGkgaWQ9
IkwnIC4gJGNvdW50X2xpKysgLiAnIicgLiAkanNUZW1wIC4gJz4nIC4gJGhyZWY7CgkJCQkJ
JGRlbnlhY3RpdmUgPSBmYWxzZTsKCQkJCQkkbGFzdGFjdGl2ZXBhdGggPSAkcGF0aDsKCQkJ
CX0KCQkJCWVsc2UgewoJCQkJCSRvdXRwdXQgLj0gJG91dHB1dF90ZW1wOwoJCQkJCSRsYXN0
YWN0aXZlcGF0aCA9ICRwYXRoOwoJCQkJCSRmaXJzdGl0ZW1kaXNwbGF5ZWQgPSB0cnVlOwoJ
CQkJfQoJCQl9CgkJCWVsc2UgJGRlbnlhY3RpdmUgPSB0cnVlOyAvLyBGbGFnIHRvIG1hcmsg
dGhhdCBpdGVtcyBhcmUgYmVpbmcgc3VwcHJlc3NlZAoJCX0KCQllbHNlIHsKCQkJJG91dHB1
dCAuPSAkb3V0cHV0X3RlbXA7CgkJCSRmaXJzdGl0ZW1kaXNwbGF5ZWQgPSB0cnVlOwoJCQkk
bGFzdGFjdGl2ZXBhdGggPSAkcGF0aDsKCQl9Cgl9CgkvLyBDbG9zZSBhbnkgYnJhbmNoZXMg
d2hpY2ggd2UgbGVmdCBvcGVuLCBkZXRlcm1pbmVkIGJ5IHRoZSBsZW5ndGggb2YgdGhlIHBh
dGggYXJyYXkuCglpZiAoJHNob3dwYXJlbnRpdGVtKSBmb3IgKCR4ID0gMTsgJHggPD0gY291
bnQoJGxhc3RhY3RpdmVwYXRoKTsgJHgrKykgJG91dHB1dCAuPSAiPC9saT48L3VsPiI7Cgkv
LyBFdmVuIGlmIHRoZSBwYXJlbnQgaXRlbSB3YXNuJ3Qgc2hvd24sIGl0J3Mgc3RpbGwgaW4g
dGhlIHBhdGgsIHNvIHJldHVybiBvbmUgPC9saT48L3VsPiBsZXNzCgllbHNlIGZvciAoJHgg
PSAyOyAkeCA8PSBjb3VudCgkbGFzdGFjdGl2ZXBhdGgpOyAkeCsrKSAkb3V0cHV0IC49ICI8
L2xpPjwvdWw+IjsKCS8vIE9vb3BzLi4uIGRvbid0IGZvcmdldCB0byBjbG9zZSB0aGUgRElW
IHRhZyB3aGljaCBjb250YWlucyB0aGUgbWVudSEKCSRvdXRwdXQgLj0gIjwvZGl2PiI7Cgog
ICAgICAgIC8vIE5vdywgYXBwZW5kIGFsbCBKYXZhU2NyaXB0IGhlbHBlciBhcnJheXMgdG8g
dGhlIG91dHB1dCwgYnV0IGZpbmFsaXplIHRoZW0gZmlyc3QuCglpZigkanNfYXJyYXlzKSB7
CiAgICAgICAgICAgICAgICAvLyBwb3B1bGF0ZSB0aGUgbGlfbmFtZXMgYXJyYXkKCSAgICAg
ICAgJHkgPSAwOyBmb3JlYWNoKCRtZW51aXRlbXNfb3JkZXJlZCBhcyAkeCkgJGxpX25hbWVz
IC49ICJtZW51X25hbWVzWyciIC4gJHhbJ25hbWUnXSAuICInXSA9ICIgLiAkeSsrIC4gIjsi
OwoJICAgICAgICAkb3V0cHV0IC49ICJcbjxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlw
dFwiPlxuPCEtLSI7CgkgICAgICAgICRvdXRwdXQgLj0gJGxpX2FycmF5OwoJICAgICAgICAk
b3V0cHV0IC49ICRsaV9uYW1lczsKCSAgICAgICAgJG91dHB1dCAuPSAkbGlfc3VibGV2ZWw7
CgkgICAgICAgICRvdXRwdXQgLj0gIlxuLy8gLS0+XG48L3NjcmlwdD4iOwoJfQogCXJldHVy
bigkb3V0cHV0KTsKfQoKZnVuY3Rpb24gYnVpbGRocmVmKCR0eXBlLCAkdGFyZ2V0LCAkdGV4
dCwgJHNhbCkgewoJZ2xvYmFsICRjb3VudF9hOwogICAgZ2xvYmFsICRqc19hOwoJaWYgKCEk
c2FsKSAkdHlwZSA9ICJjIjsgIC8vIGlmIHNlY3Rpb24gYXV0by1saW5raW5nIGlzIGRlYWN0
aXZhdGVkLCBhbHdheXMgdXNlIGNhdGVnb3J5IGxpbmtzCgkkaHJlZiA9IGh1IC4gJ2luZGV4
LnBocD8nIC4gJHR5cGUgLiAnPScgLiB1cmxlbmNvZGUoJHRhcmdldCk7CgkkanNUZW1wID0g
anNDYWxsQnVpbGRlcigkanNfYSwgJGNvdW50X2EpOwogICAgJGhyZWYgPSAnPGRpdj48YSBp
ZD0iQScgLiAkY291bnRfYSsrIC4gJyInIC4gJGpzVGVtcCAuICcgaHJlZj0iJyAuICRocmVm
IC4gJyI+JyAuICR0ZXh0IC4gJzwvYT48L2Rpdj4nOwogICAgcmV0dXJuKCRocmVmKTsKfQoK
ZnVuY3Rpb24gZ2V0Q2hpbGRyZW4oJHBhcmVudF9pdGVtKSB7CgkkcGFyZW50ID0gJHBhcmVu
dF9pdGVtWyduYW1lJ107CgkkbWVudV9pdGVtcyA9IHNhZmVfcm93cygiaWQsbmFtZSx0eXBl
LHBhcmVudCx0aXRsZSIsInR4cF9jYXRlZ29yeSIsIm5hbWUgIT0gJ3Jvb3QnIGFuZCB0eXBl
ID0gJ2FydGljbGUnIGFuZCBwYXJlbnQgPSAnJHBhcmVudCcgb3JkZXIgYnkgaWR4Iik7Cglw
cmludCgiPGxpIGlkPVwiJHBhcmVudF9pdGVtW2lkXVwiPiRwYXJlbnRfaXRlbVt0aXRsZV0g
WyRwYXJlbnRfaXRlbVtpZF1dIDxhIGhyZWY9XCJqYXZhc2NyaXB0Om1vdmUoJ3VwJywkcGFy
ZW50X2l0ZW1baWRdKVwiPiZ1QXJyOzwvYT4gPGEgaHJlZj1cImphdmFzY3JpcHQ6bW92ZSgn
ZG93bicsJHBhcmVudF9pdGVtW2lkXSlcIj4mZEFycjs8L2E+Iik7CglpZighJG1lbnVfaXRl
bXMpIHByaW50KCI8L2xpPlxuIik7CgllbHNlIHsKCQlwcmludCgiXG48dWw+XG4iKTsKCQlm
b3JlYWNoKCRtZW51X2l0ZW1zIGFzICR4KSBnZXRDaGlsZHJlbigkeCk7CgkJcHJpbnQoIjwv
dWw+XG48L2xpPlxuIik7Cgl9Cn0KCmZ1bmN0aW9uIGpzQ2FsbEJ1aWxkZXIoJGpzQ29tbWFu
ZHMsICR2YWx1ZSkgewogICAgICAgIGlmKCEkanNDb21tYW5kcykgcmV0dXJuKCIiKTsKICAg
ICAgICAkanNDb21tYW5kU3RyaW5nID0gIiI7CiAgICAgICAgJGpzQ29tbWFuZCA9IGV4cGxv
ZGUoIiwiLCAkanNDb21tYW5kcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gQ3JlYXRlIGFycmF5IG9mIGNvbW1hbmRzCiAgICAgICAgZm9yZWFjaCgkanNDb21tYW5k
IGFzICRjb21tYW5kKSB7CiAgICAgICAgICAgICAgICBpZigkanNDb21tYW5kU3RyaW5nKSAk
anNDb21tYW5kU3RyaW5nIC49ICIgIjsgICAgICAgICAgICAgICAgICAgLy8gQWRkIGJsYW5r
IGJlZm9yZSBuZXh0IGNvbW1hbmQKICAgICAgICAgICAgICAgICRqc0NvbW1hbmRTdHJpbmcg
Lj0gJyAnIC4gJGNvbW1hbmQgLiAnKCcgLiAkdmFsdWUgLiAnKTsiJzsgICAgICAvLyBCdWls
ZCB0aGUgSmF2YVNjcmlwdCBjb21tYW5kcwogICAgICAgIH0KICAgICAgICAkanNDb21tYW5k
U3RyaW5nID0gc3RyX3JlcGxhY2UoJz0nLCAnPSInLCAkanNDb21tYW5kU3RyaW5nKTsgICAg
ICAgICAgICAvLyBNYWtlIGxhc3QgYW1lbmRtZW50cyBmb3IgY29ycmVjdCBzeW50YXgKICAg
ICAgICByZXR1cm4oJGpzQ29tbWFuZFN0cmluZyk7Cn0KCgpmdW5jdGlvbiB3b3dfbWVudV9p
Zl9zdWJfb2YoJGF0dHMsICR0aGluZykgewogICAgIC8vIERpc3BsYXlzIGVuY2xvc2VkIGNv
bnRlbnQgaWYgdGhlIGN1cnJlbnQgY2F0ZWdvcnkgaXMgYSBzdWJjYXRlZ29yeSBvZiB0aGUg
Z2l2ZW4gY2F0ZWdvcnkgKCRjYXQpCiAgICBnbG9iYWwgJHByZXRleHQ7CiAgICAgLy8gUmV0
cmlldmUgY3VycmVudCBjYXRlZ29yeSBkZXBlbmRpbmcgb24gd2hhdCBpcyBiZWluZyByZXF1
ZXN0ZWQgKGFydGljbGVfaWQgb3IgY2F0ZWdvcnkpCiAgICBpZigkcHJldGV4dFsnYyddKSAk
cmVmQ2F0ID0gJHByZXRleHRbJ2MnXTsKICAgIGlmKCRwcmV0ZXh0WydpZCddKSB7CiAgICAJ
JHdoZXJlQ2xhdXNlID0gImlkID0gIiAuICRwcmV0ZXh0WydpZCddOwogICAgCSRyZWZDYXQg
PSBzYWZlX2ZpZWxkKCJDYXRlZ29yeTEiLCAidGV4dHBhdHRlcm4iLCAkd2hlcmVDbGF1c2Up
OwogICAgfQogICAgJHBhcmVudCA9ICJyb290IjsKICAgICRpc1N1Yk9mID0gZmFsc2U7CiAg
ICBpZihpc19hcnJheSgkYXR0cykpIGV4dHJhY3QoJGF0dHMpOwogICAgIGVsc2UgcmV0dXJu
KCI8cD53b3dfbWVudV9pZl9zdWJfb2YgZXJyb3I6IE5vIHBhcmVudCBjYXRlZ29yeSBzcGVj
aWZpZWQ8L3A+Iik7CgkgLy8gTWFrZSBzdXJlIHdlIHVzZSB0aGUgTkFNRSBvZiB0aGUgY2F0
ZWdvcnksIG5vdCB0aGUgdGl0bGUgKGNvbnRhaW5zIHNwYWNlcykKICAgICR3aGVyZUNsYXVz
ZSA9ICJ0aXRsZSA9IFwiJGNhdFwiIjsKICAgIGlmKHN0cnBvcygkY2F0LCAnICcpKSB7CiAg
ICAJJGNhdCA9IHNhZmVfZmllbGQoIm5hbWUiLCAidHhwX2NhdGVnb3J5IiwgJHdoZXJlQ2xh
dXNlKTsKICAgIAkgLy8gTm8gcmVzdWx0PyBUaGVuIHRoZSBnaXZlbiBjYXQgaGFzbid0IGJl
ZW4gZm91bmQgaW4gdGhlIGNhdGVnb3J5IGxpc3QKICAgIAlpZighJGNhdCkgcmV0dXJuKCI8
cD53b3dfbWVudV9pZl9zdWJfb2YgZXJyb3I6IE5vIGNhdGVnb3J5IHdpdGggdGhhdCBuYW1l
ITwvcD4iKTsKICAgIH0KCiAgICBpZigkaW5jbHVkZV9jYXQpIHsKICAgIAkgLy8gSWYgdGhl
IGF0dHJpYnV0ZSAkaW5jbHVkZV9jYXQgPSB0cnVlLCBhbHNvIHJldHVybiB0cnVlICgkY2F0
IGFuZCBjdXJyZW50IGNhdGVnb3J5IGFyZSBpZGVudGljYWwpCiAgICAJIC8vIE1lYW5zOiBE
aXNwbGF5cyBjb250ZW50IGlmIHRoZSBjdXJyZW50IGNhdGVnb3J5IGlzIGEgc3ViY2F0ZWdv
cnkgb2Ygb3IgZXF1YWwgdG8gdGhlIGdpdmVuIGNhdGVnb3J5CiAgICAJaWYoJHJlZkNhdCA9
PSAkY2F0KSAkaXNTdWJPZiA9IHRydWU7CiAgICB9CgogICAgd2hpbGUoKCEkaXNTdWJPZikg
JiYgKCRwYXJlbnQpKSB7CiAgICAJJHdoZXJlQ2xhdXNlID0gInRpdGxlID0gXCIkcmVmQ2F0
XCIiOwogICAgCSRwYXJlbnQgPSBzYWZlX2ZpZWxkKCJwYXJlbnQiLCAidHhwX2NhdGVnb3J5
IiwgJHdoZXJlQ2xhdXNlKTsKICAgIAlpZigkcGFyZW50ID09ICRjYXQpICRpc1N1Yk9mID0g
dHJ1ZTsKICAgIAllbHNlICRyZWZDYXQgPSAkcGFyZW50OwogICAgfQoKICAgIHJldHVybiAo
JGlzU3ViT2YpID8gcGFyc2UoJHRoaW5nKSA6ICIiOwp9CiI7czozOiJtZDUiO3M6MzI6ImY2
NDhhYjMzNTk5MmYyMGI4OTZjZjdkMjEyZjIwYWYwIjt9

Last edited by gaekwad (2020-08-03 17:19:36)

Offline

Board footer

Powered by FluxBB