www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2001/10/26/10:33:33

Message-ID: <20011026142859.50974.qmail@web9104.mail.yahoo.com>
Date: Fri, 26 Oct 2001 07:28:59 -0700 (PDT)
From: ROLAND <roland_asmann AT yahoo DOT com>
Subject: Problems with sgtty.h, ioctl.h and termios.h
To: djgpp AT delorie DOT com
MIME-Version: 1.0
Reply-To: djgpp AT delorie DOT com

--0-816682262-1004106539=:48781
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

I am trying to convert a program from UNIX to PC.
The UNIX program is using sgtty.h and is working fine.
For PC I need the same stuff that is in sgtty.h and I
found that it was in termios.h and sys/ioctl.h.
Only problem is that in sys/ioctl.h a part is turned
off by a #if 0.
Can someone tell me what I can do to make this program
work?
I added the program as an attachment, so feel free to
experiment.
Also there is an attachment which is an edited script
containing the errors my compiler gives.
Please help me.

ROLAND


__________________________________________________
Do You Yahoo!?
Make a great connection at Yahoo! Personals.
http://personals.yahoo.com
--0-816682262-1004106539=:48781
Content-Type: application/x-unknown; name="mipdown.c"
Content-Transfer-Encoding: base64
Content-Description: mipdown.c
Content-Disposition: attachment; filename="mipdown.c"

LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICovCi8qIERPQ1VNRU5UQ09ERSAgPSA5NTAxLTQ0My05OTAw
MC1DLTAwMS0wMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyog
REFURSAgICAgICAgICA9IDk0LTA4LTIzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqLwovKiBOQU1FICAgICAgICAgID0g
TUlQRE9XTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICovCi8qIEZVTkNUSU9OICAgICAgPSBNSVBET1dOIENPTlZFUlNJ
T04vRE9XTkxPQUQgUFJPR1JBTSAgICAgICAgICAgICAgICAgKi8KLyogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqLwovKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKiovCi8qKi8KI2luY2x1ZGUJPHN0ZGlvLmg+CiNpbmNsdWRlCTxjdHlw
ZS5oPgojaWZkZWYgX1VOSVgKI2luY2x1ZGUJPHNndHR5Lmg+CiNlbHNlCiNp
bmNsdWRlCTx0ZXJtaW9zLmg+CiNpbmNsdWRlCTxzeXMvaW9jdGwuaD4KI2Vu
ZGlmCiNpbmNsdWRlCTxzaWduYWwuaD4KCiNkZWZpbmUJCVNFVAkJMQojZGVm
aW5lCQlSRVNFVAkJMAojZGVmaW5lCQlBQ0sJCTEJLyogcG9zLiBhY2tub3ds
ZWRnZW1lbnQJCSovCiNkZWZpbmUJCU5BSwkJMAkvKiBuZWcuIGFja25vd2xl
ZGdlbWVudAkJKi8KI2RlZmluZQkJRVRYCQkxMAkvKiBlbmQgb2YgdGV4dCBj
aGFyYWN0ZXIJKi8KI2RlZmluZQkJT0JKRklMCQkwCS8qIGZpbGV0eXBlIG9i
amVjdGZpbGUJCSovCiNkZWZpbmUJCURBVEZJTAkJMQkvKiBmaWxldHlwZSB0
ZWNobmljYWwgcy4gZmlsZQkqLwojZGVmaW5lCQlNRVNGSUwJCTIJLyogZmls
ZXR5cGUgaW50ZXJtZWRpYXRlIGZpbGUJKi8KI2RlZmluZQkJREVGTUVTCQki
bWlwcC5tZXMiIC8qIGRlZmF1bHQgaW50ZXJtLiBmaWxlCSovCiNkZWZpbmUJ
CUVSUkZJTAkJMwkvKiBmaWxldHlwZSBlcnJvcmZpbGUJCSovCiNkZWZpbmUJ
CUlOUEZJTAkJNAkvKiBmaWxldHlwZSBpbnB1dGZpbGUJCSovCiNkZWZpbmUJ
CU1BWElOCQk4MCAgICAgLyogbWF4IG5vLiBvZiBjaGFycy9saW5lIGhlbHBm
aWxlKi8KI2RlZmluZQkJTUFYSU5QQgkJMTk4MAkvKiBtYXggbm8uIG9mIGNo
YXJzIGluIGlucHV0CSovCgkJCQkJLyogY29udmVyc2lvbiB0byBieXRlcwkJ
Ki8KI2RlZmluZQkJTUFYQlVGCQkyMDQ4CS8qIGxlbmd0aCBvZiBkYXRhIGJ1
ZmZlcgkqLwojZGVmaW5lCQlERUZMRU4JCTI1MgkvKiBkZWZhdWx0IG1lc3Nh
Z2VsZW5ndGgJKi8KI2RlZmluZQkJTUlOTEVOCQk0CS8qIG1pbmltdW0gbWVz
c2FnZSBsZW5ndGgJKi8KI2RlZmluZQkJVE9QTEVOCQkxMDAwCS8qIG1heGlt
dW0gbWVzc2FnZSBsZW5ndGgJKi8KI2RlZmluZQkJREVGQkFVRAkJNDgwMAkv
KiBkZWZhdWx0IGJhdWRyYXRlCQkqLwojZGVmaW5lCQlERUZCQkFVRAlCNDgw
MAkvKiBkZWZhdWx0IGJhdWRyYXRlCQkqLwojZGVmaW5lCQlUSU1PVVQJCTEw
CS8qIHRpbWVvdXQgPSAxMCBzZWMuCQkqLwojZGVmaW5lCQlERUZERVYJCSIv
ZGV2L3R0eTAwIgkvKiBkZWZhdWx0IGRldmljZQkqLwojZGVmaW5lCQlTRVRN
U0sJCSI4MDAwODAiIC8qIG1hc2sgb2YgYml0cyB0byBzZXQJCSovCiNkZWZp
bmUJCUNMUk1TSwkJIkJGRkY5RiIgLyogbWFzayBvZiBiaXRzIHRvIGNsZWFy
CSovCiNkZWZpbmUJCVNFVE1TS1IJCSI0MDAwMDAiIC8qIG1hc2sgdG8gc2V0
IHJldHJ5IGJpdAkqLwojZGVmaW5lCQlJTlZNU0tSCQkiNDAiCSAvKiBtYXNr
IHRvIGludmVydCByLmIuKGNoZWNrKQkqLwojZGVmaW5lCQlTRVRNU0tMCQki
MDAwMDIwIiAvKiBtYXNrIHRvIHNldCBsYXN0IG1lc3NhZ2UgYml0Ki8KI2Rl
ZmluZQkJRE9UCQknLicJCS8qIGNoYXJhY3RlciAuCQkqLwojZGVmaW5lCQlE
VUJET1QJCSc6JwkJLyogY2hhcmFjdGVyIDoJCSovCiNkZWZpbmUJCUVSQVNF
Q0gJCSdcMjYnCSAvKiBlcmFzZSBjaGFyYWN0ZXIJCSovCiNkZWZpbmUJCUtJ
TExDSAkJJ1wzMCcJIC8qIGtpbGwgY2hhcmFjdGVyCQkqLwojZGVmaW5lCQlG
TEFHCQkwMzAxCSAvKiBldmVuLCBvZGQgYW5kIHRhbmRlbSAJKi8KI2RlZmlu
ZQkJTkwJCXByaW50ZigiXG4iKQkvKiBvdXRwdXQgb2YgbmV3bGluZQkqLwov
KgwqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKgkJCQkJCQkJ
CSovCi8qCQkJcHJvZ3JhbSBuYW1lCQkJCQkqLwovKgkJCQkJCQkJCSovCi8q
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKiovCgpjaGFyCXByb2dyYW1fbmFt
ZVtdPQoiPDw8PDwJTUlQRE9XTiB2ZXJzaW9uIDogMDMsCWRhdGU6IDI0LWph
bi05MAk+Pj4+PiI7Ci8qDCovCi8qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiovCi8qCQkJCQkJCQkJKi8KLyoJCQlnbG9iYWwgdmFyaWFibGVzCQkJCSov
Ci8qCQkJCQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K
CgpzdHJ1Y3QJc2d0dHliCWxrdGVybTsKCmxvbmcJaXJlY25vLAkJCQkvKiBp
bnB1dHJlY29yZCBudW1iZXIJCSovCglvcmVjbm87CQkJCS8qIG91dHB1dHJl
Y29yZCBudW1iZXIJCSovCmludAllcnJmbGcsCQkJCS8qIGVycm9yZmxhZyhz
ZXQgaWYgZXJyb3IpCSovCglmaWx0eXBbNDFdLAkJCS8qIGZpbGV0eXBlKGV4
dGVuc2lvbikJCSovCglwYWdlbm8sCQkJCS8qIG5vLiBvZiB0aGUgUkFNLXBh
Z2UJCSovCglkb3Rwb3M9NCwJCQkvKiBwb3NpdGlvbiBkb3QgaW50ZXJtLmZp
bGVuYW1lCSovCgltZXNvcHQ9UkVTRVQsCQkJLyogc2V0IGlmIG9wdGlvbiAt
bSB1c2VkCSovCgllcnJvcHQ9UkVTRVQsCQkJLyogc2V0IGlmIG9wdGlvbiAt
ZSB1c2VkCSovCglsZW5vcHQ9UkVTRVQsCQkJLyogc2V0IGlmIG9wdGlvbiAt
bCB1c2VkCSovCgliYXVkb3B0PVJFU0VULAkJCS8qIHNldCBpZiBvcHRpb24g
LWIgdXNlZAkqLwoJZGV2b3B0PVJFU0VULAkJCS8qIHNldCBpZiBvcHRpb24g
LWQgdXNlZAkqLwoJb25lb3B0PVJFU0VULAkJCS8qIHNldCBpZiBvcHRpb24g
LTEgdXNlZAkqLwoJdHdvb3B0PVJFU0VULAkJCS8qIHNldCBpZiBvcHRpb24g
LTIgdXNlZAkqLwoJc2F2b3B0PVJFU0VULAkJCS8qIHNldCBpZiBvcHRpb24g
LXMgdXNlZAkqLwoJcHJvZ29wdD1SRVNFVCwJCQkvKiBzZXQgaWYgb3B0aW9u
IC1wIHVzZWQJKi8KCWYxLAkJCQkvKiBmaWxlIGRlc2NyaXB0b3IgMQkJKi8K
CWYyLAkJCQkvKiBmaWxlIGRlc2NyaXB0b3IgMgkJKi8KCWYzLAkJCQkvKiBm
aWxlIGRlc2NyaXB0b3IgMwkJKi8KCWY0LAkJCQkvKiBmaWxlIGRlc2NyaXB0
b3IgNAkJKi8KCW9sZGFkciwJCQkJLyogbGFzdCBhZGRyZXNzCQkJKi8KCWVv
ZiwJCQkJLyogZW5kX29mX2ZpbGUgZmxhZwkJKi8KCW1heGxlbj1ERUZMRU4s
CQkJLyogbWF4LiBsZW5ndGggb2Ygb25lIG1lc3NhZ2UJKi8KCWxhc3RmaWws
CQkJLyogZmlsZXR5cGUgbGFzdCBjb252ZXJ0ZWQgZmlsZQkqLwoJYmF1ZD1E
RUZCQVVELAkJCS8qIGJhdWRyYXRlIG9mIGRvd25sb2FkCQkqLwoJYmF1ZHRh
YltdPXs5NjAwLDQ4MDAsMjQwMCwxODAwLAkvKiBiYXVkcmF0ZSB0YWJsZQkJ
Ki8KCQkgIDEyMDAsNjAwLDMwMCwyMDAsMTUwLAoJCQkgIDExMCw3NSw1MCww
fSwKCWJkcmF0ZT1ERUZCQkFVRCwJCS8qIGJhdWRyYXRlKHN5c3RlbSkJCSov
CgliZHJhdGV0YWJbXT17Qjk2MDAsQjQ4MDAsQjI0MDAsCS8qIHN5c3RlbSBi
YXVkcmF0ZSB0YWJsZQkqLwoJCSAgICBCMTIwMCxCNjAwLEIzMDAsQjIwMCwK
CQkgICAgQjE1MCxCMTEwLEI3NSxCNTB9LAoJY2hhcnNpbiwJCQkvKiBuby4g
b2YgY2hhcmFjdGVycyByZWFkCSovCgloZXhwb3dlcltdPXsxLDE2LDI1Niw0
MDk2LDY1NTM2fTsvKiBwb3dlcnMgb2Ygc2l4dGVlbiAoaGV4KQkqLwpjaGFy
CWFuc3dlclsxMjFdLAkJCS8qIGFuc3dlciBzdHJpbmcgZm9yIHF1ZXN0aW9u
cwkqLwoJZHVtbXksCQkJCS8qIGR1bW15IGNoYXJhY3RlcgkJKi8KCWlucGZp
bFs0MF1bODFdLAkJICAgICAgLyogaW5wdXRmaWxlbmFtZShzKSgub2JqIG9y
IC5kYXQpCSovCgltZXNmaWxbODFdPURFRk1FUywJCS8qIGludGVybWVkaWF0
ZWZpbGVuYW1lKC5tZXMpCSovCgllcnJmaWxbODFdLAkJCS8qIGVycm9yZmls
ZW5hbWUocykoLmVycikJKi8KCXN0cnRhZFs3XSwJCQkvKiBzdGFydGFkZHJl
c3MgaW4gcHJvbQkJKi8KCWhlYWRlcls0MF1bMTBdLAkJCS8qIDMoNCkgYnl0
ZXMgaGVhZGVyIG9mIG1lc3NhZ2UJKi8KCWRlZmV4dFs1XVs1XT17Ii5vYmoi
LAkJLyogZGVmYXVsdCBleHRlbnNpb25zIG9mCSovCgkJICAgICAgIi5kYXQi
LAkJLyogZmlsZW5hbWVzCQkJKi8KCQkgICAgICAiLm1lcyIsCgkJICAgICAg
Ii5lcnIifSwKCWlucGJ1ZltNQVhCVUZdLAkJCS8qIGRhdGEgaW5wdXQgYnVm
ZmVyCQkqLwoJb3V0YnVmW01BWEJVRl0sCQkJLyogZGF0YSBvdXRwdXQgYnVm
ZmVyCQkqLwoJZW1wdG1lc1syMV0sCQkJLyogZW1wdHkgbWVzc2FnZSBidWZm
ZXIJCSovCglhbm1lc1syNTZdLAkJCS8qIGFjay9uYWsgbWVzc2FnZSBidWZm
ZXIJKi8KCW5ha21lc1tdPSIwMDAxMDAwMDAwMDAwMFxuIiwJLyogbWVzc2Fn
ZSB3aXRoIE5BSwkJKi8KCWRldmljZVs4MF09REVGREVWLAkJLyogZGV2aWNl
bmFtZQkJCSovCgloZXhzZXRbXT0iMDEyMzQ1Njc4OUFCQ0RFRiI7CS8qIGhl
eGFkZWNpbWFsIGNoYXJhY3RlcnNldAkqLwoKLyoMKi8KLyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKi8KLyoJCQkJCQkJCQkqLwovKgkJCQltYWluIHBy
b2dyYW0JCQkJKi8KLyoJCQkJCQkJCQkqLwovKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqLwoKLyogVGhpcyBwcm9ncmFtIGNvbnZlcnRzIHRoZSBvYmpl
Y3RmaWxlKHMpIG9mIHRoZSBNSVBQIGFzc2VtYmxlciBhbmQJKi8KLyogdGVj
aG5pY2FsIHNldHRpbmdzIGZpbGVzIGludG8gaW50ZXJtZWRpYXRlIGZpbGVz
IGFuZC9vciB0YWtlcyBjYXJlIAkqLwovKiBvZiB0aGUgZG93bmxvYWQgb2Yg
dGhlIGludGVybWVkaWF0ZSBmaWxlIHRvIHJhY2tfY29udHJvbC4JCSovCgpt
YWluKGFyZ2MsYXJndikKCmludAlhcmdjOwpjaGFyCSphcmd2W107CnsKICAg
ICAgICBjaGFyCSpnZXRlbnYoKTsKCWludAlpbnBmOwkJCS8qIG5vLiBvZiBp
bnB1dGZpbGVuYW1lcwkqLwoJdm9pZAlpbnRlcnJ1cHQoKTsJCS8qIGludGVy
cnVwdCByb3V0aW5lCQkqLwoKCXNpZ25hbChTSUdJTlQsaW50ZXJydXB0KTsJ
LyogY2F0Y2ggaW50ZXJydXB0CQkqLwoJTkw7CglwcmludGYoIiVzXG4iLHBy
b2dyYW1fbmFtZSk7CglOTDsKCWVycmZsZz1SRVNFVDsKCWlucGY9aW5wcm9j
KGFyZ2MsYXJndik7CQkvKiBpbnB1dCBwcm9jZXNzb3IJCSovCglpZih0d29v
cHQhPVNFVCkKCQljb252Ynl0KGlucGYpOwkJLyogY29udmVyc2lvbiBpbnRv
IGJ5dGUgZm9ybWF0CSovCglpZihvbmVvcHQhPVNFVCkKCQlkb3dubG9hZCgp
OwkJLyogZG93bmxvYWQgdG8gcmFja19jb250cm9sCSovCglmaW5pc2goMCk7
CglyZXR1cm4oMCk7Cn0vKgwqLwovKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqLwovKgkJCQkJCQkJCSovCi8qCQkJc3Vicm91dGluZSBpbnByb2MJCQkJ
Ki8KLyoJCQkJCQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
LwoKLyogVGhlIHN1YnJvdXRpbmUgaW5wcm9jIGlzIGFuIGlucHV0IHByb2Nl
c3NvciB3aGljaCByZWFkcyB0aGUgY29tbWFuZC0JKi8KLyogbGluZSBhbmQg
ZGVyaXZlcyBmcm9tIGl0IHRoZSBmaWxlbmFtZXMgKGFuZCBvcHRpb25zKS4J
CSovCi8qIFRoZSByb3V0aW5lIGFsc28gY2hlY2tzIHRoZSBjb21tYW5kLWxp
bmUgZm9yIGVycm9ycy4JCQkqLwoKaW5wcm9jKGFyZ2MsYXJndikKCmludAlh
cmdjOwpjaGFyCSphcmd2W107CnsKCWludAlpPTEsCQkJLyogbG9vcCB2YXJp
YWJsZQkJKi8KCQlqLAkJCS8qIGxvb3AgdmFyaWFibGUJCSovCgkJaGVscHZh
ciwJCS8qIGhlbHAgdmFyaWFibGUJCSovCgkJaW5wPSAtMSwJCS8qIG5vLiBv
ZiBpbnB1dGZpbGVuYW1lcwkqLwoJCWxhc3RpbnA9UkVTRVQ7CQkvKiBzZXQg
aWYgaW5wdXRmaWxlPSAnXG4nCSovCgoJd2hpbGUoaTxhcmdjKXsKCSAgICBz
d2l0Y2goYXJndltpXVswXSl7CgkgICAgY2FzZSAnLSc6CQkJLyogYXJndW1l
bnQgaXMgb3B0aW9uCQkqLwoJCXN3aXRjaChhcmd2W2ldWzFdKXsKCQljYXNl
ICdvJzoJLyogb3B0aW9uOiBvYmplY3RmaWxlbmFtZT1uZXh0IGFyZ3VtZW50
CSovCgkJCQkvKgkgICBmaWxldHlwZSBpcyBub3QgYXNrZWQgZm9yCSovCgkJ
ICAgIGFyZ3NwZWMoKytpLGFyZ2MsIm9iamVjdGZpbGVuYW1lIik7CgkJICAg
IGZpbHR5cFsrK2lucF09T0JKRklMOwoJCQkJCQkvKiByZWFkIG9iamVjdGZp
bGVuYW1lCSovCgkJICAgIGZldGNobmFtZShpbnBmaWxbaW5wXSxhcmd2W2ld
LCZmaWx0eXBbaW5wXSk7CgkJICAgIGlmKGVycmZsZyE9UkVTRVQpIGV4aXQo
LTEpOwoJCSAgICBhcmdzcGVjKCsraSxhcmdjLCJoZWFkZXIiKTsKCQkJCQkJ
LyogcmVhZCBoZWFkZXJieXRlcwkqLwoJCSAgICBzc2NhbmYoYXJndltpXSwi
JThzIixoZWFkZXJbaW5wXSk7CgkJICAgIGlmKGNoYXJjaChoZWFkZXJbaW5w
XSw4KT09U0VUKXsKCQkJZXJyb3IoImhlYWRlciBvZiAiLC0xLGlucGZpbFtp
bnBdKTsKCQkJZXJyb3IoIiBtdXN0IGJlIDggaGV4IGNoYXJhY3RlcnMiLC0x
LCJcbiIpOwoJCQlleGl0KC0xKTsKCQkgICAgfQoJCSAgICBicmVhazsKCQlj
YXNlICd0JzoJLyogb3B0aW9uOiB0ZWNobi5zLmZpbGVuYW1lPW5leHQgYXJn
dW1lbnQqLwoJCQkJLyoJICAgZmlsZXR5cGUgaXMgbm90IGFza2VkIGZvcgkq
LwoJCSAgICBhcmdzcGVjKCsraSxhcmdjLCJ0ZWNobmljYWwgc2V0dGluZ3Mg
ZmlsZW5hbWUiKTsKCQkgICAgZmlsdHlwWysraW5wXT1EQVRGSUw7CgkJCQkv
KiByZWFkIHRlY2huaWNhbCBzZXR0aW5ncyBmaWxlbmFtZQkqLwoJCSAgICBm
ZXRjaG5hbWUoaW5wZmlsW2lucF0sYXJndltpXSwmZmlsdHlwW2lucF0pOwoJ
CSAgICBpZihlcnJmbGchPVJFU0VUKSBleGl0KC0xKTsKCQkgICAgYXJnc3Bl
YygrK2ksYXJnYywiaGVhZGVyIik7CgkJCQkJCS8qIHJlYWQgaGVhZGVyYnl0
ZXMJKi8KCQkgICAgc3NjYW5mKGFyZ3ZbaV0sIiU2cyIsaGVhZGVyW2lucF0p
OwoJCSAgICBpZihjaGFyY2goaGVhZGVyW2lucF0sNik9PVNFVCl7CgkJCWVy
cm9yKCJoZWFkZXIgb2YgIiwtMSxpbnBmaWxbaW5wXSk7CgkJCWVycm9yKCIg
bXVzdCBiZSA2IGhleCBjaGFyYWN0ZXJzIiwtMSwiXG4iKTsKCQkJZXhpdCgt
MSk7CgkJICAgIH0KCQkgICAgYnJlYWs7CgkJY2FzZSAnbSc6CS8qIG9wdGlv
bjogaW50ZXJtLmZpbGVuYW1lPW5leHQgYXJndW1lbnQqLwoJCSAgICBhcmdz
cGVjKCsraSxhcmdjLCJpbnRlcm1lZGlhdGUgZmlsZW5hbWUiKTsKCQkgICAg
bWVzb3B0PVNFVDsKCQkgICAgZmlsdHlwWzQwXT1NRVNGSUw7CgkJCQkJLyog
cmVhZCBpbnRlcm1lZGlhdGUgZmlsZW5hbWUJKi8KCQkgICAgZG90cG9zPWZl
dGNobmFtZShtZXNmaWwsYXJndltpXSwmZmlsdHlwWzQwXSk7CgkJICAgIGlm
KGVycmZsZyE9UkVTRVQpIGV4aXQoLTEpOwoJCSAgICBicmVhazsKCQljYXNl
ICdlJzoJLyogb3B0aW9uOiBlcnJvcmZpbGVuYW1lPW5leHQgYXJndW1lbnQJ
Ki8KCQkJCS8qIGluc3RlYWQgb2YgZGVmYXVsdCBsb2FkZmlsZW5hbWUuZXJy
CSovCgkJICAgIGFyZ3NwZWMoKytpLGFyZ2MsImVycm9yZmlsZW5hbWUiKTsK
CQkgICAgZXJyb3B0PVNFVDsKCQkgICAgZmlsdHlwWzQwXT1FUlJGSUw7CgkJ
CQkJCS8qIHJlYWQgZXJyb3JmaWxlbmFtZQkqLwoJCSAgICBmZXRjaG5hbWUo
ZXJyZmlsLGFyZ3ZbaV0sJmZpbHR5cFs0MF0pOwoJCSAgICBpZihlcnJmbGch
PVJFU0VUKSBleGl0KC0xKTsKCQkgICAgYnJlYWs7CgkJY2FzZSAnbCc6CS8q
IG9wdGlvbjogbWVzc2FnZWxlbmd0aD1uZXh0IGFyZ3VtZW50CSovCgkJCSAJ
LyoJICAgaW5zdGVhZCBvZiBERUZMRU4JCSovCgkJICAgIGFyZ3NwZWMoKytp
LGFyZ2MsIm1lc3NhZ2VsZW5ndGgiKTsKCQkgICAgbGVub3B0PVNFVDsKCQkJ
CQkJLyogcmVhZCBtZXNzYWdlbGVuZ3RoCSovCgkJICAgIGlmKChzc2NhbmYo
YXJndltpXSwiJWQiLCZtYXhsZW4pKT09LTEpewoJCQllcnJvcigibWVzc2Fn
ZWxlbmd0aCBtdXN0IGJlIGludGVnZXIiLC0xLCJcbiIpOwoJCQlleGl0KC0x
KTsKCQkgICAgfQoJCSAgICBpZihtYXhsZW48TUlOTEVOIHx8IG1heGxlbj5U
T1BMRU4pewoJCQllcnJvcigibGVuZ3RoIG11c3QgbGllIGJldHdlZW4gIixN
SU5MRU4sIiIpOwoJCQllcnJvcigiIGFuZCAiLFRPUExFTiwiXG4iKTsKCQkJ
ZXhpdCgtMSk7CgkJICAgIH0KCQkgICAgYnJlYWs7CgkJY2FzZSAnYic6CS8q
IG9wdGlvbjogYmF1ZHJhdGUgPSBuZXh0IGFyZ3VtZW50CSovCgkJCSAJLyoJ
ICAgaW5zdGVhZCBvZiBERUZCQVVECQkqLwoJCSAgICBhcmdzcGVjKCsraSxh
cmdjLCJiYXVkcmF0ZSIpOwoJCSAgICBiYXVkb3B0PVNFVDsKCQkJCQkJLyog
cmVhZCBiYXVkcmF0ZQkqLwoJCSAgICBpZigoc3NjYW5mKGFyZ3ZbaV0sIiVk
IiwmYmF1ZCkpPT0tMSl7CgkJCWVycm9yKCJiYXVkcmF0ZSBtdXN0IGJlIGlu
dGVnZXIiLC0xLCJcbiIpOwoJCQlleGl0KC0xKTsKCQkgICAgfQoJCSAgICBm
b3Ioaj0wOyhoZWxwdmFyPWJhdWR0YWJbal0pPjAmJmhlbHB2YXIhPWJhdWQ7
aisrKTsKCQkgICAgaWYoaGVscHZhciE9YmF1ZCl7CgkJCWVycm9yKCJiYXVk
cmF0ZTogIixiYXVkLCIiKTsKCQkJZXJyb3IoIiBub3QgZmFtaWxpYXIiLC0x
LCJcbiIpOwoJCQlleGl0KC0xKTsKCQkgICAgfQoJCSAgICBlbHNlCWJkcmF0
ZT1iZHJhdGV0YWJbal07CgkJICAgIGJyZWFrOwoJCWNhc2UgJ2QnOgkvKiBv
cHRpb246IGRldmljZSA9bmV4dCBhcmcuCQkqLwoJCQkJLyoJICAgaW5zdGVh
ZCBvZiBERUZERVYJCSovCgkJICAgIGFyZ3NwZWMoKytpLGFyZ2MsImRldmlj
ZSIpOwoJCSAgICBkZXZvcHQ9U0VUOwoJCQkJCQkvKiByZWFkIGRldmljZW5h
bWUJKi8KCQkgICAgc3ByaW50ZihkZXZpY2UsIiVzIixhcmd2W2ldKTsKCQkg
ICAgYnJlYWs7CgkJY2FzZSAnMSc6CS8qIG9wdGlvbjogb25seSBjb252ZXJz
aW9uCQkqLwoJCSAgICBvbmVvcHQ9U0VUOwoJCSAgICBicmVhazsKCQljYXNl
ICcyJzoJLyogb3B0aW9uOiBvbmx5IGRvd25sb2FkCQkqLwoJCSAgICB0d29v
cHQ9U0VUOwoJCSAgICBicmVhazsKCQljYXNlICdzJzoJLyogbm8gcmVtb3Zh
bCBvZiBpbnRlcm1lZGlhdGUgZmlsZQkqLwoJCSAgICBzYXZvcHQ9U0VUOwoJ
CSAgICBicmVhazsKCQljYXNlICdwJzoJLyogc2hvdyBkb3dubG9hZCBwcm9n
cmVzcyhvbmx5IFBNRFMgSUkpCSovCgkJICAgIHByb2dvcHQ9U0VUOwoJCSAg
ICBicmVhazsKCQlkZWZhdWx0OgkJCS8qIGlsbGVnYWwgb3B0aW9uCSovCgkJ
ICAgIGVycm9yKCJpbGxlZ2FsIG9wdGlvbjogIiwtMSxhcmd2W2ldKTsKCQkg
ICAgZXJyb3IoIlxuIiwtMSwiIik7CgkJICAgIGV4aXQoLTEpOwoJCX0KCQli
cmVhazsKCSAgICBkZWZhdWx0OgkJCQkvKiBubyBvcHRpb24JCSovCgkJZXJy
b3IoInVua25vd24gb3B0aW9uOiAiLC0xLGFyZ3ZbaV0pOwoJCWVycm9yKCJc
biIsLTEsIiIpOwoJCWV4aXQoLTEpOwoJICAgIH0KCWkrKzsKCX0KCWlmKChp
bnA8MCYmdHdvb3B0IT1TRVQpfHwobWVzb3B0IT1TRVQmJnR3b29wdCE9UkVT
RVQpKXsKCQkJCQkvKiBubyBpbnB1dGZpbGVuYW1lIHNwZWNpZmllZAkqLwoJ
ICAgIGFuc3dlclswXT0naCc7CgkgICAgd2hpbGUgKGFuc3dlclswXSE9J2kn
KXsgCgkJZXJyb3IoIlxuaGVscC9pbnRlcmFjdGl2ZSBpbnB1dC9xdWl0KGgv
aS9xKT4iLC0xLCIiKTsKCQlnZXRzKGFuc3dlcik7CQkJLyogcmVhZCBhbnN3
ZXIJCSovCgkJc3dpdGNoKGFuc3dlclswXSl7CgkJY2FzZSAncSc6CQkJLyog
cXVpdCB0aGUgcHJvZ3JhbQkqLwoJCQlleGl0KC0xKTsKCQkJYnJlYWs7CgkJ
Y2FzZSAnaSc6CQkJLyogcHJvbXB0IGZvciBuZXcgaW5wdXQJKi8KCQkJYnJl
YWs7CgkJZGVmYXVsdDoJCQkvKiBwcmludCBoZWxwZmlsZQkqLwoJCQloZWxw
ZmlsZSgpOwoJCX0KCSAgICB9CgkgICAgd2hpbGUob25lb3B0IT1TRVQgJiYg
dHdvb3B0IT1TRVQpewoJCQkJCS8qIHByb21wdDogY29udmVyc2lvbi9kb3du
bG9hZAkqLwoJCXByaW50Zigib25seSBjb252ZXJzaW9uL2Rvd25sb2FkKDEv
MikJOiAiKTsKCQlnZXRzKGFuc3dlcik7CgkJZXJyZmxnPVJFU0VUOwoJCWlm
KGFuc3dlclswXSE9J1wwJyl7CQkvKiByZWFkIDEgb3IgMgkJKi8KCQkgICAg
aWYoYW5zd2VyWzBdPT0nMScpCQkvKiBvbmx5IGNvbnZlcnNpb24JKi8KCQkJ
b25lb3B0PVNFVDsKCQkgICAgZWxzZSBpZihhbnN3ZXJbMF09PScyJykJLyog
b25seSBkb3dubG9hZAkqLwoJCQl0d29vcHQ9U0VUOwoJCSAgICBlbHNlCWVy
cmZsZz1TRVQ7CgkJfQoJCWVsc2UgCWJyZWFrOwoJICAgIH0KCQkJCQkvKiBp
bnRlcmFjdGl2ZSBtb2RlCQkqLwoJICAgIHdoaWxlKChsYXN0aW5wIT1TRVQg
fHwgaW5wPDApJiZ0d29vcHQhPVNFVCl7CgkJCQkJLyogcHJvbXB0IGZvciBp
bnB1dGZpbGVuYW1lKHMpLAkqLwoJCQkJCS8qIGZpbGV0eXBlKHMpIGFuZCBo
ZWFkZXIocykJKi8KCQlwcmludGYoImlucHV0ZmlsZW5hbWUJCQk6ICIpOwoJ
CWdldHMoYW5zd2VyKTsKCQlpZihhbnN3ZXJbMF09PSdcMCcpIGxhc3RpbnA9
U0VUOwoJCWVsc2V7CQkJCS8qIHJlYWQgaW5wdXRmaWxlbmFtZQkqLwoJCSAg
ICBsYXN0aW5wPVJFU0VUOwoJCSAgICBmaWx0eXBbKytpbnBdPUlOUEZJTDsK
CQkgICAgZmV0Y2huYW1lKGlucGZpbFtpbnBdLGFuc3dlciwmZmlsdHlwW2lu
cF0pOwoJCSAgICBpZihlcnJmbGchPVJFU0VUKSAtLWlucDsJLyogZXJyb3Ig
aW4gZmV0Y2huYW1lCSovCgkJICAgIGVsc2V7CQkvKiBwcm9tcHQgZm9yIGhl
YWRlcmJ5dGVzCSovCgkJCXByb21wdCgicHJvY2Vzc29ybmFtZQkiLCZoZWFk
ZXJbaW5wXVswXSk7CgkJCXByb21wdCgicHJvY2Vzc25hbWUJIiwmaGVhZGVy
W2lucF1bMl0pOwoJCQlwcm9tcHQoInBhcmFtZXRlcm5hbWUJIiwmaGVhZGVy
W2lucF1bNF0pOwoJCQloZWFkZXJbaW5wXVs2XT0nXDAnOwoJCQlpZihmaWx0
eXBbaW5wXT09T0JKRklMKXsKCQkJICAgIHByb21wdCgicGFnZW51bWJlcgki
LCZoZWFkZXJbaW5wXVs2XSk7CgkJCSAgICBoZWFkZXJbaW5wXVs4XT0nXDAn
OwoJCQl9CgkJICAgIH0KCQl9CgkgICAgfQoJICAgIHdoaWxlKG1lc29wdCE9
U0VUKXsJCS8qIHByb21wdCBmb3IgaW50ZXJtLiBmaWxlbmFtZQkqLwoJCXBy
aW50ZigiaW50ZXJtZWRpYXRlIGZpbGVuYW1lCQk6ICIpOwoJCWdldHMoYW5z
d2VyKTsKCQlpZihhbnN3ZXJbMF0hPSdcMCcpewoJCSAgICBmaWx0eXBbNDBd
PU1FU0ZJTDsKCQkgICAgZG90cG9zPWZldGNobmFtZShtZXNmaWwsYW5zd2Vy
LCZmaWx0eXBbNDBdKTsKCQkgICAgaWYoZXJyZmxnIT1TRVQpIG1lc29wdD1T
RVQ7CgkJfQoJCWVsc2UgaWYoZXJyZmxnIT1TRVQpIGJyZWFrOwoJICAgIH0K
CSAgICB3aGlsZShlcnJvcHQhPVNFVCYmdHdvb3B0IT1TRVQpeyAvKiBwcm9t
cHQgZm9yIGVycm9yZmlsZW5hbWUqLwoJCXByaW50ZigiZXJyb3JmaWxlbmFt
ZQkJCTogIik7CgkJZ2V0cyhhbnN3ZXIpOwoJCWlmKGFuc3dlclswXSE9J1ww
Jyl7CgkJICAgIGZpbHR5cFs0MF09RVJSRklMOwoJCSAgICBmZXRjaG5hbWUo
ZXJyZmlsLGFuc3dlciwmZmlsdHlwWzQwXSk7CgkJICAgIGlmKGVycmZsZyE9
U0VUKSBlcnJvcHQ9U0VUOwoJCX0KCQllbHNlIGlmKGVycmZsZyE9U0VUKSBi
cmVhazsKCSAgICB9CgkgICAgd2hpbGUobGVub3B0IT1TRVQmJnR3b29wdCE9
U0VUKXsvKiBwcm9tcHQgZm9yIG1lc3NhZ2VsZW5ndGgJKi8KCQlwcmludGYo
Im1lc3NhZ2VsZW5ndGgJCQk6ICIpOwoJCWdldHMoYW5zd2VyKTsKCQlpZihh
bnN3ZXJbMF0hPSdcMCcpewkvKiByZWFkIG1lc3NhZ2VsZW5ndGgJCSovCgkJ
ICAgIGlmKChzc2NhbmYoYW5zd2VyLCIlZCIsJm1heGxlbikpPT0tMSl7CgkJ
CWVycm9yKCJtZXNzYWdlbGVuZ3RoIG11c3QgYmUgaW50ZWdlciIsLTEsIlxu
Iik7CgkJCWVycmZsZz1TRVQ7CgkJICAgIH0KCQkgICAgZWxzZSBpZihtYXhs
ZW48TUlOTEVOIHx8IG1heGxlbj5UT1BMRU4pewoJCQllcnJvcigibGVuZ3Ro
IG11c3QgbGllIGJldHdlZW4gIixNSU5MRU4sIiIpOwoJCQllcnJvcigiIGFu
ZCAiLFRPUExFTiwiXG4iKTsKCQkJZXJyZmxnPVNFVDsKCQkgICAgfQoJCSAg
ICBlbHNlewoJCQlsZW5vcHQ9U0VUOwoJCQllcnJmbGc9UkVTRVQ7CgkJICAg
IH0KCQl9CgkJZWxzZSBpZihlcnJmbGchPVNFVCkgYnJlYWs7CgkgICAgfQoJ
ICAgIHdoaWxlKGJhdWRvcHQhPVNFVCYmb25lb3B0IT1TRVQpewoJCQkJCS8q
IHByb21wdCBmb3IgYmF1ZHJhdGUJCSovCgkJcHJpbnRmKCJiYXVkcmF0ZQkJ
CTogIik7CgkJZ2V0cyhhbnN3ZXIpOwoJCWlmKGFuc3dlclswXSE9J1wwJyl7
CS8qIHJlYWQgYmF1ZHJhdGUJCSovCgkJICAgIGlmKChzc2NhbmYoYW5zd2Vy
LCIlZCIsJmJhdWQpKT09LTEpewoJCQllcnJvcigiYmF1ZHJhdGUgbXVzdCBi
ZSBpbnRlZ2VyIiwtMSwiXG4iKTsKCQkJZXJyZmxnPVNFVDsKCQkgICAgfQoJ
CSAgICBlbHNlewoJCQlmb3Ioaj0wOyhoZWxwdmFyPWJhdWR0YWJbal0pPjAm
JmhlbHB2YXIhPWJhdWQ7aisrKTsKCQkJaWYoaGVscHZhciE9YmF1ZCl7CgkJ
CSAgICBlcnJvcigiYmF1ZHJhdGU6ICIsYmF1ZCwiIik7CgkJCSAgICBlcnJv
cigiIG5vdCBmYW1pbGlhciIsLTEsIlxuIik7CgkJCSAgICBlcnJmbGc9U0VU
OwoJCQl9CgkJCWVsc2V7CgkJCSAgICBiZHJhdGU9YmRyYXRldGFiW2ldOwoJ
CQkgICAgYmF1ZG9wdD1TRVQ7CgkJCSAgICBlcnJmbGc9UkVTRVQ7CgkJCX0K
CQkgICAgfQoJCX0KCQllbHNlIGlmKGVycmZsZyE9U0VUKSBicmVhazsKCSAg
ICB9CgkgICAgd2hpbGUoZGV2b3B0IT1TRVQmJm9uZW9wdCE9U0VUKXsgICAv
KiBwcm9tcHQgZm9yIGRldmljZW5hbWUJKi8KCQlwcmludGYoImRldmljZQkJ
CQk6ICIpOwoJCWdldHMoYW5zd2VyKTsKCQlpZihhbnN3ZXJbMF0hPSdcMCcp
ewkvKiByZWFkIGRldmljZW5hbWUJCSovCgkJICAgIHNwcmludGYoZGV2aWNl
LCIlcyIsYW5zd2VyKTsKCQkgICAgZGV2b3B0PVNFVDsKCQl9CgkJZWxzZSBi
cmVhazsKCSAgICB9CgkgICAgd2hpbGUoc2F2b3B0IT1TRVQmJm9uZW9wdCE9
U0VUKXsKCQlwcmludGYoInNhdmUgaW50ZXJtZWRpYXRlIGZpbGUoeS9uKT8J
OiAiKTsKCQlnZXRzKGFuc3dlcik7CgkJZXJyZmxnPVJFU0VUOwoJCWlmKGFu
c3dlclswXSE9J1wwJyl7CQkvKiByZWFkIHkgb3IgbgkJKi8KCQkgICAgaWYo
YW5zd2VyWzBdPT0neScpCQkvKiBzYXZlCQkJKi8KCQkJc2F2b3B0PVNFVDsK
CQkgICAgZWxzZSBpZihhbnN3ZXJbMF09PSduJykJLyogbm8gc2F2ZQkJKi8K
CQkJYnJlYWs7CgkJICAgIGVsc2UKCQkJZXJyZmxnPVNFVDsKCQl9CgkJZWxz
ZSAJYnJlYWs7CgkgICAgfQoJICAgIHdoaWxlKHByb2dvcHQhPVNFVCYmb25l
b3B0IT1TRVQpewoJCXByaW50Zigic2hvdyBwcm9ncmVzcyBhdCBkb3dubG9h
ZCh5L24pPwk6ICIpOwoJCWdldHMoYW5zd2VyKTsKCQlpZihhbnN3ZXJbMF0h
PSdcMCcpewkJLyogcmVhZCB5IG9yIG4JCSovCgkJICAgIGlmKGFuc3dlclsw
XT09J3knKQkJLyogc2hvdyBwcm9ncmVzcwkqLwoJCQlwcm9nb3B0PVNFVDsK
CQkgICAgZWxzZSBpZihhbnN3ZXJbMF09PSduJykJLyogZG9uJ3Qgc2hvdyBw
cm9ncmVzcwkqLwoJCQlicmVhazsKCQkgICAgZWxzZQoJCQllcnJmbGc9U0VU
OwoJCX0KCQllbHNlCWJyZWFrOwoJICAgIH0KCX0KCWlmKGlucD49NDApewoJ
ICAgIGVycm9yKCJtYXhpbXVtIG51bWJlciBvZiBpbnB1dGZpbGVzKDQwKSBl
eGNlZWRlZCIsLTEsIlxuIik7CgkgICAgZXhpdCgtMSk7Cgl9CglpZihlcnJv
cHQhPVNFVCl7CQkvKiBkZWZpbmUgZXJyb3JmaWxlbmFtZQkJKi8KCSAgICBm
b3Ioaj0wO2o8ZG90cG9zO2orKykJLyogY29weSBmaWxlbmFtZQkJKi8KCQll
cnJmaWxbal09bWVzZmlsW2pdOwoJICAgIGZvcihqPTA7ajw9NDtqKyspCQkv
KiBkZWZhdWx0IGV4dGVuc2lvbjogLmVycgkqLwoJCWVycmZpbFtkb3Rwb3Mr
al09ZGVmZXh0W0VSUkZJTF1bal07Cgl9CglpZih0d29vcHQhPVNFVCl7Cgkg
ICAgcHJpbnRmKCJpbnB1dGZpbGVuYW1lcytoZWFkZXJzCTogJXMJJXNcbiIs
CgkJCQkJCWlucGZpbFswXSxoZWFkZXJbMF0pOwoJICAgIGZvcihpPTE7aTw9
aW5wO2krKykKCSAgICAgICAgcHJpbnRmKCIJCQkgICVzCSVzXG4iLAoJCQkJ
CQlpbnBmaWxbaV0saGVhZGVyW2ldKTsKCX0KCXByaW50ZigiaW50ZXJtZWRp
YXRlIGZpbGVuYW1lCTogJXNcbiIsbWVzZmlsKTsKCXByaW50ZigiZXJyb3Jm
aWxlbmFtZQkJOiAlc1xuIixlcnJmaWwpOwoJaWYodHdvb3B0IT1TRVQpCgkJ
cHJpbnRmKCJtZXNzYWdlbGVuZ3RoCQk6ICVkXG4iLG1heGxlbik7CglpZihv
bmVvcHQhPVNFVCl7CgkJcHJpbnRmKCJiYXVkcmF0ZQkJOiAlZFxuIixiYXVk
KTsKCQlwcmludGYoImRldmljZQkJCTogJXNcbiIsZGV2aWNlKTsKCQlpZih0
d29vcHQhPVJFU0VUKQoJCSAgICBwcmludGYoIm9ubHkgZG93bmxvYWRcbiIp
OwoJCWlmKHNhdm9wdCE9UkVTRVQpCgkJICAgIHByaW50ZigiJXMgaXMgc2F2
ZWQgYWZ0ZXIgZG93bmxvYWRcbiIsbWVzZmlsKTsKCQllbHNlCgkJICAgIHBy
aW50ZigiJXMgaXMgcmVtb3ZlZCBhZnRlciBkb3dubG9hZFxuIixtZXNmaWwp
OwoJfQoJZWxzZQoJCXByaW50Zigib25seSBjb252ZXJzaW9uXG4iKTsKCXJl
dHVybihpbnApOwp9LyoMKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ki8KLyoJCQkJCQkJCQkqLwovKgkJCXN1YnJvdXRpbmUgYXJnc3BlYwkJCQkq
LwovKgkJCQkJCQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov
CgovKiBUaGlzIHN1YnJvdXRpbmUgY2hlY2tzLCBpZiB0aGUgbmV4dCBhcmd1
bWVudCBpcyBwcm92aWRlZCBvciBub3QuCSovCi8qIElmIG5vdCwgYW4gZXJy
b3JtZXNzYWdlIGlzIGdpdmVuIGFuZCB0aGUgcHJvZ3JhbSBzdG9wcy4JCSov
CgphcmdzcGVjKGFyZyxtYXhhcmcsYXJnc3RyaW5nKQoKaW50CWFyZywJCQkv
KiBuby4gb2YgdGhlIGFyZ3VtZW50IHdoaWNoIGlzIGFza2VkCSovCgltYXhh
cmc7CQkJLyogbm8uIG9mIHRoZSBsYXN0IGFyZ3VtZW50IHByb3ZpZGVkCSov
CmNoYXIJYXJnc3RyaW5nW107CQkvKiBhcmd1bWVudCB3aGljaCBpcyBhc2tl
ZAkJKi8KewoJaWYoYXJnPj1tYXhhcmcpewoJCWVycm9yKGFyZ3N0cmluZywt
MSwiIG5vdCBzcGVjaWZpZWQiKTsKCQllcnJvcigiXG4iLC0xLCIiKTsKCQll
eGl0KC0xKTsKCX0KfS8qDCovCi8qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiovCi8qCQkJCQkJCQkJKi8KLyoJCQlzdWJyb3V0aW5lIGZldGNobmFtZQkJ
CQkqLwovKgkJCQkJCQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiovCgovKiBUaGlzIHN1YnJvdXRpbmUgZmV0Y2hlcyBhIGZpbGVuYW1lIG91
dCBvZiBhcmcgYW5kIHB1dHMgaXQgaW4gbmFtZS4JKi8KLyogSXQgYWxzbyBj
aGVja3MgdGhlIG5hbWUgZm9yIHRoZSBleHRlbnNpb24gYW5kIHJldHVybnMg
dGhlIHBvc2l0aW9uCSovCi8qIG9mIHRoZSBkb3QuIElmIHRoZSBleHRlbnNp
b24gZmFpbHMsIHRoZSBkZWZhdWx0IGV4dGVuc2lvbiB3aWxsIGJlCSovCi8q
IGFzc3VtZWQuCQkJCQkJCQkqLwoKZmV0Y2huYW1lKG5hbWUsYXJnLGZpbHR5
cCkKCmludAkqZmlsdHlwOwkJLyogcG9pbnRlciB0byBmaWxldHlwZShleHRl
bnNpb24pCSovCmNoYXIJbmFtZVtdLAkJCS8qIHRoZSBuYW1lIGZldGNoZWQg
ZnJvbSB0aGUgYXJndW1lbnQJKi8KCWFyZ1tdOwkJCS8qIHRoZSBhcmd1bWVu
dAkJCQkqLwp7CglpbnQJaSwJCS8qIGxvb3AgdmFyaWFibGUJCQkqLwoJCWos
CQkvKiBsb29wIHZhcmlhYmxlCQkJKi8KCQlkb3Q9IC0xOwkvKiBzZXQgcG9z
aXRpb24gb2YgZG90IHRvIG5lZ2F0aXZlCSovCgljaGFyCWM9YXJnWzBdOwkv
KiBvbmUgY2hhcmFjdGVyCQkJKi8KCgllcnJmbGc9UkVTRVQ7Cglmb3IoaT0w
O2MhPSdcMCc7Yz1hcmdbaV0pewkJLyogZmV0Y2ggbmFtZQkJKi8KCQluYW1l
W2ldPWM7CgkJaWYoYz09RE9UIHx8IGM9PURVQkRPVCkKCQkJZG90PWk7CgkJ
aSsrOwoJfQoJbmFtZVtpXT0nXDAnOwoJd2hpbGUoKmZpbHR5cD09SU5QRklM
KXsJCS8qIHByb21wdCBmb3IgZmlsZXR5cGUJCSovCgkJcHJpbnRmKCJmaWxl
dHlwZShvPW9iai90PXRlY2huaWNhbCBzZXR0aW5ncykJOiIpOwoJCWlmKChh
bnN3ZXJbMF09Z2V0Y2hhcigpKSE9J1xuJykJLyogcmVhZCBvbmUgY2hhcmFj
dGVyCSovCgkJCXdoaWxlKChkdW1teT1nZXRjaGFyKCkpIT0nXG4nKTsKCQkJ
CQkvKiBza2lwIHJlc3Qgb2YgbGluZQkJKi8KCQlzd2l0Y2goYW5zd2VyWzBd
KXsKCQljYXNlICdvJzoJCS8qIG9iamVjdGZpbGUJCQkqLwoJCQkqZmlsdHlw
PU9CSkZJTDsKCQkJYnJlYWs7CgkJY2FzZSAndCc6CQkvKiB0ZWNobmljYWwg
c2V0dGluZ3MgZmlsZQkqLwoJCQkqZmlsdHlwPURBVEZJTDsKCQkJYnJlYWs7
CgkJZGVmYXVsdDoJCS8qIGlsbGVnYWwgZmlsZXR5cGUJCSovCgkJCWVycm9y
KCJpbGxlZ2FsIGZpbGV0eXBlIiwtMSwiXG4iKTsKCQl9Cgl9CglpZihkb3Q8
MCl7CQkvKiBleHRlbnNpb24gaXMgZGVmYXVsdCBleHRlbnNpb24JKi8KCQlk
b3Q9aTsKCQlmb3IoaT0wO2k8PTQ7aSsrKQkvKiBmaWxsIGV4dGVuc2lvbiBp
biBzdHJpbmcJKi8KCQkJbmFtZVtkb3QraV09ZGVmZXh0WypmaWx0eXBdW2ld
OwoJfQoJZWxzZXsJCQkJCS8qIGNoZWNrIGV4dGVuc2lvbgkqLwoJCWZvcihp
PTA7aTw0O2krKyl7CgkJCWlmKGkhPSAqZmlsdHlwKXsJLyogY29tcGFyZSBl
eHRlbnNpb25zCSovCgkJCSAgICBlcnJmbGc9U0VUOwkJLyogc2V0IGVycm9y
ZmxhZwkqLwoJCQkgICAgZm9yKGo9MDtqPDQ7aisrKXsKCQkJCWlmKG5hbWVb
ZG90K2pdIT1kZWZleHRbaV1bal0pCgkJCQkgICAgZXJyZmxnPVJFU0VUOyAv
KiByZXNldCBlcnJvcmZsYWcJKi8KCQkJICAgIH0KCQkJfQoJCQlpZihlcnJm
bGchPVJFU0VUKXsKCQkJICAgIGVycm9yKCJpbGxlZ2FsIGV4dGVuc2lvbjog
IiwtMSxkZWZleHRbaV0pOwoJCQkgICAgZXJyb3IoIlxuIiwtMSwiIik7CgkJ
CSAgICBicmVhazsKCQkJfQoJCX0KCX0KCXJldHVybihkb3QpOwp9LyoMKi8K
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoJCQkJCQkJCQkqLwov
KgkJCXN1YnJvdXRpbmUgcHJvbXB0CQkJCSovCi8qCQkJCQkJCQkJKi8KLyoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qIHRoaXMgc3Vicm91dGlu
ZSBwcm9tcHRzIGZvciBhIGJ5dGUgcmVmZXJyZWQgdG8gYW4gaW5wdXRuYW1l
CQkqLwovKiBhbmQgdHJpZXMgdG8gZG8gc28sIHVudGlsIHRoZSBieXRlIGhh
cyB0aGUgcmlnaHQgZm9ybWF0KGhleCkuCSovCgpwcm9tcHQoaW5wbmFtLGJ5
dGUpCgpjaGFyCWlucG5hbVtdLAkJLyogbmFtZSBvZiBieXRlIHRvIHByb21w
dCBmb3IJCSovCglieXRlW107CQkJLyogYnl0ZSB0byByZXR1cm4JCQkqLwp7
CglpbnQJZXJyZmxnOwkJLyogZXJyb3JmbGFnCQkJCSovCgoJZXJyZmxnPVNF
VDsJCQkJLyogc2V0IGVycm9yZmxhZwkqLwoJd2hpbGUoZXJyZmxnIT1SRVNF
VCl7CgkgICAgcHJpbnRmKCIlcwkoMWJ5dGUpOiAiLGlucG5hbSk7CS8qIHBy
b21wdCBmb3IgaW5wdXQJKi8KCSAgICBpZigoYnl0ZVswXT1nZXRjaGFyKCkp
IT0nXG4nJiYJLyogcmVhZCBieXRlCQkqLwoJICAgICAgIChieXRlWzFdPWdl
dGNoYXIoKSkhPSdcbicpCgkJd2hpbGUoKGR1bW15PWdldGNoYXIoKSkhPSdc
bicpOwkvKiBza2lwIHJlc3QJCSovCgkJYnl0ZVsyXT0nXDAnOwoJCWlmKChl
cnJmbGc9Y2hhcmNoKGJ5dGUsMikpIT1SRVNFVCl7CgkJICAgIGVycm9yKGlu
cG5hbSwtMSwiICIpOwkvKiB3cm9uZyBpbnB1dCBmb3JtYXQJKi8KCQkgICAg
ZXJyb3IoIm11c3QgYmUgdHdvIGhleCBjaGFyYWN0ZXJzIiwtMSwiXG4iKTsK
CQl9Cgl9Cn0vKgwqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwov
KgkJCQkJCQkJCSovCi8qCQkJc3Vicm91dGluZSBjb252Ynl0CQkJCSovCi8q
CQkJCQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8q
IFRoaXMgc3Vicm91dGluZSBjb252ZXJ0cyBlYWNoIGlucHV0ZmlsZSBpbnRv
IGEgYnl0ZSBmb3JtYXR0ZWQJKi8KLyogaW50ZXJtZWRpYXRlIGZpbGUuCQkJ
CQkJCSovCgpjb252Ynl0KGlucGYpCgppbnQJaW5wZjsJCQkJLyogbm8uIG9m
IGlucHV0ZmlsZXMJCSovCgp7CglpbnQJaTsJCQkvKiBsb29wIHZhcmlhYmxl
CQkqLwoJY2hhcgloZXhtYXhsWzRdOwkJLyogbWF4aW11bSBtZXNzYWdlIGxl
bmd0aChoZXgpCSovCgoJcHJpbnRmKCJDT05WRVJTSU9OIE9GIElOUFVURklM
RVNcblxuIik7CglpZigoZjI9Y3JlYXQobWVzZmlsLDA2NDQpKT09LTEpewkv
KiBjcmVhdGUgZmlsZQkJKi8KCQllcnJvcigiZXJyb3I6ICIsLTEsbWVzZmls
KTsKCQllcnJvcigiIGNhbiBub3QgYmUgY3JlYXRlZCIsLTEsIlxuIik7CgkJ
ZmluaXNoKC0xKTsKCX0KCWlmKG9wZW4oZXJyZmlsLDEpIT0gLTEpCQkvKiBy
ZW1vdmUgb2xkIGVycm9yZmlsZQkJKi8KCQl1bmxpbmsoZXJyZmlsKTsKCWxh
c3RmaWw9ZmlsdHlwWzBdOwkJLyogZmlsZXR5cGUgb2YgZmlyc3QgaW5wdXRm
aWxlCSovCglmaWx0eXBbaW5wZisxXT1maWx0eXBbaW5wZl0gXiAxOwoJaW50
aGV4KG1heGxlbis4LGhleG1heGwsNCk7CS8qIGNvbnZlcnQgbWF4LiBtZXMu
IGwuIHRvIGhleAkqLwoJbHNlZWsoZjIsMEwsMCk7CQkJLyogcmV3aW5kIGlu
dGVybWVkaWF0ZSBmaWxlCSovCgl3cml0ZShmMixoZXhtYXhsLDQpOwkJLyog
b3V0cHV0IG9mIG1heC4gbWVzLiBsZW5ndGgJKi8KCW9yZWNubz00OwoJZm9y
KGk9MDtpPD1pbnBmO2krKyl7CQkvKiBjb252ZXJ0IGVhY2ggaW5wdXRmaWxl
CSovCgkJaWYoZmlsdHlwW2ldIT1sYXN0ZmlsKQoJCQlvdXRlbXB0KGktMSk7
CS8qIG91dHB1dCBvZiBlbXB0eSBtZXNzYWdlCSovCgkJaWYoKGYxPW9wZW4o
aW5wZmlsW2ldLDApKT09LTEpewkJLyogb3BlbiBmaWxlCSovCgkJCWVycm9y
KCJlcnJvcjogIiwtMSxpbnBmaWxbaV0pOwoJCQllcnJvcigiIGNhbiBub3Qg
YmUgb3BlbmVkXG4iLC0xLCIiKTsKCQkJZmluaXNoKC0xKTsKCQl9CgkJaWYo
ZmlsdHlwW2ldPT1PQkpGSUwpewkJLyogcGFnZW51bWJlcgkJKi8KCQkJc3Nj
YW5mKCZoZWFkZXJbaV1bNl0sIiUyeCIsJnBhZ2Vubyk7CgkJCWhlYWRlcltp
XVs2XT0nXDAnOwoJCX0KCQllbHNlIHBhZ2Vubz0wOwoJCXNldGJpdChoZWFk
ZXJbaV0sU0VUTVNLLDYpOwoJCWNscmJpdChoZWFkZXJbaV0sQ0xSTVNLLDYp
OwoJCWxzZWVrKGYxLDBMLDApOwkJLyogcmV3aW5kIGlucHV0ZmlsZQkJKi8K
CQlwcmludGYoImNvbnZlcnNpb24gb2YgJXNcbiIsaW5wZmlsW2ldKTsKCQlj
b252cnQoZmlsdHlwW2ldLGhlYWRlcltpXSk7CgkJY2xvc2UoZjEpOwkJLyog
Y2xvc2UgaW50ZXJtZWRpYXRlIGZpbGUJKi8KCQlpZihlcnJmbGchPVJFU0VU
KXsKCQkJZXJyb3IoImNvbnZlcnNpb24gc3RvcHBlZCIsLTEsIlxuIik7CgkJ
CWZpbmlzaCgtMSk7CgkJfQoJfQoJb3V0ZW1wdChpbnBmKTsJCQkvKiBvdXRw
dXQgb2YgZW1wdHkgbWVzc2FnZQkqLwoJY2xvc2UoZjIpOwkJCS8qIGNsb3Nl
IGlucHV0ZmlsZQkJKi8KCXJldHVybjsKfS8qDCovCi8qKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKiovCi8qCQkJCQkJCQkJKi8KLyoJCQlzdWJyb3V0aW5l
IGNvbnZydAkJCQkqLwovKgkJCQkJCQkJCSovCi8qKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKiovCgovKiBUaGlzIHN1YnJvdXRpbmUgY29udmVydHMgdGhl
IGRhdGEgZnJvbSBvbmUgb2JqZWN0ZmlsZSBvciB0ZWNobmljYWwJKi8KLyog
c2V0dGluZ3MgZmlsZSBpbnRvIGJ5dGVzIGFuZCBhZGRzIHRoZSByY19kYXRh
KGhlYWRlciBieXRlcykgdG8gaXQuCSovCgpjb252cnQodHlwZSxyY2RhdCkK
CmludAl0eXBlOwkJCQkvKiBmaWxldHlwZShvYmplY3Qgb3IgdGVjaG4uIHMu
CSovCmNoYXIJcmNkYXRbXTsJCQkvKiByY19kYXRhIG9mIG1lc3NhZ2UJCSov
CnsKCWludAltZXNsZW47CQkJLyogbWVzc2FnZWxlbmd0aAkJKi8KCWxvbmcJ
aGVhZHBudHIsCQkvKiBvdXRwLiByZWMuIGhlYWRlciBidWZmZXIJKi8KCQlk
YXRwbnRyLAkJLyogb3V0cC4gcmVjLiBmaXJzdCBkYXRhIGJ5dGUJKi8KCQlj
aGtwbnRyOwkJLyogb3V0cC4gcmVjLiBjaGVja2J5dGUJCSovCgljaGFyCWhl
eG1lc2xbNF0sCQkvKiBtZXNzYWdlbGVuZ3RoKGhleCkJCSovCgkJaGVhZGJ1
ZlsxOV0sCQkvKiBoZWFkZXIgYnVmZmVyCQkqLwoJCWNoa2J5dFsyXTsJCS8q
IGNoZWNrYnl0ZQkJCSovCgoJaXJlY25vPTA7CglvbGRhZHI9IC0xOwoJZW9m
PVJFU0VUOwoJc3ByaW50ZigmaGVhZGJ1Zls0XSwiJXMiLHJjZGF0KTsKCWhl
YWRidWZbMThdPSdcMCc7Cgl3aGlsZShlb2YhPVNFVCl7CQkvKiBlbmRfb2Zf
ZmlsZSBub3QgeWV0IHJlYWNoZWQJKi8KCQkJCQkvKiBjb252ZXJzaW9uIG9m
IG9uZSBtZXNzYWdlCSovCgkgICAgY2hrYnl0WzBdPWNoa2J5dFsxXT0nMCc7
CgkgICAgaGVhZHBudHI9b3JlY25vOwoJICAgIGRhdHBudHI9b3JlY25vKzE4
OwoJICAgIGxzZWVrKGYyLGRhdHBudHIsMCk7CS8qIGFkanVzdCBmaWxlZGVz
Y3JpcHRvcgkqLwoJCQkJCS8qIGNvbnZlcnNpb24gb2Ygb25lIG1lc3NhZ2UJ
Ki8KCSAgICBtZXNsZW49Y29udm1lcyh0eXBlLGhlYWRidWYsY2hrYnl0KTsK
CSAgICBpZihlcnJmbGchPVJFU0VUKQkJLyogaW5wdXQgZXJyb3IgCQkJKi8K
CQlyZXR1cm47CQkJLyogc3RvcCBjb252ZXJzaW9uCQkqLwoJICAgIGlmKG1l
c2xlbj4wKXsKCQlleGNsb3IoY2hrYnl0LCZoZWFkYnVmWzRdLDcpOwoJCWNo
a3BudHI9aGVhZHBudHIrMioobWVzbGVuKzkpOyAvKiBwb3NpdGlvbiBjaGVj
a2J5dGUJKi8KCQlsc2VlayhmMixoZWFkcG50ciwwKTsKCQl3cml0ZShmMixo
ZWFkYnVmLDE4KTsJLyogb3V0cHV0IG9mIGhlYWRlciBieXRlcwkqLwoJCWxz
ZWVrKGYyLGNoa3BudHIsMCk7CgkJd3JpdGUoZjIsY2hrYnl0LDIpOwkvKiBv
dXRwdXQgb2YgY2hlY2tieXRlCQkqLwoJCW9yZWNubz1vcmVjbm8rMioobWF4
bGVuKzEwKTsgLyogbmV4dCBtZXNzYWdlIHBvc2l0aW9uCSovCgkgICAgfQoJ
fQp9LyoMKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoJCQkJ
CQkJCQkqLwovKgkJCXN1YnJvdXRpbmUgY29udm1lcwkJCQkqLwovKgkJCQkJ
CQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKiBUaGlz
IHN1YnJvdXRpbmUgdGFrZXMgY2FyZSBvZiB0aGUgaW5wdXQgY29udmVyc2lv
biBhbmQgb3V0cHV0IG9mIHRoZQkqLwovKiBkYXRhIG9mIG9uZSBtZXNzYWdl
IG9mIGFuIGlucHV0ZmlsZS4JCQkJCSovCi8qIFRoZSByb3V0aW5lIGFsc28g
Y2hlY2tzIHRoZSBkYXRhIG9uIGZvcm1hdC1lcnJvcnMuCQkJKi8KCmNvbnZt
ZXModHlwZSxoZWFkYnVmLGNoa2J5dCkKCmludAl0eXBlOwkJCS8qIHR5cGUg
b2YgaW5wdXRmaWxlCQkJKi8KY2hhcgloZWFkYnVmW10sCQkvKiBoZWFkZXIg
YnVmZmVyCQkJKi8KCWNoa2J5dFtdOwkJLyogY2hlY2tieXRlCQkJCSovCnsK
CWludAlpLAkJLyogbG9vcCB2YXJpYWJsZQkJCSovCgkJb2J1ZnBudCwJLyog
cG9pbnRlciBvdXRwdXRidWZmZXIJCQkqLwoJCWVvbT1SRVNFVCwJLyogZW5k
X29mX21lc3NhZ2UJCQkqLwoJCWFkZHJlc3MsCS8qIGRlY2ltYWwgYWRkcmVz
cwkJCSovCgkJaW5wbm8sCQkvKiBuby4gb2YgY2hhcmFjdGVycyByZWFkIGlu
IGJ1ZmZlcgkqLwoJCWxpbmVsZW4sCS8qIG5vLiBvZiBjaGFyYWN0ZXJzIGlu
IG9uZSBsaW5lCSovCgkJc2tpcG5vLAkJLyogbm8uIG9mIGJ5dGVzIHRvIHNr
aXAgaW4gbGluZQkJKi8KCQlieXRubywJCS8qIG5vLiBvZiBieXRlcyBpbiBv
bmUgZGF0YXdvcmQJCSovCgkJbWVzbGVuPTA7CS8qIG1lc3NhZ2VsZW5ndGgJ
CQkqLwoJY2hhcglkYXR3b3JkWzldLAkvKiBkYXRhd29yZAkJCQkqLwoJCWhl
eGFkcls2XTsJLyogaGV4YWRlY2ltYWwgYWRkcmVzcwkJCSovCgoJbGluZWxl
bj0xOC04KnR5cGU7Cglza2lwbm89NC00KnR5cGU7CglieXRubz00LTIqdHlw
ZTsKCXdoaWxlKGVvZiE9U0VUJiZlb20hPVNFVCl7CS8qIGNvbnZlcnNpb24g
b2Ygb25lIG1lc3NhZ2UJKi8KCSAgICBsc2VlayhmMSxpcmVjbm8sMCk7CQkv
KiBhZGp1c3QgZmlsZWRlc2NyaXB0b3IJKi8KCSAgICBpZigoaW5wbm89cmVh
ZChmMSxpbnBidWYsTUFYSU5QQikpPT0wKXsKCQllb2Y9U0VUOwkJLyogZW5k
X29mX2ZpbGUgcmVhY2hlZAkJKi8KCQlicmVhazsKCSAgICB9CgkgICAgaW5w
YnVmW2lucG5vXT0nXDAnOwoJICAgIG9idWZwbnQ9MDsKCSAgICBmb3IoaT0w
O2k8aW5wbm8mJmVvbSE9U0VUO2k9aStsaW5lbGVuKXsKCQkJCQkvKiBjb252
ZXJzaW9uIG9mIGlucHV0YnVmZmVyCSovCgkJaWYoaW5wYnVmW2ldIT0nXDAn
KXsJLyogY29udmVyc2lvbiBvZiBvbmUgbGluZQkqLwoJCSAgICBzc2NhbmYo
JmlucGJ1ZltpK3NraXBub10sIiU0eCVzIiwmYWRkcmVzcyxkYXR3b3JkKTsK
CQkJCQkvKiBjaGVjayBmb3IgZm9ybWF0IGVycm9ycwkqLwoJCSAgICBpZihj
aGFyY2goZGF0d29yZCwoYnl0bm8qMikpPT1TRVQpewoJCQkJCS8qIGZvcm1h
dCBlcnJvciBpbiBsaW5lCQkqLwoJCQlpZigoZjQ9b3BlbihlcnJmaWwsMSkp
IT0gLTEgfHwKCQkJICAgKGY0PWNyZWF0KGVycmZpbCwwNjY2KSkhPSAtMSl7
CgkJCSAgICBsc2VlayhmNCwwTCwyKTsJLyogYXBwZW5kIGVycm9yIG1lc3Nh
Z2UJKi8KCQkJICAgIHNwcmludGYoaGV4YWRyLCIlNGRcbiIsYWRkcmVzcyk7
CgkJCSAgICB3cml0ZShmNCwiZm9ybWF0IGVycm9yIGRldGVjdGVkIGF0ICIs
MjYpOwoJCQkgICAgd3JpdGUoZjQsImFkZHJlc3M6ICIsOSk7CgkJCSAgICB3
cml0ZShmNCxoZXhhZHIsNSk7CgkJCSAgICBjbG9zZShmNCk7CgkJCX0KCQkJ
ZXJyb3IoImZvcm1hdCBlcnJvciBkZXRlY3RlZCBhdCBhZGRyZXNzOiAiLAoJ
CQkJYWRkcmVzcywiXG4iKTsKCQkJZXJyZmxnPVNFVDsKCQkgICAgfQoJCSAg
ICBpZihhZGRyZXNzIT0ob2xkYWRyKzEpKXsKCQkJaWYoYWRkcmVzcz5vbGRh
ZHIpIHsJLyogZW5kIG9mIG1lc3NhZ2UJKi8KCQkJICAgIG9sZGFkcj1hZGRy
ZXNzLTE7CgkJCSAgICBlb209U0VUOwoJCQkgICAgYnJlYWs7CgkJCX0KCQkJ
ZWxzZXsJCS8qIHdyb25nIGFkZHJlc3Mgc2VxdWVuY2UJKi8KCQkJICAgIGVy
cm9yKCJ3cm9uZyBhZGRyZXNzIHNlcXVlbmNlIGRldGVjdGVkIiwtMSwiIik7
CgkJCSAgICBlcnJvcigiIGF0IGFkZHJlc3M6ICIsKGFkZHJlc3MrMSksIlxu
Iik7CgkJCSAgICBlcnJmbGc9U0VUOwoJCQkgICAgcmV0dXJuKG1lc2xlbik7
CS8qIHN0b3AgY29udmVyc2lvbgkqLwoJCQl9CgkJICAgIH0KCQkgICAgZWxz
ZSBpZihtZXNsZW49PTApewkvKiBmaWxsIHN0YXJ0YWRkcmVzcyBpbiBoZWFk
YnVmCSovCgkJCWludGhleCgoYWRkcmVzcytwYWdlbm8qNDA5NiksJmhlYWRi
dWZbMTRdLDQpOwoJCQltZXNsZW49Ynl0bm87CgkJICAgIH0KCQkJCQkvKiBj
b252ZXJ0IG1pY3Jvd29yZCBpbnRvIGJ5dGVzCSovCgkJICAgIHNwcmludGYo
Jm91dGJ1ZlsyKm9idWZwbnRdLCIlcyIsZGF0d29yZCk7CgkJICAgIG9idWZw
bnQ9b2J1ZnBudCtieXRubzsKCQkgICAgb2xkYWRyPWFkZHJlc3M7CgkJICAg
IGlmKChvYnVmcG50K21lc2xlbik+bWF4bGVuKXsKCQkJZW9tPVNFVDsKCQkJ
aXJlY25vPWlyZWNubytsaW5lbGVuOwoJCQlicmVhazsKCQkgICAgfQoJCX0K
CSAgICB9CgkgICAgZXhjbG9yKGNoa2J5dCxvdXRidWYsb2J1ZnBudCk7CS8q
IGFkanVzdCBjaGVja2J5dGUJKi8KCSAgICB3cml0ZShmMixvdXRidWYsMipv
YnVmcG50KTsKCSAgICBpcmVjbm89aXJlY25vK2k7CgkgICAgbWVzbGVuPW1l
c2xlbitvYnVmcG50OwoJfQoJbWVzbGVuPW1lc2xlbi1ieXRubzsKCWludGhl
eCgobWVzbGVuKzEpLCZoZWFkYnVmWzEwXSw0KTsgICAgIC8qIGNvbnZlcnQg
bGVuZ3RoIHRvIGhleAkqLwoJaW50aGV4KChtZXNsZW4rOCksaGVhZGJ1Ziw0
KTsJICAvKiBjb252ZXJ0IGFjdHVhbCBtLmwuIHRvIGhleAkqLwoJcmV0dXJu
KG1lc2xlbik7Cn0vKgwqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
LwovKgkJCQkJCQkJCSovCi8qCQkJc3Vicm91dGluZSBjaGFyY2gJCQkJKi8K
LyoJCQkJCQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoK
LyogVGhpcyBzdWJyb3V0aW5lIGNoZWNrcyB0aGUgY2hhcmFjdGVycyBpbiBh
IGNoYXJhY3RlcnN0cmluZyhoZXh2YWwpCSovCi8qIGZvciB0aGUgb2NjdXJl
bmNlIG9mIHRoZW0gaW4gdGhlIGhleGFkZWNpbWFsIGNoYXJhY3RlcnNldAkJ
Ki8KCmNoYXJjaChoZXh2YWwsY2hhcm5vKQoKaW50CWNoYXJubzsJCQkvKiBu
dW1iZXIgb2YgY2hhcmFjdGVycyB0byBjaGVjawkqLwpjaGFyCWhleHZhbFtd
OwkJLyogaGV4YWRlY2ltYWwgdmFsdWUgdG8gY2hlY2sJCSovCnsKCWludAlp
OwoJZm9yKGk9MDtpPD1jaGFybm8gJiYgaXN4ZGlnaXQoaGV4dmFsW2ldKSE9
MDtpKyspOwoJcmV0dXJuKChpPT1jaGFybm8pID8gUkVTRVQgOiBTRVQpOwp9
LyoMKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoJCQkJCQkJ
CQkqLwovKgkJCXN1YnJvdXRpbmUgb3V0ZW1wdAkJCQkqLwovKgkJCQkJCQkJ
CSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKiBUaGlzIHN1
YnJvdXRpbmUgdGFrZXMgY2FyZSBvZiB0aGUgb3V0cHV0IG9mIGFuIGVtcHR5
IG1lc3NhZ2UgaWYgdGhlCSovCi8qIHRoZSBmaWxldHlwZSBvZiB0aGUgbGFz
dCBpbnB1dGZpbGUgaXMgZGlmZmVyZW50IGZyb20gdGhlIGZpbGV0eXBlIG9m
CSovCi8qIHRoZSBjdXJyZW50IGlucHV0ZmlsZSwgb3IgaWYgdGhlIGxhc3Qg
bWVzc2FnZSBpcyB3cml0dGVuLgkJKi8KCm91dGVtcHQobmlmKQoKaW50CW5p
ZjsJCQkvKiBubyBvZiB0aGUgY3VycmVudCBpbnB1dGZpbGUJCSovCnsKCXNl
dGJpdChoZWFkZXJbbmlmXSxTRVRNU0tMLDYpOwkJLyogc2V0IGxhc3QgbWVz
c2FnZSBiaXQJKi8KCXNwcmludGYoZW1wdG1lcywiMDAwOCVzIixoZWFkZXJb
bmlmXSk7CglzcHJpbnRmKCZlbXB0bWVzWzEwXSwiMDAwMUZGRkYwMCIpOwoJ
ZXhjbG9yKCZlbXB0bWVzWzE4XSwmZW1wdG1lc1s0XSw3KTsgIC8qIGV4Y2x1
c2l2ZV9vciBvZiBtZXNzYWdlCSovCglsc2VlayhmMixvcmVjbm8sMCk7Cgl3
cml0ZShmMixlbXB0bWVzLDIwKTsJCSAgICAgLyogb3V0cHV0IG9mIGVtcHR5
IG1lc3NhZ2UJKi8KCW9yZWNubz1vcmVjbm8rMioobWF4bGVuKzEwKTsKCWxh
c3RmaWw9ZmlsdHlwW25pZisxXTsKfS8qDCovCi8qKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKiovCi8qCQkJCQkJCQkJKi8KLyoJCQlzdWJyb3V0aW5lIGRv
d25sb2FkCQkJCSovCi8qCQkJCQkJCQkJKi8KLyoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKi8KCi8qIFRoaXMgc3Vicm91dGluZSB0YWtlcyBjYXJlIG9m
IHRoZSBkb3dubG9hZCBvZiB0aGUgbWVzc2FnZXMgZnJvbSB0aGUJKi8KLyog
aW50ZXJtZWRpYXRlIGZpbGUgYW5kIG9mIHRoZSBmaWxlaGFuZGxpbmcgZmFj
aWxpdGllcwkJCSovCgpkb3dubG9hZCgpCgp7CglwcmludGYoIkRPV05MT0FE
IFRPIFJBQ0tfQ09OVFJPTFxuXG4iKTsKCWlmKChmMj1vcGVuKG1lc2ZpbCww
KSk9PS0xKXsJLyogb3BlbiBpbnRlcm0uIGZpbGUJKi8KCQllcnJvcigiZXJy
b3I6ICIsLTEsbWVzZmlsKTsKCQllcnJvcigiIGNhbiBub3QgYmUgb3BlbmVk
IiwtMSwiXG4iKTsKCQlmaW5pc2goLTEpOwoJfQoJaWYoKGYzPW9wZW4oZGV2
aWNlLDApKT09LTEpewkvKiBvcGVuIGRldmljZSBmb3IgcmVhZAkqLwoJCWVy
cm9yKCJlcnJvcjogIiwtMSxkZXZpY2UpOwoJCWVycm9yKCIgY2FuIG5vdCBi
ZSBvcGVuZWQgZm9yIHJlYWQiLC0xLCJcbiIpOwoJCWZpbmlzaCgtMSk7Cgl9
CglpZigoZjQ9b3BlbihkZXZpY2UsMSkpPT0tMSl7CS8qIG9wZW4gZGV2aWNl
IGZvciB3cml0ZSovCgkJZXJyb3IoImVycm9yOiAiLC0xLGRldmljZSk7CgkJ
ZXJyb3IoIiBjYW4gbm90IGJlIG9wZW5lZCBmb3Igd3JpdGUiLC0xLCJcbiIp
OwoJCWZpbmlzaCgtMSk7Cgl9CglpcmVjbm89MDsKCWRvd25sZChpbnBidWYp
OwoJaWYoc2F2b3B0IT1TRVQpCgkJdW5saW5rKG1lc2ZpbCk7CgllbHNlCgkJ
Y2xvc2UoZjIpOwoJY2xvc2UoZjMpOwoJY2xvc2UoZjQpOwp9LyoMKi8KLyoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoJCQkJCQkJCQkqLwovKgkJ
CXN1YnJvdXRpbmUgZG93bmxkCQkJCSovCi8qCQkJCQkJCQkJKi8KLyoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKi8KCmRvd25sZChtZXNzYWcpCgovKiBU
aGlzIHJvdXRpbmUgdGFrZXMgY2FyZSBvZiB0aGUgZG93bmxvYWQgb2YgdGhl
IG1lc3NhZ2VzIG9mIG9uZSBmaWxlCSovCi8qIGFuZCBvZiB0aGUgY29tbXVu
aWNhdGlvbiBjb250cm9sIG9mIHRoZSBkb3dubG9hZC4JCQkqLwoKY2hhcglt
ZXNzYWdbXVtNQVhCVUYvMl07CnsKCWludAlpLAkJCS8qIGxvb3AgdmFyaWFi
bGUJCSovCgkJaiwJCQkvKiBsb29wIHZhcmlhYmxlCQkqLwoJCW1lc3NubywJ
CQkvKiBtZXNzYWdlIG51bWJlcgkJKi8KCQltZXNsZW5bMl0sCQkvKiBsZW5n
dGggb2YgYSBtZXNzYWdlCQkqLwoJCXJldHJ5LAkJCS8qIG51bWJlciBvZiB0
aW1lcyBvZiBzZW5kaW5nCSovCgkJCQkJLyogdGhlIHNhbWUgbWVzc2FnZQkJ
Ki8KCQlhY2tuYWs7CQkJLyogcG9zLi9uZWcuIGFja25vd2xlZGdlbWVudAkq
LwoJY2hhcglyZXBvcnQsCQkJLyogY29udHJvbF9yZXBvcnQgZm9yIGRldmlj
ZQkqLwoJCWhleG1heGxbNF07CQkvKiBtYXguIGxlbmd0aCBvbmUgbWVzc2Fn
ZShoZXgpCSovCgoJaXJlY25vPTA7CgltZXNzbm89MDsKCWk9MDsKCWo9MTsK
CXJldHJ5PVJFU0VUOwoJZW9mPVJFU0VUOwoJbHNlZWsoZjIsaXJlY25vLDAp
OwkJLyogcmV3aW5kCQkJKi8KCWlmKChyZWFkKGYyLGhleG1heGwsNCkpIT00
KXsJLyogcmVhZCBtYXgubGVuZ3RoIGZyb20gZmlsZQkqLwoJICAgIGVycm9y
KCJlcnJvcihzKSBkZXRlY3RlZCB3aGlsZSByZWFkaW5nIGlucHV0IiwtMSwi
XG4iKTsKCSAgICBmaW5pc2goLTEpOwoJfQoJc3NjYW5mKGhleG1heGwsIiU0
eCIsJm1heGxlbik7CS8qIGNvbnZlcnQgbWF4LiBsZW5ndGggdG8gaGV4CSov
CgltYXhsZW49bWF4bGVuKjI7CglpZihtYXhsZW4+TUFYQlVGLzIpewoJICAg
IGVycm9yKCJtYXhpbXVtIGxlbmd0aCBncmVhdGVyIHRoYW4gbWVzc2FnZSBi
dWZmZXIiLC0xLCJcbiIpOwoJICAgIGZpbmlzaCgtMSk7Cgl9CglpcmVjbm89
aXJlY25vKzQ7Cgl0ZXJtc3QoKTsJCQkJLyogc2V0IHRlcm1pbmFsIHN0YXR1
cwkqLwoJYWNrbmFrPUFDSzsJCQkJLyogY2xlYXIgdG8gc2VuZAkqLwoJd2hp
bGUoZW9mIT1TRVQgfHwgcmV0cnkhPVJFU0VUKXsKCSAgICBpZihyZXRyeT09
UkVTRVQpewoJCWlyZWNubz00K21lc3NubyoobWF4bGVuKzQpOwkvKiBhZGp1
c3QgcmVjb3JkbnVtYmVyCSovCgkJbWVzbGVuW2ldPXJlYWRtcyhtZXNzYWdb
aV0pOwkvKiByZWFkIG9uZSBtZXNzYWdlCSovCgkJbWVzc25vKys7CQkJLyog
aW5jcmVhc2UgbWVzc2FnZW5vLgkqLwoJCWo9aTsKCQlpPWleMTsJCQkJLyog
aW52ZXJ0IGkJCSovCgkgICAgfQoJICAgIGlmKG1lc3Nubz4xKXsKCQlhY2tu
YWs9d2FpdCgpOwkJCS8qIHdhaXQgZm9yIGFjay9uYWsJKi8KCQlpZihhY2tu
YWshPU5BSyl7CQkvKiBwb3MuIGFja25vd2xlZGdlbWVudAkqLwoJCSAgICBp
Zihlb2YhPVJFU0VUKQkJLyogb24gZW5kX29mX2ZpbGUJKi8KCQkJYnJlYWs7
CgkJICAgIHJldHJ5PVJFU0VUOwoJCSAgICBqPWleMTsJCQkvKiBpbnZlcnQg
agkJKi8KCQl9CgkJZWxzZXsKCQkgICAgcmV0cnk9U0VUOwoJCSAgICBqPWk7
CgkJICAgIGlmKCh0c3RiaXQobWVzc2FnW2pdLFNFVE1TS1IsNikpIT1TRVQp
ewoJCQkJLyogc2V0IHJldHJ5IGJpdCBhbmQgYWRqdXN0IGV4b3IJKi8KCQkJ
ICAgIHNldGJpdChtZXNzYWdbal0sU0VUTVNLUiw2KTsKCQkJICAgIGludmJp
dCgmbWVzc2FnW2pdW21lc2xlbltqXS0yXSxJTlZNU0tSLDIpOwoJCSAgICB9
CgkJfQoJICAgIH0KCSAgICBpZihwcm9nb3B0PT1TRVQpCXByaW50ZigiPiIp
OwojaWZkZWYgbm9kZWYKcHJpbnRmKCJtYXhsZW49JWQgbGVuPSVkIG1lcz0n
JXMnXG4iLG1heGxlbixtZXNsZW5bal0sbWVzc2FnW2pdKTsKI2VuZGlmCgkg
ICAgd3JpdGUoZjQsbWVzc2FnW2pdLG1lc2xlbltqXSsxKTsJLyogZG93bmxv
YWQgb2YgbWVzc2FnZQkqLwoJfQp9LyoMKi8KLyoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKi8KLyoJCQkJCQkJCQkqLwovKgkJCXN1YnJvdXRpbmUgdGVy
bXN0IAkJCQkqLwovKgkJCQkJCQkJCSovCi8qKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKiovCgp0ZXJtc3QoKQoKLyogVGhpcyByb3V0aW5lIHRha2VzIGNh
cmUgb2YgdGhlIHRlcm1pbmFsLXNldHRpbmdzLgkJCSovCgp7CglpZihpb2N0
bChmMyxUSU9DRVhDTCk9PTAgJiYKCSAgIGlvY3RsKGY0LFRJT0NFWENMKT09
MCl7CS8qIHNldCBleGNsdXNpdmUgb3duZXIgb2YgZGV2aWNlKi8KCSAgICBs
a3Rlcm0uc2dfaXNwZWVkCT0gYmRyYXRlOwkvKiBpbnB1dCBiYXVkcmF0ZQkq
LwoJICAgIGxrdGVybS5zZ19vc3BlZWQJPSBiZHJhdGU7CS8qIG91dHB1dCBi
YXVkcmF0ZQkqLwoJICAgIGxrdGVybS5zZ19lcmFzZQk9IEVSQVNFQ0g7CS8q
IGVyYXNlIGNoYXJhY3RlcgkqLwoJICAgIGxrdGVybS5zZ19raWxsCT0gS0lM
TENIOwkvKiBraWxsIGNoYXJhY3RlcgkqLwoJICAgIGxrdGVybS5zZ19mbGFn
cwk9IEZMQUc7CQkvKiBjb21tdW5pY2F0aW9uIG1vZGUJKi8KCSAgICBpZihp
b2N0bChmMyxUSU9DU0VUUCwmbGt0ZXJtKSE9MCB8fAkvKiBzZXQgdGVybWlu
YWwtCSovCgkgICAgICAgaW9jdGwoZjQsVElPQ1NFVFAsJmxrdGVybSkhPTAp
ewkvKiBjaGFyYWN0ZXJpc3RpY3MJKi8KCQllcnJvcigidGVybWluYWxzZXR0
aW5ncyBjYW4gbm90IGJlIGNoYW5nZWQiLC0xLCJcbiIpOwoJCWZpbmlzaCgt
MSk7CQkvKiByZXNldCBleGNsdXNpdmUgb3duZXIJKi8KCSAgICB9Cgl9Cgll
bHNlewoJICAgIGVycm9yKCJkZXZpY2UgaXMgYnVzeSIsLTEsIlxuIik7Cgkg
ICAgZmluaXNoKC0xKTsJCQkvKiByZXNldCBleGNsdXNpdmUgb3duZXIJKi8K
CX0KfS8qDCovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qCQkJ
CQkJCQkJKi8KLyoJCQlzdWJyb3V0aW5lIGludGVycnVwdAkJCQkqLwovKgkJ
CQkJCQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKiBU
aGUgcm91dGluZSBpbnRlcnJ1cHQgaXMgY2FsbGVkIGlmIGFuIGludGVycnVw
dCBpcyBnaXZlbiBhZnRlciB0aGUJKi8KLyogdGVybWluYWxzZXR0aW5ncyBo
YXZlIGFscmVhZHkgYmVlbiBtYWRlLgkJCQkqLwoKdm9pZCBpbnRlcnJ1cHQo
KQp7CgllcnJvcigicHJvZ3JhbSB3YXMgaW50ZXJydXB0ZWQiLC0xLCJcbiIp
OwoJZmluaXNoKDApOwp9LyoMKi8KLyoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKi8KLyoJCQkJCQkJCQkqLwovKgkJCXN1YnJvdXRpbmUgZmluaXNoCQkJ
CSovCi8qCQkJCQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ki8KCi8qIFRoZSBzdWJyb3V0aW5lIGZpbmlzaCBpcyBjYWxsZWQgdG8gcmVz
ZXQgdGhlIGV4Y2x1c2l2ZSBvd25lcnNoaXAgb2YJKi8KLyogdGhlIHRlcm1p
bmFsLgkJCSAJCQkJKi8KCmZpbmlzaChhKQoKaW50CWE7CQkJLyogcmV0dXJu
IHZhbHVlCQkJCSovCnsKCWlvY3RsKGYzLFRJT0NOWENMKTsKCWlvY3RsKGY0
LFRJT0NOWENMKTsKCWV4aXQoYSk7Cn0vKgwqLwovKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqLwovKgkJCQkJCQkJCSovCi8qCQkJc3Vicm91dGluZSBy
ZWFkbXMJCQkJKi8KLyoJCQkJCQkJCQkqLwovKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqLwoKcmVhZG1zKG1lc3MpCgovKiBUaGlzIHJvdXRpbmUgcmVh
ZHMgb25lIG1lc3NhZ2UgZnJvbSBhIGZpbGUsIHN0YXJ0aW5nIGF0IHJlY29y
ZG51bWJlcgkqLwovKiBpcmVjbm8uCQkJCQkJCQkqLwoKY2hhcgltZXNzW107
CQkJCS8qIG1lc3NhZ2UgYnVmZmVyCQkqLwp7CglpbnQJaSwJCQkvKiBsb29w
IHZhcmlhYmxlCQkqLwoJCWxlbmd0aDsKCWNoYXIJaGV4bGVuWzRdOwkJLyog
aGV4LiByZXByZXNlbnRhdGlvbiBvZiBsZW5ndGgqLwoKCWxzZWVrKGYyLGly
ZWNubywwKTsJCS8qIHN0YXJ0IHJlY29yZAkJCSovCglpZigocmVhZChmMixo
ZXhsZW4sNCkpIT00KXsKCQllb2Y9U0VUOwkJLyogc3RvcCBvbiBlbmRfb2Zf
ZmlsZQkJKi8KCQlyZXR1cm47Cgl9Cglzc2NhbmYoaGV4bGVuLCIlNHgiLCZs
ZW5ndGgpOwkvKiBjb252ZXJ0IGhleGxlbiB0byBpbnRlZ2VyCSovCglsZW5n
dGg9bGVuZ3RoKjI7CglpZihsZW5ndGg+TUFYQlVGLzIpewoJCWVycm9yKCJt
ZXNzYWdlcyBsYXJnZXIgdGhhbiBtZXNzYWdlYnVmZmVyIiwtMSwiXG4iKTsK
CQlmaW5pc2goLTEpOwoJfQoJaWYoKHJlYWQoZjIsbWVzcyxsZW5ndGgpKSE9
bGVuZ3RoKXsKCQllcnJvcigiZXJyb3IocykgZGV0ZWN0ZWQgd2hpbGUgcmVh
ZGluZyBpbnB1dCIsLTEsIlxuIik7CgkJZmluaXNoKC0xKTsKCX0KCW1lc3Nb
bGVuZ3RoXT1FVFg7CgltZXNzW2xlbmd0aCsxXT0wOwoJcmV0dXJuKGxlbmd0
aCk7CQkJLyogcmV0dXJuIG1lc3NhZ2UtbGVuZ3RoCSovCn0vKgwqLwovKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqLwovKgkJCQkJCQkJCSovCi8qCQlz
dWJyb3V0aW5lIHdhaXQgYW5kIGFsYXJtX2hhbmRsZXIJCQkqLwovKgkJCQkJ
CQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgp3YWl0KCkK
Ci8qIFRoaXMgcm91dGluZSByZWFkcyBhbiBhY2svbmFrIG1lc3NhZ2UgZnJv
bSB0aGUgaW5wdXRkZXZpY2UuCQkqLwovKiBUaGUgcm91dGluZSByZXR1cm5z
IEFDSyBvciBOQUsuCQkJCQkqLwoKewoJY2hhcgljaGVja1syXTsJCS8qIGNo
ZWNrYnl0ZQkJCSovCglpbnQJbWVzYW49UkVTRVQ7CQkvKiBTRVQgaWYgYWNr
L25hayBtZXNzYWdlCSovCgl2b2lkCWFsYXJtX2hhbmRsZXIoKTsJLyogc3Vi
cm91dGluZSBhbGFybV9oYW5kbGVyCSovCgoJY2hlY2tbMF09Y2hlY2tbMV09
JzAnOwoJc2lnbmFsKFNJR0FMUk0sYWxhcm1faGFuZGxlcik7CS8qIHNldCBz
aWduYWwgaGFuZGxlcgkJKi8KCWFsYXJtKFRJTU9VVCk7CQkJLyogc2V0IGFs
YXJtCQkJKi8KCXdoaWxlKG1lc2FuIT1TRVQpewoJICAgIGlmKHByb2dvcHQ9
PVNFVCkJcHJpbnRmKCI8Iik7CgkgICAgY2hhcnNpbj1yZWFkKGYzLGFubWVz
LDI1Nik7CS8qIHJlYWQgbWVzc2FnZSArIFxuCQkqLwoJICAgIGlmKGFubWVz
WzJdPT0nMCcmJmFubWVzWzNdPT0nMScpCgkJbWVzYW49U0VUOwkJLyogbWVz
c2FnZSBpcyBhY2svbmFrIG1lc3NhZ2UJKi8KCX0KCWFsYXJtKDApOwkJCS8q
IHJlc2V0IGFsYXJtCQkJKi8KCXNpZ25hbChTSUdBTFJNLFNJR19ERkwpOwkv
KiByZXNldCBzaWduYWwgaGFuZGxlcgkJKi8KCWV4Y2xvcihjaGVjayxhbm1l
cyw1KTsJCS8qIGRlZmluZSBjaGVja2J5dGUJCSovCglpZihjaGFyc2luPT0x
MyAmJgoJICAgY2hlY2tbMF09PWFubWVzWzEwXSAmJiBjaGVja1sxXT09YW5t
ZXNbMTFdICYmIAoJICAgYW5tZXNbNF09PScwJyAmJiBhbm1lc1s1XT09JzAn
KXsJLyogbWVzc2FnZSBpcyBBQ0sJKi8KCQlpZihwcm9nb3B0PT1TRVQpCgkJ
ICAgIHByaW50ZigiKGEpeyVjJWMlYyVjJWMlYyVjJWMlYyVjJWMlYyVjfSIs
YW5tZXNbMF0sYW5tZXNbMV0sCgkJICAgIGFubWVzWzJdLGFubWVzWzNdLGFu
bWVzWzRdLGFubWVzWzVdLGFubWVzWzZdLGFubWVzWzddLAoJCSAgICBhbm1l
c1s4XSxhbm1lc1s5XSxhbm1lc1sxMF0sYW5tZXNbMTFdLGFubWVzWzEyXSk7
CgkJcmV0dXJuKEFDSyk7CQkvKiBwb3NpdGl2ZSBhY2tub3dsZWRnZW1lbnQJ
Ki8KCX0KCWVsc2V7CQkJCQkvKiBtZXNzYWdlIGlzIE5BSwkqLwoJICAgIGlm
KHByb2dvcHQ9PVNFVCkKCQlwcmludGYoIihuKXslYyVjJWMlYyVjJWMlYyVj
JWMlYyVjJWMlY30iLGFubWVzWzBdLGFubWVzWzFdLAoJCSAgICBhbm1lc1sy
XSxhbm1lc1szXSxhbm1lc1s0XSxhbm1lc1s1XSxhbm1lc1s2XSxhbm1lc1s3
XSwKCQkgICAgYW5tZXNbOF0sYW5tZXNbOV0sYW5tZXNbMTBdLGFubWVzWzEx
XSxhbm1lc1sxMl0pOwoJICAgIHJldHVybihOQUspOwkJLyogbmVnYXRpdmUg
YWNrbm93bGVkZ2VtZW50CSovCgl9Cn0Kdm9pZCBhbGFybV9oYW5kbGVyKCl7
CglpZihwcm9nb3B0PT1TRVQpCXByaW50ZigiKHQpIik7CglzdHJjcHkoYW5t
ZXMsbmFrbWVzKTsJCS8qIGZpbGwgYW5tZXMgd2l0aCBOQUsJCSovCgljaGFy
c2luPTE1Owp9LyoMKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K
LyoJCQkJCQkJCQkqLwovKgkJCXN1YnJvdXRpbmUgZXhjbG9yCQkJCSovCi8q
CQkJCQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8q
IFRoaXMgc3Vicm91dGluZSBnZW5lcmF0ZXMgdGhlIGV4Y2x1c2l2ZV9vciBv
ZiBleG9yIGFuZCBvZiB0aGUgYnl0ZXMJKi8KLyogaW4gYW4gYXJyYXkgb2Yg
Ynl0bnVtIGJ5dGVzCQkJCQkJKi8KCmV4Y2xvcihleG9yLGFycmF5LGJ5dG51
bSkKCmludAlieXRudW07CQkJCS8qIG51bWJlciBvZiBieXRlcyBpbiBhcnJh
eQkqLwpjaGFyCWV4b3JbXSwJCQkJLyogZXhjbHVzaXZlX29yIGJ5dGUJCSov
CglhcnJheVtdWzJdOwkJCS8qIGFycmF5IHdpdGggYnl0ZXMJCSovCnsKCWlu
dAlpLAkJCS8qIGxvb3AgdmFyaWFibGUJCSovCgkJaiwJCQkvKiBsb29wIHZh
cmlhYmxlCQkqLwoJCWRlY2FbMl0sCQkvKiBkZWNpbWFsIHZhbHVlcyBhCQkq
LwoJCWRlY2JbMl07CQkvKiBkZWNpbWFsIHZhbHVlcyBiCQkqLwoKCWZvcihq
PTA7ajwyO2orKyl7CQkvKiBsb29wIGZvciBlYWNoIGNoYXJhY3RlcgkqLwoJ
CWlmKChkZWNhW2pdPWV4b3Jbal0pPD0nOScpCgkJCWRlY2Fbal09ZGVjYVtq
XS0nMCc7CgkJZWxzZQoJCQlkZWNhW2pdPWRlY2Fbal0tJzcnOwoJCWZvcihp
PTA7aTxieXRudW07aSsrKXsKCQkJZGVjYltqXT1hcnJheVtpXVtqXTsKCQkJ
aWYoZGVjYltqXTw9JzknKQkvKiBjaGFyYWN0ZXIgMC4uLiA5CSovCgkJCQlk
ZWNiW2pdPWRlY2Jbal0tJzAnOwoJCQllbHNlCQkJLyogY2hhcmFjdGVyIEEu
Li4gRgkqLwoJCQkJZGVjYltqXT1kZWNiW2pdLSc3JzsKCQkJZGVjYVtqXT1k
ZWNhW2pdXmRlY2Jbal07LyogZXhjbHVzaXZlX29yCQkqLwoJCX0KCQkJZXhv
cltqXT1oZXhzZXRbZGVjYVtqXV07LyogZGVmaW5lIHJlc3VsdCB2YWx1ZQkq
LwoJfQp9LyoMKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoJ
CQkJCQkJCQkqLwovKgkJCXN1YnJvdXRpbmUgc2V0Yml0CQkJCSovCi8qCQkJ
CQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qIFRo
aXMgc3Vicm91dGluZSBzZXRzIG9uZSBvciBtb3JlIGJpdHMgKGhpZ2ggYml0
cyBvZiBtYXNrKSBpbiBhCSovCi8qIHN0cmluZwkJCQkJCQkJKi8KCnNldGJp
dChzdHJpbmcsbWFzayxzdHJsZW4pCgppbnQJc3RybGVuOwkJCS8qIGxlbmd0
aCBvZiBzdHJpbmcJCQkqLwpjaGFyCXN0cmluZ1tdLAkJLyogc3RyaW5nIGlu
IHdoaWNoIGJpdChzKSBhcmUgc2V0CSovCgltYXNrW107CQkJLyogbWFzayBv
ZiBiaXRzIHRvIHNldAkJCSovCnsKCWludAlpLAkJLyogbG9vcCB2YXJpYWJs
ZQkJCSovCgkJaW50c3RyLAkJLyogaW50ZWdlciB2YWx1ZSBvZiBvbmUgY2hh
ciBvZiBzdHJpbmcJKi8KCQlpbnRtc2s7CQkvKiBpbnRlZ2VyIHZhbHVlIG9m
IG9uZSBjaGFyIG9mIG1hc2sJKi8KCglmb3IoaT0wO2k8c3RybGVuO2krKyl7
CgkJc3NjYW5mKCZzdHJpbmdbaV0sIiUxeCIsJmludHN0cik7CgkJc3NjYW5m
KCZtYXNrW2ldLCIlMXgiLCZpbnRtc2spOwoJCWludHN0cj1pbnRzdHIgfCBp
bnRtc2s7CQkvKiBzZXQgYml0KHMpCQkqLwoJCXN0cmluZ1tpXT1oZXhzZXRb
aW50c3RyXTsKCX0KfS8qDCovCi8qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiovCi8qCQkJCQkJCQkJKi8KLyoJCQlzdWJyb3V0aW5lIGNscmJpdAkJCQkq
LwovKgkJCQkJCQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov
CgovKiBUaGlzIHN1YnJvdXRpbmUgY2xlYXJzIG9uZSBvciBtb3JlIGJpdHMg
KHplcm8gYml0cyBvZiBtYXNrKSBpbiBhCSovCi8qIHN0cmluZwkJCQkJCQkJ
Ki8KCmNscmJpdChzdHJpbmcsbWFzayxzdHJsZW4pCgppbnQJc3RybGVuOwkJ
CS8qIGxlbmd0aCBvZiBzdHJpbmcJCQkqLwpjaGFyCXN0cmluZ1tdLAkJLyog
c3RyaW5nIGluIHdoaWNoIGJpdChzKSBhcmUgY2xlYXJlZAkqLwoJbWFza1td
OwkJCS8qIG1hc2sgb2YgYml0cyB0byBjbGVhcgkJKi8KewoJaW50CWksCQkv
KiBsb29wIHZhcmlhYmxlCQkJKi8KCQlpbnRzdHIsCQkvKiBpbnRlZ2VyIHZh
bHVlIG9mIG9uZSBjaGFyIG9mIHN0cmluZwkqLwoJCWludG1zazsJCS8qIGlu
dGVnZXIgdmFsdWUgb2Ygb25lIGNoYXIgb2YgbWFzawkqLwoKCWZvcihpPTA7
aTxzdHJsZW47aSsrKXsKCQlzc2NhbmYoJnN0cmluZ1tpXSwiJTF4IiwmaW50
c3RyKTsKCQlzc2NhbmYoJm1hc2tbaV0sIiUxeCIsJmludG1zayk7CgkJaW50
c3RyPWludHN0ciAmIGludG1zazsJCS8qIGNsZWFyIGJpdChzKQkJKi8KCQlz
dHJpbmdbaV09aGV4c2V0W2ludHN0cl07Cgl9Cn0vKgwqLwovKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqLwovKgkJCQkJCQkJCSovCi8qCQkJc3Vicm91
dGluZSB0c3RiaXQJCQkJKi8KLyoJCQkJCQkJCQkqLwovKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqLwoKLyogVGhpcyBzdWJyb3V0aW5lIHJldHVybnMg
U0VUIGlmIGF0IGxlYXN0IG9uZSBiaXQgKHNldCBpbiBtYXNrKSBpcwkqLwov
KiBhbHNvIHNldCBpbiBzdHJpbmcsIGVsc2UgaXQgcmV0dXJucyBSRVNFVC4J
CQkJKi8KCnRzdGJpdChzdHJpbmcsbWFzayxzdHJsZW4pCgppbnQJc3RybGVu
OwkJCS8qIGxlbmd0aCBvZiBzdHJpbmcJCQkqLwpjaGFyCXN0cmluZ1tdLAkJ
Lyogc3RyaW5nIGluIHdoaWNoIGJpdCBpcyB0ZXN0ZWQJKi8KCW1hc2tbXTsJ
CQkvKiBtYXNrIG9mIGJpdHMgdG8gdGVzdAkJCSovCnsKCWludAlpLAkJLyog
bG9vcCB2YXJpYWJsZQkJCSovCgkJaW50c3RyLAkJLyogaW50ZWdlciB2YWx1
ZSBvZiBvbmUgY2hhciBvZiBzdHJpbmcJKi8KCQlpbnRtc2s7CQkvKiBpbnRl
Z2VyIHZhbHVlIG9mIG9uZSBjaGFyIG9mIG1hc2sJKi8KCglmb3IoaT0wO2k8
c3RybGVuO2krKyl7CgkJc3NjYW5mKCZzdHJpbmdbaV0sIiUyeCIsJmludHN0
cik7CgkJc3NjYW5mKCZtYXNrW2ldLCIlMngiLCZpbnRtc2spOwoJCWlmKChp
bnRzdHIgJiBpbnRtc2spIT0wKQkvKiB0ZXN0IGJpdAkJKi8KCQkJcmV0dXJu
KFNFVCk7CQkvKiBhdCBsZWFzdCBvbmUgYml0IHNldAkqLwoJfQoJcmV0dXJu
KFJFU0VUKTsJCQkJLyogbm8gYml0IHNldAkJKi8KfS8qDCovCi8qKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKiovCi8qCQkJCQkJCQkJKi8KLyoJCQlzdWJy
b3V0aW5lIGludmJpdAkJCQkqLwovKgkJCQkJCQkJCSovCi8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKiovCgovKiBUaGlzIHN1YnJvdXRpbmUgaW52ZXJ0
cyB0aGUgYml0cyBvZiBhIHN0cmluZwkJCQkqLwoKaW52Yml0KHN0cmluZyxt
YXNrLHN0cmxlbikKCmludAlzdHJsZW47CQkJLyogbGVuZ3RoIG9mIHN0cmlu
ZwkJCSovCmNoYXIJc3RyaW5nW10sCQkvKiBzdHJpbmcgaW4gd2hpY2ggYml0
KHMpIGFyZSBzZXQJKi8KCW1hc2tbXTsJCQkvKiBtYXNrIG9mIGJpdHMgdG8g
aW52ZXJ0CQkqLwp7CglpbnQJaSwJCS8qIGxvb3AgdmFyaWFibGUJCQkqLwoJ
CWludHN0ciwJCS8qIGludGVnZXIgdmFsdWUgb2Ygb25lIGNoYXIgb2Ygc3Ry
aW5nCSovCgkJaW50bXNrOwkJLyogaW50ZWdlciB2YWx1ZSBvZiBvbmUgY2hh
ciBvZiBtYXNrCSovCgoJZm9yKGk9MDtpPHN0cmxlbjtpKyspewoJCXNzY2Fu
Zigmc3RyaW5nW2ldLCIlMXgiLCZpbnRzdHIpOwoJCXNzY2FuZigmbWFza1tp
XSwiJTF4IiwmaW50bXNrKTsKCQlpbnRzdHI9aW50c3RyIF4gaW50bXNrOwoJ
CXN0cmluZ1tpXT1oZXhzZXRbaW50c3RyXTsJLyogaW52ZXJ0IGJpdHMJCSov
Cgl9Cn0vKgwqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKgkJ
CQkJCQkJCSovCi8qCQkJc3Vicm91dGluZSBpbnRoZXgJCQkJKi8KLyoJCQkJ
CQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyogVGhp
cyBzdWJyb3V0aW5lIGNvbnZlcnRzIGFuIGludGVnZXIgdmFsdWUgaW50byBh
IGhleGFkZWNpbWFsIHN0cmluZwkqLwoKaW50aGV4KGludHZhbCxoZXh2YWws
Y2hhcm5vKQoKaW50CWludHZhbCwJCQkvKiBpbnRlZ2VyIHZhbHVlCQkJKi8K
CWNoYXJubzsJCQkvKiBudW1iZXIgb2YgaGV4YWRlY2ltYWwgY2hhcmFjdGVy
cwkqLwpjaGFyCWhleHZhbFtdOwkJLyogaGV4YWRlY2ltYWwgdmFsdWUJCQkq
Lwp7CglpbnQJaSwJCS8qIGxvb3AgdmFyaWFibGUJCQkqLwoJCXg9Y2hhcm5v
LTEsCS8qIGNvdW50IHZhcmlhYmxlCQkJKi8KCQlyZXN0PWludHZhbCwJLyog
cmVzdCB2YWx1ZQkJCQkqLwoJCWRldmlkOwkJLyogZGV2aXNvciB2YWx1ZQkJ
CSovCgoJZm9yKGk9eDtpPj0wO2ktLSl7CgkJZGV2aWQ9cmVzdC9oZXhwb3dl
cltpXTsJCS8qIGRlZmluZSBkZXZpc29yCSovCgkJaGV4dmFsW3gtaV09aGV4
c2V0W2RldmlkXTsJLyogZGVmaW5lIGhleC4gY2hhcmFjdGVyKi8KCQlyZXN0
PXJlc3QtZGV2aWQqaGV4cG93ZXJbaV07CS8qIGRlZmluZSByZXN0CQkqLwoJ
fQp9LyoMKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoJCQkJ
CQkJCQkqLwovKgkJCXN1YnJvdXRpbmUgZXJyb3IJCQkJKi8KLyoJCQkJCQkJ
CQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyogVGhpcyBz
dWJyb3V0aW5lIHByaW50cyBhbiBlcnJvcm1lc3NhZ2Ugb24gdGhlIHN0YW5k
YXJkIGVycm9yZmlsZS4JKi8KCmVycm9yKGVycm1lczEsZXJybm8sZXJybWVz
MikKCmNoYXIJZXJybWVzMVtdLAoJZXJybWVzMltdOwppbnQJZXJybm87CnsK
CWZwcmludGYoc3RkZXJyLCIlcyIsZXJybWVzMSk7CQkvKiBmaXJzdCBzdHJp
bmcJCSovCglpZihlcnJubyE9IC0xKQoJCWZwcmludGYoc3RkZXJyLCIlZCIs
ZXJybm8pOwkvKiBkZWNpbWFsIHZhbHVlCSovCglpZihlcnJtZXMyWzBdIT0n
XDAnKQoJCWZwcmludGYoc3RkZXJyLCIlcyIsZXJybWVzMik7CS8qIHNlY29u
ZCBzdHJpbmcJKi8KfS8qDCovCi8qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiovCi8qCQkJCQkJCQkJKi8KLyoJCQlzdWJyb3V0aW5lIGhlbHBmaWxlCQkJ
CSovCi8qCQkJCQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ki8KCi8qIFRoaXMgc3Vicm91dGluZSBwcmludHMgYSBzaG9ydCB1c2VycyBn
dWlkZSB0byBoZWxwIHRoZSB1c2VyCQkqLwoKaGVscGZpbGUoKQp7CiAgRklM
RSAqZnBoOwogIGludCBsaW5lY250ID0gMDsKICBjaGFyIGluX2xpbmVbTUFY
SU5dLCBubFsyXTsKCiAgaWYgKChmcGggPSBmb3BlbigiL3Vzci9tYW4vbWlw
ZG93bi5tYW4iLCJyIikpPT0gTlVMTCl7CiAgICBwcmludGYoIlNvcnJ5LCBu
byBpbmZvcm1hdGlvbiBhdmFpbGFibGUuXG4iKTsKICAgIHJldHVybjsKICB9
CiAgd2hpbGUoZmdldHMoJmluX2xpbmVbMF0sTUFYSU4sZnBoKSkgewogICAg
aWYoKmluX2xpbmUhPScqJyYmKmluX2xpbmUhPScuJyl7CiAgICAgIHByaW50
ZigiJXMiLGluX2xpbmUpOwogICAgICBsaW5lY250Kys7CiAgICAgIGlmIChs
aW5lY250ID09IDIyKSB7CglwcmludGYoIlBSRVNTIFJFVFVSTiBvciBxKD1x
dWl0KTogIik7CglnZXRzKCZubFswXSk7CiAJaWYgKG5sWzBdID09ICdxJykK
CSAgYnJlYWs7CgllbHNlCgkgIGxpbmVjbnQgPSAwOwogICAgICB9CiAgICB9
CiAgfQogIGZjbG9zZShmcGgpOwp9Cg==

