Anda di halaman 1dari 605

Content-Type: multipart/related; start=<op.mhtml.1283618052591.

b2a6c22a0f1688be@
192.168.1.100>; boundary=----------GE38ccHN5OUhHV71ZcqG0g
Content-Location: http://www.wonderhowto.com/wonderment/artist-with-death-wish-n
o-photoshop-used-0119460/
Subject: =?utf-8?Q?Artist=20With=20Death=20Wish=20-=20No=20Photoshop=20Used=20=C
2=AB=20Wonderment=20Blog?=
MIME-Version: 1.0
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline; filename=default.htm
Content-Type: text/html; charset=utf-8; name=default.htm
Content-ID: <op.mhtml.1283618052591.b2a6c22a0f1688be@192.168.1.100>
Content-Location: http://www.wonderhowto.com/wonderment/artist-with-death-wish-n
o-photoshop-used-0119460/
Content-Transfer-Encoding: Base64
PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJh
bnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQv
eGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbG5zOmZiPSJodHRwOi8vd3d3LmZhY2Vi
b29rLmNvbS8yMDA4L2ZibWwiPg0KPGhlYWQ+DQogICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbDQogICAgdmFyIF9fb1N0YXJ0ID0g
bmV3IERhdGUoKTt2YXIgX3NmX3N0YXJ0cHQgPSBfX29TdGFydC5nZXRUaW1lKCk7
DQogICAgLy9dXT48L3NjcmlwdD4NCiAgICAKPGxpbmsgcmVsPSJhbHRlcm5hdGUi
IHR5cGU9ImFwcGxpY2F0aW9uL3Jzcyt4bWwiIGhyZWY9Imh0dHA6Ly9mZWVkcy5m
ZWVkYnVybmVyLmNvbS9Xb25kZXJIb3dUby9maW5lLWFydCIgdGl0bGU9IkxhdGVz
dCBGaW5lIEFydCBIb3ctVG8gVmlkZW9zICZhbXA7IEFydGljbGVzIiAvPgo8bGlu
ayByZWw9ImFsdGVybmF0ZSIgdHlwZT0iYXBwbGljYXRpb24vcnNzK3htbCIgaHJl
Zj0iaHR0cDovL2ZlZWRzLmZlZWRidXJuZXIuY29tL1dvbmRlckhvd1RvL1dvbmRl
ck9mVGhlRGF5IiB0aXRsZT0iV29uZGVybWVudCAtIEZyb20gV29uZGVySG93VG8i
IC8+CjxsaW5rIHJlbD0ic2VhcmNoIiB0eXBlPSJhcHBsaWNhdGlvbi9vcGVuc2Vh
cmNoZGVzY3JpcHRpb24reG1sIiBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3Rv
LmNvbS9ob3ctdG8tdmlkZW8tc2VhcmNoLnhtbCIgdGl0bGU9IldvbmRlckhvd1Rv
IiAvPgo8bGluayByZWw9ImNhbm9uaWNhbCIgaHJlZj0iaHR0cDovL3d3dy53b25k
ZXJob3d0by5jb20vd29uZGVybWVudC9hcnRpc3Qtd2l0aC1kZWF0aC13aXNoLW5v
LXBob3Rvc2hvcC11c2VkLTAxMTk0NjAvIiAvPgo8bGluayByZWw9ImltYWdlX3Ny
YyIgaHJlZj0iaHR0cDovL2ltZy53b25kZXJob3d0by5jb20vaW1hZ2VzL2dmeC9n
YWxsZXJ5L2F0NjM0MTg4NTY3MTUwMjM5OTU4LmpwZyIgLz4KPG1ldGEgbmFtZT0i
cHVibGlzaC1kYXRlIiBjb250ZW50PSJUdWUsIDMxIEF1ZyAyMDEwIDE4OjMwOjAw
IEdNVCIgLz4KPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkFydGlz
dCBXaXRoIERlYXRoIFdpc2ggKE5vIFBob3Rvc2hvcCBVc2VkKSB84pa6IEl0IGlz
IGNvbmNlaXZhYmxlIHRoYXQgQ2hpbmVzZSBhcnRpc3QgTGVpIFdlaSBoYXMgYWx3
YXlzIGRyZWFtdCBvZiBiZWluZyBhIHN1cGVyaGVyby4gT3IgdGhhdCBoZSBzaW1w
bHkgaGFzIHRoZSBkZXNpcmUgdG8gZmx5LiBPciBtYXliZSBoZSBpcyBjb25zdGFu
dGx5IGNvbmZyb250aW5nIGEgZmVhciBvZiBoZWlnaHRzLiBXaGF0ZXZlciB0aGUg
aW1wZXR1cyBvZiBoaXMgd29yayBtYXkgYmUsIFdlaSBjcmVhdGVzIGlsbHVzaW9u
cyBvZiBhIGRhbmdlcm91cyAmcXVvdDtyZWFsaXR5JnF1b3Q7LiBCdXQgd2hhdCBp
cyBwZXJoYXBzIG1vc3QgaW50ZXJlc3RpbmcgaXMgdGhhdCBXZWkncyByZXN1bHRp
bmcgaW1hZ2VzIGFyZSBpbiBmYWN0IE5PVCBwaG90byBtb250YWdlczogJnF1b3Q7
TGkgV2VpIHdvcmtzIHdpdGggdGhlIGhlbHAgb2YgcHJvcHMgc3VjaCBhcyBtaXJy
b3IsIG1ldGFsIHdpcmVzLCBzY2FmZm9sZGluZyBhbmQgYWNyb2JhdGljcy4mcXVv
dDsgV2h5IG5vdCBqdXN0IG1ha2UgYSBwaG90byBtb250YWdlPyBXaHkgbXVzdCBp
dCBiZSBhICZxdW90O3RydWUmcXVvdDsgcmVlbmFjdG1lbnQ/IFByZXZpb3VzbHks
IENhaSBHdW8tUWlhbmcncyAoTGl0ZXJhbGx5KSBFeHBsb3NpdmUgQXJ0LiIgLz4K
PG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPTEwMTA7IiAvPgo8
bWV0YSBuYW1lPSJ0aXRsZSIgY29udGVudD0iQXJ0aXN0IFdpdGggRGVhdGggV2lz
aCAoTm8gUGhvdG9zaG9wIFVzZWQpIiAvPgo8bWV0YSBuYW1lPSJ2aWV3cyIgY29u
dGVudD0iMTIzODUiIC8+CjxtZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSJh
cnRpc3QsZGVhdGgsd2lzaCxubyxwaG90b3Nob3AsdXNlZCxob3cgdG8sdmlkZW8s
dmlkZW9zLHZpZCx2aWRzLGhvd3RvLGhvdy10byx3b25kZXJob3d0byx3b25kZXIs
aG93LHR1dG9yaWFscyx0dXRvcmlhbCxpbnN0cnVjdGlvbmFsLGluc3RydWN0aW9u
cyxsZWFybiIgLz4KPG1ldGEgbmFtZT0iY2F0ZWdvcnkiIGNvbnRlbnQ9IkZpbmUg
QXJ0L1NjdWxwdHVyZSIgLz4KPG1ldGEgbmFtZT0idHdlZXRtZW1lLXRpdGxlIiBj
b250ZW50PSJBcnRpc3QgV2l0aCBEZWF0aCBXaXNoIChObyBQaG90b3Nob3AgVXNl
ZCkiIC8+CjxtZXRhIG5hbWU9Im1lZGl1bSIgY29udGVudD0ibXVsdCIgLz48dGl0
bGU+DQoJQXJ0aXN0IFdpdGggRGVhdGggV2lzaCAtIE5vIFBob3Rvc2hvcCBVc2Vk
IMKrIFdvbmRlcm1lbnQgQmxvZw0KPC90aXRsZT48bWV0YSBodHRwLWVxdWl2PSJD
b250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIg
Lz48bWV0YSBodHRwLWVxdWl2PSJpbWFnZXRvb2xiYXIiIGNvbnRlbnQ9Im5vIiAv
PjxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iL2Zhdmljb24uaWNvIiAv
PjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Imh0
dHA6Ly9pbWcud29uZGVyaG93dG8uY29tL2Nzcy93aHQzLmNzcz92PTA5MDIxMDIi
IC8+CjwhLS1baWYgbHQgSUUgOV0+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBl
PSJ0ZXh0L2NzcyIgaHJlZj0iaHR0cDovL2ltZy53b25kZXJob3d0by5jb20vY3Nz
L3dodF9pZTguY3NzP3Y9MDkwMjEwMiIvPjwhW2VuZGlmXS0tPgo8IS0tW2lmIGx0
IElFIDhdPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhy
ZWY9Imh0dHA6Ly9pbWcud29uZGVyaG93dG8uY29tL2Nzcy93aHRfaWU3LmNzcz92
PTA5MDIxMDIiLz48IVtlbmRpZl0tLT4KPCEtLVtpZiBsdCBJRSA3XT48bGluayBy
ZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJodHRwOi8vaW1n
LndvbmRlcmhvd3RvLmNvbS9jc3Mvd2h0X2llNi5jc3M/dj0wOTAyMTAyIi8+PCFb
ZW5kaWZdLS0+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3Mi
IGhyZWY9Imh0dHA6Ly9pbWcud29uZGVyaG93dG8uY29tL2Nzcy9hcnRpY2xlX3Bh
Z2UuY3NzP3Y9MDkwMjEwMiIgLz4KPCEtLVtpZiBsdCBJRSA5XT48bGluayByZWw9
InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJodHRwOi8vaW1nLndv
bmRlcmhvd3RvLmNvbS9jc3MvYXJ0aWNsZV9wYWdlX2llOC5jc3M/dj0wOTAyMTAy
Ii8+PCFbZW5kaWZdLS0+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4v
LzwhW0NEQVRBWw0KICB2YXIgZ29vZ2xldGFnID0gZ29vZ2xldGFnIHx8IHt9Ow0K
ICBnb29nbGV0YWcuY21kID0gZ29vZ2xldGFnLmNtZCB8fCBbXTsNCi8vXV0+PC9z
Y3JpcHQ+PC9oZWFkPg0KPGJvZHkgb25sb2FkPSJHZXREdXJhdGlvbigpOyIgc3R5
bGU9ImJhY2tncm91bmQ6I0YzRjRGMyB1cmwoL2ltYWdlcy9iZ3cuZ2lmKSByZXBl
YXQteSA1MCUgMCI+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88
IVtDREFUQVsNCndpbmRvdy5nb29nbGVfYW5hbHl0aWNzX3VhY2N0ID0gIlVBLTIz
NjE2NDQtMSI7DQp3aW5kb3cuZ29vZ2xlX2FuYWx5dGljc19kb21haW49Ii53b25k
ZXJob3d0by5jb20iOw0Kd2luZG93Lmdvb2dsZV9hbmFseXRpY3NfZG9tYWluX25h
bWU9Ii53b25kZXJob3d0by5jb20iOw0KLy9dXT48L3NjcmlwdD4NCjxmb3JtIG5h
bWU9ImFzcG5ldEZvcm0iIG1ldGhvZD0icG9zdCIgYWN0aW9uPSJhcnRpY2xlLmFz
cHg/cGF0aD13b25kZXJtZW50JTJmYXJ0aXN0LXdpdGgtZGVhdGgtd2lzaC1uby1w
aG90b3Nob3AtdXNlZC0wMTE5NDYwJTJmIiBpZD0iYXNwbmV0Rm9ybSI+DQo8ZGl2
Pg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iX19WSUVXU1RBVEUiIGlkPSJf
X1ZJRVdTVEFURSIgdmFsdWU9Ii93RVBEd1VLTVRreE9UTTBPREk1TldSa0hxdHc4
UWxTczhDd25WZm1NZGVCdlZ0K2MzUT0iIC8+DQo8L2Rpdj4NCg0KDQo8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQovLzwhW0NEQVRBWw0KdmFyICRfYWN0
aXZlVVJMID0gJ2h0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL3dvbmRlcm1lbnQv
YXJ0aXN0LXdpdGgtZGVhdGgtd2lzaC1uby1waG90b3Nob3AtdXNlZC0wMTE5NDYw
Lyc7Ly9dXT4NCjwvc2NyaXB0Pg0KDQo8c2NyaXB0IHNyYz0iL2pzL3l1aV8yXzVf
Mi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4NCjxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCi8vPCFbQ0RBVEFbDQp3aW5kb3cuSlNW
ZXJzaW9uID0gJzA5MDIxMDInOy8vXV0+DQo8L3NjcmlwdD4NCg0KPHNjcmlwdCBz
cmM9Ii9qcy9iYXNlLmpzP3Y9MDkwMjEwMiIgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPSIvanMvYXJ0aWNsZV9wYWdlLmpzP3Y9
MDkwMjEwMiIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4NCjxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCi8vPCFbQ0RBVEFbDQpZQUhPTy53
aHQuZG9jWC5BcnRpY2xlUGFnZS5pbml0KCJ7dmVyc2lvbjpcIjEuMFwiLGlkOlwi
aWQxNTUxMDUzMlwiLGRvY1BhcnRzOltdfSIseyJnYWxsZXJ5X2VsZW1lbnQiOiI8
ZGl2IGNsYXNzPVwibWVkaWFHYWxsZXJ5ezR9XCJ7Mn0+PGRpdiBjbGFzcz1cImNv
bnRlbnRBcmVhXCI+ezB9PC9kaXY+ezN9PGRpdiBjbGFzcz1cIml0ZW1MaW5rTGlz
dFwiPnsxfTxkaXYgY2xhc3M9XCJjYlwiPjwvZGl2PjwvZGl2PjwvZGl2PiIsImdh
bGxlcnlfY29udGVudF9hcmVhX2VkaXQiOiI8YSByZWw9XCJub2ZvbGxvd1wiIGNs
YXNzPVwiYnRuUiBidG5GUiBidG4xNiBidG5JRCByZW1vdmVHYWxsZXJ5XCIgaHJl
Zj1cImphdmFzY3JpcHQ6Ly8gXCI+PGk+PC9pPjxlbT48L2VtPjwvYT48ZGl2IGNs
YXNzPVwiY2JcIj48L2Rpdj48ZGl2IGNsYXNzPVwiaXRlbUNvbnRlbnRcIj48YSBo
cmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIGNsYXNzPVwicHJldkdhbGxlcnlJ
dGVtXCI+PGk+PC9pPjwvYT48ZGl2IGNsYXNzPVwiaW5uZXJDb250ZW50XCI+ezB9
PC9kaXY+PGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiBjbGFzcz1cIm5l
eHRHYWxsZXJ5SXRlbVwiPjxpPjwvaT48L2E+PC9kaXY+PGRpdiBjbGFzcz1cIm5l
d0l0ZW1zXCI+PGRpdiBjbGFzcz1cImNsaWNrVG9JbnNlcnRcIj5DTElDSyBUTyBJ
TlNFUlQ8L2Rpdj48YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIGNsYXNz
PVwiYWRkVmlkZW9MaW5rXCI+PC9hPjxzcGFuPk9SPC9zcGFuPjxhIGhyZWY9XCJq
YXZhc2NyaXB0OnZvaWQoMCk7XCIgY2xhc3M9XCJhZGRJbWFnZUxpbmtcIj48L2E+
PC9kaXY+PGRpdiBjbGFzcz1cImFkZEltYWdlXCI+PGRpdiBjbGFzcz1cInVwbG9h
ZEltYWdlXCI+PC9kaXY+PGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiBj
bGFzcz1cImNhbmNlbEl0ZW1FZGl0IGJ0blIgYnRuTlNcIj48aT48L2k+PGVtPkJh
Y2s8L2VtPjwvYT48YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIGNsYXNz
PVwic2F2ZUltYWdlIGJ0bkcgYnRuRlIgYnRuTlNcIj48aT48L2k+PGVtPlNhdmU8
L2VtPjwvYT48L2Rpdj48ZGl2IGNsYXNzPVwiYWRkVmlkZW9cIj48ZGl2IGNsYXNz
PVwidXJsVmlkZW9cIj48ZGl2IGNsYXNzPVwidmlkZW9Mb2FkaW5nXCI+PC9kaXY+
PHNwYW4+RW50ZXIgdGhlIFVSTCBmb3IgYSB2aWRlbyBmcm9tIGFsbW9zdCBhbnkg
bWFqb3IgdmlkZW8gc2l0ZTo8L3NwYW4+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xh
c3M9XCJ2aWRlb0ltcG9ydFwiIHZhbHVlPVwiaHR0cDovL1wiIC8+PC9kaXY+PGRp
diBjbGFzcz1cInN1cHBvcnRlZFNpdGVzXCI+PGEgaHJlZj1cImh0dHA6Ly93d3cu
eW91dHViZS5jb20vXCIgY2xhc3M9XCJ5dFwiIHRhcmdldD1cIl9ibGFua1wiPnlv
dXR1YmUuY29tPC9hPjxhIGhyZWY9XCJodHRwOi8vd3d3LnZpbWVvLmNvbS9cIiBj
bGFzcz1cInZpbVwiIHRhcmdldD1cIl9ibGFua1wiPnZpbWVvLmNvbTwvYT48YSBo
cmVmPVwiaHR0cDovL3d3dy5tZXRhY2FmZS5jb20vXCIgY2xhc3M9XCJtY1wiIHRh
cmdldD1cIl9ibGFua1wiPm1ldGFjYWZlLmNvbTwvYT48ZGl2IGNsYXNzPVwiY2Jc
Ij48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwid2h0VmlkZW9LZXl3b3Jkc1wiPjxz
cGFuIGNsYXNzPVwid2h0VmlkZW9MYWJlbFwiPjxzcGFuIGNsYXNzPVwid2h0SWNv
blwiPjwvc3Bhbj5BZGQgYSBob3ctdG8gdmlkZW8gZnJvbSBXSFQ6PC9zcGFuPjxk
aXY+PHNwYW4gY2xhc3M9XCJwYWdpbmcgdmlkZW9QYWdpbmdcIj48L3NwYW4+PGlu
cHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJ2aWRlb0tleXdvcmRzXCIgLz48YSBj
bGFzcz1cInZpZGVvSW1wb3J0QnV0dG9uIGJ0bkIgYnRuRkwgYnRuTlNcIiBocmVm
PVwiamF2YXNjcmlwdDp2b2lkKDApO1wiPjxpPjwvaT48ZW0+U2VhcmNoPC9lbT48
L2E+PGRpdiBjbGFzcz1cImNiXCI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFz
cz1cIndodFZpZGVvc1wiPjwvZGl2PjxkaXYgY2xhc3M9XCJjb250cm9sQnV0dG9u
XCI+PGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiBjbGFzcz1cImNhbmNl
bEl0ZW1FZGl0IGJ0blIgYnRuTlNcIj48aT48L2k+PGVtPkJhY2s8L2VtPjwvYT48
YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIGNsYXNzPVwibmV3VmlkZW9T
YXZlIGJ0bkcgYnRuRlIgYnRuTlNcIj48aT48L2k+PGVtPlNhdmU8L2VtPjwvYT48
L2Rpdj48L2Rpdj4iLCJnYWxsZXJ5X2NvbnRlbnRfYXJlYSI6IiIsImdhbGxlcnlf
Y2FwdGlvbl90ZW1wbGF0ZSI6IjxkaXYgY2xhc3M9XCJjYXB0aW9uVGV4dFwiPjxk
aXYgY2xhc3M9XCJ3aHRUaXRsZVwiPjwvZGl2PjxkaXYgY2xhc3M9XCJpdGVtQ2Fw
dGlvblwiPnswfTwvZGl2PjwvZGl2PiIsImdhbGxlcnlfaXRlbUxpbmsiOiI8ZGl2
IGNsYXNzPVwiaXRlbUxpbmsgezN9XCI+PGEgaHJlZj1cImphdmFzY3JpcHQ6dm9p
ZCgwKTtcIiBjbGFzcz1cIml0ZW1UaHVtYiBnYWxsZXJ5SXRlbXswfVwiPjxpPjwv
aT48aW1nIHNyYz1cImh0dHA6Ly9pbWcud29uZGVyaG93dG8uY29tL3syfS97MX1c
IiB3aWR0aD1cIjgyXCIgaGVpZ2h0PVwiNjJcIiBhbHQ9XCJHYWxsZXJ5IEl0ZW0g
VGh1bWJuYWlsXCIgLz48L2E+PC9kaXY+IiwiZ2FsbGVyeV9pdGVtTGlua19lZGl0
IjoiPGRpdiBjbGFzcz1cIml0ZW1MaW5rIHszfVwiPjxhIGhyZWY9XCJqYXZhc2Ny
aXB0OnZvaWQoMCk7XCIgY2xhc3M9XCJpdGVtVGh1bWIgZ2FsbGVyeUl0ZW17MH1c
Ij48aT48L2k+PGltZyBzcmM9XCJodHRwOi8vaW1nLndvbmRlcmhvd3RvLmNvbS97
Mn0vezF9XCIgd2lkdGg9XCI4MlwiIGhlaWdodD1cIjYyXCIgYWx0PVwiR2FsbGVy
eSBJdGVtIFRodW1ibmFpbFwiIC8+PC9hPjxkaXYgY2xhc3M9XCJ0aHVtYkNvbnRy
b2xzXCI+PGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiBjbGFzcz1cIm1v
dmVJdGVtIG1vdmVMZWZ0XCI+PC9hPjxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQo
MCk7XCIgY2xhc3M9XCJtb3ZlSXRlbSBtb3ZlUmlnaHRcIj48L2E+PGEgaHJlZj1c
ImphdmFzY3JpcHQ6dm9pZCgwKTtcIiBjbGFzcz1cImVkaXRMaW5rIFwiPjwvYT48
YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIGNsYXNzPVwicmVtb3ZlTGlu
a1wiPjwvYT48ZGl2IGNsYXNzPVwiY2JcIj48L2Rpdj48L2Rpdj48L2Rpdj4iLCJn
YWxsZXJ5X2JsYW5rSXRlbUxpbmsiOiI8ZGl2IGNsYXNzPVwiaXRlbUxpbmsgbmV3
R2FsbGVyeUl0ZW1cIj48ZGl2PjxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7
XCIgY2xhc3M9XCJhZGRJbWFnZUxpbmtcIj48L2E+PGEgaHJlZj1cImphdmFzY3Jp
cHQ6dm9pZCgwKTtcIiBjbGFzcz1cImFkZFZpZGVvTGlua1wiPjwvYT48L2Rpdj48
L2Rpdj4iLCJnYWxsZXJ5X2ltYWdlIjoiPGEgaHJlZj1cInsyfVwiIHRhcmdldD1c
Il9ibGFua1wiPjxpbWcgY2xhc3M9XCJpdGVtezF9XCIgc3JjPVwiaHR0cDovL2lt
Zy53b25kZXJob3d0by5jb20vezB9XCIgYWx0PVwiXCIgLz48L2E+IiwiZ2FsbGVy
eV9pbWFnZV9wcmVmaXgiOiIvaW1hZ2VzL2dmeC9nYWxsZXJ5LyIsImdhbGxlcnlf
dmlkZW8iOiI8ZGl2IGNsYXNzPVwiaXRlbUNyZWRpdHNcIj48ZGl2IGNsYXNzPVwi
d2h0VmlkZW9cIj48c3Bhbj48L3NwYW4+SG93IHRvIHZpZGVvPC9kaXY+PGRpdiBj
bGFzcz1cImNyZWRpdFRleHRcIj57Mn08L2Rpdj48ZGl2IGNsYXNzPVwiY2JcIj48
L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPVwiaXRlbVZpZGVvIGl0ZW17MX1cIj57MH08
L2Rpdj4iLCJncmFwaGljRGl2aWRlciI6IjxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+
PGRpdiBjbGFzcz1cInswfVwiPjwvZGl2PjwvZGl2PiIsImhlYWRsaW5lIjoiPGgy
IGNsYXNzPVwic2VjdGlvbkhlYWRsaW5lIHdodE5ld0VsdFwiPnswfTwvaDI+Iiwi
aXRlbWl6ZWRMaXN0X2VsZW1lbnQiOiI8dWwgY2xhc3M9XCJpdGVtaXplZExpc3Qg
ezB9XCI+ezF9PC91bD4iLCJpdGVtaXplZExpc3RfaXRlbSI6IjxsaT57MH08L2xp
PiIsIml0ZW1pemVkTGlzdF9pdGVtX2VkaXQiOiI8bGk+PGEgY2xhc3M9XCJkZWxl
dGVMaXN0SXRlbVwiIGhyZWY9XCJqYXZhc2NyaXB0Oi8vRWRpdFwiPjwvYT48c3Bh
biBjbGFzcz1cImVkaXRpbmdJdGVtXCI+ezB9PC9zcGFuPjxkaXYgY2xhc3M9XCJj
YlwiPjwvZGl2PjwvbGk+Iiwic3RlcCI6IjxoMiBjbGFzcz1cInN0ZXBcIj48c3Bh
biBjbGFzcz1cInN0ZXBOdW1iZXJcIj48c3Bhbj5TdGVwPC9zcGFuPiB7MH0gPC9z
cGFuPjxzcGFuIGNsYXNzPVwic3RlcFRleHRcIj57MX08L3NwYW4+PC9oMj4iLCJz
dGVwX2VkaXQiOiI8aDIgY2xhc3M9XCJzdGVwIHN0ZXBOdW0wIHdodE5ld0VsdFwi
PnswfTwvaDI+Iiwic3ViSGVhZGxpbmUiOiI8aDMgY2xhc3M9XCJzZWN0aW9uU3Vi
SGVhZGxpbmVcIj57MH08L2gzPiIsInRleHRCbG9jayI6IjxkaXYgY2xhc3M9XCJ0
ZXh0QmxvY2tcIj57MH08L2Rpdj4iLCJ0ZXh0QmxvY2tfZWRpdCI6IjxkaXYgY2xh
c3M9XCJ0ZXh0QmxvY2tcIj57MH08L2Rpdj48dGV4dGFyZWEgY2xhc3M9XCJlZGl0
b3JUQVwiPjwvdGV4dGFyZWE+IiwidGV4dEJsb2NrX3RpcFdhcm5pbmciOiI8aDQg
Y2xhc3M9XCJ7MH1cIj57MX08L2g0PiIsInRpcFdhcm5pbmdMaXN0IjoiPGRpdiBj
bGFzcz1cInRpcHNXYXJuaW5nc1wiPjxoMz5UaXBzICZhbXA7IFdhcm5pbmdzPC9o
Mz57MH17MX08L2Rpdj4iLCJ0aXBXYXJuaW5nTGlzdF9pdGVtc1RlbXBsYXRlIjoi
PGRpdiBjbGFzcz1cInsxfVwiPjxpPjwvaT48ZGl2IGNsYXNzPVwiaXRlbXNcIj57
MH08L2Rpdj48ZGl2IGNsYXNzPVwiY2JcIj48L2Rpdj48L2Rpdj4iLCJ0aXBXYXJu
aW5nTGlzdF9pdGVtIjoiPGRpdiBjbGFzcz1cInswfVwiPjxzcGFuIGNsYXNzPVwi
aWNvblwiPjwvc3Bhbj48cCBjbGFzcz1cInRleHRcIj48aT57MX08L2k+PC9wPjwv
ZGl2PiIsInRpcFdhcm5pbmdMaXN0X2l0ZW1fZWRpdCI6IjxkaXYgY2xhc3M9XCJ3
aHROZXdFbHQgezB9XCI+PHNwYW4gY2xhc3M9XCJpY29uXCI+PC9zcGFuPjxlbT57
MX08L2VtPjwvZGl2PiIsbGVuZ3RoOjI1fSwgJzExOTQ2MCcse3VzZXJJRDowLHVz
ZXJOYW1lOiJub3RfbG9nZ2VkX2luIixkaXNwbGF5TmFtZToibm90X2xvZ2dlZF9p
biIsaXNVc2VyOmZhbHNlLGlzQ3VyYXRvcjpmYWxzZSxpc0FkbWluOmZhbHNlLGNh
bkVkaXQ6ZmFsc2UsYXV0b0FwcHJvdmU6ZmFsc2Usb3ZlcjE4OmZhbHNlLG92ZXIy
MTpmYWxzZSxsYXJnZUltYWdlOiJ1c2VyX2RlZmF1bHRfbGFyZ2UuanBnIixpbWFn
ZToidXNlcl9kZWZhdWx0LmpwZyIsaWNvbjoidXNlcl9kZWZhdWx0X2ljb24uZ2lm
In0sMTY1ODEwNzUsMzM3Mzk3NDYyLCdBcnRpc3QgV2l0aCBEZWF0aCBXaXNoIChO
byBQaG90b3Nob3AgVXNlZCknLHRydWUsMiw3MDMpOy8vXV0+DQo8L3NjcmlwdD4N
Cg0KPHNjcmlwdCBzcmM9Ii9qcy9jb21tZW50LmpzP3Y9MDkwMjEwMiIgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4NCjxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4NCi8vPCFbQ0RBVEFbDQpZQUhPTy53aHQuQ29tbWVudC5pbml0
KCcxMTk0NjAnLCBmYWxzZSk7Ly9dXT4NCjwvc2NyaXB0Pg0KDQo8c2NyaXB0IHNy
Yz0iL2pzL2FsZXJ0LmpzP3Y9MDkwMjEwMiIgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPSIvanMvdmlydHVhbF9mb3JtLmpzP3Y9
MDkwMjEwMiIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4NCjxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCi8vPCFbQ0RBVEFbDQpZQUhPTy53
aHQuVmlydHVhbEZvcm0uaW5pdCgnU3VnZ2VzdGlvbicsbnVsbCwnaG92ZXJDb250
ZW50Jyx0cnVlKTsvL11dPg0KPC9zY3JpcHQ+DQoNCjxzY3JpcHQgc3JjPSIvanMv
bXZ0X2xvZy5qcz92PTA5MDIxMDIiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9z
Y3JpcHQ+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQovLzwhW0NE
QVRBWw0KWUFIT08ud2h0LlZpcnR1YWxGb3JtLmluaXQoJ2xvZ2luU2lnbnVwJyxu
dWxsLCdob3ZlckNvbnRlbnQnLHRydWUpOy8vXV0+DQo8L3NjcmlwdD4NCg0KPHNj
cmlwdCBzcmM9Ii9qcy9wYWdlLmpzP3Y9MDkwMjEwMiIgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij48L3NjcmlwdD4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4NCi8vPCFbQ0RBVEFbDQpZQUhPTy53aHQuUGFnZS5pbml0KHt1c2VySUQ6MCx1
c2VyTmFtZToibm90X2xvZ2dlZF9pbiIsZGlzcGxheU5hbWU6Im5vdF9sb2dnZWRf
aW4iLGlzVXNlcjpmYWxzZSxpc0N1cmF0b3I6ZmFsc2UsaXNBZG1pbjpmYWxzZSxj
YW5FZGl0OmZhbHNlLGF1dG9BcHByb3ZlOmZhbHNlLG92ZXIxODpmYWxzZSxvdmVy
MjE6ZmFsc2UsbGFyZ2VJbWFnZToidXNlcl9kZWZhdWx0X2xhcmdlLmpwZyIsaW1h
Z2U6InVzZXJfZGVmYXVsdC5qcGciLGljb246InVzZXJfZGVmYXVsdF9pY29uLmdp
ZiJ9LG51bGwsbnVsbCwzMzczOTc0NjIse30pO3ZhciAkX2luZGVudE9mZnNldCA9
IDE2Oy8vXV0+DQo8L3NjcmlwdD4NCg0KPHNjcmlwdCBzcmM9Ii9qcy9zY3JvbGxl
ci5qcz92PTA5MDIxMDIiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+
DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQovLzwhW0NEQVRBWw0K
WUFIT08ud2h0LlNjcm9sbGVyLmluaXQoJ3d3U2NsY3RsMDBfY3BoQ29udGVudF93
d3NXb25kZXJXZWVrbHknLFs2LDZdLDAuNSx0cnVlLGZhbHNlKTtZQUhPTy53aHQu
U2Nyb2xsZXIuaW5pdCgnd3dTY2xjdGwwMF9jcGhDb250ZW50X2Z3RmVhdHVyZWRX
b3JsZHMnLFs2LDZdLDAuNSx0cnVlLGZhbHNlKTsvL11dPg0KPC9zY3JpcHQ+DQoN
CjxzY3JpcHQgc3JjPSIvanMvc29jaWFsX2ZlZWRzLmpzP3Y9MDkwMjEwMiIgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPSIvanMv
c29jaWFsX3dpZGdldHMuanM/dj0wOTAyMTAyIiB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPjwvc2NyaXB0Pg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0K
Ly88IVtDREFUQVsNCllBSE9PLndodC5Tb2NpYWxXaWRnZXRzLmluaXQoKTsvL11d
Pg0KPC9zY3JpcHQ+DQoNCjxkaXYgaWQ9ImN0bDAwX3BubFdIVEhlYWRlciI+DQoJ
DQogICAgPGRpdiBjbGFzcz0iaGVhZGVyQkciIGlkPSJoZWFkZXJXaWR0aCI+DQog
ICAgICAgIDxkaXYgaWQ9ImN0bDAwX3BubFRvcEFkQmFyIj4NCgkJPGRpdiBjbGFz
cz0iYWQ3Mjh0b3AiIGlkPSJhcGhfd2h0X2NsaXAtb2YtdGhlLWRheV90b3BfNzI4
eDkwIj4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFb
Cmdvb2dsZXRhZy5jbWQucHVzaChmdW5jdGlvbigpe2dvb2dsZXRhZy5kaXNwbGF5
KCdhcGhfd2h0X2NsaXAtb2YtdGhlLWRheV90b3BfNzI4eDkwJyk7fSk7Ci8vXV0+
PC9zY3JpcHQ+CjwvZGl2Pg0KCTwvZGl2Pg0KICAgICAgICA8ZGl2IGlkPSJoZWFk
ZXIiIGNsYXNzPSJyZWdpb25IZWFkZXIgZnVsbFdpZHRoIj4NCiAgICAgICAgICAg
IA0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VhcmNoQmFyIj4NCiAgICA8ZGl2
IGNsYXNzPSJzYkJHIj48L2Rpdj4NCiAgICA8aW5wdXQgbmFtZT0idHh0U2VhcmNo
IiBjbGFzcz0iaW5wdXRTZWFyY2hCYXIiIGlkPSJ0eHRTZWFyY2hCYXJJbnB1dCIg
dHlwZT0idGV4dCIgdmFsdWU9IlNlYXJjaCIgc3R5bGU9ImNvbG9yOiMzMzM7IiBv
bmZvY3VzPSJpZih0aGlzLnZhbHVlLnRvTG93ZXJDYXNlKCkudHJpbSgpPT0nc2Vh
cmNoJyl7dGhpcy52YWx1ZT0nJzt9ZWxzZXt0cnl7dGhpcy5zZWxlY3QoKTt9Y2F0
Y2goZSl7fX10aGlzLnN0eWxlLmNvbG9yPScjMDAwMDAwJzt0aGlzLnNldEF0dHJp
YnV0ZSgnYXV0b2NvbXBsZXRlJywnb2ZmJyk7IiBvbmJsdXI9ImlmKHRoaXMudmFs
dWUudG9Mb3dlckNhc2UoKS50cmltKCk9PSdzZWFyY2gnIHx8IHRoaXMudmFsdWUu
dG9Mb3dlckNhc2UoKS50cmltKCk9PScnKXt0aGlzLnZhbHVlPSdTZWFyY2gnO3Ro
aXMuc3R5bGUuY29sb3I9JyMzMzMnO30iIG9ua2V5cHJlc3M9ImlmKFlBSE9PLnV0
aWwuRXZlbnQuZ2V0Q2hhckNvZGUoZXZlbnQpPT0xMyl7dGhpcy5zVmFsPWRvY3Vt
ZW50LmZvcm1zWzBdLnR4dFNlYXJjaC52YWx1ZS50cmltKCk7IHRoaXMuc09wdGlv
biA9IGRvY3VtZW50LmZvcm1zWzBdLnNjdFNlYXJjaE9wdGlvbnMudmFsdWU7IGlm
ICh0aGlzLnNPcHRpb24gIT0gJycgJmFtcDsmYW1wOyB0aGlzLnNWYWwgIT0gJycg
JmFtcDsmYW1wOyB0aGlzLnNWYWwudG9Mb3dlckNhc2UoKSAhPSAnc2VhcmNoJykg
eyBkb2N1bWVudC5mb3Jtc1swXS5zdWJtaXQoKTt9ZWxzZXtZQUhPTy51dGlsLkV2
ZW50LnN0b3BFdmVudChldmVudCk7fX0iLz4NCiAgICA8YSBpZD0ic2VhcmNoQnV0
dG9uIiBocmVmPSJqYXZhc2NyaXB0Oi8vIFNlYXJjaCIgb25jbGljaz0iaWYoZG9j
dW1lbnQuZm9ybXNbMF0uc2N0U2VhcmNoT3B0aW9ucy52YWx1ZSA9PSAnJykgcmV0
dXJuOyB0aGlzLnNWYWw9ZG9jdW1lbnQuZm9ybXNbMF0udHh0U2VhcmNoLnZhbHVl
LnRyaW0oKTtpZih0aGlzLnNWYWwgIT0gJycgJmFtcDsmYW1wOyB0aGlzLnNWYWwu
dG9Mb3dlckNhc2UoKSAhPSAnc2VhcmNoJyl7dHJ5e2RvY3VtZW50LmZvcm1zWzBd
LmNoa1NlYXJjaENhdGVnb3J5LmNoZWNrZWQ9ZmFsc2U7fWNhdGNoKGVycil7fSBk
b2N1bWVudC5mb3Jtc1swXS5zdWJtaXQoKTt9IiA+PC9hPg0KPC9kaXY+DQoNCiAg
ICAgICAgICAgIA0KICAgICAgICAgICAgPGRpdiBpZD0ibG9nbyI+PGEgaHJlZj0i
LyIgcmVsPSJub2ZvbGxvdyI+PGltZyBzcmM9Ii9pbWFnZXMvd29uZGVyaG93dG9f
bG9nby5wbmciIGFsdD0iIiB3aWR0aD0iNDIwIiBoZWlnaHQ9IjYwIi8+PC9hPjwv
ZGl2Pg0KICAgICAgICAgICAgDQogICAgICAgICAgICA8IS0tIFN0YXJ0OiBTZWFy
Y2ggTWVudSAtIFNsaWRlcyBPcGVuIFdoZW4gQSBVc2VyIENsaWNrcyBJbiBUaGUg
U2VhcmNoIEJveCAtLT4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlYXJjaE1l
bnVzIGZ1bGxXaWR0aCI+DQogICAgPGRpdiBjbGFzcz0ic2VhcmNoTWVudSI+DQog
ICAgICAgIDxkaXYgY2xhc3M9InNtQ29udHJvbEJhciI+DQogICAgICAgICAgICA8
ZGl2IGNsYXNzPSJzZWFyY2hNZW51T3B0aW9ucyIgaWQ9InNlYXJjaE1lbnVPcHRp
b25zIj4NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIDwvZGl2Pg0KICAg
ICAgICAgICAgPHNwYW4gY2xhc3M9InNtQ2xvc2UiPsKrIFJldHVybiB0byBQYWdl
PC9zcGFuPg0KICAgICAgICA8L2Rpdj4NCiAgICAgICAgDQogICAgPC9kaXY+DQo8
L2Rpdj4NCiAgICAgICAgICAgIDwhLS0gRW5kOiBTZWFyY2ggTWVudSBNZW51IC0t
Pg0KICAgICAgICAgICAgDQogICAgICAgIDwvZGl2Pg0KICAgICAgICA8ZGl2IGlk
PSJuYXZNZW51cyIgY2xhc3M9InRvb2xCYXIiPg0KICAgICAgICAgICAgPGRpdiBj
bGFzcz0iZnVsbFdpZHRoIj4NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJuYXZCYXIiPjxhIGhyZWY9Imh0dHA6Ly93d3cud29u
ZGVyaG93dG8uY29tLyIgY2xhc3M9ImhvbWVUYWIgdGFiREQgdGlkSG9tZSBmaXJz
dEl0ZW0gYWN0aXZlIGhvbWVUYWIgdGFiREQgdGlkSG9tZUFjdGl2ZSBtdnRab25l
X1RvcE5hdkNsaWNrIj48c3Ryb25nPkhvbWU8L3N0cm9uZz48L2E+IDxlbT58IDwv
ZW0+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20vY2F0ZWdvcmll
cy8iIGNsYXNzPSJjYXRlZ29yaWVzVGFiIHRhYkREIHRpZENhdHMgbXZ0Wm9uZV9U
b3BOYXZDbGljayI+Q2F0ZWdvcmllczwvYT4gPGVtPnwgPC9lbT48YSBocmVmPSJo
dHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9jb21tdW5pdHkvIiBjbGFzcz0iY29t
bXVuaXR5VGFiIHRhYkREIHRpZENvbW11bml0eSBtdnRab25lX1RvcE5hdkNsaWNr
Ij5Db21tdW5pdHk8L2E+IDxlbT58IDwvZW0+PGEgaHJlZj0iaHR0cDovL3d3dy53
b25kZXJob3d0by5jb20vd29ybGRzLyIgY2xhc3M9Indvcmxkc1RhYiBtdnRab25l
X1RvcE5hdkNsaWNrIj5Xb3JsZHM8L2E+IDxlbT58IDwvZW0+PGEgaHJlZj0iaHR0
cDovL3d3dy53b25kZXJob3d0by5jb20vc3VibWl0LyIgcmVsPSJub2ZvbGxvdyIg
Y2xhc3M9InN1Ym1pdFRhYiBtdnRab25lX1RvcE5hdkNsaWNrIj5TdWJtaXQgJmFt
cDsgRWFybjwvYT4gPGRpdiBjbGFzcz0iY2IiPjwvZGl2PjwvZGl2Pg0KICAgICAg
ICAgICAgICAgIDxkaXYgaWQ9IndodERETWVudXMiPg0KICAgICAgICAgICAgICAg
ICAgICANCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2
Pg0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGlkPSJzdWJN
ZW51IiBjbGFzcz0iZnVsbFdpZHRoIj4NCiAgICAgICAgPGRpdiBjbGFzcz0iYnJl
YWRDcnVtYnMiPg0KICAgIDxkaXYgY2xhc3M9InN0YXRzIiBpZD0iY29va2llLWNy
dW1iIj4NCiAgICAgICAgPGEgaHJlZj0iLyI+SG93LVRvPC9hPiDCuyA8YSBocmVm
PSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS93b25kZXJtZW50LyI+V29uZGVy
bWVudCBCbG9nPC9hPiDCuyA8YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3Rv
LmNvbS93b25kZXJtZW50L2FydGlzdC13aXRoLWRlYXRoLXdpc2gtbm8tcGhvdG9z
aG9wLXVzZWQtMDExOTQ2MC8iPkFydGlzdCBXaXRoIERlYXRoIFdpc2ggKE5vIFBo
b3Rvc2hvcCBVc2VkKTwvYT4NCiAgICA8L2Rpdj4NCjwvZGl2Pg0KICAgICAgICAN
CjxkaXYgY2xhc3M9InRpY2tlciI+DQoJPGVtPjxhIGhyZWY9Ii9jb21tdW5pdHkv
b25saW5lLW5vdy8iIHJlbD0ibm9mb2xsb3ciPjYyNDQgT25saW5lPC9hPiB8IDxh
IGhyZWY9Ii9jb21tdW5pdHkvbmV3Ymllcy8iIHJlbD0ibm9mb2xsb3ciPjIzMyBK
b2luZWQgVG9kYXk8L2E+PC9lbT4KPC9kaXY+DQogICAgICAgIA0KICAgICAgICA8
ZGl2IGNsYXNzPSJsb2dpblN0YXRlIj4NCiAgICAgICAgICAgIA0KDQo8ZGl2IGNs
YXNzPSJGQkNvbm5lY3QiPg0KICAgIDxkaXYgaWQ9ImZiLXJvb3QiPjwvZGl2Pg0K
ICAgIA0KICAgIA0KICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4v
LzwhW0NEQVRBWw0KICAgICAgICBkb2N1bWVudC53cml0ZSgnPGZiOmxvZ2luLWJ1
dHRvbiBzaXplPSJzbWFsbCIgbGVuZ3RoPSJzaG9ydCIgYXV0b2xvZ291dGxpbms9
InRydWUiIHBlcm1zPSJlbWFpbCx1c2VyX2JpcnRoZGF5LHB1Ymxpc2hfc3RyZWFt
LHNoYXJlX2l0ZW0iIHY9IjIiPicgKw0KICAgICAgICAgICAgJ0xvZ2luIHdpdGgg
RmFjZWJvb2snICsNCiAgICAgICAgJzwvZmI6bG9naW4tYnV0dG9uPicpOw0KICAg
IC8vXV0+PC9zY3JpcHQ+DQogICAgDQogICAgDQo8L2Rpdj4NCiAgICAgICAgICAg
IA0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9naW5TdGF0dXMiPjxhIGhyZWY9
ImphdmFzY3JpcHQ6dm9pZCgwKTsiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJsb2dp
bkxpbmsiPkxvZyBJbjwvYT4gfCA8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7
IiByZWw9Im5vZm9sbG93IiBjbGFzcz0ic2lnbnVwTGluayI+U2lnbiBVcDwvYT48
L2Rpdj4NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2Ii
PjwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCg0KPC9kaXY+DQoN
CjxkaXYgY2xhc3M9ImZ1bGxXaWR0aCIgaWQ9InBhZ2VCb2R5Ij4NCiAgICANCiAg
ICANCiAgICA8ZGl2IGlkPSJ0bEFuY2hvciIgY2xhc3M9ImZ1bGxXaWR0aCByZWdp
b25IZWFkZXIiPjwvZGl2Pg0KICAgIA0KICAgIDxkaXYgY2xhc3M9InBhZ2VDb250
ZW50Ij4NCiAgICAgICAgDQogICAgDQogICAgICAgICAgICANCiAgICA8ZGl2IGNs
YXNzPSJjb250ZW50NjQ0IHdvbmRlclBvc3QiPg0KICAgICAgICANCiAgICAgICAg
DQogICAgICAgIDxkaXYgaWQ9ImN0bDAwX2NwaENvbnRlbnRfcG5sQXJ0aWNsZVBh
Z2UiPg0KCQ0KICAgICAgICAgICAgDQo8ZGl2IGNsYXNzPSJ0b3BBcnRpY2xlcyB0
b3BUb3BBcnRpY2xlcyI+DQogICAgDQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0
b3BBcnRpY2xlIGlzRmlyc3QiPg0KICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cud29u
ZGVyaG93dG8uY29tL3dvbmRlcm1lbnQvZGl5LWJsb3ctbWUtYnJlYXRoYWx5emVy
LW1ha2VzLWZvci1mdW4tcGFydHktZ2FtZS0wMTE5MDc2LyIgcmVsPSJub2ZvbGxv
dyI+PGltZyBzcmM9Imh0dHA6Ly9pbWcud29uZGVyaG93dG8uY29tL2ltYWdlcy9n
ZngvZ2FsbGVyeS9hNjM0MTgwNzk4NzQ1MzE2NzAxLmpwZyIgd2lkdGg9IjE3MSIg
aGVpZ2h0PSI4MCIgYWx0PSIiLz48L2E+DQogICAgPHNwYW4+PGEgaHJlZj0iaHR0
cDovL3d3dy53b25kZXJob3d0by5jb20vd29uZGVybWVudC9kaXktYmxvdy1tZS1i
cmVhdGhhbHl6ZXItbWFrZXMtZm9yLWZ1bi1wYXJ0eS1nYW1lLTAxMTkwNzYvIj5E
SVkgJnF1b3Q7QmxvdyBNZSZxdW90OyBCcmVhdGhhbHl6ZXIgTWFrZXMgRm9yIGEg
RnVuIFBhcnR5IEdhbWU8L2E+PC9zcGFuPg0KPC9kaXY+DQoNCiAgICAgICAgDQog
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b3BBcnRpY2xlIj4NCiAgICA8YSBocmVm
PSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS93b25kZXJtZW50L2hhbmQtZnVs
bHktc3VibWVyZ2VkLWxpcXVpZC1uaXRyb2dlbi1vdWNoLXJpZ2h0LTAxMTk1Nzcv
IiByZWw9Im5vZm9sbG93Ij48aW1nIHNyYz0iaHR0cDovL2ltZy53b25kZXJob3d0
by5jb20vaW1hZ2VzL2dmeC9nYWxsZXJ5L2E2MzQxODg3ODE2MDM2MzM3MzIuanBn
IiB3aWR0aD0iMTcxIiBoZWlnaHQ9IjgwIiBhbHQ9IiIvPjwvYT4NCiAgICA8c3Bh
bj48YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS93b25kZXJtZW50
L2hhbmQtZnVsbHktc3VibWVyZ2VkLWxpcXVpZC1uaXRyb2dlbi1vdWNoLXJpZ2h0
LTAxMTk1NzcvIj5IYW5kIEZ1bGx5IFN1Ym1lcmdlZCBpbiBMaXF1aWQgTml0cm9n
ZW4gKE9VQ0guLi4gcmlnaHQ/KTwvYT48L3NwYW4+DQo8L2Rpdj4NCg0KICAgICAg
ICANCiAgICAgICAgICAgIA0KICAgICAgICANCiAgICAgICAgICAgIDxkaXYgY2xh
c3M9InRvcEFydGljbGUiPg0KICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cud29uZGVy
aG93dG8uY29tL3dvbmRlcm1lbnQvc3BlZWRpbmctYnVsbGV0LXZzLXNpbmdsZS1k
cm9wLXdhdGVyLTAxMTk2MTcvIiByZWw9Im5vZm9sbG93Ij48aW1nIHNyYz0iaHR0
cDovL2ltZy53b25kZXJob3d0by5jb20vaW1hZ2VzL2dmeC9nYWxsZXJ5L2E2MzQx
ODk0MTYxMzIyNTU3OTYuanBnIiB3aWR0aD0iMTcxIiBoZWlnaHQ9IjgwIiBhbHQ9
IiIvPjwvYT4NCiAgICA8c3Bhbj48YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhv
d3RvLmNvbS93b25kZXJtZW50L3NwZWVkaW5nLWJ1bGxldC12cy1zaW5nbGUtZHJv
cC13YXRlci0wMTE5NjE3LyI+U3BlZWRpbmcgQnVsbGV0IFZzLiBhIFNpbmdsZSBE
cm9wIG9mIFdhdGVyPC9hPjwvc3Bhbj4NCjwvZGl2Pg0KDQogICAgICAgIA0KICAg
ICAgICAgICAgDQogICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgIA0KICAg
ICAgICAgICAgDQogICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgIA0KICAg
ICAgICAgICAgDQogICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgIA0KICAg
IDxkaXYgY2xhc3M9ImNiIj48L2Rpdj4NCjwvZGl2Pg0KICAgICAgICAgICAgDQog
ICAgICAgICAgICA8IS0tIGdvb2dsZV9hZF9zZWN0aW9uX3N0YXJ0IC0tPg0KICAg
ICAgICAgICAgDQogICAgICAgICAgICA8ZGl2IGlkPSJjdGwwMF9jcGhDb250ZW50
X2NoSGVhZGVyX3BubENvbnRlbnRIZWFkZXIiIGNsYXNzPSJjb250ZW50SGVhZGVy
Ij4NCgkJDQogICAgDQogICAgPGgxPjxzcGFuIGNsYXNzPSJobFR4dCI+PGEgaHJl
Zj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20vd29uZGVybWVudC9hcnRpc3Qt
d2l0aC1kZWF0aC13aXNoLW5vLXBob3Rvc2hvcC11c2VkLTAxMTk0NjAvIj5BcnRp
c3QgV2l0aCBEZWF0aCBXaXNoIChObyBQaG90b3Nob3AgVXNlZCk8L2E+PC9zcGFu
PjwvaDE+DQogICAgPGRpdiBpZD0iY3RsMDBfY3BoQ29udGVudF9jaEhlYWRlcl9w
bmxUYWdzIj4NCgkJCQ0KICAgICAgICA8ZGl2IGNsYXNzPSJ0YWdzIiBpZD0iY3Rs
MDBfY3BoQ29udGVudF9jaEhlYWRlciI+DQogICAgICAgICAgICA8c3BhbiBjbGFz
cz0ibGFiZWwiPkhvdy1UbyBUb3BpY3M8L3NwYW4+IMK7IDxzcGFuIGNsYXNzPSJs
YWJlbCI+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20vdG9waWMv
bGktd2VpLyI+TGkgV2VpPC9hPiwgPGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJo
b3d0by5jb20vdG9waWMvbGktd2VpLWFydGlzdC8iPkxpIFdlaSBhcnRpc3Q8L2E+
LCA8YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS90b3BpYy9wZXJm
b3JtYW5jZS1hcnQvIj5wZXJmb3JtYW5jZSBhcnQ8L2E+PC9zcGFuPg0KICAgICAg
ICA8L2Rpdj4NCiAgICANCgkJPC9kaXY+DQoNCgk8L2Rpdj4NCg0KICAgICAgICAg
ICAgDQogICAgICAgICAgICANCg0KPGRpdiBjbGFzcz0iY29udGVudFRvb2xiYXIi
Pg0KICAgIDxiIGNsYXNzPSJyIj48L2I+PHUgY2xhc3M9ImwiPjwvdT4NCiAgICAN
CiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICANCiAgICAgPGEgaHJl
Zj0iamF2YXNjcmlwdDovLyBJIExpa2UgVGhpcyEiIGNsYXNzPSJidG5HUkdSIGJ0
bjIyIGJ0blRVIGNvbnRlbnRBY3Rpb25MaWtlIGFydGljbGVJRDExOTQ2MCIgcmVs
PSJub2ZvbGxvdyI+PGk+PC9pPg0KPGVtPkkgTGlrZSBUaGlzITwvZW0+DQo8L2E+
IA0KICAgICA8YSBocmVmPSJqYXZhc2NyaXB0Oi8vIEkgRG9uJ3QgTGlrZSBUaGlz
ISIgY2xhc3M9ImJ0bkdSR1IgYnRuMjIgYnRuVEQgY29udGVudEFjdGlvbkRpc2xp
a2UgYXJ0aWNsZUlEMTE5NDYwIiByZWw9Im5vZm9sbG93Ij48aT48L2k+DQo8ZW0+
SSBEb24ndCBMaWtlIFRoaXMhPC9lbT4NCjwvYT4gDQogICAgIDxhIGhyZWY9Imph
dmFzY3JpcHQ6Ly8gQWRkIHRvIEZhdm9yaXRlcyIgY2xhc3M9ImJ0bkdSR1IgYnRu
MjIgYnRuRlYgdmlkZW9BY3Rpb25GYXZvcml0ZSBhcnRpY2xlSUQxMTk0NjAiIHJl
bD0ibm9mb2xsb3ciPjxpPjwvaT4NCjxlbT5BZGQgdG8gRmF2b3JpdGVzPC9lbT4N
CjwvYT4gDQogICAgDQogICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6Ly8gRmxhZyBU
aGlzIiBjbGFzcz0iYnRuR1JHUiBidG4yMiBidG5GRyBidG5GUiB2aWRlb0FjdGlv
bkZsYWcgaGlkZUFsbEZpcnN0IHRvZ2dsZUNvbnRlbnRBY3Rpb24gZWxlbWVudF9m
bGFnVmlkZW9Db250ZW50IGFydGljbGVJRDExOTQ2MCIgcmVsPSJub2ZvbGxvdyI+
PGk+PC9pPg0KPGVtPkZsYWcgVGhpczwvZW0+DQo8L2E+IA0KICAgIA0KICAgIA0K
ICAgIA0KICAgIA0KICAgIA0KICAgIA0KICAgICA8YSBocmVmPSJodHRwOi8vd3d3
LndvbmRlcmhvd3RvLmNvbS93b25kZXJtZW50L2FydGlzdC13aXRoLWRlYXRoLXdp
c2gtbm8tcGhvdG9zaG9wLXVzZWQtMDExOTQ2MC9oaXN0b3J5LyIgY2xhc3M9ImJ0
bkdSR1IgYnRuSDIwIGJ0bkFXIGJ0bkZSIGhpc3RvcnkiIHJlbD0ibm9mb2xsb3ci
PjxpPjwvaT4NCjxlbT5ISVNUT1JZPC9lbT4NCjwvYT4gDQogICAgIDxhIGhyZWY9
Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL3dvbmRlcm1lbnQvYXJ0aXN0LXdp
dGgtZGVhdGgtd2lzaC1uby1waG90b3Nob3AtdXNlZC0wMTE5NDYwLyNjb250ZW50
Q29tbWVudHMiIGNsYXNzPSJidG5HUkdSIGJ0bkgyMCBidG5BVyBidG5GUiBjb21t
ZW50cyIgcmVsPSJub2ZvbGxvdyI+PGk+PC9pPg0KPGVtPkNPTU1FTlRTICg1KTwv
ZW0+DQo8L2E+IA0KICAgICA8YSBocmVmPSJqYXZhc2NyaXB0Oi8vIFNIQVJFIiBj
bGFzcz0iYnRuR1JHUiBidG5IMjAgYnRuQVcgYnRuU0hSIGJ0bkNvbWIgYnRuRlIg
dmlkZW9BY3Rpb25TaGFyZSBoaWRlQWxsRmlyc3QgdG9nZ2xlQ29udGVudEFjdGlv
biBlbGVtZW50X3NoYXJlVmlkZW9JbnRlcm5hbCBhcnRpY2xlSUQxMTk0NjAiIHJl
bD0ibm9mb2xsb3ciPjxpPjwvaT4NCjx1PlNIQVJFPC91PjxlbT48L2VtPg0KPC9h
PiANCiAgICA8c3BhbiBpZD0iY3RsMDBfY3BoQ29udGVudF9jdENvbnRlbnRUb29s
YmFyX3NwYW5WaWV3cyIgY2xhc3M9InZpZXdzIj4xMiwzODUgdmlld3M8L3NwYW4+
DQogICAgDQogICAgPGRpdiBjbGFzcz0iY2IiPjwvZGl2Pg0KPC9kaXY+DQoNCg0K
DQoNCjxkaXYgY2xhc3M9InZpZGVvQWN0aW9uQXJlYSB0b3BQYWQiPg0KICAgIDxk
aXYgY2xhc3M9ImxvYWRpbmdWaWRlb0FjdGlvbnMiPjwvZGl2Pg0KPC9kaXY+DQo8
ZGl2IGNsYXNzPSJjYiI+PC9kaXY+DQogICAgICAgICAgICANCiAgICAgICAgICAg
IA0KDQo8ZGl2IGNsYXNzPSJhcnRpY2xlQ2FyZCBzaENvbnRlbnQgYXJ0aWNsZVdP
RCI+DQogICAgPGRpdiBpZD0iY3RsMDBfY3BoQ29udGVudF9hY0FydGljbGVDYXJk
X3BubEFydGljbGVJbWciIGNsYXNzPSJhcnRpY2xlSW1nIj4NCgkJPGltZyBpZD0i
aW1nQXJ0aWNsZUxhcmdlSW1hZ2UiIHNyYz0iaHR0cDovL2ltZy53b25kZXJob3d0
by5jb20vaW1hZ2VzL2dmeC9nYWxsZXJ5L2E2MzQxODg1NjcxNTAyMzk5NTguanBn
IiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjE0MCIgYWx0PSJBcnRpc3QgV2l0aCBEZWF0
aCBXaXNoIChObyBQaG90b3Nob3AgVXNlZCkiLz4NCgk8L2Rpdj4NCiAgICA8ZGl2
IGNsYXNzPSJwYWQxMCI+DQogICAgICAgIDxkaXYgaWQ9ImN0bDAwX2NwaENvbnRl
bnRfYWNBcnRpY2xlQ2FyZF9wbmxBdXRob3JJbWFnZSIgY2xhc3M9ImF1dGhvcklt
ZyI+DQoJCTxpbWcgc3JjPSJodHRwOi8vaW1nLndvbmRlcmhvd3RvLmNvbS91c2Vy
aW1hZ2VzLzYzNDA5OTYxODY2MTAxMDY1MWwuanBnIiB3aWR0aD0iMTA1IiBoZWln
aHQ9IjE0MCIgYWx0PSIiLz4NCgk8L2Rpdj4NCiAgICAgICAgPHNwYW4gaWQ9ImN0
bDAwX2NwaENvbnRlbnRfYWNBcnRpY2xlQ2FyZF9zcG5BdXRob3JDcmVkaXQiIGNs
YXNzPSJhdXRob3JDcmVkaXQiPg0KICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imxh
YmVsIj5Xcml0dGVuIEJ5PC9zcGFuPjxiciAvPg0KICAgICAgICAgICAgPGEgaHJl
Zj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20vY29tbXVuaXR5L21lbWJlci9y
bWFuc3VyLyIgcmVsPSJub2ZvbGxvdyI+PHN0cm9uZz5ybWFuc3VyPC9zdHJvbmc+
PC9hPjxiciAvPg0KICAgICAgICAgICAgPGEgaWQ9ImN0bDAwX2NwaENvbnRlbnRf
YWNBcnRpY2xlQ2FyZF9sbmtNZW1iZXJMaW5rIiBocmVmPSJodHRwOi8vY2FrZXMt
Y2FrZXMtY2FrZXMud29uZGVyaG93dG8uY29tLyI+Y2FrZXMtY2FrZXMtY2FrZXMu
d29uZGVyaG93dG8uY29tPC9hPg0KICAgICAgICAgICAgDQogICAgICAgIDwvc3Bh
bj4NCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICA8c3BhbiBjbGFzcz0icnNz
Ij4NCiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCI+U3Vic2NyaWJlIHRv
IHRoZSBXb25kZXJtZW50IDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2ZlZWRzMi5m
ZWVkYnVybmVyLmNvbS9Xb25kZXJIb3dUby9Xb25kZXJPZlRoZURheSI+UlNTIEZl
ZWQ8L2E+IDxzcGFuIGNsYXNzPSJsYWJlbCI+b3IgZ2V0PC9zcGFuPiA8YSBocmVm
PSJodHRwOi8vZmVlZGJ1cm5lci5nb29nbGUuY29tL2ZiL2EvbWFpbHZlcmlmeT91
cmk9V29uZGVySG93VG8vV29uZGVyT2ZUaGVEYXkmYW1wO2xvYz1lbl9VUyIgdGFy
Z2V0PSJfYmxhbmsiPkVtYWlsIFVwZGF0ZXM8L2E+PGJyLz4NCiAgICAgICAgICAg
IA0KICAgICAgICAgICAgDQogICAgICAgIDwvc3Bhbj4NCiAgICAgICAgDQogICAg
ICAgIDxzcGFuIGNsYXNzPSJzdGF0cyI+DQogICAgICAgICAgICANCiAgICAgICAg
ICAgIDxzcGFuIGNsYXNzPSJsYWJlbCI+UHVibGlzaGVkPC9zcGFuPiAyIGRheXMg
YWdvPGJyIC8+DQogICAgICAgICAgICANCiAgICAgICAgPC9zcGFuPg0KICAgICAg
ICA8ZGl2IGNsYXNzPSJjYiI+PC9kaXY+DQogICAgPC9kaXY+DQo8L2Rpdj4NCiAg
ICAgICAgICAgIA0KICAgICAgICAgICAgDQoNCjxkaXYgY2xhc3M9Inl1aS1za2lu
LXNhbSI+DQogICAgDQogICAgPGRpdiBjbGFzcz0iYXJ0aWNsZU1hcmdpbnMgYXJ0
aWNsZVBhZ2UiPg0KICAgICAgICANCiAgICANCiAgICAgICAgPGRpdiBjbGFzcz0i
ZG9jWEVkaXRvciIgaWQ9ImlkMTU1MTA1MzIiPjxkaXYgY2xhc3M9InRleHRCbG9j
ayI+PHA+SXQgaXMgY29uY2VpdmFibGUgdGhhdCBDaGluZXNlIGFydGlzdCA8YSAg
cmVsPSJub2ZvbGxvdyIgaHJlZj0iaHR0cDovL3d3dy5saXdlaWFydC5jb20vIiB0
YXJnZXQ9Il9ibGFuayI+TGVpIFdlaTwvYT4gaGFzIGFsd2F5cyBkcmVhbXQgb2Yg
YmVpbmcgYSBzdXBlcmhlcm8uIE9yIHRoYXQgaGUgc2ltcGx5IGhhcyB0aGUgZGVz
aXJlIHRvIGZseS4gT3IgbWF5YmUgaGUgaXMgY29uc3RhbnRseSBjb25mcm9udGlu
ZyBhIGZlYXIgb2YgaGVpZ2h0cy4gV2hhdGV2ZXIgdGhlIGltcGV0dXMgb2YgaGlz
IHdvcmsgbWF5IGJlLCBXZWkgY3JlYXRlcyBpbGx1c2lvbnMgb2YgYSBkYW5nZXJv
dXMgInJlYWxpdHkiLiA8L3A+PHA+PGltZyBhbHQ9IiIgc3JjPSJodHRwOi8vaW1n
LndvbmRlcmhvd3RvLmNvbS9pbWFnZXMvZ2Z4L2dhbGxlcnkvNjM0MTg4NTQyNzUw
Mzk2NDkwLmpwZyIgY2xhc3M9ImltZ0NlbnRlciBpbWdDZW50ZXJGdWxsICIgaGVp
Z2h0PSI0MDAiIHdpZHRoPSIzOTUiIC8+PC9wPjxwPkJ1dCB3aGF0IGlzIHBlcmhh
cHMgbW9zdCBpbnRlcmVzdGluZyBpcyB0aGF0IFdlaSdzIHJlc3VsdGluZyBpbWFn
ZXMgYXJlIGluIGZhY3QgTk9UIHBob3RvIG1vbnRhZ2VzOiAiPGVtPkxpIFdlaSB3
b3JrcyB3aXRoIHRoZSBoZWxwIG9mIHByb3BzIHN1Y2ggYXMgbWlycm9yLCBtZXRh
bCB3aXJlcywgc2NhZmZvbGRpbmcgYW5kIGFjcm9iYXRpY3MuPC9lbT4iIDwvcD48
cD5XaHkgbm90IGp1c3QgbWFrZSBhIHBob3RvIG1vbnRhZ2U/IFdoeSBtdXN0IGl0
IGJlIGEgInRydWUiIHJlZW5hY3RtZW50PzwvcD48cD48aW1nIGFsdD0iIiBzcmM9
Imh0dHA6Ly9pbWcud29uZGVyaG93dG8uY29tL2ltYWdlcy9nZngvZ2FsbGVyeS82
MzQxODg1NDM0MTQ3ODQyNDYuanBnIiBjbGFzcz0iaW1nQ2VudGVyIGltZ0NlbnRl
ckZ1bGwgIiBoZWlnaHQ9IjUwMCIgd2lkdGg9IjUwMCIgLz48L3A+PHA+PGltZyBh
bHQ9IiIgc3JjPSJodHRwOi8vaW1nLndvbmRlcmhvd3RvLmNvbS9pbWFnZXMvZ2Z4
L2dhbGxlcnkvNjM0MTg4NTQ0Njc4NDAyMjU3LmpwZyIgY2xhc3M9Imhhc0xhcmdl
IGltZ0NlbnRlciBpbWdDZW50ZXJGdWxsICIgaGVpZ2h0PSIzOTUiIHdpZHRoPSI1
OTIiIC8+PC9wPjxwPjxpbWcgYWx0PSIiIHNyYz0iaHR0cDovL2ltZy53b25kZXJo
b3d0by5jb20vaW1hZ2VzL2dmeC9nYWxsZXJ5LzYzNDE4ODU0NDk3NjUzMjk4MS5q
cGciIGNsYXNzPSJpbWdDZW50ZXIgaW1nQ2VudGVyRnVsbCAiIGhlaWdodD0iNTAw
IiB3aWR0aD0iNTAwIiAvPjwvcD48cD48aW1nIGFsdD0iIiBzcmM9Imh0dHA6Ly9p
bWcud29uZGVyaG93dG8uY29tL2ltYWdlcy9nZngvZ2FsbGVyeS82MzQxODg1NDYx
NTI0OTMwNTkuanBnIiBjbGFzcz0iaW1nQ2VudGVyIGltZ0NlbnRlckZ1bGwgIiBo
ZWlnaHQ9IjUwMCIgd2lkdGg9IjUwMSIgLz48L3A+PHA+PGltZyBhbHQ9IiIgc3Jj
PSJodHRwOi8vaW1nLndvbmRlcmhvd3RvLmNvbS9pbWFnZXMvZ2Z4L2dhbGxlcnkv
NjM0MTg4NTUxNjE5MTYwNTE3LmpwZyIgY2xhc3M9ImltZ0NlbnRlciBpbWdDZW50
ZXJGdWxsICIgaGVpZ2h0PSI1MDAiIHdpZHRoPSI1MDAiIC8+PC9wPjxwPjxpbWcg
YWx0PSIiIHNyYz0iaHR0cDovL2ltZy53b25kZXJob3d0by5jb20vaW1hZ2VzL2dm
eC9nYWxsZXJ5LzYzNDE4ODU0NjI5NTMwODMwMS5qcGciIGNsYXNzPSJoYXNMYXJn
ZSBpbWdDZW50ZXIgaW1nQ2VudGVyRnVsbCAiIGhlaWdodD0iMzk0IiB3aWR0aD0i
NTkyIiAvPjwvcD48cD48aW1nIGFsdD0iIiBzcmM9Imh0dHA6Ly9pbWcud29uZGVy
aG93dG8uY29tL2ltYWdlcy9nZngvZ2FsbGVyeS82MzQxODg1NTIyMzUyNjYwOTYu
anBnIiBjbGFzcz0iaW1nQ2VudGVyIGltZ0NlbnRlckZ1bGwgIiBoZWlnaHQ9IjQ3
NiIgd2lkdGg9IjUwMCIgLz48L3A+PHA+PGltZyBhbHQ9IiIgc3JjPSJodHRwOi8v
aW1nLndvbmRlcmhvd3RvLmNvbS9pbWFnZXMvZ2Z4L2dhbGxlcnkvNjM0MTg4NTUx
ODkwNzI4MjMxLmpwZyIgY2xhc3M9ImltZ0NlbnRlciBpbWdDZW50ZXJGdWxsICIg
aGVpZ2h0PSI0OTkiIHdpZHRoPSI1NjAiIC8+PC9wPjxwPjxpbWcgYWx0PSIiIHNy
Yz0iaHR0cDovL2ltZy53b25kZXJob3d0by5jb20vaW1hZ2VzL2dmeC9nYWxsZXJ5
LzYzNDE4ODU2MjIwNjM5NTAzOC5qcGciIGNsYXNzPSJoYXNMYXJnZSBpbWdDZW50
ZXIgaW1nQ2VudGVyRnVsbCAiIGhlaWdodD0iMjIyIiB3aWR0aD0iNTkyIiAvPjwv
cD48cD48aW1nIGFsdD0iIiBzcmM9Imh0dHA6Ly9pbWcud29uZGVyaG93dG8uY29t
L2ltYWdlcy9nZngvZ2FsbGVyeS82MzQxODg1NjI1MDkzNjk2MDUuanBnIiBjbGFz
cz0iaW1nQ2VudGVyIGltZ0NlbnRlckZ1bGwgIiBoZWlnaHQ9IjQ5OSIgd2lkdGg9
IjU0OSIgLz48L3A+PHA+PGltZyBhbHQ9IiIgc3JjPSJodHRwOi8vaW1nLndvbmRl
cmhvd3RvLmNvbS9pbWFnZXMvZ2Z4L2dhbGxlcnkvNjM0MTg4NTYzNjc2NDIzMjYy
LmpwZyIgY2xhc3M9ImltZ0NlbnRlciBpbWdDZW50ZXJGdWxsICIgaGVpZ2h0PSI1
MDAiIHdpZHRoPSI0OTIiIC8+PC9wPjx1bD48bGk+PGEgIHJlbD0ibm9mb2xsb3ci
IGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL3dvbmRlcm1lbnQvY2Fp
LWd1by1xaWFuZ3MtbGl0ZXJhbGx5LWV4cGxvc2l2ZS1hcnQtMDExMzU1Ni8iIHRh
cmdldD0iX2JsYW5rIj5QcmV2aW91c2x5LCBDYWkgR3VvLVFpYW5nJ3MgKExpdGVy
YWxseSkgRXhwbG9zaXZlIEFydC48L2E+PC9saT48L3VsPjxzcGFuIGNsYXNzPSJj
YiI+PC9zcGFuPjwvZGl2PjwvZGl2Pg0KDQo8ZGl2IGlkPSJhcnRpY2xlTm90aWZp
Y2F0aW9uIj48L2Rpdj4NCg0KDQoNCiAgICA8L2Rpdj4NCiAgICANCiAgICAgPHA+
VmlhIDxhIGhyZWY9Imh0dHA6Ly93d3cubGl3ZWlhcnQuY29tLyIgdGFyZ2V0PSJf
YmxhbmsiPmxpd2VpYXJ0PC9hPjwvcD4gDQogICAgDQogICAgPGRpdiBjbGFzcz0i
YXJ0aWNsZUNvbnRyb2xzIj4NCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICAN
CiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAgICAg
IA0KICAgICAgICA8ZGl2IGNsYXNzPSJjYiI+PC9kaXY+DQogICAgPC9kaXY+DQog
ICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQo8L2Rpdj4NCiAgICAg
ICAgICAgIA0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAg
IDx1bCBjbGFzcz0iYXJ0aWNsZVByZXZOZXh0Ij4NCgkJPGxpIGNsYXNzPSJwcmV2
Ij7CqyBQcmV2aW91cyBXb25kZXJtZW50IDxici8+Jm5ic3A7PGEgaHJlZj0iaHR0
cDovL3d3dy53b25kZXJob3d0by5jb20vd29uZGVybWVudC93b3JsZHMtZmlyc3Qt
Y2FyLWxvb2tzLWxpa2UtYmlrZS1hbmQtcnVucy1maXJlLTAxMTk1NTgvIj5Xb3Js
ZCdzIEZpcnN0ICZxdW90O0NhciZxdW90OyBMb29rcyBMaWtlIGEgQmlrZSBhbmQg
UnVucyBvbiBGaXJlPC9hPjwvbGk+PGxpIGNsYXNzPSJuZXh0Ij5OZXh0IFdvbmRl
cm1lbnQgwrsgPGJyLz4mbmJzcDs8YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhv
d3RvLmNvbS93b25kZXJtZW50L3dvbmRlci1zdG92ZS1hbGxvd3MteW91LWNvb2st
MTUtdGhpbmdzLWluc3RlYWQtNC0wMTE5NTY1LyI+V29uZGVyIFN0b3ZlIEFsbG93
cyBZb3UgdG8gQ29vayAxNSBUaGluZ3MgSW5zdGVhZCBvZiA0PC9hPjwvbGk+DQoJ
PC91bD4NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2Ii
PjwvZGl2Pg0KICAgICAgICAgICAgDQogICAgICAgICAgICANCiAgICAgICAgICAg
IA0KICAgICAgICAgICAgPGEgbmFtZT0iY29udGVudENvbW1lbnRzIj48L2E+DQog
ICAgICAgICAgICANCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmcgbm9C
RyI+DQogICAgDQogICAgPGgyIGNsYXNzPSJoZWFkbGluZSI+Q29tbWVudHM8L2gy
PjxkaXYgY2xhc3M9ImNiIj48L2Rpdj4NCiAgICANCiAgICANCjwvZGl2Pg0KICAg
ICAgICAgICAgDQogICAgICAgICAgICANCjxkaXYgY2xhc3M9ImFydGljbGVDb21t
ZW50cyI+DQogICAgPGRpdiBjbGFzcz0iY29tbWVudHNMaXN0Ij4NCiAgICA8YSBp
ZD0iY29tbWVudHMiPjwvYT4NCiAgICANCiAgICA8ZGl2IGNsYXNzPSJjb21tZW50
IiBzdHlsZT0icGFkZGluZy1sZWZ0OiAwcHg7Ij4NCiAgICA8YSBpZD0iY29tbWVu
dC05MTU1Ij48L2E+DQogICAgPGRpdiBjbGFzcz0iY29tbWVudFVzZXJJY29uIGNv
bW1lbnRJbmRlbnQgY2FzY2FkZUxldmVsMSI+DQogICAgICAgIDxzcGFuIGNsYXNz
PSJzbG5rIGxua2h0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2NvbW11bml0eS9t
ZW1iZXIvc2NoYW8vIj48aW1nIHNyYz0iaHR0cDovL2ltZy53b25kZXJob3d0by5j
b20vdXNlcmltYWdlcy82MzMzMjMyNDMyNzcxOTg1OTRsLmpwZyIgY2xhc3M9IiIg
d2lkdGg9IjQ5IiBoZWlnaHQ9IjY2IiBib3JkZXI9IjAiIGFsdD0iIiAvPjwvc3Bh
bj4NCiAgICA8L2Rpdj4NCiAgICANCiAgICA8ZGl2IGNsYXNzPSJib3ggYm94U3Ry
b2tlIHVzZXJDb21tZW50Qm9keSByc2giPg0KCQkNCiAgICAgICAgPGRpdiBjbGFz
cz0iYm9keVNheSI+PC9kaXY+DQogICAgICAgIDxkaXYgY2xhc3M9InBhZCI+DQog
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb21tZW50TWFpblNlY3Rpb24iPg0KICAg
ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbW1lbnRIZWFkZXIiPiAgIA0KICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJjdGwwMF9jcGhDb250ZW50X2FjQ29t
bWVudHNfY2xDb21tZW50c19ycHRDb21tZW50c19jdGwwMF9jX2RzU2hhZG93X3Bu
bENvbW1lbnRWb3RlcyIgY2xhc3M9ImNvbW1lbnRWb3RlcyI+DQoJCQkNCiAgICAg
ICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb21tZW50U2NvcmUgY29t
bWVudDkxNTUgY29tbWVudFNjb3JlUG9zaXRpdmUiPisxPC9zcGFuPg0KICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iIj4NCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDovLyAiIGNsYXNzPSJi
dG5SUiBidG4xNiBidG5JTiBidG5GUiBidXR0b25Eb3duIGFydGljbGVJRDExOTQ2
MCBjb21tZW50SUQ5MTU1IiByZWw9Im5vZm9sbG93Ij48aT48L2k+DQo8ZW0+PC9l
bT4NCjwvYT4gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9
ImphdmFzY3JpcHQ6Ly8gIiBjbGFzcz0iYnRuR0cgYnRuMTYgYnRuSVUgYnRuRlIg
YnV0dG9uVXAgYXJ0aWNsZUlEMTE5NDYwIGNvbW1lbnRJRDkxNTUiIHJlbD0ibm9m
b2xsb3ciPjxpPjwvaT4NCjxlbT48L2VtPg0KPC9hPiANCiAgICAgICAgICAgICAg
ICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICANCgkJPC9kaXY+
DQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbG5rIGxua2h0dHA6
Ly93d3cud29uZGVyaG93dG8uY29tL2NvbW11bml0eS9tZW1iZXIvc2NoYW8vIHVj
c0dyZWF0Ij48c3BhbiBjbGFzcz0idXNlck5hbWUiPnN0ZXBoZW48L3NwYW4+PC9z
cGFuPiA8c3BhbiBjbGFzcz0idXNlckNvbW1lbnRTY29yZSB1Y3NVc2VySUQxOSB1
Y3NHcmVhdCI+KDI3KTwvc3Bhbj4gPHNwYW4gY2xhc3M9InRpbWVTdGFtcCIgdGl0
bGU9IjIgZGF5cyBhZ28iPjgvMzEvMTAgMTI6MzEgUE08L3NwYW4+DQogICAgICAg
ICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iY29tbWVudEJvZHkiPjxzcGFuPmZhbnRhc3RpYy4gYW5k
IGVtYmFyYXNzaW5nbHksIHRoZSBmaXJzdCBmYWNlIHNob3QgYmVhcnMgYSBzdHJp
a2luZyByZXNlbWJsYW5jZSB0byAuLi4gbW9pLiBidXQgaSBkb250IGhhdmUgYSBt
dWxsZXQuPC9zcGFuPjwvZGl2Pg0KICAgICAgICAgICAgICAgIA0KICAgICAgICAg
ICAgICAgIDxkaXYgaWQ9ImN0bDAwX2NwaENvbnRlbnRfYWNDb21tZW50c19jbENv
bW1lbnRzX3JwdENvbW1lbnRzX2N0bDAwX2NfZHNTaGFkb3dfcG5sUmVwbHlFZGl0
IiBjbGFzcz0iY29tbWVudEZvb3RlciI+DQoJCQkNCiAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0icmVwbHlFZGl0Ij4NCiAgICAgICAgICAgICAgICAgICAg
ICAgIDxzcGFuIGNsYXNzPSJlZGl0Ij48L3NwYW4+DQogICAgICAgICAgICAgICAg
ICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDovLyBSZXBseSIgY2xhc3M9ImJ0
bkIgYnRuU1MgYnRuRlIgYWN0aW9uQ29tbWVudCB2aWRlb0lEMTE5NDYwIHBhcmVu
dElEOTE1NSIgcmVsPSJub2ZvbGxvdyI+PGk+PC9pPg0KPGVtPlJlcGx5PC9lbT4N
CjwvYT4gIA0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2Ii
PjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJj
YiI+PC9kaXY+DQogICAgICAgICAgICAgICAgDQoJCTwvZGl2Pg0KICAgICAgICAg
ICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KICAgIA0KCTwvZGl2Pg0KICAgIDxk
aXYgY2xhc3M9ImNiIj48L2Rpdj4NCjwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9ImNv
bW1lbnQiIHN0eWxlPSJwYWRkaW5nLWxlZnQ6IDBweDsiPg0KICAgIDxhIGlkPSJj
b21tZW50LTkxODUiPjwvYT4NCiAgICA8ZGl2IGNsYXNzPSJjb21tZW50VXNlcklj
b24gY29tbWVudEluZGVudCBjYXNjYWRlTGV2ZWwxIj4NCiAgICAgICAgPHNwYW4g
Y2xhc3M9InNsbmsgbG5raHR0cDovL3d3dy53b25kZXJob3d0by5jb20vY29tbXVu
aXR5L21lbWJlci9icmFuZG9uY2FsZGVyb24vIj48aW1nIHNyYz0iaHR0cDovL2lt
Zy53b25kZXJob3d0by5jb20vdXNlcmltYWdlcy82MzQxODk1OTAzMTI1NDkyMjhs
LmpwZyIgY2xhc3M9IiIgd2lkdGg9IjQ5IiBoZWlnaHQ9IjY2IiBib3JkZXI9IjAi
IGFsdD0iIiAvPjwvc3Bhbj4NCiAgICA8L2Rpdj4NCiAgICANCiAgICA8ZGl2IGNs
YXNzPSJib3ggYm94U3Ryb2tlIHVzZXJDb21tZW50Qm9keSByc2giPg0KCQkNCiAg
ICAgICAgPGRpdiBjbGFzcz0iYm9keVNheSI+PC9kaXY+DQogICAgICAgIDxkaXYg
Y2xhc3M9InBhZCI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb21tZW50TWFp
blNlY3Rpb24iPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbW1lbnRI
ZWFkZXIiPiAgIA0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJjdGwwMF9j
cGhDb250ZW50X2FjQ29tbWVudHNfY2xDb21tZW50c19ycHRDb21tZW50c19jdGww
MV9jX2RzU2hhZG93X3BubENvbW1lbnRWb3RlcyIgY2xhc3M9ImNvbW1lbnRWb3Rl
cyI+DQoJCQkNCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJj
b21tZW50U2NvcmUgY29tbWVudDkxODUgY29tbWVudFNjb3JlUG9zaXRpdmUiPisx
PC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iIj4N
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlw
dDovLyAiIGNsYXNzPSJidG5SUiBidG4xNiBidG5JTiBidG5GUiBidXR0b25Eb3du
IGFydGljbGVJRDExOTQ2MCBjb21tZW50SUQ5MTg1IiByZWw9Im5vZm9sbG93Ij48
aT48L2k+DQo8ZW0+PC9lbT4NCjwvYT4gDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6Ly8gIiBjbGFzcz0iYnRuR0cgYnRu
MTYgYnRuSVUgYnRuRlIgYnV0dG9uVXAgYXJ0aWNsZUlEMTE5NDYwIGNvbW1lbnRJ
RDkxODUiIHJlbD0ibm9mb2xsb3ciPjxpPjwvaT4NCjxlbT48L2VtPg0KPC9hPiAN
CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAg
ICAgICANCgkJPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNz
PSJzbG5rIGxua2h0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2NvbW11bml0eS9t
ZW1iZXIvYnJhbmRvbmNhbGRlcm9uLyI+PHNwYW4gY2xhc3M9InVzZXJOYW1lIj5C
cmFuZG9uIENhbGRlcm9uPC9zcGFuPjwvc3Bhbj4gPHNwYW4gY2xhc3M9InVzZXJD
b21tZW50U2NvcmUgdWNzVXNlcklENjYxMTE3Ij48L3NwYW4+IDxzcGFuIGNsYXNz
PSJ0aW1lU3RhbXAiIHRpdGxlPSJ5ZXN0ZXJkYXkiPjkvMS8xMCAyOjMzIFBNPC9z
cGFuPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIA0K
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbW1lbnRCb2R5Ij48c3Bhbj5w
cmV0dHkgY29vbDwvc3Bhbj48L2Rpdj4NCiAgICAgICAgICAgICAgICANCiAgICAg
ICAgICAgICAgICA8ZGl2IGlkPSJjdGwwMF9jcGhDb250ZW50X2FjQ29tbWVudHNf
Y2xDb21tZW50c19ycHRDb21tZW50c19jdGwwMV9jX2RzU2hhZG93X3BubFJlcGx5
RWRpdCIgY2xhc3M9ImNvbW1lbnRGb290ZXIiPg0KCQkJDQogICAgICAgICAgICAg
ICAgICAgIDxkaXYgY2xhc3M9InJlcGx5RWRpdCI+DQogICAgICAgICAgICAgICAg
ICAgICAgICA8c3BhbiBjbGFzcz0iZWRpdCI+PC9zcGFuPg0KICAgICAgICAgICAg
ICAgICAgICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6Ly8gUmVwbHkiIGNsYXNz
PSJidG5CIGJ0blNTIGJ0bkZSIGFjdGlvbkNvbW1lbnQgdmlkZW9JRDExOTQ2MCBw
YXJlbnRJRDkxODUiIHJlbD0ibm9mb2xsb3ciPjxpPjwvaT4NCjxlbT5SZXBseTwv
ZW0+DQo8L2E+ICANCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9
ImNiIj48L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFz
cz0iY2IiPjwvZGl2Pg0KICAgICAgICAgICAgICAgIA0KCQk8L2Rpdj4NCiAgICAg
ICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCiAgICANCgk8L2Rpdj4NCiAg
ICA8ZGl2IGNsYXNzPSJjYiI+PC9kaXY+DQo8L2Rpdj4NCiAgICA8ZGl2IGNsYXNz
PSJjb21tZW50IiBzdHlsZT0icGFkZGluZy1sZWZ0OiAwcHg7Ij4NCiAgICA8YSBp
ZD0iY29tbWVudC05MTg3Ij48L2E+DQogICAgPGRpdiBjbGFzcz0iY29tbWVudFVz
ZXJJY29uIGNvbW1lbnRJbmRlbnQgY2FzY2FkZUxldmVsMSI+DQogICAgICAgIDxz
cGFuIGNsYXNzPSJzbG5rIGxua2h0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2Nv
bW11bml0eS9tZW1iZXIvbmljaG9sYXNoYmF0dGplcy8iPjxpbWcgc3JjPSJodHRw
Oi8vaW1nLndvbmRlcmhvd3RvLmNvbS91c2VyaW1hZ2VzLzYzNDA5MTA3MjEwOTQw
MTEzMGwuanBnIiBjbGFzcz0iIiB3aWR0aD0iNDkiIGhlaWdodD0iNjYiIGJvcmRl
cj0iMCIgYWx0PSIiIC8+PC9zcGFuPg0KICAgIDwvZGl2Pg0KICAgIA0KICAgIDxk
aXYgY2xhc3M9ImJveCBib3hTdHJva2UgdXNlckNvbW1lbnRCb2R5IHJzaCI+DQoJ
CQ0KICAgICAgICA8ZGl2IGNsYXNzPSJib2R5U2F5Ij48L2Rpdj4NCiAgICAgICAg
PGRpdiBjbGFzcz0icGFkIj4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbW1l
bnRNYWluU2VjdGlvbiI+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29t
bWVudEhlYWRlciI+ICAgDQogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImN0
bDAwX2NwaENvbnRlbnRfYWNDb21tZW50c19jbENvbW1lbnRzX3JwdENvbW1lbnRz
X2N0bDAyX2NfZHNTaGFkb3dfcG5sQ29tbWVudFZvdGVzIiBjbGFzcz0iY29tbWVu
dFZvdGVzIj4NCgkJCQ0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xh
c3M9ImNvbW1lbnRTY29yZSBjb21tZW50OTE4NyBjb21tZW50U2NvcmVQb3NpdGl2
ZSI+KzI8L3NwYW4+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz
PSIiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJqYXZh
c2NyaXB0Oi8vICIgY2xhc3M9ImJ0blJSIGJ0bjE2IGJ0bklOIGJ0bkZSIGJ1dHRv
bkRvd24gYXJ0aWNsZUlEMTE5NDYwIGNvbW1lbnRJRDkxODciIHJlbD0ibm9mb2xs
b3ciPjxpPjwvaT4NCjxlbT48L2VtPg0KPC9hPiANCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDovLyAiIGNsYXNzPSJidG5H
RyBidG4xNiBidG5JVSBidG5GUiBidXR0b25VcCBhcnRpY2xlSUQxMTk0NjAgY29t
bWVudElEOTE4NyIgcmVsPSJub2ZvbGxvdyI+PGk+PC9pPg0KPGVtPjwvZW0+DQo8
L2E+IA0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAg
ICAgICAgICAgIA0KCQk8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPHNwYW4g
Y2xhc3M9InNsbmsgbG5raHR0cDovL3d3dy53b25kZXJob3d0by5jb20vY29tbXVu
aXR5L21lbWJlci9uaWNob2xhc2hiYXR0amVzLyI+PHNwYW4gY2xhc3M9InVzZXJO
YW1lIj5iYWNoZWV6ZTwvc3Bhbj48L3NwYW4+IDxzcGFuIGNsYXNzPSJ1c2VyQ29t
bWVudFNjb3JlIHVjc1VzZXJJRDU3MzcwOCI+KDEpPC9zcGFuPiA8c3BhbiBjbGFz
cz0idGltZVN0YW1wIiB0aXRsZT0ieWVzdGVyZGF5Ij45LzEvMTAgMjo0NCBQTTwv
c3Bhbj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAN
CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb21tZW50Qm9keSI+PHNwYW4+
RGlnaXRhbCBlZmZlY3RzIGFyZSBuaWNlIGFuZCBjaGVhcCwgYnV0IHRoZXJlJ3Mg
bm8gc3Vic3RpdHV0ZSBmb3IgYWN0dWFsbHkgZGFuZ2xpbmcgc29tZW9uZSBvdmVy
IHRoZSBzaWRlIG9mIGEgYnVpbGRpbmcuIENhbGwgbWUgb2xkLWZhc2hpb25lZC4u
Ljwvc3Bhbj48L2Rpdj4NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAg
ICA8ZGl2IGlkPSJjdGwwMF9jcGhDb250ZW50X2FjQ29tbWVudHNfY2xDb21tZW50
c19ycHRDb21tZW50c19jdGwwMl9jX2RzU2hhZG93X3BubFJlcGx5RWRpdCIgY2xh
c3M9ImNvbW1lbnRGb290ZXIiPg0KCQkJDQogICAgICAgICAgICAgICAgICAgIDxk
aXYgY2xhc3M9InJlcGx5RWRpdCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8
c3BhbiBjbGFzcz0iZWRpdCI+PC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAg
ICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6Ly8gUmVwbHkiIGNsYXNzPSJidG5CIGJ0
blNTIGJ0bkZSIGFjdGlvbkNvbW1lbnQgdmlkZW9JRDExOTQ2MCBwYXJlbnRJRDkx
ODciIHJlbD0ibm9mb2xsb3ciPjxpPjwvaT4NCjxlbT5SZXBseTwvZW0+DQo8L2E+
ICANCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNiIj48L2Rp
dj4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iY2IiPjwv
ZGl2Pg0KICAgICAgICAgICAgICAgIA0KCQk8L2Rpdj4NCiAgICAgICAgICAgIDwv
ZGl2Pg0KICAgICAgICA8L2Rpdj4NCiAgICANCgk8L2Rpdj4NCiAgICA8ZGl2IGNs
YXNzPSJjYiI+PC9kaXY+DQo8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJjb21tZW50
IiBzdHlsZT0icGFkZGluZy1sZWZ0OiAwcHg7Ij4NCiAgICA8YSBpZD0iY29tbWVu
dC05MjA2Ij48L2E+DQogICAgPGRpdiBjbGFzcz0iY29tbWVudFVzZXJJY29uIGNv
bW1lbnRJbmRlbnQgY2FzY2FkZUxldmVsMSI+DQogICAgICAgIDxzcGFuIGNsYXNz
PSJzbG5rIGxua2h0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2NvbW11bml0eS9t
ZW1iZXIvYmlqaWtlbnlvdC8iPjxpbWcgc3JjPSJodHRwOi8vaW1nLndvbmRlcmhv
d3RvLmNvbS91c2VyaW1hZ2VzLzYzMzkyMDgxNTY2NzQwMTY5N2wuanBnIiBjbGFz
cz0iIiB3aWR0aD0iNDkiIGhlaWdodD0iNjYiIGJvcmRlcj0iMCIgYWx0PSIiIC8+
PC9zcGFuPg0KICAgIDwvZGl2Pg0KICAgIA0KICAgIDxkaXYgY2xhc3M9ImJveCBi
b3hTdHJva2UgdXNlckNvbW1lbnRCb2R5IHJzaCI+DQoJCQ0KICAgICAgICA8ZGl2
IGNsYXNzPSJib2R5U2F5Ij48L2Rpdj4NCiAgICAgICAgPGRpdiBjbGFzcz0icGFk
Ij4NCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbW1lbnRNYWluU2VjdGlvbiI+
DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29tbWVudEhlYWRlciI+ICAg
DQogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImN0bDAwX2NwaENvbnRlbnRf
YWNDb21tZW50c19jbENvbW1lbnRzX3JwdENvbW1lbnRzX2N0bDAzX2NfZHNTaGFk
b3dfcG5sQ29tbWVudFZvdGVzIiBjbGFzcz0iY29tbWVudFZvdGVzIj4NCgkJCQ0K
ICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnRTY29y
ZSBjb21tZW50OTIwNiBjb21tZW50U2NvcmVQb3NpdGl2ZSI+KzE8L3NwYW4+DQog
ICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSIiPg0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJqYXZhc2NyaXB0Oi8vICIgY2xh
c3M9ImJ0blJSIGJ0bjE2IGJ0bklOIGJ0bkZSIGJ1dHRvbkRvd24gYXJ0aWNsZUlE
MTE5NDYwIGNvbW1lbnRJRDkyMDYiIHJlbD0ibm9mb2xsb3ciPjxpPjwvaT4NCjxl
bT48L2VtPg0KPC9hPiANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEg
aHJlZj0iamF2YXNjcmlwdDovLyAiIGNsYXNzPSJidG5HRyBidG4xNiBidG5JVSBi
dG5GUiBidXR0b25VcCBhcnRpY2xlSUQxMTk0NjAgY29tbWVudElEOTIwNiIgcmVs
PSJub2ZvbGxvdyI+PGk+PC9pPg0KPGVtPjwvZW0+DQo8L2E+IA0KICAgICAgICAg
ICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIA0KCQk8
L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNsbmsgbG5r
aHR0cDovL3d3dy53b25kZXJob3d0by5jb20vY29tbXVuaXR5L21lbWJlci9iaWpp
a2VueW90LyB1Y3NOZWdhdGl2ZSI+PHNwYW4gY2xhc3M9InVzZXJOYW1lIj5iaWpp
a2VueW90PC9zcGFuPjwvc3Bhbj4gPHNwYW4gY2xhc3M9InVzZXJDb21tZW50U2Nv
cmUgdWNzVXNlcklEMzkxNDUzIHVjc05lZ2F0aXZlIj4oLTEpPC9zcGFuPiA8c3Bh
biBjbGFzcz0idGltZVN0YW1wIiB0aXRsZT0ieWVzdGVyZGF5Ij45LzIvMTAgNzox
NiBBTTwvc3Bhbj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAg
ICAgICANCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb21tZW50Qm9keSI+
PHNwYW4+bnV0eiAuLi4uLmFsc28gYXR0cmFjdGl2ZTwvc3Bhbj48L2Rpdj4NCiAg
ICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJjdGwwMF9j
cGhDb250ZW50X2FjQ29tbWVudHNfY2xDb21tZW50c19ycHRDb21tZW50c19jdGww
M19jX2RzU2hhZG93X3BubFJlcGx5RWRpdCIgY2xhc3M9ImNvbW1lbnRGb290ZXIi
Pg0KCQkJDQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlcGx5RWRp
dCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZWRpdCI+
PC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImphdmFz
Y3JpcHQ6Ly8gUmVwbHkiIGNsYXNzPSJidG5CIGJ0blNTIGJ0bkZSIGFjdGlvbkNv
bW1lbnQgdmlkZW9JRDExOTQ2MCBwYXJlbnRJRDkyMDYiIHJlbD0ibm9mb2xsb3ci
PjxpPjwvaT4NCjxlbT5SZXBseTwvZW0+DQo8L2E+ICANCiAgICAgICAgICAgICAg
ICAgICAgICAgIDxkaXYgY2xhc3M9ImNiIj48L2Rpdj4NCiAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iY2IiPjwvZGl2Pg0KICAgICAgICAgICAg
ICAgIA0KCQk8L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Rp
dj4NCiAgICANCgk8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJjYiI+PC9kaXY+DQo8
L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJjb21tZW50IiBzdHlsZT0icGFkZGluZy1s
ZWZ0OiAwcHg7Ij4NCiAgICA8YSBpZD0iY29tbWVudC05MjA3Ij48L2E+DQogICAg
PGRpdiBjbGFzcz0iY29tbWVudFVzZXJJY29uIGNvbW1lbnRJbmRlbnQgY2FzY2Fk
ZUxldmVsMSI+DQogICAgICAgIDxzcGFuIGNsYXNzPSJzbG5rIGxua2h0dHA6Ly93
d3cud29uZGVyaG93dG8uY29tL2NvbW11bml0eS9tZW1iZXIvZGFycnlsd2FsbGFj
ZS8iPjxpbWcgc3JjPSJodHRwOi8vaW1nLndvbmRlcmhvd3RvLmNvbS91c2VyaW1h
Z2VzLzYzMzM5MDIxOTAwNTE3Nzc3N2wuanBnIiBjbGFzcz0iIiB3aWR0aD0iNDki
IGhlaWdodD0iNjYiIGJvcmRlcj0iMCIgYWx0PSIiIC8+PC9zcGFuPg0KICAgIDwv
ZGl2Pg0KICAgIA0KICAgIDxkaXYgY2xhc3M9ImJveCBib3hTdHJva2UgdXNlckNv
bW1lbnRCb2R5IHJzaCI+DQoJCQ0KICAgICAgICA8ZGl2IGNsYXNzPSJib2R5U2F5
Ij48L2Rpdj4NCiAgICAgICAgPGRpdiBjbGFzcz0icGFkIj4NCiAgICAgICAgICAg
IDxkaXYgY2xhc3M9ImNvbW1lbnRNYWluU2VjdGlvbiI+DQogICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0iY29tbWVudEhlYWRlciI+ICAgDQogICAgICAgICAgICAg
ICAgICAgIDxkaXYgaWQ9ImN0bDAwX2NwaENvbnRlbnRfYWNDb21tZW50c19jbENv
bW1lbnRzX3JwdENvbW1lbnRzX2N0bDA0X2NfZHNTaGFkb3dfcG5sQ29tbWVudFZv
dGVzIiBjbGFzcz0iY29tbWVudFZvdGVzIj4NCgkJCQ0KICAgICAgICAgICAgICAg
ICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbW1lbnRTY29yZSBjb21tZW50OTIwNyBj
b21tZW50U2NvcmVQb3NpdGl2ZSI+KzE8L3NwYW4+DQogICAgICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSIiPg0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8YSBocmVmPSJqYXZhc2NyaXB0Oi8vICIgY2xhc3M9ImJ0blJSIGJ0bjE2
IGJ0bklOIGJ0bkZSIGJ1dHRvbkRvd24gYXJ0aWNsZUlEMTE5NDYwIGNvbW1lbnRJ
RDkyMDciIHJlbD0ibm9mb2xsb3ciPjxpPjwvaT4NCjxlbT48L2VtPg0KPC9hPiAN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlw
dDovLyAiIGNsYXNzPSJidG5HRyBidG4xNiBidG5JVSBidG5GUiBidXR0b25VcCBh
cnRpY2xlSUQxMTk0NjAgY29tbWVudElEOTIwNyIgcmVsPSJub2ZvbGxvdyI+PGk+
PC9pPg0KPGVtPjwvZW0+DQo8L2E+IA0KICAgICAgICAgICAgICAgICAgICAgICAg
PC9kaXY+DQogICAgICAgICAgICAgICAgICAgIA0KCQk8L2Rpdj4NCiAgICAgICAg
ICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNsbmsgbG5raHR0cDovL3d3dy53b25k
ZXJob3d0by5jb20vY29tbXVuaXR5L21lbWJlci9kYXJyeWx3YWxsYWNlLyB1Y3NH
b29kIj48c3BhbiBjbGFzcz0idXNlck5hbWUiPkRhcnJ5bFdhbGxhY2U8L3NwYW4+
PC9zcGFuPiA8c3BhbiBjbGFzcz0idXNlckNvbW1lbnRTY29yZSB1Y3NVc2VySUQx
ODUzMSB1Y3NHb29kIj4oNSk8L3NwYW4+IDxzcGFuIGNsYXNzPSJ0aW1lU3RhbXAi
IHRpdGxlPSJ5ZXN0ZXJkYXkiPjkvMi8xMCA3OjIwIEFNPC9zcGFuPg0KICAgICAg
ICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImNvbW1lbnRCb2R5Ij48c3Bhbj5JIGxpa2UgaGlzIHN1
cGVyaGVybyBvdXRmaXQuIHNwYW5raWVzLjwvc3Bhbj48L2Rpdj4NCiAgICAgICAg
ICAgICAgICANCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJjdGwwMF9jcGhDb250
ZW50X2FjQ29tbWVudHNfY2xDb21tZW50c19ycHRDb21tZW50c19jdGwwNF9jX2Rz
U2hhZG93X3BubFJlcGx5RWRpdCIgY2xhc3M9ImNvbW1lbnRGb290ZXIiPg0KCQkJ
DQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlcGx5RWRpdCI+DQog
ICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZWRpdCI+PC9zcGFu
Pg0KICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6
Ly8gUmVwbHkiIGNsYXNzPSJidG5CIGJ0blNTIGJ0bkZSIGFjdGlvbkNvbW1lbnQg
dmlkZW9JRDExOTQ2MCBwYXJlbnRJRDkyMDciIHJlbD0ibm9mb2xsb3ciPjxpPjwv
aT4NCjxlbT5SZXBseTwvZW0+DQo8L2E+ICANCiAgICAgICAgICAgICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImNiIj48L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAg
PC9kaXY+PGRpdiBjbGFzcz0iY2IiPjwvZGl2Pg0KICAgICAgICAgICAgICAgIA0K
CQk8L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCiAg
ICANCgk8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJjYiI+PC9kaXY+DQo8L2Rpdj4N
CjwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9ImFydGljbGVDb21tZW50c0Zvcm0xMTk0
NjAiPg0KICAgICAgICAgPGEgaHJlZj0iamF2YXNjcmlwdDovLyBOZXcgQ29tbWVu
dCBUaHJlYWQiIGNsYXNzPSJidG5CIGJ0blNTIGJ0bjE0NSBidG5GUiBhY3Rpb25D
b21tZW50IGhpZGUgbWIxMCBwYXJlbnRJRDAgdmlkZW9JRDExOTQ2MCIgcmVsPSJu
b2ZvbGxvdyI+PGk+PC9pPg0KPGVtPk5ldyBDb21tZW50IFRocmVhZDwvZW0+DQo8
L2E+IA0KICAgICAgICA8ZGl2IGNsYXNzPSJjYiI+PC9kaXY+DQogICAgPC9kaXY+
DQogICAgPGRpdiBjbGFzcz0iY29tbWVudCBjb21tZW50UmVwbHkiPg0KICAgIDxk
aXYgY2xhc3M9ImNvbW1lbnRVc2VySWNvbiI+DQogICAgICAgIDxpbWcgc3JjPSJo
dHRwOi8vaW1nLndvbmRlcmhvd3RvLmNvbS91c2VyaW1hZ2VzL3VzZXJfZGVmYXVs
dC5qcGciIGNsYXNzPSIiIHdpZHRoPSIyOSIgaGVpZ2h0PSI0MSIgYm9yZGVyPSIw
IiBhbHQ9IiIgLz4NCiAgICA8L2Rpdj4NCiAgICANCiAgICA8ZGl2IGNsYXNzPSJi
b3ggYm94U3Ryb2tlIHVzZXJDb21tZW50Qm9keSBjb21tZW50SW5wdXQgcnNoIj4N
CgkJDQogICAgICAgIDxkaXYgY2xhc3M9ImJvZHlTYXkiPjwvZGl2Pg0KICAgICAg
ICA8ZGl2IGNsYXNzPSJwYWQiPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29t
bWVudE1haW5TZWN0aW9uIj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJj
b21tZW50SGVhZGVyIj4gICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAg
PHNwYW4+QWRkIHlvdXIgY29tbWVudDo8L3NwYW4+DQogICAgICAgICAgICAgICAg
PC9kaXY+DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0iY29tbWVudEJvZHkiPg0KICAgICAgICAgICAgICAgICAgICA8c3Bhbj48
dGV4dGFyZWEgbmFtZT0idHh0Q29tbWVudCIgY2xhc3M9Im5vU3VibWl0T25SZXR1
cm5zIGNvbW1lbnRSZXBseVRleHQiIGNvbHM9IjE2IiByb3dzPSIzIj48L3RleHRh
cmVhPjwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9Imhp
ZGRlbiIgbmFtZT0iaGlkUGFyZW50SUQiIGNsYXNzPSJoaWRQYXJlbnRJRCIgdmFs
dWU9IjAiIC8+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAg
ICAgDQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29tbWVudFJlcGx5QnV0
dG9uIj4NCiAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6
Ly8gQWRkIENvbW1lbnQiIGNsYXNzPSJidG5HRyBidG4xMDAgYnRuRlIgc3VibWl0
Q29tbWVudCBtdnRab25lTGluayAgbXZ0Wm9uZV9Db21tZW50ZWQiIHJlbD0ibm9m
b2xsb3ciPjxpPjwvaT4NCjxlbT5BZGQgQ29tbWVudDwvZW0+DQo8L2E+IA0KICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYiI+PC9kaXY+DQogICAgICAg
ICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9k
aXY+DQogICAgDQoJPC9kaXY+DQogICAgPGRpdiBjbGFzcz0iY2IiPjwvZGl2Pg0K
PC9kaXY+DQo8L2Rpdj4NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgPGRpdiBp
ZD0iY3RsMDBfY3BoQ29udGVudF9wbmxJbm5lclR3b0NvbHVtbiI+DQoJCQ0KICAg
ICAgICAgICAgICAgIA0KDQo8ZGl2IGNsYXNzPSJob3J2cyBncmlkTW9kZSIgaWQ9
Imh2c19jdGwwMF9jcGhDb250ZW50X2h2c0lubmVyTGVmdFZpZGVvcyI+DQogICAg
PGRpdiBjbGFzcz0iaGVhZGluZyBjb2xvclN0YW5kYXJkIGhlYWRpbmdTdWIgbm9C
RyI+DQogICAgDQogICAgPGgyIGNsYXNzPSJoZWFkbGluZSI+PGEgaHJlZj0iaHR0
cDovL3d3dy53b25kZXJob3d0by5jb20vcGVvcGxlLWFsc28tbGlrZWQvZnJvbS0w
MTE5NDYwLyI+UGVvcGxlIEFsc28gTGlrZWQ8L2E+PC9oMj48ZGl2IGNsYXNzPSJj
YiI+PC9kaXY+DQogICAgDQogICAgDQo8L2Rpdj4NCiAgICANCiAgICANCiAgICAN
CiAgICA8ZGl2IGNsYXNzPSJjb250ZW50IG12dFpvbmVfUmVsYXRlZCI+DQogICAg
ICAgIDx1bCBjbGFzcz0iaXRlbXMgY29udGVudEljb24gcGFnZTEiPiAKCTxsaT48
aDM+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20vaG93LXRvLXNw
ZWVkLXJlYWQtMTc0MzU2LyI+PGltZyBzcmM9Imh0dHA6Ly9pbWcud29uZGVyaG93
dG8uY29tL3NjcmVlbmdyYWJzLzYzMzQ1MDcyNTc1NDY4NzUwMC5qcGciIGFsdD0i
Ii8+IFNwZWVkIHJlYWQgPGVtIGNsYXNzPSJjVHlwZSI+SG93LVRvIFZpZGVvPC9l
bT4gPHNwYW4gY2xhc3M9ImdyYWRlU3RhdCI+PHNwYW4+MTo1NSA8L3NwYW4+QS08
L3NwYW4+PC9hPjwvaDM+PC9saT4gCgk8bGk+PGgzPjxhIGhyZWY9Imh0dHA6Ly93
d3cud29uZGVyaG93dG8uY29tL2hvdy10by1jcmVhdGUtZmlyZXdvcmtzLXdpdGgt
eW91ci1jaWdhcmV0dGUtbGlnaHRlci0yMDk1OTUvIj48aW1nIHNyYz0iaHR0cDov
L2ltZy53b25kZXJob3d0by5jb20vc2NyZWVuZ3JhYnMvNjMzMTU1NDM3MjkyNDMx
NjA2LmpwZyIgYWx0PSIiLz4gQ3JlYXRlIGZpcmV3b3JrcyB3aXRoIHlvdXIgY2ln
YXJldHRlIGxpZ2h0ZXIgPGVtIGNsYXNzPSJjVHlwZSI+SG93LVRvIFZpZGVvPC9l
bT4gPHNwYW4gY2xhc3M9ImdyYWRlU3RhdCI+PHNwYW4+MToxOSA8L3NwYW4+Qjwv
c3Bhbj48L2E+PC9oMz48L2xpPiAKCTxsaT48aDM+PGEgaHJlZj0iaHR0cDovL3d3
dy53b25kZXJob3d0by5jb20vaG93LXRvLWRvLWhvb2thaC10b2JhY2NvLXNtb2tl
LXRyaWNrcy0yMTQxMDgvIj48aW1nIHNyYz0iaHR0cDovL2ltZy53b25kZXJob3d0
by5jb20vc2NyZWVuZ3JhYnMvNjMzNTEyOTk1NzI0MjE4NzUwLmpwZyIgYWx0PSIi
Lz4gRG8gaG9va2FoIHRvYmFjY28gc21va2UgdHJpY2tzIDxlbSBjbGFzcz0iY1R5
cGUiPkhvdy1UbyBWaWRlbzwvZW0+IDxzcGFuIGNsYXNzPSJncmFkZVN0YXQiPjxz
cGFuPjEwOjAwIDwvc3Bhbj5BPC9zcGFuPjwvYT48L2gzPjwvbGk+IAoJPGxpPjxo
Mz48YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9ob3ctdG8tZW1w
dHktYmVlci1ib3R0bGUtb25lLXNlY29uZC0xNjU5NDkvIj48aW1nIHNyYz0iaHR0
cDovL2ltZy53b25kZXJob3d0by5jb20vc2NyZWVuZ3JhYnMvNjMzNDI1ODMzNTE4
MDEyMTcyLmpwZyIgYWx0PSIiLz4gRW1wdHkgYSBiZWVyIGJvdHRsZSBpbiBvbmUg
c2Vjb25kIDxlbSBjbGFzcz0iY1R5cGUiPkhvdy1UbyBWaWRlbzwvZW0+IDxzcGFu
IGNsYXNzPSJncmFkZVN0YXQiPjxzcGFuPjE6MTggPC9zcGFuPkI8L3NwYW4+PC9h
PjwvaDM+PC9saT4gCgk8bGk+PGgzPjxhIGhyZWY9Imh0dHA6Ly93d3cud29uZGVy
aG93dG8uY29tL2hvdy10by1oaWphY2stZmFzdC1mb29kLWRyaXZlLXRocnUtd2l0
aC1jYi1yYWRpby0xNjQ4OTMvIj48aW1nIHNyYz0iaHR0cDovL2ltZy53b25kZXJo
b3d0by5jb20vc2NyZWVuZ3JhYnMvNjMzNDIxMzYwNzEyNTg1MDAwLmpwZyIgYWx0
PSIiLz4gSGlqYWNrIGEgZmFzdCBmb29kIGRyaXZlLXRocnUgd2l0aCBhIENCIHJh
ZGlvIDxlbSBjbGFzcz0iY1R5cGUiPkhvdy1UbyBWaWRlbzwvZW0+IDxzcGFuIGNs
YXNzPSJncmFkZVN0YXQiPjxzcGFuPjk6MTEgPC9zcGFuPkE8L3NwYW4+PC9hPjwv
aDM+PC9saT4gCgk8bGk+PGgzPjxhIGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93
dG8uY29tL2hvdy10by1wdWxsLW9mZi1lZ2ctbWljcm93YXZlLXByYW5rLTE2MjQz
Ny8iPjxpbWcgc3JjPSJodHRwOi8vaW1nLndvbmRlcmhvd3RvLmNvbS9zY3JlZW5n
cmFicy82MzM0MTAzMTgwMDI5NjUwMDAuanBnIiBhbHQ9IiIvPiBQdWxsIG9mZiB0
aGUgZWdnIGluIHRoZSBtaWNyb3dhdmUgcHJhbmsgPGVtIGNsYXNzPSJjVHlwZSI+
SG93LVRvIFZpZGVvPC9lbT4gPHNwYW4gY2xhc3M9ImdyYWRlU3RhdCI+PHNwYW4+
MDo1NCA8L3NwYW4+Qis8L3NwYW4+PC9hPjwvaDM+PC9saT48L3VsPg0KICAgICAg
ICANCiAgICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20v
cGVvcGxlLWFsc28tbGlrZWQvZnJvbS0wMTE5NDYwLyIgaWQ9ImN0bDAwX2NwaENv
bnRlbnRfaHZzSW5uZXJMZWZ0VmlkZW9zX2FTaG93TW9yZSIgY2xhc3M9Im1vcmVM
aW5rIiByZWw9Im5vZm9sbG93Ij5BbGwgUGVvcGxlIEFsc28gTGlrZWQ8L2E+DQog
ICAgPC9kaXY+DQogICAgPGRpdiBjbGFzcz0iY2IiPjwvZGl2Pg0KICAgIA0KICAg
IA0KPC9kaXY+DQogICAgICAgICAgICANCgk8L2Rpdj4NCiAgICAgICAgICAgIA0K
ICAgICAgICAgICAgDQogICAgICAgIA0KPC9kaXY+DQogICAgICAgIA0KICAgICAg
ICA8ZGl2Pg0KICAgICAgICAgICAgDQogICAgICAgICAgICA8ZGl2IGlkPSJjdGww
MF9jcGhDb250ZW50X3BubFdvbmRlcm1lbnRBbmRXb3JsZCIgY2xhc3M9ImlubmVy
VHdvQ29sdW1uIj4NCgkNCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb3Vi
bGVQYWQiPjwvZGl2Pg0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAg
IA0KDQo8ZGl2IGNsYXNzPSJ3d1NjcmwiPg0KICAgIDxkaXYgY2xhc3M9ImhlYWRp
bmcgbm9CRyI+DQogICAgDQogICAgPGgzIGNsYXNzPSJoZWFkbGluZSI+PGEgaHJl
Zj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20vd29uZGVybWVudC8iPldvbmRl
cm1lbnQ8L2E+PC9oMz48ZGl2IGNsYXNzPSJjYiI+PC9kaXY+DQogICAgDQogICAg
CiAgICA8c3BhbiBjbGFzcz0icGFnaW5nIj48c3BhbiBjbGFzcz0icGFnZUxpbmsg
cGFnZUxpbmt3d1NjbGN0bDAwX2NwaENvbnRlbnRfd3dzV29uZGVyV2Vla2x5IHNj
cmxQYWdlMCBwYWdlTGlua1NlbGVjdGVkIj48L3NwYW4+PHNwYW4gY2xhc3M9InBh
Z2VMaW5rIHBhZ2VMaW5rd3dTY2xjdGwwMF9jcGhDb250ZW50X3d3c1dvbmRlcldl
ZWtseSBzY3JsUGFnZTEiPjwvc3Bhbj48c3BhbiBjbGFzcz0icGFnZUxpbmsgcGFn
ZUxpbmt3d1NjbGN0bDAwX2NwaENvbnRlbnRfd3dzV29uZGVyV2Vla2x5IHNjcmxQ
YWdlMiI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwYWdlTGluayBwYWdlTGlua3d3U2Ns
Y3RsMDBfY3BoQ29udGVudF93d3NXb25kZXJXZWVrbHkgc2NybFBhZ2UzIj48L3Nw
YW4+PHNwYW4gY2xhc3M9InBhZ2VMaW5rIHBhZ2VMaW5rd3dTY2xjdGwwMF9jcGhD
b250ZW50X3d3c1dvbmRlcldlZWtseSBzY3JsUGFnZTQiPjwvc3Bhbj48L3NwYW4+
DQo8L2Rpdj4NCiAgICANCiAgICA8ZGl2IGNsYXNzPSJ3d1JvdGF0b3IgY29udGVu
dCIgaWQ9Ind3U2NsY3RsMDBfY3BoQ29udGVudF93d3NXb25kZXJXZWVrbHkiPg0K
ICAgICAgICA8ZGl2Pg0KICAgICAgICAgICAgCgk8ZGl2IGNsYXNzPSJzaENvbnRl
bnQgd3dDb250ZW50Ij4KCQk8aDQ+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJo
b3d0by5jb20vd29uZGVybWVudC9zdXBlci1zZXgtYXBwZWFsLTNkLTAxMTk2NjMv
Ij48aW1nIHNyYz0iaHR0cDovL2ltZy53b25kZXJob3d0by5jb20vaW1hZ2VzL2dm
eC9nYWxsZXJ5L2E2MzQxOTAxODA3MDQ4NjMwMTYuanBnIiB3aWR0aD0iMzAwIiBo
ZWlnaHQ9IjE0MCIgYWx0PSIiIC8+IDxzcGFuPlN1cGVyIFNleCBBcHBlYWwgaW4g
M0Q8L3NwYW4+PC9hPjwvaDQ+CgkJPHA+VGhlIGFnZSBvZiAzRCBzZXggaXMgdXBv
biB1cy4gRmFzaGlvbiBzaG9vdHMuIFBsYXlib3kuIFBvcm4uIEFuZCBwZXJoYXBz
IHNvbWV0aGluZyBtb3JlIGludGVyYWN0aXZlIGluIHRoZSBub3QgdG9vIGRpc3Rh
bnQgZnV0dXJlLiBUaGUgbGF0ZXN0IDNEIHB1YmxpY2F0aW9uIHRvIGhpdCB0aGUg
c3RhbmRzIGZlYXR1cmVzIDxzcGFuIGNsYXNzPSJzbG5rIGxua2h0dHA6Ly93d3cu
d29uZGVyaG93dG8uY29tL3dvbmRlcm1lbnQvc3VwZXItc2V4LWFwcGVhbC0zZC0w
MTE5NjYzLyI+Li4uPC9zcGFuPjwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ic2hD
b250ZW50IHd3Q29udGVudCI+CgkJPGg0PjxhIGhyZWY9Imh0dHA6Ly93d3cud29u
ZGVyaG93dG8uY29tL3dvbmRlcm1lbnQvc3BlZWRpbmctYnVsbGV0LXZzLXNpbmds
ZS1kcm9wLXdhdGVyLTAxMTk2MTcvIj48aW1nIHNyYz0iaHR0cDovL2ltZy53b25k
ZXJob3d0by5jb20vaW1hZ2VzL2dmeC9nYWxsZXJ5L2E2MzQxODk0MTYxMzIyNTU3
OTYuanBnIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjE0MCIgYWx0PSIiIC8+IDxzcGFu
PlNwZWVkaW5nIEJ1bGxldCBWcy4gYSBTaW5nbGUgRHJvcCBvZiBXYXRlcjwvc3Bh
bj48L2E+PC9oND4KCQk8cD5BbGV4YW5kZXIgQXVndXN0ZWlqbiBjYXB0dXJlcyBv
bmUgb2YgdGhlIHdvcmxkJ3MgbW9zdCBkZWFkbHkgcHJvamVjdGlsZXMgc2xpY2lu
ZyB0aHJvdWdoIHRoZSBFYXJ0aCdzIGRlbGljYXRlIHdhdGVyIGRyb3BsZXQuIFZp
YSBQZXRhUGl4ZWw6IDxzcGFuIGNsYXNzPSJzbG5rIGxua2h0dHA6Ly93d3cud29u
ZGVyaG93dG8uY29tL3dvbmRlcm1lbnQvc3BlZWRpbmctYnVsbGV0LXZzLXNpbmds
ZS1kcm9wLXdhdGVyLTAxMTk2MTcvIj4uLi48L3NwYW4+PC9wPgoJPC9kaXY+Cgk8
ZGl2IGNsYXNzPSJzaENvbnRlbnQgd3dDb250ZW50Ij4KCQk8aDQ+PGEgaHJlZj0i
aHR0cDovL3d3dy53b25kZXJob3d0by5jb20vd29uZGVybWVudC9tYXJpZS1hbnRv
aW5ldHRlLXdpZ3MtbWFkZS13aXRoLW1pbGVzLXBsYXN0aWMtd3JhcC0wMTE5NjE2
LyI+PGltZyBzcmM9Imh0dHA6Ly9pbWcud29uZGVyaG93dG8uY29tL2ltYWdlcy9n
ZngvZ2FsbGVyeS9hNjM0MTg5MzIzNjI5NDI3MDc4LmpwZyIgd2lkdGg9IjMwMCIg
aGVpZ2h0PSIxNDAiIGFsdD0iIiAvPiA8c3Bhbj5NYXJpZSBBbnRvaW5ldHRlIFdp
Z3MgTWFkZSBXaXRoIE1pbGVzIG9mIFBsYXN0aWMgV3JhcDwvc3Bhbj48L2E+PC9o
ND4KCQk8cD5LYXRlIEN1c2FrIGlzIHJlc291cmNlZnVsLiBUaGUgYXJ0aXN0IG1h
a2VzIE1hcmllIEFudG9pbmV0dGUgd2lncyBjcmFmdGVkIGVudGlyZWx5IHdpdGgg
c2FyYW4gd3JhcDog4oCcJ1RoZXJlIGlzIGFuIGV4Y2l0aW5nIOKAmGEtaGHigJkg
bW9tZW50IHdoZW4gPHNwYW4gY2xhc3M9InNsbmsgbG5raHR0cDovL3d3dy53b25k
ZXJob3d0by5jb20vd29uZGVybWVudC9tYXJpZS1hbnRvaW5ldHRlLXdpZ3MtbWFk
ZS13aXRoLW1pbGVzLXBsYXN0aWMtd3JhcC0wMTE5NjE2LyI+Li4uPC9zcGFuPjwv
cD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ic2hDb250ZW50IHd3Q29udGVudCI+CgkJ
PGg0PjxhIGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL3dvbmRlcm1l
bnQvYXJ0aXN0LXdpdGgtZGVhdGgtd2lzaC1uby1waG90b3Nob3AtdXNlZC0wMTE5
NDYwLyI+PGltZyBzcmM9Imh0dHA6Ly9pbWcud29uZGVyaG93dG8uY29tL2ltYWdl
cy9nZngvZ2FsbGVyeS9hNjM0MTg4NTY3MTUwMjM5OTU4LmpwZyIgd2lkdGg9IjMw
MCIgaGVpZ2h0PSIxNDAiIGFsdD0iIiAvPiA8c3Bhbj5BcnRpc3QgV2l0aCBEZWF0
aCBXaXNoIChObyBQaG90b3Nob3AgVXNlZCk8L3NwYW4+PC9hPjwvaDQ+CgkJPHA+
SXQgaXMgY29uY2VpdmFibGUgdGhhdCBDaGluZXNlIGFydGlzdCBMZWkgV2VpIGhh
cyBhbHdheXMgZHJlYW10IG9mIGJlaW5nIGEgc3VwZXJoZXJvLiBPciB0aGF0IGhl
IHNpbXBseSBoYXMgdGhlIGRlc2lyZSB0byBmbHkuIE9yIG1heWJlIGhlIGlzIDxz
cGFuIGNsYXNzPSJzbG5rIGxua2h0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL3dv
bmRlcm1lbnQvYXJ0aXN0LXdpdGgtZGVhdGgtd2lzaC1uby1waG90b3Nob3AtdXNl
ZC0wMTE5NDYwLyI+Li4uPC9zcGFuPjwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0i
c2hDb250ZW50IHd3Q29udGVudCI+CgkJPGg0PjxhIGhyZWY9Imh0dHA6Ly93d3cu
d29uZGVyaG93dG8uY29tL3dvbmRlcm1lbnQvaWxsdXNpb24tcmV2ZWFsZWQtbW9p
ci1taW5kLXRyaXAtMDExOTQ3MS8iPjxpbWcgc3JjPSJodHRwOi8vaW1nLndvbmRl
cmhvd3RvLmNvbS9pbWFnZXMvZ2Z4L2dhbGxlcnkvYTYzNDE4Njg4NDYyNTY4MzQz
MS5qcGciIHdpZHRoPSIzMDAiIGhlaWdodD0iMTQwIiBhbHQ9IiIgLz4gPHNwYW4+
SWxsdXNpb24gUmV2ZWFsZWQ6IFRoZSBNb2lyJiMyMzM7IE1pbmQgVHJpcDwvc3Bh
bj48L2E+PC9oND4KCQk8cD5CZWF1dGlmdWwgdGV4dGlsZSBpbGx1c2lvbiBieSBh
cnRpc3QgVGltdXIgU2ktUWluISBIb3cgRG9lcyBpdCBXb3JrPyBUaGlzIHNwZWNp
ZmljIHN0eWxlIG9mIHBhdHRlcm4gaXMga25vd24gYXMgbW9pciYjMjMzOy4gQWNj
b3JkaW5nIHRvIDxzcGFuIGNsYXNzPSJzbG5rIGxua2h0dHA6Ly93d3cud29uZGVy
aG93dG8uY29tL3dvbmRlcm1lbnQvaWxsdXNpb24tcmV2ZWFsZWQtbW9pci1taW5k
LXRyaXAtMDExOTQ3MS8iPi4uLjwvc3Bhbj48L3A+Cgk8L2Rpdj4NCiAgICAgICAg
ICAgIDxkaXYgY2xhc3M9ImNiIj48L2Rpdj4NCiAgICAgICAgPC9kaXY+DQogICAg
PC9kaXY+DQogICAgPGRpdiBjbGFzcz0iY2IxMCI+PC9kaXY+DQogICAgPGEgaHJl
Zj0iL3dvbmRlcm1lbnQvIiByZWw9Im5vZm9sbG93IiBjbGFzcz0ibW9yZUxpbmsi
PkFsbCBXb25kZXJtZW50PC9hPg0KPC9kaXY+DQogICAgICAgICAgICAgICAgDQoN
CjxkaXYgY2xhc3M9ImZ3U2NybCI+DQogICAgPGRpdiBjbGFzcz0iaGVhZGluZyBu
b0JHIj4NCiAgICANCiAgICA8aDMgY2xhc3M9ImhlYWRsaW5lIj48YSBocmVmPSJo
dHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS93b3JsZHMvIj5GZWF0dXJlZCBXb3Js
ZHM8L2E+PC9oMz48ZGl2IGNsYXNzPSJjYiI+PC9kaXY+DQogICAgDQogICAgCiAg
ICA8c3BhbiBjbGFzcz0icGFnaW5nIj48c3BhbiBjbGFzcz0icGFnZUxpbmsgcGFn
ZUxpbmt3d1NjbGN0bDAwX2NwaENvbnRlbnRfZndGZWF0dXJlZFdvcmxkcyBzY3Js
UGFnZTAgcGFnZUxpbmtTZWxlY3RlZCI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwYWdl
TGluayBwYWdlTGlua3d3U2NsY3RsMDBfY3BoQ29udGVudF9md0ZlYXR1cmVkV29y
bGRzIHNjcmxQYWdlMSI+PC9zcGFuPjxzcGFuIGNsYXNzPSJwYWdlTGluayBwYWdl
TGlua3d3U2NsY3RsMDBfY3BoQ29udGVudF9md0ZlYXR1cmVkV29ybGRzIHNjcmxQ
YWdlMiI+PC9zcGFuPjwvc3Bhbj4NCjwvZGl2Pg0KICAgIDxkaXYgaWQ9ImN0bDAw
X2NwaENvbnRlbnRfZndGZWF0dXJlZFdvcmxkc19wbmxGcmFtZSI+DQoJCQ0KICAg
ICAgICA8ZGl2IGNsYXNzPSJ3d1JvdGF0b3IgY29udGVudCIgaWQ9Ind3U2NsY3Rs
MDBfY3BoQ29udGVudF9md0ZlYXR1cmVkV29ybGRzIj4NCiAgICAgICAgICAgIDxk
aXY+DQogICAgICAgICAgICAgICAgCgk8ZGl2IGNsYXNzPSJzaENvbnRlbnQgd3dD
b250ZW50Ij4KCQk8aDQ+PGEgaHJlZj0iaHR0cDovL2Zhc2hpb24tcGhvdG9ncmFw
aHkud29uZGVyaG93dG8uY29tLyI+PGltZyBzcmM9Imh0dHA6Ly9pbWcud29uZGVy
aG93dG8uY29tL2ltYWdlcy9nZngvdy9saTYzNDA0OTQ5NjM3OTc0OTcxNC5qcGci
IHdpZHRoPSIzMDAiIGhlaWdodD0iMTQwIiBhbHQ9IiIgLz4gPHNwYW4+RmFzaGlv
biBQaG90b2dyYXBoeTwvc3Bhbj48L2E+PC9oND4KCQk8cD5IZXkgVGhlcmUhIFRo
aXMgV29ybGQgaXMgZGVkaWNhdGVkIHRvIGFueXRoaW5nIGFuZCBldmVyeXRoaW5n
IGluIEZhc2hpb24gUGhvdG9ncmFwaHkuIEZyb20gbWFrZXVwIGFuZCBsaWdodGlu
ZyB0byB3YXJkcm9iZSBhbmQgbGVuc2VzLCBmZWVsIGZyZWUgdG8gYXNrICZhbXA7
IGFuc3dlciBxdWVzdGlvbnMgaW4gdGhlIEZvcnVtIDxzcGFuIGNsYXNzPSJzbG5r
IGxua2h0dHA6Ly9mYXNoaW9uLXBob3RvZ3JhcGh5LndvbmRlcmhvd3RvLmNvbS8i
Pi4uLjwvc3Bhbj48L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InNoQ29udGVudCB3
d0NvbnRlbnQiPgoJCTxoND48YSBocmVmPSJodHRwOi8vamFja2Fzcy0zZC1jb250
ZXN0LndvbmRlcmhvd3RvLmNvbS8iPjxpbWcgc3JjPSJodHRwOi8vaW1nLndvbmRl
cmhvd3RvLmNvbS9pbWFnZXMvZ2Z4L3cvbGk2MzQxODQ0MTk5NDc5MzAzNjguanBn
IiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjE0MCIgYWx0PSIiIC8+IDxzcGFuPkphY2th
c3MgM0QgQ29udGVzdDwvc3Bhbj48L2E+PC9oND4KCQk8cD5FbnRlciB5b3VyIFdp
bGQgUHJhbmsgSG93LVRvIHRvIFdpbiBhIERheSBhcyBhIEphY2thc3MgaW4gTEE8
L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InNoQ29udGVudCB3d0NvbnRlbnQiPgoJ
CTxoND48YSBocmVmPSJodHRwOi8vZnJvbnRpZXJ2aWxsZS53b25kZXJob3d0by5j
b20vIj48aW1nIHNyYz0iaHR0cDovL2ltZy53b25kZXJob3d0by5jb20vaW1hZ2Vz
L2dmeC93L2xpNjM0MTI5OTMwMzMzNTIzNzMzLmpwZyIgd2lkdGg9IjMwMCIgaGVp
Z2h0PSIxNDAiIGFsdD0iIiAvPiA8c3Bhbj5Gcm9udGllclZpbGxlIFdvcmxkPC9z
cGFuPjwvYT48L2g0PgoJCTxwPkZyb250aWVyVmlsbGUgV29ybGQgaXMgZGVkaWNh
dGVkIHRvIGFueXRoaW5nIGFuZCBldmVyeXRoaW5nIEZyb250aWVyVmlsbGUuIFZp
c2l0IG91ciBGYWNlYm9vayBGcm9udGllclZpbGxlIEZhbiBQYWdlIGFuZCAnbGlr
ZScgdXMgb24gZmFjZWJvb2suPC9wPgoJPC9kaXY+DQogICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0iY2IiPjwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAg
ICAgIDwvZGl2Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJjYjEwIj48L2Rpdj4NCiAg
ICAgICAgPGEgaHJlZj0iL3dvcmxkcy8iIGNsYXNzPSJtb3JlTGluayIgcmVsPSJu
b2ZvbGxvdyI+QWxsIEZlYXR1cmVkIFdvcmxkczwvYT4NCiAgICANCgk8L2Rpdj4N
CjwvZGl2Pg0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIA0KICAg
ICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNiIj48
L2Rpdj4NCiAgICAgICAgICAgIA0KPC9kaXY+DQogICAgICAgICAgICANCiAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImNiIj48L2Rpdj4NCiAgICAgICAgPC9kaXY+DQog
ICAgPC9kaXY+DQogICAgICAgIA0KICAgIDxkaXYgaWQ9ImN0bDAwX2NwaENvbnRl
bnRfcG5sUmlnaHRDb2x1bW5Db250YWluZXIiIGNsYXNzPSJyaWdodDMwMCI+DQoJ
DQogICAgPCEtLTxkaXYgY2xhc3M9InJpZ2h0MzAwIj4tLT4NCiAgICAgICAgPGRp
diBpZD0iY3RsMDBfY3BoQ29udGVudF9wbmxSaWdodENvbHVtbiI+DQoJCQ0KICAg
ICAgICAgICAgPGRpdiBjbGFzcz0iYWQzMDAiIGlkPSJhcGhfd2h0X2NsaXAtb2Yt
dGhlLWRheV90b3BfMzAweDI1MCI+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij4vLzwhW0NEQVRBWwpnb29nbGV0YWcuY21kLnB1c2goZnVuY3Rpb24oKXtn
b29nbGV0YWcuZGlzcGxheSgnYXBoX3dodF9jbGlwLW9mLXRoZS1kYXlfdG9wXzMw
MHgyNTAnKTt9KTsKLy9dXT48L3NjcmlwdD4KPC9kaXY+DQogICAgICAgIA0KICAg
ICAgICAgICAgPGRpdiBpZD0ibWVudUFyZWEiPjwvZGl2Pg0KICAgICAgICAgICAg
DQogICAgICAgICAgICA8ZGl2IGlkPSJjdGwwMF9jcGhDb250ZW50X3BubFdpZGdl
dHMiPg0KCQkJDQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgDQoN
CjxkaXYgY2xhc3M9ImhvcnZzICIgaWQ9Imh2c19jdGwwMF9jcGhDb250ZW50X2h2
c1JpZ2h0Q29sdW1uVmlkZW9zIj4NCiAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nIGNv
bG9yU3RhbmRhcmQiPg0KICAgIDxkaXYgY2xhc3M9ImJnIj48aT48L2k+DQogICAg
PGgyIGNsYXNzPSJoZWFkbGluZSI+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJo
b3d0by5jb20vcmVsYXRlZC9hcnRpc3Qtd2l0aC1kZWF0aC13aXNoLShuby1waG90
b3Nob3AtdXNlZCkvZnJvbS0wMTE5NDYwLyI+UmVsYXRlZDwvYT48L2gyPjxkaXYg
Y2xhc3M9ImNiIj48L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJjYiI+PC9kaXY+PC9k
aXY+DQogICAgDQo8L2Rpdj4NCiAgICANCiAgICANCiAgICANCiAgICA8ZGl2IGNs
YXNzPSJjb250ZW50IG12dFpvbmVfUmVsYXRlZCBicmRMIGJyZEIiPg0KICAgICAg
ICA8dWwgY2xhc3M9Iml0ZW1zIGNvbnRlbnRJY29uIHBhZ2UxIj4gCgk8bGk+PGgz
PjxhIGhyZWY9Imh0dHA6Ly9vcmdhbmljLndvbmRlcmhvd3RvLmNvbS9ibG9nL2Jp
Zy1iYW1idS1hbWF6aW5nLWFydC1tZXQtMDExNzg1MC8iPjxpbWcgc3JjPSJodHRw
Oi8vaW1nLndvbmRlcmhvd3RvLmNvbS9pbWFnZXMvZ2Z4L2dhbGxlcnkvYXQ2MzQx
MzY3OTEwMjAyMDAzNTUuanBnIiBhbHQ9IiIvPiBUaGUgQmlnIEJhbWJ1OiBBbWF6
aW5nIEFydCBhdCB0aGUgTWV0IDxlbSBjbGFzcz0iY1R5cGUiPkJsb2cgUG9zdDwv
ZW0+PC9hPjwvaDM+PC9saT4gCgk8bGk+PGgzPjxhIGhyZWY9Imh0dHA6Ly9mYXNo
aW9uLXBob3RvZ3JhcGh5LndvbmRlcmhvd3RvLmNvbS9ibG9nL3RvcC1mYXNoaW9u
LWFnZW50cy1hZ2VuY2llcy0wMTE0ODUzLyI+PGltZyBzcmM9Imh0dHA6Ly9pbWcu
d29uZGVyaG93dG8uY29tL2ltYWdlcy9nZngvZ2FsbGVyeS9hdDYzNDA2MjU5OTcw
NTU4NDg4Mi5qcGciIGFsdD0iIi8+IFRvcCBGYXNoaW9uIEFnZW50cy9BZ2VuY2ll
cyA8ZW0gY2xhc3M9ImNUeXBlIj5CbG9nIFBvc3Q8L2VtPjwvYT48L2gzPjwvbGk+
IAoJPGxpPjxoMz48YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9o
b3ctdG8tYmVjb21lLXBlcmZvcm1hbmNlLWFydGlzdC0yMjUzMjUvIj48aW1nIHNy
Yz0iaHR0cDovL2ltZy53b25kZXJob3d0by5jb20vc2NyZWVuZ3JhYnMvNjMzNTU5
NzAzNjkwNTMxMjUwLmpwZyIgYWx0PSIiLz4gQmVjb21lIGEgcGVyZm9ybWFuY2Ug
YXJ0aXN0IDxlbSBjbGFzcz0iY1R5cGUiPkhvdy1UbyBWaWRlbzwvZW0+IDxzcGFu
IGNsYXNzPSJncmFkZVN0YXQiPjxzcGFuPjI6MDAgPC9zcGFuPkIrPC9zcGFuPjwv
YT48L2gzPjwvbGk+IAoJPGxpPjxoMz48YSBocmVmPSJodHRwOi8vd3d3LndvbmRl
cmhvd3RvLmNvbS9ob3ctdG8tbWFrZS1jb250ZW1wb3JhcnktaW5zdGFsbGF0aW9u
LWFydC0yNzI2MTEvIj48aW1nIHNyYz0iaHR0cDovL2ltZy53b25kZXJob3d0by5j
b20vc2NyZWVuZ3JhYnMvNjMzODc1OTk4MjIxODQ5OTEzLmpwZyIgYWx0PSIiLz4g
TWFrZSBjb250ZW1wb3JhcnkgaW5zdGFsbGF0aW9uIGFydCA8ZW0gY2xhc3M9ImNU
eXBlIj5Ib3ctVG8gVmlkZW88L2VtPiA8c3BhbiBjbGFzcz0iZ3JhZGVTdGF0Ij48
c3Bhbj4xOjA1OjAyIDwvc3Bhbj5CPC9zcGFuPjwvYT48L2gzPjwvbGk+IAoJPGxp
PjxoMz48YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS93b25kZXJt
ZW50L2NhcHRpdmF0aW5nLWFydC1maXJlLWRhbmNpbmctMDExMzg0NS8iPjxpbWcg
c3JjPSJodHRwOi8vaW1nLndvbmRlcmhvd3RvLmNvbS9pbWFnZXMvZ2Z4L2dhbGxl
cnkvYXQ2MzQwMDU0NDUwNzI3NTc2MTEuanBnIiBhbHQ9IiIvPiBUaGUgQ2FwdGl2
YXRpbmcgQXJ0IG9mIEZpcmUgRGFuY2luZyA8ZW0gY2xhc3M9ImNUeXBlIj5Xb25k
ZXJtZW50PC9lbT48L2E+PC9oMz48L2xpPiAKCTxsaT48aDM+PGEgaHJlZj0iaHR0
cDovL3d3dy53b25kZXJob3d0by5jb20vaG93LXRvLWNyZWF0ZS1ob2xpZGF5LWxp
Z2h0cy1uYWlsLWFydC0yNzQyMDcvIj48aW1nIHNyYz0iaHR0cDovL2ltZy53b25k
ZXJob3d0by5jb20vc2NyZWVuZ3JhYnMvNjMzNzQwMzUyOTM0ODExMDc5LmpwZyIg
YWx0PSIiLz4gQ3JlYXRlIGhvbGlkYXkgbGlnaHRzIG5haWwgYXJ0IDxlbSBjbGFz
cz0iY1R5cGUiPkhvdy1UbyBWaWRlbzwvZW0+IDxzcGFuIGNsYXNzPSJncmFkZVN0
YXQiPjxzcGFuPjM6NTUgPC9zcGFuPkE8L3NwYW4+PC9hPjwvaDM+PC9saT4gCgk8
bGk+PGgzPjxhIGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2hvdy10
by1kZWNvcmF0ZS15b3VyLWhvdXNlLXdpdGgtc2lsaG91ZXR0ZS1hcnR3b3JrLTM2
MzgzOC8iPjxpbWcgc3JjPSJodHRwOi8vaW1nLndvbmRlcmhvd3RvLmNvbS9zY3Jl
ZW5ncmFicy82MzQwNzk4MTIwNjY3MDk5NjIuanBnIiBhbHQ9IiIvPiBEZWNvcmF0
ZSB5b3VyIGhvdXNlIHdpdGggc2lsaG91ZXR0ZSBhcnR3b3JrIDxlbSBjbGFzcz0i
Y1R5cGUiPkhvdy1UbyBWaWRlbzwvZW0+IDxzcGFuIGNsYXNzPSJncmFkZVN0YXQi
PjxzcGFuPjE6MzEgPC9zcGFuPkEtPC9zcGFuPjwvYT48L2gzPjwvbGk+IAoJPGxp
PjxoMz48YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9ob3ctdG8t
ZG8tcG9ydHJhaXQtcGFpbnRpbmctdXNpbmctY29sb3ItYXMtdmFsdWUtMjY1MzUx
LyI+PGltZyBzcmM9Imh0dHA6Ly9pbWcud29uZGVyaG93dG8uY29tL3NjcmVlbmdy
YWJzLzYzMzYwOTc5Mjc0NjQ4NzIzNi5qcGciIGFsdD0iIi8+IERvIHBvcnRyYWl0
IHBhaW50aW5nIHVzaW5nIGNvbG9yIGFzIHZhbHVlIDxlbSBjbGFzcz0iY1R5cGUi
Pkhvdy1UbyBWaWRlbzwvZW0+IDxzcGFuIGNsYXNzPSJncmFkZVN0YXQiPjxzcGFu
PjQ6MTQgPC9zcGFuPkE8L3NwYW4+PC9hPjwvaDM+PC9saT4gCgk8bGk+PGgzPjxh
IGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL3dvbmRlcm1lbnQvdHJp
cHB5LTNkLWlsbHVzaW9uLWdyYWZmaXRpLTAxMTkwNjcvIj48aW1nIHNyYz0iaHR0
cDovL2ltZy53b25kZXJob3d0by5jb20vaW1hZ2VzL2dmeC9nYWxsZXJ5L2F0NjM0
MTgwNzE2MjEyODU1MDY2LmpwZyIgYWx0PSIiLz4gVHJpcHB5IDNEIElsbHVzaW9u
IEdyYWZmaXRpIDxlbSBjbGFzcz0iY1R5cGUiPldvbmRlcm1lbnQ8L2VtPjwvYT48
L2gzPjwvbGk+IAoJPGxpPjxoMz48YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhv
d3RvLmNvbS9ob3ctdG8tZG8tc2FuZy1zb28tZm9ybS0zLWhhZWRvbmcta3VtZG8t
Z3VtZG8tYW5kLXRpZ2VyLXN0YW5jZS0zOTQ5MTQvIj48aW1nIHNyYz0iaHR0cDov
L2ltZy53b25kZXJob3d0by5jb20vc2NyZWVuZ3JhYnMvNjM0MTg3Njk0ODMzMTgy
NTMzLmpwZyIgYWx0PSIiLz4gRG8gU2FuZy1Tb28gRm9ybSAjMyBpbiBIYWVkb25n
IEt1bWRvIChHdW1kbykgYW5kIFRpZ2VyIFN0YW5jZSA8ZW0gY2xhc3M9ImNUeXBl
Ij5Ib3ctVG8gVmlkZW88L2VtPiA8c3BhbiBjbGFzcz0iZ3JhZGVTdGF0Ij48c3Bh
bj40OjU0IDwvc3Bhbj5CKzwvc3Bhbj48L2E+PC9oMz48L2xpPiAKCTxsaT48aDM+
PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20vd29uZGVybWVudC9y
b2Jpbi1yaG9kZS1rbm93cy1wbGF5LXdpdGgtaGltc2VsZi0wMTE4MjY5LyI+PGlt
ZyBzcmM9Imh0dHA6Ly9pbWcud29uZGVyaG93dG8uY29tL2ltYWdlcy9nZngvZ2Fs
bGVyeS9hdDYzNDE2MTA3NjQzNDU3NTI2Ny5qcGciIGFsdD0iIi8+IFJvYmluIFJo
b2RlIEtub3dzIEhvdyBUbyBQbGF5IFdpdGggSGltc2VsZiA8ZW0gY2xhc3M9ImNU
eXBlIj5Xb25kZXJtZW50PC9lbT48L2E+PC9oMz48L2xpPiAKCTxsaT48aDM+PGEg
aHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20vaG93LXRvLXdvcmstd2l0
aC1keW5hbWljYWx5LWNoYW5naW5nLWFydC11c2luZy1pbGx1c3RyYXRvci0xMDQz
LyI+PGltZyBzcmM9Imh0dHA6Ly9pbWcud29uZGVyaG93dG8uY29tL3NjcmVlbmdy
YWJzLzYzMzA4OTAxNDI3NTA5MzExOS5qcGciIGFsdD0iIi8+IFdvcmsgd2l0aCBk
eW5hbWljYWx5IGNoYW5naW5nIGFydCB1c2luZyBJbGx1c3RyYXRvciA8ZW0gY2xh
c3M9ImNUeXBlIj5Ib3ctVG8gVmlkZW88L2VtPiA8c3BhbiBjbGFzcz0iZ3JhZGVT
dGF0Ij48c3Bhbj4xMjoyNSA8L3NwYW4+Qis8L3NwYW4+PC9hPjwvaDM+PC9saT48
L3VsPg0KICAgICAgICANCiAgICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy53b25k
ZXJob3d0by5jb20vcmVsYXRlZC9hcnRpc3Qtd2l0aC1kZWF0aC13aXNoLShuby1w
aG90b3Nob3AtdXNlZCkvZnJvbS0wMTE5NDYwLyIgaWQ9ImN0bDAwX2NwaENvbnRl
bnRfaHZzUmlnaHRDb2x1bW5WaWRlb3NfYVNob3dNb3JlIiBjbGFzcz0ibW9yZUxp
bmsiIHJlbD0ibm9mb2xsb3ciPkFsbCBSZWxhdGVkPC9hPg0KICAgIDwvZGl2Pg0K
ICAgIDxkaXYgY2xhc3M9ImNiIj48L2Rpdj4NCiAgICANCiAgICANCjwvZGl2Pg0K
ICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2IxMCI+
PC9kaXY+PGRpdiBjbGFzcz0iY2IxMCI+PC9kaXY+PGRpdiBjbGFzcz0iY2IxMCI+
PC9kaXY+DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgPGRpdiBj
bGFzcz0iYWQzMDAiIGlkPSJhcGhfd2h0XzQwNF9sb3dfMzAweDI1MCI+CjxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWwpnb29nbGV0YWcu
Y21kLnB1c2goZnVuY3Rpb24oKXtnb29nbGV0YWcuZGlzcGxheSgnYXBoX3dodF80
MDRfbG93XzMwMHgyNTAnKTt9KTsKLy9dXT48L3NjcmlwdD4KPC9kaXY+DQogICAg
ICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgDQo8ZGl2IGNsYXNzPSJ3aWRn
ZXQzMDAiPg0KICAgIDxpZnJhbWUgc3JjPSJodHRwOi8vd3d3LndvbmRlcmhvd3Rv
LmNvbS9XaWRnZXRGcmFtZS5hc3B4IiB3aWR0aD0iMzAwcHgiIGhlaWdodD0iMjUw
cHgiIHN0eWxlPSJib3JkZXI6MHB4OyIgc2Nyb2xsaW5nPSJubyIgZnJhbWVib3Jk
ZXI9IjAiIG5hbWU9IldvbmRlckhvd1RvIj48L2lmcmFtZT4NCjwvZGl2Pg0KICAg
ICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImN0bDAwX2Nw
aENvbnRlbnRfcG5sQ29tbXVuaXR5QWN0aXZpdHkiPg0KCQkJCQ0KICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nIGRvdWJsZVBhZCI+DQogICAg
PGRpdiBjbGFzcz0iYmciPjxpPjwvaT4NCiAgICA8aDIgY2xhc3M9ImhlYWRsaW5l
Ij48YSBocmVmPSIvY29tbXVuaXR5LyI+UmVjZW50IEFjdGl2aXR5PC9hPjwvaDI+
PGRpdiBjbGFzcz0iY2IiPjwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9ImNiIj48L2Rp
dj48L2Rpdj4NCiAgICANCjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2
IGNsYXNzPSJyaWdodFdpZGdldCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8
ZGl2IGNsYXNzPSJzb2NpYWxFdmVudHMiPg0KICAgIDxkaXYgaWQ9ImN0bDAwX2Nw
aENvbnRlbnRfc2VsUHVibGljRXZlbnRzX3JwdEV2ZW50c19jdGwwMF9zX3BubFNv
Y2lhbEV2ZW50IiBjbGFzcz0ic29jaWFsRXZlbnQgIGV2ZW50U3VibWl0IHNvY2lh
bEV2ZW50SUQ5MTIxMTAgbm9NZW1iZXJQaWMiPg0KCQkJCQkNCiAgICANCiAgICAN
CiAgICA8ZGl2IGNsYXNzPSJldmVudEJvZHkiPg0KICAgICAgICA8ZGl2IGlkPSJj
dGwwMF9jcGhDb250ZW50X3NlbFB1YmxpY0V2ZW50c19ycHRFdmVudHNfY3RsMDBf
c19wbmxDb250VGh1bWIiIGNsYXNzPSJldmVudFRodW1iIj4NCgkJCQkJCQ0KICAg
ICAgICAgICAgPHNwYW4gY2xhc3M9InNsbmsgbG5raHR0cDovL3d3dy53b25kZXJo
b3d0by5jb20vaG93LXRvLW1ha2Utc25vd2ZsYWtlLWNhcmQtdXNpbmctY3JpY3V0
LXdpbnRlci13b29kbGFuZC0yOTU4NzkvIj48aW1nIHNyYz0iaHR0cDovL2ltZy53
b25kZXJob3d0by5jb20vc2NyZWVuZ3JhYnMvNjMzOTkwOTY5NTUyODk1MDM0Lmpw
ZyIgYWx0PSIiIHdpZHRoPSI2NSIgaGVpZ2h0PSI1MCIgLz48c3BhbiBjbGFzcz0i
dHlwZUljb25VVFMgaWNvblZpZFVUUyI+Qjwvc3Bhbj48L3NwYW4+DQogICAgICAg
IA0KCQkJCQk8L2Rpdj4NCiAgICAgICAgPHA+DQogICAgICAgICAgICANCiAgICAg
ICAgICAgIDxzcGFuIGNsYXNzPSJzbG5rIGxua2h0dHA6Ly93d3cud29uZGVyaG93
dG8uY29tL2NvbW11bml0eS9tZW1iZXIvcmF3aHkvIGVtIj5yYXdoeTwvc3Bhbj4g
c3VibWl0dGVkIGEgbmV3IGhvdy10byB2aWRlbywgdGVhY2hpbmcgeW91IDxzdHJv
bmc+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20vaG93LXRvLW1h
a2Utc25vd2ZsYWtlLWNhcmQtdXNpbmctY3JpY3V0LXdpbnRlci13b29kbGFuZC0y
OTU4NzkvIj5Ib3cgdG8gbWFrZSBhIHNub3dmbGFrZSBjYXJkIHVzaW5nIENyaWN1
dCBXaW50ZXIgV29vZGxhbmQ8L2E+PC9zdHJvbmc+LiBUaGlzIGlzIHJhd2h5J3Mg
PHN0cm9uZz43MTAybmQ8L3N0cm9uZz4gaG93LXRvIHZpZGVvDQogICAgICAgICAg
ICA8ZW0gY2xhc3M9InRzIj41IG1pbnV0ZXMgYWdvPC9lbT4NCiAgICAgICAgPC9w
Pg0KICAgICAgICANCiAgICA8L2Rpdj4NCiAgICANCiAgICA8ZGl2IGNsYXNzPSJj
YiI+PC9kaXY+DQoNCgkJCQk8L2Rpdj4NCg0KICAgIA0KICAgIDxkaXYgaWQ9ImN0
bDAwX2NwaENvbnRlbnRfc2VsUHVibGljRXZlbnRzX3JwdEV2ZW50c19jdGwwMV9z
X3BubFNvY2lhbEV2ZW50IiBjbGFzcz0ic29jaWFsRXZlbnQgIGV2ZW50U3VibWl0
IHNvY2lhbEV2ZW50SUQ5MTIxMDggbm9NZW1iZXJQaWMiPg0KCQkJCQkNCiAgICAN
CiAgICANCiAgICA8ZGl2IGNsYXNzPSJldmVudEJvZHkiPg0KICAgICAgICA8ZGl2
IGlkPSJjdGwwMF9jcGhDb250ZW50X3NlbFB1YmxpY0V2ZW50c19ycHRFdmVudHNf
Y3RsMDFfc19wbmxDb250VGh1bWIiIGNsYXNzPSJldmVudFRodW1iIj4NCgkJCQkJ
CQ0KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNsbmsgbG5raHR0cDovL3d3dy53
b25kZXJob3d0by5jb20vaG93LXRvLXVubG9jay10aHJlZS1zb21lLWFjaGlldmVt
ZW50LW1vZGVybi13YXJmYXJlLTItMjg1Njc0LyI+PGltZyBzcmM9Imh0dHA6Ly9p
bWcud29uZGVyaG93dG8uY29tL3NjcmVlbmdyYWJzLzYzNDAyNzEzNTQwMDQyNDgy
OS5qcGciIGFsdD0iIiB3aWR0aD0iNjUiIGhlaWdodD0iNTAiIC8+PHNwYW4gY2xh
c3M9InR5cGVJY29uVVRTIGljb25WaWRVVFMiPkErPC9zcGFuPjwvc3Bhbj4NCiAg
ICAgICAgDQoJCQkJCTwvZGl2Pg0KICAgICAgICA8cD4NCiAgICAgICAgICAgIA0K
ICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNsbmsgbG5raHR0cDovL3d3dy53b25k
ZXJob3d0by5jb20vY29tbXVuaXR5L21lbWJlci96YWNrdDE0Ny8gZW0iPlphY2sg
VC48L3NwYW4+IHN1Ym1pdHRlZCBhIG5ldyBob3ctdG8gdmlkZW8sIHRlYWNoaW5n
IHlvdSA8c3Ryb25nPjxhIGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29t
L2hvdy10by11bmxvY2stdGhyZWUtc29tZS1hY2hpZXZlbWVudC1tb2Rlcm4td2Fy
ZmFyZS0yLTI4NTY3NC8iPkhvdyB0byB1bmxvY2sgdGhlIFRocmVlLXNvbWUgYWNo
aWV2ZW1lbnQgaW4gTW9kZXJuIFdhcmZhcmUgMjwvYT48L3N0cm9uZz4uIFRoaXMg
aXMgWmFjayBULidzIDxzdHJvbmc+OTl0aDwvc3Ryb25nPiBob3ctdG8gdmlkZW8N
CiAgICAgICAgICAgIDxlbSBjbGFzcz0idHMiPjggbWludXRlcyBhZ288L2VtPg0K
ICAgICAgICA8L3A+DQogICAgICAgIA0KICAgIDwvZGl2Pg0KICAgIA0KICAgIDxk
aXYgY2xhc3M9ImNiIj48L2Rpdj4NCg0KCQkJCTwvZGl2Pg0KDQogICAgDQogICAg
PGRpdiBpZD0iY3RsMDBfY3BoQ29udGVudF9zZWxQdWJsaWNFdmVudHNfcnB0RXZl
bnRzX2N0bDAyX3NfcG5sU29jaWFsRXZlbnQiIGNsYXNzPSJzb2NpYWxFdmVudCAg
ZXZlbnRQbGF5bGlzdEFkZCBzb2NpYWxFdmVudElEOTEyMTAzIG5vTWVtYmVyUGlj
Ij4NCgkJCQkJDQogICAgDQogICAgDQogICAgPGRpdiBjbGFzcz0iZXZlbnRCb2R5
Ij4NCiAgICAgICAgPGRpdiBpZD0iY3RsMDBfY3BoQ29udGVudF9zZWxQdWJsaWNF
dmVudHNfcnB0RXZlbnRzX2N0bDAyX3NfcG5sQ29udFRodW1iIiBjbGFzcz0iZXZl
bnRUaHVtYiI+DQoJCQkJCQkNCiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbG5r
IGxua2h0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2hvdy10by1jcm9jaGV0LXdh
dGVyLWxpbHktMjE3NDA2LyI+PGltZyBzcmM9Imh0dHA6Ly9pbWcud29uZGVyaG93
dG8uY29tL3NjcmVlbmdyYWJzLzYzMzUyNTAzNTYzNjQwNjI1MC5qcGciIGFsdD0i
IiB3aWR0aD0iNjUiIGhlaWdodD0iNTAiIC8+PHNwYW4gY2xhc3M9InR5cGVJY29u
VVRTIGljb25WaWRVVFMiPkI8L3NwYW4+PC9zcGFuPg0KICAgICAgICANCgkJCQkJ
PC9kaXY+DQogICAgICAgIDxwPg0KICAgICAgICAgICAgDQogICAgICAgICAgICA8
c3BhbiBjbGFzcz0ic2xuayBsbmtodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9j
b21tdW5pdHkvbWVtYmVyL2NocmlzdGluZXBoaWxsaXBzLyBlbSI+Q2hyaXN0aW5l
IFBoaWxsaXBzPC9zcGFuPiBjcmVhdGVkIGEgbmV3IHBsYXlsaXN0IGNhbGxlZCA8
c3Ryb25nPjxhIGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2NvbW11
bml0eS9tZW1iZXIvY2hyaXN0aW5lcGhpbGxpcHMvcGxheWxpc3RzL2Nyb2NoZXQv
Ij5jcm9jaGV0PC9hPjwvc3Ryb25nPiwgdXNpbmcgPGEgaHJlZj0iaHR0cDovL3d3
dy53b25kZXJob3d0by5jb20vaG93LXRvLWNyb2NoZXQtd2F0ZXItbGlseS0yMTc0
MDYvIiBjbGFzcz0iZW0iPkhvdyB0byBjcm9jaGV0IGEgd2F0ZXIgbGlseTwvYT4g
YXMgaXRzIDxzdHJvbmc+MXN0PC9zdHJvbmc+IGhvdy10byB2aWRlbw0KICAgICAg
ICAgICAgPGVtIGNsYXNzPSJ0cyI+MjEgbWludXRlcyBhZ288L2VtPg0KICAgICAg
ICA8L3A+DQogICAgICAgIA0KICAgIDwvZGl2Pg0KICAgIA0KICAgIDxkaXYgY2xh
c3M9ImNiIj48L2Rpdj4NCg0KCQkJCTwvZGl2Pg0KDQogICAgDQogICAgDQogICAg
DQogICAgDQo8L2Rpdj48ZGl2IGNsYXNzPSJjYjEwIj48L2Rpdj4NCiAgICAgICAg
ICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJtb3JlTGluayIgcmVsPSJub2ZvbGxv
dyIgaHJlZj0iL2NvbW11bml0eS8iPkFsbCBDb21tdW5pdHkgQWN0aXZpdHk8L2E+
DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIA0K
CQkJPC9kaXY+DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICANCgkJPC9k
aXY+DQogICAgICAgICAgICANCiAgICAgICAgICAgIA0KICAgICAgICANCgk8L2Rp
dj4NCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICANCiAgICAgICAgDQogICAg
PCEtLTwvZGl2Pi0tPg0KICAgIA0KPC9kaXY+DQogICAgDQogICAgDQogICAgDQog
ICAgPGRpdiBjbGFzcz0iY2IgYnJkQiBkb3VibGVQYWQiPjwvZGl2Pg0KICAgICAg
ICANCiAgICANCiAgICANCiAgICA8ZGl2IGNsYXNzPSJjb250ZW50RnVsbCI+DQog
ICAgICAgIA0KDQo8ZGl2IGNsYXNzPSJob3J2cyB3aWRlTW9kZSIgaWQ9Imh2c19j
dGwwMF9jcGhDb250ZW50X2h2c0Zvb3RlclZpZGVvcyI+DQogICAgPGRpdiBjbGFz
cz0iaGVhZGluZyBjb2xvclN0YW5kYXJkIG5vQkciPg0KICAgIA0KICAgIDxoMiBj
bGFzcz0iaGVhZGxpbmUiPjxhIGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8u
Y29tL2ZpbmUtYXJ0L3NjdWxwdHVyZS12aWRlby9ieS1kYXRlLWFkZGVkLyI+TmV3
IGluIFNjdWxwdHVyZTwvYT48L2gyPjxkaXYgY2xhc3M9ImNiIj48L2Rpdj4NCiAg
ICANCiAgICANCjwvZGl2Pg0KICAgIA0KICAgIA0KICAgIA0KICAgIDxkaXYgY2xh
c3M9ImNvbnRlbnQgbXZ0Wm9uZV9SZWxhdGVkIj4NCiAgICAgICAgPHVsIGNsYXNz
PSJpdGVtcyBjb250ZW50SWNvbiBwYWdlMSI+IAoJPGxpPjxoMz48YSBocmVmPSJo
dHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9ob3ctdG8tbWFrZS1zdXJyZWFsLXBh
cGVyLW1hY2hlLWhhbmQtMzMyMzA1LyIgY2xhc3M9Im9uQ0NodHRwOi8vd3d3Lndv
bmRlcmhvd3RvLmNvbS9maW5lLWFydC9zY3VscHR1cmUtdmlkZW8vYnktZGF0ZS1h
ZGRlZC9ob3ctdG8tbWFrZS1zdXJyZWFsLXBhcGVyLW1hY2hlLWhhbmQtMzMyMzA1
LyI+PGltZyBzcmM9Imh0dHA6Ly9pbWcud29uZGVyaG93dG8uY29tL3NjcmVlbmdy
YWJzLzYzNDE4ODYyMDIxNzQxMDE3Ni5qcGciIGFsdD0iIi8+IE1ha2UgYSBzdXJy
ZWFsIHBhcGVyIG1hY2hlIGhhbmQgPGVtIGNsYXNzPSJjVHlwZSI+SG93LVRvIFZp
ZGVvPC9lbT4gPHNwYW4gY2xhc3M9ImdyYWRlU3RhdCI+PHNwYW4+OTowOSA8L3Nw
YW4+Qjwvc3Bhbj48L2E+PC9oMz48L2xpPiAKCTxsaT48aDM+PGEgaHJlZj0iaHR0
cDovL3d3dy53b25kZXJob3d0by5jb20vaG93LXRvLW1ha2Utc2lsaWNvbmUtbW9s
ZC10b3ktZmlndXJpbmUtMzUzMzUwLyIgY2xhc3M9Im9uQ0NodHRwOi8vd3d3Lndv
bmRlcmhvd3RvLmNvbS9maW5lLWFydC9zY3VscHR1cmUtdmlkZW8vYnktZGF0ZS1h
ZGRlZC9ob3ctdG8tbWFrZS1zaWxpY29uZS1tb2xkLXRveS1maWd1cmluZS0zNTMz
NTAvIj48aW1nIHNyYz0iaHR0cDovL2ltZy53b25kZXJob3d0by5jb20vc2NyZWVu
Z3JhYnMvNjM0MDYwMTg3Mzk4MzEyNTI3LmpwZyIgYWx0PSIiLz4gTWFrZSBhIHNp
bGljb25lIG1vbGQgb2YgYSB0b3kgZmlndXJpbmUgPGVtIGNsYXNzPSJjVHlwZSI+
SG93LVRvIFZpZGVvPC9lbT4gPHNwYW4gY2xhc3M9ImdyYWRlU3RhdCI+PHNwYW4+
NzoxMiA8L3NwYW4+Qjwvc3Bhbj48L2E+PC9oMz48L2xpPiAKCTxsaT48aDM+PGEg
aHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20vaG93LXRvLW1ha2Utc2lt
cGxlLXNpbGljb25lLW1vbGQtMjkwNzYwLyIgY2xhc3M9Im9uQ0NodHRwOi8vd3d3
LndvbmRlcmhvd3RvLmNvbS9maW5lLWFydC9zY3VscHR1cmUtdmlkZW8vYnktZGF0
ZS1hZGRlZC9ob3ctdG8tbWFrZS1zaW1wbGUtc2lsaWNvbmUtbW9sZC0yOTA3NjAv
Ij48aW1nIHNyYz0iaHR0cDovL2ltZy53b25kZXJob3d0by5jb20vc2NyZWVuZ3Jh
YnMvNjMzOTcxODAyMDAyMzQyNDIxLmpwZyIgYWx0PSIiLz4gTWFrZSBhIHNpbXBs
ZSBzaWxpY29uZSBtb2xkIDxlbSBjbGFzcz0iY1R5cGUiPkhvdy1UbyBWaWRlbzwv
ZW0+IDxzcGFuIGNsYXNzPSJncmFkZVN0YXQiPjxzcGFuPjU6MjcgPC9zcGFuPkMr
PC9zcGFuPjwvYT48L2gzPjwvbGk+IAoJPGxpPjxoMz48YSBocmVmPSJodHRwOi8v
d3d3LndvbmRlcmhvd3RvLmNvbS9ob3ctdG8tbWFrZS1wYXBlci1tYWNoZS1iYWJ5
LWVsZXBoYW50LTMzMjI4Mi8iIGNsYXNzPSJvbkNDaHR0cDovL3d3dy53b25kZXJo
b3d0by5jb20vZmluZS1hcnQvc2N1bHB0dXJlLXZpZGVvL2J5LWRhdGUtYWRkZWQv
aG93LXRvLW1ha2UtcGFwZXItbWFjaGUtYmFieS1lbGVwaGFudC0zMzIyODIvIj48
aW1nIHNyYz0iaHR0cDovL2ltZy53b25kZXJob3d0by5jb20vc2NyZWVuZ3JhYnMv
NjM0MDM5ODk1MDg0NzEwMDI5LmpwZyIgYWx0PSIiLz4gTWFrZSBhIHBhcGVyIG1h
Y2hlIGJhYnkgZWxlcGhhbnQgPGVtIGNsYXNzPSJjVHlwZSI+SG93LVRvIFZpZGVv
PC9lbT4gPHNwYW4gY2xhc3M9ImdyYWRlU3RhdCI+PHNwYW4+ODozMyA8L3NwYW4+
QS08L3NwYW4+PC9hPjwvaDM+PC9saT4gCgk8bGk+PGgzPjxhIGhyZWY9Imh0dHA6
Ly93d3cud29uZGVyaG93dG8uY29tL2hvdy10by1tYWtlLXlvdXItb3duLWNvb2tp
ZS1jdXR0ZXJzLXdpdGgtdGhyZWFkYmFuZ2VyLTMwMjAxNy8iIGNsYXNzPSJvbkND
aHR0cDovL3d3dy53b25kZXJob3d0by5jb20vZmluZS1hcnQvc2N1bHB0dXJlLXZp
ZGVvL2J5LWRhdGUtYWRkZWQvaG93LXRvLW1ha2UteW91ci1vd24tY29va2llLWN1
dHRlcnMtd2l0aC10aHJlYWRiYW5nZXItMzAyMDE3LyI+PGltZyBzcmM9Imh0dHA6
Ly9pbWcud29uZGVyaG93dG8uY29tL3NjcmVlbmdyYWJzLzYzNDAxMzk3MDQ5NDc0
MTg4Ni5qcGciIGFsdD0iIi8+IE1ha2UgeW91ciBvd24gY29va2llIGN1dHRlcnMg
d2l0aCBUaHJlYWRiYW5nZXIgPGVtIGNsYXNzPSJjVHlwZSI+SG93LVRvIFZpZGVv
PC9lbT4gPHNwYW4gY2xhc3M9ImdyYWRlU3RhdCI+PHNwYW4+MzoxNCA8L3NwYW4+
Qjwvc3Bhbj48L2E+PC9oMz48L2xpPiAKCTxsaT48aDM+PGEgaHJlZj0iaHR0cDov
L3d3dy53b25kZXJob3d0by5jb20vaG93LXRvLXVzZS1kYXlsaWdodC1sYW1wcy1h
bmQtZG8tcG9seW1lci1jbGF5LXNpbGtzY3JlZW5pbmctMzc5ODc3LyIgY2xhc3M9
Im9uQ0NodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9maW5lLWFydC9zY3VscHR1
cmUtdmlkZW8vYnktZGF0ZS1hZGRlZC9ob3ctdG8tdXNlLWRheWxpZ2h0LWxhbXBz
LWFuZC1kby1wb2x5bWVyLWNsYXktc2lsa3NjcmVlbmluZy0zNzk4NzcvIj48aW1n
IHNyYz0iaHR0cDovL2ltZy53b25kZXJob3d0by5jb20vc2NyZWVuZ3JhYnMvNjM0
MTMxMDE0NTM1NzQ4MTkxLmpwZyIgYWx0PSIiLz4gVXNlIGRheWxpZ2h0IGxhbXBz
IGFuZCBkbyBwb2x5bWVyIGNsYXkgc2lsa3NjcmVlbmluZyA8ZW0gY2xhc3M9ImNU
eXBlIj5Ib3ctVG8gVmlkZW88L2VtPiA8c3BhbiBjbGFzcz0iZ3JhZGVTdGF0Ij48
c3Bhbj42OjQ2IDwvc3Bhbj5CLTwvc3Bhbj48L2E+PC9oMz48L2xpPiAKCTxsaT48
aDM+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20vaG93LXRvLW1h
a2UtbWluaS1jaHVycm8tY2hhcm1zLW91dC1wb2x5bWVyLWNsYXktMzIxMDgyLyIg
Y2xhc3M9Im9uQ0NodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9maW5lLWFydC9z
Y3VscHR1cmUtdmlkZW8vYnktZGF0ZS1hZGRlZC9ob3ctdG8tbWFrZS1taW5pLWNo
dXJyby1jaGFybXMtb3V0LXBvbHltZXItY2xheS0zMjEwODIvIj48aW1nIHNyYz0i
aHR0cDovL2ltZy53b25kZXJob3d0by5jb20vc2NyZWVuZ3JhYnMvNjM0MDMyNTQz
MTEyNDkwNDAwLmpwZyIgYWx0PSIiLz4gTWFrZSBtaW5pIGNodXJybyBjaGFybXMg
b3V0IG9mIHBvbHltZXIgY2xheSA8ZW0gY2xhc3M9ImNUeXBlIj5Ib3ctVG8gVmlk
ZW88L2VtPiA8c3BhbiBjbGFzcz0iZ3JhZGVTdGF0Ij48c3Bhbj4yOjI0IDwvc3Bh
bj5CKzwvc3Bhbj48L2E+PC9oMz48L2xpPiAKCTxsaT48aDM+PGEgaHJlZj0iaHR0
cDovL3d3dy53b25kZXJob3d0by5jb20vaG93LXRvLW1ha2UtcG9seW1lci1jbGF5
LWNob2NvbGF0ZS1mcm9zdGVkLWRvdWdobnV0LTM0NTg3MS8iIGNsYXNzPSJvbkND
aHR0cDovL3d3dy53b25kZXJob3d0by5jb20vZmluZS1hcnQvc2N1bHB0dXJlLXZp
ZGVvL2J5LWRhdGUtYWRkZWQvaG93LXRvLW1ha2UtcG9seW1lci1jbGF5LWNob2Nv
bGF0ZS1mcm9zdGVkLWRvdWdobnV0LTM0NTg3MS8iPjxpbWcgc3JjPSJodHRwOi8v
aW1nLndvbmRlcmhvd3RvLmNvbS9zY3JlZW5ncmFicy82MzQwNTE0MzkyNTAwMzc4
NzQuanBnIiBhbHQ9IiIvPiBNYWtlIGEgcG9seW1lciBjbGF5IGNob2NvbGF0ZSBm
cm9zdGVkIGRvdWdobnV0IDxlbSBjbGFzcz0iY1R5cGUiPkhvdy1UbyBWaWRlbzwv
ZW0+IDxzcGFuIGNsYXNzPSJncmFkZVN0YXQiPjxzcGFuPjI6NTkgPC9zcGFuPkI8
L3NwYW4+PC9hPjwvaDM+PC9saT4gCgk8bGk+PGgzPjxhIGhyZWY9Imh0dHA6Ly93
d3cud29uZGVyaG93dG8uY29tL2hvdy10by1tYWtlLXNocmVrLW91dC1jbGF5LTM2
ODE4Ny8iIGNsYXNzPSJvbkNDaHR0cDovL3d3dy53b25kZXJob3d0by5jb20vZmlu
ZS1hcnQvc2N1bHB0dXJlLXZpZGVvL2J5LWRhdGUtYWRkZWQvaG93LXRvLW1ha2Ut
c2hyZWstb3V0LWNsYXktMzY4MTg3LyI+PGltZyBzcmM9Imh0dHA6Ly9pbWcud29u
ZGVyaG93dG8uY29tL3NjcmVlbmdyYWJzLzYzNDEwMjE0NzQyMDIyOTQ3MC5qcGci
IGFsdD0iIi8+IE1ha2UgU2hyZWsgb3V0IG9mIGNsYXkgPGVtIGNsYXNzPSJjVHlw
ZSI+SG93LVRvIFZpZGVvPC9lbT4gPHNwYW4gY2xhc3M9ImdyYWRlU3RhdCI+PHNw
YW4+Nzo1OSA8L3NwYW4+Qis8L3NwYW4+PC9hPjwvaDM+PC9saT48L3VsPg0KICAg
ICAgICANCiAgICAgICAgDQogICAgPC9kaXY+DQogICAgPGRpdiBjbGFzcz0iY2Ii
PjwvZGl2Pg0KICAgIA0KICAgIA0KPC9kaXY+DQogICAgICAgIA0KICAgICAgICAN
CiAgICA8L2Rpdj4NCg0KICAgICAgICA8ZGl2IGNsYXNzPSJjYiI+PC9kaXY+DQog
ICAgPC9kaXY+DQogICAgDQogICAgPGRpdiBpZD0iY3RsMDBfc3dTaGFyZV9wbmxT
aGFyZVdpZGdldCIgY2xhc3M9InNvY2lhbFdpZGdldCB3aWRnZXRMdCI+DQoJDQog
ICAgPGlmcmFtZSBzcmM9Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL1dpZGdl
dEZyYW1lLmFzcHg/dHlwZT1zb2NpYWwjc2hhcmUjbm9ybWFsIiB3aWR0aD0iNTVw
eCIgaGVpZ2h0PSIzMDVweCIgc3R5bGU9ImJvcmRlcjowcHg7bWFyZ2luOmF1dG87
IiBzY3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0iMCIgbmFtZT0iV29uZGVySG93
VG8iPjwvaWZyYW1lPg0KDQo8L2Rpdj4NCg0KDQogICAgDQoNCjxkaXYgaWQ9ImN0
bDAwX3N3U29jaWFsX3BubFNvY2lhbFdpZGdldCIgY2xhc3M9InNvY2lhbFdpZGdl
dCB3aWRnZXRSdCI+DQoJDQogICAgPGEgaHJlZj0iaHR0cDovL3d3dy5mYWNlYm9v
ay5jb20vd29uZGVybWVudCIgdGl0bGU9Ikxpa2UgV29uZGVySG93VG8gb24gRmFj
ZWJvb2siIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iZmFjZWJvb2siPjwvYT4NCiAg
ICA8YSBocmVmPSJodHRwOi8vdHdpdHRlci5jb20vd29uZGVyaG93dG8iIHRpdGxl
PSJGb2xsb3cgV29uZGVySG93VG8gb24gVHdpdHRlciIgdGFyZ2V0PSJfYmxhbmsi
IGNsYXNzPSJ0d2l0dGVyIj48L2E+DQogICAgPGEgaHJlZj0iaHR0cDovL2RpZ2cu
Y29tL2xvZ2luL25iMjE5OGJhMTgwOTFhNzc0ODYwYWRmYWNlZDNmMmEwOCIgdGl0
bGU9IkZvbGxvdyBXb25kZXJIb3dUbyBvbiBEaWdnIiB0YXJnZXQ9Il9ibGFuayIg
Y2xhc3M9ImRpZ2ciPjwvYT4NCg0KPC9kaXY+DQo8L2Rpdj4NCjxkaXYgaWQ9ImN0
bDAwX3BubExvd0Ryb3BEb3ducyIgY2xhc3M9ImZ1bGxXaWR0aCI+DQoJDQogICAg
PCEtLSBTdGFydDogRHJvcC1Eb3duIE1lbnVzIC0tPg0KICAgIAo8ZGl2IGNsYXNz
PSJkZE1lbnUgZGRIb21lIj4KPHVsPgoJPGxpIGNsYXNzPSJlcyI+PGEgaHJlZj0i
aHR0cDovL3d3dy53b25kZXJob3d0by5jb20vd29uZGVybWVudC8iPldvbmRlcm1l
bnQgQmxvZzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cud29uZGVy
aG93dG8uY29tL3Nwb3RsaWdodC8iPlNwb3RsaWdodDwvYT48L2xpPgoJPGxpPjxh
IGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2hvdC8iPkhvdDwvYT48
L2xpPgoJPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2Zy
ZXNoLyI+RnJlc2g8L2E+PC9saT4KCTxsaT48YSBocmVmPSJodHRwOi8vd3d3Lndv
bmRlcmhvd3RvLmNvbS90b3AtZ3JhZGUtdmlkZW9zLyI+VG9wIEdyYWRlPC9hPjwv
bGk+Cgk8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20vZ2Vt
cy8iPkhpZGRlbiBHZW1zPC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iaHR0cDovL3d3
dy53b25kZXJob3d0by5jb20vbmV3LWhvdy10by1hcnRpY2xlcy8iPk5ldyBBcnRp
Y2xlcyBCeSBZb3U8L2E+PC9saT4KPC91bD4KPGRpdiBjbGFzcz0iY2IiPjwvZGl2
Pgo8ZGl2IGNsYXNzPSJ1cEFycm93Ij48L2Rpdj4KPC9kaXY+DQogICAgPGRpdiBj
bGFzcz0iZGRNZW51IGRkQ2F0cyI+Cjx1bD4KCTxsaSBjbGFzcz0iYWxsQ2F0cyI+
PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20vY2F0ZWdvcmllcy8i
PkJyb3dzZSBhbGwgY2F0ZWdvcmllcy4uLjwvYT48L2xpPgoJPGxpPjxhIGhyZWY9
Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2FsY29ob2wvIj5BbGNvaG9sPC9h
PjwvbGk+Cgk8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20v
YXJ0cy1jcmFmdHMvIj5BcnRzICZhbXA7IENyYWZ0czwvYT48L2xpPgoJPGxpPjxh
IGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2NhcnMtYmlrZXMtcGxh
bmVzLyI+QXV0b3MsIE1vdG9yY3ljbGVzICZhbXA7IFBsYW5lczwvYT48L2xpPgoJ
PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2JlYXV0eS1z
dHlsZS8iPkJlYXV0eSAmYW1wOyBTdHlsZTwvYT48L2xpPgoJPGxpPjxhIGhyZWY9
Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2J1c2luZXNzLW1vbmV5LyI+QnVz
aW5lc3MgJmFtcDsgTW9uZXk8L2E+PC9saT4KCTxsaT48YSBocmVmPSJodHRwOi8v
d3d3LndvbmRlcmhvd3RvLmNvbS9jb21wdXRlci1wcm9ncmFtbWluZy8iPkNvbXB1
dGVycyAmYW1wOyBQcm9ncmFtbWluZzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9Imh0
dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2RhbmNlLyI+RGFuY2U8L2E+PC9saT4K
CTxsaT48YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9kYXRpbmct
cmVsYXRpb25zaGlwcy8iPkRhdGluZyAmYW1wOyBSZWxhdGlvbnNoaXBzPC9hPjwv
bGk+CjwvdWw+Cjx1bD4KCTxsaT48YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhv
d3RvLmNvbS9kaWV0LWhlYWx0aC8iPkRpZXQgJmFtcDsgSGVhbHRoPC9hPjwvbGk+
Cgk8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20vZGlzYXN0
ZXItcHJlcGFyYXRpb24vIj5EaXNhc3RlciBQcmVwYXJhdGlvbjwvYT48L2xpPgoJ
PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2VkdWNhdGlv
bi8iPkVkdWNhdGlvbjwvYT48L2xpPgoJPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cu
d29uZGVyaG93dG8uY29tL2VsZWN0cm9uaWNzLyI+RWxlY3Ryb25pY3M8L2E+PC9s
aT4KCTxsaT48YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9mYW1p
bHkvIj5GYW1pbHk8L2E+PC9saT4KCTxsaT48YSBocmVmPSJodHRwOi8vd3d3Lndv
bmRlcmhvd3RvLmNvbS9tb3ZpZXMtZmlsbS10aGVhdGVyLyI+RmlsbSAmYW1wOyBU
aGVhdGVyPC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJo
b3d0by5jb20vZmluZS1hcnQvIj5GaW5lIEFydDwvYT48L2xpPgoJPGxpPjxhIGhy
ZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2ZpdG5lc3MvIj5GaXRuZXNz
PC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0by5j
b20vZm9vZC8iPkZvb2Q8L2E+PC9saT4KPC91bD4KPHVsPgoJPGxpPjxhIGhyZWY9
Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2dhbWJsaW5nLyI+R2FtYmxpbmc8
L2E+PC9saT4KCTxsaT48YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNv
bS9nYW1lcy8iPkdhbWVzPC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iaHR0cDovL3d3
dy53b25kZXJob3d0by5jb20vaG9iYmllcy10b3lzLyI+SG9iYmllcyAmYW1wOyBU
b3lzPC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0
by5jb20vaG9tZS1nYXJkZW4vIj5Ib21lICZhbXA7IEdhcmRlbjwvYT48L2xpPgoJ
PGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2hvc3Rpbmct
ZW50ZXJ0YWluaW5nLyI+SG9zdGluZyAmYW1wOyBFbnRlcnRhaW5pbmc8L2E+PC9s
aT4KCTxsaT48YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9sYW5n
dWFnZS1sZXNzb25zLyI+TGFuZ3VhZ2U8L2E+PC9saT4KCTxsaT48YSBocmVmPSJo
dHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9tYWdpYy1wYXJsb3ItdHJpY2tzLyI+
TWFnaWMgJmFtcDsgUGFybG9yIFRyaWNrczwvYT48L2xpPgoJPGxpPjxhIGhyZWY9
Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL21vdGl2YXRpb24tc2VsZi1oZWxw
LyI+TW90aXZhdGlvbiAmYW1wOyBTZWxmIEhlbHA8L2E+PC9saT4KCTxsaT48YSBo
cmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9tdXNpYy1pbnN0cnVtZW50
cy8iPk11c2ljICZhbXA7IEluc3RydW1lbnRzPC9hPjwvbGk+CjwvdWw+Cjx1bD4K
CTxsaT48YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9vdXRkb29y
LXJlY3JlYXRpb24vIj5PdXRkb29yIFJlY3JlYXRpb248L2E+PC9saT4KCTxsaT48
YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9wZXRzLWFuaW1hbHMv
Ij5QZXRzICZhbXA7IEFuaW1hbHM8L2E+PC9saT4KCTxsaT48YSBocmVmPSJodHRw
Oi8vd3d3LndvbmRlcmhvd3RvLmNvbS9wcmFuay1jb24vIj5QcmFua3MgJmFtcDsg
Q29uczwvYT48L2xpPgoJPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93
dG8uY29tL3NvZnR3YXJlLyI+U29mdHdhcmU8L2E+PC9saT4KCTxsaT48YSBocmVm
PSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9zcGlyaXR1YWxpdHkvIj5TcGly
aXR1YWxpdHk8L2E+PC9saT4KCTxsaT48YSBocmVmPSJodHRwOi8vd3d3LndvbmRl
cmhvd3RvLmNvbS9zcG9ydHMvIj5TcG9ydHM8L2E+PC9saT4KCTxsaT48YSBocmVm
PSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS90cmF2ZWwvIj5UcmF2ZWw8L2E+
PC9saT4KCTxsaT48YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS92
aWRlby1nYW1lcy8iPlZpZGVvIEdhbWVzPC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0i
aHR0cDovL3d3dy53b25kZXJob3d0by5jb20vd2VhcG9ucy8iPldlYXBvbnM8L2E+
PC9saT4KPC91bD4KPGRpdiBjbGFzcz0iY2IiPjwvZGl2PjxkaXYgY2xhc3M9InVw
QXJyb3ciPjwvZGl2PjwvZGl2Pg0KICAgIAo8ZGl2IGNsYXNzPSJkZE1lbnUgZGRD
b21tdW5pdHkiPgo8dWw+Cgk8bGkgY2xhc3M9ImVzIj48YSBocmVmPSJqYXZhc2Ny
aXB0Oi8vIExvZ2luIG9yIEpvaW4iIGNsYXNzPSJzaWdudXBMaW5rIj5Mb2dpbiBv
ciBKb2luPC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJo
b3d0by5jb20vY29tbXVuaXR5LyI+Q29tbXVuaXR5IEFjdGl2aXR5PC9hPjwvbGk+
Cgk8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20vdm90ZS8i
PlZvdGUgb24gTmV3IEFydGljbGVzPC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iaHR0
cDovL3d3dy53b25kZXJob3d0by5jb20vY29tbXVuaXR5L3BsYXlsaXN0cy8iPlBs
YXlsaXN0czwvYT48L2xpPgoJPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cud29uZGVy
aG93dG8uY29tL2NvbW11bml0eS9uZXdiaWVzLyI+TWVtYmVyczwvYT48L2xpPgo8
L3VsPgo8ZGl2IGNsYXNzPSJjYiI+PC9kaXY+CjxkaXYgY2xhc3M9InVwQXJyb3ci
PjwvZGl2Pgo8L2Rpdj4NCiAgICA8IS0tIEVuZDogRHJvcC1Eb3duIE1lbnVzIC0t
Pg0KDQo8L2Rpdj4NCjwhLS0gZ29vZ2xlX2FkX3NlY3Rpb25fc3RhcnQod2VpZ2h0
PWlnbm9yZSkgLS0+DQo8ZGl2IGlkPSJjdGwwMF9wbmxXSFRGb290ZXIiPg0KCQ0K
ICAgIDxkaXYgaWQ9ImZvb3RlciIgY2xhc3M9InJlZ2lvbkZvb3RlciI+DQogICAg
ICAgIDxkaXYgY2xhc3M9ImZ1bGxXaWR0aCI+DQogICAgICAgICAgICANCiAgICAg
ICAgICAgIDxkaXYgY2xhc3M9ImZvb3RlckNhdGVnb3JpZXNMaXN0Ij4KPGRpdiBj
bGFzcz0idG9wVmlkZW9MaXN0cyI+CjxkaXYgY2xhc3M9InRvcFZpZGVvTGlzdCI+
CiA8c3Bhbj5SZWNlbnRseSBTcG90bGlnaHRlZDwvc3Bhbj4KIDx1bD4gPGxpPjxh
IGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2hvdy10by1tYWtlLW1l
ZGljaW5hbC1hcGhyb2Rpc2lhYy1zbmFrZS13aW5lLTAxMTYwMTgvIj5Ib3cgVG8g
TWFrZSB0aGUgTWVkaWNpbmFsIEFwaHJvZGlzaWFjIFNuYWtlIFdpbmU8L2E+PC9s
aT4KIDxsaT48YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9ob3ct
dG8tY3JlYXRlLWthbWVoYW1laGEtZW5lcmd5LWJsYXN0LWF0dGFjay1mcm9tLWRy
YWdvbi1iYWxsLWFmdGVyLWVmZmVjdHMtMTcwNDI4LyI+SG93IHRvIGNyZWF0ZSBh
IEthbWVoYW1laGEgKGVuZXJneSBibGFzdCBhdHRhY2spIGZyb20gRHJhZ29uIEJh
bGwgaW4gQWZ0ZXIgRWZmZWN0czwvYT48L2xpPgogPGxpPjxhIGhyZWY9Imh0dHA6
Ly93d3cud29uZGVyaG93dG8uY29tL2hvdy10by1leHRyYWN0LXNweS1xdWFsaXR5
LWNhbWVyYS1taW5pLWR2ci1mcm9tLWJhcmJpZS12aWRlby1naXJsLWZhc2hpb24t
ZG9sbC0zOTQxOTgvIj5Ib3cgdG8gZXh0cmFjdCBhIHNweSBxdWFsaXR5IGNhbWVy
YSAmYW1wOyBtaW5pLURWUiBmcm9tIGEgQmFyYmllIFZpZGVvIEdpcmwgZmFzaGlv
biBkb2xsPC9hPjwvbGk+CiA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJo
b3d0by5jb20vaG93LXRvLWNhc3QtZW1iZWRtZW50cy1jbGVhci1wb2x5ZXN0aGVy
LXJlc2luLTE1MTUwOS8iPkhvdyB0byBjYXN0IGVtYmVkbWVudHMgaW4gY2xlYXIg
cG9seWVzdGhlciByZXNpbjwvYT48L2xpPgogPGxpPjxhIGhyZWY9Imh0dHA6Ly93
d3cud29uZGVyaG93dG8uY29tL2hvdy10by1tYWtlLWNoZWFwLWN1dHN0b21pemVk
LXNpbGljb25lLWNhbmR5LW1vbGRzLTIxMDMzNS8iPkhvdyB0byBtYWtlIGNoZWFw
IGN1dHN0b21pemVkIHNpbGljb25lIGNhbmR5IG1vbGRzPC9hPjwvbGk+CiA8L3Vs
Pgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9wVmlkZW9MaXN0Ij4KIDxzcGFuPlBvcHVs
YXIgU2VhcmNoZWQgVmlkZW9zPC9zcGFuPgogPHVsPiA8bGk+PGEgaHJlZj0iaHR0
cDovL3d3dy53b25kZXJob3d0by5jb20vaG93LXRvLXVzZS10YW1wb24tMjM1NjI2
LyI+SG93IHRvIHVzZSBhIHRhbXBvbjwvYT48L2xpPgogPGxpPjxhIGhyZWY9Imh0
dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2hvdy10by1waWVyY2UteW91ci1saXAt
aG9tZS0zMTI4MDAvIj5Ib3cgdG8gcGllcmNlIHlvdXIgbGlwIGF0IGhvbWU8L2E+
PC9saT4KIDxsaT48YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9o
b3ctdG8tcmVzdG9yZS1wYy1zb2Z0d2FyZS1mYWN0b3J5LWNvbmRpdGlvbi0zMTM5
MDUvIj5Ib3cgdG8gcmVzdG9yZSBQQyBzb2Z0d2FyZSB0byBmYWN0b3J5IGNvbmRp
dGlvbjwvYT48L2xpPgogPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93
dG8uY29tL2hvdy10by10ZWxsLWlmLWd1eS1saWtlcy15b3UtMjgwODEwLyI+SG93
IHRvIHRlbGwgaWYgYSBndXkgbGlrZXMgeW91PC9hPjwvbGk+CiA8bGk+PGEgaHJl
Zj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20vaG93LXRvLXJlbGF4LTkxMTYv
Ij5Ib3cgdG8gcmVsYXg8L2E+PC9saT4KIDwvdWw+CjwvZGl2Pgo8ZGl2IGNsYXNz
PSJ0b3BWaWRlb0xpc3QiPgogPHNwYW4+UmlzaW5nIEZyZXNoIFZpZGVvczwvc3Bh
bj4KIDx1bD4gPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29t
L2hvdy10by1jb3VudC1jYWxvcmllcy13aXRoLWNhbG9yaWUtY2FsZW5kYXItMzQw
OTU0LyI+SG93IHRvIGNvdW50IGNhbG9yaWVzIHdpdGggYSBjYWxvcmllIGNhbGVu
ZGFyPC9hPjwvbGk+CiA8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0
by5jb20vaG93LXRvLW1ha2UtaWNlZC1jb2ZmZWUteW91ci1raXRjaGVuLTM0MDY4
OC8iPkhvdyB0byBtYWtlIGljZWQgY29mZmVlIGluIHlvdXIga2l0Y2hlbjwvYT48
L2xpPgogPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2hv
dy10by1iYWtlLWJhY29uLWN1cHMtZm9yLWludGVyZXN0aW5nLXNuYWNrcy0zMzk5
MTIvIj5Ib3cgdG8gYmFrZSAnYmFjb24gY3VwcycgZm9yIGludGVyZXN0aW5nIHNu
YWNrczwvYT48L2xpPgogPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93
dG8uY29tL2hvdy10by1zdXJ2aXZlLWZpbmFscy13ZWVrLTMzMzk0Ni8iPkhvdyB0
byBzdXJ2aXZlIGZpbmFscyB3ZWVrPC9hPjwvbGk+CiA8bGk+PGEgaHJlZj0iaHR0
cDovL3d3dy53b25kZXJob3d0by5jb20vaG93LXRvLW1ha2UtY29va2llcy1mb3It
eW91ci1kb2xsaG91c2UtMzU1ODc1LyI+SG93IHRvIG1ha2UgY29va2llcyBmb3Ig
eW91ciBkb2xsaG91c2U8L2E+PC9saT4KIDwvdWw+CjwvZGl2Pgo8ZGl2IGNsYXNz
PSJjYiI+PC9kaXY+PGRpdiBjbGFzcz0iY2IxMCI+PC9kaXY+CjwvZGl2PjxkaXYg
Y2xhc3M9ImZvb3RlckxlZnRDb2wiPjx1bD4KPGxpPjxhIGNsYXNzPSJzZWN0aW9u
VGl0bGUiIGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2NhdGVnb3Jp
ZXMvIj5DYXRlZ29yaWVzPC9hPjwvbGk+IAo8bGk+PGEgaHJlZj0iaHR0cDovL3d3
dy53b25kZXJob3d0by5jb20vYWxjb2hvbC8iIHRpdGxlPSJBbGNvaG9sIj5BbGNv
aG9sPC9hPjwvbGk+IAo8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0
by5jb20vYXJ0cy1jcmFmdHMvIiB0aXRsZT0iQXJ0cyAmYW1wOyBDcmFmdHMiPkFy
dHMgJmFtcDsgQ3JhZnRzPC9hPjwvbGk+IAo8bGk+PGEgaHJlZj0iaHR0cDovL3d3
dy53b25kZXJob3d0by5jb20vY2Fycy1iaWtlcy1wbGFuZXMvIiB0aXRsZT0iQXV0
b3MsIE1vdG9yY3ljbGVzICZhbXA7IFBsYW5lcyI+QXV0b3MsIE1vdG9yY3ljbGVz
ICZhbXA7IFBsYW5lczwvYT48L2xpPiAKPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cu
d29uZGVyaG93dG8uY29tL2JlYXV0eS1zdHlsZS8iIHRpdGxlPSJCZWF1dHkgJmFt
cDsgU3R5bGUiPkJlYXV0eSAmYW1wOyBTdHlsZTwvYT48L2xpPiAKPGxpPjxhIGhy
ZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2J1c2luZXNzLW1vbmV5LyIg
dGl0bGU9IkJ1c2luZXNzICZhbXA7IE1vbmV5Ij5CdXNpbmVzcyAmYW1wOyBNb25l
eTwvYT48L2xpPiAKPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8u
Y29tL2NvbXB1dGVyLXByb2dyYW1taW5nLyIgdGl0bGU9IkNvbXB1dGVycyAmYW1w
OyBQcm9ncmFtbWluZyI+Q29tcHV0ZXJzICZhbXA7IFByb2dyYW1taW5nPC9hPjwv
bGk+IAo8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20vZGFu
Y2UvIiB0aXRsZT0iRGFuY2UgTGVzc29ucyI+RGFuY2U8L2E+PC9saT4gCjxsaT48
YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9kYXRpbmctcmVsYXRp
b25zaGlwcy8iIHRpdGxlPSJEYXRpbmcgJmFtcDsgUmVsYXRpb25zaGlwcyI+RGF0
aW5nICZhbXA7IFJlbGF0aW9uc2hpcHM8L2E+PC9saT4gCjxsaT48YSBocmVmPSJo
dHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9kaWV0LWhlYWx0aC8iIHRpdGxlPSJE
aWV0ICZhbXA7IEhlYWx0aCI+RGlldCAmYW1wOyBIZWFsdGg8L2E+PC9saT4gCjxs
aT48YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9kaXNhc3Rlci1w
cmVwYXJhdGlvbi8iIHRpdGxlPSJEaXNhc3RlciBQcmVwYXJhdGlvbiI+RGlzYXN0
ZXIgUHJlcGFyYXRpb248L2E+PC9saT4gCjxsaT48YSBocmVmPSJodHRwOi8vd3d3
LndvbmRlcmhvd3RvLmNvbS9lZHVjYXRpb24vIiB0aXRsZT0iRWR1Y2F0aW9uIj5F
ZHVjYXRpb248L2E+PC9saT4gCjwvdWw+PC9kaXY+PGRpdiBjbGFzcz0iZm9vdGVy
TGVmdENvbCI+PHVsPjxsaT48YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3Rv
LmNvbS9lbGVjdHJvbmljcy8iIHRpdGxlPSJFbGVjdHJvbmljcyI+RWxlY3Ryb25p
Y3M8L2E+PC9saT4gCjxsaT48YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3Rv
LmNvbS9mYW1pbHkvIiB0aXRsZT0iRmFtaWx5Ij5GYW1pbHk8L2E+PC9saT4gCjxs
aT48YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9tb3ZpZXMtZmls
bS10aGVhdGVyLyIgdGl0bGU9Ik1vdmllcywgRmlsbSwgVGhlYXRlciI+RmlsbSAm
YW1wOyBUaGVhdGVyPC9hPjwvbGk+IAo8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy53
b25kZXJob3d0by5jb20vZmluZS1hcnQvIiB0aXRsZT0iRmluZSBBcnQiPkZpbmUg
QXJ0PC9hPjwvbGk+IAo8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0
by5jb20vZml0bmVzcy8iIHRpdGxlPSJGaXRuZXNzIj5GaXRuZXNzPC9hPjwvbGk+
IAo8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20vZm9vZC8i
IHRpdGxlPSJGb29kIENvb2tpbmcgUmVjaXBlcyI+Rm9vZDwvYT48L2xpPiAKPGxp
PjxhIGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2dhbWJsaW5nLyIg
dGl0bGU9IkdhbWJsaW5nIj5HYW1ibGluZzwvYT48L2xpPiAKPGxpPjxhIGhyZWY9
Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2dhbWVzLyIgdGl0bGU9IkdhbWVz
Ij5HYW1lczwvYT48L2xpPiAKPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cud29uZGVy
aG93dG8uY29tL2hvYmJpZXMtdG95cy8iIHRpdGxlPSJIb2JiaWVzICZhbXA7IFRv
eXMiPkhvYmJpZXMgJmFtcDsgVG95czwvYT48L2xpPiAKPGxpPjxhIGhyZWY9Imh0
dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2hvbWUtZ2FyZGVuLyIgdGl0bGU9Ikhv
bWUgJmFtcDsgR2FyZGVuIj5Ib21lICZhbXA7IEdhcmRlbjwvYT48L2xpPiAKPGxp
PjxhIGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2hvc3RpbmctZW50
ZXJ0YWluaW5nLyIgdGl0bGU9Ikhvc3RpbmcgJmFtcDsgRW50ZXJ0YWluaW5nIj5I
b3N0aW5nICZhbXA7IEVudGVydGFpbmluZzwvYT48L2xpPiAKPGxpPjxhIGhyZWY9
Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL2xhbmd1YWdlLWxlc3NvbnMvIiB0
aXRsZT0iTGFuZ3VhZ2UgTGVzc29ucyI+TGFuZ3VhZ2U8L2E+PC9saT4gCjwvdWw+
PC9kaXY+PGRpdiBjbGFzcz0iZm9vdGVyTGVmdENvbCI+PHVsPjxsaT48YSBocmVm
PSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9tYWdpYy1wYXJsb3ItdHJpY2tz
LyIgdGl0bGU9Ik1hZ2ljICZhbXA7IFBhcmxvciBUcmlja3MiPk1hZ2ljICZhbXA7
IFBhcmxvciBUcmlja3M8L2E+PC9saT4gCjxsaT48YSBocmVmPSJodHRwOi8vd3d3
LndvbmRlcmhvd3RvLmNvbS9tb3RpdmF0aW9uLXNlbGYtaGVscC8iIHRpdGxlPSJN
b3RpdmF0aW9uICZhbXA7IFNlbGYgSGVscCI+TW90aXZhdGlvbiAmYW1wOyBTZWxm
IEhlbHA8L2E+PC9saT4gCjxsaT48YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhv
d3RvLmNvbS9tdXNpYy1pbnN0cnVtZW50cy8iIHRpdGxlPSJNdXNpYyAmYW1wOyBJ
bnN0cnVtZW50cyI+TXVzaWMgJmFtcDsgSW5zdHJ1bWVudHM8L2E+PC9saT4gCjxs
aT48YSBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9vdXRkb29yLXJl
Y3JlYXRpb24vIiB0aXRsZT0iT3V0ZG9vciBSZWNyZWF0aW9uIj5PdXRkb29yIFJl
Y3JlYXRpb248L2E+PC9saT4gCjxsaT48YSBocmVmPSJodHRwOi8vd3d3LndvbmRl
cmhvd3RvLmNvbS9wZXRzLWFuaW1hbHMvIiB0aXRsZT0iUGV0cyAmYW1wOyBBbmlt
YWxzIj5QZXRzICZhbXA7IEFuaW1hbHM8L2E+PC9saT4gCjxsaT48YSBocmVmPSJo
dHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbS9wcmFuay1jb24vIiB0aXRsZT0iUHJh
bmtzICZhbXA7IENvbnMiPlByYW5rcyAmYW1wOyBDb25zPC9hPjwvbGk+IAo8bGk+
PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20vc29mdHdhcmUvIiB0
aXRsZT0iU29mdHdhcmUiPlNvZnR3YXJlPC9hPjwvbGk+IAo8bGk+PGEgaHJlZj0i
aHR0cDovL3d3dy53b25kZXJob3d0by5jb20vc3Bpcml0dWFsaXR5LyIgdGl0bGU9
IlNwaXJpdHVhbGl0eSI+U3Bpcml0dWFsaXR5PC9hPjwvbGk+IAo8bGk+PGEgaHJl
Zj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20vc3BvcnRzLyIgdGl0bGU9IlNw
b3J0cyI+U3BvcnRzPC9hPjwvbGk+IAo8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy53
b25kZXJob3d0by5jb20vdHJhdmVsLyIgdGl0bGU9IlRyYXZlbCI+VHJhdmVsPC9h
PjwvbGk+IAo8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20v
dmlkZW8tZ2FtZXMvIiB0aXRsZT0iVmlkZW8gR2FtZXMiPlZpZGVvIEdhbWVzPC9h
PjwvbGk+IAo8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20v
d2VhcG9ucy8iIHRpdGxlPSJXZWFwb25zIj5XZWFwb25zPC9hPjwvbGk+IAo8L3Vs
PjwvZGl2PjxkaXYgY2xhc3M9ImZvb3RlclJpZ2h0Q29sIj48dWw+CjxsaT48YSBj
bGFzcz0ic2VjdGlvblRpdGxlIiBocmVmPSJodHRwOi8vd3d3LndvbmRlcmhvd3Rv
LmNvbS9hYm91dC8iIHJlbD0ibm9mb2xsb3ciPkFib3V0IFVzPC9hPjwvbGk+IAo8
bGk+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20vZmFxLyIgcmVs
PSJub2ZvbGxvdyI+RkFRPC9hPjwvbGk+IAo8bGk+PGEgaHJlZj0iaHR0cDovL3d3
dy53b25kZXJob3d0by5jb20vcHJlc3MvIj5QcmVzczwvYT48L2xpPiAKPGxpPjxh
IGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL3dpZGdldHMvIj5XaWRn
ZXRzPC9hPjwvbGk+IAo8bGk+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0
by5jb20vYWJvdXQvIiByZWw9Im5vZm9sbG93Ij5Db21wYW55PC9hPjwvbGk+IAo8
bGk+PGEgaHJlZj0iaHR0cDovL3d3dy53b25kZXJob3d0by5jb20vYWR2ZXJ0aXNp
bmcvIiByZWw9Im5vZm9sbG93Ij5BZHZlcnRpc2luZzwvYT48L2xpPiAKPGxpPjxh
IGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL3ByaXZhY3kvIiByZWw9
Im5vZm9sbG93Ij5Qcml2YWN5IFBvbGljeTwvYT48L2xpPiAKPGxpPjxhIGhyZWY9
Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL3Rlcm1zLyIgcmVsPSJub2ZvbGxv
dyI+VGVybXMgb2YgU2VydmljZTwvYT48L2xpPiAKPGxpPjxhIGhyZWY9Imh0dHA6
Ly93d3cud29uZGVyaG93dG8uY29tL2hvdy10by12aWRlby1zaWRlYmFyLyI+SG93
LVRvIFZpZGVvIFNpZGViYXI8L2E+PC9saT4gCjxsaT4mbmJzcDs8L2xpPiAKPGxp
PjxhIGhyZWY9Imh0dHA6Ly93d3cud29uZGVyaG93dG8uY29tL3dvbmRlcm1lbnQv
Ij5Xb25kZXJtZW50PC9hPjwvbGk+IAo8bGk+PGEgY2xhc3M9ImFjdGlvblN1Z2dl
c3QiIGhyZWY9ImphdmFzY3JpcHQ6Ly8gTWFrZSBhIFN1Z2dlc3Rpb24iIHN0eWxl
PSJjb2xvcjojRkZGRkZGOyIgcmVsPSJub2ZvbGxvdyI+SGF2ZSBhIFN1Z2dlc3Rp
b24/IFRlbGwgVXMhPC9hPjwvbGk+IAo8L3VsPjwvZGl2PjxkaXYgY2xhc3M9ImNi
MTAiPjwvZGl2PgogICZjb3B5OyAyMDEwIFdvbmRlciBIb3cgVG8sIEluYzwvZGl2
PjxkaXYgY2xhc3M9ImNiIj48L2Rpdj4NCiAgICAgICAgPC9kaXY+DQogICAgPC9k
aXY+DQoNCjwvZGl2Pg0KDQo8ZGl2IGlkPSJvdmVybGF5IiBjbGFzcz0iaGlkZSBy
b2JvdHMtbm9jb250ZW50Ij48aWZyYW1lIGlkPSJzaGFkZUZyYW1lIiBmcmFtZWJv
cmRlcj0iMCIgc2Nyb2xsaW5nPSJubyI+PC9pZnJhbWU+PGRpdiBpZD0ic2hhZGUi
PjwvZGl2PjxkaXYgaWQ9ImhvdmVyQ29udGVudCI+PC9kaXY+PGRpdiBpZD0ib3Zl
cmxheUxvYWRpbmciPmxvYWRpbmcuLi48L2Rpdj48L2Rpdj4NCjxkaXYgaWQ9Indo
dEFsZXJ0IiBjbGFzcz0iaGlkZSByb2JvdHMtbm9jb250ZW50Ij48ZGl2IGlkPSJ3
aHRBbGVydENvbnRhaW5lciI+PGRpdiBpZD0id2h0QWxlcnRPdXRlckJveCI+PGRp
diBpZD0id2h0QWxlcnRCb3giPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pg0KPGRp
diBpZD0ibG9hZExhc3QiPjwvZGl2Pg0KPC9mb3JtPg0KPHNjcmlwdCBzcmM9Ii9q
cy9mYl9hbGwuanM/dj0wOTAyMTAyIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwv
c2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRB
WwpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7RkIuRXZlbnQuc3Vic2NyaWJlKCdhdXRo
LnNlc3Npb25DaGFuZ2UnLCAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmdW5jdGlvbihyZXNwb25zZSkgew0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gREVCVUcN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHByaW50RGVidWcoJ0ZhY2Vib29rIHNlc3Npb24gY2hhbmdlZC4nKTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHJlc3BvbnNlLnNlc3Npb24pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09
ICdjb25uZWN0ZWQnICYmICghd2luZG93Lm9QYWdlLl9vT0F1dGhUb2tlbnMuRmFj
ZWJvb2sgfHwgd2luZG93Lm9QYWdlLl9vT0F1dGhUb2tlbnMuRmFjZWJvb2suYXV0
aFRva2VuICE9IHJlc3BvbnNlLnNlc3Npb24uYWNjZXNzX3Rva2VuKSkgew0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3aW5kb3cub1BhZ2UuZmJDb25uZWN0TG9naW4ocmVzcG9uc2Uuc2Vzc2lv
bi5hY2Nlc3NfdG9rZW4sIHJlc3BvbnNlLnNlc3Npb24udWlkLCB0cnVlKTsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ25vdENvbm5lY3Rl
ZCcpIHsgLy8gVXNlciBkaXNjb25uZWN0ZWQgZnJvbSBGYWNlYm9vaw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdp
bmRvdy5vUGFnZS5mYkNvbm5lY3RMb2dpbignJywgJycsIGZhbHNlLCB0cnVlKTsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPSAnY29ubmVjdGVkJykgew0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdpbmRvdy5vUGFnZS5mYkNvbm5lY3RMb2dpbignJywgJycsIGZhbHNlKTsN
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSk7RkIuaW5pdCh7YXBwSWQ6MTMzNjQzMTkwMDAyNjgxLCBzdGF0dXM6IHRydWUs
IGNvb2tpZTogdHJ1ZSwgeGZibWw6IHRydWV9KTt9LDEpOwovL11dPjwvc2NyaXB0
Pg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbDQp2
YXIgX19vQW5hbHl0aWNzU3RhcnQgPSBuZXcgRGF0ZSgpOw0KdmFyIF9faVdodExv
YWRUaW1lID0gMTQxOw0KdHJ5IHtZQUhPTy51dGlsLkRvbS5vV0hUUmVhZHlFdmVu
dC5maXJlKCk7WUFIT08udXRpbC5Eb20ub1dIVFJlYWR5RXZlbnQuYkhhc0ZpcmVk
ID0gdHJ1ZTt9Y2F0Y2goZXJyKXt9DQovL11dPjwvc2NyaXB0Pg0KPGRpdiBpZD0i
Y3RsMDBfcG5sU3RhdHNUcmFja2luZyI+DQoJDQogICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbDQogICAgdmFyIGdhSnNIb3N0ID0g
KCgiaHR0cHM6IiA9PSBkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCkgPyAiaHR0
cHM6Ly9zc2wuIiA6ICJodHRwOi8vd3d3LiIpO2RvY3VtZW50LndyaXRlKHVuZXNj
YXBlKCIlM0NzY3JpcHQgc3JjPSciICsgZ2FKc0hvc3QgKyAiZ29vZ2xlLWFuYWx5
dGljcy5jb20vZ2EuanMnIHR5cGU9J3RleHQvamF2YXNjcmlwdCclM0UlM0Mvc2Ny
aXB0JTNFIikpOw0KICAgIC8vXV0+PC9zY3JpcHQ+DQogICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbDQogICAgdmFyIHBhZ2VUcmFj
a2VyID0gX2dhdC5fZ2V0VHJhY2tlcigiVUEtMjM2MTY0NC0xIik7cGFnZVRyYWNr
ZXIuX3NldERvbWFpbk5hbWUoIi53b25kZXJob3d0by5jb20iKTtwYWdlVHJhY2tl
ci5fc2V0U2Vzc2lvbkNvb2tpZVRpbWVvdXQoNTcwMDAwMCk7cGFnZVRyYWNrZXIu
X3RyYWNrUGFnZXZpZXcoKTsNCiAgICAvL11dPjwvc2NyaXB0Pg0KICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwhW0NEQVRBWw0KICAgIHZhciBf
c2ZfYXN5bmNfY29uZmlnPXt1aWQ6MzIxNCxkb21haW46IndvbmRlcmhvd3RvLmNv
bSJ9Ow0KICAgIChmdW5jdGlvbigpew0KICAgICAgZnVuY3Rpb24gbG9hZENoYXJ0
YmVhdCgpIHsNCiAgICAgICAgd2luZG93Ll9zZl9lbmRwdD0obmV3IERhdGUoKSku
Z2V0VGltZSgpOw0KICAgICAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3NjcmlwdCcpOw0KICAgICAgICBlLnNldEF0dHJpYnV0ZSgnbGFuZ3VhZ2Un
LCAnamF2YXNjcmlwdCcpOw0KICAgICAgICBlLnNldEF0dHJpYnV0ZSgndHlwZScs
ICd0ZXh0L2phdmFzY3JpcHQnKTsNCiAgICAgICAgZS5zZXRBdHRyaWJ1dGUoJ3Ny
YycsDQogICAgICAgICAgICgoImh0dHBzOiIgPT0gZG9jdW1lbnQubG9jYXRpb24u
cHJvdG9jb2wpID8gImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS8iIDogImh0dHA6
Ly8iKSArDQogICAgICAgICAgICJzdGF0aWMuY2hhcnRiZWF0LmNvbS9qcy9jaGFy
dGJlYXQuanMiKTsNCiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChl
KTsNCiAgICAgIH0NCiAgICAgIHZhciBvbGRvbmxvYWQgPSB3aW5kb3cub25sb2Fk
Ow0KICAgICAgd2luZG93Lm9ubG9hZCA9ICh0eXBlb2Ygd2luZG93Lm9ubG9hZCAh
PSAnZnVuY3Rpb24nKSA/DQogICAgICAgICBsb2FkQ2hhcnRiZWF0IDogZnVuY3Rp
b24oKSB7IG9sZG9ubG9hZCgpOyBsb2FkQ2hhcnRiZWF0KCk7IH07DQogICAgfSko
KTsNCiAgICAvL11dPjwvc2NyaXB0Pg0KICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4vLzwhW0NEQVRBWw0KICAgIGRvY3VtZW50LndyaXRlKHVuZXNj
YXBlKCIlM0NzY3JpcHQgc3JjPSciICsgKGRvY3VtZW50LmxvY2F0aW9uLnByb3Rv
Y29sID09ICJodHRwczoiID8gImh0dHBzOi8vc2IiIDogImh0dHA6Ly9iIikgKyAi
LnNjb3JlY2FyZHJlc2VhcmNoLmNvbS9iZWFjb24uanMnICUzRSUzQy9zY3JpcHQl
M0UiKSk7DQogICAgLy9dXT48L3NjcmlwdD4NCiAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsNCiAgICBDT01TQ09SRS5iZWFjb24o
e2MxOjIsYzI6NzU2MTM2OSxjMzoiIixjNDoiIixjNToiIixjNjoiIixjMTU6IiJ9
KTsNCiAgICAvL11dPjwvc2NyaXB0Pjxub3NjcmlwdD48aW1nIHNyYz0iaHR0cDov
L2Iuc2NvcmVjYXJkcmVzZWFyY2guY29tL3A/YzE9MiZhbXA7YzI9NzU2MTM2OSZh
bXA7YzM9JmFtcDtjND0mYW1wO2M1PSZhbXA7YzY9JmFtcDtjMTU9JmFtcDtjaj0x
IiBhbHQ9IiIgLz48L25vc2NyaXB0Pg0KICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9Imh0dHA6Ly9lZGdlLnF1YW50c2VydmUuY29tL3F1YW50
LmpzIj48L3NjcmlwdD4NCiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+Ly88IVtDREFUQVsNCiAgICBfcWFjY3Q9InAtNTBlWm5iQVRrcGlyRSI7cXVh
bnRzZXJ2ZSgpOw0KICAgIC8vXV0+PC9zY3JpcHQ+PG5vc2NyaXB0PjxpbWcgc3Jj
PSJodHRwOi8vcGl4ZWwucXVhbnRzZXJ2ZS5jb20vcGl4ZWwvcC01MGVabmJBVGtw
aXJFLmdpZiIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiBoZWlnaHQ9IjEiIHdpZHRo
PSIxIiBhbHQ9IiIvPjwvbm9zY3JpcHQ+DQogICAgPCEtLSBTdGFydCBNVFYgUXVh
bnRjYXN0IHRhZyAtLT4NCiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+Ly88IVtDREFUQVsNCiAgICBfcW9wdGlvbnMgPSB7IGxhYmVsczoiVkgxIFN0
eWxlQmVhdXR5LE1UVk4gR2xvYmFsIERpZ2l0YWwgTmV0d29yayxNVFZOIERpZ2l0
YWwgVHJpYmVzLFRoaXJ0eXNvbWV0aGluZyBUcmliZSxNVFZOIE11c2ljIGFuZCBM
b2dvIEdsb2JhbCBOZXR3b3JrLE1UVk4gTXVzaWMgYW5kIExvZ28gVHJpYmVzLFZI
MSBwbHVzIFRoaXJ0eXNvbWV0aGluZyxDTVQgQ291bnRyeU11c2ljLENNVCBTb3V0
aGVybkxpZmVzdHlsZSxDTVQgT3V0ZG9vclNwb3J0cyxNVFZOIEdsb2JhbCBEaWdp
dGFsIE5ldHdvcmssTVRWTiBEaWdpdGFsIFRyaWJlcyxIZWFydGxhbmQgVHJpYmUs
TVRWTiBNdXNpYyBhbmQgTG9nbyBHbG9iYWwgTmV0d29yayxNVFZOIE11c2ljIGFu
ZCBMb2dvIFRyaWJlcyxDTVQgcGx1cyBIZWFydGxhbmQsUFQgUHJlZ25hbmN5LFBU
IEJhYmllcyxQVCBQcmVTY2hvb2wsUFQgRWxlbWVudGFyeSxQVCBUd2VlbnMsUFQg
VGVlbnMsUFQgSGVhbHRoV2VsbG5lc3MsUFQgRmFtaWx5RW50ZXJ0YWlubWVudCxQ
VCBGYW1pbHlGaW5hbmNlLFBUIEZhbWlseVRyYXZlbCxQVCBGb29kUmVjaXBlcyxN
VFZOIEdsb2JhbCBEaWdpdGFsIE5ldHdvcmssTVRWTiBEaWdpdGFsIFRyaWJlcyxQ
YXJlbnRpbmcgVHJpYmUsTmlja2Vsb2Rlb24gS2lkcyBhbmQgRmFtaWx5IEdsb2Jh
bCBOZXR3b3JrLE5pY2tlbG9kZW9uIEtpZHMgYW5kIEZhbWlseSBUcmliZXMsUGFy
ZW50c0Nvbm5lY3QgcGx1cyBQYXJlbnRpbmcsU3Bpa2UgR2FkZ2V0c0dlYXJoZWFk
cyxNVFZOIEdsb2JhbCBEaWdpdGFsIE5ldHdvcmssTVRWTiBEaWdpdGFsIFRyaWJl
cyxHdXlzIFRyaWJlLE1UVk4gR2FtZXMgYW5kIEVudGVydGFpbm1lbnQgR2xvYmFs
IE5ldHdvcmssTVRWTiBHYW1lcyBhbmQgRW50ZXJ0YWlubWVudCBUcmliZXMsU3Bp
a2UgcGx1cyBHdXlzIiB9OyBfcWFjY3Q9InAtOTR3Tnc4OGY2NVJoayI7cXVhbnRz
ZXJ2ZSgpOw0KICAgIC8vXV0+PC9zY3JpcHQ+PG5vc2NyaXB0PjxpbWcgYWx0PSIi
IHNyYz0iaHR0cDovL3BpeGVsLnF1YW50c2VydmUuY29tL3BpeGVsL3AtOTR3Tnc4
OGY2NVJoay5naWY/bGFiZWxzPVZIMSUyMFN0eWxlQmVhdXR5JTJDTVRWTiUyMEds
b2JhbCUyMERpZ2l0YWwlMjBOZXR3b3JrJTJDTVRWTiUyMERpZ2l0YWwlMjBUcmli
ZXMlMkNUaGlydHlzb21ldGhpbmclMjBUcmliZSUyQ01UVk4lMjBNdXNpYyUyMGFu
ZCUyMExvZ28lMjBHbG9iYWwlMjBOZXR3b3JrJTJDTVRWTiUyME11c2ljJTIwYW5k
JTIwTG9nbyUyMFRyaWJlcyUyQ1ZIMSUyMHBsdXMlMjBUaGlydHlzb21ldGhpbmcl
MkNDTVQlMjBDb3VudHJ5TXVzaWMlMkNDTVQlMjBTb3V0aGVybkxpZmVzdHlsZSUy
Q0NNVCUyME91dGRvb3JTcG9ydHMlMkNNVFZOJTIwR2xvYmFsJTIwRGlnaXRhbCUy
ME5ldHdvcmslMkNNVFZOJTIwRGlnaXRhbCUyMFRyaWJlcyUyQ0hlYXJ0bGFuZCUy
MFRyaWJlJTJDTVRWTiUyME11c2ljJTIwYW5kJTIwTG9nbyUyMEdsb2JhbCUyME5l
dHdvcmslMkNNVFZOJTIwTXVzaWMlMjBhbmQlMjBMb2dvJTIwVHJpYmVzJTJDQ01U
JTIwcGx1cyUyMEhlYXJ0bGFuZCUyQ1BUJTIwUHJlZ25hbmN5JTJDUFQlMjBCYWJp
ZXMlMkNQVCUyMFByZVNjaG9vbCUyQ1BUJTIwRWxlbWVudGFyeSUyQ1BUJTIwVHdl
ZW5zJTJDUFQlMjBUZWVucyUyQ1BUJTIwSGVhbHRoV2VsbG5lc3MlMkNQVCUyMEZh
bWlseUVudGVydGFpbm1lbnQlMkNQVCUyMEZhbWlseUZpbmFuY2UlMkNQVCUyMEZh
bWlseVRyYXZlbCUyQ1BUJTIwRm9vZFJlY2lwZXMlMkNNVFZOJTIwR2xvYmFsJTIw
RGlnaXRhbCUyME5ldHdvcmslMkNNVFZOJTIwRGlnaXRhbCUyMFRyaWJlcyUyQ1Bh
cmVudGluZyUyMFRyaWJlJTJDTmlja2Vsb2Rlb24lMjBLaWRzJTIwYW5kJTIwRmFt
aWx5JTIwR2xvYmFsJTIwTmV0d29yayUyQ05pY2tlbG9kZW9uJTIwS2lkcyUyMGFu
ZCUyMEZhbWlseSUyMFRyaWJlcyUyQ1BhcmVudHNDb25uZWN0JTIwcGx1cyUyMFBh
cmVudGluZyUyQ1NwaWtlJTIwR2FkZ2V0c0dlYXJoZWFkcyUyQ01UVk4lMjBHbG9i
YWwlMjBEaWdpdGFsJTIwTmV0d29yayUyQ01UVk4lMjBEaWdpdGFsJTIwVHJpYmVz
JTJDR3V5cyUyMFRyaWJlJTJDTVRWTiUyMEdhbWVzJTIwYW5kJTIwRW50ZXJ0YWlu
bWVudCUyMEdsb2JhbCUyME5ldHdvcmslMkNNVFZOJTIwR2FtZXMlMjBhbmQlMjBF
bnRlcnRhaW5tZW50JTIwVHJpYmVzJTJDU3Bpa2UlMjBwbHVzJTIwR3V5cyIgc3R5
bGU9ImRpc3BsYXk6IG5vbmU7IiBoZWlnaHQ9IjEiIHdpZHRoPSIxIi8+PC9ub3Nj
cmlwdD4NCiAgICA8IS0tIEVuZCBNVFYgUXVhbnRjYXN0IHRhZyAtLT4NCg0KPC9k
aXY+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ly88IVtDREFUQVsN
CnZhciBfX29BZHNTdGFydCA9IG5ldyBEYXRlKCk7DQovL11dPjwvc2NyaXB0Pg0K
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbDQogICAg
Z29vZ2xldGFnLmNtZC51bnNoaWZ0KGZ1bmN0aW9uKCkgew0KCQlnb29nbGV0YWcu
ZGVmaW5lVW5pdCgnLzEwMzg2NDUvY2EtcHViLTM3Mzk1ODM0MDc4MDUzMzYvd2h0
X2NsaXAtb2YtdGhlLWRheV90b3BfNzI4eDkwJyxbNzI4LDkwXSwnYXBoX3dodF9j
bGlwLW9mLXRoZS1kYXlfdG9wXzcyOHg5MCcpLmFkZFNlcnZpY2UoZ29vZ2xldGFn
LnB1YmFkcygpKTsKCQlnb29nbGV0YWcuZGVmaW5lVW5pdCgnLzEwMzg2NDUvY2Et
cHViLTM3Mzk1ODM0MDc4MDUzMzYvd2h0X2NsaXAtb2YtdGhlLWRheV90b3BfMzAw
eDI1MCcsWzMwMCwyNTBdLCdhcGhfd2h0X2NsaXAtb2YtdGhlLWRheV90b3BfMzAw
eDI1MCcpLmFkZFNlcnZpY2UoZ29vZ2xldGFnLnB1YmFkcygpKTsKCQlnb29nbGV0
YWcuZGVmaW5lVW5pdCgnLzEwMzg2NDUvY2EtcHViLTM3Mzk1ODM0MDc4MDUzMzYv
d2h0XzQwNF9sb3dfMzAweDI1MCcsWzMwMCwyNTBdLCdhcGhfd2h0XzQwNF9sb3df
MzAweDI1MCcpLmFkZFNlcnZpY2UoZ29vZ2xldGFnLnB1YmFkcygpKTsKCQlnb29n
bGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdmb3VuZHZpYScsICdjbGlwLW9m
LXRoZS1kYXknKTsKCQlnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdn
ZW5kZXInLCAndW5rbm93bicpOwoJCWdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJn
ZXRpbmcoJ21lbWJlcicsICdmYWxzZScpOwoJCWdvb2dsZXRhZy5wdWJhZHMoKS5z
ZXRUYXJnZXRpbmcoJ25hcnJvd2VkJywgJ3RydWUnKTsKCQlnb29nbGV0YWcucHVi
YWRzKCkuc2V0VGFyZ2V0aW5nKCdvdmVyMTgnLCAnZmFsc2UnKTsKCQlnb29nbGV0
YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCdoYXNCYWRXb3JkJywgJ2ZhbHNlJyk7
CgkJZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZygnc3ViY2F0JywgJ2Zp
bmVfc2N1bHB0dXJlJyk7Cg0KICAgICAgICBnb29nbGV0YWcucHViYWRzKCkuZW5h
YmxlU2luZ2xlUmVxdWVzdCgpOw0KICAgICAgICBnb29nbGV0YWcuZW5hYmxlU2Vy
dmljZXMoKTsNCiAgICB9KTsNCi8vXV0+PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPi8vPCFbQ0RBVEFbDQogIHZhciBnb29nbGV0YWcgPSBn
b29nbGV0YWcgfHwge307DQogIGdvb2dsZXRhZy5jbWQgPSBnb29nbGV0YWcuY21k
IHx8IFtdOw0KICB2YXIgaW5pdEdvb2dsZUFkcyA9IGZ1bmN0aW9uKCkgew0KICAg
IHZhciBnYWRzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7DQog
ICAgZ2Fkcy5hc3luYyA9IHRydWU7IGdhZHMudHlwZSA9ICd0ZXh0L2phdmFzY3Jp
cHQnOw0KICAgIGdhZHMuc3JjID0gJ2h0dHA6Ly93d3cuZ29vZ2xldGFnc2Vydmlj
ZXMuY29tL3RhZy9qcy9ncHQuanMnOw0KICAgIHZhciBub2RlID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdOw0KICAgIG5vZGUucGFy
ZW50Tm9kZS5pbnNlcnRCZWZvcmUoZ2Fkcywgbm9kZSk7DQogIH07DQogIGlmIChZ
QUhPTy5lbnYudWEuZ2Vja28pIHsNCiAgICBzZXRUaW1lb3V0KGluaXRHb29nbGVB
ZHMsIDEwKTsNCiAgfSBlbHNlIHsNCiAgICBZQUhPTy51dGlsLkV2ZW50LmFkZExp
c3RlbmVyKHdpbmRvdywgJ2xvYWQnLCBmdW5jdGlvbigpIHsNCiAgICAgICAgc2V0
VGltZW91dChpbml0R29vZ2xlQWRzLCAxMCk7DQogICAgfSk7DQogIH0NCi8vXV0+
PC9zY3JpcHQ+DQoNCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4vLzwh
W0NEQVRBWw0KdmFyIF9fb0FkU2NyaXB0c0RvbmUgPSBuZXcgRGF0ZSgpOw0KZnVu
Y3Rpb24gR2V0RHVyYXRpb24oKSB7DQogICAgdmFyIG9FbmQgPSBuZXcgRGF0ZSgp
Ow0KICAgIHZhciBzUmVxdWVzdGVkUGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRo
bmFtZSwNCiAgICBpQ2xpZW50TG9hZFRpbWUgPSBvRW5kLmdldFRpbWUoKSAtIF9f
b1N0YXJ0LmdldFRpbWUoKSwNCiAgICBpV0hUTG9hZFRpbWUgPSBfX29BbmFseXRp
Y3NTdGFydC5nZXRUaW1lKCkgLSBfX29TdGFydC5nZXRUaW1lKCksDQogICAgaUFu
YWx5dGljc0xvYWRUaW1lID0gX19vQWRzU3RhcnQuZ2V0VGltZSgpIC0gX19vQW5h
bHl0aWNzU3RhcnQuZ2V0VGltZSgpLA0KICAgIGlBZFNjcmlwdHNMb2FkVGltZSA9
IF9fb0FkU2NyaXB0c0RvbmUuZ2V0VGltZSgpIC0gX19vQWRzU3RhcnQuZ2V0VGlt
ZSgpLA0KICAgIGlNZWRpYUxvYWRUaW1lID0gb0VuZC5nZXRUaW1lKCkgLSBfX29B
ZFNjcmlwdHNEb25lLmdldFRpbWUoKSwNCiAgICBpUmVkaXJlY3RzID0gLTEsDQog
ICAgaVNlcnZlckxvYWRUaW1lID0gX19pV2h0TG9hZFRpbWU7DQogICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpe2h0dHBHZXQoaHR0cEdldC5idWlsZFBvc3RVUkkoJ0Fk
ZFNwZWVkTG9nRW50cnknLCAncmVxdWVzdGVkUGF0aCcsIHNSZXF1ZXN0ZWRQYXRo
LCAnY2xpZW50TG9hZFRpbWUnLCBpQ2xpZW50TG9hZFRpbWUsICdzZXJ2ZXJMb2Fk
VGltZScsIGlTZXJ2ZXJMb2FkVGltZSwgJ3JlZGlyZWN0Q291bnQnLCBpUmVkaXJl
Y3RzLCAnd2h0VGltZScsIGlXSFRMb2FkVGltZSwgJ2FuYWx5dGljc1RpbWUnLCBp
QW5hbHl0aWNzTG9hZFRpbWUsICdhZFRpbWUnLCBpQWRTY3JpcHRzTG9hZFRpbWUs
ICdtZWRpYVRpbWUnLCBpTWVkaWFMb2FkVGltZSwgJ3VpZCcsIG9QYWdlLm9Mb2dn
ZWRJblVzZXIudXNlcklEKSwge2Jhc2U6dGhpc30sIGZ1bmN0aW9uKG9SZXN1bHQs
b0FyZ3MpIHt9KTt9LDEwKTsNCiAgICANCn0NCi8vXV0+PC9zY3JpcHQ+DQo8IS0t
IGdvb2dsZV9hZF9zZWN0aW9uX2VuZCAtLT4NCjwvYm9keT4NCjwvaHRtbD4=
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline; filename=favicon.ico
Content-Type: image/x-icon; name=favicon.ico
Content-Location: http://www.wonderhowto.com/favicon.ico
Content-Transfer-Encoding: Base64
AAABAAEAEBAAAAAACABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAA
AAAAAAAAAAEAAAABAAAAAAAA////ABhR/wDerhAAY2FzAJS25wBjQQAAOYq9ACks
pQAhMEIAAATvAJx9EAB7dc4A1tfWADGK/wBKUd4AKVmEACkgCABSqt4Araa9AP/T
GAAhIN4Ae10QAL2+5wAYPHMAlJLOAClx5wAxUWMA5+fvAEJFewBjad4ASjAAABA0
/wAxNCkAWprGAClpnAAYSZQAKVXnAEJ1rQAIGP8AparWAHNxtQDO3+8AIWn/AHOK
1gCtw/cAY1EQABgUEACMaQgAISj3AO+6EAAIDN4ArbLnADF1/wC1utYAlKLWADFZ
cwAYQYQA9/P3AAAI/wDOy84AQn29AMbH7wAYFN4A3t/nAEJF3gDG1+cAWqLWAIyK
xgBCisYAKTQ5ABgo7wA5fbUAc1kIACll9wDv7+8A5+/3AIRhCACUdRAAtb7vACl5
7wAxXecA3tveACEsOQBCgrUA3ufvAPf7/wDW4+8A1tPeAMbD5wAhLO8AGE33AK22
7wApbf8Apa7eAFKm1gD/yxgA7+/3AAgI/wDW2+8AIXH/ADFt/wAxgv8AKWGcAFKi
3gD/+/8A9/f3AO/r7wCEZQgACBz/AM7j7wAYTf8AxsfnAClp/wCUuucAUqbeAHN1
tQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGg9PT09PWgAAAAAAAAA
AAcQEBA9EAQjBwAAAAAAAD0JCzIuAEkyMDkHAAAAAAA9CQsyLjlJMjA5BwAAAAAA
RCYQESMOEBE5B0QAAAAAAAB0NRo1SjVKKxoAAAAAAAAAPVtbW1tbSkQaRAAAAAAA
ACYASiAgIEoARAAAAAAAAAAmADNtM20zAAAAAAAAAAAAAEQ7SgAVCkQAAAAAAAAA
AAB0CnQAShUAAAAAAAAAAAAAAAgzAAgAAAAAAAAAAAAAAAAACER0AAAAAAAAAAAA
AAAAAAR0AAAAAAAAAAAAAAAAAAAERAAAAAAAAAAAAAAAAAAAdAAAAAAAAAAAAPAf
AADgDwAAwAcAAMAHAADABwAA4A8AAOAHAADoLwAA6D8AAPEfAADxPwAA+X8AAPx/
AAD8/wAA/P8AAP3/AAA=
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline
Content-Type: image/gif
Content-Location: http://img.wonderhowto.com/images/more_bullet.gif
Content-Transfer-Encoding: Base64
R0lGODlhCgAKANUAAN8iAOtuUfvh2/Osm+RAGudVM/jTyvCUff///+EuA/fIve6I
b+ddPuI0Du2Ea/KmlP3x7vbAtOpxVeRFIOApAPzt6vrb1OdaOeM5EOExB/308eZK
Ke+MdPS2p/rh2/CWgffKv946EPfW1v75+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAAAKAAoAAAZQQATC8uEsOhAh4oFJABIJ
hgARoUwcBQAgc9FcAAQPRKLNdDIUgkI42CQWmDRIeaBwCOn1aDFJFNMWBlkADRYV
DAQBE08JD0IVHBgNGBcRQkEAOw==
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline
Content-Type: image/jpeg
Content-Location: http://img.wonderhowto.com/images/wht_header_spotlight.jpg
Content-Transfer-Encoding: Base64
/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAQDAwMEAwQEBAQGBAQEBwgGBAQGCAkI
CAgICAkMCQkJCQkJDAoLDA0MCwoPDxAQDw8WFRUVFhgYGBgYGBgYGBj/2wBDAQUF
BQoJChIMDBIVEQ4RFRkZGRkZGRkYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgY
GBgYGBgYGBgYGBgYGBj/wAARCAGCBLADASIAAhEBAxEB/8QAGgABAAMBAQEAAAAA
AAAAAAAAAAIDBAUBCP/EACAQAQADAAIDAQEBAQAAAAAAAAABAgMREgQTYRRRMUH/
xAAUAQEAAAAAAAAAAAAAAAAAAAAA/8QAFBEBAAAAAAAAAAAAAAAAAAAAAP/aAAwD
AQACEQMRAD8A+dwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAeg8HvBwDwe8HAPB7wcA8HvBwDwe8HAPB7wcA8HvBwDwe8HAPB7wcA8HvBwDwe
8HAPB7wcA8HvBwDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHvAP
B7w94BESAecHD17wCPD3h7wcA84EuDgERLh7wCD3hLg4BHg4S4e8AhwcJ8HAIcHC
fBwCHBws4OAV8HCzg4BXwcLODgFfBws4OAV8HCzg4BXwcLODgFfBws4ecAhwcJ8H
AIcHCfBwCHBwlwcAgJ8HAICXBwCJwlw84BHg4S4OAR4eJAIiRwCI94OAeAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAD3g4B49egPOHvD04B4JcAPODhLg4B5wJcPeAR4OEuHvAIcP
eE+HvAIcHCfV7wCvh7ws4OoK+HvCzq96gq4e8LOr3qCrqdVvV71BT1e9VvV71BT1
Oq7qdQU9Thd0OoKup1XdTqCnqdV3U6gp6nC7q86gp6nVd1OoKepwu6nUFHU6rup1
BT1OFvU6gp4OFvU6gp4OFvV51BVwcLerzqCvh5ws6nUFXBws4OAV8PFnDzgEOHnC
zh5wCHDxPg4BAS4OAQ4OEuAEBI4BEe8APAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAe8A8evQHnD16cA8e8PXv
AI8PUuHvAI8HCXD3gEeHvCXCXAIcPeE+HvUEOHvCfV71BDg6rOqXUFXV71W9XvUF
XV71W9EugKer3qu9aXrBR1e9V/rS9YM3V70afW96AzdHvRp6PegM3Q9bV0OnwGb1
nraunw6SDN6z1tXrk9cgzes9TT65PXIM3qPU0+uT1yDN63nravXJ65Bl9bz1Nfrl
50kGX1nraujzp8Bl6POjX0edAZOh0aujzpAMvV51avW89YMvV51avW89YMvU6tPr
eesGbq86tPRHoDP1edWjo86Ao6vOq/o86go6vOq/q86go4edV/V51BTw84XdXnUF
PDzhb1edQV8POFnV5wCvgT4ecAg84T4ecAi8T4eAiPeAHgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPeAePeHoAPeHoPOHr3
h7wDw4S4e8A84OE+HvAI8PeEuEuAQ4e8J9UuoIdXvVZ1e9QQ6veqyKJxQFPVLquj
NOKAo6JRRf0S6go9aUZruiXrkFPR71XxknGQM/V70aYzSjMGX1yl65aoyTjIGT1P
fU2RilGIMXqS9bZGKXpBi9b31N3p+PfT8Bh9b31N/pn+PfSDn+r499Xxv9MvfSDn
+p76nQ9J6Ac/1HqdD0HoBzvUep0fS89IOd6vh6nQ9MnoBzvW89To+l56Qc71vPU6
Hp+PPSDn+p56nQ9KPpBg9SPqdD0o+kGD1S8nOW/0o+oGH1y86fG71I+sGLo86Nvr
R9YMXSHnrbPUj6gZPWj62v1PJzkGP1vPW19EeoMnRHq2dEZzBk6o9Wuc0ZzBl6vO
rRNEZoDP1edV/V51BR1R4X9UeoKerzhd1R6gq4ecLeqPAKuBZwjwCHDzhPh5wCAk
84B4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD3gH
j3h6AD3h6Dzh694eg84e8JcPeAR4S4S4e8AjwlwlwlwCHCXCfVKKghwl1TiqcUBV
FU4otiicVBVFE4osiqcUkFUUS6rozTjMFEUTjNojNOMwZ4zSjNpjJZGQMsZpxk1x
knGMgyRknGTZGKcYgxxklGXxtjJZGIMMYynGLbGKcYAwxilGLfGCceP8BgjFKMXQ
jx048cHNjFL0S6UeOl+cHN9BGDqfn+JR43wHL9B6HV/O9/MDk+h7+eXW/OfnByfz
yfnl1vzn5wcn87z0Ov8AnPzA5HoeTg6/5nn5wcj0PJwdb83x5+cHJ9CM4/HW/N8e
T44OT6UfS6350fzg5U4ozi6s+OhPj/Acv0I+l1Jw+IzgDlzijOLpzgjOIOZOPxGc
nSnFCcgc6cUJydKckJxBzpyQnN0ZyRnIHOnNGc2+ckJyBgnNGc26ckJzBimkoTVt
nNCcwZOqM0a5zQnMGSaITRrmkozUGSaITVsmiE0BkmqPVqmiE0Bn6o9V81RmoKJh
Hhf1R6gp4R4XcI8Aq4R4W8IzAK3nCzhHgEBJ5wDwAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAe8PQOAS4B5w9eveAecPXvCXAI8JcPYhKIB5w9i
EohKIBGISiEohOKgh1SiqyKLIoCqKpxRbFU4gFcUTiqcUlbGYKYqnGa+M1kZgojN
ZFGiMllcgZ4zWRk01yW1xBljJbGTVXJbXEGSuKyMWyuK2uAMUZLIxbq4La+P8Bgj
BZGHx0K+Otr44OdGC2PHdGvj/FtfH+A5seP8WR47pR46yPG+A5keOnHjunHjLI8Y
HLjx/iceP8dSPF+LI8X4Dkx4/wASjx3XjxficeKDjx4yX5nY/K9/KDkfm+Pfyux+
X49/KDjfle/mdn8sfx7+b4Di/mPzO1+X4fl+A4v5Xn5Xa/L8Pyx/AcX83x5+b47X
5Xn5fgOJ+V5PjfHbnxUfyg4k+OjPjy7c+KhPjfAcWfHRnx/jsz43xCfG+A40+P8A
EZ8d2Z8b4hPjA40+OhPjuxPjfFc+P8ByJ8dXODsT46ucAcicFc4OvOHxCcAcicPi
ucHXnBXOAOTOKE5OrOCqcAcyclc5OnOKucQc2clc5OlOKucgc6c1c5OjOaucgc6c
kJzdCclc5gwTRCc26c1c5AwzmhNJbZzQmgMU1RmrXOaucwZZohNGqaozUGSaoTVr
miuaAzTVCYaJqjNQZ5hGYXzVCagpmEZhdMI8Aq4R4WzCMwCt4nw8BAe8PAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEuAAe8PeHoPHvD17wBw94e8JRA
POEuHsQlEA8iEuEohKIBGITiqUVW1oCuKLIosiqUQCMVSiFkUW1oCmKStrmtii6u
YKYosrmvrmurkDPXJdXJorkurkDNXFdXJpriuriDLXFdXFrrgvrgDHXBdXBtrgur
h8Birgurg3V8ddXxwYK4fF1fHdCvjL6+N8Bzq+Mtr4zpV8ZfXxgcyvjfFtfG+OnX
xvi6vjfAcuvirY8V1a+L8W18UHJjxVkeN8devifFkeL8Bx48b4sjxfjsR4vxZHi/
AcaPF+Jx4rsx4vxOPF+A40eI9/J8duPFSjxQcT8j38nx2/yx/Hv5fgOJ+T4fkdz8
h+QHD/Ifkdz8h+QHD/I8/L8d38rz8wOH+RH8ju/lj+I/lBw/yoT4vx3p8VH8oODP
i/EJ8b4735fiE+N8BwZ8b4hPjfHdnxldvG+A4c+OrnxncnxviufFBw58ZXPjO3bx
lVvG+A4lvHVz4/x27eOqt4/wHEt46u3ju1bx1VvHBxbYK5wdm3jqbYA5E4qpxdi2
Cm2AOTbFVbB1rYKrYg5NsVVsXWtiqtiDk2yVWydW2Kq2IOXOSuc3StiqtkDmzkrn
J0bZKrZg585q5zdCc1Vsgc+c1c0dC2aq2YME0Vzm3WzVTQGKaShNWyaK7UBlmqua
NM0QmAZZqhNWuaqrUBmmqEw0TVCagomEZhdMIzAKJhHhdMIzAKeHiyYRmAQeJo8A
8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASHoD0S4B5wlwcJcA84SiHvC
UQDyISiEohKIB5EJRCUQsigIRVbFEq1WRAIxVOISiq2tAVxRbWiytF1cwVVourmt
rmvrkCmua6uS+ua6uQKK5L65L6YtFMQZqYr6YtVMWimIMtMF9MGqmLRTAGWmC+mD
ZTBop44MVPHaKeO3U8dop44MNPHX18Zuph8aKeN8Bgp46+vj/HQp4zRTxvgOdTxl
9fFdGnjfF9fGBzq+N8XV8b46VfG+Lq+N8Bza+L8W18Z06+Mur4oOXXxlkeN8dWvi
rY8b4DlR43xZHjOrHjLY8b4DkV8X4nHi/HXjxviceMDkR4qX5fjsflT/ADA4seJ8
S/L8dn8yX5o/gOL+X4fl+O1+WP4fl+A4v5fh+X47X5fh+WP4Di/l+Iz4nx3PzR/E
fzA4f5fiNvF+O5+ZH8oOJ+VD8vx258ZGfG+A4f5lc+M7k+N8QnxwcOfG+K58b47c
+P8AFc+P8BxJ8ZVPjO5PjqreODiW8b4pt47uW8dVbAHDt4ym3jO5bD4qt44OHbxl
NvHdy3jqbYA4dsFVsHat46m3jg4tsFNsHZt46m2IONbBTbB2bYqbYA49sFFsXYtg
ptiDkWxU2yde2Ki2IOVbFVbF1LYqbZA5VsVVsnVtkptkDlWyVWydO2Sm2QObOaq2
bo2yU2yBz7ZqrZuhbNVbMHPtmptR0LZqrZgwTRXajbbNVNAYpqhMNk0VWoDLNFVq
NU1QmoMk1QmrXaiq1QZphGYXzVCYBRMITC+YQmAU8I8LZhGYBWismEQRHrwAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7A9B69EogBKIIhKIAiEoh7EJRAPIhOIexC
cQDyITiqVara1BCtFsVexCyKAjELK0TrRdWgK60XVzWUzX1zBXXNdXNbTNfXMFVc
l9c11MmimQKaZNFMV9MWmmIM9MWmmK+mLTTAGemLRTBqpg00wBlpg00wa6YNNMAZ
KeO00wa6eO1U8cGKnjtNPHbaeO008cGKnjtFPH+NtMGimAMVPHaKeP8AG2njtFPH
Bhr46+njt1PHaK+P8Bgr46+vj/G6vjr64AwV8ddXx/jdXBbXEGGvjrK+O3xgtjAG
CMPicYOhGCyMPgOfHj/E48d0IwTjAHOjx0vzulGCUYA5seO9/O6foS9AOX+f49/O
6npg9MA5f53n5/jq+mHnoByvzvJ8d1ZweegHJ/OjPjut6EZwByZwQnB1pwQnEHIn
BCcHWnFXOAOTbx4/iqfHde2CucQci3jqbeO7FsVdsQca3jqreO7NsFVsAcW3jqLY
O3bD4otgDi2wU2wdq2Ci2AONbBTbB2L4KbYA41sFFsHZtiptgDi3wUXwdq+Ki2IO
NbFTbF2L4M98Aci2Ki+Lr2xUWyByLYqbYuvbFRfEHIviptk61sVF8gcq2Si2Tq2x
UWyBy7ZKLZOrbNRbIHLtkptm6dslFsgc22aq2bo2zUWzBz7ZqbUdC1FNswc+2aq1
G+2am2YMNqKrUbbUVWoDHMITVqtRVNQZbUVzVrmFVqAyzCEw0WqrmoKJhCYXzCEw
CiYRmF0whMAqecLJhEEB7w8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKAEnkJxAE
QlEEQnEARCUQ9iE4gHkQnEPYhOKg8iFtaPa1WRAPIqsiHsVW1oCNaLq0SrRdTMEK
0aKZp0zX0zBCma+uaymbRTIFdM2imS2mTTTIFVMmmmK2mTVTIFNMmnPFfni1Z4Ao
zwas8GjPBqzxBnzwaqYtGeDXngDLng15+O00was8AZqYNNPHaqYtFMAZqYNFMGum
DRTAGWnjtFMGumDRTAGSmDRTBrrivrkDJXBfXFqrivriDJXFdXBqrkuriDJXBbXF
sritjIGOMVsYtcZLIyBkjFOMWuMk4yBljJKMmuMk4zBjjJP1Nfre9AZPSl6Wvo96
AyRi99LV0e9AY/S89LZ0OgMXpeelu6PPWDDOSM4t/rRnMHPnJCcnRnNCcgc6cVc4
ulOSucgc2cVU4unOaE5A5dsVVsXUnJVbEHLtiqti6lsVVsgcu2Km2Lq2yU2yByrY
KL4OtbJVbIHHtgotg7FsVNsQca2Ci2Ds3xUXxBxrYqLYuxfFRfEHHtiovi69sVFs
gci+LPfB2L4qLYg418VFsnYtiz3xByLZKLYutfFRbIHJviovk61sme+QOTfJRbJ1
b4qL5A5Vs1FsnUvkotkDl2yUWydS2ai+QOXbNRbN075qL5g5tqKbZuhfNRagMFqK
LZuhaim1AYLUVWq22optQGK1Fcw2WqptQGW1VVqtUwrmoMk1QmGm1VUwDPMITC+Y
QmAUTCMwumEJgFSMwsmEQQHsw8AAAAAAAAAAAAAAAAAAAAAAAAAAAAB7CUPE4gCE
4giE4gCITiCITiAIhOIexCytQeVqtrV7WqyIB5ELK1e1ourUHlarq0e1ovpQHlM1
9M0qZtFKAjTNopmlTNqpmCumbVTJOmTVTIFdMmqmSdMmvPEFeeLVnitzxbM8QU54
teeK3PJrzwBTni2Z4Ls8WvPEFOeLVngvzxaaYgppi00xX0xaqYgozxaaYtFMWmmI
M9MWmmLRTJfXIFFMl9cl9cl9cgUUyXVyaK5L64gz1yXVxaK5rq0BRXJbXNdXNbXM
FEZrIyXxmsigKIzWRmuiiUVBVFEoot6pdQVdEuq2KJdQU9HvRd1S6gp6Pei7qdQU
9HvRd1OoKejzov6nUFHR50aOrzqDP0edGjq86gzTVGaNXVGaAyzRCaNU1RmoMc5o
Tm2TRGaAwzmrnNumiE5gwTmqtk6Fs1U5g51sVNsnTmiq2YOXbJTbJ1LZKbZA5dsl
NsnUtmotkDmWyUWxdS2Sm2YOVfFRfJ1rZM98gcm+Ki+LrXyZ75A5NslFsnWvkz3y
Byr4s98XVtkovkDk3yZ74uvfJnvkDkXxZ75uvfJmviDlXyZ74urfJntmDlXyZ75O
tfJmvkDlXyZ75urfJnvkDl2zUXzdO+bPfMHMvmz3zdO+bPfMHNvmotR0b5s98wc+
2am1G+1FN6A59qKbVb7UUWoDFaim1Wy1VVqgyTVVarTaqEwDJMK5hptVVaoM8whM
L5hXMApmEJhdMITAKkZWTCIID14AAAAAAAAAAAAAAAAAAAAAAAAA9h4lAJQnEIxC
yIB7ELIh5ELIgCIWRBELa1ArVbFSKrIgHkQtrR7Wi6tQeVqurR7SjRSgPKUaKZva
UaK0B5SjRTNKmbVnmCNM2rPJLPNqpmCNM2rPJLPJrzyBHPJrzxTzxbM8gQzya88k
88W3PEFWeLZnitzxa88gVZ4tdMllMmvPEFWeLVniuzxas8gU54tVMV1MmimYKqZN
FM1tMmimQKqZL6ZLqZtFMgU1yX0yXVzW1oCuua2tFtc1tcwVVzW1zWxRZFAVxROK
LIqnFQVxVOKpxVOKgriqcVTiqXUEOqXVOIS6gr6pcJ8Q9BDrL3qk94kEesHCfU6g
iJ9YOIBAT4g4gFZxCfU6gr6vOqzrLwFcwj1XPOIBRNUeq/rKPAM81RmrR1RmoM81
QmrTNUJqDNNVc0apqjNQY7ZqrZt01VzQGC1FVs2+1FNswYLZqbZOjaiq2YObbNRb
J0rZqbZg5ts1Fs3TtmotkDm2yZ75OnbNTbMHKvkovk6t8me+QOVfJnvk61sme+QO
VbNRfJ1L5M98gcu+TPfJ1LZqL5A5N8ma+TrXzZ75A5N8me+bq3yZr5A5d8ma+Tq3
zZ75g5V8ma+bq3yZr5g5d81F83TvmzXzBzL5s983TvRnvmDmXzZ7UdK+bPfMHPtR
ntR0L0UWoDn3ootV0L0Z70BhtVTarbaqm1QZJhVarTaquYBktVXMNVqqbQDPMITC
+YVzAKJhGYWzCEwCp4nMIgiAAAAAAAAAAAAAAAAAAAAAAAD2E4RhZEAlELIhGIW1
gHsQtiHlYXVqBWq2sFYWRAEQtrUrVdWoFar6UKUaKUApRopQpRopQClGrPMzzas8
weZ5teeb3PNppQCmbVnk9yybM8geZ5NmeSWeTXnmCOeTZlillk255Ajnk2Z5JZ5N
eeYI55NeeSeeTXnkCGeTXnknnk155ArzyaqZJ0zaKZghTNopkspm0UzBCmbRTNZT
NfWgIUzXVonWi6tAV1ourmsrRZFQQiiyKpxVOIBGKpxVKKpxUEYqlFU4hKIBGKpR
CUQlEAjxKXWHr2Kg8e8SlEPQR6veIegAAAAA96y96giJdTqCI96vOAAAedYR6pgK
3nCx51BX1RmFnACmaoTC+aogomqE1aJqhMAzzCE1aJqhNQZ5qrmjTMITUGS1FNqN
01VWoDDaiq2bdaiq1AYLZqLUdC1FNqA59s1Fs3RtmotQHOtmptm6N81FqA518me+
bp2oovmDl3yZ75OpfJnvmDl3yZr5urfNnvmDl3zZr5OpfNnvmDl3zZ75OpfNnvmD
k3yZr5utfNm0yBy75st83Uvmz3zByr5s183V0zZb5g5d82e9HUvmy3zBzb5s183T
vRmvmDmXoz3o6d82W9Ac+1Ge9HQvRntUGC1Ge1XQvRnvQGG1VFqttqqbVBkmFVqt
Nqq5gGS1VUw1WqptAM8whML5hXMApmEJhbMITAK0U5RkHgAAAAAAAAAAAAAAAAAA
AD2HiUAlCysIxC2sAlWF1YRrC6tQSrVdWHlarIgHsQtrUrVdWoFar6UeUo0UqD2l
GilClGilAKUas83mdGvPMDPNrzzM82mlAKUa8sjLNsyzAyybc8zPNszzAzzbcsjL
JtzzAzybM8jPJszzB5nm155PcsmzPIHmeTXnklnm155gjnk00zSpRppmCNM2mmb2
lGmmYI0zaKZpUzX1oCNaLq0SrRfWgIVouiqUVWRUEYqnEJRCcVBGKrIq9iqcQCMQ
nFXvCcVBGITiHpwA9iHsVSB5EPQAAAAAexD2KpAj1SAAAAAAAHnEIzCYCsTmEAAA
EZqkArecLJhGYBXMIzC1GagqmEJquRmoKJqhML5hCYBRNUJqvmqEwDPNVVqNU1Qm
oMVqKrVbbVVWoDDaim1G61VVqA59qKbUb7UUWoDBaim1HQtRRfMHPtRRfN0LUU2o
Dm3zZ75unfNmvmDmXzZ75unfNnvmDl3zUXzdK+bPfMHMvmzXzdS9Ga+YOXfNlvm6
t82bTMHKvRm0zdTTNlvQHL0zZr5urfNl0zBy75s16OnfNm0zBzL0Zr5ulejPegOZ
ejNejpaUZr0BzrVZ70dC9Ge9QYL1Z7Vb70Z71BitVRarZaqm1QZJhTarVaFVoBkt
CuYabVU2gFEwrmF8wrmAUygtlXIID2XgAAAAAAAAAAAAAAAAAAPU4QhZEAnWF1YQ
rC+sAnWF9KoUq0VgHsQtpV5Wq6tQe1qupV5WrRSoPaVaaURpRppUHtKNNKPKUas6
Alnm1Z5vM6NedAe50a880c82zPMHuWbblm8yzbM8we55t2WSOWTdlmD3PNszyMs2
zPMDPNszzM82zPMDPNrzzM82zPMHmebVShSjTSgGebTShSjTSgPKZtNKPaUXVqDy
tV9aPa0XVqDytVsVexVOIAiE4q9iqcVB5FVkQ9iEogHkVSiHsVTB5EPThOIB5FUg
AAAAABKKg8iEnoAAAAAAAAAAAAA8egITV4seTAIAAAAjNUVjzgFaMwsmHgKphCYX
TVEFM1VzVomqEwDPMIzVfMK5gFEwrtVpmFc1BltRTajbNVVqgxWoptRttRVaoMFq
KbVb7UUWoDBeii1G+1FNqAwWootRvtRRagOffNmvm6VqKL5g5l6M983SvRnvmDmX
zZ70dK+bNfMHNvmzXzdO9Ga+YOXpmy6ZupfNmvmDlXozXo6mmbJegOZpmy3o6t6M
mmYOZpmy3o6d6M2mYObejLejpXozaUBzL0Zr0dLSjLegOferPejfejPeoMF6s9qt
96s96gxWqomGy1VF6gy2qotVrmFVqgyWhVaGi0KrQCiYVyutCqQVyinKAAAAAAAA
AAAAAAAAAAPYBKFlYQqurALKwvpCukNOdQWUqurCNYX0qCVarq1eVhfSoJUq0Uqj
SrTSoPaVac6I50as6AlnRrzojnRrzoCVKNWdEc6NmdASzzbcs0Ms23OgJ55tmWaO
WbdlmCWWbblmjlm250B7nm25Zo5ZtueYPc82zPN5nm150B7nRqpR5SjVnQClGmlC
lGmlAe0o0UoUovrUCtV9alaLq1ArVZFStVkQBEJxD2ITiAIhOIexCXACUQ9iHoD2
IexCQPHoAAAAAEQ9iqYPIh6AAAAAAAAAAAAAAAAAAAPOEZhMBWPZh4AAAhMJgK3k
wnMIgr4RmFqMwCqYQmF0whMAomEJhfMITAKJqhML5hCagzWqptVrmFdqgx2qqtRr
tVVaoMVqKLUb7VUWoDBaii9G+1FFqAwWqotRvvRRaoMF82a9HRtVRegObfNmvm6V
6M96A5l6M16OnejLegObejNejpXozXoDmaZsumbp3ozaUByr0ZtKOnpmy3oDmaZs
ulHU0oyaUBzNKMt6OnpRk0oDnaUZdKOjejNpQHNvRmvV0dKMt6AwXqzXq33qz3qD
Beqi0Nt6s96gxXqqtDXarPaAZb1UWhrtDPeAZrQqs0WhTYFMoSslXIPAAAAAAAAA
AAAAAAAEoRTgE6r6QqrDRSAW0hqpCrOrTWATpVorCFKtFKglSrRWqNKtFKglSrTS
qFKtOdQWUo1Z0Qzo150BPOjXnRDOjXnQE86NmVEM6NuVATyo2ZZoZ0bsswWZZtuW
aGVG3KgJ50bcs1edG3KgJ5ZtudEM6NmdATzo1UojSjVSgPc6NVKPKUac6A9zo00q
8pRorUHtar61eUqvrUCsLK1KwsiAIhZEEQnEARCyIIhKIAiEx6AlEPYh6AD2IB4J
9YAQ4e8SmAj1e8PQAAAAAAAAAAAAAAAAAAAAAAAABGapAKxPhHqDwAB5MPQFcwJo
zAITCC1GYBVMITC5CYBRMITC+YQmAUTCuYXzCMwDNaqq1WqYV2qDHaqq1Wy1VNqg
x2oz3o32qotUGG1We9G69FNqgwWqotVvvRntUGG9Ga9HQtVRegOdejLpR0r0Zr0B
zb0Zr0dK9GXSgOdpRlvR0r0ZtKA5mlGTSjqaUZdKA5d6MulHS0oy3oDmaUZdKOnp
Rk0oDmaUZr1dHSjLpQHO0oyaUdLSjLpQHO0ozXq6F6st6gwXqz3q3XqzXqDDaqi9
Wy9We8AyTDPpDXeFF4BjtCm0NN4UWgGeyuV1lUggAAAAAAAAAAAAAAAD1OqELKgt
pDTnCmkNWcA0UhozqqpDVSAWUhopVXnVppUE6VaaVQpVopUE86tedVedWvOoLM6N
dKq86tWdQWZ0bM6K8qNmVAW5UbM6K86NuVAWZZt+VFWVG7KgLMqNudFedGzKgLcq
NuVFeVG3OgJ5UbM6IZ0aqVBOlGrOiGdGqlQSpRqpRClWmtQe1q0Uq8pVfWoPa1W1
h5WFkQD2IWRDyIWRAEQsiCISiAIhMexAEQnED0AEogHkQmAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAADziHoCEw8WITAPAAQmHixCYBCYRWIzAKphCYXITAKZhCYXT
CEwCmYVzC+YQmAZ7VVWq0zCu1QZLVVWq12qptUGO9FFqt1qqLVBhtVnvRuvRTaoM
FqqLVbr0UWqDBejNejo3qzXoDnXozaUdG9Ga9Ac3SjNejo3oy3oDnaUZdKOlejLp
QHM0oyaUdTSjJpQHMvRk0o6WlGXSgOZpRl0o6WlGTSgOberNpR0NKMt6g52lGS9X
S0oyaVBz71Zr1b9Ks16gwXqzXq3aVZtKgw3qz2htvDNeAY9IZrw26Qy3gGWyqy+y
mwK3j2XgAAAAAAAAAAAAAAJQtqrqupAL84bMoZs4bM4BfnDVSFWcNWdQW0q0Z1V0
q00qCykNOdVedWrOoLc6tedVWdWvOoLM6tmdVWdWzOoLc6NuVFOVG3OoLc6N2NFO
VG7KgLsqNuVFWVG3OoLcqNuVFWVG3KgLcqNuVFWVGzOoLM6tWdEM6tVKgnSrVnVX
nVqpUE6VX0qjSrRSoJ0qtiHkQtrAPYhOIIhZEA9iE4giEwE4giHoCcQRD0AHsQBE
JgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8egK5gTmEAAAQmHixCYBCYR
WIzAKphCYXITAKZhCYXTCEwCmYVzC+YQmAZ7QptVqmFdqgx2qqtVrtVTaoMd6qL1
bbVUXqDFarPerdeqi9QYbVUXq23qz3qDDpRmvR0L1Zr0Bzr0ZdKOjerNpQHNvVm0
o6OlGW9Qc3SjLpR0tKMmlAczSjJerp6UY9KA52lGPSjp3qyaUBzdKMmlXS0qyaVB
ztKsmlXRvVl0qDm6VZdKujpVk0qDBerLerferNpUHPvVm0q36VZLwDFeGXSG28M2
kAxXhRZqvDPYFMopSiAAAAAAAAAAAAAACyq+kKatGcA05Q25wzYw25QDRnDXSqnO
rVSoLc6tNIV0hpzqC3OrVnVVnVrzqC7OrVnVVSrXnUF2VWvOqrOrZlUF+VWzKqnO
rblQF+VG7KinKjblQF+VGzKinOrdlUF2VW3KinKrblQF2dWvOqrOrXnUFmdWqlVd
KtWdQWUq01hClWilQTpVfWEaVXRAPawsiHkQsrAJRCyIeRCcQD2E6w8iEwEqw8iE
wAAE4eRCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADyYegKxK0IgAA
hMPFiuYBGYRWIzAKphCYXITAKZhXK+YVzAKZhXML5QtAM9qqbVaphVaoMloVWq1W
qptAMd6s96t16qL1BhvVnvVutVnvUGK9We9W21We9QYL1Zr1dC9WW9Qc/SrLpV0b
1ZdKg516smlHR0qy6VBztKsetHS0qyaVBzNKsulXR0oyXqDnaUZNKulpVj0qDm6V
Zb1dHSrHpUHP0qyaVdHSrJpUHO0qzXq36VZbwDn3qy6Q36VZNKgwaQzaQ26Qy3gG
C8M94a9IZbgz2QWWVgAAAAAAAAAAAAAAtq1ZgDdk2Zf4AN2TVmANNGrMAas2zMAa
82vMAa823IAbc27EAbsm7IAbcm3IAbcm7MAa82vIAaaNeYA01aKAC+q6oAshZH+g
CxYAJ1/x6AJ1/wAegAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAHiAAAAI2AEQAVvLf4AIKwBXKIAqlCwApt/1TYAU2UXAGe6i4AzXZ7gCizLoAM2
jLoAMmn+stwBk0/6yaADHqx6ADLox6ADJoyaADLoyaADHoyaADLoyaADJox3AGTR
kuAKLK5AHgAAAAAAAAAAAAAP/9k=
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://img.wonderhowto.com/images/wht_search_bar.png
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAAVQAAAAyCAYAAAADSCNGAAAABHNCSVQICAgIfAhk
iAAAAAlwSFlzAAAK8AAACvABQqw0mAAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRp
YSBGaXJld29ya3MgOLVo0ngAAAjNSURBVHic7d1vTFPrHQfwb3ugBYoecaHIn85/
IEE7xTXGe92f7OIqgcUE7l12yba4LbrLTYjJEsyZLxady40vqonR+IY4X2zLNjRG
SNxkSY3orkR0wJwDorabsYWIFRZbZFi0PXtxzmlPCyjMKy36/SRPTlt6ynPefPM7
zznneQyyLIOIiF6fMdUdICJ6W2QcOXLk/95ZkiSD+lLbGpPeG0BElD7kpNf6BpfL
Na9TdkmSEt5nzLc3SSFq1DVB3Rp0W8ywJSJaaPIM2yiAiPo6AiAqSVJUfS/PN1yB
eQSqGqT6EBUAZDQ1NW3Oy8v7pslksguC8GUAhszMzPfm2xEiooUwNTV1w2AwyJOT
k9cnJib6jx079mcALwA8V7cRABFduM65cn1loOoq0liINjY2VhQXF//UZDJ9Z8WK
FSU2mw1WqxWiKAIAbDbbfI+RiGhB+P3+rer2vUAggMLCQkxMTJwfGRk509LSchXA
lNq0cI1KkjSnUH1poCZVpRnNzc3v5+XlfZKfn9/gcDhQWloaC1EiosVAK/j0hV9/
f/+H/f39HxYXF/9tdHT0tydOnDgHIKy251CHA14VqrMGqi5MBQCmQ4cOfbZs2bKf
VVVVwW63v/ZBERGlC7vdDrvdDr/fv6Wrq2vLkiVLvj44ONjS1tY2AGASSsUakSQp
Asw+BCA4nc5pH6phagSQ2dTUtGHnzp2HNm7c+GlDQwOKiore3FEREaWQKIqw2+0Q
RdEuCMKPKioqxru7uwfUP0fVrex2uw1OpxNutzth/2n3oeoq04x9+/a9X1BQ8PPa
2tof19XVwWw2v9GDISJKBw6HAw0NDVi1atWv9u/f/0sAuQCyAWRCOWufUUKFmhSm
25YuXfppfX39x5WVlW+290REacZisaCyshIjIyOO8vLypV1dXdehVKlRAHC73dNO
+5MrVAMAYdeuXSVamHK8lIjeVWazGepQ5569e/fuAWABkAWlStUK0JhYoOrHTcvK
yn6xfft2hikRvfO0UM3Pz/9+dXX1Riin/ibEQzXGCCRe0T9w4MAnNpvtJ9u2bVvo
fhMRpSWr1Yra2trSysrKPVDGU7OgjKfqnwpNOOUXAGRmZ2fvqampWdDOEhGlO4fD
gYqKivrdu3d/BCAHM1Sp+slMhIMHD+7btGnTBqvVuvC9JSJKc1VVVSgpKfkY8bHU
DOiqVMHtdsdu3q+pqfl1fX29mJWVlbIOExGlK1EU8eDBgxWRSKT33r17Q1Ceooqo
LVahCs3NzR+sXLnSxkdJiYhm53A4sGHDhu9hhotTWqkqiKL4A17VJyJ6ubKyMoii
+A0ogWqGburS2FR8JpPpa5wliojo5cxmMwoLCy07duz4CpQKVRtHVVK1urp6eXZ2
dglP94mIXs1ms2HNmjVboNw6FbswZQRgXL9+/SZe2ScimhtRFJGTk1OExEBVUlUQ
hDxe2Scimhur1Yrc3NxSKGGaOIZqsVjsrFCJiOZOlmXtllPtSVODUfcHIiKaIzU3
ExYlNQJAOBweCgaDKewaEdHiZwSAiYkJHwOViGhugsEgnj179gjqktPa50YA8uPH
jx+EQqGUdY6IaDEJhUKYnJx8hPiE0zIA2QggeubMmQdPnjwJhcPhlHaSiGgx8Pl8
uH///j+gW2oaaqDKACLhcPiGz+dLZR+JiBYFv9+Pixcv9iA+OUoUUE75owAioVDo
L16vN4VdJCJKfx6PB2NjYz0AwkgM1FiF+uLo0aN/uH379jhP+4mIZjcwMACPx+MG
8AzAFJRQjVWoMpSEfR4KhX7f29ubso4SEaWzYDCI/v7+0fPnz18GMAklUKdVqFEA
U93d3S09PT1glUpENF1nZyd8Pl8HgAnEA/UF1FuntAmmIwBeXL58eejRo0ctHR0d
KeksEVG68vv96OnpuXPq1KnfAXgK5ZRfG0NVAtXlcmk3pr4AMHX48OHPbt261enx
eFLVbyKitBIOh9HW1gaPx3MBQAhKhaoFalT7nn7V0yiU8nXy4cOHv+no6EAgEFjI
PhMRpaXW1lbcvXu37ezZs39CPFDDiJ/uywAgOJ1OOJ1OuN1uQHnAX+7t7fVVVFSE
hoaGPli9ejUsFkuKDoOIKLU6Ojpw7dq1SydPnjwG4D8AggD+i/gFqRjB6XQCANTV
T2PPpHZ3dw+Ul5ePDw8Pf4uhSkTvmnA4jHPnzuHq1auXjh8/7gIwBuAJ4uOnCdUp
oAtUXZUK7Us3btzoX7du3fidO3eKLRbLl4qKihbwcIiIUiMQCKC9vR3Xr19v11Wm
TwCMI3HsVNbvFwtUYNZQ/afZbP772NhYzujoaIXNZgNn9yeit1E4HMbNmzfR2trq
6+vr++Pp06dPI7EynUTShSi9hEAFYqGqpW4UQNTr9Y51dXV9XlJSgsHBwZVPnz7N
FUWRwwBE9FYIBoPo6+vDhQsX0NnZ2d7e3n78ypUrf0W8MtXuO43dJuVyuWRdAQoA
MLhcrhn/gSRJ2kzUGVCWSs0GkAMgt7Gx8YfFxcXfLSgoWFtaWgqbzQar1QqumkpE
i4Xf70cgEIDH44HX6x0dHh7uvHTpUpvX6x2CUo2OIx6k2nP7UahhCgCSJCX85qyB
qn5Zm+JfgLK6nxlAFpRgzdm6devazZs3f3v58uVfzcnJWWsymayAssRqIBDgE1dE
lDaScykUCg2GQqF/e73ea+rMUZNQrt5r7RmUINWu5kcAQAtTYJ6Bqu6gXzclA0qw
mtRm1rVMtQl1dXWOvr4+r8/ne5r0czKIiBZObL28urq6yt7e3n/5/f5xqLPsQX2g
SW1aeOonPdHmO5X1QaqZd6CqO2md0qpVrWlrUmtb7fPYolUqBikRpVJyHmlzmEQQ
D05tqzVtNn7MFKbA9EDNmEtPksYLtMQ2qh0wIh6i2pKqxhl/iIgoPWiBqrVI0lYG
Zg/S2cwpUDW6H5clSdKm/TPM0mY7CCKihTRTHsmztHmHqN68AlVPH64z/V0bJnid
zhERfZHedC4ZZJl5R0T0Rfgf2N1dA2+qVg0AAAAASUVORK5CYII=
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline
Content-Type: image/gif
Content-Location: http://img.wonderhowto.com/images/wht_search_bar_button.gif
Content-Transfer-Encoding: Base64
R0lGODlhHgA8ANUAAIS+ALHWXNjrrpzMMff77sTghJLFG+r01KjSSsnkkZPGIL3d
dKXPQuLxxYnCCfL45JbIJtXopa7VWLfZap/NOJrJK////9zttcfhi7/ee4fABq3U
Uu/33o/FF+fyzafRSfT456LOO7jbbs7mnN/uvfz++IzEEdfqrff67rPXY+z115rL
LMnjj+Xxx4y9CMLff6rSTOb3zvn89MrikL3ea5TOKa3OSszmldbvtcrjjwAAAAAA
AAAAAAAAAAAAAAAAACH5BAEHABYALAAAAAAeADwAAAb/QItwOFQVYBCFUrFKRWTE
qNTS2CQNnazWwMxAp9EFBKstlxWUEVjIgSnMWodcrq28wBwEvGPSUF4RETcpBgBZ
CilTMHsAFSccXxYgHgsmJh0Kd0QLZGUAFA1DDRccQgQjDlkVF6IQcA6gQiMMA7UT
KhYlN4YdIUMbjGoWCR0alpYMJ5IMlwYRFgdvZrAHFhEdqWUaCCglAoYGFBYFnVoA
GSUyErxmCjcWHGUHMOVZAAUWKgzZZiYbFg8oZDFwwxWcexZaUOBXxsEHgCGaEWKE
DwQCdmYmSFox0M0eDSlAWHiBMYsDCKEOZDOwQdorVipgALiUxRi+cRoGbqhnb4UH
/yEHAigAAMDBAAxCWrhkydHMp2pDSkRYIKJACyExARjYakDERC1+oFIJFaXEBZmd
nEVwGXbICQMVRjTwQJdEhqFmIKCQ0dRECFxCBCjQoMHQihUQHMwsZ0CCkAxbAZAY
IlgD12M04SiYbIGAQAcBOHgbzHNPFsdDRlQolGJE4tKmKTyI8kKJHBOw9wx4JiWF
S9O6eU95UQE4nHDCwVwI8XsPFwki1xCJQEEB1+sGIEjgLF3KgUEMKDDYICICiu7K
PyRZomTFglLoh7AYkAQChMP468MQuwaEFfu1hMDAgAyEEAJ9CkAggnQCMAfBAAJ+
8MEGMMAwoIEhIKbABvBFcf/CAHCJh8AGAUggwQIRkEDCBUesQJ8BCJQQxQPMrSAe
DBKkcGILIMhoCgc3HDgGar+EOGEAEwRQAGDweBCdDBdQQMEYmljAQnbikTjBBBjA
18INLIQZgUje1KJABV8MoMAADMCA5JZXUVFABi+8kEEGM/yEwgQUrKDAgmtVEAIC
OYogwgwiHYDBCxg0uugCN0DRQC1JlPDBmuOlIMICC1xQQgknMOpoo3VOBgIMIawm
gH0UfJDjAhksYOoIBYzqaAZq7EkLBEIJ6uYEC7wgK0C02tpoBu+gsEB49zExHpLB
DitDBKLa+oIye34wZRIrZLppnQJAQUK1jjJaygMbILD/rbMbaBpsnbigQG2tpL7A
mQAVrusrtHbeEB0IAuRQ5wtysSGCBOral+Cg0EIa3RAHrEjCbJIkYKK2EPSZsasp
pIDBww9QHIUKNwQQwAa0KMApuxu8ILKiN3jAQcgPcHDBCx0jnKoCKnCQoHgLvIzB
nRkUkMDRGWyZJMpqriCEG4fFaYEHwhZg9cB3UqUjxgbc5IF9EGTwQAktLDAB0WjH
OoGOCGSogC9DiABXJgJMIIHSnOZtaIltqwkBK0TsVEEFA7iaYwpKb6njBh8IqbIU
eSQIYZsbSGCyyRKkG56fj09RggTtScnABwiUXnqBA1SQ4ALdEacE4VLGTkHqSoTA
GZ10MoiwBNhgt3dTfEJ4EwBiYFOwAJNTBAEAOw==
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://img.wonderhowto.com/images/wht_toolbar.png
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAAAEAAAAcCAYAAACgXdXMAAAABHNCSVQICAgIfAhk
iAAAAAlwSFlzAAAK8AAACvABQqw0mAAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRp
YSBGaXJld29ya3MgOLVo0ngAAAAkSURBVAiZtcShAQAgDAOw0E1wMufjULNEBE6w
Az9aQwnq1UFfVEUAy3p8COsAAAAASUVORK5CYII=
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline
Content-Type: image/gif
Content-Location: http://img.wonderhowto.com/images/wht_toolbar_hover.gif
Content-Transfer-Encoding: Base64
R0lGODlhwgAoAMQAAP///zrL9zLJ9jPJ9zLI9jLH9jHH9jHH9THG9TDF9S/E9C/D
8y7B8y/B8y7A8i2/8S2+8Sy98Su88Cq77yq47im37ii27Cez6Sew5iat5CSp3yKk
2SCe1B+XzB6RxAAAACH5BAEHAAAALAAAAADCACgAAAX/ICCOZGmeaKqubOu+cCzP
dG3feK7vfO//wKBwSCwaj8ikcslsOp/QqHS6DFiv2Kx2y+16v+CweEwumwO2gXrN
brvf8Lh8Tq/b7/i8fpDe+/+AgYKDeTYCh4iJiouMjY6PkJGSk5SVlpcChpibnJ2e
n6CWNgSkpaanqKmqq6ytrq+wsbKztAQ2Bbi5uru8vb6/wMHCw8TFxsfIBTYGzM3O
z9DR0tPU1dbX2Nna29wGNgfg4eLj5OXm5+jp6uvs7e7v8Ac2CPT19vf4+fr7/P3+
/wADChxIEMG8gggTKlzIsOFAGwkiSpxIsaLFixgzatzIsaPHjyBDJrChoKTJkyhT
/6pcybKly5cwY8qcSbOmAhsLcurcybOnz59AgwodSrSo0aNIky6w0aCp06dQo0qd
SrWq1atYs2rdyrVrAxsMwoodS7as2bNo06pdy7at27dw4zKw4aCu3bt48+rdy7ev
37+AAwseTLiwAxsPEitezLix48eQI0ueTLmy5cuYMz+wAaGz58+gQ4seTbq06dOo
U6tezbo1BBsRYsueTbu27du4c+vezbu379/Ag0ewIaG48ePIkytfzry58+fQo0uf
Tr26BBsTsmvfzr279+/gw4sfT768+fPo00+wQaG9+/fw48ufT7++/fv48+vfz78/
BRsVBCjggAQWaOCBCCao4O6CDDbo4IMQRliBDRZUaOGFGGao4YYcdujhhyCGKOKI
JJZogQ0XpKjiiiy26OKLMMYo44w01mjjjTjmeIENGPTo449ABinkkEQWaeSRSCap
5JJMNomBDRlEKeWUVFZp5ZVYZqnlllx26eWXYIaZgQ0alGnmmWimqeaabLbp5ptw
xinnnHTWqYENG+Sp55589unnn4AGKuighBZq6KGIJrqBDRw06uijkEYq6aSUVmrp
pZhmqummnHbKgQ0dhCrqqKSWauqpqKaq6qqsturqq7DG2oENHtRq66245qrrrrz2
6uuvwAYr7LDEFuvBCiEAADs=
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://img.wonderhowto.com/images/wht_toolbar_active.png
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAAMIAAAAoCAYAAACsPiXVAAAABHNCSVQICAgIfAhk
iAAAAAlwSFlzAAAK8AAACvABQqw0mAAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRp
YSBGaXJld29ya3MgOLVo0ngAAAI2SURBVHic7drhbtowFIbh121GobAybdoN7b53
V9PWFYr7wzE5JKaTJoSI+j6SlUYKFULni33ipJwz0kfXxZOUEkAaXfOvc+kWje/w
7553MAlAPLZGvEa6RTkcW2Ny7bnivwvHOM4FQ7oFraI/jEYOx2Ng4tKoVfj3lFnj
vh+tUEi3olX8r/3Y98cDpW5jMOg4vbvXIu/CWIzOYyAMg27FOAS1+Ot4GZ3XzwCn
zXIMwad+PPRjwTQQMQy6HH/P/xNDUIt9RwnAC+UG/pfh9933n3mFIQhxRqhBWPbj
EVh1Xbfa7XY/mTYbuiyDcCEppR/AM/CH05t2DE0i9Ag1BLUneKCEYA18BtY553W4
VpqDr8Bvyo19HILaLxzgtEeos8GCEoRHSgi2wDbnvLne95cu4jvwi2HlE0NQRwLS
uRlhAawoM8IW+NIfpTn5xhCCVs9wXC69F4TaH2wYwiDNSa3ZPaVPqP1CfPo5CcK4
WY6zwgZ4us53ly7miRKCZ8oSaUGp7frU8/j4P3bSrVkhNs32CJqbDaV2lwzbAJPZ
AEh39Q/aG2rHx6g559W1vr10ISuGbYA6E4z3wI4zQtUKQ91Yqz2DNCdLhuVQXBJN
3opoBSGGoS6T6j+R5iTWbuvVoGYQqvHbpTEU0pycK/7JpnArCNKHYxAkDIIEGAQJ
MAgSYBAkwCBIgEGQAIMgAQZBAgyCBBgECTAIEmAQJMAgSIBBkACDIAEGQQIMggQY
BAkwCBJgECQA3gCLGHCDBL7H+gAAAABJRU5ErkJggg==
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline
Content-Type: image/gif
Content-Location: http://img.wonderhowto.com/images/progress_star_dark.gif
Content-Transfer-Encoding: Base64
R0lGODlhEAAQALMAAGlpaWJiYltbW01NTUZGRj8/Pzg4ODExMSoqKiMjIxwcHBUV
FQ4ODgcHBwAHAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFBwAAACwAAAAAEAAQ
AAAEcRBIEChKdWogmAjPI1CbJDxM4IjBqAmj8RgrnEmBMoNOknymjEDnGLhwQFyA
sDjiNAaFr1CiBK5RhYJaul6tg8MtqAkYGgpnyzg5MApmA0xAoLA5I8FiQCgI5E8T
AQkHAAVUAnAlAgcjhxIDYyUDA1URACH5BAUHAAAALAAAAAAPABAAAARcEMgJDpKB
TiWZFA2hSQvgmc8wSgXTFA83JS/QLNbzZJmUAAvBZCBcyVYAAuJwUCEBhQQC4Xx+
CqPehKD4aQKCnkEhKog+H60EIRgQAlXNAeuWxDGFTB1QRAr6ExEAIfkEBQcAAAAs
AAAAABAADwAABFoQyAmKoVgiqVgISzYlQBeQWVABREdMwiAdy7sohhEKxvMImgZK
Iij4HrLJAKFSPi6SQa4AxHyuhINWxGV1MQhDs1s4yAaD65jSNAjeAMGaUpDBA9XM
K15dRwAAIfkEBQcAAAAsAAAAABAAEAAABFwQyCkLvfIEkJRMAwYsB+ch2CY1Qxei
gSAZiKwcReEFVqMeJIAKMGCIACWKrBbYFAgEEaLRcIByBdkF8eguKKGLYCxQCQyW
42SQBYzVQklg0BweB7Im3C23w/UYEQAh+QQFBwAAACwAAAAAEAAOAAAERRDICc6h
WCb5Hs/c1gENKB1eV5BY0gzAs1heFU/Js2H1Su2YxUQAKPiCo5Llkil9hpiBLHOc
SDtEQNbUqVG2lAFQAgZFAAAh+QQFBwAAACwAAAAAEAAQAAAEaxDICcagGAQizZGH
kAUHZxiAwYiZgAin0KDUQIhGYR1LxSiSwMAwCEwCggRgwZIIOJSAomDUCK5VSiGR
UBiu2EyBwWggohjBooBBNgFPCTAoMAaqjUcS0MhmCA9KAFBoEwwPFyNpD2wZjn4R
ACH5BAUHAAAALAAAAAAQABAAAARaEMgJhKBYDlkKz9xFeIUCSkYwAgqBWYE6WAUi
KbYkzBnSJJjABYNwSWIxEAGBACIDSsVicThNEgSkFbABIKCgA4IBCNgWp8bDAKju
QAH1cAh3PIZGeGIBpkQAACH5BAUHAAAALAAAAQAQAA8AAARZEEgg5BiSzA1wxwPC
bSCGeIGUSkIFEAeVGFMgrNuxxBw+GZ7RaHAoaoSTUGKGVJ2ENpeNAeBxHg+DQUGl
KTiGx4HBKABoIwG20ggskIQHptEGMIIbFyAhjAAAIfkEBQcAAAAsAAAAABAAEAAA
BFsQyAlCoFheIIQcGyZcHVeEVOB1geFhm2UNhGQUGVwgeI4VLx9FYCgKJ4KDsvZh
DDCuoeLx6E0UDYPG8Vh4GAUCQgEoMBCSwtO2WNR6wQkj0AYkjt+FhJzbKHMRACH5
BAUHAAAALAAAAQAQAA8AAARXEMgJgg2Camnl2Nr1bZkmlMUIToQxBOamAkhjIyCh
D8vjK6BCwYURFBqlSWEFeE0CiMVSwqAFGAqdIdFMHCSEZCGhGDQIFdACQAYc1rIq
QAGkJUEGAygCACH5BAUHAAAALAAAAQAQAA8AAARYEMhJQah4BlEFx8JFPY9RicHw
DeTzTYJaHQ/RiRKjZ8DgCwlAo3HI+AifAEGBsVWCgJfEgHACFoCiIuErICSHgkQm
JhwQAiyvwTwDCkxQHBEMFHmSghgTAQAh+QQJBwAAACwAAAAAEAAQAAAEXhDISSsd
Tdg9Httb8hCg9AHC81hCIAlnQU5BWxXAULmTsSgKg6Um0BwYSOGuqAG4BgmLjhI4
ADIVgmEKiAoRhyIBJ5C9JJiBwYpo8iSBBQKwBhAOb8qcbgXgSnYzFREAOw==
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline
Content-Type: image/gif
Content-Location: http://img.wonderhowto.com/images/social_event_icons2.gif
Content-Transfer-Encoding: Base64
R0lGODlhNgAQAfcAACEhIWTT8A6V3ZvBSlpaWocT1eyeG/XTi+3TMuAWjmCcMUJC
QimI4LW1tdDeslWl73OUWuytF5mZmVvR8L/VkeTg8d2tjHNzc1Oe5Cuq7vPluIrN
8c2XcbXa92G97/qmn7TZ7XqvMutWsc7f75u/gehgspSUlKe/1yGm7ebXzb1N76XU
7Wtra0pKSsXFxWW55q2trf///wC087ZI74a/76/MbYSEhPX19UOy7SkpKWZmZmzR
9Oy9Qt7e3v12aVyFPou5Np4z6OGzkYWyXWyy7+dRqzyHzpjb82Om5qm9m2aiKcWU
XVJSUia+83PD7ahc1tbW1vDbevbr6n6z5j6S4cPXtd7n75vQ7efy9uZGpuC1z+h7
uuyxLfjEv729vf9TQTMzM6nJeWusR9algqDGYIGxPbK9qvfX1RW584TW82qo5MzM
zCio7eyay4+5au+410fG85O9QaWlpfyIfObm5tjlw26nRFKILc6o5sDc81O37YKf
auzXcoyMjHt7ezDA873W7ovB79Xl7d7DssaZ4/TMdqTe89e1n2OVQqxS3v5iVGzA
7aPM74296u3HFPLW5uzJUeU0naXFjlzM9O/v7+7bY8faqnvV9Euk7zmv7kiX4uy3
I+ft3JK5caS4k83n9IG1Ul+t78bd783Xxa7Q78yumna28Iu3SPPou97u86HEbIyn
eu3VWLVp32uYQ1PJ8/LXqNGojZXb8+7hkTaO4ezw9dzQ7nOt5e/q1dnL1JbF7+7D
PeTKmnGmN9GdeeiGvMXYunKmQzo6OsvMsJC8O+httI64Yevv6OIjlJ4o3ZzE6znD
86HEU4O0Mrjl9cTn83vF7dbizuzOYgi28/uTiuHKu2PO8+TRxcaQa0q07azg863X
7ey0DbTPfK/LnP9YScLYn73f8XubY4zY8+Tu8MXWzuDm15TO7edcroWlbdbs85e/
gvnfr2KNQHPS893LmLbPp1uh5GucQ6zJkW2r5tq8qPbh3pa9TN+xj5zd8/3032tt
cMCJ4Eya4+y1Nv1xYyH5BAAHAP8ALAAAAAA2ABABAAj/AFkIHEiwD5QLBFlMWMiw
YRp1ARpOuEGxosU6945ZvLGgo0c/MLx4WUMHhseOMlKqnHTEmbNnN46oTLnxhqUw
ZMjcCxFm48kLUOgIHVry5Ew46mrGnGnRwakQUKPytPiRqFU6TDyuVFqxicqKlqSK
DcGpYkcmPa4O7bMg64KUTchxvbFDhlcZFDmVGRsV3I2kHBfAGNrDCwwJJBt09INS
xpGK5JwdSQPTUMpJNG+EiVqGTJhuO1VRvEKxY1ovLE6yWNOio5fGcp0tm7nsGZqU
zjLvJVPnYkaKOEoToMP2ZEcCi4+h/EN3pso/l2/QNBfCb01zowVQBMAEBgAAObx/
//+ew8YxF99R6AGBAkUG9u3bZ9hw41P7G3VE38CiZyMWaAJksl1q30lwDBMI+iFB
D8cc40d6i+DQ3go36GEhNCvIdQM091mC3Q0vCBDOiOeEKIAA52xHwHcsNOjiiz3k
kJ4H7S0yFzkZ3OdAdif26CMW2323wItEHsPCePEFN9ci8VU0go9QCkBakAAswGCR
Ro4HQJIa1sRkkxQ9GeWJU1IJQIswSiCMllvGZ6NF5KyQSXz3VXRFlC8AVhGbLbLp
J50o2AjooBvdOZeZLPrJ5qBfDgqmRWVyldCkLPiB0EASZbqDIWk0dOgN0QDjk3HG
wdADFG695Zxz2vx1F15zHf8Dih2jktrRBXRAcQNyja16mVy1vBrrEPcEUyupBKxB
CR0mGOWrDH8AdsQ0XykVjTH3nCLJsWfpwIILx9DRA6+9qtQEHK98QlEqs1VrkTkk
lBHHKevUZJwOLtxAyb6U7GOcc3CoW1EtmDFlUTTBEBNHHMYoZZwLUBwTQww3SOAH
C6nONA1MFmnjzivCWjQEEArHAYpGx17Qg74x0CGHyjd4wZiqKVlTS8c7yKVOXbBS
BE8zxJQMSjfgoEzlAnK4kFZQEvSRdA9ypNdeJivwS4kVK5yzzQhWbFMnRZ0AQbLJ
85AxwAAUoDyeH1CQRMcaEjRAyRqHLSA1ChsIYvUK4VD/MgIIK2Tz9Q3BkBy0KszU
UEMczfR2w3hrQMEg0300sPIxUbeJgihWU5I1IIIc0/XXwIQgNjFlzFPDAMQwsyOV
ULSdq0jHNCBB0g3cPYLVoohiRTgrbA1fRfM0IzYQJDCTODON7/ndPi5AHLkJMFDU
Awwyau4E5/uOcA4gVlAiCAg5olBR6WKXEQYFrN9TlvPftdDAMZE3Lcf8PYBxNwrZ
gEDO/1nbBvisUD6LzKMXzXCD8hRXg42wKQcEkIMcvHADOtgAQdkDFBs8sAIQcM4K
G7AQGwZ3A06QQB4kIAMxulETRYGnBXLowYO05CgUsCEbKxAEh+ikFHNIAhh1eJ9F
/yglkAv0AQYXI0imFhKASzwjFYaQSE2k0IUPnMEeDjMOCyRwu2XZQAc60IrGXmEI
bcAEC5eAAxyo1bMbSOEDivDBP77ggyweRw4NuoEJbHC7HrigNTSDljZqQch8jEMb
zvjfbXrWBUV8wwff+MI/fOADLFLlVpZb1hqcFhS4AVIl1uBYfcbhDCCpQxuLpIg9
vsHKb8yBGpH8RhdqlS+NUAIGMICCHEwQNzn0SmAUecYTnWEIQ3wiN7A6QysfGUlK
fuEDl1zAGjayx6f1QAK9EiVF8pEGZ6iDkJaB1SqXSQ0ffOELiviAFMyymB5Q4gYt
M4EcKNGAXfJKJZfQ0w0M4f+M+kgGOj2DZCvngE4fKOKZ7GzLgig2tz1KwFTYpFkT
DGERKI7DmFDMzA0+sExXEvQL1FinmVjgBSgsywUwwNUxDrI/J5DDaiCARvh0+DVl
dvSVloQfeKDQgDX04FRy8IMO1rQ/NnCPX9uAxiLmNLg5LFMRInWglggQu6pCQQeL
opMHjrqvRg1OCgL9hiK44idhMEEHPViD0lpAQ0BlQg8e2N3V9MBDi7yxlSFtoQtb
kCsXSCB7mhtUNvTmuRGSUJUCnYNeXbgay9ltf4wKHyUkdNiKwPIbZ5CqCwHQAKUR
NbCOAoH4mGq+uUAysxbZ7HeE4QcmtLWGKMgENOj6KKX/vLEmRMytQpbI24V8yo62
Cu6zhtvG35amIyzorAuatQATiKQBqenVMvjpjEuk5BIuMUS7evYGdKCjCFugyBaK
QN43sNMEncNl55h73Y0c4TEWsS6sthAJdBSjGFkoQQkiQd4sICO8HGHBOy3SOX6l
RgbLMO4NZnODN0SiGFuI8Ba8e98SiEAEyDCvYAZck/S+Bb6/lckNSoCOLfzixL+I
cIUvHIkScMQLHO4wv14jg34aNzc3KAKEUXziLaxYBFnIwotjvBGr0djGv8Wxjk3M
Yx/jFxlQFjIAbEDkilBCAkwYjg22RJ+5rACuN9iA+X4B3ib7OL9Q0EICwgsAYaxM
/8ZMsCAM1hRbIHGlPxsAwZxu8IgHS1jFRUhALlgAgyw84nFnIvKVEWRBotZIKV/G
M1Mp0gY/S7gIJXgDFAh9aESf6RgcNpJVouYmL23EaxVpAzLse19kuOAC+9gHGPvg
6SrJjV8EgIEL3taAFdEJB+GwiAdAoC51hINGFnlEkL2LDC1IwAaVskG+/MQCd84t
B3HeMmQDpSF1ZADPtaU0MiIBZSlsunqIIg8XZZSDXiNpUBlYwQpylIFjh5siUvDu
OinRh3ylW7Xbhu29f6tbIva2twqOZnBtRdxnJZyduCLKq4UrAzhs5BlwcPgNqqCA
jnccFFXgyq1EQnKhpMpZcP9wicop8iqDVWEIxoi5MZSggA9x6yMyY7ivJuGMgjmH
K/AYAjyy2AcTGF0CJG/AzJy1g0s4vZvZ9Xm1vEF1qrvh6p0Yuk9MAOoC74sxyWWM
DC5xKMxMFzM3mMc9lMd2tpdh6KPI+pCrvC9eNujIh7pEGiiCYwXWAByAD7xO5iGJ
U9zDDY+TGzwnxvgbHMMGt84dCoLN+MpTZAPBvkE4zOeGATigwBSIwzxUcTbEcxZL
LoJ8gySfea5gniKbv0Hnz7aw2i9s9Gdr2OlR//j51W5LrVfK6zVvPmPYPmjIJ8Y8
jBE03fse9TYYDB1Yf6gNbAP2xQ/a8bbfjHm4IQTNGML/4yRAhyIN5QJT7kEftkSh
uXBoA+Q4h/k60Yz629/+IfDGDSShABI8rt1qQQd/tSj1xhXzBiiONwRKsIAMuICd
YDT/BnACV0MPF4GqNYGOUoE3kBB+UE9cdDsvo0QNkQ//U4LkoA6dwhAa+BMxUHSH
sUs30APRFUiTcAOyMA44iIMU8QrVQjcUwW8gKEE2ME3H1RESAAWkEhIx4C+BpA1Y
sCrCdAMFEzMsUA2QcAO6VHkxYAJ9QIQnQX6kcgwEQAAxcGAq0U+rUgvLkGA8WDHD
UAmVEAVZWHnk14WBcRxM+IX8FgM9EEjLIHUpQVGyQBF4EQVxyAeQ8A4woIV9IAF7
/8QRMFQctmIDctAHlPAWaPAMsvAs04BdslALsHKI0sAD+qCFMXhNLxYzgLRwiiED
6pIKizRcz9AzrMAH0gAJPHBlH8hFlCAHHKFW3RFRwbUGb5EKqdAEz6ANxPUJPYMK
rHCLPFAILfNTP3UDvthmTNAAbSMB5HFEt/MgULAlb9U3lHAF7cEGWhM8HCIKpUUR
swAJuMgF7OACJAdj1wgAYICFDZUDOcACF/CPKxKO8mE1V5ABGeAECOkEdDUC7UgR
iMgD/sAFN7AGJNeLnrYAQ+ECdtOIcoBEALAGmoMDkkUJgnMO8rYC69iQboSLEVkI
4lKN9ygjwkAJUGApBKADlv/iByviBYGVCeEDDdDgAR4AlEGJAgxZE6gAkREgBGtQ
efc4HkwgVHSAHmzCk4CiBxuwCH4zKOyoFBpwALxAPU5Za+PBdXSAVS3ABC3QAscA
Wu1xBf/DJNmgB9mQDcegkhWxBn5gAzYwli4kDFwkDC1TQehRQ1QjJ7yDlxVRO/uw
BhLUNGSpJWCwADlwAXtpA3YDWxmQDRkADRvwmRKigQVHKQfHWyt4EmCkA/+IEGAk
a62hMWoUm7L5CnBwGxsxCriZm7o5CtjxE4tneRPjIDRISMRJnBXhDm20Cu2ACK7Q
nK4gD9AJnT9whwtgA3RQE+JCAL0YSHunFKnwB7WgjBb/IQ7BEAx2cJ7oaQfr0ACI
QJ3WWWDuxALWyJ1cgQWvEJ5tJA7QmZ7oCQpu0A7UiS/RM6AisWsHEUhwIEwKuqDk
8AloVxHR4AlJMKEUWqFJQJ0LsJoa+o9+4AevqRLTYA07YA0kWqLW4A7uYJuLuZss
OgruSQdayHjhgpkzQXZ510Z7gAjRuaPyIAZiMJ3gISM6YFVVpTQ5UBKB5QFe5zcZ
MDoW4QntUJ7mmZ4kwJ6e1gc6QD0DugZq1QMmQDeacw4ecAVLSqaoRhEdCAHOyaPn
CaTfQQkm0G62w0VycDso5VrxQQ5XwAYgADgnKW/AQ1cVwQRyEA0tqpuPsw9sgxoE
/8BaNuAHfbCXXJiZTgANIwAITuABskWUnnkFG7BnJtBaqikHo+AJpnqqpnqhAFBB
PlUYLeBHsRM5acWNKLAvoqA34aAHBaY3K2A+OoAgatkHnuAKUlqe/gmgANACBNAD
DZBlX1qk4Xg9W5INcQUCFkKmVsOQgnCmN0Co0QAPUVqswVCl7Tke/LYAUOAFLsCl
ahUULkBq7RF/OLCkemOOFRFBEHAH7bCciNCvzOkKbgoAfcACBPCuEnSwSQMDeNoe
57AIHhAO2xCxErsNomCt7bgyhnqovLmBo5kQpblEp+kRWXaTOjCGJusWztEEf7Cy
LPsHa3gXIdsWFWQRDUIxdP9QLk1wM1xRC9RiEaMgDnsQtEI7tKtAnWRIZDJEhh+a
EsyhFDuQYCpKEfrJnz4qBqCwDu15EkzAh52TVl4QA0trF1yhDjARtTewB/xpB1W7
DmaQtT/RB3wZtzbgNBdQLjJgDeOQBnq7t0egDdagUTewCj/Ar/5auNNpHI1odIor
Tw2AmYE0DbJgCO81uX1bXYCrYMaBhVYBBTBAa2ErAzq7EdowiGZrBnuQDqibuqqb
Dp5GiS0wEuxKkQMLBTISH3k2WAV2Dk5ACTkynvKQtufpBiRQrt9hAjGATRCzrlz6
U+IRH2S6AjjQOyMyIiOwrV/TNhDwu2krvOXKlw1wnX//VSkdupcSsCJchnn7sqeL
wKkbcAU00o4luwarO7+PkxbV2APCAAOREzuncgy1W2CZwFXkED4jhIWblJa6cijc
EUENogP9VqT+Qgf6ox56sA1dtQGd4wTz2rtjiCAtcAGeMLj7OsL76mm+yAI60FPs
umu5UrvtYcGZWmADTAkFDANyYANr2QDkWZ7oSQJt62ksYAIAcD8Iez9esH7aY47b
EA592sQeJH/wKz+rgAjiGgygQALIqiXYtpZc3MWQxQYWUpdiLMZfo2tVAAHikMZq
rMZF27Ee+7FSxBXVEAuxMAgxFlx8ZDGk8iyXoA0esypccQgc4AuE7AsK5xF4NBTC
/2i3MrAxHfNzSoENY2ABlMwBKZBQH7FSVSWDzlKjNcGD7rIRHEDJ+IAPvnDJRYjI
uVJVAtjJKqFNFKGMoWwR2GABpWzKqIyhzbXKsUMcrhyINbGJs1wRYzDJQjAGHMBh
pDKkm+wFJ7cqFgcnTcBGxVURPYANhIwN12BngTGG1RlBy/JTi6wqazh2f6BNsjzM
NzACGCAIpRALUDAFmqAGQCIkN6C/Z7VHX0sJXsBWUjOvFqwHi+CpciUKtNWODUBB
a8AImoABjaAMSEAPU4AEt/B/aDES6fodLkAxFHMkbaKr3QMI7UFYXXUfhmED+3AB
cnALDR3RtzAFU3AL/fA4Nv+QVrHjAjYgDBvNLxSTmRhsNZ8qV1YTmlAQa7PWA6Rw
CxhAD0xND2ow020GFOzaApbYOTEgeZmwu/ySDefgdV0JA0YNRjZgBfTQD/Fw1met
CYh2Actbp69KMQ7UHlpNCdvwZSNpNeYTVEZ9AVZABVTQD/2gCYKtCbSAaDZAAJaI
jwBAAErRJhvgAedgBe6BAkpaYKXVB7HmB41J2LTQ2Z7NALUGBgRgvNcDTxURA21J
JxkwplcjWpZNETHkB0TICEZgBAxw27cN1WxyASC4uH3AFm6JIRF7BcRN3BsgOBbx
ZhQBCIBwAnnw3HlAEW4sgnCsgj1UCqUAgam8cP/iK9T/DMg1UQ/Y7AvYcAg3RwC9
VLd77Bx/oA2f8Ax/C94EJsmUPAbYcMcnQVXHkBbHoN6/DJ4WwTMGYxEpMMqUbAGW
fMgGorx+tIp2S1HGmAo3QA6xeLk3UOC2XMoJjsmCkVbsOi7drRLqYoILBsmiPAal
jMzcQn4f3s8hDswlWAuwaOIWcQ0cUMwccA03FznryskvLgNoQEjGeAOgPOAUoQzx
MAU2nuMTrQzwQwAuThGg1gefdTceIAg4MK9XYwXnQFqDYwW0gAEYgASkAAi3oAa3
EA9O7mk6QBLYtizXSQnma+X7spmUMMPk8L5f4wVywNARzdQvPQVlrSJbdCprUB4V
/wSjMTDn6gHZ+2IFbAANW74vel4RcqADEsDQ9HALnM7pT20Fj/OSQoFSAEAHcM6H
GVRgXmOCA1xAXtAADSBrEkAKY44EaB0PmhDdUzZBP4WEw/EiNzBDKIAhrj1ZHtB1
/LJDN/CPAlGyUEAFGADYgE3Yuv4dzDyZ5fciMUCV8VHZGZAJXseQ5pMrayBrXnAL
tODXVPDZoD4eKqOTWBIDzVsjlBDDXifS7WgCOnDuuN3vDDDTnpYDbNXsqQlGLKA/
gSUhi+CwQtnwmvo1foQFjTDxFD/xeWBn040p1W3dD8fdFNdwNI65HdECGOMRLaBr
y9XJaLAMr4IGLWG57kIJKf9wnT/4zrFQD5cUZ/tSHDBgNY6rKk1gZzwDYlJYLXSA
DRyADYNAEaXgCzheDexU1ZSgkRhpEVSvKjtQEcjEzTeATLAyCL5gAcVMEfQt9mMQ
9fxC9TF29SmR9Xx3uV5PEWCPDxYQC2Sf4XXPTny18x3RABYhjCmBBkKfEq1SEfIF
K5SAzRyw9DcQCyiOD2OA86VhEB1Iidg0HBSxBuQiAzugDpOgDZMgC2kALXb2DACF
F95gB8MQC9XQCfXSAzdezIKwJ9neUy7gBz8VQaF6KmzVjuGgDp8ADViABR5gCFcg
/KkQmr1wCr1gDOepDGIOBaVwCCcg5iPwOETCAjQfMy7/wC8CuRGLwM3hAEypYD5l
cDbM7wVJPtG3wNQxHQ/Y7yIyNBeUsCVwAg2HYv7I1wvKINEw/f8AMeVWvxsA6Byk
08AGJYYNHQJAcUPijXAbJl6cGFFJCI5DdKm5FVKNGiQlNRW8YEMli4UOXUKEtkHm
IosYL0b0JkknPF0Y4sXDELTfUCoFARw92tJlQ4gonDqtaVNiRIyNqGjSREWrVlq0
jCIFIKwHw2Nlzbpo+hRFJixSb3yietEKLQZ17dYlCBZpDiZ9/fY9qvZpBj2FDRd2
KhVLHsaNGUtkEVnyZMqSJ1zGnFkzZredbywAHZpASpV+CIQGLUP16j+TLqVJs+PP
/+ppMjB2oGEqVChTNDpgRK1DQgMvxYs3kKAj9GoZcLSlqnWRnLNXqyfmIUKExvbc
RHbnmRjaz/EG5c0Xt5FatTuJ5FK9hy9xnGqJHUJt15Vf13bdD35/XuAC4wYk0As/
FlBtkhuwaKszd2wbIZRAGCGlwgoZYUSXQIjARJTPWiDOCxv++suE4hBEg5wbakmj
CRdfdPEIiWzLTpClXHrAlM9YMK4PHX78kQAhTfQCwVcmkgUOJZf84498ZrwhR0by
EKXKKgHBkhRGHsDkMwELBLNIGay5qBYzzbTJNt7w02+/7kLhsqAFeqDzAr2YoDNP
iLJpCBrB9HApojVtvNEKIv8eeMAoGCjpwQsJHn20gTwp8aIpEBgaYQVNNQ3HoREi
CoS3EQQhldQRTo0QExqMAmMNRo9B6CA6GRWmqQwIvbGhTCKqJRQiTAE2WFOyg/OB
6JACo4Fj8kSIkhtcWCAwpzLpNNcRcEjsBvt+Fda7YgWRCCwWbjiIEoQauCAHpNRy
4sZwoGHjKYlEeWA3e4t9QJfowkXKhBsoicGFFkDTKy0UrmhohGxwwFaw+jDBxJQ8
MMQwj30nQvYYiSRQt2BpUcigoRXiFUzeG7bz0DN+w3JBAgI8BuupTARZQY+SHVbZ
psp2pmwznzXL2SbUFtinDxNM6IOFodVTbZpJxjHEkHH/XqmNOduCvii0C0IcEN2h
V9shFZtSscZqrLNewIYw0UNNtTQ8S4M5qUTZD1hdALl4AQKKk+CCff7+W20vlEtt
GYm0mSRxxd++AQ7rJMLjiQpo4DYQyy1PeYE+XHBBjgs+v4AFAtR2oY/lZJHIGWtW
t+aVZRiXxTpKEkmGH91+pSE/DAMx5ZPPNncBBhMeNaEBzjk3PTUZb1An6qjFnugI
61qZIQhAHiAn1/0+02GNNUwQcsjj1yBgn9OakyifJpr8w5CLlpmkCduSUSGRQPKt
EEsrAdnQKAluyFMAe3ADP+QACsdoygpyxRB4UcIKEUnGDBKhiwcQIX+AsBIjKPcV
/wnAqlwMgYIOAAAF76VFgUuxwiJQMAKGRIR61nsADW4EAlME4ivCKAu5vCAHpeFp
DSRMSyYcIoptLAIHerBCQyJCiWQEwXb18pWwhmWFr/hBImuIFhMkAAUvrKEHa5BA
WqDBEEFgSw9XwBUlVkCVAhTgCbagARSzM0ddrKwBlOhDxxbgRShwjg4fCwc5zpEB
p+CgWmRMTAUI4SyJjGA/2qGchFYmDDAULAcL2CEUaiWzXQkmA9kABEN2FbRUMEJH
X4EZUvywhhYY7GZPgUY4shGXs6Uyla/EJS2xxjNesuBnv5yAVA7gDw24ZWgEKF56
lsY01SzDEJ+IW9XMdhENbP8iAhHAhTFB0wIJ9IAO5jrNMleDBm1cZDZWo49EULEL
bnDDH9yAhDY1RwcY0GEsElgmglQzjrdMxBDoTOcNIOEIghIUm1IJzeb2JismiFM1
RyDHH6B3A/mhcyJS0AACZkHQTfAAoaAhABRSwig8OlQGTbjBDi6BJIBiBAG4YMUm
rFlM4IRGAl4gwBoOwsqlMec5yzhTLdBg0YuwoxK4kOkm/CE00fQgJcs6Rh8G1rbV
oNQ1SBqq3DACCVREQaYGgMUBLqIX4owrBmftwcvWpZZwiGIRDhGEB9RiEw1A4gAR
4AEXDMCFsYKlBT3Q2ER6AIOYqSUb5MieQ0AwV5tEYRf/7IyAWPsKFi8ALAZXZEJh
1SIKlwjCZibDSBQIugR/YUQv+5hIwFjQsbU+pV0NEYQTCMlYjDiCFbhwAY9MCxYC
0CEGMLjAGjKrF8F4ALEgcIJnS6YyE1wgsCtDit6OUkLiCuaITiHVcj0DhX3AYLIe
08Ex1Nram3mAEnKlbWf69l2PQQEK1cWlFT6VXrdQYpUT6aUN/vY5y/xyHAGYwA4A
fBnP1IGRaMvnGmDQU4CqpnlEdUsNKMDUZUrABlAwwdcafIlJkOMS05SKJKpQA0vU
dGl+cK8NnEpVdMKBeTtonFZtUgU3DMEBzKgDglHzVy/0oGVpXQ46U5S6NET0cRg5
/wYozHGPIYCDGeYIz9LW0MWyyMEFPNWn1ZxxkTQ44xlZlcoQotGNAZyCBDUgQ2CX
ZgLOmSWqjWKmamCMkR08+GoX8YY3HBCHAQygDN4YQA0kMjQdcJEOZUGIDY6BT6v9
QUUYIUeHP4yRaLjBHH3GdBksQYwJ68UFA7TJGvxgAldy9kaCgMY5dDkEc9QgDnzu
8ynsAI5OI6UPszrwDaDAAvKeI1eCUGG2JEICcICDGK/ucxmCAQ+MHYUJAFyKnTQL
qBv5ibajcEM0gEAMbpehF97YrQF7EIOGNKC30l7rrVwCAvNa22THYDUzgACEEAyh
CncA91gl4Ac63KAsPbAwCfGjFbNzQCOJDLHCFTZghTI6DByWAIUqmtGLXnRCEgqQ
RzRM20ETQKEPwrgAHdYgwoKh4BxWOPk5MjFGYN/sBuAgw8VJYA5vYJzZNjmKFxoA
llrBzCkgWKzMcCkRNF8Eym45Cl9sWVjC5JKxx8hx0Ho5dapXnWf5xHrWtb51rnfd
618He9jFPnayl93sZ0d72tW+9qW33e1vh3vc5T53utfd7nfHe971vne+993vf787
MAU/eML/rMGHR3ziFb94xjfe8Y+HfOQlP3nKV97yl8d85jXvdM533vOfB33oRT96
0pfe9KdHfepVv3rWt971pg8IADs=
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline
Content-Type: image/gif
Content-Location: http://img.wonderhowto.com/images/wht_nav_bar_bg.gif
Content-Transfer-Encoding: Base64
R0lGODlhAQBgAOYAAP////7+/v39/fz8/Pv7+/r6+vn5+fj4+Pf39/b29vX19fT0
9PPz8/Ly8vDw8O/v7+7u7u3t7evr6+rq6unp6ejo6Ofn5+Xl5ePj4+Hh4eDg4N7e
3tvb29nZ2djY2NbW1tXV1dPT09HR0dDQ0M/Pz83NzczMzMrKysTExLzAw6zCz7Ky
sh2j6xyi6hyh6Ruf5xug6Bqe5hqd5Rmb4xma4hiZ4RiY4BeW3heX3xaV3RWU3BWT
2xSS2hSR2ROQ2BOP1xKN1RKO1hGM1BGK0hCJ0RCI0A+Hzw+GzgAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAAABAGAAAAdJgCcEBAgICwsODhERFBQX
FxkZGxwcHh4gICKaJSUrAAAoFqITE4uJDAyFBasCra6vsCksszC1MDO4Mzi7Or06
PsA+QsNFxSqfgQA7
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline
Content-Type: image/gif
Content-Location: http://img.wonderhowto.com/images/wht_toolbar_rounded_top.gif
Content-Transfer-Encoding: Base64
R0lGODlhDgAgANUAAP////v7+/r6+vn5+fj4+Pf39/b29vX19fT09PLy8vHx8vDx
8fDw8O/v7+3t7evr6+np6efn5+Xl5eTk5ePj4+Hh4eDg4ODh4d7e3tvb29rb3NnZ
2djZ2tjY2NXX2NbW1tXV1dXW19PT09HR0dDQ0M/Pz83NzcvNzszMzMvMzsvLy8DC
xL7Awry+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAAAOACAAAAbRQIAQoPCsVh7FcKlhTQiE
CUuzBHBO0ICWcOIMNSnoYExOUResQ2HNZrMWocvBQK/XL6EWYs/v71stCYKDhIKA
DIiJioiADY6PkI6ADpSVlpSAD5qbnJqAEKChoqCAEaanqKaAEqytrqyAFLKztLKA
Fbi5uriAFr6/wL6AGMTFxsSAGcrLzMqAG9DR0tCAHdbX2NaAH9zd3tyAIOLj5OKA
Iujp6uiAI+7v8O6AJPT19vSAJfr7/PqAJgADCgQICIXBgwgNAlLBsKFDhoAiSpzY
IggAOw==
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline
Content-Type: image/gif
Content-Location: http://img.wonderhowto.com/images/wht_say_stroke.gif
Content-Transfer-Encoding: Base64
R0lGODlhBwAOAJEAAMzMzP///+bj4wAAACH5BAEHAAAALAAAAAAHAA4AAAIWhC9n
Esq9goyyvXpxrSDDjHAhFCpLAQA7
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://img.wonderhowto.com/images/dots.png
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAAAMAAAADBAMAAACkBqiMAAAAA3NCSVQICAjb4U/g
AAAAD1BMVEX///////////////////+Rd1MVAAAABXRSTlMAVZm7/+ZJ4qAAAAAJ
cEhZcwAACvAAAArwAUKsNJgAAAAfdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmly
ZXdvcmtzIDi1aNJ4AAAAFnRFWHRDcmVhdGlvbiBUaW1lADA1LzEzLzEweit/2AAA
ABFJREFUCJljMHRgUHBgcHEAAAW5AVYIFj73AAAAAElFTkSuQmCC
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://img.wonderhowto.com/images/fade_to_white.png
Content-Transfer-Encoding: Base64
iVBORw0KGgoAAAANSUhEUgAAADwAAAABCAYAAACCGM0BAAAABHNCSVQICAgIfAhk
iAAAAAlwSFlzAAAK8AAACvABQqw0mAAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRp
YSBGaXJld29ya3MgOLVo0ngAAAAWdEVYdENyZWF0aW9uIFRpbWUAMDUvMTMvMTB6
K3/YAAAAOElEQVQImZ3OQQoAIAgF0Ym+df8T28ZAJDctZB7iwuHuAAvY0WqLKqyH
1eyvZxk1/r3JzT9nG6ADRMAD+eNQyJoAAAAASUVORK5CYII=
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline
Content-Type: image/gif
Content-Location: http://img.wonderhowto.com/images/btn_icons2.gif
Content-Transfer-Encoding: Base64
R0lGODlhEACgAJEAAP///9ra2piYmP///yH5BAEHAAMALAAAAAAQAKAAAAK3nI+p
y+1vAECSyTluu9pxGITBI4qNOaBKiLDQC8fyTNf2nVTQ55Tu4lPhhsSi8YjEcXiL
JeYkhCan1KqV9txlPboHE/oDv8K9q/mMpsC63G2z04sy5PMRzJ7O64t4EvndZ8Em
6KYA11OoILDH2Fjz1aRmEYGR6JZo5xJ4kJl50uL35zhKurbUdmh4CkbH6RNXUio7
a6QzmFOZSLkrlbLZ0hlnIEpbbKybE4Ms+ekLmwLSmkBsDFEAADs=
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline
Content-Type: image/gif
Content-Location: http://img.wonderhowto.com/images/wht_content_social_buttons.g
if
Content-Transfer-Encoding: Base64
R0lGODlhywAwAPcAADZRfsvctgCMxLoDBK3NNuOLwba3upSUlNk+nbXt8ISEha2t
rmtra3SOu5La8tYajJrEKJ+hpEnG8hSgONLv/P7edmmrDslLS+ja5IeIitG7ff/v
twGTtHiIpoS4QMfIys90dG/G416gu992t3HGhQNriGa7mf+0H+zv9sMuLi6kgVl4
rujA2qbJeO7u7ktuqcPCwavq7TPM/27R99xirrCsoeDr1//TQ/7lmmJ1mvBrqAJ/
m7CytQCZzIDCrcxZWlRqkP///78cHpmZmUOQsNbW1pjQqY+/U4SawuZSod7e3pXG
0+m2R8zMzMHk8d2oqTGp08zy9Xt7e9cwl/PPY0u3bt1AUI+Rk7u3rM3LxqeprDrO
//b3++/390e11f/hj//JNuQ/mYu8G74OEICyxdkzPzOVo0BahtbFjJXEPObV2nu1
I1fK8hmXyuemztfe6L29vfBlpV/DetYjkenShMrEsbfUk9n0+cDf0u7j5KzT2jV+
lWZmZqTJOajp+tODhNEjK3R0dE2whv/JU+VATo6PkuVDUv/qqjCsUqaoq/D7/nnV
9efExdQpMlFyq/FyrJGixAWGvNpMo+5PnenNbXuTvcxmZubm5r6/wq2vsmN/sunt
5IyMjMK4mP/jgfj28NwskuxImnuUteL1+f+9Kgehz5WXmuAwk+X5/sQSFsHv8tV5
eVLI9Ym8KdLjy13M9s7m77W1raSkpFq/4f/ZVUnR/985RrXe7fn9/v/ZaOZKUtoi
j5vFPFmnxDtWg+5XoOK3uJfl67W9vcc9PZ+foqjLOLbRM0agsXrL6ODl7cYcJO9r
reE3lert894hlPDk7NLRzrW1tff39/zfftrDfcnApKTJIYydvb21tdFqa2XR9rmx
mYSMjOldpenPcsXFxX9/gfF4r2WCs+r04////wAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACH5BAEHAOQALAAAAADLADAAAAj/AMkJHEiwoMGDCBMqXMiw
oUBMMCJKnEixosWLGDNq3Mix40SHIEOKHNkQU5CTKFOqVInJ5MqXK1vCnIlSJs2Z
Nm8GkcbSxZVAQIMGkkKUaKFLAl0Y4MG0qVOmBlwIlLZAi9WrWK0ukCbwkqwMYMOK
BSsLKblLWoaoXctWrRazAzF1mUt37iUDl+rqban3roG/Bpq40DuXL+HDhA0jXtxF
8eK7svZy4pS1spYrVwQagKFEyaXPnUN3hmFAoBY4RUSr7gxHi8ADQ6LJjgbYQLQF
C2RxOmC6iIvfwIP/LuKaoNzDBhYYWOy4S3LcuIcoUCtLCd3mSorkpVvE997jdDsT
/xZfV7FnFzw4gVsPToEpBXsZpJ1Mn9OVIcTyawlkOrsS4EpAI6CA3S0gkCxFNNHS
ggxi0kQRsgiUgQGcKLAbfvkRw0lZMGQg0BAuZNfdiCT+N0RB4OkliwGRIeaYEgd8
Q2J3cMDBQ4uNgXfJEGHJEiJ9CvBQHnhN2IeZdV0oYeQVTVwH3hBaGHCALJVlUER5
DCxQH308uHDSAQvwR0510OACzRBNSANNE2yyqURxxBQBh22AwcCmAR+gRoyECxSy
4geAfhCNLFcYEAQ0CnzowoCMNurCicYhpkUmCgx2mGOyLNDmpmx+AF9h4B1gCnQH
HDAddIU6OZcShaBG3HKXBP9JYyFIKqYFJ0UmouuuiRyw3HVZbjmZl9JIA6aY1TUR
xFrSFNHomwLFGc2DcxqgxElNQKMnn1qEtlMQLsDBSTRBwOEhOUNc0ui60OyIoosZ
upgii4HWGyg4qnbxQSG8JkKMLLzK8mmOc03a5oqNEbNpJlqASpenSigQwcQUR6AW
lloKy9MBk4V5YBEfLKtWcM0+CCfIJ7kg27UufPNXEXuSkwEPRUjzgQEJennJFeRi
ci6IUnDKqRSPvlvXJd0ZQAwmQwiZWIoKwNEggxTma8AVFWdNMb4OdxFboFdcKQsx
35T9TTRDdN1FrJjAluHbXBcWbH354RLE2Jx4PCbKban/JdgHRSTyYXfgXgKHEjJC
M200RUCaARyX+BQWMeDGFsQHP7tQhBT2BiqFb5DGdXQGhRRCDGAHfPB0XWrV6Lrr
C0CZ7wecvG17hnEb1vSCWiiAiQtpLZhJ2gTTtSEPhZiyZQYHWNrY3PTxlNKxAkVQ
xDcit0WMzRB+CE0RuHQWldkyRnOmhHCU2SztB1ROLuaKdidFRZ+DbvRcRYw7m2xa
wFZdvnNxgQL2J5sIcAJKzjOMAO/Tt7VQxmpDqJYBMpG6LoDpL0P4lWN6VwQL1SYw
8ckYfT6TMhdQjxzWg0H2ZMFCBLWse+hSXDSaAg1w/cYAWjifzOj1oLtxQhouAMcC
/4LQhMyNyHcLqlR3imacz3zmAMTIhBSnKEWKObElTvyMhXaTiEwkAldZ/AwWP+Op
3ZTqjKVinmfEiAknwqYp+IHRAaRoigOscYxkVEAR8BLGPmICevXZWMfEFCeTMAsl
i8IENCIUQ9koB0+4cOJtdJgBTDAlAsrKRAaKJYsamit+RaikAkbpOyvZr4lOBIdl
sAKOK7YxjHe6QiIKwccw4vESTRhl6XZZCAUQY41szOIQrsBCTsjRX7UD5i0vAY5o
9PGZfxRhIIPAsbwRUlvZ+w9w5ASNCLymCUzRAm3SFKBLREMLTeCNzCIXBCdeIQMq
PMklCmHEDHQOUFZiYlyy2P8rrVWslcF8pgFKl4hnXmKZlzAVfTIwQD++0okGUADH
IhaBKyjgA7Z86BPTZdAs/pEHmAkpZngyzCtk4pqGkkXfPhAuaMTsAE14izSaMK3w
wcCc6FRnBqAhoyYMlD6aikYgOJG5DAhtUxnQ50OECcXb4c6VBo1GL4GZ0Wcmoj2j
1ChUwwgjPSpAjQ4N4wIA2lExMgATlrEbw04jpiFAIyou1Z404NCElzYhEdBQAgyi
gQmQBYZh6ZTQrYSVASkEggF84NGHkMYuRrkLlZ/JpSkmS9nJhnSrfYwGJwpqUIR+
5qp67KxWnairzYo2jB8ARxPKKsZA2AY60CkWDx4phQ//fQAGH1BTJlrYSRd84Bsx
u4KgqPTID+IpMzKThRTYA46iBIUBikVXiGY0IxOhKIzEGEsG2uM3zIbRABPqqGc/
szTxjtaJC8DoacPYTNYeNAIH4IFxaxMNKApktjD4BjSE8xtowGABPPiQFr4RqDXZ
6xtpeQ0xeKAF2EJHK8RQpxZYyl/hwKA4+8xiEQgYDap6N4wdNq971zviqor1vLaU
RgRIyeIWE0Mq5JDGoHhLYxZ2KSlD4KWOdwkigcCIoS1usR27kpYGsuUt1y2xiZX8
YSWP171PZi0mSELlKlt5ISiGcpalvOWyRtnLXRbvlcdM5ipDxCNoTrOa18xmiZT5
/81wjrOc50znOtv5znjOs573zOc++/nPgA60oAdN6EKjqM2ITrSi12zoP7tEJzF5
NKRTkpNJ10TSlg5CpWnyCZYkIwdnCLWoRx3qHLxBIKNYxAxWzepWr3oRdxDIJ7xB
i1rb+ta19sYnBOIEKAjg18AO9q+h4ISpLACNyD7jVu6nFxu0wAbMSVEX1LCKalf7
CXm4lLQZ8x1uR9vbasjGBfaSgxxU4tzoTve5yy2QRThAFVG4g7yjQO96q8IBixAI
JSqwgX77+9/9rgAlBNKGY5Dg4Ag/uBwWXgUztEEgC7jWTZRgoEgdpgViaMG367IK
QHjc46kYwDCGcQFGAHAuz/9gwTPqkvKVD8nbKO/2XBiRhzz8YAwDyPkAxgCIMewF
AJVYwQuGTnRHaEIcSK+ELwTyClXAGxVQj0ICpj51p2tDIDc4BA48wfWuex0Hh7iB
QATgAxWYXQWCSHsVqoAIQTiBDAJ4TeGyqBovqVN0hzmCNY6w8ZmnwBa6CLzgy1CG
RoxbbV0YwQNA8QBJPOMZklj8A0bw8rm4YQoPaDwL5sKCyD9gCm74hOgVM4YfZAMQ
hDCE6lc/BpNfB+hEj30lmnGSFShdIKyQOi78IAM/KCIBMQh+8KPwCqxvYBp0oMM0
KkAHO9F06xsQOzkEYAIVVIEERsi+EUjAdhLgQg9xJ0f/+1azGmoyuy56t8Am5FWX
CzRi9fBnPQBHEIZw2D8MCEBA/e9P+a6xABTdYH+hUABdgAFzkAT21w2gsHnF0wUX
IARPkArxp3rK8Aef8HqVEHtER3sogAK2t3TkkHsxEAQyUIK/R3XBpwrFRw5ZRwdZ
UAR1wHwSly3TEHZjZwImgAe3cAtBMApBYAMkgAjeB3dyR13UZX4WRxh2IAZiwHfa
xnGAMIHwNwD5ggG78AhYiIXd0A1ZiIW7gAFdQwNJkIVhQIAFEAZdmAQ0oDZ/MAbA
IIETWAbDUB6wp4EvwAVBIHQvcHshqAojWIIycAdQhwqK4IcqKBBgcAhZkDJYgAUs
/+My1XAIYHCDeoAKyDALDuAAFBAEriCEuECE4hcEgWCEIxIISIh3dGEDARAAGGcM
GfeEdDEGtiCFqmcLQpAv/6cDuriLvKiLC9g1cxAHu/iLNBAGvTgHasMIY/AEKVAG
UkiFGKiBSIeHDSAOewiCrOCHJAiIgOgHqBADqsAGiHgIRVA4h9NTmdAEWCCJY+cD
TkABpQBsUBAE4+CJSxB+7XMJgXBUTRAIl3CKD1EXNmABFrAGYkAACLkGdrA6dDEM
ymAFEBmREFkGyvADuLgLcZCRGrmRGbkLDGgYCPALGhkKc+AGz0ADzKCRv4AAiCcE
P2AJgECRgKAMM5kKKUCHGf8Ye3iYEh+Ie6oQDNvIjTJQC4oAjqwwjuAjPi1jNkWw
jpM4fT6gB7gwCg6ADD1QClxQj953j3L3GfvIKf74j3cXkHQRABaAkGhJABCwBh5w
BK5wcnkwABIJkY0wBsPwA9mmNlMQBhzJkWEwBflSACmpkZMACm7QBQgwCRnJDATY
gF1wcxGYAtZWbcDgPI1Rh0T3BslwEsmQDD3Zh0AJiLUwmrWQAKMQDAlwlOSQiGiA
BZnQiDUEHHCwDewIlYKQfXoQBFBQCqhgAxMgB7jAlaHoRIFAPqZIQmNJDhq1BhBQ
DM75nM4JAU3oXWowBtapDGVgBWWQCk8QVp/BAnMQBr//MJ7kOZ5hMAcssFUYgADM
QJ7MIAnreQrjyQwIgAEB9Rlt+AR/AGWYqZN5OHR8KAEJEJomiBKoMKCpiYg4kAu5
0AkVUAFZEEmfgQVUgANPSXYmIAeCsARB4AU9MAqfUAVG8In42E6x8g1C8Q0KgJxJ
9hkW0AcwGqMy2gcW8GFK8AT6KQRWIAT76Z3fOQWnMAlCOqSnMAXpiVkYIAmnEAqh
gABqgABBGgagAJ/UOQY9KmX9SXR4qIcBOqBBGQWDeKCoqZqksKBoUAN0UAHktFoU
igOkMHawcAe44ASw4ASl0AMhEAR2AwtmUKKxwo8rCpDKmUVH0AozOqM1ep9h9AfK
/1CRJPYZSQoKTMqkU2qfHqVVBTAHRaoGDxAKpzAHBbBkn5ECFzBimAAASOAIqrqq
jrClqtqlwYALtSCUMhAMqDCmAlGm1HAJZuKCNnUJbfqm07cEyFCVs3Cnd+oFS0AG
JbAHJapHpNhBgqpRHtAKvHCt2JqtiXpQKAYCyjAGavCoTkQDzhAGYeAMNABNo/Wk
D8ACD+AMkhCuonoJljAGpgoAkNAA+rqvDWA3ldAAlQAJICgBMRAMo+AHs8qNRBkM
MSABuYoDGpAaMEAHfeVTTZAJFSqsAuChPXCVpfCxPcABO1ACJUAEJUp+qjGtWWSW
adCyLtuyrbAGa9Bkn+GtP/8gYs80As7gDCMgrpBKAzQwBemqrmH0BMsIZb4ACUig
bpWAAlywtJAACWcgEBIQDAy7e9pAmrXgB6NQsA5LDqTwBblwA7X2oGZrtl+gscfA
AWzbtiK7A3BbsiX6CWXVacmpVUcgs3q7BgTpAR4QADR7CX/Aozj7TEBbuH00Am6A
uJegBgMAAlDWATlwDVFbuZYLCdeQAx3QbtrgAKgpiGF6BwngANqQb+TABIPwBar7
BVq3uqs7CExAcEQgAiLQC7Z7u71AuyJABA9HDpqiE01QcRnmRKzYAsZrvK5AtM+k
BiAgr8r7TBhgqc/bR9I7vZ/xA3/gAlLWBR0ABN77veB0670dAGOKsAhscL7om77n
OwOoIGtMcALwG7/yC79MsGvkcAttIACRsL/8K2xtcAvGlmzJtmyQxWTcasCBq2UI
rKhMNmWN1mdh5rMl9mWM62QRDE0PDMGLtsEc3MFulsEgHMIiPMIkXMImfMIonMIq
vMKAFhAAOw==
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline; filename=wht3.css
Content-Type: text/css; charset=utf-8; name=wht3.css
Content-Location: http://img.wonderhowto.com/css/wht3.css?v=0902102
Content-Transfer-Encoding: 8bit
/* Reset */
html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pr
e,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0
;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}addres
s,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}l
i{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;
font-weight:normal;}q:before,q:after{content:'';}abbr,acronym {border:0;font-var
iant:normal;}sup {vertical-align:text-top;}sub {vertical-align:text-bottom;}inpu
t,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}inp
ut,textarea,select{*font-size:100%;}legend{color:#000;}img[height=1]{position:ab
solute;}
/* End Reset */
/* Base */
h1{font-size:138.5%;}h2{font-size:123.1%;}h3{font-size:108%;}h1,h2,h3{margin:1em
0;}h1,h2,h3,h4,h5,h6,strong{font-weight:bold;}abbr,acronym{border-bottom:1px do
tted #000;cursor:help;} em{font-style:italic;}blockquote,ul,ol,dl{margin:1em;}ol
,ul,dl{margin-left:2em;}ol li{list-style:decimal outside;}ul li{list-style:disc
outside;}dl dd{margin-left:1em;}th{font-weight:bold;text-align:center;}caption{m
argin-bottom:.5em;text-align:center;}p,fieldset,table,pre{margin-bottom:1em;}inp
ut[type=text],input[type=password],textarea{width:12.25em;*width:11.9em;}
/* End Base */
/* Blue BGs: 1EA5ED. Blue Links: 008FED/2ABBEF. */
/* General Use */
html { min-height: 100%; margin-bottom: 1px; background-color: #FFFFFF; }
body, h1, h2, h3, h4, h5, h6, div, span, a, table, td, input { font-family: ari
al, sans-serif; }
h3.std { font-size: 20px; color: #000000; font-weight: normal; margin: 0; paddin
g: 0 0 10px 0; }
h3.std a:hover { text-decoration: none; }
body { border: 0px; padding: 0px; margin: 0px; text-align: center; background-co
lor: #FFFFFF; background-position: center top; }
p, table { font-size: 11px; line-height: 140%; font-family: verdana, arial, sans
-serif; color: #696969; }
p a, p span.slnk { line-height: 140%; font-family: verdana, arial, sans-serif; }
img { border: 0px; }
a, span.slnk { color: #000000; text-decoration: none; cursor: pointer; } /* 398F
C0 */ /*#0E85CD*/
a:hover, span.slnk:hover { text-decoration: none; color: #2ABBEF; } /* #0E85CD *
/
.cb { display: block; clear: both; height: 0px; overflow: hidden; float: none; }
.cb10 { clear: both; height: 10px; overflow: hidden; float: none; }
.cb12 { clear: both; height: 12px; overflow: hidden; float: none; }
.cb6 { clear: both; height: 6px; overflow: hidden; float: none; }
.cb5 { clear: both; height: 5px; overflow: hidden; float: none; }
.cb4 { clear: both; height: 4px; overflow: hidden; float: none; }
.cb2 { clear: both; height: 2px; overflow: hidden; float: none; }
.sp10 { display: block; height: 10px; overflow: hidden; }
.sp5 { height: 5px; overflow: hidden; }
.hide, a.hide { display: none; }
.progressBar { height: 8px; background-image: url(/images/progress_bar.gif); bor
der: 1px solid #808080; font-size: 2px; overflow: hidden; }
.userIcon { margin-bottom: -3px; margin-right: 5px; }
.loginPeek { width: 354px; height: 250px; background-color: #000000; text-align:
center; color: #ffffff; font-size: 44px; cursor: default; float: left; margin:
6px 10px; }
.loginPeek img { margin: 2px; float: left; }
.loginPeek div { font-size: 12px; margin-top: 16px; color: #F5F5F5; }
.smallWarningBox { color: #111111; background-color: #FFD266; border: 1px solid
#C79828; text-align: center; margin-bottom: 10px; font-size: 10px; padding: 5px
0px 5px 0px; }
.smallBlockLink a { display: block; font-size: 13px; text-decoration: none; padd
ing: 5px 0px 5px 10px; }
.pageContent { position: relative; zoom: 1; }
a.moreLink, span.moreLink { height: 10px; background: url(/images/more_bullet.gi
f) no-repeat 0 2px; text-transform: uppercase; font-size: 9px; line-height: 10px
; padding: 2px 0 2px 14px; font-weight: bold; }
a.moreLink:hover, span.moreLink:hover { text-decoration: none; color: #E02600; }
em.cType { display: block; font-style: normal; text-transform: uppercase; font-s
ize: 10px; font-family: "arial narrow",arial,sans-serif; padding-top: 5px; color
: #B4B4B4; cursor: default; line-height: 14px; }
a em.cType { cursor: pointer; }
.gradeStat { display: block; min-width: 20px; text-align: right; color: #696969;
position: absolute; right: 0px; bottom: 4px; font-family: arial,sans-serif; fon
t-weight: bold; font-size: 12px; cursor: default; white-space: nowrap; }
.gradeStat span { font-weight: normal; font-style: italic; font-size: 11px; padd
ing-right: 2px; color: #969696; }
.pad .gradeStat { right: 10px; }
.brdL { border-left: 1px solid #E6E3E3; padding-left: 10px; }
.brdB { border-bottom: 1px solid #E6E3E3; padding-bottom: 10px; }
.brdBPad { border-bottom: 1px solid #E6E3E3; padding-bottom: 5px; margin-bottom:
15px; }
/* End General Use */
.rssSubscribe { display: block; width: 23px; height: 23px; background-image: url
(/images/rss_icon.gif); float: right; position: relative; z-index: 5; }
.rssSubscribe span { display: none; }
.rssSubscribe:hover span { display: block; background: #FFFFFF; width: auto; pos
ition: absolute; right: 23px; font-size: 12px; text-align: right; line-height: 2
4px; white-space: nowrap; padding: 0 5px; }
/* Layout Grids */
#renderedAds div { position: relative; }
#renderedAds div iframe { position: absolute; top: 0px; left: 0px; }
.fullWidth { width: 974px; margin: 0px auto 0px auto; text-align: left; position
: relative; zoom: 1; }
.contentFull { position: relative; zoom: 1; margin-bottom: 20px; }
.contentFullWhite { position: relative; padding: 5px; }
.content968 { width: 968px; float: left; padding-top: 6px; padding-right: 6px; p
osition: relative; overflow:hidden; }
.content808 { width: 808px; float: left; position: relative; }
.content732 { width: 732px; float: left; padding-top: 6px; position: relative; }
.content668 { width: 668px; float: left; padding-top: 6px; position: relative; }
.content644 { width: 644px; float: left; position: relative; }
.content532 { width: 532px; float: left; position: relative; z-index: 2; }
.content574 { width: 574px; margin: 0px auto; padding: 20px 0px 10px; text-align
: left; position: relative; }
.rightWidget { border-left: 1px solid #E6E3E3; border-bottom: 1px solid #E6E3E3;
padding: 0 0 10px 10px; margin-bottom: 30px; }
.leftWidget { border-right: 1px solid #E6E3E3; border-bottom: 1px solid #E6E3E3;
padding: 0 10px 10px 0; margin-bottom: 30px; }
.right160 { width: 160px; float: right; position: relative; }
.right200 { width: 200px; float: right; position: relative; }
.right236 { width: 236px; float: right; position: relative; padding-top: 6px; }
.right300 { width: 300px; float: right; position: relative; text-align: left; }
.right300 .ad300 { width: 300px; height: 250px; margin: 0px 0px 30px 0px; backgr
ound-color: #FFFFFF; }
.nm .ad300 { margin-bottom: 30px; }
.right300 .ad160 { width: 160px; height: 600px; background-color: #FFFFFF; }
.right300Split { float: left; width: 134px; height: 600px; position: relative; o
verflow: hidden; }
.right300Split160 { float: right; width: 160px; position: relative; overflow: hi
dden; }
.right436 { width: 436px; float: right; position: relative; padding-bottom: 6px;
}
.mid492 { float: right; width: 492px; margin-right: 10px; position: relative; }
.mid468 { float: right; width: 468px; position: relative; }
.left160 { float: left; width: 160px; position: relative; }
.left420 { float: left; width: 420px; position: relative; }
.ad258 { width: 264px; height: 600px; float: left; margin-right: 6px; margin-lef
t: 0px; }
.upShift2 { margin-top: -2px; }
.right300 .widget, .right200 .widget, .right436 .widget { margin: 0px 0px 30px 0
; position: relative; zoom: 1; }
.shaded { background-color: #E6ECEC; }
.wideSidePadding { padding: 0px 20px; }
.stdPadding { padding: 0px 10px; }
.stdSidePadding { padding: 0px 10px 0px 6px; }
.stdRightPadding { padding-right: 10px; }
.right300 .stdRightPadding { width: 290px; }
.stdLeftPadding { padding-left: 6px; }
.tightSidePadding { padding: 0px 6px; }
.padding468in492 { padding: 21px 0px 22px 12px; }
.padding468ContentAd { padding: 0 0 20px 0; }
.articleAdUnit { padding-left: 20px; padding-bottom: 10px; }
.articleControls { padding-top: 10px; }
.communityHomeTop { position: relative; z-index: 2; }
.communityHomeBottom { margin-top: -4px; padding-top: 6px; }
.mb10 { margin-bottom: 10px; }
/* Headbar */
.headbar { position: relative; }
.headbar h1, .headbar h2, .headbar h3, .headbar h4, .headbar h5, .headbar h6 { d
isplay: block; line-height: 20px; font-size: 19px; letter-spacing: -0.03em; marg
in: 0px; padding: 0px 0px 0px; color: #000000; cursor: default; text-align: left
; font-weight: normal; }
.headbar a:hover { text-decoration: none; }
.headbar a.hbLink { color: #2ABBEF; position: absolute; display: block; top: 0px
; right: 5px; font-size: 10px; line-height: 24px; z-index: 2; }
.headbar a.hbLink:hover { color: #2ABBEF; text-decoration: underline; }
.headbar a.relatedEdit { right: 60px; }
.headbar .paging { display: block; position: absolute; width: auto; height: 10px
; right: 0px; bottom: 10px; z-index: 3; }
.headbar .paging span { display: block; width: 12px; height: 10px; float: right;
margin-left: 5px; background-color: #CACACA; overflow: hidden; cursor: pointer;
}
.headbar .paging span:hover, .headbar .paging span.hover, .headbar .paging .page
LinkSelected { background-color: #2ABBEF; }
.headbar i { font-style: normal; font-weight: normal; color: #969696; }
.widget .headbar .paging { top: 0px; left: 215px; }
span.label { color: #969696; }
span.small { font-size: 10px; }
/* Emphasis Headbar: */
.em h1 { font-size: 30px; line-height: 30px; padding-top: 0px; border-bottom-wid
th: 0px; }
.em a.hbLink { top: 4px; }
.em h1 span, .em h2 span, .em h3 span, .em h4 span, .em h5 span, .em h6 span { f
ont-size: 13px; color: #969696; }
.em h1 span, .em h2 span, .em h3 span, .em h4 span, .em h5 span, .em h6 span { d
isplay: block; font-size: 18px; color: #000000; padding-bottom: 2px; }
.em a:hover, .em a:hover span, .em span a { text-decoration: none; color: #00000
0; visibility: visible; } /*1EA5ED 0E85CD*/
a.em { color: #202020; }
a.em:hover { color: #2ABBEF; text-decoration: none; }
.em h1.ems, .em h2.ems, .em h3.ems, .em h4.ems, .em h5.ems, .em h6.ems { font-si
ze: 18px; }
.left160 .headbar h2 { background-color: transparent; }
/* End Headbar */
/* Content Header */
.contentHeader { padding: 0; margin-bottom: 10px; cursor: default; position: rel
ative; }
.contentHeader h1, .contentHeader h1, .contentHeader h2, .contentHeader h3 { mar
gin: 0; padding: 0 32px 0 0; font-size: 30px; font-weight: normal; letter-spacin
g: -0.04em; line-height: 29px; color: #000000; }/*1EA5ED*/
.contentHeader h1 a, .contentHeader h2 a, .contentHeader h3 a { font-size: inher
it; font-weight: normal; letter-spacing: -0.04em; line-height: 32px; color: #000
000; text-decoration: none; text-shadow: 0 1px 2px #B3B4B3; }
.contentHeader h1 .hlTxt { position: relative; }
.contentHeader .hoverPrompt span, .contentHeader .hoverPrompt div, .contentHeade
r .hoverPrompt a { font-size: 15px; font-family: arial, sans-serif; line-height:
normal; letter-spacing: normal; }
.contentHeader .hoverPrompt a { color: #FFFFFF; }
.contentHeader .label { color: #969696; font-size: 11px; display: inline; }
.contentHeader span.label a, .contentHeader div.label a { font-size: 11px; }
.contentHeader .stats, .contentHeader .tags { background-color: #FFFFFF; margin-
top: 5px; padding: 0; height: 19px; line-height: 19px; }
.contentHeader .stats, .contentHeader .stats .label, .contentHeader .stats span,
.contentHeader .tags, .contentHeader .tags .label, .contentHeader .tags span {
font-size: 11px; height: 19px; line-height: 19px; }
.contentHeader .right { float: right; line-height: 27px; }
.contentHeader .tags { overflow: hidden; z-index: 10; }
.contentHeader .tags h2 { display: inline; background: transparent; border: 0px;
padding: 0px; margin: 0px; letter-spacing: normal; }
.contentHeader .tags h2 a { color: #2ABBEF; line-height: normal; letter-spacing:
normal; }
.contentHeader .tags h2 a:hover { text-decoration: underline; }
.contentHeader a.moreTags { font-size: 11px; line-height: 19px; }
/* End Content Header */
.rightGutter { width: 200px; float: right; text-align: center; position: relativ
e; }
.rightGutter160 { width: 160px; float: right; text-align: center; position: rela
tive; }
.rightGutter300 { width: 300px; float: right; text-align: center; position: rela
tive; }
.leftGutter { width: 200px; float: left; text-align: center; position: relative;
}
.center3Column { width: 554px; float: left; margin-left: 10px; text-align: left;
position: relative; }
.left2Column { width: 764px; float: left; position: relative; }
.left2ColumnBlock { width: 664px; float: left; margin-right: 10px; position: rel
ative; }
.left4Column { width: 236px; float: left; margin-right: 10px; position: relative
; }
.left4ColumnWide { width: 236px; float: left; margin-right: 28px; position: rela
tive; }
.left552 { width: 552px; float: left; position: relative; }
.left564 { width: 564px; float: left; position: relative; }
.left624 { width: 624px; float: left; position: relative; }
.left665 { width: 665px; float: left; position: relative; }
.right405 { width: 405px; float: right; position: relative; }
.right420 { width: 420px; float: right; position: relative; }
.right200 { width: 200px; float: right; margin-left: 10px; text-align: center; p
osition: relative; }
.right330 { width: 330px; float: right; margin-left: 10px; position: relative; }
.right4Column { width: 236px; float: left; position: relative; }
.center4Column { width: 728px; float: right; position: relative; }
#tlAnchor { position: relative; height: 0px; overflow: visible; z-index: 100; }
#tlAnchor .abs { position: absolute; top: 0px; left: 0px; }
#loadLast { position: absolute; top: -9999999px; left: -9999999px; width: 974px;
}
/* End Layout Grids*/
/* Ads */
.ad728 { width: 728px; height: 90px; float: right; }
.ad728top { width: 728px; height: 90px; margin: 0 auto; text-align: center; }
.ad300 { width: 300px; height: 250px; }
.ad250 { background-color: #E6ECEC; padding: 4px 7px; }
.ad234 { width: 234px; height: 60px; padding: 15px 0px 15px 0px; float: left; ma
rgin-right: 10px; }
.adPartner { width: 234px; height: 90px; float: left; margin-right: 10px; }
.ad160 { width: 160px; height: 600px; margin: auto; }
.ad150 { width: 150px; height: 150px; margin: auto; }
.rightAd300 span { font-size: 10px; color: #808080; text-align: center; display:
block; margin-top: 2px; }
.adTopResults { height: 60px; position: relative; border-bottom: 1px dashed #C6C
6C6; border-top: 1px dashed #C6C6C6; padding: 20px 0px 12px 0px; margin-bottom:
10px; margin-top: 10px; background-color: #FFFFFF; }
.adInResults { height: 60px; position: relative; border-bottom: 1px dashed #C6C6
C6; padding: 20px 0px 12px 0px; background-color: #FFFFFF; }
.adTopResults span, .adInResults span { color: #2D2D2D; font-size: 8pt; position
: absolute; top: 0px; left: 1px; cursor: default; }
#googleAFS1 { width: 468px; height: 60px; position: absolute; top: 20px; left: 1
10px; }
#googleAFS2 { width: 160px; height: 600px; margin-top: 10px; }
#googleAFS3 { width: 468px; height: 60px; position: absolute; top: 20px; left: 1
10px; }
/* End Ads */
/* Widgets */
.widget300 { display: block; position: relative; width: 300px; height: 250px; ov
erflow: hidden; margin-bottom: 30px; }
.socialWidget { display: none; position: absolute; width: 55px; top: 0px; overfl
ow: hidden; }
.socialWidget a { display: block; width: 50px; margin: 0 auto; height: 50px; bac
kground-image: url(/images/share_icons_sprite.jpg); margin-bottom: 10px; }
.socialWidget a.facebook { background-position: 0px -52px; }
.socialWidget a.twitter { background-position: -51px -52px; }
.socialWidget a.digg { background-position: -102px -52px; }
.widgetLt { right: 974px; padding: 10px 40px 0 5px; }
.widgetRt { left: 974px; padding: 10px 5px 0px 40px; }
/* End Widgets */
/* Alert */
#whtAlert, #whtAlertContainer { position: fixed; top: 0px; left: 0px; width: 100
%; height: 100%; z-index: 2000; font-size: 20px; text-align: center; color: #FFF
FFF; cursor: default; }
#whtAlertContainer { z-index: 6; }
#whtAlertOuterBox { width: 800px; height: 200px; margin: 198px auto 0px auto; po
sition: relative; }
#whtAlertBox { width: 514px; height: 160px; padding: 20px; background-image: url
(/images/alert_bg.png); position: absolute; top: 0px; left: 0px; }
#whtAlertBox table tr td { overflow: hidden; border: 0px; position: relative; }
#whtAlertBox a { color: #1A9EBF; cursor: pointer; }
#whtAlertBox p { margin: 5px 0px 0px 0px; padding: 0px; }
#whtAlertBox .alertButtons { position: absolute; top: 150px; left: 20px; width:
504px; height: 25px; }
#whtAlertBox a.btn { display: block; float: right; margin-left: 15px; width: 95p
x; height: 25px; line-height: 23px; text-align: center; font-size: 13px; color:
#000000; background-image: url(/images/button_alertbox.gif); background-position
: 0px 0px; text-decoration: none; cursor: pointer; outline: none; }
#whtAlertBox a.btn:hover { background-position: 0px -27px; }
#whtAlertBox a.btn:active { background-position: 0px -54px; line-height: 25px; }
#whtAlertBox p, #whtAlertBox table { font-size: 14px; color: #ECECEC; }
/* End Alert */
/* Overlay */
#overlay, #shadeFrame, #shade, #hoverContent, #overlayLoading { position: fixed;
top: 0px; left: 0px; width: 100%; height: 100%; z-index: 1000; font-size: 10px;
color: #666666; }
#shadeFrame { z-index: 2; display: none; }
#shade { z-index: 3; background-color: #000000; opacity: 0.7; -moz-opacity: 0.7;
}
#overlayLoading { z-index: 5; color: #ffffff; font-size: 64px; font-weight: ligh
ter; padding-top: 200px; text-align: center; display: none; }
#hoverContent { z-index: 6; }
.virtualForm { width: 721px; background-color: #FFFFFF; border: 1px solid #80808
0; padding: 10px 0px 0px 0px; margin: 50px auto 0px auto; text-align: left; posi
tion: relative; }
.virtualForm a { color: #2ABBEF; }
.virtualForm a:hover { text-decoration: underline; }
.virtualForm .formProgress { position: absolute; top: 10px; right: 10px; width:
16px; height: 16px; background-image: url(/images/progress_star.gif); display: n
one; }
.virtualForm .formMessage { padding: 0px 0px 10px 10px; font-size: 13px; color:
#000000; border-bottom: 1px solid #B3B3B3; margin-bottom: 10px; }
.virtualForm .formMessage strong { color: #F61914; }
.virtualForm .formMessage ul { margin-top: 0px; margin-bottom: 0px; margin-left:
15px; color: #F61914; }
.virtualForm .innerForm { padding: 0px 10px 0px 10px; float: left; }
.virtualForm .title { font-size: 17px; font-weight: bold; color: #4D4D4D; }
.virtualForm .title span { font-weight: normal; font-size: 15px; }
.virtualForm span, .virtualForm label { font-size: 14px; }
.virtualForm span.small { font-size: 11px; margin-top: 5px; display: block;}
.virtualForm input, .virtualForm select, .virtualForm textarea { color: #4D4D4D;
}
.virtualForm div.smallRight { text-align: right; margin-bottom: 5px; }
.virtualForm .field { width: 220px; float: left; margin-top: 10px; }
.virtualForm .fieldSet { margin-left: 10px; }
.virtualForm .ddlInterval { margin-left: 5px; }
.virtualForm .wideField { width: 450px; float: left; margin-top: 10px; }
.virtualForm .field .fullWidth, .virtualForm .wideField .fullWidth { width: 100%
; }
.virtualForm .withMargin { margin-left: 10px; }
.virtualForm .right { text-align: right; }
.virtualForm span.notice { font-size: 10px; }
.rightForm { border: 0px; margin: 0px; padding: 0px; width: 300px; background-co
lor: #FFFFFF; color: #4D4D4D; }
.rightForm .field { width: 280px; }
.virtualForm.skinnyForm { width: 500px; }
.virtualForm.skinnyForm .innerForm { width: 478px; }
.virtualForm.skinnyForm .field { width: 474px; }
.virtualForm .loginForm { width: 225px; border-left: 1px solid #B3B3B3; }
.virtualForm .forgotPasswordForm { width: 225px; border-left: 1px solid #B3B3B3;
display: none; }
.virtualForm .signupForm { width: 455px; }
.virtualForm .signupForm2 { width: 455px; display: none; }
.virtualForm .signupForm2 .field { width: 250px; }
.virtualForm .signupForm2 .withMargin { width: 190px; }
.virtualForm .signupForm2Left { width: 225px; height: 100px; position: relative;
overflow: visible; display: none; }
.virtualForm .signupForm2Left .profileImagePreview { width: 117px; height: 152px
; overflow: hidden; background-color: #ffffff; border: 1px solid #B3B3B3; positi
on: relative; top: 0px; left: 55px; }
.virtualForm .signupForm2Left .profileImagePreview img { width: 105px; height: 1
40px; overflow: hidden; border: 1px solid #808080; position: absolute; top: 5px;
left: 5px; }
/*.virtualForm .suggestionForm { width: 700px; }
.virtualForm .suggestionForm .field { width: 696px; }*/
.virtualForm.standardWidth { width: 532px; border: 0px; margin: 0px; padding: 0p
x; }
.virtualForm.standardWidth .innerForm { padding: 0px; }
.virtualForm.centerColumnWidth { width: 492px; border: 0px; margin: 0px auto; pa
dding: 0px; background-color: transparent; }
.virtualForm.centerColumnWidth .innerForm { width: 492px; padding: 0px; }
.virtualForm.fullWidthForm { width: 974px; padding: 0px; border: 0px; margin: 0p
x; }
.virtualForm.wideForm { width: 904px; padding: 0px; border: 0px; margin: 0px; }
.virtualForm .commentForm { position: relative; width: 532px; }
.virtualForm .commentForm .field { width: 528px; }
.virtualForm .profileForm, .virtualForm .profileForm input, .virtualForm .profil
eForm label { font-size: 11px; color: #000000; background-color: #FFFFFF; }
.virtualForm .profileForm strong, .virtualForm .profileForm .field span { font-s
ize: 12px; }
.virtualForm .profileForm .field { width: 230px; margin-left: 10px; }
.virtualForm .profileForm .wideField { width: 482px; margin-left: 10px; }
.virtualForm .submitVideoForm .field { width: 508px; }
.virtualForm .submitVideoForm #initialScreengrab { float: right; }
.virtualForm .timeTextBox { width: 25px; }
.virtualForm .referralForm .field { margin-left: 20px; }
.virtualForm .referralForm .wide { width: 460px; }
.virtualForm .referralForm .field .left { float: left; width: 16px; text-align:
right; line-height: 20px; }
.virtualForm .referralForm .field .right { float: right; }
.virtualForm .referralForm .field .right input { width: 195px; }
.virtualForm .referralForm .text, #formSubmitted { margin-left: 20px; margin-top
: 10px; font-size: 16px; }
.virtualForm .skinForm { padding: 10px; }
.virtualForm .skinForm .field { width: 311px; }
.virtualForm .skinForm .field .fullWidth { width: 260px; font-size: 14px; font-f
amily: arial,sans-serif; }
.virtualForm .skinForm .wideField { width: 632px; }
.virtualForm .skinForm .wideField .fullWidth { width: 600px; font-size: 14px; fo
nt-family: arial,sans-serif; }
.virtualForm .skinForm .folderList { background-color: #000000; }
.virtualForm .skinForm .folderList .folder { display: block; padding: 4px 10px 2
px 2px; float: left; width: 132px; }
.virtualForm .skinForm .folderList .folder label { background: url(/images/skin_
folder.gif) no-repeat 2px 0px; padding-left: 26px; padding-top: 2px; color: #fff
fff; }
/* Image Import Area */
.virtualForm .importInput { width: 474px; height: 18px; padding-top: 2px; displa
y: block; color: #4D4D4D; border: 1px solid #BDBFC1; }
/* Flickr Import Area */
.virtualForm .flickrArea { display: none; }
.virtualForm .flickrArea .flickrTags { width: 252px; padding-top: 2px; height: 1
8px; font-size: 14px; color: #4D4D4D; border: 1px solid #BDBFC1; }
.virtualForm .flickrArea .flickrPaging { font-size: 8pt; width: 122px; height: 2
5px; float: right; padding-left: 5px; padding-top: 2px; text-align: center; }
.virtualForm .flickrArea .flickrPaging a { margin: 1px 0 0; }
.virtualForm .flickrArea .flickrPaging a.hide { visibility: hidden; }
.virtualForm .flickrArea .flickrPaging a,
.virtualForm .flickrArea .flickrPaging span.pgN { float: right; }
.virtualForm .flickrArea .flickrPaging span.pgN { line-height: 20px; padding: 0
5px; }
.virtualForm .flickrArea .flickrImageList { display: block; width: 474px; paddin
g-left: 5px; }
.virtualForm .flickrArea .flickrImageList .thumbnail { position: relative; displ
ay: block; width: 80px; height: 85px; padding: 0px 5px; float: left; }
.virtualForm .flickrArea .flickrImageList .thumbnail a { display: block; padding
-top: 18px; padding-bottom: 2px; outline: none; }
.virtualForm .flickrArea .flickrImageList .thumbnail a img { border: 2px solid T
ransparent; }
.virtualForm .flickrArea .flickrImageList .thumbnail a.selected img { border-col
or: #1EA5ED; }
.virtualForm .flickrArea .loading { padding: 5px 0px; height: 20px; background-i
mage: url(http://img.wonderhowto.com/images/progress_star.gif); background-posit
ion: center center; background-repeat: no-repeat; }
.virtualForm .imageFloatVals { display: none; padding-top: 10px; }
.virtualForm .imageFloatVals span { padding-right: 5px; }
.virtualForm .imageFloatVals label { padding: 0px 5px; }
#editFeedForm { display: none; }
.createNewPlaylistAdvancedShow { float: left; }
/* End Overlay */
/* Shadows */
.sh { padding-right: 5px; background-image: url(/images/shf5r.gif); background-p
osition: right top; background-repeat: repeat-y; position: relative; margin: 0px
-5px 5px 0px; }
.tm { margin-bottom: 1px; }
.lm { margin-bottom: 10px; }
.sh .box { width: auto; height: 100%; padding: 0px 0px 5px 0px; background-color
: #FFFFFF; background-image: url(/images/shf5b.gif); background-position: left b
ottom; background-repeat: repeat-x; position: relative; }
.ch .box { padding: 0px; }
.sh .pad { padding: 6px 6px 11px 6px; }
.sh .box .pad { padding: 6px; }
.sh .box .pad10 { padding: 10px; }
.sh i.tr, .sh i.br, .sh i.bl { background-image: url(/images/shf5c.gif); backgro
und-repeat: no-repeat; position: absolute; display: block; overflow: hidden; }
.sh i.tr { width: 5px; height: 10px; top: 0px; right: 0px; background-position:
-15px 0px; }
.sh i.br { width: 10px; height: 10px; bottom: 0px; right: 0px; background-positi
on: -10px -10px; }
.sh i.bl { width: 10px; height: 5px; bottom: 0px; left: 0px; background-position
: 0px -15px; }
.shc4 { background-image: url(/images/shc4r.gif); }
.shc4 .box { background-image: url(/images/shc4b.gif); }
.shc4 i.tr, .shc4 i.br, .shc4 i.bl { background-image: url(/images/shc4c.gif); }
.dsh { background-image: url(/images/dshecr.gif); }
.dsh .box { background-image: url(/images/dshecb.gif); }
.dsh i.tr, .dsh i.br, .dsh i.bl { background-image: url(/images/dshecc.gif); }
.rsh i.tr, .rsh i.br, .rsh i.bl { background-image: url(/images/shf5cr.gif); }
.sh .cornerImage { position: absolute; right: 5px; bottom: 5px; }
.bsh { background-image: none; margin-right: -11px; }
.stdRightPadding .bsh { margin-right: -21px; }
.bsh i.tr, .bsh i.br, .bsh i.bl, .bsh .cornerImage { display: none; }
.shaded .sh { background-image: url(/images/she6r.gif); }
.shaded .sh .box { background-image: url(/images/she6b.gif); }
.shaded .sh i.tr, .shaded .sh i.br, .shaded .sh i.bl { background-image: url(/im
ages/she6c.gif); }
.shaded .rsh i.tr, .shaded .rsh i.br, .shaded .rsh i.bl { background-image: url(
/images/she6cr.gif); }
/* End Shadows */
/* Round Shadows */
.shr { padding: 0 0 0 13px; margin: -2px -4px 8px -3px; background-color: #FFFFF
F; background-image: url(/images/shr_left.gif); background-repeat: repeat-y; pos
ition: relative; min-height: 0; zoom: 1; }
.shr .box { padding: 0px 14px 0px 0px; background-image: url(/images/shr_right.g
if); background-position: right top; background-repeat: repeat-y; min-height: 0;
}
.shr i.tp, .shr i.bm { display: block; width: auto; height: 13px; background-ima
ge: url(/images/shr_tb.gif); position: relative; }
.shr i.tp { background-position: 0 -13px; background-repeat: repeat-x; }
.shr i.bm { background-position: 0 0; background-repeat: repeat-x; }
.shr u.tl, .shr u.tr, .shr u.bl, .shr u.br { display: block; width: 13px; height
: 13px; position: absolute; top: 0px; background-image: url(/images/shr_corners.
gif); background-repeat: no-repeat; text-decoration: none; overflow: hidden; }
.shr u.tl { background-position: 0 0; left: -13px; } .shr u.tr { background-posi
tion: -13px 0; right: 0; }
.shr u.bl { background-position: 0 -13px; left: -13px; } .shr u.br { background-
position: -13px -13px; right: 0; }
.shr .noPad { margin: -10px -10px; position: relative; }
.shr .noSidePad { margin: 0 -10px; position: relative; }
.shr .bodySay { display: block; width: 12px; height: 23px; background-image: url
(/images/shr_say.gif); position: absolute; top: 18px; left: -9px; }
/* End Round Shadows */
/* Strokes */
.boxStroke { border: 1px solid #E6E3E3; padding: 5px; background-color: #FFFFFF;
margin-top: 3px; margin-bottom: 10px; }
/* End Strokes */
/* Header */
.headerBG { padding-top: 10px; background: #3C3C3C url(/images/wht_header_spotli
ght.jpg) no-repeat center bottom; }
.topAdBar { text-align: center; }
#header { position: static; padding-top: 35px; }
#logo { width: 420px; height: 60px; margin: 0 0 20px 105px; overflow: hidden; po
sition: relative; }
#logo img { width: 420px; height: 60px; display: block; margin: 0px; }
.searchBar { width: 340px; height: 50px; margin: 12px 104px 0 0; position: relat
ive; float: right; }
.searchBar .sbBG { position: absolute; width: 340px; height: 50px; left: 0px; to
p: 0px; background: url(/images/wht_search_bar.png); z-index: 2; }
.searchBar input { display: block; width: 275px; height: 34px; line-height: 34px
; font-size: 19px; margin: 0px; padding: 0; border: 1px solid #FFFFFF; backgroun
d-color: #FFFFFF; position: absolute; top: 6px; left: 16px; z-index: 3; }
.searchBar a { display: block; width: 30px; height: 30px; background-image: url(
/images/wht_search_bar_button.gif); background-repeat: no-repeat; background-pos
ition: 0px 0px; outline: none; cursor: pointer; position: absolute; top: 9px; ri
ght: 10px; z-index: 4; }
.searchBar a:hover { background-position: 0px -30px; }
#navMenus { }
.toolBar { position: relative; height: 28px; background-image: url(/images/wht_t
oolbar.png); }
.navBar em { display: none; }
.navBar a { float: left; display: block; height: 40px; line-height: 52px; width:
194px; margin: -12px 0 0 1px; text-align: center; color: #FFFFFF; font-weight:
bold; font-size: 17px; overflow: hidden; background-image: url(/images/wht_toolb
ar_hover.gif); background-position: 0 -40px; background-repeat: no-repeat; outli
ne: none; text-shadow: 0 1px 3px #000; }
.navBar a:hover, .navBar a.hovered { text-decoration: none; color: #FFFFFF; back
ground-position: 0 0; line-height: 48px; outline: none; }
.navBar strong { display: block; height: 40px; line-height: 48px; background-ima
ge: url(/images/wht_toolbar_active.png); font-weight: normal; font-size: 20px; c
olor: #000000; text-shadow: 0 1px 2px #B3B4B3; }
.navBar a.firstItem { margin-left: 0; }
#subMenu { position: relative; height: 10px; padding: 5px 0 20px; }
.ticker { float: right; width: auto; padding-right: 310px; text-align: right; ov
erflow: hidden; color: #C4C4C4; font-size: 9px; cursor: default; }
.ticker em { line-height: 13px; height: 10px; font-style: normal; }
.ticker em a { text-decoration: none; color: #C4C4C4; cursor: default; }
.loginState { display: block; position: absolute; width: 300px; top: 5px; right:
0px; z-index: 2; font-size: 11px; }
.loginStatus { position: relative; float: right; color: #C4C4C4; }
.loginStatus a { color: #696969; position: relative;}
.loginStatus a.signupLink, .loginStatus a.profileLink, .loginStatus a:hover { co
lor: #2ABBEF; }
.loginStatus .notificationSpace { padding-right: 18px; }
.loginStatus .newBubble { top: -11px; right: 0; }
.FBConnect { display: block; position: relative; float: right; padding-left: 5px
; margin-top: -2px; overflow: hidden; }
/* End Header */
/* Tabs */
.tabs { height: 24px; position: relative; margin-bottom: 20px; }
.tabs i, .tabs em { display: none; }
.tabs a { display: block; position: relative; float: left; margin: 0 4px 0 0; wi
dth: auto; height: 24px; line-height: 24px; font-size: 11px; font-family: "arial
narrow",arial,sans-serif; text-transform: uppercase; color: #A9A9A9; outline: n
one; cursor: pointer; }
.tabs a span { display: block; height: 100%; padding: 0 3px; position: relative;
z-index: 2; }
.tabs a strong { display: block; width: auto; height: 100%; font-weight: normal;
}
.tabs a:hover, .tabs a strong, .tabs a.hovered { background-color: #2ABBEF; text
-decoration: none; color: #FFFFFF; }
/*.tabs a.firstItem { width: 322px; }*/
/* End Tabs */
/* BreadCrumb */
.breadCrumbs { font-size: 11px; color: #B4B4B4; float: left; cursor: default; }
.breadCrumbs a { cursor: pointer; }
.breadCrumbs a:hover { color: #2ABBEF; }
.breadCrumbs span { color: #000000; }
.content644 .breadCrumbs { display: none; } /* Note: remove this after checkin *
/
/* End BreadCrumb */
/* Twitter Ticker */
.twitterTicker .twitterFollow { position: absolute; top: 0px; left: 0px; display
: block; background: url(/images/twitter_little_logo.gif) no-repeat 3px 15px; pa
dding-bottom: 20px; padding-left: 5px; padding-top: 1px; line-height: 14px; widt
h: 71px; height: 15px; color: #4D4D4D; font-size: 10px; text-decoration: none; }
.twitterTicker .twitterFollow:hover { color: #31CCFF; }
.twitterTicker .twitterFollow span { display: none; }
.twitterTicker ul { display: block; color: #4D4D4D; overflow:hidden; height: 24p
x; padding: 0px 0px 0px 76px; margin: 0px; }
.twitterTicker li { list-style: none; display: block; margin: 0px; padding: 0px;
line-height: 12px; font-size: 11px; height: 24px; overflow: hidden; }
.twitterTicker li a.tweeter { color: #4D6D8D; }
.right300 .twitterTicker { width: 290px; }
.right300 .twitterTicker ul { width: 182px; }
/* End Twitter Ticker */
/* Notification Area */
.userNotification { position: relative; top: 0px; height: 22px; line-height: 22p
x; padding: 5px 10px; margin-bottom: 10px; background-color: #FFF6CF; border: 1p
x solid #FF9900; font-size: 10pt; color: #000000; }
/* End Notification Area */
/* Categories Drop Down */
.ddMenu { position: absolute; top: 35px; width: 140px; background-color: #FFFFFF
; z-index: 500; border: 1px solid #CACACA; display: none; opacity: 0.95; -moz-op
acity: 0.95; }
.ddMenu .upArrow { background-image: url(/images/wht_nav_bar_triangle.gif); back
ground-repeat: no-repeat; height: 12px; position: absolute; top: -12px; left: 0p
x; background-position: 58px 0px; width: 100px; }
.ddMenu ul { position: relative; float: left; display: block; margin: 0px; paddi
ng: 6px; width: 128px; }
.ddMenu li { list-style: none; display: block; margin: 0px; padding: 0px; line-h
eight: 15px; height: 15px; font-size: 11px; overflow: hidden; word-wrap: break-w
ord; }
.ddMenu a { display: block; width: 120px; line-height: 15px; height: 15px; font-
size: 11px; padding: 0px 4px; margin: 0px; }
.ddMenu a:hover { text-decoration: none; color: #FFFFFF; background-color: #1EA5
ED; }
.ddMenu li.es { border-bottom: 1px solid #E7ECEC; margin-bottom: 4px; padding-bo
ttom: 4px; }
.ddMenu li.adminTool { display: none; }
.ddMenu span { cursor: default; }
.ddMenu strong, .ddMenu em { color: #696969; cursor: default; font-weight: bold;
font-style: normal; }
.ddMenu a strong { color: #EF241F; }
.ddHome { left: 26px; }
.ddProfile { left: 84px; }
.ddCats { left: 5px; width: 648px; }
.ddCats .upArrow { background-position: 272px 0px; width: 300px; }
.ddCats ul { width: 150px; }
.ddCats a { width: 142px; }
.ddCommunity { left: 417px; }
.ddSubmit { left: 338px; width: 164px; }
.ddSubmit ul { width: 152px; }
.ddSubmit a { width: 144px; }
.ddSubmitLoggedIn { left: 425px; }
.ddMenu a.profileLink, .ddMenu a.profileLink:hover { color: #000000; background-
color: #FFFFFF; }
/* End Categories Drop Down */
/* Search Menu */
.searchMenus { position: relative; overflow: hidden; height: 0; z-index: 9999999
; zoom: 1; }
.searchMenu { position: absolute; top: 28px; left: 108px; width: 758px; z-index:
9999999; font-size: 12px; zoom: 1; }
.searchMenu a { color: #2ABBEF; } .searchMenu .smClose:hover, .searchMenu a:hove
r { text-decoration: underline; }
.searchMenu ul, .searchMenu li { margin: 0; padding: 0; list-style: none; color:
#969696; font-size: 11px; }
.searchMenu .smClose { color: #FFFFFF; cursor: pointer; }
.smControlBar { position: absolute; top: -28px; height: 28px; line-height: 28px;
width: 758px; }
.smControlBar .searchMenuOptions { float: right; }
.smControlBar .searchMenuOptions select { width: 312px; height: 20px; margin: 4p
x 10px; font-size: 13px; line-height: 20px; }
.smLists .rightLeft, .smLists .leftLeft, .smLists .right { width: 232px; float:
right; }
.smLists .right { margin: 30px 0; padding-bottom: 10px; }
.smLists .left { width: 493px; float: left; margin: 30px 0; padding: 0 10px 10px
0; border-right: 1px solid #E6E3E3; }
.smLists .leftLeft { float: left; }
.smLists h6 { font-size: 15px; font-weight: normal; margin: 0; padding: 0 0 10px
0; color: #696969; }
/* End Search Menu */
/* End Header */
/* Footer */
#footer { font-size: 12px; color: #CACACA; background: #3C3C3C; padding-bottom:
10px; border-top: 2px solid #1A1A1A; overflow: hidden; position: relative; zoom:
1; }
#footer .fullWidth { text-align: center; }
#footer a { text-decoration: none; display: block; padding: 0px; color: #969696;
}
#footer a:hover { text-decoration: underline; }
#footer div { margin-top: 10px; }
/* Footer Categories List */
#footer .footerCategoriesList div { text-align: left; width: 243px; margin: auto
; }
#footer .footerLeftCol, #footer .footerRightCol { float: left; position: relativ
e; width: 236px; }
#footer .footerLeftCol { margin-right: 10px; }
#footer .footerRightCol { margin: 0; }
#footer ul { margin-left: 6px; }
#footer ul, #footer ul li { list-style: none; }
#footer .sectionTitle { color: #CACACA; font-weight: bold; text-transform: upper
case; font-size: 14px; padding-bottom: 2px; }
#footer .footerCategoriesList a { display: inline; }
#footer .footerCategoriesList div.topVideoLists { width: 974px; padding-top: 10p
x; margin-bottom: 10px; }
#footer .footerCategoriesList div.topVideoLists span { margin-left: 6px; font-si
ze: 11pt; cursor: default; }
#footer .footerCategoriesList div.topVideoLists ul { margin-top: 5px; margin-rig
ht: 0px; }
#footer .footerCategoriesList div.topVideoList { font-size: 11px; width: 324px;
float: left; }
/* End Footer Categories List */
/* End Footer */
/* Icons */
.iconWonderList span { background-image: url(/images/iconWonderList.gif); }
.iconFresh span { background-image: url(/images/iconFresh.gif); }
.iconGem span { background-image: url(/images/iconGems.gif); }
.iconHot span { background-image: url(/images/iconHot.gif); }
.iconStar span { background-image: url(/images/iconStar.gif); }
.iconPlaylist span { background-image: url(/images/iconPlaylist.gif); }
.iconRecommend span { background-image: url(/images/iconRecommend.gif); }
.iconHOC span { background-image: url(/images/iconClass.gif); }
/* End Icons */
/* Skins */
.skinThumb { position: relative; width: 180px; text-align: center; margin: 0px 7
px 10px 0px; padding-left: 7px; float: left; }
.skinThumb a { display: block; padding-top: 127px; text-decoration: none; border
: 1px solid #ffffff; }
.skinThumb .thumb, .skinThumb .tinyPage { background-repeat: no-repeat; backgrou
nd-position: center top; position: absolute; top: 1px; left: 8px; width: 178px;
height: 127px; }
.skinThumb .thumb { }
.skinThumb .tinyPage { background-image: url(/images/tiny_page.gif); }
.skinThumb .label { font-size: 13px; padding-bottom: 5px; padding-top: 5px; disp
lay: block; background-color: #222222; background-image: url(/images/bg_stripes_
top_dark.gif); color: #cccccc; white-space: nowrap; overflow: hidden; }
.skinThumb a:hover { border: 1px solid red; }
.skinThumb a:hover .label { text-decoration: underline; color: #ffffff; }
.skinThumb .privateLock { width: 26px; height: 32px; position: absolute; z-index
: 2; top: 125px; left: 2px; background-image: url(/images/private_lock.png); }
/* End Skins */
/* Category List */
/* Category List */
.categoriesLarge { position: relative; zoom: 1; }
.categoriesLarge .cat { position: relative; float: left; margin: 0px 5px 1px 0px
; }
.categoriesLarge .cat h2, .categoriesLarge .cat h3 { display: block; margin: 0px
; padding: 0px; font-size: 12px; line-height: 1.2em; }
.categoriesLarge .cat h3 { font-size: 11px; font-weight: normal; display: inline
; }
.categoriesLarge .cat h2 a { position: relative; display: block; width: 127px; h
eight: 35px; padding: 7px 10px 0px 72px; text-decoration: none; }
.categoriesLarge .cat img { position: absolute; top: 1px; left: 1px; width: 62px
; height: 42px; }
.categoriesLarge .cat span.count { display: none; position: absolute; right: 9px
; bottom: 6px; font-size: 9px; line-height: 1.5em; color: #FFFFFF; }
.categoriesLarge .cat:hover .box { background-color: #1EA5ED; }
.categoriesLarge .cat:hover span.count { display: block; }
.catFull .cat { float: none; margin-bottom: 7px; }
.catFull .cat .boxStroke { padding: 0; }
.catFull .cat span.count { display: block; bottom: auto; top: 0px; height: 42px;
line-height: 42px; color: #969696; font-size: 13px; }
.catFull .cat h2 { font-size: 16px; line-height: 42px; border-bottom: 2px solid
#CACACA; background-color: #F3F3F3; }
.catFull .cat h2 a { width: auto; display: inline; line-height: 42px; padding-ri
ght: 0px; color: #000000; }
.catFull .cat h2 a:hover { text-decoration: underline; }
.catFull .cat .subcats { position: relative; z-index: 3; padding: 5px 0px; color
: #969696; font-size: 10px; }
.catFull .cat .subcats ul { font-size: 10px; padding: 0px; margin: 0px; list-sty
le-type: none; overflow: hidden; }
.catFull .cat .subcats ul li { display: block; float: left; width: 210px; }
.catFull .cat .subcats ul a { display: inline; padding: 1px 1px 1px 12px; }
.catFull .cat:hover .box { background-color: #FFFFFF; }
.featuredCategories { height: 200px; width: 100%; margin-top: 10px; margin-botto
m: 10px; overflow: hidden; position: relative; }
.featuredCategory { width: 218px; margin-right: 5px; height: 200px; float: left;
position: relative; overflow: hidden; }
.featuredCategory a { text-decoration: none; display: block; padding-left: 5px;
height: 100%; position: relative; overflow: hidden; }
.featuredCategory a.smallImage { background-color: #ffffff; height: 160px; outli
ne: none; }
.featuredCategory a.smallImage img { position: absolute; top: 0px; left: -18px;
}
.featuredCategoriesWideMode .featuredCategory { width: 236px; margin-right: 10px
; }
.featuredCategoriesWideMode .featuredCategory a.smallImage img { left: 0px; }
.featuredCategory h3 { margin: 0px; padding: 0px; display: block; font-size: 14p
x; height: 20px; overflow: hidden; line-height: 24px; }
.featuredCategory h4 { margin: 0px; padding: 0px; display: block; font-size: 11p
x; height: 20px; overflow: hidden; font-weight: normal; }
.featuredCategories .featuredCategory:hover h3 a, .featuredCategories .featuredC
ategory.hover h3 a, .featuredCategory h4 a:hover { text-decoration: underline; }
.featuredCategory .subCategories { height: 20px; overflow: hidden; display: bloc
k; position: relative; }
.relevantCategories, refinePathCategories { overflow: hidden; }
.relevantCategories .categoryList { position: relative; }
.gradientHeadbar { background-image: url(/images/header_bar_bg.gif); background-
repeat: repeat-x; background-position: left top; }
.relevantCategories .categoryList, .refinePathCategories { padding-top: 5px; }
.textRefinedPath { position: relative; padding-bottom: 10px; zoom: 1; }
.textRefinedPath .pathList { float: left; position: relative; padding-right: 25p
x; font-size: 12px; color: #808080; }
.textRefinedPath .pathList div { white-space: nowrap; }
.textRefinedPath .pathList .headerLink { text-decoration: underline; color: #398
FC0; }
.textRefinedPath .pathList .refinedPathMain { overflow: hidden; }
.textRefinedPath .pathList .moreSearchCategories { display: block; padding-left:
25px; text-align: left; }
.textRefinedPath .pathList .categorySelection, .textRefinedPath .pathList span {
padding-left: 25px; }
.textRefinedPath div a { text-decoration: none; }
.textRefinedPath div a:hover { text-decoration: underline; }
.textRefinedPath .pointer { position: absolute; top: 0px; left: 0px; float: righ
t; }
.relevantCategories .minimized { height: 108px; overflow: hidden; }
.relevantCategories .headerBar { height: 25px; }
.relevantCategories .headerBar span { line-height: 25px; font-size: 15px; paddin
g-left: 10px; color: #4D4D4D; }
.searchCategory { position: relative; display: block; width: 221px; height: 44px
; float: left; }
.searchCategory:hover, .searchCategorySelected { background-image: url(/images/s
earch_category_selected.png); background-repeat: no-repeat; }
.searchCategory:hover span .resultCategoryName, .searchCategorySelected span .re
sultCategoryName { color: #FFFFFF; }
.searchCategory:hover span .resultVideoCount, .searchCategorySelected span .resu
ltVideoCount { color: #6B99C8; }
.searchCategory a { position: relative; display: block; left: 0px; top: 0px; hei
ght: 40px; padding-top: 4px; }
.searchCategory a span { cursor: pointer; }
.searchCategory a .pathArrow { position: absolute; display: block; width: 8px; h
eight: 14px; left: 212px; top: 15px; background-image: url(/images/arrow_head_ri
ght.gif); }
.searchCategory a:hover .pathArrow { display: none; }
.resultCategory { position: relative; outline: none; text-decoration: none; }
.resultCategory .searchCategoryInfo { padding-left: 57px; }
.resultCategory img { display: block; width: 42px; height: 32px; overflow: hidde
n; float: left; margin-right: 5px; border: 1px solid #DFDFDF; }
.resultCategory img.searchCategoryImage { position: absolute; left: 0px; top: 0p
x; overflow: hidden; margin: 5px 0px 0px 5px; }
.resultCategory span { display: block; font-size: 12px; line-height: 16px; white
-space: nowrap; overflow: hidden; }
.resultCategory .resultCategoryName { color: #000000; }
.resultCategory .resultVideoCount { color: #888888; }
.moreSearchCategories { position:relative; height: 13px; line-height: 12px; font
-size:12px; text-align:right; }
.moreSearchCategories a { position: relative; outline: none; }
/* End Category list */
/* Featured Videos List */
.featuredVideos { }
.featuredVideos .categoryRow { border-bottom: 1px solid #B3B3B3; height: 88px; o
verflow: hidden; }
.featuredVideos .categoryRow .featuredVideo { width: 205px; height: 88px; displa
y: block; float: left; }
.featuredVideos .categoryRow a { display: block; height: 78px; text-decoration:
none; font-size: 11px; padding: 10px 2px 0px 108px; position: relative; overflow
: hidden; }
.featuredVideos .categoryRow a.sc { color: #398FC0; }
.featuredVideos .categoryRow a span.playHover { position: absolute; top: 10px; l
eft: 10px; display: block; width: 88px; height: 68px; background-image: url(/ima
ges/thumb_play_button.png); background-position: 0px 0px; background-repeat: no-
repeat; z-index: 2; cursor: pointer; }
.featuredVideos .categoryRow a:hover span.playHover { background-position: -90px
0px; }
.featuredVideos .videoThumbnail { position: absolute; top: 0px; left: 0px; paddi
ng: 3px; background-color: #ffffff; border: 1px solid #B3B3B3; overflow: hidden;
}
.featuredVideos .videoThumbnail img { border: 1px solid #B3B3B3; width: 88px; he
ight: 68px; }
.featuredVideos span.vidIcon { display: none; width: 22px; height: 22px; positi
on: absolute; left:78px; top:59px; z-index: 3; background-image:url(/images/vide
o_state_corner_icons.png); background-repeat: no-repeat; cursor: pointer; }
.featuredVideos span.vidLeftIcon { display: none; width: 30px; height: 17px; pos
ition: absolute; left: 6px; top: 65px; z-index: 3; background-image: url(/images
/18plus.png); background-repeat: no-repeat; cursor: pointer; }
.featuredVideos span.fresh { display: block; background-position: 0px -73px; }
.featuredVideos span.hoc { display: block; background-position: 0px -48px; }
.featuredVideos span.gem { display: block; background-position: 0px -24px; }
.featuredVideos span.recommend { display: block; background-position: 0px -123px
; }
.featuredVideos span.hot { display: block; background-position: 0px -147px; }
.featuredVideos span.rerun { display: block; background-position: 0px 0px; }
.featuredVideos span.fav { display: block; background-position: 0px -98px; }
.featuredVideos span.over18 { display: block; }
/* End Featured Videos List */
/* Content List */
.ciBox { border-bottom: 1px solid #E6E3E3; margin-bottom: 10px; position: relati
ve; }
.ciBox h3, .ciBox h1 { font-size: 15px; font-weight: normal; margin: 0; padding:
0 10px 2px 0; text-shadow: 0 1px 1px #C3C4C3; }
.worldList .ciBox h3, .worldList .ciBox h1,
.wondermentContent .ciBox h3, .wondermentContent .ciBox h1 { font-size: 20px; }
.wondermentContentCompact .ciBox h3, .wondermentContentCompact .ciBox h1 { font-
size: 14px; }
.ciBox h3, .ciBox h1 { font-size: 15px; }
.ciBox h1 { font-size: 30px; letter-spacing: -0.01em; }
.worldList .ciBox h3 em, .worldList .ciBox h1 em { font-size: 11px; line-height:
15px; padding-bottom: 5px; color: #969696; display: block; }
.ciBox .ciThumb { float: left; margin: 0 10px -16px 0; width: auto; }
.ciNoThumb .ciThumb { position: absolute; bottom: 16px; }
.ciNoThumb .ciThumb em { padding: 0 4px; }
.ciNoThumb p { padding-bottom: 3px; }
.ciBox img { display: block; margin: 0; }
.ciBox .cType { background-color: #E6E3E3; color: #696969; padding: 0 0 0 4px; l
ine-height: 16px; height: 16px; font-size: 10px; }
.ciBox p { margin-bottom: 0px; line-height: 15px; }
.ciBox .moreLink { line-height: 24px; }
.ciFoot { font-size: 11px; color: #969696; cursor: default; height: 16px; overfl
ow: hidden; line-height: 13px; }
.ciFoot .cType { width: 84px; }
.ciFoot .over18 { color: #BB2220; }
.ciFoot .gradeStat { position: relative; right: auto; bottom: auto; float: right
; }
.ciBox .stat { font-style: italic; float: right; text-align: right; margin: 0 3p
x 0 0; }
.ciBox .label { color: #B4B4B4; }
.ciBox .dvd { color: #E6E3E3; }
.ciBox .stats { display: none; }
.ciBox .stat .moreLink { line-height: 16px; }
.ciBox .author { padding-left: 93px; float: left; font-style: italic; }
.wondermentContentCompact .ciBox .moreLink { line-height: 20px; }
.ciBox:hover .stats { display: block; }
.ciBox:hover .cType { background-color: #2ABBEF; color: #FFFFFF; }
em.cType span.rt { display: none; float: right; padding-right: 5px; }
.ciBox:hover .cType span.rt { display: block; }
/* End Content List */
/* Member Content */
.memberContent h3 { line-height: 16px; padding-bottom: 3px; padding-left: 61px;
font-weight: bold; }
.memberContent .blstats { float: left; font-size: 11px; }
.memberContent .stats { display: block; font-size: 11px; }
.memberContent .stat { display: block; float: left; width: 200px; text-align: le
ft; padding-bottom: 5px; line-height: 11px; }
.memberContent .ciBox a.icon { float: left; margin-right: 10px; }
.memberContent .stat .label { display: block; font-size: 10px; line-height: 10px
; }
.memberContent .ciFoot { height: 5px; overflow: hidden; }
/* End Member Content */
/* Playlist Content */
.playlistContent { }
.playlistContent .playlistThumbnail { margin: 0; background: #696969 url(/images
/progress_star_dark.gif) no-repeat center center; }
.playlistContent h3, .playlistContent h1 { padding-bottom: 0; margin-bottom: 0;
}
.playlistContent p { padding-top: 8px; }
.playlistContentLiveEdit p { margin-left: 220px; }
.playlistContent .creatorName { font-size: 11px; }
.playlistContent .playlistPrivateLink, .playlistContent .playlistDeleteLink { di
splay: inline; font-size: 11px; }
.playlistContent .playlistSubscriptionLink { margin-bottom: 5px; }
.playlistContent .ciBox .ciThumb { margin-bottom: 0px; }
/* End Playlist Content */
/* Shadowed Content */
.shContent { position: relative; font-size: 10px; color: #696969; }
.shContent h1, .shContent h2, .shContent h3, .shContent h4 { font-size: 15px; fo
nt-weight: normal; margin: 0px 0px 4px; }
.shContent h1.hlB { font-size: 20px; }
.shContent .headbar h2 { margin: 0px 0px 5px; }
.shContent p { font-size: 11px; line-height: 1.25em; margin-bottom: 0px; cursor:
default; color: #000000; }
.shContent img { display: block; overflow: hidden; }
.shContent .llstats, .shContent .lrstats { visibility: hidden; position: absolut
e; left: 6px; bottom: 4px; cursor: default; }
.shContent .lrstats { left: auto; right: 6px; }
.shContent .lrstats a, .shContent .llstats a { cursor: pointer; }
.shContent .label { color: #B4B4B4; }
.shContent .underThumb { position: absolute; left: 0px; bottom: 0px; z-index: 2;
height: 16px; line-height: 16px; padding: 0px 4px; background-color: #202020; c
olor: #F5F5F5; font-size: 10px; font-weight: bold; cursor: default; }
.shContent .underThumb .r { float: right; display: none; }
.shContent .underThumb .grade { float: left; }
.shContent .showB { border-top-style: solid; border-top-width: 4px; }
.shContent:hover .llstats, .shContent:hover .lrstats { visibility: visible; }
.shContent:hover .underThumb { background-color: #1EA5ED; }
.shContent:hover .underThumb .r { display: inline; }
/* End Shadowed Content */
/* Type Icons */
.typeIcon { display: block; position: absolute; right: 0px; top: -16px; width: 1
6px; height: 16px; background-image: url(/images/wht_type_icons2v3.gif); backgro
und-repeat: no-repeat; overflow: hidden; }
.iconVid { background-position: 0px 0px; }
.iconArt { background-position: 0px -16px; }
.iconWOD { background-position: 0px -32px; }
.iconWld { background-position: 0px -48px; }
.iconPic { background-position: 0px -64px; }
.iconLnk { background-position: 0px -80px; }
.iconBlg { background-position: 0px -96px; }
.iconMem { background-position: 0px -112px; }
.iconNone { display: none; }
.flagged { display: block; position: absolute; left: 3px; border: 1px solid #C4C
4C4; top: -15px; width: auto; height: 10px; line-height: 10px; padding: 0px 2px;
background-color: #BB2220; color: #FFFFFF; font-size: 8px; text-align: center;
font-weight: normal; }
.shContent .typeIconUT, .typeIconUT { padding-right: 22px; background: #202020 u
rl(/images/wht_type_iconv3.gif) no-repeat right 16px; }
.shContent .iconVidUT, .iconVidUT { background-position: right 0px; }
.shContent .iconArtUT, .iconArtUT { background-position: right -16px; }
.shContent .iconWODUT, .iconWODUT { background-position: right -32px; }
.shContent .iconWldUT, .iconWldUT { background-position: right -48px; }
.shContent .iconPicUT, .iconPicUT { background-position: right -64px; }
.shContent .iconLnkUT, .iconLnkUT { background-position: right -80px; }
.shContent .iconBlgUT, .iconBlgUT { background-position: right -96px; }
.typeIconUTS { display: block; position: absolute; width: 86px; padding-left: 2p
x; height: 14px; background: #202020 url(/images/wht_type_icons7v3.gif) no-repea
t right 16px; color: #FFFFFF; font-size: 9px; line-height: 14px; text-align: lef
t; opacity: 0.55; -moz-opacity: 0.55; }
a:hover .typeIconUTS, span.slnk:hover .typeIconUTS { background-color: #1EA5ED;
opacity: 1; -moz-opacity: 1; }
.iconVidUTS { background-position: right -1px; }
.iconArtUTS { background-position: right -17px; }
.iconWODUTS { background-position: right -33px; }
.iconPicUTS { background-position: right -65px; }
.iconLnkUTS { background-position: right -81px; }
.iconBlgUTS { background-position: right -97px; }
.drshH .iconVidUTS { background-position: right -3px; }
.drshH .iconArtUTS { background-position: right -19px; }
.drshH .iconWODUTS { background-position: right -35px; }
.drshH .iconPicUTS { background-position: right -67px; }
.drshH .iconLnkUTS { background-position: right -83px; }
.drshH .iconBlgUTS { background-position: right -99px; }
/* End Type Icons */
/* Article Score */
a.voteLink,
a.voteLink:hover { outline: none; text-decoration: none; cursor: pointer; }
.previewScore { display: block; position: relative; width: 67px; height: 55px; f
loat: right; margin: 0 0 0 10px; z-index: 2; }
.adminScore .previewScore { margin-top: 10px; }
.previewScore .score { display: block; width: 67px; height: 44px; margin: 1px 0p
x; font-size: 18px; font-weight: bold; background-image: url(/images/vote_score_
box.gif); color: #FFFFFF; font-size: 18px; line-height: 25px; text-align: center
; padding-top: 4px; }
.previewScore .score span { display: block; font-size: 10px; height: auto; line-
height: normal; width: 100%; }
span.showAll { float: right; }
span.showAll a { font-size: 11px; padding-right: 3px; }
.sh a.approveArticle { display: none; position: absolute; width: 50px; height: 5
0px; right: 0; top: 0; background-image: url(/images/approve_icon.png); outline:
none; }
.sh:hover a.approveArticle { display: block; }
.approved { opacity: 0.5; }
.approved a.approveArticle { display: block; cursor: default; }
/* End Article Score */
/* Article Feedback */
.articleFeedback { padding: 10px; margin-top: 5px; border: 1px solid #C9C9C9; ba
ckground-color: #F9F9F9; font-family: verdana,arial,sans-serif; }
.articleFeedback h3 { margin: 0 0 5px 0; }
.articleFeedback ul.feedback { padding: 0; margin: 0 25px; font-size: 10pt; }
.articleFeedback ul.feedback li { margin-bottom: 5px; }
/* End Article Feedback */
/* Spotlight Rotator */
.spotlightRotator { position: relative; overflow: hidden; height: 150px; margin-
bottom: 30px; border: 1px solid #E6E3E3; }
.spotlightContent { float: left; position: relative; width: 632px; padding-right
: 10px; height: 150px; overflow: hidden; }
.spotlightContent img { float: left; width: 300px; height: 150px; display: block
; margin: 0; background: #696969 url(/images/progress_star_dark.gif) no-repeat c
enter center; }
.spotlightContent .pad { padding: 10px 0 0 10px; margin-left: 300px; }
.spotlightContent p { margin: 0; }
a.spotlightMore { display: block; position: absolute; bottom: -20px; right: 0px;
}
/* End Spotlight Rotator */
/* WW Rotator */
.wwScrl, .fwScrl { width: 300px; }
.wwRotator { position: relative; overflow: hidden; height: auto; }
.wwContent { position: relative; width: 300px; float: left; }
.wwContent a { text-decoration: none; }
.wwContent a span { display: block; position: relative; font-size: 20px; max-hei
ght: 44px; line-height: 22px; padding: 5px 0 0; margin-bottom: 5px; width: 300px
; overflow: hidden; }
.wwContent a:hover span { text-decoration: none; }
.wwContent img { width: 300px; height: 140px; position: relative; left: 0px; top
: 0px; background: #696969 url(/images/progress_star_dark.gif) no-repeat center
center; color: #000000; }
.wwContent p { display: block; position: relative; line-height: 14px; overflow:
hidden; margin: 0; color: #818181; max-height: 60px; }
.rightWidget .wwScrl, .rightWidget .fwScrl { width: 289px; }
.rightWidget .wwRotator { }
.rightWidget .wwContent { width: 289px; }
.rightWidget .wwContent a span { width: 289px; }
.rightWidget .wwContent img { width: 289px; height: 134px; }
.rightWidget .wwContent p { }
.adVidRight .headbar { margin-top: 20px; }
.adVidRight .wwRotator, .adVidRight .wwContent { width: 264px; height: 296px; }
.adVidRight .wwContent a span { width: 252px; top: 123px; }
.adVidRight .wwContent img { width: 264px; height: 123px; }
.adVidRight .wwContent p { top: 173px; font-size: 12px; line-height: 1.5em; marg
in: 12px 6px 6px; }
.adVidRight .em .paging { left: 173px; top: 0px; }
/* End WW Rotator */
/* Standard Content */
.contentList { }

.postNoImage .pad,
.articleNoImage .pad10 { margin-left: 0px; }
.postNoImage .stdContent .llstats { left: 10px }
.postNoImage h3 { font-size: 18px; }
/* End Standard Content */

/* Worlds */
.worldContent p { font-size: 14px; }
/* End Worlds */
/* Feed Content */
.feedContent { height: 86px; }
.feedContent .pad { margin-left: 95px; }
.feedContent .img { width: 90px; height: 70px; position: absolute; left: 0px; to
p: 0px; overflow: hidden; background: #696969 url(/images/progress_star_dark.gif
) no-repeat center center; }
.feedContent img { width: 202px; height: 152px; position: absolute; left: 0px; t
op: 0px; }
.feedContent .underThumb { width: 82px; }
.feedContent .llstats { visibility: visible; left: 102px; }
/* End Feed Content */
/* Top Article Content */
.topArticles { margin-bottom: 30px; }
.topTopArticles { margin-bottom: 5px; padding: 0 0 10px; border-bottom: 1px soli
d #E6E3E3; }
.topArticle { float: left; margin-left: 11px; width: 186px; height: 123px; posit
ion: relative; z-index: 3; }
.topTopArticles .topArticle { padding-left: 21px; margin-left: 21px; border-left
: 1px solid #E6E3E3; background-color: #FFFFFF; }
.topArticles .isFirst { margin-left: 0; border-left: 0; padding-left: 0; margin-
right: -1px; }
.topArticle img { width: 186px; height: 87px; background: #696969 url(/images/pr
ogress_star_dark.gif) no-repeat center center; }
.topArticle span a { display: block; padding: 0px 6px; font-family: arial,sans-s
erif; height: 36px; overflow: hidden; font-size: 12px; line-height: 17px; }
.topArticle:hover span a, .topArticle span a:hover { display: block; background-
color: #2ABBEF; color: #FFFFFF; text-decoration: none; }
.topArticlesPage .taBG { width: 644px; }
.topArticlesPage .topArticle { margin-left: 45px }
.topArticlesPage .isFirst { margin-left: 10px; }
/* End Top Article Content */

/* Message Content */
.msgContent {}
.convContent .ciBox .ciThumb { margin-bottom: -16px; }
.msgContent .ciBox .ciThumb { margin-bottom: 0px; }
.msgUnread h3 { font-weight: bold; }
.messageStatus { float: right; margin-left: 10px; width: 13px; height: 11px; bac
kground-image: url(/images/icon_message_status.gif); background-repeat: no-repea
t; }
.messageDeleted { background-position: 0px -32px; }
.messageNew { background-position: 0px -47px; }
.messageRead { background-position: 0px -17px; }
.messageIsRead { background-position: 0px -17px; }
.messageUnread { background-position: 0px -2px; }
.right .actionDeleteConversation { background-image: url(/images/icon_message_st
atus.gif); background-repeat: no-repeat; background-position: right -31px; paddi
ng-right: 15px; }
.right .actionDeleteConversation:hover { background-position: right -61px; }
.msgContent .messageReplyForm { display: none; font-weight: normal; padding-bott
om: 10px; padding-top: 10px; }
.msgContent .messageReplyForm textarea { width: 100%; height: 80px; }
.msgContent .messageReplyForm input { float: right; margin: 10px 0px 0px 10px; }
.showReplyForm .msgContent .messageReplyForm { display: block; }
/* End Message Content */
/* Video Card */
.videoCard { }
.videoCard .pad { border-bottom: 1px solid #E6E3E3; border-left: 1px solid #E6E3
E3; border-right: 1px solid #E6E3E3; margin-bottom: 10px; }
.videoCard .vcTop { font-size: 11px; line-height: 18px; position: relative; marg
in-bottom: 10px; }
.videoCard .vcTop a { color: #2ABBEF; }
.videoCard .desc { border-bottom: 1px solid #E6E3E3; position: relative; }
.videoCard .expand { height: 80px; overflow: hidden; padding: 0 25px 0 10px; bor
der-bottom: 10px solid #FFFFFF; }
.videoCard p { color: #000000; font-size: 12px; line-height: 160%; }
.liveEditVideoCard p { margin-left: 98px; }
.videoCard p a { font-family: verdana, arial, sans-serif; color: #2ABBEF; }
.videoCard img { display: block; width: 88px; height: 68px; background: #696969
url(/images/progress_star_dark.gif) no-repeat center center; }
.videoCard .stats { position: absolute; right: 10px; bottom: 0px; text-align: ri
ght; }
.videoCard .leftStats { position: absolute; left: 98px; bottom: 0px; }
.videoCard .shareWidgets { float: right; display: block; width: 52px; height: 14
7px; margin-left: 10px; }
.videoCard .tweet, .videoCard .digg { display: block; width: 50px; height: 67px;
}
.videoCard .digg { width: 52px; height: 80px; }
.videoCard .vidThumb { position: relative; float: left; margin: 0 10px 0 0; widt
h: 88px; height: 68px; }
.videoCard .typeIconUTS { opacity: 1; -moz-opacity: 1; cursor: default; }
.videoCard .typeIconUTS .r { position: absolute; right: 12px; }
.videoCard .btnEX,
.videoCard .btnCO { margin-top: -18px; }
/* End Video Card */
/* Article Card */
.articleCard { height: 140px; cursor: default; margin-bottom: 20px; border-botto
m: 1px solid #E6E3E3; }
.articleCard a { cursor: pointer; }
.articleCard a, .articleCard span { font-family: arial, sans-serif; font-size: 1
2px; }
.articleCard .articleImg { width: 186px; height: 140px; position: absolute; left
: 0px; top: 0px; background: #696969 url(/images/progress_star_dark.gif) no-repe
at center center; color: #4D4D4D; }
.articleCard .authorImg { float: right; width: 105px; height: 140px; background-
color: #FFFFFF; }
.articleCard .authorImg img { background: #696969 url(/images/progress_star_dark
.gif) no-repeat center center; float: right; }
.articleCard .pad10 { position: relative; height: 140px; margin-left: 196px; }
.articleCard .pad10 a,
.articleCard .pad10 a:hover { color: #2ABBEF; }
.articleNoImage { height: 70px; }
.articleNoImage .authorImg { width: 52px; height: 70px; }
.articleNoImage .pad10 { height: 70px; }
.articleCard .authorCredit { text-align: right; float: right; padding: 10px 10px
0 0; font-size: 14px; max-width: 100px; word-wrap: break-word; }
.articleCard .authorCredit span, .articleCard .authorCredit a { font-size: 10px;
}
.articleCard .stats { position: absolute; bottom: 10px; font-style: italic; colo
r: #000000; max-width: 340px; }
.articleCard .stats .label { color: #919191; }
.articleCard .stats,
.articleCard .stats .label,
.articleCard strong { font-size: 11px; }
.articleCard .actionUploadImage { position: absolute; left: 0px; bottom: 0px; di
splay: block; width: 186px; padding: 2px 0px; color: #FFFFFF; background-color:
#000000; text-align: center; opacity: 0.85; }
.articleCard a.actionUploadImage:hover { text-decoration: underline; color: #2AB
BEF; }
.articleCard p.attribution,
.articleCard p.attribution a { font-size: 9px; line-height: 10px; color: #969696
; font-family: arial, sans-serif; }
.articleCard p.attribution { display: block; position: relative; width: 410px;
padding-top: 10px; margin: 0; text-align: right; float: right; }
.articleCard p.attribution a { text-decoration: underline; }
.articleWOD .pad10 { margin-left: 310px; }
.articleWOD .rss { display: block; width: 150px; padding-top: 10px; }
.articleWOD .rss, .articleWOD .rss span, .articleWOD .rss a { font-size: 10px; }
.articleWOD .articleImg { width: 300px; height: 140px; }
.articleWOD .actionUploadImage { width: 300px; }
.articleWOD .stats { width: 220px; }
/* End Article Card */
/* Video Content */
.innerTwoColumn { margin-bottom: 30px; }
.innerTwoColumn .left { width: 320px; float: left; }
.innerTwoColumn .left .content { padding-right: 10px; border-right: 1px solid #E
6E3E3; }
.innerTwoColumn .right { width: 310px; float: right; }
.innerTwoColumn .wwScrl { float: left; }
.innerTwoColumn .fwScrl { float: right; padding-right: 7px; }
/* End Video Content */
/* Under Video Ad */
.unverVidAdTop { padding: 8px; }
.unverVidAd { padding: 0 0 20px 0; margin-bottom: 30px; }
.adSenseVidLinkUnits { padding: 5px 0 10px 0; margin-left: -5px; }
/* End Under Video Ad */
/* Profile Picture */
.pp { }
.ppPicture { height: 180px; overflow: hidden; padding: 0 3px 10px; }
.ppPicture img { display: block; width: 135px; height: 180px; background: #69696
9 url(/images/progress_star_dark.gif) no-repeat center center; color: #696969; }
.pp .refine ul { padding: 0px; margin-right: 18px; }
.pp .refine a { overflow: hidden; }
.pp .refine p { font-family: arial,sans-serif; color: #000000; margin: 0; paddin
g-left: 3px; word-wrap: break-word; }
/* End Profile Picture */
/* User Bio Update */
.addUserBio, .bioDisplay { position: relative; font-size: 12px; color: #4D4D4D;
}
.addUserBio span { line-height: 20px; }
span.bioLength { font-size: 10px; color: #828282; float: right; }
.addUserBio textarea { width: 454px; margin-bottom: 10px; }
/* End User Bio Update */
/* Social Events */
.seFilters { margin: 0px; padding: 3px; font-size: 12px; color: #000000; height:
18px; line-height: 18px; overflow: hidden; border-bottom: 2px solid #CACACA; }
.seFilters li { display: block; width: 20px; height: 18px; margin: 0px 0px 0px 2
px; padding: 0px; text-indent: 18px; white-space: nowrap; float: left; overflow:
hidden; }
.seFilters li.seTxt { text-indent: 0px; width: 40px; white-space: nowrap; }
.seFilters a { display: block; width: 18px; height: 16px; background-image: url(
/images/social_event_icons2.gif); background-repeat: no-repeat; background-posit
ion: 0px 16px; border: 1px solid #000000; overflow: hidden; }
.seFilters a:hover, .seFilters .active a { border: 1px solid #2ABBEF; }
.seFilters li.seDescription { margin-left: 10px; width: 145px; font-weight: bold
; }
.seFilters li.iconProgress { background: url(/images/progress_star.gif) no-repea
t center center; float: right; display: none; }
.seFilters li.seDescription a, .seFilters li.seDescription a:hover { border: 0px
; display: inline; font-size: 11px; font-weight: normal; }
.socialEvents { position: relative; zoom: 1; }
.socialEvent { padding: 0 0 10px 0; margin-bottom: 10px; position: relative; bor
der-bottom: 1px solid #E6E3E3; }
.socialEvent .userIcon { display: block; width: 29px; height: 41px; padding: 3px
; background-color: #FFFFFF; overflow: hidden; float: left; position: relative;
margin-bottom: 0px; }
.socialEvent .userIcon img { display: block; width: 29px; height: 41px; backgrou
nd: #696969; }
.socialEvent .userIconRight { float: right; }
.socialEvent p, .socialEvent p a, .socialEvent p span.slnk, .socialEvent p stron
g { font-family: "lucida grande", tahoma, "arial narrow", arial, sans-serif; }
.socialEvent p { padding-right: 10px; margin-bottom: 0px; font-size: 11px; color
: #696969; overflow: hidden; }
.socialEvent .commentBlurb p { font-family: verdana, arial, sans-serif; padding-
right: 0px; color: #3D3D3D; }
.socialEvent .eventThumb { width: 65px; float: right; position: relative; }
.socialEvent .eventThumb img { display: block; width: 65px; height: 50px; backgr
ound: #696969; }
.socialEvent .eventThumb .sh .box { height: 50px; }
.socialEvent .eventThumb .typeIconUTS { display: none; top: 36px; left: 0px; wid
th: 63px; cursor: default; opacity: 1; }
.socialEvent .eventThumb a:hover .typeIconUTS, .socialEvent .eventThumb span.sln
k:hover .typeIconUTS { background-color: #1EA5ED; display: block; }
.socialEvent .eventBody { padding-top: 0px; margin-left: 45px; }
.socialEvent .commentBlurb { padding-top: 6px; position: relative; zoom: 1; min-
height: 1px; }
.socialEvent em { font-size: 12px; color: #969696; display: inline; margin-right
: 5px; line-height: 16px; height: 14px; padding: 1px 0px 0px 18px; background-im
age: url(/images/social_event_icons2.gif); background-repeat: no-repeat; backgro
und-position: 0px 16px; white-space: nowrap; cursor: default; zoom: 1; }
.socialEvent em.ts { display: block; padding: 0px; font-size: 10px; }
.socialEvent .socialEventRemove { display: none; position: absolute; top: 0px; r
ight: 0px; margin-right: 0px; text-align: center; }
.socialEvent:hover .socialEventRemove { display: block; }
.socialEvent .boxStroke .bodySay { top: 16px; left: -6px; }
.socialEvent strong.mr { margin-right: 5px; }
.eventAboutUser .eventBody { margin-left: 80px; }
.eventComment .commentBlurb, .eventWallContent .commentBlurb, .eventBlogPost .co
mmentBlurb, .eventWorldResource .commentBlurb { margin-right: 75px; }
.eventWonderment .eventThumb, .eventWonderment .eventThumb img { width: 88px; }
.eventWonderment .eventThumb .typeIconUTS { width: 86px; }
.eventWonderment .commentBlurb { margin-right: 98px; }
.eventFollow .userIcon, .eventFollow .userIcon img, .eventFriend .userIcon, .eve
ntFriend .userIcon img, .eventJoin .userIcon, .eventJoin .userIcon img { width:
16px; height: 16px; padding: 0px; background: #FFFFFF; }
.eventFollow .userIcon img, .eventFriend .userIcon img, .eventJoin .userIcon img
{ width: 16px; height: 16px; padding: 0px; background: transparent; }
.eventFollow .eventBody, .eventFriend .eventBody, .eventJoin .eventBody { margin
-left: 46px; }
.eventFollow p, .eventFriend p, .eventJoin p { font-size: 10px; color: #696969;
}
/*.eventFollow .socialEventRemove, .eventFriend .socialEventRemove { top: 0px; }
*/
.eventWall .eventBody { margin-left: 45px; margin-right: 50px; }
.eventWall em.ts, .eventFollow em.ts, .eventFriend em.ts, .eventJoin em.ts { dis
play: inline; }
.noMemberPic .eventBody { margin-left: 0px; }
.shaded .socialEvent em { background-image: url(/images/social_event_icons_side
.gif); }
/*.socialEvent:hover { border-color: #202020; border-top: 1px solid #F5F5F5; }
.socialEvent .socialEventRemove { top: 0px; }*/
a.loadingMoreEvents, a.loadingMoreEvents:hover { background: #696969 url(/images
/progress_star_dark.gif) no-repeat scroll center center; border-color: #4D4D4D;
}
a.loadingMoreEvents i, a.loadingMoreEvents em { display: none; }
.wallPost { }
.wallPost .box { }
.wallPost .postBox { padding-left: 22px; background-repeat: no-repeat; backgroun
d-position: 0px 4px; position: relative; }
.wallPost textarea { font-size: 12px; line-height: 18px; height: 18px; width: 35
6px; padding: 2px; color: #202020; border: 1px solid #C4C4C4; font-family: arial
, sans-serif; overflow: hidden; }
.wallPost .btnPostToWall { position: absolute; bottom: 1px; right: 1px; font-siz
e: 12px; float: none; }
.nList { }
.nList ul { padding: 0px; margin: 0px; }
.nList li { display: block; padding: 6px; list-style: none; margin: 0px 0px 5px
22px; font-size: 12px; line-height: 16px; color: #696969; border-bottom: 1px sol
id #E3E3E3; position: relative; }
.nList li.new { background-color: #F3F3F3; color: #000000; border-bottom: 1px so
lid #F5F5F5; }
.nList span.nListIcon { position: absolute; top: 6px; left: -22px; display: bloc
k; width: 16px; height: 16px; background-image: url(/images/social_event_icons2.
gif); background-repeat: no-repeat; background-position: 0px 16px; }
.nList a { font-weight: bold; }
.nList a.em { font-weight: normal; }
.nList em { display: block; float: right; height: 16px; width: 80px; text-align:
right; font-size: 10px; color: #969696; cursor: default; }
.nList li.new em { font-weight: bold; color: #000000; font-style: normal; }
.socialEvent em.iconSEShr { background-position: -37px 0px; } a.iconSEShr { back
ground-position: 0px 0px; } .active a.iconSEShr, a.iconSEShr:hover { background-
position: -18px 0px; }
.socialEvent em.iconSEGUp { background-position: -37px -16px; } a.iconSEGUp { ba
ckground-position: 0px -16px; } .active a.iconSEGUp, a.iconSEGUp:hover { backgro
und-position: -18px -16px; }
.socialEvent em.iconSEGDn { background-position: -37px -32px; } a.iconSEGDn { ba
ckground-position: 0px -32px; } .active a.iconSEGDn, a.iconSEGDn:hover { backgro
und-position: -18px -32px; }
.socialEvent em.iconSEFav, .nType2 span.nListIcon { background-position: -37px -
48px; } a.iconSEFav { background-position: 0px -48px; } .active a.iconSEFav, a.i
conSEFav:hover { background-position: -18px -48px; }
.socialEvent em.iconSESub, .nType9 span.nListIcon, .nType10 span.nListIcon { bac
kground-position: -37px -64px; } a.iconSESub { background-position: 0px -64px; }
.active a.iconSESub, a.iconSESub:hover { background-position: -18px -64px; }
.socialEvent em.iconSEWrt, .nType7 span.nListIcon, .nType8 span.nListIcon, .nTyp
e13 span.nListIcon { background-position: -37px -80px; } a.iconSEWrt { backgroun
d-position: 0px -80px; } .active a.iconSEWrt, a.iconSEWrt:hover { background-pos
ition: -18px -80px; }
.socialEvent em.iconSEPAd, .nType4 span.nListIcon { background-position: -37px -
96px; } a.iconSEPAd { background-position: 0px -96px; } .active a.iconSEPAd, a.i
conSEPAd:hover { background-position: -18px -96px; }
.socialEvent em.iconSEPSb { background-position: -37px -112px; } a.iconSEPSb { b
ackground-position: 0px -112px; } .active a.iconSEPSb, a.iconSEPSb:hover { backg
round-position: -18px -112px; }
.socialEvent em.iconSEJoi { background-position: -37px -128px; } a.iconSEJoi { b
ackground-position: 0px -128px; } .active a.iconSEJoi, a.iconSEJoi:hover { backg
round-position: -18px -128px; }
.socialEvent em.iconSEFlw, .nType1 span.nListIcon { background-position: -37px -
144px; } a.iconSEFlw { background-position: 0px -144px; } .active a.iconSEFlw, a
.iconSEFlw:hover { background-position: -18px -144px; }
.socialEvent em.iconSEFrn, .nType11 span.nListIcon { background-position: -37px
-160px; } a.iconSEFrn { background-position: 0px -160px; } .active a.iconSEFrn,
a.iconSEFrn:hover { background-position: -18px -160px; }
.socialEvent em.iconSECom, .nType3 span.nListIcon { background-position: -37px -
176px; } a.iconSECom { background-position: 0px -176px; } .active a.iconSECom, a
.iconSECom:hover { background-position: -18px -176px; }
.socialEvent em.iconSECoR, .nType12 span.nListIcon { background-position: -37px
-192px; } a.iconSECoR { background-position: 0px -192px; } .active a.iconSECoR,
a.iconSECoR:hover { background-position: -18px -192px; }
.socialEvent em.iconSEPin, .nType14 span.nListIcon { background-position: -37px
-208px; } a.iconSEPin { background-position: 0px -208px; } .active a.iconSEPin,
a.iconSEPin:hover { background-position: -18px -208px; }
.socialEvent em.iconSEPst, .nType5 span.nListIcon { background-position: -37px -
224px; } a.iconSEPst { background-position: 0px -224px; } .active a.iconSEPst, a
.iconSEPst:hover { background-position: -18px -224px; }
/* End Social Events */
/* User Connection */
.userConnections { margin: 0px; padding: 0px; }
.userConnections li { list-style: none; display: block; margin: 0px 0px 2px 9px;
padding: 0px; width: 46px; height: 87px; float: left; }
.userConnections a { display: block; width: 46px; height: 87px; margin: 0px; pad
ding: 0px; font-family: "lucida grande",tahoma,arial,sans-serif; line-height: 12
px; font-size: 11px; color: #4D4D4D; word-wrap: break-word; overflow: hidden; }
.userConnections a:hover { text-decoration: none; color: #2ABBEF; }
.userConnections img { display: block; margin-bottom: 1px; width: 46px; height:
61px; background: #696969; }
.userConnectionsSmall { padding-left: 1px; }
.userConnectionsSmall li { width: 20px; height: 20px; margin: 0px 0px 2px 2px; }
.userConnectionsSmall a { width: 16px; height: 16px; border: 2px solid #FFFFFF;
}
.userConnectionsSmall img { width: 16px; height: 16px; background: #FFFFFF; }
.userConnectionsSmall a.f { border: 2px solid #1EA5ED; }
/* End User Connection */
/* Scrape Status */
.scrape { width: 288px; padding: 6px; border-bottom: 1px solid #FFFFFF; position
: relative; margin-bottom: 6px; }
.scrapeDone { color: #696969; }
.scrapeInProgress { color: #3D3D3D; background-color: #FFFFFF; border-bottom: 1p
x solid #C4C4C4; }
.scrape h3 { margin: 0px; padding: 0px; font-weight: normal; font-size: 15px; cu
rsor: default; }
.scrape .progBar { width: 288px; background-color: #202020; height: 16px; positi
on: relative; cursor: default; }
.scrape .progBar span { background-color: #1EA5ED; display: block; overflow: hid
den; height: 16px; position: absolute; top: 0px; left: 0px; }
.scrapeDone .progBar span { background-color: #969696; }
.scrape .progBar strong { display: block; position: absolute; z-index: 2; top: 0
px; left: 0px; width: 288px; height: 16px; line-height: 16px; font-weight: norma
l; text-align: center; color: #FFFFFF; font-size: 10px; }
.scrape .stats { font-size: 10px; color: #696969; line-height: 16px; padding-top
: 4px; cursor: default; }
.scrape .stats span { color: #3D3D3D; font-size: 16px; padding-right: 10px; }
.scrape .stats .red { color: #EF241F; }
.scrape .note { font-size: 10px; white-space: nowrap; overflow: hidden; line-hei
ght: 14px; height: 14px; cursor: default; color: #969696; }
.scrape .cancelLink { position: absolute; top: 6px; right: 6px; text-decoration:
none; font-weight: bold; font-size: 15px; }
/* End Scrape Status */
/* Sites We Like */
.sitesWeLike { background-color: #F5F5F5; cursor: default; }
.sitesWeLike ul { margin: 0px; padding: 0px 6px; }
.sitesWeLike li { list-style: none; padding: 6px 0px 6px 6px; font-size: 11px; c
olor: #696969; border-bottom: 2px solid #FFFFFF; }
.sitesWeLike li a { font-size: 12px; cursor: pointer; }
/* End Sites We Like */
/* Article Style */
h2.step { border-color: #2ABBEF; margin-left: 0px; padding-left: 0px; color: #FF
FFFF; overflow: hidden; }
h2.step .stepNumber { margin-right: 0px; font-size: 28px; line-height: 22px; pad
ding: 0 8px 0 8px; background-color: #2ABBEF; letter-spacing: -5px; font-weight:
normal; font-family: arial, sans-serif; }
h2.step .stepNumber span { font-size: 11px; letter-spacing: normal; }
h2.step .stepText { color: #000000; font-size: 15px; font-weight: normal; margin
-left: 12px; letter-spacing: normal; font-family: verdana, arial, sans-serif; }
h4.articleTip { border-bottom: 2px solid #ED641F; color: #ED841F; }
h4.articleWarning { border-bottom: 2px solid #9D0409; color: #ED241F; }
/* End Article Style */
/* Related */
.relatedScroller { overflow: hidden; }
.relatedScroller .pageSummary { display: none; }
.related .noSimilarResults { background-color: #F5F5F5; font-size: 11px; color:
#4D4D4D; padding: 10px 0px; }
/* End Related */
/* Welcome Back */
.welcomeBack { color: #4D4D4D; width: 300px; height: 250px; float: left; margin-
top: 6px; position: relative; background: #FFFFFF url(/images/wonderdude_join.jp
g) no-repeat 223px 97px; }
.welcomeBack a { color: #398FC0; text-decoration: none; }
.welcomeBack a:hover { text-decoration: underline; }
.welcomeBack .hb a:hover { text-decoration: none; }
.welcomeBack h2 { margin: 5px 10px 0px 10px; padding: 0px; font-size: 15px; colo
r: #000000; text-align: center; }
.welcomeBack h2 a { color: #4D4D4D; }
.welcomeBack h3 { color: #398FC0; margin: 0px; padding: 10px 0px 5px 10px; }
.welcomeBack p { font-weight: bold; font-size: 13px; padding: 0px 0px 5px 10px;
margin: 0px; }
.welcomeBack .profileInfo { margin-top: 10px;}
.welcomeBack img { border: 1px solid #B3B3B3; position: absolute; left: 163px; t
op: 68px; }
.welcomeBack img.join { border: 0px; left: 233px; top: 107px; }
.welcomeBack div { font-size: 13px; padding: 0px 0px 5px 5px; }
.welcomeBack ul { margin-top: 0px; margin-bottom: 5px; font-size: 14px; color: #
808080; }
.welcomeBack .signupLink, .welcomeBack .moreInfo { color: #398FC0; font-size: 11
px; text-decoration: none; margin-left: 15px; }
.miniLoginForm { background-color: #F5F5F5; height: 40px; font-size: 11px; font-
weight: bold; overflow: hidden; }
.miniLoginForm .field { width: 120px; float: left; padding-top: 5px; font-weight
: normal; font-size: 11px; }
.miniLoginForm .field input { width: 110px; color: #000000; }
.miniLoginForm .button { width: 20px; }
.miniLoginForm a { display: block; float: right; width: 18px; height: 18px; back
ground-image: url(/images/button_login_arrow.gif); background-position: center c
enter; background-repeat: no-repeat; position: relative; }
/* End Welcome Back */
/* Article Page */
#articleIntro { min-height: 250px; padding-right: 20px; font-family: trebuchet m
s, century gothic, arial, sans-serif; font-size: 13pt; line-height: 1.2em; color
: #333333; text-align: left; }
#articleIntro.editMode { margin-left: 320px; }
div.editMode { border: 1px solid #E7ECEC; border-top: 0; }
/* End Article Page */
/* Compose Page */
.composeBlock { width: 974px; height: 386px; background: #000000 url(/images/com
pose_space_bg.jpg) no-repeat; color: #FFFFFF; position: relative; }
.composeBlock h1 { position: absolute; top: 115px; left: 290px; font-size: 18px;
margin: 0px; padding: 0px; font-family: century gothic, arial, sans-serif; curs
or: default; font-weight: normal; }
.composeBlock h2 { position: absolute; top: 45px; left: 60px; font-size: 62px; m
argin: 0px; padding: 0px; font-family: century gothic, arial, sans-serif; cursor
: default; }
.composeBlock a.submitVideo { position: absolute; top: 20px; right: 0px; color:
#000000; font-size: 12px; text-decoration: none; }
.composeBlock #startNewArticle { position: absolute; top: 220px; left: 30px; wid
th: 914px; }
/* End Compose Page */
/* Heading Bars */
.hb { height: 40px; display: block; position: relative; padding: 0px; margin: 0p
x; font-weight: bold; overflow: hidden; text-align: left; background-color: #202
020; }
.hb a, .hb span { display: block; height: 100%; color: #ffffff; text-decoration:
none; background-color: transparent; }
.hb span { cursor: default; }
.hb a span { cursor: pointer; }
.hb span.hide { display: none; }
.hb .shine { width: 100%; position: absolute; top: 0px; left: 0px; font-size: 1p
x; overflow: hidden; }
.hb .shine span { margin: 2px 2px 0px 2px; height: 14px; background-color: #3F3F
3F; }
.hb .shine span.b1 { margin: 0px 2px 0px 2px; height: 1px; }
.hb .shine span.b2 { margin: 0px 3px 0px 3px; height: 2px; }
.hb .shine span.b3 { margin: 0px 5px 0px 5px; height: 1px; }
.hb a:hover { background-color: #1EA5ED; }
.hb a:hover .shine span, .hb a.hover .shine span { height: 8px; background-color
: #1EA5ED; }
.hb a:hover .shine span.b1 { margin: 0px 3px 0px 3px; height: 7px; }
.hb a:hover .shine span.b2 { margin: 0px 4px 0px 4px; height: 3px; }
.hb a:hover .shine span.b3 { margin: 0px 6px 0px 6px; height: 1px; }
.hb .hl { font-size: 14px; position: absolute; top: 0px; left: 0px; padding: 5px
0px 0px 10px; height: auto; }
.hb .hl .hls { font-size: 10px; text-indent: 1px; display: block; font-weight: n
ormal; height: auto; }
.hb .hlb { font-size: 18px; position: absolute; top: 0px; left: 0px; padding-lef
t: 10px; height: 40px; line-height: 39px; }
.hb .hlb .hls { font-size: 15px; font-weight: normal; display: inline; margin-le
ft: 5px; }
.hb .icon { width: 40px; height: 40px; position: absolute; top: 0px; right: 0px;
background-image: url(/images/icon_explore_sections.gif); background-repeat: no
-repeat; display: none; }
/*.hb a:hover .icon { right: 1px; }
.hb a:hover .hl, .hb a:hover .hlb { left: 1px; }*/
.hb .overAll { height: 40px; position: absolute; top: 0px; right: 0px; line-heig
ht: 40px; overflow: hidden; padding-right: 40px; }
.hb a:hover .overAll { }
.backButton { margin-top: 10px; width: 200px; height: 40px; position: relative;
overflow: visible; text-align: left; }
.backButton .hb { position: absolute; top: 0px; left: -10px; width: 210px; }
.backButton .hb .hl, .backButton .hb .hlb { padding-left: 20px; }
.backButton .hb .overAll { padding-right: 0px; width: 10px; right: auto; left: 0
px; background: url(/images/back_btn.png) no-repeat; }
.expandCategory { margin-top: 10px; }
.expandCategory .shine { display: none; }
.expandCategory a { background-image: url(/images/expand_category.gif); backgrou
nd-repeat: no-repeat; background-position: 0px 0px; }
.expandCategory a:hover { background-position: -202px; }
/* End Heading Bars */
/* Section Heading */
.hi .box { background-color: #E6ECEC; }
.hi p { color: #000000; font-size: 11px; margin-bottom: 0.5em; }
.hi h1 { margin-bottom: 0px; }
.hiImg { position: relative; width: 160px; height: 234px; overflow: hidden; marg
in-top: -6px; }
.hiImg img { position: absolute; bottom: -10px; right: -60px; }
.hiImgSm { position: relative; width: 160px; height: 45px; overflow: hidden; mar
gin-top: -6px; }
.hiImgSm img { position: absolute; bottom: -119px; right: -30px; }
.hiImgs, .hiImgsSm { position: relative; width: 160px; height: 135px; overflow:
hidden; margin-top: -6px; }
.hiImgs div, .hiImgsSm div { position: absolute; top: 0px; left: -8px; width: 17
6px; }
.hiImgs img, .hiImgsSm img { float: left; display: block; overflow: hidden; widt
h: 88px; height: 68px; background-color: #FFFFFF; margin: 0px; padding: 0px; }
.hiImgsSm { height: 68px; }
.sectionHeading { width: 664px; height: 250px; position: relative; }
.sectionHeading h1 { color: #999999; font-weight: normal; padding: 0px; margin:
0px; font-size: 33px; position: absolute; top: 30px; left: 20px; }
.sectionHeading .sectionImage { width: 664px; height: 250px; background-position
: right bottom; background-repeat: no-repeat; position: absolute; top: 0px; left
: 0px; }
.sectionHeading p { color: #333333; font-size: 13px; position: absolute; display
: block; top: 72px; left: 20px; width: 350px; height: 178px; padding: 0px; margi
n: 0px; cursor: default; }
.sectionHeading p strong { font-size: 14px; display: block; margin-bottom: 8px;
}
.sectionHeading a.admin { float:right; position: absolute; right: 0px; font-size
: 12px; text-decoration: none; background-color: #ffffff; z-index: 3; }
.sectionHeading a.admin:hover { text-decoration: underline; }
.sectionHeading br { font-size: 8px; }
/* End Section Heading */
/* Content Toolbar */
.contentToolbar { height: 25px; padding-top: 5px; background: #F3F3F3 url(/image
s/wht_nav_bar_bg.gif) repeat-x 0 0; border: 0; overflow: hidden; }
.contentToolbar a,
.contentToolbar span { font-family: Arial, Sans-Serif; }
.contentToolbar u.l,
.contentToolbar b.r { position: relative; top: -5px; display: block; width: 7px;
height: 30px; background-image: url(/images/wht_toolbar_rounded_top.gif); backg
round-repeat: no-repeat; overflow: hidden; }
.contentToolbar u.l { float: left; }
.contentToolbar b.r { float: right; background-position: -7px 0; }
.contentToolbarArticle { margin-bottom: 20px; }
.contentToolbarArticle u.l,
.contentToolbarArticle b.r { background: url(/images/wht_nav_bar_corners.gif); }
.contentToolbarArticle b.r { background-position: -7px 0; }
.contentToolbar span { line-height: 20px; font-size: 14px; font-weight: bold; fl
oat: left; }
.contentToolbar .contentGrade { padding: 0 10px 0 5px; }
.contentToolbar .views { padding-right: 10px; float: right; }
.contentToolbar .btn22 { margin-right: 3px; }
.contentToolbar .btnFR { margin-left: 3px; }
.contentToolbar .flagContent { margin-left: 5px; }
.contentToolbar .btnH20 em,
.contentToolbar .btnComb u { font-family: "arial narrow",arial,sans-serif; line-
height: 17px; }
.contentToolbar .btnComb em { width: 69px; }
.contentToolbar a.btnTU.contGraded em { background-position: -93px -24px; }
.contentToolbar a.btnTD.contGraded em { background-position: -115px -24px; }
.contentToolbar a.working { background-color: transparent; }
.contentToolbar a.working em { background-color: #EFF7F7; background-image: url(
/images/progress_star.gif); background-position: center center; background-repea
t: no-repeat; }
.videoActionArea { position: relative; height: auto; overflow: hidden; zoom: 1;
}
.loadingVideoActions { display: none; height: 20px; background-image: url(/image
s/progress_star.gif); background-position: center center; background-repeat: no-
repeat; }
.actionToPerform { position: relative; height: 0px; width: auto; font-size: 12px
; overflow: hidden; zoom: 1; }
/* End Content Toolbar */
/* TODO: Compress all this */
/* Actions and Description Control */
.videoToolbar { position: relative; font-size: 12px; margin-bottom: 6px; }
.videoToolbar .actions { height: 35px; background-color: #000000; background-ima
ge: url(/images/tab_black_bg.gif); padding-top: 1px; overflow: hidden; }
.videoToolbar .actions a { zoom: 1; }
.videoToolbar .actions div.action { position: relative; width: 106px; height: 35
px; float: left; border-left: 1px solid #5A5A5A; text-align: center; zoom: 1; }
.videoToolbar .actions div.action a { position: relative; display: block; color:
#FFFFFF; text-decoration: none; line-height: 34px; font-weight: bold; outline:
none; }
.videoToolbar .actions div.action a:hover { text-decoration: underline; }
.videoToolbar .actions div.action a span { float: left; }
.videoToolbar .actions div.action a span.cb { float: none; }
.videoToolbar .actions div.action a span.icon { display: block; position: relati
ve; width: 20px; height: 35px; top: -1px; background-image: url(/images/tab_blac
k_video_actions.jpg); margin-right: 5px; }
.videoToolbar .actions div.action a.videoActionShare span.icon { background-posi
tion: 0px 0px; margin-left: 12px; }
.videoToolbar .actions div.action a.videoActionPlaylist span.icon { background-p
osition: 0px -37px; margin-left: 18px; }
.videoToolbar .actions div.action a.videoActionFavorite span.icon { background-p
osition: 0px -74px; margin-left: 16px; }
.videoToolbar .actions div.action a.videoActionGrade span.icon { background-posi
tion: 0px -111px; margin-left: 23px; }
.videoToolbar .actions div.action a.videoActionFlag span.icon { background-posit
ion: 0px -148px; margin-left: 24px; }
.videoToolbar .actions div.side { width: 95px; }
.videoToolbar .actions div.first { border: 0; }
.videoToolbar .actions span.leftSide, .videoToolbar .actions span.rightSide { po
sition: relative; display: block; width: 10px; height: 36px; top: -1px; backgrou
nd-image: url(/images/tab_black_corners.gif); }
.videoToolbar .actions span.leftSide { float: left; background-position: 0px 0px
; }
.videoToolbar .actions span.rightSide { float: right; background-position: -10px
0px; }
.videoToolbar .adminSize div.action { width: 73px; }
.videoToolbar .adminSize div.action a { font-size: 11px; }
.videoToolbar .adminSize div.side { width: 70px; }
.videoToolbar .adminSize div.action a.videoActionShare span.icon { background-po
sition: 0px 0px; margin-left: 0px; }
.videoToolbar .adminSize div.action a.videoActionPlaylist span.icon { background
-position: 0px -37px; margin-left: 3px; }
.videoToolbar .adminSize div.action a.videoActionFavorite span.icon { background
-position: 0px -74px; margin-left: 3px; }
.videoToolbar .adminSize div.action a.videoActionGrade span.icon { background-po
sition: 0px -111px; margin-left: 3px; }
.videoToolbar .adminSize div.action a.videoActionFlag span.icon { background-pos
ition: 0px -148px; margin-left: 3px; }
.videoToolbar .adminSize div.action a.videoActionMakeHot span.icon, .videoToolba
r .adminSize div.action a.videoActionFeature span.icon { display: none; }
.videoToolbar .adminSize div.action a.videoActionMakeHot span, .videoToolbar .ad
minSize div.action a.videoActionFeature span { float: none; }
.videoToolbar .adminSize div.action a.videoActionMakeHot, .videoToolbar .adminSi
ze div.action a.videoActionFeature { text-align: center; }
.videoToolbar .adminSize div.action a.videoActionFavorite span.setVideoFavoriteT
ext { display: block; width: 45px; }
.videoToolbar .stats { height: 34px; background-color: #F5F5F5; line-height: 34p
x; padding: 0px 15px; }
.videoToolbar .stats .statBit { display: block; width: 110px; float: left; }
.videoToolbar .stats .date { width: 160px; }
.videoToolbar .description { padding: 15px 15px 15px; margin: 0px; }
.videoToolbar .videoLinks { padding: 3px 15px 0px; }
.videoToolbar .videoLinks .infoPart { display: block; float: left; width: 250px;
font-size: 11px; color: #808080; overflow: hidden; }
.videoToolbar .videoLinks .infoPart a { color: #15A5FE; text-decoration: none; }
.videoToolbar .videoLinks .infoPart a:hover { text-decoration: underline; }
.videoToolbar .videoLinks .infoPart .content { display: block; }
.videoToolbar .videoActionArea { position: relative; height: auto; overflow: hid
den; zoom: 1; }
.videoToolbar .videoActionArea .loadingVideoActions { display: none; height: 20p
x; background-image: url(/images/progress_star.gif); background-position: center
center; background-repeat: no-repeat; }
.videoToolbar .actionToPerform { position: relative; height: 0px; width: auto; f
ont-size: 12px; overflow: hidden; zoom: 1; }
.actionToPerform { position: relative; height: 0px; width: auto; font-size: 12px
; overflow: hidden; zoom: 1; }
.actionToPerform .content { padding: 5px 20px 10px 20px; background-color: #FFFF
FF; zoom: 1; }
.actionToPerform .title { font-size: 16px; font-weight: bold; }
.actionToPerform .title .icon { display: block; width: 24px; height: 20px; float
: left; margin-right: 5px; background: url(/images/details_member_functions.png)
; background-repeat: no-repeat; }
.actionToPerform .title .shiftLeft { float: left; }
.actionToPerform .title .shiftRight { float: right; }
.actionToPerform .title .titleLine { display: block; height: 20px; border-bottom
: 1px solid; margin-left: 29px; }
.actionToPerform .buttons input { width: 120px; }
.shareVideoInternal .content { height: 195px; }
/* Video Grader */
.interactiveVideoGrader { }
.interactiveVideoGrader .title { color: #FF9607; }
.interactiveVideoGrader .title .icon { background-position: 0px -100px; }
.interactiveVideoGrader .title .grade { display: block; width: 24px; height: 20p
x; float: right; margin-left: 5px; padding-right: 0px; background-image: url(/im
ages/video_grades_big.png); background-repeat: no-repeat; }
.interactiveVideoGrader .title .titleLine { border-color: #FF9607; margin-right:
29px; }
.videoActionArea .gradeSelection { padding: 15px 0px; }
.videoActionArea .gradeSelection .userGradeLink { display: block; width: 34px; h
eight: 30px; float: left; margin-right: 3px; }
.videoActionArea .gradeSelection .userGrade, .gradeSelection .userGradeLink:hove
r, .gradeSelection .userGradeLink.hover { cursor: default; background-image: url
(/images/grade_stroke_green.gif); background-position: 0px 0px; }
.videoActionArea .gradeSelection a { display: block; width: 24px; height: 20px;
margin: 5px 5px; background-image: url(/images/video_grades_big.png); background
-repeat: no-repeat; outline: none; }
.videoActionArea .gradeSelection a.inProgress { background-image: url(/images/pr
ogress_star.gif); background-position: center center; background-repeat: no-repe
at; }
.videoActionArea .gradeSelection .excellent, .gradeSelection .reallyBad { font-s
ize: 11px; padding-top: 10px; }
.videoActionArea .gradeSelection .excellent { float: left; color: #FF9607; }
.videoActionArea .gradeSelection .reallyBad { float: right; color: #808080; }
.interactiveVideoGrader .shortMessage { display: block; text-align: left; }
.interactiveVideoGrader .shortMessage .green { color: #6CB017; }
.interactiveVideoGrader .messageBox, .interactiveVideoGrader .shortMessage { pad
ding-bottom: 10px; }
.interactiveVideoGrader .messageBox .msgTitle { float: right; width: 100px; }
.interactiveVideoGrader .messageBox .msgBody { float: right; }
.interactiveVideoGrader .commentReply { display: none; padding-bottom: 10px; }
/* End Video Grader */
/* Flag Video Content */
.flagVideoContent .title { color: #E33A37; }
.flagVideoContent .title .icon { background-position: 0px -40px; }
.flagVideoContent .selections { display: block; position: relative; width: 180px
; float: left; color: #333333; }
.flagVideoContent .selections div { padding: 5px 0px; line-height: 14px; }
.flagVideoContent .selections div .flagOption { margin-right: 5px; }
.flagVideoContent .message { display: block; position: relative; width: 310px; f
loat: right; color: #333333; }
.flagVideoContent .message .flagContentMessage { width: 305px; }
.flagVideoContent .message .controls input { width: 110px; }
.flagVideoContent .message .controls .submitContentFlag { float: left; }
.flagVideoContent .message .controls .cancelContentFlag { float: right; }
/* End Flag Video Content */
/* Social Bookmarks and Links */
.shareVideoInternal { position: relative; }
.shareVideoInternal .links a { display: block; width: 50px; height: 50px; margin
: 0 28px; float: left; background-image: url(/images/share_icons_sprite.jpg); ba
ckground-position: 0 0; background-repeat: no-repeat; }
.shareVideoInternal .links a.bkFacebook { background-position: 0px 0px }
.shareVideoInternal .links a:hover.bkFacebook { background-position: 0px -52px }
.shareVideoInternal .links a.bkTwitter { background-position: -50px 0px }
.shareVideoInternal .links a:hover.bkTwitter { background-position: -50px -52px
}
.shareVideoInternal .links a.bkDigg { background-position: -101px 0px }
.shareVideoInternal .links a:hover.bkDigg { background-position: -101px -52px }
.shareVideoInternal .links a.bkStumble { background-position: -152px 0px }
.shareVideoInternal .links a:hover.bkStumble { background-position: -152px -52px
}
.shareVideoInternal .links a.bkReddit { background-position: -204px 0px }
.shareVideoInternal .links a:hover.bkReddit { background-position: -204px -52px
}
.shareVideoInternal .links a.bkEmail { background-position: -255px 0px }
.shareVideoInternal .links a:hover.bkEmail { background-position: -255px -52px }
/* End Social Bookmarks and Links */
/* Add To Playlist */
.addVideoToPlaylist { height: 0px; }
.addVideoToPlaylist .title .icon { background-position: 0px -60px; }
.addVideoToPlaylist .content .userVideoPlaylists { padding: 5px 0px 15px; }
/*
.addVideoToPlaylist .content a.createNewPlaylist { display: block; width: 236px;
height: 20px; background-image: url(/images/playlist_create_new.gif); backgroun
d-position: 0px -20px; outline: none; }
.addVideoToPlaylist .content a:hover.createNewPlaylist { background-position: 0p
x 0px; }
*/
.addVideoToPlaylist .content .playlistList { padding-bottom: 10px; }
.addVideoToPlaylist .content .playlistList .playlistLink { }
.addVideoToPlaylist .content .playlistList .playlistLink a { display: block; hei
ght: 20px; line-height: 20px; text-decoration: none; outline: none; }
.addVideoToPlaylist .content .playlistList .playlistLink a.addToPlaylist,
.addVideoToPlaylist .content .playlistList .playlistLink a.removeFromPlaylist {
margin-top: 5px; }
/* Clear inherited styles */
/*
.addVideoToPlaylist .content .playlistList .playlistLink a.removeFromPlaylist {
margin: 0px; padding: 0px; width: auto; }
.addVideoToPlaylist .content .playlistList .playlistLink a.addToPlaylist,
.addVideoToPlaylist .content .playlistList .playlistLink a.removeFromPlaylist {
width: 100px; background-image: url(/images/playlist_add_remove.gif); margin: 5p
x; margin-left: 0px; float: left; }
.addVideoToPlaylist .content .playlistList .playlistLink a.addToPlaylist { backg
round-position: 0px -20px; }
.addVideoToPlaylist .content .playlistList .playlistLink a:hover.addToPlaylist {
background-position: 0px 0px; }
.addVideoToPlaylist .content .playlistList .playlistLink a.removeFromPlaylist {
background-position: 0px -60px; }
.addVideoToPlaylist .content .playlistList .playlistLink a:hover.removeFromPlayl
ist { background-position: 0px -40px; }
*/
.addVideoToPlaylist .content .playlistList .playlistLink div.linkWrap { text-ali
gn: left; border-bottom: 1px solid; margin-left: 110px; padding: 5px 0px; }
.addVideoToPlaylist .content .playlistList .playlistLink div.first { border-top:
1px solid; }
.addVideoToPlaylist .content .playlistList .playlistLink a.viewPlaylist { paddin
g-left: 10px; }
.addVideoToPlaylist .content .playlistList .playlistLink a.viewPlaylist span { f
loat: right; }
.addVideoToPlaylist .title .titleLine,
.content .playlistList .playlistLink a.viewPlaylist { color: #000000; }
.addVideoToPlaylist .title .titleLine,
.addVideoToPlaylist .content .playlistList .playlistLink div.linkWrap { border-c
olor: #E6E3E3; }
.content .playlistList .playlistLink a:hover.viewPlaylist { background-color: #E
6E3E3; }
.content .playlistList .playlistLink a.viewPlaylist span { color: #808080; }
.content .playlistList .playlistLink a:hover.viewPlaylist span { color: #FFFFFF;
}
/* End Add To Playlist */
/* Feature Video Control */
.featureVideoContainer .title .icon { background-position: 0px -20px; }
.featureVideoContainer .title .titleLine { color: #3E8C7E; }
.featureVideoInternal .content { padding-left: 0px; padding-right: 0px; }
.featureVideoInternal .content .title { padding-left: 20px; padding-right: 20px;
}
.featureVideoElements { position: relative; padding-top: 15px; }
.featureVideoElements .featuredAnchor { display: block; position: relative; top:
-50px; zoom: 1; }
.featureVideoElements .videoImage { position: relative; width: 300px; height: 15
0px; float: left; border: 1px solid #CCCCCC; }
.featureVideoElements .videoImage .uploadImageLink { width: 200px; padding-left:
56px; padding-top: 50px; }
.featureVideoElements .videoImage .uploadImageLink .stretchLinkButton a { margin
: 0px auto; }
.featureVideoElements .videoImage .uploadImageLink .stretchLinkButton a .linkCon
tent { width: 170px; }
.featureVideoElements .videoImage .uploadImageLink .imageSizeMessage { color: #1
E5B8C; text-align: center; padding-top: 20px; }
.featureVideoElements .videoImage a.uploadLink { display: block; position: absol
ute; left: 210px; top: 0px; z-index: 2; background-color: #FFFFFF; text-decorati
on: none; }
.featureVideoElements .videoImage a:hover.uploadLink { text-decoration: underlin
e; }
.featureVideoElements .videoImage a.playFeaturedVideo { display: block; position
: relative; width: 300px; height: 150px; }
.featureVideoElements .videoImage a.playFeaturedVideo img { display: block; posi
tion: relative; }
.featureVideoElements .videoImage a .playHover { display: block; position: absol
ute; left: 90px; top: 14px; width: 120px; height: 120px; background-image: none;
}
.featureVideoElements .videoImage a:hover .playHover { display: block; backgroun
d-image: url(/images/bigplay.png); background-position: 0px 0px; cursor: pointer
; }
.featureVideoElements .videoTitle { position: relative; height: 140px; margin-le
ft: 307px; padding: 5px; border: 1px solid #CCCCCC; font-size: 24px; color: #236
CB5; }
.featureVideoElements .commentUserIcon { border: 0px; padding: 5px 0px; }
.featureVideoElements .commentBody .featuredVideoDescription { width: 99%; heigh
t: 88px; border: 1px solid #CCCCCC; }
.featureVideoElements .commentBody .bodySay { top: 11px; }
.featuredVideo .commentBody { padding-bottom: 10px; }
.featuredVideo .commentBody .featuredByName { padding-bottom: 5px; }
.featuredVideo .commentBody span { font-size: 16px; line-height: 24px; color: #6
66666; }
.featuredVideo .featureVideoElements .videoImage, .featuredVideo .featureVideoEl
ements .videoTitle { border: 0px; padding: 0px; }
.featuredVideo .featureVideoElements .videoTitle .titleLink { height: 115px; ove
rflow: hidden; }
.featuredVideo .featureVideoElements .videoTitle h2 { padding: 0px; margin: 0px;
font-weight: normal; }
.featuredVideo .featureVideoElements .videoTitle a { font-size: 28px; color: #23
6CB5; text-decoration: none; outline: none; }
.featuredVideo .featureVideoElements .videoTitle a:hover { text-decoration: unde
rline; }
.featuredVideo .videoDetailInfo .infoPart { display: block; width: auto; overflo
w: hidden; float: left; }
.featuredVideo .videoDetailInfo .hide { display: none; }
.featuredVideo .videoDetailInfo .infoPart .videoGrade span { display: block; wid
th: 24px; height: 20px; background-image: url(/images/video_grades_big.png); bac
kground-repeat: no-repeat; }
.featuredVideo .videoDetailInfo .userGrade { padding: 0px }
.featuredVideo .videoDetailInfo .infoPart { padding-right: 25px; }
.featuredVideo .videoDetailInfo .infoPart span { display: block; }
.featuredVideo .videoDetailInfo .infoPart span.hide { display: none; }
.featuredVideo .videoDetailInfo .infoPart .title { font-size: 10px; color: #8080
80; }
.featuredVideo .videoDetailInfo .infoPart .content { font-size: 18px; color: #00
0000; }
/* End Feature Video Control */
.videoToolbar .bottom { height: 10px; background-image: url(/images/video_info_b
ottom_border.gif); background-position: 0px 0px; background-repeat: no-repeat; o
verflow: hidden; }
.videoToolbar .videoActionArea,
.videoToolbar .stats,
.videoToolbar .description,
.videoToolbar .videoLinks { }
/* End Actions and Description Control */
/* Claim Content */
.claimContent { clear: left; margin-bottom: 10px; }
.claimContent p { font-size: 11px; margin-bottom: 1em; color: #696969; }
.claimContent p a { color: #000000; }
.claimContent .claimContentBody p a { color: #2ABBEF; }
.claimContent .claimContentBody { display: none; }
.claimContent input.claimedLink { width: 610px; margin-bottom: 10px; line-height
: 20px; border: 2px solid #CACACA; padding: 2px; font-size: 12px; font-family: "
courier new", courier, monospace; }
/* End Claim Content*/
/* Prev/Next Article */
.articlePrevNext { display: block; overflow: hidden; margin: 10px 0px 20px; padd
ing: 0px; border: 1px solid #CECECE; font-size: 12px; }
.articlePrevNext li { display: block; float: left; width: 302px; margin: 5px; li
st-style: none; position: relative; line-height: 20px; color: #000000; backgroun
d-color: #F3F3F3; }
.articlePrevNext li.prev { padding: 0 0 0 10px; margin-right: 0; }
.articlePrevNext li.next { padding: 0 10px 0 0; text-align: right; float: right;
margin-left: 0; }
.articlePrevNext a { display: block; position: absolute; top: 0px; padding: 20px
0px 0px; width: 302px; height: 20px; overflow: hidden; font-weight: bold; outli
ne: none; }
.articlePrevNext li.prev a { left: 10px; }
.articlePrevNext li.next a { right: 10px; }
/* End Prev/Next Article */
/* Dynamic Result Scrollers */
.drsh { padding-bottom: 6px; margin-bottom: 6px; }
.drsh .content { margin: 6px -6px 0px 6px; height: 136px; overflow: hidden; }
.drsh .content h2, .drsh .content h3, .drsh .content h4, .drsh .content h5, .drs
h .content h6 { margin: 0px; padding: 0px; font-size: 11px; line-height: 12.3px;
}
.drsh .items { display: block; overflow: hidden; margin: 0px -6px 0px 0px; paddi
ng: 0px; }
.drsh .items li { display: block; padding: 0px; margin: 0px 14px 6px 0px; float:
left; list-style: none; position: relative; overflow: hidden; }
.drsh .items a { display: block; width: 88px; padding: 84px 2px 0px 2px; height:
50px; z-index: 2; position: relative; font-weight: normal; overflow: hidden; bo
rder: 1px solid #E6ECEC; z-index: 3; }
.drsh .items a:hover { background-color: #FFFFFF; text-decoration: none; border:
1px solid #1EA5ED; }
.drsh .items .intro { display: none; }
.drshLight { background-color: #FFFFFF; margin-bottom: 0px; }
.drshDark { background-color: #262626; }
.drshDark .items a:hover { background-color: #000000; }
.drsh .items img { display: block; overflow: hidden; position: absolute; top: 0p
x; left: 0px; margin: 2px; width: 88px; height: 68px; background: #696969; }
.drshDark .items img { border: 2px solid #000000 }
.drsh .items .typeIconUTS { top: 70px; right: 2px; width: 86px; zoom: 1; opacity
: 1; -moz-opacity: 1; }
.drsh .items li.active .typeIconUTS { background-color: #1EA5ED; }
.drsh .items li.active a, .drsh .items li.active a:hover { border: 1px solid #1E
A5ED; font-size: 12px; font-weight: bold; color: #000000; padding: 99px 2px 0px
2px; height: 35px; text-align: center; cursor: default; background-color: #FFFFF
F; }
.drsh .items li.active img, .drsh .items a:hover img { /*border: 2px solid #1EA5
ED;*/ }
.drsh .items li.added h3 { background-color: #CCCCCC; }
.drsh .items li.removed { display: none; }
.drshH .items li { margin-bottom: 3px; }
.drshH .items a { width: 137px; height: 52px; padding: 2px 6px 0 62px; }
.drshH .items img { width: 56px; height: 43px; border: 0px; margin: 0px; }
.drshH .items .typeIconUTS { right: auto; left: 0px; top: 43px; height: 11px; li
ne-height: 11px; width: 54px; font-size: 9px; display: block; }
.drshH .items a:hover .typeIconUTS { display: block; }
.drshH .items li.active a, .drshH .items li.active a:hover { height: 33px; paddi
ng: 21px 6px 0 62px; }
.drshH .items .intro { display: block; position: absolute; top: 32px; left: 63px
; z-index: 2; width: auto; margin: 0 3px 0 0; cursor: default; font-weight: norm
al; overflow: hidden; color: #B3B3B3; font-size: 9px; line-height: 11px; }
.drshH .items li:hover { background-color: #FFFFFF; }
.drshH .items li:hover a:hover { background-color: transparent; }
.drshH .items li:hover .intro { color: #696969; }
.drsh134 { width: 134px; }
.drsh134 .content { height: 568px; }
.drsh134 .items a { width: 116px; text-align: center; padding-top: 92px; height:
42px; line-height: 14px; }
.drsh134 .items .typeIconUTS { right: 16px; top: 74px; }
.drsh134 .items img { left: 14px; top: 4px; }
.drshH300 { width: 300px; padding-bottom: 0px; }
.drshH300 ul { width: 294px; }
.drshH300 .items li { margin-right: 6px; }
.drshH300 .items a { width: 218px; }
.drshH300 .items li.active a, .drshH300 .items li.active a:hover { text-align: l
eft; }
.drshH300 .content { height: auto; padding-bottom: 3px; }
.drsh300 { width: 300px; overflow: hidden; }
.drsh300 .items li { margin-right: 6px; }
.drsh300 .content { margin-left: 3px; margin-right: -3px; }
.drsh436 { width: 430px; overflow: hidden; }
.drsh436 .items { width: 430px; }
.drsh436 .items li { margin-right: 4px; }
.drsh492 { width: 492px; overflow: hidden; }
.drsh492 .content { margin-left: 1px; margin-right: -1px; }
.drsh492 .items li { margin-right: 5px; }
.drsh532 { width: 532px; overflow: hidden; background-color: #F5F5F5; }
.drsh532 .content { height: 351px; width: 524px; }
.drsh532 .items li { margin-right: 6px; }
.drsh532 .items a { border-color: #F5F5F5; }
.drsh532 .items a, .drsh532 .items li.active a, .drsh532 .items li.active a:hove
r { width: 189px; }
.drsh658 { width: 648px; overflow: hidden; }
.drsh658 .content { margin-left: 12px; margin-right: -12px; }
.drsh658 .items li { margin-right: 14px; }
.drshFull .content { margin-left: 8px; margin-right: -8px; }
.drsh2row .content { height: 278px; }
.drsh3row .content { height: 420px; }
.drsh4row .content { height: 562px; }
.contentVidRight .drsh .content { height: 410px; }
.contentVidRight .drsh ul { width: 424px; }
.contentVidAbove .drsh .items, .contentArtAbove .drsh .items { margin: 0 0 0 14p
x; }
/* End Dynamic Result Scrollers */
/* Content Icon Items */
.gridMode { margin-bottom: 20px; padding-top: 10px; }
.contentIcon { display: block; margin: 0; padding: 0; }
.contentIcon li { list-style: none; margin: 0 0 10px 0; display: block; }
.wideMode .contentIcon li { width: 314px; padding-right: 10px; float: left; }
.gridMode .contentIcon li { width: 310px; padding-right: 10px; float: left; }
.contentIcon h3 { font-weight: normal; margin: 0; }
.contentIcon a, a.contentIcon { display: block; height: 68px; font-size: 15px; p
osition: relative; text-decoration: none; overflow: hidden; line-height: 17px; }
.contentIcon img { float: left; margin: 0 10px 0 0; width: 88px; height: 68px; b
ackground-color: #F5F5F5; }
.contentIcon a .gradeStat, a.contentIcon .gradeStat { display: none; }
.contentIcon a:hover .gradeStat, a.contentIcon:hover .gradeStat { display: block
; }
/*.hlOnly ul a:hover img { display: block; }*/
/* End Headline Only Scrollers */
/* Scrollers */
.scrollers .scroller { margin-bottom: 6px; }
.scroller { width: 200px; margin-left: auto; margin-right: auto; text-align: lef
t; overflow: hidden; }
.scroller.wideMode { width: 236px; }
.scroller.wide300 { width: 300px; }
.wwFrontPageMode { width: 418px; margin: 10px 10px 0px 0px; float: left; }
.scroller .content { height: 68px; overflow: hidden; position: relative; }
.featuredScroller .content { height: 140px; }
.compactMode .content { height: 72px; padding-top: 3px; }
.compactMode .content img { position: absolute; left: 0px; top: 5px; }
.compactMode .content div { font-size: 11px; line-height: 14px; }
.compactMode .content div a { text-decoration: none; white-space: nowrap; }
.compactMode .content div a:hover { text-decoration: underline; }
.compactMode .content div a span { display: inline-block; width: 24px; cursor: p
ointer; }
.compactMode .content div.userScrollerItemSM { padding-left: 56px; }
.compactMode .content div.videoScrollerItemSM { padding-left: 93px; }
.expandedMode .content { height: auto; margin-bottom: -1px; background-color: #F
5F5F5; }
.featuredScrollerWide .content { height: 533px; }
.playlistMode .content { height: 100px; }
.partnerMode .content { height: auto; }
.userModeExpandedMode .content { height: 137px; border: 0px; }
.playlistModeExpandedMode .content { height: 64px; padding: 128px 10px 0px 77px;
font-size: 13px; background-color: #FFFFFF; color: #696969; overflow: hidden; m
argin-bottom: 6px; }
.playlistModeExpandedMode .content .playlistImages { position: absolute; top: 14
px; left: 16px; width: 200px; height: 100px; overflow: hidden; border: 1px solid
#B3B3B3; }
.playlistMode .content .playlistImages img.solo, .playlistModeExpandedMode .cont
ent .playlistImages img.solo { margin-top: -25px; }
.playlistModeExpandedMode .content .userImage { position: absolute; top: 122px;
left: 16px; background: #696969 url(/images/progress_star_dark.gif) no-repeat ce
nter center; }
.playlistModeExpandedMode .content a { text-decoration: none; }
.playlistModeExpandedMode .content span { position: absolute; top: 176px; left:
77px; white-space: nowrap; font-size: 11px; }
.playlistModeExpandedMode .content span a { text-decoration: underline; }
.wwFrontPageMode .content { position: relative; width: 418px; height: 211px; }
.right300 .scroller { width: 300px; }
.right300 .playlistMode .content { height: 37px; }
.right300 .playlistMode .playlistImages a img { width: 50px; height: 37px; }
.right300 .playlistMode .playlistImages a:hover span { background-image: none; }
.right300 .featuredScroller .videoScrollerItem { padding-top: 155px; }
.right300 .scroller .colorFeatured img { width: 300px; height: 150px; }
.right300 .featuredScroller .content { height: 190px; }
/* Scroller Items */
.scroller .scrollerItem { display: block; height: 66px; position: relative; over
flow: hidden; text-decoration: none; outline: none; font-size: 12px; }
.scroller .scrollerItem:hover { background-color: #FFFFFF; }
.expandedMode .scrollerItem:hover { background-color: #FFFFFF; }
.featuredScroller .scrollerItem { height: 35px; }
.featuredScroller .scrollerItem .featuredTitle, .featuredScrollerWide .scrollerI
tem .featuredTitle { display: block; font-weight: bold; height: 35px; padding: 0
px 5px; }
.featuredScrollerWide .scrollerItem .featuredTitle { height: 54px; font-size: 14
px; line-height: 24px; padding: 0px 10px; }
.scroller .userScrollerItem { padding: 4px 0px 0px 51px; text-align: center; col
or: #969696; }
.scroller .userScrollerItem img { position: absolute; top: 0px; left: 0px; overf
low: hidden; background: #696969 url(/images/progress_star_dark.gif) no-repeat c
enter center; }
.scroller .userScrollerItem span { display: block; }
.scroller .userScrollerItem span.label { font-size: 14px; color: #000000; }
.scroller .userScrollerItem span.value { font-size: 26px; line-height: 32px; }
.scroller .userScrollerItem span.caption { font-size: 10px; }
.scroller .lowerBar .imgWrap { position: absolute; top: 0px; left: 0px; width: 1
04px; height: 137px; overflow: hidden; }
.scroller .lowerBar:hover .imgWrap { height: 129px; width: 104px; border-bottom:
solid 8px #1EA5ED; }
.scroller .lowerBar img { display: block; position: relative; width: 104px; heig
ht: 137px; }
.expandedMode .userScrollerItem { padding: 0px 0px 0px 104px; height: 137px; bor
der-bottom: 0px; }
.expandedMode .userScrollerItem img { }
.expandedMode .userScrollerItem span.label { margin-top: 24px; }
.expandedMode .userScrollerItem span.value { font-size: 36px; line-height: 50px;
}
.expandedMode .userScrollerItem span.caption {}
.scroller .videoScrollerItem { padding: 2px 0px 0px 92px; }
.scroller .videoScrollerItem span { color: #969696; }
.scroller .videoScrollerItem span.timeAndGrade { display: block; }
.scroller .videoScrollerItem img { position: absolute; top: 0px; left: 0px; back
ground: #696969 no-repeat center center; }
.scroller .videoScrollerItem:hover { text-decoration: underline; }
.scroller .videoScrollerItem:hover span, .scroller .videoScrollerItem:hover .typ
eIconUTS { color: #FFFFFF; text-decoration: none; }
.scroller .videoScrollerItem .typeIconUTS { left: 0px; top: 54px; right: auto; t
ext-decoration: none; }
.expandedMode .videoScrollerItem { margin-bottom: 2px; padding-right: 6px; }
.expandedMode .videoScrollerItem .timeAndGrade { position: absolute; right: 3px;
bottom: 3px; }
.featuredScroller .videoScrollerItem { padding: 105px 0px 0px 0px; }
.featuredScroller .videoScrollerItem span { color: #000000; }
.featuredScroller .videoScrollerItem span.playHover { left: 56px; top: 16px; }
.featuredScroller .videoScrollerItem .largeImage { display: none; }
.featuredScroller .videoScrollerItem:hover span { background-color: #2ABBEF; }
.featuredScroller .videoScrollerItem:hover { text-decoration: none; }
.featuredScrollerWide .smallImage { display: none; }
.featuredScrollerWide .videoScrollerItem { height: 54px; padding: 123px 0px 0px
0px; }
.featuredScrollerWide .videoScrollerItem img { left: 10px; top: 10px; }
.featuredScrollerWide .videoScrollerItem span.playHover { left: 74px; top: 25px;
}
/* End Scroller Items */
/* End Scrollers */
/* Result Scrollers */
.spotlightScroller { padding-bottom: 10px; margin-top: -10px; }
.resultScroller { position: relative; }
.resultScroller .pageControls { background-color: #F5F5F5; border-top: 1px solid
#C4C4C4; margin-top: -1px; z-index: 5; position: relative; height: 25px; paddin
g: 6px 6px 0px 6px; }
.resultScroller .pageControls .showAllResults { display: none; }
.resultScroller .pageControls .hb { height: 20px; width: 141px; position: relati
ve; }
.resultScroller .pageControls .hb .shine span { height: 4px; }
.resultScroller .pageControls .hb .shine span.b1 { height: 1px; }
.resultScroller .pageControls .hb .shine span.b2 { height: 2px; }
.resultScroller .pageControls .hb .shine span.b3 { height: 1px; }
.resultScroller .pageControls .hb a:hover .shine span { height: 5px; }
.resultScroller .pageControls .hb a:hover .shine span.b1 { height: 2px; }
.resultScroller .pageControls .hb a:hover .shine span.b2 { height: 1px; }
.resultScroller .pageControls .hb a:hover .shine span.b3 { height: 1px; }
.resultScroller .pageControls .left { float: left; }
.resultScroller .pageControls .right { float: right; }
.resultScroller .pageControls .scrollArrow { background-image: url(/images/scrol
ler_arrows.gif); background-repeat: no-repeat; background-position: 61px 0px; ov
erflow: hidden; position: absolute; top: 0px; left: 0px; width: 95px; height: 20
px; display: block; }
.resultScroller .pageControls .down .scrollArrow, .resultScroller .pageControls
.downDisabled .scrollArrow { background-image: url(/images/scroller_arrows.gif);
background-repeat: no-repeat; background-position: 61px -20px; }
.resultScroller .pageControls .downDisabled, .resultScroller .pageControls .upDi
sabled, .resultScroller .pageControls .downDisabled:hover, .resultScroller .page
Controls .upDisabled:hover { background-color: #B3B3B3; cursor: default; }
.resultScroller .pageControls .downDisabled span, .resultScroller .pageControls
.upDisabled span { cursor: default; }
.resultScroller .pageControls .downDisabled .shine span, .resultScroller .pageCo
ntrols .upDisabled .shine span, .resultScroller .pageControls .downDisabled:hove
r .shine span, .resultScroller .pageControls .upDisabled:hover .shine span { bac
kground-color: #BDBDBD; }
.resultScroller .pageControls .downDisabled .shine span, .resultScroller .pageCo
ntrols .upDisabled .shine span { height: 6px; }
.resultScroller .pageControls .downDisabled .shine span.b1, .resultScroller .pag
eControls .downDisabled .shine span.b2, .resultScroller .pageControls .downDisab
led .shine span.b3, .resultScroller .pageControls .upDisabled .shine span.b1, .r
esultScroller .pageControls .upDisabled .shine span.b2, .resultScroller .pageCon
trols .upDisabled .shine span.b3 { margin: 0px 2px 0px 2px; height: 1px; }
.resultScroller .progress { background-color: #FFFFFF; border-top: 1px solid #B3
B3B3; margin-top: -1px; z-index: 5; position: relative; height: 31px; padding: 0
px 6px; display: none; }
.resultScroller .progress .progressBar { position: relative; margin: 10px 0px 10
px 0px; }
.resultScroller .pageSummary { background-color: #E3E3E3; color: #000000; font-w
eight: bold; padding: 2px 0px 2px 0px; font-size: 11px; }
.resultScroller .pageSummary span { font-weight: normal; }
.resultScroller .resultItems { text-align: left; background-color: #ffffff; back
ground-image: url(/images/progress_star.gif); background-position: center center
; background-repeat: no-repeat; }
/* Result Items */
.resultScroller .resultItem { display: block; height: 56px; position: relative;
overflow: hidden; background-color: #FFFFFF; text-decoration: none; outline: non
e; border-bottom: 1px solid #C4C4C4; font-size: 12px; line-height: 1.2em; }
.resultScroller .resultItem:hover { background-color: #1EA5ED; color: #FFFFFF; }
.resultScroller .resultItem .resultNumber { display: block; position: absolute;
top: 72px; left: 100px; width: 100px; }
.resultScroller .resultItem .resultNumber b { float: right; height: 16px; line-h
eight: 17px; padding: 0px 2px 0px 4px; }
.resultScroller .active .resultNumber b { font-size: 15px; padding-right: 3px; }
.resultScroller .hideIndex .resultItem .resultNumber { display: none; }
.resultScroller .videoResultItem { padding: 6px 2px 6px 93px; }
.resultScroller .videoResultItem img { position: absolute; top: 0px; left: 0px;
background: #696969 url(/images/progress_star_dark.gif) no-repeat center center;
}
.resultScroller .videoResultItem span.playHover { position: absolute; top: 11px;
left: 1px; display: block; width: 88px; height: 68px; background-image: url(/im
ages/thumb_play_button.png); background-position: 0px 0px; background-repeat: no
-repeat; z-index: 2; cursor: pointer; }
.resultScroller .videoResultItem:hover span.playHover { background-position: -90
px 0px; }
.resultScroller .videoResultItem span.vidIcon { display: none; position: absolut
e; width: 22px; height: 22px; top: 61px; left: 69px; z-index: 3; background-imag
e: url(/images/video_state_corner_icons.png); background-repeat: no-repeat; }
.resultScroller .videoResultItem span.fresh { display: block; background-positio
n: 0px -73px; }
.resultScroller .videoResultItem span.hoc { display: block; background-position:
0px -48px; }
.resultScroller .videoResultItem span.gem { display: block; background-position:
0px -24px; }
.resultScroller .videoResultItem span.recommend { display: block; background-pos
ition: 0px -123px; }
.resultScroller .videoResultItem span.hot { display: block; background-position:
0px -147px; }
.resultScroller .videoResultItem span.rerun { display: block; background-positio
n: 0px 0px; }
.resultScroller .videoResultItem span.fav { display: block; background-position:
0px -98px; }
.resultScroller .videoResultItem span.vidLeftIcon { display: none; width: 30px;
height: 17px; position: absolute; left: 1px; top: 62px; z-index: 3; background-i
mage: url(/images/18plus.png); background-repeat: no-repeat; }
.resultScroller .videoResultItem span.over18 { display: block; }
.resultScroller .stats { color: #969696; }
.resultScroller .resultItem:hover .stats { color: #F5F5F5; }
.resultScroller .wwResultItem { height: 157px; }
.resultScroller .wwResultItem strong { display: block; position: absolute; top:
113px; left: 0px; width: 100%; background-color: #ffffff; color: #217061; font-w
eight: normal; font-size: 16px; line-height: 19px; margin: 0px; padding: 3px; cu
rsor: pointer; opacity: 0.7; -moz-opacity: 0.7; }
.resultScroller .wwResultItem:hover strong { color: #ffffff; background-color: #
000000; }
.resultScroller .wwResultItem .resultNumber { top: 0px; }
.resultScroller .wwResultItem .resultNumber b { visibility: hidden; background-i
mage: none; opacity: 0.7; -moz-opacity: 0.7; }
.resultScroller .wwResultItem:hover .resultNumber b { visibility: visible; backg
round-color: #000000; }
/* End Result Items */
/* End Result Scrollers */
/* Result Header */
.resultHeader .hl, .resultHeader .hlb { text-transform: capitalize; }
.resultHeader .hls { text-transform: none; }
.resultHeader { padding: 0px; margin: 0px; }
/* End Result Header */
/* Horizontal Menu */
.horizontalMenu { padding: 0px; }
.horizontalMenu a, .horizontalMenu span { color: #808080; font-size: 13px; line-
height: 15px; text-decoration: none; display: block; float: left; padding: 0px 7
px 0px 7px; }
.horizontalMenu span { cursor: default; }
/*.horizontalMenu a { border-left: 1px solid #B3B3B3; }*/
.horizontalMenu a.firstItem { border-left: 0px; }
.horizontalMenu a:hover, .horizontalMenu a.active { color: #F61914; }
/* End Horizontal Menu */
/* Refine */
.refine { margin-right: -10px; }
.refine h3, .refine h4, .refine h5 { font-size: 20px; line-height: 19px; height:
28px; display: block; color: #A9A9A9; font-weight: bold; margin: 0; padding: 0;
cursor: default; }
.refine ul { margin: 0px; padding: 0 0 20px 0; font-size: 11px; position: relati
ve; }
.refine li { white-space: nowrap; list-style: none; position: relative; line-hei
ght: 10px; }
.refine li.label { padding: 6px 3px 0px 3px; color: #969696; cursor: default; wh
ite-space: normal; font-size: 10px; }
.refine li.bio { white-space: normal; }
.refine a, .refine strong { padding-left: 3px; display: block; height: 15px; lin
e-height: 15px; }
.refine a:hover { background-color: #2ABBEF; color: #FFFFFF; text-decoration: no
ne; }
.refine a.sa, .refine li.any a { display: inline; font-weight: normal; }
.refine a.sa:hover, .refine li.any a:hover { background-color: transparent; colo
r: #2ABBEF; text-decoration: underline; }
.refine strong { cursor: default; background-color: #2ABBEF; color: #FFFFFF; hei
ght: 17px; line-height: 17px; font-weight: normal; }
.refine a span { display: none; position: absolute; right: 3px; top: -23px; back
ground: url(/images/tip_bubble_small.gif) no-repeat; width: 41px; height: 22px;
line-height: 18px; text-align: center; font-weight: normal; }
.refine a:hover span { display: block; }
.refine a span.private { display: block; width: 20px; height: 13px; top: 0px; ba
ckground: url(/images/arrow_tip_white.gif) no-repeat -118px -6px; }
.refine a:hover span.private { background-position: -68px -6px }
.refine li.any { position: absolute; top: -18px; right: 6px; }
.refine li.any a { padding: 0px; }
/* End Refine */
/* Browse/TopSearches Menus */
.browseMenu, .topSearches { position: absolute; top: 151px; z-index: 100; width:
196px; overflow: hidden; margin-top: 0px; border-left: 2px solid #000000; borde
r-right: 2px solid #000000; border-bottom: 2px solid #000000; }
.browseMenu ul, .topSearches ul { border-bottom: 0px; }
.browseMenu ul { padding-top: 2px; }
.browseMenu { left: 0px; width: 170px; }
.browseMenu ul li a { border-bottom: 1px solid #ffffff; }
.browseMenu ul li a, .browseMenu ul li a span { border-top: 0px; font-size: 10px
; height: 13px; line-height: 13px; }
.browseMenu ul li a span { width: 23px; }
.topSearches { left: 722px; }
.topSearches .heading { height: 20px; }
.topSearches ul li.active a { background: #ffffff; color: #000000; cursor: defau
lt; }
.topSearches ul li.active a span { display: none; right: 4px; }
.topSearches ul li.active ul li a { cursor: pointer; }
.topSearches ul li.active ul li a:hover span { display: block; background-color:
#3C3B39; }
.topSearches ul li.active ul { margin-left: 0px; border-left: 15px solid #E8E8E8
; }
.topSearches ul li ul li a { border-top: 1px solid #E8E8E8; }
.topSearches .heading { overflow: hidden; font-size: 1px; height: 1px; }
/* End Browse/TopSearches Menus */
/* Sorting And Paging */
.sap { position: relative; zoom: 1; }
.sap .headbar h4, .sap .headbar h6 { border-bottom-width: 2px; }
.sap .headbar h6 { font-size: 17px; line-height: 18px; }
.sap .headbar h6 span { font-size: 12px; color: #969696; }
.sap .headbar h6 a { color: #696969; }
.sap .headbar h6 a:hover, .sap .headbar h6 a:hover span { color: #2ABBEF; text-d
ecoration: none; }
.bm .headbar h1, .bm .headbar h2, .bm .headbar h3, .bm .headbar h4 { border-bott
om-width: 0px; border-top: 1px solid #E6E3E3; padding-bottom: 20px; padding-top:
5px; }
.pageNumbers { font-size: 14px; position: absolute; top: 7px; right: 0px; color:
#696969; cursor: default; }
.bm .pageNumbers { top: 8px; }
.pageNumbers a { cursor: pointer; }
.pageNumbers a, .pageNumbers strong { padding: 3px; color: #696969; }
.pageNumbers strong, .pageNumbers a:hover { color: #2ABBEF; }
.pageNumbers .pageNavButton { padding: 0px; width: 12px; height: 12px; margin-bo
ttom: -1px; overflow: hidden; background-image: url(/images/arrows12.gif); backg
round-repeat: no-repeat; }
.pageNumbers a .next { background-position: -12px -24px; }
.pageNumbers a .previous { background-position: 0px -24px; }
.pageNumbers a:hover .next { background-position: -12px 0px; }
.pageNumbers a:hover .previous { background-position: 0px 0px; }
.pageNumbers .nextDisabled { background-position: -12px -12px; visibility: hidde
n; }
.pageNumbers .previousDisabled { background-position: 0px -12px; visibility: hid
den; }
.olderIssues { right: auto; left: 6px; }
.olderIssues a { padding-left: 18px; }
.newerIssues a { padding-right: 18px; }
.olderIssues a i, .newerIssues a i { position: absolute; top: 0px; display: bloc
k; padding: 0px; width: 12px; height: 12px; margin-bottom: -2px; overflow: hidde
n; background-image: url(/images/arrows12.gif); background-repeat: no-repeat;}
.newerIssues a.next i { right: 0px; background-position: -12px -24px; }
.olderIssues a.previous i { left: 0px; background-position: 0px -24px; }
.newerIssues a:hover.next i { background-position: -12px 0px; }
.olderIssues a:hover.previous i { background-position: 0px 0px; }
.sortingResultHeader { margin-bottom: 5px; }
.sortingResultHeader .headerText { padding-bottom: 3px; }
.sortingResultHeader .headerText span { height: 25px; padding-left: 10px; font-s
ize: 16px; line-height: 25px; color: #666666; }
.sortingResultHeader .sortingBar { display: block; height: 22px; zoom: 1; }
.sortingResultHeader .sortingBar a { display: block; height: 22px; float: left;
background-image: url(/images/middle_nav_bar.png); outline: none; }
.sortingResultHeader .sortingBar a.sortIndex0, .sortingResultHeader .sortingBar
a.sortIndex5 { width: 110px; }
.sortingResultHeader .sortingBar a.sortIndex1, .sortingResultHeader .sortingBar
a.sortIndex2, .sortingResultHeader .sortingBar a.sortIndex3, .sortingResultHeade
r .sortingBar a.sortIndex4 { width: 111px; }
/* End Sorting And Paging */

/* Safe Search */
.searchToggle { position: relative; display: block; margin: -15px 0 15px; font-s
ize: 11px; color: #CACACA; }
.searchToggle span.safeSearch { color: #2ABBEF; }
/* End Safe Search */

/* Conversation Summary */
.conversationSummary { position:relative; margin-top: 10px; font-size: 14px; pad
ding: 3px 0px 10px 0px; border-bottom: 1px solid #808080; z-index: 6; zoom: 1; }
.conversationSummary.bottomMode { border-bottom: 0px; border-top: 1px solid #808
080; padding-top: 10px; margin-top: 0px; z-index: 5; top: -1px; }
.conversationSummary .left { float: left; width: auto; margin-right: 10px; font-
size: 16px; }
.conversationSummary .right { float: right; width: auto; margin-left: 10px; }
.conversationSummary .right a { font-size: 11px; color: #808080; line-height: 18
px; }
.conversationSummary .right a:hover { color: #398FC0; }
.conversationSummary input { font-size: 11px; }
/* End Conversation Summary */
/* Roll-Over Drop-Downs */
.selectList { position: absolute; height: 14px; width: 200px; top: 0px; left: 0p
x; z-index: 6; text-align: left; font-size: 12px; }
.selectList div, .selectList span { position: relative; top: 0px; float: left; p
adding: 0Spx; }
.selectList div { cursor: default; }
.selectList span a { text-decoration: none; display: none; color: #4D4D4D; zoom:
1; }
.selectList span a:hover { color: #F61914; text-decoration: none; }
.selectList span a.selected { display: block; text-decoration: none; color: #F61
914; }
.selectList span:hover, .selectList span.hover { border: 1px solid #808080; back
ground-color: #FFFFFF; padding: 2px; }
.selectList span:hover a, .selectList span.hover a { display: block; }
.selectList.sortBy { left: 0px; }
.selectList.showPerPage { left: 420px; }
.playlistMode .selectList.showPerPage { left:630px; }
.showPerPage span a.selected { color: #398FC0; } /* 4D4D4D */
/* Overrides for Search Results */
.searchMode .sapCenter .selectList, .exploreList .sapCenter .selectList { width:
120px; float: right; left: 0px; }
.expandedBottomMode { border-bottom: 0px; }
.expandedBottomMode .sapCenter { height: 30px; }
.expandedBottomMode .sapCenter .combinedControlLeft { position: relative; float:
left; font-size: 12px; text-align: left; }
.expandedBottomMode .sapCenter .combinedControlLeft .resultSummary { padding-bot
tom: 5px; }
.expandedBottomMode .sapCenter .combinedControlLeft .widgetLink { white-space: n
owrap; }
.expandedBottomMode .sapCenter .combinedControlLeft .widgetLink a { position: re
lative; line-height: 12px; text-decoration: none; }
.expandedBottomMode .sapCenter .combinedControl { position: relative; width: 150
px; height: 30px; float: right; padding-right: 2px; text-align: right; }
.expandedBottomMode .sapCenter .combinedControl .selectList { position: absolute
; width: auto; float: none; left: 0px; }
.expandedBottomMode .sapCenter .combinedControl .selectList span a.selected { co
lor: #398FC0; }
.expandedBottomMode .sapCenter .combinedControl .showPerPage { top: 0px; z-index
: 3; }
.expandedBottomMode .sapCenter .combinedControl .sortBy { width: 148px; }
.expandedBottomMode .sapCenter .combinedControl .sortBy, .expandedBottomMode .sa
pCenter .combinedControlLeft .widgetLink { top: 20px; z-index: 2; }
.expandedBottomMode .blogStyle a { position: relative; text-decoration: none; fo
nt-size: 16px; margin-top: 5px; }
.expandedBottomMode .blogStyle a:hover { text-decoration: underline; }
.expandedBottomMode .blogStyle a .arrow { display: block; width: 10px; height: 1
4px; overflow: hidden; background-image: url(/images/page_button_arrows.gif); ba
ckground-repeat: no-repeat; }
.expandedBottomMode .blogStyle .older, .expandedBottomMode .blogStyle .older .ar
row { float: left; }
.expandedBottomMode .blogStyle .newer, .expandedBottomMode .blogStyle .newer .ar
row { float: right; }
.expandedBottomMode .blogStyle .older .arrow { margin: 3px 5px 0px 10px; backgro
und-position: 0px 0px; }
.expandedBottomMode .blogStyle .newer .arrow { margin: 3px 10px 0px 5px; backgro
und-position: -10px 0px; }
.expandedBottomMode .blogStyle a.older:hover .arrow { background-position: 0px -
14px; }
.expandedBottomMode .blogStyle a.newer:hover .arrow { background-position: -10px
-14px; }
/* End Roll-Over Drop-Downs */
/* Video/User/Playlist Controls */
.video, .user, .playlist, .message, .article { font-size: 12px; margin-top: 5px;
color: #4D4D4D; }
.video .left, .user .left, .playlist .left, .message .left, .message .middle, .a
rticle .left { float: left; }
.user .right, .playlist .right, .message .right { float: right; position: relati
ve; padding-bottom: 15px; border-bottom: 1px solid #808080; }
.video, .article { position: relative; border-bottom: dashed 1px #C6C6C6; paddin
g-bottom: 10px; zoom: 1; }
.lastItem { border-bottom: 0px; }
.video .left { width: 102px; float: left; padding-bottom: 3px; }
.video .right { width: 135px; float: right; padding-left: 3px; padding-top: 0px;
}
.user .left { width: 65px; }
.user .right { width: 474px; }
.playlist .left { width: 202px; padding: 10px 0px 10px 0px; }
.playlist .right { width: 542px; }
.message .left { width: 65px; }
.message .middle { width: 100px; margin: 10px; overflow: hidden; }
.message .right { width: 344px; padding-right: 10px; min-height: 80px; padding-b
ottom: 10px; }
.user h2, .playlist h2, .message h2, .article h2 { font-size: 14pt; font-weight:
normal; margin: 2px 0px 5px 0px; padding: 0px 100px 0px 0px; }
.video h2 strong, .user h2 strong, .playlist h2 strong, .article h2 strong { bor
der-bottom: 1px solid #398FC0; }
.video p strong, .user p strong, .playlist p strong, .article p strong { color:
#000000; }
.user .location { margin-top: -3px; margin-bottom: 10px; font-size: 14px; }
.video .timeAndGrade { position: relative; top: 0px; left: 0px; width: 92px; lin
e-height: 20px; margin: 5px; font-size: 12px; color: #000000; vertical-align: mi
ddle; cursor: default; }
.video .userGradedHigher { color: #5B8C1E; }
.video .userGradedLower { color: #F61914; }
.video .communityGraded { color: #B3B3B3; font-weight: normal; }
.video .videoStats { width: 135px; overflow: hidden; padding-top: 2px; }
.video .videoInfo { padding-left: 112px; padding-top: 3px; }
.video .videoInfo h2 { line-height: 19px; font-size: 12pt; margin: 0px 0px 5px 0
px; padding: 0px; }
.video .videoInfo h2 a { text-decoration: none; font-family: century gothic, ari
al, sans-serif; color: #006AAA; }
.video .videoInfo h2 a:hover { text-decoration: underline; }
.video .videoProperty, .user .userProperty { float: left; width: 100px; overflow
: visible; white-space: nowrap; }
.video .videoProperty span, .user .userProperty span { font-size: 11px; }
.video .videoProperty span.label, .user .userProperty span.label { color: #80808
0; }
.article .left { width: 120px; float: left; padding-bottom: 3px; }
.article .right { width: 135px; float: right; padding-left: 3px; padding-top: 0p
x; }
.article .timeAndGrade { position: relative; top: 0px; left: 0px; width: 92px; l
ine-height: 20px; margin: 5px; font-size: 12px; color: #000000; vertical-align:
middle; cursor: default; }
.article .userGradedHigher { color: #5B8C1E; }
.article .userGradedLower { color: #F61914; }
.article .communityGraded { color: #B3B3B3; font-weight: normal; }
.article .articleStats { width: 135px; overflow: hidden; padding-top: 2px; }
.article .articleInfo { padding-left: 112px; padding-top: 3px; }
.article .articleInfo h2 { line-height: 19px; font-size: 12pt; margin: 0px 0px 5
px 0px; padding: 0px; }
.article .articleInfo h2 a { text-decoration: none; font-family: century gothic,
arial, sans-serif; color: #006AAA; }
.article .articleInfo h2 a:hover { text-decoration: underline; }
.article .articleProperty, .user .userProperty { float: left; width: 100px; over
flow: visible; white-space: nowrap; }
.article .articleProperty span, .user .userProperty span { font-size: 11px; }
.article .articleProperty span.label, .user .userProperty span.label { color: #8
08080; }
.articleThumbnail { background-color: #FFFFFF; margin: 5px; overflow: visible; p
osition: relative; }
.articleThumbnail a { text-decoration: none; display: block; overflow: hidden; }
.articleThumbnail a img { border: 1px solid #CCCCCC; }
.articleThumbnail, .articleThumbnail a { width: 110px; height: 70px; }
.articleThumbnail a img { width: 88px; height: 68px; }
.articleThumbnail a span { position: absolute; top: 0px; left: 0px; display: blo
ck; width: 110px; height: 70px; z-index: 2; background-image: url(/images/articl
e_icon_hover.png); background-repeat: no-repeat; background-position: 0px 0px; c
ursor: pointer; }
.articleThumbnail a:hover span { background-position: 0px -70px; }
.articleThumbnail a span.txtLeftIcon, .articleThumbnail a:hover span.txtLeftIcon
{ display: none; width: 30px; height: 17px; position: absolute; left: 0px; top:
55px; z-index: 3; background-image: url(/images/18plus.png); background-repeat:
no-repeat; background-position: 0px 0px; }
.articleThumbnail a span.over18, .articleThumbnail a:hover span.over18 { display
: block; background-position: 0px 0px; }
.articleThumbnail a span.articleIcon { background-image: url(/images/article_ico
n.gif); width: 21px; left: 89px; }
.matureContent { color: #F61914; font-size: 10px; text-align: center; }
.timeAndGrade .gradeRight { float: right; width: 16px; text-align: right; font-w
eight: bold; color: #000000; }#006AAA
.timeAndGrade .userGraded { color: #5B8C1E; }
.timeAndGrade .userGradedHigher { color: #5B8C1E; }
.timeAndGrade .userGradedLower { color: #F61914; }
.timeAndGrade .timeLeft { float: left; text-align: left; }
.timeAndGrade .hotDelta { display: none; position: absolute; padding-left: 13px;
left: 38px; width: 23px; background-image: url(/images/hot_barometer.gif); }
.timeAndGrade .deltaUp { display: block; background-position: 0px 0px; color: #F
61914; }
.timeAndGrade .deltaDown { display: block; background-position: -103px 0px; colo
r: #1A9EBF; }
.timeAndGrade .communityGraded { display: block; background-image: none; color:
#B3B3B3; font-weight: normal; padding-left: 8px; }
.timeAndGrade .recommendVote { position: relative; display: block; background-im
age: none; color: #808080; font-weight: normal; left: -15px; top: 0px; width: au
to; line-height: 15px; text-align: center; font-size: 10px; white-space: nowrap;
}
.timeAndGrade .recommendVote a { color: #398FC0; text-decoration: none; }
.timeAndGrade .recommendVote a:hover { color: #BB2220; text-decoration: underlin
e; }
.timeAndGrade .recommendVote a.votetrue:hover { color: #398FC0; }
.timeAndGrade .videoGrade { display: block; position: relative; width: 18px; hei
ght: 15px; background-image: url(/images/vide_grades_small.png); background-repe
at: no-repeat; zoom: 1; padding: 0px; margin-top: 3px; }
.timeAndGrade .communityVideoGrade { float: right; left: 0px; margin-right: 15px
; }
.playlist .left .playlistThumbnail { border: 1px solid #808080; }
.playlist h2 { margin-top: 10px; }
.playlist p { height: 114px; }
.playlist p span { color: #808080; }
.playlist .playlistInfo { float: right; width: 150px; margin: 10px 0px 0px 10px;
padding: 0px 0px 5px 10px; border-left: 1px solid #B3B3B3; color: #B3B3B3; font
-size: 11px; line-height: 12px; }
.playlist .playlistInfo img { float: left; margin: 5px 10px 10px 0px; border: 1p
x solid #808080; }
.playlist .playlistInfo div, .playlist .playlistInfo span { color: #808080; font
-weight: bold; }
.playlist .playlistInfo div.playlistPrivateLink { margin-top: 5px; font-weight:
normal; }
.playlist .playlistInfo div.playlistPrivateLink a { padding-left: 10px; }
.actionPlaylistPublic { padding-left: 12px; background: url(/images/arrow_tip.gi
f) no-repeat -125px center;}
.playlist .playlistSubscriptionLink { float: left; }
.playlist .playlistDeleteLink { float: right; }
.playlist.playlistHeader { padding: 0px; margin: 0px 0px 10px 0px; }
.playlist.playlistHeader .left { padding: 0px; margin: 0px; width: 200px; }
.playlist.playlistHeader .right { padding: 0px; margin: 0px; border: 0px; width:
773px; }
.playlistHeader h1 { padding: 5px 0px 0px 0px; margin: 0px; height: 35px; font-s
ize: 28px; text-decoration: none; padding-left: 30px; color: #ffffff; font-weigh
t: bold; overflow: hidden; }
.playlist .playlistSummary { height: 150px; overflow: hidden; }
.playlist .playlistSummary .left .playlistThumbnail { border: 0px; }
.playlist.playlistHeader p { font-size: 14px; margin: 10px 180px 10px 20px; heig
ht: 108px; color: #4D4D4D; }
.playlist.playlistHeader .playlistSubscriptionLink { margin-left: 20px; }
p#videoDescription { font-size: 14px; padding: 0px 10px; color: #4D4D4D; }
.reminder { margin-top: 10px; padding: 10px; border: 1px solid #808080; backgrou
nd-color: #F5F5F5; color: #4D4D4D; }
.reminder h4 { margin: 0px 0px 5px 0px; font-size: 15px; }
.reminder p { margin: 0px; font-size: 12px; }
.videoThumbnail, .userThumbnail { padding: 3px; border: 1px solid #B3B3B3; backg
round-color: #FFFFFF; margin: 5px; overflow: visible; position: relative; }
.videoThumbnail a, .userThumbnail a { text-decoration: none; display: block; ove
rflow: hidden; }
.videoThumbnail a img, .userThumbnail a img { border: 1px solid #808080; }
.videoThumbnail, .videoThumbnail a { width: 90px; height: 70px; }
.videoThumbnail a img { width: 88px; height: 68px; }
.videoThumbnail a span { position: absolute; top: 4px; left: 4px; display: block
; width: 88px; height: 68px; z-index: 2; background-image: url(/images/thumb_pla
y_button.png); background-repeat: no-repeat; background-position: 0px 0px; curso
r: pointer; }
.videoThumbnail a:hover span { background-position: -90px 0px; }
.videoThumbnail a span.vidIcon { display: none; width: 22px; height: 22px; posit
ion: absolute; left:77px; /*73px;*/ top:58px; /*50px;*/ z-index: 3; background-
image:url(/images/video_state_corner_icons.png); background-repeat: no-repeat; }
.videoThumbnail a span.fresh, .videoThumbnail a:hover span.fresh { display: bloc
k; background-position: 0px -73px; }
.videoThumbnail a span.hoc, .videoThumbnail a:hover span.hoc { display: block; b
ackground-position: 0px -48px; }
.videoThumbnail a span.gem, .videoThumbnail a:hover span.gem { display: block; b
ackground-position: 0px -24px; }
.videoThumbnail a span.recommend, .videoThumbnail a:hover span.recommend { displ
ay: block; background-position: 0px -123px; }
.videoThumbnail a span.hot, .videoThumbnail a:hover span.hot { display: block; b
ackground-position: 0px -147px; }
.videoThumbnail a span.rerun, .videoThumbnail a:hover span.rerun { display: bloc
k; background-position: 0px 0px; }
.videoThumbnail a span.fav, .videoThumbnail a:hover span.fav { display: block; b
ackground-position: 0px -98px; }
.videoThumbnail a span.vidLeftIcon, .videoThumbnail a:hover span.vidLeftIcon { d
isplay: none; width: 30px; height: 17px; position: absolute; left: 0px; top: 59p
x; z-index: 3; background-image: url(/images/18plus.png); background-repeat: no-
repeat; background-position: 0px 0px; }
.videoThumbnail a span.over18, .videoThumbnail a:hover span.over18 { display: bl
ock; background-position: 0px 0px; }
.userThumbnail, .userThumbnail a { width: 53px; height: 70px; }
.userThumbnail a img { width: 51px; height: 68px; }
.playlistThumbnail { width: 200px; height: 150px; overflow: hidden; position: re
lative; }
.playlistThumbnail a { text-decoration: none; zoom: 1; }
.playlistThumbnail img { display: block; float: left; margin: 0; }
.playlistThumbnail a span { display: none; width: 100%; position: absolute; top:
60px; left: 0px; padding: 10px 0px; background-color: #ffffff; text-decoration:
underline; cursor: pointer; text-align: center; z-index: 3; opacity: 0.9; -moz-
opacity: 0.9; }
.playlistThumbnail a:hover span { display: block; }
.playlist .left .playlistThumbnail a span, .relatedPlaylist .playlistThumbnail a
span, .playlistMode .content .playlistImages a span, .playlistModeExpandedMode
.content .playlistImages a span { display: none; width: 58px; height: 58px; posi
tion: absolute; top: 21px; left: 71px; padding: 0px; cursor: pointer; background
-image:url(/images/rollover_play_button.png); }
.playlist .left .playlistThumbnail a:hover span, .relatedPlaylist .playlistThumb
nail a:hover span, .playlistMode .content .playlistImages a:hover span, .playlis
tModeExpandedMode .content .playlistImages a:hover span { display: block; }
.playlist .left .playlistThumbnail a span, .relatedPlaylist .playlistThumbnail a
span { top: 45px; background-color: transparent; }
.playlist .left .playlistThumbnail a span { opacity: 1; -moz-opacity: 1; }
/* End Video/User/Playlist Controls */
/* Mini Profile */
.miniProfile { background-color: #FFFFFF; font-size: 12px; color: #4D4D4D; heigh
t: 254px; position: relative; overflow: hidden; }
.miniProfile .welcomeNote { font-size: 15px; padding-bottom: 5px; }
.miniProfile h2 { font-weight: normal; margin: 10px 0px 5px 0px; font-size: 14px
; }
.miniProfile ul { margin-top: 0px; margin-bottom: 0px; font-size: 14px; color: #
808080; }
.miniProfile .profileInfo { padding: 10px 10px 10px 157px; }
.miniProfile .profileInfo h1 { margin: 0px; font-weight: normal; font-size: 20px
; color: #000000; }
.miniProfile .profileInfo img { position: absolute; width: 135px; height: 180px;
top: 0px; left: 0px; background: #696969 url(/images/progress_star_dark.gif) no
-repeat center center; }
.miniProfile .profileInfo .location { margin: -2px 0px 10px 0px; font-size: 15px
; }
.miniProfile .profileInfo .pLabel { float: left; color: #808080; }
.miniProfile .profileInfo .pValue { padding-left: 100px; }
.miniProfile .profileStats { position: absolute; left: 0px; top: 200px; color: #
E2E2E1; width: 100%; font-size: 11px; text-align: center; cursor: default; }
.miniProfile .profileStats .statsRow { background-color: #2ABBEF; margin-bottom:
3px; height: 16px; line-height: 15px; }
.miniProfile .profileStats .statsRow a { color: #F5F5F5; cursor: pointer; }
.miniProfile .profileStats .statsRow strong { margin-right: 5px; color: #FFFFFF;
}
.miniProfile .profileControls { position: absolute; left: 0px; top: 183px; width
: 100%; font-size: 10px; line-height: 13px; }
.miniProfile .profileControls .right { float: right; margin-right: 10px; }
.miniProfile .profileControls .left { float: left; margin-left: 6px; }
.miniProfile .profileControls .mailLink { padding-left: 17px; background: url(/i
mages/icon_message_status.gif) no-repeat 0px -2px; }
.miniProfile .profileControls .loginLink, .miniProfile .profileControls .signupL
ink { float: left; display: block; font-size: 18px; color: #000000; margin: 24px
0px 0px 40px; width: 100px; border: 1px solid #C79828; background-color: #FFD26
6; padding: 5px 20px; text-align: center; }
.miniProfile .profileControls .loginLink:hover, .miniProfile .profileControls .s
ignupLink:hover { color: #398FC0; background-color: #ffffff; border: 1px solid #
808080; }
.miniProfile .profileControls .loginLink {}
.miniProfile .profileControls .signupLink {}
.profileNotification { width: 158px; margin-top: 6px; line-height: 24px; backgro
und-color: #FFD266; border: 1px solid #C79828; text-align: center; font-size: 14
px; }
.profileNotification a { color: #000000; }
.profileNotification a:hover { color: #398FC0; }
/* End Mini Profile */
/* Video Embed */
.videoView { font-size: 13px; color: #666666; }
h1.videoTitle { height: 28px; padding-top: 8px; background-color: #F5F5F5; font-
size: 17px; text-align: center; margin: 0px -10px 10px -10px; overflow: hidden;
}
.videoEmbed { background-color: #000000; }
.videoEmbed, .launchExternal, .videoMature { text-align: center; }
.videoEmbed .embedTag { margin: 0px auto; text-align: center; background-color:
#000000; }
.videoEmbed .embedTag object, .videoEmbed .embedTag embed { margin: 0px auto 0px
auto; }
.matureNote { border-left: 4px solid #ED241F; border-right: 4px solid #ED241F; b
ackground-color: #000000; color: #808080; text-align: left; padding: 40px 20px 6
0px 20px; }
.matureNote h3 { margin: 0px 0px 40px 0px; font-size: 28px; font-weight: normal;
color:#D4D4D4; }
.matureNote div { margin-top: 20px; }
.videoMature a.darkBG { color: #2ABBEF; text-decoration: none; }
.videoMature a.darkBG:hover { text-decoration: underline; }
.launchExternalVid { padding: 30px; background-color: #262626; }
.launchExternalVid a { display: block; position: relative; overflow: hidden; pad
ding-top: 180px; height: 82px; margin: 0px auto 0px auto; color: #969696; text-d
ecoration: none; }
.launchExternalVid a span { display: block; position: absolute; top: 56px; left:
231px; width: 120px; height: 120px; background-image: url(/images/bigplay.png);
background-repeat: no-repeat; background-position: 0px 0px; cursor: pointer; }
.launchExternalVid a:hover span { background-position: 0px -116px; }
.sequence { margin: 10px; cursor: default; text-decoration: none; }
.sequence a { text-decoration: none; }
.sequence span, .sequence a span { position: relative; display: block; width: 68
px; height: 22px; margin: 3px; float: left; color: #8C8C8C; font-size: 11px; fon
t-weight: bold; line-height: 22px; text-decoration: none; text-align: center; ba
ckground-image: url(/images/video_parts.gif); background-position: 0px 1px; }
.sequence span { cursor: default; }
.sequence a span { background-position: 0px -47px; cursor: pointer; }
.sequence a:hover span { color: #164979; background-position: 0px -23px; }
.sequence span.selected { color: #FFFFFF; }
.originalVideoLink { text-align: center; font-size: 12px; margin-top: 10px; }
.videoView .recommendVote { padding: 0px 10px 10px 10px; text-align: center; }
.videoView .recommendVote strong { color: #FF9607; }
.videoView .recommendVote a { color: #398FC0; text-decoration: none; }
.videoView .recommendVote a:hover { color: #BB2220; text-decoration: underline;
}
.videoView .recommendVote a.votetrue:hover { color: #398FC0; }
.embedCode { position: relative; background-color: #E3E6E3; }
.embedCode .embedButton { padding: 5px 5px 0 0; float: right; }
.embedCode .embedSettings { padding: 0 0 0 5px; height: 0px; text-align: right;
font-size: 10px; line-height: 13px; overflow: hidden; display: none; }
.embedCode .embedSettings .left { float: left; }
.embedCode .embedSettings #txtEmbedCode { border: 1px solid #B3BFC2; width: 300p
x; height: 14px; font-size: 10px; line-height: 13px; }
/* End Video Embed */
/* Video Parts */
.simpleVideoParts { height: 26px; line-height: 26px; font-size: 11px; color: #69
6969; }
.simpleVideoParts strong { color: #000000; }
.simpleVideoParts .status { float: left; width: auto; cursor: default; }
.simpleVideoParts .parts { padding: 0 6px; }
.simpleVideoParts .parts a, .simpleVideoParts .parts span { float: left; display
: block; width: 26px; height: 26px; text-align: center; }
.simpleVideoParts .parts a:hover, .simpleVideoParts .parts span.selected { color
: #FFFFFF; background-color: #1EA5ED; text-decoration: none; }
.simpleVideoParts .parts .prev .icon, .simpleVideoParts .parts .next .icon { bac
kground-image: url(/images/arrows12.gif); width: 12px; height: 12px; margin-top:
7px; background-repeat: no-repeat; }
.simpleVideoParts .parts .prev .icon { background-position: 0px 0px; margin-left
: 6px; }
.simpleVideoParts .parts a.prev:hover .icon { background-position: 0px -12px; }
.simpleVideoParts .parts .prevDisabled .icon { background-position: 0px -24px; }
.simpleVideoParts .parts .next .icon { background-position: -12px 0px; margin-le
ft: 8px; }
.simpleVideoParts .parts a.next:hover .icon { background-position: -12px -12px;
}
.simpleVideoParts .parts .nextDisabled .icon { background-position: -12px -24px;
}
/* End Video Parts */
/* Tabs (not TaGs) */
.tab { position: relative; zoom: 1; }
.tab .hideTab { float: right; color: #1A9EBF; padding-top: 3px; font-size: 12px;
text-decoration: underline; outline: none; margin-top: 11px; }
.tab .tabTitle { position: relative; display: block; width: 96px; height: 22px;
top: 1px; float: left; margin: 10px 3px 0px 3px; font-size: 12px; line-height: 2
2px; text-align: center; background-image: url(/images/page_tabs_sm.gif); backgr
ound-position: 0px -23px; }
.tab .active { background-position: 0px 0px; font-weight: bold; cursor: default;
}
.tab .active a { cursor: default; }
.tab .tabTitle a { display: block; color: #000000; text-decoration: none; outlin
e: none; cursor: pointer; }
.tab .tabTitle a span { cursor: pointer; }
.tab .tabContent { padding-top: 5px; background: url(/images/ramp_light_blue.gif
) repeat-x top; border-top: solid 1px #D0D0D0; }
/* End Tabs */
/* Tags */
.videoTags { padding: 0px 10px 5px 10px; font-size: 13px; }
.videoTags .tagList { font-weight: bold; padding: 0px; margin: 0px; }
.videoTags .label { float: left; }
.videoTags .tag { font-weight: normal; border-right: 1px solid #D9D9D9; padding:
0px 8px 0px 7px; font-size: 12px; line-height: 17px; height: 16px; float: left;
display: block; position: relative; width: auto; overflow: hidden; }
.videoTags .last { border-right: 0px; }
.videoTags a { color: #398FC0; text-decoration: none; }
.videoTags a:hover { text-decoration: underline; }
.videoTags .tag .tagVote { display: none; width: 35px; height: 16px; }
.videoTags .showVoting { padding-right: 42px; }
.videoTags .showVoting .tagVote { display: block; }
.videoTags .tag .tagVote a { background-image: url(/images/vote_up_down.gif); di
splay: block; height: 16px; background-repeat: no-repeat; position: absolute; to
p: 1px; }
.videoTags .tag .tagVote a.voteUp { background-position: 0px 0px; width: 18px; r
ight: 27px; }
.videoTags .tag .tagVote a.voteUp:hover { background-position: 0px -18px; }
.videoTags .tag .tagVote a.voteUpDisabled { background-position: 0px -36px; widt
h: 18px; right: 27px; }
.videoTags .tag .tagVote a.voteDown { background-position: -18px 0px; width: 17p
x; right: 10px; }
.videoTags .tag .tagVote a.voteDown:hover { background-position: -18px -18px; }
.videoTags .tag .tagVote a.voteDownDisabled { background-position: -18px -36px;
width: 17px; right: 10px; }
/* End Tags */
/* Container */
.container { margin-top: 10px; }
.container .containerTop { color: #ffffff; height: 20px; padding: 5px 20px 0px 1
0px; font-size: 11px; cursor: pointer; overflow: hidden; background-image: url(/
images/container_arrow.gif); background-repeat: no-repeat; overflow: hidden; tex
t-align: left; }
.container .containerTop h2 { margin: 0px; text-transform: uppercase; font-size:
16px; line-height: 14px; }
.container .containerTop a { display: none; }
.container .containerContents { padding: 10px; color: #000000; font-size: 13px;
background-color: #F5F5F5; border-right: 1px solid #808080; border-left: 1px sol
id #808080; border-bottom: 1px solid #808080; position: relative; }
.container.closed .containerTop { background-color: #B3B3B3; background-position
: right -5px; }
.container.closed .containerContents { display: none; }
.container.closed .containerTop a { display: inline; float: right; font-size: 13
px; margin: 0px 15px 0px 0px; }
.container .containerTop { background-position: right -59px; }
.container .containerTop, .container.closed:hover .containerTop, .container.clos
ed.hover .containerTop { background-color: #808080; }
.container.closed:hover .containerTop a, .container.closed.hover .containerTop a
{ color: #ffffff; }
.container a.removeFromPlaylist { display: block; color: #ffffff; height: 20px;
padding: 5px 20px 0px 10px; margin-top: 10px; text-transform: uppercase; font-si
ze: 16px; line-height: 14px; cursor: pointer; overflow: hidden; background-image
: url(/images/container_arrow.gif); background-repeat: no-repeat; overflow: hidd
en; text-align: left; background-color: #8C5DA5; font-weight: bold; background-p
osition: right -5px; text-decoration: none; }
.container a.removeFromPlaylist:hover { background-color: #6F348E; }
.addToPlaylist .container .containerTop { height: 20px; background-position: rig
ht -59px; }
.addToPlaylist .container.closed .containerTop { background-position: right -5px
; }
.addToPlaylist .container .containerContents { padding: 0px; border-bottom: 0px;
text-align: left; overflow: hidden; }
.addToPlaylist .container .containerContents a { display: block; text-indent: 10
px; font-size: 11px; padding: 2px 0px; color: #000000; text-decoration: none; bo
rder-bottom: 1px solid #6F348E; }
.addToPlaylist .container .containerContents a:hover { background-color: #ffffff
; color: #000000; font-weight: bold; background-image: url(/images/playlist_roll
over.gif); background-position: right center; background-repeat: no-repeat; }
.addToPlaylist .container .containerContents { background-color: #F1EBF4; border
-right: 1px solid #6F348E; border-left: 1px solid #6F348E; border-bottom: 1px so
lid #6F348E; }
.addToPlaylist .container.closed .containerTop { background-color: #8C5DA5; }
.addToPlaylist .container .containerTop, .addToPlaylist .container.closed:hover
.containerTop, .addToPlaylist .container.closed.hover .containerTop { backgroun
d-color: #6F348E; }
.settingsHeader { margin: 10px 0px; padding: 2px 10px; background-color: #1EA5ED
; color: #ffffff; font-size: 15px; text-transform: uppercase; font-weight: norma
l; }
.settingsBox .formMessage { padding-top: 10px; }
#profileSettingsUserName { color: #000000; }
/* End Container */
/* Video Grader */
.gradeNote { text-align: right; font-size: 11px; color: #808080; position: relat
ive; margin-bottom: -5px; }
.gradeNote span { float: left; color: #F61914; margin-bottom: -5px; position: re
lative; }
.videoGrader { overflow: hidden; margin: 0px -5px 0px -5px; padding: 0px 5px 0px
5px; }
.videoGrader div { float: left; width: 40px; padding: 15px 1px 0px 0px; position
: relative; overflow: visible; }
.videoGrader div.cb { float: none; }
.videoGrader div.last { padding-right: 0px; }
.videoGrader div a { display: block; width: 100%; border-top: 10px solid #B3B3B3
; text-align: center; color: #B3B3B3; text-decoration: none; font-size: 18px; pa
dding-top: 2px; outline: 0px; cursor: pointer; }
.videoGrader div.communityGrade a { color: #4D4D4D; border-top: 10px solid #4D4D
4D; }
.videoGrader div.userGrade { z-index: 2; }
.videoGrader div a:hover { color: #808080; border-top: 10px solid #808080; }
.videoGrader div.userGrade a, .videoGrader div.userGrade a:hover { color: #fffff
f; font-weight: bold; position: absolute; top: 0px; left: -4px; z-index: 2; back
ground: url(/images/user_graded.gif) no-repeat; width: 49px; height: 49px; line-
height: 44px; font-size: 24px; border-top: 0px; cursor: default; }
.videoGrader div a:hover { color: #808080; border-top: 10px solid #808080; }
.videoGrader div a.inProgress, .videoGrader div a.inProgress:hover { border-top:
0px; padding-top: 11px; margin-top: 1px; background-image: url(/images/progress
_bar.gif); background-repeat: repeat-x; }
/* End Video Grader */
/* Video Information */
.videoInformation .stat { margin-bottom: 5px; }
.videoInformation .label { color: #808080; }
.videoInformation .left { float: left; width: 246px; position: relative; }
.videoInformation .right { float: left; width: 286px; position: relative; }
.videoInformation .left .vidIcon { width: 90px; height: 78px; position: absolute
; top: 0px; left: 130px; background-repeat: no-repeat; display: none; }
.videoInformation .left .fresh { display: block; background-image: url(/images/i
con_fresh_large.gif); }
.videoInformation .left .recommend { display: block; background-image: url(/imag
es/icon_recommend_large.gif); }
.videoInformation .left .hot { display: block; background-image: url(/images/ico
n_hot_large.gif); }
.videoInformation .left .rerun { display: block; background-image: url(/images/i
con_rerun_large.gif); }
.videoInformation .left .fav { display: block; background-image: url(/images/ico
n_fav_large.gif); }
.videoInformation h1 { margin: 0px; font-weight: normal; font-size: 20px; text-t
ransform: capitalize; }
.videoInformation .categoryLinks { display:block; font-size: 11px; margin: 5px 0
px 10px 0px; }
.videoInformation p { margin-bottom: 5px; }
.videoInformation .bottom { text-align: right; line-height: 22px; font-size: 12p
x; }
.videoInformation .bottom .matureIcon { width: 48px; height: 24px; float: left;
background-image: url(/images/icon_over18.gif); }
.videoInformation .bottom .formatIcon { width: 32px; height: 32px; float: left;
margin-top: -10px; overflow: visible; white-space: nowrap; position: relative; }
.videoInformation .bottom .formatIcon a { text-decoration: none; text-indent: 38
px; font-size: 11px; }
.videoInformation .bottom .formatIcon a span { display: none; position: relative
; top: -10px; left: 5px; }
.videoInformation .bottom .formatIcon a:hover span { display: inline; }
.videoInformation .right .rightActions { float: right; width: 160px; }
.videoInformation .right .leftActions { float: left; width: 120px; border-right:
1px dashed #B3B3B3; padding-right: 5px; }
.videoInformation .right a { position: relative; display: block; text-align: rig
ht; padding-right: 23px; margin-bottom: 5px; height: 20px; line-height: 19px; co
lor: #808080; text-decoration: none; background-image: url(/images/video_actions
_icons.gif); background-repeat: no-repeat; }
.videoInformation .right a:hover { color: #000000; text-decoration: underline; }
.videoInformation .right a.actionSuggest { background-position: right 0px; }
.videoInformation .right a.actionReportMature { background-position: right -20px
; }
.videoInformation .right a.actionReportBroken { background-position: right -40px
; }
.videoInformation .right a.actionAddFav { background-position: right -60px; }
.videoInformation .right a.actionRemoveFav { background-position: right -80px; }
.videoInformation .right a.actionEmail { background-position: right -100px; }
.videoInformation .right a.actionComment { background-position: right -120px; }
.videoInformation .right a.actionReportFake { background-position: right -140px;
}
.videoActions { margin: 0px auto 0px auto; width: 495px; padding-bottom: 10px; }
.videoActions a.actionEmail, .videoActions a.actionAddFav, .videoActions a.actio
nRemoveFav { display: block; position: relative; z-index: 3; height: 22px; paddi
ng-left: 30px; margin-right: 10px; border: 1px solid #ffffff; float: left; color
: #000000; text-decoration: none; font-size: 15px; line-height: 21px; border-rig
ht: 1px solid #B3B3B3; background-position: 0px 0px; background-repeat: no-repea
t; }
.videoActions a.actionEmail:hover, .videoActions a.actionAddFav:hover, .videoAct
ions a.actionRemoveFav:hover { text-decoration: underline; }
.videoActions a.actionEmail { width: 50px; background-image:url(/images/icon_ema
il.gif); background-position: 0px 1px; }
.videoActions a.actionAddFav, .videoActions a.actionRemoveFav { padding-left: 37
px; width: 73px; background-position: 7px 0px; background-image: url(/images/ico
n_favorite.gif); }
.videoActions a.actionRemoveFav { background-position: 0px -21px; padding-left:
25px; width: 85px; }
.videoActions .diggIt { float: left; padding-top: 4px; width: 100px; height: 19p
x; margin-left: -18px; }
.bookMarkIcons { height: 23px; line-height: 22px; float: right; width: 188px; bo
rder-left: 1px solid #B3B3B3; position: relative; z-index: 3; }
.bookMarkIcons a { display: block; float: right; width: 20px; height: 21px; padd
ing: 0px; border: 1px solid #B3B3B3; margin-left: 3px; background-image: url(/im
ages/bookmark_icons_color.gif); background-repeat: no-repeat; }
.bookMarkIcons a:hover { background-color: #ffffff; border: 1px solid #4D4D4D; }
.bookMarkIcons a.bkDelicious { background-position: -20px 0px; }
.bookMarkIcons a.bkDigg { background-position: -40px 0px; }
.bookMarkIcons a.bkReddit { background-position: -80px 0px; }
.bookMarkIcons a.bkStumble { background-position: -60px 0px; }
.bookMarkIcons a.bkFacebook { background-position: -100px 0px; }
.bookMarkIcons a.bkYahoo { background-position: 0px 0px; }
.bookMarkIcons a.bkBlinklist { background-position: -140px 0px; }
.bookMarkIcons a.bkFurl { background-position: -120px 0px; }
.smallVideoInfo { text-align: left; padding: 0px 10px 0px 10px; }
.smallVideoInfo h1 { margin: 0px; padding-bottom: 5px; font-size: 15px; }
.smallVideoInfo p { font-size: 13px; color: #4D4D4D; }
/* End Video Information */
/* Comments */
.videoComments, .articleComments { padding-bottom: 20px; margin-bottom: 20px; bo
rder-bottom: 1px solid #E6E3E3; font-size: 10px; }
.commentsList { border-bottom: 2px solid #FFFFFF; margin-bottom: 6px; }
.comment { font-size: 11px; color: #3D3D3D; display: block; position: relative;
padding: 0px; zoom: 1; }
.comment a { outline: none; }
.bodySay { position: absolute; display: block; width: 10px; height: 20px; left:
-10px; top: 10px; background-image: url(/images/comment_arrow_f5.gif); z-index:
5; overflow: hidden; }
.bodySayUpSm { position: absolute; display: block; width: 14px; height: 7px; lef
t: 10px; top: 3px; background-image: url(/images/wht_say_stroke_up.gif); z-index
: 5; overflow: hidden; }
.shaded .bodySay { background-image: url(/images/comment_arrow_e6.gif); }
.shaded .bodySayUpSm { background-image: url(/images/comment_arrow_up2_e6.gif);
background-position: 0 0; background-repeat: no-repeat; overflow; hidden; }
.boxStroke .bodySay { width: 7px; height: 14px; left: -7px; background-image: ur
l(/images/wht_say_stroke.gif); }
.commentUserIcon { display: block; border: 1px solid #CECECE; overflow: hidden;
float: left; position: relative; }
.commentUserIcon img { display: block; width: 49px; height: 66px; background: #6
96969 url(/images/progress_star_dark.gif) no-repeat center center; }
.userCommentBody { display: block; margin-left: 70px; position: relative; margin
-bottom: 3px; }
.commentReply { background-color: #F3F3F3; }
.commentReply .commentUserIcon { margin: 25px 0 0 10px; }
.commentReply .userCommentBody { border: 0; background-color: #F3F3F3; }
.commentReply .boxStroke .bodySay { left: 5px; top: 35px; }
.userCommentBody { display: block; margin-left: 70px; position: relative; zoom:
1; }
.commentMainSection { position: relative; display: block; text-align: left; }
.commentHeader { display: block; height: 20px; font-size: 15px; }
.commentHeader .timeStamp { color: #808080; margin-left: 5px; font-size: 10px; }
.commentBody { position: relative; min-height: 10px; padding: 0px 4px 0px 6px; }
.commentBody span { display: block; white-space: normal; overflow: hidden; word-
wrap: break-word; }
.commentBody .commentReplyText { position: relative; display: block; width: 97%;
height: 34px; border: solid 1px #E6E3E3; padding: 5px; }
.commentBody span, .commentBody textarea { font-family: arial,sans-serif; font-s
ize: 12px; line-height: 1.4em; color: #4D4D4D; }
.commentFooter { display: block; }
.commentFooter .submitComment { }
.comment .replyEdit { padding-top: 2px; position: relative; zoom: 1; }
.commentReplyButton { margin-right: 20px; margin: 6px 7px 0px 0px; position: rel
ative; text-align: right; zoom: 1; }
.commentBad { opacity: 0.6; -moz-opacity: 0.6 }
.commentGood .commentBody { font-weight: bold; }
.commentVotes { display: block; width: 80px; height: 20px; float: right; }
.commentVotes span, .commentVotes div { height: 20px; float: right; }
.commentVotes span { padding-left: 8px; }
.comment .commentVotes div { width: 40px; visibility: hidden; }
.comment:hover .commentVotes div, .comment.hover .commentVotes div { visibility:
visible; }
.commentVotes div a { margin-left: 2px; }
.commentVotes .commentScore { font-weight: bold; color: gray; cursor: default; p
adding: 0px; text-align: right; width: 24px; font-size: 12px; }
.commentVotes .commentScorePositive { color: #6FB21A; }
.commentVotes .commentScoreNegative { color: #D42F2E; }
.userCommentScore { color: #8CC653; font-size: 11px; font-style: italic; cursor:
default; }
.ucsNegative { color: #969696; font-size: 10px; top: auto; }
.ucsGood { color: #49A514; }
.ucsGreat { color: #49A514; font-weight: bold; font-size: 12px; }
a.ucsGood, a.ucsGreat { color: #2ABBEF; }
/* End Comments */
/* Widget Builder */
#widgetBuilderHolder, .widgetLoading { position: relative; display: block; over
flow: hidden; }
#widgetBuilderHolder { display: none; width: 774px; }
.widgetBuilder { position: relative; display: block; text-align: left; font-size
: 9pt; left: 0px; top: 0px; }
.inputFrameCode { border: solid 1px #ACACAC; }
.widgetLoading { width: 100%; height: 50px; left: 0px; top: 0px; background-imag
e: url(/images/progress_star.gif); background-position: center center; backgroun
d-repeat: no-repeat; z-index: 50; }
.widgetHead { height: 30px; margin-top: 17px; }
.widgetHead div { float: left; }
.widgetDescription { position: relative; display: block; left: 0px; top: 0px; wi
dth: 764px; }
.widgetHelpSection { position: relative; display: none; width: 112px; height: 45
px; line-height: 45px; left: 0px; top: 0px; vertical-align: bottom; text-align:
right; }
.widgetHelpSection .widgetHelpLink { text-decoration: none; outline: none; }
.hb .overAll a.toggleWidgetLink { position: relative; display: block; width: 80p
x; height: 40px; left: 0px; top: 0px; text-decoration: none; outline: none; font
-size: 13px; line-height: 40px; text-align: right; }
.hb .overAll a.toggleWidgetLink:hover { background-color: Transparent; }
.hb .overAll a.toggleWidgetLink img { position: relative; top: 1px; padding: 0px
5px 0px 10px; }
/* Widget Bubble */
.stepSection .stepMain, .stepSection .stepMain .stepBody, .stepSection .stepMain
.stepBody .twoByTwo, .stepBody .twoByTwo .lineBlock, .stepMain .embedTop, .step
Main .embedMiddle, .stepMain .embedBottom { display: block; width: 718px; }
.stepSection { position: relative; display: block; left: 0px; top: 0px; margin-t
op: 10px; }
.stepSection .stepIcon { display: block; width: 30px; height: 31px; left: 0px; t
op: 0px; float: left; background-image: url(/images/step_numbers.gif); backgroun
d-repeat: no-repeat; }
.stepSection .stepMain { left: 0px; top: 0px; margin-left: 46px; }
.stepSection .stepMain .stepTitle { height: 31px; left: 0px; top: 0px; line-heig
ht: 31px; vertical-align: middle; }
.stepSection .stepMain .stepTitle h3 { margin: 0px; padding: 0px; font-size: 12p
t; }
.stepSection .stepMain .stepBody h4 { margin: 7px 0px 7px 0px; }
.stepSection .stepMain .stepBody .twoByTwo { height: 60px; }
.stepSection .stepMain .stepBody .twoByTwo .lineBlock { height: 30px; line-heigh
t: 20px; }
.lineBlock .left, .lineBlock .right { display: block; width: 355px; float: left;
}
.lineTitle, .lineTitleLong, .sourceTitle { float: left; font-weight: bold; }
.lineTitle { width: 40px; }
.lineTitleLong { width: 105px; }
.stepBody .iFrameBackground { display: none; border: 0px; background-color: #E8E
8E8; overflow: visible; }
.stepBody .iFrameBackground .widgetIFrame { border: 0px; background-color: #E8E8
E8; }
.stepSection .stepMain .embedTop { height: 19px; background-image: url(/images/e
mbed_top.gif); }
.stepSection .stepMain .embedMiddle { background-image: url(/images/embed_bg.gif
); background-repeat: repeat-y; }
.stepSection .stepMain .embedBottom { height: 19px; background-image: url(/image
s/embed_bottom.gif); }
.stepSection .stepMain .embedTitle { height: 25px; line-height: 25px; }
.stepSection .stepMain .embedMiddle h3 { height: 20px; line-height: 12pt; vertic
al-align: middle; padding-left: 15px; }
.stepSection .stepMain .embedMiddle .stepBody, .stepMain .embedMiddle h3 { width
: 688px; padding-left: 15px; margin: 0px; }
.stepSection .stepMain .embedTop h3 { text-indent: 15px; }
#sctSource { width: 195px; }
#sctSize { width: 275px; }
#sctColor { width: 150px; }
#txtWidgetTitle { width: 270px; height: 16px; vertical-align: middle; }
.privateItem { color: #828282; font-style: italic; }
.iFrameSource .inputFrameCode { width: 686px; }
.widgetDoneButton { display: block; text-align: right; }
.widgetDoneButton .doneButton { width: 60px; }
/* Step specific */
.stepSection .step1 { background-position: 0px 0px; }
.stepSection .step2 { background-position: 0px -32px; }
.stepSection .step3 { background-position: 0px -64px; }
.stepSection .step4 { background-position: 0px -95px; margin-top: 12px; }
/* End Widget Builder */

/* Sidebar Install */
.left624 .sidebarDetails { margin-top: 20px; }
.left624 .sidebarDetails .sidebarScreen { width: 201px; left: 0px; top: 0px; flo
at: left; }
.left624 .sidebarDetails .sidebarFeatures { width: 403px; margin-left: 10px; flo
at: right; }
.left624 .sidebarDetails .sidebarFeatures .featuresHeader { display: block; widt
h: 156px; height: 23px; left: 0px; top: 0px; background-image: url(/images/sideb
ar_features_header.gif); }
.left624 .sidebarDetails .sidebarFeatures .featuresBody { font-size: 12px; }
.installSection { position: relative; background-color: #F5F5F5; }
.right330 .installTop { position: relative; height: 114px; background-image: url
(/images/install_top.gif); background-position: center top; background-repeat: n
o-repeat; }
.right330 .installTop span { position: relative; margin-left: 14px; font-size: 3
0px; color: #6D6D6D; }
.widgetBuilder .installTop { background-image: url(/images/widget_install_top.pn
g); }
.right330 .installBody { position: relative; display: block; }
.right330 .installBody .installStepSection { position: relative; display: block;
margin-top: 15px; zoom: 1; }
.right330 .installBody .installStepSection .stepBody { position: relative; width
: 256px; float: right; margin-right: 20px; }
.right330 .installBody .installStepSection .stepBody h3 { position: relative; li
ne-height: 31px; margin: 0px; padding: 0px; }
.right330 .installBody .installStepSection .stepBody span { position: relative;
font-size: 12px; }
a.downloadExtensionGray, a.downloadExtension { display: block; width: 232px; hei
ght: 32px; overflow: hidden; outline: none; background-position: 0px 0px; }
a.downloadExtensionGray:hover, a.downloadExtension:hover { background-position:
0px -31px; }
a.downloadExtensionGray { background-image: url(/images/download_btn_gray.gif);
}
a.downloadExtension { background-image: url(/images/download_btn.gif); }
.right330 .installBody .stepNumber { position: relative; display: block; positio
n: relative; width: 30px; height: 31px; left: 0px; top: 0px; margin-left: 14px;
float: left; background-image: url(/images/step_numbers_gray_bg.gif?v=1); backgr
ound-repeat: no-repeat; }
.right330 .installBody .step1 { background-position: 0px 0px; }
.right330 .installBody .step2 { background-position: 0px -32px; }
.right330 .installBody .step3 { background-position: 0px -64px; }
.right330 .installBody .step4 { background-position: 0px -96px; }
.right330 .installBottom { background-image: url(/images/install_bottom.gif); ba
ckground-position: center bottom; background-repeat: no-repeat; }
.sidebarInstallH1 { line-height: 35px; height: 35px; }
/* End Sidebar Install */
/* Sidebar Download Promt */
.sidebarDownload { position: relative; }
.sidebarDownload .sdHeader { display: block; height: 34px; padding-top: 10px; te
xt-align: left; padding-left: 60px; background-image: url(/images/sidebar/ff_add
on_icon.gif); background-position: 9px center; background-repeat: no-repeat; }
.sidebarDownload .sbBody { display: block; font-size: 13px; text-align: left; pa
dding: 1px 40px 0px 60px; }
.sidebarDownload a.sdLearnMore, .sidebarDownload a.sdSkipButton, .sidebarDownloa
d a.sdButton { position: absolute; font-size: 13px; }
.sidebarDownload a.sdLearnMore, .sidebarDownload a.sdSkipButton { top: 117px; te
xt-decoration: none; }
.sidebarDownload a.sdLearnMore:hover, .sidebarDownload a.sdSkipButton:hover { te
xt-decoration: underline; }
.sidebarDownload a.sdLearnMore { left: 170px; }
.sidebarDownload a.sdSkipButton { left: 261px; }
.sidebarDownload a.sdButton { left: 350px; top: 108px; display: block; width: 15
2px; height: 40px; background-image: url(/images/sidebar/ff_download_btn.gif); b
ackground-position: 0px 0px; background-repeat: no-repeat; overflow: hidden; }
.sidebarDownload a.sdButton:hover { display: block; background-position: 0px -41
px; }
/* End Sidebar Download Promt */
/* Promo Client Categories/Subcategories */
#promoClientSaving, #promoClientSuccess { display: none; position: relative; }
#promoClientSaving { height: 30px; background-image: url(/images/progress_star.g
if); background-position: center center; background-repeat: no-repeat; }
.promoPartnerList, .promoPartnerLink { position: relative; display: block; overf
low: hidden; background-color: #F5F5F5; }
.promoPartnerLink { padding: 6px; font-size: 11px; color: #4D4D4D; }
/* End Promo Client Categories/Subcategories */
/* Referral */
.referralInfo { font-size: 14px; }
.referralInfo h3 { margin-bottom: 0px; }
/* End Referral */
/* Submit */
.submitContents { padding: 50px 0px; }
.submitContents .sh { margin-bottom: 10px; }
.submitContents a { display: block; padding: 15px 0px; text-align: center; font-
size: 13pt; }
.submitContents a:hover { color: #FFFFFF; background-color: #1EA5ED; text-decora
tion: none; }
.submitLink .stepNumber { float: left; width: 48px; height: 48px; line-height: 5
0px; color: #ffffff; text-align: center; font-size: 34px; font-weight: bold; bac
kground-image: url(/images/gray_circle.gif); background-repeat: no-repeat; overf
low: hidden; cursor: default; }
.submitLink h1 { line-height: 50px; text-indent: 20px; font-size: 18px; }
.submitLink .formFrame { border: 1px solid #808080; background-color: #F5F5F5; p
adding: 20px; color: #4D4D4D; font-size: 14px; }
.submitLink .linkField { width: 315px; }
.submitLink .buttons { margin-top: 10px; text-align: right; }
.submitLink .foundVideo { text-align: center; padding: 10px; margin-bottom: 20px
; font-size: 15px; border: 1px solid #B3B3B3; }
.submitLink .submitError { display: block; border: 1px solid red; color: red; ba
ckground-color: #FFEEEE; margin-bottom: 20px; padding: 5px 20px; font-size: 14px
; }
.infoBubble { background-color: #EAF4DA; font-size: 14px; margin: 20px 0px; }
.infoBubble .top, .infoBubble .bottom { height: 20px; width: 100%; background-im
age: url(/images/corners_green.gif); background-repeat: no-repeat; padding: 0px;
margin: 0px; }
.infoBubble .top { background-position: 0px 0px; }
.infoBubble .bottom { background-position: 0px -20px; }
.infoBubble .middle { border-left: 1px solid #8FCA23; border-right: 1px solid #8
FCA23; padding: 0px 20px;}
.infoBubble h3 { margin: 0px; text-transform: uppercase; font-size: 14px; }
.infoBubble h4 { margin: 0px; padding: 40px 0px; font-size: 16px; font-weight: b
old; text-transform: none; text-align: center; }
.infoBubble ul li { margin-top: 15px;}
.infoBubble ul { margin-top: 0px; margin-bottom: 0px; }
/* End Submit */
/* Live Activity Events */
.liveEventList { position: relative; display: block; }
.sh .liveEventList { background-color: #FFFFFF; }
.liveEventList .eventList { position: relative; display: block; height: 530px; t
ext-align: left; overflow: hidden; padding-top: 6px; text-align: center; }
.liveEvent { position: relative; width: 122px; height: 100px; margin: 0px auto 6
px auto; overflow: hidden; background-color: #FFFFFF; }
.liveEvent .timeStamp { position: absolute; right: 20px; top: 49px; font-size: 9
px; color: #969696; text-align: right; }
.liveEvent .eventImage { display: block; font-size: 9px; height: 16px; z-index:
2; padding: 32px 0px 0px 62px; color: #FFFFFF; background-color: #3F3F3F; backgr
ound-repeat: no-repeat; background-position: 85px 9px; }
.liveEvent .eventImage img { position: absolute; top: 0px; left: 0px; display: b
lock; width: 62px; height: 48px; background: #696969; color: #4D4D4D; overflow:
hidden; }
.liveEvent a { display: block; position: absolute; top: 0px; left: 0px; z-index:
3; text-align: left; font-size: 10px; line-height: 1.15em; }
.liveEvent a span { display: block; width: 116px; height: 35px; padding: 65px 3p
x 0px 3px; cursor: pointer; }
.liveEvent a:hover { text-decoration: none; }
.liveEvent .typeIconUTS { top: 48px; left: 0px; right: auto; width: 120px; opaci
ty: 1; -moz-opacity: 1; }
.liveEvent:hover .typeIconUTS { background-color: #1EA5ED; }
.liveEvent:hover .timeStamp { color: #F5F5F5; }
.eJoin .eventImage { padding: 52px 0px 0px 51px; }
.eJoin .eventImage img { width: 51px; height: 68px; }
.eJoin a { height: 28px; padding: 72px 3px 0px 3px; }
.eJoin .eventImage { background-image: url(/images/le_join.gif); background-posi
tion: 78px 11px; }
.eComment .eventImage { background-image: url(/images/le_comment.gif); }
.eFavorite .eventImage { background-image: url(/images/le_favorite.gif); }
.eGrade .eventImage { background-image: url(/images/le_grade.gif); }
.eView .eventImage { background-image: url(/images/le_view.gif); }
.liveEventList .eventListFooter { position: relative; height: 24px; font-size: 1
2px; line-height: 24px; text-align: center; }
.liveEventList .eventListFooter span { position: relative; top: 1px; background-
color: #FFFFFF; padding-right: 3px; font-weight: bold; }
.liveEventList .eventListFooter span a { text-decoration: none; outline: none; }
/* End Live Activity Events */
/* Border Color */
.headbar .colorStandard, .colorStandard .showB { border-color: #1EA5ED; }
.headbar .colorFresh, .colorFresh .showB { border-color: #86ED1F; }
.headbar .colorHot, .colorHot .showB { border-color: #EF241F; } /*ED241F FE0A4D*
/
.headbar .colorRecommend, .colorRecommend .showB { border-color: #FA7AFA; } /*ED
1FED*/
.headbar .colorHOC, .colorHOC .showB { border-color: #EFEA38; } /*EDAA1F*/
.headbar .colorGems, .colorGems .showB { border-color: #A568E1; } /*AF1FED*/
.headbar .colorHome, .colorHome .showB { border-color: #1EA5ED; }
.headbar .colorBrowse, .colorBrowse .showB { border-color: #1EA5ED; }
.headbar .colorWonderlist, .colorWonderlist .showB { border-color: #6C1FED; }
.headbar .colorRelated, .colorRelated .showB { border-color: #1EA5ED; }
.headbar .colorPeopleAlsoLiked, .colorPeopleAlsoLiked .showB { border-color: #1F
5CED; }
.headbar .colorCreator, .colorCreator .showB { border-color: #ED6C1F; }
.headbar .colorTopic, .colorTopic .showB { border-color: #1EA5ED; }
.headbar .colorFeatured, .colorFeatured .showB { border-color: #1EA5ED; } /*FDA9
5C EDD91F*/
.headbar .colorWW, .colorWW .showB, .wwPage .contentHeader { border-color: #2ABB
EF; } /*#02D7CC*/ /*1FEDC4*/
.headbar .colorRerun, .colorRerun .showB { border-color: #696969; }
.headbar .colorFavorite, .colorFavorite .showB { border-color: #ED1FED; }
.headbar .colorContent, .colorContent .showB { border-top: 2px solid #1EA5ED; bo
rder-bottom-width: 0px; font-size: 18px; line-height: 22px; letter-spacing: -0.
04em; height: 26px; color: #FFFFFF; background-color: #2ABBEF; }
.headbar .colorContent i { color: #FFFFFF; }
/* End Border Color */
/* H1 Heading Color */
.hi .headbar h1 { border-color: #2ABBEF; }
.hi .headbar h1.colorFresh { border-color: #86ED1F; }
.hi .headbar h1.colorHot { border-color: #EF241F; }
.hi .headbar h1.colorRecommend { border-color: #FA7AFA; }
.hi .headbar h1.colorHOC { border-color: #EFEA38; }
.hi .headbar h1.colorGems { border-color: #A568E1; }
.hi .headbar h1.colorWW { border-color: #2ABBEF; }
.hi .headbar h1.colorCreator { border-color: #ED6C1F; }
.mid492 .hi .headbar h1 { border-color: #1EA5ED; }
/* End H1 Color */
/* Heading */
.heading { position: relative; margin-bottom: 0px; margin-bottom: 10px; backgrou
nd-color: #FFFFFF; zoom: 1; }
.heading .bg { position: relative; margin-bottom: 10px; background-color: #B4B4B
4; background-image: url(/images/dots.png); zoom: 1; }
.heading i { position: absolute; display: block; height: 100%; width: 60px; top:
0; right: 0; background-image: url(/images/fade_to_white.png); background-repea
t: repeat-y; }
.heading .headline { margin: -3px 0 0 0; float: left; background-color: #FFFFFF;
height: 30px; line-height: 30px; padding-right: 10px; font-size: 30px; font-wei
ght: bold; color: #696969; cursor: default; text-shadow: 0 1px #C3C4C3; }
.emvs .headline { font-size: 15px; }
.ems .headline { font-size: 19px; }
.heading .bg .headline { margin-bottom: 0px; }
.heading .headline a { color: #696969; cursor: pointer; }
.heading .headline a:hover, .heading .headline a:hover .color { text-decoration:
none; color: #2ABBEF; }
.heading span.sub { color: #A9A9A9; background-color: #FFFFFF; position: relativ
e; padding: 2px 0 0 1px; display: block; height: 9px; font-size: 9px; font-weigh
t: normal; line-height: 9px; cursor: default; }
.heading em { font-size: 24px; font-style: normal; }
.heading em.worldsBeta { position: relative; bottom: -5px; font-size: 18px; colo
r: #ED0000; }
.heading .paging { display: block; position: absolute; width: auto; height: 10px
; right: 0px; bottom: 5px; z-index: 3; }
.heading .paging span { display: block; width: 12px; height: 10px; float: left;
margin-left: 5px; background-color: #CACACA; overflow: hidden; cursor: pointer;
}
.heading .paging span:hover, .heading .paging span.hover, .heading .paging .page
LinkSelected { background-color: #2ABBEF; }
.heading span.safeSearch { color: #2ABBEF; }
.topPad .heading .headline { margin-top: 10px; }
.doublePad { margin-bottom: 20px; }
.triplePad { margin-bottom: 30px; }
.headingMain .headline { font-weight: normal; color: #000000; letter-spacing: -0
.01em; height: auto; text-shadow: 0 1px 2px #B3B4B3; }
.headingMain .headline a { color: #000000; }
.headingMain span.sub { color: #CACACA; font-size: 11px; height: 15px; line-heig
ht: 15px; background: transparent; }
.noBG span.sub { background: transparent; }
.hasTabMenu span.sub { padding-top: 10px; }
.headingSub .headline { font-size: 20px; line-height: 22px; height: 22px; }
.headingSub em { font-size: 15px; }
.hbButtons { position: relative; padding: 5px; margin-top: -5px; border-bottom:
1px solid #E6E3E3; min-height: 0%; }
.hbButtons .hbTab { font-size: 11px; background-image:url(/images/wht_subtabs.gi
f); background-position: -60px 0; background-color: #696969; color: #FFFFFF; dis
play: block; width: 100px; height: 24px; line-height: 24px; float: right; text-a
lign: center; margin: 4px 0 -6px 5px; outline: none; position: relative; z-index
: 3; }
.hbButtons .hbTabSm { width: 60px; background-position: 0 0; }
.hbButtons .hbTab:hover { text-decoration: none; background-color: #2ABBEF; colo
r: #FFFFFF; background-position: -60px -25px; }
.hbButtons .active, .hbButtons .active:hover { cursor: default; text-decoration:
none; color: #000000; background-color: #FFFFFF; background-position: -60px -50
px; }
.hbButtons .hbTabSm.active, .hbButtons .hbTabSm.active:hover { background-positi
on: 0 -50px; }
.contentFull .hbButtons { width: 964px; }
.content644 .hbButtons { width: 634px; }
.mid468 .hbButtons { width: 458px; }
.colorHot .bg { background-color: #EF241F; }
.colorHot .color { color: #EF241F; }
.colorFresh .bg { background-color: #86ED1F; }
.colorFresh .color { color: #86ED1F; }
.colorHOC .bg { background-color: #FC9A28; }
.colorHOC .color { color: #FC9A28; }
.colorGems .bg { background-color: #A568E1; }
.colorGems .color { color: #A568E1; }
.colorFavorite .bg { background-color: #ED1FED; }
.colorFavorite .color { color: #ED1FED; }
.headbar .colorStandard, .colorStandard .showB { border-color: #1EA5ED; }
.headbar .colorFresh, .colorFresh .showB { border-color: #86ED1F; }
.headbar .colorHot, .colorHot .showB { border-color: #EF241F; } /*ED241F FE0A4D*
/
.headbar .colorRecommend, .colorRecommend .showB { border-color: #FA7AFA; } /*ED
1FED*/
.headbar .colorHOC, .colorHOC .showB { border-color: #EFEA38; } /*EDAA1F*/
.headbar .colorGems, .colorGems .showB { border-color: #A568E1; } /*AF1FED*/
.headbar .colorHome, .colorHome .showB { border-color: #1EA5ED; }
.headbar .colorBrowse, .colorBrowse .showB { border-color: #1EA5ED; }
.headbar .colorWonderlist, .colorWonderlist .showB { border-color: #6C1FED; }
.headbar .colorRelated, .colorRelated .showB { border-color: #1EA5ED; }
.headbar .colorPeopleAlsoLiked, .colorPeopleAlsoLiked .showB { border-color: #1F
5CED; }
.headbar .colorCreator, .colorCreator .showB { border-color: #ED6C1F; }
.headbar .colorTopic, .colorTopic .showB { border-color: #1EA5ED; }
.headbar .colorFeatured, .colorFeatured .showB { border-color: #1EA5ED; } /*FDA9
5C EDD91F*/
.headbar .colorWW, .colorWW .showB, .wwPage .contentHeader { border-color: #2ABB
EF; } /*#02D7CC*/ /*1FEDC4*/
.headbar .colorRerun, .colorRerun .showB { border-color: #696969; }
.headbar .colorFavorite, .colorFavorite .showB { border-color: #ED1FED; }
.headbar .colorContent, .colorContent .showB { border-top: 2px solid #1EA5ED; bo
rder-bottom-width: 0px; font-size: 18px; line-height: 22px; letter-spacing: -0.
04em; height: 26px; color: #FFFFFF; background-color: #2ABBEF; }
.headbar .colorContent i { color: #FFFFFF; }
/* End Heading */
/* Image Strip */
.imageStrip665 { width: 665px; height: 57px; overflow: hidden; cursor: default;
margin-top: -4px; margin-bottom: 5px; border-bottom: 2px solid #6CB017; }
.imageStrip665 a { cursor: default; text-decoration: none; }
.imageStrip665 img { width: 73px; height: 56px; margin: 0px 1px 0px 0px; padding
: 0px; display: block; float: left; overflow: hidden; }
.imageStrip665 img.last { margin: 0px; }
/* End Image Strip */
/* End Browse Section Heading */
/* Category Refine Drop Down */
.refineCategoryDropDown { padding: 15px 0px 15px 10px; color: #4D4D4D; }
.narrowDropDown { font-size: 14px; padding-bottom: 10px; }
.narrowDropDown select { float: right; font-size: 13px; }
.dropDownRelevantCategories { font-size: 14px; }
/* End Category Refine Drop Down */
/* Article Voting */
.articleVoteBar { position: relative; height: 70px; overflow: hidden; }
.articleVoteBar .pleaseVote, .articleVoteBar .votedUp, .articleVoteBar .votedDow
n, .articleVoteBar .doneVoting { position: absolute; top: 0px; left: 0px; width:
914px; height: 50px; padding: 10px 10px 10px 20px; font-family: century gothic,
arial, sans-serif; font-size: 20px; font-weight: bold; color: #4D4D4D; cursor:
default; }
.articleVoteBarAdmin .pleaseVote, .articleVoteBarAdmin .votedUp, .articleVoteBar
Admin .votedDown, .articleVoteBarAdmin .doneVoting { padding-right: 30px; width:
894px; }
.articleVoteBar .votedUp, .articleVoteBar .votedDown, .articleVoteBar .doneVotin
g, .articleVoteBar .addFeedback { display: none; }
.articleVoteBar .doneVotingShow { display: block; }
.articleVoteBar span { display: block; height: 50px; float: left; line-height: 5
0px; overflow: hidden; }
.articleVoteBar span.le, .articleVoteBar span.re { display: block; width: 10px;
height: 70px; position: absolute; top: 0px; left: 0px; float: none; }
.articleVoteBar span.re { left: auto; right: 0px; background-position: -10px 0px
; }
.articleVoteBar .voteUp, .articleVoteBar .voteDown { display: block; width: 40px
; height: 49px; background-image: url(/images/thumb_updown_big.gif); overflow: h
idden; background-repeat: no-repeat; float: left; margin-right: 10px; margin-top
: 1px; }
.articleVoteBar .voteDown { background-position: -40px 0px; }
.articleVoteBar a.voteUp:hover { background-position: 0px -49px; cursor: pointer
; }
.articleVoteBar a.voteDown:hover { background-position: -40px -49px; cursor: poi
nter; }
.articleVoteBar .large { padding-left: 20px; font-size: 40px; }
.articleVoteBar .doneVoting .large { padding-left: 10px; }
.articleVoteBar .medium { line-height: 25px; width: 850px; }
.articleVoteBarAdmin .medium { line-height: 25px; width: 830px; }
.articleVoteBar .small { font-size: 14px; margin-right: 10px; }
.articleVoteBar .tiny { float: none; margin-top: 10px; display: inline; line-hei
ght: 12px; position: relative; top: 6px; }
.articleVoteBar .right { float: right; width: 320px; font-size: 10px; font-weigh
t: normal; color: #666666; font-family: arial, sans-serif; }
.articleVoteBar .dude { width: 22px; height: 40px; margin: 3px 8px 0px 10px; bac
kground-image: url(/images/wonderdude_shadow.gif); }
.articleVoteBar .gradeSelection { padding: 13px; }
.articleVoteBar .gradeSelection .userGradeLink { margin-left: 5px; float: left;
}
.articleVoteBar .gradeSelection .userGradeLink a { display: block; width: 24px;
height: 20px; background-image: url(/images/video_grades_big.png); background-re
peat: no-repeat; }
.articleVoteBar .feedback { height: 25px; line-height: 25px; font-size: 11px; }
.articleVoteBar .feedback img { width: 16px; height: 16px; float: left; margin-t
op: 5px; background-color: gray; }
.articleVoteBar .feedback span { height: auto; display: inline; line-height: inh
erit; font-weight: normal; }
.articleVoteBar .feedback span.inputBubble { display: block; width: 400px; heigh
t: 19px; line-height: 19px; position: relative; overflow: hidden; margin: 3px 5p
x; }
.articleVoteBar .feedback span.inputBubble .left, .articleVoteBar .feedback span
.inputBubble .right { display: block; height: 19px; position: absolute; top: 0px
; background-image: url(/images/small_comment_bubble_edges.gif); background-repe
at: no-repeat; }
.articleVoteBar .feedback span.inputBubble .left { left: 0px; width: 16px; backg
round-position: 0px 0px; }
.articleVoteBar .feedback span.inputBubble .right { right: 0px; width: 5px; back
ground-position: -17px 0px; }
.articleVoteBar .feedback span.inputBubble .middle { display: block; height: 17p
x; border-top: 1px solid rgb(143,143,143); border-bottom: 1px solid rgb(143,143,
143); margin: 0px 5px 0px 16px; }
.articleVoteBar .feedback span.inputBubble input { border: 0px; padding: 0px; wi
dth: 379px; height: 17px; margin: 1px 0px 0px 0px; line-height: 17px; }
.articleVoteBar .feedback span.submitButton { margin-top: 1px; }
.articleVoteBar .feedbackNote { font-size: 10px; font-weight: normal; color: #66
6666; font-family: arial, sans-serif; position: absolute; top: 40px; right: 0px;
line-height: 16px; height: auto; }
.articleVoteBar .score { display: block; float: right; width: 67px; height: 44px
; margin: 1px -29px; background-image: url(/images/vote_score_box.gif); color: #
FFFFFF; font-size: 18px; line-height: 25px; text-align: center; padding-top: 4px
; }
.articleVoteBar .score span { font-size: 10px; height: auto; line-height: normal
; width: 100%; }
.articleVoteBar .share { font-size: 10px; position: absolute; top: 45px; right:
70px; line-height: normal; height: auto; }
.articleVoteBar .share strong { color: green; }
.articleVoteBar .share a { text-decoration: none; }
.articleVoteBar .share a:hover { text-decoration: underline; }
.articleVoteBar select { font-size: 7pt; width:170px; height: 69px; position: re
lative; top: -10px; }
.articleVoteBar .nextFromCategory { float: right; }
.apprRejButtons { position: absolute; width: 25px; height: 70px; right: 0px; top
: 0px; }
.apprRejButtons a.approveArticle,
.apprRejButtons a.rejectArticle,
.apprRejButtons a.rejectArticlePerm { z-index: 5; display: block; width: 25px; h
eight: 23px; overflow: hidden; background-image: url(/images/approve_reject_icon
_v2.png); background-position: 0 0; outline: none; }
.apprRejButtons a.rejectArticle { background-position: 0 -23px; }
.apprRejButtons a.rejectArticlePerm { background-position: 0 -46px; }
.approved, .rejected, .rejectedPerm { opacity: 0.5; }
.approved a.approveArticle,
.rejected a.rejectArticle,
.rejectedPerm a.rejectArticlePerm { display: block; cursor: default; }
.approved:hover a.rejectArticle,
.rejected:hover a.approveArticle,
.rejectedPerm:hover a.approveArticlePerm { display: none; }
.bigGradeAp { background-position: 0px -20px; }
.bigGradeA { background-position: -24px -20px; }
.bigGradeAm { background-position: -48px -20px; }
.bigGradeBp { background-position: -72px -20px; }
.bigGradeB { background-position: -96px -20px; }
.bigGradeBm { background-position: -120px -20px; }
.bigGradeCp { background-position: -144px -20px; }
.bigGradeC { background-position: -168px -20px; }
.bigGradeCm { background-position: -192px -20px; }
.bigGradeDp { background-position: -216px -20px; }
.bigGradeD { background-position: -240px -20px; }
.bigGradeDm { background-position: -264px -20px; }
.bigGradeF { background-position: -288px -20px; }
.gradeSelection .userGradeLink:hover .bigGradeAp, .gradeSelection .userGradeLink
.hover .bigGradeAp, .userGrade .bigGradeAp { background-position: 0px 0px; }
.gradeSelection .userGradeLink:hover .bigGradeA, .gradeSelection .userGradeLink.
hover .bigGradeA, .userGrade .bigGradeA { background-position: -24px 0px; }
.gradeSelection .userGradeLink:hover .bigGradeAm, .gradeSelection .userGradeLink
.hover .bigGradeAm, .userGrade .bigGradeAm { background-position: -48px 0px; }
.gradeSelection .userGradeLink:hover .bigGradeBp, .gradeSelection .userGradeLink
.hover .bigGradeBp, .userGrade .bigGradeBp { background-position: -72px 0px; }
.gradeSelection .userGradeLink:hover .bigGradeB, .gradeSelection .userGradeLink.
hover .bigGradeB, .userGrade .bigGradeB { background-position: -96px 0px; }
.gradeSelection .userGradeLink:hover .bigGradeBm, .gradeSelection .userGradeLink
.hover .bigGradeBm, .userGrade .bigGradeBm { background-position: -120px 0px; }
.gradeSelection .userGradeLink:hover .bigGradeCp, .gradeSelection .userGradeLink
.hover .bigGradeCp, .userGrade .bigGradeCp { background-position: -144px 0px; }
.gradeSelection .userGradeLink:hover .bigGradeC, .gradeSelection .userGradeLink.
hover .bigGradeC, .userGrade .bigGradeC { background-position: -168px 0px; }
.gradeSelection .userGradeLink:hover .bigGradeCm, .gradeSelection .userGradeLink
.hover .bigGradeCm, .userGrade .bigGradeCm { background-position: -192px 0px; }
.gradeSelection .userGradeLink:hover .bigGradeDp, .gradeSelection .userGradeLink
.hover .bigGradeDp, .userGrade .bigGradeDp { background-position: -216px 0px; }
.gradeSelection .userGradeLink:hover .bigGradeD, .gradeSelection .userGradeLink.
hover .bigGradeD, .userGrade .bigGradeD { background-position: -240px 0px; }
.gradeSelection .userGradeLink:hover .bigGradeDm, .gradeSelection .userGradeLink
.hover .bigGradeDm, .userGrade .bigGradeDm { background-position: -264px 0px; }
.gradeSelection .userGradeLink:hover .bigGradeF, .gradeSelection .userGradeLink.
hover .bigGradeF, .userGrade .bigGradeF { background-position: -288px 0px; }
/* End Article Voting */
/* Edit Related Content */
.editRelatedItems { height: 0px; overflow: hidden; }
.editRelatedItems .searchRelated { padding: 5px 0px; font-size: 8pt; }
.editRelatedItems .searchRelated input { border: 1px solid #7DDEFF; width: 475px
; }
.editRelatedItems .searchRelated .paging { visibility: hidden; display: block; w
idth: 62px; float: right; }
.editRelatedItems .searchRelated .paging .pageNum { width: 20px; text-align: rig
ht; margin: 0px 5px; }
.editRelatedItems .searchRelated .paging a { display: block; width: 15px; height
: 15px; overflow: hidden; background-image: url(/images/page_arrs.gif); }
.editRelatedItems .searchRelated .paging a.prev { float: left; }
.editRelatedItems .searchRelated .paging a.next { float: right; background-posit
ion: -15px 0px; }
.editRelatedItems .relCtrlLinks { float: right; font-size: 11px; }
.editRelatedItems .searchResults { background-color: #CCCCCC; }
.editRelatedItems .searchResults a { font-size: 11px; height: 45px; overflow: hi
dden; }
.editRelatedItems .searchResults ul { margin: 0px; }
.editRelatedItems .searchResults ul li { margin: 0px 7px 6px; }
.editRelatedItems .searchResults ul li.added h3 { background-color: #F5F5F5; }
.drsh .items li .moveLinks { position: absolute; display: none; width: 88px; hei
ght: 68px; left: 3px; top: 7px; }
.editing .items li:hover .moveLinks { display: block; }
.drsh .items li .moveLinks a { display: block; height: 60px; width: 20px; paddin
g: 0px; background-image: url(/images/mv_rel.png); overflow: hidden; }
.drsh .items li .moveLinks a.right { float: right; background-position: -40px 0p
x; }
.drsh .items li .moveLinks a.left { float: left; background-position: 0px 0px;
}
.drsh .items li .moveLinks a.remove { background-position: -20px 0px; margin: au
to; }
.editRelatedItems .searchResults li .moveLinks,
.editRelatedItems .searchResults li:hover .moveLinks { display: none; }
/* End Edit Related Content */
/* Find Friends */
.importFriends { padding-top: 15px; }
.importFriends .headbar a,
.importFriends .headbar a:hover { cursor: default; text-decoration: none; font-s
ize: 8.5pt; }
.importFriends .messageArea { width: 215px; float: right; margin-right: 10px; fo
nt-size: 8pt; font-weight: bold; text-align: center; }
.importFriends .errorMsg { color: #DD0000; }
.importFriends .controls { display: block; position: relative; padding: 0 0 10px
45px; width: 370px; float: left; zoom: 1; }
.importFriends .controls div.inFld { text-align: right; margin-bottom: 10px; col
or: #4C4C4C; width: 370px }
.importFriends .controls div span { line-height: 20px; margin-right: 5px; font-w
eight: bold; font-size: 9pt; }
.importFriends .controls div input { border: 1px solid #8C8C8C; width: 250px; fo
nt-size: 9pt; padding: 2px; }
.importFriends .controls .message, .importFriends .controls .moreInfo { display:
block; font-size: 7pt; margin: 0px; color: #666666; font-weight: normal; }
.importFriends .controls .moreInfo { display: none; text-align: left; }
#whtMembers, #newMemebers
{ display: none; }
#whtMembers { padding-top: 10px; }
#whtUsers { padding: 10px; position: relative; zoom: 1; }
#whtUsers .whtUser { width: 200px; margin-left: 10px; margin-bottom: 15px; displ
ay: block; float: left; overflow: hidden; }
#whtUsers .whtUser .box { height: 88px; }
#whtUsers img { float: left; padding: 10px; width: 51px; height: 68px; }
#whtUsers a.userName { display: block; width: 115px; height: 41px; margin-bottom
: 5px; padding-top: 10px; padding-left: 4px; text-align: right; font-size: 9pt;
word-wrap: break-word; overflow: hidden; }
#whtUsers .btnFR { margin-right: 10px; }
#newMemebers .newContents { padding: 10px }
.tableWrap { position: relative; height: 324px; border: 1px solid #939393; margi
n: 10px 0px; }
table.altTable { margin: 0px; height: 323px; display: block; zoom: 1; }
table.altTable thead tr { background-color: #C4C4C4; border-bottom: 1px solid #B
2B2B2; }
table.altTable thead tr th { padding: 5px 0px; }
table.altTable thead tr th .friendEmail { border-right: 0px; }
table.altTable tr { display: block; width: 636px; clear: both; }
table.altTable tr td { display: block; overflow: hidden; word-wrap: break-word;
float: left; height: 20px; line-height: 20px; }
table.altTable tbody { display: block; }
table.altTable tbody tr td { border: 1px solid #B2B2B2; border-top: 0px; border-
left: 0px; font-size: 8pt; font-weight: bold; color: #3F3F3F; }
table.altTable .altRow td { background-color: #E3E3E3; }
table.altTable .checkAllTD { width: 51px; text-align: center; }
table.altTable .checkAllTD input { margin-top: 4px; }
table.altTable .friendName { width: 240px; padding-left: 5px; text-align: left;
}
table.altTable .friendEmail { width: 315px; padding-left: 5px; text-align: left;
}
table.altTable .scrollTable { height: 293px; overflow: -moz-scrollbars-vertical;
overflow-y: scroll; overflow-x: hidden; }
table.altTable .scrollTable tr { height: 20px; }
/* End Find Friends */
/* Forum Search Results */
.seeAllLinks { padding: 10px; }
.forumResults h4 { font-size: 14px; background-color: transparent; letter-spacin
g: normal; }
.threadList { font-size: 11px; }
.threadList .ftItem { height: 42px; background-image: url(/images/thread-bg.gif)
; background-repeat: repeat-x; }
.threadList .shortView,
.forumResults .seeAll { height: auto; background: none; font-size: 13px; line-he
ight: 18px; }
.forumResults .seeAll { font-weight: bold; line-height: 15px; }
.threadList .shortView a { font-size: 15px; display: block; line-height: 17px; }
.threadList .shortView .subtle,
.threadList .shortView .subtle a { color: #696969; font-size: 11px; font-style:
italic; display: inline; }
.threadList .shortView .subtle a:hover { color: #2ABBEF; }
.threadList .shortView .subtle { display: block; padding-bottom: 10px; }
.threadList .ftItem .ftPart { float: left; height: 35px; padding-top: 7px; }
.threadList .ftItem .ftPart span.tp,
.threadList .ftItem .ftPart span.bp { display: block; width: auto; height: 13px;
line-height: 13px; color: #696969; overflow: hidden; white-space: nowrap; }
.threadList .ftItem .ftPart span.bp a { color: #696969; }
.threadList .ftItem .ftPart h1,
.threadList .ftItem .ftPart h2,
.threadList .ftItem .ftPart h3 { margin: 0px; font-weight: normal; }
.threadList .ftItem .status { width: 25px; padding: 0 5px; }
.threadList .ftItem .status span.icon { display: block; width: 18px; height: 12p
x; margin: 14px auto 0; overflow: hidden; background-image: url(/images/forum_th
read_status.gif); }
.threadList .ftItem .status span.newPosts { background-position: 0px -29px; }
.threadList .ftItem .title { width: 347px; }
.threadList .ftItem .repliesViews { width: 90px; }
.threadList .ftItem .lastPost { width: 125px; }
.threadList .ftItem .goToLast { width: 25px; height: auto; margin-left: 5px; pad
ding-top: 13px; }
.threadList .ftItem .goToLast .btnLast span { line-height: 10px; font-size: 12px
; }
.threadListShort .ftItem .title { width: 233px; }
.threadListShort .ftItem .repliesViews { width: 70px; }
.threadListShort .ftItem .lastPost { width: 100px; }
.threadList .ftItem .ftPart span.date { font-size: 9px; }
/* End Forum Search Results */
/* Colors */
.colorUsers .menuList .selected li a,
.colorRecommend .menuList .selected li a,
.colorHOC .menuList .selected li a,
.colorFresh .menuList .selected li a,
.colorHot .menuList .selected li a,
.colorGems .menuList .selected li a,
.colorWW .menuList .selected li a,
.colorPlaylist .menuList .selected li a,
.colorWonderList .menuList .selected li a,
.colorWonderment .menuList .selected li a,
.colorBrowse .menuList .selected li a,
.colorHome .menuList .selected li a { background-color: #ffffff; }
.colorLiveEvent { color: #606B0E;}
/* End Colors */
/* Standard Buttons */
a.btnG, a.btnGG, a.btnR, a.btnRR, a.btnB, a.btnBB, a.btnGR, a.btnGRGR { display:
block; width: 60px; height: 20px; float: left; margin-right: 10px; overflow: vi
sible; position: relative; font-family: arial, sans-serif; font-size: 12px; line
-height: 20px; text-align: center; color: #FFFFFF; background: #202020; text-dec
oration: none; border: 1px solid #000000; zoom: 1; }
a.btnG em, a.btnGG em, a.btnR em, a.btnRR em, a.btnB em, a.btnBB em, a.btnGR em,
a.btnGRGR em, a.btnComb u { display: block; padding: 0px 10px; height: 21px; cu
rsor: pointer; font-style: normal; white-space: nowrap; position: relative; z-in
dex: 2; border-bottom: 1px solid #C4C4C4; margin: 0px; background: transparent;
color: inherit; overflow: hidden; font-family: arial, sans-serif; font-size: 11p
x; line-height: 20px; }
a.btnG i, a.btnGG i, a.btnR i, a.btnRR i, a.btnB i, a.btnBB i, a.btnGR i, a.btnG
RGR i { width: 100%; height: 9px; position: absolute; top: 0px; left: 0px; backg
round-color: #3F3F3F; border-top: 1px solid #4D4D4D; overflow: hidden; }
a.btnGG, a.btnG:hover { background: #49A514; text-decoration: none; border-color
: #098F03; color: #FFFFFF; } a.btnGG i, a.btnG:hover i { background: #6AB532; bo
rder-top-color: #8CC653; }
a.btnGG:hover { background: #6AB532; text-decoration: none; border-color: #49A51
4; color: #FFFFFF; } a.btnGG:hover i { background: #8CC653; }
a.btnBB, a.btnB:hover { background: #1EA5ED; text-decoration: none; border-color
: #0E85CD; color: #FFFFFF; } a.btnBB i, a.btnB:hover i { background: #00B4F3; bo
rder-top-color: #5BD1F0; }
a.btnBB:hover { background: #00B4F3; text-decoration: none; border-color: #1EA5E
D; color: #FFFFFF; } a.btnBB:hover i { background: #5BD1F0; }
a.btnRR, a.btnR:hover { background: #F41400; text-decoration: none; border-color
: #AC3333; color: #FFFFFF; } a.btnRR i, a.btnR:hover i { background: #FD4222; bo
rder-top-color: #FE6B44; }
a.btnRR:hover { background: #FD4222; text-decoration: none; border-color: #F4140
0; color: #FFFFFF; } a.btnRR:hover i { background: #FE6B44; }
a.btnGRGR, a.btnGR:hover { background: #E7E8E9; text-decoration: none; border-co
lor: #BEBFC2; color: #000000; } a.btnGRGR i, a.btnGR:hover i { background: #F2F2
F3; border-top-color: #FFFFFF; }
a.btnGRGR:hover { background: #00B4F3; text-decoration: none; border-color: #1EA
5ED; color: #FFFFFF; } a.btnGRGR:hover i { background: #5BD1F0; border-top-color
: #6AE0FF; } a.btnGRGR:hover em { border-bottom-color: #1EA5ED; }
a.btnSB { height: 30px; float: right; font-size: 13px; line-height: 30px; }
a.btnSB em { height: 31px; line-height: 30px; font-size: 17px; }
a.btnSB i { height: 14px; }
a.btnSL { height: 50px; float: right; font-size: 25px; line-height: 60px; border
-width: 2px; }
a.btnSL em { height: 52px; font-size: 30px; line-height: 49px; }
a.btnSL i { height: 23px; border-width: 2px; }
a.btnSS { height: 14px; float: right; font-size: 10px; line-height: 13px; }
a.btnSS em { height: 15px; font-size: 10px; line-height: 13px; }
a.btnSS i { height: 6px; }
a.btnH20 { height: 18px; }
a.btnH20 em { height: 18px; line-height: 18px; }
a.btnH20 i { height: 8px; }
a.btn16 { width: 16px; height: 16px; line-height: 16px; } a.btn16 em { padding:
0px; height: 17px; line-height: 16px; } a.btn16 i { height: 7px; }
a.btn22 { width: 22px; height: 20px; line-height: 20px; } a.btn22 em { padding:
0px; height: 21px; line-height: 20px; } a.btn16 i { height: 7px; }
a.btn40 { width: 40px; }
a.btn55 { width: 55px; }
a.btn80 { width: 80px; }
a.btn100 { width: 100px; }
a.btn110 { width: 110px; }
a.btn125 { width: 125px; }
a.btn145 { width: 145px; }
a.btn200 { width: 200px; }
a.btn300 { width: 300px; }
a.btnAW { width: auto; }
a.btnFW { width: auto; float: none; margin: 0px; }
.shaded a.btnFW { margin: 0px 10px; }
.drsh a.btnFW { margin: 6px 6px 0px 6px; }
a.btnID em, a.btnIU em, a.btnIN em, a.btnIL em, a.btnIR em, a.btnIE em, a.btnII
em, a.btnIS em, a.btnIP em, a.btnIO em, .shaded a.btnID em, .shaded a.btnIU em,
.shaded a.btnIN em, .shaded a.btnIL em, .shaded a.btnIR em, .shaded a.btnIE em,
.shaded a.btnII em, .shaded a.btnIS em, .shaded a.btnIP em, .shaded a.btnIO em,
a.btnEX em, a.btnCO em { background-image: url(/images/btn_icons2.gif); backgrou
nd-repeat: no-repeat; text-indent: 18px; text-align: left; }
a.btnID em { background-position: 0px 0px; }
a.btnIU em { background-position: 0px -16px; }
a.btnIN em { background-position: 0px -32px; }
a.btnIR em { background-position: 0px -48px; }
a.btnIL em { background-position: 0px -64px; }
a.btnIE em { background-position: 0px -80px; }
a.btnII em { background-position: 0px -96px; }
a.btnIS em { background-position: 0px -112px; }
a.btnIP em { background-position: 0px -128px; }
a.btnIO em { background-position: 0px -144px; }
/* Override icon image */
a.btnEX em, a.btnCO em { background-image: url(/images/wht_button_expand_down.gi
f); background-position: 1px 2px; }
a.btnCO em { background-position: 1px 5px; -moz-transform: scaleY(-1); -webkit-t
ransform: scaleY(-1); transform: scaleY(-1); filter: flipv; /*IE*/ }
a.btnComb u { position: relative; display: block; float: left; padding: 0 10px;
text-decoration: none; }
a.btnComb em { display: block; float: right; }
a.btnTU, a.btnTD, a.btnFV, a.btnUNFV, a.btnFG { border: 0; }
a.btnTU em, a.btnTD em, a.btnFV em, a.btnUNFV em, a.btnFG em, a.btnSHR em { heig
ht: 20px; background-image: url(/images/wht_content_social_buttons.gif); backgro
und-repeat: no-repeat; text-indent: 22px; text-align: left; border: 0; }
a.btnSHR em { text-indent: 0; }
a.btnTU em { background-position: -93px 0px; }
a.btnTU:hover em { background-position: -93px -24px; }
a.btnTD em { background-position: -115px 0px; }
a.btnTD:hover em { background-position: -115px -24px; }
a.btnFV em { background-position: -137px 0px; }
a.btnFV:hover em { background-position: -137px -24px; }
a.btnUNFV em { background-position: -137px -24px; }
a.btnUNFV:hover em { background-position: -159px -24px; }
a.btnFG em { background-position: -181px 0px; }
a.btnFG:hover em { background-position: -181px -24px; }
a.btnSHR em { background-position: 0px -1px; }
a.btnSHR:hover { background: #E7E8E9; border-color: #BEBFC2; color: #000000; }
a.btnSHR:hover i { background: #F2F2F3; border-top-color: #FFFFFF; }
a.btnSHR:hover em { background-position: 0px -25px; }
a.btnFR { float: right; margin-left: 10px; margin-right: 0px; }
a.btnFL { float: left; }
a.btnC { float: none; margin-left: auto; margin-right: auto; }
a.btnNM { margin: 0px; }
a.btnD, a.btnD i, a.btnD:hover, a.btnD:hover i { background-color: #B4B4B4; colo
r: #969696; border-color: #B4B4B4; cursor: default; }
a.btnD em { cursor: default; }
a.btnNS em { border-bottom: 0px; }
a.hide { display:none; }
/* End Standard Buttons */
/* Report */
.report { width: 100%; }
.report td { border-bottom: 1px solid #ECECEC; background-color: #FFFFFF; paddin
g: 2px 6px; line-height: 1.2em; }
.report tr:hover td, .report tr.o:hover td { background-color: #1EA5ED; color: #
FFFFFF; }
.report tr:hover td a, .report tr.o:hover td a { color: #FFFFFF; text-decoration
: underline; }
.report tr td .btnNS, .report tr.o td .btnNS { visibility: hidden; }
.report tr:hover td .btnNS, .report tr.o:hover td .btnNS { visibility: visible;
}
.report tr.h td { border-bottom: 2px solid #1EA5ED; color: #4D4D4D; font-weight:
bold; }
.report tr.h td strong { color: #000000; }
.report tr.h td, .report tr.o td { background-color: #F5F5F5; }
/* End Report */
/* New Bubble */
span.newBubble, span.newBubble i, span.newBubble b, span.newBubble em { position
: absolute; display: block; width: 12px; height: 24px; top: 0px; left: 0px; over
flow: hidden; min-height: 1px; border: none; background-color: transparent; zoom
: 1; }
span.newBubble { top: -6px; left: auto; right: -6px; width: 24px; z-index: 3; }
span.newBubble b { left: auto; right: 0px; background-image: url(/images/new_cou
nt_bubble_right.png); }
span.newBubble i b {left: 0px; right: auto; background-image: url(/images/new_co
unt_bubble_left.png); width: 60px; }
span.newBubble em { width: 100%; z-index: 2; color: #FFFFFF; font-size: 11px; li
ne-height: 20px; text-align: center; font-style: normal; font-weight: bold; text
-decoration: none; cursor: default; }
span.newArticles { left: 556px; top: -10px; }
span.newArticles em { cursor: pointer; }
span.newArticles a,
span.newArticles a:hover { display: block; width: 24px; height: 24px; background
-image: none; margin: 0; position: relative; cursor: pointer; overflow: hidden;
}
a span.newBubble em { cursor: inherit; }
.tabs a span.newBubble, .tabs a:hover span.newBubble, .tabs a.hovered span.newBu
bble { border: 0px; position: absolute; z-index: 5; }
.tabs a.hovered span.newBubble i, .tabs a:hover span.newBubble i, .tabs a strong
span.newBubble i { background: transparent; }
span.nbW2 i { width: 18px; }
span.nbW3 i { width: 24px; }
span.nbW2, span.nbW4 i { width: 30px; }
span.nbW3, span.nbW5 i { width: 36px; }
span.nbW4, span.nbW6 i { width: 42px; }
span.nbW5, span.nbW7 i { width: 48px; }
span.nbW6 { width: 54px; }
span.nbW7 { width: 60px; }
span.nbW5 { right: -3px; top: 18px; }
.featuredWorlds h2 span.nbW5 { right: auto; left: 138px; top: 2px; visibility: v
isible; text-decoration: none; }
/* Pin */
.pinButton { display: block; text-decoration: none; width: 30px; height: 40px; p
osition: absolute; right: -25px; top: -23px; cursor: pointer; }
.pinButton i, .pinButton b, .pinButton span { position: absolute; display: block
; overflow: hidden; background-position: 0 0; background-repeat: no-repeat; font
-size: 0; }
.pinButton i { top: 26px; right: 21px; z-index: 200; width: 4px; height: 5px; ba
ckground-image: url(/images/pin_point.png); }
.pinButton b { top: 10px; right: 6px; z-index: 201; width: 20px; height: 19px; b
ackground-image: url(/images/pin_bottom_yellow.png); }
.pinButton span { top: 2px; right: 0px; z-index: 202; width: 16px; height: 14px;
background-image: url(/images/pin_top_yellow.png); }
.pinButton strong { top: 0px; right: 0px; z-index: 203; width: 30px; height: 40p
x; position: absolute; background-image: url(/images/clear.gif); display: block;
}
/* End Pin */
/* Hover Prompt */
.hoverPrompt { display: none; width: 320px; height: 86px; position: absolute; z-
index: 100; right: 0px; top: -10px; overflow: hidden; }
.hoverPrompt .bg { position: absolute; top: 0px; right: 0px; width: 320px; heigh
t: 86px; z-index: -1; background: url(/images/hover_prompt_bg.png) no-repeat; }
.hoverPrompt .prompt { width: 301px; height: 66px; padding: 9px 10px 11px 9px; p
osition: absolute; top: 0px; left: 0px; z-index: 2; background: url(/images/clea
r.gif); }
.hoverPrompt .promptLoading { width: 301px; height: 66px; background: url(/image
s/progress_star.gif) no-repeat center center; }
.hoverPrompt select { font-size: 12px; width: 160px; }
/* End Hover Prompt */
/* Love Earn */
.loveEarnMain { margin-bottom: 30px; }
.loveEarnMain a { display: block; width: 644px; height: 250px; outline: none; ba
ckground-image: url(/images/love_earn.jpg); background-position: 0 0; background
-repeat: no-repeat; }
.loveEarn { position: relative; margin: 0 -10px; padding: 170px 190px 20px; back
ground-image: url(/images/wht_love_earn_about.png); background-position: top cen
ter; background-repeat: no-repeat; }
.loveEarn a { color: #2ABBEF; font-family: Verdana, Arial, Sans-Serif; }
.loveEarn a:hover { text-decoration: underline; }
.loveEarn p { position: relative; color: #000000; margin-bottom: 15px; }
.loveEarn p.top { font-size: 16px; text-shadow: 0 0 5px #FFF; }
.loveEarn p i { display: block; position: absolute; width: 67px; height: 51px; r
ight: -65px; top: -24px; background-image: url(/images/wht_love_earn_about_100pe
rcent.png); background-position: 0px 0px; background-repeat: no-repeat; }
.loveEarn .extraPad { margin-bottom: 25px; }
.loveEarn .noPad { margin-bottom: 0px; }
.loveEarn .lf { float: left; width: 310px; }
.loveEarn .rt { float: right; width: 260px; padding-right: 15px; }
.loveEarn ol { margin: 0 0 11px 14px; font-size: 11px; font-family: verdana,aria
l,sans-serif; }
.loveEarn ol li { line-height: 20px; }
.loveEarn ul { margin-top: 0; margin-bottom: 0; }
/* End Love Earn */
/* Feature Box */
.featureBox { text-align: center; }
.featureBox .line { display: block; width: 800px; height: 0px; border-bottom: 2p
x solid #C4C4C4; margin: 0 auto; position: relative; top: 20px; overflow: hidden
; font-size: 0; }
.featureBox h1 { margin: 0; padding: 0 10px; font-weight: normal; font-size: 37p
x; line-height: 36px; position: relative; z-index: 2; background-color: #FFFFFF;
display: inline; letter-spacing: -0.03em; cursor: default; }
.featureBox ul { margin-top: 0; margin-bottom: 0; }
.featureBox li { padding-bottom: 10px; padding-top: 5px; padding-left: 0.3em; }
.featureBox li.icon { list-style: none; margin-left: -2em; padding-left: 2.3em;
position: relative; }
.featureBox li.icon span { display: block; position: absolute; left: 0; top: 3px
; width: 24px; height: 24px; background-image: url(/images/editor_icons.gif); ba
ckground-repeat: no-repeat; overflow: hidden; }
.featureBox li.icon span.iconHeader { background-position: 0 0; top: 12px; }
.featureBox li.icon span.iconBullet { background-position: -24px 0; }
.featureBox li.icon span.iconLink { background-position: -48px 0; }
.featureBox li.icon span.iconBold { background-position: -72px 0; }
.featureBox li.icon span.iconImage { background-position: -96px 0; top: 12px; }
.featureBox li.icon span.iconGallery { background-position: -120px 0; }
.featureBox li.icon span.iconVideo { background-position: -144px 0; top: 12px; }
.featureBox .left, .featureBox .right { width: 416px; padding: 10px 30px 0; text
-align: left; font-size: 13px; font-family: verdana, sans-serif, arial; line-hei
ght: 150%; color: #4D4D4D; }
.featureBox .left { float: left; }
.featureBox .right { float: right; }
.featureBox .em h2 { background-color: transparent; }
.rightFeatureBox { text-align: left; font-size: 11px; color: #696969; }
.rightFeatureBox li.icon { padding-left: 32px; padding-top: 10px; }
/* End Feature Box */
/* Featured Worlds */
.relatedWorld .info,
.relatedWorld .posts { width: 300px; float: left; }
.relatedWorld .posts { float: right; }
.relatedWorld ul li img { width: 130px; height: 60px; }
.relatedWorld ul li a { height: auto; }
.relatedWorld .wwRotator { padding-bottom: 10px; }
/* End Featured Worlds */
/* Wizard Progress */
.wizardProgress .wizStep { float: left; height: 38px; position: relative; paddin
g-left: 35px; }
.wizardProgress .wizStep i { display: block; position: absolute; top: 0; left: 0
; width: 35px; height: 38px; background-image:url(http://img.wonderhowto.com/ima
ges/world_wizard_bar_arrow.gif); background-repeat: no-repeat; background-positi
on: 0 -38px; overflow: hidden; }
.wizardProgress .wizStep b { display: block; position: absolute; top: 0; right:
0; width: 47px; height: 38px; background-image:url(http://img.wonderhowto.com/i
mages/world_wizard_bar_end.gif); background-repeat: no-repeat; background-positi
on: 0 0; overflow: hidden; }
.wizardProgress .wizStep em { display: block; float: left; height: 38px; line-he
ight: 38px; color: #FFFFFF; font-style: normal; font-family: arial, sans-serif;
font-size: 24px; letter-spacing: -0.03em; cursor: default; }
.wizardProgress .isFirstisPast, .wizardProgress .isFirstisActive { padding-left:
20px; }
.wizardProgress .isFirstisPast i, .wizardProgress .isFirstisActive i { backgroun
d-image: url(http://img.wonderhowto.com/images/world_wizard_bar_start.gif); }
.wizardProgress .isFirstisActive i { background-position: 0 0; }
.wizardProgress .isLast { padding-right: 47px; }
.wizardProgress .isPast em, .wizardProgress .isFirstisPast em { background: #28B
2E6; }
.wizardProgress .isActive em, .wizardProgress .isFirstisActive em { background:
#0E85CD; }
.wizardProgress .isNext em { background: url(http://img.wonderhowto.com/images/w
orld_wizard_bar_gray.gif) repeat-x 0 0; }
.wizardProgress .isLater em { background: url(http://img.wonderhowto.com/images/
world_wizard_bar_gray.gif) repeat-x 0 0; }
.wizardProgress .isActive b { background-position: 0 -38px; }
.wizardProgress .isNext i { background-position: 0 0; }
.wizardProgress .isActive i { background-position: 0 -76px; }
.wizardProgress .isPast i { background-position: 0 -114px; }
/* End Wizard Progress */
/* Social Network Settings */
#snsTable { padding: 10px 0 10px 10px; }
.snSettings { width: 100%; }
.snSettings tr { width: 100%; }
.snSettings tr.snsHeader { color: #000000; font-size: 15px; font-weight: bold; }
.snSettings td { text-align: center; padding: 3px 0; margin: 1px; border-left: 1
px solid #E6E3E3; }
.snSettings td.lbl { text-align: left; color: #000000; border: 0px; padding-left
: 10px; }
.snSettings tr.snsHeader td { border-left: 0px; }
.snSettings tr.snsStatus td { border-bottom: 1px solid #E6E3E3; padding-bottom:
5px; border-left: 0px; }
.snSettings tr.snsStatus td.lbl { vertical-align: bottom; padding-left: 0; }
#nlHeader, #nlContent { display: none; }
#nlHeader td { padding-top: 10px; }
/* End Social Network Settings */
#promptForFBConnect { padding-top: 20px; text-align: center; line-height: 20px;
}
.fbConnBig { display: block; width: 400px; height: 82px; margin: 0 auto; overflo
w: hidden; background: url(/images/facebook_login_button_big.jpg) no-repeat 0 0;
}
.fbConnBig:hover { background-position: 0 -82px; }
.ieMessage { padding-left: 10px; }
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline; filename=article_page.css
Content-Type: text/css; charset=utf-8; name=article_page.css
Content-Location: http://img.wonderhowto.com/css/article_page.css?v=0902102
Content-Transfer-Encoding: 8bit
/* Toolbar */
.yui-toolbar-container { display: none; }
#toolbarArea { display: block; position: relative; height: 24px; z-index: 1000;
}
#toolbarArea iframe { z-index: 1000; }
/* End Toolbar */

/* New Article */
.newArticle { padding: 10px 10px 0; }
.newArticle .articleTitleField { width: 725px; height: 50px; line-height: 50px;
padding-left: 5px; font-size: 30px; border: 2px solid #1EA5ED; }
.htArticle span { line-height: 30px; font-size: 24px; margin: 30px 0; padding-ri
ght: 5px; position: relative; zoom: 1; }
.htArticle .articleTitleField { width: 530px; position: relative; zoom: 1; }
.newArticle .permissions { font-size: 13px; padding-bottom: 10px; }
.newArticle .permissions .label { padding: 0 20px; }
.newArticle .permissions strong { display: block; padding: 0 0 10px 0; }
.newArticle .permissions input { margin: 0 0 10px 10px; }
/* End New Article */

/* Article Styling */
.articleMargins { padding: 0px 1px; }
.articleMargins p, .articleMargins li, .articleMargins td, .articleMargins div,
.articleMargins span, .articleMargins a { font-size: 9pt; line-height: 160%; fon
t-family: verdana, arial, sans-serif; }
.articleMargins p, .articleMargins ul { padding: 0; margin: 0.5em 20px 1.5em 20p
x; color: #000000; }
.articleMargins strong,
.articleMargins strong em,
.articleMargins strong a,
.articleMargins strong span { font-weight: bold !important; font-style: inherit;
}
.articleMargins a { color: #2ABBEF; }
.articleMargins a:hover { text-decoration: underline; }
.articleMargins li { margin-bottom: 1em; margin-left: 1em; }
.articleMargins h1 { font-size: 24px; display: block; padding: 0 0 5px 0; margin
: 10px 20px 10px 20px; }
.articleMargins h2, .articleMargins h3, .articleMargins h4 { font-family: arial,
sans-serif; font-size: 19px; font-weight: normal; display: block; padding: 2px
5px 1px 18px; margin: 20px 10px 10px 0px; border-bottom: 2px solid #696969; curs
or: default; color: #000000; clear: both; letter-spacing: -0.03em; }
.articleMargins h2 span, .articleMargins h3 span, .articleMargins h4 span { font
-family: inherit; line-height: normal; }
.articleMargins h2 span { font-size: inherit; }
.articleMargins h2 em, .articleMargins h3 em, .articleMargins h4 em { font-style
: normal; color: #646464; font-size: 0.7em; padding-left: 5px; }
.articleMargins h2.step { border-color: #2ABBEF; margin-left: 0px; padding-left:
0px; color: #FFFFFF; overflow: hidden; }
.articleMargins h2.step .stepNumber { margin-right: 0px; font-size: 28px; line-h
eight: 22px; padding: 0 8px 0 8px; background-color: #2ABBEF; letter-spacing: -5
px; font-weight: normal; font-family: arial, sans-serif; }
.articleMargins h2.step .stepNumber span { font-size: 11px; letter-spacing: norm
al; }
.articleMargins h2.step .stepText { color: #000000; font-size: 15px; font-weight
: normal; margin-left: 12px; letter-spacing: normal; font-family: verdana, arial
, sans-serif; }
.articleMargins h4.articleTip { border-bottom: 2px solid #ED641F; color: #ED841F
; }
.articleMargins h4.articleWarning { border-bottom: 2px solid #9D0409; color: #ED
241F; }
.articleMargins table { width: 628px; margin: 0px 20px 10px 20px; border: 0px; }
.articleMargins table td { border: 0px; padding: 2px; color: #2D2D2D; }
.articleMargins table .num { width: 70px; padding-right: 10px; text-align: right
; }
.articleMargins .sh { width: 628px; margin-left: 20px; }
.articleMargins .box p { margin: 0.5em 15px 1em 15px; }
.articleMargins .textBlock img { border: 5px solid #E3E3E3; background: #696969
url(http://img.wonderhowto.com/images/progress_star_dark.gif) no-repeat center c
enter; }
.articleMargins .textBlock img.imgRight { float: right; margin: 5px 20px 5px 10p
x; clear: both; }
.articleMargins .textBlock img.imgLeft { float: left; margin: 5px 40px 5px 10px;
clear: both; }
.articleMargins .textBlock img.imgCenter { float: none; clear: both; margin: 10p
x auto; display: block; }
.articleMargins .textBlock img.imgCenterFull { margin: auto; clear: both; }
.articleMargins .imgRight { float: right; margin: 5px 20px 5px 10px; }
.articleMargins .imgLeft { float: left; margin: 5px 10px 5px 40px; }
.articleMargins pre { margin: 0.5em 20px 1.5em 20px; padding: 0.5em 1em; backgro
und-color: #FFFFFF; font-size: 8pt; overflow-x: auto; }
.wordCount { font-size: 12px; line-height: 21px; padding: 0 5px; float: right; }
.tooShort { color: #E40000; }
/* Override for blog posts and resources */
.blogPost .articleMargins .textBlock img { border-color: #FFFFFF; }
.blogPost .articleMargins a { color: #0E85CD; }
.articleMargins p.attribution, .articleMargins p.attribution a { font-size: 9px;
line-height: 10px; color: #969696; font-family: arial, sans-serif; }
.articleMargins p.attribution { position: absolute; top: 128px; left: 245px; wid
th: 358px; border-top: 1px solid #C4C4C4; display: block; padding-top: 5px; }
.articleMargins p.attribution a { text-decoration: underline; }
ol.numberedList li { list-style-type: decimal; }
ol.letteredList li { list-style-type: upper-alpha; }
span.ulText { text-decoration: underline; }
/* End Article Styling*/

/* Editor */
.docXEditor { z-index: 1; overflow: hidden; position: relative; }
.docXEditor .docPart { position: relative; }
.editMode { border-bottom: 1px solid #999999; background-color: #FFFFFF; }
.docXEditor .editorTA { display: none; }
.docXEditor iframe { width: auto; overflow: hidden; }
.docXEditor .articleAdUnit iframe { width: inherit; }
.docXEditor .imageAlignLinks { display: block; position: absolute; width: auto;
height: 20px; padding: 0 5px; background-color: #FFFFFF; border: 1px solid #8787
87; opacity: 0.5; }
.docXEditor .imageAlignLinks a { outline: none; }
.docXLoading { overflow: hidden; background-color: #FFFFFF; } /* When changing h
eight of this elt, make sure to update _toggleParent method in docX_editor.js */
.docXLoading .docPart { position: absolute; top: -9999px; left: -9999px; }
/* Media Gallery */
.mediaGallery { padding: 20px 39px 10px; color: #FFFFFF; font-size: 10pt; }
.editMode .mediaGallery { padding-bottom: 10px; border-top: 1px solid #E7ECEC; b
order-bottom: 1px solid #E7ECEC; background-color: #FFFFFF; }
.mediaGallery .itemContent { background: #696969 url(/images/progress_star_dark.
gif) no-repeat center center; }
.mediaGallery a { outline: none; }
.mediaGallery .contentArea .newItems, .mediaGallery .contentArea .addImage, .med
iaGallery .contentArea .addVideo { display: none; }
.mediaGallery .contentArea,
.mediaGallery .contentArea .itemContent { position: relative; width: 532px; min-
height: 250px; height: auto !important; height: 250px; margin: 0 auto; }
.mediaGallery .addImage .field br { display: none; }
.mediaGallery .contentArea .innerContent { text-align: center; margin: auto; }
.mediaGallery .addVideo,
.mediaGallery .addImage,
.mediaGallery .newItems { background-color: #6A6A6A; padding: 0px 35px 0px; back
ground-image: url(/images/grey_gradient_bg.jpg); background-repeat: repeat-x; }
.mediaGallery .contentArea .innerContent .itemVideo { padding: 0px 0px; }
.mediaGallery .addImage { height: 393px; padding-top: 45px; }
.mediaGallery .addVideo { height: 418px; padding-top: 20px; }
.mediaGallery .addVideo .whtVideos .whtThumbnail { float: left; margin: 0 6px; w
idth: 80px; height: 95px; }
.mediaGallery .addVideo .whtVideos .whtThumbnail img { display: block; border: 2
px solid transparent; width: 80px; height: 60px; }
.mediaGallery .addVideo .whtVideos a.selected img { border-color: #1EA5ED; }
.mediaGallery .addVideo .whtVideos .whtThumbnail span { display: block; font-siz
e: 9px; height: 24px; line-height: 12px; color: #FFFFFF; margin: 2px 0px; overfl
ow: hidden; }
.mediaGallery .addImage .skinnyForm,
.mediaGallery .addImage .virtualForm,
.mediaGallery .addImage .virtualForm .innerForm,
.mediaGallery .addImage .virtualForm .innerForm .field,
.mediaGallery .addImage .virtualForm .uploadPlaylistImageForm { width: auto; pad
ding: 0px; margin: 0px; }
.mediaGallery .addImage .virtualForm { padding-top: 0px; margin-top: 0px; border
: 0px; background-color: transparent; }
.mediaGallery .addImage .formMessage { display: none; }
.mediaGallery .addImage .importImage { padding-top: 15px; }
.mediaGallery .addImage .flickrImageList { padding-top: 15px; }
.mediaGallery .addVideo a,
.mediaGallery .addImage a { color: #FFFFFF; }
.mediaGallery .imageCredit { color: #696969; text-align: right; }
.mediaGallery .addVideo .urlVideo .videoLoading { display: none; width: 16px; he
ight: 16px; float: right; background-image: url(/images/progress_star_dark.gif);
background-position: center center; background-repeat: no-repeat; }
.mediaGallery .addVideo .urlVideo .videoImport,
.mediaGallery .whtVideoKeywords .videoKeywords { width: 462px; height: 17px; pad
ding-top: 2px; display: block; color: #FFFFFF; border: 1px solid #BDBFC1; backgr
ound-image: url(/images/dark_text_box_bg.gif); background-repeat: repeat-x; }
.mediaGallery .addVideo .supportedSites { height: 50px; padding-top: 3px; }
.mediaGallery .addVideo .supportedSites a { display: block; width: 133px; height
: 16px; line-height: 15px; padding-left: 21px; margin: 10px 0px; font-size: 11pt
; color: #44BDFF; float: left; background-image: url(/images/embedded_sprite.gif
); background-repeat: no-repeat; }
.mediaGallery .addVideo .supportedSites a.yt { background-position: 0px 0px; }
.mediaGallery .addVideo .supportedSites a.rev { background-position: 0px -16px;
}
.mediaGallery .addVideo .supportedSites a.fiv { background-position: 0px -32px;
}
.mediaGallery .addVideo .supportedSites a.hc { background-position: 0px -48px; }
.mediaGallery .addVideo .supportedSites a.mc { background-position: 0px -64px; }
.mediaGallery .addVideo .supportedSites a.ms { background-position: 0px -80px; }
.mediaGallery .addVideo .supportedSites a.ab { background-position: 0px -96px; }
.mediaGallery .addVideo .supportedSites a.ic { background-position: 0px -112px;
}
.mediaGallery .addVideo .supportedSites a.scl { background-position: 0px -128px;
}
.mediaGallery .addVideo .supportedSites a.ls { background-position: 0px -144px;
}
.mediaGallery .addVideo .supportedSites a.vim { background-position: 0px -160px;
}
.mediaGallery .addVideo .supportedSites a.edod { background-position: 0px -176px
; }
.mediaGallery .addVideo .urlVideo span { display: block; padding-bottom: 4px; }
.mediaGallery .whtVideoKeywords .whtVideoLabel { display: block; height: 33px; l
ine-height: 45px; padding-bottom: 2px; }
.mediaGallery .whtVideoKeywords .whtVideoLabel span { display: block; float: lef
t; width: 16px; height: 33px; margin-right: 5px; background-image: url(/images/w
onder_dude_small.gif); background-repeat: no-repeat; background-position: 0px 0p
x; }
.mediaGallery .whtVideoKeywords .videoKeywords { display: inline; width: 278px;
margin-right: 10px; float: left; }
.mediaGallery .whtVideoKeywords .videoImportButton { position: relative; margin-
right: 0px !important; }
.mediaGallery .addVideo .whtVideos { height: 190px; padding-top: 20px; }
.mediaGallery .addVideo .loading { background-image: url(/images/progress_star_d
ark.gif); background-position: center center; background-repeat: no-repeat; }
.mediaGallery .paging { float: right; line-height: 19px; padding: 2px 0 0; }
.mediaGallery .paging span { float: right; padding: 0 5px; }
.mediaGallery .paging a { margin: 1px 0 0; }
.mediaGallery .paging a.hide { visibility: hidden; }
.editMode .mediaGallery .flickrPaging { width: 135px; }
.mediaGallery .virtualForm span, .mediaGallery .virtualForm label { font-size: 9
.5pt; }
.mediaGallery .virtualForm .flickrArea .loading { background-image: url(/images/
progress_star_dark.gif); }
.mediaGallery .virtualForm .flickrArea .importInput,
.mediaGallery .virtualForm .flickrArea { width: 462px; }
.mediaGallery .virtualForm .importInput,
.mediaGallery .virtualForm .flickrArea .flickrTags { color: #FFFFFF; height: 17p
x; background-image: url(/images/dark_text_box_bg.gif); background-repeat: repea
t-x; }
.mediaGallery .virtualForm .flickrArea .flickrTags { width: 225px; }
.mediaGallery .virtualForm .flickrArea .flickrLabel { padding-top: 15px; display
: block; }
.virtualForm .flickrArea .loading { height: 150px; }
.mediaGallery .addVideo .cancelItemEdit,
.mediaGallery .addImage .cancelItemEdit { position: absolute; left: 10px; top: 4
23px; }
.mediaGallery .addVideo .newVideoSave,
.mediaGallery .addImage .saveImage { position: absolute; left: 452px; top: 423px
; /* margin-right: -40px; */ }
.mediaGallerySingle .addVideo .cancelItemEdit { display: none; }
.mediaGallery .contentArea .newItems { height: 438px; }
.mediaGallery .contentArea .newItems .clickToInsert { font-size: 14pt; text-alig
n: center; padding-top: 110px; padding-bottom: 30px;}
.mediaGallery .contentArea .newItems a { display: block; width: 168px; height: 1
56px; float: left; background-image: url(/images/gallery_add_media_buttons.png);
}
.mediaGallery .contentArea .newItems a.addVideoLink { background-position: 0px -
159px; margin-left: 20px; }
.mediaGallery .contentArea .newItems a.addVideoLink:hover { background-position:
0px 0px; }
.mediaGallery .contentArea .newItems a.addImageLink { background-position: -170p
x -159px; }
.mediaGallery .contentArea .newItems a.addImageLink:hover { background-position:
-170px 0px; }
.mediaGallery .contentArea .newItems span { display: block; width: 76px; height:
156px; line-height: 156px; text-align: center; float: left; font-size: 14pt; }
.mediaGallery .contentArea .prevGalleryItem,
.mediaGallery .contentArea .nextGalleryItem { position: absolute; display: block
; width: 37px; top: 5px; height: 95%; }
.mediaGallery .contentArea .prevGalleryItem { left: -47px; }
.mediaGallery .contentArea .nextGalleryItem { left: 542px; }
.mediaGallery .contentArea a.prevGalleryItem i,
.mediaGallery .contentArea a.nextGalleryItem i { position: relative; display: bl
ock; width: 24px; height: 24px; top: 195px; background-image: url(/images/big_ar
row_button.gif); }
.mediaGallery .contentArea a.disabled { cursor: default; }
.mediaGallery .contentArea a.prevGalleryItem i { background-position: 0px 0px; l
eft: 14px; }
.mediaGallery .contentArea a.prevGalleryItem:hover i { background-position: 0px
-24px; }
.mediaGallery .contentArea a.prevGalleryItem i.disabled { background-position: 0
px -48px; cursor: default; }
.mediaGallery .contentArea a.nextGalleryItem i { background-position: -24px 0px;
left: 0px; }
.mediaGallery .contentArea a.nextGalleryItem:hover i { background-position: -24p
x -24px; }
.mediaGallery .contentArea a.nextGalleryItem i.disabled { background-position: -
24px -48px; cursor: default; }
.mediaGallerySingle .contentArea a.nextGalleryItem,
.mediaGallerySingle .contentArea a.prevGalleryItem { display: none; }
.mediaGallery .itemCredits,
.mediaGallery .captionText { min-height: 15px; height: auto !important; height:
15px; width: 522px; line-height: 14px; padding: 5px; margin: 0 auto; }
.mediaGallery .itemCredits { background-color: #FFFFFF; }
.mediaGallery .itemCredits a, .mediaGallery .itemCredits div { font-size: 8pt; f
ont-family: arial, sans-serif; }
.mediaGallery .itemCredits .whtVideo { color: #4B4B4B; float: left; }
.mediaGallery .itemCredits .whtVideo span { display: block; float: left; width:
9px; height: 13px; padding-right: 5px; background-image: url(/images/tiny_wonder
dude_head.gif); background-repeat: no-repeat; }
.mediaGallery .itemCredits .creditText { color: #CCCCCC; float: right; }
.mediaGallery .itemCredits .creditText a { color: #1EA5ED; }
.mediaGallery .captionText { height: 15px; color: #000000; font-size: 8pt; backg
round-color: #FFFFFF; }
.editMode .mediaGallery .itemCaption { min-height: 15px; height: auto !important
; }
.editMode .mediaGallery .itemCredits, .editMode .mediaGallery .captionText { bac
kground-color: #F5F5F5; }
.mediaGallery .itemLinkList { margin: 0 auto; padding-top: 10px; width: 532px; }
.mediaGallery .itemLinkList .itemLink { position: relative; float: left; width:
82px; height: 70px; margin-right: 6px; }
.mediaGallery .itemLinkList .itemLinkLast { margin-right: 0px; }
.mediaGallery .itemLinkList .galleryVideo a i { display: block; position: absolu
te; width: 16px; height: 11px; left: 66px; top: 55px; background-image: url(/ima
ges/corner_video_icon.png); background-repeat: no-repeat; background-position: 0
px -11px; }
.mediaGallery .itemLinkList .galleryVideo a:hover i { background-position: 0px 0
px; }
.editMode .mediaGallery .itemLinkList .itemLink { padding-bottom: 30px; }
.mediaGallery .itemLinkList .itemLink a.itemThumb { display: block; width: 82px;
height: 62px; border-top: 4px solid #FFFFFF; border-bottom: 4px solid #FFFFFF;
}
.mediaGallery .itemLinkList .itemLink a.itemThumb:hover,
.mediaGallery .itemLinkList .itemLink a.selectedThumb,
.mediaGallery .itemLinkList .itemLink a.selectedThumb:hover { border-color: #1EA
5ED; }
.mediaGallery .itemLinkList .itemLink a { font-size: 8pt; }
.mediaGallery .itemLinkList .itemLink .thumbControls { position: absolute; displ
ay: none; top: 75px; width: 88px; height: 21px; }
.mediaGallery .itemLinkList .itemLink a.moveItem { position: relative; display:
block; background-image: url(/images/button_blue_arrow_sm.gif); width: 20px; hei
ght: 21px; float: left; }
.mediaGallery .itemLinkList .itemLink a.moveLeft { background-position: 0px 0px;
}
.mediaGallery .itemLinkList .itemLink a.moveLeft:hover { background-position: 0p
x -21px; }
.mediaGallery .itemLinkList .itemLink a.moveLeftDisabled,
.mediaGallery .itemLinkList .itemLink a.moveLeftDisabled:hover { left: 0px; curs
or: default; background-position: 0px -42px; }
.mediaGallery .itemLinkList .itemLink a.moveRight { background-position: -20px 0
px; }
.mediaGallery .itemLinkList .itemLink a.moveRight:hover { background-position: -
20px -21px; }
.mediaGallery .itemLinkList .itemLink a.moveRightDisabled,
.mediaGallery .itemLinkList .itemLink a.moveRightDisabled:hover { cursor: defaul
t; background-position: -20px -42px; }
.mediaGallerySingle .itemLinkList .itemLink .thumbControls .moveItem { display:
none; }
.mediaGallery .itemLinkList .itemLink a.editLink,
.mediaGallery .itemLinkList .itemLink a.removeLink { position: relative; display
: block; width: 23px; height: 23px; overflow: hidden; background-image: url(/ima
ges/edit_delete_buttons.gif); float: left; }
.mediaGallery .itemLinkList .itemLink a.editLink { background-position: -23px 0p
x; }
.mediaGallery .itemLinkList .itemLink a.editLink:hover { background-position: -2
3px -23px; }
.mediaGallery .itemLinkList .itemLink a.removeLink { background-position: 0px 0p
x; }
.mediaGallery .itemLinkList .itemLink a.removeLink:hover { background-position:
0px -23px; }
.mediaGallery .itemLinkList .newGalleryItem,
.editMode .mediaGallery .itemLinkList .newGalleryItem { margin: 0px; border: 1px
dashed #000000; width: 78px; height: 62px; padding: 2px; top: 2px; }
.mediaGallery .itemLinkList .newGalleryItem div { position: relative; height: 62
px; background-color: #CCCCCC; padding: 0px 6px; }
.mediaGallery .itemLinkList .newGalleryItem div a { position: relative; display
: block; width: 72px; height: 24px; background-image: url(/images/gallery_add_me
dia_buttons_sm.gif); background-repeat: no-repeat; }
.mediaGallery .itemLinkList .newGalleryItem div a.addImageLink { top: 5px; backg
round-position: 0px -48px; }
.mediaGallery .itemLinkList .newGalleryItem div a.addImageLink:hover { backgroun
d-position: 0px -72px; }
.mediaGallery .itemLinkList .newGalleryItem div a.addVideoLink { top: 10px; back
ground-position: 0px 0px; }
.mediaGallery .itemLinkList .newGalleryItem div a.addVideoLink:hover { backgroun
d-position: 0px -24px; }
.removeGallery { margin-bottom: 3px; }
#uploadFormHolder { display: none; }

/* Article Grades and Favorite Links */


.gradeAndFavorite { padding: 20px 10px 5px; }
.gradeAndFavorite, .gradeAndFavorite div, .gradeAndFavorite span, .gradeAndFavor
ite a { font-family: arial, sans-serif; }
.gradeAndFavorite .shareGrades { width: 395px; float: left; }
.gradeAndFavorite .shareGrades span { margin: 0; padding: 0px 4px 0px 5px; borde
r-right: 1px solid #818181; }
.gradeAndFavorite .shareGrades span.last { border: 0; }
.gradeAndFavorite .shareGrades span a.actionFav { position: relative; padding-le
ft: 23px; }
.gradeAndFavorite .shareGrades span a.actionFav i { position: absolute; display:
block; width: 18px; height: 18px; left: 0px; top: -2px; background-image: url(/
images/video_actions_icons.gif); background-position: left -62px; background-rep
eat: no-repeat; }
.gradeAndFavorite .shareGrades span a.makeUnFav i { background-position: left -8
0px; }
.gradeAndFavoriteWOD { padding: 10px; }
.gradeAndFavoriteWOD .shareGrades { padding-top: 3px; }
.shareGrades .gradeSelection { padding-top: 3px; }
.shareGrades .gradeSelection .userGradeLink { display: block; float: left; margi
n-right: 8px; }
.shareGrades .gradeSelection .userGradeLink a { display: block; width: 18px; hei
ght: 15px; background-image: url(/images/vide_grades_small.png); background-repe
at: no-repeat; }
.shareGrades .gradeSelection a.inProgress, .shareGrades .gradeSelection a.inProg
ress:hover { background: #FFFFFF url(/images/progress_star.gif) no-repeat scroll
center center; }
.shareGrades .gradeSelection .userGrade a { cursor: default; }
.shareGrades .gradeSelection .smallGradeAp { background-position: 0px -15px; }
.shareGrades .gradeSelection .smallGradeA { background-position: -18px -15px; }
.shareGrades .gradeSelection .smallGradeAm { background-position: -36px -15px; }
.shareGrades .gradeSelection .smallGradeBp { background-position: -54px -15px; }
.shareGrades .gradeSelection .smallGradeB { background-position: -72px -15px; }
.shareGrades .gradeSelection .smallGradeBm { background-position: -90px -15px; }
.shareGrades .gradeSelection .smallGradeCp { background-position: -108px -15px;
}
.shareGrades .gradeSelection .smallGradeC { background-position: -126px -15px; }
.shareGrades .gradeSelection .smallGradeCm { background-position: -144px -15px;
}
.shareGrades .gradeSelection .smallGradeDp { background-position: -162px -15px;
}
.shareGrades .gradeSelection .smallGradeD { background-position: -180px -15px; }
.shareGrades .gradeSelection .smallGradeDm { background-position: -198px -15px;
}
.shareGrades .gradeSelection .smallGradeF { background-position: -216px -15px;
}
.shareGrades .gradeSelection .smallGradeAp:hover, .shareGrades .gradeSelection .
userGrade .smallGradeAp { background-position: 0px 0px; }
.shareGrades .gradeSelection .smallGradeA:hover, .shareGrades .gradeSelection .u
serGrade .smallGradeA { background-position: -18px 0px; }
.shareGrades .gradeSelection .smallGradeAm:hover, .shareGrades .gradeSelection .
userGrade .smallGradeAm { background-position: -36px 0px; }
.shareGrades .gradeSelection .smallGradeBp:hover, .shareGrades .gradeSelection .
userGrade .smallGradeBp { background-position: -54px 0px; }
.shareGrades .gradeSelection .smallGradeB:hover, .shareGrades .gradeSelection .u
serGrade .smallGradeB { background-position: -72px 0px }
.shareGrades .gradeSelection .smallGradeBm:hover, .shareGrades .gradeSelection .
userGrade .smallGradeBm { background-position: -90px 0px; }
.shareGrades .gradeSelection .smallGradeCp:hover, .shareGrades .gradeSelection .
userGrade .smallGradeCp { background-position: -108px 0px; }
.shareGrades .gradeSelection .smallGradeC:hover, .shareGrades .gradeSelection .u
serGrade .smallGradeC { background-position: -126px 0px; }
.shareGrades .gradeSelection .smallGradeCm:hover, .shareGrades .gradeSelection .
userGrade .smallGradeCm { background-position: -144px 0px; }
.shareGrades .gradeSelection .smallGradeDp:hover, .shareGrades .gradeSelection .
userGrade .smallGradeDp { background-position: -162px 0px; }
.shareGrades .gradeSelection .smallGradeD:hover, .shareGrades .gradeSelection .u
serGrade .smallGradeD { background-position: -180px 0px; }
.shareGrades .gradeSelection .smallGradeDm:hover, .shareGrades .gradeSelection .
userGrade .smallGradeDm { background-position: -198px 0px; }
.shareGrades .gradeSelection .smallGradeF:hover, .shareGrades .gradeSelection .u
serGrade .smallGradeF { background-position: -216px 0px; }
.gradeAndFavorite .linkActions { width: 210px; float: right; }
.gradeAndFavorite .linkActions input.articleURL { width: 180px; height: 15px; pa
dding-top: 3px; border: 1px solid #ABABAB; font-size: 7.5pt; background-color: #
F5F5F5; }
.gradeAndFavorite .linkActions .permalink span { font-weight: bold; }
.gradeAndFavorite .linkActions .actions span { display: block; float: left; padd
ing-top: 12px; padding-right: 10px; }
.gradeAndFavorite .linkActions .actions span.favorite i { display: block; float:
left; width: 18px; height: 18px; background-image: url(/images/video_actions_ic
ons.gif); background-position: 0px -62px; background-repeat: no-repeat; padding-
right: 8px; }
.gradeAndFavorite .shareGrades,
.gradeAndFavorite .shareGrades span,
.gradeAndFavorite .shareGrades span a,
.gradeAndFavorite .linkActions,
.gradeAndFavorite .linkActions span,
.gradeAndFavorite .linkActions span a,
.gradeAndFavorite .shareGrades div b { font-size: 7.5pt; }

/* Feature Video Control */


.featureVideoContainer .title .icon { background-position: 0px -20px; }
.featureVideoContainer .title .titleLine { color: #3E8C7E; }
.featureVideoInternal .content { padding-left: 0px; padding-right: 0px; }
.featureVideoInternal .content .title { padding-left: 20px; padding-right: 20px;
}
.featureVideoElements { position: relative; padding-top: 15px; }
.featureVideoElements .featuredAnchor { display: block; position: relative; top:
-50px; zoom: 1; }
.featureVideoElements .videoImage { position: relative; width: 300px; height: 15
0px; float: left; border: 1px solid #CCCCCC; }
.featureVideoElements .videoImage .uploadImageLink { width: 200px; padding-left:
56px; padding-top: 50px; }
.featureVideoElements .videoImage .uploadImageLink .stretchLinkButton a { margin
: 0px auto; }
.featureVideoElements .videoImage .uploadImageLink .stretchLinkButton a .linkCon
tent { width: 170px; }
.featureVideoElements .videoImage .uploadImageLink .imageSizeMessage { color: #1
E5B8C; text-align: center; padding-top: 20px; }
.featureVideoElements .videoImage a.uploadLink { display: block; position: absol
ute; left: 210px; top: 0px; z-index: 2; background-color: #FFFFFF; text-decorati
on: none; }
.featureVideoElements .videoImage a:hover.uploadLink { text-decoration: underlin
e; }
.featureVideoElements .videoImage a.playFeaturedVideo { display: block; position
: relative; width: 300px; height: 150px; }
.featureVideoElements .videoImage a.playFeaturedVideo img { display: block; posi
tion: relative; }
.featureVideoElements .videoImage a .playHover { display: block; position: absol
ute; left: 90px; top: 14px; width: 120px; height: 120px; background-image: none;
}
.featureVideoElements .videoImage a:hover .playHover { display: block; backgroun
d-image: url(/images/bigplay.png); background-position: 0px 0px; cursor: pointer
; }
.featureVideoElements .videoTitle { position: relative; height: 140px; margin-le
ft: 307px; padding: 5px; border: 1px solid #CCCCCC; font-size: 24px; color: #236
CB5; }
.featureVideoElements .commentUserIcon { border: 0px; padding: 5px 0px; }
.featureVideoElements .commentBody .featuredVideoDescription { width: 99%; heigh
t: 88px; border: 1px solid #CCCCCC; }
.featureVideoElements .commentBody .bodySay { top: 11px; }
.featuredVideo .commentBody { padding-bottom: 10px; }
.featuredVideo .commentBody .featuredByName { padding-bottom: 5px; }
.featuredVideo .commentBody span { font-size: 16px; line-height: 24px; color: #6
66666; }
.featuredVideo .featureVideoElements .videoImage, .featuredVideo .featureVideoEl
ements .videoTitle { border: 0px; padding: 0px; }
.featuredVideo .featureVideoElements .videoTitle .titleLink { height: 115px; ove
rflow: hidden; }
.featuredVideo .featureVideoElements .videoTitle h2 { padding: 0px; margin: 0px;
font-weight: normal; }
.featuredVideo .featureVideoElements .videoTitle a { font-size: 28px; color: #23
6CB5; text-decoration: none; outline: none; }
.featuredVideo .featureVideoElements .videoTitle a:hover { text-decoration: unde
rline; }
.featuredVideo .videoDetailInfo .infoPart { display: block; width: auto; overflo
w: hidden; float: left; }
.featuredVideo .videoDetailInfo .hide { display: none; }
.featuredVideo .videoDetailInfo .infoPart .videoGrade span { display: block; wid
th: 24px; height: 20px; background-image: url(/images/video_grades_big.png); bac
kground-repeat: no-repeat; }
.featuredVideo .videoDetailInfo .userGrade { padding: 0px }
.featuredVideo .videoDetailInfo .infoPart { padding-right: 25px; }
.featuredVideo .videoDetailInfo .infoPart span { display: block; }
.featuredVideo .videoDetailInfo .infoPart span.hide { display: none; }
.featuredVideo .videoDetailInfo .infoPart .title { font-size: 10px; color: #8080
80; }
.featuredVideo .videoDetailInfo .infoPart .content { font-size: 18px; color: #00
0000; }
/* End Feature Video Control */
/* Edit Content Header */
.chEdit { position: relative; }
.chEdit .chEditHeadline { margin: 0; }
.chEditWorld .chEditHeadline { background: #1EA5ED; padding: 3px 6px; }
.chEdit .headlineEdit { display: block; width: 642px; font-size: 22px; line-heig
ht: 30px; border: 1px solid #CACACA; padding: 0px; }
.chEditWorld .headlineEdit { border-color: #1EA5ED }
.chEdit .catList,
.chEdit .subCatList { border: 1px solid #CACACA; font-size: 10px; font-family: a
rial,sans-serif; }
.chEditWorld .catList,
.chEditWorld .subCatList { border-color: #1EA5ED; }
.chEdit .tags, .chEdit .stats { margin: 0; padding-left: 0; padding-right: 0; he
ight: 30px; }
.chEditHeadline .tags, .chEditHeadline .stats { padding-left: 6px; padding-right
: 6px; }
.chEdit .tags { height: auto; }
.chEdit .tags .tagsEdit { width: 606px; margin: 2px 0px; border: 1px solid #CACA
CA; }
.chEditWorld .tags .tagsEdit { border-color: #1EA5ED; }
.chEdit .keywordsEdit { width: 100px; border: 1px solid #1EA5ED; font-size: 10px
; }
.chEdit .displayDate { width: 57px; margin-right: 2px; border: 1px solid #1EA5ED
; font-size: 10px; }
.chEdit .displayTime { margin-right: 3px; border: 1px solid #1EA5ED; font-size:
10px; }
.chEdit .calHolder { position: absolute; display: none; float: right; width: 240
px; height: 215px; background-color: #000000; border: 1px solid #FFFFFF; z-index
: 1001; }
.chEdit .calHolder table { width: 200px; height: 170px; }
.chEdit .calHolder table td { text-align: center; padding: 1px; }
.chEdit .calHolder table a { display: block; width: 26px; height: 20px; line-hei
ght: 20px; font-size: 10.5pt; font-family: arial, sans-serif; }
.chEdit .calHolder table .today { background-color: #FFFFFF; }
.chEdit .calHolder table .today a,
.chEdit .calHolder table a:hover { background-color: #1E1E1E; }
.chEdit .calHolder table .calheader a, .chEdit .calHolder .link-close { position
: absolute; top: 0px; background-image: url(/images/prev_next_cal.png); height:
19px; overflow: hidden; }
.chEdit .calHolder table .calheader a.calnavleft { left: 0px; background-positio
n: 0px 0px; }
.chEdit .calHolder table .calheader a.calnavright { right: 0px; background-posit
ion: 0px -19px; }
.chEdit .calHolder .link-close { position: absolute; width: 26px; height: 19px;
top: 10px; right: 20px; background-position: 0px -38px; z-index: 3; }
.chEdit .calHolder .title { padding: 10px 0px 10px 20px; }
input.viaEdit { border: 1px solid #1EA5ED; font-size: 10px; width: 140px; font-f
amily: arial,sans-serif; }
/* End Edit Content Header */

/* Article Revision History */


.revisions .revItem { padding: 5px; }
.revisions .revItem span { float: left; }
.revisions .revItem span.diffBtn { display: block; width: 18px; height: 15px; pa
dding-top: 5px; }
.revisions .revItem .diffCur,
.revisions .revItem .diffLast { float: left; margin-right: 10px; height: 20px; }
.revisions .revItem .diffCur { width: 60px; }
.revisions .revItem .diffLast { width: 50px }
.revisions .revItem .rollback { margin-right: 10px; }
.diffNew { background-color: #9BFFA0; }
.diffNewGal { border: 1px solid #008E04; background-color: #9BFFA0; }
.diffRemoved { text-decoration: line-through; }
.diffRemovedGal { border: 1px solid #A7001A; background-color: #FFAFB3; }
img.diffRemoved,
img.diffNew,
.imgDiffNew,
.imgDiffRemoved { border: 2px solid; max-width: 250px; vertical-align: middle; }
img.diffRemoved, .imgDiffRemoved { border-color: #A7001A; }
img.diffNew, .imgDiffNew { border-color: #008E04; }
.imgDiffRemoved, .imgDiffNew { padding: 0px 2px; }
.diffLegend ul li { margin: 5px 0px 10px; font-size: 10pt; line-height: 12pt; }
.wodLegend { padding-top: 21px; }
.articleLegend { padding-top: 69px; }
/* Article End Revision History */

/* Article Button Controls */


.hbArticleActions { position: relative; border-bottom: 4px solid #0E85CD; top: 0
px; right: 0px; margin: 0px 20px; zoom: 1; }
.hbArticleActions a { font-family: arial,sans-serif !important; }
/* End Article Button Controls */
/* Notification Area */
#articleNotification { position: fixed; display: none; right: 0px; top: 0px; hei
ght: 25px; width: auto; padding: 0px 5px; line-height: 24px; font-weight: bold;
background-color: #FFF3AA; border: solid 1px #000000; z-index: 2000; zoom: 1; }
/* End Notification Area */
/* Related Items */
.articleEdit { margin-top: 25px; }
/* End Related Items */
/* YUI Editor */
#editor_container { border: 0; }
.yui-editor-container { position: absolute; top: -9999px; left: -9999px; }
#editor { visibility: hidden; position: absolute; }
.yui-skin-sam .yui-editor-panel label input { height: 20px; padding-top: 3px; }
.removeLink .addLink { padding-left: 10px; }
/* MISC */
.cb { display: block; height: 0px; clear: both; }
.hide { display: none; }
.ieGap { display: none; position: relative; zoom: 1; }
a.imgLink { outline: none; }
a.imgLink img.hasLarge,
a.imgLink:hover img.hasLarge { cursor: url('/images/magnify.cur'), -moz-zoom-in;
}
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline
Content-Type: image/gif
Content-Location: http://www.wonderhowto.com/images/bgw.gif
Content-Transfer-Encoding: Base64
R0lGODlhCgQBAIAAAP///wAAACH5BAAHAP8ALAAAAAAKBAEAAAIehI+py+0Po5y0
2ouz3rz7D4biSJbmiabqyrbuC8MFADs=
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline; filename=yui_2_5_2.js
Content-Type: application/x-javascript; charset=utf-8; name=yui_2_5_2.js
Content-Location: http://www.wonderhowto.com/js/yui_2_5_2.js
Content-Transfer-Encoding: Base64
77u/LyoNCkNvcHlyaWdodCAoYykgMjAwOCwgWWFob28hIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4NCkNvZGUgbGljZW5zZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNl
Og0KaHR0cDovL2RldmVsb3Blci55YWhvby5uZXQveXVpL2xpY2Vuc2UudHh0DQp2
ZXJzaW9uOiAyLjUuMg0KKi8NCmlmKHR5cGVvZiBZQUhPTz09InVuZGVmaW5lZCJ8
fCFZQUhPTyl7dmFyIFlBSE9PPXt9O31ZQUhPTy5uYW1lc3BhY2U9ZnVuY3Rpb24o
KXt2YXIgQT1hcmd1bWVudHMsRT1udWxsLEMsQixEO2ZvcihDPTA7QzxBLmxlbmd0
aDtDPUMrMSl7RD1BW0NdLnNwbGl0KCIuIik7RT1ZQUhPTztmb3IoQj0oRFswXT09
IllBSE9PIik/MTowO0I8RC5sZW5ndGg7Qj1CKzEpe0VbRFtCXV09RVtEW0JdXXx8
e307RT1FW0RbQl1dO319cmV0dXJuIEU7fTtZQUhPTy5sb2c9ZnVuY3Rpb24oRCxB
LEMpe3ZhciBCPVlBSE9PLndpZGdldC5Mb2dnZXI7aWYoQiYmQi5sb2cpe3JldHVy
biBCLmxvZyhELEEsQyk7fWVsc2V7cmV0dXJuIGZhbHNlO319O1lBSE9PLnJlZ2lz
dGVyPWZ1bmN0aW9uKEEsRSxEKXt2YXIgST1ZQUhPTy5lbnYubW9kdWxlcztpZigh
SVtBXSl7SVtBXT17dmVyc2lvbnM6W10sYnVpbGRzOltdfTt9dmFyIEI9SVtBXSxI
PUQudmVyc2lvbixHPUQuYnVpbGQsRj1ZQUhPTy5lbnYubGlzdGVuZXJzO0IubmFt
ZT1BO0IudmVyc2lvbj1IO0IuYnVpbGQ9RztCLnZlcnNpb25zLnB1c2goSCk7Qi5i
dWlsZHMucHVzaChHKTtCLm1haW5DbGFzcz1FO2Zvcih2YXIgQz0wO0M8Ri5sZW5n
dGg7Qz1DKzEpe0ZbQ10oQik7fWlmKEUpe0UuVkVSU0lPTj1IO0UuQlVJTEQ9Rzt9
ZWxzZXtZQUhPTy5sb2coIm1haW5DbGFzcyBpcyB1bmRlZmluZWQgZm9yIG1vZHVs
ZSAiK0EsIndhcm4iKTt9fTtZQUhPTy5lbnY9WUFIT08uZW52fHx7bW9kdWxlczpb
XSxsaXN0ZW5lcnM6W119O1lBSE9PLmVudi5nZXRWZXJzaW9uPWZ1bmN0aW9uKEEp
e3JldHVybiBZQUhPTy5lbnYubW9kdWxlc1tBXXx8bnVsbDt9O1lBSE9PLmVudi51
YT1mdW5jdGlvbigpe3ZhciBDPXtpZTowLG9wZXJhOjAsZ2Vja286MCx3ZWJraXQ6
MCxtb2JpbGU6bnVsbCxhaXI6MH07dmFyIEI9bmF2aWdhdG9yLnVzZXJBZ2VudCxB
O2lmKCgvS0hUTUwvKS50ZXN0KEIpKXtDLndlYmtpdD0xO31BPUIubWF0Y2goL0Fw
cGxlV2ViS2l0XC8oW15cc10qKS8pO2lmKEEmJkFbMV0pe0Mud2Via2l0PXBhcnNl
RmxvYXQoQVsxXSk7aWYoLyBNb2JpbGVcLy8udGVzdChCKSl7Qy5tb2JpbGU9IkFw
cGxlIjt9ZWxzZXtBPUIubWF0Y2goL05va2lhTlteXC9dKi8pO2lmKEEpe0MubW9i
aWxlPUFbMF07fX1BPUIubWF0Y2goL0Fkb2JlQUlSXC8oW15cc10qKS8pO2lmKEEp
e0MuYWlyPUFbMF07fX1pZighQy53ZWJraXQpe0E9Qi5tYXRjaCgvT3BlcmFbXHNc
L10oW15cc10qKS8pO2lmKEEmJkFbMV0pe0Mub3BlcmE9cGFyc2VGbG9hdChBWzFd
KTtBPUIubWF0Y2goL09wZXJhIE1pbmlbXjtdKi8pO2lmKEEpe0MubW9iaWxlPUFb
MF07fX1lbHNle0E9Qi5tYXRjaCgvTVNJRVxzKFteO10qKS8pO2lmKEEmJkFbMV0p
e0MuaWU9cGFyc2VGbG9hdChBWzFdKTt9ZWxzZXtBPUIubWF0Y2goL0dlY2tvXC8o
W15cc10qKS8pO2lmKEEpe0MuZ2Vja289MTtBPUIubWF0Y2goL3J2OihbXlxzXCld
KikvKTtpZihBJiZBWzFdKXtDLmdlY2tvPXBhcnNlRmxvYXQoQVsxXSk7fX19fX1y
ZXR1cm4gQzt9KCk7KGZ1bmN0aW9uKCl7WUFIT08ubmFtZXNwYWNlKCJ1dGlsIiwi
d2lkZ2V0IiwiZXhhbXBsZSIpO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIFlBSE9P
X2NvbmZpZyl7dmFyIEI9WUFIT09fY29uZmlnLmxpc3RlbmVyLEE9WUFIT08uZW52
Lmxpc3RlbmVycyxEPXRydWUsQztpZihCKXtmb3IoQz0wO0M8QS5sZW5ndGg7Qz1D
KzEpe2lmKEFbQ109PUIpe0Q9ZmFsc2U7YnJlYWs7fX1pZihEKXtBLnB1c2goQik7
fX19fSkoKTtZQUhPTy5sYW5nPVlBSE9PLmxhbmd8fHt9OyhmdW5jdGlvbigpe3Zh
ciBBPVlBSE9PLmxhbmcsQz1bInRvU3RyaW5nIiwidmFsdWVPZiJdLEI9e2lzQXJy
YXk6ZnVuY3Rpb24oRCl7aWYoRCl7cmV0dXJuIEEuaXNOdW1iZXIoRC5sZW5ndGgp
JiZBLmlzRnVuY3Rpb24oRC5zcGxpY2UpO31yZXR1cm4gZmFsc2U7fSxpc0Jvb2xl
YW46ZnVuY3Rpb24oRCl7cmV0dXJuIHR5cGVvZiBEPT09ImJvb2xlYW4iO30saXNG
dW5jdGlvbjpmdW5jdGlvbihEKXtyZXR1cm4gdHlwZW9mIEQ9PT0iZnVuY3Rpb24i
O30saXNOdWxsOmZ1bmN0aW9uKEQpe3JldHVybiBEPT09bnVsbDt9LGlzTnVtYmVy
OmZ1bmN0aW9uKEQpe3JldHVybiB0eXBlb2YgRD09PSJudW1iZXIiJiZpc0Zpbml0
ZShEKTt9LGlzT2JqZWN0OmZ1bmN0aW9uKEQpe3JldHVybihEJiYodHlwZW9mIEQ9
PT0ib2JqZWN0Inx8QS5pc0Z1bmN0aW9uKEQpKSl8fGZhbHNlO30saXNTdHJpbmc6
ZnVuY3Rpb24oRCl7cmV0dXJuIHR5cGVvZiBEPT09InN0cmluZyI7fSxpc1VuZGVm
aW5lZDpmdW5jdGlvbihEKXtyZXR1cm4gdHlwZW9mIEQ9PT0idW5kZWZpbmVkIjt9
LF9JRUVudW1GaXg6KFlBSE9PLmVudi51YS5pZSk/ZnVuY3Rpb24oRixFKXtmb3Io
dmFyIEQ9MDtEPEMubGVuZ3RoO0Q9RCsxKXt2YXIgSD1DW0RdLEc9RVtIXTtpZihB
LmlzRnVuY3Rpb24oRykmJkchPU9iamVjdC5wcm90b3R5cGVbSF0pe0ZbSF09Rzt9
fX06ZnVuY3Rpb24oKXt9LGV4dGVuZDpmdW5jdGlvbihILEksRyl7aWYoIUl8fCFI
KXt0aHJvdyBuZXcgRXJyb3IoImV4dGVuZCBmYWlsZWQsIHBsZWFzZSBjaGVjayB0
aGF0ICIrImFsbCBkZXBlbmRlbmNpZXMgYXJlIGluY2x1ZGVkLiIpO312YXIgRT1m
dW5jdGlvbigpe307RS5wcm90b3R5cGU9SS5wcm90b3R5cGU7SC5wcm90b3R5cGU9
bmV3IEUoKTtILnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1IO0guc3VwZXJjbGFzcz1J
LnByb3RvdHlwZTtpZihJLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj09T2JqZWN0LnBy
b3RvdHlwZS5jb25zdHJ1Y3Rvcil7SS5wcm90b3R5cGUuY29uc3RydWN0b3I9STt9
aWYoRyl7Zm9yKHZhciBEIGluIEcpe2lmKEEuaGFzT3duUHJvcGVydHkoRyxEKSl7
SC5wcm90b3R5cGVbRF09R1tEXTt9fUEuX0lFRW51bUZpeChILnByb3RvdHlwZSxH
KTt9fSxhdWdtZW50T2JqZWN0OmZ1bmN0aW9uKEgsRyl7aWYoIUd8fCFIKXt0aHJv
dyBuZXcgRXJyb3IoIkFic29yYiBmYWlsZWQsIHZlcmlmeSBkZXBlbmRlbmNpZXMu
Iik7fXZhciBEPWFyZ3VtZW50cyxGLEksRT1EWzJdO2lmKEUmJkUhPT10cnVlKXtm
b3IoRj0yO0Y8RC5sZW5ndGg7Rj1GKzEpe0hbRFtGXV09R1tEW0ZdXTt9fWVsc2V7
Zm9yKEkgaW4gRyl7aWYoRXx8IShJIGluIEgpKXtIW0ldPUdbSV07fX1BLl9JRUVu
dW1GaXgoSCxHKTt9fSxhdWdtZW50UHJvdG86ZnVuY3Rpb24oRyxGKXtpZighRnx8
IUcpe3Rocm93IG5ldyBFcnJvcigiQXVnbWVudCBmYWlsZWQsIHZlcmlmeSBkZXBl
bmRlbmNpZXMuIik7fXZhciBEPVtHLnByb3RvdHlwZSxGLnByb3RvdHlwZV07Zm9y
KHZhciBFPTI7RTxhcmd1bWVudHMubGVuZ3RoO0U9RSsxKXtELnB1c2goYXJndW1l
bnRzW0VdKTt9QS5hdWdtZW50T2JqZWN0LmFwcGx5KHRoaXMsRCk7fSxkdW1wOmZ1
bmN0aW9uKEQsSSl7dmFyIEYsSCxLPVtdLEw9InsuLi59IixFPSJmKCl7Li4ufSIs
Sj0iLCAiLEc9IiA9PiAiO2lmKCFBLmlzT2JqZWN0KEQpKXtyZXR1cm4gRCsiIjt9
ZWxzZXtpZihEIGluc3RhbmNlb2YgRGF0ZXx8KCJub2RlVHlwZSIgaW4gRCYmInRh
Z05hbWUiIGluIEQpKXtyZXR1cm4gRDt9ZWxzZXtpZihBLmlzRnVuY3Rpb24oRCkp
e3JldHVybiBFO319fUk9KEEuaXNOdW1iZXIoSSkpP0k6MztpZihBLmlzQXJyYXko
RCkpe0sucHVzaCgiWyIpO2ZvcihGPTAsSD1ELmxlbmd0aDtGPEg7Rj1GKzEpe2lm
KEEuaXNPYmplY3QoRFtGXSkpe0sucHVzaCgoST4wKT9BLmR1bXAoRFtGXSxJLTEp
OkwpO31lbHNle0sucHVzaChEW0ZdKTt9Sy5wdXNoKEopO31pZihLLmxlbmd0aD4x
KXtLLnBvcCgpO31LLnB1c2goIl0iKTt9ZWxzZXtLLnB1c2goInsiKTtmb3IoRiBp
biBEKXtpZihBLmhhc093blByb3BlcnR5KEQsRikpe0sucHVzaChGK0cpO2lmKEEu
aXNPYmplY3QoRFtGXSkpe0sucHVzaCgoST4wKT9BLmR1bXAoRFtGXSxJLTEpOkwp
O31lbHNle0sucHVzaChEW0ZdKTt9Sy5wdXNoKEopO319aWYoSy5sZW5ndGg+MSl7
Sy5wb3AoKTt9Sy5wdXNoKCJ9Iik7fXJldHVybiBLLmpvaW4oIiIpO30sc3Vic3Rp
dHV0ZTpmdW5jdGlvbihTLEUsTCl7dmFyIEksSCxHLE8sUCxSLE49W10sRixKPSJk
dW1wIixNPSIgIixEPSJ7IixRPSJ9Ijtmb3IoOzspe0k9Uy5sYXN0SW5kZXhPZihE
KTtpZihJPDApe2JyZWFrO31IPVMuaW5kZXhPZihRLEkpO2lmKEkrMT49SCl7YnJl
YWs7fUY9Uy5zdWJzdHJpbmcoSSsxLEgpO089RjtSPW51bGw7Rz1PLmluZGV4T2Yo
TSk7aWYoRz4tMSl7Uj1PLnN1YnN0cmluZyhHKzEpO089Ty5zdWJzdHJpbmcoMCxH
KTt9UD1FW09dO2lmKEwpe1A9TChPLFAsUik7fWlmKEEuaXNPYmplY3QoUCkpe2lm
KEEuaXNBcnJheShQKSl7UD1BLmR1bXAoUCxwYXJzZUludChSLDEwKSk7fWVsc2V7
Uj1SfHwiIjt2YXIgSz1SLmluZGV4T2YoSik7aWYoSz4tMSl7Uj1SLnN1YnN0cmlu
Zyg0KTt9aWYoUC50b1N0cmluZz09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmd8
fEs+LTEpe1A9QS5kdW1wKFAscGFyc2VJbnQoUiwxMCkpO31lbHNle1A9UC50b1N0
cmluZygpO319fWVsc2V7aWYoIUEuaXNTdHJpbmcoUCkmJiFBLmlzTnVtYmVyKFAp
KXtQPSJ+LSIrTi5sZW5ndGgrIi1+IjtOW04ubGVuZ3RoXT1GO319Uz1TLnN1YnN0
cmluZygwLEkpK1ArUy5zdWJzdHJpbmcoSCsxKTt9Zm9yKEk9Ti5sZW5ndGgtMTtJ
Pj0wO0k9SS0xKXtTPVMucmVwbGFjZShuZXcgUmVnRXhwKCJ+LSIrSSsiLX4iKSwi
eyIrTltJXSsifSIsImciKTt9cmV0dXJuIFM7fSx0cmltOmZ1bmN0aW9uKEQpe3Ry
eXtyZXR1cm4gRC5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIik7fWNhdGNoKEUpe3Jl
dHVybiBEO319LG1lcmdlOmZ1bmN0aW9uKCl7dmFyIEc9e30sRT1hcmd1bWVudHM7
Zm9yKHZhciBGPTAsRD1FLmxlbmd0aDtGPEQ7Rj1GKzEpe0EuYXVnbWVudE9iamVj
dChHLEVbRl0sdHJ1ZSk7fXJldHVybiBHO30sbGF0ZXI6ZnVuY3Rpb24oSyxFLEws
RyxIKXtLPUt8fDA7RT1FfHx7fTt2YXIgRj1MLEo9RyxJLEQ7aWYoQS5pc1N0cmlu
ZyhMKSl7Rj1FW0xdO31pZighRil7dGhyb3cgbmV3IFR5cGVFcnJvcigibWV0aG9k
IHVuZGVmaW5lZCIpO31pZighQS5pc0FycmF5KEopKXtKPVtHXTt9ST1mdW5jdGlv
bigpe0YuYXBwbHkoRSxKKTt9O0Q9KEgpP3NldEludGVydmFsKEksSyk6c2V0VGlt
ZW91dChJLEspO3JldHVybntpbnRlcnZhbDpILGNhbmNlbDpmdW5jdGlvbigpe2lm
KHRoaXMuaW50ZXJ2YWwpe2NsZWFySW50ZXJ2YWwoRCk7fWVsc2V7Y2xlYXJUaW1l
b3V0KEQpO319fTt9LGlzVmFsdWU6ZnVuY3Rpb24oRCl7cmV0dXJuKEEuaXNPYmpl
Y3QoRCl8fEEuaXNTdHJpbmcoRCl8fEEuaXNOdW1iZXIoRCl8fEEuaXNCb29sZWFu
KEQpKTt9fTtBLmhhc093blByb3BlcnR5PShPYmplY3QucHJvdG90eXBlLmhhc093
blByb3BlcnR5KT9mdW5jdGlvbihELEUpe3JldHVybiBEJiZELmhhc093blByb3Bl
cnR5KEUpO306ZnVuY3Rpb24oRCxFKXtyZXR1cm4gIUEuaXNVbmRlZmluZWQoRFtF
XSkmJkQuY29uc3RydWN0b3IucHJvdG90eXBlW0VdIT09RFtFXTt9O0IuYXVnbWVu
dE9iamVjdChBLEIsdHJ1ZSk7WUFIT08udXRpbC5MYW5nPUE7QS5hdWdtZW50PUEu
YXVnbWVudFByb3RvO1lBSE9PLmF1Z21lbnQ9QS5hdWdtZW50UHJvdG87WUFIT08u
ZXh0ZW5kPUEuZXh0ZW5kO30pKCk7WUFIT08ucmVnaXN0ZXIoInlhaG9vIixZQUhP
Tyx7dmVyc2lvbjoiMi41LjIiLGJ1aWxkOiIxMDc2In0pOyhmdW5jdGlvbigpe3Zh
ciBCPVlBSE9PLnV0aWwsSyxJLEo9e30sRj17fSxNPXdpbmRvdy5kb2N1bWVudDtZ
QUhPTy5lbnYuX2lkX2NvdW50ZXI9WUFIT08uZW52Ll9pZF9jb3VudGVyfHwwO3Zh
ciBDPVlBSE9PLmVudi51YS5vcGVyYSxMPVlBSE9PLmVudi51YS53ZWJraXQsQT1Z
QUhPTy5lbnYudWEuZ2Vja28sRz1ZQUhPTy5lbnYudWEuaWU7dmFyIEU9e0hZUEhF
TjovKC1bYS16XSkvaSxST09UX1RBRzovXmJvZHl8aHRtbCQvaSxPUF9TQ1JPTEw6
L14oPzppbmxpbmV8dGFibGUtcm93KSQvaX07dmFyIE49ZnVuY3Rpb24oUCl7aWYo
IUUuSFlQSEVOLnRlc3QoUCkpe3JldHVybiBQO31pZihKW1BdKXtyZXR1cm4gSltQ
XTt9dmFyIFE9UDt3aGlsZShFLkhZUEhFTi5leGVjKFEpKXtRPVEucmVwbGFjZShS
ZWdFeHAuJDEsUmVnRXhwLiQxLnN1YnN0cigxKS50b1VwcGVyQ2FzZSgpKTt9SltQ
XT1RO3JldHVybiBRO307dmFyIE89ZnVuY3Rpb24oUSl7dmFyIFA9RltRXTtpZigh
UCl7UD1uZXcgUmVnRXhwKCIoPzpefFxccyspIitRKyIoPzpcXHMrfCQpIik7RltR
XT1QO31yZXR1cm4gUDt9O2lmKE0uZGVmYXVsdFZpZXcmJk0uZGVmYXVsdFZpZXcu
Z2V0Q29tcHV0ZWRTdHlsZSl7Sz1mdW5jdGlvbihQLFMpe3ZhciBSPW51bGw7aWYo
Uz09ImZsb2F0Iil7Uz0iY3NzRmxvYXQiO312YXIgUT1QLm93bmVyRG9jdW1lbnQu
ZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShQLCIiKTtpZihRKXtSPVFbTihT
KV07fXJldHVybiBQLnN0eWxlW1NdfHxSO307fWVsc2V7aWYoTS5kb2N1bWVudEVs
ZW1lbnQuY3VycmVudFN0eWxlJiZHKXtLPWZ1bmN0aW9uKFAsUil7c3dpdGNoKE4o
Uikpe2Nhc2Uib3BhY2l0eSI6dmFyIFQ9MTAwO3RyeXtUPVAuZmlsdGVyc1siRFhJ
bWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEiXS5vcGFjaXR5O31jYXRjaChT
KXt0cnl7VD1QLmZpbHRlcnMoImFscGhhIikub3BhY2l0eTt9Y2F0Y2goUyl7fX1y
ZXR1cm4gVC8xMDA7Y2FzZSJmbG9hdCI6Uj0ic3R5bGVGbG9hdCI7ZGVmYXVsdDp2
YXIgUT1QLmN1cnJlbnRTdHlsZT9QLmN1cnJlbnRTdHlsZVtSXTpudWxsO3JldHVy
bihQLnN0eWxlW1JdfHxRKTt9fTt9ZWxzZXtLPWZ1bmN0aW9uKFAsUSl7cmV0dXJu
IFAuc3R5bGVbUV07fTt9fWlmKEcpe0k9ZnVuY3Rpb24oUCxRLFIpe3N3aXRjaChR
KXtjYXNlIm9wYWNpdHkiOmlmKFlBSE9PLmxhbmcuaXNTdHJpbmcoUC5zdHlsZS5m
aWx0ZXIpKXtQLnN0eWxlLmZpbHRlcj0iYWxwaGEob3BhY2l0eT0iK1IqMTAwKyIp
IjtpZighUC5jdXJyZW50U3R5bGV8fCFQLmN1cnJlbnRTdHlsZS5oYXNMYXlvdXQp
e1Auc3R5bGUuem9vbT0xO319YnJlYWs7Y2FzZSJmbG9hdCI6UT0ic3R5bGVGbG9h
dCI7ZGVmYXVsdDpQLnN0eWxlW1FdPVI7fX07fWVsc2V7ST1mdW5jdGlvbihQLFEs
Uil7aWYoUT09ImZsb2F0Iil7UT0iY3NzRmxvYXQiO31QLnN0eWxlW1FdPVI7fTt9
dmFyIEQ9ZnVuY3Rpb24oUCxRKXtyZXR1cm4gUCYmUC5ub2RlVHlwZT09MSYmKCFR
fHxRKFApKTt9O1lBSE9PLnV0aWwuRG9tPXtnZXQ6ZnVuY3Rpb24oUil7aWYoUiYm
KFIubm9kZVR5cGV8fFIuaXRlbSkpe3JldHVybiBSO31pZihZQUhPTy5sYW5nLmlz
U3RyaW5nKFIpfHwhUil7cmV0dXJuIE0uZ2V0RWxlbWVudEJ5SWQoUik7fWlmKFIu
bGVuZ3RoIT09dW5kZWZpbmVkKXt2YXIgUz1bXTtmb3IodmFyIFE9MCxQPVIubGVu
Z3RoO1E8UDsrK1Epe1NbUy5sZW5ndGhdPUIuRG9tLmdldChSW1FdKTt9cmV0dXJu
IFM7fXJldHVybiBSO30sZ2V0U3R5bGU6ZnVuY3Rpb24oUCxSKXtSPU4oUik7dmFy
IFE9ZnVuY3Rpb24oUyl7cmV0dXJuIEsoUyxSKTt9O3JldHVybiBCLkRvbS5iYXRj
aChQLFEsQi5Eb20sdHJ1ZSk7fSxzZXRTdHlsZTpmdW5jdGlvbihQLFIsUyl7Uj1O
KFIpO3ZhciBRPWZ1bmN0aW9uKFQpe0koVCxSLFMpO307Qi5Eb20uYmF0Y2goUCxR
LEIuRG9tLHRydWUpO30sZ2V0WFk6ZnVuY3Rpb24oUCl7dmFyIFE9ZnVuY3Rpb24o
Uil7aWYoKFIucGFyZW50Tm9kZT09PW51bGx8fFIub2Zmc2V0UGFyZW50PT09bnVs
bHx8dGhpcy5nZXRTdHlsZShSLCJkaXNwbGF5Iik9PSJub25lIikmJlIhPVIub3du
ZXJEb2N1bWVudC5ib2R5KXtyZXR1cm4gZmFsc2U7fXJldHVybiBIKFIpO307cmV0
dXJuIEIuRG9tLmJhdGNoKFAsUSxCLkRvbSx0cnVlKTt9LGdldFg6ZnVuY3Rpb24o
UCl7dmFyIFE9ZnVuY3Rpb24oUil7cmV0dXJuIEIuRG9tLmdldFhZKFIpWzBdO307
cmV0dXJuIEIuRG9tLmJhdGNoKFAsUSxCLkRvbSx0cnVlKTt9LGdldFk6ZnVuY3Rp
b24oUCl7dmFyIFE9ZnVuY3Rpb24oUil7cmV0dXJuIEIuRG9tLmdldFhZKFIpWzFd
O307cmV0dXJuIEIuRG9tLmJhdGNoKFAsUSxCLkRvbSx0cnVlKTt9LHNldFhZOmZ1
bmN0aW9uKFAsUyxSKXt2YXIgUT1mdW5jdGlvbihWKXt2YXIgVT10aGlzLmdldFN0
eWxlKFYsInBvc2l0aW9uIik7aWYoVT09InN0YXRpYyIpe3RoaXMuc2V0U3R5bGUo
ViwicG9zaXRpb24iLCJyZWxhdGl2ZSIpO1U9InJlbGF0aXZlIjt9dmFyIFg9dGhp
cy5nZXRYWShWKTtpZihYPT09ZmFsc2Upe3JldHVybiBmYWxzZTt9dmFyIFc9W3Bh
cnNlSW50KHRoaXMuZ2V0U3R5bGUoViwibGVmdCIpLDEwKSxwYXJzZUludCh0aGlz
LmdldFN0eWxlKFYsInRvcCIpLDEwKV07aWYoaXNOYU4oV1swXSkpe1dbMF09KFU9
PSJyZWxhdGl2ZSIpPzA6Vi5vZmZzZXRMZWZ0O31pZihpc05hTihXWzFdKSl7V1sx
XT0oVT09InJlbGF0aXZlIik/MDpWLm9mZnNldFRvcDt9aWYoU1swXSE9PW51bGwp
e1Yuc3R5bGUubGVmdD1TWzBdLVhbMF0rV1swXSsicHgiO31pZihTWzFdIT09bnVs
bCl7Vi5zdHlsZS50b3A9U1sxXS1YWzFdK1dbMV0rInB4Ijt9aWYoIVIpe3ZhciBU
PXRoaXMuZ2V0WFkoVik7aWYoKFNbMF0hPT1udWxsJiZUWzBdIT1TWzBdKXx8KFNb
MV0hPT1udWxsJiZUWzFdIT1TWzFdKSl7dGhpcy5zZXRYWShWLFMsdHJ1ZSk7fX19
O0IuRG9tLmJhdGNoKFAsUSxCLkRvbSx0cnVlKTt9LHNldFg6ZnVuY3Rpb24oUSxQ
KXtCLkRvbS5zZXRYWShRLFtQLG51bGxdKTt9LHNldFk6ZnVuY3Rpb24oUCxRKXtC
LkRvbS5zZXRYWShQLFtudWxsLFFdKTt9LGdldFJlZ2lvbjpmdW5jdGlvbihQKXt2
YXIgUT1mdW5jdGlvbihSKXtpZigoUi5wYXJlbnROb2RlPT09bnVsbHx8Ui5vZmZz
ZXRQYXJlbnQ9PT1udWxsfHx0aGlzLmdldFN0eWxlKFIsImRpc3BsYXkiKT09Im5v
bmUiKSYmUiE9Ui5vd25lckRvY3VtZW50LmJvZHkpe3JldHVybiBmYWxzZTt9dmFy
IFM9Qi5SZWdpb24uZ2V0UmVnaW9uKFIpO3JldHVybiBTO307cmV0dXJuIEIuRG9t
LmJhdGNoKFAsUSxCLkRvbSx0cnVlKTt9LGdldENsaWVudFdpZHRoOmZ1bmN0aW9u
KCl7cmV0dXJuIEIuRG9tLmdldFZpZXdwb3J0V2lkdGgoKTt9LGdldENsaWVudEhl
aWdodDpmdW5jdGlvbigpe3JldHVybiBCLkRvbS5nZXRWaWV3cG9ydEhlaWdodCgp
O30sZ2V0RWxlbWVudHNCeUNsYXNzTmFtZTpmdW5jdGlvbihULFgsVSxWKXtYPVh8
fCIqIjtVPShVKT9CLkRvbS5nZXQoVSk6bnVsbHx8TTtpZighVSl7cmV0dXJuW107
fXZhciBRPVtdLFA9VS5nZXRFbGVtZW50c0J5VGFnTmFtZShYKSxXPU8oVCk7Zm9y
KHZhciBSPTAsUz1QLmxlbmd0aDtSPFM7KytSKXtpZihXLnRlc3QoUFtSXS5jbGFz
c05hbWUpKXtRW1EubGVuZ3RoXT1QW1JdO2lmKFYpe1YuY2FsbChQW1JdLFBbUl0p
O319fXJldHVybiBRO30saGFzQ2xhc3M6ZnVuY3Rpb24oUixRKXt2YXIgUD1PKFEp
O3ZhciBTPWZ1bmN0aW9uKFQpe3JldHVybiBQLnRlc3QoVC5jbGFzc05hbWUpO307
cmV0dXJuIEIuRG9tLmJhdGNoKFIsUyxCLkRvbSx0cnVlKTt9LGFkZENsYXNzOmZ1
bmN0aW9uKFEsUCl7dmFyIFI9ZnVuY3Rpb24oUyl7aWYodGhpcy5oYXNDbGFzcyhT
LFApKXtyZXR1cm4gZmFsc2U7fVMuY2xhc3NOYW1lPVlBSE9PLmxhbmcudHJpbShb
Uy5jbGFzc05hbWUsUF0uam9pbigiICIpKTtyZXR1cm4gdHJ1ZTt9O3JldHVybiBC
LkRvbS5iYXRjaChRLFIsQi5Eb20sdHJ1ZSk7fSxyZW1vdmVDbGFzczpmdW5jdGlv
bihSLFEpe3ZhciBQPU8oUSk7dmFyIFM9ZnVuY3Rpb24oVCl7aWYoIVF8fCF0aGlz
Lmhhc0NsYXNzKFQsUSkpe3JldHVybiBmYWxzZTt9dmFyIFU9VC5jbGFzc05hbWU7
VC5jbGFzc05hbWU9VS5yZXBsYWNlKFAsIiAiKTtpZih0aGlzLmhhc0NsYXNzKFQs
USkpe3RoaXMucmVtb3ZlQ2xhc3MoVCxRKTt9VC5jbGFzc05hbWU9WUFIT08ubGFu
Zy50cmltKFQuY2xhc3NOYW1lKTtyZXR1cm4gdHJ1ZTt9O3JldHVybiBCLkRvbS5i
YXRjaChSLFMsQi5Eb20sdHJ1ZSk7fSxyZXBsYWNlQ2xhc3M6ZnVuY3Rpb24oUyxR
LFApe2lmKCFQfHxRPT09UCl7cmV0dXJuIGZhbHNlO312YXIgUj1PKFEpO3ZhciBU
PWZ1bmN0aW9uKFUpe2lmKCF0aGlzLmhhc0NsYXNzKFUsUSkpe3RoaXMuYWRkQ2xh
c3MoVSxQKTtyZXR1cm4gdHJ1ZTt9VS5jbGFzc05hbWU9VS5jbGFzc05hbWUucmVw
bGFjZShSLCIgIitQKyIgIik7aWYodGhpcy5oYXNDbGFzcyhVLFEpKXt0aGlzLnJl
cGxhY2VDbGFzcyhVLFEsUCk7fVUuY2xhc3NOYW1lPVlBSE9PLmxhbmcudHJpbShV
LmNsYXNzTmFtZSk7cmV0dXJuIHRydWU7fTtyZXR1cm4gQi5Eb20uYmF0Y2goUyxU
LEIuRG9tLHRydWUpO30sZ2VuZXJhdGVJZDpmdW5jdGlvbihQLFIpe1I9Unx8Inl1
aS1nZW4iO3ZhciBRPWZ1bmN0aW9uKFMpe2lmKFMmJlMuaWQpe3JldHVybiBTLmlk
O312YXIgVD1SK1lBSE9PLmVudi5faWRfY291bnRlcisrO2lmKFMpe1MuaWQ9VDt9
cmV0dXJuIFQ7fTtyZXR1cm4gQi5Eb20uYmF0Y2goUCxRLEIuRG9tLHRydWUpfHxR
LmFwcGx5KEIuRG9tLGFyZ3VtZW50cyk7fSxpc0FuY2VzdG9yOmZ1bmN0aW9uKFAs
USl7UD1CLkRvbS5nZXQoUCk7UT1CLkRvbS5nZXQoUSk7aWYoIVB8fCFRKXtyZXR1
cm4gZmFsc2U7fWlmKFAuY29udGFpbnMmJlEubm9kZVR5cGUmJiFMKXtyZXR1cm4g
UC5jb250YWlucyhRKTt9ZWxzZXtpZihQLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9u
JiZRLm5vZGVUeXBlKXtyZXR1cm4gISEoUC5jb21wYXJlRG9jdW1lbnRQb3NpdGlv
bihRKSYxNik7fWVsc2V7aWYoUS5ub2RlVHlwZSl7cmV0dXJuICEhdGhpcy5nZXRB
bmNlc3RvckJ5KFEsZnVuY3Rpb24oUil7cmV0dXJuIFI9PVA7fSk7fX19cmV0dXJu
IGZhbHNlO30saW5Eb2N1bWVudDpmdW5jdGlvbihQKXtyZXR1cm4gdGhpcy5pc0Fu
Y2VzdG9yKE0uZG9jdW1lbnRFbGVtZW50LFApO30sZ2V0RWxlbWVudHNCeTpmdW5j
dGlvbihXLFEsUixUKXtRPVF8fCIqIjtSPShSKT9CLkRvbS5nZXQoUik6bnVsbHx8
TTtpZighUil7cmV0dXJuW107fXZhciBTPVtdLFY9Ui5nZXRFbGVtZW50c0J5VGFn
TmFtZShRKTtmb3IodmFyIFU9MCxQPVYubGVuZ3RoO1U8UDsrK1Upe2lmKFcoVltV
XSkpe1NbUy5sZW5ndGhdPVZbVV07aWYoVCl7VChWW1VdKTt9fX1yZXR1cm4gUzt9
LGJhdGNoOmZ1bmN0aW9uKFQsVyxWLFIpe1Q9KFQmJihULnRhZ05hbWV8fFQuaXRl
bSkpP1Q6Qi5Eb20uZ2V0KFQpO2lmKCFUfHwhVyl7cmV0dXJuIGZhbHNlO312YXIg
Uz0oUik/Vjp3aW5kb3c7aWYoVC50YWdOYW1lfHxULmxlbmd0aD09PXVuZGVmaW5l
ZCl7cmV0dXJuIFcuY2FsbChTLFQsVik7fXZhciBVPVtdO2Zvcih2YXIgUT0wLFA9
VC5sZW5ndGg7UTxQOysrUSl7VVtVLmxlbmd0aF09Vy5jYWxsKFMsVFtRXSxWKTt9
cmV0dXJuIFU7fSxnZXREb2N1bWVudEhlaWdodDpmdW5jdGlvbigpe3ZhciBRPShN
LmNvbXBhdE1vZGUhPSJDU1MxQ29tcGF0Iik/TS5ib2R5LnNjcm9sbEhlaWdodDpN
LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQ7dmFyIFA9TWF0aC5tYXgoUSxC
LkRvbS5nZXRWaWV3cG9ydEhlaWdodCgpKTtyZXR1cm4gUDt9LGdldERvY3VtZW50
V2lkdGg6ZnVuY3Rpb24oKXt2YXIgUT0oTS5jb21wYXRNb2RlIT0iQ1NTMUNvbXBh
dCIpP00uYm9keS5zY3JvbGxXaWR0aDpNLmRvY3VtZW50RWxlbWVudC5zY3JvbGxX
aWR0aDt2YXIgUD1NYXRoLm1heChRLEIuRG9tLmdldFZpZXdwb3J0V2lkdGgoKSk7
cmV0dXJuIFA7fSxnZXRWaWV3cG9ydEhlaWdodDpmdW5jdGlvbigpe3ZhciBQPXNl
bGYuaW5uZXJIZWlnaHQ7DQp2YXIgUT1NLmNvbXBhdE1vZGU7aWYoKFF8fEcpJiYh
Qyl7UD0oUT09IkNTUzFDb21wYXQiKT9NLmRvY3VtZW50RWxlbWVudC5jbGllbnRI
ZWlnaHQ6TS5ib2R5LmNsaWVudEhlaWdodDt9cmV0dXJuIFA7fSxnZXRWaWV3cG9y
dFdpZHRoOmZ1bmN0aW9uKCl7dmFyIFA9c2VsZi5pbm5lcldpZHRoO3ZhciBRPU0u
Y29tcGF0TW9kZTtpZihRfHxHKXtQPShRPT0iQ1NTMUNvbXBhdCIpP00uZG9jdW1l
bnRFbGVtZW50LmNsaWVudFdpZHRoOk0uYm9keS5jbGllbnRXaWR0aDt9cmV0dXJu
IFA7fSxnZXRBbmNlc3RvckJ5OmZ1bmN0aW9uKFAsUSl7d2hpbGUoUD1QLnBhcmVu
dE5vZGUpe2lmKEQoUCxRKSl7cmV0dXJuIFA7fX1yZXR1cm4gbnVsbDt9LGdldEFu
Y2VzdG9yQnlDbGFzc05hbWU6ZnVuY3Rpb24oUSxQKXtRPUIuRG9tLmdldChRKTtp
ZighUSl7cmV0dXJuIG51bGw7fXZhciBSPWZ1bmN0aW9uKFMpe3JldHVybiBCLkRv
bS5oYXNDbGFzcyhTLFApO307cmV0dXJuIEIuRG9tLmdldEFuY2VzdG9yQnkoUSxS
KTt9LGdldEFuY2VzdG9yQnlUYWdOYW1lOmZ1bmN0aW9uKFEsUCl7UT1CLkRvbS5n
ZXQoUSk7aWYoIVEpe3JldHVybiBudWxsO312YXIgUj1mdW5jdGlvbihTKXtyZXR1
cm4gUy50YWdOYW1lJiZTLnRhZ05hbWUudG9VcHBlckNhc2UoKT09UC50b1VwcGVy
Q2FzZSgpO307cmV0dXJuIEIuRG9tLmdldEFuY2VzdG9yQnkoUSxSKTt9LGdldFBy
ZXZpb3VzU2libGluZ0J5OmZ1bmN0aW9uKFAsUSl7d2hpbGUoUCl7UD1QLnByZXZp
b3VzU2libGluZztpZihEKFAsUSkpe3JldHVybiBQO319cmV0dXJuIG51bGw7fSxn
ZXRQcmV2aW91c1NpYmxpbmc6ZnVuY3Rpb24oUCl7UD1CLkRvbS5nZXQoUCk7aWYo
IVApe3JldHVybiBudWxsO31yZXR1cm4gQi5Eb20uZ2V0UHJldmlvdXNTaWJsaW5n
QnkoUCk7fSxnZXROZXh0U2libGluZ0J5OmZ1bmN0aW9uKFAsUSl7d2hpbGUoUCl7
UD1QLm5leHRTaWJsaW5nO2lmKEQoUCxRKSl7cmV0dXJuIFA7fX1yZXR1cm4gbnVs
bDt9LGdldE5leHRTaWJsaW5nOmZ1bmN0aW9uKFApe1A9Qi5Eb20uZ2V0KFApO2lm
KCFQKXtyZXR1cm4gbnVsbDt9cmV0dXJuIEIuRG9tLmdldE5leHRTaWJsaW5nQnko
UCk7fSxnZXRGaXJzdENoaWxkQnk6ZnVuY3Rpb24oUCxSKXt2YXIgUT0oRChQLmZp
cnN0Q2hpbGQsUikpP1AuZmlyc3RDaGlsZDpudWxsO3JldHVybiBRfHxCLkRvbS5n
ZXROZXh0U2libGluZ0J5KFAuZmlyc3RDaGlsZCxSKTt9LGdldEZpcnN0Q2hpbGQ6
ZnVuY3Rpb24oUCxRKXtQPUIuRG9tLmdldChQKTtpZighUCl7cmV0dXJuIG51bGw7
fXJldHVybiBCLkRvbS5nZXRGaXJzdENoaWxkQnkoUCk7fSxnZXRMYXN0Q2hpbGRC
eTpmdW5jdGlvbihQLFIpe2lmKCFQKXtyZXR1cm4gbnVsbDt9dmFyIFE9KEQoUC5s
YXN0Q2hpbGQsUikpP1AubGFzdENoaWxkOm51bGw7cmV0dXJuIFF8fEIuRG9tLmdl
dFByZXZpb3VzU2libGluZ0J5KFAubGFzdENoaWxkLFIpO30sZ2V0TGFzdENoaWxk
OmZ1bmN0aW9uKFApe1A9Qi5Eb20uZ2V0KFApO3JldHVybiBCLkRvbS5nZXRMYXN0
Q2hpbGRCeShQKTt9LGdldENoaWxkcmVuQnk6ZnVuY3Rpb24oUSxTKXt2YXIgUj1C
LkRvbS5nZXRGaXJzdENoaWxkQnkoUSxTKTt2YXIgUD1SP1tSXTpbXTtCLkRvbS5n
ZXROZXh0U2libGluZ0J5KFIsZnVuY3Rpb24oVCl7aWYoIVN8fFMoVCkpe1BbUC5s
ZW5ndGhdPVQ7fXJldHVybiBmYWxzZTt9KTtyZXR1cm4gUDt9LGdldENoaWxkcmVu
OmZ1bmN0aW9uKFApe1A9Qi5Eb20uZ2V0KFApO2lmKCFQKXt9cmV0dXJuIEIuRG9t
LmdldENoaWxkcmVuQnkoUCk7fSxnZXREb2N1bWVudFNjcm9sbExlZnQ6ZnVuY3Rp
b24oUCl7UD1QfHxNO3JldHVybiBNYXRoLm1heChQLmRvY3VtZW50RWxlbWVudC5z
Y3JvbGxMZWZ0LFAuYm9keS5zY3JvbGxMZWZ0KTt9LGdldERvY3VtZW50U2Nyb2xs
VG9wOmZ1bmN0aW9uKFApe1A9UHx8TTtyZXR1cm4gTWF0aC5tYXgoUC5kb2N1bWVu
dEVsZW1lbnQuc2Nyb2xsVG9wLFAuYm9keS5zY3JvbGxUb3ApO30saW5zZXJ0QmVm
b3JlOmZ1bmN0aW9uKFEsUCl7UT1CLkRvbS5nZXQoUSk7UD1CLkRvbS5nZXQoUCk7
aWYoIVF8fCFQfHwhUC5wYXJlbnROb2RlKXtyZXR1cm4gbnVsbDt9cmV0dXJuIFAu
cGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoUSxQKTt9LGluc2VydEFmdGVyOmZ1bmN0
aW9uKFEsUCl7UT1CLkRvbS5nZXQoUSk7UD1CLkRvbS5nZXQoUCk7aWYoIVF8fCFQ
fHwhUC5wYXJlbnROb2RlKXtyZXR1cm4gbnVsbDt9aWYoUC5uZXh0U2libGluZyl7
cmV0dXJuIFAucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoUSxQLm5leHRTaWJsaW5n
KTt9ZWxzZXtyZXR1cm4gUC5wYXJlbnROb2RlLmFwcGVuZENoaWxkKFEpO319LGdl
dENsaWVudFJlZ2lvbjpmdW5jdGlvbigpe3ZhciBSPUIuRG9tLmdldERvY3VtZW50
U2Nyb2xsVG9wKCksUT1CLkRvbS5nZXREb2N1bWVudFNjcm9sbExlZnQoKSxTPUIu
RG9tLmdldFZpZXdwb3J0V2lkdGgoKStRLFA9Qi5Eb20uZ2V0Vmlld3BvcnRIZWln
aHQoKStSO3JldHVybiBuZXcgQi5SZWdpb24oUixTLFAsUSk7fX07dmFyIEg9ZnVu
Y3Rpb24oKXtpZihNLmRvY3VtZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJl
Y3Qpe3JldHVybiBmdW5jdGlvbihRKXt2YXIgUj1RLmdldEJvdW5kaW5nQ2xpZW50
UmVjdCgpO3ZhciBQPVEub3duZXJEb2N1bWVudDtyZXR1cm5bUi5sZWZ0K0IuRG9t
LmdldERvY3VtZW50U2Nyb2xsTGVmdChQKSxSLnRvcCtCLkRvbS5nZXREb2N1bWVu
dFNjcm9sbFRvcChQKV07fTt9ZWxzZXtyZXR1cm4gZnVuY3Rpb24oUil7dmFyIFM9
W1Iub2Zmc2V0TGVmdCxSLm9mZnNldFRvcF07dmFyIFE9Ui5vZmZzZXRQYXJlbnQ7
dmFyIFA9KEwmJkIuRG9tLmdldFN0eWxlKFIsInBvc2l0aW9uIik9PSJhYnNvbHV0
ZSImJlIub2Zmc2V0UGFyZW50PT1SLm93bmVyRG9jdW1lbnQuYm9keSk7aWYoUSE9
Uil7d2hpbGUoUSl7U1swXSs9US5vZmZzZXRMZWZ0O1NbMV0rPVEub2Zmc2V0VG9w
O2lmKCFQJiZMJiZCLkRvbS5nZXRTdHlsZShRLCJwb3NpdGlvbiIpPT0iYWJzb2x1
dGUiKXtQPXRydWU7fVE9US5vZmZzZXRQYXJlbnQ7fX1pZihQKXtTWzBdLT1SLm93
bmVyRG9jdW1lbnQuYm9keS5vZmZzZXRMZWZ0O1NbMV0tPVIub3duZXJEb2N1bWVu
dC5ib2R5Lm9mZnNldFRvcDt9UT1SLnBhcmVudE5vZGU7d2hpbGUoUS50YWdOYW1l
JiYhRS5ST09UX1RBRy50ZXN0KFEudGFnTmFtZSkpe2lmKFEuc2Nyb2xsVG9wfHxR
LnNjcm9sbExlZnQpe2lmKCFFLk9QX1NDUk9MTC50ZXN0KEIuRG9tLmdldFN0eWxl
KFEsImRpc3BsYXkiKSkpe2lmKCFDfHxCLkRvbS5nZXRTdHlsZShRLCJvdmVyZmxv
dyIpIT09InZpc2libGUiKXtTWzBdLT1RLnNjcm9sbExlZnQ7U1sxXS09US5zY3Jv
bGxUb3A7fX19UT1RLnBhcmVudE5vZGU7fXJldHVybiBTO307fX0oKTt9KSgpO1lB
SE9PLnV0aWwuUmVnaW9uPWZ1bmN0aW9uKEMsRCxBLEIpe3RoaXMudG9wPUM7dGhp
c1sxXT1DO3RoaXMucmlnaHQ9RDt0aGlzLmJvdHRvbT1BO3RoaXMubGVmdD1CO3Ro
aXNbMF09Qjt9O1lBSE9PLnV0aWwuUmVnaW9uLnByb3RvdHlwZS5jb250YWlucz1m
dW5jdGlvbihBKXtyZXR1cm4oQS5sZWZ0Pj10aGlzLmxlZnQmJkEucmlnaHQ8PXRo
aXMucmlnaHQmJkEudG9wPj10aGlzLnRvcCYmQS5ib3R0b208PXRoaXMuYm90dG9t
KTt9O1lBSE9PLnV0aWwuUmVnaW9uLnByb3RvdHlwZS5nZXRBcmVhPWZ1bmN0aW9u
KCl7cmV0dXJuKCh0aGlzLmJvdHRvbS10aGlzLnRvcCkqKHRoaXMucmlnaHQtdGhp
cy5sZWZ0KSk7fTtZQUhPTy51dGlsLlJlZ2lvbi5wcm90b3R5cGUuaW50ZXJzZWN0
PWZ1bmN0aW9uKEUpe3ZhciBDPU1hdGgubWF4KHRoaXMudG9wLEUudG9wKTt2YXIg
RD1NYXRoLm1pbih0aGlzLnJpZ2h0LEUucmlnaHQpO3ZhciBBPU1hdGgubWluKHRo
aXMuYm90dG9tLEUuYm90dG9tKTt2YXIgQj1NYXRoLm1heCh0aGlzLmxlZnQsRS5s
ZWZ0KTtpZihBPj1DJiZEPj1CKXtyZXR1cm4gbmV3IFlBSE9PLnV0aWwuUmVnaW9u
KEMsRCxBLEIpO31lbHNle3JldHVybiBudWxsO319O1lBSE9PLnV0aWwuUmVnaW9u
LnByb3RvdHlwZS51bmlvbj1mdW5jdGlvbihFKXt2YXIgQz1NYXRoLm1pbih0aGlz
LnRvcCxFLnRvcCk7dmFyIEQ9TWF0aC5tYXgodGhpcy5yaWdodCxFLnJpZ2h0KTt2
YXIgQT1NYXRoLm1heCh0aGlzLmJvdHRvbSxFLmJvdHRvbSk7dmFyIEI9TWF0aC5t
aW4odGhpcy5sZWZ0LEUubGVmdCk7cmV0dXJuIG5ldyBZQUhPTy51dGlsLlJlZ2lv
bihDLEQsQSxCKTt9O1lBSE9PLnV0aWwuUmVnaW9uLnByb3RvdHlwZS50b1N0cmlu
Zz1mdW5jdGlvbigpe3JldHVybigiUmVnaW9uIHsiKyJ0b3A6ICIrdGhpcy50b3Ar
IiwgcmlnaHQ6ICIrdGhpcy5yaWdodCsiLCBib3R0b206ICIrdGhpcy5ib3R0b20r
IiwgbGVmdDogIit0aGlzLmxlZnQrIn0iKTt9O1lBSE9PLnV0aWwuUmVnaW9uLmdl
dFJlZ2lvbj1mdW5jdGlvbihEKXt2YXIgRj1ZQUhPTy51dGlsLkRvbS5nZXRYWShE
KTt2YXIgQz1GWzFdO3ZhciBFPUZbMF0rRC5vZmZzZXRXaWR0aDt2YXIgQT1GWzFd
K0Qub2Zmc2V0SGVpZ2h0O3ZhciBCPUZbMF07cmV0dXJuIG5ldyBZQUhPTy51dGls
LlJlZ2lvbihDLEUsQSxCKTt9O1lBSE9PLnV0aWwuUG9pbnQ9ZnVuY3Rpb24oQSxC
KXtpZihZQUhPTy5sYW5nLmlzQXJyYXkoQSkpe0I9QVsxXTtBPUFbMF07fXRoaXMu
eD10aGlzLnJpZ2h0PXRoaXMubGVmdD10aGlzWzBdPUE7dGhpcy55PXRoaXMudG9w
PXRoaXMuYm90dG9tPXRoaXNbMV09Qjt9O1lBSE9PLnV0aWwuUG9pbnQucHJvdG90
eXBlPW5ldyBZQUhPTy51dGlsLlJlZ2lvbigpO1lBSE9PLnJlZ2lzdGVyKCJkb20i
LFlBSE9PLnV0aWwuRG9tLHt2ZXJzaW9uOiIyLjUuMiIsYnVpbGQ6IjEwNzYifSk7
WUFIT08udXRpbC5DdXN0b21FdmVudD1mdW5jdGlvbihELEIsQyxBKXt0aGlzLnR5
cGU9RDt0aGlzLnNjb3BlPUJ8fHdpbmRvdzt0aGlzLnNpbGVudD1DO3RoaXMuc2ln
bmF0dXJlPUF8fFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQuTElTVDt0aGlzLnN1YnNj
cmliZXJzPVtdO2lmKCF0aGlzLnNpbGVudCl7fXZhciBFPSJfWVVJQ0VPblN1YnNj
cmliZSI7aWYoRCE9PUUpe3RoaXMuc3Vic2NyaWJlRXZlbnQ9bmV3IFlBSE9PLnV0
aWwuQ3VzdG9tRXZlbnQoRSx0aGlzLHRydWUpO310aGlzLmxhc3RFcnJvcj1udWxs
O307WUFIT08udXRpbC5DdXN0b21FdmVudC5MSVNUPTA7WUFIT08udXRpbC5DdXN0
b21FdmVudC5GTEFUPTE7WUFIT08udXRpbC5DdXN0b21FdmVudC5wcm90b3R5cGU9
e3N1YnNjcmliZTpmdW5jdGlvbihCLEMsQSl7aWYoIUIpe3Rocm93IG5ldyBFcnJv
cigiSW52YWxpZCBjYWxsYmFjayBmb3Igc3Vic2NyaWJlciB0byAnIit0aGlzLnR5
cGUrIiciKTt9aWYodGhpcy5zdWJzY3JpYmVFdmVudCl7dGhpcy5zdWJzY3JpYmVF
dmVudC5maXJlKEIsQyxBKTt9dGhpcy5zdWJzY3JpYmVycy5wdXNoKG5ldyBZQUhP
Ty51dGlsLlN1YnNjcmliZXIoQixDLEEpKTt9LHVuc3Vic2NyaWJlOmZ1bmN0aW9u
KEQsRil7aWYoIUQpe3JldHVybiB0aGlzLnVuc3Vic2NyaWJlQWxsKCk7fXZhciBF
PWZhbHNlO2Zvcih2YXIgQj0wLEE9dGhpcy5zdWJzY3JpYmVycy5sZW5ndGg7QjxB
OysrQil7dmFyIEM9dGhpcy5zdWJzY3JpYmVyc1tCXTtpZihDJiZDLmNvbnRhaW5z
KEQsRikpe3RoaXMuX2RlbGV0ZShCKTtFPXRydWU7fX1yZXR1cm4gRTt9LGZpcmU6
ZnVuY3Rpb24oKXt0aGlzLmxhc3RFcnJvcj1udWxsO3ZhciBLPVtdLEU9dGhpcy5z
dWJzY3JpYmVycy5sZW5ndGg7aWYoIUUmJnRoaXMuc2lsZW50KXtyZXR1cm4gdHJ1
ZTt9dmFyIEk9W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMCksRz10cnVlLEQsSj1m
YWxzZTtpZighdGhpcy5zaWxlbnQpe312YXIgQz10aGlzLnN1YnNjcmliZXJzLnNs
aWNlKCksQT1ZQUhPTy51dGlsLkV2ZW50LnRocm93RXJyb3JzO2ZvcihEPTA7RDxF
OysrRCl7dmFyIE09Q1tEXTtpZighTSl7Sj10cnVlO31lbHNle2lmKCF0aGlzLnNp
bGVudCl7fXZhciBMPU0uZ2V0U2NvcGUodGhpcy5zY29wZSk7aWYodGhpcy5zaWdu
YXR1cmU9PVlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQuRkxBVCl7dmFyIEI9bnVsbDtp
ZihJLmxlbmd0aD4wKXtCPUlbMF07fXRyeXtHPU0uZm4uY2FsbChMLEIsTS5vYmop
O31jYXRjaChGKXt0aGlzLmxhc3RFcnJvcj1GO2lmKEEpe3Rocm93IEY7fX19ZWxz
ZXt0cnl7Rz1NLmZuLmNhbGwoTCx0aGlzLnR5cGUsSSxNLm9iaik7fWNhdGNoKEgp
e3RoaXMubGFzdEVycm9yPUg7aWYoQSl7dGhyb3cgSDt9fX1pZihmYWxzZT09PUcp
e2lmKCF0aGlzLnNpbGVudCl7fWJyZWFrO319fXJldHVybihHIT09ZmFsc2UpO30s
dW5zdWJzY3JpYmVBbGw6ZnVuY3Rpb24oKXtmb3IodmFyIEE9dGhpcy5zdWJzY3Jp
YmVycy5sZW5ndGgtMTtBPi0xO0EtLSl7dGhpcy5fZGVsZXRlKEEpO310aGlzLnN1
YnNjcmliZXJzPVtdO3JldHVybiBBO30sX2RlbGV0ZTpmdW5jdGlvbihBKXt2YXIg
Qj10aGlzLnN1YnNjcmliZXJzW0FdO2lmKEIpe2RlbGV0ZSBCLmZuO2RlbGV0ZSBC
Lm9iajt9dGhpcy5zdWJzY3JpYmVycy5zcGxpY2UoQSwxKTt9LHRvU3RyaW5nOmZ1
bmN0aW9uKCl7cmV0dXJuIkN1c3RvbUV2ZW50OiAiKyInIit0aGlzLnR5cGUrIics
ICIrInNjb3BlOiAiK3RoaXMuc2NvcGU7fX07WUFIT08udXRpbC5TdWJzY3JpYmVy
PWZ1bmN0aW9uKEIsQyxBKXt0aGlzLmZuPUI7dGhpcy5vYmo9WUFIT08ubGFuZy5p
c1VuZGVmaW5lZChDKT9udWxsOkM7dGhpcy5vdmVycmlkZT1BO307WUFIT08udXRp
bC5TdWJzY3JpYmVyLnByb3RvdHlwZS5nZXRTY29wZT1mdW5jdGlvbihBKXtpZih0
aGlzLm92ZXJyaWRlKXtpZih0aGlzLm92ZXJyaWRlPT09dHJ1ZSl7cmV0dXJuIHRo
aXMub2JqO31lbHNle3JldHVybiB0aGlzLm92ZXJyaWRlO319cmV0dXJuIEE7fTtZ
QUhPTy51dGlsLlN1YnNjcmliZXIucHJvdG90eXBlLmNvbnRhaW5zPWZ1bmN0aW9u
KEEsQil7aWYoQil7cmV0dXJuKHRoaXMuZm49PUEmJnRoaXMub2JqPT1CKTt9ZWxz
ZXtyZXR1cm4odGhpcy5mbj09QSk7fX07WUFIT08udXRpbC5TdWJzY3JpYmVyLnBy
b3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJTdWJzY3JpYmVyIHsg
b2JqOiAiK3RoaXMub2JqKyIsIG92ZXJyaWRlOiAiKyh0aGlzLm92ZXJyaWRlfHwi
bm8iKSsiIH0iO307aWYoIVlBSE9PLnV0aWwuRXZlbnQpe1lBSE9PLnV0aWwuRXZl
bnQ9ZnVuY3Rpb24oKXt2YXIgSD1mYWxzZTt2YXIgST1bXTt2YXIgSj1bXTt2YXIg
Rz1bXTt2YXIgRT1bXTt2YXIgQz0wO3ZhciBGPVtdO3ZhciBCPVtdO3ZhciBBPTA7
dmFyIEQ9ezYzMjMyOjM4LDYzMjMzOjQwLDYzMjM0OjM3LDYzMjM1OjM5LDYzMjc2
OjMzLDYzMjc3OjM0LDI1Ojl9O3JldHVybntQT0xMX1JFVFJZUzoyMDAwLFBPTExf
SU5URVJWQUw6MjAsRUw6MCxUWVBFOjEsRk46MixXRk46MyxVTkxPQURfT0JKOjMs
QURKX1NDT1BFOjQsT0JKOjUsT1ZFUlJJREU6NixsYXN0RXJyb3I6bnVsbCxpc1Nh
ZmFyaTpZQUhPTy5lbnYudWEud2Via2l0LHdlYmtpdDpZQUhPTy5lbnYudWEud2Vi
a2l0LGlzSUU6WUFIT08uZW52LnVhLmllLF9pbnRlcnZhbDpudWxsLF9kcmk6bnVs
bCxET01SZWFkeTpmYWxzZSx0aHJvd0Vycm9yczpmYWxzZSxzdGFydEludGVydmFs
OmZ1bmN0aW9uKCl7aWYoIXRoaXMuX2ludGVydmFsKXt2YXIgSz10aGlzO3ZhciBM
PWZ1bmN0aW9uKCl7Sy5fdHJ5UHJlbG9hZEF0dGFjaCgpO307dGhpcy5faW50ZXJ2
YWw9c2V0SW50ZXJ2YWwoTCx0aGlzLlBPTExfSU5URVJWQUwpO319LG9uQXZhaWxh
YmxlOmZ1bmN0aW9uKFAsTSxRLE8sTil7dmFyIEs9KFlBSE9PLmxhbmcuaXNTdHJp
bmcoUCkpP1tQXTpQO2Zvcih2YXIgTD0wO0w8Sy5sZW5ndGg7TD1MKzEpe0YucHVz
aCh7aWQ6S1tMXSxmbjpNLG9iajpRLG92ZXJyaWRlOk8sY2hlY2tSZWFkeTpOfSk7
fUM9dGhpcy5QT0xMX1JFVFJZUzt0aGlzLnN0YXJ0SW50ZXJ2YWwoKTt9LG9uQ29u
dGVudFJlYWR5OmZ1bmN0aW9uKE0sSyxOLEwpe3RoaXMub25BdmFpbGFibGUoTSxL
LE4sTCx0cnVlKTt9LG9uRE9NUmVhZHk6ZnVuY3Rpb24oSyxNLEwpe2lmKHRoaXMu
RE9NUmVhZHkpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgTj13aW5kb3c7aWYo
TCl7aWYoTD09PXRydWUpe049TTt9ZWxzZXtOPUw7fX1LLmNhbGwoTiwiRE9NUmVh
ZHkiLFtdLE0pO30sMCk7fWVsc2V7dGhpcy5ET01SZWFkeUV2ZW50LnN1YnNjcmli
ZShLLE0sTCk7fX0sYWRkTGlzdGVuZXI6ZnVuY3Rpb24oTSxLLFYsUSxMKXtpZigh
Vnx8IVYuY2FsbCl7cmV0dXJuIGZhbHNlO31pZih0aGlzLl9pc1ZhbGlkQ29sbGVj
dGlvbihNKSl7dmFyIFc9dHJ1ZTtmb3IodmFyIFI9MCxUPU0ubGVuZ3RoO1I8VDsr
K1Ipe1c9dGhpcy5vbihNW1JdLEssVixRLEwpJiZXO31yZXR1cm4gVzt9ZWxzZXtp
ZihZQUhPTy5sYW5nLmlzU3RyaW5nKE0pKXt2YXIgUD10aGlzLmdldEVsKE0pO2lm
KFApe009UDt9ZWxzZXt0aGlzLm9uQXZhaWxhYmxlKE0sZnVuY3Rpb24oKXtZQUhP
Ty51dGlsLkV2ZW50Lm9uKE0sSyxWLFEsTCk7fSk7cmV0dXJuIHRydWU7fX19aWYo
IU0pe3JldHVybiBmYWxzZTt9aWYoInVubG9hZCI9PUsmJlEhPT10aGlzKXtKW0ou
bGVuZ3RoXT1bTSxLLFYsUSxMXTtyZXR1cm4gdHJ1ZTt9dmFyIFk9TTtpZihMKXtp
ZihMPT09dHJ1ZSl7WT1RO31lbHNle1k9TDt9fXZhciBOPWZ1bmN0aW9uKFope3Jl
dHVybiBWLmNhbGwoWSxZQUhPTy51dGlsLkV2ZW50LmdldEV2ZW50KFosTSksUSk7
fTt2YXIgWD1bTSxLLFYsTixZLFEsTF07dmFyIFM9SS5sZW5ndGg7SVtTXT1YO2lm
KHRoaXMudXNlTGVnYWN5RXZlbnQoTSxLKSl7dmFyIE89dGhpcy5nZXRMZWdhY3lJ
bmRleChNLEspO2lmKE89PS0xfHxNIT1HW09dWzBdKXtPPUcubGVuZ3RoO0JbTS5p
ZCtLXT1PO0dbT109W00sSyxNWyJvbiIrS11dO0VbT109W107TVsib24iK0tdPWZ1
bmN0aW9uKFope1lBSE9PLnV0aWwuRXZlbnQuZmlyZUxlZ2FjeUV2ZW50KFlBSE9P
LnV0aWwuRXZlbnQuZ2V0RXZlbnQoWiksTyk7fTt9RVtPXS5wdXNoKFgpO31lbHNl
e3RyeXt0aGlzLl9zaW1wbGVBZGQoTSxLLE4sZmFsc2UpO31jYXRjaChVKXt0aGlz
Lmxhc3RFcnJvcj1VO3RoaXMucmVtb3ZlTGlzdGVuZXIoTSxLLFYpO3JldHVybiBm
YWxzZTt9fXJldHVybiB0cnVlO30sZmlyZUxlZ2FjeUV2ZW50OmZ1bmN0aW9uKE8s
TSl7dmFyIFE9dHJ1ZSxLLFMsUixULFA7Uz1FW01dLnNsaWNlKCk7Zm9yKHZhciBM
PTAsTj1TLmxlbmd0aDtMPE47KytMKXtSPVNbTF07aWYoUiYmUlt0aGlzLldGTl0p
e1Q9Ult0aGlzLkFESl9TQ09QRV07UD1SW3RoaXMuV0ZOXS5jYWxsKFQsTyk7UT0o
USYmUCk7fX1LPUdbTV07aWYoSyYmS1syXSl7S1syXShPKTt9cmV0dXJuIFE7fSxn
ZXRMZWdhY3lJbmRleDpmdW5jdGlvbihMLE0pe3ZhciBLPXRoaXMuZ2VuZXJhdGVJ
ZChMKStNO2lmKHR5cGVvZiBCW0tdPT0idW5kZWZpbmVkIil7cmV0dXJuIC0xO31l
bHNle3JldHVybiBCW0tdO319LHVzZUxlZ2FjeUV2ZW50OmZ1bmN0aW9uKEwsTSl7
aWYodGhpcy53ZWJraXQmJigiY2xpY2siPT1NfHwiZGJsY2xpY2siPT1NKSl7dmFy
IEs9cGFyc2VJbnQodGhpcy53ZWJraXQsMTApO2lmKCFpc05hTihLKSYmSzw0MTgp
e3JldHVybiB0cnVlO319cmV0dXJuIGZhbHNlO30scmVtb3ZlTGlzdGVuZXI6ZnVu
Y3Rpb24oTCxLLFQpe3ZhciBPLFIsVjtpZih0eXBlb2YgTD09InN0cmluZyIpe0w9
dGhpcy5nZXRFbChMKTt9ZWxzZXtpZih0aGlzLl9pc1ZhbGlkQ29sbGVjdGlvbihM
KSl7dmFyIFU9dHJ1ZTtmb3IoTz1MLmxlbmd0aC0xO08+LTE7Ty0tKXtVPSh0aGlz
LnJlbW92ZUxpc3RlbmVyKExbT10sSyxUKSYmVSk7fXJldHVybiBVO319aWYoIVR8
fCFULmNhbGwpe3JldHVybiB0aGlzLnB1cmdlRWxlbWVudChMLGZhbHNlLEspO31p
ZigidW5sb2FkIj09Syl7Zm9yKE89Si5sZW5ndGgtMTtPPi0xO08tLSl7Vj1KW09d
O2lmKFYmJlZbMF09PUwmJlZbMV09PUsmJlZbMl09PVQpe0ouc3BsaWNlKE8sMSk7
cmV0dXJuIHRydWU7fX1yZXR1cm4gZmFsc2U7fXZhciBQPW51bGw7dmFyIFE9YXJn
dW1lbnRzWzNdO2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIFEpe1E9dGhpcy5fZ2V0
Q2FjaGVJbmRleChMLEssVCk7fWlmKFE+PTApe1A9SVtRXTt9aWYoIUx8fCFQKXty
ZXR1cm4gZmFsc2U7fWlmKHRoaXMudXNlTGVnYWN5RXZlbnQoTCxLKSl7dmFyIE49
dGhpcy5nZXRMZWdhY3lJbmRleChMLEspO3ZhciBNPUVbTl07aWYoTSl7Zm9yKE89
MCxSPU0ubGVuZ3RoO088UjsrK08pe1Y9TVtPXTtpZihWJiZWW3RoaXMuRUxdPT1M
JiZWW3RoaXMuVFlQRV09PUsmJlZbdGhpcy5GTl09PVQpe00uc3BsaWNlKE8sMSk7
YnJlYWs7fX19fWVsc2V7dHJ5e3RoaXMuX3NpbXBsZVJlbW92ZShMLEssUFt0aGlz
LldGTl0sZmFsc2UpO31jYXRjaChTKXt0aGlzLmxhc3RFcnJvcj1TO3JldHVybiBm
YWxzZTt9fWRlbGV0ZSBJW1FdW3RoaXMuV0ZOXTtkZWxldGUgSVtRXVt0aGlzLkZO
XTtJLnNwbGljZShRLDEpO3JldHVybiB0cnVlO30sZ2V0VGFyZ2V0OmZ1bmN0aW9u
KE0sTCl7dmFyIEs9TS50YXJnZXR8fE0uc3JjRWxlbWVudDtyZXR1cm4gdGhpcy5y
ZXNvbHZlVGV4dE5vZGUoSyk7fSxyZXNvbHZlVGV4dE5vZGU6ZnVuY3Rpb24oTCl7
dHJ5e2lmKEwmJjM9PUwubm9kZVR5cGUpe3JldHVybiBMLnBhcmVudE5vZGU7fX1j
YXRjaChLKXt9cmV0dXJuIEw7fSxnZXRQYWdlWDpmdW5jdGlvbihMKXt2YXIgSz1M
LnBhZ2VYO2lmKCFLJiYwIT09Syl7Sz1MLmNsaWVudFh8fDA7aWYodGhpcy5pc0lF
KXtLKz10aGlzLl9nZXRTY3JvbGxMZWZ0KCk7fX1yZXR1cm4gSzt9LGdldFBhZ2VZ
OmZ1bmN0aW9uKEspe3ZhciBMPUsucGFnZVk7aWYoIUwmJjAhPT1MKXtMPUsuY2xp
ZW50WXx8MDtpZih0aGlzLmlzSUUpe0wrPXRoaXMuX2dldFNjcm9sbFRvcCgpO319
cmV0dXJuIEw7DQp9LGdldFhZOmZ1bmN0aW9uKEspe3JldHVyblt0aGlzLmdldFBh
Z2VYKEspLHRoaXMuZ2V0UGFnZVkoSyldO30sZ2V0UmVsYXRlZFRhcmdldDpmdW5j
dGlvbihMKXt2YXIgSz1MLnJlbGF0ZWRUYXJnZXQ7aWYoIUspe2lmKEwudHlwZT09
Im1vdXNlb3V0Iil7Sz1MLnRvRWxlbWVudDt9ZWxzZXtpZihMLnR5cGU9PSJtb3Vz
ZW92ZXIiKXtLPUwuZnJvbUVsZW1lbnQ7fX19cmV0dXJuIHRoaXMucmVzb2x2ZVRl
eHROb2RlKEspO30sZ2V0VGltZTpmdW5jdGlvbihNKXtpZighTS50aW1lKXt2YXIg
TD1uZXcgRGF0ZSgpLmdldFRpbWUoKTt0cnl7TS50aW1lPUw7fWNhdGNoKEspe3Ro
aXMubGFzdEVycm9yPUs7cmV0dXJuIEw7fX1yZXR1cm4gTS50aW1lO30sc3RvcEV2
ZW50OmZ1bmN0aW9uKEspe3RoaXMuc3RvcFByb3BhZ2F0aW9uKEspO3RoaXMucHJl
dmVudERlZmF1bHQoSyk7fSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oSyl7aWYo
Sy5zdG9wUHJvcGFnYXRpb24pe0suc3RvcFByb3BhZ2F0aW9uKCk7fWVsc2V7Sy5j
YW5jZWxCdWJibGU9dHJ1ZTt9fSxwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbihLKXtp
ZihLLnByZXZlbnREZWZhdWx0KXtLLnByZXZlbnREZWZhdWx0KCk7fWVsc2V7Sy5y
ZXR1cm5WYWx1ZT1mYWxzZTt9fSxnZXRFdmVudDpmdW5jdGlvbihNLEspe3ZhciBM
PU18fHdpbmRvdy5ldmVudDtpZighTCl7dmFyIE49dGhpcy5nZXRFdmVudC5jYWxs
ZXI7d2hpbGUoTil7TD1OLmFyZ3VtZW50c1swXTtpZihMJiZFdmVudD09TC5jb25z
dHJ1Y3Rvcil7YnJlYWs7fU49Ti5jYWxsZXI7fX1yZXR1cm4gTDt9LGdldENoYXJD
b2RlOmZ1bmN0aW9uKEwpe3ZhciBLPUwua2V5Q29kZXx8TC5jaGFyQ29kZXx8MDtp
ZihZQUhPTy5lbnYudWEud2Via2l0JiYoSyBpbiBEKSl7Sz1EW0tdO31yZXR1cm4g
Szt9LF9nZXRDYWNoZUluZGV4OmZ1bmN0aW9uKE8sUCxOKXtmb3IodmFyIE09MCxM
PUkubGVuZ3RoO008TDtNPU0rMSl7dmFyIEs9SVtNXTtpZihLJiZLW3RoaXMuRk5d
PT1OJiZLW3RoaXMuRUxdPT1PJiZLW3RoaXMuVFlQRV09PVApe3JldHVybiBNO319
cmV0dXJuIC0xO30sZ2VuZXJhdGVJZDpmdW5jdGlvbihLKXt2YXIgTD1LLmlkO2lm
KCFMKXtMPSJ5dWlldnRhdXRvaWQtIitBOysrQTtLLmlkPUw7fXJldHVybiBMO30s
X2lzVmFsaWRDb2xsZWN0aW9uOmZ1bmN0aW9uKEwpe3RyeXtyZXR1cm4oTCYmdHlw
ZW9mIEwhPT0ic3RyaW5nIiYmTC5sZW5ndGgmJiFMLnRhZ05hbWUmJiFMLmFsZXJ0
JiZ0eXBlb2YgTFswXSE9PSJ1bmRlZmluZWQiKTt9Y2F0Y2goSyl7cmV0dXJuIGZh
bHNlO319LGVsQ2FjaGU6e30sZ2V0RWw6ZnVuY3Rpb24oSyl7cmV0dXJuKHR5cGVv
ZiBLPT09InN0cmluZyIpP2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKEspOks7fSxj
bGVhckNhY2hlOmZ1bmN0aW9uKCl7fSxET01SZWFkeUV2ZW50Om5ldyBZQUhPTy51
dGlsLkN1c3RvbUV2ZW50KCJET01SZWFkeSIsdGhpcyksX2xvYWQ6ZnVuY3Rpb24o
TCl7aWYoIUgpe0g9dHJ1ZTt2YXIgSz1ZQUhPTy51dGlsLkV2ZW50O0suX3JlYWR5
KCk7Sy5fdHJ5UHJlbG9hZEF0dGFjaCgpO319LF9yZWFkeTpmdW5jdGlvbihMKXt2
YXIgSz1ZQUhPTy51dGlsLkV2ZW50O2lmKCFLLkRPTVJlYWR5KXtLLkRPTVJlYWR5
PXRydWU7Sy5ET01SZWFkeUV2ZW50LmZpcmUoKTtLLl9zaW1wbGVSZW1vdmUoZG9j
dW1lbnQsIkRPTUNvbnRlbnRMb2FkZWQiLEsuX3JlYWR5KTt9fSxfdHJ5UHJlbG9h
ZEF0dGFjaDpmdW5jdGlvbigpe2lmKEYubGVuZ3RoPT09MCl7Qz0wO2NsZWFySW50
ZXJ2YWwodGhpcy5faW50ZXJ2YWwpO3RoaXMuX2ludGVydmFsPW51bGw7cmV0dXJu
IDt9aWYodGhpcy5sb2NrZWQpe3JldHVybiA7fWlmKHRoaXMuaXNJRSl7aWYoIXRo
aXMuRE9NUmVhZHkpe3RoaXMuc3RhcnRJbnRlcnZhbCgpO3JldHVybiA7fX10aGlz
LmxvY2tlZD10cnVlO3ZhciBRPSFIO2lmKCFRKXtRPShDPjAmJkYubGVuZ3RoPjAp
O312YXIgUD1bXTt2YXIgUj1mdW5jdGlvbihULFUpe3ZhciBTPVQ7aWYoVS5vdmVy
cmlkZSl7aWYoVS5vdmVycmlkZT09PXRydWUpe1M9VS5vYmo7fWVsc2V7Uz1VLm92
ZXJyaWRlO319VS5mbi5jYWxsKFMsVS5vYmopO307dmFyIEwsSyxPLE4sTT1bXTtm
b3IoTD0wLEs9Ri5sZW5ndGg7TDxLO0w9TCsxKXtPPUZbTF07aWYoTyl7Tj10aGlz
LmdldEVsKE8uaWQpO2lmKE4pe2lmKE8uY2hlY2tSZWFkeSl7aWYoSHx8Ti5uZXh0
U2libGluZ3x8IVEpe00ucHVzaChPKTtGW0xdPW51bGw7fX1lbHNle1IoTixPKTtG
W0xdPW51bGw7fX1lbHNle1AucHVzaChPKTt9fX1mb3IoTD0wLEs9TS5sZW5ndGg7
TDxLO0w9TCsxKXtPPU1bTF07Uih0aGlzLmdldEVsKE8uaWQpLE8pO31DLS07aWYo
USl7Zm9yKEw9Ri5sZW5ndGgtMTtMPi0xO0wtLSl7Tz1GW0xdO2lmKCFPfHwhTy5p
ZCl7Ri5zcGxpY2UoTCwxKTt9fXRoaXMuc3RhcnRJbnRlcnZhbCgpO31lbHNle2Ns
ZWFySW50ZXJ2YWwodGhpcy5faW50ZXJ2YWwpO3RoaXMuX2ludGVydmFsPW51bGw7
fXRoaXMubG9ja2VkPWZhbHNlO30scHVyZ2VFbGVtZW50OmZ1bmN0aW9uKE8sUCxS
KXt2YXIgTT0oWUFIT08ubGFuZy5pc1N0cmluZyhPKSk/dGhpcy5nZXRFbChPKTpP
O3ZhciBRPXRoaXMuZ2V0TGlzdGVuZXJzKE0sUiksTixLO2lmKFEpe2ZvcihOPVEu
bGVuZ3RoLTE7Tj4tMTtOLS0pe3ZhciBMPVFbTl07dGhpcy5yZW1vdmVMaXN0ZW5l
cihNLEwudHlwZSxMLmZuKTt9fWlmKFAmJk0mJk0uY2hpbGROb2Rlcyl7Zm9yKE49
MCxLPU0uY2hpbGROb2Rlcy5sZW5ndGg7TjxLOysrTil7dGhpcy5wdXJnZUVsZW1l
bnQoTS5jaGlsZE5vZGVzW05dLFAsUik7fX19LGdldExpc3RlbmVyczpmdW5jdGlv
bihNLEspe3ZhciBQPVtdLEw7aWYoIUspe0w9W0ksSl07fWVsc2V7aWYoSz09PSJ1
bmxvYWQiKXtMPVtKXTt9ZWxzZXtMPVtJXTt9fXZhciBSPShZQUhPTy5sYW5nLmlz
U3RyaW5nKE0pKT90aGlzLmdldEVsKE0pOk07Zm9yKHZhciBPPTA7TzxMLmxlbmd0
aDtPPU8rMSl7dmFyIFQ9TFtPXTtpZihUKXtmb3IodmFyIFE9MCxTPVQubGVuZ3Ro
O1E8UzsrK1Epe3ZhciBOPVRbUV07aWYoTiYmTlt0aGlzLkVMXT09PVImJighS3x8
Sz09PU5bdGhpcy5UWVBFXSkpe1AucHVzaCh7dHlwZTpOW3RoaXMuVFlQRV0sZm46
Tlt0aGlzLkZOXSxvYmo6Tlt0aGlzLk9CSl0sYWRqdXN0Ok5bdGhpcy5PVkVSUklE
RV0sc2NvcGU6Tlt0aGlzLkFESl9TQ09QRV0saW5kZXg6UX0pO319fX1yZXR1cm4o
UC5sZW5ndGgpP1A6bnVsbDt9LF91bmxvYWQ6ZnVuY3Rpb24oUSl7dmFyIEs9WUFI
T08udXRpbC5FdmVudCxOLE0sTCxQLE8sUj1KLnNsaWNlKCk7Zm9yKE49MCxQPUou
bGVuZ3RoO048UDsrK04pe0w9UltOXTtpZihMKXt2YXIgUz13aW5kb3c7aWYoTFtL
LkFESl9TQ09QRV0pe2lmKExbSy5BREpfU0NPUEVdPT09dHJ1ZSl7Uz1MW0suVU5M
T0FEX09CSl07fWVsc2V7Uz1MW0suQURKX1NDT1BFXTt9fUxbSy5GTl0uY2FsbChT
LEsuZ2V0RXZlbnQoUSxMW0suRUxdKSxMW0suVU5MT0FEX09CSl0pO1JbTl09bnVs
bDtMPW51bGw7Uz1udWxsO319Sj1udWxsO2lmKEkpe2ZvcihNPUkubGVuZ3RoLTE7
TT4tMTtNLS0pe0w9SVtNXTtpZihMKXtLLnJlbW92ZUxpc3RlbmVyKExbSy5FTF0s
TFtLLlRZUEVdLExbSy5GTl0sTSk7fX1MPW51bGw7fUc9bnVsbDtLLl9zaW1wbGVS
ZW1vdmUod2luZG93LCJ1bmxvYWQiLEsuX3VubG9hZCk7fSxfZ2V0U2Nyb2xsTGVm
dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9nZXRTY3JvbGwoKVsxXTt9LF9nZXRT
Y3JvbGxUb3A6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZ2V0U2Nyb2xsKClbMF07
fSxfZ2V0U2Nyb2xsOmZ1bmN0aW9uKCl7dmFyIEs9ZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50LEw9ZG9jdW1lbnQuYm9keTtpZihLJiYoSy5zY3JvbGxUb3B8fEsuc2Ny
b2xsTGVmdCkpe3JldHVybltLLnNjcm9sbFRvcCxLLnNjcm9sbExlZnRdO31lbHNl
e2lmKEwpe3JldHVybltMLnNjcm9sbFRvcCxMLnNjcm9sbExlZnRdO31lbHNle3Jl
dHVyblswLDBdO319fSxyZWdDRTpmdW5jdGlvbigpe30sX3NpbXBsZUFkZDpmdW5j
dGlvbigpe2lmKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKXtyZXR1cm4gZnVuY3Rp
b24oTSxOLEwsSyl7TS5hZGRFdmVudExpc3RlbmVyKE4sTCwoSykpO307fWVsc2V7
aWYod2luZG93LmF0dGFjaEV2ZW50KXtyZXR1cm4gZnVuY3Rpb24oTSxOLEwsSyl7
TS5hdHRhY2hFdmVudCgib24iK04sTCk7fTt9ZWxzZXtyZXR1cm4gZnVuY3Rpb24o
KXt9O319fSgpLF9zaW1wbGVSZW1vdmU6ZnVuY3Rpb24oKXtpZih3aW5kb3cucmVt
b3ZlRXZlbnRMaXN0ZW5lcil7cmV0dXJuIGZ1bmN0aW9uKE0sTixMLEspe00ucmVt
b3ZlRXZlbnRMaXN0ZW5lcihOLEwsKEspKTt9O31lbHNle2lmKHdpbmRvdy5kZXRh
Y2hFdmVudCl7cmV0dXJuIGZ1bmN0aW9uKEwsTSxLKXtMLmRldGFjaEV2ZW50KCJv
biIrTSxLKTt9O31lbHNle3JldHVybiBmdW5jdGlvbigpe307fX19KCl9O30oKTso
ZnVuY3Rpb24oKXt2YXIgRVU9WUFIT08udXRpbC5FdmVudDtFVS5vbj1FVS5hZGRM
aXN0ZW5lcjsNCmlmKEVVLmlzSUUpe1lBSE9PLnV0aWwuRXZlbnQub25ET01SZWFk
eShZQUhPTy51dGlsLkV2ZW50Ll90cnlQcmVsb2FkQXR0YWNoLFlBSE9PLnV0aWwu
RXZlbnQsdHJ1ZSk7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpO0VV
Ll9kcmk9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXt0cnl7bi5kb1Njcm9sbCgibGVm
dCIpO2NsZWFySW50ZXJ2YWwoRVUuX2RyaSk7RVUuX2RyaT1udWxsO0VVLl9yZWFk
eSgpO249bnVsbDt9Y2F0Y2goZXgpe319LEVVLlBPTExfSU5URVJWQUwpO31lbHNl
e2lmKEVVLndlYmtpdCYmRVUud2Via2l0PDUyNSl7RVUuX2RyaT1zZXRJbnRlcnZh
bChmdW5jdGlvbigpe3ZhciBycz1kb2N1bWVudC5yZWFkeVN0YXRlO2lmKCJsb2Fk
ZWQiPT1yc3x8ImNvbXBsZXRlIj09cnMpe2NsZWFySW50ZXJ2YWwoRVUuX2RyaSk7
RVUuX2RyaT1udWxsO0VVLl9yZWFkeSgpO319LEVVLlBPTExfSU5URVJWQUwpO31l
bHNle0VVLl9zaW1wbGVBZGQoZG9jdW1lbnQsIkRPTUNvbnRlbnRMb2FkZWQiLEVV
Ll9yZWFkeSk7fX1FVS5fc2ltcGxlQWRkKHdpbmRvdywibG9hZCIsRVUuX2xvYWQp
O0VVLl9zaW1wbGVBZGQod2luZG93LCJ1bmxvYWQiLEVVLl91bmxvYWQpO0VVLl90
cnlQcmVsb2FkQXR0YWNoKCk7fSkoKTt9WUFIT08udXRpbC5FdmVudFByb3ZpZGVy
PWZ1bmN0aW9uKCl7fTtZQUhPTy51dGlsLkV2ZW50UHJvdmlkZXIucHJvdG90eXBl
PXtfX3l1aV9ldmVudHM6bnVsbCxfX3l1aV9zdWJzY3JpYmVyczpudWxsLHN1YnNj
cmliZTpmdW5jdGlvbihBLEMsRixFKXt0aGlzLl9feXVpX2V2ZW50cz10aGlzLl9f
eXVpX2V2ZW50c3x8e307dmFyIEQ9dGhpcy5fX3l1aV9ldmVudHNbQV07aWYoRCl7
RC5zdWJzY3JpYmUoQyxGLEUpO31lbHNle3RoaXMuX195dWlfc3Vic2NyaWJlcnM9
dGhpcy5fX3l1aV9zdWJzY3JpYmVyc3x8e307dmFyIEI9dGhpcy5fX3l1aV9zdWJz
Y3JpYmVycztpZighQltBXSl7QltBXT1bXTt9QltBXS5wdXNoKHtmbjpDLG9iajpG
LG92ZXJyaWRlOkV9KTt9fSx1bnN1YnNjcmliZTpmdW5jdGlvbihDLEUsRyl7dGhp
cy5fX3l1aV9ldmVudHM9dGhpcy5fX3l1aV9ldmVudHN8fHt9O3ZhciBBPXRoaXMu
X195dWlfZXZlbnRzO2lmKEMpe3ZhciBGPUFbQ107aWYoRil7cmV0dXJuIEYudW5z
dWJzY3JpYmUoRSxHKTt9fWVsc2V7dmFyIEI9dHJ1ZTtmb3IodmFyIEQgaW4gQSl7
aWYoWUFIT08ubGFuZy5oYXNPd25Qcm9wZXJ0eShBLEQpKXtCPUImJkFbRF0udW5z
dWJzY3JpYmUoRSxHKTt9fXJldHVybiBCO31yZXR1cm4gZmFsc2U7fSx1bnN1YnNj
cmliZUFsbDpmdW5jdGlvbihBKXtyZXR1cm4gdGhpcy51bnN1YnNjcmliZShBKTt9
LGNyZWF0ZUV2ZW50OmZ1bmN0aW9uKEcsRCl7dGhpcy5fX3l1aV9ldmVudHM9dGhp
cy5fX3l1aV9ldmVudHN8fHt9O3ZhciBBPUR8fHt9O3ZhciBJPXRoaXMuX195dWlf
ZXZlbnRzOw0KaWYoSVtHXSl7fWVsc2V7dmFyIEg9QS5zY29wZXx8dGhpczt2YXIg
RT0oQS5zaWxlbnQpO3ZhciBCPW5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KEcs
SCxFLFlBSE9PLnV0aWwuQ3VzdG9tRXZlbnQuRkxBVCk7SVtHXT1CO2lmKEEub25T
dWJzY3JpYmVDYWxsYmFjayl7Qi5zdWJzY3JpYmVFdmVudC5zdWJzY3JpYmUoQS5v
blN1YnNjcmliZUNhbGxiYWNrKTt9dGhpcy5fX3l1aV9zdWJzY3JpYmVycz10aGlz
Ll9feXVpX3N1YnNjcmliZXJzfHx7fTt2YXIgRj10aGlzLl9feXVpX3N1YnNjcmli
ZXJzW0ddO2lmKEYpe2Zvcih2YXIgQz0wO0M8Ri5sZW5ndGg7KytDKXtCLnN1YnNj
cmliZShGW0NdLmZuLEZbQ10ub2JqLEZbQ10ub3ZlcnJpZGUpO319fXJldHVybiBJ
W0ddO30sZmlyZUV2ZW50OmZ1bmN0aW9uKEUsRCxBLEMpe3RoaXMuX195dWlfZXZl
bnRzPXRoaXMuX195dWlfZXZlbnRzfHx7fTt2YXIgRz10aGlzLl9feXVpX2V2ZW50
c1tFXTtpZighRyl7cmV0dXJuIG51bGw7fXZhciBCPVtdO2Zvcih2YXIgRj0xO0Y8
YXJndW1lbnRzLmxlbmd0aDsrK0Ype0IucHVzaChhcmd1bWVudHNbRl0pO31yZXR1
cm4gRy5maXJlLmFwcGx5KEcsQik7fSxoYXNFdmVudDpmdW5jdGlvbihBKXtpZih0
aGlzLl9feXVpX2V2ZW50cyl7aWYodGhpcy5fX3l1aV9ldmVudHNbQV0pe3JldHVy
biB0cnVlO319cmV0dXJuIGZhbHNlO319O1lBSE9PLnV0aWwuS2V5TGlzdGVuZXI9
ZnVuY3Rpb24oQSxGLEIsQyl7aWYoIUEpe31lbHNle2lmKCFGKXt9ZWxzZXtpZigh
Qil7fX19aWYoIUMpe0M9WUFIT08udXRpbC5LZXlMaXN0ZW5lci5LRVlET1dOO312
YXIgRD1uZXcgWUFIT08udXRpbC5DdXN0b21FdmVudCgia2V5UHJlc3NlZCIpO3Ro
aXMuZW5hYmxlZEV2ZW50PW5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KCJlbmFi
bGVkIik7dGhpcy5kaXNhYmxlZEV2ZW50PW5ldyBZQUhPTy51dGlsLkN1c3RvbUV2
ZW50KCJkaXNhYmxlZCIpO2lmKHR5cGVvZiBBPT0ic3RyaW5nIil7QT1kb2N1bWVu
dC5nZXRFbGVtZW50QnlJZChBKTt9aWYodHlwZW9mIEI9PSJmdW5jdGlvbiIpe0Qu
c3Vic2NyaWJlKEIpO31lbHNle0Quc3Vic2NyaWJlKEIuZm4sQi5zY29wZSxCLmNv
cnJlY3RTY29wZSk7fWZ1bmN0aW9uIEUoSixJKXtpZighRi5zaGlmdCl7Ri5zaGlm
dD1mYWxzZTt9aWYoIUYuYWx0KXtGLmFsdD1mYWxzZTt9aWYoIUYuY3RybCl7Ri5j
dHJsPWZhbHNlO31pZihKLnNoaWZ0S2V5PT1GLnNoaWZ0JiZKLmFsdEtleT09Ri5h
bHQmJkouY3RybEtleT09Ri5jdHJsKXt2YXIgRztpZihGLmtleXMgaW5zdGFuY2Vv
ZiBBcnJheSl7Zm9yKHZhciBIPTA7SDxGLmtleXMubGVuZ3RoO0grKyl7Rz1GLmtl
eXNbSF07aWYoRz09Si5jaGFyQ29kZSl7RC5maXJlKEouY2hhckNvZGUsSik7YnJl
YWs7fWVsc2V7aWYoRz09Si5rZXlDb2RlKXtELmZpcmUoSi5rZXlDb2RlLEopO2Jy
ZWFrO319fX1lbHNle0c9Ri5rZXlzO2lmKEc9PUouY2hhckNvZGUpe0QuZmlyZShK
LmNoYXJDb2RlLEopO31lbHNle2lmKEc9PUoua2V5Q29kZSl7RC5maXJlKEoua2V5
Q29kZSxKKTt9fX19fXRoaXMuZW5hYmxlPWZ1bmN0aW9uKCl7aWYoIXRoaXMuZW5h
YmxlZCl7WUFIT08udXRpbC5FdmVudC5hZGRMaXN0ZW5lcihBLEMsRSk7dGhpcy5l
bmFibGVkRXZlbnQuZmlyZShGKTt9dGhpcy5lbmFibGVkPXRydWU7fTt0aGlzLmRp
c2FibGU9ZnVuY3Rpb24oKXtpZih0aGlzLmVuYWJsZWQpe1lBSE9PLnV0aWwuRXZl
bnQucmVtb3ZlTGlzdGVuZXIoQSxDLEUpO3RoaXMuZGlzYWJsZWRFdmVudC5maXJl
KEYpO310aGlzLmVuYWJsZWQ9ZmFsc2U7fTt0aGlzLnRvU3RyaW5nPWZ1bmN0aW9u
KCl7cmV0dXJuIktleUxpc3RlbmVyIFsiK0Yua2V5cysiXSAiK0EudGFnTmFtZSso
QS5pZD8iWyIrQS5pZCsiXSI6IiIpO307fTtZQUhPTy51dGlsLktleUxpc3RlbmVy
LktFWURPV049ImtleWRvd24iO1lBSE9PLnV0aWwuS2V5TGlzdGVuZXIuS0VZVVA9
ImtleXVwIjtZQUhPTy51dGlsLktleUxpc3RlbmVyLktFWT17QUxUOjE4LEJBQ0tf
U1BBQ0U6OCxDQVBTX0xPQ0s6MjAsQ09OVFJPTDoxNyxERUxFVEU6NDYsRE9XTjo0
MCxFTkQ6MzUsRU5URVI6MTMsRVNDQVBFOjI3LEhPTUU6MzYsTEVGVDozNyxNRVRB
OjIyNCxOVU1fTE9DSzoxNDQsUEFHRV9ET1dOOjM0LFBBR0VfVVA6MzMsUEFVU0U6
MTksUFJJTlRTQ1JFRU46NDQsUklHSFQ6MzksU0NST0xMX0xPQ0s6MTQ1LFNISUZU
OjE2LFNQQUNFOjMyLFRBQjo5LFVQOjM4fTtZQUhPTy5yZWdpc3RlcigiZXZlbnQi
LFlBSE9PLnV0aWwuRXZlbnQse3ZlcnNpb246IjIuNS4yIixidWlsZDoiMTA3NiJ9
KTtZQUhPTy5yZWdpc3RlcigieWFob28tZG9tLWV2ZW50IiwgWUFIT08sIHt2ZXJz
aW9uOiAiMi41LjIiLCBidWlsZDogIjEwNzYifSk7DQooZnVuY3Rpb24oKXt2YXIg
Qj1ZQUhPTy51dGlsO3ZhciBBPWZ1bmN0aW9uKEQsQyxFLEYpe2lmKCFEKXt9dGhp
cy5pbml0KEQsQyxFLEYpO307QS5OQU1FPSJBbmltIjtBLnByb3RvdHlwZT17dG9T
dHJpbmc6ZnVuY3Rpb24oKXt2YXIgQz10aGlzLmdldEVsKCl8fHt9O3ZhciBEPUMu
aWR8fEMudGFnTmFtZTtyZXR1cm4odGhpcy5jb25zdHJ1Y3Rvci5OQU1FKyI6ICIr
RCk7fSxwYXR0ZXJuczp7bm9OZWdhdGl2ZXM6L3dpZHRofGhlaWdodHxvcGFjaXR5
fHBhZGRpbmcvaSxvZmZzZXRBdHRyaWJ1dGU6L14oKHdpZHRofGhlaWdodCl8KHRv
cHxsZWZ0KSkkLyxkZWZhdWx0VW5pdDovd2lkdGh8aGVpZ2h0fHRvcCR8Ym90dG9t
JHxsZWZ0JHxyaWdodCQvaSxvZmZzZXRVbml0Oi9cZCsoZW18JXxlbnxleHxwdHxp
bnxjbXxtbXxwYykkL2l9LGRvTWV0aG9kOmZ1bmN0aW9uKEMsRSxEKXtyZXR1cm4g
dGhpcy5tZXRob2QodGhpcy5jdXJyZW50RnJhbWUsRSxELUUsdGhpcy50b3RhbEZy
YW1lcyk7fSxzZXRBdHRyaWJ1dGU6ZnVuY3Rpb24oQyxFLEQpe2lmKHRoaXMucGF0
dGVybnMubm9OZWdhdGl2ZXMudGVzdChDKSl7RT0oRT4wKT9FOjA7fUIuRG9tLnNl
dFN0eWxlKHRoaXMuZ2V0RWwoKSxDLEUrRCk7fSxnZXRBdHRyaWJ1dGU6ZnVuY3Rp
b24oQyl7dmFyIEU9dGhpcy5nZXRFbCgpO3ZhciBHPUIuRG9tLmdldFN0eWxlKEUs
Qyk7aWYoRyE9PSJhdXRvIiYmIXRoaXMucGF0dGVybnMub2Zmc2V0VW5pdC50ZXN0
KEcpKXtyZXR1cm4gcGFyc2VGbG9hdChHKTt9dmFyIEQ9dGhpcy5wYXR0ZXJucy5v
ZmZzZXRBdHRyaWJ1dGUuZXhlYyhDKXx8W107dmFyIEg9ISEoRFszXSk7dmFyIEY9
ISEoRFsyXSk7aWYoRnx8KEIuRG9tLmdldFN0eWxlKEUsInBvc2l0aW9uIik9PSJh
YnNvbHV0ZSImJkgpKXtHPUVbIm9mZnNldCIrRFswXS5jaGFyQXQoMCkudG9VcHBl
ckNhc2UoKStEWzBdLnN1YnN0cigxKV07fWVsc2V7Rz0wO31yZXR1cm4gRzt9LGdl
dERlZmF1bHRVbml0OmZ1bmN0aW9uKEMpe2lmKHRoaXMucGF0dGVybnMuZGVmYXVs
dFVuaXQudGVzdChDKSl7cmV0dXJuInB4Ijt9cmV0dXJuIiI7fSxzZXRSdW50aW1l
QXR0cmlidXRlOmZ1bmN0aW9uKEQpe3ZhciBJO3ZhciBFO3ZhciBGPXRoaXMuYXR0
cmlidXRlczt0aGlzLnJ1bnRpbWVBdHRyaWJ1dGVzW0RdPXt9O3ZhciBIPWZ1bmN0
aW9uKEope3JldHVybih0eXBlb2YgSiE9PSJ1bmRlZmluZWQiKTt9O2lmKCFIKEZb
RF1bInRvIl0pJiYhSChGW0RdWyJieSJdKSl7cmV0dXJuIGZhbHNlO31JPShIKEZb
RF1bImZyb20iXSkpP0ZbRF1bImZyb20iXTp0aGlzLmdldEF0dHJpYnV0ZShEKTtp
ZihIKEZbRF1bInRvIl0pKXtFPUZbRF1bInRvIl07fWVsc2V7aWYoSChGW0RdWyJi
eSJdKSl7aWYoSS5jb25zdHJ1Y3Rvcj09QXJyYXkpe0U9W107Zm9yKHZhciBHPTAs
Qz1JLmxlbmd0aDtHPEM7KytHKXtFW0ddPUlbR10rRltEXVsiYnkiXVtHXSoxO319
ZWxzZXtFPUkrRltEXVsiYnkiXSoxO319fXRoaXMucnVudGltZUF0dHJpYnV0ZXNb
RF0uc3RhcnQ9STt0aGlzLnJ1bnRpbWVBdHRyaWJ1dGVzW0RdLmVuZD1FO3RoaXMu
cnVudGltZUF0dHJpYnV0ZXNbRF0udW5pdD0oSChGW0RdLnVuaXQpKT9GW0RdWyJ1
bml0Il06dGhpcy5nZXREZWZhdWx0VW5pdChEKTtyZXR1cm4gdHJ1ZTt9LGluaXQ6
ZnVuY3Rpb24oRSxKLEksQyl7dmFyIEQ9ZmFsc2U7dmFyIEY9bnVsbDt2YXIgSD0w
O0U9Qi5Eb20uZ2V0KEUpO3RoaXMuYXR0cmlidXRlcz1KfHx7fTt0aGlzLmR1cmF0
aW9uPSFZQUhPTy5sYW5nLmlzVW5kZWZpbmVkKEkpP0k6MTt0aGlzLm1ldGhvZD1D
fHxCLkVhc2luZy5lYXNlTm9uZTt0aGlzLnVzZVNlY29uZHM9dHJ1ZTt0aGlzLmN1
cnJlbnRGcmFtZT0wO3RoaXMudG90YWxGcmFtZXM9Qi5BbmltTWdyLmZwczt0aGlz
LnNldEVsPWZ1bmN0aW9uKE0pe0U9Qi5Eb20uZ2V0KE0pO307dGhpcy5nZXRFbD1m
dW5jdGlvbigpe3JldHVybiBFO307dGhpcy5pc0FuaW1hdGVkPWZ1bmN0aW9uKCl7
cmV0dXJuIEQ7fTt0aGlzLmdldFN0YXJ0VGltZT1mdW5jdGlvbigpe3JldHVybiBG
O307dGhpcy5ydW50aW1lQXR0cmlidXRlcz17fTt0aGlzLmFuaW1hdGU9ZnVuY3Rp
b24oKXtpZih0aGlzLmlzQW5pbWF0ZWQoKSl7cmV0dXJuIGZhbHNlO310aGlzLmN1
cnJlbnRGcmFtZT0wO3RoaXMudG90YWxGcmFtZXM9KHRoaXMudXNlU2Vjb25kcyk/
TWF0aC5jZWlsKEIuQW5pbU1nci5mcHMqdGhpcy5kdXJhdGlvbik6dGhpcy5kdXJh
dGlvbjtpZih0aGlzLmR1cmF0aW9uPT09MCYmdGhpcy51c2VTZWNvbmRzKXt0aGlz
LnRvdGFsRnJhbWVzPTE7fUIuQW5pbU1nci5yZWdpc3RlckVsZW1lbnQodGhpcyk7
cmV0dXJuIHRydWU7fTt0aGlzLnN0b3A9ZnVuY3Rpb24oTSl7aWYoIXRoaXMuaXNB
bmltYXRlZCgpKXtyZXR1cm4gZmFsc2U7fWlmKE0pe3RoaXMuY3VycmVudEZyYW1l
PXRoaXMudG90YWxGcmFtZXM7dGhpcy5fb25Ud2Vlbi5maXJlKCk7fUIuQW5pbU1n
ci5zdG9wKHRoaXMpO307dmFyIEw9ZnVuY3Rpb24oKXt0aGlzLm9uU3RhcnQuZmly
ZSgpO3RoaXMucnVudGltZUF0dHJpYnV0ZXM9e307Zm9yKHZhciBNIGluIHRoaXMu
YXR0cmlidXRlcyl7dGhpcy5zZXRSdW50aW1lQXR0cmlidXRlKE0pO31EPXRydWU7
SD0wO0Y9bmV3IERhdGUoKTt9O3ZhciBLPWZ1bmN0aW9uKCl7dmFyIE89e2R1cmF0
aW9uOm5ldyBEYXRlKCktdGhpcy5nZXRTdGFydFRpbWUoKSxjdXJyZW50RnJhbWU6
dGhpcy5jdXJyZW50RnJhbWV9O08udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4o
ImR1cmF0aW9uOiAiK08uZHVyYXRpb24rIiwgY3VycmVudEZyYW1lOiAiK08uY3Vy
cmVudEZyYW1lKTt9O3RoaXMub25Ud2Vlbi5maXJlKE8pO3ZhciBOPXRoaXMucnVu
dGltZUF0dHJpYnV0ZXM7Zm9yKHZhciBNIGluIE4pe3RoaXMuc2V0QXR0cmlidXRl
KE0sdGhpcy5kb01ldGhvZChNLE5bTV0uc3RhcnQsTltNXS5lbmQpLE5bTV0udW5p
dCk7fUgrPTE7fTt2YXIgRz1mdW5jdGlvbigpe3ZhciBNPShuZXcgRGF0ZSgpLUYp
LzEwMDA7dmFyIE49e2R1cmF0aW9uOk0sZnJhbWVzOkgsZnBzOkgvTX07Ti50b1N0
cmluZz1mdW5jdGlvbigpe3JldHVybigiZHVyYXRpb246ICIrTi5kdXJhdGlvbisi
LCBmcmFtZXM6ICIrTi5mcmFtZXMrIiwgZnBzOiAiK04uZnBzKTt9O0Q9ZmFsc2U7
SD0wO3RoaXMub25Db21wbGV0ZS5maXJlKE4pO307dGhpcy5fb25TdGFydD1uZXcg
Qi5DdXN0b21FdmVudCgiX3N0YXJ0Iix0aGlzLHRydWUpO3RoaXMub25TdGFydD1u
ZXcgQi5DdXN0b21FdmVudCgic3RhcnQiLHRoaXMpO3RoaXMub25Ud2Vlbj1uZXcg
Qi5DdXN0b21FdmVudCgidHdlZW4iLHRoaXMpO3RoaXMuX29uVHdlZW49bmV3IEIu
Q3VzdG9tRXZlbnQoIl90d2VlbiIsdGhpcyx0cnVlKTt0aGlzLm9uQ29tcGxldGU9
bmV3IEIuQ3VzdG9tRXZlbnQoImNvbXBsZXRlIix0aGlzKTt0aGlzLl9vbkNvbXBs
ZXRlPW5ldyBCLkN1c3RvbUV2ZW50KCJfY29tcGxldGUiLHRoaXMsdHJ1ZSk7dGhp
cy5fb25TdGFydC5zdWJzY3JpYmUoTCk7dGhpcy5fb25Ud2Vlbi5zdWJzY3JpYmUo
Syk7dGhpcy5fb25Db21wbGV0ZS5zdWJzY3JpYmUoRyk7fX07Qi5BbmltPUE7fSko
KTtZQUhPTy51dGlsLkFuaW1NZ3I9bmV3IGZ1bmN0aW9uKCl7dmFyIEM9bnVsbDt2
YXIgQj1bXTt2YXIgQT0wO3RoaXMuZnBzPTEwMDA7dGhpcy5kZWxheT0xO3RoaXMu
cmVnaXN0ZXJFbGVtZW50PWZ1bmN0aW9uKEYpe0JbQi5sZW5ndGhdPUY7QSs9MTtG
Ll9vblN0YXJ0LmZpcmUoKTt0aGlzLnN0YXJ0KCk7fTt0aGlzLnVuUmVnaXN0ZXI9
ZnVuY3Rpb24oRyxGKXtGPUZ8fEUoRyk7aWYoIUcuaXNBbmltYXRlZCgpfHxGPT0t
MSl7cmV0dXJuIGZhbHNlO31HLl9vbkNvbXBsZXRlLmZpcmUoKTtCLnNwbGljZShG
LDEpO0EtPTE7aWYoQTw9MCl7dGhpcy5zdG9wKCk7fXJldHVybiB0cnVlO307dGhp
cy5zdGFydD1mdW5jdGlvbigpe2lmKEM9PT1udWxsKXtDPXNldEludGVydmFsKHRo
aXMucnVuLHRoaXMuZGVsYXkpO319O3RoaXMuc3RvcD1mdW5jdGlvbihIKXtpZigh
SCl7Y2xlYXJJbnRlcnZhbChDKTtmb3IodmFyIEc9MCxGPUIubGVuZ3RoO0c8Rjsr
K0cpe3RoaXMudW5SZWdpc3RlcihCWzBdLDApO31CPVtdO0M9bnVsbDtBPTA7fWVs
c2V7dGhpcy51blJlZ2lzdGVyKEgpO319O3RoaXMucnVuPWZ1bmN0aW9uKCl7Zm9y
KHZhciBIPTAsRj1CLmxlbmd0aDtIPEY7KytIKXt2YXIgRz1CW0hdO2lmKCFHfHwh
Ry5pc0FuaW1hdGVkKCkpe2NvbnRpbnVlO31pZihHLmN1cnJlbnRGcmFtZTxHLnRv
dGFsRnJhbWVzfHxHLnRvdGFsRnJhbWVzPT09bnVsbCl7Ry5jdXJyZW50RnJhbWUr
PTE7aWYoRy51c2VTZWNvbmRzKXtEKEcpO31HLl9vblR3ZWVuLmZpcmUoKTt9ZWxz
ZXtZQUhPTy51dGlsLkFuaW1NZ3Iuc3RvcChHLEgpO319fTt2YXIgRT1mdW5jdGlv
bihIKXtmb3IodmFyIEc9MCxGPUIubGVuZ3RoO0c8RjsrK0cpe2lmKEJbR109PUgp
e3JldHVybiBHO319cmV0dXJuIC0xO307dmFyIEQ9ZnVuY3Rpb24oRyl7dmFyIEo9
Ry50b3RhbEZyYW1lczt2YXIgST1HLmN1cnJlbnRGcmFtZTt2YXIgSD0oRy5jdXJy
ZW50RnJhbWUqRy5kdXJhdGlvbioxMDAwL0cudG90YWxGcmFtZXMpO3ZhciBGPShu
ZXcgRGF0ZSgpLUcuZ2V0U3RhcnRUaW1lKCkpO3ZhciBLPTA7aWYoRjxHLmR1cmF0
aW9uKjEwMDApe0s9TWF0aC5yb3VuZCgoRi9ILTEpKkcuY3VycmVudEZyYW1lKTt9
ZWxzZXtLPUotKEkrMSk7fWlmKEs+MCYmaXNGaW5pdGUoSykpe2lmKEcuY3VycmVu
dEZyYW1lK0s+PUope0s9Si0oSSsxKTt9Ry5jdXJyZW50RnJhbWUrPUs7fX07fTtZ
QUhPTy51dGlsLkJlemllcj1uZXcgZnVuY3Rpb24oKXt0aGlzLmdldFBvc2l0aW9u
PWZ1bmN0aW9uKEUsRCl7dmFyIEY9RS5sZW5ndGg7dmFyIEM9W107Zm9yKHZhciBC
PTA7QjxGOysrQil7Q1tCXT1bRVtCXVswXSxFW0JdWzFdXTt9Zm9yKHZhciBBPTE7
QTxGOysrQSl7Zm9yKEI9MDtCPEYtQTsrK0Ipe0NbQl1bMF09KDEtRCkqQ1tCXVsw
XStEKkNbcGFyc2VJbnQoQisxLDEwKV1bMF07Q1tCXVsxXT0oMS1EKSpDW0JdWzFd
K0QqQ1twYXJzZUludChCKzEsMTApXVsxXTt9fXJldHVybltDWzBdWzBdLENbMF1b
MV1dO307fTsoZnVuY3Rpb24oKXt2YXIgQT1mdW5jdGlvbihGLEUsRyxIKXtBLnN1
cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLEYsRSxHLEgpO307QS5OQU1F
PSJDb2xvckFuaW0iO3ZhciBDPVlBSE9PLnV0aWw7WUFIT08uZXh0ZW5kKEEsQy5B
bmltKTt2YXIgRD1BLnN1cGVyY2xhc3M7dmFyIEI9QS5wcm90b3R5cGU7Qi5wYXR0
ZXJucy5jb2xvcj0vY29sb3IkL2k7Qi5wYXR0ZXJucy5yZ2I9L15yZ2JcKChbMC05
XSspXHMqLFxzKihbMC05XSspXHMqLFxzKihbMC05XSspXCkkL2k7Qi5wYXR0ZXJu
cy5oZXg9L14jPyhbMC05QS1GXXsyfSkoWzAtOUEtRl17Mn0pKFswLTlBLUZdezJ9
KSQvaTtCLnBhdHRlcm5zLmhleDM9L14jPyhbMC05QS1GXXsxfSkoWzAtOUEtRl17
MX0pKFswLTlBLUZdezF9KSQvaTtCLnBhdHRlcm5zLnRyYW5zcGFyZW50PS9edHJh
bnNwYXJlbnR8cmdiYVwoMCwgMCwgMCwgMFwpJC87Qi5wYXJzZUNvbG9yPWZ1bmN0
aW9uKEUpe2lmKEUubGVuZ3RoPT0zKXtyZXR1cm4gRTt9dmFyIEY9dGhpcy5wYXR0
ZXJucy5oZXguZXhlYyhFKTtpZihGJiZGLmxlbmd0aD09NCl7cmV0dXJuW3BhcnNl
SW50KEZbMV0sMTYpLHBhcnNlSW50KEZbMl0sMTYpLHBhcnNlSW50KEZbM10sMTYp
XTt9Rj10aGlzLnBhdHRlcm5zLnJnYi5leGVjKEUpO2lmKEYmJkYubGVuZ3RoPT00
KXtyZXR1cm5bcGFyc2VJbnQoRlsxXSwxMCkscGFyc2VJbnQoRlsyXSwxMCkscGFy
c2VJbnQoRlszXSwxMCldO31GPXRoaXMucGF0dGVybnMuaGV4My5leGVjKEUpO2lm
KEYmJkYubGVuZ3RoPT00KXtyZXR1cm5bcGFyc2VJbnQoRlsxXStGWzFdLDE2KSxw
YXJzZUludChGWzJdK0ZbMl0sMTYpLHBhcnNlSW50KEZbM10rRlszXSwxNildO31y
ZXR1cm4gbnVsbDt9O0IuZ2V0QXR0cmlidXRlPWZ1bmN0aW9uKEUpe3ZhciBHPXRo
aXMuZ2V0RWwoKTtpZih0aGlzLnBhdHRlcm5zLmNvbG9yLnRlc3QoRSkpe3ZhciBI
PVlBSE9PLnV0aWwuRG9tLmdldFN0eWxlKEcsRSk7DQppZih0aGlzLnBhdHRlcm5z
LnRyYW5zcGFyZW50LnRlc3QoSCkpe3ZhciBGPUcucGFyZW50Tm9kZTtIPUMuRG9t
LmdldFN0eWxlKEYsRSk7d2hpbGUoRiYmdGhpcy5wYXR0ZXJucy50cmFuc3BhcmVu
dC50ZXN0KEgpKXtGPUYucGFyZW50Tm9kZTtIPUMuRG9tLmdldFN0eWxlKEYsRSk7
aWYoRi50YWdOYW1lLnRvVXBwZXJDYXNlKCk9PSJIVE1MIil7SD0iI2ZmZiI7fX19
fWVsc2V7SD1ELmdldEF0dHJpYnV0ZS5jYWxsKHRoaXMsRSk7fXJldHVybiBIO307
Qi5kb01ldGhvZD1mdW5jdGlvbihGLEosRyl7dmFyIEk7aWYodGhpcy5wYXR0ZXJu
cy5jb2xvci50ZXN0KEYpKXtJPVtdO2Zvcih2YXIgSD0wLEU9Si5sZW5ndGg7SDxF
OysrSCl7SVtIXT1ELmRvTWV0aG9kLmNhbGwodGhpcyxGLEpbSF0sR1tIXSk7fUk9
InJnYigiK01hdGguZmxvb3IoSVswXSkrIiwiK01hdGguZmxvb3IoSVsxXSkrIiwi
K01hdGguZmxvb3IoSVsyXSkrIikiO31lbHNle0k9RC5kb01ldGhvZC5jYWxsKHRo
aXMsRixKLEcpO31yZXR1cm4gSTt9O0Iuc2V0UnVudGltZUF0dHJpYnV0ZT1mdW5j
dGlvbihGKXtELnNldFJ1bnRpbWVBdHRyaWJ1dGUuY2FsbCh0aGlzLEYpO2lmKHRo
aXMucGF0dGVybnMuY29sb3IudGVzdChGKSl7dmFyIEg9dGhpcy5hdHRyaWJ1dGVz
O3ZhciBKPXRoaXMucGFyc2VDb2xvcih0aGlzLnJ1bnRpbWVBdHRyaWJ1dGVzW0Zd
LnN0YXJ0KTt2YXIgRz10aGlzLnBhcnNlQ29sb3IodGhpcy5ydW50aW1lQXR0cmli
dXRlc1tGXS5lbmQpO2lmKHR5cGVvZiBIW0ZdWyJ0byJdPT09InVuZGVmaW5lZCIm
JnR5cGVvZiBIW0ZdWyJieSJdIT09InVuZGVmaW5lZCIpe0c9dGhpcy5wYXJzZUNv
bG9yKEhbRl0uYnkpO2Zvcih2YXIgST0wLEU9Si5sZW5ndGg7STxFOysrSSl7R1tJ
XT1KW0ldK0dbSV07fX10aGlzLnJ1bnRpbWVBdHRyaWJ1dGVzW0ZdLnN0YXJ0PUo7
dGhpcy5ydW50aW1lQXR0cmlidXRlc1tGXS5lbmQ9Rzt9fTtDLkNvbG9yQW5pbT1B
O30pKCk7DQpZQUhPTy51dGlsLkVhc2luZz17ZWFzZU5vbmU6ZnVuY3Rpb24oQixB
LEQsQyl7cmV0dXJuIEQqQi9DK0E7fSxlYXNlSW46ZnVuY3Rpb24oQixBLEQsQyl7
cmV0dXJuIEQqKEIvPUMpKkIrQTt9LGVhc2VPdXQ6ZnVuY3Rpb24oQixBLEQsQyl7
cmV0dXJuIC1EKihCLz1DKSooQi0yKStBO30sZWFzZUJvdGg6ZnVuY3Rpb24oQixB
LEQsQyl7aWYoKEIvPUMvMik8MSl7cmV0dXJuIEQvMipCKkIrQTt9cmV0dXJuIC1E
LzIqKCgtLUIpKihCLTIpLTEpK0E7fSxlYXNlSW5TdHJvbmc6ZnVuY3Rpb24oQixB
LEQsQyl7cmV0dXJuIEQqKEIvPUMpKkIqQipCK0E7fSxlYXNlT3V0U3Ryb25nOmZ1
bmN0aW9uKEIsQSxELEMpe3JldHVybiAtRCooKEI9Qi9DLTEpKkIqQipCLTEpK0E7
fSxlYXNlQm90aFN0cm9uZzpmdW5jdGlvbihCLEEsRCxDKXtpZigoQi89Qy8yKTwx
KXtyZXR1cm4gRC8yKkIqQipCKkIrQTt9cmV0dXJuIC1ELzIqKChCLT0yKSpCKkIq
Qi0yKStBO30sZWxhc3RpY0luOmZ1bmN0aW9uKEMsQSxHLEYsQixFKXtpZihDPT0w
KXtyZXR1cm4gQTt9aWYoKEMvPUYpPT0xKXtyZXR1cm4gQStHO31pZighRSl7RT1G
KjAuMzt9aWYoIUJ8fEI8TWF0aC5hYnMoRykpe0I9Rzt2YXIgRD1FLzQ7fWVsc2V7
dmFyIEQ9RS8oMipNYXRoLlBJKSpNYXRoLmFzaW4oRy9CKTt9cmV0dXJuIC0oQipN
YXRoLnBvdygyLDEwKihDLT0xKSkqTWF0aC5zaW4oKEMqRi1EKSooMipNYXRoLlBJ
KS9FKSkrQTt9LGVsYXN0aWNPdXQ6ZnVuY3Rpb24oQyxBLEcsRixCLEUpe2lmKEM9
PTApe3JldHVybiBBO31pZigoQy89Rik9PTEpe3JldHVybiBBK0c7fWlmKCFFKXtF
PUYqMC4zO31pZighQnx8QjxNYXRoLmFicyhHKSl7Qj1HO3ZhciBEPUUvNDt9ZWxz
ZXt2YXIgRD1FLygyKk1hdGguUEkpKk1hdGguYXNpbihHL0IpO31yZXR1cm4gQipN
YXRoLnBvdygyLC0xMCpDKSpNYXRoLnNpbigoQypGLUQpKigyKk1hdGguUEkpL0Up
K0crQTt9LGVsYXN0aWNCb3RoOmZ1bmN0aW9uKEMsQSxHLEYsQixFKXtpZihDPT0w
KXtyZXR1cm4gQTt9aWYoKEMvPUYvMik9PTIpe3JldHVybiBBK0c7fWlmKCFFKXtF
PUYqKDAuMyoxLjUpO31pZighQnx8QjxNYXRoLmFicyhHKSl7Qj1HO3ZhciBEPUUv
NDt9ZWxzZXt2YXIgRD1FLygyKk1hdGguUEkpKk1hdGguYXNpbihHL0IpO31pZihD
PDEpe3JldHVybiAtMC41KihCKk1hdGgucG93KDIsMTAqKEMtPTEpKSpNYXRoLnNp
bigoQypGLUQpKigyKk1hdGguUEkpL0UpKStBO31yZXR1cm4gQipNYXRoLnBvdygy
LC0xMCooQy09MSkpKk1hdGguc2luKChDKkYtRCkqKDIqTWF0aC5QSSkvRSkqMC41
K0crQTt9LGJhY2tJbjpmdW5jdGlvbihCLEEsRSxELEMpe2lmKHR5cGVvZiBDPT0i
dW5kZWZpbmVkIil7Qz0xLjcwMTU4O31yZXR1cm4gRSooQi89RCkqQiooKEMrMSkq
Qi1DKStBO30sYmFja091dDpmdW5jdGlvbihCLEEsRSxELEMpe2lmKHR5cGVvZiBD
PT0idW5kZWZpbmVkIil7Qz0xLjcwMTU4O31yZXR1cm4gRSooKEI9Qi9ELTEpKkIq
KChDKzEpKkIrQykrMSkrQTt9LGJhY2tCb3RoOmZ1bmN0aW9uKEIsQSxFLEQsQyl7
aWYodHlwZW9mIEM9PSJ1bmRlZmluZWQiKXtDPTEuNzAxNTg7fWlmKChCLz1ELzIp
PDEpe3JldHVybiBFLzIqKEIqQiooKChDKj0oMS41MjUpKSsxKSpCLUMpKStBO31y
ZXR1cm4gRS8yKigoQi09MikqQiooKChDKj0oMS41MjUpKSsxKSpCK0MpKzIpK0E7
fSxib3VuY2VJbjpmdW5jdGlvbihCLEEsRCxDKXtyZXR1cm4gRC1ZQUhPTy51dGls
LkVhc2luZy5ib3VuY2VPdXQoQy1CLDAsRCxDKStBO30sYm91bmNlT3V0OmZ1bmN0
aW9uKEIsQSxELEMpe2lmKChCLz1DKTwoMS8yLjc1KSl7cmV0dXJuIEQqKDcuNTYy
NSpCKkIpK0E7fWVsc2V7aWYoQjwoMi8yLjc1KSl7cmV0dXJuIEQqKDcuNTYyNSoo
Qi09KDEuNS8yLjc1KSkqQiswLjc1KStBO31lbHNle2lmKEI8KDIuNS8yLjc1KSl7
cmV0dXJuIEQqKDcuNTYyNSooQi09KDIuMjUvMi43NSkpKkIrMC45Mzc1KStBO319
fXJldHVybiBEKig3LjU2MjUqKEItPSgyLjYyNS8yLjc1KSkqQiswLjk4NDM3NSkr
QTt9LGJvdW5jZUJvdGg6ZnVuY3Rpb24oQixBLEQsQyl7aWYoQjxDLzIpe3JldHVy
biBZQUhPTy51dGlsLkVhc2luZy5ib3VuY2VJbihCKjIsMCxELEMpKjAuNStBO31y
ZXR1cm4gWUFIT08udXRpbC5FYXNpbmcuYm91bmNlT3V0KEIqMi1DLDAsRCxDKSow
LjUrRCowLjUrQTt9fTsoZnVuY3Rpb24oKXt2YXIgQT1mdW5jdGlvbihILEcsSSxK
KXtpZihIKXtBLnN1cGVyY2xhc3MuY29uc3RydWN0b3IuY2FsbCh0aGlzLEgsRyxJ
LEopO319O0EuTkFNRT0iTW90aW9uIjt2YXIgRT1ZQUhPTy51dGlsO1lBSE9PLmV4
dGVuZChBLEUuQ29sb3JBbmltKTt2YXIgRj1BLnN1cGVyY2xhc3M7dmFyIEM9QS5w
cm90b3R5cGU7Qy5wYXR0ZXJucy5wb2ludHM9L15wb2ludHMkL2k7Qy5zZXRBdHRy
aWJ1dGU9ZnVuY3Rpb24oRyxJLEgpe2lmKHRoaXMucGF0dGVybnMucG9pbnRzLnRl
c3QoRykpe0g9SHx8InB4IjtGLnNldEF0dHJpYnV0ZS5jYWxsKHRoaXMsImxlZnQi
LElbMF0sSCk7Ri5zZXRBdHRyaWJ1dGUuY2FsbCh0aGlzLCJ0b3AiLElbMV0sSCk7
fWVsc2V7Ri5zZXRBdHRyaWJ1dGUuY2FsbCh0aGlzLEcsSSxIKTt9fTtDLmdldEF0
dHJpYnV0ZT1mdW5jdGlvbihHKXtpZih0aGlzLnBhdHRlcm5zLnBvaW50cy50ZXN0
KEcpKXt2YXIgSD1bRi5nZXRBdHRyaWJ1dGUuY2FsbCh0aGlzLCJsZWZ0IiksRi5n
ZXRBdHRyaWJ1dGUuY2FsbCh0aGlzLCJ0b3AiKV07fWVsc2V7SD1GLmdldEF0dHJp
YnV0ZS5jYWxsKHRoaXMsRyk7fXJldHVybiBIO307Qy5kb01ldGhvZD1mdW5jdGlv
bihHLEssSCl7dmFyIEo9bnVsbDtpZih0aGlzLnBhdHRlcm5zLnBvaW50cy50ZXN0
KEcpKXt2YXIgST10aGlzLm1ldGhvZCh0aGlzLmN1cnJlbnRGcmFtZSwwLDEwMCx0
aGlzLnRvdGFsRnJhbWVzKS8xMDA7Sj1FLkJlemllci5nZXRQb3NpdGlvbih0aGlz
LnJ1bnRpbWVBdHRyaWJ1dGVzW0ddLEkpO31lbHNle0o9Ri5kb01ldGhvZC5jYWxs
KHRoaXMsRyxLLEgpO31yZXR1cm4gSjt9O0Muc2V0UnVudGltZUF0dHJpYnV0ZT1m
dW5jdGlvbihQKXtpZih0aGlzLnBhdHRlcm5zLnBvaW50cy50ZXN0KFApKXt2YXIg
SD10aGlzLmdldEVsKCk7dmFyIEo9dGhpcy5hdHRyaWJ1dGVzO3ZhciBHO3ZhciBM
PUpbInBvaW50cyJdWyJjb250cm9sIl18fFtdO3ZhciBJO3ZhciBNLE87aWYoTC5s
ZW5ndGg+MCYmIShMWzBdIGluc3RhbmNlb2YgQXJyYXkpKXtMPVtMXTt9ZWxzZXt2
YXIgSz1bXTtmb3IoTT0wLE89TC5sZW5ndGg7TTxPOysrTSl7S1tNXT1MW01dO31M
PUs7fWlmKEUuRG9tLmdldFN0eWxlKEgsInBvc2l0aW9uIik9PSJzdGF0aWMiKXtF
LkRvbS5zZXRTdHlsZShILCJwb3NpdGlvbiIsInJlbGF0aXZlIik7fWlmKEQoSlsi
cG9pbnRzIl1bImZyb20iXSkpe0UuRG9tLnNldFhZKEgsSlsicG9pbnRzIl1bImZy
b20iXSk7fWVsc2V7RS5Eb20uc2V0WFkoSCxFLkRvbS5nZXRYWShIKSk7fUc9dGhp
cy5nZXRBdHRyaWJ1dGUoInBvaW50cyIpO2lmKEQoSlsicG9pbnRzIl1bInRvIl0p
KXtJPUIuY2FsbCh0aGlzLEpbInBvaW50cyJdWyJ0byJdLEcpOw0KdmFyIE49RS5E
b20uZ2V0WFkodGhpcy5nZXRFbCgpKTtmb3IoTT0wLE89TC5sZW5ndGg7TTxPOysr
TSl7TFtNXT1CLmNhbGwodGhpcyxMW01dLEcpO319ZWxzZXtpZihEKEpbInBvaW50
cyJdWyJieSJdKSl7ST1bR1swXStKWyJwb2ludHMiXVsiYnkiXVswXSxHWzFdK0pb
InBvaW50cyJdWyJieSJdWzFdXTtmb3IoTT0wLE89TC5sZW5ndGg7TTxPOysrTSl7
TFtNXT1bR1swXStMW01dWzBdLEdbMV0rTFtNXVsxXV07fX19dGhpcy5ydW50aW1l
QXR0cmlidXRlc1tQXT1bR107aWYoTC5sZW5ndGg+MCl7dGhpcy5ydW50aW1lQXR0
cmlidXRlc1tQXT10aGlzLnJ1bnRpbWVBdHRyaWJ1dGVzW1BdLmNvbmNhdChMKTt9
dGhpcy5ydW50aW1lQXR0cmlidXRlc1tQXVt0aGlzLnJ1bnRpbWVBdHRyaWJ1dGVz
W1BdLmxlbmd0aF09STt9ZWxzZXtGLnNldFJ1bnRpbWVBdHRyaWJ1dGUuY2FsbCh0
aGlzLFApO319O3ZhciBCPWZ1bmN0aW9uKEcsSSl7dmFyIEg9RS5Eb20uZ2V0WFko
dGhpcy5nZXRFbCgpKTtHPVtHWzBdLUhbMF0rSVswXSxHWzFdLUhbMV0rSVsxXV07
cmV0dXJuIEc7fTt2YXIgRD1mdW5jdGlvbihHKXtyZXR1cm4odHlwZW9mIEchPT0i
dW5kZWZpbmVkIik7fTtFLk1vdGlvbj1BO30pKCk7KGZ1bmN0aW9uKCl7dmFyIEQ9
ZnVuY3Rpb24oRixFLEcsSCl7aWYoRil7RC5zdXBlcmNsYXNzLmNvbnN0cnVjdG9y
LmNhbGwodGhpcyxGLEUsRyxIKTt9fTtELk5BTUU9IlNjcm9sbCI7dmFyIEI9WUFI
T08udXRpbDtZQUhPTy5leHRlbmQoRCxCLkNvbG9yQW5pbSk7dmFyIEM9RC5zdXBl
cmNsYXNzO3ZhciBBPUQucHJvdG90eXBlO0EuZG9NZXRob2Q9ZnVuY3Rpb24oRSxI
LEYpe3ZhciBHPW51bGw7aWYoRT09InNjcm9sbCIpe0c9W3RoaXMubWV0aG9kKHRo
aXMuY3VycmVudEZyYW1lLEhbMF0sRlswXS1IWzBdLHRoaXMudG90YWxGcmFtZXMp
LHRoaXMubWV0aG9kKHRoaXMuY3VycmVudEZyYW1lLEhbMV0sRlsxXS1IWzFdLHRo
aXMudG90YWxGcmFtZXMpXTt9ZWxzZXtHPUMuZG9NZXRob2QuY2FsbCh0aGlzLEUs
SCxGKTt9cmV0dXJuIEc7fTtBLmdldEF0dHJpYnV0ZT1mdW5jdGlvbihFKXt2YXIg
Rz1udWxsO3ZhciBGPXRoaXMuZ2V0RWwoKTtpZihFPT0ic2Nyb2xsIil7Rz1bRi5z
Y3JvbGxMZWZ0LEYuc2Nyb2xsVG9wXTt9ZWxzZXtHPUMuZ2V0QXR0cmlidXRlLmNh
bGwodGhpcyxFKTt9cmV0dXJuIEc7fTtBLnNldEF0dHJpYnV0ZT1mdW5jdGlvbihF
LEgsRyl7dmFyIEY9dGhpcy5nZXRFbCgpO2lmKEU9PSJzY3JvbGwiKXtGLnNjcm9s
bExlZnQ9SFswXTtGLnNjcm9sbFRvcD1IWzFdO31lbHNle0Muc2V0QXR0cmlidXRl
LmNhbGwodGhpcyxFLEgsRyk7fX07Qi5TY3JvbGw9RDt9KSgpO1lBSE9PLnJlZ2lz
dGVyKCJhbmltYXRpb24iLFlBSE9PLnV0aWwuQW5pbSx7dmVyc2lvbjoiMi41LjIi
LGJ1aWxkOiIxMDc2In0pOw0KDQovLyBEZWZpbmUgQ3VzdG9tIFdIVFJlYWR5RXZl
bnQ6DQpmdW5jdGlvbiBfX19fX19vblN1YnNjcmliZUV2ZW50KCRvT2JqLCAkYUFy
Z3MpIHsgaWYgKFlBSE9PLnV0aWwuRG9tLm9XSFRSZWFkeUV2ZW50LmJIYXNGaXJl
ZCkgeyAkYUFyZ3NbMF0uYXBwbHkoJGFBcmdzWzFdLCBbXSk7IH0gfTsNCllBSE9P
LnV0aWwuRG9tLm9XSFRSZWFkeUV2ZW50ID0gbmV3IFlBSE9PLnV0aWwuQ3VzdG9t
RXZlbnQoJ1dIVFJlYWR5Jyk7DQpZQUhPTy51dGlsLkRvbS5vV0hUUmVhZHlFdmVu
dC5iSGFzRmlyZWQgPSBmYWxzZTsNCllBSE9PLnV0aWwuRG9tLm9XSFRSZWFkeUV2
ZW50LnN1YnNjcmliZUV2ZW50LnN1YnNjcmliZShfX19fX19vblN1YnNjcmliZUV2
ZW50KTs=
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline; filename=base.js
Content-Type: application/x-javascript; charset=utf-8; name=base.js
Content-Location: http://www.wonderhowto.com/js/base.js?v=0902102
Content-Transfer-Encoding: Base64
77u/Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIENvcHlyaWdodCAyMDA3IFdv
bmRlckhvd1RvLCBJbmMuDQovLyANCi8vIE9yaWdpb25hbCBBdXRob3I6ICAgIEJy
eWFuIENyb3cNCi8vIExhc3QgTW9kaWZpZWQgQnk6ICAgIE1hcmF0IEtob3VkYWJh
a2hzaGlldg0KLy8gTGFzdCBNb2RpZmllZDogICAgICAgMDQvMTMvMjAxMA0KLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KLy8qKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioN
Ci8vIFN0YXJ0IEJhc2UgSmF2YVNjcmlwdCBPYmplY3QgUHJvdG90eXBlIEV4dGVu
c2lvbnMNCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQoNCi8vIFN0cmluZyBleHRl
bnNpb24gdG8gbWFrZSBSZXBsYWNlKCkgZnVuY3Rpb24gbGlrZSBpdCdzIGMjIGNv
dW50ZXJwYXJ0Og0KU3RyaW5nLnByb3RvdHlwZS5SZXBsYWNlID0gZnVuY3Rpb24o
JHNGcm9tLCAkc1RvKSB7DQogICAgcmV0dXJuIHRoaXMuc3BsaXQoJHNGcm9tKS5q
b2luKCRzVG8pOw0KfTsNCg0KDQovLyBTdHJpbmcgZXh0ZW5zaW9uIHRvIGFsbG93
IHF1aWNrIHJlcGxhY2VtZW50cyB3aXRoIG9yZGVyZWQgZGVsaW1pdG9ycyAoInsw
fSwgezF9LCB7Mn0sIC4uLiIpLCBvciBpZiBhbiBvYmplY3QgaXMNCi8vIHBhc3Nl
ZCBpbiwgbmFtZWQgZGVsaW1pdGVycyAoe05hbWUxOiJ2YWx1ZTEiLCBOYW1lMjoi
dmFsdWUyIn0gOj4gIntOYW1lMX0sIHtOYW1lMn0sIC4uLiIpOg0KU3RyaW5nLnBy
b3RvdHlwZS5mb3JtYXQgPSBmdW5jdGlvbigpIHsNCiAgICB2YXIgcyA9IHRoaXM7
DQogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMSAmJiB0eXBlb2YgYXJndW1l
bnRzWzBdID09ICdvYmplY3QnKSB7DQogICAgICAgIHZhciBvSGFzaCA9IGFyZ3Vt
ZW50c1swXTsNCiAgICAgICAgZm9yICh2YXIgc0tleSBpbiBvSGFzaCkgew0KICAg
ICAgICAgICAgcyA9IHMuUmVwbGFjZSgneycgKyBzS2V5ICsgJ30nLCBTdHJpbmco
b0hhc2hbc0tleV0pKTsNCiAgICAgICAgfQ0KICAgIH0gZWxzZSB7DQogICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IA0K
ICAgICAgICAgICAgcyA9IHMuUmVwbGFjZSgneycgKyBpICsgJ30nLCBTdHJpbmco
YXJndW1lbnRzW2ldKSk7DQogICAgICAgIH0NCiAgICB9DQogICAgcmV0dXJuIHM7
DQp9Ow0KDQoNCi8vIFN0cmluZyBleHRlbnNpb24gYWRkaW5nIGEgYyMtbGlrZSB0
cmltKCkgbWV0aG9kOg0KU3RyaW5nLnByb3RvdHlwZS50cmltID0gZnVuY3Rpb24o
JGNUcmltKSB7DQogICAgdmFyIHggPSAwLCB5ID0gdGhpcy5sZW5ndGgsIHogPSAo
JGNUcmltID09IG51bGwgfHwgJGNUcmltID09ICcnKSA/ICcgXHRcclxuJyA6ICRj
VHJpbTsNCiAgICB3aGlsZSAoKHggPCB5KSAmJiAoei5pbmRleE9mKHRoaXMuY2hh
ckF0KHgpKSA+IC0xKSkgeCsrOw0KICAgIHdoaWxlICgoeSA+IHgpICYmICh6Lmlu
ZGV4T2YodGhpcy5jaGFyQXQoeSAtIDEpKSA+IC0xKSkgeS0tOw0KICAgIHJldHVy
biB0aGlzLnN1YnN0cmluZyh4LCB5KTsNCn07DQoNCg0KLy8gU3RyaW5nIGV4dGVu
c2lvbiB0byBlc2NhcGUgc3BlY2lhbCBjaGFyYWN0ZXJzIHNvIHRoZSBzdHJpbmcg
d2lsbCByZW5kZXIgYXMgdGV4dCB3aGVuIGVtYmVkZGVkIGFzIGh0bWw6DQpTdHJp
bmcucHJvdG90eXBlLmh0bWxFc2NhcGUgPSBmdW5jdGlvbigpIHsNCiAgICB2YXIg
c0VzY2FwZWQgPSB0aGlzLlJlcGxhY2UoJyYnLCAnJmFtcDsnKTsNCiAgICBzRXNj
YXBlZCA9IHNFc2NhcGVkLlJlcGxhY2UoJzwnLCAnJmx0OycpOw0KICAgIHNFc2Nh
cGVkID0gc0VzY2FwZWQuUmVwbGFjZSgnPicsICcmZ3Q7Jyk7DQogICAgcmV0dXJu
IHNFc2NhcGVkLlJlcGxhY2UoJyInLCAnJnF1b3Q7Jyk7DQp9Ow0KDQoNCi8vIFN0
cmluZyBleHRlbnNpb24gdG8gZXNjYXBlIHNwZWNpYWwgY2hhcmFjdGVycyBzbyB0
aGUgc3RyaW5nIHdpbGwgdHJhbnNmZXIgcHJvcGVybHkgdG8gamF2YXNjcmlwdDoN
ClN0cmluZy5wcm90b3R5cGUuanNFc2NhcGUgPSBmdW5jdGlvbigpIHsNCiAgICB2
YXIgc0VzY2FwZWQgPSB0aGlzLlJlcGxhY2UoJ1xcJywgJ1xcXFwnKTsNCiAgICBz
RXNjYXBlZCA9IHNFc2NhcGVkLlJlcGxhY2UoJ1wnJywgJ1xcXCcnKTsNCiAgICBz
RXNjYXBlZCA9IHNFc2NhcGVkLlJlcGxhY2UoJyInLCAnXFwiJyk7DQogICAgc0Vz
Y2FwZWQgPSBzRXNjYXBlZC5SZXBsYWNlKCdcbicsICdcXG4nKTsNCiAgICByZXR1
cm4gc0VzY2FwZWQuUmVwbGFjZSgnXHQnLCAnXFx0Jyk7DQp9Ow0KDQoNCi8vIE5P
VEU6IFVOVEVTVEVEIENPREUhISEgVVNFIEFUIE9XTiBSSVNLISEhDQpTdHJpbmcu
cHJvdG90eXBlLmZ1bGxIdG1sRXNjYXBlID0gZnVuY3Rpb24oKSB7DQoJdmFyIG9S
ZWdFeCA9IC8mYW1wOyhldXJvfHF1b3R8YW1wfGx0fGd0fG5ic3B8aWV4Y2x8Y2Vu
dHxwb3VuZHxjdXJyZW58eWVufGJydmJhcnxzZWN0fHVtbHxjb3B5fG9yZGZ8bm90
fHNoeXxyZWd8bWFjcnxkZWd8cGx1c21ufHN1cDJ8c3VwM3xhY3V0ZXxtaWNyb3xw
YXJhfG1pZGRvdHxjZWRpbHxzdXAxfG9yZG18cmFxdW98ZnJhYzE0fGZyYWMxMnxm
cmFjMzR8aXF1ZXN0fEFncmF2ZXxBYWN1dGV8QWNpcmN8QXRpbGRlfEF1bWx8QXJp
bmd8QUVsaWd8Q2NlZGlsfEVncmF2ZXxFYWN1dGV8RWNpcmN8RXVtbHxJZ3JhdmV8
SWFjdXRlfEljaXJjfEl1bWx8RVRIfE50aWxkZXxPZ3JhdmV8T2FjdXRlfE9jaXJj
fE90aWxkZXxPdW1sfHRpbWVzfE9zbGFzaHxVZ3JhdmV8VWFjdXRlfFVjaXJjfFV1
bWx8WWFjdXRlfFRIT1JOfHN6bGlnfGFncmF2ZXxhYWN1dGV8YWNpcmN8YXRpbGRl
fGF1bWx8YXJpbmd8YWVsaWd8Y2NlZGlsfGVncmF2ZXxlYWN1dGV8ZWNpcmN8ZXVt
bHxpZ3JhdmV8aWFjdXRlfGljaXJjfGl1bWx8ZXRofG50aWxkZXxvZ3JhdmV8b2Fj
dXRlfG9jaXJjfG90aWxkZXxvdW1sfGRpdmlkZXxvc2xhc2h8dWdyYXZlfHVhY3V0
ZXx1Y2lyY3x1dW1sfHlhY3V0ZXx0aG9ybnwjXGR7MiwzfSk7L2dpOw0KCXZhciBz
RXNjYXBlZCA9IHRoaXMuUmVwbGFjZSgnJicsICcmYW1wOycpOw0KCXJldHVybiBz
RXNjYXBlZC5yZXBsYWNlKG9SZWdFeCwgJyYkMTsnKTsNCn07DQoNCg0KLy8gU3Ry
aW5nIGV4dGVuc2lvbiB0byBlc2NhcGUgcXVvdGF0aW9ucyBhcyBuZWVkZWQgd2hl
biB3cml0dGVuIGFzIGh0bWwgbm9kZS1hdHRyaWJ1dGUgdmFsdWVzOg0KU3RyaW5n
LnByb3RvdHlwZS5odG1sQXJnRXNjYXBlID0gZnVuY3Rpb24oKSB7DQogICAgcmV0
dXJuIHRoaXMuUmVwbGFjZSgnIicsICcmcXVvdDsnKTsNCn07DQoNCg0KLy8gU3Ry
aW5nIGV4dGVuc2lvbiB0byBwZXJmb3JtIGJvdGgganNFc2NhcGUoKSAmIGh0bWxB
cmdFc2NhcGUgYXQgb25jZToNClN0cmluZy5wcm90b3R5cGUuamhhRXNjYXBlID0g
ZnVuY3Rpb24oKSB7DQogICAgcmV0dXJuIHRoaXMuanNFc2NhcGUoKS5odG1sQXJn
RXNjYXBlKCk7DQp9Ow0KDQoNClN0cmluZy5wcm90b3R5cGUucmVnZXhFc2NhcGUg
PSBmdW5jdGlvbigpIHsNCiAgICB2YXIgb1NwUkUgPSBuZXcgUmVnRXhwKCJbLior
P3woKVxcW1xcXXt9XFxcXF0iLCAiZyIpOyAvLyAuKis/fCgpW117fVwNCiAgICBy
ZXR1cm4gdGhpcy5yZXBsYWNlKG9TcFJFLCAiXFwkJiIpOw0KfTsNCg0KDQovLyBE
YXRlIGV4dGVuc2lvbiB0byByZXR1cm4gYSBjbGVhbiBoaDptbTpzcyBwbSBmb3Jt
YXQ6DQpEYXRlLnByb3RvdHlwZS50bzEySG91clRpbWUgPSBmdW5jdGlvbigpIHsN
CiAgICB2YXIgaD10aGlzLmdldEhvdXJzKCksbT10aGlzLmdldE1pbnV0ZXMoKSxz
PXRoaXMuZ2V0U2Vjb25kcygpLGE7DQogICAgaWYgKG0gPCAxMCl7bT0nMCcrbTt9
DQogICAgaWYgKHMgPCAxMCl7cz0nMCcrczt9DQogICAgaWYgKGggPiAxMil7aC09
MTI7YT0nIHBtJzt9ZWxzZXthPScgYW0nO30NCiAgICByZXR1cm4gaCsnOicrbSsn
OicrcythOw0KfTsNCg0KDQovLyBEYXRlIGV4dGVuc2lvbnMgdG8gcmV0dXJuIGEg
bmV3IERhdGUoKSB3aXRoIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHNlY29uZHMv
bWludXRlcy9ob3Vycy9kYXlzIGFkZGVkIHRvIGl0Og0KRGF0ZS5wcm90b3R5cGUu
YWRkU2Vjb25kcyA9IGZ1bmN0aW9uKCRpU2Vjb25kcyl7cmV0dXJuIG5ldyBEYXRl
KHRoaXMuZ2V0VGltZSgpKygkaVNlY29uZHMqMTAwMCkpO307DQpEYXRlLnByb3Rv
dHlwZS5hZGRNaW51dGVzID0gZnVuY3Rpb24oJGlNaW51dGVzKXtyZXR1cm4gdGhp
cy5hZGRTZWNvbmRzKCRpTWludXRlcyo2MCk7fTsNCkRhdGUucHJvdG90eXBlLmFk
ZEhvdXJzID0gZnVuY3Rpb24oJGlIb3Vycyl7cmV0dXJuIHRoaXMuYWRkTWludXRl
cygkaUhvdXJzKjYwKTt9Ow0KRGF0ZS5wcm90b3R5cGUuYWRkRGF5cyA9IGZ1bmN0
aW9uKCRpRGF5cyl7cmV0dXJuIHRoaXMuYWRkSG91cnMoJGlEYXlzKjI0KTt9Ow0K
DQoNCi8vIEFkZCBpbmRleE9mIHN1cHBvcnQgdG8gSUUgYXJyYXlzDQpBcnJheS5w
cm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uKCR2YWwsICRpRnJvbSkgew0KICAg
ICRpRnJvbSA9ICgkaUZyb20pID8gJGlGcm9tIDogMDsNCiAgICANCiAgICBpZiAo
JGlGcm9tIDwgdGhpcy5sZW5ndGgpIHsNCiAgICAgICAgZm9yICh2YXIgaSA9ICRp
RnJvbTsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgIGlmICh0
aGlzW2ldID09PSAkdmFsKSByZXR1cm4gaTsNCiAgICAgICAgfQ0KICAgIH0NCiAg
ICANCiAgICByZXR1cm4gLTE7DQp9Ow0KLy8qKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioN
Ci8vIEVuZCBCYXNlIEphdmFTY3JpcHQgT2JqZWN0IFByb3RvdHlwZSBFeHRlbnNp
b25zDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KDQoNCg0KDQoNCi8vKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqDQovLyBTdGFydCB1c2VmdWxsIGNvbW1vbiBtZXRob2Qg
ZGVjbGFyYXRpb25zOg0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCg0KLy8gQWRk
cyAncHgnIHRvIHRoZSBlbmQgb2YgYSBudW1iZXIsIG9yIHN0cmlwcyB0aGUgJ3B4
JyBmcm9tIHRoZSBlbmQgb2YgYSBzdHJpbmc6DQpmdW5jdGlvbiBweChuKSB7DQog
ICAgaWYgKFN0cmluZyhuKS5pbmRleE9mKCdweCcpID4gLTEpIHsNCiAgICAgICAg
cmV0dXJuIE51bWJlcihuLnN1YnN0cmluZygwLG4ubGVuZ3RoLTIpKTsNCiAgICB9
DQogICAgcmV0dXJuIFN0cmluZyhuKSArICdweCc7DQp9Ow0KDQoNCi8vIFJldHVy
bnMgYSBjaGlsZCBub2RlIGJ5IG5hbWUgZnJvbSBhbiBYTUwgZG9jdW1lbnQsIG9y
IG51bGwgaWYgdGhlIG5vZGUgZG9lc24ndCBleGlzdC4NCi8vIFRoZSB0aGlyZCAm
IGZvdXJ0aCBvcHRpb25hbCBwYXJhbWV0ZXJzIHdpbGwgb25seSByZXR1cm4gdGhl
IG5vZGUgaWYgdGhlIG5hbWVkIGF0dHJpYnV0ZSAvIHZhbHVlDQovLyBjb21ibyBh
cmUgYWxzbyBmb3VuZCBpbiB0aGUgbm9kZS4gSWYgc3BlY2lmaWVkLCB0aGUgdGhp
cmQgcGFyYW1ldGVyIHJlcXVpcmVzIHRoZSBub2RlIHRvIGJlIHZpc2libGUuDQpm
dW5jdGlvbiBnZXRDaGlsZE5vZGUoJG9FbGVtZW50LCAkc0VsZW1lbnROYW1lLCAk
c0F0dHJpYnV0ZU5hbWUsICRzQXR0cmlidXRlVmFsdWUsICRiVmlzaWJsZSwgJGJT
dGFydHNXaXRoKSB7DQogICAgaWYgKCgkYlZpc2libGUgJiYgJG9FbGVtZW50LmNs
YXNzTmFtZS5pbmRleE9mKCdoaWRlJykgPT0gLTEgJiYgJG9FbGVtZW50LnN0eWxl
LmRpc3BsYXkgIT0gJ25vbmUnICYmICRvRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5
ICE9ICdoaWRkZW4nKSB8fCAoJGJWaXNpYmxlID09IG51bGwgfHwgJGJWaXNpYmxl
ID09IGZhbHNlKSkgew0KICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgJG9FbGVt
ZW50LmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspew0KCQkgICAgaWYgKCRvRWxlbWVu
dC5jaGlsZE5vZGVzW2ldLm5vZGVOYW1lICE9IG51bGwgJiYgJG9FbGVtZW50LmNo
aWxkTm9kZXNbaV0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PSAkc0VsZW1lbnRO
YW1lLnRvTG93ZXJDYXNlKCkpew0KCQkJICAgIGlmICgkc0F0dHJpYnV0ZU5hbWUg
IT0gbnVsbCAmJiAkc0F0dHJpYnV0ZVZhbHVlICE9IG51bGwpew0KCQkJICAgICAg
ICB2YXIgc0F0dHJpYnV0ZVZhbHVlID0gJG9FbGVtZW50LmNoaWxkTm9kZXNbaV0u
Z2V0QXR0cmlidXRlKCRzQXR0cmlidXRlTmFtZSk7DQoJCQkgICAgICAgIGlmICgo
JGJTdGFydHNXaXRoICYmIHNBdHRyaWJ1dGVWYWx1ZS5pbmRleE9mKCRzQXR0cmli
dXRlVmFsdWUpID09IDApIHx8IHNBdHRyaWJ1dGVWYWx1ZSA9PSAkc0F0dHJpYnV0
ZVZhbHVlKSB7DQoJCQkJCSAgICByZXR1cm4gJG9FbGVtZW50LmNoaWxkTm9kZXNb
aV07DQoJCQkgICAgICAgIH0NCgkJCSAgICB9IGVsc2Ugew0KCQkJCSAgICByZXR1
cm4gJG9FbGVtZW50LmNoaWxkTm9kZXNbaV07DQoJCQkgICAgfQ0KCQkgICAgfQ0K
CQkgICAgaWYgKCRvRWxlbWVudC5jaGlsZE5vZGVzW2ldLm5vZGVUeXBlID09IDEp
IHsNCgkJICAgICAgICB2YXIgb0NoaWxkTm9kZSA9IGdldENoaWxkTm9kZSgkb0Vs
ZW1lbnQuY2hpbGROb2Rlc1tpXSwgJHNFbGVtZW50TmFtZSwgJHNBdHRyaWJ1dGVO
YW1lLCAkc0F0dHJpYnV0ZVZhbHVlLCAkYlZpc2libGUpOw0KCQkgICAgICAgIGlm
IChvQ2hpbGROb2RlICE9IG51bGwpIHJldHVybiBvQ2hpbGROb2RlOw0KCQkgICAg
fQ0KCSAgICB9DQoJfQ0KCQ0KCS8vIFRoZSByZXF1ZXN0ZWQgbm9kZSB3YXMgbm90
IGZvdW5kLiBSZXR1cm4gbnVsbDoNCglyZXR1cm4gbnVsbDsNCn07DQoNCg0KLy8g
R2V0cyBhIHZhbHVlIGZyb20gdGhlIGNsYXNzIGF0dHJpYnV0ZSBvZiBhbiBlbGVt
ZW50IGJhc2VkIG9uIHRoZSBzdGFydGluZyBjaGFyYWN0ZXJzIG9mIHRoZSBjbGFz
czoNCmZ1bmN0aW9uIGdldFByZWZpeGVkQ2xhc3NWYWx1ZSgkb0VsZW1lbnQsICRz
Q2xhc3NQcmVmaXgpIHsNCiAgICB2YXIgc1ZhbHVlID0gbnVsbDsNCiAgICBpZiAo
JG9FbGVtZW50ID09IG51bGwgfHwgJHNDbGFzc1ByZWZpeCA9PSBudWxsIHx8ICRz
Q2xhc3NQcmVmaXggPT0gJycpIHJldHVybiBzVmFsdWU7DQogICAgaWYgKCRvRWxl
bWVudC5jbGFzc05hbWUgPT0gbnVsbCkgcmV0dXJuIHNWYWx1ZTsNCiAgICBpZiAo
JG9FbGVtZW50LmNsYXNzTmFtZS5pbmRleE9mKCRzQ2xhc3NQcmVmaXgpID09IDAp
IHsNCiAgICAgICAgc1ZhbHVlID0gJG9FbGVtZW50LmNsYXNzTmFtZS5zdWJzdHJp
bmcoJHNDbGFzc1ByZWZpeC5sZW5ndGgpOw0KICAgIH0gZWxzZSBpZiAoJG9FbGVt
ZW50LmNsYXNzTmFtZS5pbmRleE9mKCcgJyArICRzQ2xhc3NQcmVmaXgpID4gLTEp
IHsNCiAgICAgICAgc1ZhbHVlID0gJG9FbGVtZW50LmNsYXNzTmFtZS5zdWJzdHJp
bmcoJG9FbGVtZW50LmNsYXNzTmFtZS5pbmRleE9mKCcgJyArICRzQ2xhc3NQcmVm
aXgpICsgJHNDbGFzc1ByZWZpeC5sZW5ndGggKyAxKTsNCiAgICB9DQogICAgaWYg
KHNWYWx1ZSA9PSBudWxsKSByZXR1cm4gc1ZhbHVlOw0KICAgIGlmIChzVmFsdWUu
aW5kZXhPZignICcpID4gLTEpIHNWYWx1ZSA9IHNWYWx1ZS5zdWJzdHJpbmcoMCwg
c1ZhbHVlLmluZGV4T2YoJyAnKSk7DQogICAgcmV0dXJuIHNWYWx1ZTsNCn07DQoN
Cg0KLy8gQ29udmVydHMgc2Vjb25kcyB0byBhcHByb3ByaWF0ZSBmb3JtYXQgYW5k
IHJldHVybnMgaXQgYXMgYSBzdHJpbmc6DQpmdW5jdGlvbiBzZWNvbmRzVG9UaW1l
KCRpU2Vjb25kcykgew0KICAgIHZhciBvRCA9IG5ldyBEYXRlKDAsMCwwLDAsMCwk
aVNlY29uZHMsMCk7DQogICAgdmFyIGg9b0QuZ2V0SG91cnMoKSxtPW9ELmdldE1p
bnV0ZXMoKSxzPW9ELmdldFNlY29uZHMoKTsNCiAgICBoPShoID4gMCk/JycraCsn
Oic6Jyc7DQogICAgbT0oaCAhPSAnJyAmJiBtIDwgMTApPycwJyttKyc6JzonJytt
Kyc6JzsNCiAgICBzPShzIDwgMTApPycwJytzOnMudG9TdHJpbmcoKTsNCiAgICBy
ZXR1cm4gaCttK3M7DQp9Ow0KDQoNCi8vIFJlbG9hZCBob21lIHBhZ2UgYWZ0ZXIg
OTAgbWluOg0Kc2V0VGltZW91dChmdW5jdGlvbigpe3dpbmRvdy5fX19faUlkbGVU
TyA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKXtuYXZpZ2F0ZVRvKCcvJyk7fSw1NDAw
MDAwKTt9LDYwMDAwKTsNCg0KLy8gTmF2aWdhdGVzIHRvIGEgZ2l2ZW4gVVJMOg0K
ZnVuY3Rpb24gbmF2aWdhdGVUbygkc1BhdGgpIHsNCiAgICBpZiAod2luZG93Ll9f
X19pSWRsZVRPKSBjbGVhclRpbWVvdXQod2luZG93Ll9fX19pSWRsZVRPKTsNCiAg
ICB0cnl7ZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSAncHJvZ3Jlc3MnO31j
YXRjaChlKXt9DQogICAgaWYgKCRzUGF0aC5pbmRleE9mKCdqYXZhc2NyaXB0Oicp
ID09IDApIHsNCiAgICAgICAgdHJ5e2V2YWwoJHNQYXRoLnN1YnN0cmluZygxMSkp
O31jYXRjaChlKXt9DQogICAgfSBlbHNlIGlmICh3aW5kb3cubG9jYXRpb24uaHJl
Zikgew0KICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICRzUGF0aDsNCiAg
ICB9IGVsc2Ugew0KICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAkc1BhdGg7DQog
ICAgfQ0KfTsNCg0KDQovLyBEb2VzIGEgcG9vci1tYW4ncyByZWxvYWQgb2YgdGhl
IGN1cnJlbnRseSBhY3RpdmUgcGFnZToNCmZ1bmN0aW9uIHJlZnJlc2goKSB7DQog
ICAgaWYgKG9QYWdlKSB7IG9QYWdlLl9ub0tlZXBBbGl2ZSA9IHRydWU7IHNldFRp
bWVvdXQoZnVuY3Rpb24oKXtvUGFnZS5fbm9LZWVwQWxpdmUgPSBmYWxzZTt9LDEw
MCk7IH0NCiAgICBuYXZpZ2F0ZVRvKCgkX2FjdGl2ZVVSTCkgPyAkX2FjdGl2ZVVS
TCA6IChzZWxmLmxvY2F0aW9uLmhyZWYpID8gc2VsZi5sb2NhdGlvbi5ocmVmIDog
c2VsZi5sb2NhdGlvbik7DQp9Ow0KDQoNCi8vIFJldHVybnMgdGhlIHRleHQgb2Yg
dGhlIHNlbGVjdGVkIG9wdGlvbjoNCmZ1bmN0aW9uIGdldFNlbGVjdGVkVGV4dCgk
b1NlbGVjdCkgew0KICAgIGZvciAodmFyIHggPSAwOyB4IDwgJG9TZWxlY3Qub3B0
aW9ucy5sZW5ndGg7IHgrKykgew0KICAgICAgICBpZiAoJG9TZWxlY3Qub3B0aW9u
c1t4XS5zZWxlY3RlZCkgew0KICAgICAgICAgICAgcmV0dXJuICRvU2VsZWN0Lm9w
dGlvbnNbeF0udGV4dDsNCiAgICAgICAgfQ0KICAgIH0NCiAgICByZXR1cm4gbnVs
bDsNCn07DQoNCg0KLy8gUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdGVk
IG9wdGlvbiBmcm9tIGEgPHNlbGVjdC8+IGxpc3QuDQpmdW5jdGlvbiBnZXRTZWxl
Y3RlZFZhbHVlKCRvU2VsZWN0KSB7DQogICAgZm9yICh2YXIgeCA9IDA7IHggPCAk
b1NlbGVjdC5vcHRpb25zLmxlbmd0aDsgeCsrKSB7DQogICAgICAgIGlmICgkb1Nl
bGVjdC5vcHRpb25zW3hdLnNlbGVjdGVkKSB7DQogICAgICAgICAgICByZXR1cm4g
JG9TZWxlY3Qub3B0aW9uc1t4XS52YWx1ZTsNCiAgICAgICAgfQ0KICAgIH0NCiAg
ICByZXR1cm4gbnVsbDsNCn07DQoNCg0KLy8gU2V0cyB0aGUgdmFsdWUgb2YgdGhl
IHNlbGVjdGVkIG9wdGlvbiBpbiBhIDxzZWxlY3QvPiBsaXN0IHRvIHRoZSBwYXNz
ZWQtaW4gdmFsdWUgKGlmIGF2YWlsYWJsZSkuDQpmdW5jdGlvbiBzZXRTZWxlY3Rl
ZFZhbHVlKCRvU2VsZWN0LCAkc1ZhbHVlKSB7DQogICAgZm9yICh2YXIgeCA9IDA7
IHggPCAkb1NlbGVjdC5vcHRpb25zLmxlbmd0aDsgeCsrKSB7DQogICAgICAgIGlm
IChTdHJpbmcoJG9TZWxlY3Qub3B0aW9uc1t4XS52YWx1ZSkgPT0gU3RyaW5nKCRz
VmFsdWUpKSB7DQogICAgICAgICAgICAkb1NlbGVjdC5vcHRpb25zW3hdLnNlbGVj
dGVkID0gdHJ1ZTsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQogICAg
fQ0KfTsNCg0KDQovLyBQZXJmb3JtcyBhIHNlcmllcyBvZiBkb2N1bWVudC53cml0
ZXMgdG8gd3JpdGUgb3V0IGFuIG9iamVjdC9lbWJlZCB0YWcuDQpmdW5jdGlvbiB3
cml0ZU9iamVjdCgkc09iamVjdCkgew0KICAgIHZhciBhT2JqZWN0UGFydHMgPSAk
c09iamVjdC5zcGxpdCgnPicpOw0KICAgIGZvciAodmFyIHggPSAwOyB4IDwgYU9i
amVjdFBhcnRzLmxlbmd0aDsgeCsrKSB7DQogICAgICAgIGlmIChhT2JqZWN0UGFy
dHNbeF0ubGVuZ3RoID4gMCkgZG9jdW1lbnQud3JpdGUoYU9iamVjdFBhcnRzW3hd
ICsgJz4nKTsNCiAgICB9DQp9Ow0KDQoNCi8vIFNldHMgYSBjb29raWUgZm9yIGEg
c3BlY2lmaWVkIG51bWJlciBvZiBkYXlzOg0KZnVuY3Rpb24gc2V0Q29va2llKCRz
TmFtZSwkc1ZhbHVlLCRpRGF5cykgew0KICAgIHZhciBzRXhwaXJlcyA9ICcnOw0K
CWlmICgkaURheXMpIHsNCgkJdmFyIG9EYXRlID0gbmV3IERhdGUoKTsNCgkJb0Rh
dGUuc2V0VGltZShvRGF0ZS5nZXRUaW1lKCkgKyAoJGlEYXlzICogODY0MDAwMDAp
KTsNCgkJc0V4cGlyZXMgPSAnOyBleHBpcmVzPScgKyBvRGF0ZS50b0dNVFN0cmlu
ZygpOw0KCX0NCgl2YXIgaURvdEluZGV4ID0gU3RyaW5nKHdpbmRvdy5sb2NhdGlv
bikuaW5kZXhPZignLicpOw0KCXZhciBzRG9tYWluID0gKGlEb3RJbmRleCA+IDAp
ID8gU3RyaW5nKHdpbmRvdy5sb2NhdGlvbikuc3Vic3RyaW5nKFN0cmluZyh3aW5k
b3cubG9jYXRpb24pLmluZGV4T2YoJy4nKSkgOiAnbG9jYWxob3N0Lyc7DQoJdmFy
IGlTbGFzaEluZGV4ID0gc0RvbWFpbi5pbmRleE9mKCcvJyk7DQoJZG9jdW1lbnQu
Y29va2llID0gJHNOYW1lICsgJz0nICsgJHNWYWx1ZSArIHNFeHBpcmVzICsgJzsg
cGF0aD0vOycgKyBTdHJpbmcoKGFyZ3VtZW50cy5sZW5ndGggPCA0KSA/ICcgZG9t
YWluPScgKyBzRG9tYWluLnN1YnN0cmluZygwLGlTbGFzaEluZGV4KSA6ICcnKTsN
Cn07DQoNCg0KLy8gUmV0dXJucyB0aGUgdmFsdWUgb2YgYSBzdG9yZWQgY29va2ll
Og0KZnVuY3Rpb24gZ2V0Q29va2llKCRzTmFtZSkgew0KICAgICRzTmFtZSA9ICRz
TmFtZSArICI9IjsNCgl2YXIgYUNvb2tpZXMgPSBkb2N1bWVudC5jb29raWUuc3Bs
aXQoJzsnKTsNCglmb3IodmFyIGkgPSAwOyBpIDwgYUNvb2tpZXMubGVuZ3RoOyBp
KyspIHsNCgkJdmFyIHNWYWx1ZSA9IGFDb29raWVzW2ldLnRyaW0oKTsNCgkJaWYg
KHNWYWx1ZS5pbmRleE9mKCRzTmFtZSkgPT0gMCkgcmV0dXJuIHNWYWx1ZS5zdWJz
dHJpbmcoJHNOYW1lLmxlbmd0aCwgc1ZhbHVlLmxlbmd0aCk7DQoJfQ0KCXJldHVy
biBudWxsOw0KfTsNCg0KDQovLyBEZWxldGVzIGEgY29va2llOg0KZnVuY3Rpb24g
ZGVsZXRlQ29va2llKCRzTmFtZSkgew0KICAgIHNldENvb2tpZSgkc05hbWUsICcn
LCAtMzY1LCBmYWxzZSk7DQogICAgc2V0Q29va2llKCRzTmFtZSwgJycsIC0zNjUp
Ow0KfTsNCg0KDQovLyBDb252ZXJ0cyB0aGUgZmlyc3QgbGV0dGVyIHRvIGxvd2Vy
Y2FzZQ0KZnVuY3Rpb24gZmlyc3RUb0xvd2VyKCRzU3RyaW5nKSB7DQogICAgaWYg
KCRzU3RyaW5nLmxlbmd0aCA9PSAwKSByZXR1cm4gJHNTdHJpbmc7DQogICAgaWYg
KCRzU3RyaW5nLmxlbmd0aCA9PSAxKSByZXR1cm4gJHNTdHJpbmcudG9Mb3dlckNh
c2UoKTsNCiAgICANCiAgICB2YXIgc05ld1N0cmluZyA9ICRzU3RyaW5nWzBdLnRv
TG93ZXJDYXNlKCkgKyAkc1N0cmluZy5zdWJzdHJpbmcoMSk7DQogICAgDQogICAg
cmV0dXJuIHNOZXdTdHJpbmc7DQp9Ow0KDQoNCi8vIFByaW50cyBjb250ZW50IG9m
ICRzTWVzc2FnZSBpbiBGaXJlYnVnIGNvbnNvbGUNCmZ1bmN0aW9uIHByaW50RGVi
dWcoJHNNZXNzYWdlKSB7DQogICAgdHJ5IHsNCiAgICAgICAgY29uc29sZS5sb2co
JHNNZXNzYWdlKTsNCiAgICB9IGNhdGNoIChlcnIpIHsgfQ0KfTsNCg0KDQovLyBD
b252ZXJ0cyBzdHJpbmcgdG8gSFRNTCBvYmplY3QNCmZ1bmN0aW9uIHN0cmluZ1Rv
RG9tT2JqZWN0KCRzSHRtbFN0cmluZywgJG9Eb2MpIHsNCiAgICAkb0RvYyA9ICgk
b0RvYykgPyAkb0RvYyA6IGRvY3VtZW50Ow0KICAgIA0KCXZhciBvVGVtcERpdiA9
ICRvRG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpOw0KCW9UZW1wRGl2LmlubmVySFRN
TCA9ICRzSHRtbFN0cmluZzsNCgkNCgl2YXIgb0RvbU9iamVjdCA9IG9UZW1wRGl2
LmZpcnN0Q2hpbGQ7DQoJb1RlbXBEaXYucmVtb3ZlQ2hpbGQob0RvbU9iamVjdCk7
DQoJDQoJcmV0dXJuIG9Eb21PYmplY3Q7DQp9Ow0KDQovLyBTZXRzIGZvY3VzICYg
Ymx1ciBldmVudHMgb24gYW4gaW5wdXQgb3IgdGV4dGFyZWEgdG8gc2hvdyBhIGRl
ZmF1bHQgc3RyaW5nIHdoZW4gaXQgY29udGFpbnMgbm8gdmFsdWUuIFRvIGNoYW5n
ZSBhbiBleGlzdGluZyBkZWZhdWx0DQovLyB2YWx1ZSAoZm9yIHdoZW4gcmUtdXNp
bmcgaW5wdXQgZWxlbWVudHMpLCBqdXN0IGNhbGwgdGhpcyBtZXRob2QgYWdhaW4u
DQpmdW5jdGlvbiBzZXRGaWVsZERlZmF1bHRWYWx1ZSgkb0VsLCAkc1ZhbCwgJHND
b2xvckRlZiwgJHNDb2xvckZvYywgJHNTdGFydFZhbHVlKSB7DQogICAgaWYgKCRv
RWwuX3NEZWZhdWx0VmFsdWUgPT0gbnVsbCkgew0KICAgICAgICAkb0VsLl9zRGVm
YXVsdFZhbHVlID0gJyc7DQogICAgICAgICRvRWwuX3NTdGFydFZhbHVlID0gKCRz
U3RhcnRWYWx1ZSA9PSBudWxsIHx8ICRzU3RhcnRWYWx1ZSA9PSAnJykgPyAnJyA6
IFN0cmluZygkc1N0YXJ0VmFsdWUpOw0KICAgICAgICAkb0VsLl9zQ29sb3JEZWYg
PSAkc0NvbG9yRGVmOw0KICAgICAgICAkb0VsLl9zQ29sb3JGb2MgPSAkc0NvbG9y
Rm9jOw0KICAgICAgICBpZiAoJG9FbC5vbmZvY3VzICE9IG51bGwpICRvRWwuX19f
b25mb2N1cyA9ICRvRWwub25mb2N1czsNCiAgICAgICAgaWYgKCRvRWwub25ibHVy
ICE9IG51bGwpICRvRWwuX19fb25ibHVyID0gJG9FbC5vbmJsdXI7DQogICAgICAg
ICRvRWwub25mb2N1cyA9IGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgaWYgKHRo
aXMuX3NDb2xvckZvYyAhPSBudWxsKSB7IHRoaXMuc3R5bGUuY29sb3IgPSB0aGlz
Ll9zQ29sb3JGb2M7IH0NCiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlLnRyaW0o
KS50b0xvd2VyQ2FzZSgpID09IHRoaXMuX3NEZWZhdWx0VmFsdWUudG9Mb3dlckNh
c2UoKSB8fCB0aGlzLnZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpID09IHRoaXMu
X3NTdGFydFZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpKSB7IHRoaXMudmFsdWUg
PSB0aGlzLl9zU3RhcnRWYWx1ZTsgfQ0KICAgICAgICAgICAgaWYgKHRoaXMuX19f
b25mb2N1cyAhPSBudWxsKSB7dHJ5e3RoaXMuX19fb25mb2N1cy5hcHBseSh0aGlz
LCBhcmd1bWVudHMpO31jYXRjaChlKXt9fQ0KICAgICAgICB9Ow0KICAgICAgICAk
b0VsLm9uYmx1ciA9IGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgaWYgKHRoaXMu
dmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCkgPT0gdGhpcy5fc0RlZmF1bHRWYWx1
ZS50b0xvd2VyQ2FzZSgpIHx8IHRoaXMudmFsdWUudHJpbSgpID09ICcnIHx8IHRo
aXMudmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCkgPT0gdGhpcy5fc1N0YXJ0VmFs
dWUudHJpbSgpLnRvTG93ZXJDYXNlKCkpIHsgdGhpcy52YWx1ZSA9IHRoaXMuX3NE
ZWZhdWx0VmFsdWU7IGlmICh0aGlzLl9zQ29sb3JEZWYgIT0gbnVsbCkgeyB0aGlz
LnN0eWxlLmNvbG9yID0gdGhpcy5fc0NvbG9yRGVmOyB9IH0NCiAgICAgICAgICAg
IGlmICh0aGlzLl9fX29uZm9jdXMgIT0gbnVsbCkge3RyeXt0aGlzLl9fX29uZm9j
dXMuYXBwbHkodGhpcywgYXJndW1lbnRzKTt9Y2F0Y2goZSl7fX0NCiAgICAgICAg
fTsNCiAgICAgICAgJG9FbC5nZXRWYWx1ZSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
KHRoaXMudmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCkgPT0gdGhpcy5fc0RlZmF1
bHRWYWx1ZS50b0xvd2VyQ2FzZSgpIHx8IHRoaXMudmFsdWUudHJpbSgpLnRvTG93
ZXJDYXNlKCkgPT0gdGhpcy5fc1N0YXJ0VmFsdWUudHJpbSgpLnRvTG93ZXJDYXNl
KCkpID8gJycgOiB0aGlzLnZhbHVlOyB9Ow0KICAgICAgICAkb0VsLnJlc2V0VmFs
dWUgPSBmdW5jdGlvbigpIHsgaWYgKHRoaXMuZ2V0VmFsdWUoKSA9PSAnJykgdGhp
cy52YWx1ZSA9IHRoaXMuX3NEZWZhdWx0VmFsdWU7IGlmICh0aGlzLl9zQ29sb3JE
ZWYgIT0gbnVsbCkgeyB0aGlzLnN0eWxlLmNvbG9yID0gdGhpcy5fc0NvbG9yRGVm
OyB9IH0NCiAgICB9DQogICAgaWYgKCRvRWwuZ2V0VmFsdWUoKSA9PSAnJykgeyAk
b0VsLnZhbHVlID0gJHNWYWw7IGlmICh0aGlzLl9zQ29sb3JEZWYgIT0gbnVsbCkg
eyB0aGlzLnN0eWxlLmNvbG9yID0gdGhpcy5fc0NvbG9yRGVmOyB9IH0NCiAgICAk
b0VsLl9zRGVmYXVsdFZhbHVlID0gJHNWYWw7c2V0VGltZW91dChmdW5jdGlvbigp
eyRvRWwub25ibHVyLmFwcGx5KCRvRWwpO30sMSk7DQp9Ow0KDQoNCi8vIFJldHVy
bnMgYWxsIHRleHQgbm9kZXMgZnJvbSB0aGUgcm9vdC4gSWYgcm9vdCBpcyBub3Qg
c3BlY2lmaWVkLCB1c2VzIGJvZHkgb2YgdGhlIGRvY3VtZW50IGFzIHJvb3QuDQov
LyBVc2VzIHJlY3Vyc2lvbiB0byBpbnNwZWN0IGNoaWxkcmVuIG9mIGNoaWxkIG5v
ZGVzLg0KZnVuY3Rpb24gZ2V0VGV4dEVsZW1lbnRzKCRvUm9vdCwgJGlVcFRvKSB7
DQogICAgdmFyIG9Sb290ID0gKCRvUm9vdCkgPyAkb1Jvb3QgOiB0aGlzLl9vQm9k
eTsNCgl2YXIgYVR4dHMgPSBbXTsNCgl2YXIgaVVwVG8gPSAoJGlVcFRvKSA/ICRp
VXBUbyA6IChvUm9vdC5jaGlsZE5vZGVzKSA/IG9Sb290LmNoaWxkTm9kZXMubGVu
Z3RoIDogMDsNCgkNCglpZiAob1Jvb3QgJiYgb1Jvb3QuY2hpbGROb2Rlcykgew0K
CQlmb3IgKHZhciBpID0gMDsgaSA8IGlVcFRvOyBpKyspIHsNCgkJCWlmIChvUm9v
dC5jaGlsZE5vZGVzW2ldLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT0gJyN0ZXh0
Jykgew0KCQkJCWFUeHRzLnB1c2gob1Jvb3QuY2hpbGROb2Rlc1tpXSk7DQoJCQl9
IGVsc2Ugew0KCQkJCWFUeHRzID0gYVR4dHMuY29uY2F0KGdldFRleHRFbGVtZW50
cyhvUm9vdC5jaGlsZE5vZGVzW2ldKSk7DQoJCQl9DQoJCX0NCgl9DQoJDQoJcmV0
dXJuIGFUeHRzOw0KfTsNCg0KDQovLyBDaGVja3Mgd2hldGhlciB0aGUgc3VwcGxp
ZWQgbm9kZSBpcyB0aGUgYW5jZXN0b3Igb2YgdGhlIGNoaWxkIG5vZGUgb3IgaXQg
aXMgaXRzZWxmDQpmdW5jdGlvbiBpc0FuY2VzdG9yT3JTZWxmKCRvTm9kZSwgJG9D
aGlsZCkgew0KICAgIGlmICgkb05vZGUgPT0gJG9DaGlsZCkgcmV0dXJuIHRydWU7
DQogICAgDQogICAgLy8gR28gdXAgdGhlIERPTSB0cmVlIGFuZCBzZWUgb2YgaXQn
cyB0aGUgYW5jZXN0b3INCiAgICB3aGlsZSAoJG9DaGlsZC5wYXJlbnROb2RlICE9
IG51bGwpIHsNCiAgICAgICAgaWYgKCRvTm9kZSA9PSAkb0NoaWxkLnBhcmVudE5v
ZGUpIHJldHVybiB0cnVlOw0KICAgICAgICANCiAgICAgICAgJG9DaGlsZCA9ICRv
Q2hpbGQucGFyZW50Tm9kZTsNCiAgICB9DQogICAgDQogICAgcmV0dXJuIGZhbHNl
Ow0KfTsNCg0KDQovLyBSZXR1cm5zIHRleHQgY29udGVudCBvZiB0aGUgbm9kZQ0K
ZnVuY3Rpb24gZ2V0Tm9kZVRleHQoJG9Ob2RlKSB7DQogICAgaWYgKCRvTm9kZSkg
ew0KICAgICAgICBpZiAoJG9Ob2RlLm5vZGVWYWx1ZSB8fCAkb05vZGUubm9kZVZh
bHVlID09PSAnJykgcmV0dXJuICRvTm9kZS5ub2RlVmFsdWU7DQogICAgICAgIGlm
ICgkb05vZGUudGV4dENvbnRlbnQgfHwgJG9Ob2RlLnRleHRDb250ZW50ID09PSAn
JykgcmV0dXJuICRvTm9kZS50ZXh0Q29udGVudDsNCgkgICAgaWYgKCRvTm9kZS5p
bm5lclRleHQgfHwgJG9Ob2RlLmlubmVyVGV4dCA9PT0gJycpIHJldHVybiAkb05v
ZGUuaW5uZXJUZXh0Ow0KICAgIAkNCgkgICAgcmV0dXJuICRvTm9kZS50b1N0cmlu
ZygpOw0KCX0NCgkNCglyZXR1cm4gJyc7DQp9Ow0KDQoNCi8vIFNjcm9sbHMgdG8g
dGhlIGVsZW1lbnQuIFBvc3NpYmxlIHRvIHBhc3MgaW4gZWxlbWVudCdzIElEDQov
Kg0KZnVuY3Rpb24gc2Nyb2xsVG9FbGVtZW50KCRvU2Nyb2xsVG8pIHsNCiAgICBp
ZiAodHlwZW9mKCRvU2Nyb2xsVG8pID09ICdzdHJpbmcnKSB7DQogICAgICAgICRv
U2Nyb2xsVG8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgkb1Njcm9sbFRvKTsN
CiAgICB9DQogICAgDQogICAgaWYgKCEkb1Njcm9sbFRvKSByZXR1cm47DQogICAg
DQogICAgdmFyIGlTZWxlY3RlZFBvc1ggPSAwOw0KICAgIHZhciBpU2VsZWN0ZWRQ
b3NZID0gMDsNCiAgICANCiAgICB3aGlsZSgkb1Njcm9sbFRvICE9IG51bGwpIHsN
CiAgICAgICAgaVNlbGVjdGVkUG9zWCArPSAkb1Njcm9sbFRvLm9mZnNldExlZnQ7
DQogICAgICAgIGlTZWxlY3RlZFBvc1kgKz0gJG9TY3JvbGxUby5vZmZzZXRUb3A7
DQogICAgICAgICRvU2Nyb2xsVG8gPSAkb1Njcm9sbFRvLm9mZnNldFBhcmVudDsN
CiAgICB9DQogICAgDQogICAgd2luZG93LnNjcm9sbFRvKGlTZWxlY3RlZFBvc1gs
IGlTZWxlY3RlZFBvc1kpOw0KfTsNCiovDQoNCg0KLy8gRW5hYmxlIG91dGVySFRN
TCBmb3IgYWxsIGJyb3dzZXJzDQppZiAoZG9jdW1lbnQuX19kZWZpbmVHZXR0ZXJf
XyAmJiAhSFRNTEVsZW1lbnQub3V0ZXJIVE1MKSB7DQogICAgSFRNTEVsZW1lbnQu
cHJvdG90eXBlLl9fZGVmaW5lR2V0dGVyX18oIm91dGVySFRNTCIsIGZ1bmN0aW9u
KCkgew0KICAgICAgICB2YXIgZW1wdHlUYWdzID0gew0KCQkgICAiaW1nIjogICB0
cnVlLA0KCQkgICAiYnIiOiAgICB0cnVlLA0KCQkgICAiaW5wdXQiOiB0cnVlLA0K
CQkgICAibWV0YSI6ICB0cnVlLA0KCQkgICAibGluayI6ICB0cnVlLA0KCQkgICAi
cGFyYW0iOiB0cnVlLA0KCQkgICAiaHIiOiAgICB0cnVlDQoJCX07DQoNCgkJdmFy
IGF0dHJzID0gdGhpcy5hdHRyaWJ1dGVzLA0KCQl0YWdOYW1lID0gdGhpcy50YWdO
YW1lLnRvTG93ZXJDYXNlKCksDQoJCXN0ciA9ICI8IiArIHRhZ05hbWU7DQoJCWZv
ciAodmFyIGEgPSAwOyBhIDwgYXR0cnMubGVuZ3RoOyBhKyspDQoJCSAgc3RyICs9
ICIgIiArIGF0dHJzW2FdLm5hbWUgKyAiPVwiIiArIGF0dHJzW2FdLnZhbHVlICsg
IlwiIjsNCg0KCQlpZiAoZW1wdHlUYWdzW3RhZ05hbWVdKQ0KCQkgIHJldHVybiBz
dHIgKyAiLz4iOw0KDQoJCXJldHVybiBzdHIgKyAiPiIgKyB0aGlzLmlubmVySFRN
TCArICI8LyIgKyB0YWdOYW1lICsgIj4iOw0KICAgIH0pOw0KfQ0KLy8qKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioNCi8vIEVuZCB1c2VmdWxsIGNvbW1vbiBtZXRob2QgZGVj
bGFyYXRpb25zDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KDQoNCg0KDQoNCi8v
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqDQovLyBTdGFydCBodHRwR2V0IE1ldGhvZC9P
YmplY3QgRGVmaW5pdGlvbg0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCg0KDQoN
Ci8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQovLyBodHRwR2V0IGJhc2UgbWV0aG9kIGRlY2xhcmF0aW9uOg0KLy89PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi8vIFVzZWQg
dG8gZWFzaWx5IHBlcmZvcm0gaW4tbGluZSBzeW5jaHJvbm91cyBvciBhc3luY2hy
b25vdXMgaHR0cCByZXF1ZXN0czoNCmZ1bmN0aW9uIGh0dHBHZXQoJG9VUkksICRv
QXJncywgJGZPbkxvYWQsICRiU3luY2gpIHsNCiAgICB2YXIgYkFzeW5jID0gKCRi
U3luY2gpID8gZmFsc2UgOiB0cnVlOw0KICAgIHZhciBvUmV0dXJuLCB4bWxIdHRw
ID0gaHR0cEdldC5nZXROZXdYTUxIdHRwUmVxdWVzdCgpOw0KICAgIGlmICh4bWxI
dHRwKSB7DQogICAgICAgIHZhciBiU3luY2hSZWFkeVN0YXRlSGFuZGxlZCA9IGZh
bHNlOw0KICAgICAgICB2YXIgZlJlYWR5U3RhdGVDaGFuZ2UgPSBmdW5jdGlvbigp
IHsNCiAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgaWYgKHhtbEh0
dHApIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHhtbEh0dHAucmVhZHlTdGF0
ZSA9PSA0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaVN0YXR1czsN
CiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7IGlmICh4bWxIdHRwLnN0YXR1
cyAhPSB1bmRlZmluZWQgJiYgeG1sSHR0cC5zdGF0dXMgIT0gMCkge2lTdGF0dXMg
PSB4bWxIdHRwLnN0YXR1czt9IGVsc2Uge2lTdGF0dXMgPSAxMzAzMDt9IH0gY2F0
Y2goZXJyKSB7aVN0YXR1cyA9IDEzMDMwO30NCiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICh4bWxIdHRwLnJlc3BvbnNlVGV4dCkgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9SZXR1cm4gPSAkZk9uTG9hZChodHRwR2V0LmZyb21KU09O
KHhtbEh0dHAucmVzcG9uc2VUZXh0KSwgJG9BcmdzKTsNCiAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoaVN0YXR1cyA9PSAxMzAzMCkgew0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9SZXR1cm4gPSBudWxsOw0KICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvUmV0dXJuID0gJGZPbkxvYWQoaHR0cEdldC5mcm9tSlNPTigpLCAkb0Fy
Z3MpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gRmxhZyB0aGUgZXZlbnQgYXMgY29tcGxldGVkOg0KICAgICAg
ICAgICAgICAgICAgICAgICAgYlN5bmNoUmVhZHlTdGF0ZUhhbmRsZWQgPSB0cnVl
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAg
ICAgICAvLyBSZW1vdmUgdGhlIGNpcmN1bGFyIHJlZmVyZW5jZSAmIHJlbGVhc2Ug
dGhlIG1lbW9yeSB1c2VkIGJ5IHRoZSBYTUxIdHRwUmVxdWVzdCBvYmplY3Q6DQog
ICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgeG1sSHR0cFsnb25yZWFkeXN0
YXRlY2hhbmdlJ107DQogICAgICAgICAgICAgICAgICAgICAgICB4bWxIdHRwID0g
bnVsbDsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB4bWxIdHRwOw0K
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvd1snQ29sbGVjdEdhcmJh
Z2UnXSkgeyBDb2xsZWN0R2FyYmFnZSgpOyB9DQogICAgICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9IGNhdGNoKGVycikg
ew0KICAgICAgICAgICAgICAgIG9SZXR1cm4gPSAkZk9uTG9hZCh7ZXJyb3JOdW1i
ZXI6NTAwLjEsIGVycm9yVGV4dDonU29ycnksIHdlIGhhZCBzb21lIHRyb3VibGUg
dGFsa2luZyB0byB0aGUgc2VydmVyLiBVbmV4cGVjdGVkIEFKQVggRXhjZXB0aW9u
LicsIHZhbHVlOm51bGx9LCAkb0FyZ3MpOw0KICAgICAgICAgICAgICAgIGJTeW5j
aFJlYWR5U3RhdGVIYW5kbGVkID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICANCiAg
ICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGNpcmN1bGFyIHJlZmVyZW5jZSAm
IHJlbGVhc2UgdGhlIG1lbW9yeSB1c2VkIGJ5IHRoZSBYTUxIdHRwUmVxdWVzdCBv
YmplY3Q6DQogICAgICAgICAgICAgICAgZGVsZXRlIHhtbEh0dHBbJ29ucmVhZHlz
dGF0ZWNoYW5nZSddOw0KICAgICAgICAgICAgICAgIHhtbEh0dHAgPSBudWxsOw0K
ICAgICAgICAgICAgICAgIGRlbGV0ZSB4bWxIdHRwOw0KICAgICAgICAgICAgICAg
IGlmICh3aW5kb3dbJ0NvbGxlY3RHYXJiYWdlJ10pIHsgQ29sbGVjdEdhcmJhZ2Uo
KTsgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9Ow0KICAgICAgICANCiAgICAg
ICAgaWYgKHR5cGVvZiAkb1VSSSA9PSAnc3RyaW5nJykgew0KICAgICAgICAgICAg
eG1sSHR0cC5vcGVuKCJHRVQiLCAkb1VSSSwgYkFzeW5jKTsNCiAgICAgICAgICAg
IHhtbEh0dHAub25yZWFkeXN0YXRlY2hhbmdlID0gZlJlYWR5U3RhdGVDaGFuZ2U7
DQogICAgICAgICAgICB4bWxIdHRwLnNldFJlcXVlc3RIZWFkZXIoJ0lmLU1vZGlm
aWVkLVNpbmNlJywgJ1dlZCwgOCBBdWcgMjAwNyAwMDowMDowMCBHTVQnKTsNCiAg
ICAgICAgICAgIHhtbEh0dHAuc2VuZChudWxsKTsNCiAgICAgICAgfSBlbHNlIHsN
CiAgICAgICAgICAgIHhtbEh0dHAub3BlbigiUE9TVCIsICRvVVJJLnVyaSwgYkFz
eW5jKTsNCiAgICAgICAgICAgIHhtbEh0dHAuc2V0UmVxdWVzdEhlYWRlcigkb1VS
SS54cmwsICRvVVJJLnBybik7DQogICAgICAgICAgICB4bWxIdHRwLnNldFJlcXVl
c3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi94LXd3dy1mb3Jt
LXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiKTsNCiAgICAgICAgICAgIHhtbEh0
dHAuc2V0UmVxdWVzdEhlYWRlcignSWYtTW9kaWZpZWQtU2luY2UnLCAnV2VkLCA4
IEF1ZyAyMDA3IDAwOjAwOjAwIEdNVCcpOw0KICAgICAgICAgICAgaWYgKFN0cmlu
ZyhuYXZpZ2F0b3IudXNlckFnZW50KS5pbmRleE9mKCdBcHBsZVdlYktpdCcpID09
IC0xKSB7DQogICAgICAgICAgICAgICAgeG1sSHR0cC5zZXRSZXF1ZXN0SGVhZGVy
KCJDb250ZW50LUxlbmd0aCIsICRvVVJJLmFyZ3MubGVuZ3RoKTsNCiAgICAgICAg
ICAgICAgICB4bWxIdHRwLnNldFJlcXVlc3RIZWFkZXIoIkNvbm5lY3Rpb24iLCAi
Q2xvc2UiKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHhtbEh0dHAub25y
ZWFkeXN0YXRlY2hhbmdlID0gZlJlYWR5U3RhdGVDaGFuZ2U7DQogICAgICAgICAg
ICB4bWxIdHRwLnNlbmQoJG9VUkkuYXJncyk7DQogICAgICAgIH0NCiAgICAgICAg
DQogICAgICAgIC8vIFNvbWUgYnJvd3NlcnMgZG9uJ3QgZmlyZSB0aGUgb25yZWFk
eXN0YXRlY2hhbmdlIGV2ZW50IGhhbmRsZXIgZm9yIHN5bmNocm9ub3VzIGNhbGxz
Lg0KICAgICAgICAvLyBNYW51YWxseSBmaXJlIGl0IGhlcmUgaWYgdGhpcyB3YXMg
YSBzeW5jaHJvbm91cyBjYWxsICYgdGhlIGV2ZW50IHdhc24ndCBmaXJlZDoNCiAg
ICAgICAgaWYgKCFiQXN5bmMgJiYgIWJTeW5jaFJlYWR5U3RhdGVIYW5kbGVkKSB7
DQogICAgICAgICAgICBmUmVhZHlTdGF0ZUNoYW5nZS5jYWxsKCk7DQogICAgICAg
IH0gZWxzZSBpZiAoYkFzeW5jKSB7DQogICAgICAgICAgICBvUmV0dXJuID0geG1s
SHR0cDsNCiAgICAgICAgfQ0KICAgIH0gZWxzZSB7DQogICAgICAgIHZhciBmTm9Y
SFIgPSBmdW5jdGlvbigpe29SZXR1cm4gPSAkZk9uTG9hZChodHRwR2V0LmZyb21K
U09OKCd7ZXJyb3JOdW1iZXI6MTMsIGVycm9yVGV4dDoiU29ycnksIHdlICcgKw0K
ICAgICAgICAnY2Fubm90IGNvbnRpbnVlIGluIHRoZSBicm93c2VyIHlvdVwncmUg
dXNpbmcuIFBsZWFzZSB1c2UgYSBtb2Rlcm4gYnJvd3NlciBzdWNoIGFzIEZpcmVm
b3gsIFNhZmFyaSwnICsNCiAgICAgICAgJyBPcGVyYSwgb3IgSW50ZXJuZXQgRXhw
bG9yZXIuIElmIHlvdSBhcmUgdXNpbmcgYSBtb2Rlcm4gYnJvd3NlciwgY2hlY2sg
dG8gdmVyaWZ5IHRoYXQgeW91ciBzZWN1cml0JyArDQogICAgICAgICd5IHNldHRp
bmdzIGFyZW5cJ3Qgc2V0IHRvbyBoaWdoLiIsIHZhbHVlOm51bGx9JyksICRvQXJn
cyk7fTtpZihiQXN5bmMpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtmTm9YSFIoKQ0K
ICAgICAgICA7fSwwKTt9ZWxzZXtmTm9YSFIoKTt9DQogICAgfQ0KICAgIHJldHVy
biBvUmV0dXJuOw0KfTsNCg0KDQovLyBMb2FkcyBhIGphdmFzY3JpcHQgZmlsZSB2
aWEgYXN5bmMgb3IgYmxvY2tpbmcgY2FsbCAmIGV2YWxzIGl0Og0KaHR0cEdldC5s
b2FkU2NyaXB0ID0gZnVuY3Rpb24oJHNTY3JpcHROYW1lLCAkYlN5bmNoKSB7DQog
ICAgdmFyIGJBc3luYyA9ICgkYlN5bmNoKSA/IGZhbHNlIDogdHJ1ZTsNCiAgICB2
YXIgb1JldHVybiA9IGZhbHNlLCB4bWxIdHRwID0gaHR0cEdldC5nZXROZXdYTUxI
dHRwUmVxdWVzdCgpOw0KICAgIGlmICh4bWxIdHRwKSB7DQogICAgICAgIHZhciBi
U3luY2hSZWFkeVN0YXRlSGFuZGxlZCA9IGZhbHNlOw0KICAgICAgICB2YXIgZlJl
YWR5U3RhdGVDaGFuZ2UgPSBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgIHRyeSB7
DQogICAgICAgICAgICAgICAgaWYgKHhtbEh0dHApIHsNCiAgICAgICAgICAgICAg
ICAgICAgaWYgKHhtbEh0dHAucmVhZHlTdGF0ZSA9PSA0KSB7DQogICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoeG1sSHR0cC5yZXNwb25zZVRleHQpIHsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBldmFsKHhtbEh0dHAucmVzcG9uc2VUZXh0KTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb1JldHVybiA9IHRydWU7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXZhbEVycil7IG9SZXR1
cm4gPSBmYWxzZTsgd2luZG93LnN0YXR1cyA9ICdFcnJvciBFeGVjdXRpbmcgRHlu
YW1pYyBTY3JpcHQ6ICcgKyAkc1NjcmlwdE5hbWUgKyAnOiAnICsgU3RyaW5nKChl
dmFsRXJyLm1lc3NhZ2UpID8gZXZhbEVyci5tZXNzYWdlIDogZXZhbEVyci50b1N0
cmluZygpKSB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgICAgICAgICAgICAvLyBGbGFnIHRoZSBldmVudCBhcyBjb21wbGV0ZWQ6DQog
ICAgICAgICAgICAgICAgICAgICAgICBiU3luY2hSZWFkeVN0YXRlSGFuZGxlZCA9
IHRydWU7DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFJlbW92ZSB0aGUgY2lyY3VsYXIgcmVmZXJlbmNlICYgcmVs
ZWFzZSB0aGUgbWVtb3J5IHVzZWQgYnkgdGhlIFhNTEh0dHBSZXF1ZXN0IG9iamVj
dDoNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB4bWxIdHRwWydvbnJl
YWR5c3RhdGVjaGFuZ2UnXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHhtbEh0
dHAgPSBudWxsOw0KICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHhtbEh0
dHA7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93WydDb2xsZWN0
R2FyYmFnZSddKSB7IENvbGxlY3RHYXJiYWdlKCk7IH0NCiAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0gY2F0Y2go
ZXJyKSB7DQogICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjaXJjdWxhciBy
ZWZlcmVuY2UgJiByZWxlYXNlIHRoZSBtZW1vcnkgdXNlZCBieSB0aGUgWE1MSHR0
cFJlcXVlc3Qgb2JqZWN0Og0KICAgICAgICAgICAgICAgIGRlbGV0ZSB4bWxIdHRw
WydvbnJlYWR5c3RhdGVjaGFuZ2UnXTsNCiAgICAgICAgICAgICAgICB4bWxIdHRw
ID0gbnVsbDsNCiAgICAgICAgICAgICAgICBkZWxldGUgeG1sSHR0cDsNCiAgICAg
ICAgICAgICAgICBpZiAod2luZG93WydDb2xsZWN0R2FyYmFnZSddKSB7IENvbGxl
Y3RHYXJiYWdlKCk7IH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfTsNCiAgICAg
ICAgDQogICAgICAgIHZhciBzVmVyc2lvbiA9ICh3aW5kb3cuSlNWZXJzaW9uKSA/
IHdpbmRvdy5KU1ZlcnNpb24gOiAobmV3IERhdGUoKSkuZ2V0VGltZSgpOw0KICAg
ICAgICB2YXIgc0Z1bGxQYXRoID0gJy9qcy8nICsgJHNTY3JpcHROYW1lICsgJy5q
cz92PScgKyBzVmVyc2lvbjsNCiAgICAgICAgeG1sSHR0cC5vcGVuKCJHRVQiLCBz
RnVsbFBhdGgsIGJBc3luYyk7DQogICAgICAgIHhtbEh0dHAub25yZWFkeXN0YXRl
Y2hhbmdlID0gZlJlYWR5U3RhdGVDaGFuZ2U7DQogICAgICAgIHhtbEh0dHAuc2V0
UmVxdWVzdEhlYWRlcignSWYtTW9kaWZpZWQtU2luY2UnLCAnV2VkLCA4IEF1ZyAy
MDA3IDAwOjAwOjAwIEdNVCcpOw0KICAgICAgICB4bWxIdHRwLnNlbmQobnVsbCk7
DQogICAgICAgIA0KICAgICAgICAvLyBTb21lIGJyb3dzZXJzIGRvbid0IGZpcmUg
dGhlIG9ucmVhZHlzdGF0ZWNoYW5nZSBldmVudCBoYW5kbGVyIGZvciBzeW5jaHJv
bm91cyBjYWxscy4NCiAgICAgICAgLy8gTWFudWFsbHkgZmlyZSBpdCBoZXJlIGlm
IHRoaXMgd2FzIGEgc3luY2hyb25vdXMgY2FsbCAmIHRoZSBldmVudCB3YXNuJ3Qg
ZmlyZWQ6DQogICAgICAgIGlmICghYkFzeW5jICYmICFiU3luY2hSZWFkeVN0YXRl
SGFuZGxlZCkgew0KICAgICAgICAgICAgZlJlYWR5U3RhdGVDaGFuZ2UuY2FsbCgp
Ow0KICAgICAgICB9IGVsc2UgaWYgKGJBc3luYykgew0KICAgICAgICAgICAgb1Jl
dHVybiA9IHhtbEh0dHA7DQogICAgICAgIH0NCiAgICB9DQogICAgcmV0dXJuIG9S
ZXR1cm47DQp9Ow0KDQoNCi8vIExvYWRzIGEgc3RyaW5nIGZyb20gYSBmaWxlIHZp
YSBibG9ja2luZyBjYWxsOg0KaHR0cEdldC5sb2FkU3RyaW5nID0gZnVuY3Rpb24o
JHNTcmMpIHsNCiAgICB2YXIgc1JldHVybiA9ICcnLCB4bWxIdHRwID0gaHR0cEdl
dC5nZXROZXdYTUxIdHRwUmVxdWVzdCgpOw0KICAgIGlmICh4bWxIdHRwKSB7DQog
ICAgICAgIHZhciBiU3luY2hSZWFkeVN0YXRlSGFuZGxlZCA9IGZhbHNlOw0KICAg
ICAgICB2YXIgZlJlYWR5U3RhdGVDaGFuZ2UgPSBmdW5jdGlvbigpIHsNCiAgICAg
ICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgaWYgKHhtbEh0dHApIHsNCiAg
ICAgICAgICAgICAgICAgICAgaWYgKHhtbEh0dHAucmVhZHlTdGF0ZSA9PSA0KSB7
DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoeG1sSHR0cC5yZXNwb25zZVRl
eHQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgew0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzUmV0dXJuID0gU3RyaW5nKHhtbEh0
dHAucmVzcG9uc2VUZXh0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
IGNhdGNoIChldmFsRXJyKXsgc1JldHVybiA9ICcnOyB3aW5kb3cuc3RhdHVzID0g
J0Vycm9yIExvYWRpbmcgU3RyaW5nIEZyb20gJyArICRzU3JjICsgJzogJyArIFN0
cmluZygoZXZhbEVyci5tZXNzYWdlKSA/IGV2YWxFcnIubWVzc2FnZSA6IGV2YWxF
cnIudG9TdHJpbmcoKSkgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gRmxhZyB0aGUgZXZlbnQgYXMgY29tcGxl
dGVkOg0KICAgICAgICAgICAgICAgICAgICAgICAgYlN5bmNoUmVhZHlTdGF0ZUhh
bmRsZWQgPSB0cnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAg
ICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGNpcmN1bGFyIHJlZmVyZW5j
ZSAmIHJlbGVhc2UgdGhlIG1lbW9yeSB1c2VkIGJ5IHRoZSBYTUxIdHRwUmVxdWVz
dCBvYmplY3Q6DQogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgeG1sSHR0
cFsnb25yZWFkeXN0YXRlY2hhbmdlJ107DQogICAgICAgICAgICAgICAgICAgICAg
ICB4bWxIdHRwID0gbnVsbDsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0
ZSB4bWxIdHRwOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvd1sn
Q29sbGVjdEdhcmJhZ2UnXSkgeyBDb2xsZWN0R2FyYmFnZSgpOyB9DQogICAgICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9
IGNhdGNoKGVycikgew0KICAgICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgY2ly
Y3VsYXIgcmVmZXJlbmNlICYgcmVsZWFzZSB0aGUgbWVtb3J5IHVzZWQgYnkgdGhl
IFhNTEh0dHBSZXF1ZXN0IG9iamVjdDoNCiAgICAgICAgICAgICAgICBkZWxldGUg
eG1sSHR0cFsnb25yZWFkeXN0YXRlY2hhbmdlJ107DQogICAgICAgICAgICAgICAg
eG1sSHR0cCA9IG51bGw7DQogICAgICAgICAgICAgICAgZGVsZXRlIHhtbEh0dHA7
DQogICAgICAgICAgICAgICAgaWYgKHdpbmRvd1snQ29sbGVjdEdhcmJhZ2UnXSkg
eyBDb2xsZWN0R2FyYmFnZSgpOyB9DQogICAgICAgICAgICB9DQogICAgICAgIH07
DQogICAgICAgIA0KICAgICAgICAvLyBBZGQgdmVyc2lvbmluZw0KICAgICAgICB2
YXIgc1ZlcnNpb24gPSAod2luZG93LkpTVmVyc2lvbikgPyB3aW5kb3cuSlNWZXJz
aW9uIDogKG5ldyBEYXRlKCkpLmdldFRpbWUoKTsNCiAgICAgICAgJHNTcmMgKz0g
Jz92PScgKyBzVmVyc2lvbjsNCiAgICAgICAgeG1sSHR0cC5vcGVuKCJHRVQiLCAk
c1NyYywgZmFsc2UpOw0KICAgICAgICB4bWxIdHRwLm9ucmVhZHlzdGF0ZWNoYW5n
ZSA9IGZSZWFkeVN0YXRlQ2hhbmdlOw0KICAgICAgICB4bWxIdHRwLnNldFJlcXVl
c3RIZWFkZXIoJ0lmLU1vZGlmaWVkLVNpbmNlJywgJ1dlZCwgOCBBdWcgMjAwNyAw
MDowMDowMCBHTVQnKTsNCiAgICAgICAgeG1sSHR0cC5zZW5kKG51bGwpOw0KICAg
ICAgICANCiAgICAgICAgLy8gU29tZSBicm93c2VycyBkb24ndCBmaXJlIHRoZSBv
bnJlYWR5c3RhdGVjaGFuZ2UgZXZlbnQgaGFuZGxlciBmb3Igc3luY2hyb25vdXMg
Y2FsbHMuDQogICAgICAgIC8vIE1hbnVhbGx5IGZpcmUgaXQgaGVyZSBpZiB0aGUg
ZXZlbnQgd2Fzbid0IGZpcmVkOg0KICAgICAgICBpZiAoIWJTeW5jaFJlYWR5U3Rh
dGVIYW5kbGVkKSB7DQogICAgICAgICAgICBmUmVhZHlTdGF0ZUNoYW5nZS5jYWxs
KCk7DQogICAgICAgIH0NCiAgICB9DQogICAgcmV0dXJuIHNSZXR1cm47DQp9Ow0K
DQoNCi8vIFJldHVybnMgYW4gYXBwcm9wcmlhdGUgWE1MSHR0cFJlcXVlc3Qgb2Jq
ZWN0IGJhc2VkIG9uIHRoZSBicm93c2VyJ3MgY2FwYWJpbGl0aWVzOg0KaHR0cEdl
dC5nZXROZXdYTUxIdHRwUmVxdWVzdCA9IGZ1bmN0aW9uKCkgew0KICAgIHZhciB4
bWxIdHRwID0gZmFsc2U7DQogICAgdHJ5IHsNCiAgICAgICAgaWYgKHdpbmRvdy5B
Y3RpdmVYT2JqZWN0KSB7DQogICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAg
ICAgIHhtbEh0dHAgPSBuZXcgQWN0aXZlWE9iamVjdCgiTXN4bWwyLlhNTEhUVFAi
KTsNCiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikgew0KICAgICAgICAgICAgICAg
IHhtbEh0dHAgPSBuZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTEhUVFAi
KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSBlbHNlIGlmICh3aW5kb3cuWE1M
SHR0cFJlcXVlc3QpIHsNCiAgICAgICAgICAgIHhtbEh0dHAgPSBuZXcgWE1MSHR0
cFJlcXVlc3QoKTsNCiAgICAgICAgICAgIGlmICh4bWxIdHRwLm92ZXJyaWRlTWlt
ZVR5cGUpIHsgeG1sSHR0cC5vdmVycmlkZU1pbWVUeXBlKCd0ZXh0L2h0bWwnKTsg
fQ0KICAgICAgICB9DQogICAgfSBjYXRjaChleCkge30NCiAgICByZXR1cm4geG1s
SHR0cDsNCn07DQoNCg0KLy8gVXNlZCB0byBidWlsZCB0aGUgVVJJIGZvciBhbiBo
dHRwIEdFVCBhamF4IHJlcXVlc3Q6DQpodHRwR2V0LmJ1aWxkVVJJID0gZnVuY3Rp
b24oJHNQYWdlKSB7DQogICAgdmFyIHNVUkkgPSBTdHJpbmcoKCRzUGFnZS50b0xv
d2VyQ2FzZSgpLmluZGV4T2YoJ2h0dHAnKSA9PSAwKSA/ICRzUGFnZSA6ICcvYWph
eC8nICsgJHNQYWdlKSArICcuYXNweD9ydD1qc29uJnJuPScgKyBTdHJpbmcoKG5l
dyBEYXRlKCkpLnZhbHVlT2YoKSkgKyBTdHJpbmcoTWF0aC5yYW5kb20oKSAqIDEw
MDApOw0KICAgIGZvciAodmFyIHggPSAxOyB4IDwgYXJndW1lbnRzLmxlbmd0aDsg
eCs9Mikgew0KICAgICAgICBzVVJJICs9ICcmJyArIGFyZ3VtZW50c1t4XSArICc9
JyArIGVuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbeCsxXSk7DQogICAgfQ0K
ICAgIHJldHVybiBzVVJJOw0KfTsNCg0KDQovLyBVc2VkIHRvIGJ1aWxkIHRoZSBV
UkkgZm9yIGEgdmFsaWRhdGVkIGh0dHAgUE9TVCBhamF4IHJlcXVlc3QgKGRlbGli
ZXJhdGVseSBjcnlwdGljKToNCmh0dHBHZXQuYnVpbGRQb3N0VVJJID0gZnVuY3Rp
b24oJHNQYWdlKSB7DQogICAgdmFyIHNVUkk9IGh0dHBHZXQuYnVpbGRVUkkoJHNQ
YWdlKTt2YXIgYVJOUz1zVVJJLnN1YnN0cmluZygNCiAgICBzVVJJLmxhc3RJbmRl
eE9mKCc9JykrMSkuc3BsaXQoJy4nKSxpQUw7dmFyIGlQUk49TWF0aC5jZWlsKA0K
ICAgIE1hdGgucmFuZG9tKCkgKiAxMDAwKSwgc1Q9J3QnLHNUcz0nJyxpUk8saVJM
PTk7dmFyIGlSTk89aVJPDQogICAgPU1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpp
UkwpKzIsc0U9J2UnLCBzVT0nXycsIHNNPSctJzt2YXINCiAgICBzQXJncz0ncms9
JytTdHJpbmcoKE51bWJlcihhUk5TWzBdKSVOdW1iZXIoYVJOU1sxXSkpK2lQUk4p
Ow0KICAgIHdoaWxlKC0taVJOTz4wKXNUcys9JyUnK1N0cmluZygzNzI5KzIwMy0z
OTMyKStpUkw7Zm9yKHZhciBpDQogICAgPTE7IGkgPCBhcmd1bWVudHMubGVuZ3Ro
O2krPSAyKXNBcmdzKz0nJicrYXJndW1lbnRzW2ldKyc9JysNCiAgICBlbmNvZGVV
UklDb21wb25lbnQoYXJndW1lbnRzW2krMV0pO3NBcmdzPXNVKyc9JytzVHMrJyYn
K3NBcmdzDQogICAgO2lBTD1zQXJncy5sZW5ndGg7IHJldHVybiB7dXJpOnNVUkks
eHJsOlsneCcudG9VcHBlckNhc2UoKSwNCiAgICAncicudG9VcHBlckNhc2UoKSsg
c0UrJ3F1JytzRSsncycrIHNULCdsJy50b1VwcGVyQ2FzZSgpK3NFKw0KICAgICdu
Zycrc1QrJ2gnXS5qb2luKHNNKSxhcmdzOnNBcmdzLHBybjpTdHJpbmcoaVBSTi1p
Uk8raUFMKX07DQp9Ow0KDQoNCi8vIFBhcnNlcyBhIEpTT04gcmVzcG9uc2UgdG8g
cmV0dXJuIGl0J3MgcmVwcmVzZW50ZWQgb2JqZWN0Og0KaHR0cEdldC5mcm9tSlNP
TiA9IGZ1bmN0aW9uKCRzUmVzdWx0KSB7DQogICAgdmFyIGJFcnJvclBhcnNpbmdS
ZXN1bHQgPSBmYWxzZTsNCiAgICBpZiAoJHNSZXN1bHQgIT0gbnVsbCkgew0KICAg
ICAgICB0cnkgew0KICAgICAgICAgICAgZXZhbCgndmFyIG9IdHRwR2V0UmVzdWx0
VmFsdWU9JyArICRzUmVzdWx0ICsgJzsnKTsNCiAgICAgICAgICAgIHJldHVybiBv
SHR0cEdldFJlc3VsdFZhbHVlOw0KICAgICAgICB9IGNhdGNoKGUpIHsgYkVycm9y
UGFyc2luZ1Jlc3VsdCA9IHRydWU7IH0NCiAgICB9DQogICAgaWYgKGNvbnNvbGUp
IHsgaWYgKGNvbnNvbGUubG9nKSBjb25zb2xlLmxvZygkc1Jlc3VsdCk7IH0NCiAg
ICByZXR1cm4ge2Vycm9yTnVtYmVyOjUwMCwgZXJyb3JUZXh0OidTb3JyeSwgd2Ug
aGFkIHNvbWUgdHJvdWJsZSB0YWxraW5nIHRvIHRoZSBzZXJ2ZXIuJyArIFN0cmlu
ZygoYkVycm9yUGFyc2luZ1Jlc3VsdCkgPyAnIFRoZSByZXNwb25zZSB3YXMgdW5l
eHBlY3RlZC4nIDogJyBQbGVhc2UgdHJ5IGFnYWluLicpLCB2YWx1ZTpudWxsfTsN
Cn07DQoNCg0KLy8gRnVuY3Rpb24gdG8gYmUgY2FsbGVkIGlmIHRoZSBhc3luY2hy
b25vdXMgY2FsbCB3aXNoZXMgdG8gZG8gbm90aGluZyB3aGVuIHRoZSByZXF1ZXN0
IGlzIGNvbXBsZXRlLg0KaHR0cEdldC5kb05vdGhpbmcgPSBmdW5jdGlvbigpe307
DQoNCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLyBFbmQgaHR0cEdldCBNZXRo
b2QvT2JqZWN0IE9iamVjdCBEZWZpbml0aW9uDQovLyoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKg0KDQoNCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLyBTdGFydCBXSFRB
ZE1hbmFnZXIgTWV0aG9kL09iamVjdCBEZWZpbml0aW9uDQovLyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKg0Kd2luZG93LldIVEFkTWFuYWdlciA9IGZ1bmN0aW9uKCkgew0K
ICAgIHRoaXMuX2FTbG90cyA9IFtdOw0KICAgIHRoaXMuX29MYXN0U2xvdCA9IHsn
MzAweDI1MCc6JycsJzcyOHg5MCc6JycsJzE2MHg2MDAnOicnLCcxNTB4MTUwJzon
J307DQogICAgdGhpcy5fb0xhc3RQaHIgPSB7fTsNCiAgICB0aGlzLl9vQWRzID0g
e307DQogICAgdGhpcy5fb1BocyA9IHt9Ow0KICAgIHRoaXMuYkJhc2VXcml0dGVu
ID0gZmFsc2U7DQogICAgdGhpcy5zR0FNQmFzZSA9IG5ldyBTdHJpbmcoKTsNCiAg
ICANCiAgICB0aGlzLlJlcG9zaXRpb24gPSBmdW5jdGlvbigpIHsNCiAgICAgICAg
Zm9yICh2YXIgeCA9IDA7IHggPCB0aGlzLl9hU2xvdHMubGVuZ3RoOyB4KyspIHsN
CiAgICAgICAgICAgIHRoaXMucmVwb3NpdGlvblNsb3QodGhpcy5fYVNsb3RzW3hd
KTsNCiAgICAgICAgfQ0KICAgIH07DQogICAgDQogICAgdGhpcy53cml0ZUJhc2Ug
PSBmdW5jdGlvbigpIHsNCiAgICAgICAgaWYgKHRoaXMuYkJhc2VXcml0dGVuKSBy
ZXR1cm47DQogICAgICAgIHRoaXMuYkJhc2VXcml0dGVuID0gdHJ1ZTsNCiAgICAg
ICAgdmFyIHNCYXNlID0gU3RyaW5nKHRoaXMuc0dBTUJhc2UpLlJlcGxhY2UoJ3tC
UkVBS0VSfScsJycpOw0KICAgICAgICB2YXIgYUJhc2VzID0gc0Jhc2Uuc3BsaXQo
Jzwvc2NyJysnaXB0PicpOw0KICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IGFC
YXNlcy5sZW5ndGggLSAxOyB4KyspIHsNCiAgICAgICAgICAgIGRvY3VtZW50Lndy
aXRlKGFCYXNlc1t4XSArICc8L3NjcicrJ2lwdD5cbicpOw0KICAgICAgICB9DQog
ICAgfTsNCiAgICANCiAgICB0aGlzLndyaXRlU2xvdCA9IGZ1bmN0aW9uKCRzU2xv
dCwkc1ByZUZpbGwpIHsNCiAgICAgICAgdGhpcy5fYVNsb3RzLnB1c2goJHNTbG90
KTsNCiAgICAgICAgdGhpcy5fb0xhc3RTbG90Wygkc1Nsb3QuaW5kZXhPZignMzAw
eDI1MCcpID4gLTEpID8gJzMwMHgyNTAnIDogKCRzU2xvdC5pbmRleE9mKCc3Mjh4
OTAnKSA+IC0xKSA/ICc3Mjh4OTAnIDogKCRzU2xvdC5pbmRleE9mKCcxNjB4NjAw
JykgPiAtMSkgPyAnMTYweDYwMCcgOiAnMTUweDE1MCddID0gKCRzUHJlRmlsbCA9
PSBudWxsKSA/ICcnIDogJHNTbG90Ow0KICAgICAgICBpZiAoJHNQcmVGaWxsID09
IG51bGwpIHsNCiAgICAgICAgICAgIHRoaXMud3JpdGVCYXNlKCk7DQogICAgICAg
ICAgICBkb2N1bWVudC53cml0ZShTdHJpbmcoJzxzY3tCUkVBS0VSfXJpcHQgdHlw
ZT1cInRleHQvamF2YXNje0JSRUFLRVJ9cmlwdFwiPlxuJyArICdHQV9nb29nbGVG
aWxsU2xvdCgiJyskc1Nsb3QrJyIpOycgKyAnXG48L3Nje0JSRUFLRVJ9cmlwdD4n
KS5SZXBsYWNlKCd7QlJFQUtFUn0nLCcnKSk7DQogICAgICAgIH0gZWxzZSB7DQog
ICAgICAgICAgICBkb2N1bWVudC53cml0ZShTdHJpbmcoJHNQcmVGaWxsKS5SZXBs
YWNlKCd7QlJFQUtFUn0nLCcnKSk7DQogICAgICAgIH0NCiAgICAgICAgc2V0VGlt
ZW91dCgnd2luZG93Lm9XSFRBZE1hbmFnZXIucmVwb3NpdGlvblNsb3QuYXBwbHko
d2luZG93Lm9XSFRBZE1hbmFnZXIsWyInKyRzU2xvdCsnIl0pOycsMTApOw0KICAg
IH07DQogICAgDQogICAgdGhpcy5tYWtlQmlnU2xvdCA9IGZ1bmN0aW9uKCRzU2l6
ZSkgew0KICAgICAgICB2YXIgc0xhc3RTbG90ID0gdGhpcy5fb0xhc3RTbG90WyRz
U2l6ZV07DQogICAgICAgIHN3aXRjaCAoJHNTaXplKSB7DQogICAgICAgICAgICBj
YXNlICc5NzR4MjUwJzoNCiAgICAgICAgICAgIGNhc2UgJzcyOHg5MCc6DQogICAg
ICAgICAgICAgICAgdmFyIG9TbG90cyA9IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1l
bnRzQnlDbGFzc05hbWUoJ2FkNzI4dG9wJyk7DQogICAgICAgICAgICAgICAgaWYg
KG9TbG90cy5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICAgICAgICAgIFlBSE9P
LnV0aWwuRG9tLnNldFN0eWxlKG9TbG90c1swXSwgJ2hlaWdodCcsIChhcmd1bWVu
dHMubGVuZ3RoID4gMSkgPyBweChhcmd1bWVudHNbMV0pIDogJzI1MHB4Jyk7DQog
ICAgICAgICAgICAgICAgICAgIFlBSE9PLnV0aWwuRG9tLnNldFN0eWxlKG9TbG90
c1swXSwgJ3dpZHRoJywgJzk3NHB4Jyk7DQogICAgICAgICAgICAgICAgICAgIGlm
ICghKHNMYXN0U2xvdCA9PSBudWxsIHx8IHNMYXN0U2xvdCA9PSAnJykpIHsgdGhp
cy5fb0xhc3RTbG90WyRzU2l6ZV0uYklzQmlnID0gdHJ1ZTsgfQ0KICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNh
c2UgJzMwMHg2MDAnOg0KICAgICAgICAgICAgY2FzZSAnMzAweDI1MCc6DQogICAg
ICAgICAgICAgICAgdmFyIG9TbG90cyA9IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1l
bnRzQnlDbGFzc05hbWUoJ2FkMzAwJyk7DQogICAgICAgICAgICAgICAgaWYgKG9T
bG90cy5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICAgICAgICAgIFlBSE9PLnV0
aWwuRG9tLnNldFN0eWxlKG9TbG90c1swXSwgJ2hlaWdodCcsIChhcmd1bWVudHMu
bGVuZ3RoID4gMSkgPyBweChhcmd1bWVudHNbMV0pIDogJzYwMHB4Jyk7DQogICAg
ICAgICAgICAgICAgICAgIGlmICghKHNMYXN0U2xvdCA9PSBudWxsIHx8IHNMYXN0
U2xvdCA9PSAnJykpIHsgdGhpcy5fb0xhc3RTbG90WyRzU2l6ZV0uYklzQmlnID0g
dHJ1ZTsgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBicmVh
azsNCiAgICAgICAgfQ0KICAgICAgICB0aGlzLlJlcG9zaXRpb24oKTsNCiAgICB9
Ow0KICAgIA0KICAgIHRoaXMuYmFja0ZpbGwgPSBmdW5jdGlvbigkc1NpemUpIHsN
CiAgICAgICAgdmFyIHNCYWNrZmlsbCA9IHRoaXMuX29MYXN0U2xvdFskc1NpemVd
Ow0KICAgICAgICBpZiAoIShzTGFzdFNsb3QgPT0gbnVsbCB8fCBzTGFzdFNsb3Qg
PT0gJycpKSB7DQogICAgICAgICAgICBpZiAodGhpcy5fb0xhc3RTbG90WyRzU2l6
ZV0uYklzQmlnKSB7DQogICAgICAgICAgICAgICAgc3dpdGNoICgkc1NpemUpIHsN
CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnOTc0eDI1MCc6DQogICAgICAgICAg
ICAgICAgICAgIGNhc2UgJzcyOHg5MCc6DQogICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgb1Nsb3RzID0gWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNz
TmFtZSgnYWQ3Mjh0b3AnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChv
U2xvdHMubGVuZ3RoID4gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFlBSE9PLnV0aWwuRG9tLnNldFN0eWxlKG9TbG90c1swXSwgJ2hlaWdodCcsICc5
MHB4Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgWUFIT08udXRpbC5E
b20uc2V0U3R5bGUob1Nsb3RzWzBdLCAnd2lkdGgnLCAnNzI4cHgnKTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vTGFzdFNsb3RbJHNTaXplXS5i
SXNCaWcgPSBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICBj
YXNlICczMDB4NjAwJzoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnMzAweDI1
MCc6DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgb1Nsb3RzID0gWUFIT08u
dXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYWQzMDAnKTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChvU2xvdHMubGVuZ3RoID4gMCkgew0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFlBSE9PLnV0aWwuRG9tLnNldFN0eWxl
KG9TbG90c1swXSwgJ2hlaWdodCcsICcyNTBweCcpOw0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMuX29MYXN0U2xvdFskc1NpemVdLmJJc0JpZyA9IGZh
bHNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
fQ0KICAgICAgICB9DQogICAgICAgIGlmIChzQmFja2ZpbGwgPT0gbnVsbCB8fCBz
QmFja2ZpbGwgPT0gJycpIHsNCiAgICAgICAgICAgIHN3aXRjaCgkc1NpemUpIHsN
CiAgICAgICAgICAgICAgICBjYXNlICczMDB4MjUwJzoNCiAgICAgICAgICAgICAg
ICAgICAgdGhpcy5fb0xhc3RTbG90WyRzU2l6ZV0gPSBzQmFja2ZpbGwgPSAnZ25v
X292ZXJmbG93X3Jvc18zMDB4MjUwJzsNCiAgICAgICAgICAgICAgICAgICAgYnJl
YWs7DQogICAgICAgICAgICAgICAgY2FzZSAnNzI4eDkwJzoNCiAgICAgICAgICAg
ICAgICAgICAgdGhpcy5fb0xhc3RTbG90WyRzU2l6ZV0gPSBzQmFja2ZpbGwgPSAn
Z25vX292ZXJmbG93X3Jvc183Mjh4OTAnOw0KICAgICAgICAgICAgICAgICAgICBi
cmVhazsNCiAgICAgICAgICAgICAgICBjYXNlICcxNjB4NjAwJzoNCiAgICAgICAg
ICAgICAgICAgICAgdGhpcy5fb0xhc3RTbG90WyRzU2l6ZV0gPSBzQmFja2ZpbGwg
PSAnZ25vX292ZXJmbG93X3Jvc18xNjB4NjAwJzsNCiAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAnMTUweDE1MCc6DQogICAg
ICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJu
Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGVsc2UgaWYgKHNCYWNrZmlsbC5p
bmRleE9mKCdnbm9fb3ZlcmZsb3cnKSA9PSAwKSB7DQogICAgICAgICAgICBzd2l0
Y2goJHNTaXplKSB7DQogICAgICAgICAgICAgICAgY2FzZSAnMzAweDI1MCc6DQog
ICAgICAgICAgICAgICAgICAgIHRoaXMuX29MYXN0U2xvdFskc1NpemVdID0gc0Jh
Y2tmaWxsID0gJ2x2bDNfcmVtbmFudF8zMDB4MjUwJzsNCiAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAnNzI4eDkwJzoNCiAg
ICAgICAgICAgICAgICAgICAgdGhpcy5fb0xhc3RTbG90WyRzU2l6ZV0gPSBzQmFj
a2ZpbGwgPSAnbHZsM19yZW1uYW50XzcyOHg5MCc7DQogICAgICAgICAgICAgICAg
ICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgJzE2MHg2MDAnOg0KICAg
ICAgICAgICAgICAgICAgICB0aGlzLl9vTGFzdFNsb3RbJHNTaXplXSA9IHNCYWNr
ZmlsbCA9ICdsdmwzX3JlbW5hbnRfMTYweDYwMCc7DQogICAgICAgICAgICAgICAg
ICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgJzE1MHgxNTAnOg0KICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgICAgICAgIHJldHVy
bjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSBlbHNlIGlmIChzQmFja2ZpbGwu
aW5kZXhPZignbHZsM19yZW1uYW50JykgPT0gMCkgew0KICAgICAgICAgICAgc0Jh
Y2tmaWxsID0gJyc7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB0aGlz
Ll9vTGFzdFNsb3RbJHNTaXplXSA9ICcnOw0KICAgICAgICB9DQogICAgICAgIGlm
IChzQmFja2ZpbGwgIT0gbnVsbCAmJiBzQmFja2ZpbGwgIT0gJycpIHsNCiAgICAg
ICAgICAgIHRoaXMud3JpdGVCYXNlKCk7DQogICAgICAgICAgICBkb2N1bWVudC53
cml0ZShTdHJpbmcoJzxzY3tCUkVBS0VSfXJpcHQgdHlwZT1cInRleHQvamF2YXNj
e0JSRUFLRVJ9cmlwdFwiPlxuJyArICdHQV9nb29nbGVGaWxsU2xvdCgiJytzQmFj
a2ZpbGwrJyIpOycgKyAnXG48L3Nje0JSRUFLRVJ9cmlwdD4nKS5SZXBsYWNlKCd7
QlJFQUtFUn0nLCcnKSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAv
LyBObyBiYWNrZmlsbCBhdmFpbGFibGUuDQogICAgICAgIH0NCiAgICB9Ow0KICAg
IA0KICAgIHRoaXMucmVwb3NpdGlvblNsb3QgPSBmdW5jdGlvbigkc1Nsb3QpIHsN
CiAgICAgICAgdmFyIG9BZCA9IHRoaXMuX29BZHNbJHNTbG90XSB8fCBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgncmFkXycgKyAkc1Nsb3QpOw0KICAgICAgICB2YXIg
b1BoID0gdGhpcy5fb1Boc1skc1Nsb3RdIHx8IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdhcGhfJyArICRzU2xvdCk7DQogICAgICAgIHZhciBvUGhyID0gWUFIT08u
dXRpbC5Eb20uZ2V0UmVnaW9uKG9QaCk7DQogICAgICAgIA0KICAgICAgICBpZiAo
dGhpcy5fb0xhc3RQaHJbJHNTbG90XSA9PSBudWxsKSB7DQogICAgICAgICAgICBv
QWQuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOw0KICAgICAgICAgICAgaWYg
KCRzU2xvdC5pbmRleE9mKCd0b3BfNzI4eDkwJykgPiAtMSkgew0KICAgICAgICAg
ICAgICAgIG9BZC5zdHlsZS56SW5kZXggPSAxMTsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIG9BZC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsNCiAgICAgICAg
ICAgIHRoaXMuX29BZHNbJHNTbG90XSA9IG9BZDsNCiAgICAgICAgICAgIHRoaXMu
X29QaHNbJHNTbG90XSA9IG9QaDsNCiAgICAgICAgfSBlbHNlIGlmIChvUGhyLnRv
cCA9PSB0aGlzLl9vTGFzdFBoclskc1Nsb3RdLnRvcCAmJiBvUGhyLmxlZnQgPT0g
dGhpcy5fb0xhc3RQaHJbJHNTbG90XS5sZWZ0KSB7DQogICAgICAgICAgICByZXR1
cm47DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHZhciBpWU9mZnNldCA9
IChZQUhPTy5lbnYudWEuaWUgPiAwICYmIFlBSE9PLmVudi51YS5pZSA8IDgpID8g
LTIgOiAwOw0KICAgICAgICB2YXIgaVhPZmZzZXQgPSAoWUFIT08uZW52LnVhLmll
ID4gMCAmJiBZQUhPTy5lbnYudWEuaWUgPCA4KSA/IC0yIDogMDsNCiAgICAgICAg
DQogICAgICAgIG9BZC5zdHlsZS50b3AgPSBTdHJpbmcoaVlPZmZzZXQgKyBvUGhy
LnRvcCArIG9QaC5zdHlsZS5wYWRkaW5nVG9wKSsncHgnOw0KICAgICAgICBvQWQu
c3R5bGUubGVmdCA9IFN0cmluZyhpWE9mZnNldCArIG9QaHIubGVmdCkrJ3B4JzsN
CiAgICAgICAgdGhpcy5fb0xhc3RQaHJbJHNTbG90XSA9IG9QaHI7DQogICAgfTsN
CiAgICANCiAgICB0aGlzLk9rVGhhdHNFbm91Z2hBZHMgPSBmdW5jdGlvbigpIHsN
CiAgICAgICAgdGhpcy5SZXBvc2l0aW9uKCk7DQogICAgICAgIFlBSE9PLnV0aWwu
RXZlbnQuYWRkTGlzdGVuZXIod2luZG93LCAncmVzaXplJywgdGhpcy5SZXBvc2l0
aW9uLCB0aGlzLCB0cnVlKTsNCiAgICAgICAgc2V0VGltZW91dCgnd2luZG93Lm9X
SFRBZE1hbmFnZXIuUmVwb3NpdGlvbi5hcHBseSh3aW5kb3cub1dIVEFkTWFuYWdl
cixbXSk7JywxMDAwKTsNCiAgICB9Ow0KICAgIA0KICAgIHRoaXMuc2V0U2tpbiA9
IGZ1bmN0aW9uKCRzU2tpbklEKSB7DQogICAgICAgIGRvY3VtZW50LmJvZHkuc3R5
bGUuYmFja2dyb3VuZENvbG9yID0gJyNGRkZGRkYnOw0KICAgICAgICBkb2N1bWVu
dC5ib2R5LnN0eWxlLmJhY2tncm91bmRJbWFnZSA9ICd1cmwoL2ltYWdlcy9hZC8n
ICsgJHNTa2luSUQgKyAnKSc7DQogICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUu
YmFja2dyb3VuZFJlcGVhdCA9ICduby1yZXBlYXQnOw0KICAgICAgICBkb2N1bWVu
dC5ib2R5LnN0eWxlLmJhY2tncm91bmRQb3NpdGlvbiA9ICd0b3AgY2VudGVyJzsN
CiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5iYWNrZ3JvdW5kQXR0YWNobWVu
dCA9ICdmaXhlZCc7DQogICAgICAgIC8vZG9jdW1lbnQuYm9keS5zdHlsZS50ZXh0
QWxpZ24gPSAnY2VudGVyJzsNCiAgICAgICAgdmFyIG9IdyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdoZWFkZXJXaWR0aCcpOw0KICAgICAgICBvSHcuc3R5bGUu
bWF4V2lkdGggPSAnMTAzNHB4JzsNCiAgICAgICAgb0h3LnN0eWxlLm1hcmdpbiA9
ICdhdXRvJzsNCiAgICB9Ow0KfTsNCndpbmRvdy5vV0hUQWRNYW5hZ2VyID0gbmV3
IHdpbmRvdy5XSFRBZE1hbmFnZXIoKTsNCi8vKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
DQovLyBFbmQgV0hUQWRNYW5hZ2VyIE1ldGhvZC9PYmplY3QgRGVmaW5pdGlvbg0K
Ly8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKio=
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline; filename=article_page.js
Content-Type: application/x-javascript; charset=utf-8; name=article_page.js
Content-Location: http://www.wonderhowto.com/js/article_page.js?v=0902102
Content-Transfer-Encoding: Base64
77u/Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIENvcHlyaWdodCAyMDA5IFdv
bmRlckhvd1RvLCBJbmMuDQovLyANCi8vIE9yaWdpb25hbCBBdXRob3I6ICAgIE1h
cmF0IEtob3VkYWJha2hzaGlldg0KLy8gTGFzdCBNb2RpZmllZCBCeTogICAgTWFy
YXQgS2hvdWRhYmFraHNoaWV2DQovLyBMYXN0IE1vZGlmaWVkOiAgICAgICAwNi8w
OC8yMDEwDQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQovLyBNYWtlIHN1cmUg
dGhlIHdodCBuYW1lc3BhY2UgZXhpc3RzOg0KWUFIT08ubmFtZXNwYWNlKCd3aHQn
KTsNCllBSE9PLm5hbWVzcGFjZSgnd2h0LmRvY1gnKTsNCg0KWUFIT08ud2h0LmRv
Y1guQXJ0aWNsZVBhZ2UgPSBmdW5jdGlvbigkc0RvY3VtZW50LCAkb1RlbXBsYXRl
cywgJGlkLCAkb0xvZ2dlZEluVXNlciwgJGlBVklELCAkc012dFNlc3Npb25JRCwg
JHNUaXRsZSwgJGJXT0QsICRpQXJ0aWNsZVR5cGUsICRpV29yZENvdW50V2l0aEJv
bnVzKSB7DQogICAgdGhpcy5faWQgPSAkaWQ7DQoJdGhpcy5fb0RvY3VtZW50ID0g
ZXZhbCgnKCcgKyAkc0RvY3VtZW50ICsgJyknKQ0KICAgIHRoaXMuX2FEb2NQYXJ0
cyA9IG5ldyBBcnJheSgpOw0KCXRoaXMuX29UZW1wbGF0ZXMgPSAkb1RlbXBsYXRl
czsNCgl0aGlzLl9vTG9nZ2VkSW5Vc2VyID0gJG9Mb2dnZWRJblVzZXI7DQoJdGhp
cy5faUFWSUQgPSAoJGlBVklEID09IG51bGwpID8gLTEgOiAkaUFWSUQ7DQoJdGhp
cy5fc012dFNlc3Npb25JRCA9ICgkc012dFNlc3Npb25JRCkgPyAkc012dFNlc3Np
b25JRCA6IDA7DQoJdGhpcy5fYUdyYWRlTGlua3MgPSBudWxsOw0KCXRoaXMuX3NU
aXRsZSA9ICRzVGl0bGU7DQoJdGhpcy5faUR1cmF0aW9uID0gMC41Ow0KCXRoaXMu
X2JXT0QgPSAkYldPRA0KCXRoaXMuX2lBcnRpY2xlVHlwZSA9ICgkaUFydGljbGVU
eXBlKSA/ICRpQXJ0aWNsZVR5cGUgOiAwOw0KCXRoaXMuX2lXb3JkQ291bnQgPSAo
JGlXb3JkQ291bnRXaXRoQm9udXMpID8gJGlXb3JkQ291bnRXaXRoQm9udXMgOiAw
Ow0KCQ0KICAgIHRoaXMuX29uUGFnZVJlYWR5ID0gZnVuY3Rpb24oKSB7DQoJCXRo
aXMuX2FEb2NQYXJ0cyA9IHRoaXMuX2FEb2NQYXJ0cy5jb25jYXQodGhpcy5fcmVn
aXN0ZXJHYWxsZXJpZXModGhpcy5fb0RvY3VtZW50LmRvY1BhcnRzKSk7DQoJCQkJ
DQoJCXRoaXMuX2FSVEVDaGVja0xpbmtzID0gWUFIT08udXRpbC5Eb20uZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZSgncnRlQ2hlY2snLCAnYScpOw0KCQl0aGlzLl9hR3Jh
ZGVMaW5rcyA9IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUo
J2dyYWRlQXJ0aWNsZScsICdhJyk7DQoJCXRoaXMuX2FGYXZvcml0ZUxpbmtzID0g
WUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbWFrZUZhdnxt
YWtlVW5GYXYnLCAnYScpOw0KCQl0aGlzLl9hTWFrZUhvdExpbmtzID0gWUFIT08u
dXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYXJ0aWNsZUhvdCcsICdh
Jyk7DQoJCXRoaXMuX2FTcG90bGlnaHRMaW5rcyA9IFlBSE9PLnV0aWwuRG9tLmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUoJ2FydGljbGVTcG90bGlnaHQnLCAnYScpOw0K
CQl0aGlzLl9hRGlmZlJhZGlvQnV0dG9ucyA9IFlBSE9PLnV0aWwuRG9tLmdldEVs
ZW1lbnRzQnlDbGFzc05hbWUoJ3JldkRpZmYnLCAnaW5wdXQnKTsNCgkJdGhpcy5f
YUNvbXBhcmVWZXJMaW5rcyA9IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1lbnRzQnlD
bGFzc05hbWUoJ2NvbXBhcmVWZXJzaW9ucycsICdhJyk7DQoJCXRoaXMuX2FEaWZm
TGlua3MgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdk
aWZmUmV2cycsICdhJyk7DQoJCXRoaXMuX2FSb2xsYmFja0xpbmtzID0gWUFIT08u
dXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncmV2Um9sbGJhY2snLCAn
YScpOw0KCQl0aGlzLl9hUHVibGlzaEFydGljbGVMaW5rcyA9IFlBSE9PLnV0aWwu
RG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3B1Ymxpc2hBcnRpY2xlJywgJ2En
KTsNCgkJdGhpcy5fYVVucHVibGlzaEVkaXRMaW5rcyA9IFlBSE9PLnV0aWwuRG9t
LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3VucHVibGlzaEVkaXQnLCAnYScpOw0K
CQl0aGlzLl9hRWRpdEFydGljbGVMaW5rcyA9IFlBSE9PLnV0aWwuRG9tLmdldEVs
ZW1lbnRzQnlDbGFzc05hbWUoJ2VkaXRBcnRpY2xlJywgJ2EnKTsNCgkJDQoJCVlB
SE9PLnV0aWwuRXZlbnQuYWRkTGlzdGVuZXIodGhpcy5fYVJURUNoZWNrTGlua3Ms
ICdjbGljaycsIHRoaXMuX29uUlRFQ2hlY2tDbGljaywgdGhpcywgdHJ1ZSk7DQoJ
CVlBSE9PLnV0aWwuRXZlbnQuYWRkTGlzdGVuZXIodGhpcy5fYUdyYWRlTGlua3Ms
ICdjbGljaycsIHRoaXMuX29uR3JhZGVDbGljaywgdGhpcywgdHJ1ZSk7DQoJCVlB
SE9PLnV0aWwuRXZlbnQuYWRkTGlzdGVuZXIodGhpcy5fYUZhdm9yaXRlTGlua3Ms
ICdjbGljaycsIHRoaXMuX29uRmF2b3JpdGVDbGljaywgdGhpcywgdHJ1ZSk7DQoJ
CVlBSE9PLnV0aWwuRXZlbnQuYWRkTGlzdGVuZXIodGhpcy5fYU1ha2VIb3RMaW5r
cywgJ2NsaWNrJywgdGhpcy5fb25NYWtlSG90Q2xpY2ssIHRoaXMsIHRydWUpOw0K
CQlZQUhPTy51dGlsLkV2ZW50LmFkZExpc3RlbmVyKHRoaXMuX2FTcG90bGlnaHRM
aW5rcywgJ2NsaWNrJywgdGhpcy5fb25TcG90bGlnaHRDbGljaywgdGhpcywgdHJ1
ZSk7DQoJCVlBSE9PLnV0aWwuRXZlbnQuYWRkTGlzdGVuZXIodGhpcy5fYURpZmZS
YWRpb0J1dHRvbnMsICdjbGljaycsIHRoaXMuX29uRGlmZlJhZGlvQ2xpY2ssIHRo
aXMsIHRydWUpOw0KCQlZQUhPTy51dGlsLkV2ZW50LmFkZExpc3RlbmVyKHRoaXMu
X2FDb21wYXJlVmVyTGlua3MsICdjbGljaycsIHRoaXMuX29uQ29tcGFyZVZlcnNp
b25zQ2xpY2ssIHRoaXMsIHRydWUpOw0KCQlZQUhPTy51dGlsLkV2ZW50LmFkZExp
c3RlbmVyKHRoaXMuX2FEaWZmTGlua3MsICdjbGljaycsIHRoaXMuX29uRGlmZkN1
cnJlbnRDbGljaywgdGhpcywgdHJ1ZSk7DQoJCVlBSE9PLnV0aWwuRXZlbnQuYWRk
TGlzdGVuZXIodGhpcy5fYVJvbGxiYWNrTGlua3MsICdjbGljaycsIHRoaXMuX29u
Um9sbGJhY2tDbGljaywgdGhpcywgdHJ1ZSk7DQoJCVlBSE9PLnV0aWwuRXZlbnQu
YWRkTGlzdGVuZXIodGhpcy5fYVB1Ymxpc2hBcnRpY2xlTGlua3MsICdjbGljaycs
IHRoaXMuX29uUHVibGlzaEFydGljbGVDbGljaywgdGhpcywgdHJ1ZSk7DQoJCVlB
SE9PLnV0aWwuRXZlbnQuYWRkTGlzdGVuZXIodGhpcy5fYVVucHVibGlzaEVkaXRM
aW5rcywgJ2NsaWNrJywgdGhpcy5fb25VbnB1Ymxpc2hFZGl0Q2xpY2ssIHRoaXMs
IHRydWUpOw0KCQlZQUhPTy51dGlsLkV2ZW50LmFkZExpc3RlbmVyKHRoaXMuX2FF
ZGl0QXJ0aWNsZUxpbmtzLCAnY2xpY2snLCB0aGlzLl9vbkVkaXRBcnRpY2xlQ2xp
Y2ssIHRoaXMsIHRydWUpOw0KCQkNCgkJdGhpcy5fdXBkYXRlV29yZENvdW50KCk7
DQoJCQ0KCQl0aGlzLl90b2dnbGVEaWZmUmFkaW9CdXR0b25zKCk7DQoJCQ0KCQkv
LyBDb252ZXJ0IGltYWdlcyB3aXRoICJoYXNMYXJnZSIgY2xhc3MgdG8gbGlua3MN
CgkJdGhpcy5fcHJvY2Vzc0xhcmdlSW1hZ2VzKCk7DQogICAgfTsNCiAgICANCiAg
ICANCiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgIC8vIEV2ZW50IEhh
bmRsZXJzDQogICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICAvLyBQZXJm
b3JtcyBjaGVjayBmb3IgUmljaCBUZXh0IEVkaXRvciBhdmFpbGFiaWxpdHkgYW5k
IGFjdHMgYWNjb3JkaW5nbHkNCiAgICB0aGlzLl9vblJURUNoZWNrQ2xpY2sgPSBm
dW5jdGlvbigkb0V2ZW50KSB7DQogICAgICAgIGlmICghWUFIT08udWIuYlJURVN1
cHBvcnRlZCkgew0KICAgICAgICAgICAgYWxlcnQoJ1NvcnJ5LCBidXQgZWRpdGlu
ZyBpbiB5b3VyIGJyb3dzZXIgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuIFBs
ZWFzZSB1c2Ugb25lIG9mIHRoZSBzdXBwb3J0ZWQgYnJvd3NlcnM6XG4gLSBJbnRl
cmVudCBFeHBsb3JlciA3IG9yIDhcbiAtIE1vemlsbGEgRmlyZWZveFxuIC0gQXBw
bGUgU2FmYXJpXG4gLSBHb29nbGUgQ2hyb21lJyk7DQogICAgICAgICAgICBZQUhP
Ty51dGlsLkV2ZW50LnN0b3BFdmVudCgkb0V2ZW50KTsNCiAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgIH07DQogICAgDQogICAgDQogICAg
Ly8gRmlyZWQgZXZlcnkgdGltZSB1c2VyIGNsaWNrcyAiRWRpdCINCiAgICB0aGlz
Ll9vbkVkaXRBcnRpY2xlQ2xpY2sgPSBmdW5jdGlvbigkb0V2ZW50KSB7DQogICAg
ICAgIGlmIChZQUhPTy5lbnYudWEuaWUgPj0gNiAmJiBZQUhPTy5lbnYudWEuaWUg
PCA3KSB7DQogICAgICAgICAgICBZQUhPTy51dGlsLkV2ZW50LnN0b3BFdmVudCgk
b0V2ZW50KTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgYWxlcnQoJ1NvcnJ5
LCBidXQgZWRpdGluZyBpcyBub3Qgc3VwcG9ydGVkIGZvciBJbnRlcm5ldCBFeHBs
b3JlciA2LicpOw0KICAgICAgICB9DQogICAgICAgIGVsc2UgaWYgKFlBSE9PLmVu
di51YS5vcGVyYSA+IDApIHsNCiAgICAgICAgICAgIFlBSE9PLnV0aWwuRXZlbnQu
c3RvcEV2ZW50KCRvRXZlbnQpOw0KICAgICAgICAgICAgDQogICAgICAgICAgICBh
bGVydCgnU29ycnksIGJ1dCBlZGl0aW5nIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGZv
ciBPcGVyYSBicm93c2Vycy4nKTsNCiAgICAgICAgfQ0KICAgIH07DQogICAgDQog
ICAgLy8gRmlyZWQgd2hlbiB1c2VyIGNsaWNrcyAiVW5wdWJsaXNoICYgRWRpdCIN
CiAgICB0aGlzLl9vblVucHVibGlzaEVkaXRDbGljayA9IGZ1bmN0aW9uKCRvRXZl
bnQpIHsNCiAgICAgICAgWUFIT08udXRpbC5FdmVudC5zdG9wRXZlbnQoJG9FdmVu
dCk7DQogICAgICAgIA0KICAgICAgICBpZiAodGhpcy5fYkJ1c3kpIHJldHVybjsN
CiAgICAgICAgDQogICAgICAgIHZhciBzTXNnID0gJ1Vuc3VibWl0dGluZyBhbiBh
cnRpY2xlIHdpbGwgcmVzZXQgYWxsIGl0cyBjdXJyZW50IHZvdGVzLlxuXG5Db250
aW51ZT8nOw0KICAgICAgICANCiAgICAgICAgaWYgKGNvbmZpcm0oc01zZykpIHsN
CiAgICAgICAgICAgIGh0dHBHZXQoaHR0cEdldC5idWlsZFBvc3RVUkkoJ1VwZGF0
ZUFydGljbGUnLCAnYXJ0aWNsZUlEJywgdGhpcy5faWQsICdzYXZlQXJ0aWNsZScs
IGZhbHNlLCAncHVibGlzaEFydGljbGUnLCBmYWxzZSwgJ3VucHVibGlzaEFydGlj
bGUnLCB0cnVlLCAnd29kJywgdGhpcy5fYldPRCksIHsNCiAgICAgICAgICAgICAg
ICBiYXNlOiB0aGlzDQogICAgICAgICAgICB9LCBmdW5jdGlvbihvUmVzdWx0LCBv
QXJncyl7DQogICAgICAgICAgICAgICAgb0FyZ3MuYmFzZS5fYkJ1c3kgPSBmYWxz
ZTsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAvLyBvUmVzdWx0
IG5vdyBoYXMgcmVzcG9uc2UgdGV4dCBmcm9tSlNPTi4gb0FyZ3MgY29udGFpbnMg
ZWxlbWVudHMgdGhhdCB3ZSBwYXNzZWQuDQogICAgICAgICAgICAgICAgLy8gQ2hl
Y2sgZm9yIGFueSBlcnJvcnMNCiAgICAgICAgICAgICAgICBpZiAob1Jlc3VsdC5l
cnJvck51bWJlciAhPSAwKSB7DQogICAgICAgICAgICAgICAgICAgIC8vIFNob3cg
dGhlIGVycm9yIG1lc3NhZ2UuDQogICAgICAgICAgICAgICAgICAgIG9XSFRBbGVy
dC5zaG93KG9SZXN1bHQuZXJyb3JUZXh0KTsNCiAgICAgICAgICAgICAgICAgICAg
DQogICAgICAgICAgICAgICAgICAgIFlBSE9PLnV0aWwuRXZlbnQuc3RvcEV2ZW50
KCRvRXZlbnQpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBl
bHNlIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gTGV0IHRoZSB1c2VyIGtub3cg
ZXZlcnl0aGluZyB3YXMgZmluZQ0KICAgICAgICAgICAgICAgICAgICBvV0hUQWxl
cnQuc2hvdygnVW5zdWJtaXR0ZWQgU3VjY2Vzc2Z1bGx5LiBSZWRpcmVjdGluZycp
Ow0KICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvKG9SZXN1bHQudmFsdWUp
Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0sIHRydWUpOw0KICAg
ICAgICB9DQogICAgfTsNCiAgICANCiAgICAvLyBGaXJlZCB3aGVuIHVzZXIgY2xp
Y2tzICJQdWJsaXNoIEFydGljbGUiDQogICAgdGhpcy5fb25QdWJsaXNoQXJ0aWNs
ZUNsaWNrID0gZnVuY3Rpb24oJG9FdmVudCkgew0KICAgICAgICBpZiAodGhpcy5f
YkJ1c3kpIHJldHVybjsNCiAgICAgICAgDQogICAgICAgIGlmICh0aGlzLl9pQXJ0
aWNsZVR5cGUgPT0gMSAmJiB0aGlzLl9pV29yZENvdW50IDwgMjUwKSB7DQogICAg
ICAgICAgICAvLyBOb3RpZnkgb2YgZXJyb3INCiAgICAgICAgICAgIG9XSFRBbGVy
dC5zaG93KCdTb3JyeSwgeW91ciBhcnRpY2xlIG11c3QgaGF2ZSBhdCBsZWFzdCAy
NTAgd29yZHMgYmVmb3JlIGl0IGNhbiBiZSBzdWJtaXR0ZWQuIFBsZWFzZSBlZGl0
IHRoZSBhcnRpY2xlIHRvIGFkZCBtb3JlIGRldGFpbHMgJiBpbWFnZXMuJyk7DQog
ICAgICAgICAgICANCiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
DQogICAgICAgICAgICAgICAgbmF2aWdhdGVUbyh3aW5kb3cubG9jYXRpb24udG9T
dHJpbmcoKSArICdlZGl0LycpOw0KICAgICAgICAgICAgfSwgMzAwMCk7DQogICAg
ICAgICAgICANCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgICAg
ICANCiAgICAgICAgdmFyIG9EYXRlRWx0ID0gWUFIT08udXRpbC5Eb20uZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZSgncHVibGlzaERhdGUnKTsNCiAgICAgICAgb0RhdGVF
bHQgPSAob0RhdGVFbHQubGVuZ3RoID4gMCkgPyBvRGF0ZUVsdFswXSA6IG51bGw7
DQogICAgICAgIHZhciBzRGlzcGxheURhdGUgPSBudWxsOw0KICAgICAgICBpZiAo
b0RhdGVFbHQgIT0gbnVsbCkgew0KICAgICAgICAgICAgc0Rpc3BsYXlEYXRlID0g
b0RhdGVFbHQuaW5uZXJIVE1MOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAg
ICBodHRwR2V0KGh0dHBHZXQuYnVpbGRQb3N0VVJJKCdVcGRhdGVBcnRpY2xlJywg
ICAnYXJ0aWNsZUlEJywgdGhpcy5faWQsIA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2F2ZUFydGljbGUn
LCBmYWxzZSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdwdWJsaXNoQXJ0aWNsZScsIHRydWUsIA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnd29kJywgdGhpcy5fYldPRCwgDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXNwbGF5RGF0ZScs
IHNEaXNwbGF5RGF0ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2FydGljbGVUeXBlJywgdGhpcy5faUFy
dGljbGVUeXBlKSwgew0KICAgICAgICAgICAgYmFzZTogdGhpcw0KICAgICAgICB9
LCBmdW5jdGlvbihvUmVzdWx0LCBvQXJncyl7DQogICAgICAgICAgICBvQXJncy5i
YXNlLl9iQnVzeSA9IGZhbHNlOw0KICAgICAgICAgICAgDQogICAgICAgICAgICAv
LyBvUmVzdWx0IG5vdyBoYXMgcmVzcG9uc2UgdGV4dCBmcm9tSlNPTi4gb0FyZ3Mg
Y29udGFpbnMgZWxlbWVudHMgdGhhdCB3ZSBwYXNzZWQuDQogICAgICAgICAgICAv
LyBDaGVjayBmb3IgYW55IGVycm9ycw0KICAgICAgICAgICAgaWYgKG9SZXN1bHQu
ZXJyb3JOdW1iZXIgIT0gMCkgew0KICAgICAgICAgICAgICAgIGlmIChvUmVzdWx0
LmVycm9yTnVtYmVyID09IDc0MDMpIHsgLy8gQXJ0aWNsZU1pc3NpbmdJbmZvDQog
ICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG8ob1Jlc3VsdC5lcnJvclRleHQp
Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlIHsNCiAg
ICAgICAgICAgICAgICAgICAgLy8gU2hvdyB0aGUgZXJyb3IgbWVzc2FnZS4NCiAg
ICAgICAgICAgICAgICAgICAgb1dIVEFsZXJ0LnNob3cob1Jlc3VsdC5lcnJvclRl
eHQpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgIC8vIExldCB0aGUgdXNlciBrbm93
IGV2ZXJ5dGhpbmcgd2FzIGZpbmUNCiAgICAgICAgICAgICAgICAvLyBvV0hUQWxl
cnQuc2hvdygnUHVibGlzaGVkIFN1Y2Nlc3NmdWxseS4gUmVkaXJlY3RpbmcnKTsN
CiAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvKG9SZXN1bHQudmFsdWUpOw0KICAg
ICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9Ow0KICAgIA0KICAgIC8vIEZp
cmVkIHdoZW4gdXNlciBjbGlja3MgIlJvbGxiYWNrIg0KICAgIHRoaXMuX29uUm9s
bGJhY2tDbGljayA9IGZ1bmN0aW9uKCRvRXZlbnQpIHsNCiAgICAgICAgaWYgKCFj
b25maXJtKCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcm9sbGJhY2sgdG8gdGhp
cyByZXZpc2lvbj8nKSkgcmV0dXJuOw0KICAgICAgICANCiAgICAgICAgdmFyIERv
bSA9IFlBSE9PLnV0aWwuRG9tOw0KICAgICAgICB2YXIgRXZlbnQgPSBZQUhPTy51
dGlsLkV2ZW50Ow0KICAgICAgICANCiAgICAgICAgdmFyIG9MaW5rID0gRXZlbnQu
Z2V0VGFyZ2V0KCRvRXZlbnQpOw0KICAgICAgICBpZiAoIURvbS5oYXNDbGFzcyhv
TGluaywgJ3JldlJvbGxiYWNrJykpIG9MaW5rID0gRG9tLmdldEFuY2VzdG9yQnlD
bGFzc05hbWUob0xpbmssICdyZXZSb2xsYmFjaycpOw0KICAgICAgICANCiAgICAg
ICAgdmFyIGlSZXZJRCA9IHBhcnNlSW50KGdldFByZWZpeGVkQ2xhc3NWYWx1ZShv
TGluaywgJ3JldklEJykpOw0KICAgICAgICANCiAgICAgICAgdGhpcy5fcm9sbGJh
Y2tUbyhpUmV2SUQpOw0KICAgIH07DQogICAgDQogICAgLy8gRmlyZWQgd2hlbiB1
c2VyIGNsaWNrcyAiQ3VycmVudCIgYnV0dG9uDQogICAgdGhpcy5fb25EaWZmQ3Vy
cmVudENsaWNrID0gZnVuY3Rpb24oJG9FdmVudCkgew0KICAgICAgICB2YXIgRG9t
ID0gWUFIT08udXRpbC5Eb207DQogICAgICAgIHZhciBFdmVudCA9IFlBSE9PLnV0
aWwuRXZlbnQ7DQogICAgICAgIA0KICAgICAgICB2YXIgb0xpbmsgPSBFdmVudC5n
ZXRUYXJnZXQoJG9FdmVudCk7DQogICAgICAgIGlmICghRG9tLmhhc0NsYXNzKG9M
aW5rLCAnZGlmZlJldnMnKSkgb0xpbmsgPSBEb20uZ2V0QW5jZXN0b3JCeUNsYXNz
TmFtZShvTGluaywgJ2RpZmZSZXZzJyk7DQogICAgICAgIHZhciBpRnJvbVJldklE
ID0gcGFyc2VJbnQoZ2V0UHJlZml4ZWRDbGFzc1ZhbHVlKG9MaW5rLCAnZnJvbVJl
dklEJykpOw0KICAgICAgICB2YXIgaVRvUmV2SUQgPSBwYXJzZUludChnZXRQcmVm
aXhlZENsYXNzVmFsdWUob0xpbmssICd0b1JldklEJykpOw0KICAgICAgICANCiAg
ICAgICAgdGhpcy5fZ2V0UmV2aXNpb25zKGlGcm9tUmV2SUQsIGlUb1JldklEKTsN
CiAgICB9Ow0KICAgIA0KICAgIC8vIEZpcmVkIHdoZW4gdXNlciBjbGlja3MgIkNv
bXBhcmUgVmVyc2lvbnMiIGJ1dHRvbg0KICAgIHRoaXMuX29uQ29tcGFyZVZlcnNp
b25zQ2xpY2sgPSBmdW5jdGlvbigkb0V2ZW50KSB7DQogICAgICAgIHZhciBpUmV2
MSA9IDA7DQogICAgICAgIHZhciBpUmV2MiA9IDA7DQogICAgICAgIA0KICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2FEaWZmUmFkaW9CdXR0b25zLmxl
bmd0aDsgaSsrKSB7DQogICAgICAgICAgICBpZiAodGhpcy5fYURpZmZSYWRpb0J1
dHRvbnNbaV0uY2hlY2tlZCkgew0KICAgICAgICAgICAgICAgIGlmIChpUmV2MSA9
PSAwKSBpUmV2MSA9IHBhcnNlSW50KGdldFByZWZpeGVkQ2xhc3NWYWx1ZSh0aGlz
Ll9hRGlmZlJhZGlvQnV0dG9uc1tpXSwgJ3JldklEJykpOw0KICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGlSZXYyID09IDApIGlSZXYyID0gcGFyc2VJbnQoZ2V0UHJl
Zml4ZWRDbGFzc1ZhbHVlKHRoaXMuX2FEaWZmUmFkaW9CdXR0b25zW2ldLCAncmV2
SUQnKSk7DQogICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAg
ICBicmVhazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICANCiAg
ICAgICAgdGhpcy5fZ2V0UmV2aXNpb25zKGlSZXYxLCBpUmV2Mik7DQogICAgfTsN
CiAgICANCiAgICAvLyBGaXJlZCB3aGVuIHVzZXIgY2xpY2tzIG9uIG9uZSBvZiB0
aGUgZGlmZiBSYWRpbyBidXR0b25zDQogICAgdGhpcy5fb25EaWZmUmFkaW9DbGlj
ayA9IGZ1bmN0aW9uKCRvRXZlbnQpIHsNCiAgICAgICAgdmFyIG9SYWRpbyA9IFlB
SE9PLnV0aWwuRXZlbnQuZ2V0VGFyZ2V0KCRvRXZlbnQpOw0KICAgICAgICB2YXIg
RG9tID0gWUFIT08udXRpbC5Eb207DQogICAgICAgIHZhciBFdmVudCA9IFlBSE9P
LnV0aWwuRXZlbnQ7DQogICAgICAgIA0KICAgICAgICBpZiAoIURvbS5oYXNDbGFz
cyhvUmFkaW8sICdyZXZEaWZmJykpIG9SYWRpbyA9IERvbS5nZXRBbmNlc3RvckJ5
Q2xhc3NOYW1lKCdyZXZEaWZmJyk7DQogICAgICAgIA0KICAgICAgICB2YXIgc0Ns
YXNzVG9DaGVjayA9IERvbS5oYXNDbGFzcyhvUmFkaW8sICdyZXZOZXcnKSA/ICdy
ZXZOZXcnIDogJ3Jldk9sZCc7DQogICAgICAgIA0KICAgICAgICAvLyBVbmNoZWNr
IGFsbCBvdGhlcnMNCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9h
RGlmZlJhZGlvQnV0dG9ucy5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgaWYg
KERvbS5oYXNDbGFzcyh0aGlzLl9hRGlmZlJhZGlvQnV0dG9uc1tpXSwgc0NsYXNz
VG9DaGVjaykpIHsNCiAgICAgICAgICAgICAgICBpZiAodGhpcy5fYURpZmZSYWRp
b0J1dHRvbnNbaV0gIT0gb1JhZGlvKSB0aGlzLl9hRGlmZlJhZGlvQnV0dG9uc1tp
XS5jaGVja2VkID0gJyc7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAg
ICAgDQogICAgICAgIHRoaXMuX3RvZ2dsZURpZmZSYWRpb0J1dHRvbnMoKTsNCiAg
ICB9Ow0KICAgIA0KICAgIA0KICAgIC8vIFRPRE86IE1vdmUgdG8gdGhlIHJpZ2h0
IHNlY3Rpb24NCiAgICAvLyBSb2xscyBiYWNrIHRvIHRoZSBzcGVjaWZpZWQgcmV2
aXNpb24gaWQNCiAgICB0aGlzLl9yb2xsYmFja1RvID0gZnVuY3Rpb24oJGlSZXZJ
RCkgew0KICAgICAgICAvLyBNYWtlIEFKQVggY2FsbCB0byBnZXQgZW1iZWQgdGFn
IGZyb20gdGhlIHNlcnZlciBhbmQgc2F2ZSBpdCBsb2NhbGx5DQogICAgICAgIGh0
dHBHZXQoaHR0cEdldC5idWlsZFBvc3RVUkkoJ0NvbXBhcmVSb2xsYmFja1Jldmlz
aW9ucycsICdyb2xsYmFjaycsIHRydWUsICdhcnRpY2xlSUQnLCB0aGlzLl9pZCwg
J3JvbGxiYWNrUmV2SUQnLCAkaVJldklEKSwge2Jhc2U6IHRoaXN9LA0KICAgICAg
ICBmdW5jdGlvbihvUmVzdWx0LCBvQXJncyl7DQogICAgICAgICAgICAvLyBDaGVj
ayBmb3IgYW55IGVycm9ycw0KICAgICAgICAgICAgaWYgKG9SZXN1bHQuZXJyb3JO
dW1iZXIgIT0gMCkgew0KICAgICAgICAgICAgICAgIC8vIFNob3cgdGhlIGVycm9y
IG1lc3NhZ2UuDQogICAgICAgICAgICAgICAgb1dIVEFsZXJ0LnNob3cob1Jlc3Vs
dC5lcnJvclRleHQpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7
DQogICAgICAgICAgICAgICAgLy8gU2luY2UgZXZlcnl0aGluZyB3ZSBvaywgcmVs
b2FkIHRoZSBwYWdlDQogICAgICAgICAgICAgICAgb1dIVEFsZXJ0LnNob3coJ1Jl
bG9hZGluZycpOw0KICAgICAgICAgICAgICAgIHJlZnJlc2goKTsNCiAgICAgICAg
ICAgIH0NCiAgICAgICAgfSk7DQogICAgfTsNCiAgICANCiAgICB0aGlzLl9nZXRS
ZXZpc2lvbnMgPSBmdW5jdGlvbigkaUZyb21SZXZJRCwgJGlUb1JldklEKSB7DQog
ICAgICAgIC8vIENsZWFyIGlubmVyIEhUTUwNCiAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2RpZmZEb2MnKS5pbm5lckhUTUwgPSAnJzsNCiAgICAgICAg
DQogICAgICAgIC8vIE1ha2UgQUpBWCBjYWxsIHRvIGdldCBlbWJlZCB0YWcgZnJv
bSB0aGUgc2VydmVyIGFuZCBzYXZlIGl0IGxvY2FsbHkNCiAgICAgICAgaHR0cEdl
dChodHRwR2V0LmJ1aWxkUG9zdFVSSSgnQ29tcGFyZVJvbGxiYWNrUmV2aXNpb25z
JywgJ3JvbGxiYWNrJywgZmFsc2UsICdhcnRpY2xlSUQnLCB0aGlzLl9pZCwgJ2Zy
b21SZXZJRCcsICRpRnJvbVJldklELCAndG9SZXZJRCcsICRpVG9SZXZJRCksIHti
YXNlOiB0aGlzfSwNCiAgICAgICAgZnVuY3Rpb24ob1Jlc3VsdCwgb0FyZ3Mpew0K
ICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGFueSBlcnJvcnMNCiAgICAgICAgICAg
IGlmIChvUmVzdWx0LmVycm9yTnVtYmVyICE9IDApIHsNCiAgICAgICAgICAgICAg
ICAvLyBTaG93IHRoZSBlcnJvciBtZXNzYWdlLg0KICAgICAgICAgICAgICAgIG9X
SFRBbGVydC5zaG93KG9SZXN1bHQuZXJyb3JUZXh0KTsNCiAgICAgICAgICAgIH0N
CiAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgIC8vIFNpbmNlIGV2
ZXJ5dGhpbmcgd2Ugb2ssIHJlbG9hZCB0aGUgcGFnZQ0KICAgICAgICAgICAgICAg
IG9BcmdzLmJhc2UuX2NvbXBhcmVSZXZpc2lvbnMuYXBwbHkob0FyZ3MuYmFzZSwg
WyRpRnJvbVJldklELCAkaVRvUmV2SUQsIG9SZXN1bHQudmFsdWVdKTsNCiAgICAg
ICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfTsNCiAgICANCiAgICAvLyBDb21w
YXJlcyB0d28gcmV2aXNpb25zLiBTZWUgQ29tcGFyZVJvbGxiYWNrUmV2aXNpb25z
IGFqYXggcGFnZSBmb3IgdGhlIGxpc3Qgb2YgYXJndW1lbnRzDQogICAgdGhpcy5f
Y29tcGFyZVJldmlzaW9ucyA9IGZ1bmN0aW9uKCRpRnJvbVJldklELCAkaVRvUmV2
SUQsICRvVmFsKSB7DQogICAgICAgIHZhciBEb20gPSBZQUhPTy51dGlsLkRvbTsN
CiAgICAgICAgDQogICAgICAgIHZhciBvQ29tcGFyZXIgPSBuZXcgWUFIT08ud2h0
LmRvY1guRG9jWENvbXBhcmUoKTsNCgkJdHJ5IHsNCgkJCW9Db21wYXJlci5jb21w
YXJlQW5kU2hvdygkb1ZhbCk7DQoJCX0gY2F0Y2ggKGVycikgey8qREVCVUcqLyBw
cmludERlYnVnKCdFUlIgMjA3OiAnICsgZXJyLm1lc3NhZ2UpOyB9DQoJCQ0KCQkv
LyBTZXQgTGlzdGVuZXJzDQogICAgICAgIHZhciBhRnJvbURvY1BhcnRzID0gdGhp
cy5fcmVnaXN0ZXJHYWxsZXJpZXMoJG9WYWwucGFydHNbMl0uZG9jUGFydHMpOw0K
ICAgICAgICB2YXIgYVRvRG9jUGFydHMgPSB0aGlzLl9yZWdpc3RlckdhbGxlcmll
cygkb1ZhbC5wYXJ0c1szXS5kb2NQYXJ0cykNCiAgICAgICAgDQogICAgICAgIC8v
IENvbmNhdGluYXRlIGJvdGggc2V0cw0KCQlpZiAoYUZyb21Eb2NQYXJ0cy5sZW5n
dGggPiAwIHx8IGFUb0RvY1BhcnRzLmxlbmd0aCA+IDApIHsNCgkJCXRoaXMuX2FE
b2NQYXJ0cyA9IFtdOw0KCQkJdGhpcy5fYURvY1BhcnRzID0gYUZyb21Eb2NQYXJ0
cy5jb25jYXQoYVRvRG9jUGFydHMpOw0KCQl9DQogICAgfTsNCiAgICANCiAgICAv
LyBUb2dnbGVzIHJlYWRpbyBidXR0b25zDQogICAgdGhpcy5fdG9nZ2xlRGlmZlJh
ZGlvQnV0dG9ucyA9IGZ1bmN0aW9uKCkgew0KICAgICAgICB2YXIgRG9tID0gWUFI
T08udXRpbC5Eb207DQogICAgICAgIHZhciBFdmVudCA9IFlBSE9PLnV0aWwuRXZl
bnQ7DQogICAgICAgIA0KICAgICAgICAvLyBIaWRlL3Nob3cgcHJvcGVyIGVsdHMN
CiAgICAgICAgdmFyIGJOZXdSZWFjaGVkID0gZmFsc2U7DQogICAgICAgIHZhciBi
T2xkUmVhY2hlZCA9IGZhbHNlOw0KICAgICAgICAgICAgDQogICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdGhpcy5fYURpZmZSYWRpb0J1dHRvbnMubGVuZ3RoOyBp
KyspIHsNCiAgICAgICAgICAgIGlmIChEb20uaGFzQ2xhc3ModGhpcy5fYURpZmZS
YWRpb0J1dHRvbnNbaV0sICdyZXZPbGQnKSkgew0KICAgICAgICAgICAgICAgIHZh
ciBzVmlzID0gKGJOZXdSZWFjaGVkKSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nOw0K
ICAgICAgICAgICAgICAgIERvbS5zZXRTdHlsZSh0aGlzLl9hRGlmZlJhZGlvQnV0
dG9uc1tpXSwgJ3Zpc2liaWxpdHknLCBzVmlzKTsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIA0KICAgICAgICAgICAgaWYgKERvbS5oYXNDbGFzcyh0aGlzLl9h
RGlmZlJhZGlvQnV0dG9uc1tpXSwgJ3Jldk5ldycpKSB7DQogICAgICAgICAgICAg
ICAgdmFyIHNWaXMgPSAoYk9sZFJlYWNoZWQpID8gJ2hpZGRlbicgOiAndmlzaWJs
ZSc7DQogICAgICAgICAgICAgICAgRG9tLnNldFN0eWxlKHRoaXMuX2FEaWZmUmFk
aW9CdXR0b25zW2ldLCAndmlzaWJpbGl0eScsIHNWaXMpOw0KICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgDQogICAgICAgICAgICBpZiAodGhpcy5fYURpZmZSYWRp
b0J1dHRvbnNbaV0uY2hlY2tlZCkgew0KICAgICAgICAgICAgICAgIGlmIChEb20u
aGFzQ2xhc3ModGhpcy5fYURpZmZSYWRpb0J1dHRvbnNbaV0sICdyZXZOZXcnKSkg
Yk5ld1JlYWNoZWQgPSB0cnVlOw0KICAgICAgICAgICAgICAgIGlmIChEb20uaGFz
Q2xhc3ModGhpcy5fYURpZmZSYWRpb0J1dHRvbnNbaV0sICdyZXZPbGQnKSkgYk9s
ZFJlYWNoZWQgPSB0cnVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAg
fTsNCiAgICAvLyBFTkQgVE9ETzogTW92ZSB0byB0aGUgcmlnaHQgc2VjdGlvbg0K
ICAgIA0KICAgIC8vIEZpcmVkIHdoZW4gdXNlciBjbGlja3MgIlNwb3RsaWdodCIg
bGluaw0KICAgIHRoaXMuX29uU3BvdGxpZ2h0Q2xpY2sgPSBmdW5jdGlvbigkb0V2
ZW50KSB7DQogICAgICAgIGlmICghdGhpcy5fYlNwb3RsaWdodExvYWRlZCkgew0K
ICAgICAgICAgICAgdGhpcy5fbG9hZFNwb3RsaWdodENvbnRyb2woKTsNCiAgICAg
ICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgdmFy
IGlIZWlnaHQ7DQoJCXZhciBvQ29udGFpbmVyID0gWUFIT08udXRpbC5Eb20uZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZSgnZmVhdHVyZVZpZGVvQ29udGFpbmVyJywgJ2Rp
dicpWzBdOw0KCQl2YXIgb0ludGVybmFsRWx0ID0gWUFIT08udXRpbC5Eb20uZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZSgnZmVhdHVyZVZpZGVvSW50ZXJuYWwnLCAnZGl2
Jywgb0NvbnRhaW5lcilbMF07DQoJCQ0KCQlpZiAodGhpcy5fYkZlYXR1cmVBcnRp
Y2xlT3Blbikgew0KCQkJaUhlaWdodCA9IDA7DQoJCQl0aGlzLl9iRmVhdHVyZUFy
dGljbGVPcGVuID0gZmFsc2U7DQoJCX0NCgkJZWxzZSB7DQoJCQlpSGVpZ2h0ID0g
b0ludGVybmFsRWx0Lm9mZnNldEhlaWdodDsNCgkJCXRoaXMuX2JGZWF0dXJlQXJ0
aWNsZU9wZW4gPSB0cnVlOw0KCQl9DQoJCQ0KCQl2YXIgb0FuaW1Ub2dnbGUgPSBu
ZXcgWUFIT08udXRpbC5BbmltKG9Db250YWluZXIsIHtoZWlnaHQ6IHsgdG86IGlI
ZWlnaHR9IH0sIHRoaXMuX2lEdXJhdGlvbiwgWUFIT08udXRpbC5FYXNpbmcuZWFz
ZU91dCk7DQoJCW9BbmltVG9nZ2xlLmFuaW1hdGUoKTsNCiAgICB9Ow0KICAgIA0K
ICAgIA0KICAgIC8vIEluaXRpYWxpemVzIEZlYXR1cmUgQXJ0aWNsZSBjb250cm9s
IGFuZCByZWdpc3RlcnMgYXBwcm9wcmlhdGUgZXZlbnQgaGFuZGxlcnMNCgl0aGlz
Ll9pbml0U3BvdGxpZ2h0QXJ0aWNsZSA9IGZ1bmN0aW9uKCRvRmVhdHVyZUFydGlj
bGVDb250cm9sKSB7DQoJCXZhciBvU3BvdGxpZ2h0QXJlYSA9IFlBSE9PLnV0aWwu
RG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3Nwb3RsaWdodEFyZWEnLCAnZGl2
Jyk7DQoJCWlmIChvU3BvdGxpZ2h0QXJlYS5sZW5ndGggPT0gMCkgcmV0dXJuOw0K
CQlvU3BvdGxpZ2h0QXJlYSA9IG9TcG90bGlnaHRBcmVhWzBdOw0KCQkNCgkJdmFy
IG9GZWF0dXJlQXJ0aWNsZVBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOw0KCQl2YXIgb0ZlYXR1cmVBcnRpY2xlID0gbnVsbDsNCgkJDQoJCS8v
IE9idGFpbiB0aGUgbmV3IGNvbnRyb2wgYXMgSFRNTCBlbGVtZW50DQoJCW9GZWF0
dXJlQXJ0aWNsZVBhcmVudC5pbm5lckhUTUwgPSAkb0ZlYXR1cmVBcnRpY2xlQ29u
dHJvbC5odG1sLnRyaW0oKTsNCgkJDQoJCWlmIChvRmVhdHVyZUFydGljbGVQYXJl
bnQuY2hpbGROb2Rlcy5sZW5ndGggPT0gMCkgLypTb21ldGhpbmcgYmFkIGhhcHBl
bmVkKi8gcmV0dXJuOw0KCQkNCgkJb0ZlYXR1cmVBcnRpY2xlID0gb0ZlYXR1cmVB
cnRpY2xlUGFyZW50LmZpcnN0Q2hpbGQ7DQoJCW9GZWF0dXJlQXJ0aWNsZVBhcmVu
dC5yZW1vdmVDaGlsZChvRmVhdHVyZUFydGljbGUpOw0KCQkNCgkJLy8gQWRkIGNo
aWxkDQoJCW9TcG90bGlnaHRBcmVhLmFwcGVuZENoaWxkKG9GZWF0dXJlQXJ0aWNs
ZSk7DQoJCQ0KCQl0aGlzLl9iU3BvdGxpZ2h0TG9hZGVkID0gdHJ1ZTsNCgkJDQoJ
CS8vIEFzc2lnbiBldmVudCBsaXN0ZW5lcnMNCgkJdGhpcy5fYUZlYXR1cmVBcnRp
Y2xlRG9uZSA9IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUo
J2ZlYXR1cmVWaWRlb0RvbmUnLCAnaW5wdXQnKTsNCgkJdGhpcy5fYUZlYXR1cmVB
cnRpY2xlRGVzY3JpcHRpb24gPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKCdmZWF0dXJlZFZpZGVvRGVzY3JpcHRpb24nLCAndGV4dGFyZWEn
KTsNCgkJdGhpcy5fYVVwbG9hZEZlYXR1cmVkU2NyZWVuZ3JhYiA9ICBZQUhPTy51
dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd1cGxvYWRGZWF0dXJlZFZp
ZGVvSW1hZ2UnLCAnYScpOw0KCQkNCgkJdGhpcy5fY2FwdHVyZUV2ZW50cyh0aGlz
Ll9hRmVhdHVyZUFydGljbGVEb25lLCAnY2xpY2snLCB0aGlzLl9vbkZlYXR1cmVB
cnRpY2xlRG9uZUNsaWNrKTsNCgkJdGhpcy5fY2FwdHVyZUV2ZW50cyh0aGlzLl9h
RmVhdHVyZUFydGljbGVEZXNjcmlwdGlvbiwgJ2NoYW5nZScsIHRoaXMuX29uRmVh
dHVyZUFydGljbGVDaGFuZ2UpOw0KCQl0aGlzLl9jYXB0dXJlRXZlbnRzKHRoaXMu
X2FVcGxvYWRGZWF0dXJlZFNjcmVlbmdyYWIsICdjbGljaycsIHRoaXMuX29uVXBs
b2FkSW1hZ2VDbGljayk7DQoJCQ0KCQl0aGlzLl9vblNwb3RsaWdodENsaWNrKHt9
KTsNCgl9Ow0KCQ0KCQ0KCS8vIEZpcmVkIHdoZW4gdXNlciB0cmllcyB0byB1cGxv
YWQgYW4gaW1hZ2UgZm9yIHNwb3RsaWdodGVkIGFydGljbGUNCgl0aGlzLl9vblVw
bG9hZEltYWdlQ2xpY2sgPSBmdW5jdGlvbigkb0V2ZW50KSB7DQoJICAgIFlBSE9P
LnV0aWwuRXZlbnQuc3RvcEV2ZW50KCRvRXZlbnQpOw0KICAgICAgICBpZiAoIXNl
bGYub1BhZ2Uub0xvZ2dlZEluVXNlci5pc0FkbWluKSB7DQogICAgICAgICAgICB0
aGlzLnNob3dMb2dpblNpZ251cEZvcm0oJ1BsZWFzZSBsb2dpbiBhcyBhIEN1cmF0
b3Igb3IgQWRtaW5pc3RyYXRvciB0byB1cGxvYWQgYSBuZXcgaW1hZ2UuJyk7DQog
ICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAg
IHZhciBvTGluayA9IFlBSE9PLnV0aWwuRXZlbnQuZ2V0VGFyZ2V0KCRvRXZlbnQp
Ow0KICAgICAgICBpZiAoIVlBSE9PLnV0aWwuRG9tLmhhc0NsYXNzKG9MaW5rLCAn
dXBsb2FkRmVhdHVyZWRWaWRlb0ltYWdlJykpIG9MaW5rID0gWUFIT08udXRpbC5E
b20uZ2V0QW5jZXN0b3JCeUNsYXNzTmFtZShvTGluaywgJ3VwbG9hZEZlYXR1cmVk
VmlkZW9JbWFnZScpOw0KICAgICAgICB2YXIgaVZpZGVvSUQgPSBnZXRQcmVmaXhl
ZENsYXNzVmFsdWUob0xpbmssICd2aWRlb0lEJyk7DQogICAgICAgIHZhciBpRmVh
dHVyZWRWaWRlb0lEID0gZ2V0UHJlZml4ZWRDbGFzc1ZhbHVlKG9MaW5rLCAnZmVh
dHVyZWRWaWRlb0lEJyk7DQogICAgICAgIHZhciBpVXNlcklEID0gZ2V0UHJlZml4
ZWRDbGFzc1ZhbHVlKG9MaW5rLCAndXNlcklEJyk7DQogICAgICAgIHZhciBpUHJv
bW9DbGllbnRJRCA9IGdldFByZWZpeGVkQ2xhc3NWYWx1ZShvTGluaywgJ3Byb21v
Q2xpZW50SUQnKTsNCiAgICAgICAgdmFyIGlQbGF5bGlzdElEID0gZ2V0UHJlZml4
ZWRDbGFzc1ZhbHVlKG9MaW5rLCAncGxheWxpc3RJRCcpOw0KICAgICAgICB2YXIg
aUNhdGVnb3J5SUQgPSBnZXRQcmVmaXhlZENsYXNzVmFsdWUob0xpbmssICdjYXRl
Z29yeUlEJyk7DQogICAgICAgIHZhciBpU3ViQ2F0ZWdvcnlJRCA9IGdldFByZWZp
eGVkQ2xhc3NWYWx1ZShvTGluaywgJ3N1YkNhdGVnb3J5SUQnKTsNCiAgICAgICAg
dmFyIHNHcmFwaGljSUQgPSBnZXRQcmVmaXhlZENsYXNzVmFsdWUob0xpbmssICdn
cmFwaGljSUQnKTsNCiAgICAgICAgdmFyIGlGZWF0dXJlZEFydGljbGVJRCA9IGdl
dFByZWZpeGVkQ2xhc3NWYWx1ZShvTGluaywgJ2ZlYXR1cmVkQXJ0aWNsZUlEJyk7
DQogICAgICAgIHZhciBiU21hbGwgPSBmYWxzZTsNCiAgICAgICAgDQogICAgICAg
IHNlbGYub1BhZ2UuX2F0dGFjaFVwbG9hZEltYWdlRm9ybSgpOw0KICAgICAgICBz
ZWxmLm9QYWdlLl9zaG93Rm9ybSgnVXBsb2FkSW1hZ2UnLCB0cnVlLCB7J2lWaWRl
b0lEJzppVmlkZW9JRCwnaUZlYXR1cmVkVmlkZW9JRCc6aUZlYXR1cmVkVmlkZW9J
RCwnaUZlYXR1cmVkQXJ0aWNsZUlEJzppRmVhdHVyZWRBcnRpY2xlSUQsJ2lVc2Vy
SUQnOmlVc2VySUQsJ2lQcm9tb0NsaWVudElEJzppUHJvbW9DbGllbnRJRCwnaVBs
YXlsaXN0SUQnOmlQbGF5bGlzdElELCdpQ2F0ZWdvcnlJRCc6aUNhdGVnb3J5SUQs
J2lTdWJDYXRlZ29yeUlEJzppU3ViQ2F0ZWdvcnlJRCwnc0dyYXBoaWNJRCc6c0dy
YXBoaWNJRCwnYlNtYWxsJzpiU21hbGx9KTsNCgl9Ow0KCQ0KCQ0KCS8vIFRPRE86
IE1vdmUgdG8gdGhlIHJpZ2h0IHNlY3Rpb24NCgkvLyBVcGRhdGVzIGRpc3BsYXll
ZCBzY3JlZW4gZ3JhYg0KICAgIHRoaXMudXBkYXRlQXJ0aWNsZVNjcmVlbkdyYWIg
PSBmdW5jdGlvbigkc1NjcmVlbkdyYWIpIHsNCiAgICAgICAgdmFyIG9JbWFnZUhv
bGRlciA9IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3Zp
ZGVvSW1hZ2UnLCAnZGl2Jyk7DQogICAgICAgIGlmIChvSW1hZ2VIb2xkZXIubGVu
Z3RoID09IDApIHJldHVybjsNCiAgICAgICAgb0ltYWdlSG9sZGVyID0gb0ltYWdl
SG9sZGVyWzBdOw0KICAgICAgICANCiAgICAgICAgdmFyIHNJbWFnZUVsZW1lbnQg
PSAnPGltZyB3aWR0aD0iMzAwIiBoZWlnaHQ9IjE1MCIgYWx0PSIiIHNyYz0iL3Nj
cmVlbmdyYWJzLycgKyAkc1NjcmVlbkdyYWIgKyAnIiAvPic7DQogICAgICAgIHNJ
bWFnZUVsZW1lbnQgKz0gJzxhIGhyZWY9ImphdmFzY3JpcHQ6Ly8gVXBsb2FkIE5l
dyBJbWFnZSIgdGl0bGU9IlVwbG9hZCBOZXcgSW1hZ2UiIGNsYXNzPSJ1cGxvYWRM
aW5rIHVwbG9hZEZlYXR1cmVkVmlkZW9JbWFnZSBmZWF0dXJlZFZpZGVvSUQnICsg
dGhpcy5faVZpZGVvSUQgKyAnIj5DaGFuZ2UgSW1hZ2U8L2E+JzsNCiAgICAgICAg
DQogICAgICAgIG9JbWFnZUhvbGRlci5pbm5lckhUTUwgPSBzSW1hZ2VFbGVtZW50
Ow0KICAgICAgICANCiAgICAgICAgLy8gUmVzZXQgZXZlbnQgaGFuZGxlcnMNCiAg
ICAgICAgdmFyIGFDaGFuZ2VJbWFnZSA9IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1l
bnRzQnlDbGFzc05hbWUoJ3VwbG9hZEZlYXR1cmVkVmlkZW9JbWFnZScsICdhJyk7
DQogICAgICAgIA0KICAgICAgICAvLyBSZW1vdmUgb2xkIG9uZXMNCiAgICAgICAg
WUFIT08udXRpbC5FdmVudC5yZW1vdmVMaXN0ZW5lcihhQ2hhbmdlSW1hZ2UsICdj
bGljaycsIHRoaXMuX29uVXBsb2FkSW1hZ2VDbGljayk7DQogICAgICAgIA0KICAg
ICAgICAvLyBTZXQgbmV3IGV2ZW50IGhhbmRsZXINCiAgICAgICAgWUFIT08udXRp
bC5FdmVudC5hZGRMaXN0ZW5lcihhQ2hhbmdlSW1hZ2UsICdjbGljaycsIHRoaXMu
X29uVXBsb2FkSW1hZ2VDbGljaywgdGhpcywgdHJ1ZSk7DQogICAgfTsNCgkNCgkN
Cgl0aGlzLl9vbkZlYXR1cmVBcnRpY2xlRG9uZUNsaWNrID0gZnVuY3Rpb24oJG9F
dmVudCkgew0KCSAgICBpZiAodGhpcy5fYkZlYXR1cmVBcnRpY2xlRGF0YUNoYW5n
ZWQpIHsNCgkgICAgICAgIHRoaXMuX2FkZFVwZGF0ZUZlYXR1cmVkQXJ0aWNsZSgk
b0V2ZW50KTsNCgkgICAgfSBlbHNlIHsNCgkgICAgICAgIHRoaXMuX29uU3BvdGxp
Z2h0Q2xpY2soe30pOw0KCSAgICB9DQoJfTsNCgkNCgkvLyBGaXJlZCB3aGVuZXZl
ciB1c2VyIGNoYW5nZXMgZGVzY3JpcHRpb24gb3Igc2NyZWVuIGdyYWIgZm9yIGZl
YXR1cmVkIGFydGljbGUNCgl0aGlzLl9vbkZlYXR1cmVBcnRpY2xlQ2hhbmdlID0g
ZnVuY3Rpb24oJG9FdmVudCkgew0KCSAgICB0aGlzLl9iRmVhdHVyZUFydGljbGVE
YXRhQ2hhbmdlZCA9IHRydWU7DQoJfTsNCiAgICANCiAgICANCiAgICAvLyBGaXJl
ZCB3aGVuIHVzZXIgY2xpY2tzICJNYWtlIEhvdC9Vbi1Ib3QiIGxpbmsNCiAgICB0
aGlzLl9vbk1ha2VIb3RDbGljayA9IGZ1bmN0aW9uKCRvRXZlbnQpIHsNCiAgICAg
ICAgWUFIT08udXRpbC5FdmVudC5wcmV2ZW50RGVmYXVsdCgkb0V2ZW50KTsNCgkg
ICAgaWYgKCEoc2VsZi5vUGFnZS5vTG9nZ2VkSW5Vc2VyLmlzQ3VyYXRvciB8fCBz
ZWxmLm9QYWdlLm9Mb2dnZWRJblVzZXIuaXNBZG1pbikpIHJldHVybjsNCgkgICAg
DQogICAgICAgIFlBSE9PLnV0aWwuRXZlbnQucHJldmVudERlZmF1bHQoJG9FdmVu
dCk7DQogICAgICAgIHZhciBvTGluayA9IFlBSE9PLnV0aWwuRXZlbnQuZ2V0VGFy
Z2V0KCRvRXZlbnQpOw0KCQlpZiAoIVlBSE9PLnV0aWwuRG9tLmhhc0NsYXNzKG9M
aW5rLCAnYXJ0aWNsZUhvdCcpKSBvTGluayA9IFlBSE9PLnV0aWwuRG9tLmdldEFu
Y2VzdG9yQnlDbGFzc05hbWUob0xpbmssICdhcnRpY2xlSG90Jyk7DQoJCQ0KCQl2
YXIgaUFydGljbGVJRCA9IE51bWJlcihnZXRQcmVmaXhlZENsYXNzVmFsdWUob0xp
bmssICdhaWQnKSk7DQoJCXZhciBiVW5Ib3QgPSBZQUhPTy51dGlsLkRvbS5oYXND
bGFzcyhvTGluaywgJ3VuaG90Jyk7DQoJCQ0KCQlodHRwR2V0KGh0dHBHZXQuYnVp
bGRQb3N0VVJJKCdNYWtlSG90JywnYWlkJyxpQXJ0aWNsZUlELCd1bmhvdCcsYlVu
SG90KSwge2Jhc2U6dGhpc30sIGZ1bmN0aW9uKG9SZXN1bHQsb0FyZ3MpIHsNCiAg
ICAgICAgICAgIGlmIChvUmVzdWx0LmVycm9yTnVtYmVyID4gMCkgew0KICAgICAg
ICAgICAgICAgIG9XSFRBbGVydC5zaG93KG9SZXN1bHQuZXJyb3JUZXh0KTsNCiAg
ICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgaWYgKGJVbkhvdCkg
ew0KICAgICAgICAgICAgICAgICAgICBvV0hUQWxlcnQuc2hvdygnWW91XCd2ZSBy
ZW1vdmVkIHRoaXMgYXJ0aWNsZSBmcm9tIGhvdC5cbkl0IG1heSB0YWtlIHVwIHRv
IDE1IG1pbnV0ZXMgZm9yIGhvdCB0byB1cGRhdGUuJyk7DQogICAgICAgICAgICAg
ICAgICAgIFlBSE9PLnV0aWwuRG9tLnJlbW92ZUNsYXNzKG9MaW5rLCAndW5ob3Qn
KTsNCiAgICAgICAgICAgICAgICAgICAgb0xpbmsuaW5uZXJIVE1MID0gJ01ha2Ug
SG90JzsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAg
ICAgICBvV0hUQWxlcnQuc2hvdygnWW91XCd2ZSBtYWRlIHRoaXMgYXJ0aWNsZSBo
b3QhXG5JdCBtYXkgdGFrZSB1cCB0byAxNSBtaW51dGVzIGZvciBob3QgdG8gdXBk
YXRlLicpOw0KICAgICAgICAgICAgICAgICAgICBZQUhPTy51dGlsLkRvbS5hZGRD
bGFzcyhvTGluaywgJ3VuaG90Jyk7DQogICAgICAgICAgICAgICAgICAgIG9MaW5r
LmlubmVySFRNTCA9ICdVbi1Ib3QnOw0KICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfTsNCiAgICANCiAgICANCiAgICAv
LyBGaXJlZCB3aGVuIHVzZXIgRmF2b3JpdGVzIG9yIHVuZmF2b3JpdGVzIGFuIGFy
dGljbGUNCiAgICB0aGlzLl9vbkZhdm9yaXRlQ2xpY2sgPSBmdW5jdGlvbigkb0V2
ZW50KSB7DQogICAgICAgIFlBSE9PLnV0aWwuRXZlbnQucHJldmVudERlZmF1bHQo
JG9FdmVudCk7DQogICAgICAgIHZhciBvTGluayA9IFlBSE9PLnV0aWwuRXZlbnQu
Z2V0VGFyZ2V0KCRvRXZlbnQpOw0KCQlpZiAoIVlBSE9PLnV0aWwuRG9tLmhhc0Ns
YXNzKG9MaW5rLCAnYWN0aW9uRmF2JykpIG9MaW5rID0gWUFIT08udXRpbC5Eb20u
Z2V0QW5jZXN0b3JCeUNsYXNzTmFtZShvTGluaywgJ2FjdGlvbkZhdicpOw0KICAg
ICAgICB2YXIgaUFydGljbGVJRCA9IGdldFByZWZpeGVkQ2xhc3NWYWx1ZShvTGlu
aywgJ2FpZCcpOw0KICAgICAgICBpZiAoaUFydGljbGVJRCA9PSBudWxsKSByZXR1
cm47DQogICAgICAgIGlmIChZQUhPTy51dGlsLkRvbS5oYXNDbGFzcyhvTGluaywg
J21ha2VGYXYnKSkgew0KICAgICAgICAgICAgdGhpcy50b2dnbGVGYXZTdGF0dXMo
aUFydGljbGVJRCwgdHJ1ZSk7DQogICAgICAgIH0gZWxzZSBpZiAoWUFIT08udXRp
bC5Eb20uaGFzQ2xhc3Mob0xpbmssICdtYWtlVW5GYXYnKSkgew0KICAgICAgICAg
ICAgdGhpcy50b2dnbGVGYXZTdGF0dXMoaUFydGljbGVJRCwgZmFsc2UpOw0KICAg
ICAgICB9DQogICAgICAgIGlmIChvTGluay5ibHVyKW9MaW5rLmJsdXIoKTsNCiAg
ICB9Ow0KICAgIA0KICAgIA0KICAgIC8vIEZpcmVkIHdoZW4gdXNlciBzdWNjZXNm
dWxseSBmYXZvcml0ZWQgb3IgdW5mYXZvcml0ZWQgdGhlIGFydGljbGUNCiAgICB0
aGlzLl9vblNldEFydGljbGVGYXZvcml0ZVN1Y2Nlc3MgPSBmdW5jdGlvbigkaUFy
dGljbGVJRCwgJGJGYXZvcml0ZSkgew0KICAgICAgICBmb3IgKHZhciB4ID0gMDsg
eCA8IHRoaXMuX2FGYXZvcml0ZUxpbmtzLmxlbmd0aDsgeCsrKSB7DQogICAgICAg
ICAgICBpZiAoWUFIT08udXRpbC5Eb20uaGFzQ2xhc3ModGhpcy5fYUZhdm9yaXRl
TGlua3NbeF0sICdhaWQnICsgJGlBcnRpY2xlSUQpKSB7DQogICAgICAgICAgICAg
ICAgdmFyIG9BbmNlc3RvciA9IFlBSE9PLnV0aWwuRG9tLmdldEFuY2VzdG9yQnlD
bGFzc05hbWUodGhpcy5fYUZhdm9yaXRlTGlua3NbeF0sICdmYXZvcml0ZScpOw0K
ICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIGlmICgkYkZhdm9yaXRl
KSB7DQogICAgICAgICAgICAgICAgICAgIFlBSE9PLnV0aWwuRG9tLnJlcGxhY2VD
bGFzcyh0aGlzLl9hRmF2b3JpdGVMaW5rc1t4XSwgJ21ha2VGYXYnLCAnbWFrZVVu
RmF2Jyk7DQogICAgICAgICAgICAgICAgICAgIHRoaXMuX2FGYXZvcml0ZUxpbmtz
W3hdLmlubmVySFRNTCA9ICc8aT48L2k+VW4tRmF2b3JpdGUnOw0KICAgICAgICAg
ICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgWUFIT08udXRpbC5Eb20u
YWRkQ2xhc3Mob0FuY2VzdG9yLCAndW5GYXZvcml0ZScpOw0KICAgICAgICAgICAg
ICAgICAgICANCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAg
ICAgICAgICBZQUhPTy51dGlsLkRvbS5yZXBsYWNlQ2xhc3ModGhpcy5fYUZhdm9y
aXRlTGlua3NbeF0sICdtYWtlVW5GYXYnLCAnbWFrZUZhdicpOw0KICAgICAgICAg
ICAgICAgICAgICB0aGlzLl9hRmF2b3JpdGVMaW5rc1t4XS5pbm5lckhUTUwgPSAn
PGk+PC9pPkZhdm9yaXRlJzsNCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAg
ICAgICAgICAgICAgIFlBSE9PLnV0aWwuRG9tLnJlbW92ZUNsYXNzKG9BbmNlc3Rv
ciwgJ3VuRmF2b3JpdGUnKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICB9DQogICAgICAgIH0NCiAgICB9Ow0KICAgIA0KICAgIA0KICAgIHRoaXMuX29u
R3JhZGVDbGljayA9IGZ1bmN0aW9uKCRvRXZlbnQpIHsNCiAgICAgICAgWUFIT08u
dXRpbC5FdmVudC5wcmV2ZW50RGVmYXVsdCgkb0V2ZW50KTsNCiAgICAgICAgdmFy
IG9MaW5rID0gWUFIT08udXRpbC5FdmVudC5nZXRUYXJnZXQoJG9FdmVudCk7DQog
ICAgICAgIGlmICghWUFIT08udXRpbC5Eb20uaGFzQ2xhc3Mob0xpbmssICdncmFk
ZUFydGljbGUnKSkgb0xpbmsgPSBZQUhPTy51dGlsLkRvbS5nZXRBbmNlc3RvckJ5
Q2xhc3NOYW1lKG9MaW5rLCAnZ3JhZGVBcnRpY2xlJyk7DQogICAgICAgIA0KICAg
ICAgICB2YXIgc0dyYWRlID0gZ2V0UHJlZml4ZWRDbGFzc1ZhbHVlKG9MaW5rLCAn
c21hbGxHcmFkZScpOw0KICAgICAgICB2YXIgb0dyYWRlRGl2ID0gWUFIT08udXRp
bC5Eb20uZ2V0QW5jZXN0b3JCeVRhZ05hbWUob0xpbmssICdkaXYnKTsNCiAgICAg
ICAgaWYgKFlBSE9PLnV0aWwuRG9tLmhhc0NsYXNzKG9HcmFkZURpdiwgJ3VzZXJH
cmFkZScpKSByZXR1cm47DQogICAgICAgIA0KICAgICAgICB0aGlzLnNldEFydGlj
bGVHcmFkZShzR3JhZGUpOw0KICAgIH07DQogICAgDQogICAgDQogICAgdGhpcy5f
b25TZXRBcnRpY2xlR3JhZGVSZXR1cm4gPSBmdW5jdGlvbigkYlN1Y2Nlc3MsICRz
R3JhZGUsICRzQ29tbXVuaXR5R3JhZGUpIHsNCiAgICAgICAgdmFyIG9MaW5rID0g
WUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc21hbGxHcmFk
ZScgKyAkc0dyYWRlLCAnYScpWzBdOw0KICAgICAgICBZQUhPTy51dGlsLkRvbS5y
ZW1vdmVDbGFzcyhvTGluaywgJ2luUHJvZ3Jlc3MnKTsNCiAgICAgICAgDQogICAg
ICAgIGlmICghJGJTdWNjZXNzKSB7DQogICAgICAgICAgICB3aW5kb3cuc3RhdHVz
ID0gJHNDb21tdW5pdHlHcmFkZTsgLy8gV2lsbCBjb250YWluIGFuIGVycm9yIG1l
c3NhZ2UuDQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCiAgICAgICAg
DQogICAgICAgIC8vIFVwZGF0ZSB0aGUgcGFnZSdzIGRpc3BsYXkgb2YgdGhlIHVz
ZXIgJiBjb21tdW5pdHkgd29uZGVyIGdyYWRlczoNCiAgICAgICAgdmFyIG9HcmFk
ZURpdiA9IFlBSE9PLnV0aWwuRG9tLmdldEFuY2VzdG9yQnlUYWdOYW1lKG9MaW5r
LCAnZGl2Jyk7DQogICAgICAgIGlmICghWUFIT08udXRpbC5Eb20uaGFzQ2xhc3Mo
b0dyYWRlRGl2LCAndXNlckdyYWRlJykpIHsNCiAgICAgICAgICAgIHZhciBhRXhp
c3RpbmdHcmFkZXMgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lKCd1c2VyR3JhZGUnLCAnZGl2Jyk7DQogICAgICAgICAgICBZQUhPTy51dGls
LkRvbS5yZW1vdmVDbGFzcyhhRXhpc3RpbmdHcmFkZXMsICd1c2VyR3JhZGUnKTsN
CiAgICAgICAgICAgIFlBSE9PLnV0aWwuRG9tLmFkZENsYXNzKG9HcmFkZURpdiwg
J3VzZXJHcmFkZScpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAvLyBV
cGRhdGUgYWxsIG90aGVyIGNvbW11bml0eSBncmFkZXMNCiAgICAgICAgdmFyIGFD
b21tdW5pdHlHcmFkZXMgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xh
c3NOYW1lKCdjb21tR3JhZGUnKTsNCiAgICAgICAgZm9yICh2YXIgaSBpbiBhQ29t
bXVuaXR5R3JhZGVzKSB7DQogICAgICAgICAgICBhQ29tbXVuaXR5R3JhZGVzW2ld
LmlubmVySFRNTCA9ICRzQ29tbXVuaXR5R3JhZGUucmVwbGFjZSgncCcsICcrJyku
cmVwbGFjZSgnbScsICctJyk7DQogICAgICAgIH0NCiAgICB9Ow0KCQ0KICAgIA0K
ICAgIA0KICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgLy8gUHVibGlj
IE1ldGhvZHMNCiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgIHRoaXMu
c2V0QXJ0aWNsZUdyYWRlID0gZnVuY3Rpb24oJHNHcmFkZSwgJGlBcnRpY2xlSUQp
IHsNCiAgICAgICAgaWYgKHRoaXMuX2JJblByb2dyZXNzKSByZXR1cm47DQogICAg
ICAgIGlmICgkaUFydGljbGVJRCA9PSBudWxsKSAkaUFydGljbGVJRCA9IHRoaXMu
X2lkOw0KICAgICAgICBpZiAoIW9QYWdlLm9Mb2dnZWRJblVzZXIuaXNVc2VyKSB7
DQogICAgICAgICAgICB2YXIgc0xvZ2luTWVzc2FnZSA9ICc8c3Ryb25nPk5vdGU6
PC9zdHJvbmc+IFlvdSBtdXN0IGJlIGxvZ2dlZC1pbiB0byBncmFkZSBhcnRpY2xl
cy4gUGxlYXNlIGxvZ2luIG9yIHNpZ251cCBzbyB3ZSBjYW4gc2F2ZSB5b3VyIGdy
YWRlOic7DQogICAgICAgICAgICBvUGFnZS5zaG93TG9naW5TaWdudXBGb3JtKHNM
b2dpbk1lc3NhZ2UsICdZQUhPTy53aHQuZG9jWC5BcnRpY2xlUGFnZS5vQXJ0aWNs
ZVBhZ2VzW1wnJyArIHRoaXMuX2lkICsgJ1wnXS5zZXRBcnRpY2xlR3JhZGUoXCcn
ICsgJHNHcmFkZSArICdcJywnICsgJGlBcnRpY2xlSUQgKyAnKTsnKTsNCiAgICAg
ICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgdmFy
IG9HcmFkZUxpbmsgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lKCdzbWFsbEdyYWRlJyArICRzR3JhZGUsICdhJylbMF07DQogICAgICAgIFlB
SE9PLnV0aWwuRG9tLmFkZENsYXNzKG9HcmFkZUxpbmssICdpblByb2dyZXNzJyk7
DQogICAgICAgIA0KICAgICAgICB0aGlzLl9iSW5Qcm9ncmVzcyA9IHRydWU7DQog
ICAgICAgIGh0dHBHZXQoaHR0cEdldC5idWlsZFBvc3RVUkkoJ1NldFVzZXJXb25k
ZXJHcmFkZScsICdhaWQnLCAkaUFydGljbGVJRCwgJ3V3ZycsICRzR3JhZGUpLCB7
YmFzZTp0aGlzLHNHcmFkZXJJRDp0aGlzLl9pZCxzR3JhZGU6JHNHcmFkZSxpQXJ0
aWNsZUlEOiRpQXJ0aWNsZUlEfSwgZnVuY3Rpb24ob1Jlc3VsdCxvQXJncykgew0K
ICAgICAgICAgICAgb0FyZ3MuYmFzZS5fYkluUHJvZ3Jlc3MgPSBmYWxzZTsNCiAg
ICAgICAgICAgIC8vIENoZWNrIHRoZSByZXNwb25zZToNCiAgICAgICAgICAgIGlm
IChvUmVzdWx0LmVycm9yTnVtYmVyID4gMCkgew0KICAgICAgICAgICAgICAgIHZh
ciBzTWVzc2FnZTsNCiAgICAgICAgICAgICAgICBzd2l0Y2ggKG9SZXN1bHQuZXJy
b3JOdW1iZXIpIHsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSA3MTA1Og0KICAg
ICAgICAgICAgICAgICAgICAgICAgb1BhZ2Uuc2hvd0xvZ2luU2lnbnVwRm9ybShv
UmVzdWx0LmVycm9yVGV4dCwgJ1lBSE9PLndodC5kb2NYLkFydGljbGVQYWdlLm9B
cnRpY2xlUGFnZXNbXCcnICsgb0FyZ3Muc0dyYWRlcklEICsgJ1wnXSkuc2V0QXJ0
aWNsZUdyYWRlKFwnJyArIG9BcmdzLnNHcmFkZSArICdcJywnICsgb0FyZ3MuaUFy
dGljbGVJRCArICcpOycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
DQogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgICAg
ICAgICAgICBzTWVzc2FnZSA9IG9SZXN1bHQuZXJyb3JUZXh0Ow0KICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgIG9BcmdzLmJhc2UuX29uU2V0QXJ0aWNsZUdyYWRlUmV0dXJuLmFw
cGx5KG9BcmdzLmJhc2UsIFtmYWxzZSwgb0FyZ3Muc0dyYWRlLCBzTWVzc2FnZV0p
Ow0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAvLyBTdWNj
ZXNzDQogICAgICAgICAgICAgICAgb0FyZ3MuYmFzZS5fb25TZXRBcnRpY2xlR3Jh
ZGVSZXR1cm4uYXBwbHkob0FyZ3MuYmFzZSwgW3RydWUsIG9BcmdzLnNHcmFkZSwg
b1Jlc3VsdC52YWx1ZV0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAg
ICB9Ow0KICAgIA0KICAgIA0KICAgIHRoaXMuc2V0TGlzdGVuZXJzID0gZnVuY3Rp
b24oKSB7DQogICAgICAgIHZhciBvUGFyZW50ID0gdGhpcy5fZ2V0UGFyZW50KCk7
DQogICAgICAgIA0KICAgICAgICB2YXIgYUl0ZW1zID0gWUFIT08udXRpbC5Eb20u
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaXRlbVRodW1iJywgJ2EnLCBvUGFyZW50
KTsNCgkJDQogICAgICAgIC8vIFJlbXZvZSBhbnkgbGlzdGVuZXJzDQogICAgICAg
IFlBSE9PLnV0aWwuRXZlbnQucmVtb3ZlTGlzdGVuZXIoYUl0ZW1zLCAnY2xpY2sn
LCB0aGlzLl9vbkl0ZW1DbGljayk7DQoJCQ0KICAgICAgICAvLyBBZGQgbGlzdGVu
ZXJzDQogICAgICAgIFlBSE9PLnV0aWwuRXZlbnQuYWRkTGlzdGVuZXIoYUl0ZW1z
LCAnY2xpY2snLCB0aGlzLl9vbkl0ZW1DbGljaywgdGhpcywgdHJ1ZSk7DQogICAg
fTsNCiAgICANCiAgICANCiAgICAvLyBGYXZvcml0ZXMgb3IgVW4tRmF2b3JpdGVz
IGFydGljbGUNCiAgICB0aGlzLnRvZ2dsZUZhdlN0YXR1cyA9IGZ1bmN0aW9uKCRp
QXJ0aWNsZUlELCAkYkZhdikgew0KICAgICAgICBpZiAodGhpcy5fYkZhdkJ1c3kp
IHJldHVybjsNCiAgICAgICAgDQogICAgICAgIGlmICghc2VsZi5vUGFnZS5vTG9n
Z2VkSW5Vc2VyLmlzVXNlcikgew0KICAgICAgICAgICAgdmFyIHNNZXNzYWdlID0g
JzxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gWW91IG11c3QgYmUgbG9nZ2VkIGluIHRv
IHNhdmUgZmF2b3JpdGUgYXJ0aWNsZXMuIFBsZWFzZSBsb2dpbiBvciBzaWdudXAg
dG8gbWFyayB0aGlzIGFydGljbGUgYXMgYSBmYXZvcml0ZS4uLic7DQogICAgICAg
ICAgICBzZWxmLm9QYWdlLnNob3dMb2dpblNpZ251cEZvcm0oc01lc3NhZ2UsICdZ
QUhPTy53aHQuZG9jWC5BcnRpY2xlUGFnZS5vQXJ0aWNsZVBhZ2VzWycgKyAkaUFy
dGljbGVJRCArICddLnRvZ2dsZUZhdlN0YXR1cygnKyRpQXJ0aWNsZUlEKycsJysk
YkZhdisnKTsnKTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAg
ICAgICANCiAgICAgICAgLy8gU2VuZCB0aGUgc2V0IGZhdm9yaXRlIHJlcXVlc3Q6
DQogICAgICAgIHRoaXMuX2JGYXZCdXN5ID0gdHJ1ZTsNCiAgICAgICAgaHR0cEdl
dChodHRwR2V0LmJ1aWxkUG9zdFVSSSgnU2V0Q29udGVudEFzRmF2b3JpdGUnLCAn
YWlkJywgJGlBcnRpY2xlSUQsICdmYXYnLCAkYkZhdiksIHtiYXNlOnRoaXMsaUFy
dGljbGVJRDokaUFydGljbGVJRCxiRmF2b3JpdGU6JGJGYXZ9LCBmdW5jdGlvbihv
UmVzdWx0LG9BcmdzKSB7DQogICAgICAgICAgICBvQXJncy5iYXNlLl9iRmF2QnVz
eSA9IGZhbHNlOw0KICAgICAgICAgICAgLy8gQ2hlY2sgdGhlIHJlc3BvbnNlOg0K
ICAgICAgICAgICAgaWYgKG9SZXN1bHQuZXJyb3JOdW1iZXIgPiAwKSB7DQogICAg
ICAgICAgICAgICAgc3dpdGNoIChvUmVzdWx0LmVycm9yTnVtYmVyKSB7DQogICAg
ICAgICAgICAgICAgICAgIGNhc2UgNzEwNToNCiAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYub1BhZ2Uuc2hvd0xvZ2luU2lnbnVwRm9ybS5hcHBseShvQXJncy5i
YXNlLCBbb1Jlc3VsdC5lcnJvclRleHQsICdZQUhPTy53aHQuZG9jWC5BcnRpY2xl
UGFnZS5vQXJ0aWNsZVBhZ2VzWycrb0FyZ3MuaUFydGljbGVJRCsnLCcrb0FyZ3Mu
YkZhdm9yaXRlKycpOyddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
Ow0KICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAg
ICAgICAgICAgb1dIVEFsZXJ0LnNob3cob1Jlc3VsdC5lcnJvclRleHQpOw0KICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAvLyBTdWNjZXNz
DQogICAgICAgICAgICAgICAgb0FyZ3MuYmFzZS5fb25TZXRBcnRpY2xlRmF2b3Jp
dGVTdWNjZXNzLmFwcGx5KG9BcmdzLmJhc2UsIFtvQXJncy5pQXJ0aWNsZUlELCBv
UmVzdWx0LnZhbHVlXSk7DQogICAgICAgICAgICAgICAgaWYgKG9SZXN1bHQudmFs
dWUpIHsNCiAgICAgICAgICAgICAgICAgICAgb1dIVEFsZXJ0LnNob3coJ1RoaXMg
YXJ0aWNsZSBoYXMgYmVlbiBhZGRlZCB0byB5b3VyIGZhdm9yaXRlcy4gXG4gTm93
IHlvdSBjYW4gZWFzaWx5IGdldCBiYWNrIHRvIGl0IGZyb20geW91ciBwcm9maWxl
LicpOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAg
ICAgIG9XSFRBbGVydC5zaG93KCdUaGlzIGFydGljbGUgaGFzIGJlZW4gcmVtb3Zl
ZCBmcm9tIHlvdXIgZmF2b3JpdGVzLicpOw0KICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfTsNCiAgICANCiAgICANCiAg
ICANCiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgIC8vIFByaXZhdGUg
TWV0aG9kcw0KICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgLy8gVXBk
YXRlcyB3b3JkIGNvdW50IG9mIHRoZSBhcnRpY2xlDQogICAgdGhpcy5fdXBkYXRl
V29yZENvdW50ID0gZnVuY3Rpb24oKSB7DQogICAgICAgIG9QYWdlLl91cGRhdGVX
b3JkQ291bnRzKHRoaXMuX2lXb3JkQ291bnQsICh0aGlzLl9pQXJ0aWNsZVR5cGUg
PT0gMSkgPyAyNTAgOiAwKTsgLy8gQXJ0aWNsZVR5cGUgMSA9IEFydGljbGUNCiAg
ICB9Ow0KICAgIA0KICAgIC8vIElmIGltYWdlIGhhcyAiaGFzTGFyZ2UiIGNsYXNz
LCBhc3N1bWUgdGhhdCBpdCBoYXMgYSBsYXJnZXIgaW1hZ2UuIFdyYXAgaXQgaW50
byBhIGxpbmsNCiAgICB0aGlzLl9wcm9jZXNzTGFyZ2VJbWFnZXMgPSBmdW5jdGlv
bigpIHsNCiAgICAgICAgdmFyIGFMYXJnZUltZ3MgPSBZQUhPTy51dGlsLkRvbS5n
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoYXNMYXJnZScsICdpbWcnKTsNCiAgICAg
ICAgDQogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYUxhcmdlSW1ncy5sZW5n
dGg7IGkrKykgew0KICAgICAgICAgICAgaWYgKGFMYXJnZUltZ3NbaV0ucGFyZW50
Tm9kZS5ub2RlTmFtZSA9PSAnQScpIGNvbnRpbnVlOw0KICAgICAgICAgICAgDQog
ICAgICAgICAgICB2YXIgc0hyZWYgPSBhTGFyZ2VJbWdzW2ldLnNyYy5yZXBsYWNl
KC8oLipcLykoLio/XC4oanBnfGpwZWd8Z2lmfHBuZykpLiovZ2ksICckMWwkMicp
Ow0KICAgICAgICAgICAgDQogICAgICAgICAgICB2YXIgb0FUYWcgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdhJyk7DQogICAgICAgICAgICBvQVRhZy5zZXRBdHRy
aWJ1dGUoJ2hyZWYnLCBzSHJlZik7DQogICAgICAgICAgICBvQVRhZy5zZXRBdHRy
aWJ1dGUoJ2FsdCcsICcnKTsNCiAgICAgICAgICAgIG9BVGFnLnNldEF0dHJpYnV0
ZSgndGFyZ2V0JywgJ19ibGFuaycpOw0KICAgICAgICAgICAgb0FUYWcuc2V0QXR0
cmlidXRlKCdjbGFzcycsICdpbWdMaW5rJyk7DQogICAgICAgICAgICANCiAgICAg
ICAgICAgIFlBSE9PLnV0aWwuRG9tLmluc2VydEFmdGVyKG9BVGFnLCBhTGFyZ2VJ
bWdzW2ldKTsNCiAgICAgICAgICAgIG9BVGFnLmFwcGVuZENoaWxkKGFMYXJnZUlt
Z3NbaV0pOw0KICAgICAgICB9DQogICAgfTsNCiAgICANCiAgICANCiAgICB0aGlz
Ll9yZWdpc3RlckdhbGxlcmllcyA9IGZ1bmN0aW9uKCRhRG9jUGFydHMpIHsNCiAg
ICAgICAgdmFyIGFOZXdEb2NQYXJ0cyA9IFtdOw0KICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8ICRhRG9jUGFydHMubGVuZ3RoOyBpKyspIHsNCgkgICAgICAgIGlm
ICgkYURvY1BhcnRzW2ldLnR5cGUgPT0gJ2dhbGxlcnknKSB7DQoJICAgICAgICAg
ICAgdHJ5IHsNCgkJICAgICAgICAgICAgdmFyIG9HYWxsZXJ5VmlldyA9IG5ldyBZ
QUhPTy53aHQuZG9jWC5HYWxsZXJ5VmlldygkYURvY1BhcnRzW2ldLCB0aGlzLl9v
VGVtcGxhdGVzKTsNCgkJCQkNCgkJICAgICAgICAgICAgYU5ld0RvY1BhcnRzLnB1
c2gob0dhbGxlcnlWaWV3KTsNCgkJICAgICAgICB9IGNhdGNoKGVycikgeyAvKkRF
QlVHKi8gcHJpbnREZWJ1ZygnRVJSIDY4NjogJyArIGVyci5tZXNzYWdlKTsgfQ0K
CSAgICAgICAgfQ0KICAgICAgICB9DQoJCQ0KCQlyZXR1cm4gYU5ld0RvY1BhcnRz
Ow0KICAgIH07DQogICAgDQogICAgLy8gQ2FwdHVyZXMgdGhlIGV2ZW50cyBmb3Ig
YWxsIGVsZW1lbnRzIGluIGFuIGFycmF5Og0KICAgIHRoaXMuX2NhcHR1cmVFdmVu
dHMgPSBmdW5jdGlvbigkYUVsZW1lbnRzLCAkc0V2ZW50LCAkZkV2ZW50SGFuZGxl
cikgew0KICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8ICRhRWxlbWVudHMubGVu
Z3RoOyB4KyspIHsNCiAgICAgICAgICAgIFlBSE9PLnV0aWwuRXZlbnQuYWRkTGlz
dGVuZXIoJGFFbGVtZW50c1t4XSwgJHNFdmVudCwgJGZFdmVudEhhbmRsZXIsIHRo
aXMsIHRydWUpOw0KICAgICAgICB9DQogICAgfTsNCiAgICANCiAgICANCiAgICAv
LyBMb2FkcyAiU3BvdGxpZ2h0IiBjb250cm9sIGR5bmFtaWNhbGx5DQogICAgdGhp
cy5fbG9hZFNwb3RsaWdodENvbnRyb2wgPSBmdW5jdGlvbigpIHsNCiAgICAgICAg
aWYgKHRoaXMuX2JGZWF0dXJlQXJ0aWNsZUxvYWRpbmcpIHJldHVybjsNCiAgICAg
ICAgDQogICAgICAgIHRoaXMuX2JGZWF0dXJlQXJ0aWNsZUxvYWRpbmcgPSB0cnVl
Ow0KCQkNCiAgICAgICAgaHR0cEdldChodHRwR2V0LmJ1aWxkUG9zdFVSSSgnR2V0
Rm9ybScsICdmb3JtJywgJ0ZlYXR1cmVWaWRlbycsICdhaWQnLCB0aGlzLl9pZCks
IHtiYXNlOnRoaXN9LCBmdW5jdGlvbihvUmVzdWx0LG9BcmdzKSB7DQoJCQlvQXJn
cy5iYXNlLl9iRmVhdHVyZUFydGljbGVMb2FkaW5nID0gZmFsc2U7DQoJCQkNCgkJ
CWlmIChvUmVzdWx0LmVycm9yTnVtYmVyID4gMCkgew0KICAgICAgICAgICAgICAg
IG9XSFRBbGVydC5zaG93KG9SZXN1bHQuZXJyb3JUZXh0KTsNCiAgICAgICAgICAg
IH0gZWxzZSB7DQogICAgICAgICAgICAgICAgLy8gU3VjY2VzczoNCiAgICAgICAg
ICAgICAgICBvQXJncy5iYXNlLl9pbml0U3BvdGxpZ2h0QXJ0aWNsZShvUmVzdWx0
LnZhbHVlKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfTsNCiAg
ICANCiAgICANCiAgICAvLyBBZGRzIG9yIHVwZGF0ZXMgZmVhdHVyZWQgYXJ0aWNs
ZQ0KCXRoaXMuX2FkZFVwZGF0ZUZlYXR1cmVkQXJ0aWNsZSA9IGZ1bmN0aW9uKCRv
RXZlbnQpIHsNCgkgICAgaWYgKHRoaXMuX2JGZWF0dXJpbmcpIHJldHVybjsNCgkg
ICAgDQoJICAgIHRoaXMuX2JGZWF0dXJpbmcgPSB0cnVlOw0KCSAgICANCgkgICAg
dmFyIG9MaW5rID0gWUFIT08udXRpbC5FdmVudC5nZXRUYXJnZXQoJG9FdmVudCk7
DQoJICAgIHZhciBvUGFyZW50ID0gWUFIT08udXRpbC5Eb20uZ2V0QW5jZXN0b3JC
eUNsYXNzTmFtZShvTGluaywgJ2ZlYXR1cmVWaWRlb0ludGVybmFsJyk7DQoJICAg
IA0KCSAgICB2YXIgc0Rlc2NyaXB0aW9uID0gWUFIT08udXRpbC5Eb20uZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZSgnZmVhdHVyZWRWaWRlb0Rlc2NyaXB0aW9uJywgJ3Rl
eHRhcmVhJywgb1BhcmVudClbMF0udmFsdWUudHJpbSgpOw0KCSAgICANCgkgICAg
Ly8gVXBkYXRlIGFydGljbGUNCgkgICAgaHR0cEdldChodHRwR2V0LmJ1aWxkUG9z
dFVSSSgnVXBkYXRlRmVhdHVyZWRWaWRlbycsICdhaWQnLCB0aGlzLl9pZCwgJ2Rl
c2NyaXB0aW9uJywgc0Rlc2NyaXB0aW9uKSwge2Jhc2U6dGhpc30sIGZ1bmN0aW9u
KG9SZXN1bHQsb0FyZ3MpIHsNCiAgICAgICAgICAgIG9BcmdzLmJhc2UuX2JGZWF0
dXJpbmcgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIENoZWNrIHRoZSByZXNwb25z
ZToNCiAgICAgICAgICAgIGlmIChvUmVzdWx0LmVycm9yTnVtYmVyID4gMCkgew0K
ICAgICAgICAgICAgICAgIG9XSFRBbGVydC5zaG93KG9SZXN1bHQuZXJyb3JUZXh0
KTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgb0FyZ3Mu
YmFzZS5fYkZlYXR1cmVBcnRpY2xlRGF0YUNoYW5nZWQgPSBmYWxzZTsNCiAgICAg
ICAgICAgICAgICBvQXJncy5iYXNlLl9vblNwb3RsaWdodENsaWNrKHt9KTsNCiAg
ICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAvLyBTdWNjZXNzDQogICAg
ICAgICAgICAgICAgb1dIVEFsZXJ0LnNob3cob1Jlc3VsdC52YWx1ZSk7DQogICAg
ICAgICAgICB9DQogICAgICAgIH0pOw0KCX07DQogICAgDQogICAgDQogICAgLy8g
VHJ5IHRvIHNpZ24gdXAgZm9yIGN1c3RvbSBZVUkgZXZlbnQgdGhhdCB3aWxsIGZp
cmUgd2hlbiBlbmQgb2YgcGFnZSBpcyByZWFjaGVkDQogICAgdHJ5IHsNCiAgICAg
ICAgWUFIT08udXRpbC5Eb20ub1dIVFJlYWR5RXZlbnQuc3Vic2NyaWJlKHRoaXMu
X29uUGFnZVJlYWR5LCB0aGlzLCB0cnVlKTsNCiAgICB9IGNhdGNoIChlcnIpIHsN
CiAgICAgICAgLy8gQXR0YWNoIHRvIHRoZSBzcGVjaWZpZWQgY29udGFpbmVyIG9i
amVjdCBhcyBzb29uIGFzIGl0J3MgcmVhZHkgb24gdGhlIHBhZ2U6DQogICAgICAg
IFlBSE9PLnV0aWwuRXZlbnQub25ET01SZWFkeSh0aGlzLl9vblBhZ2VSZWFkeSwg
dGhpcywgdHJ1ZSk7DQogICAgfQ0KfTsNCg0KDQovLyBJbml0aWFsaXplIHRoZSBB
cnRpY2xlUGFnZToNCllBSE9PLndodC5kb2NYLkFydGljbGVQYWdlLmluaXQgPSBm
dW5jdGlvbigkc0RvY3VtZW50LCAkb1RlbXBsYXRlcywgJGlkLCAkb0xvZ2dlZElu
VXNlciwgJGlBVklELCAkc012dFNlc3Npb25JRCwgJHNUaXRsZSwgJGJXT0QsICRp
QXJ0aWNsZVR5cGUsICRpV29yZENvdW50V2l0aEJvbnVzKSB7DQogICAgaWYgKCFZ
QUhPTy5sYW5nLmlzT2JqZWN0KFlBSE9PLndodC5kb2NYLkFydGljbGVQYWdlLm9B
cnRpY2xlUGFnZXMpKSBZQUhPTy53aHQuZG9jWC5BcnRpY2xlUGFnZS5vQXJ0aWNs
ZVBhZ2VzID0ge307DQoJDQogICAgaWYgKFlBSE9PLmxhbmcuaXNVbmRlZmluZWQo
WUFIT08ud2h0LmRvY1guQXJ0aWNsZVBhZ2Uub0FydGljbGVQYWdlc1skaWRdKSkg
ew0KICAgICAgICBZQUhPTy53aHQuZG9jWC5BcnRpY2xlUGFnZS5vQXJ0aWNsZVBh
Z2VzWyRpZF0gPSBuZXcgWUFIT08ud2h0LmRvY1guQXJ0aWNsZVBhZ2UoJHNEb2N1
bWVudCwgJG9UZW1wbGF0ZXMsICRpZCwgJG9Mb2dnZWRJblVzZXIsICRpQVZJRCwg
JHNNdnRTZXNzaW9uSUQsICRzVGl0bGUsICRiV09ELCAkaUFydGljbGVUeXBlLCAk
aVdvcmRDb3VudFdpdGhCb251cyk7DQogICAgfQ0KfTsNCg0KLy8gUmV0dXJucyBh
biBhcnJheSBvZiBhcnRpY2xlIElEcyB0byB1cGRhdGUNCllBSE9PLndodC5kb2NY
LkFydGljbGVQYWdlLmdldEFydGljZVZpZXdJRHMgPSBmdW5jdGlvbigpIHsNCiAg
ICB2YXIgYUFydGljbGVWaWV3SURzID0gbmV3IEFycmF5KCk7DQogICAgDQogICAg
aWYgKCFZQUhPTy5sYW5nLmlzT2JqZWN0KFlBSE9PLndodC5kb2NYLkFydGljbGVQ
YWdlLm9BcnRpY2xlUGFnZXMpKSBZQUhPTy53aHQuZG9jWC5BcnRpY2xlUGFnZS5v
QXJ0aWNsZVBhZ2VzID0ge307DQogICAgDQogICAgZm9yICh2YXIgaSBpbiBZQUhP
Ty53aHQuZG9jWC5BcnRpY2xlUGFnZS5vQXJ0aWNsZVBhZ2VzKSB7DQogICAgICAg
IGFBcnRpY2xlVmlld0lEcy5wdXNoKFlBSE9PLndodC5kb2NYLkFydGljbGVQYWdl
Lm9BcnRpY2xlUGFnZXNbaV0uX2lBVklEKTsNCiAgICB9DQogICAgDQogICAgcmV0
dXJuIGFBcnRpY2xlVmlld0lEczsNCn07DQoNCg0KDQovLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KLy8gU3VwcG9ydCBDbGFzc2VzDQovLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQ0KWUFIT08ud2h0LmRvY1guR2FsbGVyeVZpZXcgPSBmdW5jdGlvbigkb0dh
bGxlcnksICRvVGVtcGxhdGVzKSB7DQoJdGhpcy5fb0dhbGxlcnkgPSAoJG9HYWxs
ZXJ5KSA/ICRvR2FsbGVyeSA6IG5ldyBPYmplY3QoKTsNCgl0aGlzLl9pRGlzcGxh
eWVkSXRlbSA9IC0xOw0KICAgIHRoaXMuX2FHYWxsZXJ5SXRlbXMgPSAodGhpcy5f
b0dhbGxlcnkuZ2FsbGVyeUl0ZW1zKSA/IHRoaXMuX29HYWxsZXJ5LmdhbGxlcnlJ
dGVtcyA6IG5ldyBBcnJheSgpOw0KCXRoaXMuX3NJbWFnZUh0bWxUZW1wbGF0ZSA9
ICRvVGVtcGxhdGVzWydnYWxsZXJ5X2ltYWdlJ107DQoJdGhpcy5fc1ZpZGVvSHRt
bFRlbXBsYXRlID0gJG9UZW1wbGF0ZXNbJ2dhbGxlcnlfdmlkZW8nXTsNCgkNCgl0
aGlzLl9pbml0ID0gZnVuY3Rpb24oKSB7DQoJCXRoaXMuX3NldExpc3RlbmVycygp
Ow0KCQkNCgkJdGhpcy5fc2V0SXRlbVBhZ2luZygpOw0KCQkNCgkJaWYgKHRoaXMu
X2FHYWxsZXJ5SXRlbXMubGVuZ3RoID4gMCkgew0KCQkJdGhpcy5fZGlzcGxheUdh
bGxlcnlJdGVtKDApOw0KCQl9DQoJfTsNCgkNCgkNCgkvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KCS8vIEV2ZW50IEhhbmRsZXJzDQoJLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0NCgkvLyBGaXJlZCB3aGVuIHVzZXIgY2xpY2tzIGFuIGl0ZW0gdG8gYmUg
ZGlzcGxheWVkDQoJdGhpcy5fb25JdGVtQ2xpY2sgPSBmdW5jdGlvbigkb0V2ZW50
KSB7DQoJCXZhciBvTGluayA9IFlBSE9PLnV0aWwuRXZlbnQuZ2V0VGFyZ2V0KCRv
RXZlbnQpOw0KCQlpZiAoIVlBSE9PLnV0aWwuRG9tLmhhc0NsYXNzKG9MaW5rLCAn
aXRlbVRodW1iJykpIG9MaW5rID0gWUFIT08udXRpbC5Eb20uZ2V0QW5jZXN0b3JC
eUNsYXNzTmFtZShvTGluaywgJ2l0ZW1UaHVtYicpOw0KCQkNCgkJdmFyIGlJdGVt
TnVtYmVyID0gTnVtYmVyKGdldFByZWZpeGVkQ2xhc3NWYWx1ZShvTGluaywgJ2dh
bGxlcnlJdGVtJykpOw0KCQkNCgkJdGhpcy5fZGlzcGxheUdhbGxlcnlJdGVtKGlJ
dGVtTnVtYmVyKTsNCgl9Ow0KCQ0KCQ0KCS8vIEZpcmVkIHdoZW4gdXNlciBjbGlj
a3MgUHJldiBHYWxsZXJ5IEl0ZW0gbGluaw0KCXRoaXMuX29uUHJldkl0ZW1DbGlj
ayA9IGZ1bmN0aW9uKCRvRXZlbnQpIHsNCgkJaWYgKCRvRXZlbnQgIT0gbnVsbCkg
ew0KCQkJLy8gUHJldmVudCBkZWZhdWx0DQoJCQlZQUhPTy51dGlsLkV2ZW50LnN0
b3BFdmVudCgkb0V2ZW50KTsNCgkJCQ0KCQkJdmFyIG9MaW5rID0gWUFIT08udXRp
bC5FdmVudC5nZXRUYXJnZXQoJG9FdmVudCk7DQoJCQlpZiAoIVlBSE9PLnV0aWwu
RG9tLmhhc0NsYXNzKG9MaW5rLCAncHJldkdhbGxlcnlJdGVtJykpIHsNCgkJCQlv
TGluayA9IFlBSE9PLnV0aWwuRG9tLmdldEFuY2VzdG9yQnlDbGFzc05hbWUob0xp
bmssICdwcmV2R2FsbGVyeUl0ZW0nKTsNCgkJCX0NCgkJfQ0KCQkNCgkJaWYgKHRo
aXMuX2lEaXNwbGF5ZWRJdGVtID4gMCkgew0KCQkJLy8gRGlzcGxheSBnYWxsZXJ5
IGl0ZW0NCgkJCXRoaXMuX2Rpc3BsYXlHYWxsZXJ5SXRlbSh0aGlzLl9pRGlzcGxh
eWVkSXRlbSAtIDEpOw0KCQl9IGVsc2Ugew0KCQkJdGhpcy5fZGlzcGxheUdhbGxl
cnlJdGVtKHRoaXMuX2FHYWxsZXJ5SXRlbXMubGVuZ3RoIC0gMSk7DQoJCX0NCgl9
Ow0KCQ0KCQ0KCS8vIEZpcmVkIHdoZW4gdXNlciBjbGlja3MgTmV4dCBHYWxsZXJ5
IEl0ZW0gbGluaw0KCXRoaXMuX29uTmV4dEl0ZW1DbGljayA9IGZ1bmN0aW9uKCRv
RXZlbnQpIHsNCgkJaWYgKCRvRXZlbnQgIT0gbnVsbCkgew0KCQkJLy8gUHJldmVu
dCBkZWZhdWx0DQoJCQlZQUhPTy51dGlsLkV2ZW50LnN0b3BFdmVudCgkb0V2ZW50
KTsNCgkJCQ0KCQkJdmFyIG9MaW5rID0gWUFIT08udXRpbC5FdmVudC5nZXRUYXJn
ZXQoJG9FdmVudCk7DQoJCQlpZiAoIVlBSE9PLnV0aWwuRG9tLmhhc0NsYXNzKG9M
aW5rLCAnbmV4dEdhbGxlcnlJdGVtJykpIA0KCQkJCW9MaW5rID0gWUFIT08udXRp
bC5Eb20uZ2V0QW5jZXN0b3JCeUNsYXNzTmFtZShvTGluaywgJ25leHRHYWxsZXJ5
SXRlbScpOw0KCQl9DQoJCQ0KCQlpZiAodGhpcy5faURpc3BsYXllZEl0ZW0gPCAo
dGhpcy5fYUdhbGxlcnlJdGVtcy5sZW5ndGggLSAxKSkgew0KCQkJdGhpcy5fZGlz
cGxheUdhbGxlcnlJdGVtKHRoaXMuX2lEaXNwbGF5ZWRJdGVtICsgMSk7DQoJCX0g
ZWxzZSB7DQoJCQl0aGlzLl9kaXNwbGF5R2FsbGVyeUl0ZW0oMCk7DQoJCX0NCgl9
Ow0KCQ0KCQ0KCQ0KCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJLy8gUHJpdmF0
ZSBNZXRob2RzDQoJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkvLyBEaXNwbGF5
cyBpdGVtJ3MgY2FwdGlvbg0KCXRoaXMuX2Rpc3BsYXlDYXB0aW9uID0gZnVuY3Rp
b24ob1BhcmVudCwgJHNDYXB0aW9uKSB7DQoJCXZhciBvQ2FwdGlvbkFyZWEgPSBZ
QUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpdGVtQ2FwdGlv
bicsICdkaXYnLCBvUGFyZW50KVswXTsNCgkJdmFyIG9DYXB0aW9uSG9sZGVyID0g
WUFIT08udXRpbC5Eb20uZ2V0QW5jZXN0b3JCeUNsYXNzTmFtZShvQ2FwdGlvbkFy
ZWEsICdjYXB0aW9uVGV4dCcpOyANCgkJDQoJCW9DYXB0aW9uQXJlYS5pbm5lckhU
TUwgPSAkc0NhcHRpb247DQoJCQ0KCQlpZiAoJHNDYXB0aW9uICE9ICcnKSB7DQoJ
CQlZQUhPTy51dGlsLkRvbS5zZXRTdHlsZShvQ2FwdGlvbkFyZWEsICdkaXNwbGF5
JywgJ2Jsb2NrJyk7DQoJCQlZQUhPTy51dGlsLkRvbS5zZXRTdHlsZShvQ2FwdGlv
bkhvbGRlciwgJ2Rpc3BsYXknLCAnYmxvY2snKTsNCgkJfSBlbHNlIHsNCgkJCVlB
SE9PLnV0aWwuRG9tLnNldFN0eWxlKG9DYXB0aW9uQXJlYSwgJ2Rpc3BsYXknLCAn
bm9uZScpOw0KCQl9DQoJfTsNCgkNCgkNCgkvLyBTZXRzIGxpc3RlbmVycw0KCXRo
aXMuX3NldExpc3RlbmVycyA9IGZ1bmN0aW9uKCkgew0KCQl2YXIgb1BhcmVudCA9
IHRoaXMuX2dldFBhcmVudCgpOw0KCQkNCgkJdmFyIGFJdGVtcyA9IFlBSE9PLnV0
aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2l0ZW1UaHVtYicsICdhJywg
b1BhcmVudCk7DQoJCXZhciBhUHJldkxpbmtzID0gWUFIT08udXRpbC5Eb20uZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZSgncHJldkdhbGxlcnlJdGVtJywgJ2EnLCBvUGFy
ZW50KTsNCgkJdmFyIGFOZXh0TGlua3MgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKCduZXh0R2FsbGVyeUl0ZW0nLCAnYScsIG9QYXJlbnQp
Ow0KCQkNCgkJDQoJCVlBSE9PLnV0aWwuRXZlbnQuYWRkTGlzdGVuZXIoYUl0ZW1z
LCAnY2xpY2snLCB0aGlzLl9vbkl0ZW1DbGljaywgdGhpcywgdHJ1ZSk7DQoJCVlB
SE9PLnV0aWwuRXZlbnQuYWRkTGlzdGVuZXIoYVByZXZMaW5rcywgJ2NsaWNrJywg
dGhpcy5fb25QcmV2SXRlbUNsaWNrLCB0aGlzLCB0cnVlKTsNCgkJWUFIT08udXRp
bC5FdmVudC5hZGRMaXN0ZW5lcihhTmV4dExpbmtzLCAnY2xpY2snLCB0aGlzLl9v
bk5leHRJdGVtQ2xpY2ssIHRoaXMsIHRydWUpOw0KCX07DQoJDQoJDQoJLy8gRGlz
cGxheXMgaXRlbSBhdCBzZWxlY3RlZCBpbmRleA0KCXRoaXMuX2Rpc3BsYXlHYWxs
ZXJ5SXRlbSA9IGZ1bmN0aW9uKCRpSW5kZXgpIHsNCgkJaWYgKCRpSW5kZXggPCAw
IHx8ICRpSW5kZXggPj0gdGhpcy5fYUdhbGxlcnlJdGVtcy5sZW5ndGggfHwgdGhp
cy5faURpc3BsYXllZEl0ZW0gPT0gJGlJbmRleCkgew0KCQkJcmV0dXJuOw0KCQl9
DQoJCQ0KCQl0aGlzLl9pRGlzcGxheWVkSXRlbSA9IE51bWJlcigkaUluZGV4KTsN
CgkJDQoJCXZhciBvUGFyZW50ID0gdGhpcy5fZ2V0UGFyZW50KCk7DQoJCXZhciBv
Q29udGVudEFyZWEgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lKCdpbm5lckNvbnRlbnQnLCAnZGl2Jywgb1BhcmVudClbMF07DQoJCXZhciBv
RGlzcGxheUpTID0gdGhpcy5fYUdhbGxlcnlJdGVtc1skaUluZGV4XTsNCgkJdmFy
IHNFbGVtZW50SFRNTCA9ICcnOw0KCQl0aGlzLl9pbml0R2FsbGVyeUNvbnRlbnRB
cmVhKCk7DQoJCQ0KCQlpZiAob0Rpc3BsYXlKUy50eXBlID09ICdnYWxsZXJ5SW1h
Z2UnKSB7DQoJCSAgICBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lKCdpdGVtQ29udGVudCcsICdkaXYnLCBvUGFyZW50KVswXS5zdHlsZS5iYWNr
Z3JvdW5kID0gJyNGRkZGRkYnOw0KCQkgICAgaWYgKG9EaXNwbGF5SlMub0ltZyA9
PSBudWxsKQ0KCQkgICAgew0KCQkgICAgICAgIC8vIFByZS1sb2FkIHRoZSBpbWFn
ZToNCgkJICAgICAgICBvRGlzcGxheUpTLm9JbWcgPSBuZXcgSW1hZ2Uob0Rpc3Bs
YXlKUy5zdGFuZGFyZFdpZHRoLCBvRGlzcGxheUpTLnN0YW5kYXJkSGVpZ2h0KTsN
CgkJICAgICAgICBvRGlzcGxheUpTLm9JbWcuc3JjID0gJ2h0dHA6Ly9pbWcud29u
ZGVyaG93dG8uY29tL2ltYWdlcy9nZngvZ2FsbGVyeS8nICsgZGVjb2RlVVJJQ29t
cG9uZW50KG9EaXNwbGF5SlMuc3RhbmRhcmRTb3VyY2UpOw0KCQkgICAgfQ0KCQkJ
c0VsZW1lbnRIVE1MID0gdGhpcy5fc0ltYWdlSHRtbFRlbXBsYXRlLmZvcm1hdCgn
L2ltYWdlcy9jbGVhci5naWYnLCAkaUluZGV4LCBkZWNvZGVVUklDb21wb25lbnQo
b0Rpc3BsYXlKUy5sYXJnZVNvdXJjZSkpOw0KCQkJDQoJCQl0aGlzLl9kaXNwbGF5
SW1hZ2VDcmVkaXQoZGVjb2RlVVJJQ29tcG9uZW50KG9EaXNwbGF5SlMuc3RhbmRh
cmRTb3VyY2UpKTsNCgkJfSBlbHNlIHsNCgkJCS8vIEhpZGUgSW1hZ2UgY3JlZGl0
cw0KCQkJdGhpcy5fZGlzcGxheUltYWdlQ3JlZGl0KG51bGwpOw0KCQkJDQoJCSAg
ICBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpdGVtQ29u
dGVudCcsICdkaXYnLCBvUGFyZW50KVswXS5zdHlsZS5iYWNrZ3JvdW5kID0gJyM2
OTY5NjkgdXJsKC9pbWFnZXMvcHJvZ3Jlc3Nfc3Rhcl9kYXJrLmdpZikgbm8tcmVw
ZWF0IGNlbnRlciBjZW50ZXInOw0KCQkJc0VsZW1lbnRIVE1MID0gdGhpcy5fc1Zp
ZGVvSHRtbFRlbXBsYXRlLmZvcm1hdCh1bmVzY2FwZShvRGlzcGxheUpTLmVtYmVk
VGFnKSwgJGlJbmRleCwgdW5lc2NhcGUob0Rpc3BsYXlKUy5jcmVkaXRUZXh0KSk7
DQoJCX0NCgkJDQoJCS8vIERpc3BsYXkgdGhlIHRodW1ibmFpbCBhcyBzZWxlY3Rl
ZA0KCQl0aGlzLl9zZXRTZWxlY3RlZFRodW1ibmFpbCgkaUluZGV4KTsNCgkJDQoJ
ICAgIC8vIEFzc2lnbiBIVE1MDQoJICAgIGlmIChvRGlzcGxheUpTLnR5cGUgPT0g
J2dhbGxlcnlJbWFnZScpIHsNCgkgICAgICAgIHZhciBvSW1nID0gb0NvbnRlbnRB
cmVhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbWcnKTsNCgkgICAgICAgIGlmIChv
SW1nLmxlbmd0aCA9PSAwKQ0KCSAgICAgICAgew0KCSAgICAgICAgICAgIG9Db250
ZW50QXJlYS5pbm5lckhUTUwgPSBzRWxlbWVudEhUTUw7DQoJICAgICAgICAgICAg
b0ltZyA9IG9Db250ZW50QXJlYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1nJylb
MF07DQoJICAgICAgICB9DQoJICAgICAgICBlbHNlDQoJICAgICAgICB7DQoJICAg
ICAgICAgICAgb0ltZyA9IG9JbWdbMF07DQoJICAgICAgICB9DQoJICAgICAgICBv
SW1nLnNyYyA9IG9EaXNwbGF5SlMub0ltZy5zcmM7DQoJICAgICAgICBvSW1nLmNs
YXNzTmFtZSA9ICdpdGVtJyArIFN0cmluZygkaUluZGV4KTsNCgkgICAgICAgIHZh
ciBvQSA9IG9Db250ZW50QXJlYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpWzBd
Ow0KCSAgICAgICAgb0EuaHJlZiA9ICdodHRwOi8vaW1nLndvbmRlcmhvd3RvLmNv
bS9pbWFnZXMvZ2Z4L2dhbGxlcnkvJyArIGRlY29kZVVSSUNvbXBvbmVudChvRGlz
cGxheUpTLmxhcmdlU291cmNlKTsNCgkJCQ0KCQkJLy8gVG9nZ2xlICJIb3cgdG8g
dmlkZW8iIHRleHQgYW5kL29yIHRpdGxlDQoJCQl0aGlzLl90b2dnbGVIVFZMYWJl
bEFuZExpbmsob1BhcmVudCwgbnVsbCk7DQoJICAgIH0gZWxzZSB7DQoJICAgICAg
ICBvQ29udGVudEFyZWEuaW5uZXJIVE1MID0gc0VsZW1lbnRIVE1MOw0KCQkJDQoJ
CQkvLyBUb2dnbGUgIkhvdyB0byB2aWRlbyIgdGV4dCBhbmQvb3IgdGl0bGUNCgkJ
CXRoaXMuX3RvZ2dsZUhUVkxhYmVsQW5kTGluayhvUGFyZW50LCBvRGlzcGxheUpT
KTsNCgkgICAgfQ0KCSAgICANCgkgICAgLy8gU2V0IHRoZSBjcmVkaXRzIG9mZnNl
dDoNCgkgICAgdmFyIGlDcmVkaXRzT2Zmc2V0ID0gMDsNCgkgICAgdmFyIG9EaXZD
cmVkaXRzID0gWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgn
aXRlbUNyZWRpdHMnLCAnZGl2Jywgb0NvbnRlbnRBcmVhKTsNCgkgICAgaWYgKG9E
aXZDcmVkaXRzLmxlbmd0aCA+IDApIHsNCgkgICAgICAgIGlDcmVkaXRzT2Zmc2V0
ID0gb0RpdkNyZWRpdHNbMF0ub2Zmc2V0SGVpZ2h0Ow0KCSAgICB9DQoJCQ0KCQkv
LyBGYWRlIG91dCAvIGluIGFuZCByZXNpemUgdG8gdGhlIG5ldyBpbWFnZToNCgkJ
dmFyIGlBbmltRHVyYXRpb24gPSAwLjM7DQoJCXZhciBvRmFkZU91dCA9IG5ldyBZ
QUhPTy51dGlsLkFuaW0ob0NvbnRlbnRBcmVhLCB7b3BhY2l0eToge3RvOiAwLjF9
fSwgaUFuaW1EdXJhdGlvbi80LCBZQUhPTy51dGlsLkVhc2luZy5lYXNlT3V0KTsN
CgkJdmFyIG9GYWRlSW4gPSBuZXcgWUFIT08udXRpbC5BbmltKG9Db250ZW50QXJl
YSwge29wYWNpdHk6IHt0bzogMS4wfX0sIGlBbmltRHVyYXRpb24sIFlBSE9PLnV0
aWwuRWFzaW5nLmVhc2VJbik7DQoJCXZhciBvUmVzaXplID0gbmV3IFlBSE9PLnV0
aWwuQW5pbShvQ29udGVudEFyZWEsIHtoZWlnaHQ6IHt0bzogb0Rpc3BsYXlKUy5z
dGFuZGFyZEhlaWdodCArIGlDcmVkaXRzT2Zmc2V0fX0sIGlBbmltRHVyYXRpb24s
IFlBSE9PLnV0aWwuRWFzaW5nLmVhc2VPdXQpOw0KCQlvRmFkZU91dC5vbkNvbXBs
ZXRlLnN1YnNjcmliZShmdW5jdGlvbigpew0KCQkgICAgb0ZhZGVJbi5hbmltYXRl
KCk7DQoJCX0pOw0KCQkNCgkJb0ZhZGVPdXQuYW5pbWF0ZSgpOw0KICAgICAgICBv
UmVzaXplLmFuaW1hdGUoKTsNCgkJDQoJCS8vIERpc3BsYXkgY2FwdGlvbg0KCQl0
aGlzLl9kaXNwbGF5Q2FwdGlvbihvUGFyZW50LCBkZWNvZGVVUklDb21wb25lbnQo
b0Rpc3BsYXlKUy5jYXB0aW9uKSk7DQoJfTsNCgkNCgkNCgl0aGlzLl9pbml0R2Fs
bGVyeUNvbnRlbnRBcmVhID0gZnVuY3Rpb24oKSB7DQoJICAgIGlmICh0aGlzLl9i
R2FsbGVyeUNvbnRlbnRBcmVhSW5pdGVkKSByZXR1cm47DQoJICAgIA0KCSAgICB2
YXIgb1BhcmVudCA9IHRoaXMuX2dldFBhcmVudCgpOw0KCQl2YXIgb0NvbnRlbnRB
cmVhID0gWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW5u
ZXJDb250ZW50JywgJ2RpdicsIG9QYXJlbnQpWzBdOw0KCQlvQ29udGVudEFyZWEu
c3R5bGUud2lkdGggPSAnNTMycHgnOw0KCQlvQ29udGVudEFyZWEuc3R5bGUuaGVp
Z2h0ID0gJzM5OXB4JzsNCgkJb0NvbnRlbnRBcmVhLnN0eWxlLm92ZXJmbG93ID0g
J2hpZGRlbic7DQoJICAgIA0KCSAgICB0aGlzLl9iR2FsbGVyeUNvbnRlbnRBcmVh
SW5pdGVkID0gdHJ1ZTsNCgl9Ow0KCQ0KCQ0KCS8vIERpc3BsYXlzIGltYWdlIGNy
ZWRpdCBzdHJpbmcsIGlmIG9uZSBleGlzdHMNCgl0aGlzLl9kaXNwbGF5SW1hZ2VD
cmVkaXQgPSBmdW5jdGlvbigkc0ltYWdlU291cmNlKSB7DQoJCXZhciBvUGFyZW50
ID0gdGhpcy5fZ2V0UGFyZW50KCk7DQoJCXZhciBvQ3JlZGl0QXJlYSA9IFlBSE9P
LnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ltYWdlQ3JlZGl0Jywg
J2RpdicsIG9QYXJlbnQpOw0KCQkNCgkJaWYgKCRzSW1hZ2VTb3VyY2UgIT0gbnVs
bCkgew0KCQkJdmFyIHNRdWVyeSA9ICcnOw0KCQkJdmFyIGFRdWVyeSA9IG51bGw7
DQoJCQkNCgkJCWlmIChvQ3JlZGl0QXJlYS5sZW5ndGggPiAwKSB7DQoJCQkJb0Ny
ZWRpdEFyZWEgPSBvQ3JlZGl0QXJlYVswXTsNCgkJCQkNCgkJCQlpZiAoJHNJbWFn
ZVNvdXJjZS5pbmRleE9mKCc/JykgPiAtMSkgew0KCQkJCQlzUXVlcnkgPSAkc0lt
YWdlU291cmNlLnN1YnN0cigkc0ltYWdlU291cmNlLmluZGV4T2YoJz8nKSArIDEp
LlJlcGxhY2UoJyZhbXA7JywgJyYnKTsNCgkJCQkJDQoJCQkJCWlmIChzUXVlcnkg
IT0gJycpIHsNCgkJCQkJCWFRdWVyeSA9IHRoaXMuX3BhcnNlUXVlcnlTdHJpbmco
ZGVjb2RlVVJJQ29tcG9uZW50KHNRdWVyeSkpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJ
CQ0KCQkJCWlmIChhUXVlcnkgIT0gbnVsbCkgew0KCQkJCQlvQ3JlZGl0QXJlYS5p
bm5lckhUTUwgPSB0aGlzLl9nZXRDcmVkaXRMaW5rKGFRdWVyeVsnZmlkJ10sIGFR
dWVyeVsnZm4nXSwgdHJ1ZSk7DQoJCQkJfQ0KCQkJfQ0KCQl9IGVsc2Ugew0KCQkJ
aWYgKG9DcmVkaXRBcmVhLmxlbmd0aCA+IDApIHsNCgkJCQlvQ3JlZGl0QXJlYSA9
IG9DcmVkaXRBcmVhWzBdOw0KCQkJCW9DcmVkaXRBcmVhLmlubmVySFRNTCA9ICcn
Ow0KCQkJfQ0KCQl9DQoJfTsNCgkNCgkNCgkvLyBEaXNwbGF5cyBvciBoaWRlcyAi
SG93IHRvIHZpZGVvIiB0YWcgYW5kL29yIHZpZGVvIHRpdGxlDQoJdGhpcy5fdG9n
Z2xlSFRWTGFiZWxBbmRMaW5rID0gZnVuY3Rpb24oJG9QYXJlbnQsICRvSXRlbUpT
KSB7DQoJCXZhciBvV0hUTGFiZWwgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKCd3aHRWaWRlbycsICdkaXYnLCAkb1BhcmVudCk7DQoJCXZh
ciBvVmlkZW9UaXRsZSA9IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFz
c05hbWUoJ3dodFRpdGxlJywgJ2RpdicsICRvUGFyZW50KTsNCgkJDQoJCWlmIChv
V0hUTGFiZWwubGVuZ3RoID4gMCkgew0KCQkJb1dIVExhYmVsID0gb1dIVExhYmVs
WzBdOwkNCgkJCQ0KCQkJLy8gRGVhbCB3aXRoIGxhYmVsDQoJCQlpZiAoJG9JdGVt
SlMgPT0gbnVsbCB8fCAhJG9JdGVtSlMuaXNIb3dUbykgew0KCQkJCVlBSE9PLnV0
aWwuRG9tLnNldFN0eWxlKG9XSFRMYWJlbCwgJ2Rpc3BsYXknLCAnbm9uZScpOw0K
CQkJfQ0KCQkJZWxzZSB7DQoJCQkJWUFIT08udXRpbC5Eb20uc2V0U3R5bGUob1dI
VExhYmVsLCAnZGlzcGxheScsICdibG9jaycpOw0KCQkJfQ0KCQl9DQoJCQ0KCQlp
ZiAob1ZpZGVvVGl0bGUubGVuZ3RoID4gMCkgew0KCQkJb1ZpZGVvVGl0bGUgPSBv
VmlkZW9UaXRsZVswXTsNCgkJCQ0KCQkJdmFyIG9BbmMgPSBZQUhPTy51dGlsLkRv
bS5nZXRBbmNlc3RvckJ5Q2xhc3NOYW1lKG9WaWRlb1RpdGxlLCAnY2FwdGlvblRl
eHQnKTsNCgkJCQ0KCQkJLy8gRGVhbCB3aXRoIHRpdGxlDQoJCQlpZiAoJG9JdGVt
SlMgPT0gbnVsbCB8fCAkb0l0ZW1KUy52aWRlb0lEIDwgMCB8fCAoJG9JdGVtSlMu
dmlkZW9UaXRsZSA9PSAnJyAmJiAkb0l0ZW1KUy5jYXB0aW9uID09ICcnKSkgew0K
CQkJCVlBSE9PLnV0aWwuRG9tLnNldFN0eWxlKG9BbmMsICdkaXNwbGF5JywgJ25v
bmUnKTsNCgkJCQkNCgkJCQlvVmlkZW9UaXRsZS5pbm5lckhUTUwgPSAnJzsNCgkJ
CX0NCgkJCWVsc2Ugew0KCQkJCVlBSE9PLnV0aWwuRG9tLnNldFN0eWxlKG9BbmMs
ICdkaXNwbGF5JywgJ2Jsb2NrJyk7DQoJCQkJDQoJCQkJb1ZpZGVvVGl0bGUuaW5u
ZXJIVE1MID0gJzxhIGhyZWY9IicgKyBkZWNvZGVVUklDb21wb25lbnQoJG9JdGVt
SlMudmlkZW9MaW5rKSArICciPicgKyBkZWNvZGVVUklDb21wb25lbnQoJG9JdGVt
SlMudmlkZW9UaXRsZSkgKyAnPC9hPic7DQoJCQl9DQoJCX0NCgl9Ow0KCQ0KCQ0K
CS8vIFJlbmRlcnMgY3JlZGl0IGxpbmsNCgl0aGlzLl9nZXRDcmVkaXRMaW5rID0g
ZnVuY3Rpb24oJHNJRCwgJHNOYW1lLCAkYkZvbGxvdykgew0KCSAgICByZXR1cm4g
J0ZsaWNrciBpbWFnZSBieSA8YSBocmVmPVwiaHR0cDovL3d3dy5mbGlja3IuY29t
L3Bob3Rvcy97MH1cIiB0YXJnZXQ9XCJfYmxhbmtcInsyfT57MX08L2E+Jy5mb3Jt
YXQoJHNJRCwgJHNOYW1lLCAoISRiRm9sbG93KSA/ICcgcmVsPSJub2ZvbGxvdyIn
IDogJycpOw0KCX07DQoJDQoJDQoJLy8gUGFyc2VzIHF1ZXJ5IHN0cmluZyBhbmQg
cmV0dXJucyBhbiBhc3NvY2lhdGl2ZSBhcnJheS4gUXVlcnkgc3RyaW5nIG11c3Qg
bm90IGluY2x1ZGUgJz8nDQoJdGhpcy5fcGFyc2VRdWVyeVN0cmluZyA9IGZ1bmN0
aW9uKCRzUXVlcnkpIHsNCgkgICAgdmFyIGFQYXJ0cyA9ICRzUXVlcnkuc3BsaXQo
JyYnKTsNCgkgICAgdmFyIGFSZXR1cm5WYWx1ZXMgPSB7fTsNCgkgICAgDQoJICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgYVBhcnRzLmxlbmd0aDsgaSsrKSB7DQoJICAg
ICAgICB2YXIgYU5hbWVWYWx1ZSA9IGFQYXJ0c1tpXS5zcGxpdCgnPScpOw0KCSAg
ICAgICAgDQoJICAgICAgICBhUmV0dXJuVmFsdWVzW2FOYW1lVmFsdWVbMF1dID0g
YU5hbWVWYWx1ZVsxXTsNCgkgICAgfQ0KCSAgICANCgkgICAgcmV0dXJuIGFSZXR1
cm5WYWx1ZXM7DQoJfTsNCgkNCgkNCgkvLyBSZXR1cm5zIFBhcmVudCBET00gb2Jq
ZWN0DQoJdGhpcy5fZ2V0UGFyZW50ID0gZnVuY3Rpb24oKSB7DQoJCXZhciBvUGFy
ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5fb0dhbGxlcnkuaWQp
Ow0KCQkNCgkJcmV0dXJuIG9QYXJlbnQ7DQoJfTsNCgkNCgkNCgkvLyBTZXRzIGFw
cHJvcHJpYXRlIHBhZ2Ugc3R5bGVzDQoJdGhpcy5fc2V0SXRlbVBhZ2luZyA9IGZ1
bmN0aW9uKCkgew0KCQlpZiAodGhpcy5fYUdhbGxlcnlJdGVtcy5sZW5ndGggPCAy
KSB7DQoJCQl2YXIgb1BhcmVudCA9IHRoaXMuX2dldFBhcmVudCgpOw0KCQkJdmFy
IG9QcmV2SXRlbSA9IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFzc05h
bWUoJ3ByZXZHYWxsZXJ5SXRlbScsICdhJywgb1BhcmVudClbMF07DQoJCQl2YXIg
b05leHRJdGVtID0gWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSgnbmV4dEdhbGxlcnlJdGVtJywgJ2EnLCBvUGFyZW50KVswXTsNCgkJCQ0KCQkJ
WUFIT08udXRpbC5Eb20uc2V0U3R5bGUob1ByZXZJdGVtLCAnZGlzcGxheScsICdu
b25lJyk7DQoJCQlZQUhPTy51dGlsLkRvbS5zZXRTdHlsZShvTmV4dEl0ZW0sICdk
aXNwbGF5JywgJ25vbmUnKTsNCgkJfQ0KCX07DQoJDQoJDQoJLy8gU2V0cyBzZWxl
Y3RlZCB0aHVtYm5haWwNCgl0aGlzLl9zZXRTZWxlY3RlZFRodW1ibmFpbCA9IGZ1
bmN0aW9uKCRpSW5kZXgpIHsNCgkJLy8gUmVtb3ZlIHNlbGVjdGlvbiBmcm9tIGFs
bCBvZiB0aGVtIGZpcnN0DQoJCXZhciBvUGFyZW50ID0gdGhpcy5fZ2V0UGFyZW50
KCk7DQoJCXZhciBhVHVtYm5haWxzID0gWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZSgnaXRlbVRodW1iJywgJ2EnLCBvUGFyZW50KTsNCgkJWUFI
T08udXRpbC5Eb20ucmVtb3ZlQ2xhc3MoYVR1bWJuYWlscywgJ3NlbGVjdGVkVGh1
bWInKTsNCgkJDQoJCS8vIFNlbGVjdCBzdXBwbGllZCBvbmUNCgkJWUFIT08udXRp
bC5Eb20uYWRkQ2xhc3MoYVR1bWJuYWlsc1skaUluZGV4XSwgJ3NlbGVjdGVkVGh1
bWInKTsNCgl9Ow0KCQ0KCS8vIEluaXRpYWxpemUNCgl0aGlzLl9pbml0KCk7DQp9
Ow0KDQoNCllBSE9PLndodC5kb2NYLkRvY1hDb21wYXJlID0gZnVuY3Rpb24oKSB7
DQogICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICAvLyBQdWJsaWMgbWV0
aG9kcw0KICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgLy8gUmV0dXJu
cyBkb2N1bWVudCB3aXRoIGFwcHJvcHJpYXRlIGNsYXNzZXMgdG8gc2hvdyB0aGUg
Y29tcGFyaXNvbg0KICAgIHRoaXMuY29tcGFyZUFuZFNob3cgPSBmdW5jdGlvbigk
b1ZhbCkgew0KICAgICAgICAvLyBHZXQgcmVmZXJlbmNlIHRvIHRoZSBkb2MgcGFy
dHMNCiAgICAgICAgdmFyIERvbSA9IFlBSE9PLnV0aWwuRG9tOw0KICAgICAgICB2
YXIgb0Zyb20gPSB0aGlzLl9nZXRET01Eb2NQYXJ0KCRvVmFsLnBhcnRzWzBdKTsN
CiAgICAgICAgdmFyIG9UbyA9IHRoaXMuX2dldERPTURvY1BhcnQoJG9WYWwucGFy
dHNbMV0pOw0KICAgICAgICANCiAgICAgICAgaWYgKG9Gcm9tID09IG51bGwgfHwg
b1RvID09IG51bGwpIHsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0K
CQkNCgkJdmFyIG9EaWZmV3JhcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdk
aWZmV3JhcCcpOw0KCQl2YXIgb0RpZmZBcnRpY2xlRGF0YSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdkaWZmQXJ0aWNsZURhdGEnKTsNCgkJdmFyIG9EaWZmRGF0
YVBhcmVudCA9IERvbS5nZXRBbmNlc3RvckJ5Q2xhc3NOYW1lKG9EaWZmQXJ0aWNs
ZURhdGEsICdhcnRpY2xlRGF0YScpOw0KICAgICAgICB2YXIgb0RpZmZEb2MgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGlmZkRvYycpOw0KCQl2YXIgc0Vyck1z
ZyA9ICcnOw0KCQkNCgkJLy8gQ2xlYXIgaW5uZXIgSFRNTA0KCQlEb20uYWRkQ2xh
c3Mob0RpZmZEYXRhUGFyZW50LCAnaGlkZScpOw0KCQlvRGlmZkFydGljbGVEYXRh
LmlubmVySFRNTCA9ICcnOw0KICAgICAgICBvRGlmZkRvYy5pbm5lckhUTUwgPSAn
JzsNCiAgICAgICAgDQogICAgICAgIHZhciBvRGlmZkRpdiA9IG51bGw7DQoJCXZh
ciBvRGlmZkRhdGFEaXYgPSBudWxsOw0KICAgICAgICANCiAgICAgICAgLy8gVGhl
IGxvZ2ljIHNlZW1zIGEgbGl0dGxlIHJldmVyc2UsIGJ1dCB3ZSdyZSBiYXNpY2Fs
bHkgY29tcGFyaW5nIHRoZSBlbGVtZW50cyBmcm9tIG9UbyB0byBvRnJvbQ0KICAg
ICAgICBvRGlmZkRpdiA9IHRoaXMuX2NvbXBhcmVEb2NQYXJ0cyhvRnJvbSwgb1Rv
KTsNCgkJb0RpZmZEYXRhRGl2ID0gdGhpcy5fY29tcGFyZUFydGljbGVEYXRhKCRv
VmFsLnBhcnRzWzRdLCAkb1ZhbC5wYXJ0c1s1XSk7DQoJCQ0KCQkNCgkJaWYgKG9E
aWZmRGl2ID09IG51bGwgJiYgb0RpZmZEYXRhRGl2ID09IG51bGwpIHsNCgkJCW9E
aWZmRG9jLmlubmVySFRNTCA9ICc8cD5SZXB1Ymxpc2hlZCB3aXRoIG5vIGNoYW5n
ZXMuPC9wPic7DQoJCQlEb20ucmVtb3ZlQ2xhc3Mob0RpZmZXcmFwLCAnaGlkZScp
Ow0KCQl9DQoJCWVsc2Ugew0KCQkJLy8gRGlzcGxheSByZXN1bHRzDQoJCQlpZiAo
b0RpZmZEaXYgIT0gbnVsbCkgew0KCSAgICAgICAgICAgIC8vIFNldCBIVE1MDQoJ
ICAgICAgICAgICAgb0RpZmZEb2MuaW5uZXJIVE1MID0gb0RpZmZEaXYuaW5uZXJI
VE1MOw0KCSAgICAgICAgICAgIERvbS5yZW1vdmVDbGFzcyhvRGlmZldyYXAsICdo
aWRlJyk7DQoJICAgICAgICB9DQoJICAgICAgICBlbHNlIHsNCgkgICAgICAgICAg
ICBEb20uYWRkQ2xhc3Mob0RpZmZXcmFwLCAnaGlkZScpOw0KCSAgICAgICAgfQ0K
CQkJDQoJCQlpZiAob0RpZmZEYXRhRGl2ICE9IG51bGwpIHsNCgkJCQlvRGlmZkFy
dGljbGVEYXRhLmlubmVySFRNTCA9IG9EaWZmRGF0YURpdi5pbm5lckhUTUw7DQoJ
CQkJRG9tLnJlbW92ZUNsYXNzKG9EaWZmV3JhcCwgJ2hpZGUnKTsNCgkJCQlEb20u
cmVtb3ZlQ2xhc3Mob0RpZmZEYXRhUGFyZW50LCAnaGlkZScpOw0KCQkJfQ0KCQkJ
ZWxzZSB7DQoJICAgICAgICAgICAgRG9tLmFkZENsYXNzKG9EaWZmRGF0YVBhcmVu
dCwgJ2hpZGUnKTsNCgkgICAgICAgIH0NCgkJfQ0KCQkNCgkJLy8gU2Nyb2xsIHRv
IHRoZSByaWdodCBwYXJ0IG9mIHRoZSBwYWdlDQogICAgICAgIHdpbmRvdy5zY3Jv
bGxUbygwLCBvRGlmZldyYXAub2Zmc2V0VG9wKTsNCiAgICB9Ow0KICAgIA0KICAg
IA0KICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgLy8gUHJpdmF0ZSBt
ZXRob2RzDQogICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICB0aGlzLl9j
b21wYXJlQXJ0aWNsZURhdGEgPSBmdW5jdGlvbigkb0Zyb20sICRvVG8pIHsNCgkJ
dmFyIERvbSA9IFlBSE9PLnV0aWwuRG9tOw0KICAgICAgICB2YXIgb0RpZmYgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsNCgkJdmFyIHNJbm5lckhUTUwg
PSAnJzsNCgkJDQoJCS8vIENoZWNrIHRpdGxlDQoJCWlmICgkb0Zyb21bMF0gIT0g
JG9Ub1swXSkgew0KCQkJc0lubmVySFRNTCArPSAnPGxpPjxzcGFuIGNsYXNzPSJk
aWZmUmVtb3ZlZCI+IicgKyAkb1RvWzBdICsgJyI8L3NwYW4+ICZyYXJyOyA8c3Bh
bj4iJyArICRvRnJvbVswXSArICciPC9zcGFuPjwvbGk+JzsgDQoJCX0NCgkJDQoJ
CS8vIENoZWNrIGltYWdlDQoJCWlmICgkb0Zyb21bMV0gIT0gJG9Ub1sxXSkgew0K
CQkJc0lubmVySFRNTCArPSAnPGxpPjxpbWcgY2xhc3M9ImRpZmZSZW1vdmVkIiBz
cmM9Imh0dHA6Ly9pbWcud29uZGVyaG93dG8uY29tL2ltYWdlcy9nZngvZ2FsbGVy
eS8nICsgJG9Ub1sxXSArICciIC8+ICZyYXJyOyAnOw0KCQkJc0lubmVySFRNTCAr
PSAnPGltZyBjbGFzcz0iZGlmZk5ldyIgc3JjPSJodHRwOi8vaW1nLndvbmRlcmhv
d3RvLmNvbS9pbWFnZXMvZ2Z4L2dhbGxlcnkvJyArICRvRnJvbVsxXSArICciIC8+
JzsNCgkJfQ0KCQkNCgkJLy8gQ2hlY2sgY2F0ZWdvcmllcw0KCQlpZiAoJG9Gcm9t
WzRdICE9ICRvVG9bNF0pIHsNCgkJCXNJbm5lckhUTUwgKz0gJzxsaT48c3BhbiBj
bGFzcz0iZGlmZlJlbW92ZWQiPjxhIGhyZWY9IicgKyAkb1RvWzRdICsgJyI+JyAr
ICRvVG9bM10gKyAnIC8gJyArICRvVG9bNV0gKyAnPC9hPjwvc3Bhbj4gJnJhcnI7
ICc7DQoJCQlzSW5uZXJIVE1MICs9ICc8YSBocmVmPSInICsgJG9Gcm9tWzRdICsg
JyI+JyArICRvRnJvbVszXSArICcgLyAnICsgJG9Gcm9tWzVdICsgJzwvYT4nOw0K
CQl9DQoJCQ0KCQlpZiAoc0lubmVySFRNTCAhPSAnJykgew0KCQkJc0lubmVySFRN
TCA9ICc8dWw+JyArIHNJbm5lckhUTUwgKyAnPC91bD4nOw0KCQkJb0RpZmYuaW5u
ZXJIVE1MID0gc0lubmVySFRNTDsNCgkJCXJldHVybiBvRGlmZjsNCgkJfQ0KCQkN
CgkJcmV0dXJuIG51bGw7DQoJfTsNCgkNCgkvLyBDb21wYXJlcyBkb2NzIHBhcnRz
DQogICAgdGhpcy5fY29tcGFyZURvY1BhcnRzID0gZnVuY3Rpb24oJG9Gcm9tLCAk
b1RvKSB7DQogICAgICAgIHZhciBEb20gPSBZQUhPTy51dGlsLkRvbTsNCiAgICAg
ICAgdmFyIG9FbHRzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7DQoJ
CXZhciBiSGFzQ2hhbmdlcyA9IGZhbHNlOw0KICAgICAgICANCiAgICAgICAgLy8g
R28gdGhvdWdoIGVhY2ggY2hpbGQgb2YgJG9UbyBlbGVtZW50IGFuZCBmaW5kIGEg
bWF0Y2ggaW4gJG9Gcm9tOg0KICAgICAgICAvLyAgICAgIDEuIElmIG5vIG1hdGNo
IGlmIGZvdW5kLCB0aGlzIGVsZW1lbnQgaXMgZGVsZXRlZA0KICAgICAgICAvLyAg
ICAgIDIuIEFsbCBlbGVtZW50cyB0aGF0IGNvbWUgYmVmb3JlIHRoZSBtYXRjaCBh
cmUgdHJlYXRlZCBhcyBuZXcgZWxlbWVudHMNCiAgICAgICAgLy8gICAgICAzLiBJ
ZiBtYXRjaCBpcyBmb3VuZCBhdCBwb3NpdGlvbiAwLCB0aGVuIGVsZW1lbnQgZGlk
IG5vdCBjaGFuZ2UsIGp1c3QgYWRkIGl0IHRvIHRoZSBsaXN0DQogICAgICAgIHdo
aWxlICgkb1RvLmNoaWxkTm9kZXMubGVuZ3RoID4gMCkgew0KICAgICAgICAgICAg
Ly8gR2V0IGZpcnN0IGNoaWxkDQogICAgICAgICAgICB2YXIgb1RvQ2hpbGQgPSAk
b1RvLmNoaWxkTm9kZXNbMF07DQogICAgICAgICAgICB2YXIgaUluZGV4ID0gdGhp
cy5fZ2V0TWF0Y2hpbmdFbHRJbmRleChvVG9DaGlsZC5vdXRlckhUTUwsICRvRnJv
bSk7DQogICAgICAgICAgICANCiAgICAgICAgICAgIC8vIFRlbXBvcmFyaWx5IHN0
b3JlIG5ldyBlbGVtZW50cyBlbHNld2hlcmUgYW5kIGFwcGVuZCBhZnRlciB0aGUg
ImRlbGV0ZWQiIGVsZW1lbnRzIGhhdmUgYmVlbiBhZGRlZA0KICAgICAgICAgICAg
dmFyIG9OZXdFbHRQYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsNCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaUluZGV4OyBpKysp
IHsNCgkJCQliSGFzQ2hhbmdlcyA9IHRydWU7DQogICAgICAgICAgICAgICAgb05l
d0VsdFBhcmVudC5hcHBlbmRDaGlsZCgkb0Zyb20uY2hpbGROb2Rlc1swXSk7DQog
ICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmIChpSW5k
ZXggPCAwKSB7DQoJCQkJYkhhc0NoYW5nZXMgPSB0cnVlOw0KICAgICAgICAgICAg
ICAgIC8vIEVsZW1lbnQgaGFzIGJlZW4gcmVtb3ZlZA0KICAgICAgICAgICAgICAg
IHRoaXMuX2FwcGVuZERpZmZFbHQob0VsdHMsIG9Ub0NoaWxkLCBmYWxzZSk7DQog
ICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIC8vIEFkZCBh
bGwgbmV3IGVsZW1lbnRzDQogICAgICAgICAgICB3aGlsZSAob05ld0VsdFBhcmVu
dC5jaGlsZE5vZGVzLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAgICB0aGlz
Ll9hcHBlbmREaWZmRWx0KG9FbHRzLCBvTmV3RWx0UGFyZW50LmNoaWxkTm9kZXNb
MF0sIHRydWUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQogICAgICAg
ICAgICBpZiAoaUluZGV4ID49IDApIHsNCiAgICAgICAgICAgICAgICAvLyBFbGVt
ZW50IGRpZCBub3QgY2hhbmdlDQogICAgICAgICAgICAgICAgb0VsdHMuYXBwZW5k
Q2hpbGQob1RvQ2hpbGQpOw0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAg
ICAgIC8vIFJlbW92ZSB0aGUgdG9wICRvRnJvbSBlbHQgYWxzbw0KICAgICAgICAg
ICAgICAgICRvRnJvbS5yZW1vdmVDaGlsZCgkb0Zyb20uY2hpbGROb2Rlc1swXSk7
DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC8v
IEdvIHRocm91Z2ggdGhlIHJlbWFpbmluZyBjaGlsZHJlbiBhbmQgYWRkIHRoZW0g
YXMgbmV3IGVsZW1lbnRzDQogICAgICAgIHdoaWxlICgkb0Zyb20uY2hpbGROb2Rl
cy5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICB0aGlzLl9hcHBlbmREaWZmRWx0
KG9FbHRzLCAkb0Zyb20uY2hpbGROb2Rlc1swXSwgdHJ1ZSk7DQogICAgICAgIH0N
CgkJDQoJCWlmIChiSGFzQ2hhbmdlcykgew0KCQkJcmV0dXJuIG9FbHRzOw0KCQl9
DQogICAgICAgIA0KICAgICAgICByZXR1cm4gbnVsbDsNCiAgICB9Ow0KICAgIA0K
ICAgIA0KICAgIC8vIEFkZHMgYSBkZWxldGVkIG9yIG5ldyBlbHQNCiAgICB0aGlz
Ll9hcHBlbmREaWZmRWx0ID0gZnVuY3Rpb24oJG9QYXJlbnQsICRvQ2hpbGQsICRi
TmV3KSB7DQogICAgICAgIHZhciBEb20gPSBZQUhPTy51dGlsLkRvbTsNCiAgICAg
ICAgDQogICAgICAgIGlmICgkYk5ldykgew0KICAgICAgICAgICAgaWYgKERvbS5o
YXNDbGFzcygkb0NoaWxkLCAnbWVkaWFHYWxsZXJ5JykpIHsNCiAgICAgICAgICAg
ICAgICBEb20uYWRkQ2xhc3MoJG9DaGlsZCwgJ2RpZmZOZXdHYWwnKTsNCiAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgIERv
bS5hZGRDbGFzcygkb0NoaWxkLCAnZGlmZk5ldycpOw0KICAgICAgICAgICAgfQ0K
ICAgICAgICB9DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgaWYgKERvbS5o
YXNDbGFzcygkb0NoaWxkLCAnbWVkaWFHYWxsZXJ5JykpIHsNCiAgICAgICAgICAg
ICAgICBEb20uYWRkQ2xhc3MoJG9DaGlsZCwgJ2RpZmZSZW1vdmVkR2FsJyk7DQog
ICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAg
ICBEb20uYWRkQ2xhc3MoJG9DaGlsZCwgJ2RpZmZSZW1vdmVkJyk7DQogICAgICAg
ICAgICB9DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgICRvUGFyZW50LmFw
cGVuZENoaWxkKCRvQ2hpbGQpOw0KICAgIH07DQogICAgDQogICAgDQogICAgLy8g
UmV0dXJucyBpbmRleCB0aGUgb2YgbWF0Y2hpbmcgZWxlbWVudCBvciAtMSBpZiBu
byBtYXRjaCBpcyBmb3VuZA0KICAgIHRoaXMuX2dldE1hdGNoaW5nRWx0SW5kZXgg
PSBmdW5jdGlvbigkc0hUTUwsICRvRG9jKSB7DQogICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgJG9Eb2MuY2hpbGROb2Rlcy5sZW5ndGg7IGkrKykgew0KICAgICAg
ICAgICAgdmFyIG9DaGlsZCA9ICRvRG9jLmNoaWxkTm9kZXNbaV07DQogICAgICAg
ICAgICB2YXIgc0VsdEhUTUwgPSBvQ2hpbGQub3V0ZXJIVE1MOw0KICAgICAgICAg
ICAgaWYgKHNFbHRIVE1MLnRyaW0oKSA9PSAkc0hUTUwudHJpbSgpKSB7DQogICAg
ICAgICAgICAgICAgcmV0dXJuIGk7DQogICAgICAgICAgICB9DQogICAgICAgIH0N
CiAgICAgICAgDQogICAgICAgIHJldHVybiAtMTsNCiAgICB9Ow0KICAgIA0KICAg
IA0KICAgIC8vIFJldHVybnMgRE9NIHJlcHJlc2VudGF0aW9uIG9mIERvY1hFZGl0
b3INCiAgICB0aGlzLl9nZXRET01Eb2NQYXJ0ID0gZnVuY3Rpb24oJHNIdG1sKSB7
DQogICAgICAgIHZhciBEb20gPSBZQUhPTy51dGlsLkRvbTsNCiAgICAgICAgdmFy
IG9FbHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsNCiAgICAgICAg
dmFyIG9UbXBFbHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsNCiAg
ICAgICAgDQogICAgICAgIG9UbXBFbHQuaW5uZXJIVE1MID0gJHNIdG1sOw0KICAg
ICAgICANCiAgICAgICAgLy8gUmVtb3ZlIGFueSB1bm5lZWRlZCB0YWdzDQogICAg
ICAgIHRoaXMuX3JlbW92ZUV4dHJhVGFncyhvVG1wRWx0KTsNCiAgICAgICAgDQog
ICAgICAgIGlmIChvVG1wRWx0LmZpcnN0Q2hpbGQgIT0gbnVsbCAmJiBEb20uaGFz
Q2xhc3Mob1RtcEVsdC5maXJzdENoaWxkLCAnZG9jWEVkaXRvcicpKSB7DQogICAg
ICAgICAgICBvVG1wRWx0LmlubmVySFRNTCA9IG9UbXBFbHQuZmlyc3RDaGlsZC5p
bm5lckhUTUw7DQogICAgICAgICAgICANCiAgICAgICAgICAgIHdoaWxlIChvVG1w
RWx0LmNoaWxkTm9kZXMubGVuZ3RoID4gMCkgew0KICAgICAgICAgICAgICAgIHZh
ciBvQ2hpbGQgPSBvVG1wRWx0LmZpcnN0Q2hpbGQ7DQogICAgICAgICAgICAgICAg
DQogICAgICAgICAgICAgICAgaWYgKERvbS5oYXNDbGFzcyhvQ2hpbGQsICd0ZXh0
QmxvY2snKSkgew0KICAgICAgICAgICAgICAgICAgICB0aGlzLl9tb3ZlQ2hpbGRy
ZW4ob0NoaWxkLCBvRWx0KTsNCiAgICAgICAgICAgICAgICAgICAgb1RtcEVsdC5y
ZW1vdmVDaGlsZChvQ2hpbGQpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
ICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgb0VsdC5hcHBlbmRD
aGlsZChvQ2hpbGQpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0N
CiAgICAgICAgICAgIA0KICAgICAgICAgICAgcmV0dXJuIG9FbHQ7DQogICAgICAg
IH0NCiAgICAgICAgDQogICAgICAgIHJldHVybiBudWxsOw0KICAgIH07DQogICAg
DQogICAgDQogICAgLy8gTW92ZXMgY2hpbGRyZW4gZnJvbSBvbmUgZWxlbWVudCB0
byB0aGUgb3RoZXINCiAgICB0aGlzLl9tb3ZlQ2hpbGRyZW4gPSBmdW5jdGlvbigk
b0Zyb20sICRvVG8pIHsNCiAgICAgICAgd2hpbGUoJG9Gcm9tLmNoaWxkTm9kZXMu
bGVuZ3RoID4gMCkgew0KICAgICAgICAgICAgJG9Uby5hcHBlbmRDaGlsZCgkb0Zy
b20uY2hpbGROb2Rlc1swXSk7DQogICAgICAgIH0NCiAgICB9Ow0KICAgIA0KICAg
IA0KICAgIC8vIFJlbW92ZXMgSUUgZ2Fwcw0KICAgIHRoaXMuX3JlbW92ZUV4dHJh
VGFncyA9IGZ1bmN0aW9uKCRvRWx0KSB7DQogICAgICAgIHZhciBhSUVHYXBzID0g
WUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaWVHYXAnLCBu
dWxsLCAkb0VsdCk7DQogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYUlFR2Fw
cy5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAg
ICAgICBhSUVHYXBzW2ldLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYUlFR2Fwc1tp
XSk7DQogICAgICAgICAgICB9IGNhdGNoIChlcnIpIHt9DQogICAgICAgIH0NCiAg
ICB9Ow0KfTsNCg0KDQoNCi8vIFNldCBicm93c2VyIHZlcnNpb25zDQpZQUhPTy5u
YW1lc3BhY2UoJ3ViJyk7IC8vIHVzZXItYnJvd3Nlcg0KWUFIT08udWIuaWUgPSAo
WUFIT08uZW52LnVhLmllID4gMCk7DQpZQUhPTy51Yi5pZTcgPSAoWUFIT08uZW52
LnVhLmllID49IDcgJiYgWUFIT08uZW52LnVhLmllIDwgOCk7DQpZQUhPTy51Yi5p
ZTggPSAoWUFIT08uZW52LnVhLmllID49IDggJiYgWUFIT08uZW52LnVhLmllIDwg
OSk7DQpZQUhPTy51Yi5nZWNrbyA9IChZQUhPTy5lbnYudWEuZ2Vja28gPiAwKTsN
CllBSE9PLnViLndlYmtpdCA9IChZQUhPTy5lbnYudWEud2Via2l0ID4gMCk7DQpZ
QUhPTy51Yi5iUlRFU3VwcG9ydGVkID0gKFlBSE9PLnViLmllNyB8fCBZQUhPTy51
Yi5pZTggfHwgWUFIT08udWIuZ2Vja28gfHwgWUFIT08udWIud2Via2l0KTs=
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline; filename=comment.js
Content-Type: application/x-javascript; charset=utf-8; name=comment.js
Content-Location: http://www.wonderhowto.com/js/comment.js?v=0902102
Content-Transfer-Encoding: Base64
77u/Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIENvcHlyaWdodCAyMDA3IFdv
bmRlckhvd1RvLCBJbmMuDQovLyANCi8vIE9yaWdpb25hbCBBdXRob3I6ICAgIE1h
cmF0IEtob3VkYWJha2hzaGlldg0KLy8gTGFzdCBNb2RpZmllZCBCeTogICAgTWFy
YXQgS2hvdWRhYmFraHNoaWV2DQovLyBMYXN0IE1vZGlmaWVkOiAgICAgICAwMy8y
Ni8yMDA5DQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQovLyBNYWtlIHN1cmUg
dGhlIHdodCBuYW1lc3BhY2UgZXhpc3RzOg0KWUFIT08ubmFtZXNwYWNlKCd3aHQn
KTsNCg0KDQpZQUhPTy53aHQuQ29tbWVudCA9IGZ1bmN0aW9uKCRpZCwgJGJJc1Zp
ZGVvKSANCnsNCiAgICB0aGlzLl9pSW5kZW50T2Zmc2V0ID0gMTY7DQogICAgdGhp
cy5faWQgPSAkaWQ7DQogICAgdGhpcy5fYklzVmlkZW8gPSAkYklzVmlkZW87DQog
ICAgDQogICAgDQogICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICAvLyBQ
dWJsaWMgTWV0aG9kcw0KICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAg
dGhpcy5zaG93Rm9ybSA9IGZ1bmN0aW9uKCRpUGFyZW50SUQsICRvTGluaywgJGJO
ZWVkRm9jdXMpDQogICAgew0KICAgICAgICAvLyBHZXQgYWhvbGQgb2YgdGhlIHJl
cGx5IGJveA0KCQl2YXIgYVJlcGx5Rm9ybXMgPSBZQUhPTy51dGlsLkRvbS5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKCdjb21tZW50UmVwbHknLCAnZGl2Jyk7DQoJCXZh
ciBvUmVwbHlGb3JtID0gbnVsbDsNCgkJDQoJCWlmIChhUmVwbHlGb3Jtcy5sZW5n
dGggPiAwKSB7DQoJCQlvUmVwbHlGb3JtID0gYVJlcGx5Rm9ybXNbYVJlcGx5Rm9y
bXMubGVuZ3RoIC0gMV07IC8vIEdldCB0aGUgbGFzdCBlbGVtZW50cw0KCQl9DQoJ
CWVsc2Ugew0KCQkJcmV0dXJuOw0KCQl9DQoJCSAgICAgICAgDQogICAgICAgIHZh
ciBiU2hvd01haW5BZGRMaW5rID0gKCRpUGFyZW50SUQgPT0gMCk7DQogICAgICAg
IHZhciBvTWFpbkNvbW1lbnRXcmFwcGVyID0gWUFIT08udXRpbC5Eb20uZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZSgndmlkZW9Db21tZW50c0Zvcm0nICsgdGhpcy5faWQg
KyAnfGFydGljbGVDb21tZW50c0Zvcm0nICsgdGhpcy5faWQsICdkaXYnKVswXTsN
CiAgICAgICAgdmFyIG9NYWluQWRkTGluayA9IFlBSE9PLnV0aWwuRG9tLmdldEVs
ZW1lbnRzQnlDbGFzc05hbWUoJ2FjdGlvbkNvbW1lbnQnLCAnYScsIG9NYWluQ29t
bWVudFdyYXBwZXIpOw0KCQkNCiAgICAgICAgLy8gUmVzZXQgdmFsdWVzDQogICAg
ICAgIHZhciBvQ29tbWVudFRleHQgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKCdjb21tZW50UmVwbHlUZXh0JywgJ3RleHRhcmVhJywgb1Jl
cGx5Rm9ybSlbMF07DQogICAgICAgIHZhciBvSGlkUGFyZW50SUQgPSBZQUhPTy51
dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoaWRQYXJlbnRJRCcsICdp
bnB1dCcsIG9SZXBseUZvcm0pWzBdOw0KICAgICAgICB2YXIgb1N1Ym1pdEJ1dHRv
biA9IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3N1Ym1p
dENvbW1lbnQnLCAnYScsIG9SZXBseUZvcm0pWzBdOw0KICAgICAgICANCiAgICAg
ICAgLy8gU2V0IGN1cnJlbnQgcGFyZW50IElEDQogICAgICAgIG9IaWRQYXJlbnRJ
RC52YWx1ZSA9ICRpUGFyZW50SUQ7DQogICAgICAgIA0KICAgICAgICAvLyBNYWtl
IHN1cmUgY29udHJvbHMgYXJlIGVuYWJsZWQNCiAgICAgICAgb0NvbW1lbnRUZXh0
LmRpc2FibGVkID0gZmFsc2U7DQogICAgICAgIG9TdWJtaXRCdXR0b24uZGlzYWJs
ZWQgPSBmYWxzZTsNCiAgICAgICAgDQogICAgICAgIC8vIFJlbW92ZSBpdCBmcm9t
IHRoZSBjdXJyZW50IHBhcmVudA0KICAgICAgICBvUmVwbHlGb3JtLnBhcmVudE5v
ZGUucmVtb3ZlQ2hpbGQob1JlcGx5Rm9ybSk7DQogICAgICAgIA0KICAgICAgICBp
ZiAoJGlQYXJlbnRJRCA9PSAwKQ0KICAgICAgICB7DQogICAgICAgICAgICAvLyBI
aWRlIHRoZSAiYWRkIGNvbW1lbnQiIGxpbmsgYXQgdGhlIGJvdHRvbQ0KICAgICAg
ICAgICAgWUFIT08udXRpbC5Eb20uYWRkQ2xhc3Mob01haW5BZGRMaW5rLCAnaGlk
ZScpOw0KICAgICAgICAgICAgDQogICAgICAgICAgICB0aGlzLl9zZXRJbmRlbnRh
dGlvbihvUmVwbHlGb3JtLCAwKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAg
Ly8gRGlzcGxheSB0aGUgYm94IGF0IHRoZSBib3R0b20NCiAgICAgICAgICAgIG9N
YWluQ29tbWVudFdyYXBwZXIuYXBwZW5kQ2hpbGQob1JlcGx5Rm9ybSk7DQogICAg
ICAgIH0NCiAgICAgICAgZWxzZSBpZiAoJG9MaW5rICE9IG51bGwpDQogICAgICAg
IHsNCiAgICAgICAgICAgIHZhciBvSW5zZXJ0QWZ0ZXIgPSBZQUhPTy51dGlsLkRv
bS5nZXRBbmNlc3RvckJ5Q2xhc3NOYW1lKCRvTGluaywgJ2NvbW1lbnQnKTsNCiAg
ICAgICAgICAgIA0KICAgICAgICAgICAgdmFyIG9PcmlnaW5hbFJlcGx5VG8gPSBv
SW5zZXJ0QWZ0ZXI7DQogICAgICAgICAgICB2YXIgb0N1cnJlbnRSZXBseUxpbmsg
PSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjb21tZW50
SW5kZW50JywgJ2RpdicsIG9JbnNlcnRBZnRlcilbMF07DQogICAgICAgICAgICB2
YXIgaUN1cnJlbnRMZXZlbCA9IGdldFByZWZpeGVkQ2xhc3NWYWx1ZShvQ3VycmVu
dFJlcGx5TGluaywgJ2Nhc2NhZGVMZXZlbCcpOw0KICAgICAgICAgICAgDQogICAg
ICAgICAgICB3aGlsZShZQUhPTy51dGlsLkRvbS5nZXROZXh0U2libGluZyhvSW5z
ZXJ0QWZ0ZXIpICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICAgLy92YXIgb0N1cnJlbnRSZXBseUxpbmsgPSBZQUhPTy51dGlsLkRvbS5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKCdjb21tZW50SW5kZW50JywgJ2RpdicsIG9JbnNl
cnRBZnRlcilbMF07DQogICAgICAgICAgICAgICAgdmFyIG9OZXh0UmVwbHlMaW5r
ID0gWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY29tbWVu
dEluZGVudCcsICdkaXYnLCBZQUhPTy51dGlsLkRvbS5nZXROZXh0U2libGluZyhv
SW5zZXJ0QWZ0ZXIpKVswXTsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAg
ICAgICAvL3ZhciBpQ3VycmVudExldmVsID0gZ2V0UHJlZml4ZWRDbGFzc1ZhbHVl
KG9DdXJyZW50UmVwbHlMaW5rLCAnY2FzY2FkZUxldmVsJyk7DQogICAgICAgICAg
ICAgICAgdmFyIGlOZXh0TGV2ZWwgPSBnZXRQcmVmaXhlZENsYXNzVmFsdWUob05l
eHRSZXBseUxpbmssICdjYXNjYWRlTGV2ZWwnKTsNCiAgICAgICAgICAgICAgICAN
CiAgICAgICAgICAgICAgICBpZiAoaU5leHRMZXZlbCA8PSBpQ3VycmVudExldmVs
KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7
DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAg
ICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIG9JbnNlcnRBZnRlciA9
IFlBSE9PLnV0aWwuRG9tLmdldE5leHRTaWJsaW5nKG9JbnNlcnRBZnRlcik7DQog
ICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQog
ICAgICAgICAgICAvLyBEaXNwbGF5ICJhZGQgY29tbWVudCIgbGluayBhZGQgdGhl
IGJvdHRvbQ0KICAgICAgICAgICAgWUFIT08udXRpbC5Eb20ucmVtb3ZlQ2xhc3Mo
b01haW5BZGRMaW5rLCAnaGlkZScpOw0KICAgICAgICAgICAgDQogICAgICAgICAg
ICB0aGlzLl9zZXRJbmRlbnRhdGlvbihvUmVwbHlGb3JtLCB0aGlzLl9jYWxjdWxh
dGVJbmRlbnRhdGlvbihvT3JpZ2luYWxSZXBseVRvKSk7DQogICAgICAgICAgICAN
CiAgICAgICAgICAgIC8vIERpc3BsYXkgUmVwbHkgY29tbWVudCBmb3JtDQogICAg
ICAgICAgICBZQUhPTy51dGlsLkRvbS5pbnNlcnRBZnRlcihvUmVwbHlGb3JtLCBv
SW5zZXJ0QWZ0ZXIpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAvLyBE
aXNwbGF5IGNvbW1lbnQgZm9ybQ0KICAgICAgICBZQUhPTy51dGlsLkRvbS5yZW1v
dmVDbGFzcyhvUmVwbHlGb3JtLCAnaGlkZScpOw0KICAgICAgICANCiAgICAgICAg
aWYgKCRiTmVlZEZvY3VzKQ0KICAgICAgICB7DQogICAgICAgICAgICAvLyBGb2N1
cyB0ZXh0Ym94DQogICAgICAgICAgICBvQ29tbWVudFRleHQuZm9jdXMoKTsNCiAg
ICAgICAgfQ0KICAgIH07DQogICAgDQogICAgDQogICAgLy8gUmVzZXRzIG9iamVj
dA0KICAgIHRoaXMucmVzZXRMaXN0ZW5lcnMgPSBmdW5jdGlvbigpIHsNCiAgICAg
ICAgLy8gT2J0YWluIHJlcXVpcmVkIGVsZW1lbnRzDQogICAgICAgIHRoaXMuX2FT
dWJtaXRDb21tZW50TGlua3MgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKCdzdWJtaXRDb21tZW50JywgJ2EnKTsNCiAgICAgICAgdGhpcy5f
YUNvbW1lbnRMaW5rcyA9IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFz
c05hbWUoJ2FjdGlvbkNvbW1lbnQnLCAnYScpOw0KICAgICAgICANCiAgICAgICAg
dGhpcy5fYVZvdGVVcENvbW1lbnRMaW5rcyA9IFlBSE9PLnV0aWwuRG9tLmdldEVs
ZW1lbnRzQnlDbGFzc05hbWUoJ2J1dHRvblVwJywgJ2EnKTsNCiAgICAgICAgdGhp
cy5fYVZvdGVEb3duQ29tbWVudExpbmtzID0gWUFIT08udXRpbC5Eb20uZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZSgnYnV0dG9uRG93bicsICdhJyk7IA0KICAgICAgICAN
CiAgICAgICAgLy8gUmVtb3ZlIGV2ZW50IGhhbmRsZXJzDQogICAgICAgIFlBSE9P
LnV0aWwuRXZlbnQucmVtb3ZlTGlzdGVuZXIodGhpcy5fYVN1Ym1pdENvbW1lbnRM
aW5rcywgJ2NsaWNrJywgdGhpcy5fb25Db21tZW50U3VibWl0Q2xpY2spOw0KICAg
ICAgICBZQUhPTy51dGlsLkV2ZW50LnJlbW92ZUxpc3RlbmVyKHRoaXMuX2FDb21t
ZW50TGlua3MsICdjbGljaycsIHRoaXMuX29uV3JpdGVDb21tZW50Q2xpY2spOw0K
ICAgICAgICANCiAgICAgICAgWUFIT08udXRpbC5FdmVudC5yZW1vdmVMaXN0ZW5l
cih0aGlzLl9hVm90ZVVwQ29tbWVudExpbmtzLCAnY2xpY2snLCB0aGlzLl9vbkNv
bW1lbnRWb3RlQ2xpY2spOw0KICAgICAgICBZQUhPTy51dGlsLkV2ZW50LnJlbW92
ZUxpc3RlbmVyKHRoaXMuX2FWb3RlRG93bkNvbW1lbnRMaW5rcywgJ2NsaWNrJywg
dGhpcy5fb25Db21tZW50Vm90ZUNsaWNrKTsNCiAgICAgICAgDQogICAgICAgIHRo
aXMuX29uUGFnZVJlYWR5KCk7DQogICAgfTsNCiAgICAvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KICAgIC8vIEVuZCBQdWJsaWMgTWV0aG9kcw0KICAgIC8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tDQogICAgDQogICAgDQogICAgDQogICAgLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCiAgICAvLyBFdmVudCBIYW5kbGVycw0KICAgIC8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQogICAgLy8gQXNzaWducyBldmVudCBoYW5kbGVy
cyBmb3IgYWxsIHJlcXVpcmVkIGV2ZW50cw0KICAgIHRoaXMuX29uUGFnZVJlYWR5
ID0gZnVuY3Rpb24oKQ0KICAgIHsNCiAgICAgICAgLy8gT2J0YWluIHJlcXVpcmVk
IGVsZW1lbnRzDQogICAgICAgIHRoaXMuX2FTdWJtaXRDb21tZW50TGlua3MgPSBZ
QUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzdWJtaXRDb21t
ZW50JywgJ2EnKTsNCiAgICAgICAgdGhpcy5fYUNvbW1lbnRMaW5rcyA9IFlBSE9P
LnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2FjdGlvbkNvbW1lbnQn
LCAnYScpOw0KICAgICAgICANCiAgICAgICAgdGhpcy5fYVZvdGVVcENvbW1lbnRM
aW5rcyA9IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2J1
dHRvblVwJywgJ2EnKTsNCiAgICAgICAgdGhpcy5fYVZvdGVEb3duQ29tbWVudExp
bmtzID0gWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYnV0
dG9uRG93bicsICdhJyk7IA0KICAgICAgICANCiAgICAgICAgLy8gQWRkIGV2ZW50
IGhhbmRsZXJzDQogICAgICAgIHRoaXMuX2NhcHR1cmVFdmVudHModGhpcy5fYVN1
Ym1pdENvbW1lbnRMaW5rcywgJ2NsaWNrJywgdGhpcy5fb25Db21tZW50U3VibWl0
Q2xpY2spOw0KICAgICAgICB0aGlzLl9jYXB0dXJlRXZlbnRzKHRoaXMuX2FDb21t
ZW50TGlua3MsICdjbGljaycsIHRoaXMuX29uV3JpdGVDb21tZW50Q2xpY2spOw0K
ICAgICAgICANCiAgICAgICAgdGhpcy5fY2FwdHVyZUV2ZW50cyh0aGlzLl9hVm90
ZVVwQ29tbWVudExpbmtzLCAnY2xpY2snLCB0aGlzLl9vbkNvbW1lbnRWb3RlQ2xp
Y2spOw0KICAgICAgICB0aGlzLl9jYXB0dXJlRXZlbnRzKHRoaXMuX2FWb3RlRG93
bkNvbW1lbnRMaW5rcywgJ2NsaWNrJywgdGhpcy5fb25Db21tZW50Vm90ZUNsaWNr
KTsNCiAgICB9Ow0KICAgIA0KICAgIHRoaXMuX29uQ29tbWVudFZvdGVDbGljayA9
IGZ1bmN0aW9uKCRvRXZlbnQpIHsNCiAgICAgICAgWUFIT08udXRpbC5FdmVudC5z
dG9wRXZlbnQoJG9FdmVudCk7IA0KICAgICAgICB2YXIgb0xpbmsgPSBZQUhPTy51
dGlsLkV2ZW50LmdldFRhcmdldCgkb0V2ZW50KTsNCiAgICAgICAgICANCiAgICAg
ICAgaWYgKCFZQUhPTy51dGlsLkRvbS5oYXNDbGFzcyhvTGluaywgJ2J1dHRvblVw
fGJ1dHRvbkRvd24nKSkgDQogICAgICAgICAgICBvTGluayA9IFlBSE9PLnV0aWwu
RG9tLmdldEFuY2VzdG9yQnlDbGFzc05hbWUob0xpbmssICdidXR0b25VcHxidXR0
b25Eb3duJyk7DQogICAgICAgICAgICANCiAgICAgICAgaWYgKFlBSE9PLnV0aWwu
RG9tLmhhc0NsYXNzKG9MaW5rLCAnYnRuRCcpKSByZXR1cm47DQoNCiAgICAgICAg
dmFyIGlWaWRlb0lEID0gZ2V0UHJlZml4ZWRDbGFzc1ZhbHVlKG9MaW5rLCAndmlk
ZW9JRCcpOw0KICAgICAgICB2YXIgaUFydGljbGVJRCA9IGdldFByZWZpeGVkQ2xh
c3NWYWx1ZShvTGluaywgJ2FydGljbGVJRCcpOw0KICAgICAgICB2YXIgaUNvbW1l
bnRJRCA9IGdldFByZWZpeGVkQ2xhc3NWYWx1ZShvTGluaywgJ2NvbW1lbnRJRCcp
Ow0KDQogICAgICAgIGlmICgoKGlWaWRlb0lEID09ICcnIHx8IGlWaWRlb0lEID09
IG51bGwpICYmIChpQXJ0aWNsZUlEID09ICcnIHx8IGlBcnRpY2xlSUQgPT0gbnVs
bCkpIHx8IGlDb21tZW50SUQgPT0gbnVsbCkNCiAgICAgICAgICAgIHJldHVybjsN
Cg0KICAgICAgICB0aGlzLl9zdWJtaXRWb3RlKGlDb21tZW50SUQsIGlWaWRlb0lE
LCBpQXJ0aWNsZUlELCBZQUhPTy51dGlsLkRvbS5oYXNDbGFzcyhvTGluaywgJ2J1
dHRvblVwJyksIFlBSE9PLnV0aWwuRG9tLmdldEFuY2VzdG9yQnlDbGFzc05hbWUo
b0xpbmssICdjb21tZW50Vm90ZXMnKSk7DQogICAgfTsNCiAgICANCiAgICB0aGlz
Ll9vbkNvbW1lbnRTdWJtaXRDbGljayA9IGZ1bmN0aW9uKCRvRXZlbnQpIHsNCiAg
ICAgICAgWUFIT08udXRpbC5FdmVudC5zdG9wRXZlbnQoJG9FdmVudCk7DQoJCXZh
ciBvTGluayA9IFlBSE9PLnV0aWwuRXZlbnQuZ2V0VGFyZ2V0KCRvRXZlbnQpOw0K
CQlpZiAoIVlBSE9PLnV0aWwuRG9tLmhhc0NsYXNzKG9MaW5rLCAnc3VibWl0Q29t
bWVudCcpKSBvTGluayA9IFlBSE9PLnV0aWwuRG9tLmdldEFuY2VzdG9yQnlDbGFz
c05hbWUob0xpbmssICdzdWJtaXRDb21tZW50Jyk7DQoNCgkJdmFyIG9QYXJlbnQg
PSBZQUhPTy51dGlsLkRvbS5nZXRBbmNlc3RvckJ5Q2xhc3NOYW1lKG9MaW5rLCAn
Y29tbWVudFJlcGx5Jyk7DQogICAgICAgIA0KICAgICAgICB0aGlzLl9wcmVwYXJl
QW5kU3VibWl0KGZhbHNlLCBvUGFyZW50KTsNCiAgICB9Ow0KICAgIA0KICAgIHRo
aXMuX29uV3JpdGVDb21tZW50Q2xpY2sgPSBmdW5jdGlvbigkb0V2ZW50KSB7DQog
ICAgICAgIFlBSE9PLnV0aWwuRXZlbnQuc3RvcEV2ZW50KCRvRXZlbnQpOw0KICAg
ICAgICANCiAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSB0YXJnZXQg
bGluayAmIGl0J3MgdmlkZW9JRCBjbGFzczoNCiAgICAgICAgdmFyIG9MaW5rID0g
WUFIT08udXRpbC5FdmVudC5nZXRUYXJnZXQoJG9FdmVudCk7DQogICAgICAgIGlm
ICghWUFIT08udXRpbC5Eb20uaGFzQ2xhc3Mob0xpbmssICdhY3Rpb25Db21tZW50
JykpIG9MaW5rID0gWUFIT08udXRpbC5Eb20uZ2V0QW5jZXN0b3JCeUNsYXNzTmFt
ZShvTGluaywgJ2FjdGlvbkNvbW1lbnQnKTsNCiAgICAgICAgdmFyIGlWaWRlb0lE
ID0gZ2V0UHJlZml4ZWRDbGFzc1ZhbHVlKG9MaW5rLCAndmlkZW9JRCcpOw0KICAg
ICAgICB2YXIgaVBhcmVudElEID0gZ2V0UHJlZml4ZWRDbGFzc1ZhbHVlKG9MaW5r
LCAncGFyZW50SUQnKTsNCiAgICAgICAgDQogICAgICAgIGlmIChpVmlkZW9JRCA9
PSBudWxsKSByZXR1cm47DQogICAgICAgIA0KICAgICAgICBpZiAoaVBhcmVudElE
ID09IG51bGwpIGlQYXJlbnRJRCA9IDA7DQoNCiAgICAgICAgdGhpcy5zaG93Rm9y
bShpUGFyZW50SUQsIG9MaW5rLCB0cnVlKTsNCiAgICB9Ow0KICAgIC8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tDQogICAgLy8gRW5kIEV2ZW50IEhhbmRsZXJzDQogICAg
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICANCiAgICANCiAgICANCiAgICAv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgIC8vIFByaXZhdGUgTWV0aG9kcw0K
ICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgIA0KICAgIC8vIFBlcmZv
cm1zIGFuIGFzeW5jLiByZXF1ZXN0IHRvIGFkZCB0aGUgY29tbWVudCBhbmQgZGlz
cGxheXMgaXQNCiAgICB0aGlzLl9zdWJtaXRWb3RlID0gZnVuY3Rpb24oJGlDb21t
ZW50SUQsICRpVmlkZW9JRCwgJGlBcnRpY2xlSUQsICRiVm90ZSwgJG9Wb3RlRWxl
bSkgDQogICAgeyAgICANCiAgICAgICAgaWYgKHRoaXMudm90ZVN1Ym1pdHRpbmcp
IHJldHVybjsNCiAgICAgICAgdGhpcy52b3RlU3VibWl0dGluZyA9IHRydWU7DQog
ICAgICAgIA0KICAgICAgICBpZiAoICFvUGFnZS5vTG9nZ2VkSW5Vc2VyLmlzVXNl
ciApDQogICAgICAgIHsNCiAgICAgICAgICAgIHZhciBzRG9BZnRlckxvZ2luID0g
J1lBSE9PLndodC5Db21tZW50Lm9Db21tZW50c1snICsgdGhpcy5faWQgKyAnXS5f
c3VibWl0Vm90ZS5hcHBseShZQUhPTy53aHQuQ29tbWVudC5vQ29tbWVudHNbJyAr
IHRoaXMuX2lkICsgJ10sIFsnICsgJGlDb21tZW50SUQgKyAnLCAnICsgJGlWaWRl
b0lEICsgJywgJyArICRpQXJ0aWNsZUlEICsgJywgJyArICRiVm90ZSArICcsIG51
bGxdKTsnOw0KICAgICAgICAgICAgb1BhZ2Uuc2hvd0xvZ2luU2lnbnVwRm9ybSgn
PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBZb3UgbXVzdCBiZSBsb2dnZWQgaW4gdm90
ZSBmb3IgY29tbWVudHMuIFBsZWFzZSBsb2dpbiBvciBzaWdudXAgYW5kIHlvdXIg
dm90ZSB3aWxsIGJlIHN1Ym1pdHRlZC4uLicsIHNEb0FmdGVyTG9naW4pOw0KICAg
ICAgICAgICAgDQogICAgICAgICAgICB0aGlzLnZvdGVTdWJtaXR0aW5nID0gZmFs
c2U7IA0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgIA0K
ICAgICAgICBpZiAoJG9Wb3RlRWxlbSAhPSBudWxsKQ0KICAgICAgICB7DQogICAg
ICAgICAgICB2YXIgb0FuaW0gPSBuZXcgWUFIT08udXRpbC5BbmltKCRvVm90ZUVs
ZW0sIHtvcGFjaXR5OiB7dG86IDB9fSwgMC4yNSwgWUFIT08udXRpbC5FYXNpbmcu
ZWFzZUluKTsNCiAgICAgICAgICAgIG9BbmltLmFuaW1hdGUoKTsNCiAgICAgICAg
fSANCiAgICAgICAgLy8gQWRkIHZvdGUgdXNpbmcgQUpBWA0KICAgICAgICBodHRw
R2V0KGh0dHBHZXQuYnVpbGRQb3N0VVJJKCdVcGRhdGVWaWRlb0NvbW1lbnRWb3Rl
JywnY29tbWVudElEJywkaUNvbW1lbnRJRCwndmlkJywkaVZpZGVvSUQsJ2FpZCcs
JGlBcnRpY2xlSUQsJ1ZvdGUnLCRiVm90ZSksIA0KICAgICAgICAgICAge2Jhc2U6
dGhpcywgaUNvbW1lbnRJRDogJGlDb21tZW50SUQsIFZvdGU6ICRiVm90ZSwgb1Zv
dGVFbGVtOiAkb1ZvdGVFbGVtfSwgZnVuY3Rpb24ob1Jlc3VsdCxvQXJncykgew0K
ICAgICAgICAgICAgDQogICAgICAgICAgICBvQXJncy5iYXNlLnZvdGVTdWJtaXR0
aW5nID0gZmFsc2U7DQogICAgICAgICAgICANCiAgICAgICAgICAgIC8vIENoZWNr
IHRoZSByZXNwb25zZToNCiAgICAgICAgICAgIGlmIChvUmVzdWx0LmVycm9yTnVt
YmVyID4gMCkgew0KICAgICAgICAgICAgICAgIC8vIFNob3cgdGhlIGVycm9yIG1l
c3NhZ2U6DQogICAgICAgICAgICAgICAgb1dIVEFsZXJ0LnNob3cob1Jlc3VsdC5l
cnJvclRleHQpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAg
ICB2YXIgaVNjb3JlID0gb1Jlc3VsdC52YWx1ZS5wYXJ0c1swXTsNCiAgICAgICAg
ICAgICAgICB2YXIgaUNvbW1lbnRpbmdVc2VySUQgPSBvUmVzdWx0LnZhbHVlLnBh
cnRzWzFdOw0KICAgICAgICAgICAgICAgIHZhciBpTmV3VXNlckNvbW1lbnRTY29y
ZSA9IG9SZXN1bHQudmFsdWUucGFydHNbMl07DQogICAgICAgICAgICAgICAgdmFy
IHNDb21tZW50Q2xhc3NOYW1lID0gJ2NvbW1lbnQnICsgb0FyZ3MuaUNvbW1lbnRJ
RDsNCiAgICAgICAgICAgICAgICB2YXIgb1Njb3JlRWxlbSA9IFlBSE9PLnV0aWwu
RG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoc0NvbW1lbnRDbGFzc05hbWUpWzBd
OyAgDQogICAgICAgICAgICAgICAgdmFyIG9Db21tZW50RWxlbSA9IFlBSE9PLnV0
aWwuRG9tLmdldEFuY2VzdG9yQnlDbGFzc05hbWUob1Njb3JlRWxlbSwgJ2NvbW1l
bnQnKTsNCiAgICAgICAgICAgICAgICB2YXIgYVVzZXJTY29yZUVsZW1lbnRzID0g
WUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndWNzVXNlcklE
JyArIGlDb21tZW50aW5nVXNlcklEKTsNCg0KICAgICAgICAgICAgICAgIC8vIFVw
ZGF0ZSB0aGUgY29tbWVudCBzY29yZSBkaXNwbGF5Og0KICAgICAgICAgICAgICAg
IG9TY29yZUVsZW0uY2xhc3NOYW1lID0gJ2NvbW1lbnRTY29yZSAnICsgc0NvbW1l
bnRDbGFzc05hbWUgKyBTdHJpbmcoKGlTY29yZSA8IDApID8gIiBjb21tZW50U2Nv
cmVOZWdhdGl2ZSIgOiAiIGNvbW1lbnRTY29yZVBvc2l0aXZlIik7DQogICAgICAg
ICAgICAgICAgb1Njb3JlRWxlbS5pbm5lckhUTUwgPSAoaVNjb3JlID4gMCkgPyAn
KycgKyBpU2NvcmUgOiBpU2NvcmU7DQogICAgICAgICAgICAgICAgDQogICAgICAg
ICAgICAgICAgLy8gVXBkYXRlIHRoZSBjb21tZW50J3MgZ29vZCAvIGJhZCBzdGFu
ZGluZzoNCiAgICAgICAgICAgICAgICBZQUhPTy51dGlsLkRvbS5yZW1vdmVDbGFz
cyhvQ29tbWVudEVsZW0sICdjb21tZW50R29vZHxjb21tZW50QmFkJyk7DQogICAg
ICAgICAgICAgICAgaWYgKGlTY29yZSA+IDIpIHsgICANCiAgICAgICAgICAgICAg
ICAgICAgWUFIT08udXRpbC5Eb20uYWRkQ2xhc3Mob0NvbW1lbnRFbGVtLCAnIGNv
bW1lbnRHb29kJyk7DQogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpU2NvcmUg
PCAwKSB7DQogICAgICAgICAgICAgICAgICAgIFlBSE9PLnV0aWwuRG9tLmFkZENs
YXNzKG9Db21tZW50RWxlbSwgJyBjb21tZW50QmFkJyk7DQogICAgICAgICAgICAg
ICAgfQ0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIC8vIFVwZGF0
ZSB0aGUgdXNlci1jb21tZW50IHNjb3JlOg0KICAgICAgICAgICAgICAgIGZvciAo
dmFyIHggPSAwOyB4IDwgYVVzZXJTY29yZUVsZW1lbnRzLmxlbmd0aDsgeCsrKSB7
DQogICAgICAgICAgICAgICAgICAgIGFVc2VyU2NvcmVFbGVtZW50c1t4XS5jbGFz
c05hbWUgPSAndXNlckNvbW1lbnRTY29yZSB1Y3NVc2VySUQnICsgaUNvbW1lbnRp
bmdVc2VySUQgKyBTdHJpbmcoKGlOZXdVc2VyQ29tbWVudFNjb3JlID49IDEwKSA/
ICcgdWNzR3JlYXQnIDogKGlOZXdVc2VyQ29tbWVudFNjb3JlID49IDUpID8gJyB1
Y3NHb29kJyA6IChpTmV3VXNlckNvbW1lbnRTY29yZSA8IDApID8gJyB1Y3NOZWdh
dGl2ZScgOiAnJyk7DQogICAgICAgICAgICAgICAgICAgIGFVc2VyU2NvcmVFbGVt
ZW50c1t4XS5pbm5lckhUTUwgPSAoaU5ld1VzZXJDb21tZW50U2NvcmUgPT0gMCkg
PyAnJyA6ICcoJyArIGlOZXdVc2VyQ29tbWVudFNjb3JlICsgJyknOw0KICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAv
LyBEaXNhYmxlIC8gZW5hYmxlIHRoZSBhcHByb3ByaWF0ZSB2b3RlIGJ1dHRvbnMg
YmFzZWQgb24gdGhlIHZvdGU6DQogICAgICAgICAgICAgICAgdmFyIGFWb3RlQnV0
dG9ucyA9IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2J1
dHRvblVwfGJ1dHRvbkRvd24nLCAnYScsIG9BcmdzLm9Wb3RlRWxlbSk7DQogICAg
ICAgICAgICAgICAgdmFyIGJTd2l0Y2ggPSBmYWxzZTsNCiAgICAgICAgICAgICAg
ICBmb3IgKHZhciB4ID0gMDsgeCA8IGFWb3RlQnV0dG9ucy5sZW5ndGg7IHgrKykg
ew0KICAgICAgICAgICAgICAgICAgICBpZiAoWUFIT08udXRpbC5Eb20uaGFzQ2xh
c3MoYVZvdGVCdXR0b25zW3hdLCAnYnRuRCcpKSB7DQogICAgICAgICAgICAgICAg
ICAgICAgICBiU3dpdGNoID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBmb3IgKHZhciB4ID0g
MDsgeCA8IGFWb3RlQnV0dG9ucy5sZW5ndGg7IHgrKykgew0KICAgICAgICAgICAg
ICAgICAgICBpZiAoIWJTd2l0Y2ggJiYgWUFIT08udXRpbC5Eb20uaGFzQ2xhc3Mo
YVZvdGVCdXR0b25zW3hdLCAob0FyZ3MuVm90ZSkgPyAnYnV0dG9uVXAnIDogJ2J1
dHRvbkRvd24nKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgWUFIT08udXRp
bC5Eb20uYWRkQ2xhc3MoYVZvdGVCdXR0b25zW3hdLCAnIGJ0bkQnKTsNCiAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
IFlBSE9PLnV0aWwuRG9tLnJlbW92ZUNsYXNzKGFWb3RlQnV0dG9uc1t4XSwgJ2J0
bkQnKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgLy8gRmFk
ZSB0aGUgdm90ZSBidXR0b25zIGJhY2sgaW46DQogICAgICAgICAgICBpZiAob0Fy
Z3Mub1ZvdGVFbGVtICE9IG51bGwpIHsNCiAgICAgICAgICAgICAgICBvQW5pbSA9
IG5ldyBZQUhPTy51dGlsLkFuaW0ob0FyZ3Mub1ZvdGVFbGVtLCB7b3BhY2l0eTog
e3RvOiAxfX0sIDAuMjUsIFlBSE9PLnV0aWwuRWFzaW5nLmVhc2VPdXQpOw0KICAg
ICAgICAgICAgICAgIG9BbmltLmFuaW1hdGUoKTsNCiAgICAgICAgICAgIH0NCiAg
ICAgICAgfSk7DQogICAgfTsNCiAgICANCiAgICANCiAgICAvLyBDYWxjdWxhdGVz
IGluZGVudGF0aW9uIGZvciBjb21tZW50IHJlcGx5IGZvcm0NCiAgICB0aGlzLl9j
YWxjdWxhdGVJbmRlbnRhdGlvbiA9IGZ1bmN0aW9uKCRvU2libGluZykNCiAgICB7
DQogICAgICAgIHZhciBvSW5kZW50RWwgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKCdjb21tZW50SW5kZW50JywgJ2RpdicsICRvU2libGlu
ZylbMF07DQogICAgICAgIHZhciBpQ2FzY2FkZUxldmVsID0gTnVtYmVyKGdldFBy
ZWZpeGVkQ2xhc3NWYWx1ZShvSW5kZW50RWwsICdjYXNjYWRlTGV2ZWwnKSk7DQog
ICAgICAgIHJldHVybiBpQ2FzY2FkZUxldmVsICogdGhpcy5faUluZGVudE9mZnNl
dDsNCiAgICB9Ow0KICAgIA0KICAgIA0KICAgIC8vIFNldHMgaW5kZW50YXRpb24g
Zm9yIHRoZSBjb21tZW50IHJlcGx5IGZvcm0NCiAgICB0aGlzLl9zZXRJbmRlbnRh
dGlvbiA9IGZ1bmN0aW9uKCRvQ29tbWVudCwgJGlJbmRlbnRXaWR0aCkNCiAgICB7
DQogICAgICAgIFlBSE9PLnV0aWwuRG9tLnNldFN0eWxlKCRvQ29tbWVudCwgJ3Bh
ZGRpbmctbGVmdCcsIHB4KCRpSW5kZW50V2lkdGgpKTsNCiAgICB9Ow0KICAgIA0K
ICAgIA0KICAgIC8vIENhcHR1cmVzIHRoZSBldmVudHMgZm9yIGFsbCBlbGVtZW50
cyBpbiBhbiBhcnJheToNCiAgICB0aGlzLl9jYXB0dXJlRXZlbnRzID0gZnVuY3Rp
b24oJGFFbGVtZW50cywgJHNFdmVudCwgJGZFdmVudEhhbmRsZXIpIHsNCiAgICAg
ICAgZm9yICh2YXIgeCA9IDA7IHggPCAkYUVsZW1lbnRzLmxlbmd0aDsgeCsrKSB7
DQogICAgICAgICAgICBZQUhPTy51dGlsLkV2ZW50LmFkZExpc3RlbmVyKCRhRWxl
bWVudHNbeF0sICRzRXZlbnQsICRmRXZlbnRIYW5kbGVyLCB0aGlzLCB0cnVlKTsN
CiAgICAgICAgfQ0KICAgIH07DQogICAgDQogICAgDQogICAgLy8gR2F0aGVycyBh
bGwgcmVxdWlyZWQgaW5mbyBmb3IgY29tbWVudCBhbmQgY2FsbHMgYSBtZXRob2Qg
dG8gc3VibWl0IGl0DQogICAgdGhpcy5fcHJlcGFyZUFuZFN1Ym1pdCA9IGZ1bmN0
aW9uKCRiU2tpcFJlcGx5LCAkb1BhcmVudCkNCiAgICB7DQoJCWlmICgkb1BhcmVu
dCA9PSBudWxsKSB7DQoJCQl2YXIgYVBhcmVudHMgPSBZQUhPTy51dGlsLkRvbS5n
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjb21tZW50UmVwbHknLCAnZGl2Jyk7DQoJ
CQlpZiAoYVBhcmVudHMubGVuZ3RoID4gMCApIHsNCgkJCQkkb1BhcmVudCA9IGFQ
YXJlbnRzW2FQYXJlbnRzLmxlbmd0aCAtIDFdOw0KCQkJfQ0KCQkJZWxzZSB7DQoJ
CQkJcmV0dXJuOw0KCQkJfQ0KCQl9DQoJCQ0KCQl2YXIgb1BhcmVudElERWx0ID0g
WUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGlkUGFyZW50
SUQnLCAnaW5wdXQnLCAkb1BhcmVudClbMF07DQoJCXZhciBvQ29tbWVudEVsdCA9
IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2NvbW1lbnRS
ZXBseVRleHQnLCAndGV4dGFyZWEnLCAkb1BhcmVudClbMF07DQoJCXZhciBvUmVw
bHlCdXR0b24gPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KCdzdWJtaXRDb21tZW50JywgJ2EnLCAkb1BhcmVudClbMF07DQoJCQ0KCQlpZiAo
b1BhcmVudElERWx0ID09IG51bGwgfHwgb0NvbW1lbnRFbHQgPT0gbnVsbCkgcmV0
dXJuOw0KCQkNCgkJdmFyIGlQYXJlbnRJRCA9IG9QYXJlbnRJREVsdC52YWx1ZTsN
CgkJdmFyIHNDb21tZW50ID0gb0NvbW1lbnRFbHQudmFsdWU7DQoJCXZhciBvUmVw
bHlGb3JtID0gJG9QYXJlbnQ7DQoNCiAgICAgICAgaWYgKHNDb21tZW50ID09ICcn
KQ0KICAgICAgICB7DQogICAgICAgICAgICAvLyBMZXQgdGhlIHVzZXIga25vdw0K
ICAgICAgICAgICAgb1dIVEFsZXJ0LnNob3coJ1BsZWFzZSBlbnRlciBhIGNvbW1l
bnQuJyk7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSBpZiAoIW9QYWdlLm9Mb2dn
ZWRJblVzZXIuaXNVc2VyKQ0KICAgICAgICB7DQogICAgICAgICAgICB2YXIgc0Rv
QWZ0ZXJMb2dpbiA9ICdZQUhPTy53aHQuQ29tbWVudC5vQ29tbWVudHNbJyArIHRo
aXMuX2lkICsgJ10uX3ByZXBhcmVBbmRTdWJtaXQuYXBwbHkoWUFIT08ud2h0LkNv
bW1lbnQub0NvbW1lbnRzWycgKyB0aGlzLl9pZCArICddLCBbdHJ1ZSwgbnVsbF0p
Oyc7DQogICAgICAgICAgICANCiAgICAgICAgICAgIG9QYWdlLnNob3dMb2dpblNp
Z251cEZvcm0oJzxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gWW91IG11c3QgYmUgbG9n
Z2VkIGluIGxlYXZlIGNvbW1lbnRzLiBQbGVhc2UgbG9naW4gb3Igc2lnbnVwIGFu
ZCB5b3VyIGNvbW1lbnQgd2lsbCBiZSBzdWJtaXR0ZWQuLi4nLCBzRG9BZnRlckxv
Z2luKTsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAg
ICAgICAgIC8vIERpc2FibGUgY29udHJvbHMNCiAgICAgICAgICAgIG9Db21tZW50
RWx0LmRpc2FibGVkID0gdHJ1ZTsNCgkJCQ0KCQkJaWYgKG9SZXBseUJ1dHRvbiAh
PSBudWxsKSBvUmVwbHlCdXR0b24uZGlzYWJsZWQgPSB0cnVlOw0KICAgICAgICAg
ICAgDQogICAgICAgICAgICB0aGlzLl9zdWJtaXRDb21tZW50KHRoaXMuX2lkLCBp
UGFyZW50SUQsIHNDb21tZW50LCAkYlNraXBSZXBseSwgb1JlcGx5Rm9ybSk7DQog
ICAgICAgIH0NCiAgICB9Ow0KICAgDQogICAgDQogICAgLy8gUGVyZm9ybXMgYW4g
YXN5bmMuIHJlcXVlc3QgdG8gYWRkIHRoZSBjb21tZW50IGFuZCBkaXNwbGF5cyBp
dA0KICAgIHRoaXMuX3N1Ym1pdENvbW1lbnQgPSBmdW5jdGlvbigkaUNvbnRlbnRJ
RCwgJGlQYXJlbnRJRCwgJHNDb21tZW50LCAkYlNraXBSZXBseSwgJG9SZXBseUZv
cm0pDQogICAgew0KICAgICAgICAvLyBBZGQgY29tbWVudCB1c2luZyBBSkFYDQog
ICAgICAgIGh0dHBHZXQoaHR0cEdldC5idWlsZFBvc3RVUkkoJ0FkZFZpZGVvQ29t
bWVudCcsICdjb250ZW50SUQnLCAkaUNvbnRlbnRJRCwgJ3BhcmVudElEJywgJGlQ
YXJlbnRJRCwgJ2NvbW1lbnRUZXh0JywgJHNDb21tZW50LCAnc2tpcFJlcGx5Jywg
JGJTa2lwUmVwbHksICdpc1ZpZGVvJywgdGhpcy5fYklzVmlkZW8pLCB7YmFzZTp0
aGlzLCBpUGFyZW50SUQ6ICRpUGFyZW50SUQsIGJTa2lwUmVwbHk6ICRiU2tpcFJl
cGx5LCBvUmVwbHlGb3JtOiAkb1JlcGx5Rm9ybX0sIGZ1bmN0aW9uKG9SZXN1bHQs
b0FyZ3MpIHsNCiAgICAgICAgICAgIC8vIENoZWNrIHRoZSByZXNwb25zZToNCiAg
ICAgICAgICAgIGlmIChvUmVzdWx0LmVycm9yTnVtYmVyID4gMCkgew0KICAgICAg
ICAgICAgICAgIG9XSFRBbGVydC5zaG93KG9SZXN1bHQuZXJyb3JUZXh0KTsNCiAg
ICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgaWYgKCFvQXJncy5i
U2tpcFJlcGx5KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAg
ICAgdmFyIG9OZXdDb21tZW50ID0gbnVsbDsNCiAgICAgICAgICAgICAgICAgICAg
dmFyIG9QYXJlbnQgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lKCdjb21tZW50c0xpc3QnLCAnZGl2JylbMF07DQogICAgICAgICAgICAgICAg
ICAgIA0KICAgICAgICAgICAgICAgICAgICAvLyBDcmVhdGUgY29tbWVudCBsaXN0
IGRpdiBpZiBvbmUgZG9lcyBub3QgYWxyZWFkeSBleGlzdA0KICAgICAgICAgICAg
ICAgICAgICBpZiAob1BhcmVudCA9PSBudWxsKQ0KICAgICAgICAgICAgICAgICAg
ICB7DQogICAgICAgICAgICAgICAgICAgICAgICBvUGFyZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICBZ
QUhPTy51dGlsLkRvbS5hZGRDbGFzcyhvUGFyZW50LCAnY29tbWVudHNMaXN0Jyk7
DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBvVG9wUGFyZW50ID0gWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNC
eUNsYXNzTmFtZSgndmlkZW9Db21tZW50c3xhcnRpY2xlQ29tbWVudHMnLCAnZGl2
JylbMF07DQogICAgICAgICAgICAgICAgICAgICAgICBvVG9wUGFyZW50Lmluc2Vy
dEJlZm9yZShvUGFyZW50LCBvVG9wUGFyZW50LmZpcnN0Q2hpbGQpOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAvLyBI
aWRlICJObyBjb21tZW50Li4uIg0KICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IG9Ob0NvbW1lbnQgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lKCdub0NvbW1lbnQnLCAnZGl2JylbMF07DQogICAgICAgICAgICAgICAgICAg
ICAgICBpZiAob05vQ29tbWVudCAhPSBudWxsKSBZQUhPTy51dGlsLkRvbS5zZXRT
dHlsZShvTm9Db21tZW50LCAnZGlzcGxheScsICdub25lJyk7DQogICAgICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAg
ICAgICAgIC8vIFRoZSB0cmlja3kgcGFydDogQ29udmVydCBIVE1MIGZyb20gdGhl
IHN0cmluZyBmb3JtIHRvIERPTSBvYmplY3RzDQogICAgICAgICAgICAgICAgICAg
IHZhciBvVGVtcERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOw0K
ICAgICAgICAgICAgICAgICAgICBvVGVtcERpdi5pbm5lckhUTUwgPSBvUmVzdWx0
LnZhbHVlOw0KICAgICAgICAgICAgICAgICAgICBvTmV3Q29tbWVudCA9IFlBSE9P
LnV0aWwuRG9tLmdldEZpcnN0Q2hpbGQob1RlbXBEaXYpOw0KICAgICAgICAgICAg
ICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgLy8gR2V0IG91dCBpZiB3ZSBo
YXZlIG5vIG5ldyBjb21tZW50DQogICAgICAgICAgICAgICAgICAgIGlmIChvTmV3
Q29tbWVudCA9PSBudWxsKSByZXR1cm47DQogICAgICAgICAgICAgICAgICAgIA0K
ICAgICAgICAgICAgICAgICAgICAvLyBBZGQgbGlzdGVuZXJzDQogICAgICAgICAg
ICAgICAgICAgIG9BcmdzLmJhc2UuX2FkZE1vcmVMaXN0ZW5lcnMuYXBwbHkob0Fy
Z3MuYmFzZSwgW29OZXdDb21tZW50XSk7DQogICAgICAgICAgICAgICAgICAgIA0K
ICAgICAgICAgICAgICAgICAgICAvLyBBcHBlbmQgdG8gdGhlIGFwcHJvcHJpYXRl
IHBsYWNlDQogICAgICAgICAgICAgICAgICAgIGlmIChvQXJncy5pUGFyZW50SUQg
PT0gMCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gQWRkIHRvIHRoZSBlbmQgb2YgbGlzdA0KICAgICAgICAgICAgICAg
ICAgICAgICAgb1BhcmVudC5hcHBlbmRDaGlsZChvTmV3Q29tbWVudCk7DQogICAg
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAg
ICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIg
b1NpYmxpbmcgPSBZQUhPTy51dGlsLkRvbS5nZXRQcmV2aW91c1NpYmxpbmcob0Fy
Z3Mub1JlcGx5Rm9ybSk7DQogICAgICAgICAgICAgICAgICAgICAgICBZQUhPTy51
dGlsLkRvbS5pbnNlcnRBZnRlcihvTmV3Q29tbWVudCwgb1NpYmxpbmcpOw0KICAg
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIA0KICAgICAg
ICAgICAgICAgICAgICAvLyBIaWRlICJTdGFydCB0aGUgRGlzY3Vzc2lvbiIgaWYg
b25lIGlzIHN0aWxsIHRoZXJlDQogICAgICAgICAgICAgICAgICAgIFlBSE9PLnV0
aWwuRG9tLnNldFN0eWxlKFlBSE9PLnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFz
c05hbWUoJ2NvbW1lbnRzSGVhZGluZycpLCAnZGlzcGxheScsICdub25lJyk7DQog
ICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAvLyBTY3Jv
bGwgZG93biB0byB0aGUgbmV3IGNvbW1lbnQNCiAgICAgICAgICAgICAgICAgICAg
b0FyZ3MuYmFzZS5fc2Nyb2xsVG9Db21tZW50KG9OZXdDb21tZW50KTsNCiAgICAg
ICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIGlmIChvQXJncy5i
YXNlLl9pYklzVmlkZW8pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhp
ZGUgdmlkZW8gZ3JhZGVyDQogICAgICAgICAgICAgICAgICAgICAgICBvQXJncy5i
YXNlLl9oaWRlVmlkZW9HcmFkZXJzKCk7DQogICAgICAgICAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgICAg
ICAgICAvLyBVcGRhdGUgY29tbWVudCBjb3VudHMNCiAgICAgICAgICAgICAgICAg
ICAgICAgIG9BcmdzLmJhc2UuX3VwZGF0ZUNvbW1lbnRDb3VudC5hcHBseShvQXJn
cy5iYXNlLCBbXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAg
IHRyeSB7DQogICAgICAgICAgICAvLyBSZXNldCBjb21tZW50IGZvcm0NCiAgICAg
ICAgICAgIG9BcmdzLmJhc2UuX3Jlc2V0Q29tbWVudEZvcm0uYXBwbHkob0FyZ3Mu
YmFzZSwgWyRvUmVwbHlGb3JtXSk7DQogICAgICAgICAgICB9IGNhdGNoIChlcnIp
IHsgfQ0KICAgICAgICB9KTsNCiAgICB9Ow0KICAgIA0KICAgIA0KICAgIC8vIFVw
ZGF0ZXMgY29tbWVudCBjb3VudCBpbiAiQ29tbWVudHMiIHRhYiBvZiBhcnRpY2xl
IGNhcmQNCiAgICB0aGlzLl91cGRhdGVDb21tZW50Q291bnQgPSBmdW5jdGlvbigp
IHsNCiAgICAgICAgdmFyIGFDb21tZW50Q291bnRzID0gWUFIT08udXRpbC5Eb20u
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFiQ29tbWVudHMnLCAnYScpOw0KICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFDb21tZW50Q291bnRzLmxlbmd0aDsg
aSsrKSB7DQogICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgIHZhciBz
TnVtYmVyID0gYUNvbW1lbnRDb3VudHNbaV0uaW5uZXJIVE1MLnJlcGxhY2UoLyhc
cyk/Y29tbWVudHM/L2dpLCAnJykudHJpbSgpOw0KICAgICAgICAgICAgICAgIHZh
ciBpQ3QgPSAwOw0KICAgICAgICAgICAgICAgIGlmIChzTnVtYmVyICE9ICcnKSB7
DQogICAgICAgICAgICAgICAgICAgIGlDdCA9IHBhcnNlSW50KHNOdW1iZXIpOw0K
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAg
ICAgICB2YXIgc0h0bWwgPSArK2lDdCArICgoaUN0ID09IDEpID8gIiBDb21tZW50
IiA6ICIgQ29tbWVudHMiKTsNCiAgICAgICAgICAgICAgICBhQ29tbWVudENvdW50
c1tpXS5pbm5lckhUTUwgPSBzSHRtbDsNCiAgICAgICAgICAgIH0gY2F0Y2ggKGVy
cikge30NCiAgICAgICAgfQ0KICAgIH07DQogICAgDQogICAgDQogICAgLy8gRmlu
ZHMgYWxsIG9wZW4gdmlkZW8gZ3JhZGVycyBhbmQgaGlkZXMgdGhlbQ0KICAgIHRo
aXMuX2hpZGVWaWRlb0dyYWRlcnMgPSBmdW5jdGlvbigpIHsNCiAgICAgICAgaWYg
KFlBSE9PLndodC5JbnRlcmFjdGl2ZVZpZGVvR3JhZGVyICE9IG51bGwpIHsNCiAg
ICAgICAgICAgIGlmIChZQUhPTy53aHQuSW50ZXJhY3RpdmVWaWRlb0dyYWRlci5v
R3JhZGVycyAhPSBudWxsKSB7DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSBp
biBZQUhPTy53aHQuSW50ZXJhY3RpdmVWaWRlb0dyYWRlci5vR3JhZGVycykgew0K
ICAgICAgICAgICAgICAgICAgICBpZiAoWUFIT08ud2h0LkludGVyYWN0aXZlVmlk
ZW9HcmFkZXIub0dyYWRlcnNbaV0uX2JHcmFkZXJPcGVuKSB7DQogICAgICAgICAg
ICAgICAgICAgICAgICBZQUhPTy53aHQuSW50ZXJhY3RpdmVWaWRlb0dyYWRlci5v
R3JhZGVyc1tpXS5fdG9nZ2xlVmlkZW9HcmFkZXIoKTsNCiAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAg
ICAgfQ0KICAgIH07DQogICAgDQogICAgDQogICAgLy8gTWV0aG9kIHRoYXQgc2Ny
b2xscyBkb3duIHRvIHRoZSBjb21tZW50IHRoYXQncyByaWdodCBhYm92ZSB0aGUg
bmV3bHkgYWRkZWQgY29tbWVudCwgb3IgdGhlIGNvbW1lbnQgaXRzZWxmIGlmIGl0
J3MgdGhlIG9ubHkgb25lDQogICAgdGhpcy5fc2Nyb2xsVG9Db21tZW50ID0gZnVu
Y3Rpb24oJG9OZXdDb21tZW50KSB7DQogICAgICAgIHRyeSB7DQogICAgICAgICAg
ICAvLyBTY3JvbGwgdG8NCiAgICAgICAgICAgIHZhciBpU2Nyb2xsVG8gPSAoJG9O
ZXdDb21tZW50LnByZXZpb3VzU2libGluZyA9PSBudWxsKSA/IFlBSE9PLnV0aWwu
RG9tLmdldFkoJG9OZXdDb21tZW50KSA6IFlBSE9PLnV0aWwuRG9tLmdldFkoJG9O
ZXdDb21tZW50LnByZXZpb3VzU2libGluZyk7DQogICAgICAgICAgICANCiAgICAg
ICAgICAgIC8vIEluY2x1ZGUgb2Zmc2V0IGlmIHZpZGVvIGdyYWRlciBpcyBvcGVu
DQogICAgICAgICAgICBpZiAoWUFIT08ud2h0LkludGVyYWN0aXZlVmlkZW9HcmFk
ZXIgIT0gbnVsbCkgew0KICAgICAgICAgICAgICAgIGlmIChZQUhPTy53aHQuSW50
ZXJhY3RpdmVWaWRlb0dyYWRlci5vR3JhZGVycyAhPSBudWxsKSB7DQogICAgICAg
ICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gWUFIT08ud2h0LkludGVyYWN0aXZl
VmlkZW9HcmFkZXIub0dyYWRlcnMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChZQUhPTy53aHQuSW50ZXJhY3RpdmVWaWRlb0dyYWRlci5vR3JhZGVyc1tp
XS5fYkdyYWRlck9wZW4pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
U2Nyb2xsVG8gLT0gWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSgnaW50ZXJhY3RpdmVWaWRlb0dyYWRlcicsICdkaXYnKVswXS5vZmZzZXRIZWln
aHQ7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAg
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAg
ICAgICAgIGlmIChpU2Nyb2xsVG8gPiAwKQ0KICAgICAgICAgICAgew0KICAgICAg
ICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCBpU2Nyb2xsVG8pOw0KICAgICAg
ICAgICAgfQ0KICAgICAgICB9IGNhdGNoIChlKSB7fQ0KICAgIH07DQogICAgDQog
ICAgDQogICAgLy8gUmUtc2V0cyB2YWx1ZXMgYW5kIG9mIHRoZSBjb21tZW50IGZv
cm0gYW5kIHBvc2l0aW9ucyBpdCBhdCB0aGUgYm90dG9tDQogICAgdGhpcy5fcmVz
ZXRDb21tZW50Rm9ybSA9IGZ1bmN0aW9uKCRvUmVwbHlGb3JtKQ0KICAgIHsNCgkJ
dHJ5IHsNCgkJCVlBSE9PLnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUo
J2NvbW1lbnRSZXBseVRleHQnLCAndGV4dGFyZWEnLCAkb1JlcGx5Rm9ybSlbMF0u
dmFsdWUgPSAnJzsNCgkJfQ0KCQljYXRjaCAoZXJyKSB7IH0NCgkJDQogICAgICAg
IHRoaXMuc2hvd0Zvcm0oMCwgbnVsbCwgZmFsc2UpOw0KICAgIH07DQogICAgDQog
ICAgDQogICAgLy8gQWRkcyBsaXN0ZW5lcnMgdG8gInJlcGx5IiBsaW5rIG9mIHRo
ZSBuZXcgY29tbWVudA0KICAgIHRoaXMuX2FkZE1vcmVMaXN0ZW5lcnMgPSBmdW5j
dGlvbigkb05ld0NvbW1lbnQpDQogICAgew0KICAgICAgICAvLyBPbmx5IGdldCB0
aGUgbGlua3MgZnJvbSB0aGUgbmV3IGNvbW1lbnQNCiAgICAgICAgdmFyIGFDb21t
ZW50TGlua3MgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KCdhY3Rpb25Db21tZW50JywgJ2EnLCAkb05ld0NvbW1lbnQpOw0KICAgICAgICAN
CiAgICAgICAgLy8gQWRkIGV2ZW50IGhhbmRsZXJzDQogICAgICAgIHRoaXMuX2Nh
cHR1cmVFdmVudHMoYUNvbW1lbnRMaW5rcywgJ2NsaWNrJywgdGhpcy5fb25Xcml0
ZUNvbW1lbnRDbGljayk7DQogICAgICAgIA0KICAgIH07DQogICAgLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCiAgICAvLyBFbmQgUHJpdmF0ZSBNZXRob2RzDQogICAg
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICANCiAgICANCiAgICAvLyBUcnkg
dG8gc2lnbiB1cCBmb3IgY3VzdG9tIFlVSSBldmVudCB0aGF0IHdpbGwgZmlyZSB3
aGVuIGVuZCBvZiBwYWdlIGlzIHJlYWNoZWQNCiAgICB0cnkgew0KICAgICAgICBZ
QUhPTy51dGlsLkRvbS5vV0hUUmVhZHlFdmVudC5zdWJzY3JpYmUodGhpcy5fb25Q
YWdlUmVhZHksIHRoaXMsIHRydWUpOw0KICAgIH0gY2F0Y2ggKGVycikgeyANCiAg
ICAgICAgLy8gQXR0YWNoIHRvIHRoZSBzcGVjaWZpZWQgY29udGFpbmVyIG9iamVj
dCBhcyBzb29uIGFzIGl0J3MgcmVhZHkgb24gdGhlIHBhZ2U6DQogICAgICAgIFlB
SE9PLnV0aWwuRXZlbnQub25ET01SZWFkeSh0aGlzLl9vblBhZ2VSZWFkeSwgdGhp
cywgdHJ1ZSk7DQogICAgfQ0KfTsNCg0KDQpZQUhPTy53aHQuQ29tbWVudC5pbml0
ID0gZnVuY3Rpb24oJGlkLCAkYklzVmlkZW8pDQp7DQogICAgaWYgKCFZQUhPTy5s
YW5nLmlzT2JqZWN0KFlBSE9PLndodC5Db21tZW50Lm9Db21tZW50cykpIFlBSE9P
LndodC5Db21tZW50Lm9Db21tZW50cyA9IHt9Ow0KICAgIGlmIChZQUhPTy5sYW5n
LmlzQXJyYXkoJGlkKSkgeyBmb3IgKHZhciBpPTA7IGk8JGlkLmxlbmd0aDsgaSsr
KSBZQUhPTy53aHQuQ29tbWVudC5pbml0KCRpZFtpXSk7IHJldHVybjsgfQ0KICAg
IGlmIChZQUhPTy5sYW5nLmlzVW5kZWZpbmVkKFlBSE9PLndodC5Db21tZW50Lm9D
b21tZW50c1skaWRdKSkgew0KICAgICAgICBZQUhPTy53aHQuQ29tbWVudC5vQ29t
bWVudHNbJGlkXSA9IG5ldyBZQUhPTy53aHQuQ29tbWVudCgkaWQsICRiSXNWaWRl
byk7DQogICAgfQ0KfTsNCg0KWUFIT08ud2h0LkNvbW1lbnQucmVzZXRMaXN0ZW5l
cnMgPSBmdW5jdGlvbigpIHsNCiAgICBpZiAoWUFIT08ubGFuZy5pc09iamVjdChZ
QUhPTy53aHQuQ29tbWVudC5vQ29tbWVudHMpKSB7DQogICAgICAgIGZvciAodmFy
IGkgaW4gWUFIT08ud2h0LkNvbW1lbnQub0NvbW1lbnRzKSB7DQogICAgICAgICAg
ICBZQUhPTy53aHQuQ29tbWVudC5vQ29tbWVudHNbaV0ucmVzZXRMaXN0ZW5lcnMo
KTsNCiAgICAgICAgfQ0KICAgIH0NCn07
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline; filename=alert.js
Content-Type: application/x-javascript; charset=utf-8; name=alert.js
Content-Location: http://www.wonderhowto.com/js/alert.js?v=0902102
Content-Transfer-Encoding: Base64
77u/Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIENvcHlyaWdodCAyMDA3IFdv
bmRlckhvd1RvLCBJbmMuDQovLyANCi8vIE9yaWdpb25hbCBBdXRob3I6ICAgIEJy
eWFuIENyb3cNCi8vIExhc3QgTW9kaWZpZWQgQnk6ICAgIEJyeWFuIENyb3cNCi8v
IExhc3QgTW9kaWZpZWQ6ICAgICAgIDA2LzI1LzIwMTANCi8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQoNCi8vIE1ha2Ugc3VyZSB0aGUgd2h0IG5hbWVzcGFjZSBleGlz
dHM6DQpZQUhPTy5uYW1lc3BhY2UoJ3dodCcpOw0KDQovLyBBbGVydGVyIGNsYXNz
IGRlZmluaXRpb246DQpZQUhPTy53aHQuQWxlcnQgPSBmdW5jdGlvbigpIHsNCiAg
ICAvLyBQcml2YXRlIE1lbWJlciBEZWNsYXJhdGlvbnM6DQogICAgdGhpcy5fc0Rv
bWFpbiA9IChsb2NhdGlvbi5ob3N0LmluZGV4T2YoJ3Rlc3QuJykgPiAtMSB8fCBs
b2NhdGlvbi5ob3N0LmluZGV4T2YoJ2xvY2FsaG9zdCcpID4gLTEpID8gJ2h0dHA6
Ly8nICsgbG9jYXRpb24uaG9zdCArICcvX3d3d18nIDogJ2h0dHA6Ly93d3cud29u
ZGVyaG93dG8uY29tJzsNCiAgICB0aGlzLl9hQWxlcnRzID0gW107DQogICAgdGhp
cy5fYlJlYWR5ID0gZmFsc2U7DQogICAgdGhpcy5fYkFuaW1hdGluZyA9IGZhbHNl
Ow0KICAgIHRoaXMuX2JBbGVydFZpc2libGUgPSBmYWxzZTsNCiAgICB0aGlzLl9p
RGVmYXVsdFNob3dEdXJhdGlvbiA9IDM1MDA7DQogICAgdGhpcy5faUFjdGl2ZVNo
b3dEdXJhdGlvbiA9IHRoaXMuX2lEZWZhdWx0U2hvd0R1cmF0aW9uOw0KICAgIHRo
aXMuX2lOb0ZhZGVEdXJhdGlvbiA9IChTdHJpbmcobmF2aWdhdG9yLnVzZXJBZ2Vu
dCkuaW5kZXhPZignTVNJRScpID09IC0xKSA/IDAgOiAxNTAwOw0KICAgIHRoaXMu
X29BY3RpdmVBbGVydCA9IG51bGw7DQogICAgdGhpcy5fc0NlbnRlcmVkVGVtcGxh
dGUgPSAnPHRhYmxlIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9y
ZGVyPSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBhbGlnbj0iY2VudGVy
Ij48dHI+PHRkIGlkPSJ3aHRBbGVydENvbnRlbnQiIGFsaWduPSJjZW50ZXIiIHZh
bGlnbj0ibWlkZGxlIj57MH08L3RkPjwvdHI+PC90YWJsZT4nOw0KICAgIHRoaXMu
X3NUd29Db2x1bW5UZW1wbGF0ZSA9ICc8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNl
bGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEw
MCUiIGFsaWduPSJjZW50ZXIiPjx0cj48dGQgYWxpZ249ImNlbnRlciIgdmFsaWdu
PSJtaWRkbGUiIGlkPSJ3aHRBbGVydENvbnRlbnRMZWZ0IiB3aWR0aD0iNzEiPnsx
fTwvdGQ+PHRkIGlkPSJ3aHRBbGVydENvbnRlbnQiIGFsaWduPSJsZWZ0IiB2YWxp
Z249Im1pZGRsZSI+ezB9PC90ZD48L3RyPjwvdGFibGU+JzsNCiAgICB0aGlzLl9z
TWVzc2FnZVRlbXBsYXRlID0gJzxkaXY+TmV3IG1lc3NhZ2UgZnJvbSB7MH08cD5T
dWJqZWN0OiB7MX08L3A+PHA+ezJ9PC9wPjxici8+PC9kaXY+JzsNCiAgICB0aGlz
Ll9zTWVzc2FnZUJ1dHRvbnNUZW1wbGF0ZSA9ICc8ZGl2IGNsYXNzPSJhbGVydEJ1
dHRvbnMiPjxhIGNsYXNzPSJidG4iIGhyZWY9ImphdmFzY3JpcHQ6b1dIVEFsZXJ0
LmRpc21pc3MoKTsiPmNsb3NlPC9hPiA8YSBjbGFzcz0iYnRuIiBocmVmPSInICsg
dGhpcy5fc0RvbWFpbiArICcvY29tbXVuaXR5L21lbWJlci97MH0vY29udmVyc2F0
aW9uL3sxfS8iIG9uY2xpY2s9ImphdmFzY3JpcHQ6b1dIVEFsZXJ0LmNsZWFyTm93
KCk7Ij5vcGVuPC9hPiA8YSBjbGFzcz0iYnRuIiBocmVmPSInICsgdGhpcy5fc0Rv
bWFpbiArICcvY29tbXVuaXR5L21lbWJlci97MH0vY29udmVyc2F0aW9uL3sxfS8j
cmVwbHkiIG9uY2xpY2s9Im9XSFRBbGVydC5jbGVhck5vdygpOyI+cmVwbHk8L2E+
PGRpdiBjbGFzcz0iY2IiPjwvZGl2PjwvZGl2Pic7DQogICAgdGhpcy5fc01lc3Nh
Z2VzQnV0dG9uc1RlbXBsYXRlID0gJzxkaXYgY2xhc3M9ImFsZXJ0QnV0dG9ucyI+
PGEgY2xhc3M9ImJ0biIgaHJlZj0iamF2YXNjcmlwdDpvV0hUQWxlcnQuZGlzbWlz
cygpOyI+Y2xvc2U8L2E+IDxhIGNsYXNzPSJidG4iIGhyZWY9IicgKyB0aGlzLl9z
RG9tYWluICsgJy9jb21tdW5pdHkvbWVtYmVyL3swfS9pbmJveC8iIG9uY2xpY2s9
Im9XSFRBbGVydC5jbGVhck5vdygpOyI+b3BlbjwvYT48ZGl2IGNsYXNzPSJjYiI+
PC9kaXY+PC9kaXY+JzsNCiAgICB0aGlzLl9zTWVtYmVySW1hZ2VUZW1wbGF0ZSA9
ICc8ZGl2IGNsYXNzPSJ1c2VyVGh1bWJuYWlsIj48YSBocmVmPSJqYXZhc2NyaXB0
Oi8vIHsxfSIgc3R5bGU9ImN1cnNvcjpkZWZhdWx0O291dGxpbmU6bm9uZTsiPjxp
bWcgc3JjPSJ7MH0iIGFsdD0iezF9IiB3aWR0aD0iNTEiIGhlaWdodD0iNjgiLz48
L2E+PC9kaXY+JzsNCiAgICB0aGlzLl9zU2lkZWJhckRvd25sb2FkVGVtcGxhdGUg
PSAnPGRpdiBjbGFzcz0ic2lkZWJhckRvd25sb2FkIj48ZGl2IGNsYXNzPSJzZEhl
YWRlciI+ezB9PC9kaXY+PHNwYW4gY2xhc3M9InNiQm9keSI+ezF9PC9zcGFuPjxk
aXYgY2xhc3M9InNwMTAiPjwvZGl2PjxhIGNsYXNzPSJzZExlYXJuTW9yZSIgdGFy
Z2V0PSJfYmxhbmsiIGhyZWY9IicgKyB0aGlzLl9zRG9tYWluICsgJy9ob3ctdG8t
dmlkZW8tc2lkZWJhci8iPmxlYXJuIG1vcmU8L2E+PGEgY2xhc3M9InNkU2tpcEJ1
dHRvbiIgaHJlZj0iamF2YXNjcmlwdDpvV0hUQWxlcnQuZGlzbWlzcygpOyI+bm8s
IHRoYW5rczwvYT48YSBjbGFzcz0ic2RCdXR0b24iIHRhcmdldD0iX2JsYW5rIiBv
bmNsaWNrPSJvV0hUQWxlcnQuZGlzbWlzcygpOyIgaHJlZj0iaHR0cHM6Ly9hZGRv
bnMubW96aWxsYS5vcmcvZW4tVVMvZmlyZWZveC9hZGRvbi84Mzk0Ij48L2E+PC9k
aXY+JzsNCiAgICANCiAgICAvLyBQdWJsaWMgTWVtYmVyIERlY2xhcmF0aW9ucw0K
ICAgIHRoaXMub0FsZXJ0RGlzbWlzc0V2ZW50ID0gbmV3IFlBSE9PLnV0aWwuQ3Vz
dG9tRXZlbnQoJ0FsZXJ0RGlzbWlzcycsIHRoaXMsIHRydWUpOw0KICAgIA0KICAg
IC8vIEZpcmVkIG9uY2UgdGhlIGFsZXJ0IGh0bWwgZWxlbWVudCBoYXMgbG9hZGVk
ICYgaXMgcmVhZHkgb24gdGhlIHBhZ2U6DQogICAgdGhpcy5fb25SZWFkeSA9IGZ1
bmN0aW9uKCkgew0KICAgICAgICB0aGlzLl9vQmFzZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd3aHRBbGVydCcpOw0KICAgICAgICB0aGlzLl9vT3V0ZXJCb3gg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnd2h0QWxlcnRPdXRlckJveCcpOw0K
ICAgICAgICB0aGlzLl9vQ29udGVudEJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCd3aHRBbGVydEJveCcpOw0KICAgICAgICANCiAgICAgICAgLy8gTGlzdGVu
IGZvciBldmVudHM6DQogICAgICAgIFlBSE9PLnV0aWwuRXZlbnQuYWRkTGlzdGVu
ZXIodGhpcy5fb0Jhc2UsICdjbGljaycsIHRoaXMuX29uQm94Q2xpY2ssIHRoaXMs
IHRydWUpOw0KICAgICAgICANCiAgICAgICAgdGhpcy5fYlJlYWR5ID0gdHJ1ZTsN
CiAgICAgICAgdGhpcy5fcHJvY2Vzc1F1ZXVlKCk7DQogICAgfTsNCiAgICANCiAg
ICANCiAgICAvLyBBZGRzIGFuIGFsZXJ0IHRvIHRoZSBzaG93IHF1ZXVlOg0KICAg
IHRoaXMucXVldWVBbGVydCA9IGZ1bmN0aW9uKCRvQWxlcnQsICRiTW9kYWwsICRp
SUQpIHsNCiAgICAgICAgaWYgKCRvQWxlcnQgPT0gbnVsbCkgcmV0dXJuOw0KICAg
ICAgICBpZiAodHlwZW9mKCRvQWxlcnQpID09ICdzdHJpbmcnKSB7DQogICAgICAg
ICAgICBpZiAodHlwZW9mKCRiTW9kYWwpID09ICdzdHJpbmcnKSB7DQogICAgICAg
ICAgICAgICAgLy8gUXVldWUgdGhlIGFsZXJ0IHNlcnZlci1zaWRlLCBhbmQgcmVk
aXJlY3QgdG8gdGhlIHNwZWNpZmllZCBVUkw6DQogICAgICAgICAgICAgICAgaHR0
cEdldChodHRwR2V0LmJ1aWxkUG9zdFVSSSgnUXVldWVBbGVydCcsJ21zZycsJG9B
bGVydCkse3NOYXY6JGJNb2RhbH0sZnVuY3Rpb24ob1Jlc3VsdCxvQXJncyl7bmF2
aWdhdGVUbyhvQXJncy5zTmF2KTt9KTsNCiAgICAgICAgICAgICAgICByZXR1cm47
DQogICAgICAgICAgICB9DQogICAgICAgICAgICB2YXIgdG1wTWVzc2FnZSA9ICRv
QWxlcnQ7DQogICAgICAgICAgICAkb0FsZXJ0ID0gew0KICAgICAgICAgICAgICAg
ICBlVHlwZTogWUFIT08ud2h0LkFsZXJ0LmVUeXBlR2VuZXJhbA0KICAgICAgICAg
ICAgICAgICxzTWVzc2FnZTogdG1wTWVzc2FnZQ0KICAgICAgICAgICAgfTsNCiAg
ICAgICAgICAgIHRtcE1lc3NhZ2UgPSBudWxsOw0KICAgICAgICB9IGVsc2UgaWYg
KHR5cGVvZigkb0FsZXJ0KSA9PSAnb2JqZWN0JyAmJiAkb0FsZXJ0LmNvbnZlcnNh
dGlvbklEKSB7DQogICAgICAgICAgICB2YXIgdG1wTXNnT2JqZWN0ID0gJG9BbGVy
dDsNCiAgICAgICAgICAgICRvQWxlcnQgPSB7DQogICAgICAgICAgICAgICAgIGVU
eXBlOiBZQUhPTy53aHQuQWxlcnQuZVR5cGVNZXNzYWdlDQogICAgICAgICAgICAg
ICAgLG9NZXNzYWdlOiB0bXBNc2dPYmplY3QNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgIHRtcE1zZ09iamVjdCA9IG51bGw7DQogICAgICAgIH0gZWxzZSBpZiAo
dHlwZW9mKCRvQWxlcnQpID09ICdvYmplY3QnICYmICRvQWxlcnQuc2lkZWJhckRv
d25sb2FkKSB7DQogICAgICAgICAgICB2YXIgdG1wTXNnT2JqZWN0ID0gJG9BbGVy
dDsNCiAgICAgICAgICAgICRvQWxlcnQgPSB7DQogICAgICAgICAgICAgICAgIGVU
eXBlOiBZQUhPTy53aHQuQWxlcnQuZVR5cGVTaWRlYmFyRG93bmxvYWQNCiAgICAg
ICAgICAgICAgICAsb01lc3NhZ2U6IHRtcE1zZ09iamVjdA0KICAgICAgICAgICAg
ICAgICxzaWRlYmFyRG93bmxvYWQ6IHRtcE1zZ09iamVjdC5zaWRlYmFyRG93bmxv
YWQNCiAgICAgICAgICAgICAgICAsb0V2ZW50OiAkb0FsZXJ0Lm9FdmVudA0KICAg
ICAgICAgICAgfTsNCiAgICAgICAgICAgIHRtcE1zZ09iamVjdCA9IG51bGw7DQog
ICAgICAgIH0gZWxzZSBpZiAoJG9BbGVydC5sZW5ndGggPiAxICYmICRvQWxlcnRb
MF0gIT0gbnVsbCkgew0KICAgICAgICAgICAgdmFyIHRtcE1zZ3MgPSAkb0FsZXJ0
Ow0KICAgICAgICAgICAgJG9BbGVydCA9IHsNCiAgICAgICAgICAgICAgICAgZVR5
cGU6IFlBSE9PLndodC5BbGVydC5lVHlwZU1lc3NhZ2VzDQogICAgICAgICAgICAg
ICAgLGFNZXNzYWdlczogdG1wTXNncw0KICAgICAgICAgICAgfQ0KICAgICAgICB9
DQogICAgICAgIA0KICAgICAgICAkb0FsZXJ0LmlkID0gKCRpSUQgPT0gbnVsbCB8
fCAkaUlEID09ICcnKSA/ICcwJyA6ICRpSUQ7DQogICAgICAgICRvQWxlcnQuYk1v
ZGFsID0gKCRiTW9kYWwgPT0gdHJ1ZSk7DQogICAgICAgIA0KICAgICAgICB0aGlz
Ll9hQWxlcnRzLnB1c2goJG9BbGVydCk7DQogICAgICAgIA0KICAgICAgICAvLyBQ
cm9jZXNzIHRoZSBhbGVydCBxdWV1ZToNCiAgICAgICAgdGhpcy5fcHJvY2Vzc1F1
ZXVlKCk7DQogICAgfTsNCiAgICANCiAgICANCiAgICAvLyBQcm9jZXNzZXMgdGhl
IGFsZXJ0IHF1ZXVlIHRvIGRpc3BsYXkgdGhlIG5leHQgcXVldWVkIHVwIGFsZXJ0
Og0KICAgIHRoaXMuX3Byb2Nlc3NRdWV1ZSA9IGZ1bmN0aW9uKCkgew0KICAgICAg
ICBpZiAoKCF0aGlzLl9iUmVhZHkpIHx8IHRoaXMuX2JBbGVydFZpc2libGUgfHwg
dGhpcy5fYkFuaW1hdGluZyB8fCB0aGlzLl9hQWxlcnRzLmxlbmd0aCA9PSAwKSB7
DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCiAgICAgICAgDQogICAg
ICAgIHRoaXMuX29BY3RpdmVBbGVydCA9IHRoaXMuX2FBbGVydHMuc2hpZnQoKTsN
CgkJDQoJCXRoaXMuX2lBY3RpdmVTaG93RHVyYXRpb24gPSB0aGlzLl9pRGVmYXVs
dFNob3dEdXJhdGlvbjsNCiAgICAgICAgDQogICAgICAgIHN3aXRjaCAodGhpcy5f
b0FjdGl2ZUFsZXJ0LmVUeXBlKSB7DQogICAgICAgICAgICBjYXNlIFlBSE9PLndo
dC5BbGVydC5lVHlwZUdlbmVyYWw6DQogICAgICAgICAgICAgICAgdGhpcy5fb0Nv
bnRlbnRCb3guaW5uZXJIVE1MID0gdGhpcy5fZ2V0Q29udGVudEdlbmVyYWwodGhp
cy5fb0FjdGl2ZUFsZXJ0KTsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAg
ICAgICAgIGNhc2UgWUFIT08ud2h0LkFsZXJ0LmVUeXBlRXJyb3I6DQogICAgICAg
ICAgICAgICAgdGhpcy5fb0NvbnRlbnRCb3guaW5uZXJIVE1MID0gdGhpcy5fZ2V0
Q29udGVudEVycm9yKHRoaXMuX29BY3RpdmVBbGVydCk7DQogICAgICAgICAgICAg
ICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlIFlBSE9PLndodC5BbGVydC5lVHlw
ZU1lc3NhZ2U6DQogICAgICAgICAgICAgICAgdGhpcy5fb0NvbnRlbnRCb3guaW5u
ZXJIVE1MID0gdGhpcy5fZ2V0Q29udGVudE1lc3NhZ2UodGhpcy5fb0FjdGl2ZUFs
ZXJ0KTsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2Ug
WUFIT08ud2h0LkFsZXJ0LmVUeXBlTWVzc2FnZXM6DQogICAgICAgICAgICAgICAg
dGhpcy5fb0NvbnRlbnRCb3guaW5uZXJIVE1MID0gdGhpcy5fZ2V0Q29udGVudE1l
c3NhZ2VzKHRoaXMuX29BY3RpdmVBbGVydCk7DQogICAgICAgICAgICAgICAgYnJl
YWs7DQogICAgICAgICAgICBjYXNlIFlBSE9PLndodC5BbGVydC5lVHlwZUN1c3Rv
bToNCiAgICAgICAgICAgICAgICB0aGlzLl9vQ29udGVudEJveC5pbm5lckhUTUwg
PSB0aGlzLl9nZXRDb250ZW50Q3VzdG9tKHRoaXMuX29BY3RpdmVBbGVydCk7DQog
ICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlIFlBSE9PLndo
dC5BbGVydC5lVHlwZVNpZGViYXJEb3dubG9hZDoNCiAgICAgICAgICAgICAgICB0
aGlzLl9vQ29udGVudEJveC5pbm5lckhUTUwgPSB0aGlzLl9nZXRDb250ZW50U2lk
ZWJhckRvd25sb2FkKHRoaXMuX29BY3RpdmVBbGVydCk7DQogICAgICAgICAgICAg
ICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlIFlBSE9PLndodC5BbGVydC5lVHlw
ZUhUTUw6DQogICAgICAgICAgICAgICAgdGhpcy5fb0NvbnRlbnRCb3guaW5uZXJI
VE1MID0gdGhpcy5fZ2V0Q29udGVudEhUTUwodGhpcy5fb0FjdGl2ZUFsZXJ0KTsN
CiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAg
ICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgICAgLy8gSW52YWxpZCBhbGVy
dCB0eXBlLiBTa2lwIHRvIHRoZSBuZXh0IGFsZXJ0IGluIHRoZSBxdWV1ZToNCiAg
ICAgICAgICAgICAgICB0aGlzLl9wcm9jZXNzUXVldWUoKTsNCiAgICAgICAgICAg
ICAgICByZXR1cm47DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC8vIFNo
b3cgdGhlIGFsZXJ0Li4uDQogICAgICAgIHRoaXMuX2NlbnRlckFsZXJ0KCk7DQog
ICAgICAgIA0KICAgICAgICAvLyBMaXN0ZW4gZm9yIHRoZSB3aW5kb3cgc2Nyb2xs
IChJRSA8IDcgb25seSkgJiByZXNpemUgZXZlbnRzOg0KICAgICAgICBZQUhPTy51
dGlsLkV2ZW50LmFkZExpc3RlbmVyKHdpbmRvdywgJ3Jlc2l6ZScsIHRoaXMuX2Nl
bnRlckFsZXJ0LCB0aGlzLCB0cnVlKTsNCiAgICAgICAgaWYgKFlBSE9PLmVudi51
YS5pZSA+IDAgJiYgWUFIT08uZW52LnVhLmllIDwgNykgWUFIT08udXRpbC5FdmVu
dC5hZGRMaXN0ZW5lcih3aW5kb3csICdzY3JvbGwnLCB0aGlzLl9jZW50ZXJBbGVy
dCwgdGhpcywgdHJ1ZSk7DQogICAgICAgIA0KICAgICAgICAvLyBBbmltYXRlIGEg
ZmFkZS1pbiBpZiBzdXBwb3J0ZWQ6DQogICAgICAgIGlmICh0aGlzLl9pTm9GYWRl
RHVyYXRpb24gPT0gMCkgew0KICAgICAgICAgICAgWUFIT08udXRpbC5Eb20uc2V0
U3R5bGUodGhpcy5fb091dGVyQm94LCAnb3BhY2l0eScsIDApOw0KICAgICAgICAg
ICAgdGhpcy5fb0Jhc2Uuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7DQogICAgICAg
ICAgICB0aGlzLl9vT3V0ZXJCb3guc3R5bGUuZGlzcGxheSA9ICdibG9jayc7DQog
ICAgICAgICAgICB0aGlzLl9iQW5pbWF0aW5nID0gdHJ1ZTsNCiAgICAgICAgICAg
IHZhciBvQW5pbSA9IG5ldyBZQUhPTy51dGlsLkFuaW0odGhpcy5fb091dGVyQm94
LCB7b3BhY2l0eToge3RvOiAxfX0sIDAuMjUsIFlBSE9PLnV0aWwuRWFzaW5nLmVh
c2VPdXQpOw0KICAgICAgICAgICAgb0FuaW0ub25Db21wbGV0ZS5zdWJzY3JpYmUo
dGhpcy5fb25TaG93Q29tcGxldGUsIHRoaXMsIHRydWUpOw0KICAgICAgICAgICAg
b0FuaW0uYW5pbWF0ZSgpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAg
dGhpcy5fb0Jhc2Uuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7DQogICAgICAgICAg
ICB0aGlzLl9vT3V0ZXJCb3guc3R5bGUuZGlzcGxheSA9ICdibG9jayc7DQogICAg
ICAgICAgICB0aGlzLl9vblNob3dDb21wbGV0ZSgpOw0KICAgICAgICB9DQogICAg
fTsNCiAgICANCiAgICANCiAgICAvLyBGaXJlZCBvbmNlIHRoZSBhbGVydCBpcyBm
dWxseSB2aXNpYmxlOg0KICAgIHRoaXMuX29uU2hvd0NvbXBsZXRlID0gZnVuY3Rp
b24oKSB7DQogICAgICAgIHRoaXMuX2JBbmltYXRpbmcgPSBmYWxzZTsNCiAgICAg
ICAgdGhpcy5fYkFsZXJ0VmlzaWJsZSA9IHRydWU7DQogICAgICAgIA0KICAgICAg
ICBpZiAodGhpcy5faUFjdGl2ZVNob3dEdXJhdGlvbiA+IDApIHsNCiAgICAgICAg
ICAgIHRoaXMuX3NldENsb3NlRGVsYXkodGhpcy5faUFjdGl2ZVNob3dEdXJhdGlv
biArIHRoaXMuX2lOb0ZhZGVEdXJhdGlvbik7DQogICAgICAgIH0NCiAgICB9Ow0K
ICAgIA0KICAgIA0KICAgIC8vIEJlZ2lucyB0byBmYWRlIG91dCB0aGUgdmlzaWJs
ZSBhbGVydDoNCiAgICB0aGlzLl9jbG9zZSA9IGZ1bmN0aW9uKCRiRmFzdCkgew0K
ICAgICAgICBpZiAoKCF0aGlzLl9iQWxlcnRWaXNpYmxlKSB8fCAodGhpcy5fYkFu
aW1hdGluZykpIHJldHVybjsNCiAgICAgICAgdGhpcy5fYkFsZXJ0VmlzaWJsZSA9
IGZhbHNlOw0KICAgICAgICANCiAgICAgICAgLy8gSWYgdGhlIGFjdGl2ZSBhbGVy
dCBoYXMgYSB2YWxpZCBpZCwgZG8gYW4gYWpheCBjYWxsIHRvIGRpc21pc3MgaXQg
c28gaXQgd29uJ3Qgc2hvdyB1cCBhZ2Fpbi4NCiAgICAgICAgdGhpcy5fY2xlYXIo
KTsNCiAgICAgICAgDQogICAgICAgIC8vIEFuaW1hdGUgYSBmYWRlLW91dCBpZiBz
dXBwb3J0ZWQ6DQogICAgICAgIGlmICh0aGlzLl9pTm9GYWRlRHVyYXRpb24gPT0g
MCkgew0KICAgICAgICAgICAgdGhpcy5fYkFuaW1hdGluZyA9IHRydWU7DQogICAg
ICAgICAgICB2YXIgb0FuaW0gPSBuZXcgWUFIT08udXRpbC5BbmltKHRoaXMuX29P
dXRlckJveCwge29wYWNpdHk6IHt0bzogMH19LCAoJGJGYXN0ID09IHRydWUpID8g
MC4yNSA6IDIsIFlBSE9PLnV0aWwuRWFzaW5nLmVhc2VJbik7DQogICAgICAgICAg
ICBvQW5pbS5vbkNvbXBsZXRlLnN1YnNjcmliZSh0aGlzLl9vbkNsb3NlQ29tcGxl
dGUsIHRoaXMsIHRydWUpOw0KICAgICAgICAgICAgb0FuaW0uYW5pbWF0ZSgpOw0K
ICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgdGhpcy5fb25DbG9zZUNvbXBs
ZXRlKCk7DQogICAgICAgIH0NCiAgICB9Ow0KICAgIA0KICAgIA0KICAgIC8vIEZp
cmVkIHdoZW4gdGhlIGFsZXJ0IGhhcyBiZWVuIGNsb3NlZDoNCiAgICB0aGlzLl9v
bkNsb3NlQ29tcGxldGUgPSBmdW5jdGlvbigpIHsNCiAgICAgICAgaWYgKHRoaXMu
X29CYXNlLnN0eWxlLmRpc3BsYXkgPT0gJ2Jsb2NrJykgew0KICAgICAgICAgICAg
dGhpcy5fb0Jhc2Uuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCiAgICAgICAgICAg
IHRoaXMuX29PdXRlckJveC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KICAgICAg
ICAgICAgDQogICAgICAgICAgICB0aGlzLl9jbGVhckNsb3NlRGVsYXlUTygpOw0K
ICAgICAgICAgICAgdGhpcy5fYkFsZXJ0VmlzaWJsZSA9IGZhbHNlOw0KICAgICAg
ICAgICAgdGhpcy5fYkFuaW1hdGluZyA9IGZhbHNlOw0KICAgICAgICAgICAgDQog
ICAgICAgICAgICAvLyBGaXJlIHRoZSBldmVudCB0aGF0IGFsZXJ0IGlzIGNsb3Nl
ZA0KICAgICAgICAgICAgdGhpcy5vQWxlcnREaXNtaXNzRXZlbnQuZmlyZSh0aGlz
Ll9vQWN0aXZlQWxlcnQpOw0KICAgICAgICAgICAgDQogICAgICAgICAgICB0aGlz
Ll9vQWN0aXZlQWxlcnQgPSBudWxsOw0KICAgICAgICAgICAgDQogICAgICAgICAg
ICAvLyBTdG9wIGxpc3RlbmluZyBmb3IgdGhlIHdpbmRvdyBzY3JvbGwgKElFIDwg
NyBvbmx5KSAmIHJlc2l6ZSBldmVudHM6DQogICAgICAgICAgICBZQUhPTy51dGls
LkV2ZW50LnJlbW92ZUxpc3RlbmVyKHdpbmRvdywgJ3Jlc2l6ZScsIHRoaXMuX2Nl
bnRlckFsZXJ0KTsNCiAgICAgICAgICAgIGlmIChZQUhPTy5lbnYudWEuaWUgPiAw
ICYmIFlBSE9PLmVudi51YS5pZSA8IDcpIFlBSE9PLnV0aWwuRXZlbnQucmVtb3Zl
TGlzdGVuZXIod2luZG93LCAnc2Nyb2xsJywgdGhpcy5fY2VudGVyQWxlcnQpOw0K
ICAgICAgICB9DQogICAgICAgIHRoaXMuX3Byb2Nlc3NRdWV1ZSgpOw0KICAgIH07
DQogICAgDQogICAgDQogICAgLy8gQ2xlYXJzIHRoZSBjdXJyZW50IGFsZXJ0Og0K
ICAgIHRoaXMuX2NsZWFyID0gZnVuY3Rpb24oJGJTeW5jKSB7DQogICAgICAgIGlm
ICh0aGlzLl9vQWN0aXZlQWxlcnQgIT0gbnVsbCkgew0KICAgICAgICAgICAgaWYg
KHRoaXMuX29BY3RpdmVBbGVydC5pZCAhPSAnMCcpIHsNCiAgICAgICAgICAgICAg
ICBodHRwR2V0KGh0dHBHZXQuYnVpbGRQb3N0VVJJKCdEaXNtaXNzQWxlcnQnLCdh
aWQnLHRoaXMuX29BY3RpdmVBbGVydC5pZCkse30saHR0cEdldC5kb05vdGhpbmcs
KCRiU3luYyA9PSB0cnVlKSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAg
ICB9Ow0KICAgIA0KICAgIA0KICAgIC8vIEdlbmVyYXRlcyB0aGUgaHRtbCBjb250
ZW50IGZvciBhIGdlbmVyYWwgYWxlcnQ6DQogICAgdGhpcy5fZ2V0Q29udGVudEdl
bmVyYWwgPSBmdW5jdGlvbigkb0FsZXJ0KSB7DQogICAgICAgIGlmICgkb0FsZXJ0
LnNNZXNzYWdlLmxlbmd0aCA8PSA1MCkgdGhpcy5faUFjdGl2ZVNob3dEdXJhdGlv
biA9IDEyNTA7DQogICAgICAgIGlmICgkb0FsZXJ0LnNNZXNzYWdlLmxlbmd0aCA8
PSAxMDApIHRoaXMuX2lBY3RpdmVTaG93RHVyYXRpb24gPSAxNTAwOw0KICAgICAg
ICBpZiAoJG9BbGVydC5zTWVzc2FnZS5sZW5ndGggPD0gMTUwKSB0aGlzLl9pQWN0
aXZlU2hvd0R1cmF0aW9uID0gMjUwMDsNCiAgICAgICAgcmV0dXJuIHRoaXMuX3ND
ZW50ZXJlZFRlbXBsYXRlLmZvcm1hdCgkb0FsZXJ0LnNNZXNzYWdlLmh0bWxFc2Nh
cGUoKS5SZXBsYWNlKCdcbicsICc8YnIvPicpKTsNCiAgICB9Ow0KICAgIA0KICAg
IA0KICAgIC8vIEdlbmVyYXRlcyB0aGUgaHRtbCBjb250ZW50IGZvciBhIGdlbmVy
YWwgYWxlcnQ6DQogICAgdGhpcy5fZ2V0Q29udGVudEhUTUwgPSBmdW5jdGlvbigk
b0FsZXJ0KSB7DQogICAgICAgIC8qDQogICAgICAgIGlmICgkb0FsZXJ0LnNNZXNz
YWdlLmxlbmd0aCA8PSA1MCkgdGhpcy5faUFjdGl2ZVNob3dEdXJhdGlvbiA9IDEy
NTA7DQogICAgICAgIGlmICgkb0FsZXJ0LnNNZXNzYWdlLmxlbmd0aCA8PSAxMDAp
IHRoaXMuX2lBY3RpdmVTaG93RHVyYXRpb24gPSAxNTAwOw0KICAgICAgICBpZiAo
JG9BbGVydC5zTWVzc2FnZS5sZW5ndGggPD0gMTUwKSB0aGlzLl9pQWN0aXZlU2hv
d0R1cmF0aW9uID0gMjUwMDsNCiAgICAgICAgKi8NCiAgICAgICAgdGhpcy5faUFj
dGl2ZVNob3dEdXJhdGlvbiA9IC0xOw0KICAgICAgICByZXR1cm4gdGhpcy5fc0Nl
bnRlcmVkVGVtcGxhdGUuZm9ybWF0KCRvQWxlcnQuc01lc3NhZ2UuUmVwbGFjZSgn
XG4nLCAnPGJyLz4nKSk7DQogICAgfTsNCiAgICANCiAgICANCiAgICAvLyBHZW5l
cmF0ZXMgdGhlIGh0bWwgY29udGVudCBmb3IgYW4gZXJyb3IgYWxlcnQ6DQogICAg
dGhpcy5fZ2V0Q29udGVudEVycm9yID0gZnVuY3Rpb24oJG9BbGVydCkgew0KICAg
ICAgICAvLyBUT0RPOiBBZGQgYW4gZXJyb3IgaWNvbjoNCiAgICAgICAgcmV0dXJu
IHRoaXMuX3NDZW50ZXJlZFRlbXBsYXRlLmZvcm1hdCgkb0FsZXJ0LnNNZXNzYWdl
Lmh0bWxFc2NhcGUoKSk7DQogICAgfTsNCiAgICANCiAgICANCiAgICAvLyBHZW5l
cmF0ZXMgdGhlIGh0bWwgY29udGVudCBmb3IgYSBtZXNzYWdlIGFsZXJ0Og0KICAg
IHRoaXMuX2dldENvbnRlbnRNZXNzYWdlID0gZnVuY3Rpb24oJG9BbGVydCkgew0K
ICAgICAgICB0aGlzLl9pQWN0aXZlU2hvd0R1cmF0aW9uID0gNjAwMDA7DQogICAg
ICAgIHZhciBzTWVzc2FnZUJvZHkgPSAkb0FsZXJ0Lm9NZXNzYWdlLm1zZ0JvZHk7
DQogICAgICAgIA0KICAgICAgICAvLyBUcnVuY2F0ZSBsb25nIG1lc3NhZ2VzOg0K
ICAgICAgICB2YXIgaU1heExlbiA9IDIxMDsNCiAgICAgICAgaWYgKHNNZXNzYWdl
Qm9keS5sZW5ndGggPiBpTWF4TGVuKSB7DQogICAgICAgICAgICB3aGlsZSAoJyAu
IT8sXG5cdCcuaW5kZXhPZihzTWVzc2FnZUJvZHkuY2hhckF0KGlNYXhMZW4pKSA9
PSAtMSkgew0KICAgICAgICAgICAgICAgIGlNYXhMZW4tLTsNCiAgICAgICAgICAg
IH0NCiAgICAgICAgICAgIHNNZXNzYWdlQm9keSA9IHNNZXNzYWdlQm9keS5zdWJz
dHJpbmcoMCwgaU1heExlbikudHJpbSgpLmh0bWxFc2NhcGUoKSArICcgPGEgaHJl
Zj0iJyArIHRoaXMuX3NEb21haW4gKyAnL2NvbW11bml0eS9tZW1iZXIvezB9L2Nv
bnZlcnNhdGlvbi97MX0vIiBvbmNsaWNrPSJvV0hUQWxlcnQuY2xlYXJOb3coKTsi
Pi4uLm1vcmU8L2E+Jy5mb3JtYXQob1BhZ2Uub0xvZ2dlZEluVXNlci51c2VyTmFt
ZSwgJG9BbGVydC5vTWVzc2FnZS5jb252ZXJzYXRpb25JRCk7DQogICAgICAgIH0g
ZWxzZSB7DQogICAgICAgICAgICBzTWVzc2FnZUJvZHkgPSBzTWVzc2FnZUJvZHku
aHRtbEVzY2FwZSgpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICB2YXIg
c0J1dHRvbnMgPSB0aGlzLl9zTWVzc2FnZUJ1dHRvbnNUZW1wbGF0ZS5mb3JtYXQo
b1BhZ2Uub0xvZ2dlZEluVXNlci51c2VyTmFtZSwgJG9BbGVydC5vTWVzc2FnZS5j
b252ZXJzYXRpb25JRCk7DQogICAgICAgIHZhciBzTGVmdFNpZGUgPSB0aGlzLl9z
TWVtYmVySW1hZ2VUZW1wbGF0ZS5mb3JtYXQoJy91c2VyaW1hZ2VzLycgKyAkb0Fs
ZXJ0Lm9NZXNzYWdlLmZyb21Vc2VySW1hZ2UsICRvQWxlcnQub01lc3NhZ2UuZnJv
bURpc3BsYXlOYW1lLmh0bWxFc2NhcGUoKSk7DQogICAgICAgIHZhciBzTWVzc2Fn
ZSA9IHRoaXMuX3NNZXNzYWdlVGVtcGxhdGUuZm9ybWF0KCRvQWxlcnQub01lc3Nh
Z2UuZnJvbURpc3BsYXlOYW1lLmh0bWxFc2NhcGUoKSwgJG9BbGVydC5vTWVzc2Fn
ZS5tc2dTdWJqZWN0Lmh0bWxFc2NhcGUoKSwgc01lc3NhZ2VCb2R5KTsNCiAgICAg
ICAgcmV0dXJuIHRoaXMuX3NUd29Db2x1bW5UZW1wbGF0ZS5mb3JtYXQoc01lc3Nh
Z2UsIHNMZWZ0U2lkZSkgKyBzQnV0dG9uczsNCiAgICB9Ow0KICAgIA0KICAgIA0K
ICAgIC8vIEdlbmVyYXRlcyB0aGUgaHRtbCBjb250ZW50IGZvciBhIG5ldyBtZXNz
YWdlcyBhbGVydDoNCiAgICB0aGlzLl9nZXRDb250ZW50TWVzc2FnZXMgPSBmdW5j
dGlvbigkb0FsZXJ0KSB7DQogICAgICAgIHRoaXMuX2lBY3RpdmVTaG93RHVyYXRp
b24gPSA2MDAwMDsNCiAgICAgICAgcmV0dXJuIHRoaXMuX3NDZW50ZXJlZFRlbXBs
YXRlLmZvcm1hdCgnPGRpdj5Zb3VcJ3ZlIHJlY2VpdmVkIHswfSBuZXcgbWVzc2Fn
ZXMgaW4geW91ciBpbmJveDxici8+PGJyLz48L2Rpdj4nLmZvcm1hdCgkb0FsZXJ0
LmFNZXNzYWdlcy5sZW5ndGgpKSArIHRoaXMuX3NNZXNzYWdlc0J1dHRvbnNUZW1w
bGF0ZS5mb3JtYXQob1BhZ2Uub0xvZ2dlZEluVXNlci51c2VyTmFtZSk7DQogICAg
fTsNCiAgICANCiAgICANCiAgICAvLyBHZW5lcmF0ZXMgdGhlIGh0bWwgY29udGVu
dCBmb3IgYSBjdXN0b20gYWxlcnQ6DQogICAgdGhpcy5fZ2V0Q29udGVudEN1c3Rv
bSA9IGZ1bmN0aW9uKCRvQWxlcnQpIHsNCiAgICAgICAgcmV0dXJuIHRoaXMuX3ND
ZW50ZXJlZFRlbXBsYXRlLmZvcm1hdCgkb0FsZXJ0LnNNZXNzYWdlKTsNCiAgICB9
Ow0KICAgIA0KICAgIA0KICAgIC8vIEdlbmVyYXRlcyB0aGUgaHRtbCBjb250ZW50
IGZvciBhIFNpZGViYXIgRG93bmxvYWQgYWxlcnQ6DQogICAgdGhpcy5fZ2V0Q29u
dGVudFNpZGViYXJEb3dubG9hZCA9IGZ1bmN0aW9uKCRvQWxlcnQpIHsNCiAgICAg
ICAgdGhpcy5faUFjdGl2ZVNob3dEdXJhdGlvbiA9IC0xOw0KICAgICAgICByZXR1
cm4gdGhpcy5fc1NpZGViYXJEb3dubG9hZFRlbXBsYXRlLmZvcm1hdCgkb0FsZXJ0
Lm9NZXNzYWdlLnNUaXRsZSwgJG9BbGVydC5vTWVzc2FnZS5zTWVzc2FnZSk7DQog
ICAgICAgIC8vcmV0dXJuIHRoaXMuX3NTaWRlYmFyRG93bmxvYWRUZW1wbGF0ZS5m
b3JtYXQoJ1JlbGF0ZWQgSG93LVRvIFZpZGVvIFNpZGViYXInLCAnV291bGQgeW91
IGxpa2UgdG8gaW5zdGFsbCB0aGUgc2lkZWJhcj8nKTsNCiAgICB9DQogICAgDQog
ICAgDQogICAgLy8gRmlyZWQgd2hlbiB0aGUgdXNlciBjbGlja3MgdGhlIGJveDoN
CiAgICB0aGlzLl9vbkJveENsaWNrID0gZnVuY3Rpb24oJG9FdmVudCkgew0KICAg
ICAgICBpZiAodGhpcy5fb0FjdGl2ZUFsZXJ0LmVUeXBlICE9IFlBSE9PLndodC5B
bGVydC5lVHlwZU1lc3NhZ2UgJiYgdGhpcy5fb0FjdGl2ZUFsZXJ0LmVUeXBlICE9
IFlBSE9PLndodC5BbGVydC5lVHlwZU1lc3NhZ2VzICYmIHRoaXMuX29BY3RpdmVB
bGVydC5lVHlwZSAhPSBZQUhPTy53aHQuQWxlcnQuZVR5cGVTaWRlYmFyRG93bmxv
YWQpIHsNCiAgICAgICAgICAgIGlmICghdGhpcy5fYkFuaW1hdGluZykgew0KICAg
ICAgICAgICAgICAgIHRoaXMuX2Nsb3NlKHRydWUpOw0KICAgICAgICAgICAgfSBl
bHNlIHsNCiAgICAgICAgICAgICAgICB0aGlzLl9vbkNsb3NlQ29tcGxldGUoKTsN
CiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH07DQogICAgDQogICAgDQog
ICAgLy8gU2V0IGNsb3NlIGRlbGF5Og0KICAgIHRoaXMuX3NldENsb3NlRGVsYXkg
PSBmdW5jdGlvbigkaURlbGF5KSB7DQogICAgICAgIHRoaXMuX2NsZWFyQ2xvc2VE
ZWxheVRPKCk7DQogICAgICAgIHZhciBvU2NvcGUgPSB0aGlzOw0KICAgICAgICB0
aGlzLl9pQ2xvc2VEZWxheVRPID0gc2V0VGltZW91dChmdW5jdGlvbigpe29TY29w
ZS5fY2xvc2UoKTt9LCRpRGVsYXkpOw0KICAgIH07DQogICAgDQogICAgDQogICAg
Ly8gQ2xlYXJzIGFueSBwZW5kaW5nIGNsb3NlLWRlbGF5IHRpbWVvdXRzOg0KICAg
IHRoaXMuX2NsZWFyQ2xvc2VEZWxheVRPID0gZnVuY3Rpb24oKSB7DQogICAgICAg
IGlmICh0aGlzLl9pQ2xvc2VEZWxheVRPICE9IG51bGwpIHsNCiAgICAgICAgICAg
IGNsZWFyVGltZW91dCh0aGlzLl9pQ2xvc2VEZWxheVRPKTsNCiAgICAgICAgICAg
IHRoaXMuX2lDbG9zZURlbGF5VE8gPSBudWxsOw0KICAgICAgICB9DQogICAgfTsN
CiAgICANCiAgICANCiAgICAvLyBGaXJlZCB3aGVuZXZlciB0aGUgd2luZG93IGlz
IHJlc2l6ZWQsIG9yIHNjcm9sbGVkIGluIElFIDY6DQogICAgdGhpcy5fY2VudGVy
QWxlcnQgPSBmdW5jdGlvbigpIHsNCiAgICAgICAgaWYgKFlBSE9PLmVudi51YS5p
ZSA+IDAgJiYgWUFIT08uZW52LnVhLmllIDwgNykgew0KICAgICAgICAgICAgdGhp
cy5fb0Jhc2Uuc3R5bGUudG9wID0gcHgod2luZG93LnBhZ2VZT2Zmc2V0IHx8IGRv
Y3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgMCk7DQogICAgICAg
ICAgICB0aGlzLl9vQmFzZS5zdHlsZS5oZWlnaHQgPSBweChZQUhPTy51dGlsLkRv
bS5nZXRWaWV3cG9ydEhlaWdodCgpKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAg
ICAgICAgWUFIT08udXRpbC5Eb20uc2V0U3R5bGUodGhpcy5fb091dGVyQm94LCAn
bWFyZ2luVG9wJywgcHgoKFlBSE9PLnV0aWwuRG9tLmdldFZpZXdwb3J0SGVpZ2h0
KCkvMikgLSAxMjApKTsNCiAgICB9Ow0KICAgIA0KICAgIA0KICAgIC8vIFRyeSB0
byBzaWduIHVwIGZvciBjdXN0b20gWVVJIGV2ZW50IHRoYXQgd2lsbCBmaXJlIHdo
ZW4gZW5kIG9mIHBhZ2UgaXMgcmVhY2hlZA0KICAgIHRyeSB7DQogICAgICAgIFlB
SE9PLnV0aWwuRG9tLm9XSFRSZWFkeUV2ZW50LnN1YnNjcmliZSh0aGlzLl9vblJl
YWR5LCB0aGlzLCB0cnVlKTsNCiAgICB9IGNhdGNoIChlcnIpIHsgDQogICAgICAg
IC8vIEF0dGFjaCB0byB0aGUgYWxlcnQgYm94IGFzIHNvb24gYXMgaXQncyByZWFk
eSBvbiB0aGUgcGFnZToNCiAgICAgICAgWUFIT08udXRpbC5FdmVudC5vbkNvbnRl
bnRSZWFkeSgnd2h0QWxlcnRCb3gnLCB0aGlzLl9vblJlYWR5LCB0aGlzLCB0cnVl
KTsNCiAgICB9DQp9Ow0KDQoNCi8vIERlZmluZSBBbGVydCBUeXBlczoNCllBSE9P
LndodC5BbGVydC5lVHlwZUdlbmVyYWwgICAgICAgICAgICA9IDA7DQpZQUhPTy53
aHQuQWxlcnQuZVR5cGVFcnJvciAgICAgICAgICAgICAgPSAxOw0KWUFIT08ud2h0
LkFsZXJ0LmVUeXBlTWVzc2FnZSAgICAgICAgICAgID0gMjsNCllBSE9PLndodC5B
bGVydC5lVHlwZU1lc3NhZ2VzICAgICAgICAgICA9IDM7DQpZQUhPTy53aHQuQWxl
cnQuZVR5cGVDdXN0b20gICAgICAgICAgICAgPSA0Ow0KWUFIT08ud2h0LkFsZXJ0
LmVUeXBlU2lkZWJhckRvd25sb2FkICAgID0gNTsNCllBSE9PLndodC5BbGVydC5l
VHlwZUhUTUwgICAgICAgICAgICAgICA9IDY7DQoNCg0KLy8gSW5pdGlhbGl6ZXMg
dGhlIGFsZXJ0IG9iamVjdDoNCllBSE9PLndodC5BbGVydC5pbml0ID0gZnVuY3Rp
b24oKSB7DQogICAgaWYgKCFZQUhPTy5sYW5nLmlzT2JqZWN0KFlBSE9PLndodC5B
bGVydC5vQWxlcnQpKSB7DQogICAgICAgIFlBSE9PLndodC5BbGVydC5vQWxlcnQg
PSBuZXcgWUFIT08ud2h0LkFsZXJ0KCk7DQogICAgfQ0KfTsNCg0KDQovLyBRdWV1
ZXMgYW4gYWxlcnQgdG8gYmUgc2hvd246DQpZQUhPTy53aHQuQWxlcnQuc2hvdyA9
IGZ1bmN0aW9uKCkgew0KICAgIGlmICghWUFIT08ubGFuZy5pc09iamVjdChZQUhP
Ty53aHQuQWxlcnQub0FsZXJ0KSkgew0KICAgICAgICBZQUhPTy53aHQuQWxlcnQu
aW5pdCgpOw0KICAgIH0NCiAgICBZQUhPTy53aHQuQWxlcnQub0FsZXJ0LnF1ZXVl
QWxlcnQuYXBwbHkoWUFIT08ud2h0LkFsZXJ0Lm9BbGVydCwgYXJndW1lbnRzKTsN
Cn07DQoNCg0KLy8gRGlzbWlzc2VzIHRoZSBjdXJyZW50bHkgdmlzaWJsZSBhbGVy
dDoNCllBSE9PLndodC5BbGVydC5kaXNtaXNzID0gZnVuY3Rpb24oKSB7DQogICAg
aWYgKCFZQUhPTy5sYW5nLmlzT2JqZWN0KFlBSE9PLndodC5BbGVydC5vQWxlcnQp
KSByZXR1cm47DQogICAgWUFIT08ud2h0LkFsZXJ0Lm9BbGVydC5fY2xvc2UuYXBw
bHkoWUFIT08ud2h0LkFsZXJ0Lm9BbGVydCwgW3RydWVdKTsNCn07DQoNCg0KLy8g
Q2xlYXIgdGhlIGN1cnJlbnRseSB2aXNpYmxlIGFsZXJ0Og0KWUFIT08ud2h0LkFs
ZXJ0LmNsZWFyTm93ID0gZnVuY3Rpb24oKSB7DQogICAgaWYgKCFZQUhPTy5sYW5n
LmlzT2JqZWN0KFlBSE9PLndodC5BbGVydC5vQWxlcnQpKSByZXR1cm47DQogICAg
WUFIT08ud2h0LkFsZXJ0Lm9BbGVydC5fY2xlYXIuYXBwbHkoWUFIT08ud2h0LkFs
ZXJ0Lm9BbGVydCwgW3RydWVdKTsNCn07DQoNCg0KLy8gQ3JlYXRlIGEgZ2xvYmFs
IHNob3J0Y3V0IHRvIHRoaXMgb2JqZWN0Og0KdmFyIG9XSFRBbGVydCA9IFlBSE9P
LndodC5BbGVydDsNCg0KDQovLyBJbml0IHRoZSBhbGVydCBvYmplY3Q6DQpvV0hU
QWxlcnQuaW5pdCgpOw==
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline; filename=virtual_form.js
Content-Type: application/x-javascript; charset=utf-8; name=virtual_form.js
Content-Location: http://www.wonderhowto.com/js/virtual_form.js?v=0902102
Content-Transfer-Encoding: Base64
77u/Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIENvcHlyaWdodCAyMDA3IFdv
bmRlckhvd1RvLCBJbmMuDQovLyANCi8vIE9yaWdpb25hbCBBdXRob3I6ICAgIEJy
eWFuIENyb3cNCi8vIExhc3QgTW9kaWZpZWQgQnk6ICAgIE1hcmF0IEtob3VkYWJh
a2hzaGlldg0KLy8gTGFzdCBNb2RpZmllZDogICAgICAgMDQvMDYvMjAxMA0KLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KLy8gTWFrZSBzdXJlIHRoZSB3aHQgbmFt
ZXNwYWNlIGV4aXN0czoNCllBSE9PLm5hbWVzcGFjZSgnd2h0Jyk7DQoNCi8vIFZp
cnR1YWxGb3JtIGNsYXNzIGRlZmluaXRpb246DQpZQUhPTy53aHQuVmlydHVhbEZv
cm0gPSBmdW5jdGlvbigkc0Zvcm1OYW1lLCAkb1ZGb3JtLCAkb1BhcmVudEVsZW1l
bnQsICRiQXR0YWNoTGF0ZXIsICRvQXJncykgew0KICAgIC8vIFByaXZhdGUgTWVt
YmVyIERlY2xhcmF0aW9uczoNCiAgICB0aGlzLl9zRm9ybU5hbWUgPSAkc0Zvcm1O
YW1lOw0KICAgIHRoaXMuX29WRm9ybSA9ICgkb1ZGb3JtID09IG51bGwpID8gbnVs
bCA6ICRvVkZvcm07DQogICAgLy90aGlzLl9vUm9vdCA9ICh0eXBlb2YoJG9QYXJl
bnRFbGVtZW50KSA9PSAnc3RyaW5nJykgPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgkb1BhcmVudEVsZW1lbnQpIDogJG9QYXJlbnRFbGVtZW50Ow0KICAgIHRoaXMu
X29Sb290ID0gJG9QYXJlbnRFbGVtZW50Ow0KICAgIHRoaXMuX2JGb3JtTG9hZGlu
ZyA9IGZhbHNlOw0KICAgIHRoaXMuX2JJblByb2dyZXNzID0gZmFsc2U7DQogICAg
dGhpcy5fYkZvcm1BdHRhY2hlZCA9IGZhbHNlOw0KICAgIHRoaXMuX3NNZXNzYWdl
ID0gJyc7DQogICAgdGhpcy5fYVN1Ym1pdEJ1dHRvbnMgPSBbXTsNCiAgICB0aGlz
Ll9iSGFzRmlsZSA9IGZhbHNlOw0KICAgIHRoaXMub0FyZ3MgPSAoJG9BcmdzID09
IG51bGwpID8ge30gOiAkb0FyZ3M7DQogICAgaWYgKFlBSE9PLndodC5WaXJ0dWFs
Rm9ybS5pVXBsb2FkSUQgPT0gbnVsbCkgWUFIT08ud2h0LlZpcnR1YWxGb3JtLmlV
cGxvYWRJRCA9IDA7DQogICAgdGhpcy5fb0ZsaWNrclNlYXJjaCA9IG51bGw7DQog
ICAgdGhpcy5fb1VwbG9hZFRPID0gbnVsbDsNCiAgICANCgkNCiAgICAvLyBBdHRh
Y2hlcyB0aGUgZm9ybSB0byB0aGUgc3BlY2lmaWVkIHBhcmVudCBlbGVtZW50Og0K
ICAgIHRoaXMuYXR0YWNoRm9ybSA9IGZ1bmN0aW9uKCRvUGFyZW50RWxlbWVudCkg
ew0KICAgICAgICBpZiAodGhpcy5fYkZvcm1BdHRhY2hlZCkgcmV0dXJuOw0KICAg
ICAgICB0aGlzLl9vUm9vdCA9IFlBSE9PLnV0aWwuRG9tLmdldCgoJG9QYXJlbnRF
bGVtZW50ICE9IG51bGwgJiYgJG9QYXJlbnRFbGVtZW50ICE9IHRoaXMgJiYgJG9Q
YXJlbnRFbGVtZW50ICE9ICdXSFRSZWFkeScpID8gJG9QYXJlbnRFbGVtZW50IDog
dGhpcy5fb1Jvb3QpOw0KICAgICAgICBpZiAodGhpcy5fb1Jvb3QgPT0gbnVsbCkg
cmV0dXJuOw0KICAgICAgICANCiAgICAgICAgaWYgKHRoaXMuX29WRm9ybSA9PSBu
dWxsKSB7DQogICAgICAgICAgICB0aGlzLl9sb2FkRm9ybSgpOw0KICAgICAgICB9
IGVsc2Ugew0KICAgICAgICAgICAgdGhpcy5faW5pdEZvcm0oKTsNCiAgICAgICAg
fQ0KICAgIH07DQogICAgDQogICAgDQogICAgLy8gTG9hZHMgdGhlIHZpcnR1YWwg
Zm9ybToNCiAgICB0aGlzLl9sb2FkRm9ybSA9IGZ1bmN0aW9uKCkgew0KICAgICAg
ICBpZiAodGhpcy5fYkZvcm1Mb2FkaW5nKSByZXR1cm47DQogICAgICAgIHRoaXMu
X2JGb3JtTG9hZGluZyA9IHRydWU7DQogICAgICAgIFlBSE9PLnV0aWwuRG9tLnNl
dFN0eWxlKCdvdmVybGF5TG9hZGluZycsICdkaXNwbGF5JywgJ2Jsb2NrJyk7DQog
ICAgICAgIGh0dHBHZXQoaHR0cEdldC5idWlsZFBvc3RVUkkoJ0dldEZvcm0nLCdm
b3JtJyx0aGlzLl9zRm9ybU5hbWUpLCB7YmFzZTp0aGlzfSwgZnVuY3Rpb24ob1Jl
c3VsdCxvQXJncykgew0KICAgICAgICAgICAgb0FyZ3MuYmFzZS5fYkZvcm1Mb2Fk
aW5nID0gZmFsc2U7DQogICAgICAgICAgICBZQUhPTy51dGlsLkRvbS5zZXRTdHls
ZSgnb3ZlcmxheUxvYWRpbmcnLCAnZGlzcGxheScsICdub25lJyk7DQogICAgICAg
ICAgICAvLyBDaGVjayB0aGUgcmVzcG9uc2U6DQogICAgICAgICAgICBpZiAob1Jl
c3VsdC5lcnJvck51bWJlciA+IDApIHsNCiAgICAgICAgICAgICAgICBpZiAob0Fy
Z3MuYmFzZS5faVNob3dUTyAhPSBudWxsKSB7DQogICAgICAgICAgICAgICAgICAg
IGNsZWFyVGltZW91dChvQXJncy5iYXNlLl9pU2hvd1RPKTsNCiAgICAgICAgICAg
ICAgICAgICAgb0FyZ3MuYmFzZS5faVNob3dUTyA9IG51bGw7DQogICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgIG9XSFRBbGVydC5zaG93KG9SZXN1bHQu
ZXJyb3JUZXh0KTsNCiAgICAgICAgICAgICAgICBpZiAob1BhZ2UpIG9QYWdlLl9v
bkNhbmNlbCgpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAg
ICAvLyBTdWNjZXNzOg0KICAgICAgICAgICAgICAgIG9BcmdzLmJhc2UuX29WRm9y
bSA9IG9SZXN1bHQudmFsdWU7DQoJCQkJb0FyZ3MuYmFzZS5faW5pdEZvcm0uYXBw
bHkob0FyZ3MuYmFzZSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0pOw0KICAg
IH07DQogICAgDQogICAgDQogICAgLy8gRmlyZWQgb25jZSB0aGUgdmlydHVhbCBm
b3JtIGhhcyBiZWVuIHJlcXVlc3RlZCAmIGlzIGxvYWRlZDoNCiAgICB0aGlzLl9p
bml0Rm9ybSA9IGZ1bmN0aW9uKCkgew0KICAgICAgICAvLyBBdHRhY2ggdGhlIGZv
cm0gaHRtbCB0byB0aGUgZW5kIG9mIHRoZSBzcGVjaWZpZWQgcGFyZW50IGVsZW1l
bnQ6DQogICAgICAgIHZhciBvRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7DQogICAgICAgIG9EaXYuaW5uZXJIVE1MID0gdGhpcy5fb1ZGb3JtLmh0
bWw7DQogICAgICAgIGlmICh0eXBlb2YodGhpcy5fb1Jvb3QpID09ICdzdHJpbmcn
KSB0aGlzLl9vUm9vdCA9IFlBSE9PLnV0aWwuRG9tLmdldCh0aGlzLl9vUm9vdCk7
DQogICAgICAgIHRoaXMuX29Gb3JtID0gdGhpcy5fb1Jvb3QuYXBwZW5kQ2hpbGQo
WUFIT08udXRpbC5Eb20uZ2V0Rmlyc3RDaGlsZChvRGl2KSk7DQogICAgICAgIHRo
aXMuX2JGb3JtQXR0YWNoZWQgPSB0cnVlOw0KICAgICAgICB0aGlzLl9vRm9ybS5z
dHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KICAgICAgICB0aGlzLl9vRm9ybS5zdHls
ZS5kaXNwbGF5ID0gJ2Jsb2NrJzsNCiAgICAgICAgdGhpcy5fb0RpdlByb2dyZXNz
ID0gWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZm9ybVBy
b2dyZXNzJywgJ2RpdicsIHRoaXMuX29Gb3JtKVswXTsNCiAgICAgICAgdGhpcy5f
b0Rpdk1lc3NhZ2UgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lKCdmb3JtTWVzc2FnZScsICdkaXYnLCB0aGlzLl9vRm9ybSlbMF07DQogICAg
ICAgIA0KICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHRoaXMuX29WRm9ybS5q
c29uLmxlbmd0aDsgeCsrKSB7DQogICAgICAgICAgICBpZiAodGhpcy5fc01lc3Nh
Z2UgPT0gJycgJiYgdGhpcy5fb1ZGb3JtLmpzb25beF0ubWVzc2FnZSAhPSBudWxs
ICYmIHRoaXMuX29WRm9ybS5qc29uW3hdLm1lc3NhZ2UgIT0gJycpIHRoaXMuX3NN
ZXNzYWdlID0gdGhpcy5fb1ZGb3JtLmpzb25beF0ubWVzc2FnZTsNCiAgICAgICAg
ICAgIA0KICAgICAgICAgICAgLy8gTG9vcCB0aHJvdWdoIHRoZSBwcm92aWRlZCBm
aWVsZCBuYW1lcyBhbmQgc3RvcmUgcmVmZXJlbmNlcyB0byB0aGVtOg0KICAgICAg
ICAgICAgdmFyIGFGaWVsZHMgPSB0aGlzLl9vVkZvcm0uanNvblt4XS5maWVsZHM7
DQogICAgICAgICAgICBmb3IgKHZhciB5ID0gMDsgeSA8IGFGaWVsZHMubGVuZ3Ro
OyB5KyspIHsNCiAgICAgICAgICAgICAgICB0aGlzW2FGaWVsZHNbeV1dID0gZG9j
dW1lbnQuZm9ybXNbMF1bYUZpZWxkc1t5XV07DQogICAgICAgICAgICAgICAgLy8g
Q2FwdHVyZSBrZXlwcmVzcyBldmVudHMgdG8gaW50ZXJjZXB0IHRoZSBlbnRlciBr
ZXk6DQogICAgICAgICAgICAgICAgWUFIT08udXRpbC5FdmVudC5hZGRMaXN0ZW5l
cih0aGlzW2FGaWVsZHNbeV1dLCAna2V5cHJlc3MnLCB0aGlzLl9vbktleVByZXNz
LCB0aGlzLCB0cnVlKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAg
ICAgICAgICAgdGhpcy5fYVN1Ym1pdEJ1dHRvbnNbeF0gPSB0aGlzW3RoaXMuX29W
Rm9ybS5qc29uW3hdLmJ1dHRvbl0gPSBkb2N1bWVudC5mb3Jtc1swXVt0aGlzLl9v
VkZvcm0uanNvblt4XS5idXR0b25dOw0KICAgICAgICAgICAgDQogICAgICAgICAg
ICAvLyBMaXN0ZW4gZm9yIHRoZSBzdWJtaXQgYnV0dG9uJ3MgY2xpY2sgZXZlbnQ6
DQogICAgICAgICAgICBZQUhPTy51dGlsLkV2ZW50LmFkZExpc3RlbmVyKHRoaXMu
X2FTdWJtaXRCdXR0b25zW3hdLCAnY2xpY2snLCB0aGlzLl9vblN1Ym1pdCwgdGhp
cywgdHJ1ZSk7DQogICAgICAgIH0NCiAgICAgICAgDQoJCS8vIFJlc2V0IHRoZSBm
b3JtOg0KCQl0aGlzLnJlc2V0KCk7DQogICAgICAgIA0KCQkvLyBDZW50ZXIgYWxs
IGZvcm1zIChhcyBuZWVkZWQgaWYgYXBwbGljYWJsZSk6DQoJCWlmIChvUGFnZSkg
DQoJCQlvUGFnZS5fY2VudGVyRm9ybSgpOw0KICAgIH07DQogICAgDQogICAgDQog
ICAgLy8gUmVzZXRzIHRoZSBmb3JtOg0KICAgIHRoaXMucmVzZXQgPSBmdW5jdGlv
bigpIHsNCgkJLy8gQ2xlYXIgYW55IHByZXZpb3VzIGVycm9yIG1lc3NhZ2VzOg0K
CQl0aGlzLmNsZWFyRXJyb3IoKTsNCgkJCQ0KCQkvLyBGaXJlIHRoZSByZXNldCBt
ZXRob2RzIGluIHRoaXMgc2NvcGUgaWYgYXZhaWxhYmxlOg0KCQlmb3IgKHZhciB4
ID0gMDsgeCA8IHRoaXMuX29WRm9ybS5qc29uLmxlbmd0aDsgeCsrKSB7DQoJCQlp
ZiAodHlwZW9mKHRoaXMuX29WRm9ybS5qc29uW3hdLnJlc2V0KSA9PSAnZnVuY3Rp
b24nKSB7DQoJCQkJdHJ5IHsNCgkJCQkJdGhpcy5fb1ZGb3JtLmpzb25beF0ucmVz
ZXQuYXBwbHkodGhpcyk7DQoJCQkJfSBjYXRjaCAoZXJyKSB7ICB9DQoJCQl9DQoJ
CX0NCiAgICB9Ow0KICAgIA0KICAgIA0KICAgIC8vIEZpcmVkIGV2ZXJ5IHRpbWUg
YSBrZXkgaXMgcHJlc3NlZCBpbiBvbmUgb2YgdGhlIHZpcnR1YWwgZm9ybSdzIGZp
ZWxkczoNCiAgICB0aGlzLl9vbktleVByZXNzID0gZnVuY3Rpb24oJG9FdmVudCkg
ew0KICAgICAgICBpZiAoWUFIT08udXRpbC5FdmVudC5nZXRDaGFyQ29kZSgkb0V2
ZW50KSA9PSAxMykgew0KICAgICAgICAgICAgdmFyIG9UYXJnZXQgPSBZQUhPTy51
dGlsLkV2ZW50LmdldFRhcmdldCgkb0V2ZW50KTsNCiAgICAgICAgICAgIGlmIChv
VGFyZ2V0ICE9IG51bGwpIHsNCiAgICAgICAgICAgICAgICBpZiAob1RhcmdldC5u
b2RlTmFtZSA9PSAnVEVYVEFSRUEnIHx8IFlBSE9PLnV0aWwuRG9tLmhhc0NsYXNz
KG9UYXJnZXQsICdub1N1Ym1pdE9uUmV0dXJuJykpIHJldHVybjsNCiAgICAgICAg
ICAgIH0NCiAgICAgICAgICAgIHRoaXMuX29uU3VibWl0KCRvRXZlbnQpOw0KICAg
ICAgICB9DQogICAgfTsNCiAgICANCiAgICANCiAgICAvLyBTdWJtaXRzIHRoZSBz
cGVjaWZpZWQgZm9ybSAob3IgdGhlIDFzdCBvbmUgaWYgbm8gaW5kZXggaXMgc3Bl
Y2lmaWVkKToNCiAgICB0aGlzLnN1Ym1pdCA9IGZ1bmN0aW9uKCRpRm9ybUluZGV4
KSB7DQogICAgICAgIHRoaXMuX29uU3VibWl0KG51bGwsICRpRm9ybUluZGV4KTsN
CiAgICB9Ow0KICAgIA0KICAgIA0KICAgIC8vIFN1Ym1pdHMgdGhlIHZpcnR1YWwg
Zm9ybXMgZmllbGRzOg0KICAgIHRoaXMuX29uU3VibWl0ID0gZnVuY3Rpb24oJG9F
dmVudCwgJGlPdmVyaWRlSW5kZXgpIHsNCiAgICAgICAgaWYgKCRvRXZlbnQgIT0g
bnVsbCkgWUFIT08udXRpbC5FdmVudC5wcmV2ZW50RGVmYXVsdCgkb0V2ZW50KTsN
CiAgICAgICAgDQogICAgICAgIC8vIElmIHByb2Nlc3NpbmcgaXMgYWxyZWFkeSB1
bmRlciB3YXksIGRyb3Agb3V0IHRvIGxldCBpdCBmaW5pc2guDQogICAgICAgIGlm
ICh0aGlzLl9iSW5Qcm9ncmVzcykgcmV0dXJuOw0KICAgICAgICANCiAgICAgICAg
Ly8gRmlndXJlIG91dCB3aGljaCBmb3JtIHRoaXMgaXMgZm9yOg0KICAgICAgICB2
YXIgb1RhcmdldCA9ICgkb0V2ZW50ICE9IG51bGwpID8gWUFIT08udXRpbC5FdmVu
dC5nZXRUYXJnZXQoJG9FdmVudCkgOiBudWxsOw0KICAgICAgICB2YXIgaVN1Ym1p
dEluZGV4ID0gLTE7DQogICAgICAgIGlmIChvVGFyZ2V0ICE9IG51bGwpIHsNCiAg
ICAgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgdGhpcy5fb1ZGb3JtLmpzb24u
bGVuZ3RoOyB4KyspIHsNCiAgICAgICAgICAgICAgICBpZiAob1RhcmdldC5uYW1l
KSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChvVGFyZ2V0Lm5hbWUgPT0gdGhp
cy5fb1ZGb3JtLmpzb25beF0uYnV0dG9uKSB7DQogICAgICAgICAgICAgICAgICAg
ICAgICBpU3VibWl0SW5kZXggPSB4Ow0KICAgICAgICAgICAgICAgICAgICB9IGVs
c2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgeSA9IDA7IHkg
PCB0aGlzLl9vVkZvcm0uanNvblt4XS5maWVsZHMubGVuZ3RoOyB5KyspIHsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob1RhcmdldC5uYW1lID09IHRo
aXMuX29WRm9ybS5qc29uW3hdLmZpZWxkc1t5XSkgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpU3VibWl0SW5kZXggPSB4Ow0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg
ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKGlTdWJtaXRJbmRl
eCA+IC0xKSBicmVhazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9
DQogICAgICAgIH0gZWxzZSBpZiAoJGlPdmVyaWRlSW5kZXggIT0gbnVsbCkgew0K
ICAgICAgICAgICAgaVN1Ym1pdEluZGV4ID0gJGlPdmVyaWRlSW5kZXg7DQogICAg
ICAgIH0NCiAgICAgICAgDQogICAgICAgIC8vIFRoZSBmb3JtIHRvIHN1Ym1pdCB3
YXMgbm90IGRldGVybWluZWQuIERlZmF1bHQgdG8gdGhlIGZpcnN0IGZvcm06DQog
ICAgICAgIGlmIChpU3VibWl0SW5kZXggPCAwKSBpU3VibWl0SW5kZXggPSAwOw0K
ICAgICAgICANCiAgICAgICAgLy8gRmlyZSB0aGUgb25TdWJtaXQgbWV0aG9kIGlu
IHRoaXMgc2NvcGUgaWYgYXZhaWxhYmxlOg0KICAgICAgICB2YXIgYkNvbnRpbnVl
ID0gdHJ1ZTsNCiAgICAgICAgaWYgKHR5cGVvZih0aGlzLl9vVkZvcm0uanNvbltp
U3VibWl0SW5kZXhdLm9uU3VibWl0KSA9PSAnZnVuY3Rpb24nKSBiQ29udGludWUg
PSB0aGlzLl9vVkZvcm0uanNvbltpU3VibWl0SW5kZXhdLm9uU3VibWl0LmFwcGx5
KHRoaXMpOw0KICAgICAgICBpZiAoIWJDb250aW51ZSkgcmV0dXJuOw0KICAgICAg
ICANCiAgICAgICAgaWYgKHRoaXMuX29WRm9ybS5qc29uW2lTdWJtaXRJbmRleF0u
cG9zdFRvID09IG51bGwgfHwgdGhpcy5fb1ZGb3JtLmpzb25baVN1Ym1pdEluZGV4
XS5wb3N0VG8gPT0gJycpIHsNCiAgICAgICAgICAgIHRoaXMuX29uRXJyb3IoaVN1
Ym1pdEluZGV4LCAtMSwgJ01pc3NpbmcgRm9ybSBQcm9jZXNzaW5nIFNjcmlwdCcp
Ow0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgIA0KICAg
ICAgICAvLyBMb29wIHRocm91Z2ggYWxsIHRoZSBmb3JtIGZpZWxkcyB0byBzdWJt
aXQgdGhlaXIgdmFsdWVzOg0KICAgICAgICB0aGlzLl9iSGFzRmlsZSA9IGZhbHNl
Ow0KICAgICAgICB2YXIgYVBvc3RBcmdzID0gW107DQogICAgICAgIHZhciBhRmll
bGRzID0gdGhpcy5fb1ZGb3JtLmpzb25baVN1Ym1pdEluZGV4XS5maWVsZHM7DQog
ICAgICAgIGFQb3N0QXJncy5wdXNoKHRoaXMuX29WRm9ybS5qc29uW2lTdWJtaXRJ
bmRleF0ucG9zdFRvKTsNCiAgICAgICAgDQogICAgICAgIGZvciAodmFyIHggPSAw
OyB4IDwgYUZpZWxkcy5sZW5ndGg7IHgrKykgew0KICAgICAgICAgICAgaWYgKGFG
aWVsZHNbeF0uaW5kZXhPZignZmlsZScpID09IDAgfHwgYUZpZWxkc1t4XS5pbmRl
eE9mKCdmdXJsSW1hZ2UnKSA9PSAwKSB7DQogICAgICAgICAgICAgICAgLy8gVE9E
TzogRmlndXJlIG91dCBob3cgYmVzdCB0byBoYW5kbGUgZmlsZSB1cGxvYWRzLg0K
ICAgICAgICAgICAgICAgIGlmICh0aGlzW2FGaWVsZHNbeF1dLnZhbHVlICE9ICcn
KSB7DQogICAgICAgICAgICAgICAgICAgIHZhciByeFZhbGlkRmlsZSA9IC9cLihq
cGU/Z3xnaWZ8cG5nfGJtcCkoXD8uKik/JC9pOw0KICAgICAgICAgICAgICAgICAg
ICAvLyB2YXIgcnhWYWxpZFF1ZXJ5ID0gLy4qXD8oLipcLihqcGU/Z3xnaWZ8cG5n
fGJtcCkpLiokL2k7DQogICAgICAgICAgICAgICAgICAgIHZhciByeFZhbGlkVXJs
ID0gL15odHRwcz86XC9cLy4qL2k7DQogICAgICAgICAgICAgICAgICAgIGlmICgh
cnhWYWxpZEZpbGUudGVzdCh0aGlzW2FGaWVsZHNbeF1dLnZhbHVlKSkgew0KICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5fb25FcnJvcihpU3VibWl0SW5k
ZXgsIC0xLCAnU29ycnksIHRoZSBmaWxlIHlvdSBoYXZlIHNlbGVjdGVkIGlzIG5v
dCBhIHN1cHBvcnRlZCBpbWFnZSBmb3JtYXQuIFN1cHBvcnRlZCBpbWFnZSBmb3Jt
YXRzIGluY2x1ZGUgLkpQRywgLkdJRiwgLkJNUCwgJiAuUE5HJyk7DQogICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLl9vbkVycm9yKGlTdWJtaXRJbmRleCwgLTEs
ICdTb3JyeSwgdGhpcyBpbWFnZSBjYW5ub3QgYmUgaW1wb3J0ZWQgZnJvbSB0aGUg
d2ViLiBQbGVhc2UgZG93bmxvYWQgaXQgdG8geW91ciBkZXNrdG9wIGFuZCB1cGxv
YWQgaXQgZGlyZWN0bHkuJyk7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYUZpZWxkc1t4XS5p
bmRleE9mKCdmdXJsSW1hZ2UnKSA9PSAwICYmICFyeFZhbGlkVXJsLnRlc3QodGhp
c1thRmllbGRzW3hdXS52YWx1ZSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMuX29uRXJyb3IoaVN1Ym1pdEluZGV4LCAtMSwgJ1NvcnJ5LCB0aGUgVVJM
IHlvdSBwcm92aWRlZCBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgdmFs
aWQgZnVsbCBVUkwgdG8gdGhlIGltYWdlLicpOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5fYkhhc0ZpbGUgPSB0cnVlOw0KICAg
ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBhUG9zdEFyZ3MucHVzaChhRmll
bGRzW3hdKTsNCiAgICAgICAgICAgICAgICBpZiAoYUZpZWxkc1t4XS5pbmRleE9m
KCdkZGwnKSA9PSAwKSB7DQogICAgICAgICAgICAgICAgICAgIGFQb3N0QXJncy5w
dXNoKGdldFNlbGVjdGVkVmFsdWUodGhpc1thRmllbGRzW3hdXSkpOw0KICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoYUZpZWxkc1t4XS5pbmRleE9mKCdjaGsnKSA9
PSAwIHx8IGFGaWVsZHNbeF0uaW5kZXhPZigncmRvJykgPT0gMCkgew0KICAgICAg
ICAgICAgICAgICAgICBhUG9zdEFyZ3MucHVzaCh0aGlzW2FGaWVsZHNbeF1dLmNo
ZWNrZWQpOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAg
ICAgICAgIGFQb3N0QXJncy5wdXNoKHRoaXNbYUZpZWxkc1t4XV0udmFsdWUudHJp
bSgnIiBcdFxyXG4nKSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
fQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8gU2V0IFRPDQogICAgICAgIGlmICh0
aGlzLl9vVXBsb2FkVE8pIHsNCiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlz
Ll9vVXBsb2FkVE8pOw0KICAgICAgICAgICAgdGhpcy5fb1VwbG9hZFRPID0gbnVs
bDsNCiAgICAgICAgfQ0KICAgICAgICB2YXIgb1Njb3BlID0gdGhpczsNCiAgICAg
ICAgdGhpcy5fb1VwbG9hZFRPID0gc2V0VGltZW91dChmdW5jdGlvbigpIHtvU2Nv
cGUuX29uVE9FeHBpcmVkLmFwcGx5KG9TY29wZSwgW2lTdWJtaXRJbmRleF0pO30s
IDMwMDAwMCk7DQogICAgICAgICAgICAgICAgDQogICAgICAgIHRoaXMuX3Nob3dQ
cm9ncmVzcyh0cnVlKTsNCiAgICAgICAgdGhpcy5fb1JlcXVlc3QgPSBodHRwR2V0
KGh0dHBHZXQuYnVpbGRQb3N0VVJJLmFwcGx5KGh0dHBHZXQuYnVpbGRQb3N0VVJJ
LCBhUG9zdEFyZ3MpLCB7YmFzZTp0aGlzLGlTdWJtaXRJbmRleDppU3VibWl0SW5k
ZXh9LCBmdW5jdGlvbihvUmVzdWx0LG9BcmdzKSB7DQogICAgICAgICAgICAvLyBD
aGVjayB0aGUgcmVzcG9uc2U6DQogICAgICAgICAgICBpZiAob1Jlc3VsdC5lcnJv
ck51bWJlciA+IDApIHsNCiAgICAgICAgICAgICAgICAvLyBFcnJvcjoNCiAgICAg
ICAgICAgICAgICBvQXJncy5iYXNlLl9vbkVycm9yLmFwcGx5KG9BcmdzLmJhc2Us
IFtvQXJncy5pU3VibWl0SW5kZXgsIG9SZXN1bHQuZXJyb3JOdW1iZXIsIG9SZXN1
bHQuZXJyb3JUZXh0XSk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAg
ICAgICAgIC8vIFN1Y2Nlc3M6DQogICAgICAgICAgICAgICAgb0FyZ3MuYmFzZS5f
b25TdWNjZXNzLmFwcGx5KG9BcmdzLmJhc2UsIFtvQXJncy5pU3VibWl0SW5kZXgs
IG9SZXN1bHQudmFsdWVdKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQog
ICAgfTsNCiAgICANCiAgICANCiAgICB0aGlzLl9vblRPRXhwaXJlZCA9IGZ1bmN0
aW9uKCRpU3VibWl0SW5kZXgpIHsNCiAgICAgICAgaWYgKHRoaXMuX2JJblByb2dy
ZXNzKSB7DQogICAgICAgICAgICAvLyBDbGVhbiB1cCBhbnkgbGVmdC1vdmVycyBm
cm9tIHByZXZpb3VzIHhtbEh0dHAgY2FsbHMNCiAgICAgICAgICAgIGlmICh0aGlz
Ll9vUmVxdWVzdCAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgIC8vIEFib3J0IHRoZSBjdXJyZW50IHJlcXVlc3QNCiAgICAgICAgICAgICAg
ICB0cnkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHRo
aXMuX29SZXF1ZXN0LmFib3J0KCk7DQogICAgICAgICAgICAgICAgfSBjYXRjaCAo
ZXIpIHsgfQ0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIC8vIENs
ZWFuIHVwIGhlcmUNCiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fb1JlcXVl
c3RbJ29ucmVhZHlzdGF0ZWNoYW5nZSddOw0KICAgICAgICAgICAgICAgIHRoaXMu
X29SZXF1ZXN0ID0gbnVsbDsNCiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5f
b1JlcXVlc3Q7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgaWYg
KHdpbmRvd1snQ29sbGVjdEdhcmJhZ2UnXSkgeyBDb2xsZWN0R2FyYmFnZSgpOyB9
DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIHRoaXMu
X29uRXJyb3IoJGlTdWJtaXRJbmRleCwgNTAwLCAnU29ycnksIHRoaXMgaXMgdGFr
aW5nIHRvbyBsb25nLiBQbGVhc2UgdHJ5IGFnYWluLicpOw0KICAgICAgICB9DQog
ICAgfTsNCiAgICANCiAgICANCiAgICAvLyBGaXJlZCBpZi93aGVuIHRoZXJlIHdh
cyBhbiBlcnJvciBwcm9jZXNzaW5nIHRoZSByZXF1ZXN0Og0KICAgIHRoaXMuX29u
RXJyb3IgPSBmdW5jdGlvbigkaVN1Ym1pdEluZGV4LCAkaU51bWJlciwgJHNNZXNz
YWdlLCAkb0Jhc2VSZXN1bHQpIHsNCiAgICAgICAgdGhpcy5fc2hvd1Byb2dyZXNz
KGZhbHNlKTsNCiAgICAgICAgdmFyIGJDb250aW51ZSA9IHRydWU7DQogICAgICAg
IGlmICh0eXBlb2YodGhpcy5fb1ZGb3JtLmpzb25bJGlTdWJtaXRJbmRleF0ub25F
cnJvcikgPT0gJ2Z1bmN0aW9uJykgYkNvbnRpbnVlID0gdGhpcy5fb1ZGb3JtLmpz
b25bJGlTdWJtaXRJbmRleF0ub25FcnJvci5hcHBseSh0aGlzLCBbJGlOdW1iZXIs
ICRzTWVzc2FnZSwgJG9CYXNlUmVzdWx0XSk7DQogICAgICAgIGlmICghYkNvbnRp
bnVlKSByZXR1cm47DQogICAgICAgIHRoaXMuc2hvd0Vycm9yKCRzTWVzc2FnZSk7
DQogICAgfTsNCiAgICANCiAgICANCiAgICAvLyBGaXJlZCB3aGVuIHRoZSByZXF1
ZXN0IGZpbmlzaGVzIHByb2Nlc3Npbmcgc3VjY2Vzc2Z1bGx5Og0KICAgIHRoaXMu
X29uU3VjY2VzcyA9IGZ1bmN0aW9uKCRpU3VibWl0SW5kZXgsICRvUmVzdWx0LCAk
b0Jhc2VSZXN1bHQpIHsNCiAgICAgICAgaWYgKHRoaXMuX2JIYXNGaWxlKSB7DQog
ICAgICAgICAgICAvLyBDbGVhciB0aGUgaGFzIGZpbGUgZmxhZ2U6DQogICAgICAg
ICAgICB0aGlzLl9iSGFzRmlsZSA9IGZhbHNlOw0KICAgICAgICAgICAgDQogICAg
ICAgICAgICAvLyBHZXQgdGhlIHVwbG9hZCBrZXk6DQogICAgICAgICAgICB2YXIg
c1VwbG9hZEtleSA9ICgkb1Jlc3VsdC50eXBlID09ICdtdWx0aS1wYXJ0JykgPyAk
b1Jlc3VsdC5wYXJ0c1swXSA6ICRvUmVzdWx0Ow0KICAgICAgICAgICAgDQogICAg
ICAgICAgICAvLyBBc3N1bWUgdGhlIHJlc3VsdCBpcyBhbiB1cGxvYWQga2V5IHRv
IHVzZSB0byBwb3N0IHRoZSBmaWxlOjoNCiAgICAgICAgICAgIHRoaXMuX3VwbG9h
ZEZpbGVzKHNVcGxvYWRLZXksIHtiYXNlOnRoaXMsaVN1Ym1pdEluZGV4OiRpU3Vi
bWl0SW5kZXgsb1Jlc3VsdDokb1Jlc3VsdH0sIGZ1bmN0aW9uKG9SZXN1bHQsb0Fy
Z3Mpew0KICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoZSByZXNwb25zZToNCiAg
ICAgICAgICAgICAgICBpZiAob1Jlc3VsdC5lcnJvck51bWJlciA+IDApIHsNCiAg
ICAgICAgICAgICAgICAgICAgLy8gRXJyb3I6DQogICAgICAgICAgICAgICAgICAg
IG9BcmdzLmJhc2UuX29uRXJyb3IuYXBwbHkob0FyZ3MuYmFzZSwgW29BcmdzLmlT
dWJtaXRJbmRleCwgb1Jlc3VsdC5lcnJvck51bWJlciwgb1Jlc3VsdC5lcnJvclRl
eHQsIG9BcmdzLm9SZXN1bHRdKTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0K
ICAgICAgICAgICAgICAgICAgICAvLyBTdWNjZXNzOg0KICAgICAgICAgICAgICAg
ICAgICBvQXJncy5iYXNlLl9vblN1Y2Nlc3MuYXBwbHkob0FyZ3MuYmFzZSwgW29B
cmdzLmlTdWJtaXRJbmRleCwgb1Jlc3VsdC52YWx1ZSwgb0FyZ3Mub1Jlc3VsdF0p
Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9
IGVsc2Ugew0KICAgICAgICAgICAgdGhpcy5fc2hvd1Byb2dyZXNzKGZhbHNlKTsN
CiAgICAgICAgICAgIHZhciBiQ29udGludWUgPSB0cnVlOw0KICAgICAgICAgICAg
aWYgKHR5cGVvZih0aGlzLl9vVkZvcm0uanNvblskaVN1Ym1pdEluZGV4XS5vblN1
Y2Nlc3MpID09ICdmdW5jdGlvbicpIGJDb250aW51ZSA9IHRoaXMuX29WRm9ybS5q
c29uWyRpU3VibWl0SW5kZXhdLm9uU3VjY2Vzcy5hcHBseSh0aGlzLCBbJG9SZXN1
bHQsICRvQmFzZVJlc3VsdF0pOw0KICAgICAgICAgICAgaWYgKCFiQ29udGludWUp
IHJldHVybjsNCiAgICAgICAgfQ0KICAgIH07DQogICAgDQogICAgDQogICAgLy8g
Q2FsbGVkIHdoZW4gYW4gdXBsb2FkIGtleSBpcyByZXR1cm5lZCB0byB1cGxvYWQg
YSBmaWxlOg0KICAgIHRoaXMuX3VwbG9hZEZpbGVzID0gZnVuY3Rpb24oJHNVcGxv
YWRLZXksICRvQXJncywgJGZPbkxvYWQpIHsNCiAgICAgICAgdGhpcy5faVVwbG9h
ZElEID0gWUFIT08ud2h0LlZpcnR1YWxGb3JtLmlVcGxvYWRJRCsrOw0KICAgICAg
ICB0aGlzLl9zVXBsb2FkS2V5ID0gJHNVcGxvYWRLZXk7DQogICAgICAgIA0KICAg
ICAgICAvLyBDcmVhdGUgYW4gaWZyYW1lIHRvIFBPU1QgdGhlIGZpbGUgdG86DQog
ICAgICAgIHZhciBzRnJhbWVJRCA9ICd1cGxvYWRGcmFtZScgKyB0aGlzLl9pVXBs
b2FkSUQ7DQogICAgICAgIHZhciBvSUZyYW1lOw0KICAgICAgICBpZiAod2luZG93
LkFjdGl2ZVhPYmplY3QpIHsNCgkJCW9JRnJhbWUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCc8aWZyYW1lIGlkPSInICsgc0ZyYW1lSUQgKyAnIiBuYW1lPSInICsg
c0ZyYW1lSUQgKyAnIiAvPicpOw0KCQl9IGVsc2Ugew0KCQkJb0lGcmFtZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOw0KCQkJb0lGcmFtZS5pZCA9
IHNGcmFtZUlEOw0KCQkJb0lGcmFtZS5uYW1lID0gc0ZyYW1lSUQ7DQoJCX0NCgkJ
DQoJCS8vIEFkZCB0aGUgaWZyYW1lIHRvIHRoZSBkb2N1bWVudCwgb3V0IG9mIHZp
ZXc6DQoJCW9JRnJhbWUuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOw0KCQlv
SUZyYW1lLnN0eWxlLnRvcCA9ICctMTAwMDBweCc7DQoJCW9JRnJhbWUuc3R5bGUu
bGVmdCA9ICctMTAwMDBweCc7DQoJCQ0KCQlvSUZyYW1lID0gZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChvSUZyYW1lKTsNCgkJDQoJCS8vIENhY2hlIHRoZSBjdXJy
ZW50IGZvcm0gYXR0cmlidXRlczoNCgkJdmFyIG9Gb3JtID0gZG9jdW1lbnQuZm9y
bXNbMF07DQoJCXZhciBvRm9ybUF0dHJpYnV0ZXMgPSB7DQoJCSAgICAgYWN0aW9u
OiBvRm9ybS5nZXRBdHRyaWJ1dGUoJ2FjdGlvbicpDQogICAgICAgICAgICAsbWV0
aG9kOiBvRm9ybS5nZXRBdHRyaWJ1dGUoJ21ldGhvZCcpDQogICAgICAgICAgICAs
dGFyZ2V0OiBvRm9ybS5nZXRBdHRyaWJ1dGUoJ3RhcmdldCcpDQoJCX07DQoJCQ0K
CQkvLyBTZXQgdGhlIHByb3BlciBmb3JtIGF0dHJpYnV0ZXMgZm9yIHVzZSBpbiB1
cGxvYWRpbmc6DQoJCW9Gb3JtLnNldEF0dHJpYnV0ZSgnYWN0aW9uJywgJy9hamF4
L1VwbG9hZEltYWdlLmFzcHg/VXBsb2FkS2V5PScgKyBlbmNvZGVVUklDb21wb25l
bnQoJHNVcGxvYWRLZXkpKTsNCgkJb0Zvcm0uc2V0QXR0cmlidXRlKCdtZXRob2Qn
LCAnUE9TVCcpOw0KCQlvRm9ybS5zZXRBdHRyaWJ1dGUoJ3RhcmdldCcsIHNGcmFt
ZUlEKTsNCgkJDQoJCS8vIFNldCB0aGUgZW5jdHlwZS9lbmNvZGluZzoNCgkJb0Zv
cm0uc2V0QXR0cmlidXRlKCdlbmNvZGluZycsICdtdWx0aXBhcnQvZm9ybS1kYXRh
Jyk7DQoJCW9Gb3JtLnNldEF0dHJpYnV0ZSgnZW5jdHlwZScsICdtdWx0aXBhcnQv
Zm9ybS1kYXRhJyk7DQoJCQ0KCQkvLyBTdGFydCB0aGUgZmlsZSB1cGxvYWQ6DQoJ
CW9Gb3JtLnN1Ym1pdCgpOw0KCQkNCgkJLy8gUmVzdG9yZSB0aGUgZm9ybSBhdHRy
aWJ1dGVzIHRvIHRoZWlyIG9yaWdpbmFsIHZhbHVlczoNCgkJZm9yICh2YXIgc0F0
dHJpYnV0ZSBpbiBvRm9ybUF0dHJpYnV0ZXMpIHsNCgkJICAgIGlmIChZQUhPTy5s
YW5nLmhhc093blByb3BlcnR5KG9Gb3JtQXR0cmlidXRlcywgc0F0dHJpYnV0ZSkp
IHsNCgkJICAgICAgICBpZiAob0Zvcm1BdHRyaWJ1dGVzW3NBdHRyaWJ1dGVdKSB7
DQoJCSAgICAgICAgICAgIG9Gb3JtLnNldEF0dHJpYnV0ZShzQXR0cmlidXRlLCBv
Rm9ybUF0dHJpYnV0ZXNbc0F0dHJpYnV0ZV0pOw0KCQkgICAgICAgIH0gZWxzZSB7
DQoJCSAgICAgICAgICAgIG9Gb3JtLnJlbW92ZUF0dHJpYnV0ZShzQXR0cmlidXRl
KTsNCgkJICAgICAgICB9DQoJCSAgICB9DQoJCX0NCgkJDQoJCS8vIExpc3RlbiBm
b3IgdGhlIGlGcmFtZSdzIGxvYWQgZXZlbnQgaW4gb3JkZXIgdG8gY2FsbCB0aGUg
YXBwcm9wcmlhdGUgY2FsbC1iYWNrIGJhc2VkIG9uIHRoZSByZXNwb25zZToNCgkJ
dmFyIG9TY29wZSA9IHRoaXM7DQoJCXZhciBvblVwbG9hZENvbXBsZXRlID0gZnVu
Y3Rpb24oKSB7DQoJCSAgICAvLyBUcnkgdG8gZ2V0IHRoZSByZXNwb25zZSB0ZXh0
IGZyb20gdGhlIGRvY3VtZW50J3MgYm9keToNCgkJICAgIHZhciBzUmVzcG9uc2VU
ZXh0ID0gJyc7DQoJCSAgICB0cnkgew0KCQkgICAgICAgIHNSZXNwb25zZVRleHQg
PSAob0lGcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50LmJvZHkpID8gb0lGcmFt
ZS5jb250ZW50V2luZG93LmRvY3VtZW50LmJvZHkuaW5uZXJIVE1MIDogb0lGcmFt
ZS5jb250ZW50V2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC50ZXh0Q29u
dGVudDsNCgkJICAgIH0gY2F0Y2goZSl7fQ0KCQkgICAgDQoJCSAgICAvLyBDYWxs
IHRoZSBjYWxsYmFjazoNCgkJICAgIGlmIChzUmVzcG9uc2VUZXh0ICE9ICcnICYm
IHNSZXNwb25zZVRleHQgIT0gbnVsbCkgew0KICAgICAgICAgICAgICAgIG9SZXR1
cm4gPSAkZk9uTG9hZChodHRwR2V0LmZyb21KU09OKHNSZXNwb25zZVRleHQpLCAk
b0FyZ3MpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBv
UmV0dXJuID0gJGZPbkxvYWQoe2Vycm9yTnVtYmVyOjUwMCwgZXJyb3JUZXh0OidB
biB1bmV4cGVjdGVkIGVycm9yIHdhcyBlbmNvdW50ZXJlZCB3aGlsZSB0cnlpbmcg
dG8gc2F2ZSB5b3VyIGltYWdlLiBQbGVhc2UgbWFrZSBzdXJlIHlvdSBzZWxlY3Rl
ZCBhIHZhbGlkIGltYWdlIGZpbGUgc3VjaCBhcyBhIC5naWYsIC5qcGcsIC5ibXAs
IG9yIC5wbmcuJywgdmFsdWU6bnVsbH0sICRvQXJncyk7DQogICAgICAgICAgICB9
DQogICAgICAgICAgICANCiAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgbGlzdGVu
ZXIgdGhhdCB3YXMgY3JlYXRlZCB0byBjYXB0dXJlIHRoaXMgZXZlbnQ6DQoJCSAg
ICBZQUhPTy51dGlsLkV2ZW50LnJlbW92ZUxpc3RlbmVyKG9JRnJhbWUsICdsb2Fk
Jywgb25VcGxvYWRDb21wbGV0ZSk7DQoJCSAgICANCgkJICAgIC8vIFJlbW92ZSB0
aGUgaUZyYW1lOg0KCQkgICAgLy9zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZG9jdW1l
bnQuYm9keS5yZW1vdmVDaGlsZChvSUZyYW1lKTt9LDEwMCk7DQoJCX07DQoJCVlB
SE9PLnV0aWwuRXZlbnQuYWRkTGlzdGVuZXIob0lGcmFtZSwgJ2xvYWQnLCBvblVw
bG9hZENvbXBsZXRlKTsNCiAgICB9Ow0KICAgIA0KICAgIA0KICAgIC8vIERpc2Fi
bGVzIGFsbCBidXR0b25zIGFuZCBzaG93cyB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9y
Og0KICAgIHRoaXMuX3Nob3dQcm9ncmVzcyA9IGZ1bmN0aW9uKCRiU2hvdykgew0K
ICAgICAgICB0aGlzLl9iSW5Qcm9ncmVzcyA9ICRiU2hvdzsNCiAgICAgICAgdGhp
cy5fb0RpdlByb2dyZXNzLnN0eWxlLmRpc3BsYXkgPSAodGhpcy5fYkluUHJvZ3Jl
c3MpID8gJ2Jsb2NrJyA6ICdub25lJzsNCiAgICB9Ow0KICAgIA0KICAgIA0KICAg
IC8vIFNldHMgdGhlIGRlZmF1bHQgbWVzc2FnZSB0byBiZSBkaXNwbGF5ZWQ6DQog
ICAgdGhpcy5zZXRNZXNzYWdlID0gZnVuY3Rpb24oJHNNZXNzYWdlKSB7DQogICAg
ICAgIHRoaXMuX3NNZXNzYWdlID0gJHNNZXNzYWdlOw0KICAgICAgICB0aGlzLmNs
ZWFyRXJyb3IoKTsNCiAgICB9Ow0KICAgIA0KICAgIA0KICAgIC8vIERpc3BsYXlz
IGFuIGVycm9yOg0KICAgIHRoaXMuc2hvd0Vycm9yID0gZnVuY3Rpb24oJHNFcnJv
cikgew0KICAgICAgICBpZiAodGhpcy5fb0Rpdk1lc3NhZ2UgPT0gbnVsbCkgcmV0
dXJuOw0KICAgICAgICBpZiAoJHNFcnJvci5pbmRleE9mKCc8bGknKSAhPSAwKSAk
c0Vycm9yID0gJzxsaT4nICsgJHNFcnJvciArICc8L2xpPic7DQogICAgICAgIHRo
aXMuX29EaXZNZXNzYWdlLmlubmVySFRNTCA9ICc8dWw+JyArICRzRXJyb3IgKyAn
PC91bD4nOw0KICAgICAgICB0aGlzLl9vRGl2TWVzc2FnZS5zdHlsZS5kaXNwbGF5
ID0gJ2Jsb2NrJzsNCiAgICB9Ow0KICAgIA0KICAgIA0KICAgIC8vIENsZWFycyBh
bnkgZXJyb3IsIA0KICAgIHRoaXMuY2xlYXJFcnJvciA9IGZ1bmN0aW9uKCkgew0K
ICAgICAgICBpZiAodGhpcy5fb0Rpdk1lc3NhZ2UgPT0gbnVsbCkgcmV0dXJuOw0K
ICAgICAgICB0aGlzLl9vRGl2TWVzc2FnZS5pbm5lckhUTUwgPSB0aGlzLl9zTWVz
c2FnZTsNCiAgICAgICAgdGhpcy5fb0Rpdk1lc3NhZ2Uuc3R5bGUuZGlzcGxheSA9
ICh0aGlzLl9zTWVzc2FnZSAhPSAnJykgPyAnYmxvY2snIDogJ25vbmUnOw0KICAg
IH07DQogICAgDQogICAgDQogICAgLy8gU2hvd3Mgb3IgaGlkZXMgdGhlIGZvcm06
DQogICAgdGhpcy5zaG93Rm9ybSA9IGZ1bmN0aW9uKCRiU2hvdywgJG9BcmdzKSB7
DQogICAgICAgIGlmICh0aGlzLl9pU2hvd1RPICE9IG51bGwpIHsNCiAgICAgICAg
ICAgIGNsZWFyVGltZW91dCh0aGlzLl9pU2hvd1RPKTsNCiAgICAgICAgICAgIHRo
aXMuX2lTaG93VE8gPSBudWxsOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAg
ICBpZiAodGhpcy5fb0Zvcm0gPT0gbnVsbCkgew0KICAgICAgICAgICAgdmFyIG9T
Y29wZSA9IHRoaXM7DQogICAgICAgICAgICBpZiAodGhpcy5fb1ZGb3JtID09IG51
bGwpIHRoaXMuX2xvYWRGb3JtKCk7DQogICAgICAgICAgICB0aGlzLl9pU2hvd1RP
ID0gc2V0VGltZW91dChmdW5jdGlvbigpe29TY29wZS5zaG93Rm9ybSgkYlNob3cs
JG9BcmdzKTt9LDEwKTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0K
ICAgICAgICANCiAgICAgICAgaWYgKCRiU2hvdykgew0KICAgICAgICAgICAgLy8g
U2hvdyB0aGUgYXJncyAmIHJlc2V0IHRoZSBmb3JtOg0KICAgICAgICAgICAgaWYg
KCRvQXJncyAhPSBudWxsKSB0aGlzLm9BcmdzID0gJG9BcmdzOw0KICAgICAgICAg
ICAgdGhpcy5yZXNldCgpOw0KICAgICAgICAgICAgDQogICAgICAgICAgICB0aGlz
Ll9vRm9ybS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsNCiAgICAgICAgICAgIA0K
ICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIGZv
Y3VzIHRvIHRoZSBmaXJzdCB2aXNpYmxlIHRleHQgYm94IG9yIHRleHQtYXJlYSBp
biB0aGUgZm9ybToNCiAgICAgICAgICAgICAgICB2YXIgb0ZpcnN0VGV4dEJveCA9
IGdldENoaWxkTm9kZSh0aGlzLl9vRm9ybSwgJ2lucHV0JywgJ3R5cGUnLCAndGV4
dCcsIHRydWUpOw0KICAgICAgICAgICAgICAgIGlmIChvRmlyc3RUZXh0Qm94ID09
IG51bGwpIG9GaXJzdFRleHRCb3ggPSBnZXRDaGlsZE5vZGUodGhpcy5fb0Zvcm0s
ICd0ZXh0YXJlYScsIHRydWUpOw0KICAgICAgICAgICAgICAgIGlmIChvRmlyc3RU
ZXh0Qm94ID09IG51bGwpIG9GaXJzdFRleHRCb3ggPSBnZXRDaGlsZE5vZGUodGhp
cy5fb0Zvcm0sICdpbnB1dCcsICd0eXBlJywgJ2ZpbGUnLCB0cnVlKTsNCiAgICAg
ICAgICAgICAgICBpZiAob0ZpcnN0VGV4dEJveCAhPSBudWxsKSB7DQogICAgICAg
ICAgICAgICAgICAgIG9GaXJzdFRleHRCb3guZm9jdXMoKTsNCiAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICB9IGNhdGNoIChlcnIpIHsgfQ0KCQkJDQoJCQkv
LyBDcmVhdGUgZmxpY2tyIGlmIG5lY2Vzc2FyeQ0KCQkJaWYgKHRoaXMuX29GbGlj
a3JTZWFyY2ggPT0gbnVsbCkgew0KCQkJCXRoaXMuX29GbGlja3JTZWFyY2ggPSBu
ZXcgWUFIT08ud2h0LkZsaWNrcih0aGlzLl9vUm9vdCk7DQoJCQl9DQogICAgICAg
IH0gZWxzZSB7DQogICAgICAgICAgICB0aGlzLl9vRm9ybS5zdHlsZS5kaXNwbGF5
ID0gJ25vbmUnOw0KICAgICAgICB9DQogICAgfTsNCiAgICANCiAgICAvLyBJZiBh
IHBhcmVudCBlbGVtZW50IGlzIHBhc3NlZCBpbiwgYXR0YWNoIHRoZSBmb3JtIG5v
dzoNCiAgICBpZiAodGhpcy5fb1Jvb3QgIT0gbnVsbCAmJiAkYkF0dGFjaExhdGVy
ICE9IHRydWUpIA0KICAgIHsNCiAgICAgICAgLy8gVHJ5IHRvIHNpZ24gdXAgZm9y
IGN1c3RvbSBZVUkgZXZlbnQgdGhhdCB3aWxsIGZpcmUgd2hlbiBlbmQgb2YgcGFn
ZSBpcyByZWFjaGVkDQogICAgICAgIHRyeSB7DQogICAgICAgICAgICBZQUhPTy51
dGlsLkRvbS5vV0hUUmVhZHlFdmVudC5zdWJzY3JpYmUodGhpcy5hdHRhY2hGb3Jt
LCB0aGlzLCB0cnVlKTsNCiAgICAgICAgfSBjYXRjaCAoZXJyKSB7DQogICAgICAg
ICAgICBZQUhPTy51dGlsLkV2ZW50Lm9uQ29udGVudFJlYWR5KHRoaXMuX29Sb290
LCB0aGlzLmF0dGFjaEZvcm0sIHRoaXMsIHRydWUpOw0KICAgICAgICB9Ow0KICAg
IH0NCn07DQoNCg0KLy8gQ2xhc3MgcmVzcG9uc2libGUgZm9yIHBlcm9mcm1pbmcg
RmxpY2tyIGltYWdlIHNlYXJjaCBhbmQgcmV0dXJuaW5nIHJlc3VsdHMNCllBSE9P
LndodC5GbGlja3IgPSBmdW5jdGlvbigkb0Zvcm1QYXJlbnQpew0KCXRoaXMuX29Q
aG90b0NhY2hlID0gbnVsbDsNCgl0aGlzLl9vRm9ybVBhcmVudCA9ICRvRm9ybVBh
cmVudDsNCgl0aGlzLl9vRmxpY2tyQXJlYSA9IG51bGw7DQoJdGhpcy5faUl0ZW1z
UGVyUGFnZSA9IDEwOyAvLyBNYXkgbmVlZCB0byBzZXQgZHluYW1pY2FsbHkgaW4g
dGhlIGZ1dHVyZQ0KCQ0KCXRoaXMuX3NJbWFnZVRodW1iVGVtcGxhdGUgPSAnPHNw
YW4gY2xhc3M9InRodW1ibmFpbCI+PGEgaHJlZj0iezF9IiBjbGFzcz0iaW1wb3J0
SW1hZ2UiPjxpbWcgc3JjPSJ7MH0iIHdpZHRoPSI4MCIgaGVpZ2h0PSI2MCIgLz48
L2E+PC9zcGFuPic7DQoJDQoJdGhpcy5faW5pdCA9IGZ1bmN0aW9uKCkgew0KCQl0
aGlzLl9vUGhvdG9DYWNoZSA9IG5ldyBPYmplY3QoKTsNCgkJDQoJCS8vIENyZWF0
ZSBhIHBhcmVudA0KCQl2YXIgYUZsaWNrckFyZWEgPSBZQUhPTy51dGlsLkRvbS5n
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdmbGlja3JBcmVhJywgJ2RpdicsIHRoaXMu
X29Gb3JtUGFyZW50KTsNCgkJaWYgKGFGbGlja3JBcmVhLmxlbmd0aCA+IDApIHRo
aXMuX29GbGlja3JBcmVhID0gYUZsaWNrckFyZWFbMF07DQoJCQ0KCQkvLyBHZXQg
YWhvbGQgb2YgZWxlbWVudHMNCgkJdGhpcy5fYVNlYXJjaEZsaWNrckxpbmtzID0g
WUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZmxpY2tyU2Vh
cmNoTGluaycsICdhJywgdGhpcy5fb0ZsaWNrckFyZWEpOw0KCQl0aGlzLl9hRmxp
Y2tyS2V5d29yZHMgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lKCdmbGlja3JUYWdzJywgJ2lucHV0JywgdGhpcy5fb0ZsaWNrckFyZWEpOw0K
CQkNCgkJLy8gQXNzaWduIGxpc3RlbmVycw0KCQlZQUhPTy51dGlsLkV2ZW50LmFk
ZExpc3RlbmVyKHRoaXMuX2FTZWFyY2hGbGlja3JMaW5rcywgJ2NsaWNrJywgdGhp
cy5fb25TZWFyY2hDbGljaywgdGhpcywgdHJ1ZSk7DQoJCVlBSE9PLnV0aWwuRXZl
bnQuYWRkTGlzdGVuZXIodGhpcy5fYUZsaWNrcktleXdvcmRzLCAna2V5cHJlc3Mn
LCB0aGlzLl9vbkZsaWNrcktXS2V5UHJlc3MsIHRoaXMsIHRydWUpOw0KCX07DQoJ
DQoJDQoJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkvLyBQdWJsaWMgTWV0aG9k
cw0KCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoJLy8gUGVyZm9ybXMgYSBzZWFy
Y2ggZm9yIHByb3ZpZGVkIGtleXdvcmQgYW5kIGZpcmVzIG9mZiBhbiBhcHByb3By
aWF0ZSBldmVudA0KCXRoaXMuc2VhcmNoID0gZnVuY3Rpb24oJHNLZXl3b3Jkcywg
JGlQYWdlTnVtYmVyLCAkaUl0ZW1zUGVyUGFnZSl7DQoJCWlmICh0aGlzLl9iU2Vh
cmNoaW5nKSByZXR1cm47DQoJCQ0KCQl2YXIgc0NhY2hlS2V5ID0gJHNLZXl3b3Jk
cyArICdfJyArICRpUGFnZU51bWJlciArICdfJyArICRpSXRlbXNQZXJQYWdlOw0K
CQkNCgkJaWYgKHRoaXMuX29QaG90b0NhY2hlW3NDYWNoZUtleV0gIT0gbnVsbCkg
ew0KCQkJdGhpcy5fb25TZWFyY2hEb25lKHRoaXMuX29QaG90b0NhY2hlW3NDYWNo
ZUtleV0pOw0KCQl9IGVsc2Ugew0KCQkJdGhpcy5fYlNlYXJjaGluZyA9IHRydWU7
DQoJCQkNCgkJCWh0dHBHZXQoaHR0cEdldC5idWlsZFBvc3RVUkkoJ0dldEZsaWNr
ckltYWdlcycsICdmbGlja3JLZXl3b3JkcycsICRzS2V5d29yZHMsICdwYWdlTnVt
YmVyJywgJGlQYWdlTnVtYmVyLCAnaXRlbXNQZXJQYWdlJywgJGlJdGVtc1BlclBh
Z2UpLCB7DQoJCQkJYmFzZTogdGhpcw0KCQkJfSwgZnVuY3Rpb24ob1Jlc3VsdCwg
b0FyZ3MpIHsNCgkJCQlvQXJncy5iYXNlLl9iU2VhcmNoaW5nID0gZmFsc2U7DQoJ
CQkJLy8gb1Jlc3VsdCBub3cgaGFzIHJlc3BvbnNlIHRleHQgZnJvbUpTT04uIG9B
cmdzIGNvbnRhaW5zIGVsZW1lbnRzIHRoYXQgd2UgcGFzc2VkLg0KCQkJCS8vIENo
ZWNrIGZvciBhbnkgZXJyb3JzDQoJCQkJaWYgKG9SZXN1bHQuZXJyb3JOdW1iZXIg
IT0gMCkgew0KCQkJCQkvLyBTaG93IHRoZSBlcnJvciBtZXNzYWdlLg0KCQkJCQlv
V0hUQWxlcnQuc2hvdyhvUmVzdWx0LmVycm9yVGV4dCk7DQoJCQkJfQ0KCQkJCWVs
c2Ugew0KCQkJCQlvQXJncy5iYXNlLl9vUGhvdG9DYWNoZVtzQ2FjaGVLZXldID0g
b1Jlc3VsdC52YWx1ZTsNCgkJCQkJDQoJCQkJCW9BcmdzLmJhc2UuX29uU2VhcmNo
RG9uZS5hcHBseShvQXJncy5iYXNlLCBbb0FyZ3MuYmFzZS5fb1Bob3RvQ2FjaGVb
c0NhY2hlS2V5XV0pOw0KCQkJCX0NCgkJCX0pOw0KCQl9DQoJfTsNCgkNCgkNCgkv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCS8vIEV2ZW50IEhhbmRsZXJzDQoJLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkvLyBGaXJlZCB3aGVuIHVzZXIgY2xpY2tz
ICJTZWFyY2giIGJ1dHRvbi4gTWFrZXMgYSByZXF1ZXN0IHRvIGxvYWQgRmxpY2ty
IGltYWdlcw0KCXRoaXMuX29uU2VhcmNoQ2xpY2sgPSBmdW5jdGlvbigkb0V2ZW50
KSB7DQoJCXZhciBvUGFnaW5nQXJlYSA9IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1l
bnRzQnlDbGFzc05hbWUoJ2ZsaWNrclBhZ2luZycsICdkaXYnLCB0aGlzLl9vRmxp
Y2tyQXJlYSlbMF07DQoJCQ0KCQkvLyBIaWRlIHBhZ2luZyBhcmVhDQoJCVlBSE9P
LnV0aWwuRG9tLnNldFN0eWxlKG9QYWdpbmdBcmVhLCAndmlzaWJpbGl0eScsICdo
aWRkZW4nKTsNCgkJDQoJCXRoaXMuX2xvYWRJbWFnZXMoMSwgdGhpcy5faUl0ZW1z
UGVyUGFnZSk7DQoJfTsNCgkNCgkNCgkvLyBGaXJlZCB3aGVuIEZsaWNrcnMgc2Vh
cmNoIHJldHVybnMNCgl0aGlzLl9vblNlYXJjaERvbmUgPSBmdW5jdGlvbigkYUFy
Z3MpIHsNCgkJdmFyIG9GbGlja3JSZXMgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKCdmbGlja3JJbWFnZUxpc3QnLCAnc3BhbicsIHRoaXMu
X29GbGlja3JBcmVhKVswXTsNCgkJb0ZsaWNrclJlcy5pbm5lckhUTUwgPSAnJzsN
CgkJWUFIT08udXRpbC5Eb20ucmVtb3ZlQ2xhc3Mob0ZsaWNrclJlcywgJ2xvYWRp
bmcnKTsNCgkJDQoJCWlmICgkYUFyZ3MgPT0gbnVsbCkgew0KCQkJb1dIVEFsZXJ0
LnNob3coJ1NvcnJ5LCBidXQgbm8gaW1hZ2VzIHdlcmUgZm91bmQuJyk7DQoJCX0g
ZWxzZSB7DQoJCQl0aGlzLl9yZW5kZXJJbWFnZVRodW1icygkYUFyZ3MucGFydHNb
MF0sICRhQXJncy5wYXJ0c1sxXSwgTnVtYmVyKCRhQXJncy5wYXJ0c1syXSksIE51
bWJlcigkYUFyZ3MucGFydHNbM10pKTsNCgkJfQ0KCX07DQoJDQoJDQoJLy8gRmly
ZWQgd2hlbiB1c2VyIGNsaWNrcyBhIGZsaWNrciBpbWFnZSB0aHVtYg0KCXRoaXMu
X29uSW1hZ2VUaHVtYkNsaWNrID0gZnVuY3Rpb24oJG9FdmVudCkgew0KCQlZQUhP
Ty51dGlsLkV2ZW50LnN0b3BFdmVudCgkb0V2ZW50KTsNCgkJDQoJCXZhciBvTGlu
ayA9IFlBSE9PLnV0aWwuRXZlbnQuZ2V0VGFyZ2V0KCRvRXZlbnQpOw0KCQlpZiAo
IVlBSE9PLnV0aWwuRG9tLmhhc0NsYXNzKG9MaW5rLCAnaW1wb3J0SW1hZ2UnKSkg
b0xpbmsgPSBZQUhPTy51dGlsLkRvbS5nZXRBbmNlc3RvckJ5Q2xhc3NOYW1lKG9M
aW5rLCAnaW1wb3J0SW1hZ2UnKTsNCgkJDQoJCS8vIFJlc2V0IHByZXZpb3VzbHkg
c2VsZWN0ZWQgZWxlbWVudHMNCgkJdGhpcy5fcmVzZXRTZWxlY3RlZCgpOw0KCQkN
CgkJLy8gTWFrZSBjdXJyZW50IGVsZW1lbnQgc2VsZWN0ZWQNCgkJWUFIT08udXRp
bC5Eb20uYWRkQ2xhc3Mob0xpbmssICdzZWxlY3RlZCcpOw0KCQkNCgkJdmFyIG9J
bXBvcnRGaWxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltcG9ydEZpbGVJ
bnB1dCcpOw0KCQlvSW1wb3J0RmlsZS52YWx1ZSA9IG9MaW5rLmhyZWY7DQoJfTsN
CgkNCgkNCgkvLyBSZXNldHMgc2VsZWN0ZWQgZWxlbWV0bnMNCgl0aGlzLl9yZXNl
dFNlbGVjdGVkID0gZnVuY3Rpb24oKSB7DQoJCXZhciBhU2VsZWN0ZWQgPSBZQUhP
Ty51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzZWxlY3RlZCcsICdh
JywgdGhpcy5fb1Jvb3QpOw0KCQlZQUhPTy51dGlsLkRvbS5yZW1vdmVDbGFzcyhh
U2VsZWN0ZWQsICdzZWxlY3RlZCcpOw0KCX07DQoJDQoJDQoJLy8gRmlyZWQgd2hl
biB1c2VyIGNsaWNrcyBhIHBhZ2UgY29udHJvbCBsaW5rDQoJdGhpcy5fb25GbGlj
a3JQYWdlQ2hhbmdlID0gZnVuY3Rpb24oJG9FdmVudCkgew0KCQl2YXIgb0xpbmsg
PSBZQUhPTy51dGlsLkV2ZW50LmdldFRhcmdldCgkb0V2ZW50KTsNCgkJaWYgKCFZ
QUhPTy51dGlsLkRvbS5oYXNDbGFzcyhvTGluaywgJ3BhZ2VDdHJsJykpIG9MaW5r
ID0gWUFIT08udXRpbC5Eb20uZ2V0QW5jZXN0b3JCeUNsYXNzTmFtZShvTGluaywg
J3BhZ2VDdHJsJyk7DQoJCXZhciBpQ3VyUGFnZSA9IE51bWJlcihnZXRQcmVmaXhl
ZENsYXNzVmFsdWUob0xpbmssICdwYWdlTnVtJykpOw0KCQl2YXIgaU5ld1BhZ2Ug
PSAtMTsNCgkJDQoJCWlmIChZQUhPTy51dGlsLkRvbS5oYXNDbGFzcyhvTGluaywg
J3ByZXZQYWdlJykpIHsNCgkJCWlOZXdQYWdlID0gaUN1clBhZ2UgLSAxOw0KCQl9
DQoJCWVsc2UgaWYgKFlBSE9PLnV0aWwuRG9tLmhhc0NsYXNzKG9MaW5rLCAnbmV4
dFBhZ2UnKSkgew0KCQkJaU5ld1BhZ2UgPSBpQ3VyUGFnZSArIDE7DQoJCX0NCgkJ
DQoJCXRoaXMuX2xvYWRJbWFnZXMoaU5ld1BhZ2UsIHRoaXMuX2lJdGVtc1BlclBh
Z2UpOw0KCX07DQoJDQoJDQoJLy8gRmlyZWQgd2hlbiB1c2VyIGhpdHMgIkVudGVy
IiB3aGlsZSBGbGlja3IgU2VhcmNoIGlucHV0IGlzIGZvY3VzZWQNCgl0aGlzLl9v
bkZsaWNrcktXS2V5UHJlc3MgPSBmdW5jdGlvbigkb0V2ZW50KSB7DQoJCWlmIChZ
QUhPTy51dGlsLkV2ZW50LmdldENoYXJDb2RlKCRvRXZlbnQpID09IDEzKSB7DQoJ
CQlZQUhPTy51dGlsLkV2ZW50LnN0b3BFdmVudCgkb0V2ZW50KTsNCgkJCQ0KCQkJ
dGhpcy5fb25TZWFyY2hDbGljayhudWxsKTsNCgkJfQ0KCX07DQoJDQoJDQoJDQoJ
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkvLyBQcml2YXRlIE1ldGhvZHMNCgkv
Ly0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCS8vIE1ha2VzIHN1cmUga2V5d29yZHMg
YXJlIG5vdCBlbXB0eSwgc2V0cyAiTG9hZGluZyIgc3RhciBhbmQgYXR0ZW1wdHMg
dG8gbG9hZCBpbWFnZXMNCgl0aGlzLl9sb2FkSW1hZ2VzID0gZnVuY3Rpb24oJGlQ
YWdlTnVtYmVyLCAkaVBlclBhZ2UpIHsNCgkJdmFyIG9UZXh0Qm94ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2ZsaWNrckltYWdlSW1wb3J0Jyk7DQoJCXZhciBv
RmxpY2tyUmVzID0gWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSgnZmxpY2tySW1hZ2VMaXN0JywgJ3NwYW4nLCB0aGlzLl9vRmxpY2tyQXJlYSlb
MF07DQoJCQ0KCQlpZiAob1RleHRCb3gudmFsdWUudHJpbSgpID09ICcnKSB7DQoJ
CQlvV0hUQWxlcnQuc2hvdygnUGxlYXNlIGVudGVyIGtleXdvcmRzIHRvIHNlYXJj
aCBmb3IuJyk7DQoJCQlyZXR1cm47DQoJCX0NCgkJDQoJCS8vIENsZWFyIHJlc3Vs
dHMgYW5kIHNldCBsb2FkaW5nIGdyYXBoaWNzDQoJCW9GbGlja3JSZXMuaW5uZXJI
VE1MID0gJyc7DQoJCVlBSE9PLnV0aWwuRG9tLmFkZENsYXNzKG9GbGlja3JSZXMs
ICdsb2FkaW5nJyk7DQoJCQ0KCQl0aGlzLnNlYXJjaChvVGV4dEJveC52YWx1ZS50
cmltKCksICRpUGFnZU51bWJlciwgJGlQZXJQYWdlKTsNCgl9Ow0KCQ0KDQoJdGhp
cy5fcmVuZGVySW1hZ2VUaHVtYnMgPSBmdW5jdGlvbigkYVRodW1icywgJGFJbWFn
ZXMsICRpUGFnZU51bWJlciwgJGlUb3RhbFBhZ2VzKXsNCgkJdmFyIG9JbWFnZVRo
dW1icyA9IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Zs
aWNrckltYWdlTGlzdCcsICdzcGFuJywgdGhpcy5fb0ZsaWNrckFyZWEpWzBdOw0K
CQl2YXIgc0h0bWwgPSAnJzsNCgkJDQoJCWZvciAodmFyIGkgPSAwOyBpIDwgJGFU
aHVtYnMubGVuZ3RoOyBpKyspIHsNCgkJCXNIdG1sICs9IHRoaXMuX3NJbWFnZVRo
dW1iVGVtcGxhdGUuZm9ybWF0KCRhVGh1bWJzW2ldLCAkYUltYWdlc1tpXSk7DQoJ
CX0NCgkJDQoJCW9JbWFnZVRodW1icy5pbm5lckhUTUwgPSBzSHRtbDsNCgkJDQoJ
CXRoaXMuX3JlbmRlckZsaWNrclBhZ2VzKCRpUGFnZU51bWJlciwgJGlUb3RhbFBh
Z2VzKTsNCgkJDQoJCS8vIFNldCBsaXN0ZW5lcnMgZm9yIHRodW1icw0KCQl0aGlz
Ll9zZXRUaHVtYkxpc3RlbmVycygpOw0KCX07DQoJDQoJDQoJLy8gUmVuZGVycyBw
YWdlIGNvbnRyb2xzIGZvciBwaG90b3MNCgl0aGlzLl9yZW5kZXJGbGlja3JQYWdl
cyA9IGZ1bmN0aW9uKCRpUGFnZU51bWJlciwgJGlQYWdlQ291bnQpIHsNCgkJLy8g
TWFrZSBzdXJlIFBhZ2UgbnVtYmVyIGlzIG5ldmVyIGJpZ2dlciB0aGFuIHBhZ2Ug
Y291bnQNCgkJaWYgKCRpUGFnZU51bWJlciA+ICRpUGFnZUNvdW50KSAkaVBhZ2VO
dW1iZXIgPSAkaVBhZ2VDb3VudDsNCgkJDQoJCXZhciBzVGVtcGFsdGUgPSAnPGEg
cmVsPSJub2ZvbGxvdyIgY2xhc3M9ImJ0bkIgYnRuMTYgYnRuTlMgYnRuRlIgYnRu
SVIgcGFnZUN0cmwgbmV4dFBhZ2UgcGFnZU51bXswfXszfSIgaHJlZj0iamF2YXNj
cmlwdDovLyBOZXh0Ij48aT48L2k+PGVtPjwvZW0+PC9hPjxzcGFuIGNsYXNzPSJw
Z04iPnswfSBvZiB7MX08L3NwYW4+PGEgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImJ0
bkIgYnRuMTYgYnRuTlMgYnRuRlIgYnRuSUwgcGFnZUN0cmwgcHJldlBhZ2UgcGFn
ZU51bXswfXsyfSIgaHJlZj0iamF2YXNjcmlwdDovLyBQcmV2aW91cyI+PGk+PC9p
PjxlbT48L2VtPjwvYT4nOw0KCQkNCgkJdmFyIG9QYWdpbmdBcmVhID0gWUFIT08u
dXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZmxpY2tyUGFnaW5nJywg
J2RpdicsIHRoaXMuX29GbGlja3JBcmVhKVswXTsNCgkJDQoJCS8vIERpc3BsYXkg
dGhlIGFyZWENCgkJWUFIT08udXRpbC5Eb20uc2V0U3R5bGUob1BhZ2luZ0FyZWEs
ICd2aXNpYmlsaXR5JywgJ3Zpc2libGUnKTsNCgkJDQoJCXZhciBzUHJldkNsYXNz
ID0gKCRpUGFnZU51bWJlciA8PSAxKSA/ICcgaGlkZScgOiAnJzsNCgkJdmFyIHNO
ZXh0Q2xhc3MgPSAoJGlQYWdlTnVtYmVyID49ICRpUGFnZUNvdW50KSA/ICcgaGlk
ZScgOiAnJzsNCgkJDQoJCW9QYWdpbmdBcmVhLmlubmVySFRNTCA9IHNUZW1wYWx0
ZS5mb3JtYXQoJGlQYWdlTnVtYmVyLCAkaVBhZ2VDb3VudCwgc1ByZXZDbGFzcywg
c05leHRDbGFzcyk7DQoJCQ0KCQkvLyBBc3NpZ24gZXZlbnQgbGlzdGVuZXJzDQoJ
CXZhciBhUGFnZUxpbmtzID0gWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZSgncGFnZUN0cmwnLCAnYScsIG9QYWdpbmdBcmVhKTsNCgkJWUFIT08u
dXRpbC5FdmVudC5hZGRMaXN0ZW5lcihhUGFnZUxpbmtzLCAnY2xpY2snLCB0aGlz
Ll9vbkZsaWNrclBhZ2VDaGFuZ2UsIHRoaXMsIHRydWUpOw0KCX07DQoJDQoJDQoJ
dGhpcy5fc2V0VGh1bWJMaXN0ZW5lcnMgPSBmdW5jdGlvbigpIHsNCgkJLy8gQWNx
dWlyZSBlbGVtZW50cw0KCQl2YXIgYUltYWdlVGh1bWJzID0gWUFIT08udXRpbC5E
b20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW1wb3J0SW1hZ2UnLCAnYScsIHRo
aXMuX29GbGlja3JBcmVhKTsNCgkJDQoJCS8vIFJlbW92ZSBhbnkgb2xkIGxpc3Rl
bmVycw0KCQlZQUhPTy51dGlsLkV2ZW50LnJlbW92ZUxpc3RlbmVyKGFJbWFnZVRo
dW1icywgJ2NsaWNrJywgdGhpcy5fb25JbWFnZVRodW1iQ2xpY2spOw0KCQkNCgkJ
Ly8gUmUtYXNzaWduIGEgbGlzdGVuZXINCgkJWUFIT08udXRpbC5FdmVudC5hZGRM
aXN0ZW5lcihhSW1hZ2VUaHVtYnMsICdjbGljaycsIHRoaXMuX29uSW1hZ2VUaHVt
YkNsaWNrLCB0aGlzLCB0cnVlKTsNCgl9Ow0KCQ0KCQ0KCQ0KCS8vIEluaXRpYWxp
emUNCgl0aGlzLl9pbml0KCk7DQp9Ow0KDQoNCi8vIEluaXRpYWxpemVzIHRoZSBW
aXJ0dWFsRm9ybToNCllBSE9PLndodC5WaXJ0dWFsRm9ybS5pbml0ID0gZnVuY3Rp
b24oJHNGb3JtTmFtZSwgJG9WRm9ybSwgJG9QYXJlbnRFbGVtZW50LCAkYkF0dGFj
aExhdGVyLCAkb0FyZ3MpIHsNCiAgICBpZiAoIVlBSE9PLmxhbmcuaXNPYmplY3Qo
WUFIT08ud2h0LlZpcnR1YWxGb3JtLm9Gb3JtcykpIFlBSE9PLndodC5WaXJ0dWFs
Rm9ybS5vRm9ybXMgPSB7fTsNCiAgICBpZiAoWUFIT08ubGFuZy5pc1VuZGVmaW5l
ZChZQUhPTy53aHQuVmlydHVhbEZvcm0ub0Zvcm1zWyRzRm9ybU5hbWVdKSkgew0K
ICAgICAgICBZQUhPTy53aHQuVmlydHVhbEZvcm0ub0Zvcm1zWyRzRm9ybU5hbWVd
ID0gbmV3IFlBSE9PLndodC5WaXJ0dWFsRm9ybSgkc0Zvcm1OYW1lLCAkb1ZGb3Jt
LCAkb1BhcmVudEVsZW1lbnQsICRiQXR0YWNoTGF0ZXIsICRvQXJncyk7DQogICAg
fQ0KfTsNCg0KDQovLyBBdHRhY2hlcyB0aGUgZm9ybSB0byB0aGUgc3BlY2lmaWVk
IHBhcmVudCBlbGVtZW50Og0KWUFIT08ud2h0LlZpcnR1YWxGb3JtLmF0dGFjaEZv
cm0gPSBmdW5jdGlvbigkc0Zvcm1OYW1lLCAkb1BhcmVudEVsZW1lbnQpIHsNCiAg
ICBpZiAoIVlBSE9PLmxhbmcuaXNPYmplY3QoWUFIT08ud2h0LlZpcnR1YWxGb3Jt
Lm9Gb3JtcykpIHJldHVybjsNCiAgICBpZiAoWUFIT08ubGFuZy5pc1VuZGVmaW5l
ZChZQUhPTy53aHQuVmlydHVhbEZvcm0ub0Zvcm1zWyRzRm9ybU5hbWVdKSkgew0K
ICAgICAgICBZQUhPTy53aHQuVmlydHVhbEZvcm0uaW5pdCgkc0Zvcm1OYW1lLCBu
dWxsLCAkb1BhcmVudEVsZW1lbnQpOw0KICAgICAgICByZXR1cm47DQogICAgfQ0K
ICAgIFlBSE9PLndodC5WaXJ0dWFsRm9ybS5vRm9ybXNbJHNGb3JtTmFtZV0uYXR0
YWNoRm9ybSgkb1BhcmVudEVsZW1lbnQpOw0KICAgIHJldHVybjsNCn07DQoNCg0K
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline; filename=mvt_log.js
Content-Type: application/x-javascript; charset=utf-8; name=mvt_log.js
Content-Location: http://www.wonderhowto.com/js/mvt_log.js?v=0902102
Content-Transfer-Encoding: Base64
77u/Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIENvcHlyaWdodCAyMDA3IFdv
bmRlckhvd1RvLCBJbmMuDQovLyANCi8vIE9yaWdpb25hbCBBdXRob3I6ICAgIE1h
cmF0IEtob3VkYWJha2hzaGlldg0KLy8gTGFzdCBNb2RpZmllZCBCeTogICAgTWFy
YXQgS2hvdWRhYmFraHNoaWV2DQovLyBMYXN0IE1vZGlmaWVkOiAgICAgICAwNy8w
Mi8yMDA5DQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCi8vIE1ha2Ugc3Vy
ZSB0aGUgd2h0IG5hbWVzcGFjZSBleGlzdHM6DQpZQUhPTy5uYW1lc3BhY2UoJ3do
dCcpOw0KDQpZQUhPTy53aHQuTXZ0TG9nID0gZnVuY3Rpb24oJHNNdnRTZXNzaW9u
SUQpDQp7DQogICAgdGhpcy5fYUxvZ0xpc3QgPSBuZXcgQXJyYXkoKTsNCiAgICB0
aGlzLl9zWm9uZVByZWZpeCA9ICdtdnRab25lXyc7IC8vIFdoZW4gY2hhbmdpbmcg
dGhpcyB2YWx1ZSwgbWFrZSBzdXJlIHRvIHVwZGF0ZSBpdCBpbiB0aGUgJ3RoaXMu
X2lzTXZ0RWxlbWVudCgpJyBtZXRob2QgYXMgd2VsbA0KICAgIHRoaXMuX3Nab25l
TGlua0NsYXNzID0gJ212dFpvbmVMaW5rJzsgICAvLyBJZiB1c2VkLCBtdXN0IGJl
IHVzZWQgZm9yIE5PTi1BIHRhZ3Mgb25seSBhbG9uZyB3aXRoIG12dFpvbmVfIGNs
YXNzLiBUaGlzIGFsbG93cw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBub24tYSB0YWdzIHRvIGJlIGxvZ2dlZCB0byBNVlQN
CiAgICB0aGlzLl9zTXZ0U2Vzc2lvbklEID0gJHNNdnRTZXNzaW9uSUQ7DQogICAg
dGhpcy5faVBhZ2VWaWV3SUQgPSAtMTsNCg0KICAgIC8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQogICAgLy8gIlB1YmxpYyIgTWV0aG9kcw0KICAgIC8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tDQogICAgLy8gTWV0aG9kIHRoYXQgaW5pdGlhbGl6ZXMgYWxs
IHJlcXVpcmVkIGNvbXBvbmVudHMNCiAgICB0aGlzLmluaXRpYWxpemVDbGFzcyA9
IGZ1bmN0aW9uKCkNCiAgICB7DQogICAgICAgIC8vIFNldCBldmVudCBsaXN0ZW5l
cnMNCiAgICAgICAgdGhpcy5yZXNldEV2ZW50TGlzdGVuZXJzKCk7DQogICAgICAg
IA0KICAgICAgICAvLyBPYnRhaW4gdmlkZW8gdmlldyBpZA0KICAgICAgICB2YXIg
aVZWSUQgPSAoc2VsZi5vUGFnZS5fb09wZW5WaWRlb1RyYWNrZXIgPT0gbnVsbCkg
PyBzZWxmLm9QYWdlLl9pVlZJRCA6IHNlbGYub1BhZ2UuX29PcGVuVmlkZW9UcmFj
a2VyLnZpZGVvVmlld0lEOw0KICAgICAgICANCiAgICAgICAgdmFyIGFBVklEcyA9
ICghWUFIT08ud2h0LmRvY1guQXJ0aWNsZVBhZ2UpID8gbmV3IEFycmF5KCkgOiBZ
QUhPTy53aHQuZG9jWC5BcnRpY2xlUGFnZS5nZXRBcnRpY2VWaWV3SURzKCk7DQog
ICAgICAgIHZhciBzQVZJRHMgPSBhQVZJRHMuam9pbignLCcpOw0KICAgICAgICAN
CiAgICAgICAgLy8gQWRkIHRoaXMgcGFnZSB2aWV3IHRvIERCDQogICAgICAgIHRo
aXMuYWRkUGFnZVZpZXcoaVZWSUQsIHNBVklEcyk7DQogICAgfTsNCiAgICANCiAg
ICANCiAgICB0aGlzLnJlc2V0RXZlbnRMaXN0ZW5lcnMgPSBmdW5jdGlvbigpIHsN
CiAgICAgICAgLy8gR2V0IGFob2xkIG9mIGFsbCBuZWNlc3NhcnkgZWxlbWVudHMN
CiAgICAgICAgdmFyIGFab25lTGlua3MgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgnYScpOw0KICAgICAgICB2YXIgYU90aGVyWm9uZUxpbmsgPSBZQUhP
Ty51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHRoaXMuX3Nab25lTGlu
a0NsYXNzKTsNCiAgICAgICAgDQogICAgICAgIC8vIFJlbW92ZSBsaXN0ZW5lcnMg
KGlmIGFueSkNCiAgICAgICAgdGhpcy5fdW5DYXB0dXJlRXZlbnRzKGFab25lTGlu
a3MsICdjbGljaycsIHRoaXMuX29uTXZ0Wm9uZUNsaWNrKTsNCiAgICAgICAgdGhp
cy5fdW5DYXB0dXJlRXZlbnRzKGFPdGhlclpvbmVMaW5rLCAnY2xpY2snLCB0aGlz
Ll9vbk12dFpvbmVDbGljayk7DQogICAgICAgIA0KICAgICAgICAvLyBBZGQgbGlz
dGVuZXJzDQogICAgICAgIHRoaXMuX2NhcHR1cmVFdmVudHMoYVpvbmVMaW5rcywg
J2NsaWNrJywgdGhpcy5fb25NdnRab25lQ2xpY2spOw0KICAgICAgICB0aGlzLl9j
YXB0dXJlRXZlbnRzKGFPdGhlclpvbmVMaW5rLCAnY2xpY2snLCB0aGlzLl9vbk12
dFpvbmVDbGljayk7DQogICAgfTsNCiAgICANCiAgICANCiAgICAvLyBBZGRzIGV2
ZW50IHRvIHRoZSBsaXN0DQogICAgdGhpcy5hZGRVcGRhdGVFdmVudCA9IGZ1bmN0
aW9uKCRzRXZlbnROYW1lKQ0KICAgIHsNCiAgICAgICAgLy8gVHJ5IHRvIG9idGFp
biB0aGUgZXZlbnQNCiAgICAgICAgdmFyIG9FdmVudFRvVXBkYXRlID0gdGhpcy5f
ZmluZEV2ZW50KCRzRXZlbnROYW1lKTsNCiAgICAgICAgDQogICAgICAgIC8vIElm
IGl0J3MgbnVsbCwgY3JlYXRlIG9uZSBhbmQgYWRkIGl0IHRvIHRoZSBhcnJheQ0K
ICAgICAgICBpZiAob0V2ZW50VG9VcGRhdGUgPT0gbnVsbCkNCiAgICAgICAgew0K
ICAgICAgICAgICAgb0V2ZW50VG9VcGRhdGUgPSBuZXcgWUFIT08ud2h0Lk12dExv
Zy5NdnRFdmVudCgkc0V2ZW50TmFtZSk7DQogICAgICAgICAgICB0aGlzLl9hTG9n
TGlzdC5wdXNoKG9FdmVudFRvVXBkYXRlKTsNCiAgICAgICAgfQ0KICAgICAgICAN
CiAgICAgICAgLy8gSW5jcmVtZW50IGV2ZW50IGNvdW50cw0KICAgICAgICBvRXZl
bnRUb1VwZGF0ZS5pRXZlbnRDb3VudCsrOw0KICAgIH07DQogICAgDQogICAgDQog
ICAgdGhpcy5hZGRQYWdlVmlldyA9IGZ1bmN0aW9uKCRpVlZJRCwgJHNBVklEcykN
CiAgICB7DQogICAgICAgIHZhciBvRW5kID0gbmV3IERhdGUoKTsNCiAgICAgICAg
dmFyIGlDbGllbnRMb2FkVGltZSA9IF9fb0FuYWx5dGljc1N0YXJ0LmdldFRpbWUo
KSAtIF9fb1N0YXJ0LmdldFRpbWUoKTsNCiAgICAgICAgdmFyIGlTZXJ2ZXJMb2Fk
VGltZSA9IF9faVdodExvYWRUaW1lOw0KICAgICAgICB2YXIgc1JlZmVycmVyID0g
Jyc7DQogICAgICAgIGlmIChkb2N1bWVudC5yZWZlcnJlciAmJiBkb2N1bWVudC5y
ZWZlcnJlciAhPSAnJykNCiAgICAgICAgew0KICAgICAgICAgICAgc1JlZmVycmVy
ID0gZG9jdW1lbnQucmVmZXJyZXI7DQogICAgICAgIH0NCiAgICAgICAgdmFyIHNV
cmwgPSAnJzsNCiAgICAgICAgaWYgKCRfYWN0aXZlVVJMKQ0KICAgICAgICB7DQog
ICAgICAgICAgICBzVXJsID0gJF9hY3RpdmVVUkw7DQogICAgICAgIH0NCiAgICAg
ICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICBzVXJsID0gZG9jdW1lbnQu
bG9jYXRpb24ucGF0aG5hbWU7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAg
IHZhciBpVlZJRCA9ICgkaVZWSUQpID8gJGlWVklEIDogLTE7DQogICAgICAgIA0K
ICAgICAgICAvLyBBZGQgcGFnZSB2aWV3DQogICAgICAgIGh0dHBHZXQoaHR0cEdl
dC5idWlsZFBvc3RVUkkoJ0FkZE5ld1BhZ2VWaWV3JywgJ3NlcnZlckxvYWRUaW1l
JywgaVNlcnZlckxvYWRUaW1lLCAnY2xpZW50TG9hZHRpbWUnLCBpQ2xpZW50TG9h
ZFRpbWUsICdhY3RpdmVVcmwnLCBzVXJsLCAncmVmZXJyZXJVcmwnLCBzUmVmZXJy
ZXIsICd2dmlkJywgaVZWSUQsICdzZXNzaW9uSUQnLHRoaXMuX3NNdnRTZXNzaW9u
SUQsJ3NhdmlkcycsJHNBVklEcyksIHtiYXNlOnRoaXN9LCBmdW5jdGlvbihvUmVz
dWx0LG9BcmdzKSB7DQogICAgICAgICAgICAvLyBDaGVjayB0aGUgcmVzcG9uc2U6
DQogICAgICAgICAgICBpZiAob1Jlc3VsdC5lcnJvck51bWJlciA9PSAwKQ0KICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgIC8vIFNldCBwYWdlIHZpZXcgaWQN
CiAgICAgICAgICAgICAgICBvQXJncy5iYXNlLl9pUGFnZVZpZXdJRCA9IG9SZXN1
bHQudmFsdWU7DQogICAgICAgICAgICB9DQogICAgICAgIH0pOw0KICAgIH07DQog
ICAgDQogICAgDQogICAgLy8gQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHdlIG5lZWQg
dG8gcGVyZm9ybSB0aGUgdXBkYXRlDQogICAgdGhpcy5uZWVkc1RvVXBkYXRlID0g
ZnVuY3Rpb24oKQ0KICAgIHsNCiAgICAgICAgaWYgKHRoaXMuX2lQYWdlVmlld0lE
ID4gMSAmJiB0aGlzLl9zTXZ0U2Vzc2lvbklEICE9ICctMScgJiYgdGhpcy5fYUxv
Z0xpc3QubGVuZ3RoID4gMCkgew0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQog
ICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9
Ow0KICAgIA0KICAgIA0KICAgIC8vIFNlbmRzIGV2ZW50cyB0byB0aGUgc2VydmVy
DQogICAgdGhpcy5zYXZlTG9nID0gZnVuY3Rpb24oJGlWVklELCAkc0FWSURzKQ0K
ICAgIHsNCiAgICAgICAgaWYgKCF0aGlzLm5lZWRzVG9VcGRhdGUoKSkgcmV0dXJu
Ow0KICAgICAgICANCiAgICAgICAgdmFyIHNYbWxMb2dMaXN0ID0gdGhpcy5fbG9n
TGlzdFRvWG1sKHRoaXMuX2FMb2dMaXN0KTsNCiAgICAgICAgdmFyIGlWVklEID0g
KCRpVlZJRCkgPyAkaVZWSUQgOiAtMTsNCiAgICAgICAgdmFyIHNBVklEcyA9ICgk
c0FWSURzKSA/ICRzQVZJRHMgOiAnJzsNCiAgICAgICAgDQogICAgICAgIC8vIFVw
ZGF0ZSBsb2cNCiAgICAgICAgaHR0cEdldChodHRwR2V0LmJ1aWxkUG9zdFVSSSgn
VXBkYXRlTXZ0TG9nJywgJ3BhZ2VWaWV3SUQnLCB0aGlzLl9pUGFnZVZpZXdJRCwg
J2V2ZW50TGlzdCcsIHNYbWxMb2dMaXN0LCAndnZpZCcsIGlWVklELCdzYXZpZHMn
LHNBVklEcyksIHtiYXNlOnRoaXN9LCBmdW5jdGlvbihvUmVzdWx0LG9BcmdzKSB7
DQogICAgICAgICAgICAvLyBDaGVjayB0aGUgcmVzcG9uc2U6DQogICAgICAgICAg
ICBpZiAob1Jlc3VsdC5lcnJvck51bWJlciA9PSAwKQ0KICAgICAgICAgICAgew0K
ICAgICAgICAgICAgICAgIC8vIENsZWFyIGxvZw0KICAgICAgICAgICAgICAgIG9B
cmdzLmJhc2UuY2xlYXIoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSwgdHJ1
ZSk7DQogICAgfTsNCiAgICANCiAgICANCiAgICAvLyBNZXRob2QgdGhhdCBlbXB0
aWVzIGFsbCBlbGVtZW50cyBpbiB0aGUgYXJyYXkNCiAgICB0aGlzLmNsZWFyID0g
ZnVuY3Rpb24oKQ0KICAgIHsNCiAgICAgICAgdGhpcy5fYUxvZ0xpc3QgPSBuZXcg
QXJyYXkoKTsNCiAgICB9Ow0KICAgIA0KICAgIA0KICAgIA0KICAgIC8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tDQogICAgLy8gRXZlbnQgSGFuZGxlcnMNCiAgICAvLy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgIHRoaXMuX29uTXZ0Wm9uZUNsaWNrID0g
ZnVuY3Rpb24oJG9FdmVudCkNCiAgICB7DQogICAgICAgIHZhciBvTGluayA9IFlB
SE9PLnV0aWwuRXZlbnQuZ2V0VGFyZ2V0KCRvRXZlbnQpOw0KICAgICAgICB2YXIg
b0FuY2VzdG9yID0gbnVsbDsNCiAgICAgICAgDQogICAgICAgIGlmICh0aGlzLl9p
c012dEVsZW1lbnQob0xpbmspKQ0KICAgICAgICB7DQogICAgICAgICAgICBvQW5j
ZXN0b3IgPSBvTGluazsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAg
IHsNCiAgICAgICAgICAgIG9BbmNlc3RvciA9IFlBSE9PLnV0aWwuRG9tLmdldEFu
Y2VzdG9yQnkob0xpbmssIHRoaXMuX2lzTXZ0RWxlbWVudCk7DQogICAgICAgIH0N
CiAgICAgICAgDQogICAgICAgIGlmIChvQW5jZXN0b3IgIT0gbnVsbCkNCiAgICAg
ICAgew0KICAgICAgICAgICAgdmFyIHNFdmVudE5hbWUgPSBnZXRQcmVmaXhlZENs
YXNzVmFsdWUob0FuY2VzdG9yLCB0aGlzLl9zWm9uZVByZWZpeCk7DQogICAgICAg
ICAgICANCiAgICAgICAgICAgIHRoaXMuYWRkVXBkYXRlRXZlbnQoc0V2ZW50TmFt
ZSk7DQogICAgICAgIH0NCiAgICB9Ow0KICAgIA0KICAgIA0KICAgIA0KICAgIC8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgLy8gIlByaXZhdGUiIE1ldGhvZHMN
CiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgIC8vIENhcHR1cmVzIHRo
ZSBldmVudHMgZm9yIGFsbCBlbGVtZW50cyBpbiBhbiBhcnJheToNCiAgICB0aGlz
Ll9jYXB0dXJlRXZlbnRzID0gZnVuY3Rpb24oJGFFbGVtZW50cywgJHNFdmVudCwg
JGZFdmVudEhhbmRsZXIpIHsNCiAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCAk
YUVsZW1lbnRzLmxlbmd0aDsgeCsrKSB7DQogICAgICAgICAgICBZQUhPTy51dGls
LkV2ZW50LmFkZExpc3RlbmVyKCRhRWxlbWVudHNbeF0sICRzRXZlbnQsICRmRXZl
bnRIYW5kbGVyLCB0aGlzLCB0cnVlKTsNCiAgICAgICAgfQ0KICAgIH07DQogICAg
DQogICAgDQogICAgLy8gUmVtb3ZlcyBldmVudCBsaXN0ZW5lcnMNCiAgICB0aGlz
Ll91bkNhcHR1cmVFdmVudHMgPSBmdW5jdGlvbigkYUVsZW1lbnRzLCAkc0V2ZW50
LCAkZkV2ZW50SGFuZGxlcikgew0KICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8
ICRhRWxlbWVudHMubGVuZ3RoOyB4KyspIHsNCiAgICAgICAgICAgIFlBSE9PLnV0
aWwuRXZlbnQucmVtb3ZlTGlzdGVuZXIoJGFFbGVtZW50c1t4XSwgJHNFdmVudCwg
JGZFdmVudEhhbmRsZXIpOw0KICAgICAgICB9DQogICAgfTsNCiAgICANCiAgICAN
CiAgICAvLyBNZXRob2QgdGhhdCByZXR1cm5zIGV2ZW50IG1hdGNoaW5nIHN1cHBs
aWVkIGV2ZW50IG5hbWUNCiAgICB0aGlzLl9maW5kRXZlbnQgPSBmdW5jdGlvbigk
c0V2ZW50TmFtZSkNCiAgICB7DQogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dGhpcy5fYUxvZ0xpc3QubGVuZ3RoOyBpKyspDQogICAgICAgIHsNCiAgICAgICAg
ICAgIGlmICh0aGlzLl9hTG9nTGlzdFtpXS5zRXZlbnROYW1lID09ICRzRXZlbnRO
YW1lKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiB0aGlz
Ll9hTG9nTGlzdFtpXTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAg
ICANCiAgICAgICAgcmV0dXJuIG51bGw7DQogICAgfTsNCiAgICANCiAgICANCiAg
ICAvLyBNZXRob2RzIHRoYXQgbG9va3MgZm9yIHRoZSBldmVudCBuYW1lIGluIHRo
ZSBhcnJheSBvZiBldmVudHMgYW5kIHJldHVybnMgdHJ1ZSBpZiBpdCBmaW5kcywN
CiAgICAvLyBlbHNlIG90aGVyd2lzZQ0KICAgIHRoaXMuX2V2ZW50RXhpc3RzID0g
ZnVuY3Rpb24oJHNFdmVudE5hbWUpDQogICAgew0KICAgICAgICByZXR1cm4gKHRo
aXMuX2ZpbmRFdmVudCgkc0V2ZW50TmFtZSkgIT0gbnVsbCk7DQogICAgfTsNCiAg
ICANCiAgICANCiAgICAvLyBNZXRob2QgdGhhdCB3cmFwcyBZVUkncyBnZXRFbGVt
ZW50c0J5IHRvIHJldHJpZXZlIGVsZW1lbnRzIGJ5IHBhcnRpYWwgY2xhc3MgbmFt
ZXMgdXNpbmcgUmVnRXgNCiAgICB0aGlzLl9nZXRFbGVtZW50c0J5Q2xhc3NQcmVm
aXggPSBmdW5jdGlvbigkc1RhZywgJG9Sb290KQ0KICAgIHsNCiAgICAgICAgdmFy
IG9FbGVtZW50cyA9IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1lbnRzQnkodGhpcy5f
aXNNdnRFbGVtZW50LCAkc1RhZywgJG9Sb290KTsNCiAgICAgICAgcmV0dXJuIG9F
bGVtZW50czsNCiAgICB9Ow0KICAgIA0KICAgIA0KICAgIC8vIE1ldGhvZCB0aGF0
IGdldHMgcGFzc2VkIGluIHRvIFlVSSdzIGdldEVsZW1lbnRzQnkgbWV0aG9kIHRv
IGNoZWNrIGZvciBjbGFzcyBwcmVmaXhlcy4gVXNlcw0KICAgIC8vIHJlZ2V4IGRl
ZmluZWQgYXQgdGhlIHRvcA0KICAgIHRoaXMuX2lzTXZ0RWxlbWVudCA9IGZ1bmN0
aW9uKCRvRWxlbWVudCkNCiAgICB7DQogICAgICAgIHZhciBzWm9uZVByZWZpeCA9
ICdtdnRab25lXyc7IC8vIEhhcyB0byBiZSBkZWNsYXJlZCBoZXJlIGR1ZSB0byBz
Y29waW5nIGlzc3VlcyB3aGVuIHVzZWQgaW4gWVVJJ3MgZ2V0RWxlbWVudHNCeSBt
ZXRob2QNCiAgICAgICAgdmFyIGFDbGFzc05hbWVzID0gJG9FbGVtZW50LmNsYXNz
TmFtZS5zcGxpdCgnICcpOw0KICAgICAgICANCiAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBhQ2xhc3NOYW1lcy5sZW5ndGg7IGkrKykNCiAgICAgICAgew0KICAg
ICAgICAgICAgaWYgKGFDbGFzc05hbWVzW2ldLnRyaW0oKS5pbmRleE9mKHNab25l
UHJlZml4KSA9PSAwKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIA0K
ICAgICAgICAvLyBObyBtYXRjaCB3YXMgZm91bmQsIHJldHVybiBmYWxzZQ0KICAg
ICAgICByZXR1cm4gZmFsc2U7DQogICAgfTsNCiAgICANCiAgICANCiAgICAvLyBN
ZXRob2QgdGhhdCBjb252ZXJ0cyB0aGUgY3VycmVudCBhcnJheSBvZiBldmVudHMg
dG8gWE1MDQogICAgLy8gWE1MIFN0cnVjdHVyZSBpcyBhcyBmb2xsb3c6DQogICAg
LyoNCiAgICAgICAgPG12dFBhZ2VFdmVudHM+DQoJICAgICAgICA8bXZ0UGFnZUV2
ZW50IGV2ZW50PSJGYXZvcml0ZWQiIGNvdW50PSI1IiAvPg0KCSAgICAgICAgPG12
dFBhZ2VFdmVudCBldmVudD0iQ29tbWVudGVkIiBjb3VudD0iMyIgLz4NCgkgICAg
ICAgIDxtdnRQYWdlRXZlbnQgZXZlbnQ9IkdyYWRlZCIgY291bnQ9IjEwIiAvPiAg
ICAgDQogICAgICAgIDwvbXZ0UGFnZUV2ZW50cz4NCiAgICAqLw0KICAgIHRoaXMu
X2xvZ0xpc3RUb1htbCA9IGZ1bmN0aW9uKCRhTG9nTGlzdCkNCiAgICB7DQogICAg
ICAgIHZhciBzTG9nRXZlbnRUZW1wbGF0ZSA9ICc8bXZ0UGFnZUV2ZW50IGV2ZW50
PSJ7MH0iIGNvdW50PSJ7MX0iIC8+JzsNCiAgICAgICAgdmFyIHNYbWwgPSAnJzsN
CiAgICAgICAgDQogICAgICAgIHNYbWwgKz0gJzxtdnRQYWdlRXZlbnRzPic7DQog
ICAgICAgIA0KICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8ICRhTG9nTGlzdC5s
ZW5ndGg7IGkrKykNCiAgICAgICAgew0KICAgICAgICAgICAgc1htbCArPSBzTG9n
RXZlbnRUZW1wbGF0ZS5mb3JtYXQoJGFMb2dMaXN0W2ldLnNFdmVudE5hbWUsICRh
TG9nTGlzdFtpXS5pRXZlbnRDb3VudC50b1N0cmluZygpKTsNCiAgICAgICAgfQ0K
ICAgICAgICANCiAgICAgICAgc1htbCArPSAnPC9tdnRQYWdlRXZlbnRzPic7DQog
ICAgICAgIA0KICAgICAgICByZXR1cm4gc1htbDsNCiAgICB9Ow0KICAgIA0KICAg
IA0KICAgIC8vIERFQlVHIE1ldGhvZHMNCiAgICB0aGlzLnByaW50RGVidWcgPSBm
dW5jdGlvbigkc01lc3NhZ2UpIHsNCiAgICAgICAgdHJ5IHsNCiAgICAgICAgICAg
IGNvbnNvbGUubG9nKCRzTWVzc2FnZSk7DQogICAgICAgIH0gY2F0Y2ggKGVycikg
eyB9DQogICAgfTsNCiAgICANCiAgICAvLyBJbml0aWFsaXplIHRoZSBjbGFzcw0K
ICAgIHRoaXMuaW5pdGlhbGl6ZUNsYXNzKCk7DQp9Ow0KDQoNCi8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tDQovLyBTdXBwb3J0IENsYXNzZXMNCi8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQpZQUhPTy53aHQuTXZ0TG9nLk12dEV2ZW50ID0gZnVuY3Rpb24o
JHNFdmVudE5hbWUpDQp7DQogICAgdGhpcy5zRXZlbnROYW1lID0gJHNFdmVudE5h
bWU7DQogICAgdGhpcy5pRXZlbnRDb3VudCA9IDA7DQp9Ow==
------------GE38ccHN5OUhHV71ZcqG0g
Content-Disposition: inline; filename=page.js
Content-Type: application/x-javascript; charset=utf-8; name=page.js
Content-Location: http://www.wonderhowto.com/js/page.js?v=0902102
Content-Transfer-Encoding: Base64
77u/Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi8vIENvcHlyaWdodCAyMDA3IFdv
bmRlckhvd1RvLCBJbmMuDQovLyANCi8vIE9yaWdpb25hbCBBdXRob3I6ICAgIEJy
eWFuIENyb3cNCi8vIExhc3QgTW9kaWZpZWQgQnk6ICAgIE1hcmF0IEtob3VkYWJh
a2hzaGlldg0KLy8gTGFzdCBNb2RpZmllZDogICAgICAgMDkvMDEvMjAxMA0KLy8t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KLy8gVE9ETzogUmVmYWN0b3IgJiBjb25z
b2xpZGF0ZSBob3Zlci1mb3JtIG1ldGhvZHMuDQoNCi8vIE1ha2Ugc3VyZSB0aGUg
d2h0IG5hbWVzcGFjZSBleGlzdHM6DQpZQUhPTy5uYW1lc3BhY2UoJ3dodCcpOw0K
WUFIT08ubmFtZXNwYWNlKCd3aHQuZG9jWCcpOw0KDQovLyBQYWdlIGNsYXNzIGRl
ZmluaXRpb246DQpZQUhPTy53aHQuUGFnZSA9IGZ1bmN0aW9uKCRvTG9nZ2VkSW5V
c2VyLCAkb0RlZmF1bHRTa2luLCAkaVZWSUQsICRzTXZ0U2Vzc2lvbklELCAkb09B
dXRoVG9rZW5zKSB7DQogICAgLy8gUHJpdmF0ZSBNZW1iZXIgRGVjbGFyYXRpb25z
OmENCiAgICB0aGlzLm9Mb2dnZWRJblVzZXIgPSAkb0xvZ2dlZEluVXNlcjsNCiAg
ICB0aGlzLl9vRGVmYXVsdFNraW4gPSAkb0RlZmF1bHRTa2luOw0KICAgIHRoaXMu
X2lWVklEID0gKCRpVlZJRCA9PSBudWxsKSA/IC0xIDogJGlWVklEOw0KICAgIHRo
aXMuX3NNdnRTZXNzaW9uSUQgPSAkc012dFNlc3Npb25JRDsNCiAgICB0aGlzLl9i
TG9naW5Gb3JtQXR0YWNoZWQgPSBmYWxzZTsNCiAgICB0aGlzLl9iU3VnZ2VzdGlv
bkZvcm1BdHRhY2hlZCA9IGZhbHNlOw0KICAgIHRoaXMuX2JDb21tZW50Rm9ybUF0
dGFjaGVkID0gZmFsc2U7DQogICAgdGhpcy5hRG9BZnRlckxvZ2luID0gW107DQog
ICAgdGhpcy5pRG9BZnRlckxvZ2luUmVmcmVzaFdhaXQgPSAxNTAwOw0KICAgIHRo
aXMuX2JSZWxvYWRBZnRlckxvZ2luID0gdHJ1ZTsNCiAgICB0aGlzLl9iUGx1Z2lu
SW5zdGFsbGVkID0gZmFsc2U7DQogICAgdGhpcy5vT3BlblNpZGViYXJFdmVudCA9
IG5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KCdPcGVuU2lkZWJhcicsIHRoaXMp
Ow0KICAgIHRoaXMuX2JXaWRnZXRCdWlsZGVyTG9hZGVkID0gZmFsc2U7DQogICAg
dGhpcy5fYkNhdGVnb3JpZXNFeHBhbmRlZCA9IGZhbHNlOw0KICAgIHRoaXMuX2JS
ZWFkeSA9IGZhbHNlOw0KICAgIHRoaXMuc0ludml0ZWRFbWFpbCA9ICcnOw0KICAg
IHRoaXMuX29NdnRMb2cgPSBudWxsOw0KICAgIHRoaXMuZVdpbmRvd1VubG9hZCA9
IG5ldyBZQUhPTy51dGlsLkN1c3RvbUV2ZW50KCdXaW5kb3dVbmxvYWQnLCB0aGlz
KTsNCiAgICB0aGlzLl9vT0F1dGhUb2tlbnMgPSAkb09BdXRoVG9rZW5zOw0KICAg
IA0KICAgIA0KICAgIC8vIEZpcmVzIG9uY2UgZW5vdWdoIG9mIHRoZSBwYWdlIGhh
cyBsb2FkZWQgdG8gYWxsb3cgZm9yIHRoZSBsb2dpbi9zaWdudXAgZm9ybXMuDQog
ICAgdGhpcy5fb25QYWdlUmVhZHkgPSBmdW5jdGlvbigpIHsNCgkJdGhpcy5fb012
dExvZyA9IG51bGw7DQoJCQ0KCQl0cnl7DQoJCQl0aGlzLl9vTXZ0TG9nID0gbmV3
IFlBSE9PLndodC5NdnRMb2codGhpcy5fc012dFNlc3Npb25JRCk7DQogICAgICAg
IH0gY2F0Y2ggKGVycikge30NCgkJDQogICAgICAgIC8vaWYgKFlBSE9PLnV0aWwu
RG9tLmdldCgnbG9hZExhc3QnKSA9PSBudWxsKSB7IFlBSE9PLnV0aWwuRXZlbnQu
b25Db250ZW50UmVhZHkoJ2xvYWRMYXN0JywgdGhpcy5fb25QYWdlUmVhZHksIHRo
aXMsIHRydWUpOyByZXR1cm47IH0NCiAgICAgICAgdGhpcy5fcmVnaXN0ZXJTcGFu
TGlua3MoKTsNCiAgICAgICAgdGhpcy5fb092ZXJsYXkgPSBZQUhPTy51dGlsLkRv
bS5nZXQoJ292ZXJsYXknKTsNCiAgICAgICAgdGhpcy5fb1NoYWRlID0gWUFIT08u
dXRpbC5Eb20uZ2V0KCdzaGFkZScpOw0KICAgICAgICB0aGlzLl9hQWxsTGlua3Mg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpOw0KICAgICAgICB0
aGlzLl9hTG9naW5MaW5rcyA9IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1lbnRzQnlD
bGFzc05hbWUoJ2xvZ2luTGluaycsICdhJyk7DQogICAgICAgIHRoaXMuX2FMb2dv
dXRMaW5rcyA9IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUo
J2xvZ291dExpbmsnLCAnYScpOw0KICAgICAgICB0aGlzLl9hU2lnbnVwTGlua3Mg
PSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzaWdudXBM
aW5rJyk7DQogICAgICAgIHRoaXMuX2FMb2dpblJlcXVpcmVkTGlua3MgPSBZQUhP
Ty51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsb2dpblJlcXVpcmVk
Jyk7DQogICAgICAgIHRoaXMuX3R4dFNlYXJjaEJhciA9IFlBSE9PLnV0aWwuRG9t
LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lucHV0U2VhcmNoQmFyJywgJ2lucHV0
Jyk7DQogICAgICAgIHRoaXMuX2FTZWFyY2hCdXR0b24gPSBZQUhPTy51dGlsLkRv
bS5nZXQoJ3NlYXJjaEJ1dHRvbicpOw0KICAgICAgICB0aGlzLl9vU2VhcmNoTWVu
dSA9IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3NlYXJj
aE1lbnVzJywnZGl2Jyk7DQogICAgICAgIHRoaXMuX2FDcmVhdGVOZXdQbGF5bGlz
dExpbmtzID0gWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgn
Y3JlYXRlTmV3UGxheWxpc3QnLCAnYScpOw0KICAgICAgICB0aGlzLl9hVXBsb2Fk
SW1hZ2VMaW5rcyA9IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFzc05h
bWUoJ3VwbG9hZFBsYXlsaXN0SW1hZ2V8YWN0aW9uVXBsb2FkSW1hZ2UnLCAnYScp
Ow0KICAgICAgICB0aGlzLl9hUGxheWxpc3RQcml2YXRlTGlua3MgPSBZQUhPTy51
dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCcoYWN0aW9uUGxheWxpc3RQ
cml2YXRlfGFjdGlvblBsYXlsaXN0UHVibGljKScsICdhJyk7DQogICAgICAgIHRo
aXMuX2FQbGF5bGlzdFN1YnNjcmliZUxpbmtzID0gWUFIT08udXRpbC5Eb20uZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZSgnKGFjdGlvblBsYXlsaXN0U3Vic2NyaWJlfGFj
dGlvblBsYXlsaXN0VW5zdWJzY3JpYmUpJywgJ2EnKTsNCiAgICAgICAgdGhpcy5f
YUZvbGxvd1VuRm9sbG93TGlua3MgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKCcoYWN0aW9uRm9sbG93fGFjdGlvblVuZm9sbG93KScsICdh
Jyk7DQogICAgICAgIHRoaXMuX2FEZWxldGVQbGF5bGlzdExpbmtzID0gWUFIT08u
dXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYWN0aW9uRGVsZXRlUGxh
eWxpc3QnLCAnYScpOw0KICAgICAgICB0aGlzLl9hUHJvbW90ZVBsYXlsaXN0TGlu
a3MgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhY3Rp
b25Qcm9tb3RlUGxheWxpc3QnLCAnYScpOw0KICAgICAgICB0aGlzLl9hQ29udmVy
c2F0aW9uTGlua3MgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lKCdjb252ZXJzYXRpb24nLCAnZGl2Jyk7DQogICAgICAgIHRoaXMuX2FVbnJl
YWRNZXNzYWdlTGlua3MgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xh
c3NOYW1lKCdhY3Rpb25NYXJrQ29udmVyc2F0aW9uQXNVbnJlYWQnLCAnYScpOw0K
ICAgICAgICB0aGlzLl9hRGVsZXRlTWVzc2FnZUxpbmtzID0gWUFIT08udXRpbC5E
b20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYWN0aW9uRGVsZXRlQ29udmVyc2F0
aW9ufGFjdGlvbkRlbGV0ZU1lc3NhZ2UnLCAnYScpOw0KICAgICAgICB0aGlzLl9h
U3VnZ2VzdGlvbkxpbmtzID0gWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZSgnYWN0aW9uU3VnZ2VzdHxhY3Rpb25SZXBvcnRGYWtlfGFjdGlvblJl
cG9ydEJyb2tlbnxhY3Rpb25SZXBvcnRNYXR1cmUnLCAnYScpOw0KICAgICAgICB0
aGlzLl9hTWVzc2FnZVVzZXJMaW5rcyA9IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1l
bnRzQnlDbGFzc05hbWUoJ2FjdGlvbk1lc3NhZ2VVc2VyJywgJ2EnKTsNCiAgICAg
ICAgdGhpcy5fYVNob3dSZXBseUZvcm1MaW5rcyA9IFlBSE9PLnV0aWwuRG9tLmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUoJ2FjdGlvblNob3dSZXBseUZvcm0nLCAnaW5w
dXQnKTsNCiAgICAgICAgdGhpcy5fYVNlbmRSZXBseUJ1dHRvbnMgPSBZQUhPTy51
dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzZW5kUmVwbHlCdXR0b24n
LCAnaW5wdXQnKTsNCiAgICAgICAgdGhpcy5fYUxvZ2luRm9ybVN1Ym1pdExpbmtz
ID0gWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbG9naW5G
b3JtU3VibWl0JywgJ2EnKTsNCiAgICAgICAgdGhpcy5fYUNvbnRhaW5lcnMgPSBZ
QUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjb250YWluZXIn
LCAnZGl2Jyk7DQogICAgICAgIHRoaXMuX2FBZGRXaWRnZXRMaW5rcyA9IFlBSE9P
LnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RvZ2dsZVdpZGdldExp
bmsnLCAnYScpOw0KICAgICAgICB0aGlzLl9hUmVjb21tZW5kVm90ZUxpbmtzID0g
WUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncmVjVm90ZScs
ICdhJyk7DQogICAgICAgIHRoaXMuX2FOZXdTZWFyY2ggPSBZQUhPTy51dGlsLkRv
bS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCduZXdTZWFyY2gnLCAnYScpOw0KICAg
ICAgICB0aGlzLl9hTW9yZUNhdGVnb3JpZXMgPSBZQUhPTy51dGlsLkRvbS5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKCdtb3JlQ2F0ZWdvcmllc0xpbmsnLCAnYScpOw0K
ICAgICAgICB0aGlzLl9hQ2F0ZWdvcnlEcm9wRG93biA9IFlBSE9PLnV0aWwuRG9t
LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2NhdGVnb3J5RHJvcERvd24nLCAnc2Vs
ZWN0Jyk7DQogICAgICAgIHZhciBvRERNZW51Q29udGFpbmVyID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3dodERETWVudXMnKTsNCiAgICAgICAgdGhpcy5fYURE
TWVudXMgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdk
ZE1lbnUnLCAnZGl2Jywgb0RETWVudUNvbnRhaW5lcik7DQogICAgICAgIGlmICh0
aGlzLl9hRERNZW51cy5sZW5ndGggPT0gMCkgeyANCiAgICAgICAgICAgIHRoaXMu
X2FERE1lbnVzID0gWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSgnZGRNZW51JywgJ2RpdicpOw0KICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7
IHggPCB0aGlzLl9hRERNZW51cy5sZW5ndGg7IHgrKykgew0KICAgICAgICAgICAg
ICAgIG9ERE1lbnVDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5fYURETWVudXNb
eF0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIHRoaXMuX2FE
RFRhYnMgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0
YWJERCcsICdhJyk7DQogICAgICAgIHRoaXMuX2FTaG9ydFVSTHMgPSBZQUhPTy51
dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzaG9ydFVybCcsICdhJyk7
DQoJCXRoaXMuX2FEZWxldGVEcmFmdExpbmtzID0gWUFIT08udXRpbC5Eb20uZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZSgnZGVsRHJhZnQnLCAnYScpOw0KCQl0aGlzLl9h
VmVyaWZpY2F0aW9uTGlua3MgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKCdyZXNlbmRWZXJpZmljYXRpb24nLCAnYScpOw0KCQl0aGlzLl9h
RGVsQWNjb3VudFByb21wdExpbmtzID0gIFlBSE9PLnV0aWwuRG9tLmdldEVsZW1l
bnRzQnlDbGFzc05hbWUoJ2RlbEFjY3RQcm9tcHQnLCAnYScpOw0KCQl0aGlzLl9h
RGVsQWNjb3VudExpbmtzID0gWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZSgnZGVsZXRlQWNjb3VudCcsICdhJyk7DQoJCXRoaXMuX2FBcnRpY2xl
VGl0bGUgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdh
cnRpY2xlVGl0bGVGaWVsZCcsICdpbnB1dCcpOw0KCQl0aGlzLl9hU3RhcnRXcml0
aW5nID0gWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc3Rh
cnRBcnRpY2xlQnRuJywgJ2EnKTsNCgkJdGhpcy5fYVRvZ2dsZUNsYWltQ29udGVu
dCA9IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2NsYWlt
Q29udGVudExpbmsnLCAnYScpOw0KCQl0aGlzLl9hVmVyaWZ5Q2xhaW1lZENvbnRl
bnQgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd2ZXJp
ZnlDbGFpbWVkQ29udGVudCcsICdhJyk7DQoJCXRoaXMuX2FTYXZlVXNlckJpbyA9
IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3NhdmVVc2Vy
QmlvJywgJ2EnKTsNCgkJdGhpcy5fYU1heExlbmd0aEVsdCA9IFlBSE9PLnV0aWwu
RG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ21heExlbmd0aCcpOw0KCQl0aGlz
Ll9hQ29udGVudExpa2VEaXNsaWtlID0gWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZSgnY29udGVudEFjdGlvbkxpa2V8Y29udGVudEFjdGlvbkRp
c2xpa2UnLCAnYScpOw0KCQl0aGlzLl9hRmF2b3JpdGVMaW5rcyA9IFlBSE9PLnV0
aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2J0bkZWfGJ0blVORlYnLCAn
YScpOw0KCQl0aGlzLl9hVG9nZ2xlQ29udGVudEFjdGlvbnMgPSBZQUhPTy51dGls
LkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0b2dnbGVDb250ZW50QWN0aW9u
JywgJ2EnKTsNCgkJdGhpcy5fYU1ha2VIb3QgPSBZQUhPTy51dGlsLkRvbS5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKCdjb250ZW50QWN0aW9uTWFrZUhvdCcsICdhJyk7
DQoJCXRoaXMuX2FTYWZlU2VhcmNoID0gWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZSgnc2FmZVNlYXJjaCcsICdhJyk7DQoJCXRoaXMuX2J0bkVt
YmVkID0gWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYnRu
RW1iZWQnLCdhJyk7DQogICAgICAgIC8vdGhpcy5fb0RpdkNvbnRlbnRGaWx0ZXJz
ID0gWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY29udGVu
dEZpbHRlcnMnLCAnZGl2JylbMF07DQogICAgICAgIC8vdGhpcy5fYUZpbHRlckxp
bmtzID0gdGhpcy5fb0RpdkNvbnRlbnRGaWx0ZXJzLmdldEVsZW1lbnRzQnlUYWdO
YW1lKCdhJyk7DQogICAgICAgIHRoaXMuX2NhcHR1cmVFdmVudHModGhpcy5fYUxv
Z291dExpbmtzLCAnY2xpY2snLCB0aGlzLmxvZ291dCk7DQogICAgICAgIA0KICAg
ICAgICAvLyBSZWdpc3RlciBldmVudCBoYW5kbGVyczoNCiAgICAgICAgdGhpcy5f
Y2FwdHVyZUV2ZW50cyh0aGlzLl9hQWxsTGlua3MsICdjbGljaycsIHRoaXMuX29u
QW55TGlua0NsaWNrKTsNCiAgICAgICAgdGhpcy5fY2FwdHVyZUV2ZW50cyh0aGlz
Ll9hTG9naW5MaW5rcywgJ2NsaWNrJywgdGhpcy5zaG93TG9naW5Gb3JtKTsNCiAg
ICAgICAgdGhpcy5fY2FwdHVyZUV2ZW50cyh0aGlzLl9hU2lnbnVwTGlua3MsICdj
bGljaycsIHRoaXMuc2hvd1NpZ251cEZvcm0pOw0KICAgICAgICB0aGlzLl9jYXB0
dXJlRXZlbnRzKHRoaXMuX2FMb2dpblJlcXVpcmVkTGlua3MsICdjbGljaycsIHRo
aXMuX29uTG9naW5SZXF1aXJlZENsaWNrKTsNCiAgICAgICAgdGhpcy5fY2FwdHVy
ZUV2ZW50cyhbdGhpcy5fdHh0U2VhcmNoQmFyLHRoaXMuX2FTZWFyY2hCdXR0b25d
LCAnZm9jdXMnLCB0aGlzLl9vblNlYXJjaEZvY3VzKTsNCiAgICAgICAgDQogICAg
ICAgIGlmICh0aGlzLl9vU2VhcmNoTWVudS5sZW5ndGggPiAwKSB7IC8vIEZvciBX
b3JsZHMgY29tcGF0aWJpbGl0eQ0KICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3NlYXJjaE1lbnVPcHRpb25zJykuaW5uZXJIVE1MID0gJzxzZWxl
Y3QgbmFtZT0ic2N0U2VhcmNoT3B0aW9ucyIgY2xhc3M9InNlYXJjaE9wdGlvbnMi
PjxvcHRpb24gdmFsdWU9Ii0zIj5TZWFyY2ggQWxsIFZpZGVvcyAmYW1wOyBBcnRp
Y2xlczwvb3B0aW9uPiA8b3B0aW9uIHZhbHVlPSItMSI+U2VhcmNoIEFsbCBNZW1i
ZXJzPC9vcHRpb24+IDxvcHRpb24gdmFsdWU9Ii0zIj4tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L29wdGlvbj4gPG9wdGdy
b3VwIGxhYmVsPSJTZWFyY2ggT25seSBJbiI+IDxvcHRpb24gdmFsdWU9IjQiPkFs
Y29ob2w8L29wdGlvbj4gPG9wdGlvbiB2YWx1ZT0iMSI+QXJ0cyAmYW1wOyBDcmFm
dHM8L29wdGlvbj4gPG9wdGlvbiB2YWx1ZT0iMiI+QXV0b3MsIE1vdG9yY3ljbGVz
ICZhbXA7IFBsYW5lczwvb3B0aW9uPiA8b3B0aW9uIHZhbHVlPSIzIj5CZWF1dHkg
JmFtcDsgU3R5bGU8L29wdGlvbj4gPG9wdGlvbiB2YWx1ZT0iMjEiPkJ1c2luZXNz
ICZhbXA7IE1vbmV5PC9vcHRpb24+IDxvcHRpb24gdmFsdWU9IjYiPkNvbXB1dGVy
cyAmYW1wOyBQcm9ncmFtbWluZzwvb3B0aW9uPiA8b3B0aW9uIHZhbHVlPSI3Ij5E
YW5jZTwvb3B0aW9uPiA8b3B0aW9uIHZhbHVlPSI4Ij5EYXRpbmcgJmFtcDsgUmVs
YXRpb25zaGlwczwvb3B0aW9uPiA8b3B0aW9uIHZhbHVlPSI1MiI+RGlldCAmYW1w
OyBIZWFsdGg8L29wdGlvbj4gPG9wdGlvbiB2YWx1ZT0iMTAiPkRpc2FzdGVyIFBy
ZXBhcmF0aW9uPC9vcHRpb24+IDxvcHRpb24gdmFsdWU9IjE5Ij5FZHVjYXRpb248
L29wdGlvbj4gPG9wdGlvbiB2YWx1ZT0iMTEiPkVsZWN0cm9uaWNzPC9vcHRpb24+
IDxvcHRpb24gdmFsdWU9IjEyIj5GYW1pbHk8L29wdGlvbj4gPG9wdGlvbiB2YWx1
ZT0iNTUiPkZpbG0gJmFtcDsgVGhlYXRlcjwvb3B0aW9uPiA8b3B0aW9uIHZhbHVl
PSI1MCI+RmluZSBBcnQ8L29wdGlvbj4gPG9wdGlvbiB2YWx1ZT0iNTEiPkZpdG5l
c3M8L29wdGlvbj4gPG9wdGlvbiB2YWx1ZT0iMTMiPkZvb2Q8L29wdGlvbj4gPG9w
dGlvbiB2YWx1ZT0iMTQiPkdhbWJsaW5nPC9vcHRpb24+IDxvcHRpb24gdmFsdWU9
IjE1Ij5HYW1lczwvb3B0aW9uPiA8b3B0aW9uIHZhbHVlPSIxNyI+SG9iYmllcyAm
YW1wOyBUb3lzPC9vcHRpb24+IDxvcHRpb24gdmFsdWU9IjE4Ij5Ib21lICZhbXA7
IEdhcmRlbjwvb3B0aW9uPiA8b3B0aW9uIHZhbHVlPSIyNSI+SG9zdGluZyAmYW1w
OyBFbnRlcnRhaW5pbmc8L29wdGlvbj4gPG9wdGlvbiB2YWx1ZT0iNTYiPkxhbmd1
YWdlPC9vcHRpb24+IDxvcHRpb24gdmFsdWU9IjIwIj5NYWdpYyAmYW1wOyBQYXJs
b3IgVHJpY2tzPC9vcHRpb24+IDxvcHRpb24gdmFsdWU9IjIyIj5Nb3RpdmF0aW9u
ICZhbXA7IFNlbGYgSGVscDwvb3B0aW9uPiA8b3B0aW9uIHZhbHVlPSIyMyI+TXVz
aWMgJmFtcDsgSW5zdHJ1bWVudHM8L29wdGlvbj4gPG9wdGlvbiB2YWx1ZT0iMjQi
Pk91dGRvb3IgUmVjcmVhdGlvbjwvb3B0aW9uPiA8b3B0aW9uIHZhbHVlPSIyNiI+
UGV0cyAmYW1wOyBBbmltYWxzPC9vcHRpb24+IDxvcHRpb24gdmFsdWU9IjI3Ij5Q
cmFua3MgJmFtcDsgQ29uczwvb3B0aW9uPiA8b3B0aW9uIHZhbHVlPSI0OCI+U29m
dHdhcmU8L29wdGlvbj4gPG9wdGlvbiB2YWx1ZT0iMjgiPlNwaXJpdHVhbGl0eTwv
b3B0aW9uPiA8b3B0aW9uIHZhbHVlPSIyOSI+U3BvcnRzPC9vcHRpb24+IDxvcHRp
b24gdmFsdWU9IjMyIj5UcmF2ZWw8L29wdGlvbj4gPG9wdGlvbiB2YWx1ZT0iNTMi
PlZpZGVvIEdhbWVzPC9vcHRpb24+IDxvcHRpb24gdmFsdWU9IjQ0Ij5XZWFwb25z
PC9vcHRpb24+IDwvb3B0Z3JvdXA+PC9zZWxlY3Q+JzsNCiAgICAgICAgICAgIHRo
aXMuX2NhcHR1cmVFdmVudHModGhpcy5fb1NlYXJjaE1lbnVbMF0uZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ2EnKSwgJ2ZvY3VzJywgdGhpcy5fb25TZWFyY2hGb2N1cyk7
DQogICAgICAgICAgICB0aGlzLl9jYXB0dXJlRXZlbnRzKHRoaXMuX29TZWFyY2hN
ZW51WzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKSwgJ2ZvY3VzJywg
dGhpcy5fb25TZWFyY2hGb2N1cyk7DQogICAgICAgICAgICB0aGlzLl9jYXB0dXJl
RXZlbnRzKHRoaXMuX29TZWFyY2hNZW51WzBdLmdldEVsZW1lbnRzQnlUYWdOYW1l
KCdhJyksICdibHVyJywgdGhpcy5fb25TZWFyY2hCbHVyKTsNCiAgICAgICAgICAg
IHRoaXMuX2NhcHR1cmVFdmVudHModGhpcy5fb1NlYXJjaE1lbnVbMF0uZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ3NlbGVjdCcpLCAnYmx1cicsIHRoaXMuX29uU2VhcmNo
Qmx1cik7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHRoaXMuX2NhcHR1
cmVFdmVudHMoW3RoaXMuX3R4dFNlYXJjaEJhcix0aGlzLl9hU2VhcmNoQnV0dG9u
XSwgJ2JsdXInLCB0aGlzLl9vblNlYXJjaEJsdXIpOw0KICAgICAgICB0aGlzLl9j
YXB0dXJlRXZlbnRzKHRoaXMuX2FDcmVhdGVOZXdQbGF5bGlzdExpbmtzLCAnY2xp
Y2snLCB0aGlzLl9vbkNyZWF0ZU5ld1BsYXlsaXN0Q2xpY2spOw0KICAgICAgICB0
aGlzLl9jYXB0dXJlRXZlbnRzKHRoaXMuX2FVcGxvYWRJbWFnZUxpbmtzLCAnY2xp
Y2snLCB0aGlzLl9vblVwbG9hZEltYWdlQ2xpY2spOw0KICAgICAgICB0aGlzLl9j
YXB0dXJlRXZlbnRzKHRoaXMuX2FQbGF5bGlzdFByaXZhdGVMaW5rcywgJ2NsaWNr
JywgdGhpcy5fb25TZXRQbGF5bGlzdFByaXZhdGVDbGljayk7DQogICAgICAgIHRo
aXMuX2NhcHR1cmVFdmVudHModGhpcy5fYVBsYXlsaXN0U3Vic2NyaWJlTGlua3Ms
ICdjbGljaycsIHRoaXMuX29uUGxheWxpc3RTdWJzY3JpYmVDbGljayk7DQogICAg
ICAgIHRoaXMuX2NhcHR1cmVFdmVudHModGhpcy5fYUZvbGxvd1VuRm9sbG93TGlu
a3MsICdjbGljaycsIHRoaXMuX29uRm9sbG93VG9nZ2xlQ2xpY2spOw0KICAgICAg
ICB0aGlzLl9jYXB0dXJlRXZlbnRzKHRoaXMuX2FEZWxldGVQbGF5bGlzdExpbmtz
LCAnY2xpY2snLCB0aGlzLl9vbkRlbGV0ZVBsYXlsaXN0Q2xpY2spOw0KICAgICAg
ICB0aGlzLl9jYXB0dXJlRXZlbnRzKHRoaXMuX2FQcm9tb3RlUGxheWxpc3RMaW5r
cywgJ2NsaWNrJywgdGhpcy5fb25Qcm9tb3RlUGxheWxpc3RDbGljayk7DQogICAg
ICAgIHRoaXMuX2NhcHR1cmVFdmVudHModGhpcy5fYUNvbnZlcnNhdGlvbkxpbmtz
LCAnY2xpY2snLCB0aGlzLl9vbkNvbnZlcnNhdGlvbkxpbmtDbGljayk7DQogICAg
ICAgIHRoaXMuX2NhcHR1cmVFdmVudHModGhpcy5fYVVucmVhZE1lc3NhZ2VMaW5r
cywgJ2NsaWNrJywgdGhpcy5fb25VbnJlYWRNZXNzYWdlQ2xpY2spOw0KICAgICAg
ICB0aGlzLl9jYXB0dXJlRXZlbnRzKHRoaXMuX2FEZWxldGVNZXNzYWdlTGlua3Ms
ICdjbGljaycsIHRoaXMuX29uRGVsZXRlTWVzc2FnZUNsaWNrKTsNCiAgICAgICAg
dGhpcy5fY2FwdHVyZUV2ZW50cyh0aGlzLl9hU3VnZ2VzdGlvbkxpbmtzLCAnY2xp
Y2snLCB0aGlzLl9vbk1ha2VTdWdnZXN0aW9uQ2xpY2spOw0KICAgICAgICB0aGlz
Ll9jYXB0dXJlRXZlbnRzKHRoaXMuX2FNZXNzYWdlVXNlckxpbmtzLCAnY2xpY2sn
LCB0aGlzLl9vbk1lc3NhZ2VVc2VyQ2xpY2spOw0KICAgICAgICB0aGlzLl9jYXB0
dXJlRXZlbnRzKHRoaXMuX2FTaG93UmVwbHlGb3JtTGlua3MsICdjbGljaycsIHRo
aXMuX29uU2hvd1JlcGx5Rm9ybUNsaWNrKTsNCiAgICAgICAgdGhpcy5fY2FwdHVy
ZUV2ZW50cyh0aGlzLl9hU2VuZFJlcGx5QnV0dG9ucywgJ2NsaWNrJywgdGhpcy5f
b25TZW5kUmVwbHlDbGljayk7DQogICAgICAgIHRoaXMuX2NhcHR1cmVFdmVudHMo
dGhpcy5fYUxvZ2luRm9ybVN1Ym1pdExpbmtzLCAnY2xpY2snLCB0aGlzLl9vbkxv
Z2luRm9ybVN1Ym1pdCk7DQogICAgICAgIHRoaXMuX2NhcHR1cmVFdmVudHModGhp
cy5fYUFkZFdpZGdldExpbmtzLCAnY2xpY2snLCB0aGlzLl9vbkFkZFdpZGdldENs
aWNrKTsNCiAgICAgICAgdGhpcy5fY2FwdHVyZUV2ZW50cyh0aGlzLl9hUmVjb21t
ZW5kVm90ZUxpbmtzLCAnY2xpY2snLCB0aGlzLl9vblJlY29tbWVuZFZvdGVDbGlj
ayk7DQogICAgICAgIHRoaXMuX2NhcHR1cmVFdmVudHModGhpcy5fYU5ld1NlYXJj
aCwgJ2NsaWNrJywgdGhpcy5fb25OZXdTZWFyY2hDbGljayk7DQogICAgICAgIHRo
aXMuX2NhcHR1cmVFdmVudHModGhpcy5fYU1vcmVDYXRlZ29yaWVzLCAnY2xpY2sn
LCB0aGlzLl9vbk1vcmVDYXRlZ29yaWVzQ2xpY2spOw0KICAgICAgICB0aGlzLl9j
YXB0dXJlRXZlbnRzKHRoaXMuX2FDYXRlZ29yeURyb3BEb3duLCAnY2hhbmdlJywg
dGhpcy5fb25DYXRlZ29yeUxpc3RDaGFuZ2UpOw0KICAgICAgICB0aGlzLl9jYXB0
dXJlRXZlbnRzKHRoaXMuX2FERE1lbnVzLCAnbW91c2VvdmVyJywgdGhpcy5fb25N
ZW51T3Zlcik7DQogICAgICAgIHRoaXMuX2NhcHR1cmVFdmVudHModGhpcy5fYURE
TWVudXMsICdtb3VzZW91dCcsIHRoaXMuX29uTWVudU91dCk7DQogICAgICAgIHRo
aXMuX2NhcHR1cmVFdmVudHModGhpcy5fYUREVGFicywgJ21vdXNlb3ZlcicsIHRo
aXMuX29uTWVudU92ZXIpOw0KICAgICAgICB0aGlzLl9jYXB0dXJlRXZlbnRzKHRo
aXMuX2FERFRhYnMsICdtb3VzZW91dCcsIHRoaXMuX29uTWVudU91dCk7DQoJCXRo
aXMuX2NhcHR1cmVFdmVudHModGhpcy5fYURlbGV0ZURyYWZ0TGlua3MsICdjbGlj
aycsIHRoaXMuX29uRHJhZnREZWxldGVDbGljayk7DQoJCXRoaXMuX2NhcHR1cmVF
dmVudHModGhpcy5fYVZlcmlmaWNhdGlvbkxpbmtzLCAnY2xpY2snLCB0aGlzLl9v
blZlcmlmaWNhdGlvbkNsaWNrKTsNCgkJdGhpcy5fY2FwdHVyZUV2ZW50cyh0aGlz
Ll9hRGVsQWNjb3VudFByb21wdExpbmtzLCAnY2xpY2snLCB0aGlzLl9vbkRlbGV0
ZUFjY291bnRGb3JtKTsNCgkJdGhpcy5fY2FwdHVyZUV2ZW50cyh0aGlzLl9hRGVs
QWNjb3VudExpbmtzLCAnY2xpY2snLCB0aGlzLl9vbkRlbGV0ZUFjY291bnRDbGlj
ayk7DQoJCXRoaXMuX2NhcHR1cmVFdmVudHModGhpcy5fYUFydGljbGVUaXRsZSwg
J2tleXByZXNzJywgdGhpcy5fb25BcnRpY2xlVGl0bGVLZXlQcmVzcyk7DQoJCXRo
aXMuX2NhcHR1cmVFdmVudHModGhpcy5fYVN0YXJ0V3JpdGluZywgJ2NsaWNrJywg
dGhpcy5fb25TdGFydFdyaXRpbmdDbGljayk7DQoJCXRoaXMuX2NhcHR1cmVFdmVu
dHModGhpcy5fYVRvZ2dsZUNsYWltQ29udGVudCwgJ2NsaWNrJywgdGhpcy5fb25U
b2dnbGVDbGFpbUNvbnRlbnRDbGljayk7DQoJCXRoaXMuX2NhcHR1cmVFdmVudHMo
dGhpcy5fYVZlcmlmeUNsYWltZWRDb250ZW50LCAnY2xpY2snLCB0aGlzLl9vblZl
cmlmeUNvbnRlbnRDbGljayk7DQoJCXRoaXMuX2NhcHR1cmVFdmVudHModGhpcy5f
YVNhdmVVc2VyQmlvLCAnY2xpY2snLCB0aGlzLl9vblNhdmVCaW9DbGljayk7DQoJ
CXRoaXMuX2NhcHR1cmVFdmVudHModGhpcy5fYU1heExlbmd0aEVsdCwgJ2tleXBy
ZXNzJywgdGhpcy5fb25NYXhMZW5ndGhLZXlQcmVzcyk7DQoJCXRoaXMuX2NhcHR1
cmVFdmVudHModGhpcy5fYU1heExlbmd0aEVsdCwgJ2tleXVwJywgdGhpcy5fb25N
YXhMZW5ndGhLZXlVcCk7DQoJCXRoaXMuX2NhcHR1cmVFdmVudHModGhpcy5fYUNv
bnRlbnRMaWtlRGlzbGlrZSwgJ2NsaWNrJywgdGhpcy5fb25MaWtlRGlzbGlrZUNs
aWNrKTsNCgkJdGhpcy5fY2FwdHVyZUV2ZW50cyh0aGlzLl9hRmF2b3JpdGVMaW5r
cywgJ2NsaWNrJywgdGhpcy5fb25TZXRGYXZvcml0ZUNsaWNrKTsNCgkJdGhpcy5f
Y2FwdHVyZUV2ZW50cyh0aGlzLl9hVG9nZ2xlQ29udGVudEFjdGlvbnMsICdjbGlj
aycsIHRoaXMuX29uVG9nZ2xlQ29udGVudEFjdGlvbkNsaWNrKTsNCgkJdGhpcy5f
Y2FwdHVyZUV2ZW50cyh0aGlzLl9hTWFrZUhvdCwgJ2NsaWNrJywgdGhpcy5fb25N
YWtlSG90Q2xpY2spOw0KCQl0aGlzLl9jYXB0dXJlRXZlbnRzKHRoaXMuX2FTYWZl
U2VhcmNoLCAnY2xpY2snLCB0aGlzLl9vblNhZmVTZWFyY2hDbGljayk7DQoJCXRo
aXMuX2NhcHR1cmVFdmVudHModGhpcy5fYnRuRW1iZWQsICdjbGljaycsIHRoaXMu
X29uRW1iZWRDbGljayk7DQoJCVlBSE9PLnV0aWwuRXZlbnQuYWRkTGlzdGVuZXIo
J2Noa0VtYmVkRGVzY3JpcHRpb24nLCAnY2hhbmdlJywgdGhpcy5fc2V0RW1iZWRD
b2RlLCB0aGlzLCB0cnVlKTsNCiAgICAgICAgLyp0aGlzLl9jYXB0dXJlRXZlbnRz
KHRoaXMuX2FGaWx0ZXJMaW5rcywgJ21vdXNlb3ZlcicsIHRoaXMuX29uRmlsdGVy
Um9sbE92ZXIpOw0KICAgICAgICB0aGlzLl9jYXB0dXJlRXZlbnRzKHRoaXMuX2FG
aWx0ZXJMaW5rcywgJ21vdXNlb3V0JywgdGhpcy5fb25GaWx0ZXJSb2xsT3V0KTsq
Lw0KCQkNCiAgICAgICAgaWYgKHRoaXMub0xvZ2dlZEluVXNlci5pc0FkbWluIHx8
IHRoaXMub0xvZ2dlZEluVXNlci5pc0N1cmF0b3IpIFlBSE9PLnV0aWwuRXZlbnQu
YWRkTGlzdGVuZXIod2luZG93LCAna2V5ZG93bicsIHRoaXMuX29uV2luS2V5UHJl
c3MsIHRoaXMsIHRydWUpOw0KICAgICAgICBZQUhPTy51dGlsLkV2ZW50LmFkZExp
c3RlbmVyKHRoaXMuX29PdmVybGF5LCAna2V5cHJlc3MnLCB0aGlzLl9vbktleVBy
ZXNzLCB0aGlzLCB0cnVlKTsNCiAgICAgICAgDQogICAgICAgIGlmIChkb2N1bWVu
dC5mb3Jtc1swXSAmJiBkb2N1bWVudC5mb3Jtc1swXS50eHRMb2dpblVzZXJOYW1l
ICYmIGRvY3VtZW50LmZvcm1zWzBdLnR4dExvZ2luUGFzc3dvcmQpIHsNCiAgICAg
ICAgICAgIHRoaXMuX2NhcHR1cmVFdmVudHMoW2RvY3VtZW50LmZvcm1zWzBdLnR4
dExvZ2luVXNlck5hbWUsZG9jdW1lbnQuZm9ybXNbMF0udHh0TG9naW5QYXNzd29y
ZF0sICdrZXlwcmVzcycsIHRoaXMuX29uTG9naW5Gb3JtS2V5UHJlc3MpOw0KICAg
ICAgICB9DQogICAgICAgIA0KICAgICAgICAvLyBSZWdpc3RlciBjb250YWluZXIg
aGVhZGVyIGNsaWNrIGV2ZW50czoNCiAgICAgICAgZm9yICh2YXIgeCA9IDA7IHgg
PCB0aGlzLl9hQ29udGFpbmVycy5sZW5ndGg7IHgrKykgew0KICAgICAgICAgICAg
dmFyIG9Db250YWluZXJIZWFkZXIgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKCdjb250YWluZXJUb3AnLCAnZGl2JywgdGhpcy5fYUNvbnRh
aW5lcnNbeF0pWzBdOw0KICAgICAgICAgICAgWUFIT08udXRpbC5FdmVudC5hZGRM
aXN0ZW5lcihvQ29udGFpbmVySGVhZGVyLCAnY2xpY2snLCB0aGlzLl9vbkNvbnRh
aW5lclRvZ2dsZSwgdGhpcywgdHJ1ZSk7DQogICAgICAgICAgICBZQUhPTy51dGls
LkV2ZW50LmFkZExpc3RlbmVyKG9Db250YWluZXJIZWFkZXIsICdtb3VzZWRvd24n
LCBmdW5jdGlvbihlKXtZQUhPTy51dGlsLkV2ZW50LnByZXZlbnREZWZhdWx0KGUp
O30pOw0KICAgICAgICB9DQogICAgDQogICAgICAgIC8vIExpc3RlbiBmb3IgdGhl
IHdpbmRvdyBvbmJlZm9yZXVubG9hZCBldmVudCBpbiBvcmRlciB0byBkbyBhbnkg
b3B0aW9uYWwgb25VbmxvYWQgcHJvY2Vzc2luZzoNCiAgICAgICAgaWYgKHdpbmRv
dy5vbmJlZm9yZXVubG9hZCAhPSBudWxsKSB7IHdpbmRvdy5fX19vbmJlZm9yZXVu
bG9hZCA9IHdpbmRvdy5vbmJlZm9yZXVubG9hZCB9DQogICAgICAgIGlmICh3aW5k
b3cub251bmxvYWQgIT0gbnVsbCkgeyB3aW5kb3cuX19fb251bmxvYWQgPSB3aW5k
b3cub251bmxvYWQgfQ0KICAgICAgICB3aW5kb3cub25iZWZvcmV1bmxvYWQgPSBm
dW5jdGlvbihldmVudCkgew0KICAgICAgICAgICAgd2luZG93LmJVbmxvYWRQcm9j
ZXNzZWQgPSB0cnVlOw0KICAgICAgICAgICAgdHJ5e3dpbmRvdy5vUGFnZS5fb25V
bmxvYWQuYXBwbHkod2luZG93Lm9QYWdlLFtldmVudF0pO31jYXRjaChlKXt9DQog
ICAgICAgICAgICB0cnl7aWYod2luZG93Ll9fX29uYmVmb3JldW5sb2FkICE9IG51
bGwpe3dpbmRvdy5fX19vbmJlZm9yZXVubG9hZC5hcHBseShzZWxmLFtldmVudF0p
O319Y2F0Y2goZSl7fQ0KICAgICAgICB9Ow0KICAgICAgICB3aW5kb3cub251bmxv
YWQgPSBmdW5jdGlvbihldmVudCkgew0KICAgICAgICAgICAgaWYgKHdpbmRvdy5i
VW5sb2FkUHJvY2Vzc2VkKSByZXR1cm47DQogICAgICAgICAgICB3aW5kb3cuYlVu
bG9hZFByb2Nlc3NlZCA9IHRydWU7DQogICAgICAgICAgICB0cnl7d2luZG93Lm9Q
YWdlLl9vblVubG9hZC5hcHBseSh3aW5kb3cub1BhZ2UsW2V2ZW50XSk7fWNhdGNo
KGUpe30NCiAgICAgICAgICAgIHRyeXtpZih3aW5kb3cuX19fb251bmxvYWQgIT0g
bnVsbCl7d2luZG93Ll9fX29udW5sb2FkLmFwcGx5KHNlbGYsW2V2ZW50XSk7fX1j
YXRjaChlKXt9DQogICAgICAgIH07DQogICAgICAgIGlmIChZQUhPTy5lbnYudWEu
aWUgPiAwICYmIFlBSE9PLmVudi51YS5pZSA8IDkpIHsNCiAgICAgICAgICAgIGRv
Y3VtZW50LndyaXRlKCc8c2MnKydyaXB0IHR5cGU9InRleHQvamF2YXNjcicrJ2lw
dCIgZm9yPSJ3aW5kb3ciIGV2ZW50PSJvbnVubG9hZCI+aWYgKHdpbmRvdy5iVW5s
b2FkUHJvY2Vzc2VkICE9IHRydWUpIHt3aW5kb3cuYlVubG9hZFByb2Nlc3NlZCA9
IHRydWU7IHdpbmRvdy5vUGFnZS5fb25VbmxvYWQuYXBwbHkod2luZG93Lm9QYWdl
LFtldmVudF0pO308L3NjJysncmlwdD4nKTsNCiAgICAgICAgfQ0KICAgICAgICAN
CiAgICAgICAgLy8gQ2hlY2sgZm9yIHRoZSBzY3JvbGxUb0NvbW1lbnQgY29va2ll
Og0KICAgICAgICB0aGlzLl9jaGVja0ZvckNvbW1lbnRTY3JvbGwoKTsNCiAgICAg
ICAgDQogICAgICAgIC8vIENoZWNrIGZvciB0aGUgZ28gdG8gcmVwbHkgZm9ybSB0
YXJnZXQ6DQogICAgICAgIHRoaXMuX2NoZWNrRm9yTWVzc2FnZVJlcGx5KCk7DQog
ICAgICAgIA0KICAgICAgICAvLyBGaXggZW1iZWRlZCAiY2xpY2sgdG8gYWN0aXZh
dGUiIG1lc3NhZ2VzIGZvciBJRToNCiAgICAgICAgdGhpcy5fZml4RW1iZWRzRm9y
SUUoKTsNCiAgICAgICAgDQogICAgICAgIHRyeSB7DQogICAgICAgICAgICAvLyBJ
bml0aWFsaXplIGltYWdlIHN3YXBzDQogICAgICAgICAgICBZQUhPTy53aHQuSW1h
Z2VGYWRlci5pbml0KCdzZWFyY2hDYXRlZ29yeScsICdkaXYnLCA0MiwgMzMpOw0K
ICAgICAgICB9IGNhdGNoIChlcnIpIHsgfQ0KICAgICAgICANCiAgICAgICAgdHJ5
IHsNCiAgICAgICAgICAgIC8vIEluaXRpYWxpemUgZWxlbWVudCByZXNpemUNCiAg
ICAgICAgICAgIFlBSE9PLndodC5FbGVtZW50UmVzaXplLmluaXQoJ3JlbGV2YW50
Q2F0ZWdvcmllcycsICdtb3JlQ2F0ZWdvcmllc0xpbmsnLCAnY2F0ZWdvcnlMaXN0
JywgJ2dldFJlbWFpbmluZ0NhdGVnb3JpZXMnKTsNCiAgICAgICAgfSBjYXRjaCAo
ZXJyKSB7IH0NCiAgICAgICAgDQogICAgICAgIHRyeSB7DQogICAgICAgICAgICAv
LyBJbml0aWFsaXplIGVsZW1lbnQgcmVzaXplICh0ZXh0IHZlcnNpb24pDQogICAg
ICAgICAgICBZQUhPTy53aHQuRWxlbWVudFJlc2l6ZS5pbml0KCd0ZXh0UmVmaW5l
ZFBhdGgnLCAnbW9yZVBhdGhDYXRlZ29yaWVzTGluaycsICdyZWZpbmVkUGF0aE1h
aW4nLCAnZ2V0UmVtYWluaW5nUmVmaW5lZENhdGVnb3JpZXMnKTsNCiAgICAgICAg
fSBjYXRjaCAoZXJyKSB7IH0NCiAgICAgICAgDQogICAgICAgIC8vIE1pbmltaXpl
IHRoZSBoZWlnaHQgb2YgdmlkZW8gZGVzY3JpcHRpb24gaWYgaXQncyB0b28gYmln
DQogICAgICAgIHRoaXMuX3NldFJlc2l6YWJsZUVsZW1lbnRzKCk7IC8vIFNldCBk
ZXNjcmlwdGlvbiBzaXplIHRvIG1heGltdW0gb2YgMyBsaW5lcy4gTWFrZSBzdXJl
IHRoYXQgbGluZS1oZWlnaHQgaXMgc3BlY2lmaWVkDQogICAgICAgIA0KICAgICAg
ICAvLyBBZGp1c3Qgc2l6ZSBvZiBhbGwgZWxlbWVudHMgdGhhdCBuZWVkIGFkanVz
dG1lbnQ6DQogICAgICAgIHRoaXMuX3NjYWxlSGVhZGxpbmVzKCk7DQogICAgICAg
IHRoaXMuX2FkanVzdEVsZW1lbnRIZWlnaHRzKCk7DQogICAgICAgIA0KICAgICAg
ICAvLyBBZGQgdG9vbC10aXBzIGZvciBzcGVjaWZpYyBjbGFzc2VkIGl0ZW1zOg0K
ICAgICAgICB0aGlzLl9hZGRUb29sVGlwcygpOw0KICAgICAgICANCiAgICAgICAg
Ly8gQ2hlY2sgdGhlIGZpbHRlcidzIGN1cnJlbnQgc3RhdGU6DQogICAgICAgIC8v
dGhpcy5fc0RlZmF1bHRGaWx0ZXJDbGFzcyA9IHRoaXMuX29EaXZDb250ZW50Rmls
dGVycy5jbGFzc05hbWU7DQogICAgICAgIA0KICAgICAgICAvLyBOb3RlOiBkaXNh
YmxlZCBmb3Igbm93LiBTaG91bGQgYmUgY2FsbGVkIGR5bmFtaWNhbGx5DQogICAg
ICAgIC8vIFByb2Nlc3MgYW55IHNob3J0IFVSTHMNCiAgICAgICAgLy8gdGhpcy5f
c2hvcnRlblVSTHMoKTsNCiAgICAgICAgDQogICAgICAgIC8vIEFkanVzdCB0YWdz
IGFyZWEsIGlmIG9uZSBleGlzdHMNCiAgICAgICAgdGhpcy5fYWRqdXN0VGFnc0Fy
ZWEoKTsNCiAgICAgICAgDQogICAgICAgIC8vIERpc3BsYXkgJ2NoYXJzIGxlZnQn
IGZvciBhbnkgZWxlbWVudHMgdGhhdCByZXF1aXJlIGl0DQogICAgICAgIHRoaXMu
X3NldE1heExlbmd0aEVsdHMoKTsNCiAgICAgICAgDQogICAgICAgIC8vIEZpeCB3
ZWlyZCBwaW4gcG9zaXRpb25pbmcgaXNzdWVzDQogICAgICAgIHZhciBvU2NvcGUg
PSB0aGlzOw0KICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBvU2NvcGUu
X2ZpeFBpblBvc2l0aW9uLmFwcGx5KG9TY29wZSwgW10pOyB9LCAwKTsNCiAgICAg
ICAgDQogICAgICAgIHRoaXMuX2JSZWFkeSA9IHRydWU7DQoJCQ0KICAgICAgICAv
LyBTZW5kIGEga2VlcC1hbGl2ZSBtZXNzYWdlIGV2ZXJ5IDUgbWludXRlczoNCiAg
ICAgICAgc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtvUGFnZS5fa2VlcEFsaXZlKCk7
fSwzMDAwMDApOw0KICAgIH07DQogICAgDQogICAgDQogICAgLy8gQ2FwdHVyZXMg
dGhlIGV2ZW50cyBmb3IgYWxsIGVsZW1lbnRzIGluIGFuIGFycmF5Og0KICAgIHRo
aXMuX2NhcHR1cmVFdmVudHMgPSBmdW5jdGlvbigkYUVsZW1lbnRzLCAkc0V2ZW50
LCAkZkV2ZW50SGFuZGxlcikgew0KICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8
ICRhRWxlbWVudHMubGVuZ3RoOyB4KyspIHsNCiAgICAgICAgICAgIFlBSE9PLnV0
aWwuRXZlbnQuYWRkTGlzdGVuZXIoJGFFbGVtZW50c1t4XSwgJHNFdmVudCwgJGZF
dmVudEhhbmRsZXIsIHRoaXMsIHRydWUpOw0KICAgICAgICB9DQogICAgfTsNCiAg
ICANCiAgICANCiAgICAvLyBGaXhlZCBQaW4gcG9zaXRpb24gaW4gV2ViS2l0LWJh
c2VkIGJyb3dzZXJzDQogICAgdGhpcy5fZml4UGluUG9zaXRpb24gPSBmdW5jdGlv
bigpIHsNCiAgICAgICAgaWYgKFlBSE9PLmVudi51YS53ZWJraXQgPiAwIHx8IFlB
SE9PLmVudi51YS5pZSA+IDApIHsNCiAgICAgICAgICAgIHZhciBhUGlucyA9IFlB
SE9PLnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2FjdGlvblBpblRv
V29ybGQnLCAnc3BhbicpOw0KICAgICAgICAgICAgDQogICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGFQaW5zLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAg
ICAgICAgdmFyIG9QaW4gPSBhUGluc1tpXTsNCiAgICAgICAgICAgICAgICBZQUhP
Ty51dGlsLkRvbS5zZXRTdHlsZShvUGluLnBhcmVudE5vZGUsICdkaXNwbGF5Jywg
J2Jsb2NrJyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgDQog
ICAgICAgIGlmIChZQUhPTy5lbnYudWEuaWUgPiAwKSB7DQogICAgICAgICAgICB2
YXIgYUhMU3BhbnMgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lKCdobFR4dCcsICdzcGFuJyk7DQogICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGFITFNwYW5zLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgICAg
dmFyIG9BbmNob3IgPSBhSExTcGFuc1tpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgn
YScpWzBdOw0KICAgICAgICAgICAgICAgIHZhciBvUGluID0gWUFIT08udXRpbC5E
b20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgncGluQnV0dG9uJywgJ3NwYW4nLCBh
SExTcGFuc1tpXSlbMF07DQogICAgICAgICAgICAgICAgaWYgKG9BbmNob3IgJiYg
b1Bpbikgew0KICAgICAgICAgICAgICAgICAgICBZQUhPTy51dGlsLkRvbS5zZXRT
dHlsZShvUGluLCAncmlnaHQnLCAnMCcpOw0KICAgICAgICAgICAgICAgICAgICBZ
QUhPTy51dGlsLkRvbS5zZXRTdHlsZShvUGluLCAnbGVmdCcsIHB4KG9BbmNob3Iu
b2Zmc2V0V2lkdGgpKTsNCiAgICAgICAgICAgICAgICAgICAgLy8gWUFIT08udXRp
bC5Eb20uc2V0U3R5bGUob1BpbiwgJ3RvcCcsICctNDVweCcpOw0KICAgICAgICAg
ICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH07DQogICAg
DQogICAgDQogICAgLy8gQ2hlY2tzIHRvIHNlZSBpZiBhIGNvb2tpZSB3YXMgc2V0
IHRvIHNjcm9sbCB0byBhIHNwZWNpZmljIGNvbW1lbnQsIGFuZCBpZiBzbywgc2Ny
b2xscyBkb3duIHRvIGl0Og0KICAgIHRoaXMuX2NoZWNrRm9yQ29tbWVudFNjcm9s
bCA9IGZ1bmN0aW9uKCkgew0KICAgICAgICB2YXIgaUNvbW1lbnRJRCA9IGdldENv
b2tpZSgnc2Nyb2xsVG9Db21tZW50Jyk7DQogICAgICAgIGlmIChpQ29tbWVudElE
ICE9IG51bGwgJiYgaUNvbW1lbnRJRCAhPSAnJykgew0KICAgICAgICAgICAgZGVs
ZXRlQ29va2llKCdzY3JvbGxUb0NvbW1lbnQnKTsNCiAgICAgICAgICAgICANCiAg
ICAgICAgICAgIHZhciBvQ29tbWVudENvbnRhaW5lciA9IFlBSE9PLnV0aWwuRG9t
LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3ZpZGVvQ29tbWVudHMnKVswXTsNCiAg
ICAgICAgICAgIGlmIChvQ29tbWVudENvbnRhaW5lciAhPSBudWxsKSB7DQogICAg
ICAgICAgICAgICAgaWYgKFlBSE9PLnV0aWwuRG9tLmhhc0NsYXNzKG9Db21tZW50
Q29udGFpbmVyLCAnY2xvc2VkJykpIHsNCiAgICAgICAgICAgICAgICAgICAgdGhp
cy5fdG9nZ2xlQ29udGFpbmVyKG9Db21tZW50Q29udGFpbmVyKTsNCiAgICAgICAg
ICAgICAgICB9DQogICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbCgwLCBZQUhP
Ty51dGlsLkRvbS5nZXRZKCdjb21tZW50JyArIGlDb21tZW50SUQpIC0gNzApOw0K
ICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfTsNCiAgICANCiAgICANCiAg
ICAvLyBDaGVja3MgdG8gc2VlIGlmIHdlJ3JlIGluIGEgY29udmVyc2F0aW9uIHZp
ZXcgd2l0aCB0aGUgIiNyZXBseSIgdGFyZ2V0IHNlbGVjdGVkOg0KICAgIHRoaXMu
X2NoZWNrRm9yTWVzc2FnZVJlcGx5ID0gZnVuY3Rpb24oKSB7DQogICAgICAgIHZh
ciBzUGF0aCA9IFN0cmluZyh3aW5kb3cubG9jYXRpb24pOw0KICAgICAgICBpZiAo
c1BhdGguaW5kZXhPZignL2NvbnZlcnNhdGlvbi8nKSA+IC0xICYmIHNQYXRoLmlu
ZGV4T2YoJyNyZXBseScpID4gLTEpIHsNCiAgICAgICAgICAgIGlmICh0aGlzLl9h
U2hvd1JlcGx5Rm9ybUxpbmtzLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAg
ICB0aGlzLl9zaG93UmVwbHlGb3JtKHRoaXMuX2FTaG93UmVwbHlGb3JtTGlua3Nb
MF0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfTsNCiAgICANCiAg
ICANCiAgICAvLyBDZW50ZXJzIHRoZSBmb3JtIHZlcnRpY2FsbHkgd2l0aGluIHRo
ZSBWaWV3UG9ydDoNCiAgICB0aGlzLl9jZW50ZXJGb3JtID0gZnVuY3Rpb24oKSB7
DQogICAgICAgIGlmIChZQUhPTy5lbnYudWEuaWUgPiAwICYmIFlBSE9PLmVudi51
YS5pZSA8IDcpIHsNCiAgICAgICAgICAgIHRoaXMuX29PdmVybGF5LnN0eWxlLnRv
cCA9IHB4KHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQuc2Nyb2xsVG9wIHx8IDApOw0KICAgICAgICAgICAgdGhpcy5fb092ZXJs
YXkuc3R5bGUuaGVpZ2h0ID0gcHgoWUFIT08udXRpbC5Eb20uZ2V0Vmlld3BvcnRI
ZWlnaHQoKSk7DQogICAgICAgIH0NCiAgICAgICAgdGhpcy5fX2NlbnRlckZvcm0o
dGhpcy5fb0xvZ2luU2lnbnVwRm9ybSk7DQogICAgICAgIHRoaXMuX19jZW50ZXJG
b3JtKHRoaXMuX29TdWdnZXN0aW9uRm9ybSk7DQogICAgICAgIHRoaXMuX19jZW50
ZXJGb3JtKHRoaXMuX29TZW5kTmV3TWVzc2FnZUZvcm0pOw0KICAgICAgICB0aGlz
Ll9fY2VudGVyRm9ybSh0aGlzLl9vQWRkVG9QbGF5bGlzdEZvcm0pOw0KICAgICAg
ICB0aGlzLl9fY2VudGVyRm9ybSh0aGlzLl9vQ3JlYXRlTmV3UGxheWxpc3RGb3Jt
KTsNCiAgICAgICAgdGhpcy5fX2NlbnRlckZvcm0odGhpcy5fb1VwbG9hZEltYWdl
Rm9ybSk7DQogICAgICAgIHRoaXMuX19jZW50ZXJGb3JtKHRoaXMuX29Tb2NpYWxO
ZXR3b3JrU2V0dGluZ3NGb3JtKTsNCiAgICB9Ow0KICAgIA0KICAgIA0KICAgIC8v
IFBlcmZvcm1zIHRoZSBhY3R1YWwgY2VudGVyaW5nIG9mIGEgZm9ybSBvYmplY3Q6
DQogICAgdGhpcy5fX2NlbnRlckZvcm0gPSBmdW5jdGlvbigkb0Zvcm0pIHsNCiAg
ICAgICAgaWYgKCRvRm9ybSAhPSBudWxsKSB7DQogICAgICAgICAgICBpZiAoJG9G
b3JtLl9vRm9ybSAhPSBudWxsKSB7DQogICAgICAgICAgICAgICAgWUFIT08udXRp
bC5Eb20uc2V0U3R5bGUoJG9Gb3JtLl9vRm9ybSwgJ21hcmdpblRvcCcsIHB4KE1h
dGguZmxvb3IoKChZQUhPTy51dGlsLkRvbS5nZXRWaWV3cG9ydEhlaWdodCgpLzIp
IC0gKCRvRm9ybS5fb0Zvcm0ub2Zmc2V0SGVpZ2h0LzIpKSAqIDAuNjYpKSk7DQog
ICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9Ow0KICAgIA0KICAgIA0KICAg
IC8vIEZpbmRzICYgZml4ZXMgYWxsIGVtYmVkcyBvbiB0aGUgcGFnZToNCiAgICB0
aGlzLl9maXhFbWJlZHNGb3JJRSA9IGZ1bmN0aW9uKCkgew0KICAgICAgICBpZiAo
IXdpbmRvdy5BY3RpdmVYT2JqZWN0KSByZXR1cm47DQogICAgICAgIA0KICAgICAg
ICB2YXIgYUltZ3MgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1n
Jyk7DQogICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgYUltZ3MubGVuZ3RoOyB4
KyspIHsNCiAgICAgICAgICAgIGlmIChTdHJpbmcoYUltZ3NbeF0uc3JjKS50b0xv
d2VyQ2FzZSgpLmluZGV4T2YoJy5wbmcnKSA+IC0xKSB7DQogICAgICAgICAgICAg
ICAgYUltZ3NbeF0uc3R5bGUuZmlsdGVyID0gJ3Byb2dpZDpEWEltYWdlVHJhbnNm
b3JtLk1pY3Jvc29mdC5BbHBoYUltYWdlTG9hZGVyKHNyYz0iJythSW1nc1t4XS5z
cmMrJyIsc2l6aW5nTWV0aG9kPSJjcm9wIiknOw0KICAgICAgICAgICAgICAgIGFJ
bWdzW3hdLnNyYyA9ICcvaW1hZ2VzL2NsZWFyLmdpZic7DQogICAgICAgICAgICB9
DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIHJldHVybjsNCiAgICAgICAg
dmFyIGFFbWJlZHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZW1i
ZWQnKTsNCiAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBhRW1iZWRzLmxlbmd0
aDsgeCsrKSB7IGFFbWJlZHNbeF0ub3V0ZXJIVE1MID0gYUVtYmVkc1t4XS5vdXRl
ckhUTUw7IH0NCiAgICAgICAgdmFyIGFPYmplY3RzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ29iamVjdCcpOw0KICAgICAgICBmb3IgKHZhciB4ID0g
MDsgeCA8IGFPYmplY3RzLmxlbmd0aDsgeCsrKSB7IGFPYmplY3RzW3hdLm91dGVy
SFRNTCA9IGFPYmplY3RzW3hdLm91dGVySFRNTDsgfQ0KICAgIH07DQogICAgDQog
ICAgDQogICAgLy8gQ2FsbGVkIHdoZW4gdGhlIGxvZ2dlZCBpbiB1c2VyIGNoYW5n
ZXM6DQogICAgdGhpcy51cGRhdGVMb2dnZWRJblVzZXIgPSBmdW5jdGlvbigkb0xv
Z2dlZEluVXNlcikgew0KICAgICAgICB0aGlzLm9Mb2dnZWRJblVzZXIgPSAkb0xv
Z2dlZEluVXNlcjsNCiAgICAgICAgDQogICAgICAgIC8vIElmIGEgcmVhbCB1c2Vy
IGNhbWUgYmFjaywgY2hlY2sgZm9yIGRvQWZ0ZXJMb2dpbiBtZXRob2RzLi4uDQog
ICAgICAgIGlmICh0aGlzLm9Mb2dnZWRJblVzZXIuaXNVc2VyICYmIHRoaXMuYURv
QWZ0ZXJMb2dpbi5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICBmb3IgKHZhciB4
ID0gMDsgeCA8IHRoaXMuYURvQWZ0ZXJMb2dpbi5sZW5ndGg7IHgrKykgew0KICAg
ICAgICAgICAgICAgIGV2YWwodGhpcy5hRG9BZnRlckxvZ2luW3hdKTsNCiAgICAg
ICAgICAgICAgICANCiAgICAgICAgICAgICAgICAvLyBBZnRlciBmaXJpbmcgYWxs
IHRoZSBkb0FmdGVyTG9naW4gcGVuZGluZyByZXF1ZXN0cywgd2FpdCAxLjUgc2Vj
b25kcyB0aGVuIHJlZnJlc2g6DQogICAgICAgICAgICAgICAgaWYgKHRoaXMuX2JS
ZWxvYWRBZnRlckxvZ2luKSB7DQogICAgICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQocmVmcmVzaCwgdGhpcy5pRG9BZnRlckxvZ2luUmVmcmVzaFdhaXQpOw0KICAg
ICAgICAgICAgICAgICAgICB0cnl7ZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3Ig
PSAncHJvZ3Jlc3MnO31jYXRjaChlKXt9DQogICAgICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgICAgIC8vIElmIHRoZSBvdmVy
bGF5IGlzIHZpc2libGUsIGNhbmNlbCBpdCBvdXQ6DQogICAgICAgICAgICBpZiAo
dGhpcy5fb092ZXJsYXkuc3R5bGUuZGlzcGxheSA9PSAnYmxvY2snKSB0aGlzLl9v
bkNhbmNlbCgpOw0KICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2JSZWxvYWRBZnRl
ckxvZ2luKSB7DQogICAgICAgICAgICByZWZyZXNoKCk7DQogICAgICAgIH0NCiAg
ICB9Ow0KICAgIA0KICAgIA0KICAgIC8vIFNob3dzIHRoZSBsb2dpbiBmb3JtOg0K
ICAgIHRoaXMuc2hvd0xvZ2luRm9ybSA9IGZ1bmN0aW9uKCRzTWVzc2FnZSwgJG9E
b0FmdGVyTG9naW4pIHsNCiAgICAgICAgaWYgKCF0aGlzLl9iUmVhZHkpIHsNCiAg
ICAgICAgICAgIHZhciBvU2NvcGUgPSB0aGlzOw0KICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpe29TY29wZS5zaG93TG9naW5Gb3JtLmFwcGx5KG9TY29w
ZSwgWyRzTWVzc2FnZSwgJG9Eb0FmdGVyTG9naW5dKTt9LCAxMDApOw0KICAgICAg
ICB9DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgdGhpcy5zaG93TG9naW5T
aWdudXBGb3JtKCRzTWVzc2FnZSwgJG9Eb0FmdGVyTG9naW4pOyAvLyBGb3Igbm93
Lg0KICAgICAgICB9DQogICAgfTsNCiAgICANCiAgICANCiAgICAvLyBMb2dzIHRo
ZSBjdXJyZW50bHkgbG9nZ2VkLWluIHVzZXIgb3V0Og0KICAgIHRoaXMubG9nb3V0
ID0gZnVuY3Rpb24oKSB7DQogICAgICAgIGlmICghdGhpcy5vTG9nZ2VkSW5Vc2Vy
LmlzVXNlcikgcmV0dXJuOw0KICAgICAgICANCiAgICAgICAgLy8gU2VuZCB0aGUg
bG9nb3V0IHJlcXVlc3Q6DQogICAgICAgIGh0dHBHZXQoaHR0cEdldC5idWlsZFBv
c3RVUkkoJ0xvZ291dCcpLCB7YmFzZTp0aGlzfSwgZnVuY3Rpb24ob1Jlc3VsdCxv
QXJncykgew0KICAgICAgICAgICAgLy8gQ2hlY2sgdGhlIHJlc3BvbnNlOg0KICAg
ICAgICAgICAgaWYgKG9SZXN1bHQuZXJyb3JOdW1iZXIgPiAwKSB7DQogICAgICAg
ICAgICAgICAgdmFyIHNNZXNzYWdlOw0KICAgICAgICAgICAgICAgIHN3aXRjaCAo
b1Jlc3VsdC5lcnJvck51bWJlcikgew0KICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0Og0KICAgICAgICAgICAgICAgICAgICAgICAgc01lc3NhZ2UgPSBvUmVzdWx0
LmVycm9yVGV4dDsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBvV0hUQWxlcnQuc2hvdyhz
TWVzc2FnZSk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAg
IC8vIFN1Y2Nlc3MNCiAgICAgICAgICAgICAgICBvQXJncy5iYXNlLl9vbkxvZ291
dFN1Y2Nlc3MuYXBwbHkob0FyZ3MuYmFzZSwgW29SZXN1bHQudmFsdWVdKTsNCiAg
ICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfTsNCiAgICANCiAgICANCiAg
ICAvLyBGaXJlZCB3aGVuIHNvbWVvbmUgY2xpY2tzIGEgbG9naW5SZXF1aXJlZCBs
aW5rOg0KICAgIHRoaXMuX29uTG9naW5SZXF1aXJlZENsaWNrID0gZnVuY3Rpb24o
JG9FdmVudCkgew0KICAgICAgICBpZiAodGhpcy5vTG9nZ2VkSW5Vc2VyLmlzVXNl
cikgcmV0dXJuOw0KICAgICAgICB2YXIgb0xpbmsgPSBlY3YoWUFIT08udXRpbC5F
dmVudC5nZXRUYXJnZXQoJG9FdmVudCksICdsb2dpblJlcXVpcmVkJyk7DQogICAg
ICAgIFlBSE9PLnV0aWwuRXZlbnQuc3RvcEV2ZW50KCRvRXZlbnQpOw0KICAgICAg
ICB0aGlzLnNob3dMb2dpblNpZ251cEZvcm0oJzxzdHJvbmc+Tm90ZTo8L3N0cm9u
Zz4gWW91IG11c3QgYmUgbG9nZ2VkIGluIHRvIHZpZXcgdGhpcyBwYWdlLicsIChv
TGluay5ocmVmICE9IG51bGwgJiYgb0xpbmsuaHJlZiAhPSAnJykgPyBTdHJpbmco
J25hdmlnYXRlVG8oIicgKyBvTGluay5ocmVmICsgJyIpOycpIDogbnVsbCk7DQog
ICAgfTsNCiAgICANCiAgICANCiAgICAvLyBTaG93cyB0aGUgc2lnbnVwIGZvcm06
DQogICAgdGhpcy5zaG93U2lnbnVwRm9ybSA9IGZ1bmN0aW9uKCRzTWVzc2FnZSwg
JG9Eb0FmdGVyTG9naW4pIHsNCiAgICAgICAgaWYgKCF0aGlzLl9iUmVhZHkpIHsN
CiAgICAgICAgICAgIHZhciBvU2NvcGUgPSB0aGlzOw0KICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHtvU2NvcGUuc2hvd1NpZ251cEZvcm0uYXBwbHko
b1Njb3BlLCBbJHNNZXNzYWdlLCAkb0RvQWZ0ZXJMb2dpbl0pO30sIDEwMCk7DQog
ICAgICAgIH0NCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgICB0aGlzLnNob3dM
b2dpblNpZ251cEZvcm0oJHNNZXNzYWdlLCAkb0RvQWZ0ZXJMb2dpbik7IC8vIEZv
ciBub3cuDQogICAgICAgIH0NCiAgICB9Ow0KICAgIA0KICAgIA0KICAgIC8vIFNo
b3dzIHRoZSBsb2dpbiArIHNpZ251cCBmb3JtOg0KICAgIHRoaXMuc2hvd0xvZ2lu
U2lnbnVwRm9ybSA9IGZ1bmN0aW9uKCRzTWVzc2FnZSwgJHNEb0FmdGVyTG9naW4p
IHsNCiAgICAgICAgaWYgKCF0aGlzLl9iTG9naW5Gb3JtQXR0YWNoZWQpIHsNCiAg
ICAgICAgICAgIFlBSE9PLndodC5WaXJ0dWFsRm9ybS5hdHRhY2hGb3JtKCdsb2dp
blNpZ251cCcsJ2hvdmVyQ29udGVudCcpOw0KICAgICAgICAgICAgdGhpcy5fb0xv
Z2luU2lnbnVwRm9ybSA9IFlBSE9PLndodC5WaXJ0dWFsRm9ybS5vRm9ybXNbJ2xv
Z2luU2lnbnVwJ107DQogICAgICAgICAgICBZQUhPTy51dGlsLkV2ZW50Lm9uQ29u
dGVudFJlYWR5KCdsb2dpblNpZ251cENsb3NlJywgZnVuY3Rpb24oKXtZQUhPTy51
dGlsLkV2ZW50LmFkZExpc3RlbmVyKCdsb2dpblNpZ251cENsb3NlJywgJ2NsaWNr
JywgdGhpcy5fb25DYW5jZWwsIHRoaXMsIHRydWUpO3RoaXMuX2NlbnRlckZvcm0o
KTt9LCB0aGlzLCB0cnVlKTsNCiAgICAgICAgICAgIFlBSE9PLnV0aWwuRXZlbnQu
b25Db250ZW50UmVhZHkoJ2xvZ2luU2lnbnVwQ2xvc2UyJywgZnVuY3Rpb24oKXtZ
QUhPTy51dGlsLkV2ZW50LmFkZExpc3RlbmVyKCdsb2dpblNpZ251cENsb3NlMics
ICdjbGljaycsIHRoaXMuX29uQ2FuY2VsLCB0aGlzLCB0cnVlKTt0aGlzLl9jZW50
ZXJGb3JtKCk7fSwgdGhpcywgdHJ1ZSk7DQogICAgICAgICAgICB0aGlzLl9iTG9n
aW5Gb3JtQXR0YWNoZWQgPSB0cnVlOw0KICAgICAgICB9DQogICAgICAgIHRoaXMu
X29Mb2dpblNpZ251cEZvcm0uc2V0TWVzc2FnZSgoWUFIT08ubGFuZy5pc1N0cmlu
Zygkc01lc3NhZ2UpKSA/ICRzTWVzc2FnZSA6ICcnKTsNCiAgICAgICAgaWYgKFlB
SE9PLmxhbmcuaXNTdHJpbmcoJHNEb0FmdGVyTG9naW4pKSB0aGlzLmFEb0FmdGVy
TG9naW4ucHVzaCgkc0RvQWZ0ZXJMb2dpbik7DQogICAgICAgIC8vIElmIHRoZSB1
c2VyIHdhcyBpbnZpdGVkLCBwcmUtcG9wdWxhdGUgdGhlaXIgZW1haWwNCiAgICAg
ICAgdmFyIG9BcmdzID0ge307DQogICAgICAgIG9BcmdzLmludkVtYWlsID0gdGhp
cy5zSW52aXRlZEVtYWlsOw0KICAgICAgICB0aGlzLl9zaG93Rm9ybSgnbG9naW5T
aWdudXAnLCB0cnVlLCBvQXJncyk7DQogICAgfTsNCiAgICANCiAgICANCiAgICAv
LyBTaG93cyB0aGUgT0F1dGggU2V0dGluZ3MgRm9ybToNCiAgICB0aGlzLnNob3dT
b2NpYWxOZXR3b3JrU2V0dGluZ3NGb3JtID0gZnVuY3Rpb24oJG9BcmdzKSB7DQog
ICAgICAgIGlmICghdGhpcy5fYlNvY2lhbE5ldHdvcmtTZXR0aW5nc0Zvcm1BdHRh
Y2hlZCkgew0KICAgICAgICAgICAgWUFIT08ud2h0LlZpcnR1YWxGb3JtLmF0dGFj
aEZvcm0oJ1NvY2lhbE5ldHdvcmtTZXR0aW5ncycsJ2hvdmVyQ29udGVudCcpOw0K
ICAgICAgICAgICAgdGhpcy5fb1NvY2lhbE5ldHdvcmtTZXR0aW5nc0Zvcm0gPSBZ
QUhPTy53aHQuVmlydHVhbEZvcm0ub0Zvcm1zWydTb2NpYWxOZXR3b3JrU2V0dGlu
Z3MnXTsNCiAgICAgICAgICAgIFlBSE9PLnV0aWwuRXZlbnQub25Db250ZW50UmVh
ZHkoJ3Nuc1RhYmxlJywgZnVuY3Rpb24oKXt0aGlzLl9jZW50ZXJGb3JtKCk7fSwg
dGhpcywgdHJ1ZSk7DQogICAgICAgICAgICB0aGlzLl9iU29jaWFsTmV0d29ya1Nl
dHRpbmdzRm9ybUF0dGFjaGVkID0gdHJ1ZTsNCiAgICAgICAgfQ0KICAgICAgICB0
aGlzLl9zaG93Rm9ybSgnU29jaWFsTmV0d29ya1NldHRpbmdzJywgdHJ1ZSwgJG9B
cmdzKTsNCiAgICB9Ow0KICAgIA0KICAgIA0KICAgIC8vIFNob3dzIHRoZSBzdWdn
ZXN0aW9uIGZyb206DQogICAgdGhpcy5zaG93U3VnZ2VzdGlvbkZvcm0gPSBmdW5j
dGlvbigkaVN1Z2dlc3Rpb25UeXBlLCAkaVZpZGVvSUQpIHsNCiAgICAgICAgdmFy
IG9BcmdzID0ge307DQogICAgICAgIHN3aXRjaCAoJGlTdWdnZXN0aW9uVHlwZSkg
ew0KICAgICAgICAgICAgY2FzZSAyOiAvLyBOZXcgSGVhZGxpbmUNCiAgICAgICAg
ICAgICAgICBvQXJncy5pU3VnZ2VzdGlvblR5cGUgPSAkaVN1Z2dlc3Rpb25UeXBl
Ow0KICAgICAgICAgICAgICAgIG9BcmdzLmN1c3RvbVRpdGxlID0gJ1N1Z2dlc3Qg
YSBOZXcgVGl0bGUnOw0KICAgICAgICAgICAgICAgIG9BcmdzLmN1c3RvbVByb21w
dCA9ICdZb3VyIE5ldyBUaXRsZTonOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0K
ICAgICAgICAgICAgY2FzZSAzOiAvLyBOZXcgRGVzY3JpcHRpb24NCiAgICAgICAg
ICAgICAgICBvQXJncy5pU3VnZ2VzdGlvblR5cGUgPSAkaVN1Z2dlc3Rpb25UeXBl
Ow0KICAgICAgICAgICAgICAgIG9BcmdzLmN1c3RvbVRpdGxlID0gJ1N1Z2dlc3Qg
YSBOZXcgRGVjcmlwdGlvbic7DQogICAgICAgICAgICAgICAgb0FyZ3MuY3VzdG9t
UHJvbXB0ID0gJ1lvdXIgTmV3IERlc2NyaXB0aW9uOic7DQogICAgICAgICAgICAg
ICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlIDQ6IC8vIEFkdWx0IENvbnRlbnQN
CiAgICAgICAgICAgICAgICBvQXJncy5pU3VnZ2VzdGlvblR5cGUgPSAkaVN1Z2dl
c3Rpb25UeXBlOw0KICAgICAgICAgICAgICAgIG9BcmdzLmN1c3RvbVRpdGxlID0g
J1JlcG9ydCBNYXR1cmUgQ29udGVudCc7DQogICAgICAgICAgICAgICAgb0FyZ3Mu
Y3VzdG9tUHJvbXB0ID0gJ0JyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBvZmZlbmRp
bmcgY29udGVudDonOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAg
ICAgY2FzZSA1OiAvLyBCcm9rZW4gTGluaw0KICAgICAgICAgICAgICAgIG9Bcmdz
LmlTdWdnZXN0aW9uVHlwZSA9ICRpU3VnZ2VzdGlvblR5cGU7DQogICAgICAgICAg
ICAgICAgb0FyZ3MuY3VzdG9tVGl0bGUgPSAnUmVwb3J0IGEgQnJva2VuIExpbmsn
Ow0KICAgICAgICAgICAgICAgIG9BcmdzLmN1c3RvbVByb21wdCA9ICdCcmllZiBk
ZXNjcmlwdGlvbiBvZiB0aGUgcHJvYmxlbSAob3B0aW9uYWwpOic7DQogICAgICAg
ICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlIDY6IC8vIEZha2UNCiAg
ICAgICAgICAgICAgICBvQXJncy5pU3VnZ2VzdGlvblR5cGUgPSAkaVN1Z2dlc3Rp
b25UeXBlOw0KICAgICAgICAgICAgICAgIG9BcmdzLmN1c3RvbVRpdGxlID0gJ1Jl
cG9ydCBhIE5vbi1Ib3ctVG8gVmlkZW8nOw0KICAgICAgICAgICAgICAgIG9Bcmdz
LmN1c3RvbVByb21wdCA9ICdCcmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvYmxl
bSB3aXRoIHRoaXMgdmlkZW86JzsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAg
ICAgICAgICAgIGNhc2UgNzogLy8gVmlkZW8gQ29ycmVjdGlvbg0KICAgICAgICAg
ICAgICAgIG9BcmdzLmlTdWdnZXN0aW9uVHlwZSA9ICRpU3VnZ2VzdGlvblR5cGU7
DQogICAgICAgICAgICAgICAgb0FyZ3MuY3VzdG9tVGl0bGUgPSAnU3VnZ2VzdCBh
IENvcnJlY3Rpb24nOw0KICAgICAgICAgICAgICAgIG9BcmdzLmN1c3RvbVByb21w
dCA9ICdCcmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvYmxlbSB3aXRoIHRoaXMg
dmlkZW86JzsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNh
c2UgODogLy8gU2lkZWJhciBTdWdnZXN0aW9uDQogICAgICAgICAgICAgICAgb0Fy
Z3MuaVN1Z2dlc3Rpb25UeXBlID0gJGlTdWdnZXN0aW9uVHlwZTsNCiAgICAgICAg
ICAgICAgICBvQXJncy5jdXN0b21UaXRsZSA9ICdGaXJlZm94IEV4dGVuc2lvbiBG
ZWVkYmFjazonOw0KICAgICAgICAgICAgICAgIG9BcmdzLmN1c3RvbVByb21wdCA9
ICdCcmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvYmxlbSBvciBzdWdnZXN0aW9u
IGZvciB0aGUgaG93LXRvIHZpZGVvIHNpZGViYXI6JzsNCiAgICAgICAgICAgICAg
ICBicmVhazsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoJGlWaWRlb0lEICE9IG51
bGwpIG9BcmdzLmlWaWRlb0lEID0gJGlWaWRlb0lEOw0KICAgICAgICANCiAgICAg
ICAgaWYgKCF0aGlzLl9iU3VnZ2VzdGlvbkZvcm1BdHRhY2hlZCkgew0KICAgICAg
ICAgICAgWUFIT08ud2h0LlZpcnR1YWxGb3JtLmF0dGFjaEZvcm0oJ1N1Z2dlc3Rp
b24nLCdob3ZlckNvbnRlbnQnKTsNCiAgICAgICAgICAgIHRoaXMuX29TdWdnZXN0
aW9uRm9ybSA9IFlBSE9PLndodC5WaXJ0dWFsRm9ybS5vRm9ybXNbJ1N1Z2dlc3Rp
b24nXTsNCiAgICAgICAgICAgIFlBSE9PLnV0aWwuRXZlbnQub25Db250ZW50UmVh
ZHkoJ3N1Z2dlc3Rpb25DbG9zZScsIGZ1bmN0aW9uKCl7WUFIT08udXRpbC5FdmVu
dC5hZGRMaXN0ZW5lcignc3VnZ2VzdGlvbkNsb3NlJywgJ2NsaWNrJywgdGhpcy5f
b25DYW5jZWwsIHRoaXMsIHRydWUpO3RoaXMuX2NlbnRlckZvcm0oKTt9LCB0aGlz
LCB0cnVlKTsNCiAgICAgICAgICAgIHRoaXMuX2JTdWdnZXN0aW9uRm9ybUF0dGFj
aGVkID0gdHJ1ZTsNCiAgICAgICAgfQ0KICAgICAgICB0aGlzLl9zaG93Rm9ybSgn
U3VnZ2VzdGlvbicsIHRydWUsIG9BcmdzKTsNCiAgICB9Ow0KICAgIA0KICAgIA0K
ICAgIC8vIExvYWRzIGFuZCBkaXNwbGF5cyB0aGUgc2VuZCBuZXcgbWVzc2FnZSBm
b3JtOg0KICAgIHRoaXMuc2hvd1NlbmROZXdNZXNzYWdlRm9ybSA9IGZ1bmN0aW9u
KCRpVG9Vc2VySUQpIHsNCiAgICAgICAgdmFyIG9BcmdzID0ge2lUb1VzZXJJRDok
aVRvVXNlcklEfTsNCiAgICAgICAgaWYgKCF0aGlzLl9iU2VuZE5ld01lc3NhZ2VG
b3JtQXR0YWNoZWQpIHsNCiAgICAgICAgICAgIFlBSE9PLndodC5WaXJ0dWFsRm9y
bS5hdHRhY2hGb3JtKCdTZW5kTmV3TWVzc2FnZScsJ2hvdmVyQ29udGVudCcpOw0K
ICAgICAgICAgICAgdGhpcy5fb1NlbmROZXdNZXNzYWdlRm9ybSA9IFlBSE9PLndo
dC5WaXJ0dWFsRm9ybS5vRm9ybXNbJ1NlbmROZXdNZXNzYWdlJ107DQogICAgICAg
ICAgICBZQUhPTy51dGlsLkV2ZW50Lm9uQ29udGVudFJlYWR5KCduZXdNZXNzYWdl
Q2xvc2UnLCBmdW5jdGlvbigpe1lBSE9PLnV0aWwuRXZlbnQuYWRkTGlzdGVuZXIo
J25ld01lc3NhZ2VDbG9zZScsICdjbGljaycsIHRoaXMuX29uQ2FuY2VsLCB0aGlz
LCB0cnVlKTt0aGlzLl9jZW50ZXJGb3JtKCk7fSwgdGhpcywgdHJ1ZSk7DQogICAg
ICAgICAgICB0aGlzLl9iU2VuZE5ld01lc3NhZ2VGb3JtQXR0YWNoZWQgPSB0cnVl
Ow0KICAgICAgICB9DQogICAgICAgIHRoaXMuX3Nob3dGb3JtKCdTZW5kTmV3TWVz
c2FnZScsIHRydWUsIG9BcmdzKTsNCiAgICB9Ow0KICAgIA0KICAgIA0KICAgIHRo
aXMuc2V0UGxheWxpc3RQcml2YXRlID0gZnVuY3Rpb24oJGlQbGF5bGlzdElELCAk
YlByaXZhdGUpIHsNCiAgICAgICAgaWYgKHRoaXMuX3BsYXlsaXN0UHJpdmF0ZUJ1
c3kpIHJldHVybjsNCiAgICAgICAgaWYgKCF0aGlzLm9Mb2dnZWRJblVzZXIuaXNV
c2VyKSB7DQogICAgICAgICAgICB2YXIgc01lc3NhZ2UgPSAnPHN0cm9uZz5Ob3Rl
Ojwvc3Ryb25nPiBZb3UgbXVzdCBiZSBsb2dnZWQgaW4gdG8gY2hhbmdlIHRoZSBw
cml2YXRlIHN0YXR1cyBvZiB5b3VyIHBsYXlsaXN0Lic7DQogICAgICAgICAgICB0
aGlzLnNob3dMb2dpblNpZ251cEZvcm0oc01lc3NhZ2UsICdvUGFnZS5zZXRQbGF5
bGlzdFByaXZhdGUoJyskaVBsYXlsaXN0SUQrJywnKyRiUHJpdmF0ZSsnKTsnKTsN
CiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAg
ICAgLy8gU2VuZCB0aGUgc2V0IHBsYXlsaXN0IHByaXZhdGUgcmVxdWVzdDoNCiAg
ICAgICAgdGhpcy5fcGxheWxpc3RQcml2YXRlQnVzeSA9IHRydWU7DQogICAgICAg
IGh0dHBHZXQoaHR0cEdldC5idWlsZFBvc3RVUkkoJ1VwZGF0ZVBsYXlsaXN0Jywg
J2lkJywgJGlQbGF5bGlzdElELCAncHJpdmF0ZScsICRiUHJpdmF0ZSksIHtiYXNl
OnRoaXN9LCBmdW5jdGlvbihvUmVzdWx0LG9BcmdzKSB7DQogICAgICAgICAgICBv
QXJncy5iYXNlLl9wbGF5bGlzdFByaXZhdGVCdXN5ID0gZmFsc2U7DQogICAgICAg
ICAgICAvLyBDaGVjayB0aGUgcmVzcG9uc2U6DQogICAgICAgICAgICBpZiAob1Jl
c3VsdC5lcnJvck51bWJlciA+IDApIHsNCiAgICAgICAgICAgICAgICBvV0hUQWxl
cnQuc2hvdyhvUmVzdWx0LmVycm9yVGV4dCk7DQogICAgICAgICAgICB9IGVsc2Ug
ew0KICAgICAgICAgICAgICAgIC8vIFN1Y2Nlc3MNCiAgICAgICAgICAgICAgICBv
QXJncy5iYXNlLl9vblNldFBsYXlsaXN0UHJpdmF0ZVN1Y2Nlc3MuYXBwbHkob0Fy
Z3MuYmFzZSwgW29SZXN1bHQudmFsdWVdKTsNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgfSk7DQogICAgfTsNCiAgICANCiAgICANCiAgICAvLyBTdWJzY3JpYmVzIG9y
IHVuc3Vic2NyaWJlcyB0aGUgc3BlY2lmaWVkIHVzZXIgdG8vZnJvbSBhIHBsYXls
aXN0Og0KICAgIHRoaXMuc3Vic2NyaWJlVG9QbGF5bGlzdCA9IGZ1bmN0aW9uKCRp
UGxheWxpc3RJRCwgJGJTdWJzY3JpYmUpIHsNCiAgICAgICAgaWYgKHRoaXMuX3Bs
YXlsaXN0U3Vic2NyaWJlQnVzeSkgcmV0dXJuOw0KICAgICAgICBpZiAoIXRoaXMu
b0xvZ2dlZEluVXNlci5pc1VzZXIpIHsNCiAgICAgICAgICAgIHZhciBzTWVzc2Fn
ZSA9ICc8c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFlvdSBtdXN0IGJlIGxvZ2dlZCBp
biB0byBzdWJzY3JpYmUgdG8gcGxheWxpc3RzLiBQbGVhc2UgbG9naW4gb3Igc2ln
bnVwIHRvIHNhdmUgeW91ciBzdWJzY3JpcHRpb24uLi4nOw0KICAgICAgICAgICAg
dGhpcy5zaG93TG9naW5TaWdudXBGb3JtKHNNZXNzYWdlLCAnb1BhZ2Uuc3Vic2Ny
aWJlVG9QbGF5bGlzdCgnKyRpUGxheWxpc3RJRCsnLCcrJGJTdWJzY3JpYmUrJyk7
Jyk7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCiAgICAgICAgDQog
ICAgICAgIC8vIFNlbmQgdGhlIHNldCBwbGF5bGlzdCBzdWJzY3JpcHRpb24gcmVx
dWVzdDoNCiAgICAgICAgdGhpcy5fcGxheWxpc3RTdWJzY3JpYmVCdXN5ID0gdHJ1
ZTsNCiAgICAgICAgaHR0cEdldChodHRwR2V0LmJ1aWxkUG9zdFVSSSgnU2V0UGxh
eWxpc3RTdWJzY3JpcHRpb24nLCAnaWQnLCAkaVBsYXlsaXN0SUQsICdzdWJzY3Jp
YmUnLCAkYlN1YnNjcmliZSksIHtiYXNlOnRoaXMsYlN1YnNjcmliZTokYlN1YnNj
cmliZX0sIGZ1bmN0aW9uKG9SZXN1bHQsb0FyZ3MpIHsNCiAgICAgICAgICAgIG9B
cmdzLmJhc2UuX3BsYXlsaXN0U3Vic2NyaWJlQnVzeSA9IGZhbHNlOw0KICAgICAg
ICAgICAgLy8gQ2hlY2sgdGhlIHJlc3BvbnNlOg0KICAgICAgICAgICAgaWYgKG9S
ZXN1bHQuZXJyb3JOdW1iZXIgPiAwKSB7DQogICAgICAgICAgICAgICAgb1dIVEFs
ZXJ0LnNob3cob1Jlc3VsdC5lcnJvclRleHQpOw0KICAgICAgICAgICAgfSBlbHNl
IHsNCiAgICAgICAgICAgICAgICAvLyBTdWNjZXNzDQogICAgICAgICAgICAgICAg
b0FyZ3MuYmFzZS5fb25TdWJzY3JpYmVUb1BsYXlsaXN0U3VjY2Vzcy5hcHBseShv
QXJncy5iYXNlLCBbb1Jlc3VsdC52YWx1ZSwgb0FyZ3MuYlN1YnNjcmliZV0pOw0K
ICAgICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9Ow0KICAgIA0KICAgIA0K
ICAgIC8vIEZvbGxvd3Mgb3IgVW5mb2xsb3dzIHRoZSBzcGVjaWZpZWQgdXNlcjoN
CiAgICB0aGlzLmZvbGxvd1VzZXIgPSBmdW5jdGlvbigkaVVzZXJJRCwgJGJGb2xs
b3cpIHsNCiAgICAgICAgaWYgKHRoaXMuX2ZvbGxvd1VuZm9sbG93QnVzeSkgcmV0
dXJuOw0KICAgICAgICBpZiAoIXRoaXMub0xvZ2dlZEluVXNlci5pc1VzZXIpIHsN
CiAgICAgICAgICAgIHZhciBzTWVzc2FnZSA9ICc8c3Ryb25nPk5vdGU6PC9zdHJv
bmc+IFlvdSBtdXN0IGJlIGxvZ2dlZCBpbiB0byBmb2xsb3cgcGVvcGxlLiBQbGVh
c2UgbG9naW4gb3Igc2lnbnVwIHRvIGZvbGxvdyB0aGlzIHBlcnNvbi4uLic7DQog
ICAgICAgICAgICB0aGlzLnNob3dMb2dpblNpZ251cEZvcm0oc01lc3NhZ2UsICdv
UGFnZS5mb2xsb3dVc2VyKCcrJGlVc2VySUQrJywnKyRiRm9sbG93KycpOycpOw0K
ICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9IGVsc2UgaWYgKHRoaXMub0xv
Z2dlZEluVXNlci51c2VySUQgPT0gJGlVc2VySUQpIHsNCiAgICAgICAgICAgIG9X
SFRBbGVydC5zaG93KCJZb3UgY2Fubm90IGZvbGxvdyB5b3Vyd2luZG93LiIpOw0K
ICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAg
ICAvLyBTZW5kIHRoZSBmb2xsb3cvdW5mb2xsb3cgcmVxdWVzdDoNCiAgICAgICAg
dGhpcy5fZm9sbG93VW5mb2xsb3dCdXN5ID0gdHJ1ZTsNCiAgICAgICAgaHR0cEdl
dChodHRwR2V0LmJ1aWxkUG9zdFVSSSgnQWRkVXBkYXRlU29jaWFsQ29ubmVjdGlv
bicsICdpZCcsICRpVXNlcklELCAnZCcsICRiRm9sbG93ICE9IHRydWUpLCB7YmFz
ZTp0aGlzLGlVc2VySUQ6JGlVc2VySUR9LCBmdW5jdGlvbihvUmVzdWx0LG9Bcmdz
KSB7DQogICAgICAgICAgICBvQXJncy5iYXNlLl9mb2xsb3dVbmZvbGxvd0J1c3kg
PSBmYWxzZTsNCiAgICAgICAgICAgIC8vIENoZWNrIHRoZSByZXNwb25zZToNCiAg
ICAgICAgICAgIGlmIChvUmVzdWx0LmVycm9yTnVtYmVyID4gMCkgew0KICAgICAg
ICAgICAgICAgIG9XSFRBbGVydC5zaG93KG9SZXN1bHQuZXJyb3JUZXh0KTsNCiAg
ICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgLy8gU3VjY2Vzcw0K
ICAgICAgICAgICAgICAgIG9BcmdzLmJhc2UuX29uRm9sbG93VG9nZ2xlU3VjY2Vz
cy5hcHBseShvQXJncy5iYXNlLCBbb1Jlc3VsdC52YWx1ZS5wYXJ0c1swXSwgb1Jl
c3VsdC52YWx1ZS5wYXJ0c1sxXSwgb1Jlc3VsdC52YWx1ZS5wYXJ0c1syXSwgb0Fy
Z3MuaVVzZXJJRF0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9
Ow0KICAgIA0KICAgIA0KICAgIC8vIE9wZW5zIGEgbmV3IGVtYWlsIHdpbmRvdyB1
c2luZyB0aGUgdXNlcidzIGRlZmF1bHQgbWFpbCBhcHAgd2l0aCBhIHByZS1nZW5l
cmF0ZWQgbWVzc2FnZSB0byBzZW5kOg0KICAgIHRoaXMuZW1haWxWaWRlb1RvRnJp
ZW5kID0gZnVuY3Rpb24oJHNUaXRsZSwgJGJJc0FydGljbGUpIHsNCiAgICAgICAg
JGJJc0FydGljbGUgPSAoJGJJc0FydGljbGUpID8gJGJJc0FydGljbGUgOiBmYWxz
ZTsNCiAgICAgICAgdmFyIHNTdWJqZWN0ID0gZXNjYXBlKCdFdmVyIHdvbmRlciBo
b3cgdG8gezB9PycuZm9ybWF0KCRzVGl0bGUudG9Mb3dlckNhc2UoKSkpOw0KICAg
ICAgICB2YXIgc1VSTCA9ICh3aW5kb3cubG9jYXRpb24uaHJlZikgPyB3aW5kb3cu
bG9jYXRpb24uaHJlZiA6IHdpbmRvdy5sb2NhdGlvbjsNCiAgICAgICAgdmFyIHNN
ZXNzYWdlID0gZXNjYXBlKCdIZXksXG5cbkkgdGhvdWdodCB5b3VcJ2QgbGlrZSB0
aGlzICcgKyAoJGJJc0FydGljbGUgPyAnYXJ0aWNsZScgOiAndmlkZW8nKSArICcg
SSBmb3VuZCBhdCBodHRwOi8vd3d3LndvbmRlcmhvd3RvLmNvbSBvbiBob3cgdG8g
ezB9OlxuXG57MX1cblxuTGV0IG1lIGtub3cgd2hhdCB5b3UgdGhpbmshXG5cbnsy
fVxuJy5mb3JtYXQoJHNUaXRsZS50b0xvd2VyQ2FzZSgpLCBzVVJMLCBTdHJpbmco
KHRoaXMub0xvZ2dlZEluVXNlci5pc1VzZXIpID8gJy0gJyArIHRoaXMub0xvZ2dl
ZEluVXNlci5kaXNwbGF5TmFtZSA6ICcnKSkpOw0KICAgICAgICBpZiAod2luZG93
LmxvY2F0aW9uLmhyZWYpIHsNCiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5o
cmVmID0gJ21haWx0bzo/c3ViamVjdD17MH0mYm9keT17MX0nLmZvcm1hdChzU3Vi
amVjdCwgc01lc3NhZ2UpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAg
d2luZG93LmxvY2F0aW9uID0gJ21haWx0bzo/c3ViamVjdD17MH0mYm9keT17MX0n
LmZvcm1hdChzU3ViamVjdCwgc01lc3NhZ2UpOw0KICAgICAgICB9DQogICAgfTsN
CgkNCgkNCgl0aGlzLl9maXJlT3BlblNpZGViYXJFdmVudCA9IGZ1bmN0aW9uKCRv
RXZlbnQpDQoJew0KCQl0aGlzLm9PcGVuU2lkZWJhckV2ZW50LmZpcmUoKTsNCgl9
Ow0KICAgIA0KICAgIA0KICAgIC8vIERpc3BsYXlzL2hpZGVzIHdpZGdldCBsb2Fk
aW5nIGdyYXBoaWNzDQoJdGhpcy5kaXNwbGF5V2lkZ2V0TG9hZGluZyA9IGZ1bmN0
aW9uKCRiU2hvdykNCgl7DQoJCXZhciBvTG9hZGluZ0VsZW1lbnQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnd2lkZ2V0QnVpbGRlckhvbGRlcicpOyAvLyBVc2lu
ZyBhbm90aGVyIHZhciwganVzdCBpbiBjYXNlIHdlIHdhbnQgdG8gdXNlIHNvbWV0
aGluZyBlbHNlIGluIHRoZSBmdXR1cmUgaW5zdGVhZA0KCQkNCgkJaWYgKCRiU2hv
dykNCgkJew0KCQkJaWYgKCFZQUhPTy51dGlsLkRvbS5oYXNDbGFzcyhvTG9hZGlu
Z0VsZW1lbnQsICd3aWRnZXRMb2FkaW5nJykpDQoJCQl7DQoJCQkJWUFIT08udXRp
bC5Eb20uYWRkQ2xhc3Mob0xvYWRpbmdFbGVtZW50LCAnd2lkZ2V0TG9hZGluZycp
Ow0KCQkJfQ0KCQl9DQoJCWVsc2UNCgkJew0KCQkJaWYgKFlBSE9PLnV0aWwuRG9t
Lmhhc0NsYXNzKG9Mb2FkaW5nRWxlbWVudCwgJ3dpZGdldExvYWRpbmcnKSkNCgkJ
CXsNCgkJCQlZQUhPTy51dGlsLkRvbS5yZW1vdmVDbGFzcyhvTG9hZGluZ0VsZW1l
bnQsICd3aWRnZXRMb2FkaW5nJyk7DQoJCQl9DQoJCX0NCgl9Ow0KCQ0KCQ0KCS8v
IFBlcmZvcm1zIEZCIGNvbm5lY3QgbG9naW4NCgl0aGlzLmZiQ29ubmVjdExvZ2lu
ID0gZnVuY3Rpb24oJHNUb2tlbiwgJHNVc2VySUQsICRiTG9naW4sICRiRGlzY29u
bmVjdCkgew0KCSAgICAkYkRpc2Nvbm5lY3QgPSAoJGJEaXNjb25uZWN0KSA/ICRi
RGlzY29ubmVjdCA6IGZhbHNlOw0KCSAgICBodHRwR2V0KGh0dHBHZXQuYnVpbGRQ
b3N0VVJJKCdPQXV0aENvbm5lY3QnLCdpc0xvZ2luJywkYkxvZ2luLCAnT0F1dGhU
b2tlbicsICRzVG9rZW4sICdPQXV0aFVzZXJJRCcsICRzVXNlcklELCAnaXNEaXNj
b25uZWN0JywgJGJEaXNjb25uZWN0KSwge2Jhc2U6dGhpc30sIGZ1bmN0aW9uKG9S
ZXN1bHQsb0FyZ3MpIHsNCiAgICAgICAgICAgIGlmIChvUmVzdWx0LmVycm9yTnVt
YmVyID4gMCkgew0KICAgICAgICAgICAgICAgIHN3aXRjaCAob1Jlc3VsdC5lcnJv
ck51bWJlcikgDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAg
ICBjYXNlIDc2MDA6IC8vIE9BdXRoUGVybWlzc2lvbnNFcnJvcg0KICAgICAgICAg
ICAgICAgICAgICAgICAgb1dIVEFsZXJ0LnNob3coJ1NvcnJ5LCBidXQgc29tZSBw
ZXJtaXNzaW9ucyBhcmUgbWlzc2luZzpcbicgKyBvUmVzdWx0LmVycm9yVGV4dCAr
ICdcblxuUGxlYXNlIGNsaWNrIHRoZSBGYWNlYm9vayBMb2dpbiBidXR0b24gYWdh
aW4gdG8gZ3JhbnQgdGhlbScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgDQog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoRkIgJiYgRkIuYXBpKSB7DQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGlzY29ubmVjdCBmcm9tIGZhY2Vi
b29rDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgRkIuYXBpKHttZXRob2Q6
J2F1dGgucmV2b2tlQXV0aG9yaXphdGlvbid9LCBmdW5jdGlvbihyZXN1bHQpIHsg
fSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAg
ICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICAgICAgICAg
b1dIVEFsZXJ0LnNob3coJ1NvcnJ5LCB0aGVyZSB3YXMgYW4gZXJyb3IgY29ubmVj
dGluZyB3aXRoIEZhY2Vib29rLiBQbGVhc2UgdHJ5IGFnYWluLicpOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAvLyBQ
ZXJmb3JtIEZCIGxvZ291dA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEZC
ICYmIEZCLmxvZ291dCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZC
LmxvZ291dCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsN
CiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBl
bHNlIHsNCiAgICAgICAgICAgICAgICAvLyBSZWZyZXNoIHBhZ2UgdG8gbG9hZCBu
ZXcgdXNlciB2YWx1ZXMNCiAgICAgICAgICAgICAgICAvLyByZWZyZXNoKCk7DQog
ICAgICAgICAgICB9DQogICAgICAgIH0pOw0KCX07DQoJDQogICAgDQogICAgLy8g
U2hvd3Mgb3IgaGlkZXMgdGhlIGxvZ2luL3NpZ251cCBmb3JtOg0KICAgIHRoaXMu
X3Nob3dGb3JtID0gZnVuY3Rpb24oJHNGb3JtTmFtZSwgJGJTaG93LCAkb0FyZ3Mp
IHsNCiAgICAgICAgaWYgKCRiU2hvdykgew0KICAgICAgICAgICAgLy8gSGlkZSBh
bGwgb2JqZWN0cyAmIGVtYmVkcyB0aGF0IGRvbid0IGhhdmUgdGhlaXIgd21vZGUg
c2V0IHRvIHRyYW5zcGFyZW50L29wYXF1ZToNCiAgICAgICAgICAgIHRoaXMuX2hp
ZGVFbWJlZHModHJ1ZSk7DQogICAgICAgICAgICANCiAgICAgICAgICAgIC8vIFNo
b3cgdGhlIG92ZXJsYXk6DQogICAgICAgICAgICB0aGlzLl9vT3ZlcmxheS5zdHls
ZS5kaXNwbGF5ID0gJ2Jsb2NrJzsNCiAgICAgICAgICAgIHRoaXMuX2NlbnRlckZv
cm0oKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgc3dpdGNoICgkc0Zvcm1O
YW1lKSB7DQogICAgICAgICAgICAgICAgY2FzZSAnbG9naW5TaWdudXAnOg0KICAg
ICAgICAgICAgICAgICAgICB0aGlzLl9vTG9naW5TaWdudXBGb3JtLnNob3dGb3Jt
KHRydWUsICRvQXJncyk7DQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAg
ICAgICAgICAgICAgIGNhc2UgJ1N1Z2dlc3Rpb24nOg0KICAgICAgICAgICAgICAg
ICAgICB0aGlzLl9vU3VnZ2VzdGlvbkZvcm0uc2hvd0Zvcm0odHJ1ZSwgJG9Bcmdz
KTsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAg
Y2FzZSAnU2VuZE5ld01lc3NhZ2UnOg0KICAgICAgICAgICAgICAgICAgICB0aGlz
Ll9vU2VuZE5ld01lc3NhZ2VGb3JtLnNob3dGb3JtKHRydWUsICRvQXJncyk7DQog
ICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2Ug
J0FkZFRvUGxheWxpc3QnOg0KICAgICAgICAgICAgICAgICAgICB0aGlzLl9vQWRk
VG9QbGF5bGlzdEZvcm0uc2hvd0Zvcm0odHJ1ZSwgJG9BcmdzKTsNCiAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAnQ3JlYXRl
TmV3UGxheWxpc3QnOg0KICAgICAgICAgICAgICAgICAgICB0aGlzLl9vQ3JlYXRl
TmV3UGxheWxpc3RGb3JtLnNob3dGb3JtKHRydWUsICRvQXJncyk7DQogICAgICAg
ICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgJ1VwbG9h
ZEltYWdlJzoNCiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb1VwbG9hZEltYWdl
Rm9ybS5zaG93Rm9ybSh0cnVlLCAkb0FyZ3MpOw0KICAgICAgICAgICAgICAgICAg
ICBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlICdTb2NpYWxOZXR3b3JrU2V0
dGluZ3MnOg0KICAgICAgICAgICAgICAgICAgICB0aGlzLl9vU29jaWFsTmV0d29y
a1NldHRpbmdzRm9ybS5zaG93Rm9ybSh0cnVlLCAkb0FyZ3MpOw0KICAgICAgICAg
ICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHRo
aXMuX2NlbnRlckZvcm0oKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgLy8g
TGlzdGVuIGZvciB0aGUgd2luZG93IHNjcm9sbCAoSUUgPCA3IG9ubHkpICYgcmVz
aXplIGV2ZW50czoNCiAgICAgICAgICAgIFlBSE9PLnV0aWwuRXZlbnQuYWRkTGlz
dGVuZXIod2luZG93LCAncmVzaXplJywgdGhpcy5fY2VudGVyRm9ybSwgdGhpcywg
dHJ1ZSk7DQogICAgICAgICAgICBpZiAoWUFIT08uZW52LnVhLmllID4gMCAmJiBZ
QUhPTy5lbnYudWEuaWUgPCA3KSBZQUhPTy51dGlsLkV2ZW50LmFkZExpc3RlbmVy
KHdpbmRvdywgJ3Njcm9sbCcsIHRoaXMuX2NlbnRlckZvcm0sIHRoaXMsIHRydWUp
Ow0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgc3dpdGNoICgkc0Zvcm1O
YW1lKSB7DQogICAgICAgICAgICAgICAgY2FzZSAnbG9naW5TaWdudXAnOg0KICAg
ICAgICAgICAgICAgICAgICB0aGlzLl9vTG9naW5TaWdudXBGb3JtLnNob3dGb3Jt
KGZhbHNlKTsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAg
ICAgICAgY2FzZSAnU3VnZ2VzdGlvbic6DQogICAgICAgICAgICAgICAgICAgIHRo
aXMuX29TdWdnZXN0aW9uRm9ybS5zaG93Rm9ybShmYWxzZSk7DQogICAgICAgICAg
ICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgJ1NlbmROZXdN
ZXNzYWdlJzoNCiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb1NlbmROZXdNZXNz
YWdlRm9ybS5zaG93Rm9ybShmYWxzZSk7DQogICAgICAgICAgICAgICAgICAgIGJy
ZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgJ0FkZFRvUGxheWxpc3QnOg0KICAg
ICAgICAgICAgICAgICAgICB0aGlzLl9vQWRkVG9QbGF5bGlzdEZvcm0uc2hvd0Zv
cm0oZmFsc2UpOw0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAg
ICAgICAgICBjYXNlICdDcmVhdGVOZXdQbGF5bGlzdCc6DQogICAgICAgICAgICAg
ICAgICAgIHRoaXMuX29DcmVhdGVOZXdQbGF5bGlzdEZvcm0uc2hvd0Zvcm0oZmFs
c2UpOw0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAg
ICBjYXNlICdVcGxvYWRJbWFnZSc6DQogICAgICAgICAgICAgICAgICAgIHRoaXMu
X29VcGxvYWRJbWFnZUZvcm0uc2hvd0Zvcm0oZmFsc2UpOw0KICAgICAgICAgICAg
ICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlICdTb2NpYWxOZXR3
b3JrU2V0dGluZ3MnOg0KICAgICAgICAgICAgICAgICAgICB0aGlzLl9vU29jaWFs
TmV0d29ya1NldHRpbmdzRm9ybS5zaG93Rm9ybShmYWxzZSk7DQogICAgICAgICAg
ICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgDQog
ICAgICAgICAgICAvLyBIaWRlIHRoZSBvdmVybGF5Og0KICAgICAgICAgICAgdGhp
cy5fb092ZXJsYXkuc3R5bGUuZGlzcGxheSA9ICdub25lJzsNCiAgICAgICAgICAg
IA0KICAgICAgICAgICAgLy8gU2hvdyBhbGwgb2JqZWN0cyAmIGVtYmVkczoNCiAg
ICAgICAgICAgIHRoaXMuX2hpZGVFbWJlZHMoZmFsc2UpOw0KICAgICAgICAgICAg
DQogICAgICAgICAgICAvLyBTdG9wIGxpc3RlbmluZyBmb3IgdGhlIHdpbmRvdyBz
Y3JvbGwgKElFIDwgNyBvbmx5KSAmIHJlc2l6ZSBldmVudHM6DQogICAgICAgICAg
ICBZQUhPTy51dGlsLkV2ZW50LnJlbW92ZUxpc3RlbmVyKHdpbmRvdywgJ3Jlc2l6
ZScsIHRoaXMuX2NlbnRlckZvcm0pOw0KICAgICAgICAgICAgaWYgKFlBSE9PLmVu
di51YS5pZSA+IDAgJiYgWUFIT08uZW52LnVhLmllIDwgNykgWUFIT08udXRpbC5F
dmVudC5yZW1vdmVMaXN0ZW5lcih3aW5kb3csICdzY3JvbGwnLCB0aGlzLl9jZW50
ZXJGb3JtKTsNCiAgICAgICAgfQ0KICAgIH07DQogICAgDQogICAgdGhpcy5faGlk
ZUVtYmVkcyA9IGZ1bmN0aW9uKCRiSGlkZSkgew0KICAgICAgICBpZiAoJGJIaWRl
KSB7DQogICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgIHZhciBhRW1i
ZWRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2VtYmVkJyk7DQog
ICAgICAgICAgICAgICAgdmFyIGFPYmplY3RzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ29iamVjdCcpOw0KICAgICAgICAgICAgICAgIHZhciBvQWRz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlbmRlcmVkQWRzJyk7DQogICAg
ICAgICAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCBhRW1iZWRzLmxlbmd0aDsg
eCsrKSB7dHJ5e1lBSE9PLnV0aWwuRG9tLnNldFN0eWxlKGFFbWJlZHNbeF0sICd2
aXNpYmlsaXR5JywgJ2hpZGRlbicpO31jYXRjaChleCl7fX0NCiAgICAgICAgICAg
ICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IGFPYmplY3RzLmxlbmd0aDsgeCsrKSB7
dHJ5e1lBSE9PLnV0aWwuRG9tLnNldFN0eWxlKGFPYmplY3RzW3hdLCAndmlzaWJp
bGl0eScsICdoaWRkZW4nKTt9Y2F0Y2goZXgpe319DQogICAgICAgICAgICAgICAg
aWYgKG9BZHMgIT0gbnVsbCkge3RyeXtZQUhPTy51dGlsLkRvbS5zZXRTdHlsZShv
QWRzLCAndmlzaWJpbGl0eScsICdoaWRkZW4nKTt9Y2F0Y2goZXgpe319DQogICAg
ICAgICAgICB9IGNhdGNoIChlKSB7fQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAg
ICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICB2YXIgYUVtYmVkcyA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdlbWJlZCcpOw0KICAgICAgICAgICAg
ICAgIHZhciBhT2JqZWN0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCdvYmplY3QnKTsNCiAgICAgICAgICAgICAgICB2YXIgb0FkcyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyZW5kZXJlZEFkcycpOw0KICAgICAgICAgICAgICAg
IGZvciAodmFyIHggPSAwOyB4IDwgYUVtYmVkcy5sZW5ndGg7IHgrKykge3RyeXtZ
QUhPTy51dGlsLkRvbS5zZXRTdHlsZShhRW1iZWRzW3hdLCAndmlzaWJpbGl0eScs
ICd2aXNpYmxlJyk7fWNhdGNoKGV4KXt9fQ0KICAgICAgICAgICAgICAgIGZvciAo
dmFyIHggPSAwOyB4IDwgYU9iamVjdHMubGVuZ3RoOyB4KyspIHt0cnl7WUFIT08u
dXRpbC5Eb20uc2V0U3R5bGUoYU9iamVjdHNbeF0sICd2aXNpYmlsaXR5JywgJ3Zp
c2libGUnKTt9Y2F0Y2goZXgpe319DQogICAgICAgICAgICAgICAgaWYgKG9BZHMg
IT0gbnVsbCkge3RyeXtZQUhPTy51dGlsLkRvbS5zZXRTdHlsZShvQWRzLCAndmlz
aWJpbGl0eScsICd2aXNpYmxlJyk7fWNhdGNoKGV4KXt9fQ0KICAgICAgICAgICAg
fSBjYXRjaCAoZSkge30NCiAgICAgICAgfQ0KICAgIH07DQogICAgDQogICAgDQog
ICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgIC8vIEV2ZW50IEhhbmRsZXJzOg0K
ICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgDQogICAgdGhpcy5fb25TZWFyY2hG
b2N1cyA9IGZ1bmN0aW9uKCRvRXZlbnQpIHsNCiAgICAgICAgaWYgKHRoaXMuX2lU
T1NlYXJjaEJsdXJUTyAhPSBudWxsKXtjbGVhclRpbWVvdXQodGhpcy5faVRPU2Vh
cmNoQmx1clRPKTsgdGhpcy5faVRPU2VhcmNoQmx1clRPID0gbnVsbDt9DQogICAg
ICAgIGlmICh0aGlzLl9iU2VhcmNoRm9jdXNlZCkgcmV0dXJuOw0KICAgICAgICB0
aGlzLl9zZXRTZWFyY2hNb2RlKHRydWUpOw0KICAgIH07DQogICAgdGhpcy5fb25T
ZWFyY2hCbHVyID0gZnVuY3Rpb24oJG9FdmVudCkgew0KICAgICAgICBpZiAoIXRo
aXMuX2JTZWFyY2hGb2N1c2VkKSByZXR1cm47DQogICAgICAgIHZhciBvU2NvcGUg
PSB0aGlzOw0KICAgICAgICB0aGlzLl9pVE9TZWFyY2hCbHVyVE8gPSBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCl7b1Njb3BlLl9vblNlYXJjaENhbmNlbC5hcHBseShvU2Nv
cGUsW10pfSwyMDApOw0KICAgIH07DQogICAgdGhpcy5fb25TZWFyY2hDYW5jZWwg
PSBmdW5jdGlvbigkb0V2ZW50KSB7DQogICAgICAgIGlmICh0aGlzLl9pVE9TZWFy
Y2hCbHVyVE8gIT0gbnVsbCl7Y2xlYXJUaW1lb3V0KHRoaXMuX2lUT1NlYXJjaEJs
dXJUTyk7IHRoaXMuX2lUT1NlYXJjaEJsdXJUTyA9IG51bGw7fQ0KICAgICAgICB0
aGlzLl9zZXRTZWFyY2hNb2RlKGZhbHNlKTsNCiAgICB9Ow0KICAgIHRoaXMuX3Nl
dFNlYXJjaE1vZGUgPSBmdW5jdGlvbigkYk9uKSB7DQogICAgICAgIHRoaXMuX2JT
ZWFyY2hGb2N1c2VkID0gJGJPbjsNCiAgICAgICAgdmFyIG9Mb2dvID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZ28nKTsNCiAgICAgICAgdmFyIG9TZWFyY2hC
YXIgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzZWFy
Y2hCYXInLCAnZGl2JylbMF07DQogICAgICAgIHZhciBvTmF2TWVudXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnbmF2TWVudXMnKTsNCiAgICAgICAgdmFyIG9O
YXZCYXIgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdu
YXZCYXInLCdkaXYnKVswXTsNCiAgICAgICAgdmFyIG9TZWFyY2hNZW51cyA9IFlB
SE9PLnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3NlYXJjaE1lbnVz
JywnZGl2JylbMF07DQogICAgICAgIHZhciBvTmV3QXJ0aWNsZXNCdWJibGUgPSBZ
QUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCduZXdCdWJibGUg
bmV3QXJ0aWNsZXMnLCdzcGFuJylbMF07DQogICAgICAgIGlmICgkYk9uKSB7DQog
ICAgICAgICAgICB0aGlzLl9oaWRlRW1iZWRzKHRydWUpOw0KICAgICAgICAgICAg
b0xvZ28uc3R5bGUuekluZGV4ID0gOTk5OTk5ODsNCiAgICAgICAgICAgIG9TZWFy
Y2hCYXIuc3R5bGUuekluZGV4ID0gOTk5OTk5ODsNCiAgICAgICAgICAgIG9OYXZN
ZW51cy5zdHlsZS56SW5kZXggPSA5OTk5OTk4Ow0KICAgICAgICAgICAgdGhpcy5f
b1NoYWRlLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjRkZGRkZGJzsNCiAgICAg
ICAgICAgIFlBSE9PLnV0aWwuRG9tLnNldFN0eWxlKHRoaXMuX29TaGFkZSwgJ29w
YWNpdHknLCAwKTsNCiAgICAgICAgICAgIFlBSE9PLnV0aWwuRG9tLnNldFN0eWxl
KG9OZXdBcnRpY2xlc0J1YmJsZSwgJ3Zpc2liaWxpdHknLCAnaGlkZGVuJyk7DQog
ICAgICAgICAgICB0aGlzLl9vT3ZlcmxheS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2Nr
JzsNCiAgICAgICAgICAgIHZhciBvQW5pbSA9IG5ldyBZQUhPTy51dGlsLkFuaW0o
dGhpcy5fb1NoYWRlLCB7b3BhY2l0eToge3RvOiAxfX0sIDAuNSwgWUFIT08udXRp
bC5FYXNpbmcuZWFzZUluKTsNCiAgICAgICAgICAgIG9BbmltLm9uQ29tcGxldGUu
c3Vic2NyaWJlKGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgIG9OYXZCYXIu
c3R5bGUuZGlzcGxheSA9ICdub25lJzsNCiAgICAgICAgICAgICAgICBvU2VhcmNo
TWVudXMuc3R5bGUub3ZlcmZsb3cgPSAndmlzaWJsZSc7DQogICAgICAgICAgICAg
ICAgdGhpcy5faGlkZUVtYmVkcyh0cnVlKTsNCiAgICAgICAgICAgIH0sIHRoaXMs
IHRydWUpOw0KICAgICAgICAgICAgaWYgKCEod2luZG93LkFjdGl2ZVhPYmplY3Qp
KSB7DQogICAgICAgICAgICAgICAgdmFyIG9BbmltMiA9IG5ldyBZQUhPTy51dGls
LkFuaW0ob05hdkJhciwge29wYWNpdHk6IHt0bzogMH19LCAwLjQpOw0KICAgICAg
ICAgICAgICAgIG9BbmltMi5hbmltYXRlKCk7DQogICAgICAgICAgICB9IGVsc2Ug
ew0KICAgICAgICAgICAgICAgIG9OYXZCYXIuc3R5bGUuZGlzcGxheSA9ICdub25l
JzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIG9BbmltLmFuaW1hdGUoKTsN
CiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIG9TZWFyY2hNZW51cy5zdHls
ZS5vdmVyZmxvdyA9ICdoaWRkZW4nOw0KICAgICAgICAgICAgb05hdkJhci5zdHls
ZS5kaXNwbGF5ID0gJ2Jsb2NrJzsNCiAgICAgICAgICAgIHZhciBvQW5pbSA9IG5l
dyBZQUhPTy51dGlsLkFuaW0odGhpcy5fb1NoYWRlLCB7b3BhY2l0eToge3RvOiAw
fX0sIDAuMiwgWUFIT08udXRpbC5FYXNpbmcuZWFzZUluKTsNCiAgICAgICAgICAg
IG9BbmltLm9uQ29tcGxldGUuc3Vic2NyaWJlKGZ1bmN0aW9uKCkgew0KICAgICAg
ICAgICAgICAgIG9Mb2dvLnN0eWxlLnpJbmRleCA9ICdhdXRvJzsNCiAgICAgICAg
ICAgICAgICBvU2VhcmNoQmFyLnN0eWxlLnpJbmRleCA9ICdhdXRvJzsNCiAgICAg
ICAgICAgICAgICBvTmF2TWVudXMuc3R5bGUuekluZGV4ID0gJ2F1dG8nOw0KICAg
ICAgICAgICAgICAgIHRoaXMuX29PdmVybGF5LnN0eWxlLmRpc3BsYXkgPSAnbm9u
ZSc7DQogICAgICAgICAgICAgICAgdGhpcy5fb1NoYWRlLnN0eWxlLmJhY2tncm91
bmRDb2xvciA9ICcjMDAwMDAwJzsNCiAgICAgICAgICAgICAgICBZQUhPTy51dGls
LkRvbS5zZXRTdHlsZSh0aGlzLl9vU2hhZGUsICdvcGFjaXR5JywgMC43KTsNCiAg
ICAgICAgICAgICAgICB0aGlzLl9oaWRlRW1iZWRzKGZhbHNlKTsNCiAgICAgICAg
ICAgICAgICBvU2VhcmNoTWVudXMuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJzsN
CiAgICAgICAgICAgICAgICBvTmF2QmFyLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2sn
Ow0KICAgICAgICAgICAgICAgIFlBSE9PLnV0aWwuRG9tLnNldFN0eWxlKG9OZXdB
cnRpY2xlc0J1YmJsZSwgJ3Zpc2liaWxpdHknLCAndmlzaWJsZScpOw0KICAgICAg
ICAgICAgfSwgdGhpcywgdHJ1ZSk7DQogICAgICAgICAgICBpZiAoISh3aW5kb3cu
QWN0aXZlWE9iamVjdCkpIHsNCiAgICAgICAgICAgICAgICB2YXIgb0FuaW0yID0g
bmV3IFlBSE9PLnV0aWwuQW5pbShvTmF2QmFyLCB7b3BhY2l0eToge3RvOiAxfX0s
IDAuMjUpOw0KICAgICAgICAgICAgICAgIG9BbmltMi5hbmltYXRlKCk7DQogICAg
ICAgICAgICB9DQogICAgICAgICAgICBvQW5pbS5hbmltYXRlKCk7DQogICAgICAg
IH0NCiAgICB9Ow0KICAgIA0KICAgIA0KICAgIHRoaXMuX29uU2FmZVNlYXJjaENs
aWNrID0gZnVuY3Rpb24oJG9FdmVudCkgew0KICAgICAgICB2YXIgb0xpbmsgPSBl
Y3YoWUFIT08udXRpbC5FdmVudC5nZXRUYXJnZXQoJG9FdmVudCksICdzYWZlU2Vh
cmNoJyk7DQogICAgICAgIHZhciBiU2FmZVNlYXJjaCA9IFlBSE9PLnV0aWwuRG9t
Lmhhc0NsYXNzKG9MaW5rLCAnb24nKTsNCiAgICAgICAgDQogICAgICAgIGh0dHBH
ZXQoaHR0cEdldC5idWlsZFBvc3RVUkkoJ1RvZ2dsZVNhZmVTZWFyY2gnLCdzYWZl
U2VhcmNoJyxiU2FmZVNlYXJjaCksIHtiYXNlOnRoaXN9LCBmdW5jdGlvbihvUmVz
dWx0LG9BcmdzKSB7DQogICAgICAgICAgICBpZiAob1Jlc3VsdC5lcnJvck51bWJl
ciA+IDApIHsNCiAgICAgICAgICAgICAgICBvV0hUQWxlcnQuc2hvdyhvUmVzdWx0
LmVycm9yVGV4dCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsN
CiAgICAgICAgICAgICAgICAvLyBSZWZyZXNoIHBhZ2UgZm9yIG5vbi1zYWZlIHNl
YXJjaA0KICAgICAgICAgICAgICAgIHJlZnJlc2goKTsNCiAgICAgICAgICAgIH0N
CiAgICAgICAgfSk7DQogICAgfTsNCiAgICANCiAgICANCiAgICB0aGlzLl9vbkVt
YmVkQ2xpY2sgPSBmdW5jdGlvbigkb0V2ZW50KSB7DQogICAgICAgIHZhciBvRGl2
U2V0dGluZ3MgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KCdlbWJlZFNldHRpbmdzJywgJ2RpdicpWzBdOw0KICAgICAgICBpZiAoWUFIT08u
dXRpbC5Eb20uZ2V0U3R5bGUob0RpdlNldHRpbmdzLCAnZGlzcGxheScpID09ICdi
bG9jaycpIHsNCiAgICAgICAgICAgIC8vIEhpZGUNCiAgICAgICAgICAgIHZhciBv
QW5pbSA9IG5ldyBZQUhPTy51dGlsLkFuaW0ob0RpdlNldHRpbmdzLCB7aGVpZ2h0
OiB7dG86IDB9LCBwYWRkaW5nVG9wOiB7dG86IDB9fSwgMC4xKTsNCiAgICAgICAg
ICAgIG9BbmltLm9uQ29tcGxldGUuc3Vic2NyaWJlKGZ1bmN0aW9uKCkgew0KICAg
ICAgICAgICAgICAgIFlBSE9PLnV0aWwuRG9tLnNldFN0eWxlKG9EaXZTZXR0aW5n
cywgJ2Rpc3BsYXknLCAnbm9uZScpOw0KICAgICAgICAgICAgfSwgdGhpcywgdHJ1
ZSk7DQogICAgICAgICAgICBvQW5pbS5hbmltYXRlKCk7DQogICAgICAgIH0gZWxz
ZSB7DQogICAgICAgICAgICAvLyBTaG93DQogICAgICAgICAgICB0aGlzLl9zZXRF
bWJlZENvZGUoKTsNCiAgICAgICAgICAgIFlBSE9PLnV0aWwuRG9tLnNldFN0eWxl
KG9EaXZTZXR0aW5ncywgJ2Rpc3BsYXknLCAnYmxvY2snKTsNCiAgICAgICAgICAg
IHZhciBvQW5pbSA9IG5ldyBZQUhPTy51dGlsLkFuaW0ob0RpdlNldHRpbmdzLCB7
aGVpZ2h0OiB7dG86IDIxfSwgcGFkZGluZ1RvcDoge3RvOiA1fX0sIDAuMSk7DQog
ICAgICAgICAgICBvQW5pbS5hbmltYXRlKCk7DQogICAgICAgIH0NCiAgICB9Ow0K
ICAgIA0KICAgIHRoaXMuX3NldEVtYmVkQ29kZSA9IGZ1bmN0aW9uKCkgew0KICAg
ICAgICB2YXIgY2hrRW1iZWREZXNjcmlwdGlvbiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjaGtFbWJlZERlc2NyaXB0aW9uJyk7DQogICAgICAgIHZhciB0eHRF
bWJlZENvZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHh0RW1iZWRDb2Rl
Jyk7DQogICAgICAgIHZhciBpVmlkZW9JRCA9IE51bWJlcihnZXRQcmVmaXhlZENs
YXNzVmFsdWUodHh0RW1iZWRDb2RlLCAndmlkZW9JRCcpKTsNCiAgICAgICAgdmFy
IGlWaWRlb1BhcnQgPSBOdW1iZXIoZ2V0UHJlZml4ZWRDbGFzc1ZhbHVlKHR4dEVt
YmVkQ29kZSwgJ3ZpZGVvUGFydCcpKTsNCiAgICAgICAgaWYgKGlWaWRlb0lEID4g
MCAmJiBjaGtFbWJlZERlc2NyaXB0aW9uLmNoZWNrZWQgIT09IHR4dEVtYmVkQ29k
ZS5fY2hlY2tlZCkgew0KICAgICAgICAgICAgdHh0RW1iZWRDb2RlLl9jaGVja2Vk
ID0gY2hrRW1iZWREZXNjcmlwdGlvbi5jaGVja2VkOw0KICAgICAgICAgICAgdHh0
RW1iZWRDb2RlLnZhbHVlID0gJ2xvYWRpbmcuLi4nOw0KICAgICAgICAgICAgaHR0
cEdldChodHRwR2V0LmJ1aWxkUG9zdFVSSSgnR2V0RW1iZWRDb2RlJywndmlkJyxp
VmlkZW9JRCwncGFydCcsaVZpZGVvUGFydCwnZGVzYycsY2hrRW1iZWREZXNjcmlw
dGlvbi5jaGVja2VkKSwge2Jhc2U6dGhpcyx0eHRFbWJlZENvZGU6dHh0RW1iZWRD
b2RlfSwgZnVuY3Rpb24ob1Jlc3VsdCxvQXJncykgew0KICAgICAgICAgICAgICAg
IGlmIChvUmVzdWx0LmVycm9yTnVtYmVyID4gMCkgew0KICAgICAgICAgICAgICAg
ICAgICBvQXJncy50eHRFbWJlZENvZGUudmFsdWUgPSBvUmVzdWx0LmVycm9yVGV4
dDsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAg
ICBvQXJncy50eHRFbWJlZENvZGUudmFsdWUgPSBvUmVzdWx0LnZhbHVlOw0KICAg
ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBvQXJncy50eHRFbWJlZENv
ZGUuc2VsZWN0KCk7DQogICAgICAgICAgICB9KTsNCiAgICAgICAgfQ0KICAgIH07
DQogICAgDQogICAgDQogICAgLy8gRmlyZWQgd2hlbiBhbiBhZG1pbiBjbGlja3Mg
YSAiTWFrZSBIb3QiIGxpbms6DQoJdGhpcy5fb25NYWtlSG90Q2xpY2sgPSBmdW5j
dGlvbigkb0V2ZW50KSB7DQoJICAgIFlBSE9PLnV0aWwuRXZlbnQucHJldmVudERl
ZmF1bHQoJG9FdmVudCk7DQoJICAgIGlmICghKHNlbGYub1BhZ2Uub0xvZ2dlZElu
VXNlci5pc0N1cmF0b3IgfHwgc2VsZi5vUGFnZS5vTG9nZ2VkSW5Vc2VyLmlzQWRt
aW4pKSByZXR1cm47DQoJICAgIA0KCSAgICB2YXIgb0xpbmsgPSBlY3YoWUFIT08u
dXRpbC5FdmVudC5nZXRUYXJnZXQoJG9FdmVudCksICdjb250ZW50QWN0aW9uTWFr
ZUhvdCcpOw0KCSAgICANCgkgICAgdmFyIGlWaWRlb0lEID0gZ2V0UHJlZml4ZWRD
bGFzc1ZhbHVlKG9MaW5rLCAndmlkZW9JRCcpOw0KCSAgICB2YXIgaUFydGljbGVJ
RCA9IGdldFByZWZpeGVkQ2xhc3NWYWx1ZShvTGluaywgJ2FydGljbGVJRCcpOw0K
CSAgICBpZiAoIWlWaWRlb0lEICYmICFpQXJ0aWNsZUlEKSByZXR1cm47DQoJICAg
IA0KCSAgICB2YXIgYlVuSG90ID0gWUFIT08udXRpbC5Eb20uaGFzQ2xhc3Mob0xp
bmssICd1bmhvdCcpOw0KCSAgICANCgkgICAgaHR0cEdldChodHRwR2V0LmJ1aWxk
UG9zdFVSSSgnTWFrZUhvdCcsJ3ZpZCcsaVZpZGVvSUQsJ2FpZCcsaUFydGljbGVJ
RCwndW5ob3QnLGJVbkhvdCksIHtiYXNlOnRoaXMsbGluazpvTGlua30sIGZ1bmN0
aW9uKG9SZXN1bHQsb0FyZ3MpIHsNCiAgICAgICAgICAgIGlmIChvUmVzdWx0LmVy
cm9yTnVtYmVyID4gMCkgew0KICAgICAgICAgICAgICAgIG9XSFRBbGVydC5zaG93
KG9SZXN1bHQuZXJyb3JUZXh0KTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAg
ICAgICAgICAgICAgdmFyIG9MaW5rVGl0bGUgPSBvQXJncy5saW5rLmdldEVsZW1l
bnRzQnlUYWdOYW1lKCdlbScpWzBdOw0KICAgICAgICAgICAgICAgIA0KICAgICAg
ICAgICAgICAgIGlmIChiVW5Ib3QpIHsNCiAgICAgICAgICAgICAgICAgICAgb1dI
VEFsZXJ0LnNob3coJ1lvdVwndmUgcmVtb3ZlZCB0aGlzIHZpZGVvIGZyb20gaG90
LlxuSXQgbWF5IHRha2UgdXAgdG8gMTUgbWludXRlcyBmb3IgaG90IHRvIHVwZGF0
ZS4nKTsNCiAgICAgICAgICAgICAgICAgICAgWUFIT08udXRpbC5Eb20ucmVtb3Zl
Q2xhc3Mob0xpbmssICd1bmhvdCcpOw0KICAgICAgICAgICAgICAgICAgICBvTGlu
a1RpdGxlLmlubmVySFRNTCA9ICdIJzsNCiAgICAgICAgICAgICAgICB9IGVsc2Ug
ew0KICAgICAgICAgICAgICAgICAgICBvV0hUQWxlcnQuc2hvdygnWW91XCd2ZSBt
YWRlIHRoaXMgdmlkZW8gaG90IVxuSXQgbWF5IHRha2UgdXAgdG8gMTUgbWludXRl
cyBmb3IgaG90IHRvIHVwZGF0ZS4nKTsNCiAgICAgICAgICAgICAgICAgICAgWUFI
T08udXRpbC5Eb20uYWRkQ2xhc3Mob0xpbmssICd1bmhvdCcpOw0KICAgICAgICAg
ICAgICAgICAgICBvTGlua1RpdGxlLmlubmVySFRNTCA9ICdVSCc7DQogICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9KTsNCgl9Ow0KCQ0K
CQ0KICAgIC8vIEZpcmVkIHdoZW4gdXNlciBjbGlja3Mgb25lIG9mIHRoZSB2aWRl
byBhY3Rpb25zLiBJZiBuZWNlc3NhcnksIGxvYWRzIHRoZSBjb250cm9sIGFuZCBk
aXNwbGF5cyBvciBoaWRlcyBpdA0KCXRoaXMuX29uVG9nZ2xlQ29udGVudEFjdGlv
bkNsaWNrID0gZnVuY3Rpb24oJG9FdmVudCkgew0KCSAgICB2YXIgb0xpbmsgPSBl
Y3YoWUFIT08udXRpbC5FdmVudC5nZXRUYXJnZXQoJG9FdmVudCksICd0b2dnbGVD
b250ZW50QWN0aW9uJyk7DQoJICAgIGlmICghb0xpbmspIHJldHVybjsNCiAgICAg
ICAgICAgIA0KCSAgICAvLyBMb2FkIHRoZSBlbGVtZW50cyBpZiB0aGV5IGhhdmVu
J3QgYmVlbiBsb2FkZWQgeWV0DQoJICAgIGlmICghdGhpcy5fYkNvbnRlbnRBY3Rp
b25zQWRkZWQpIHsNCgkgICAgICAgIC8vIERpc3BsYXkgTG9hZGluZyBzdGFyDQoJ
ICAgICAgICB2YXIgYUxvYWRpbmdDb250ZW50QWN0aW9ucyA9IFlBSE9PLnV0aWwu
RG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xvYWRpbmdWaWRlb0FjdGlvbnMn
LCAnZGl2Jyk7DQoJICAgICAgICBZQUhPTy51dGlsLkRvbS5zZXRTdHlsZShhTG9h
ZGluZ0NvbnRlbnRBY3Rpb25zLCAnZGlzcGxheScsICdibG9jaycpOw0KICAgICAg
ICAgICAgDQoJICAgICAgICB2YXIgaVZpZGVvSUQgPSBnZXRQcmVmaXhlZENsYXNz
VmFsdWUob0xpbmssICd2aWRlb0lEJyk7DQoJICAgICAgICB2YXIgaUFydGljbGVJ
RCA9IGdldFByZWZpeGVkQ2xhc3NWYWx1ZShvTGluaywgJ2FydGljbGVJRCcpOw0K
CSAgICAgICAgdmFyIHNFbGVtZW50Q2xhc3MgPSBnZXRQcmVmaXhlZENsYXNzVmFs
dWUob0xpbmssICdlbGVtZW50XycpOw0KCSAgICAgICAgDQoJICAgICAgICB0cnkg
ew0KCSAgICAgICAgICAgIC8vIExvYWQgdGhlIGZpbGUgZHluYW1pY2FsbHkNCiAg
ICAgICAgICAgICAgICBodHRwR2V0LmxvYWRTY3JpcHQoJ3ZpZGVvX2FjdGlvbnMn
LCB0cnVlKTsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAvLyBE
ZXRlcm1pbmUgd2hldGhlciB0aGUgY29udHJvbCB3aWxsIG5lZWQgdG8gaGlkZSBh
bGwgZWxlbWVudHMgYmVmb3JlIG9wZW5pbmcgYSBuZXcgb25lDQogICAgICAgICAg
ICAgICAgdmFyIGJIaWRlQWxsRmlyc3QgPSBZQUhPTy51dGlsLkRvbS5oYXNDbGFz
cyhvTGluaywgJ2hpZGVBbGxGaXJzdCcpOw0KICAgICAgICAgICAgICAgIA0KICAg
ICAgICAgICAgICAgIFlBSE9PLndodC5WaWRlb0FjdGlvbnMuaW5pdChpVmlkZW9J
RCwgaUFydGljbGVJRCwgJG9FdmVudCwgc0VsZW1lbnRDbGFzcywgYkhpZGVBbGxG
aXJzdCwgMCk7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgdGhp
cy5fYkNvbnRlbnRBY3Rpb25zQWRkZWQgPSB0cnVlOw0KICAgICAgICAgICAgfSBj
YXRjaCAoZXJyKXsgfQ0KCSAgICB9DQoJfTsNCgkNCgkNCiAgICAvLyBGaXJlZCB3
aGVuIHVzZXIgY2xpY2tzIFRodW1icyBVcCBvciBUaHVtYnMgRG93biBidXR0b25z
DQoJdGhpcy5fb25MaWtlRGlzbGlrZUNsaWNrID0gZnVuY3Rpb24oJG9FdmVudCkg
ew0KCSAgICBpZiAodGhpcy5fYkdyYWRpbmcpIHJldHVybjsNCgkgICAgdmFyIG9M
aW5rID0gZWN2KFlBSE9PLnV0aWwuRXZlbnQuZ2V0VGFyZ2V0KCRvRXZlbnQpLCAn
Y29udGVudEFjdGlvbkxpa2V8Y29udGVudEFjdGlvbkRpc2xpa2UnKTsNCgkgICAg
DQoJICAgIC8vIERvbid0IGRvIGl0IHR3aWNlDQoJICAgIGlmIChZQUhPTy51dGls
LkRvbS5oYXNDbGFzcyhvTGluaywgJ2NvbnRHcmFkZWQnKSkgcmV0dXJuOw0KCSAg
ICANCgkgICAgdmFyIGlWaWRlb0lEID0gZ2V0UHJlZml4ZWRDbGFzc1ZhbHVlKG9M
aW5rLCAndmlkZW9JRCcpOw0KCSAgICB2YXIgaUFydGljbGVJRCA9IGdldFByZWZp
eGVkQ2xhc3NWYWx1ZShvTGluaywgJ2FydGljbGVJRCcpOw0KCSAgICB2YXIgYkxp
a2UgPSBZQUhPTy51dGlsLkRvbS5oYXNDbGFzcyhvTGluaywgJ2NvbnRlbnRBY3Rp
b25MaWtlJyk7DQoJICAgIA0KCSAgICBpZiAoIW9QYWdlLm9Mb2dnZWRJblVzZXIu
aXNVc2VyKSB7DQogICAgICAgICAgICB2YXIgc0xvZ2luTWVzc2FnZSA9ICc8c3Ry
b25nPk5vdGU6PC9zdHJvbmc+IFlvdSBtdXN0IGJlIGxvZ2dlZC1pbiB0byBncmFk
ZSB2aWRlb3MuIFBsZWFzZSBsb2dpbiBvciBzaWdudXAgc28gd2UgY2FuIHNhdmUg
eW91ciBncmFkZTonOw0KICAgICAgICAgICAgb1BhZ2Uuc2hvd0xvZ2luU2lnbnVw
Rm9ybShzTG9naW5NZXNzYWdlLCAnb1BhZ2UuX3NldENvbnRlbnRHcmFkZSgnICsg
aVZpZGVvSUQgKyAnLCcgKyBpQXJ0aWNsZUlEICsgJywnICsgYkxpa2UgKyAnKTsn
KTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICANCiAg
ICAgICAgLy8gU2V0IGxvYWRpbmcNCiAgICAgICAgWUFIT08udXRpbC5Eb20uYWRk
Q2xhc3Mob0xpbmssICd3b3JraW5nJyk7DQogICAgICAgIA0KICAgICAgICB0aGlz
Ll9iR3JhZGluZyA9IHRydWU7DQogICAgICAgIHRoaXMuX3NldENvbnRlbnRHcmFk
ZShpVmlkZW9JRCwgaUFydGljbGVJRCwgYkxpa2UpOw0KCX07DQoJDQoJLy8gVE9E
TzogTW92ZSB0byB0aGUgcmlnaHQgc2VjdGlvbg0KCXRoaXMuX3NldENvbnRlbnRH
cmFkZSA9IGZ1bmN0aW9uKCRpVmlkZW9JRCwgJGlBcnRpY2xlSUQsICRiTGlrZSkg
ew0KCSAgICBodHRwR2V0KGh0dHBHZXQuYnVpbGRQb3N0VVJJKCdTZXRVc2VyV29u
ZGVyR3JhZGUnLCAndmlkJywgJGlWaWRlb0lELCAnYWlkJywgJGlBcnRpY2xlSUQs
ICdsaWtlRGlzbGlrZScsIHRydWUsICdsaWtlJywgJGJMaWtlKSwge2Jhc2U6dGhp
c30sIGZ1bmN0aW9uKG9SZXN1bHQsb0FyZ3MpIHsgICANCgkgICAgICAgIG9Bcmdz
LmJhc2UuX2JHcmFkaW5nID0gZmFsc2U7DQoJICAgICAgICANCgkgICAgICAgIC8v
IFJlbW92ZSBhbGwgIndvcmtpbmciDQoJICAgICAgICBZQUhPTy51dGlsLkRvbS5y
ZW1vdmVDbGFzcyhZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KCd3b3JraW5nJyksICd3b3JraW5nJyk7DQoJICAgIA0KICAgICAgICAgICAgLy8g
Q2hlY2sgdGhlIHJlc3BvbnNlOg0KICAgICAgICAgICAgaWYgKG9SZXN1bHQuZXJy
b3JOdW1iZXIgPiAwKSB7DQogICAgICAgICAgICAgICAgdmFyIHNNZXNzYWdlOw0K
ICAgICAgICAgICAgICAgIHN3aXRjaCAob1Jlc3VsdC5lcnJvck51bWJlcikgew0K
ICAgICAgICAgICAgICAgICAgICBjYXNlIDcxMDU6DQogICAgICAgICAgICAgICAg
ICAgICAgICBvUGFnZS5zaG93TG9naW5TaWdudXBGb3JtKG9SZXN1bHQuZXJyb3JU
ZXh0LCAnb1BhZ2UuX3NldENvbnRlbnRHcmFkZSgnICsgJGlWaWRlb0lEICsgJywn
ICsgJGlBcnRpY2xlSUQgKyAnLCcgKyAkYkxpa2UgKyAnKTsnKTsNCiAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICBjYXNl
IDcwMDE6DQogICAgICAgICAgICAgICAgICAgICAgICBvV0hUQWxlcnQuc2hvdygn
U29ycnksIGFuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZC5cbkNhbm5vdCBzZXQg
dGhlIGdyYWRlIHRvICcgKyBvUmVzdWx0LmVycm9yVGV4dCk7DQogICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dDoNCiAgICAgICAgICAgICAgICAgICAgICAgIG9XSFRBbGVydC5zaG93KG9SZXN1
bHQuZXJyb3JUZXh0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0K
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAg
ICAgICAgICAgb0FyZ3MuYmFzZS5fdXBkYXRlR3JhZGVWaWV3LmFwcGx5KG9Bcmdz
LmJhc2UsIFtvUmVzdWx0LnZhbHVlXSk7DQogICAgICAgICAgICAgICAgDQogICAg
ICAgICAgICAgICAgLy8gU2V0IGFwcHJvcHJpYXRlIGljb24gYXMgc2VsZWN0ZWQN
CiAgICAgICAgICAgICAgICBvQXJncy5iYXNlLl9zZXRHcmFkZWRMaW5rLmFwcGx5
KG9BcmdzLmJhc2UsIFskYkxpa2VdKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAg
fSk7DQoJfTsNCgkNCgkNCgkvLyBTZXRzIGFwcHJvcHJpYXZldCBpY29uIChlaXRo
ZXIgdGh1bWJzIHVwIG9yIHRodW1icyBkb3duKQ0KCXRoaXMuX3NldEdyYWRlZExp
bmsgPSBmdW5jdGlvbigkYkxpa2UpIHsNCgkgICAgLy8gQ2xlYXIgYWxsIHByZXZp
b3VzbHkgZ3JhZGVkIGNvbnRlbnQNCgkgICAgWUFIT08udXRpbC5Eb20ucmVtb3Zl
Q2xhc3MoWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnY29u
dEdyYWRlZCcpLCAnY29udEdyYWRlZCcpOw0KCSAgICANCgkgICAgdmFyIG9MaW5r
ID0gWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgoKCRiTGlr
ZSkgPyAnY29udGVudEFjdGlvbkxpa2UnIDogJ2NvbnRlbnRBY3Rpb25EaXNsaWtl
JyksICdhJyk7DQoJICAgIFlBSE9PLnV0aWwuRG9tLmFkZENsYXNzKG9MaW5rLCAn
Y29udEdyYWRlZCcpOw0KCX07DQoJDQoJDQoJLy8gVE9ETzogTW92ZSB0byB0aGUg
cmlnaHQgc2VjdGlvbg0KCS8vIFVwZGF0ZXMgU3BhbnMgd2l0aCBjb21tdW5pdHkg
Y29udGVudCBncmFkZXMNCgl0aGlzLl91cGRhdGVHcmFkZVZpZXcgPSBmdW5jdGlv
bigkc0xldHRlckdyYWRlKSB7DQoJICAgIHZhciBhR3JhZGVWaWV3cyA9IFlBSE9P
LnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2NvbnRlbnRHcmFkZScs
ICdzcGFuJyk7DQoJICAgIA0KCSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFHcmFk
ZVZpZXdzLmxlbmd0aDsgaSsrKSB7DQoJICAgICAgICBhR3JhZGVWaWV3c1tpXS5p
bm5lckhUTUwgPSAkc0xldHRlckdyYWRlLnJlcGxhY2UoL3AvLCAnKycpLnJlcGxh
Y2UoL20vLCAnLScpOw0KCSAgICB9DQoJfTsNCgkNCgkvLyAqKiogU1RBUlQgUE9S
VElORyAqKioNCgkvLyBUT0RPOiBNb3ZlIHRvIHRoZSByaWdodCBzZWN0aW9uDQoJ
Ly8gU2V0cyB2aWRlbyBhcyBmYXZvcml0ZQ0KICAgIHRoaXMuc2V0Q29udGVudEZh
dm9yaXRlID0gZnVuY3Rpb24oJGlWaWRlb0lELCAkaUFydGljbGVJRCwgJGJGYXZv
cml0ZSkgew0KICAgICAgICBpZiAodGhpcy5fZmF2b3JpdGVCdXN5KSByZXR1cm47
DQogICAgICAgIGlmICghc2VsZi5vUGFnZS5vTG9nZ2VkSW5Vc2VyLmlzVXNlcikg
ew0KICAgICAgICAgICAgdmFyIHNNZXNzYWdlID0gJzxzdHJvbmc+Tm90ZTo8L3N0
cm9uZz4gWW91IG11c3QgYmUgbG9nZ2VkIGluIHRvIHNhdmUgZmF2b3JpdGUgdmlk
ZW9zLiBQbGVhc2UgbG9naW4gb3Igc2lnbnVwIHRvIG1hcmsgdGhpcyB2aWRlbyBh
cyBhIGZhdm9yaXRlLi4uJzsNCiAgICAgICAgICAgIHNlbGYub1BhZ2Uuc2hvd0xv
Z2luU2lnbnVwRm9ybShzTWVzc2FnZSwgJ29QYWdlLnNldENvbnRlbnRGYXZvcml0
ZSgnKyRpVmlkZW9JRCsnLCcrJGlBcnRpY2xlSUQsKycsJyskYkZhdm9yaXRlKycp
OycpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgIA0K
ICAgICAgICAvLyBTZW5kIHRoZSBzZXQgZmF2b3JpdGUgcmVxdWVzdDoNCiAgICAg
ICAgdGhpcy5fZmF2b3JpdGVCdXN5ID0gdHJ1ZTsNCiAgICAgICAgaHR0cEdldCho
dHRwR2V0LmJ1aWxkUG9zdFVSSSgnU2V0Q29udGVudEFzRmF2b3JpdGUnLCAndmlk
JywgJGlWaWRlb0lELCAnYWlkJywgJGlBcnRpY2xlSUQsICdmYXYnLCAkYkZhdm9y
aXRlKSwge2Jhc2U6dGhpcyxpVmlkZW9JRDokaVZpZGVvSUQsaUFydGljbGVJRDok
aUFydGljbGVJRCxiRmF2b3JpdGU6JGJGYXZvcml0ZX0sIGZ1bmN0aW9uKG9SZXN1
bHQsb0FyZ3MpIHsNCiAgICAgICAgICAgIG9BcmdzLmJhc2UuX2Zhdm9yaXRlQnVz
eSA9IGZhbHNlOw0KICAgICAgICAgICAgLy8gQ2hlY2sgdGhlIHJlc3BvbnNlOg0K
ICAgICAgICAgICAgaWYgKG9SZXN1bHQuZXJyb3JOdW1iZXIgPiAwKSB7DQogICAg
ICAgICAgICAgICAgc3dpdGNoIChvUmVzdWx0LmVycm9yTnVtYmVyKSB7DQogICAg
ICAgICAgICAgICAgICAgIGNhc2UgNzEwNToNCiAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYub1BhZ2Uuc2hvd0xvZ2luU2lnbnVwRm9ybS5hcHBseShvQXJncy5i
YXNlLCBbb1Jlc3VsdC5lcnJvclRleHQsICdvUGFnZS5zZXRDb250ZW50RmF2b3Jp
dGUoJytvQXJncy5pVmlkZW9JRCsnLCcrb0FyZ3MuaUFydGljbGVJRCwrJywnK29B
cmdzLmJGYXZvcml0ZSsnKTsnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsNCiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAg
ICAgICAgICAgICAgIG9XSFRBbGVydC5zaG93KG9SZXN1bHQuZXJyb3JUZXh0KTsN
CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgLy8gU3Vj
Y2Vzcw0KICAgICAgICAgICAgICAgIG9BcmdzLmJhc2UuX29uU2V0Q29udGVudEZh
dm9yaXRlU3VjY2Vzcy5hcHBseShvQXJncy5iYXNlLCBbb0FyZ3MuaVZpZGVvSUQs
IG9BcmdzLmlBcnRpY2xlSUQsIG9SZXN1bHQudmFsdWVdKTsNCiAgICAgICAgICAg
ICAgICB2YXIgc0NvbnRUeXBlID0gKG9BcmdzLmlWaWRlb0lEID4gMCkgPyAndmlk
ZW8nIDogJ2FydGljbGUnOw0KICAgICAgICAgICAgICAgIGlmIChvUmVzdWx0LnZh
bHVlKSB7DQogICAgICAgICAgICAgICAgICAgIG9XSFRBbGVydC5zaG93KCdUaGlz
ICcgKyBzQ29udFR5cGUgKyAnIGhhcyBiZWVuIGFkZGVkIHRvIHlvdXIgZmF2b3Jp
dGVzLiBcbiBOb3cgeW91IGNhbiBlYXNpbHkgZ2V0IGJhY2sgdG8gaXQgZnJvbSB5
b3VyIHByb2ZpbGUuJyk7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAg
ICAgICAgICAgICAgICAgb1dIVEFsZXJ0LnNob3coJ1RoaXMgJyArIHNDb250VHlw
ZSArICcgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHlvdXIgZmF2b3JpdGVzLicpOw0K
ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQog
ICAgfTsNCgkNCgkNCgkvLyBGaXJlZCB3aGVuIHNvbWVvbmUgY2xpY2tzIGEgdG9n
Z2xlIGZhdm9yaXRlIGxpbms6DQogICAgdGhpcy5fb25TZXRGYXZvcml0ZUNsaWNr
ID0gZnVuY3Rpb24oJG9FdmVudCkgew0KICAgICAgICBZQUhPTy51dGlsLkV2ZW50
LnByZXZlbnREZWZhdWx0KCRvRXZlbnQpOw0KICAgICAgICB2YXIgb0xpbmsgPSBl
Y3YoWUFIT08udXRpbC5FdmVudC5nZXRUYXJnZXQoJG9FdmVudCksICdidG5GVnxi
dG5VTkZWJyk7DQoJCQ0KICAgICAgICB2YXIgaVZpZGVvSUQgPSBnZXRQcmVmaXhl
ZENsYXNzVmFsdWUob0xpbmssICd2aWRlb0lEJyk7DQogICAgICAgIHZhciBpQXJ0
aWNsZUlEID0gZ2V0UHJlZml4ZWRDbGFzc1ZhbHVlKG9MaW5rLCAnYXJ0aWNsZUlE
Jyk7DQogICAgICAgIGlmICghaVZpZGVvSUQgJiYgIWlBcnRpY2xlSUQpIHJldHVy
bjsNCiAgICAgICAgaWYgKFlBSE9PLnV0aWwuRG9tLmhhc0NsYXNzKG9MaW5rLCAn
YnRuRlYnKSkgew0KICAgICAgICAgICAgdGhpcy5zZXRDb250ZW50RmF2b3JpdGUo
aVZpZGVvSUQsIGlBcnRpY2xlSUQsIHRydWUpOw0KICAgICAgICB9IGVsc2UgaWYg
KFlBSE9PLnV0aWwuRG9tLmhhc0NsYXNzKG9MaW5rLCAnYnRuVU5GVicpKSB7DQog
ICAgICAgICAgICB0aGlzLnNldENvbnRlbnRGYXZvcml0ZShpVmlkZW9JRCwgaUFy
dGljbGVJRCwgZmFsc2UpOw0KICAgICAgICB9DQogICAgICAgIGlmIChvTGluay5i
bHVyKW9MaW5rLmJsdXIoKTsNCiAgICB9Ow0KICAgIA0KICAgIA0KICAgIC8vIEZp
cmVkIHdoZW4gYSBmYXZvcml0ZSBpcyBzZXQgc3VjY2Vzc2Z1bGx5Og0KICAgIHRo
aXMuX29uU2V0Q29udGVudEZhdm9yaXRlU3VjY2VzcyA9IGZ1bmN0aW9uKCRpVmlk
ZW9JRCwgJGlBcnRpY2xlSUQsICRiRmF2b3JpdGUpIHsNCiAgICAgICAgZm9yICh2
YXIgeCA9IDA7IHggPCB0aGlzLl9hRmF2b3JpdGVMaW5rcy5sZW5ndGg7IHgrKykg
ew0KICAgICAgICAgICAgaWYgKFlBSE9PLnV0aWwuRG9tLmhhc0NsYXNzKHRoaXMu
X2FGYXZvcml0ZUxpbmtzW3hdLCAndmlkZW9JRCcgKyAkaVZpZGVvSUQpIHx8IFlB
SE9PLnV0aWwuRG9tLmhhc0NsYXNzKHRoaXMuX2FGYXZvcml0ZUxpbmtzW3hdLCAn
YXJ0aWNsZUlEJyArICRpQXJ0aWNsZUlEKSkgew0KICAgICAgICAgICAgICAgIGlm
ICgkYkZhdm9yaXRlKSB7DQogICAgICAgICAgICAgICAgICAgIFlBSE9PLnV0aWwu
RG9tLnJlcGxhY2VDbGFzcyh0aGlzLl9hRmF2b3JpdGVMaW5rc1t4XSwgJ2J0bkZW
JywgJ2J0blVORlYnKTsNCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAg
ICAgICAgICAgIHRoaXMuX2FGYXZvcml0ZUxpbmtzW3hdLnNldEF0dHJpYnV0ZSgn
dGl0bGUnLCAnUmVtb3ZlIGZyb20gRmF2b3JpdGVzJyk7DQogICAgICAgICAgICAg
ICAgICAgIHRoaXMuX2FGYXZvcml0ZUxpbmtzW3hdLnNldEF0dHJpYnV0ZSgnaHJl
ZicsICdqYXZhc2NyaXB0Oi8vIFJlbW92ZSB0byBGYXZvcml0ZXMnKTsNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAg
ICAgICAgICAgaWYgKFlBSE9PLnV0aWwuRG9tLmhhc0NsYXNzKHRoaXMuX2FGYXZv
cml0ZUxpbmtzW3hdLCAnc2V0VmlkZW9GYXZvcml0ZVRleHQnKSkNCgkJCQkJew0K
CQkJCQkJdGhpcy5fYUZhdm9yaXRlTGlua3NbeF0uaW5uZXJIVE1MID0gJ1VuLUZh
dm9yaXRlJzsNCgkJCQkJfQ0KCQkJCQllbHNlDQoJCQkJCXsNCgkJCQkJCXZhciBh
RWx0cyA9IFlBSE9PLnV0aWwuRG9tLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3Nl
dFZpZGVvRmF2b3JpdGVUZXh0JywgbnVsbCwgdGhpcy5fYUZhdm9yaXRlTGlua3Nb
eF0pOw0KCQkJCQkJaWYgKGFFbHRzLmxlbmd0aCA+IDApIHsNCgkJCQkJCQlhRWx0
c1swXS5pbm5lckhUTUwgPSAnVW4tRmF2b3JpdGUnOw0KCQkJCQkJfQ0KCQkJCQl9
DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAg
WUFIT08udXRpbC5Eb20ucmVwbGFjZUNsYXNzKHRoaXMuX2FGYXZvcml0ZUxpbmtz
W3hdLCAnYnRuVU5GVicsICdidG5GVicpOw0KICAgICAgICAgICAgICAgICAgICAN
CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYUZhdm9yaXRlTGlua3NbeF0uc2V0
QXR0cmlidXRlKCd0aXRsZScsICdBZGQgdG8gRmF2b3JpdGVzJyk7DQogICAgICAg
ICAgICAgICAgICAgIHRoaXMuX2FGYXZvcml0ZUxpbmtzW3hdLnNldEF0dHJpYnV0
ZSgnaHJlZicsICdqYXZhc2NyaXB0Oi8vIEFkZCB0byBGYXZvcml0ZXMnKTsNCiAg
ICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIGlmIChZQUhP
Ty51dGlsLkRvbS5oYXNDbGFzcyh0aGlzLl9hRmF2b3JpdGVMaW5rc1t4XSwgJ3Nl
dFZpZGVvRmF2b3JpdGVUZXh0JykpIHsNCgkJCQkJCXRoaXMuX2FGYXZvcml0ZUxp
bmtzW3hdLmlubmVySFRNTCA9ICdGYXZvcml0ZSc7DQoJCQkJCX0NCgkJCQkJZWxz
ZSB7DQoJCQkJCQl2YXIgYUVsdHMgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKCdzZXRWaWRlb0Zhdm9yaXRlVGV4dCcsIG51bGwsIHRoaXMu
X2FGYXZvcml0ZUxpbmtzW3hdKTsNCgkJCQkJCWlmIChhRWx0cy5sZW5ndGggPiAw
KSB7DQoJCQkJCQkJYUVsdHNbMF0uaW5uZXJIVE1MID0gJ0Zhdm9yaXRlJzsNCgkJ
CQkJCX0NCgkJCQkJfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0N
CiAgICAgICAgfQ0KICAgICAgICAgICAgICAgIA0KICAgICAgICAvLyBBZGp1c3Qg
dmlzYmxlIHZpZEljb24gY2xhc3NlcyBmb3IgdGhpcyB2aWRlb0lEOg0KICAgICAg
ICB2YXIgYVZpZEljb25zID0gWUFIT08udXRpbC5Eb20uZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZSgndmlkQ29ybmVySWNvbicgKyAkaVZpZGVvSUQsICdzcGFuJyk7DQog
ICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgYVZpZEljb25zLmxlbmd0aDsgeCsr
KSB7DQogICAgICAgICAgICBpZiAoJGJGYXZvcml0ZSkgew0KICAgICAgICAgICAg
ICAgIGlmICghWUFIT08udXRpbC5Eb20uaGFzQ2xhc3MoYVZpZEljb25zW3hdLCAn
ZmF2JykpIFlBSE9PLnV0aWwuRG9tLmFkZENsYXNzKGFWaWRJY29uc1t4XSwgJ2Zh
dicpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBZQUhP
Ty51dGlsLkRvbS5yZW1vdmVDbGFzcyhhVmlkSWNvbnNbeF0sICdmYXYnKTsNCiAg
ICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH07DQogICAgLy8gKioqIEVORCBQ
T1JUSU5HICoqKg0KICAgIA0KCQ0KCQ0KICAgIHRoaXMuX29uTWF4TGVuZ3RoS2V5
VXAgPSBmdW5jdGlvbigkb0V2ZW50KSB7DQogICAgICAgIHZhciBvRWx0ID0gZWN2
KFlBSE9PLnV0aWwuRXZlbnQuZ2V0VGFyZ2V0KCRvRXZlbnQpLCAnbWF4TGVuZ3Ro
Jyk7DQogICAgICAgIA0KICAgICAgICAvLyBTZXQgcmVtYWluaW5nIGNoYXIgY291
bnQNCiAgICAgICAgdGhpcy5fc2V0Q2hhckxlZnQob0VsdCk7DQogICAgfTsNCiAg
ICANCiAgICANCiAgICAvLyBGaXJlZCB3aGVuIHVzZXIgcHJlc3NlcyBhIGtleSBp
biBhbiBlbGVtZW50IHdpdGggbWF4aW11bSBsZW5ndGgNCiAgICB0aGlzLl9vbk1h
eExlbmd0aEtleVByZXNzID0gZnVuY3Rpb24oJG9FdmVudCkgew0KICAgICAgICB2
YXIgb0VsdCA9IGVjdihZQUhPTy51dGlsLkV2ZW50LmdldFRhcmdldCgkb0V2ZW50
KSwgJ21heExlbmd0aCcpOw0KICAgICAgICB2YXIgaUNvZGUgPSBZQUhPTy51dGls
LkV2ZW50LmdldENoYXJDb2RlKCRvRXZlbnQpOw0KICAgICAgICANCiAgICAgICAg
Ly8gQ2FsY3VsYXRlIGFuZCBzZWUgaWYgdGhlcmUncyBzdGlsbCBzcGFjZQ0KICAg
ICAgICB2YXIgYk1heFJlYWNoZWQgPSB0aGlzLl9pc01heExlbmd0aFJlYWNoZWQo
b0VsdCk7DQoJDQogICAgICAgIC8vaWYgKGJNYXhSZWFjaGVkICYmIGlzRGF0YUNo
YXIoaUNvZGUpKSB7DQogICAgICAgIGlmIChiTWF4UmVhY2hlZCAmJg0KICAgICAg
ICAgICAgKGlDb2RlIDwgOCB8fCBpQ29kZSA+IDkpICYmIChpQ29kZSA8IDMzIHx8
IGlDb2RlID4gNDApICYmIGlDb2RlICE9IDQ2KSB7IC8vIGFsbG93ZWQgY2hhcnMg
YXJlOiBiYWNrc3BhY2UsIHRhYiwgZGVsZXRlLCBhcnJvdyBrZXlzLCBwYWdlL2Rv
YyB1cC1kb3duDQogICAgICAgICAgICBZQUhPTy51dGlsLkV2ZW50LnN0b3BFdmVu
dCgkb0V2ZW50KTsNCiAgICAgICAgfQ0KICAgIH07DQogICAgDQogICAgDQogICAg
Ly8gVXBkYXRlcyB1c2VyJ3MgYmlvDQogICAgdGhpcy5fb25TYXZlQmlvQ2xpY2sg
PSBmdW5jdGlvbigkb0V2ZW50KSB7DQogICAgICAgIGlmICh0aGlzLl9iVXBkYXRp
bmdCaW8pIHJldHVybjsNCiAgICAgICAgdGhpcy5fYlVwZGF0aW5nQmlvID0gdHJ1
ZTsNCiAgICAgICAgDQogICAgICAgIG9XSFRBbGVydC5zaG93KCdVcGRhdGluZyBC
aW8uLi4nKTsNCiAgICAgICAgDQogICAgICAgIHZhciBvTGluayA9IGVjdihZQUhP
Ty51dGlsLkV2ZW50LmdldFRhcmdldCgkb0V2ZW50KSwgJ3NhdmVVc2VyQmlvJyk7
DQogICAgICAgIA0KICAgICAgICB2YXIgb1RleHQgPSBZQUhPTy51dGlsLkRvbS5n
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd1c2VyQmlvVGV4dCcsICd0ZXh0YXJlYScp
WzBdOw0KICAgICAgICBpZiAob1RleHQpIHsNCiAgICAgICAgICAgIGh0dHBHZXQo
aHR0cEdldC5idWlsZFBvc3RVUkkoJ1VwZGF0ZVVzZXJCaW8nLCAndHh0VXNlckJp
bycsIG9UZXh0LnZhbHVlKSwgeyBiYXNlOiB0aGlzLCBsaW5rOiBvTGluayB9LCBm
dW5jdGlvbihvUmVzdWx0LCBvQXJncyl7DQoJCQlvQXJncy5iYXNlLl9iVXBkYXRp
bmdCaW8gPSBmYWxzZTsNCgkJCSAgICBpZiAob1Jlc3VsdC5lcnJvck51bWJlciA+
IDApIHsNCgkJCSAgICAgICAgb1dIVEFsZXJ0LnNob3coIlNvcnJ5LCBhbiB1bmV4
cGVjdGVkIGVycm9yIG9jY3VyZWQuXG4iICsgb1Jlc3VsdC5lcnJvclRleHQpOw0K
CQkJICAgIH0NCgkJCSAgICBlbHNlIHsNCgkJCSAgICAgICAgcmVmcmVzaCgpOw0K
CQkJICAgIH0NCgkJCX0pOw0KICAgICAgICB9DQogICAgfTsNCiAgICANCiAgICAN
CiAgICAvLyBGaXJlZCB3aGVuIHVzZXIgYXR0ZW1wdHMgdG8gdmVyaWZ5IGNvbnRl
bnQNCiAgICB0aGlzLl9vblZlcmlmeUNvbnRlbnRDbGljayA9IGZ1bmN0aW9uKCRv
RXZlbnQpIHsNCiAgICAgICAgaWYgKCF0aGlzLm9Mb2dnZWRJblVzZXIuaXNVc2Vy
KSB7DQogICAgICAgICAgICB0aGlzLnNob3dMb2dpblNpZ251cEZvcm0oJ1BsZWFz
ZSBsb2dpbiB0byBjb250aW51ZS4nKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAg
ICAgICAgaWYgKHRoaXMuX2JWZXJpZnlpbmdDb250ZW50KSByZXR1cm47DQogICAg
ICAgIHRoaXMuX2JWZXJpZnlpbmdDb250ZW50ID0gdHJ1ZTsNCiAgICAgICAgDQog
ICAgICAgIHZhciBvTGluayA9IGVjdihZQUhPTy51dGlsLkV2ZW50LmdldFRhcmdl
dCgkb0V2ZW50KSwgJ3ZlcmlmeUNsYWltZWRDb250ZW50Jyk7DQogICAgICAgIHZh
ciBpQXJ0aWNsZUlEID0gZ2V0UHJlZml4ZWRDbGFzc1ZhbHVlKG9MaW5rLCAnYWlk
Jyk7DQogICAgICAgIHZhciBpVmlkZW9JRCA9IGdldFByZWZpeGVkQ2xhc3NWYWx1
ZShvTGluaywgJ3ZpZCcpOw0KICAgICAgICANCiAgICAgICAgaHR0cEdldChodHRw
R2V0LmJ1aWxkUG9zdFVSSSgnQ2xhaW1Db250ZW50JywgJ2FpZCcsIGlBcnRpY2xl
SUQsICd2aWQnLCBpVmlkZW9JRCksIHsgYmFzZTogdGhpcyB9LCBmdW5jdGlvbihv
UmVzdWx0LCBvQXJncyl7DQoJCQlvQXJncy5iYXNlLl9iVmVyaWZ5aW5nQ29udGVu
dCA9IGZhbHNlOw0KCQkJaWYgKG9SZXN1bHQuZXJyb3JOdW1iZXIgPiAwKSB7DQoJ
CQkgICAgLy8gTm90aWZ5IG9mIGVycm9yDQoJCQkgICAgc3dpdGNoIChvUmVzdWx0
LmVycm9yTnVtYmVyKSB7DQoJCQkgICAgICAgIGNhc2UgNzIwNDogLy8gVmlkZW9T
dWJtaXR0ZXJWZXJpZmllZA0KCQkJICAgICAgICBjYXNlIDcyMDU6IC8vIFZpZGVv
Tm90VmVyaWZpZWQNCgkJCSAgICAgICAgICAgIG9XSFRBbGVydC5zaG93KG9SZXN1
bHQuZXJyb3JUZXh0KTsNCgkJCSAgICAgICAgICAgIGJyZWFrOw0KCQkJICAgICAg
ICBkZWZhdWx0Og0KCQkJICAgICAgICAgICAgb1dIVEFsZXJ0LnNob3coIlNvcnJ5
LCBhbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQuXG4iICsgb1Jlc3VsdC5lcnJv
clRleHQpOw0KCQkJICAgICAgICAgICAgYnJlYWs7DQoJCQkgICAgfQ0KCQkJfQ0K
CQkJZWxzZSB7DQoJCQkgICAgcmVmcmVzaCgpOw0KCQkJfQ0KCQl9KTsNCiAgICB9
Ow0KICAgIA0KICAgIA0KICAgIC8vIEZpcmVkIHdoZW4gdXNlciBjbGlja3MgdG8g
ZXhwYW5kL2NvbnRyYWN0IENsYWltIENvbnRlbnQgZWxlbWVudA0KICAgIHRoaXMu
X29uVG9nZ2xlQ2xhaW1Db250ZW50Q2xpY2sgPSBmdW5jdGlvbigkb0V2ZW50KSB7
DQogICAgICAgIHZhciBvTGluayA9IGVjdihZQUhPTy51dGlsLkV2ZW50LmdldFRh
cmdldCgkb0V2ZW50LCAnY2xhaW1Db250ZW50TGluaycpKTsNCiAgICAgICAgdmFy
IG9QYXJlbnQgPSBZQUhPTy51dGlsLkRvbS5nZXRBbmNlc3RvckJ5Q2xhc3NOYW1l
KG9MaW5rLCAnY2xhaW1Db250ZW50Jyk7DQogICAgICAgIHZhciBvQ29udGVudEJv
ZHkgPSBZQUhPTy51dGlsLkRvbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjbGFp
bUNvbnRlbnRCb2R5JywgJ2RpdicsIG9QYXJlbnQpWzBdOw0KICAgICAgICBpZiAo
b0NvbnRlbnRCb2R5KSB7DQogICAgICAgICAgICBpZiAoWUFIT08udXRpbC5Eb20u
Z2V0U3R5bGUob0NvbnRlbnRCb2R5LCAnZGlzcGxheScpID09ICdub25lJykgew0K
ICAgICAgICAgICAgICAgIHRoaXMuX3NDbGFpbUNvbnRlbnRMaW5rVGV4dCA9IG9M
aW5rLmlubmVySFRNTDsNCiAgICAgICAgICAgICAgICBvTGluay5pbm5lckhUTUwg
PSAnaGlkZSc7DQogICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgWUFI
T08udXRpbC5Eb20uc2V0U3R5bGUob0NvbnRlbnRCb2R5LCAnZGlzcGxheScsICdi
bG9jaycpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAg
ICAgICAgICAgICAgaWYgKHRoaXMuX3NDbGFpbUNvbnRlbnRMaW5rVGV4dCkgew0K
ICAgICAgICAgICAgICAgICAgICBvTGluay5pbm5lckhUTUwgPSB0aGlzLl9zQ2xh
aW1Db250ZW50TGlua1RleHQ7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBvTGluay5pbm5lckhU
TUwgPSAnQ2xhaW0gVGhpcyc7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAg
ICAgICAgIA0KICAgICAgICAgICAgICAgIFlBSE9PLnV0aWwuRG9tLnNldFN0eWxl
KG9Db250ZW50Qm9keSwgJ2Rpc3BsYXknLCAnbm9uZScpOw0KICAgICAgICAgICAg
fQ0KICAgICAgICB9DQogICAgfTsNCiAgICANCiAgICANCiAgICAvLyBQaW5ncyB0
aGUgc2VydmVyIHRvIGtlZXAgdGhlIHNlc3Npb24gYWxpdmUgJiB1cGRhdGVzIHRo
ZSB2aWV3IGR1cmF0aW9uIGZvciBhbnkgY3VycmVudGx5IG9wZW4gdmlkZW8uDQog
ICAgdGhpcy5fa2VlcEFsaXZlID0gZnVuY3Rpb24oJGJTeW5jaCwgJGJQb3B1cEJs
b2NrZWQpIHsNCiAgICAgICAgdmFyIGlWVklEID0gKCF3aW5kb3cub1ZpZGVvUGFn
ZSB8fCB3aW5kb3cub1ZpZGVvUGFnZS5fb09wZW5WaWRlb1RyYWNrZXIgPT0gbnVs
bCkgPyB3aW5kb3cub1BhZ2UuX2lWVklEIDogd2luZG93Lm9WaWRlb1BhZ2UuX29P
cGVuVmlkZW9UcmFja2VyLnZpZGVvVmlld0lEOw0KICAgICAgICB2YXIgYUFWSURz
ID0gKCFZQUhPTy53aHQuZG9jWCB8fCAhWUFIT08ud2h0LmRvY1guQXJ0aWNsZVBh
Z2UpID8gbmV3IEFycmF5KCkgOiBZQUhPTy53aHQuZG9jWC5BcnRpY2xlUGFnZS5n
ZXRBcnRpY2VWaWV3SURzKCk7DQogICAgICAgIHZhciBzQVZJRHMgPSBhQVZJRHMu
am9pbignLCcpOw0KICAgICAgICANCiAgICAgICAgJGJQb3B1cEJsb2NrZWQgPSAo
JGJQb3B1cEJsb2NrZWQgPT0gdHJ1ZSkgPyB0cnVlIDogZmFsc2U7DQogICAgICAg
IGlmICgoaVZWSUQgPT0gLTEgfHwgaVZWSUQgPT0gbnVsbCkgJiYgKHRoaXMuX25v
S2VlcEFsaXZlKSkgcmV0dXJuOw0KICAgICAgICBodHRwR2V0KGh0dHBHZXQuYnVp
bGRQb3N0VVJJKCdLZWVwQWxpdmUnLCd2dmlkJyxpVlZJRCwncG9wJywkYlBvcHVw
QmxvY2tlZCwnYXZpZHMnLHNBVklEcykse30saHR0cEdldC5kb05vdGhpbmcsJGJT
eW5jaCk7DQogICAgfTsNCiAgICANCiAgICANCiAgICAvLyBGaXJlZCB3aGVuIGEg
bG9nb3V0IHJlcXVlc3QgaXMgc3VjY2Vzc2Z1bGw6DQogICAgdGhpcy5fb25Mb2dv
dXRTdWNjZXNzID0gZnVuY3Rpb24oJG9Mb2dnZWRJblVzZXIpIHsNCiAgICAgICAg
ZGVsZXRlQ29va2llKCdxREpXRjlCQ3UvdUM3SVhjRnFke0AxMkB9ZkF+ficpOw0K
ICAgICAgICB0aGlzLnVwZGF0ZUxvZ2dlZEluVXNlcigkb0xvZ2dlZEluVXNlcik7
DQogICAgfTsNCiAgICANCiAgICANCiAgICAvLyBGaXJlZCB3aGVuIHNvbWVvbmUg
Y2xpY2tzIGEgdG9nZ2xlIHBsYXlsaXN0IHByaXZhdGUgbGluazoNCiAgICB0aGlz
Ll9vblNldFBsYXlsaXN0UHJpdmF0ZUNsaWNrID0gZnVuY3Rpb24oJG9FdmVudCkg
ew0KICAgICAgICBZQUhPTy51dGlsLkV2ZW50LnByZXZlbnREZWZhdWx0KCRvRXZl
bnQpOw0KICAgICAgICB2YXIgb0xpbmsgPSBZQUhPTy51dGlsLkV2ZW50LmdldFRh
cmdldCgkb0V2ZW50KTsNCiAgICAgICAgdmFyIGlQbGF5bGlzdElEID0gZ2V0UHJl
Zml4ZWRDbGFzc1ZhbHVlKG9MaW5rLCAncGxheWxpc3RJRCcpOw0KICAgICAgICBp
ZiAoaVBsYXlsaXN0SUQgPT0gbnVsbCkgcmV0dXJuOw0KICAgICAgICBpZiAoWUFI
T08udXRpbC5Eb20uaGFzQ2xhc3Mob0xpbmssICdhY3Rpb25QbGF5bGlzdFByaXZh
dGUnKSkgew0KICAgICAgICAgICAgdGhpcy5zZXRQbGF5bGlzdFByaXZhdGUoaVBs
YXlsaXN0SUQsIHRydWUpOw0KICAgICAgICB9IGVsc2UgaWYgKFlBSE9PLnV0aWwu
RG9tLmhhc0NsYXNzKG9MaW5rLCAnYWN0aW9uUGxheWxpc3RQdWJsaWMnKSkgew0K
ICAgICAgICAgICAgdGhpcy5zZXRQbGF5bGlzdFByaXZhdGUoaVBsYXlsaXN0SUQs
IGZhbHNlKTsNCiAgICAgICAgfQ0KICAgIH07DQogICAgDQogICAgDQogICAgLy8g
RmlyZWQgd2hlbiBzb21lb25lIGNsaWNrcyBhIHBsYXlsaXN0IHN1YnNjcmliZSBs
aW5rOg0KICAgIHRoaXMuX29uUGxheWxpc3RTdWJzY3JpYmVDbGljayA9IGZ1bmN0
aW9uKCRvRXZlbnQpIHsNCiAgICAgICAgWUFIT08udXRpbC5FdmVudC5wcmV2ZW50
RGVmYXVsdCgkb0V2ZW50KTsNCiAgICAgICAgdmFyIG9MaW5rID0gWUFIT08udXRp
bC5FdmVudC5nZXRUYXJnZXQoJG9FdmVudCk7DQogICAgICAgIHZhciBpUGxheWxp
c3RJRCA9IGdldFByZWZpeGVkQ2xhc3NWYWx1ZShvTGluaywgJ3BsYXlsaXN0SUQn
KTsNCiAgICAgICAgaWYgKGlQbGF5bGlzdElEID09IG51bGwpIHJldHVybjsNCiAg
ICAgICAgaWYgKFlBSE9PLnV0aWwuRG9tLmhhc0NsYXNzKG9MaW5rLCAnYWN0aW9u
UGxheWxpc3RTdWJzY3JpYmUnKSkgew0KICAgICAgICAgICAgdGhpcy5zdWJzY3Jp
YmVUb1BsYXlsaXN0KGlQbGF5bGlzdElELCB0cnVlKTsNCiAgICAgICAgfSBlbHNl
IGlmIChZQUhPTy51dGlsLkRvbS5oYXNDbGFzcyhvTGluaywgJ2FjdGlvblBsYXls
aXN0VW5zdWJzY3JpYmUnKSkgew0KICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVU
b1BsYXlsaXN0KGlQbGF5bGlzdElELCBmYWxzZSk7DQogICAgICAgIH0NCiAgICB9
Ow0KICAgIA0KICAgIA0KICAgIC8vIEZpcmVkIHdoZW4gc29tZW9uZSBjbGlja3Mg
YSBmb2xsb3cvdW5mb2xsb3cgbGluazoNCiAgICB0aGlzLl9vbkZvbGxvd1RvZ2ds
ZUNsaWNrID0gZnVuY3Rpb24oJG9FdmVudCkgew0KICAgICAgICBZQUhPTy51dGls
LkV2ZW50LnByZXZlbnREZWZhdWx0KCRvRXZlbnQpOw0KICAgICAgICB2YXIgb0xp
bmsgPSBlY3YoWUFIT08udXRpbC5FdmVudC5nZXRUYXJnZXQoJG9FdmVudCksICco
YWN0aW9uRm9sbG93fGFjdGlvblVuZm9sbG93KScpOw0KICAgICAgICB2YXIgaVVz
ZXJJRCA9IGdldFByZWZpeGVkQ2xhc3NWYWx1ZShvTGluaywgJ3VzZXJJRCcpOw0K
ICAgICAgICBpZiAoaVVzZXJJRCA9PSBudWxsKSByZXR1cm47DQogICAgICAgIGlm
IChZQUhPTy51dGlsLkRvbS5oYXNDbGFzcyhvTGluaywgJ2FjdGlvbkZvbGxvdycp
KSB7DQogICAgICAgICAgICB0aGlzLmZvbGxvd1VzZXIoaVVzZXJJRCwgdHJ1ZSk7
DQogICAgICAgIH0gZWxzZSBpZiAoWUFIT08udXRpbC5Eb20uaGFzQ2xhc3Mob0xp
bmssICdhY3Rpb25VbmZvbGxvdycpKSB7DQogICAgICAgICAgICB0aGlzLmZvbGxv
d1VzZXIoaVVzZXJJRCwgZmFsc2UpOw0KICAgICAgICB9DQogICAgfTsNCiAgICAN
CiAgICANCiAgICAvLyBGaXJlZCB3aGVuIHNvbWVvbmUgY2xpY2tzIGEgZGVsZXRl
IHBsYXlsaXN0IGxpbms6DQogICAgdGhpcy5fb25EZWxldGVQbGF5bGlzdENsaWNr
ID0gZnVuY3Rpb24oJG9FdmVudCkgew0KICAgICAgICBpZiAodGhpcy5fYkRlbGV0
ZVBsYXlsaXN0QnVzeSkgcmV0dXJuOw0KICAgICAgICBpZiAoIXRoaXMub0xvZ2dl
ZEluVXNlci5pc1VzZXIpIHsNCiAgICAgICAgICAgIHRoaXMuc2hvd0xvZ2luU2ln
bnVwRm9ybSgnUGxlYXNlIGxvZ2luIGFzIHRoaXMgcGxheWxpc3RcJ3Mgb3duZXIg
dG8gZGVsZXRlIGl0LicpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9
DQogICAgICAgIGlmICghY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRv
IGRlbGV0ZSB0aGlzIHBsYXlsaXN0PycpKSByZXR1cm47DQogICAgICAgIA0KICAg
ICAgICB2YXIgb0xpbmsgPSBlY3YoWUFIT08udXRpbC5FdmVudC5nZXRUYXJnZXQo
JG9FdmVudCksICdhY3Rpb25EZWxldGVQbGF5bGlzdCcpOw0KICAgICAgICB2YXIg
aVBsYXlsaXN0SUQgPSBnZXRQcmVmaXhlZENsYXNzVmFsdWUob0xpbmssICdwbGF5
bGlzdElEJyk7DQogICAgICAgIA0KICAgICAgICB0aGlzLl9iRGVsZXRlUGxheWxp
c3RCdXN5ID0gdHJ1ZTsNCiAgICAgICAgaHR0cEdldChodHRwR2V0LmJ1aWxkUG9z
dFVSSSgnRGVsZXRlUGxheWxpc3QnLCAnaWQnLCBpUGxheWxpc3RJRCksIHtiYXNl
OnRoaXN9LCBmdW5jdGlvbihvUmVzdWx0LG9BcmdzKSB7DQogICAgICAgICAgICBv
QXJncy5iYXNlLl9iRGVsZXRlUGxheWxpc3RCdXN5ID0gZmFsc2U7DQogICAgICAg
ICAgICAvLyBDaGVjayB0aGUgcmVzcG9uc2U6DQogICAgICAgICAgICBpZiAob1Jl
c3VsdC5lcnJvck51bWJlciA+IDApIHsNCiAgICAgICAgICAgICAgICBvV0hUQWxl
cnQuc2hvdyhvUmVzdWx0LmVycm9yVGV4dCk7DQogICAgICAgICAgICB9IGVsc2Ug
ew0KICAgICAgICAgICAgICAgIC8vIFN1Y2Nlc3MNCiAgICAgICAgICAgICAgICBu
YXZpZ2F0ZVRvKCcvY29tbXVuaXR5L21lbWJlci8nICsgb0FyZ3MuYmFzZS5vTG9n
Z2VkSW5Vc2VyLnVzZXJOYW1lICsgJy9wbGF5bGlzdHMvJyk7DQogICAgICAgICAg
ICB9DQogICAgICAgIH0pOw0KICAgIH07DQogICAgDQogICAgDQogICAgLy8gRmly
ZWQgd2hlbiBzb21lb25lIGNsaWNrcyBhIHByb21vdGUgcGxheWxpc3QgbGluazoN
CiAgICB0aGlzLl9vblByb21vdGVQbGF5bGlzdENsaWNrID0gZnVuY3Rpb24oJG9F
dmVudCkgew0KICAgICAgICBpZiAodGhpcy5fYlByb21vdGVQbGF5bGlzdEJ1c3kp
IHJldHVybjsNCiAgICAgICAgaWYgKCEodGhpcy5vTG9nZ2VkSW5Vc2VyLmlzVXNl
ciAmJiB0aGlzLm9Mb2dnZWRJblVzZXIuaXNBZG1pbikpIHJldHVybjsNCiAgICAg
ICAgaWYgKCFjb25maXJtKCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcHJvbW90
ZSB0aGlzIHBsYXlsaXN0IHRvIGJlY29tZSBhIFdvbmRlckxpc3Q/IEEgY29weSB3
aWxsIGJlIG1hZGUgaW5zdGFudGx5Li4uJykpIHJldHVybjsNCiAgICAgICAgDQog
ICAgICAgIHZhciBvTGluayA9IGVjdihZQUhPTy51dGlsLkV2ZW50LmdldFRhcmdl
dCgkb0V2ZW50KSwgJ2FjdGlvblByb21vdGVQbGF5bGlzdCcpOw0KICAgICAgICB2
YXIgaVBsYXlsaXN0SUQgPSBnZXRQcmVmaXhlZENsYXNzVmFsdWUob0xpbmssICdw
bGF5bGlzdElEJyk7DQogICAgICAgIA0KICAgICAgICB0aGlzLl9iUHJvbW90ZVBs
YXlsaXN0QnVzeSA9IHRydWU7DQogICAgICAgIGh0dHBHZXQoaHR0cEdldC5idWls
ZFBvc3RVUkkoJ1Byb21vdGVQbGF5bGlzdCcsICdpZCcsIGlQbGF5bGlzdElEKSwg
e2Jhc2U6dGhpc30sIGZ1bmN0aW9uKG9SZXN1bHQsb0FyZ3MpIHsNCiAgICAgICAg
ICAgIG9BcmdzLmJhc2UuX2JQcm9tb3RlUGxheWxpc3RCdXN5ID0gZmFsc2U7DQog
ICAgICAgICAgICAvLyBDaGVjayB0aGUgcmVzcG9uc2U6DQogICAgICAgICAgICBp
ZiAob1Jlc3VsdC5lcnJvck51bWJlciA+IDApIHsNCiAgICAgICAgICAgICAgICBv
V0hUQWxlcnQuc2hvdyhvUmVzdWx0LmVycm9yVGV4dCk7DQogICAgICAgICAgICB9
IGVsc2Ugew0KICAgICAgICAgICAgICAgIC8vIFN1Y2Nlc3MNCiAgICAgICAgICAg
ICAgICBuYXZpZ2F0ZVRvKCcvY29tbXVuaXR5L3dvbmRlcmxpc3RzLycgKyBvUmVz
dWx0LnZhbHVlLnVybE5hbWUgKyAnLycpOw0KICAgICAgICAgICAgfQ0KICAgICAg
ICB9KTsNCiAgICB9Ow0KICAgIA0KICAgIA0KICAgIC8vIEZpcmVkIHdoZW4gc29t
ZW9uZSBjbGlja3Mgb24gYSBjb252ZXJzYXRpb246DQogICAgdGhpcy5fb25Db252
ZXJzYXRpb25MaW5rQ2xpY2sgPSBmdW5jdGlvbigkb0V2ZW50KSB7DQogICAgICAg
IGlmICghdGhpcy5vTG9nZ2VkSW5Vc2VyLmlzVXNlcikgcmV0dXJuOw0KICAgICAg
ICB2YXIgb0xpbmsgPSBlY3YoWUFIT08udXRpbC5FdmVudC5nZXRUYXJnZXQoJG9F
dmVudCksICdjb252ZXJzYXRpb24nKTsNCiAgICAgICAgdmFyIGlDb252ZXJzYXRp
b25JRCA9IGdldFByZWZpeGVkQ2xhc3NWYWx1ZShvTGluaywgJ0NvbnZlcnNhdGlv
bklEJyk7DQogICAgICAgIGlmIChpQ29udmVyc2F0aW9uSUQgPiAwKSB7DQogICAg
ICAgICAgICBuYXZpZ2F0ZVRvKCcvY29tbXVuaXR5L21lbWJlci8nK3RoaXMub0xv
Z2dlZEluVXNlci51c2VyTmFtZSsnL2NvbnZlcnNhdGlvbi8nK2lDb252ZXJzYXRp
b25JRCsnLycpOw0KICAgICAgICB9DQogICAgfTsNCiAgICANCiAgICANCiAgICAv
LyBGaXJlZCB3aGVuIHNvbWVvbmUgY2xpY2tzIGEgIm1hcmsgYXMgdW5yZWFkIiBs
aW5rOg0KICAgIHRoaXMuX29uVW5yZWFkTWVzc2FnZUNsaWNrID0gZnVuY3Rpb24o
JG9FdmVudCkgew0KICAgICAgICB2YXIgb0xpbmsgPSBlY3YoWUFIT08udXRpbC5F
dmVudC5nZXRUYXJnZXQoJG9FdmVudCksICdhY3Rpb25NYXJrQ29udmVyc2F0aW9u
QXNVbnJlYWQnKTsNCiAgICAgICAgdmFyIGlDb252ZXJzYXRpb25JRCA9IGdldFBy
ZWZpeGVkQ2xhc3NWYWx1ZShvTGluaywgJ0NvbnZlcnNhdGlvbklEJyk7DQogICAg
ICAgIHZhciBpTWVzc2FnZUlEID0gZ2V0UHJlZml4ZWRDbGFzc1ZhbHVlKG9MaW5r
LCAnbWVzc2FnZUlEJyk7DQogICAgICAgIA0KICAgICAgICAvLyBBZGQgdGhlIHVu
UmVhZCBjbGFzcyB0byB0aGUgY29udmVyc2F0aW9uLCBmbGFnIGl0IGFzIG5ldywg
JiBoaWRlIHRoZSBsaW5rOg0KICAgICAgICB2YXIgb01lc3NhZ2UgPSBZQUhPTy51
dGlsLkRvbS5nZXRBbmNlc3RvckJ5Q2xhc3NOYW1lKG9MaW5rLCAnbWVzc2FnZScp
Ow0KICAgICAgICB2YXIgb01lc3NhZ2VTdGF0dXMgPSBZQUhPTy51dGlsLkRvbS5n
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdtZXNzYWdlU3RhdHVzJywgJ2RpdicsIG9N
ZXNzYWdlKVswXTsNCiAgICAgICAgWUFIT08udXRpbC5Eb20ucmVwbGFjZUNsYXNz
KG9NZXNzYWdlU3RhdHVzLCAnbWVzc2FnZUlzUmVhZCcsICdtZXNzYWdlTmV3Jyk7
DQogICAgICAgIFlBSE9PLnV0aWwuRG9tLmFkZENsYXNzKG9NZXNzYWdlLCAndW5S
ZWFkJyk7DQogICAgICAgIG9MaW5rLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQog
ICAgICAgIA0KICAgICAgICBodHRwR2V0KGh0dHBHZXQuYnVpbGRQb3N0VVJJKCdN
YXJrTWVzc2FnZUFzVW5yZWFkJywgJ21pZCcsIGlNZXNzYWdlSUQpLCB7YmFzZTp0
aGlzfSwgZnVuY3Rpb24ob1Jlc3VsdCxvQXJncykgew0KICAgICAgICAgICAgLy8g
Q2hlY2sgdGhlIHJlc3BvbnNlOg0KICAgICAgICAgICAgaWYgKG9SZXN1bHQuZXJy
b3JOdW1iZXIgPiAwKSB7DQogICAgICAgICAgICAgICAgIHdpbmRvdy5zdGF0dXMg
PSBvUmVzdWx0LmVycm9yVGV4dDsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAg
ICAgICAgICAgICAgLy8gU3VjY2Vzcy4gRG8gbm90aGluZy4NCiAgICAgICAgICAg
IH0NCiAgICAgICAgfSk7DQogICAgfTsNCiAgICANCiAgICANCiAgICAvLyBGaXJl
ZCB3aGVuIHNvbWVvbmUgY2xpY2tzIGRlbGV0ZToNCiAgICB0aGlzLl9vbkRlbGV0
ZU1lc3NhZ2VDbGljayA9IGZ1bmN0aW9uKCRvRXZlbnQpIHsNCiAgICAgICAgaWYg
KHRoaXMuX2JEZWxldGVNZXNzYWdlQnVzeSkgcmV0dXJuOw0KICAgICAgICB2YXIg
b0xpbmsgPSBlY3YoWUFIT08udXRpbC5FdmVudC5nZXRUYXJnZXQoJG9FdmVudCks
ICdhY3Rpb25EZWxldGVDb252ZXJzYXRpb258YWN0aW9uRGVsZXRlTWVzc2FnZScp
Ow0KICAgICAgICB2YXIgaUNvbnZlcnNhdGlvbklEID0gZ2V0UHJlZml4ZWRDbGFz
c1ZhbHVlKG9MaW5rLCAnQ29udmVyc2F0aW9uSUQnKTsNCiAgICAgICAgdmFyIGlN
ZXNzYWdlSUQgPSBnZXRQcmVmaXhlZENsYXNzVmFsdWUob0xpbmssICdtZXNzYWdl
SUQnKTsNCiAgICAgICAgDQogICAgICAgIGlmIChpQ29udmVyc2F0aW9uSUQgPiAw
ICYmIFlBSE9PLnV0aWwuRG9tLmhhc0NsYXNzKG9MaW5rLCAnYWN0aW9uRGVsZXRl
Q29udmVyc2F0aW9uJykpIHsNCiAgICAgICAgICAgIGlmICghY29uZmlybSgnQXJl
IHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBhbGwgdGhlIG1lc3NhZ2VzIGlu
IHRoaXMgY29udmVyc2F0aW9uPycpKSByZXR1cm47DQogICAgICAgIH0gZWxzZSBp
ZiAoaU1lc3NhZ2VJRCA+IDAgJiYgWUFIT08udXRpbC5Eb20uaGFzQ2xhc3Mob0xp
bmssICdhY3Rpb25EZWxldGVNZXNzYWdlJykpIHsNCiAgICAgICAgICAgIGlmICgh
Y29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIG1l
c3NhZ2U/JykpIHJldHVybjsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAg
IHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgdGhpcy5fYkRl
bGV0ZU1lc3NhZ2VCdXN5ID0gdHJ1ZTsNCiAgICAgICAgaHR0cEdldChodHRwR2V0
LmJ1aWxkUG9zdFVSSSgnRGVsZXRlTWVzc2FnZScsICdjaWQnLCBpQ29udmVyc2F0
aW9uSUQsICdtaWQnLCBpTWVzc2FnZUlEKSwge2Jhc2U6dGhpcyxpTWVzc2FnZUlE
OmlNZXNzYWdlSUR9LCBmdW5jdGlvbihvUmVzdWx0LG9BcmdzKSB7DQogICAgICAg
ICAgICBvQXJncy5iYXNlLl9iRGVsZXRlTWVzc