delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2003/08/06/12:54:52

Date: Wed, 6 Aug 2003 12:54:47 -0400
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
From: strujeque <strujeque AT grupoado DOT com DOT mx>
To: cygwin AT cygwin DOT com
Subject: Parent.SetFinish(1)
MIME-Version: 1.0
Message-ID: <MDAEMON-F200308061151.AA5127225md50000000241@grupoado.com.mx>
Note-from-DJ: This may be spam

--Tnb22epso009Aszg054KI90x3jeE3
Content-Type: text/plain

****************************** ADVERTENCIA*******************************
Este mensaje ha sido analizado por MDaemon AntiVirus and se encontró
que contiene adjuntos infectados.  Revise la lista de abajo.

Adjunto                    Nombre del virus               Acción realizada
----------------------------------------------------------------------
cf548920905.att               Exploit.IFrame.FileDownloadRemoved
pHeader.pif                   I-Worm.Klez.h            Removed


**********************************************************************


--Tnb22epso009Aszg054KI90x3jeE3
Content-Type: application/octet-stream;
	name=header[1].htm
Content-Transfer-Encoding: base64
Content-ID: <Ugv793Xk59K7oIZ862F>

PEhUTUw+CjxIRUFEPgo8VElUTEU+IENvbmV4aSZvYWN1dGU7biBQZXJzb25hbCA8L1RJVExF
Pgo8TUVUQSBIVFRQLUVRVUlWPSJQcmFnbWEiICBDT05URU5UPSJuby1jYWNoZSI+CjwvSEVB
RD4KPEJPRFkgQkdDT0xPUj13aGl0ZSBURVhUPWJsYWNrPgo8QlI+CjxUQUJMRSBCT1JERVI9
MD4KIDxUUj4KIDxURCB2YWxpZ249bWlkZGxlIGFsaWduPWNlbnRlcj48SU1HIFNSQz0iL2Nv
bnBlci9pbWFnZW5lcy9jb25leF9vay5qcGciPjwvVEQ+CiA8L1RSPgo8L1RBQkxFPiA8L0JS
PgoKPFNDUklQVD4KCnZhciBUTzsKdmFyIEFjY0ltcD0wOwp2YXIgQWNjQ2xpPTA7CkRlc1Rp
dD0wOwoKZnVuY3Rpb24gdGl0dWxvSFRNTCh0aXR1bG8sIGRvY3VtZW50bykKewlkb2N1bWVu
dG8ud3JpdGVsbignPEZPTlQgU0laRT0zIENPTE9SPSIjMDAwMDAwIiBGQUNFPSJIRUxWRVRJ
Q0EiPjxCPicgKyB0aXR1bG8gKyAnPC9CPjwvRk9OVD4nKTsKCXJldHVybjsKfQoKZnVuY3Rp
b24gdGl0dWxvMkhUTUwodGl0dWxvLCBpbmRpY2UpCnsJZG9jdW1lbnRvLndyaXRlbG4oJzxG
T05UIFNJWkU9MiBDT0xPUj0iIzAwMDAwMCIgRkFDRT0iSEVMVkVUSUNBIj48Qj4nICsgdGl0
dWxvICsgJzwvQj48L0ZPTlQ+Jyk7CglyZXR1cm47Cn0KCmZ1bmN0aW9uIGxpZ2EodGl0dWxv
KQp7CXRleHRvID0gJzxGT05UIFNJWkU9MSBDT0xPUj1cIiMyMTIxRkZcIiBGQUNFPVwiSEVM
VkVUSUNBXCI+PEI+JyArIHRpdHVsbyArICc8L0I+PC9GT05UPic7CglyZXR1cm4gdGV4dG87
Cn0KCmZ1bmN0aW9uIGxpZ2EyKHRpdHVsbykKewl0ZXh0byA9ICc8Rk9OVCBTSVpFPTIgQ09M
T1I9XCIjMjEyMUZGXCIgRkFDRT1cIkhFTFZFVElDQVwiPjxCPicgKyB0aXR1bG8gKyAnPC9C
PjwvRk9OVD4nOwoJcmV0dXJuIHRleHRvOwp9CgovLyBGVU5DSU9ORVMKLypBY3R1YWxpemEg
QmFuVERDIHNvbG8gcGFyYSBlbnZpYXIgdW5hIHBldGljafNuIGFsIElWUiovCmZ1bmN0aW9u
IEFjdHVhQmFuVERDKGJhblREQyl7CiAgICAgdmFyIHBIZWFkZXI9bnVsbDsgICBwSGVhZGVy
PSBwYXJlbnQuR2V0UG9pbnRlckhkKCk7CiAgICAgcEhlYWRlci5jYmFuVERDPWJhblREQzsg
fQoKLyogQUNUVUFMSVpBIENPUlJFT1MgKi8KZnVuY3Rpb24gQWN0dWFsaXphQ29ycmVvMWFj
dChjb3JyZW8xYWN0KXsKICAgICB2YXIgcEhlYWRlcj1udWxsOwkgcEhlYWRlcj0gcGFyZW50
LkdldFBvaW50ZXJIZCgpOwogICAgIHBIZWFkZXIuY2NvcnJlbzFhY3Q9Y29ycmVvMWFjdDsg
fQpmdW5jdGlvbiBBY3R1YWxpemFDb3JyZW8xYW50KGNvcnJlbzFhbnQpewogICAgIHZhciBw
SGVhZGVyPW51bGw7CSBwSGVhZGVyPSBwYXJlbnQuR2V0UG9pbnRlckhkKCk7CiAgICAgcEhl
YWRlci5jY29ycmVvMWFudD1jb3JyZW8xYW50OyB9CmZ1bmN0aW9uIEFjdHVhbGl6YUNvcnJl
bzJhY3QoY29ycmVvMmFjdCl7CiAgICAgIHZhciBwSGVhZGVyPW51bGw7CSBwSGVhZGVyPSBw
YXJlbnQuR2V0UG9pbnRlckhkKCk7CiAgICAgIHBIZWFkZXIuY2NvcnJlbzJhY3Q9Y29ycmVv
MmFjdDsgfQpmdW5jdGlvbiBBY3R1YWxpemFDb3JyZW8yYW50KGNvcnJlbzJhbnQpewogICAg
ICAgdmFyIHBIZWFkZXI9bnVsbDsgcEhlYWRlcj0gcGFyZW50LkdldFBvaW50ZXJIZCgpOwoJ
cEhlYWRlci5jY29ycmVvMmFudD1jb3JyZW8yYW50OyB9CmZ1bmN0aW9uIEFjdHVhbGl6YUNv
cnJlbzNhY3QoY29ycmVvM2FjdCl7CiAgICAgICB2YXIgcEhlYWRlcj1udWxsOyAgcEhlYWRl
cj0gcGFyZW50LkdldFBvaW50ZXJIZCgpOwoJcEhlYWRlci5jY29ycmVvM2FjdD1jb3JyZW8z
YWN0OyB9CmZ1bmN0aW9uIEFjdHVhbGl6YUNvcnJlbzNhbnQoY29ycmVvM2FudCkgeyAKICAg
ICAgdmFyIHBIZWFkZXI9bnVsbDsgcEhlYWRlcj0gcGFyZW50LkdldFBvaW50ZXJIZCgpOwoJ
cEhlYWRlci5jY29ycmVvM2FudD1jb3JyZW8zYW50OyB9CmZ1bmN0aW9uIEFjdHVhbGl6YUF2
aXNvKGF2aXNvKXsKICAgICAgIHZhciBwSGVhZGVyPW51bGw7IHBIZWFkZXI9IHBhcmVudC5H
ZXRQb2ludGVySGQoKTsKCXBIZWFkZXIuY2F2aXNvdDM9YXZpc287fQpmdW5jdGlvbiBBY3R1
YWxpemFTb2xQYXNzd2Qoc29scGFzc3dkKXsKICAgICAgIHZhciBwSGVhZGVyPW51bGw7IHBI
ZWFkZXI9IHBhcmVudC5HZXRQb2ludGVySGQoKTsKICAgICAgICBwSGVhZGVyLnNvbHBhc3N3
ZD1zb2xwYXNzd2Q7fQpmdW5jdGlvbiBBY3R1YWxpemFTdGF0dXMoc3RhdHVzKXsKICAgICAg
IHZhciBwSGVhZGVyPW51bGw7IHBIZWFkZXI9IHBhcmVudC5HZXRQb2ludGVySGQoKTsKCXBI
ZWFkZXIuY3N0YXR1c2NvcnJlbz1zdGF0dXM7IH0KZnVuY3Rpb24gQWN0dWFsaXphRm9ybWF0
b0NvcnJlbyhzdGF0dXMpewogICAgICAgdmFyIHBIZWFkZXI9bnVsbDsgcEhlYWRlcj0gcGFy
ZW50LkdldFBvaW50ZXJIZCgpOwogICAgICAgIHBIZWFkZXIuY3Rwb2Zvcm1hdG89c3RhdHVz
OyB9CmZ1bmN0aW9uIEFjdHVhbGl6YVNlcnZpY2lvQ29ycmVvKHN0YXR1cyl7CiAgICAgICB2
YXIgcEhlYWRlcj1udWxsOyBwSGVhZGVyPSBwYXJlbnQuR2V0UG9pbnRlckhkKCk7CiAgICAg
ICAgcEhlYWRlci5jY29ycmVvc2Vydj1zdGF0dXM7IH0KZnVuY3Rpb24gQWN0dWFsaXphU3Rh
dHVzZW4oc3RhdHUpewogICAgICAgdmFyIHBIZWFkZXI9bnVsbDsgcEhlYWRlcj0gcGFyZW50
LkdldFBvaW50ZXJIZCgpOwoJcEhlYWRlci5jU3RhdHVzZW49c3RhdHU7IH0KZnVuY3Rpb24g
QWN0dWFsaXphRW5jdWVzdGEoZW5jdWVzdCl7CiAgICAgICB2YXIgcEhlYWRlcj1udWxsOyBw
SGVhZGVyPSBwYXJlbnQuR2V0UG9pbnRlckhkKCk7CglwSGVhZGVyLmNFbmN1ZXN0YT1lbmN1
ZXN0OyB9CmZ1bmN0aW9uIEFjdHVhbGl6YVByaW9yaWRhZChwcmlvcmlkYSl7CiAgICAgICB2
YXIgcEhlYWRlcj1udWxsOyBwSGVhZGVyPSBwYXJlbnQuR2V0UG9pbnRlckhkKCk7CglwSGVh
ZGVyLmNQcmlvcmlkYWQ9cHJpb3JpZGE7IH0KZnVuY3Rpb24gQXZpc29Ob21pbmEoYXZpc29u
b20pewogICAgICAgdmFyIHBIZWFkZXI9bnVsbDsgcEhlYWRlcj0gcGFyZW50LkdldFBvaW50
ZXJIZCgpOwogICAgICAgIHBIZWFkZXIuY2F2aXNvbm9tPWF2aXNvbm9tOyB9CgovKkNPTlRS
QSBPUEUgUFJPRyovCmZ1bmN0aW9uIEFjdENvbk9QKGNvcCl7CiAgdmFyIHBIZWFkZXI9bnVs
bDsgcEhlYWRlcj0gcGFyZW50LkdldFBvaW50ZXJIZCgpOwoJcEhlYWRlci5jQ29udHJhb3A9
Y29wOyB9CgovL0ZVTkNJT05FUyBQQVJBIFBBR08gSU5URVJCQU5DQVJJTyAgKCBCeSByb3Nh
Y2NyICkKZnVuY3Rpb24gQWN0dWFsaXphVHBvQ3VlbnRhUElCKHRpcG8pCnsgdmFyIHBIZWFk
ZXI9bnVsbDsKCXBIZWFkZXI9IHBhcmVudC5HZXRQb2ludGVySGQoKTsKCXBIZWFkZXIuY3Rp
cG9jdGFwaWI9dGlwbzsgfQpmdW5jdGlvbiBBY3R1YWxpemFDdWVudGFQSUIoY3VlbnRhKQp7
IHZhciBwSGVhZGVyPW51bGw7CglwSGVhZGVyPSBwYXJlbnQuR2V0UG9pbnRlckhkKCk7Cglw
SGVhZGVyLmNjdWVudGFwaWI9Y3VlbnRhOyB9CmZ1bmN0aW9uIEFjdHVhbGl6YVBhc3N3b3Jk
UElCKHBhc3N3ZCkKewl2YXIgcEhlYWRlcj1udWxsOyBwSGVhZGVyPSBwYXJlbnQuR2V0UG9p
bnRlckhkKCk7CiAgcEhlYWRlci5jcGFzc3dvcmRwaWI9cGFzc3dkOyB9CgovKlByb21vY2lv
bmVzKi8KZnVuY3Rpb24gQWN0dWFsaXphU3RhdHVzUHJvKHN0YXR1cCl7CiAgICAgICAgdmFy
IHBIZWFkZXI9bnVsbDsgcEhlYWRlcj0gcGFyZW50LkdldFBvaW50ZXJIZCgpOwogICAgICAg
IHBIZWFkZXIuY1N0YXR1c1Bybz1zdGF0dXA7IH0KCmZ1bmN0aW9uIEFjdHVhbGl6YVByb21v
Y2lvbihwcm9tbyl7CiAgICAgICB2YXIgcEhlYWRlcj1udWxsOyBwSGVhZGVyPSBwYXJlbnQu
R2V0UG9pbnRlckhkKCk7CiAgICAgICAgcEhlYWRlci5jUHJvbW9jaW9uPXByb21vOyB9CmZ1
bmN0aW9uIEFjdHVhbGl6YVByaW9Qcm9tbyhwcmlvcHJvbW8pewogICAgICAgdmFyIHBIZWFk
ZXI9bnVsbDsgcEhlYWRlcj0gcGFyZW50LkdldFBvaW50ZXJIZCgpOwogICAgICAgIHBIZWFk
ZXIuY1ByaW9Qcm9tbz1wcmlvcHJvbW87IH0KZnVuY3Rpb24gQWN0dWFsaXphTmlwKG52b25p
cCkKeyAgICAgICB2YXIgcEhlYWRlcj1udWxsOwogICAgICAgIHBIZWFkZXI9IHBhcmVudC5H
ZXRQb2ludGVySGQoKTsKICAgICAgICBwSGVhZGVyLmNOSVA9bnZvbmlwOyB9CgpmdW5jdGlv
biBTYWxkb3MyKCl7CiB2YXIgcE9wPW51bGw7CiB2YXIgcEhlYWRlcj1udWxsOwoKICAgIHBI
ZWFkZXI9IHBhcmVudC5HZXRQb2ludGVySGQoKTsKICAgIEZvbGlvPXBIZWFkZXIuY0ZvbGlv
YzsKICAgIGlmKHBIZWFkZXIuY0ZvbGlvYyA9PSAiTk5OTiIpeyBTYWxkb3MoKTsgfQogICAg
ZWxzZXsgRm9saW9Db250cmF0b0NQQigpOyB9Cn0KCgpmdW5jdGlvbiBGb2xpb0NvbnRyYXRv
Q1BCKCl7CiAgdmFyIHBPcD1udWxsOwogIHZhciBwSGVhZGVyPW51bGw7CiAgcEhlYWRlcj0g
cGFyZW50LkdldFBvaW50ZXJIZCgpOyAvL1RyYWUgYXB1bnRhZG9yIGRlbCBoZWFkZXIgZXh0
cmFlciBTZWdtZW50bwogIEZlY2hhPXBIZWFkZXIuY0ZlY2hhOwogIEhvcmE9cEhlYWRlci5j
SG9yYTsKICBGb2xpbz1wSGVhZGVyLmNGb2xpb2M7CiAgcE9wPXRvcC5mcmFtZXNbM10uZG9j
dW1lbnQ7CiAgdG9wLmZyYW1lc1szXS5kb2N1bWVudC5vcGVuKCk7CiAgcE9wLmNsZWFyKCk7
CiAgcE9wLndyaXRlbG4oIjxIVE1MPjxIRUFEPiIpOwogIHBPcC53cml0ZWxuKCc8TUVUQSBI
VFRQLUVRVUlWPSJFeHBpcmVzIiBDT05URU5UPSIwIj4nKTsKICBwT3Aud3JpdGVsbigiPFRJ
VExFPiBDb250cmF0b0NQQjwvVElUTEU+IDwvSEVBRD4iKTsKICBwT3Aud3JpdGVsbignPEJP
RFkgQkdDT0xPUj13aGl0ZSBURVhUPWJsYWNrPicpOwogIHBPcC53cml0ZWxuKCI8QlI+PEJS
PiIpOwogIHBPcC53cml0ZWxuKCI8Q0VOVEVSPjxUQUJMRSBCT1JERVI9MCB3aWR0aD01MCU+
Iik7CiAgcE9wLndyaXRlbG4oIjxUUj48VEQgYWxpZ249Y2VudGVyPiIpOwogIHBPcC53cml0
ZWxuKCI8Rk9OVCBTSVpFPTM+VXN0ZWQgYWNhYmEgZGUgZmlybWFyIHN1IENvbnRyYXRvIGRl
IENvbmV4aSZvYWN1dGU7biBQZXJzb25hbCBCaXRhbDwvRk9OVD48QlI+Iik7CiAgcE9wLndy
aXRlbG4oIjxGT05UIFNJWkU9Mz5lbCBkJmlhY3V0ZTthIDxCPiIrRmVjaGErIjwvQj4gYSBs
YXMgPEI+IitIb3JhKyI8L0I+LCBjb24gZWwgbiZ1YWN1dGU7bWVybyBkZSBGT0xJTzogPC9G
T05UPiIpOwogIHBPcC53cml0ZWxuKCI8Rk9OVCBTSVpFPTMgQ09MT1I9UkVEPiIrRm9saW8r
IjwvRk9OVD48Rk9OVCBTSVpFPTM+LCBlbCBjdWFsIGxlIHNlcnZpcuEgPC9GT05UPiIpOwog
IHBPcC53cml0ZWxuKCI8Rk9OVCBTSVpFPTM+IHBhcmEgY3VhbHF1aWVyIGFjbGFyYWNp824u
PC9GT05UPjwvQj4iKTsKICBwT3Aud3JpdGVsbigiPC9URD48L1RSPjxUUj48L1RSPjxUUj48
VEQgYWxpZ249Y2VudGVyPiIpOwogIHBPcC53cml0ZWxuKCI8Rk9OVCBzaXplPScyJz48QSBI
UkVGPSdqYXZhc2NyaXB0OlByZWltcENvbnRyYXRvKCk7Jz48Rk9OVCBTSVpFPTEgQ09MT1I9
JyNGRjAwMDAnIEZBQ0U9J0hFTFZFVElDQSc+PEI+UFJFSU1QUklNSVI8L0I+PC9GT05UPjwv
QT4iKTsKICBwT3Aud3JpdGVsbigiPC9URD48L1RSPiIpOwogIHBPcC53cml0ZWxuKCI8L1RB
QkxFPjwvQ0VOVEVSPiIpOwogIHBPcC53cml0ZWxuKCI8L0JPRFk+PC9IVE1MPiIpOwogIHBP
cC53cml0ZWxuKCI8UyIrIkNSSVBUIisiPiIpOwogIHBPcC53cml0ZWxuKCJmdW5jdGlvbiBQ
cmVpbXBDb250cmF0bygpIik7CiAgcE9wLndyaXRlbG4oInsiKTsKICBwT3Aud3JpdGVsbigi
aWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmxhc3RJbmRleE9mKCczLjAgTkFWSU8gKDg7IDcp
Jyk9PSAtMSkiKTsKICBwT3Aud3JpdGVsbigieyIpOwogIHBPcC53cml0ZWxuKCJ2YXIgdmVu
dGFuYT1vcGVuKCcnLCd0bXBXaW5kb3cnLCdzY3JvbGxiYXJzPXllcyx3aWR0aD02MDAsaGVp
Z2h0PTM1MCx0b29sYmFyPXllcyxtZW51YmFyPXllcycpOyIpOwogIHBPcC53cml0ZWxuKCJ2
YXIgcE9wPXZlbnRhbmEuZG9jdW1lbnQ7Iik7CiAgcE9wLndyaXRlbG4oInZlbnRhbmEuZG9j
dW1lbnQub3BlbigpIik7CiAgcE9wLndyaXRlbG4oInZlbnRhbmEuZG9jdW1lbnQuY2xlYXIo
KTsiKTsKICBwT3Aud3JpdGVsbigidmVudGFuYS5kb2N1bWVudC53cml0ZSgnPEhUTUw+Jyk7
Iik7CiAgcE9wLndyaXRlbG4oInZlbnRhbmEuZG9jdW1lbnQud3JpdGUoJzxCT0RZIEJHQ09M
T1I9V0hJVEU+Jyk7Iik7CiAgcE9wLndyaXRlbG4oInZlbnRhbmEuZG9jdW1lbnQud3JpdGUo
JzxUQUJMRSBCT1JERVI9MD48VEQ+PEZPTlQgU0laRT0yIENPTE9SPVwiRkZDQzAwXCIgRkFD
RT1cIkhFTFZFVElDQVwiPjxCPkNPTkVYSU9OPC9CPjwvRk9OVD48QlI+PEZPTlQgU0laRT0z
IENPTE9SPVwiI0ZGMDAwMFwiIEZBQ0U9XCJIRUxDRVRJQ0FcIj48Qj5QZXJzb25hbDwvQj48
L0ZPTlQ+PEJSPjxGT05UIFNJWkU9MiBDT0xPUj1cIiMwMDAwMDBcIiBGQUNFPVwiSEVMVkVU
SUNBXCI+PEI+QklUQUw8L0I+PC9GT05UPjwvVEQ+Jyk7Iik7CiAgcE9wLndyaXRlbG4oInZl
bnRhbmEuZG9jdW1lbnQud3JpdGUoJzxURD48SDI+PEZPTlQgQ09MT1I9Ymx1ZT5Db25leGkm
b2FjdXRlO24gUGVyc29uYWwgQml0YWw8L0ZPTlQ+PC9IMj48L1REPjwvVEFCTEU+PEJSPicp
OyIpOwogIHBPcC53cml0ZWxuKCJ2ZW50YW5hLmRvY3VtZW50LndyaXRlKCc8Q0VOVEVSPlVz
dGVkIGZpcm0mb2FjdXRlOyBzdSBjb250cmF0byBkZSBDb25leGkmb2FjdXRlO24gUGVyc29u
YWwgQml0YWwgZWwgZCZpYWN1dGU7YTxCUj48Qj4iK0ZlY2hhKyI8L0I+IGEgbGFzIDxCPiIr
SG9yYSsiPC9CPicpOyIpOwogIHBPcC53cml0ZWxuKCJ2ZW50YW5hLmRvY3VtZW50LndyaXRl
KCcgY29uIGVsIG4mdWFjdXRlO21lcm8gZGUgRk9MSU86ICcpOyIpOwogIHBPcC53cml0ZWxu
KCJ2ZW50YW5hLmRvY3VtZW50LndyaXRlKCc8Qj4iK0ZvbGlvKyI8L0I+LicpOyIpOwogIHBP
cC53cml0ZWxuKCJ2ZW50YW5hLmRvY3VtZW50LndyaXRlKCc8L0NFTlRFUj4nKTsiKTsKICBw
T3Aud3JpdGVsbigidmVudGFuYS5kb2N1bWVudC53cml0ZSgnPENFTlRFUj4nKTsiKTsKICBw
T3Aud3JpdGVsbigidmVudGFuYS5kb2N1bWVudC53cml0ZSgnPEJSPjxGT05UIFNJWkU9LTI+
TGEgaW5mb3JtYWNpJm9hY3V0ZTtuIGxpc3RhZGEgZXMgc29sbyBkZSBjYXJhY3RlciBpbmZv
cm1hdGl2bzwvRk9OVD48QlI+Jyk7Iik7CgogcE9wLndyaXRlbG4oInZlbnRhbmEuZG9jdW1l
bnQud3JpdGUoJzxCUj4gUGFyYSBjdWFscXVpZXIgZHVkYSBvIGFjbGFyYWNp824gbm9zIHBv
bmVtb3MgYSBzdXMg83JkZW5lcyBlbiA8Qj5jb250YWN0b0BiaXRhbC5jb20ubXggPC9CPm8g
c2kgbG8gcHJlZmllcmUgcHVlZGUgY29tdW5pY2Fyc2UgYSBM7W5lYSBCaXRhbCBhIGxvcyB0
ZWzpZm9ub3MgNTcyMS0zMzkwIGRlc2RlIGVsIEQuRi4gbyBhbCAwMSA4MDAgNzEyNDgyNSBs
YWRhIHNpbiBjb3N0byBkZXNkZSBlbCBpbnRlcmlvciBkZWwgcGHtcywgZGlnaXRlIGxhIG9w
Y2nzbiAzIChBc2lzdGVuY2lhIFBlcnNvbmFsKSB5IHBvc3Rlcmlvcm1lbnRlIGxhIG9wY2nz
biAzIChCaXRhbCBlbiBJbnRlcm5ldCkuIENvbiBndXN0byBsZSBhdGVuZGVyZW1vcy4gIDxC
Uj48QlI+IDxGT05UIFNJWkU9Mj4gU2kgZGVzZWEgY2FtYmlhciBzdSBjbGF2ZSBkZSBjb3Jy
ZW8gbyBkYXIgZGUgYmFqYSBlbCBzZXJ2aWNpbywgYWN1ZGEgYWwgbWVu+iBkZSBvdHJvcyBz
ZXJ2aWNpb3MuIDwvRk9OVD48QlI+Jyk7Iik7CgogIHBPcC53cml0ZWxuKCJ2ZW50YW5hLmRv
Y3VtZW50LndyaXRlKCc8QlI+Jyk7Iik7CiAgcE9wLndyaXRlbG4oInZlbnRhbmEuZG9jdW1l
bnQud3JpdGUoJzxCPlNlbGVjY2lvbmUgbGEgb3BjaSZvYWN1dGU7biBQcmludCAoSW1wcmlt
aXIpIGRlIHN1IE5hdmVnYWRvciBzaSBkZXNlYSBpbXByaW1pciBlc3RhIHBhbnRhbGxhLjwv
Qj48QlI+Jyk7Iik7CiAgcE9wLndyaXRlbG4oInZlbnRhbmEuZG9jdW1lbnQud3JpdGUoJzxC
Uj48Q0VOVEVSPjxBIEhSRUY9XCJqYXZhc2NyaXB0OnNlbGYuY2xvc2UoKVwiPiAiICsgbGln
YTIoIkFjY2VzbyBhIGxhIEFwbGljYWNpJm9hY3V0ZTtuIikgKyAiIDwvQT4nKTsiKTsKICBw
T3Aud3JpdGVsbigidmVudGFuYS5kb2N1bWVudC53cml0ZSgnPC9DRU5URVI+Jyk7Iik7CiAg
cE9wLndyaXRlbG4oInZlbnRhbmEuZG9jdW1lbnQud3JpdGUoJzwvQk9EWT4nKTsiKTsKICBw
T3Aud3JpdGVsbigidmVudGFuYS5kb2N1bWVudC53cml0ZSgnPC9IVE1MPicpOyIpOwogIHBP
cC53cml0ZWxuKCJ2ZW50YW5hLmRvY3VtZW50LmNsb3NlKCk7Iik7CiAgcE9wLndyaXRlbG4o
In0iKTsKICBwT3Aud3JpdGVsbigiZWxzZSIpOwogIHBPcC53cml0ZWxuKCJhbGVydCgnT3Bj
afNuIG5vIFNvcG9ydGFkYSBwb3IgTmV0Rm9yQWxsJykiKTsKICBwT3Aud3JpdGVsbigifSIp
OwogIHBPcC53cml0ZWxuKCI8L1MiKyJDUklQVCIrIj4iKTsKIHRvcC5mcmFtZXNbM10uZG9j
dW1lbnQuY2xvc2UoKQp9CgoKCgoKZnVuY3Rpb24gU2FsZG9zMSgpCnsgdmFyIHBPcD1udWxs
OwogIHZhciBwSGVhZGVyPW51bGw7CiAgcEhlYWRlcj0gcGFyZW50LkdldFBvaW50ZXJIZCgp
OyAvL1RyYWUgYXB1bnRhZG9yIGRlbCBoZWFkZXIgZXh0cmFlciBTZWdtZW50bwogIEZvbGlv
PXBIZWFkZXIuY0ZvbGlvYzsKICBpZihwSGVhZGVyLmNGb2xpb2MgPT0gIk5OTk4iKXsKICAg
ICAgIHBPcD10b3AuZnJhbWVzWzJdLmRvY3VtZW50OwogICAgICAgdG9wLmZyYW1lc1syXS5k
b2N1bWVudC5vcGVuKCk7CiAgICAgICBwT3AuY2xlYXIoKTsKICAgICAgIHBPcC53cml0ZWxu
KCI8SFRNTD48SEVBRD4iKTsKICAgICAgIHBPcC53cml0ZWxuKCc8TUVUQSBIVFRQLUVRVUlW
PSJFeHBpcmVzIiBDT05URU5UPSIwIj4nKTsKICAgICAgIHBPcC53cml0ZWxuKCI8VElUTEU+
IFJlZnJlc2hTYWxkb3M8L1RJVExFPiA8L0hFQUQ+Iik7CiAgICAgICBwT3Aud3JpdGVsbign
PEJPRFkgQkdDT0xPUj13aGl0ZSBURVhUPWJsYWNrJyk7CiAgICAgICBwT3Aud3JpdGVsbigi
PEJSPjxCUj4iKTsKICAgICAgICAgIHRvcC5mcmFtZXNbMF0udGl0dWxvSFRNTCgiU0FMRE8g
Q1VFTlRBIERFIENIRVFVRVMiLCBwT3ApOwoJICBwT3Aud3JpdGVsbigiPEJSPjxCUj4iKTsK
ICAgICAgIHBPcC53cml0ZWxuKCI8L0JPRFk+PC9IVE1MPiIpOwogICAgICAgdG9wLmZyYW1l
c1syXS5kb2N1bWVudC5jbG9zZSgpCiAgICAgICBTYWxkb3MoKTsgfQogIGVsc2V7IEZvbGlv
Q29udHJhdG9DUEIoKTsgfQp9CgpmdW5jdGlvbiBRdWl0YUd1aW9uKGNhZGVuYSkKewogICAg
ICAgIHZhciBjYWRmb3JtID0gIiI7CiAgICAgICAgdmFyIGk9MDsKICAgICAgICB2YXIgbGVu
PTA7CiAgICAgICAgdmFyIG5vY2Vybz0wOwoKICAgICAgIGxlbiA9IGNhZGVuYS5sZW5ndGg7
CiAgICAgICBpPTA7CiAgICAgICB3aGlsZSAoY2FkZW5hLmNoYXJBdChpKSA9PSAnLScpIGkr
KzsKICAgICAgIGZvciAoO2k8bGVuOyBpKyspIHsKICAgICAgICAgICAgICAgY2FkZm9ybT1j
YWRmb3JtK2NhZGVuYS5jaGFyQXQoaSk7CiAgICAgICB9CiAgICAgICByZXR1cm4gY2FkZm9y
bTsKfQoKZnVuY3Rpb24gUG9uTGlzdGFTYWxkb3MocE9wKSAvL1RhYmxhIGRlIFNhbGRvcwp7
ICAgICAgIHZhciBwTGlzdGE9bnVsbDsKCXZhciBpOwoJdmFyIGNvbnQ9MDsKCXZhciBwT2Jq
PW51bGw7Cgl2YXIgVG90YWxTYWxkbz0wLjAwOwoJdmFyIFRvdGFsU2FsZG9uPTAuMDA7Cgl2
YXIgVG90YWxTYWxkb1NCQz0wLjAwOwoJdmFyIFRvdGFsU2FsZG9ETEw9MC4wMDsKCXZhciBU
b3RhbFNhbGRvU0JDRExMPTAuMDA7Cgl2YXIgU2FsZG9DdWVudGE9IiI7Cgl2YXIgU2FsZG9T
QkM9IiI7Cgl2YXIgaVRtcDMgPSAiICI7Cgl2YXIgaVRtcDQgPSAiICI7Cgl2YXIgaVRtcDNE
TEwgPSAiICI7Cgl2YXIgaVRtcDRETEwgPSAiICI7Cgl2YXIgTnVtZXJvRGVDdWVudGE9IiAi
OwoJdmFyIENVRU5UQT0iICI7Cgl2YXIgYXV4Y3RhPSIgIjsKCXBMaXN0YSA9IHBhcmVudC5H
ZXRQb2ludGVyUmcoKTsKCWlmIChwTGlzdGEgPT0gbnVsbCkKCQlhbGVydCgiTGlzdGEgTnVs
YSIpOwoJZWxzZSB7ICBpPTE7CgkJcE9iaiA9IHBMaXN0YVtpXTsKCQl3aGlsZSAocE9iaiAh
PSBudWxsKSB7CgkJCQlpZiAoIHBPYmouY1Byb2R1Y3RvID09ICJEREEiICkgeyAgY29udCsr
OyAgfQoJCQkJaSsrOyBwT2JqPXBMaXN0YVtpXTsgIH0KCQlpZiAoIGNvbnQgPiAwKSB7ICBp
PTE7ICBwT2JqID0gcExpc3RhW2ldOwoJCQl3aGlsZSAocE9iaiAhPSBudWxsKSB7CgkJCQlp
ZiAoIHBPYmouY1Byb2R1Y3RvID09ICJEREEiICkgewoJCQkJICAgU2FsZG9DdWVudGE9Rm9y
bWF0ZWFTYWxkbyhwT2JqLmNzZG9fY3RhKTsKCQkJCSAgIFNhbGRvU0JDPUZvcm1hdGVhU2Fs
ZG8ocE9iai5jc2RvX3NiYyk7CgkJCQkgICBOdW1lcm9EZUN1ZW50YT1RdWl0YUNlcm9zKHBP
YmouY251bV9jdWVudGEpOwoJCQkJICAgQ1VFTlRBPVF1aXRhQ2Vyb3MyKE51bWVyb0RlQ3Vl
bnRhKTsKCQkJCSAgIHBPcC53cml0ZWxuKCI8VFI+PFREIEFMSUdOPUNFTlRFUj48Rk9OVCBT
SVpFPTIgQ09MT1I9JyMwMDAwMDAnPiIrTnVtZXJvRGVDdWVudGErIjwvRk9OVD48L1REPjxU
RD48Rk9OVCBTSVpFPTIgQ09MT1I9JyMwMDAwMDAnPiIrcE9iai5jZGVzY19jdGErIjwvRk9O
VD48L1REPjxURCBBTElHTj1SSUdIVD48Rk9OVCBTSVpFPTIgQ09MT1I9JyMwMDAwMDAnPiQi
K1NhbGRvQ3VlbnRhKyI8L0ZPTlQ+PC9URD48VEQgQUxJR049UklHSFQ+PEZPTlQgU0laRT0y
IENPTE9SPScjMDAwMDAwJz4gJCIrU2FsZG9TQkMrIjwvRk9OVD48L1REPjxURCBBTElHTj1D
RU5URVI+PElOUFVUIFRZUEU9cmFkaW8gTkFNRT1zYWxkb3JlcyBvbkNsaWNrPXRvcC5mcmFt
ZXNbMF0uRGVzcGxpZWdhU2FsZG9SZXN0cmluZ2lkbygiK0NVRU5UQSsiKTs+PC9URD48L1RS
PiIpOwoKCQkJCQlpZiAoKHBPYmouY3Rwb19jdGEgPT0gJ0ExJykgfHwgKHBPYmouY3Rwb19j
dGEgPT0gJ0EyJykgfHwgKHBPYmouY3Rwb19jdGEgPT0gJ0EzJykgfHwgKHBPYmouY3Rwb19j
dGEgPT0gJzAwJykgfHwgKHBPYmouY3Rwb19jdGEgPT0gJzE1JykgfHwgKHBPYmouY3Rwb19j
dGEgPT0gJzE2JykgfHwgKHBPYmouY3Rwb19jdGEgPT0gJzE3JykgfHwgKHBPYmouY3Rwb19j
dGEgPT0gJzE4JykgfHwgKHBPYmouY3Rwb19jdGEgPT0gJzYxJykgfHwgKHBPYmouY3Rwb19j
dGEgPT0gJzYyJykgfHwgKHBPYmouY3Rwb19jdGEgPT0gJzY1JykgfHwgKHBPYmouY3Rwb19j
dGEgPT0gJzY2JykgfHwgKHBPYmouY3Rwb19jdGEgPT0gJzY5JykgfHwgKHBPYmouY3Rwb19j
dGEgPT0gJzg1JykgfHwgKHBPYmouY3Rwb19jdGEgPT0gJzg3JykpIHsKCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdXhjdGEgPSBwT2JqLmNzZG9fY3RhOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2lnbm8gPSBhdXhjdGEuc3Vic3RyaW5nKDEsMCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihzaWdubyA9PSAnLScpewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXhjdGEgPSBRdWl0YUd1aW9uKHBPYmou
Y3Nkb19jdGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3RhbFNh
bGRvbj1wYXJzZUZsb2F0KFRvdGFsU2FsZG9uKStwYXJzZUZsb2F0KGF1eGN0YSk7ICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3RhbFNhbGRvPXBhcnNlRmxv
YXQoVG90YWxTYWxkbykrcGFyc2VGbG9hdChwT2JqLmNzZG9fY3RhKTsgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3RhbFNhbGRvU0JDPXBhcnNl
RmxvYXQoVG90YWxTYWxkb1NCQykrcGFyc2VGbG9hdChwT2JqLmNzZG9fc2JjKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKCQkJICAgIAkgaWYgKChwT2JqLmN0cG9f
Y3RhID09ICc2MycpIHx8IChwT2JqLmN0cG9fY3RhID09ICc2NCcpIHx8IChwT2JqLmN0cG9f
Y3RhID09ICc2NycpIHx8IChwT2JqLmN0cG9fY3RhID09ICc2OCcpKSB7ICAKICAgICAgICAg
ICAgICAgICAgICAgICBUb3RhbFNhbGRvU0JDRExMPVRvdGFsU2FsZG9TQkNETEwrJysnK3BP
YmouY3Nkb19zYmM7CgkJCQkgICAgICAgVG90YWxTYWxkb0RMTD1Ub3RhbFNhbGRvRExMKycr
JytwT2JqLmNzZG9fY3RhOwoJCQkJCX0KCQkJCX0gIGkrKzsgIHBPYmo9cExpc3RhW2ldOwoJ
CQl9CiAgICAgICAgICAgICAgICAgICAgICBUb3RhbFNhbGRvPXBhcnNlRmxvYXQoVG90YWxT
YWxkbyktcGFyc2VGbG9hdChUb3RhbFNhbGRvbik7CgkJCS8vVE9UQUwgTU9ORURBIE5BQ0lP
TkFMCgkJdmFyIGlUbXAxID0gKE1hdGgucm91bmQoZXZhbChUb3RhbFNhbGRvKSoxMDAuMDAp
KS8xMDAuMDA7CgkJdmFyIGlUbXAyID0gKE1hdGgucm91bmQoZXZhbChUb3RhbFNhbGRvU0JD
KSoxMDAuMDApKS8xMDAuMDA7CgkJCWlUbXAzID0gIiAiK2lUbXAxOwoJCQlpZiAoIGlUbXAz
LmluZGV4T2YoIi4iKSA9PSAtMSApCgkJCQlpVG1wMyA9IGlUbXAzICsgIi4wMCI7CgkJCWlm
ICggKGlUbXAzLmxlbmd0aCAtIGlUbXAzLmluZGV4T2YoIi4iKSk8MyApCgkJCQlpVG1wMyA9
IGlUbXAzICsgIjAiOwoJCQlpVG1wMz1Gb3JtYXRlYVNhbGRvKGlUbXAzKTsKCQkJaVRtcDQg
PSAiICIraVRtcDI7CgkJCWlmICggaVRtcDQuaW5kZXhPZigiLiIpID09IC0xICkKCQkJCWlU
bXA0ID0gaVRtcDQgKyAiLjAwIjsKCQkJaVRtcDQ9Rm9ybWF0ZWFTYWxkbyhpVG1wNCk7CgkJ
CXBPcC53cml0ZWxuKCI8VFI+PFREPjwvVEQ+PFREIEFMSUdOPVJJR0hUPjxCPjxGT05UIFNJ
WkU9MiBDT0xPUj1ibGFjaz5Ub3RhbCBNLk48L0ZPTlQ+PC9CPjwvVEQ+PFREIEFMSUdOPVJJ
R0hUPjxCPjxGT05UIFNJWkU9MiBDT0xPUj1ibGFjaz4kIitpVG1wMysiPC9GT05UPjwvQj48
L1REPjxURCBBTElHTj1SSUdIVD4gPC9URD4iKTsKCQkvL1RPVEFMIERPTEFSRVMKCXZhciBp
VG1wMURMTCA9IChNYXRoLnJvdW5kKGV2YWwoVG90YWxTYWxkb0RMTCkqMTAwLjAwKSkvMTAw
LjAwOwoJdmFyIGlUbXAyRExMID0gKE1hdGgucm91bmQoZXZhbChUb3RhbFNhbGRvU0JDRExM
KSoxMDAuMDApKS8xMDAuMDA7CgkJCWlUbXAzRExMID0gIiAiK2lUbXAxRExMOwoJCQlpZiAo
IGlUbXAzRExMLmluZGV4T2YoIi4iKSA9PSAtMSApCgkJCQlpVG1wM0RMTCA9IGlUbXAzRExM
ICsgIi4wMCI7CgkJCWlmICggKGlUbXAzRExMLmxlbmd0aCAtIGlUbXAzRExMLmluZGV4T2Yo
Ii4iKSk8MyApCgkJCQlpVG1wM0RMTCA9IGlUbXAzRExMICsgIjAiOwoJCQlpVG1wM0RMTD1G
b3JtYXRlYVNhbGRvKGlUbXAzRExMKTsKCQkJaVRtcDRETEwgPSAiICIraVRtcDJETEw7CgkJ
CWlmICggaVRtcDRETEwuaW5kZXhPZigiLiIpID09IC0xICkKCQkJCWlUbXA0RExMID0gaVRt
cDRETEwgKyAiLjAwIjsKCQkJaVRtcDRETEw9Rm9ybWF0ZWFTYWxkbyhpVG1wNERMTCk7CgkJ
CXBPcC53cml0ZWxuKCI8VFI+PFREPjwvVEQ+PFREIEFMSUdOPVJJR0hUPjxCPjxGT05UIFNJ
WkU9MiBDT0xPUj1ibGFjaz5Ub3RhbCBETEw8L0ZPTlQ+PC9CPjwvVEQ+PFREIEFMSUdOPVJJ
R0hUPjxCPjxGT05UIFNJWkU9MiBDT0xPUj1ibGFjaz4kIitpVG1wM0RMTCsiPC9GT05UPjwv
Qj48L1REPjxURCBBTElHTj1SSUdIVD4gPC9URD4iKTsKICAgIGlmIChwYXJzZUZsb2F0KGlU
bXAzRExMKT09MCAmJiBwYXJzZUZsb2F0KGlUbXAzKT09MCkKICAgICAgIHsgYWxlcnQoIlNh
bGRvcyBubyBkaXNwb25pYmxlcyBwb3IgZWwgbW9tZW50byIpOyB9IH0KICAgIGVsc2UgeyBh
bGVydCgiT3BlcmFjafNuIG5vIGRpc3BvbmlibGUgcG9yIGVsIG1vbWVudG8sIEludGVudGUg
beFzIHRhcmRlIik7CgkJCUFjY0ltcD0xOyAgfSAgfQp9CmZ1bmN0aW9uIERlc3BsaWVnYVNh
bGRvUmVzdHJpbmdpZG8oY3VlbnRhKSAvL0VqZWN1dGEgUlBDIGluM2I2MDgKeyBpZiAobmF2
aWdhdG9yLmFwcFZlcnNpb24ubGFzdEluZGV4T2YoJzMuMCBOQVZJTyAoODsgNyknKT09IC0x
KQogICAgICAgIHZlbnRhbmE9b3BlbigiL2NnaS1iaW4vY29ucGVyL2NsaWVudGUvY2dpLWJp
bi9jZ2lzYWxyZXM/Y3VlbnRhPSIrY3VlbnRhKyIgIiwidG1wV2luZG93Iiwic2Nyb2xsYmFy
cz15ZXMsd2lkdGg9NTAwLGhlaWdodD00MDAsdG9vbGJhcj15ZXMsbWVudWJhcj15ZXMiKTsK
ZWxzZSAgIGFsZXJ0KCdPcGNp824gbm8gU29wb3J0YWRhIHBvciBOZXRGb3JBbGwnKTsgfQpm
dW5jdGlvbiBGb3JtYXRlYVNhbGRvKGNhZGVuYSkKeyAgICAgICB2YXIgY2FkZm9ybSA9ICIg
IjsKCXZhciBjYWRyZXR1cm4gPSAiICI7Cgl2YXIgaT0wOwoJdmFyIGNvbnQ9MAoJdmFyIGxl
bj0wOwoJbGVuID0gY2FkZW5hLmxlbmd0aDsKCWNhZGZvcm09Y2FkZm9ybSsoY2FkZW5hLmNo
YXJBdChsZW4tMSkpOwoJY2FkZm9ybT1jYWRmb3JtKyhjYWRlbmEuY2hhckF0KGxlbi0yKSk7
CgljYWRmb3JtPWNhZGZvcm0rKGNhZGVuYS5jaGFyQXQobGVuLTMpKTsKCWZvciAoaT0obGVu
LTQpLCBjb250PTA7IGk+PTA7IGktLSwgY29udCsrKSB7CgkJaWYgKCBjYWRlbmEuY2hhckF0
KGkpICE9ICcgJyApIHsKCQkJaWYgKCBjb250ID09IDMgKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggY2FkZW5hLmNoYXJBdChpKSA9PSAiLSIpCgkJCQljYWRmb3Jt
PWNhZGZvcm0rJyAnK2NhZGVuYS5jaGFyQXQoaSk7CiAgICAgIAkJCSAgICAgIGVsc2UgewoJ
CQkJY2FkZm9ybT1jYWRmb3JtKycsJytjYWRlbmEuY2hhckF0KGkpOwoJCQkJY29udCA9IDA7
IH0gIH0KCQkJZWxzZSAgaWYgKCBjYWRlbmEuY2hhckF0KGkpID09ICItIikKCQkJCWNhZGZv
cm09Y2FkZm9ybSsnICcrY2FkZW5hLmNoYXJBdChpKTsKICAgICAgCQkJICAgICAgZWxzZSAK
CQkJCWNhZGZvcm09Y2FkZm9ybStjYWRlbmEuY2hhckF0KGkpOwoJCX0KCQllbHNlICBjb250
LS07ICB9Cglmb3IgKGk9KGNhZGZvcm0ubGVuZ3RoLTEpOyBpPj0wOyBpLS0pCgkJIGNhZHJl
dHVybj1jYWRyZXR1cm4rY2FkZm9ybS5jaGFyQXQoaSk7CglyZXR1cm4gY2FkcmV0dXJuOwp9
CmZ1bmN0aW9uIFF1aXRhQ2Vyb3MoY2FkZW5hKQp7ICAgICAgIHZhciBjYWRmb3JtID0gIiI7
Cgl2YXIgaT0wOwoJdmFyIGxlbj0wOwoJdmFyIG5vY2Vybz0wOwoJbGVuID0gY2FkZW5hLmxl
bmd0aDsKCWk9MDsKCXdoaWxlIChjYWRlbmEuY2hhckF0KGkpID09ICcwJykKCQkJaSsrOwoJ
Zm9yICg7aTxsZW47IGkrKykgewoJCWNhZGZvcm09Y2FkZm9ybStjYWRlbmEuY2hhckF0KGkp
OwoJfQoJaWYgKCBjYWRmb3JtLmxlbmd0aCA8IDEwKQoJY2FkZm9ybSA9ICcwJytjYWRmb3Jt
OwoJcmV0dXJuIGNhZGZvcm07Cn0KZnVuY3Rpb24gUXVpdGFDZXJvczIoY2FkZW5hKQp7ICAg
ICAgIHZhciBjYWRmb3JtID0gIiI7Cgl2YXIgaT0wOwoJdmFyIGxlbj0wOwoJbGVuID0gY2Fk
ZW5hLmxlbmd0aDsKCWk9MDsKCXdoaWxlIChjYWRlbmEuY2hhckF0KGkpID09ICcwJykgIGkr
KzsKCWZvciAoO2k8bGVuOyBpKyspIHsgIGNhZGZvcm09Y2FkZm9ybStjYWRlbmEuY2hhckF0
KGkpOyAgfQoJcmV0dXJuIGNhZGZvcm07Cn0KZnVuY3Rpb24gQWN0dWFsaXphU2FsZG8obmN1
ZW50YSxzYWxkbykKeyAgIHZhciBwTGlzdGE9bnVsbDsKCXZhciBwT2JqPW51bGw7CglwTGlz
dGEgPSBwYXJlbnQuR2V0UG9pbnRlclJnKCk7CglpZiAocExpc3RhID09IG51bGwpCgkJYWxl
cnQoIkxpc3RhIE51bGEiKTsKCWVsc2UgeyAgdmFyIGk9MTsKCQlwT2JqID0gcExpc3RhW2ld
OwoJCXdoaWxlIChwT2JqICE9IG51bGwpIHsKCSBpZiAocGFyc2VGbG9hdChwT2JqLmNudW1f
Y3VlbnRhKSA9PSBwYXJzZUZsb2F0KG5jdWVudGEpKQogICAgICAgICAgICAgICBwT2JqLmNz
ZG9fY3RhPXNhbGRvOwoJCQlpKys7ICBwT2JqPXBMaXN0YVtpXTsgIH0KCX0KfQovKkZ1bmNp
b24gcGFyYSBtb3N0cmFyIGxhIGxpc3RhIGRlIGxhcyBjdWVudGFzKi8KZnVuY3Rpb24gQWN0
dWFMaWdEZXMobmN1ZW50YSkKewogICB2YXIgcExpc3RhPW51bGw7CiAgIHZhciBwT2JqMjsK
ICAgdmFyIGluZGljZT0xOwogICB2YXIgaT0xOwoKICAgIHBPYmoyPSBuZXcgcGFyZW50Lm1h
a2VBcnJheSAoNDApOwogICAgcExpc3RhID0gcGFyZW50LkdldFBvaW50ZXJSZygpOwogICAg
d2hpbGUgKHBMaXN0YVtpbmRpY2VdIT0gbnVsbCkgCiAgICAgewogICAgICAgaWYocExpc3Rh
W2luZGljZV0uY251bV9jdWVudGEhPW5jdWVudGEpCiAgICAgICAgIHsgIAogICAgICAgICAg
cE9iajJbaSsrXT1wTGlzdGFbaW5kaWNlXTsKICAgICAgICAgfQogICAgICAgaW5kaWNlKys7
CiAgICAgfQogICAgIHBhcmVudC5PYmpzQ21wPXBPYmoyOwp9CgpmdW5jdGlvbiBBY3R1YUxp
Z2EocGlkUmVnLG5jdWVudGEsZmlybWEsY29kX3JldCxwcm9kdWN0byx0cG9fY3RhLGRlc2Nf
Y3RhLHNkb19jdGEsc2RvX3NiYyxjZW5sYWNlKQp7CQogICB2YXIgcExpc3RhPW51bGw7CiAg
IHZhciBwT2JqPW51bGw7CiAgIHZhciBpbmRpY2UgPSAxOwogICBwTGlzdGEgPSBwYXJlbnQu
R2V0UG9pbnRlclJnKCk7CiAgIHBPYmogPSBwTGlzdGFbaW5kaWNlXTsKICAgd2hpbGUgKHBP
YmogIT0gbnVsbCkgCiAgIHsJaW5kaWNlID0gaW5kaWNlICsgMTsKCXBPYmo9cExpc3RhW2lu
ZGljZV07CiAgICB9CiAgIHBPYmogPSBuZXcgcGFyZW50Lk9iakNhbXBhKHBpZFJlZyxuY3Vl
bnRhLGZpcm1hLGNvZF9yZXQscHJvZHVjdG8sdHBvX2N0YSxkZXNjX2N0YSxzZG9fY3RhLHNk
b19zYmMsY2VubGFjZSk7CiAgIHBMaXN0YVtpbmRpY2VdID0gcE9iajsKICAgcGFyZW50Lk9i
anNDbXAgPSBwTGlzdGE7Cn0KCi8qRnVuY2lvbiBwYXJhIG1vc3RyYXIgbGEgbGlzdGEgZGUg
bGFzIGN1ZW50YXMqLwoKZnVuY3Rpb24gYWRpY2lvbmFDdWVudGEobmN1ZW50YSxzYWxkbykK
ewl2YXIgcExpc3RhPW51bGw7Cgl2YXIgcE9iaj1udWxsOwoJcExpc3RhID0gcGFyZW50Lkdl
dFBvaW50ZXJSZygpOwoJdmFyIGluZGljZSA9IDE7CglwT2JqID0gcExpc3RhW2luZGljZV07
Cgl3aGlsZSAocE9iaiAhPSBudWxsKSAKCXsJaW5kaWNlID0gaW5kaWNlICsgMTsKCQlwT2Jq
PXBMaXN0YVtpbmRpY2VdOwoJfQoJcE9iaiA9IG5ldyBwYXJlbnQuT2JqQ2FtcGEoJ0InLG5j
dWVudGEsJzEnLCcwJywnQ0RBJywnUVEnLCdJTlYuIERVTU1ZICAgICAnLHNhbGRvLCcwLjAw
JywnTk8nKTsKCXBMaXN0YVtpbmRpY2VdID0gcE9iajsKCXBhcmVudC5PYmpzQ21wID0gcExp
c3RhOwp9CgoKCmZ1bmN0aW9uIFNhbGRvcygpCnsgdmFyIHRtcE9iakNtcDsKICB2YXIgcE9w
PW51bGw7CiAgdmFyIHBIZWFkZXI9bnVsbDsKICBwSGVhZGVyPSBwYXJlbnQuR2V0UG9pbnRl
ckhkKCk7CiAgRmVjaGE9cEhlYWRlci5jRmVjaGE7CiAgSG9yYT1wSGVhZGVyLmNIb3JhOwoK
ICBwT3A9dG9wLmZzYWxkb3MuZG9jdW1lbnQ7CiAgdG9wLmZzYWxkb3MuZG9jdW1lbnQub3Bl
bigpCiAgcE9wLmNsZWFyKCk7IAogIHBPcC53cml0ZWxuKCI8SFRNTD4gPEhFQUQ+Iik7CiAg
cE9wLndyaXRlbG4oJzxNRVRBIEhUVFAtRVFVSVY9IkV4cGlyZXMiIENPTlRFTlQ9IjAiPicp
OwogIHBPcC53cml0ZWxuKCI8VElUTEU+IFNhbGRvcyA8L1RJVExFPiA8L0hFQUQ+Iik7CiAg
cE9wLndyaXRlbG4oIjxCT0RZIEJHQ09MT1I9d2hpdGUgVEVYVD1ibGFjaz4iKTsKIGlmIChE
ZXNUaXQgPT0gMCkKIHsgcE9wLndyaXRlbG4oIjxGT1JNIE5BTUU9ZlRpdHVsb0NvbnRyYXRv
IE1FVEhPRD0nUE9TVCcgVEFSR0VUPWZvcGNpb25lcyBBQ1RJT049b3BjaW9uZXMuaHRtPiIp
OwogIHBPcC53cml0ZWxuKCI8SU5QVVQgVFlQRT1ISURERU4gTkFNRT1vY3VsdG8+Iik7CiAg
cE9wLndyaXRlbG4oIjwvRk9STT5cbiIpOwogIHBPcC53cml0ZWxuKCI8UyIrIkNSSVBUIisi
PlxuIik7CiAgLy9wT3Aud3JpdGVsbignZG9jdW1lbnQuZlRpdHVsb0NvbnRyYXRvLnN1Ym1p
dCgpO1xuJyk7CiAgcE9wLndyaXRlbG4oIjwvUyIrIkNSSVBUIisiPlxuIik7IAogIERlc1Rp
dD0xOyB9CiAgcE9wLndyaXRlbG4oIjxGT1JNIE5BTUU9ZlNhbGRvcz4iKTsKICBwT3Aud3Jp
dGVsbigiPENFTlRFUj4iKTsKICBwT3Aud3JpdGVsbigiPFRBQkxFIEJPUkRFUj0yIFdJRFRI
PTgwJT4iKTsKICAgIHBPcC53cml0ZWxuKCI8VFI+PFREIEJHQ09MT1I9TkFWWSBBTElHTj1D
RU5URVI+PEZPTlQgQ09MT1I9V0hJVEUgU0laRT0yPjxCPiIrcEhlYWRlci5jbm9tYnJlKyI8
L0I+PC9GT05UPjwvVEQ+PFREIGFsaWduPWNlbnRlcj48QSBIUkVGPSdqYXZhc2NyaXB0OlBy
ZWltcCh0aGlzLmZvcm0pOyc+PEZPTlQgU0laRT0xIENPTE9SPVwiI0ZGMDAwMFwiIEZBQ0U9
XCJIRUxWRVRJQ0FcIj48Qj5QUkVJTVBSSU1JUjwvQj48L0ZPTlQ+PC9BPjwvVEQ+Iik7CiAg
cE9wLndyaXRlbG4oJzxURCBhbGlnbj0iY2VudGVyIj48QSBIUkVGPSJqYXZhc2NyaXB0OkF5
dWRhKCk7Ij48Rk9OVCBTSVpFPTEgQ09MT1I9XCIjRkYwMDAwXCIgRkFDRT1cIkhFTFZFVElD
QVwiPjxCPkFZVURBPC9CPjwvRk9OVD48L0E+PC9URD48L1RSPjwvVEFCTEU+PEJSPicpOwog
IHBPcC53cml0ZWxuKCI8VEFCTEUgQk9SREVSPTIgV0lEVEg9ODAlPiIpOwogIHBPcC53cml0
ZWxuKCI8VFI+PFREIGFsaWduPWNlbnRlciBCR0NPTE9SPU5BVlk+IDxGT05UIFNJWkU9MiBD
T0xPUj1XSElURT48Qj5OdW0uIEN1ZW50YTwvQj48L0ZPTlQ+PC9URD48VEQgYWxpZ249Y2Vu
dGVyIEJHQ09MT1I9TkFWWT48Rk9OVCBTSVpFPTIgQ09MT1I9V0hJVEU+PEI+IERlc2NyaXBj
aSZvYWN1dGU7biA8L0I+PC9GT05UPjwvVEQ+PFREIGFsaWduPWNlbnRlciBCR0NPTE9SPU5B
Vlk+IDxGT05UIFNJWkU9MiBDT0xPUj1XSElURT48Qj4gU2FsZG8gPC9CPjwvRk9OVD48L1RE
PjxURCBhbGlnbj1jZW50ZXIgQkdDT0xPUj1OQVZZPiA8Rk9OVCBTSVpFPTIgQ09MT1I9V0hJ
VEU+PEI+IFNhbGRvIHBvciBhcGxpY2FyIDwvQj48L0ZPTlQ+PC9URD48VEQgYWxpZ249ZW50
ZXIgQkdDT0xPUj0nTkFWWSc+PEZPTlQgU0laRT0yIENPTE9SPSd3aGl0ZSc+PEI+RGV0YWxs
ZTwvQj48L0ZPTlQ+PC9URD48L1RSPiIpOwogIFBvbkxpc3RhU2FsZG9zKHBPcCk7IAogIHBP
cC53cml0ZWxuKCI8L1RBQkxFPiIpOwogIHBPcC53cml0ZWxuKCI8L0NFTlRFUj4iKTsKICBw
T3Aud3JpdGVsbigiPC9GT1JNPiIpOwogIHBPcC53cml0ZWxuKCI8UyIrIkNSSVBUIisiPiIp
OwogIHBPcC53cml0ZWxuKCJmdW5jdGlvbiBBeXVkYSgpIik7CiAgcE9wLndyaXRlbG4oInsi
KTsKICBwT3Aud3JpdGVsbigiaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmxhc3RJbmRleE9m
KCczLjAgTkFWSU8gKDg7IDcpJyk9PSAtMSkiKTsKICBwT3Aud3JpdGVsbigib3BlbignL2Nv
bnBlci9hX3ByZWltcHJlLmh0bScsJ0FZVURBJywnY29uZmlybSxyZXNpemFibGU9bm8sd2lk
dGg9NDAwLGhlaWdodD0xMzAnKTsiKTsKICBwT3Aud3JpdGVsbigiZWxzZSIpOwogIHBPcC53
cml0ZWxuKCJhbGVydCgnT3BjafNuIG5vIFNvcG9ydGFkYSBwb3IgTmV0Rm9yQWxsJykiKTsK
ICBwT3Aud3JpdGVsbigifSIpOwogIHBPcC53cml0ZWxuKCJmdW5jdGlvbiBQcmVpbXAoZm9y
bWEpIik7CiAgcE9wLndyaXRlbG4oInsiKTsKICBwT3Aud3JpdGVsbigiaWYgKG5hdmlnYXRv
ci5hcHBWZXJzaW9uLmxhc3RJbmRleE9mKCczLjAgTkFWSU8gKDg7IDcpJyk9PSAtMSkiKTsK
ICBwT3Aud3JpdGVsbigieyIpOwogIHBPcC53cml0ZWxuKCJ2YXIgdmVudGFuYT1vcGVuKCcn
LCd0bXBXaW5kb3cnLCdzY3JvbGxiYXJzPXllcyx3aWR0aD02MDAsaGVpZ2h0PTM1MCx0b29s
YmFyPXllcyxtZW51YmFyPXllcycpOyIpOwogIHBPcC53cml0ZWxuKCJ2YXIgcE9wPXZlbnRh
bmEuZG9jdW1lbnQ7Iik7CiAgcE9wLndyaXRlbG4oInZlbnRhbmEuZG9jdW1lbnQub3Blbigp
Iik7CiAgcE9wLndyaXRlbG4oInZlbnRhbmEuZG9jdW1lbnQuY2xlYXIoKTsiKTsKICBwT3Au
d3JpdGVsbigidmFyIHBMaXN0YT1udWxsOyIpOwogIHBPcC53cml0ZWxuKCJ2YXIgaTsiKTsK
ICBwT3Aud3JpdGVsbigidmFyIGNvbnQ9MDsiKTsKICBwT3Aud3JpdGVsbigidmFyIHBPYmo9
bnVsbDsiKTsKICBwT3Aud3JpdGVsbigidmFyIFRvdGFsU2FsZG89MC4wMDsiKTsKICBwT3Au
d3JpdGVsbigidmFyIFRvdGFsU2FsZG9TQkM9MC4wMDsiKTsKICBwT3Aud3JpdGVsbigidmFy
IFRvdGFsU2FsZG9ETEw9MC4wMDsiKTsKICBwT3Aud3JpdGVsbigidmFyIFRvdGFsU2FsZG9T
QkNETEw9MC4wMDsiKTsKICBwT3Aud3JpdGVsbigidmFyIFNhbGRvQ3VlbnRhPScnOyIpOwog
IHBPcC53cml0ZWxuKCJ2YXIgU2FsZG9TQkM9Jyc7Iik7CiAgcE9wLndyaXRlbG4oInZhciBp
VG1wMT0nICc7Iik7CiAgcE9wLndyaXRlbG4oInZhciBpVG1wMj0nICc7Iik7CiAgcE9wLndy
aXRlbG4oInZhciBpVG1wMz0nICc7Iik7CiAgcE9wLndyaXRlbG4oInZhciBpVG1wND0nICc7
Iik7CiAgcE9wLndyaXRlbG4oInZhciBpVG1wMURMTD0nICc7Iik7CiAgcE9wLndyaXRlbG4o
InZhciBpVG1wMkRMTD0nICc7Iik7CiAgcE9wLndyaXRlbG4oInZhciBpVG1wM0RMTD0nICc7
Iik7CiAgcE9wLndyaXRlbG4oInZhciBpVG1wNERMTD0nICc7Iik7CiAgcE9wLndyaXRlbG4o
InZhciBOdW1lcm9EZUN1ZW50YT0nJzsiKTsKICBwT3Aud3JpdGVsbigidmVudGFuYS5kb2N1
bWVudC53cml0ZSgnPEhUTUw+Jyk7Iik7CiAgcE9wLndyaXRlbG4oInZlbnRhbmEuZG9jdW1l
bnQud3JpdGUoJzxCT0RZIEJHQ09MT1I9V0hJVEU+Jyk7Iik7CiAgcE9wLndyaXRlbG4oInZl
bnRhbmEuZG9jdW1lbnQud3JpdGUoJzxUQUJMRSBCT1JERVI9MD48VEQ+PEZPTlQgU0laRT0y
IENPTE9SPVwiRkZDQzAwXCIgRkFDRT1cIkhFTFZFVElDQVwiPjxCPkNPTkVYSU9OPC9CPjwv
Rk9OVD48QlI+PEZPTlQgU0laRT0zIENPTE9SPVwiI0ZGMDAwMFwiIEZBQ0U9XCJIRUxDRVRJ
Q0FcIj48Qj5QZXJzb25hbDwvQj48L0ZPTlQ+PEJSPjxGT05UIFNJWkU9MiBDT0xPUj1cIiMw
MDAwMDBcIiBGQUNFPVwiSEVMVkVUSUNBXCI+PEI+QklUQUw8L0I+PC9GT05UPjwvVEQ+Jyk7
Iik7CiAgcE9wLndyaXRlbG4oInZlbnRhbmEuZG9jdW1lbnQud3JpdGUoJzxURD48SDI+PEZP
TlQgQ09MT1I9Ymx1ZT5Db25leGkmb2FjdXRlO24gUGVyc29uYWwgQml0YWw8L0ZPTlQ+PC9I
Mj48L1REPjwvVEFCTEU+PEJSPicpOyIpOwogIHBPcC53cml0ZWxuKCJ2ZW50YW5hLmRvY3Vt
ZW50LndyaXRlKCc8Q0VOVEVSPlVzdGVkIHJlYWxpeiZvYWN1dGU7IHVuYSBDb25zdWx0YSBk
ZSBTYWxkb3MgZGUgQ3VlbnRhcyBkZSBDaGVxdWVzIGVsIGQmaWFjdXRlO2E8QlI+PEI+IiAr
RmVjaGErIjwvQj4gYSBsYXMgPEI+IitIb3JhKyI8L0I+IDwvQ0VOVEVSPicpOyIpOwogIHBP
cC53cml0ZWxuKCJ2ZW50YW5hLmRvY3VtZW50LndyaXRlKCc8QlI+PENFTlRFUj4nKTsiKTsK
ICBwT3Aud3JpdGVsbigidmVudGFuYS5kb2N1bWVudC53cml0ZSgnPFRBQkxFIEJPUkRFUj0y
PicpOyIpOwogIHBPcC53cml0ZWxuKCJ2ZW50YW5hLmRvY3VtZW50LndyaXRlKCc8VFI+PFRE
IGFsaWduPWNlbnRlciBCR0NPTE9SPU5BVlk+PEZPTlQgU0laRT0yIENPTE9SPVdISVRFPjxC
Pk51bS5DdWVudGE8L0I+PC9GT05UPjwvVEQ+PFREIGFsaWduPWNlbnRlciBCR0NPTE9SPU5B
Vlk+PEZPTlQgU0laRT0yIENPTE9SPVdISVRFPjxCPkRlc2NyaXBjaSZvYWN1dGU7bjwvQj48
L0ZPTlQ+PC9URD48VEQgYWxpZ249Y2VudGVyIEJHQ09MT1I9TkFWWT48Rk9OVCBTSVpFPTIg
Q09MT1I9V0hJVEU+PEI+U2FsZG88L0I+PC9GT05UPjwvVEQ+PFREIGFsaWduPWNlbnRlciBC
R0NPTE9SPU5BVlk+PEZPTlQgU0laRT0yIENPTE9SPVdISVRFPjxCPlNhbGRvIHBvciBBcGxp
Y2FyPC9CPjwvRk9OVD48L1REPjwvVFI+Jyk7Iik7CglwTGlzdGEgPSBwYXJlbnQuR2V0UG9p
bnRlclJnKCk7CiAgICAgICAgY29udD0wOwoJcE9iaj1udWxsOwoJVG90YWxTYWxkbz0wLjAw
OwoJVG90YWxTYWxkb249MC4wMDsKCVRvdGFsU2FsZG9TQkM9MC4wMDsKCVRvdGFsU2FsZG9E
TEw9MC4wMDsKCVRvdGFsU2FsZG9TQkNETEw9MC4wMDsKCVNhbGRvQ3VlbnRhPSIiOwoJU2Fs
ZG9TQkM9IiI7CglpVG1wMyA9ICIgIjsKCWlUbXA0ID0gIiAiOwoJaVRtcDNETEwgPSAiICI7
CglpVG1wNERMTCA9ICIgIjsKCU51bWVyb0RlQ3VlbnRhPSIgIjsKICAgICAgICBhdXhjdGE9
IiAiOwoJaWYgKHBMaXN0YSA9PSBudWxsKQoJCWFsZXJ0KCJMaXN0YSBOdWxhIik7CgllbHNl
IHsKICAgICAgICAgaT0xOwoJCXBPYmogPSBwTGlzdGFbaV07CgkJd2hpbGUgKHBPYmogIT0g
bnVsbCkgewoJCQkJaWYgKCBwT2JqLmNQcm9kdWN0byA9PSAiRERBIiApIHsKCQkgICAgICAg
ICAgICAgICAgICAgY29udCsrOwoJCQkJfQoJCQkJaSsrOwoJCQkJcE9iaj1wTGlzdGFbaV07
CgkJfQoJCWlmICggY29udCA+IDApIHsKCQkJaT0xOwoJCQlwT2JqID0gcExpc3RhW2ldOwoJ
CQl3aGlsZSAocE9iaiAhPSBudWxsKSB7CgkJCQlpZiAoIHBPYmouY1Byb2R1Y3RvID09ICJE
REEiICkgewoJCQkgICAgICAgIFNhbGRvQ3VlbnRhPUZvcm1hdGVhU2FsZG8ocE9iai5jc2Rv
X2N0YSk7CgkJCQkJU2FsZG9TQkM9Rm9ybWF0ZWFTYWxkbyhwT2JqLmNzZG9fc2JjKTsKCQkJ
CQlOdW1lcm9EZUN1ZW50YT1RdWl0YUNlcm9zKHBPYmouY251bV9jdWVudGEpOwogICAgICAg
ICAgICAgICAgICAgIHBPcC53cml0ZWxuKCJ2ZW50YW5hLmRvY3VtZW50LndyaXRlKCc8VFI+
PFREIEFMSUdOPUNFTlRFUj48Rk9OVCBTSVpFPTIgQ09MT1I9IzAwMDAwMD4iK051bWVyb0Rl
Q3VlbnRhKyI8L0ZPTlQ+PC9URD48VEQ+PEZPTlQgU0laRT0yIENPTE9SPSMwMDAwMDA+Iitw
T2JqLmNkZXNjX2N0YSsiPC9GT05UPjwvVEQ+PFREIEFMSUdOPVJJR0hUPjxGT05UIFNJWkU9
MiBDT0xPUj0jMDAwMDAwPiQiK1NhbGRvQ3VlbnRhKyI8L0ZPTlQ+PC9URD48VEQgQUxJR049
UklHSFQ+PEZPTlQgU0laRT0yIENPTE9SPSMwMDAwMDA+ICQiK1NhbGRvU0JDKyI8L0ZPTlQ+
PC9URD4nKTsiKTsKCgkJCQkJaWYgKChwT2JqLmN0cG9fY3RhID09ICdBMScpIHx8IChwT2Jq
LmN0cG9fY3RhID09ICdBMicpIHx8IChwT2JqLmN0cG9fY3RhID09ICdBMycpIHx8IChwT2Jq
LmN0cG9fY3RhID09ICcwMCcpIHx8IChwT2JqLmN0cG9fY3RhID09ICcxNScpIHx8IChwT2Jq
LmN0cG9fY3RhID09ICcxNicpIHx8IChwT2JqLmN0cG9fY3RhID09ICcxNycpIHx8IChwT2Jq
LmN0cG9fY3RhID09ICcxOCcpIHx8IChwT2JqLmN0cG9fY3RhID09ICc2MScpIHx8IChwT2Jq
LmN0cG9fY3RhID09ICc2MicpIHx8IChwT2JqLmN0cG9fY3RhID09ICc2NScpIHx8IChwT2Jq
LmN0cG9fY3RhID09ICc2NicpIHx8IChwT2JqLmN0cG9fY3RhID09ICc2OScpIHx8IChwT2Jq
LmN0cG9fY3RhID09ICc4NScpIHx8IChwT2JqLmN0cG9fY3RhID09ICc4NycpKSB7CgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV4Y3RhID0gcE9iai5jc2RvX2N0YTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25vID0gYXV4Y3RhLnN1YnN0cmluZygx
LDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc2lnbm8gPT0gJy0nKXsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV4Y3RhID0gUXVpdGFHdWlv
bihwT2JqLmNzZG9fY3RhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VG90YWxTYWxkb249cGFyc2VGbG9hdChUb3RhbFNhbGRvbikrcGFyc2VGbG9hdChhdXhjdGEp
OyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWxTYWxkbz1w
YXJzZUZsb2F0KFRvdGFsU2FsZG8pK3BhcnNlRmxvYXQocE9iai5jc2RvX2N0YSk7ICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWxTYWxkb1NC
Qz1wYXJzZUZsb2F0KFRvdGFsU2FsZG9TQkMpK3BhcnNlRmxvYXQocE9iai5jc2RvX3NiYyk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCQkJCQlpZiAoKHBPYmouY3Rw
b19jdGEgPT0gJzYzJykgfHwgKHBPYmouY3Rwb19jdGEgPT0gJzY0JykgfHwgKHBPYmouY3Rw
b19jdGEgPT0gJzY3JykgfHwgKHBPYmouY3Rwb19jdGEgPT0gJzY4JykpIHsgIAoJCQkJCVRv
dGFsU2FsZG9TQkNETEw9VG90YWxTYWxkb1NCQ0RMTCsnKycrcE9iai5jc2RvX3NiYzsKCQkJ
CSAgICBUb3RhbFNhbGRvRExMPVRvdGFsU2FsZG9ETEwrJysnK3BPYmouY3Nkb19jdGE7CgkJ
CQkJfQoJCQkJfQoJCQkJaSsrOwoJCQkJcE9iaj1wTGlzdGFbaV07CgkJCX0KCSAgICAgICAg
VG90YWxTYWxkbz1wYXJzZUZsb2F0KFRvdGFsU2FsZG8pLXBhcnNlRmxvYXQoVG90YWxTYWxk
b24pOwkKCQkgICAgLy9UT1RBTCBNT05FREEgTkFDSU9OQUwKCQkJaVRtcDEgPSAoTWF0aC5y
b3VuZChldmFsKFRvdGFsU2FsZG8pKjEwMC4wMCkpLzEwMC4wMDsKCQkJaVRtcDIgPSAoTWF0
aC5yb3VuZChldmFsKFRvdGFsU2FsZG9TQkMpKjEwMC4wMCkpLzEwMC4wMDsKCQkJaVRtcDMg
PSAiICIraVRtcDE7CgkJCWlmICggaVRtcDMuaW5kZXhPZigiLiIpID09IC0xICkKCQkJCWlU
bXAzID0gaVRtcDMgKyAiLjAwIjsKCQkJaWYgKCAoaVRtcDMubGVuZ3RoIC0gaVRtcDMuaW5k
ZXhPZigiLiIpKTwzICkKCQkJCWlUbXAzID0gaVRtcDMgKyAiMCI7CgkJCWlUbXAzPUZvcm1h
dGVhU2FsZG8oaVRtcDMpOwoJCQlpVG1wNCA9ICIgIitpVG1wMjsKCQkJaWYgKCBpVG1wNC5p
bmRleE9mKCIuIikgPT0gLTEgKQoJCQkJaVRtcDQgPSBpVG1wNCArICIuMDAiOwoJCQlpVG1w
ND1Gb3JtYXRlYVNhbGRvKGlUbXA0KTsKICAgICAgICAgICAgcE9wLndyaXRlbG4oInZlbnRh
bmEuZG9jdW1lbnQud3JpdGUoJzxUUj48VEQ+PC9URD48VEQgQUxJR049UklHSFQ+PEI+PEZP
TlQgU0laRT0yIENPTE9SPWJsYWNrPlRvdGFsIE0uTjwvRk9OVD48L0I+PC9URD48VEQgQUxJ
R049UklHSFQ+PEI+PEZPTlQgU0laRT0yIENPTE9SPWJsYWNrPiQiK2lUbXAzKyI8L0ZPTlQ+
PC9CPjwvVEQ+PFREIEFMSUdOPVJJR0hUPjwvVEQ+Jyk7Iik7CgogICAgICAgICAgICAvL1RP
VEFMIERPTEFSRVMKCQkJaVRtcDFETEwgPSAoTWF0aC5yb3VuZChldmFsKFRvdGFsU2FsZG9E
TEwpKjEwMC4wMCkpLzEwMC4wMDsKCQkJaVRtcDJETEwgPSAoTWF0aC5yb3VuZChldmFsKFRv
dGFsU2FsZG9TQkNETEwpKjEwMC4wMCkpLzEwMC4wMDsKCQkJaVRtcDNETEw9ICIgIitpVG1w
MURMTDsKCQkJaWYgKCBpVG1wM0RMTC5pbmRleE9mKCIuIikgPT0gLTEgKQoJCQkJaVRtcDNE
TEwgPSBpVG1wM0RMTCArICIuMDAiOwoJCQlpZiAoIChpVG1wM0RMTC5sZW5ndGggLSBpVG1w
M0RMTC5pbmRleE9mKCIuIikpPDMgKQoJCQkJaVRtcDNETEwgPSBpVG1wM0RMTCArICIwIjsK
CQkJaVRtcDNETEw9Rm9ybWF0ZWFTYWxkbyhpVG1wM0RMTCk7CgkJCWlUbXA0RExMID0gIiAi
K2lUbXAyRExMOwoJCQlpZiAoIGlUbXA0RExMLmluZGV4T2YoIi4iKSA9PSAtMSApCgkJCQlp
VG1wNERMTCA9IGlUbXA0RExMICsgIi4wMCI7CgkJCWlUbXA0RExMPUZvcm1hdGVhU2FsZG8o
aVRtcDRETEwpOwogICAgICAgICAgICBwT3Aud3JpdGVsbigidmVudGFuYS5kb2N1bWVudC53
cml0ZSgnPFRSPjxURD48L1REPjxURCBBTElHTj1SSUdIVD48Qj48Rk9OVCBTSVpFPTIgQ09M
T1I9YmxhY2s+VG90YWwgRExMPC9GT05UPjwvQj48L1REPjxURCBBTElHTj1SSUdIVD48Qj48
Rk9OVCBTSVpFPTIgQ09MT1I9YmxhY2s+JCIraVRtcDNETEwrIjwvRk9OVD48L0I+PC9URD48
VEQgQUxJR049UklHSFQ+PC9URD4nKTsiKTsKCQl9CgkJCgkJZWxzZSB7CgkJCWFsZXJ0KCJP
cGVyYWNp824gbm8gZGlzcG9uaWJsZSBwb3IgZWwgbW9tZW50bywgSW50ZW50ZSBt4XMgdGFy
ZGUiKTsKCQkJQWNjSW1wPTE7CgkJfQoJfQogcE9wLndyaXRlbG4oInZlbnRhbmEuZG9jdW1l
bnQud3JpdGUoJzwvVEFCTEU+Jyk7Iik7CiBwT3Aud3JpdGVsbigidmVudGFuYS5kb2N1bWVu
dC53cml0ZSgnPC9DRU5URVI+Jyk7Iik7CiBwT3Aud3JpdGVsbigidmVudGFuYS5kb2N1bWVu
dC53cml0ZSgnPFRSPicpOyIpOwogcE9wLndyaXRlbG4oInZlbnRhbmEuZG9jdW1lbnQud3Jp
dGUoJzxDRU5URVI+Jyk7Iik7CiBwT3Aud3JpdGVsbigidmVudGFuYS5kb2N1bWVudC53cml0
ZSgnPEZPTlQgU0laRT0tMj5MYSBpbmZvcm1hY2kmb2FjdXRlO24gbGlzdGFkYSBlcyBzb2xv
IGRlIGNhcmFjdGVyIGluZm9ybWF0aXZvPC9GT05UPjxCUj4nKTsiKTsKIHBPcC53cml0ZWxu
KCJ2ZW50YW5hLmRvY3VtZW50LndyaXRlKCc8QlI+IFBhcmEgY3VhbHF1aWVyIGR1ZGEgbyBh
Y2xhcmFjafNuIG5vcyBwb25lbW9zIGEgc3VzIPNyZGVuZXMgZW4gPEI+Y29udGFjdG9AYml0
YWwuY29tLm14IDwvQj5vIHNpIGxvIHByZWZpZXJlIHB1ZWRlIGNvbXVuaWNhcnNlIGEgTO1u
ZWEgQml0YWwgYSBsb3MgdGVs6WZvbm9zIDU3MjEtMzM5MCBkZXNkZSBlbCBELkYuIG8gYWwg
MDEgODAwIDcxMjQ4MjUgbGFkYSBzaW4gY29zdG8gZGVzZGUgZWwgaW50ZXJpb3IgZGVsIHBh
7XMsIGRpZ2l0ZSBsYSBvcGNp824gMyAoQXNpc3RlbmNpYSBQZXJzb25hbCkgeSBwb3N0ZXJp
b3JtZW50ZSBsYSBvcGNp824gMyAoQml0YWwgZW4gSW50ZXJuZXQpLiBDb24gZ3VzdG8gbGUg
YXRlbmRlcmVtb3MuICA8QlI+PEJSPiA8Rk9OVCBTSVpFPTI+IFNpIGRlc2VhIGNhbWJpYXIg
c3UgY2xhdmUgZGUgY29ycmVvIG8gZGFyIGRlIGJhamEgZWwgc2VydmljaW8sIGFjdWRhIGFs
IG1lbvogZGUgb3Ryb3Mgc2VydmljaW9zLiA8L0ZPTlQ+PEJSPicpOyIpOwpwT3Aud3JpdGVs
bigidmVudGFuYS5kb2N1bWVudC53cml0ZSgnPEJSPicpOyIpOwpwT3Aud3JpdGVsbigidmVu
dGFuYS5kb2N1bWVudC53cml0ZSgnPEI+U2VsZWNjaW9uZSBsYSBvcGNpJm9hY3V0ZTtuIFBy
aW50IChJbXByaW1pcikgZGUgc3UgTmF2ZWdhZG9yIHNpIGRlc2VhIGltcHJpbWlyIGVzdGEg
cGFudGFsbGEuPC9CPjxCUj4nKTsiKTsKcE9wLndyaXRlbG4oInZlbnRhbmEuZG9jdW1lbnQu
d3JpdGUoJzxCUj48Q0VOVEVSPjxBIEhSRUY9XCJqYXZhc2NyaXB0OnNlbGYuY2xvc2UoKVwi
PiIgKyBsaWdhMigiQWNjZXNvIGEgbGEgQXBsaWNhY2kmb2FjdXRlO24iKSArICI8L0E+Jyk7
Iik7CnBPcC53cml0ZWxuKCJ2ZW50YW5hLmRvY3VtZW50LndyaXRlKCc8L0NFTlRFUj4nKTsi
KTsKcE9wLndyaXRlbG4oInZlbnRhbmEuZG9jdW1lbnQud3JpdGUoJzwvQk9EWT4nKTsiKTsK
cE9wLndyaXRlbG4oInZlbnRhbmEuZG9jdW1lbnQud3JpdGUoJzwvSFRNTD4nKTsiKTsKcE9w
LndyaXRlbG4oInZlbnRhbmEuZG9jdW1lbnQuY2xvc2UoKTsiKTsKcE9wLndyaXRlbG4oIn0i
KTsKcE9wLndyaXRlbG4oImVsc2UiKTsKcE9wLndyaXRlbG4oImFsZXJ0KCdPcGNp824gbm8g
U29wb3J0YWRhIHBvciBOZXRGb3JBbGwnKSIpOwpwT3Aud3JpdGVsbigifSIpOwpwT3Aud3Jp
dGVsbigiPC9TIisiQ1JJUFQiKyI+Iik7CnRvcC5mc2FsZG9zLmRvY3VtZW50LmNsb3NlKCk7
IAogfQoKZnVuY3Rpb24gQWN0dWFsaXphRmVjaGEoRmVjaGEsSG9yYSkKeyB2YXIgcEhlYWRl
cj1udWxsOwogICBwSGVhZGVyPXBhcmVudC5HZXRQb2ludGVySGQoKTsKICAgcEhlYWRlci5j
RmVjaGE9RmVjaGE7CiAgIHBIZWFkZXIuY0hvcmE9SG9yYTsgfQpmdW5jdGlvbiBBY3R1YWxp
emFDb250cmF0b3MoY29udHJhdG9zKQp7ICAgICAgIHZhciBwSGVhZGVyPW51bGw7CglwSGVh
ZGVyPSBwYXJlbnQuR2V0UG9pbnRlckhkKCk7CglwSGVhZGVyLmNDb250cmF0b3M9Y29udHJh
dG9zOyB9CgpmdW5jdGlvbiBBY3R1YWxpemFDb250cmF0byhjb250cmF0bykKeyAgICAgICB2
YXIgcEhlYWRlcj1udWxsOwoJcEhlYWRlcj0gcGFyZW50LkdldFBvaW50ZXJIZCgpOwoJcEhl
YWRlci5jQ29udHJhdG89Y29udHJhdG87IH0KCmZ1bmN0aW9uIEFjdHVhbGl6YVBhc3N3b3Jk
KHBhc3MpCnsgICAgICAgdmFyIHBIZWFkZXI9bnVsbDsKCXBIZWFkZXI9IHBhcmVudC5HZXRQ
b2ludGVySGQoKTsKCXBIZWFkZXIuY1BBU1M9cGFzczsgfQoKZnVuY3Rpb24gQWN0aXZhUmVs
b2ooKQp7IFRPPXNldFRpbWVvdXQoICdsb2dvZmYoKScsMTIwMDAwMCk7Cn0KCmZ1bmN0aW9u
IEFjdGl2YVJlbG9qSU1QVSgpCnsKICAgICAgICB0aW1lPTg0MDAwMDA7CiAgICAgICAgY2xl
YXJUaW1lb3V0KFRPKTsKICAgICAgICBUTz1zZXRUaW1lb3V0KCAnbG9nb2ZmKCknLHRpbWUp
Owp9CgpmdW5jdGlvbiBsb2dvZmYoKQp7ICAgICAgIERlc2FjdGl2YVJlbG9qKCk7CiAgICAg
ICAgd2luZG93LmxvY2F0aW9uLmhyZWY9ImphdmFzY3JpcHQ6dG9wLmZyYW1lc1s0XS5FeHBp
cmEoKTsiOwp9CmZ1bmN0aW9uIERlc2FjdGl2YVJlbG9qKCkKewogICAgICAgIGNsZWFyVGlt
ZW91dChUTyk7Cn0KZnVuY3Rpb24gUmVsb2FkUmVsb2ooKQp7ICAgICAgICBEZXNhY3RpdmFS
ZWxvaigpOwogICAgICAgICBBY3RpdmFSZWxvaigpO30KCkFjdGl2YVJlbG9qKCk7IHBhcmVu
dC5TZXRGaW5pc2goMSk7Cgo8L1NDUklQVD48L0JPRFk+PC9IVE1MPg=9
--Tnb22epso009Aszg054KI90x3jeE3--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019