--0-816682262-1004106539=:48781
Content-Type: application/x-unknown; name="mipdown.err"
Content-Transfer-Encoding: base64
Content-Description: mipdown.err
Content-Disposition: attachment; filename="mipdown.err"

bWlwZG93bi5jOiBJbiBmdW5jdGlvbiBgdGVybXN0JzoNCm1pcGRvd24uYzo5
NzQ6IGBUSU9DRVhDTCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMg
ZnVuY3Rpb24pDQptaXBkb3duLmM6OTc0OiAoRWFjaCB1bmRlY2xhcmVkIGlk
ZW50aWZpZXIgaXMgcmVwb3J0ZWQgb25seSBvbmNlDQptaXBkb3duLmM6OTc0
OiBmb3IgZWFjaCBmdW5jdGlvbiBpdCBhcHBlYXJzIGluLikNCm1pcGRvd24u
Yzo5NzY6IGludmFsaWQgdXNlIG9mIHVuZGVmaW5lZCB0eXBlIGBzdHJ1Y3Qg
c2d0dHliJw0KbWlwZG93bi5jOjk3NzogaW52YWxpZCB1c2Ugb2YgdW5kZWZp
bmVkIHR5cGUgYHN0cnVjdCBzZ3R0eWInDQptaXBkb3duLmM6OTc4OiBpbnZh
bGlkIHVzZSBvZiB1bmRlZmluZWQgdHlwZSBgc3RydWN0IHNndHR5YicNCm1p
cGRvd24uYzo5Nzk6IGludmFsaWQgdXNlIG9mIHVuZGVmaW5lZCB0eXBlIGBz
dHJ1Y3Qgc2d0dHliJw0KbWlwZG93bi5jOjk4MDogaW52YWxpZCB1c2Ugb2Yg
dW5kZWZpbmVkIHR5cGUgYHN0cnVjdCBzZ3R0eWInDQptaXBkb3duLmM6OTgx
OiBgVElPQ1NFVFAnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1
bmN0aW9uKQ0KbWlwZG93bi5jOiBJbiBmdW5jdGlvbiBgZmluaXNoJzoNCm1p
cGRvd24uYzoxMDE5OiBgVElPQ05YQ0wnIHVuZGVjbGFyZWQgKGZpcnN0IHVz
ZSBpbiB0aGlzIGZ1bmN0aW9uKQ0KbWlwZG93bi5jOiBBdCB0b3AgbGV2ZWw6
DQptaXBkb3duLmM6NzA6IHN0b3JhZ2Ugc2l6ZSBvZiBgbGt0ZXJtJyBpc24n
dCBrbm93bg0K

--0-816682262-1004106539=:48781--

- Raw text -


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