c3RvZmxpbmUgPT0gJyInKSB7CiEgICAgICAgICAgICAgICBpc19xdW90ZWQgPSAxOwohICAg
ICAgICAgICAgICAgKytyZXN0b2ZsaW5lOwohICAgICAgICAgICB9CiEgICAgICAgICAgIHRt
cCA9IHJlc3RvZmxpbmU7CiEgICAgICAgICAgIGxlbiA9IDA7CiEgICAgICAgICAgIHdoaWxl
ICh0bXAgJiYgKnRtcCAmJgohICAgICAgICAgICAgICAgICAgKCghaXNfcXVvdGVkJiYoKnRt
cCAhPSAnLCcpJiYoKnRtcCAhPSAnXG4nKSYmKCFpc3NwYWNlKCp0bXApKSkKISAgICAgICAg
ICAgICAgICAgICB8fCAoaXNfcXVvdGVkJiYoKnRtcCAhPSAnXG4nKSYmKCp0bXAgIT0gJyIn
KSkpKQohICAgICAgICAgICB7CiEgICAgICAgICAgICAgdG1wKys7CiEgICAgICAgICAgICAg
bGVuKys7CiEgICAgICAgICAgIH0KISAgICAgICAgICAgaWYgKHRtcCAmJiAoKnRtcCA9PSAn
IicpKSArK3RtcDsKICAgICAgICAgICAgaWYgKGxlbiA+IDApCiAgICAgICAgICAgIHsKISAg
ICAgICAgICAgICBkZWNvciA9IHNhZmVtYWxsb2MobGVuKzEpOwohICAgICAgICAgICAgIHN0
cm5jcHkoZGVjb3IscmVzdG9mbGluZSxsZW4pOwohICAgICAgICAgICAgIGRlY29yW2xlbl0g
PSAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJlc3RvZmxpbmUgPSB0bXA7CiAgICAg
ICAgICB9CiAgI2VuZGlmCiEgICAgICAgICBlbHNlIGlmKG15c3RybmNhc2VjbXAocmVzdG9m
bGluZSwiVXNlU3R5bGUiLDgpPT0wKQogICAgICAgICAgewohICAgICAgICAgICBpbnQgaXNf
cXVvdGVkID0gMDsKISAgICAgICAgICAgcmVzdG9mbGluZSArPTg7CiEgICAgICAgICAgIHdo
aWxlKGlzc3BhY2UoKnJlc3RvZmxpbmUpKXJlc3RvZmxpbmUrKzsKISAgICAgICAgICAgaWYg
KCpyZXN0b2ZsaW5lID09ICciJykgewohICAgICAgICAgICAgICAgaXNfcXVvdGVkID0gMTsK
ISAgICAgICAgICAgICAgICsrcmVzdG9mbGluZTsKISAgICAgICAgICAgfQohICAgICAgICAg
ICB0bXAgPSByZXN0b2ZsaW5lOwohICAgICAgICAgICBsZW4gPSAwOwohICAgICAgICAgICB3
aGlsZSAodG1wICYmICp0bXAgJiYKISAgICAgICAgICAgICAgICAgICgoIWlzX3F1b3RlZCYm
KCp0bXAgIT0gJywnKSYmKCp0bXAgIT0gJ1xuJykmJighaXNzcGFjZSgqdG1wKSkpCiEgICAg
ICAgICAgICAgICAgICAgfHwgKGlzX3F1b3RlZCYmKCp0bXAgIT0gJ1xuJykmJigqdG1wICE9
ICciJykpKSkKISAJICB7CiEgICAgICAgICAgICAgdG1wKys7CiEgCSAgICBsZW4rKzsKISAJ
ICB9CiEgICAgICAgICAgIGlmICh0bXAgJiYgKCp0bXAgPT0gJyInKSkgKyt0bXA7CiEgICAg
ICAgICAgIGlmIChsZW4gPiAwKQohICAgICAgICAgICB7CiAgCSAgICBpbnQgaGl0ID0gMDsg
ICAgICAgICAgICAKISAJICAgIC8qIGNoYW5nZWQgdG8gYWNjdW11bGF0ZSBtdWx0aXBsZSBT
dHlsZSBkZWZpbml0aW9ucyAodmVsaWFhQHJwaS5lZHUpICovCiAgICAgICAgICAgICAgZm9y
ICggbnB0ciA9IFNjci5UaGVMaXN0OyBucHRyOyBucHRyID0gbnB0ci0+bmV4dCApIHsKISAJ
CWlmICghbXlzdHJuY2FzZWNtcChyZXN0b2ZsaW5lLG5wdHItPm5hbWUsbGVuKSkKISAJCXsK
ISAJCSAgICBpZiAoIWhpdCkgewohIAkJCW9uX2ZsYWdzICAgICAgPSBucHRyLT5vbl9mbGFn
czsKISAJCQlvZmZfZmxhZ3MgICAgID0gbnB0ci0+b2ZmX2ZsYWdzOwohIAkJCWljb25fbmFt
ZSAgICAgPSBucHRyLT52YWx1ZTsKICAjaWZkZWYgTUlOSV9JQ09OUwohIAkJCW1pbmlpY29u
X25hbWUgPSBucHRyLT5taW5pX3ZhbHVlOwogICNlbmRpZgogICNpZmRlZiBVU0VERUNPUgoh
IAkJCWRlY29yCSAgICA9IG5wdHItPkRlY29yOwogICNlbmRpZgohIAkJCWRlc2tudW1iZXIg
ICAgPSBucHRyLT5EZXNrOwohIAkJCWJ3ICAgICAgICAgICAgPSBucHRyLT5ib3JkZXJfd2lk
dGg7CiEgCQkJbm9idyAgICAgICAgICA9IG5wdHItPnJlc2l6ZV93aWR0aDsKISAJCQlmb3Jl
Y29sb3IgICAgID0gbnB0ci0+Rm9yZUNvbG9yOwohIAkJCWJhY2tjb2xvciAgICAgPSBucHRy
LT5CYWNrQ29sb3I7CiEgCQkJQm94RmlsbE1ldGhvZCA9IG5wdHItPkJveEZpbGxNZXRob2Q7
CiEgCQkJSWNvbkJveFswXSAgICA9IG5wdHItPkljb25Cb3hbMF07CiEgCQkJSWNvbkJveFsx
XSAgICA9IG5wdHItPkljb25Cb3hbMV07CiEgCQkJSWNvbkJveFsyXSAgICA9IG5wdHItPklj
b25Cb3hbMl07CiEgCQkJSWNvbkJveFszXSAgICA9IG5wdHItPkljb25Cb3hbM107CiEgCQkJ
b2ZmX2J1dHRvbnMgICA9IG5wdHItPm9mZl9idXR0b25zOwohIAkJCW9uX2J1dHRvbnMgICAg
PSBucHRyLT5vbl9idXR0b25zOwohIAkJCWhpdCA9IDE7CiEgCQkgICAgfSBlbHNlIHsKISAJ
CQlvZmZfZmxhZ3MgICAgIHw9IG5wdHItPm9mZl9mbGFnczsKISAJCQlvbl9mbGFncyAgICAg
ICY9IH4obnB0ci0+b25fZmxhZ3MpOwohIAkJCW9mZl9idXR0b25zICAgfD0gbnB0ci0+b2Zm
X2J1dHRvbnM7CiEgCQkJb25fYnV0dG9ucyAgICAmPSB+KG5wdHItPm9uX2J1dHRvbnMpOwoh
IAkJCWlmKG5wdHItPnZhbHVlKSBpY29uX25hbWUgPSBucHRyLT52YWx1ZTsKISAjaWZkZWYg
TUlOSV9JQ09OUwohIAkJCWlmKG5wdHItPm1pbmlfdmFsdWUpIG1pbmlpY29uX25hbWUgPSBu
cHRyLT5taW5pX3ZhbHVlOwohICNlbmRpZgohICNpZmRlZiBVU0VERUNPUgohIAkJCWlmKG5w
dHItPkRlY29yKSBkZWNvciA9IG5wdHItPkRlY29yOwohICNlbmRpZgohIAkJCWlmKG5wdHIt
Pm9mZl9mbGFncyAmIFNUQVJUU09OREVTS19GTEFHKQohIAkJCSAgICBkZXNrbnVtYmVyID0g
bnB0ci0+RGVzazsKISAJCQlpZihucHRyLT5vZmZfZmxhZ3MgJiBCV19GTEFHKQohIAkJCSAg
ICBidyA9IG5wdHItPmJvcmRlcl93aWR0aDsKISAJCQlpZihucHRyLT5vZmZfZmxhZ3MgJiBO
T0JXX0ZMQUcpCiEgCQkJICAgIG5vYncgPSBucHRyLT5yZXNpemVfd2lkdGg7CiEgCQkJaWYo
bnB0ci0+b2ZmX2ZsYWdzICYgRk9SRV9DT0xPUl9GTEFHKQohIAkJCSAgICBmb3JlY29sb3Ig
PSBucHRyLT5Gb3JlQ29sb3I7CiEgCQkJaWYobnB0ci0+b2ZmX2ZsYWdzICYgQkFDS19DT0xP
Ul9GTEFHKQohIAkJCSAgICBiYWNrY29sb3IgPSBucHRyLT5CYWNrQ29sb3I7CiEgCiEgCQkJ
aWYobnB0ci0+Qm94RmlsbE1ldGhvZCAhPSAwKQohIAkJCSAgICBCb3hGaWxsTWV0aG9kID0g
bnB0ci0+Qm94RmlsbE1ldGhvZDsKISAJCQlpZihucHRyLT5JY29uQm94WzBdID49IDApCiEg
CQkJewohIAkJCSAgICBJY29uQm94WzBdID0gbnB0ci0+SWNvbkJveFswXTsKISAJCQkgICAg
SWNvbkJveFsxXSA9IG5wdHItPkljb25Cb3hbMV07CiEgCQkJICAgIEljb25Cb3hbMl0gPSBu
cHRyLT5JY29uQm94WzJdOwohIAkJCSAgICBJY29uQm94WzNdID0gbnB0ci0+SWNvbkJveFsz
XTsKISAJCQl9CiEgCQkgICAgfQohIAkJfQohIAkgICAgfQohIAkgICAgcmVzdG9mbGluZSA9
IHRtcDsKISAJICAgIGlmICghaGl0KQohICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
IHRtcD1zYWZlbWFsbG9jKDUwMCk7CiAgICAgICAgICAgICAgICBzdHJjYXQodG1wLCJVc2VT
dHlsZTogIik7CiAgICAgICAgICAgICAgICBzdHJuY2F0KHRtcCxyZXN0b2ZsaW5lLWxlbixs
ZW4pOwotLS0gNTY4LDcyNCAtLS0tCiAgICAgICAgY2FzZSAncSc6CiAgICAgICAgICBicmVh
azsKICAgICAgICBjYXNlICdyJzoKISAgICAgICAgIGlmKElUSVMoIlJBTkRPTVBMQUNFTUVO
VCIpKQogICAgICAgICAgewohICAgICAgICAgICBTS0lQKCJSQU5ET01QTEFDRU1FTlQiKTsK
ISAgICAgICAgICAgdG5hbWUub2ZmX2ZsYWdzIHw9IFJBTkRPTV9QTEFDRV9GTEFHOwogICAg
ICAgICAgfQogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAncyc6CiEgICAgICAgICBp
ZihJVElTKCJTTUFSVFBMQUNFTUVOVCIpKQogICAgICAgICAgewohICAgICAgICAgICBTS0lQ
KCJTTUFSVFBMQUNFTUVOVCIpOwohICAgICAgICAgICB0bmFtZS5vZmZfZmxhZ3MgfD0gU01B
UlRfUExBQ0VfRkxBRzsKICAgICAgICAgIH0KISAgICAgICAgIGVsc2UgaWYoSVRJUygiU2tp
cE1hcHBpbmciKSkKICAgICAgICAgIHsKISAgICAgICAgICAgU0tJUCgiU2tpcE1hcHBpbmci
KTsKISAgICAgICAgICAgdG5hbWUub2ZmX2ZsYWdzIHw9IFNIT1dfTUFQUElORzsKICAgICAg
ICAgIH0KISAgICAgICAgIGVsc2UgaWYoSVRJUygiU2hvd01hcHBpbmciKSkKICAgICAgICAg
IHsKISAgICAgICAgICAgU0tJUCgiU2hvd01hcHBpbmciKTsKISAgICAgICAgICAgdG5hbWUu
b25fZmxhZ3MgfD0gU0hPV19NQVBQSU5HOwogICAgICAgICAgfQohICAgICAgICAgZWxzZSBp
ZihJVElTKCJTdGlja3lJY29uIikpCiAgICAgICAgICB7CiEgICAgICAgICAgIFNLSVAoIlN0
aWNreUljb24iKTsKISAgICAgICAgICAgdG5hbWUub2ZmX2ZsYWdzIHw9IFNUSUNLWV9JQ09O
X0ZMQUc7CiAgICAgICAgICB9CiEgICAgICAgICBlbHNlIGlmKElUSVMoIlNsaXBwZXJ5SWNv
biIpKQogICAgICAgICAgewohICAgICAgICAgICBTS0lQKCJTbGlwcGVyeUljb24iKTsKISAg
ICAgICAgICAgdG5hbWUub25fZmxhZ3MgfD0gU1RJQ0tZX0lDT05fRkxBRzsKICAgICAgICAg
IH0KISAgICAgICAgIGVsc2UgaWYoSVRJUygiU0xPUFBZRk9DVVMiKSkKICAgICAgICAgIHsK
ISAgICAgICAgICAgU0tJUCgiU0xPUFBZRk9DVVMiKTsKISAgICAgICAgICAgdG5hbWUub25f
ZmxhZ3MgfD0gQ0xJQ0tfRk9DVVNfRkxBRzsKISAgICAgICAgICAgdG5hbWUub2ZmX2ZsYWdz
IHw9IFNMT1BQWV9GT0NVU19GTEFHOwogICAgICAgICAgfQohICAgICAgICAgZWxzZSBpZihJ
VElTKCJTdGFydEljb25pYyIpKQogICAgICAgICAgewohICAgICAgICAgICBTS0lQKCJTdGFy
dEljb25pYyIpOwohICAgICAgICAgICB0bmFtZS5vZmZfZmxhZ3MgfD0gU1RBUlRfSUNPTklD
X0ZMQUc7CiAgICAgICAgICB9CiEgICAgICAgICBlbHNlIGlmKElUSVMoIlN0YXJ0Tm9ybWFs
IikpCiAgICAgICAgICB7CiEgICAgICAgICAgIFNLSVAoIlN0YXJ0Tm9ybWFsIik7CiEgICAg
ICAgICAgIHRuYW1lLm9uX2ZsYWdzIHw9IFNUQVJUX0lDT05JQ19GTEFHOwogICAgICAgICAg
fQohICAgICAgICAgZWxzZSBpZihJVElTKCJTdGF5c09uVG9wIikpCiAgICAgICAgICB7CiEg
ICAgICAgICAgIFNLSVAoIlN0YXlzT25Ub3AiKTsKISAgICAgICAgICAgdG5hbWUub2ZmX2Zs
YWdzIHw9IFNUQVlTT05UT1BfRkxBRzsJICAKICAgICAgICAgIH0KISAgICAgICAgIGVsc2Ug
aWYoSVRJUygiU3RheXNQdXQiKSkKICAgICAgICAgIHsKISAgICAgICAgICAgU0tJUCgiU3Rh
eXNQdXQiKTsKISAgICAgICAgICAgdG5hbWUub25fZmxhZ3MgfD0gU1RBWVNPTlRPUF9GTEFH
OwkgIAogICAgICAgICAgfQohICAgICAgICAgZWxzZSBpZihJVElTKCJTdGlja3kiKSkKICAg
ICAgICAgIHsKISAgICAgICAgICAgdG5hbWUub2ZmX2ZsYWdzIHw9IFNUSUNLWV9GTEFHOwkg
IAohICAgICAgICAgICBTS0lQKCJTdGlja3kiKTsKICAgICAgICAgIH0KISAgICAgICAgIGVs
c2UgaWYoSVRJUygiU2xpcHBlcnkiKSkKICAgICAgICAgIHsKISAgICAgICAgICAgdG5hbWUu
b25fZmxhZ3MgfD0gU1RJQ0tZX0ZMQUc7CSAgCiEgICAgICAgICAgIFNLSVAoIlNsaXBwZXJ5
Iik7CiAgICAgICAgICB9CiEgICAgICAgICBlbHNlIGlmKElUSVMoIlNUQVJUU09OREVTSyIp
KQogICAgICAgICAgewohICAgICAgICAgICBTS0lQKCJTVEFSVFNPTkRFU0siKTsKISAgICAg
ICAgICAgdG5hbWUub2ZmX2ZsYWdzIHw9IFNUQVJUU09OREVTS19GTEFHOwohICAgICAgICAg
ICBzc2NhbmYocmVzdG9mbGluZSwiJWQiLCZ0bmFtZS5EZXNrKTsKISAgICAgICAgICAgR0VU
V09SRDsKISAgICAgICAgICAgcmVzdG9mbGluZSA9IHRtcDsKISAgICAgICAgICAgU0tJUFNQ
QUNFOwogICAgICAgICAgfQohICAgICAgICAgZWxzZSBpZihJVElTKCJTVEFSVFNBTllXSEVS
RSIpKQogICAgICAgICAgewohICAgICAgICAgICBTS0lQKCJTVEFSVFNBTllXSEVSRSIpOwoh
ICAgICAgICAgICB0bmFtZS5vbl9mbGFncyB8PSBTVEFSVFNPTkRFU0tfRkxBRzsKICAgICAg
ICAgIH0KICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ3QnOgohICAgICAgICAgaWYo
SVRJUygiVElUTEUiKSkKICAgICAgICAgIHsKISAgICAgICAgICAgU0tJUCgiVElUTEUiKTsK
ISAgICAgICAgICAgdG5hbWUub25fZmxhZ3MgfD0gTk9USVRMRV9GTEFHOwogICAgICAgICAg
fQogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAndSc6CiEgICAgICAgICBpZihJVElT
KCJVc2VQUG9zaXRpb24iKSkKICAgICAgICAgIHsKISAgICAgICAgICAgU0tJUCgiVXNlUFBv
c2l0aW9uIik7CiEgICAgICAgICAgIHRuYW1lLm9uX2ZsYWdzIHw9IE5PX1BQT1NJVElPTl9G
TEFHOwogICAgICAgICAgfQogICNpZmRlZiBVU0VERUNPUgohICAgICAgICAgaWYoSVRJUygi
VXNlRGVjb3IiKSkKICAgICAgICAgIHsKISAgICAgICAgICAgU0tJUCgiVXNlRGVjb3IiKTsK
ISAgICAgICAgICAgR0VUUVVPVEVEV09SRDsKICAgICAgICAgICAgaWYgKGxlbiA+IDApCiAg
ICAgICAgICAgIHsKISAgICAgICAgICAgICB0bmFtZS5EZWNvciA9IHNhZmVtYWxsb2MobGVu
KzEpOwohICAgICAgICAgICAgIHN0cm5jcHkodG5hbWUuRGVjb3IscmVzdG9mbGluZSxsZW4p
OwohICAgICAgICAgICAgIHRuYW1lLkRlY29yW2xlbl0gPSAwOwogICAgICAgICAgICB9CiAg
ICAgICAgICAgIHJlc3RvZmxpbmUgPSB0bXA7CiAgICAgICAgICB9CiAgI2VuZGlmCiEgICAg
ICAgICBlbHNlIGlmKElUSVMoIlVzZVN0eWxlIikpCiAgICAgICAgICB7CiEgICAgICAgICAg
IFNLSVAoIlVzZVN0eWxlIik7CiEgICAgICAgICAgIEdFVFFVT1RFRFdPUkQ7CiEgICAgICAg
ICAgIGlmIChsZW4gPiAwKSB7CiAgCSAgICBpbnQgaGl0ID0gMDsgICAgICAgICAgICAKISAJ
ICAgIC8qIGNoYW5nZWQgdG8gYWNjdW0gbXVsdGlwbGUgU3R5bGUgZGVmaW5pdGlvbnMgKHZl
bGlhYUBycGkuZWR1KSAqLwogICAgICAgICAgICAgIGZvciAoIG5wdHIgPSBTY3IuVGhlTGlz
dDsgbnB0cjsgbnB0ciA9IG5wdHItPm5leHQgKSB7CiEgICAgICAgICAgICAgICBpZiAoIW15
c3RybmNhc2VjbXAocmVzdG9mbGluZSxucHRyLT5uYW1lLGxlbikpIHsgLyogbWF0Y2ggc3R5
bGUgKi8KISAgICAgICAgICAgICAgICAgaWYgKCFoaXQpIHsgICAgICAgICAgICAgLyogZmly
c3QgbWF0Y2ggKi8KISAgICAgICAgICAgICAgICAgICBtZW1jcHkoJnRuYW1lLCBucHRyLCBz
aXplb2YobmFtZV9saXN0KSk7IC8qIGNvcHkgZXZlcnl0aGluZyAqLwohICAgICAgICAgICAg
ICAgICAgIHRuYW1lLm5leHQgPSAwOyAgICAgICAvKiBleGNlcHQgdGhlIG5leHQgcG9pbnRl
ciAqLwohICAgICAgICAgICAgICAgICAgIGhpdCA9IDE7ICAgICAgICAgICAgICAvKiBzZXQg
bm90IGZpcnN0IG1hdGNoICovCiEgICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAg
ICAgICAgIC8qIHN1YnNlcXVlbnQgbWF0Y2ggKi8KISAgICAgICAgICAgICAgICAgICB0bmFt
ZS5vZmZfZmxhZ3MgICAgIHw9IG5wdHItPm9mZl9mbGFnczsKISAgICAgICAgICAgICAgICAg
ICB0bmFtZS5vbl9mbGFncyAgICAgICY9IH4obnB0ci0+b25fZmxhZ3MpOwohICAgICAgICAg
ICAgICAgICAgIHRuYW1lLm9mZl9idXR0b25zICAgfD0gbnB0ci0+b2ZmX2J1dHRvbnM7CiEg
ICAgICAgICAgICAgICAgICAgdG5hbWUub25fYnV0dG9ucyAgICAmPSB+KG5wdHItPm9uX2J1
dHRvbnMpOwohICAgICAgICAgICAgICAgICAgIGlmKG5wdHItPnZhbHVlKSB0bmFtZS52YWx1
ZSA9IG5wdHItPnZhbHVlOwogICNpZmRlZiBNSU5JX0lDT05TCiEgICAgICAgICAgICAgICAg
ICAgaWYobnB0ci0+bWluaV92YWx1ZSkgdG5hbWUubWluaV92YWx1ZSA9IG5wdHItPm1pbmlf
dmFsdWU7CiAgI2VuZGlmCiAgI2lmZGVmIFVTRURFQ09SCiEgICAgICAgICAgICAgICAgICAg
aWYobnB0ci0+RGVjb3IpIHRuYW1lLkRlY29yID0gbnB0ci0+RGVjb3I7CiAgI2VuZGlmCiEg
ICAgICAgICAgICAgICAgICAgaWYobnB0ci0+b2ZmX2ZsYWdzICYgU1RBUlRTT05ERVNLX0ZM
QUcpCiEgICAgICAgICAgICAgICAgICAgICB0bmFtZS5EZXNrID0gbnB0ci0+RGVzazsKISAg
ICAgICAgICAgICAgICAgICBpZihucHRyLT5vZmZfZmxhZ3MgJiBCV19GTEFHKQohICAgICAg
ICAgICAgICAgICAgICAgdG5hbWUuYm9yZGVyX3dpZHRoID0gbnB0ci0+Ym9yZGVyX3dpZHRo
OwohICAgICAgICAgICAgICAgICAgIGlmKG5wdHItPm9mZl9mbGFncyAmIE5PQldfRkxBRykK
ISAgICAgICAgICAgICAgICAgICAgIHRuYW1lLnJlc2l6ZV93aWR0aCA9IG5wdHItPnJlc2l6
ZV93aWR0aDsKISAgICAgICAgICAgICAgICAgICBpZihucHRyLT5vZmZfZmxhZ3MgJiBGT1JF
X0NPTE9SX0ZMQUcpCiEgICAgICAgICAgICAgICAgICAgICB0bmFtZS5Gb3JlQ29sb3IgPSBu
cHRyLT5Gb3JlQ29sb3I7CiEgICAgICAgICAgICAgICAgICAgaWYobnB0ci0+b2ZmX2ZsYWdz
ICYgQkFDS19DT0xPUl9GTEFHKQohICAgICAgICAgICAgICAgICAgICAgdG5hbWUuQmFja0Nv
bG9yID0gbnB0ci0+QmFja0NvbG9yOwohICAgICAgICAgICAgICAgICAgIHRuYW1lLkljb25C
b3hlcyA9IG5wdHItPkljb25Cb3hlczsgLyogdXNlIHNhbWUgY2hhaW4gKi8KISAgICAgICAg
ICAgICAgICAgfSAvKiBlbmQgaGl0L25vdCBoaXQgKi8KISAgICAgICAgICAgICAgIH0gLyog
ZW5kIGZvdW5kIG1hdGNoaW5nIHN0eWxlICovCiEgCSAgICB9IC8qIGVuZCBsb29raW5nIGF0
IGFsbCBzdHlsZXMgKi8KISAJICAgIHJlc3RvZmxpbmUgPSB0bXA7ICAgICAgICAgICAvKiBt
b3ZlIGZvcndhcmQgb25lIHdvcmQgKi8KISAJICAgIGlmICghaGl0KSB7CiAgICAgICAgICAg
ICAgICB0bXA9c2FmZW1hbGxvYyg1MDApOwogICAgICAgICAgICAgICAgc3RyY2F0KHRtcCwi
VXNlU3R5bGU6ICIpOwogICAgICAgICAgICAgICAgc3RybmNhdCh0bXAscmVzdG9mbGluZS1s
ZW4sbGVuKTsKKioqKioqKioqKioqKioqCioqKiA3MDcsNzIxICoqKioKICAgICAgICBjYXNl
ICd2JzoKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ3cnOgohICAgICAgICAgaWYo
bXlzdHJuY2FzZWNtcChyZXN0b2ZsaW5lLCJXaW5kb3dMaXN0U2tpcCIsMTQpPT0wKQogICAg
ICAgICAgewohICAgICAgICAgICByZXN0b2ZsaW5lICs9MTQ7CiEgICAgICAgICAgIG9mZl9m
bGFncyB8PSBMSVNUU0tJUF9GTEFHOwogICAgICAgICAgfQohICAgICAgICAgZWxzZSBpZiht
eXN0cm5jYXNlY21wKHJlc3RvZmxpbmUsIldpbmRvd0xpc3RIaXQiLDEzKT09MCkKICAgICAg
ICAgIHsKISAgICAgICAgICAgcmVzdG9mbGluZSArPTEzOwohICAgICAgICAgICBvbl9mbGFn
cyB8PSBMSVNUU0tJUF9GTEFHOwogICAgICAgICAgfQogICAgICAgICAgYnJlYWs7CiAgICAg
ICAgY2FzZSAneCc6Ci0tLSA3MzMsNzQ3IC0tLS0KICAgICAgICBjYXNlICd2JzoKICAgICAg
ICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ3cnOgohICAgICAgICAgaWYoSVRJUygiV2luZG93
TGlzdFNraXAiKSkKICAgICAgICAgIHsKISAgICAgICAgICAgU0tJUCgiV2luZG93TGlzdFNr
aXAiKTsKISAgICAgICAgICAgdG5hbWUub2ZmX2ZsYWdzIHw9IExJU1RTS0lQX0ZMQUc7CiAg
ICAgICAgICB9CiEgICAgICAgICBlbHNlIGlmKElUSVMoIldpbmRvd0xpc3RIaXQiKSkKICAg
ICAgICAgIHsKISAgICAgICAgICAgU0tJUCgiV2luZG93TGlzdEhpdCIpOwohICAgICAgICAg
ICB0bmFtZS5vbl9mbGFncyB8PSBMSVNUU0tJUF9GTEFHOwogICAgICAgICAgfQogICAgICAg
ICAgYnJlYWs7CiAgICAgICAgY2FzZSAneCc6CioqKioqKioqKioqKioqKgoqKiogNzI4LDcz
NCAqKioqCiAgICAgICAgICBicmVhazsKICAgICAgfQogIAohICAgICB3aGlsZShpc3NwYWNl
KCpyZXN0b2ZsaW5lKSlyZXN0b2ZsaW5lKys7CiAgICAgIGlmKCpyZXN0b2ZsaW5lID09ICcs
JykKICAgICAgICByZXN0b2ZsaW5lKys7CiAgICAgIGVsc2UgaWYoKCpyZXN0b2ZsaW5lICE9
IDApJiYoKnJlc3RvZmxpbmUgIT0gJ1xuJykpCi0tLSA3NTQsNzYwIC0tLS0KICAgICAgICAg
IGJyZWFrOwogICAgICB9CiAgCiEgICAgIFNLSVBTUEFDRTsKICAgICAgaWYoKnJlc3RvZmxp
bmUgPT0gJywnKQogICAgICAgIHJlc3RvZmxpbmUrKzsKICAgICAgZWxzZSBpZigoKnJlc3Rv
ZmxpbmUgIT0gMCkmJigqcmVzdG9mbGluZSAhPSAnXG4nKSkKKioqKioqKioqKioqKioqCioq
KiA3MzcsODQwICoqKioKICAgICAgICAgICAgICAgICAiYmFkIHN0eWxlIGNvbW1hbmQ6ICVz
IiwgcmVzdG9mbGluZSk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiEgICB9CiAgCiAgICAv
KiBjYXB0dXJlIGRlZmF1bHQgaWNvbnMgKi8KISAgIGlmKHN0cmNtcChuYW1lLCIqIikgPT0g
MCkKICAgIHsKISAgICAgaWYob2ZmX2ZsYWdzICYgSUNPTl9GTEFHKQohICAgICAgIFNjci5E
ZWZhdWx0SWNvbiA9IGljb25fbmFtZTsKISAgICAgb2ZmX2ZsYWdzICY9IH5JQ09OX0ZMQUc7
CiEgICAgIGljb25fbmFtZSA9IE5VTEw7CiAgICB9CiEgCiEgICBBZGRUb0xpc3QobmFtZSxp
Y29uX25hbWUsCiEgI2lmZGVmIE1JTklfSUNPTlMKISAgICAgICAgICAgICBtaW5paWNvbl9u
YW1lLAohICNlbmRpZgohICNpZmRlZiBVU0VERUNPUgohIAkgICAgZGVjb3IsCiEgI2VuZGlm
CiEgICAgICAgICAgICAgb2ZmX2ZsYWdzLG9uX2ZsYWdzLGRlc2tudW1iZXIsYncsbm9idywK
ISAJICAgIGZvcmVjb2xvcixiYWNrY29sb3Isb2ZmX2J1dHRvbnMsb25fYnV0dG9ucyxJY29u
Qm94LEJveEZpbGxNZXRob2QpOwogIH0KICAKICAKISB2b2lkIEFkZFRvTGlzdChjaGFyICpu
YW1lLAohICAgICAgICAgICAgICAgIGNoYXIgKmljb25fbmFtZSwKISAjaWZkZWYgTUlOSV9J
Q09OUwohICAgICAgICAgICAgICAgIGNoYXIgKm1pbmlpY29uX25hbWUsCiEgI2VuZGlmCiEg
I2lmZGVmIFVTRURFQ09SCiEgCSAgICAgICBjaGFyICpkZWNvciwKISAjZW5kaWYKISAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBsb25nIG9mZl9mbGFncywgCiEgCSAgICAgICB1bnNpZ25l
ZCBsb25nIG9uX2ZsYWdzLAohICAgICAgICAgICAgICAgIGludCBkZXNrLAohICAgICAgICAg
ICAgICAgIGludCBidywKISAgICAgICAgICAgICAgICBpbnQgbm9idywKISAJICAgICAgIGNo
YXIgKmZvcmVjb2xvciwKISAgICAgICAgICAgICAgICBjaGFyICpiYWNrY29sb3IsCiEgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBvZmZfYnV0dG9ucywKISAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsb25nIG9uX2J1dHRvbnMsCiEgCSAgICAgICBpbnQgKkljb25Cb3gsCiEg
ICAgICAgICAgICAgICAgaW50IEJveEZpbGxNZXRob2QpCiAgewogICAgbmFtZV9saXN0ICpu
cHRyLCpsYXN0cHRyID0gTlVMTDsKICAKISAgIGlmKChuYW1lID09IE5VTEwpfHwoKG9mZl9m
bGFncyA9PSAwKSYmKG9uX2ZsYWdzID09IDApJiYob25fYnV0dG9ucyA9PSAwKSYmCiEgIAkJ
ICAgICAgKG9mZl9idXR0b25zID09IDApJiYoSWNvbkJveFswXSA8IDApCiEgI2lmZGVmIE1J
TklfSUNPTlMKISAJCSAgICAgICYmKG1pbmlpY29uX25hbWUgPT0gTlVMTCkKISAjZW5kaWYK
ISAjaWZkZWYgVVNFREVDT1IKISAJCSAgICAgICYmKGRlY29yID09IE5VTEwpCiEgI2VuZGlm
CiEgICAgICAgKSkKISAgIHsKISAgICAgaWYobmFtZSkKISAgICAgICBmcmVlKG5hbWUpOwoh
ICAgICBpZihpY29uX25hbWUpCiEgICAgICAgZnJlZShpY29uX25hbWUpOwohICAgICByZXR1
cm47CiEgICB9CiAgCiAgICAvKiB1c2VkIHRvIG1lcmdlIGR1cGxpY2F0ZSBlbnRyaWVzLCBi
dXQgdGhhdCBpcyBubyBsb25nZXIKICAgICAqIGFwcHJvcHJpYXRlIHNpbmNlIGNvbmZpY3Rp
bmcgc3R5bGVzIGFyZSBwb3NzaWJsZSwgYW5kIHRoZQogICAgICogbGFzdCBtYXRjaCBzaG91
bGQgd2luISAqLwohICAgZm9yIChucHRyID0gU2NyLlRoZUxpc3Q7IG5wdHIgIT0gTlVMTDsg
bnB0ciA9IG5wdHItPm5leHQpCiEgICB7CiEgICAgIGxhc3RwdHI9bnB0cjsKICAgIH0KICAK
ISAgIG5wdHIgPSAobmFtZV9saXN0ICopc2FmZW1hbGxvYyhzaXplb2YobmFtZV9saXN0KSk7
CiEgICBucHRyLT5uZXh0ID0gTlVMTDsKISAgIG5wdHItPm5hbWUgPSBuYW1lOwohICAgbnB0
ci0+b25fZmxhZ3MgPSBvbl9mbGFnczsKISAgIG5wdHItPm9mZl9mbGFncyA9IG9mZl9mbGFn
czsKISAgIG5wdHItPnZhbHVlID0gaWNvbl9uYW1lOwohICNpZmRlZiBNSU5JX0lDT05TCiEg
ICBucHRyLT5taW5pX3ZhbHVlID0gbWluaWljb25fbmFtZTsKISAjZW5kaWYKISAjaWZkZWYg
VVNFREVDT1IKISAgIG5wdHItPkRlY29yID0gZGVjb3I7CiEgI2VuZGlmCiEgICBucHRyLT5E
ZXNrID0gZGVzazsKISAgIG5wdHItPmJvcmRlcl93aWR0aCA9IGJ3OwohICAgbnB0ci0+cmVz
aXplX3dpZHRoID0gbm9idzsKISAgIG5wdHItPkZvcmVDb2xvciA9IGZvcmVjb2xvcjsKISAg
IG5wdHItPkJhY2tDb2xvciA9IGJhY2tjb2xvcjsKISAgIG5wdHItPkJveEZpbGxNZXRob2Qg
PSBCb3hGaWxsTWV0aG9kOwohICAgbnB0ci0+SWNvbkJveFswXSA9IEljb25Cb3hbMF07CiEg
ICBucHRyLT5JY29uQm94WzFdID0gSWNvbkJveFsxXTsKISAgIG5wdHItPkljb25Cb3hbMl0g
PSBJY29uQm94WzJdOwohICAgbnB0ci0+SWNvbkJveFszXSA9IEljb25Cb3hbM107CiEgICBu
cHRyLT5vZmZfYnV0dG9ucyA9IG9mZl9idXR0b25zOwohICAgbnB0ci0+b25fYnV0dG9ucyA9
IG9uX2J1dHRvbnM7CiEgCiEgICBpZihsYXN0cHRyICE9IE5VTEwpCiEgICAgIGxhc3RwdHIt
Pm5leHQgPSBucHRyOwohICAgZWxzZQohICAgICBTY3IuVGhlTGlzdCA9IG5wdHI7CiEgfQog
IAotLS0gNzYzLDgwNCAtLS0tCiAgICAgICAgICAgICAgICAgImJhZCBzdHlsZSBjb21tYW5k
OiAlcyIsIHJlc3RvZmxpbmUpOwogICAgICAgIHJldHVybjsKICAgICAgfQohICAgfSAvKiBl
bmQgd2hpbGUgc3RpbGwgc3R1ZmYgb24gY29tbWFuZCAqLwogIAogICAgLyogY2FwdHVyZSBk
ZWZhdWx0IGljb25zICovCiEgICBpZihzdHJjbXAodG5hbWUubmFtZSwiKiIpID09IDApCiAg
ICB7CiEgICAgIGlmKHRuYW1lLm9mZl9mbGFncyAmIElDT05fRkxBRykKISAgICAgICBTY3Iu
RGVmYXVsdEljb24gPSB0bmFtZS52YWx1ZTsKISAgICAgdG5hbWUub2ZmX2ZsYWdzICY9IH5J
Q09OX0ZMQUc7CiEgICAgIHRuYW1lLnZhbHVlID0gTlVMTDsKICAgIH0KISAgIEFkZFRvTGlz
dCgmdG5hbWUpOyAgICAgICAgICAgICAgICAvKiBhZGQgdGVtcCBuYW1lIGxpc3QgdG8gbGlz
dCAqLwogIH0KICAKICAKISBzdGF0aWMgdm9pZCBBZGRUb0xpc3QobmFtZV9saXN0ICp0bmFt
ZSkKICB7CiAgICBuYW1lX2xpc3QgKm5wdHIsKmxhc3RwdHIgPSBOVUxMOwogIAohICAgLyog
VGhpcyB1c2VkIHRvIGNvbnRhaW4gbG9naWMgdGhhdCByZXR1cm5lZCBpZiB0aGUgc3R5bGUg
ZGlkbid0IGNvbnRhaW4KISAgICAgIGFueXRoaW5nLiAgSSBkb24ndCBzZWUgd2h5IHdlIHNo
b3VsZCBib3RoZXIuIGRqZS4gKi8KICAKICAgIC8qIHVzZWQgdG8gbWVyZ2UgZHVwbGljYXRl
IGVudHJpZXMsIGJ1dCB0aGF0IGlzIG5vIGxvbmdlcgogICAgICogYXBwcm9wcmlhdGUgc2lu
Y2UgY29uZmljdGluZyBzdHlsZXMgYXJlIHBvc3NpYmxlLCBhbmQgdGhlCiAgICAgKiBsYXN0
IG1hdGNoIHNob3VsZCB3aW4hICovCiEgCiEgICAvKiBzZWVtcyBsaWtlIGEgcHJldHR5IGlu
ZWZmaWNpZW50IHdheSB0byBrZWVwIHRyYWNrIG9mIHRoZSBlbmQKISAgICAgIG9mIHRoZSBs
aXN0LCBidXQgaG93IGxvbmcgY2FuIHRoZSBzdHlsZSBsaXN0IGJlPyBkamUgKi8KISAgIGZv
ciAobnB0ciA9IFNjci5UaGVMaXN0OyBucHRyICE9IE5VTEw7IG5wdHIgPSBucHRyLT5uZXh0
KSB7CiEgICAgIGxhc3RwdHI9bnB0cjsgICAgICAgICAgICAgICAgICAgICAgIC8qIGZpbmQg
ZW5kIG9mIHN0eWxlIGxpc3QgKi8KICAgIH0KICAKISAgIG5wdHIgPSAobmFtZV9saXN0ICop
c2FmZW1hbGxvYyhzaXplb2YobmFtZV9saXN0KSk7IC8qIG1hbGxvYyBhcmVhICovCiEgICBt
ZW1jcHkobnB0ciwgdG5hbWUsIHNpemVvZihuYW1lX2xpc3QpKTsgLyogY29weSB0ZXJtIGFy
ZWEgaW50byBsaXN0ICovCiEgICBpZihsYXN0cHRyICE9IE5VTEwpICAgICAgICAgICAgICAg
ICAgIC8qIElmIG5vdCBmaXJzdCBlbnRyeSBpbiBsaXN0ICovCiEgICAgIGxhc3RwdHItPm5l
eHQgPSBucHRyOyAgICAgICAgICAgICAgIC8qIGNoYWluIHRoaXMgZW50cnkgdG8gdGhlIGxp
c3QgKi8KISAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZWxz
ZSBmaXJzdCBlbnRyeSBpbiBsaXN0ICovCiEgICAgIFNjci5UaGVMaXN0ID0gbnB0cjsgICAg
ICAgICAgICAgICAgIC8qIHNldCB0aGUgbGlzdCByb290IHBvaW50ZXIuICovCiEgfSAvKiBl
bmQgZnVuY3Rpb24gKi8KICAKKioqIGZ2d20vYWRkX3dpbmRvdy5jLm9yaWcJU2F0IE9jdCAg
NCAyMjozODozOCAxOTk3Ci0tLSBmdndtL2FkZF93aW5kb3cuYwlNb24gT2N0ICA2IDIwOjM5
OjQ3IDE5OTcKKioqKioqKioqKioqKioqCioqKiA3MCw3NSAqKioqCi0tLSA3MCw3NyAtLS0t
CiAgZXh0ZXJuIGNoYXIgKlBpeG1hcFBhdGg7CiAgI2VuZGlmCiAgCisgc3RhdGljIHZvaWQg
bWVyZ2Vfc3R5bGVzKG5hbWVfbGlzdCAqLCBuYW1lX2xpc3QgKik7IC8qIHByb3RvdHlwZSAq
LworIAogIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKgogICAqCiAgICogIFByb2NlZHVyZToKKioqKioq
KioqKioqKioqCioqKiA5MiwxMTEgKioqKgogICAgdW5zaWduZWQgbG9uZyB2YWx1ZW1hc2tf
c2F2ZSA9IDA7CiAgI2VuZGlmCiAgICBYU2V0V2luZG93QXR0cmlidXRlcyBhdHRyaWJ1dGVz
OwkvKiBhdHRyaWJ1dGVzIGZvciBjcmVhdGUgd2luZG93cyAqLwogICAgaW50IGksd2lkdGgs
aGVpZ2h0OwogICAgaW50IGEsYjsKLSAgIGNoYXIgKnZhbHVlOwotICNpZmRlZiBNSU5JX0lD
T05TCi0gICBjaGFyICptaW5pX3ZhbHVlOwotICNlbmRpZgotICNpZmRlZiBVU0VERUNPUgot
ICAgY2hhciAqZGVjb3IgPSBOVUxMOwotICNlbmRpZgotICAgdW5zaWduZWQgbG9uZyB0Zmxh
ZzsKLSAgIGludCBEZXNrLCBib3JkZXJfd2lkdGgsIHJlc2l6ZV93aWR0aDsKICAgIGV4dGVy
biBCb29sIE5lZWRUb1Jlc2l6ZVRvbzsKICAgIGV4dGVybiBGdndtV2luZG93ICpjb2xvcm1h
cF93aW47Ci0gICBjaGFyICpmb3JlY29sb3IgPSBOVUxMLCAqYmFja2NvbG9yID0gTlVMTDsK
ICAgIGludCBjbGllbnRfYXJnYzsKICAgIGNoYXIgKipjbGllbnRfYXJndiA9IE5VTEwsICpz
dHJfdHlwZTsKICAgIEJvb2wgc3RhdHVzOwotLS0gOTQsMTA0IC0tLS0KICAgIHVuc2lnbmVk
IGxvbmcgdmFsdWVtYXNrX3NhdmUgPSAwOwogICNlbmRpZgogICAgWFNldFdpbmRvd0F0dHJp
YnV0ZXMgYXR0cmlidXRlczsJLyogYXR0cmlidXRlcyBmb3IgY3JlYXRlIHdpbmRvd3MgKi8K
KyAgIG5hbWVfbGlzdCBzdHlsZXM7ICAgICAgICAgICAgICAgICAgICAgLyogYXJlYSBmb3Ig
bWVyZ2VkIHN0eWxlcyAqLwogICAgaW50IGksd2lkdGgsaGVpZ2h0OwogICAgaW50IGEsYjsK
ICAgIGV4dGVybiBCb29sIE5lZWRUb1Jlc2l6ZVRvbzsKICAgIGV4dGVybiBGdndtV2luZG93
ICpjb2xvcm1hcF93aW47CiAgICBpbnQgY2xpZW50X2FyZ2M7CiAgICBjaGFyICoqY2xpZW50
X2FyZ3YgPSBOVUxMLCAqc3RyX3R5cGU7CiAgICBCb29sIHN0YXR1czsKKioqKioqKioqKioq
KioqCioqKiAxOTUsMjE5ICoqKioKICAgIHRtcF93aW4tPmZsYWdzIHw9IEJPUkRFUjsKICAg
IHRtcF93aW4tPmZsYWdzIHw9IFRJVExFOwogIAohICAgdGZsYWcgPSBMb29rSW5MaXN0KFNj
ci5UaGVMaXN0LHRtcF93aW4tPm5hbWUsJnRtcF93aW4tPmNsYXNzLCAmdmFsdWUsCiEgI2lm
ZGVmIE1JTklfSUNPTlMKISAgICAgICAgICAgICAgICAgICAgICAmbWluaV92YWx1ZSwKISAj
ZW5kaWYKISAjaWZkZWYgVVNFREVDT1IKISAJCSAgICAgJmRlY29yLAohICNlbmRpZgohICAg
ICAgICAgICAgICAgICAgICAgICZEZXNrLAohIAkJICAgICAmYm9yZGVyX3dpZHRoLCAmcmVz
aXplX3dpZHRoLAohICAgICAgICAgICAgICAgICAgICAgICZmb3JlY29sb3IsJmJhY2tjb2xv
ciwmdG1wX3dpbi0+YnV0dG9ucywgCiEgCQkgICAgIHRtcF93aW4tPkljb25Cb3gsJih0bXBf
d2luLT5Cb3hGaWxsTWV0aG9kKSk7CiAgCiAgI2lmZGVmIFVTRURFQ09SCiAgICAvKiBzZWFy
Y2ggZm9yIGEgVXNlRGVjb3IgdGFnIGluIHRoZSBTdHlsZSAqLwogICAgdG1wX3dpbi0+Zmwg
PSBOVUxMOwohICAgaWYgKGRlY29yICE9IE5VTEwpIHsKICAgICAgICBGdndtRGVjb3IgKmZs
ID0gJlNjci5EZWZhdWx0RGVjb3I7CiAgICAgICAgZm9yICg7IGZsOyBmbCA9IGZsLT5uZXh0
KQohIAkgIGlmIChteXN0cmNhc2VjbXAoZGVjb3IsZmwtPnRhZyk9PTApIHsKICAJICAgICAg
dG1wX3dpbi0+ZmwgPSBmbDsKICAJICAgICAgYnJlYWs7CiAgCSAgfQotLS0gMTg4LDIwNCAt
LS0tCiAgICB0bXBfd2luLT5mbGFncyB8PSBCT1JERVI7CiAgICB0bXBfd2luLT5mbGFncyB8
PSBUSVRMRTsKICAKISAgIExvb2tJbkxpc3QodG1wX3dpbiwgJnN0eWxlcyk7ICAgICAgICAg
LyogZ2V0IG1lcmdlZCBzdHlsZXMgKi8KICAKKyAgIHRtcF93aW4tPkljb25Cb3hlcyA9IHN0
eWxlcy5JY29uQm94ZXM7IC8qIGNvcHkgaWNvbmJveGVzIHB0ciAoaWYgYW55KSAqLworICAg
dG1wX3dpbi0+YnV0dG9ucyA9IHN0eWxlcy5vbl9idXR0b25zOyAvKiBvbiBhbmQgb2ZmIGJ1
dHRvbnMgY29tYmluZWQuICovCiAgI2lmZGVmIFVTRURFQ09SCiAgICAvKiBzZWFyY2ggZm9y
IGEgVXNlRGVjb3IgdGFnIGluIHRoZSBTdHlsZSAqLwogICAgdG1wX3dpbi0+ZmwgPSBOVUxM
OwohICAgaWYgKHN0eWxlcy5EZWNvciAhPSBOVUxMKSB7CiAgICAgICAgRnZ3bURlY29yICpm
bCA9ICZTY3IuRGVmYXVsdERlY29yOwogICAgICAgIGZvciAoOyBmbDsgZmwgPSBmbC0+bmV4
dCkKISAJICBpZiAobXlzdHJjYXNlY21wKHN0eWxlcy5EZWNvcixmbC0+dGFnKT09MCkgewog
IAkgICAgICB0bXBfd2luLT5mbCA9IGZsOwogIAkgICAgICBicmVhazsKICAJICB9CioqKioq
KioqKioqKioqKgoqKiogMjI3LDI0MCAqKioqCiAgICBHZXRNd21IaW50cyh0bXBfd2luKTsK
ICAgIEdldE9sSGludHModG1wX3dpbik7CiAgCiEgICBTZWxlY3REZWNvcih0bXBfd2luLHRm
bGFnLGJvcmRlcl93aWR0aCxyZXNpemVfd2lkdGgpOyAKICAKISAgIHRtcF93aW4tPmZsYWdz
IHw9IHRmbGFnICYgQUxMX0NPTU1PTl9GTEFHUzsKICAgIC8qIGZpbmQgYSBzdWl0YWJsZSBp
Y29uIHBpeG1hcCAqLwohICAgaWYodGZsYWcgJiBJQ09OX0ZMQUcpCiAgICAgIHsKICAgICAg
ICAvKiBhbiBpY29uIHdhcyBzcGVjaWZpZWQgKi8KISAgICAgICB0bXBfd2luLT5pY29uX2Jp
dG1hcF9maWxlID0gdmFsdWU7CiAgICAgIH0KICAgIGVsc2UgaWYoKHRtcF93aW4tPndtaGlu
dHMpCiAgCSAgJiYodG1wX3dpbi0+d21oaW50cy0+ZmxhZ3MgJiAoSWNvbldpbmRvd0hpbnR8
SWNvblBpeG1hcEhpbnQpKSkKLS0tIDIxMiwyMjUgLS0tLQogICAgR2V0TXdtSGludHModG1w
X3dpbik7CiAgICBHZXRPbEhpbnRzKHRtcF93aW4pOwogIAohICAgU2VsZWN0RGVjb3IodG1w
X3dpbixzdHlsZXMub25fZmxhZ3Msc3R5bGVzLmJvcmRlcl93aWR0aCxzdHlsZXMucmVzaXpl
X3dpZHRoKTsgCiAgCiEgICB0bXBfd2luLT5mbGFncyB8PSBzdHlsZXMub25fZmxhZ3MgJiBB
TExfQ09NTU9OX0ZMQUdTOwogICAgLyogZmluZCBhIHN1aXRhYmxlIGljb24gcGl4bWFwICov
CiEgICBpZihzdHlsZXMub25fZmxhZ3MgJiBJQ09OX0ZMQUcpCiAgICAgIHsKICAgICAgICAv
KiBhbiBpY29uIHdhcyBzcGVjaWZpZWQgKi8KISAgICAgICB0bXBfd2luLT5pY29uX2JpdG1h
cF9maWxlID0gc3R5bGVzLnZhbHVlOwogICAgICB9CiAgICBlbHNlIGlmKCh0bXBfd2luLT53
bWhpbnRzKQogIAkgICYmKHRtcF93aW4tPndtaGludHMtPmZsYWdzICYgKEljb25XaW5kb3dI
aW50fEljb25QaXhtYXBIaW50KSkpCioqKioqKioqKioqKioqKgoqKiogMjQ5LDI1NiAqKioq
CiAgICAgIH0KICAKICAjaWZkZWYgTUlOSV9JQ09OUwohICAgaWYgKHRmbGFnICYgTUlOSUlD
T05fRkxBRykgewohICAgICB0bXBfd2luLT5taW5pX3BpeG1hcF9maWxlID0gbWluaV92YWx1
ZTsKICAgIH0KICAgIGVsc2UgewogICAgICB0bXBfd2luLT5taW5pX3BpeG1hcF9maWxlID0g
TlVMTDsKLS0tIDIzNCwyNDEgLS0tLQogICAgICB9CiAgCiAgI2lmZGVmIE1JTklfSUNPTlMK
ISAgIGlmIChzdHlsZXMub25fZmxhZ3MgJiBNSU5JSUNPTl9GTEFHKSB7CiEgICAgIHRtcF93
aW4tPm1pbmlfcGl4bWFwX2ZpbGUgPSBzdHlsZXMubWluaV92YWx1ZTsKICAgIH0KICAgIGVs
c2UgewogICAgICB0bXBfd2luLT5taW5pX3BpeG1hcF9maWxlID0gTlVMTDsKKioqKioqKioq
KioqKioqCioqKiAyNjksMjg0ICoqKioKICAgIC8qIEZpbmQgb3V0IGlmIHRoZSBjbGllbnQg
cmVxdWVzdGVkIGEgc3BlY2lmaWMgZGVzayBvbiB0aGUgY29tbWFuZCBsaW5lLiAqLwogICAg
aWYgKFhHZXRDb21tYW5kIChkcHksIHRtcF93aW4tPncsICZjbGllbnRfYXJndiwgJmNsaWVu
dF9hcmdjKSkgewogICAgICAgIFhybVBhcnNlQ29tbWFuZCAoJmRiLCB0YWJsZSwgNCwgImZ2
d20iLCAmY2xpZW50X2FyZ2MsIGNsaWVudF9hcmd2KTsKISAgICAgICBzdGF0dXMgPSBYcm1H
ZXRSZXNvdXJjZSAoZGIsICJmdndtLmRlc2siLCAiRnZ3bS5EZXNrIiwgJnN0cl90eXBlLCAm
cm1fdmFsdWUpOwogICAgICAgIGlmICgoc3RhdHVzID09IFRydWUpICYmIChybV92YWx1ZS5z
aXplICE9IDApKSB7CiEgICAgICAgICAgIERlc2sgPSBhdG9pKHJtX3ZhbHVlLmFkZHIpOwoh
IAkgIHRmbGFnIHw9IFNUQVJUU09OREVTS19GTEFHOwogICAgICAgIH0KICAgICAgICBYcm1E
ZXN0cm95RGF0YWJhc2UgKGRiKTsKICAgICAgICBkYiA9IE5VTEw7CiAgICB9CiAgCiEgICBp
ZighUGxhY2VXaW5kb3codG1wX3dpbiwgdGZsYWcsIERlc2spKQogICAgICByZXR1cm4gTlVM
TDsKICAKICAgIC8qCi0tLSAyNTQsMjcwIC0tLS0KICAgIC8qIEZpbmQgb3V0IGlmIHRoZSBj
bGllbnQgcmVxdWVzdGVkIGEgc3BlY2lmaWMgZGVzayBvbiB0aGUgY29tbWFuZCBsaW5lLiAq
LwogICAgaWYgKFhHZXRDb21tYW5kIChkcHksIHRtcF93aW4tPncsICZjbGllbnRfYXJndiwg
JmNsaWVudF9hcmdjKSkgewogICAgICAgIFhybVBhcnNlQ29tbWFuZCAoJmRiLCB0YWJsZSwg
NCwgImZ2d20iLCAmY2xpZW50X2FyZ2MsIGNsaWVudF9hcmd2KTsKISAgICAgICBzdGF0dXMg
PSBYcm1HZXRSZXNvdXJjZSAoZGIsICJmdndtLmRlc2siLCAiRnZ3bS5EZXNrIiwKISAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cl90eXBlLCAmcm1fdmFsdWUpOwogICAg
ICAgIGlmICgoc3RhdHVzID09IFRydWUpICYmIChybV92YWx1ZS5zaXplICE9IDApKSB7CiEg
ICAgICAgICAgIHN0eWxlcy5EZXNrID0gYXRvaShybV92YWx1ZS5hZGRyKTsKISAJICBzdHls
ZXMub25fZmxhZ3MgfD0gU1RBUlRTT05ERVNLX0ZMQUc7CiAgICAgICAgfQogICAgICAgIFhy
bURlc3Ryb3lEYXRhYmFzZSAoZGIpOwogICAgICAgIGRiID0gTlVMTDsKICAgIH0KICAKISAg
IGlmKCFQbGFjZVdpbmRvdyh0bXBfd2luLCBzdHlsZXMub25fZmxhZ3MsIHN0eWxlcy5EZXNr
KSkKICAgICAgcmV0dXJuIE5VTEw7CiAgCiAgICAvKgoqKioqKioqKioqKioqKioKKioqIDMx
NCwzNDQgKioqKgogICAgdG1wX3dpbi0+U2hhZG93UGl4ZWwgPSBTY3IuTWVudVJlbGllZi5i
YWNrOwogICAgdG1wX3dpbi0+QmFja1BpeGVsID0gU2NyLk1lbnVDb2xvcnMuYmFjazsKICAK
ISAgIGlmKGZvcmVjb2xvciAhPSBOVUxMKQohICAgICB7CiEgICAgICAgWENvbG9yIGNvbG9y
OwogIAotICAgICAgIGlmKChYUGFyc2VDb2xvciAoZHB5LCBTY3IuRnZ3bVJvb3QuYXR0ci5j
b2xvcm1hcCwgZm9yZWNvbG9yLCAmY29sb3IpKQotIAkgJiYoWEFsbG9jQ29sb3IgKGRweSwg
U2NyLkZ2d21Sb290LmF0dHIuY29sb3JtYXAsICZjb2xvcikpKQotIAl7Ci0gCSAgdG1wX3dp
bi0+VGV4dFBpeGVsID0gY29sb3IucGl4ZWw7IAotIAl9Ci0gICAgIH0KLSAgIGlmKGJhY2tj
b2xvciAhPSBOVUxMKQotICAgICB7Ci0gICAgICAgWENvbG9yIGNvbG9yOwogIAotICAgICAg
IGlmKChYUGFyc2VDb2xvciAoZHB5LCBTY3IuRnZ3bVJvb3QuYXR0ci5jb2xvcm1hcCxiYWNr
Y29sb3IsICZjb2xvcikpCi0gCSAmJihYQWxsb2NDb2xvciAoZHB5LCBTY3IuRnZ3bVJvb3Qu
YXR0ci5jb2xvcm1hcCwgJmNvbG9yKSkpCi0gCi0gCXsKLSAJICB0bXBfd2luLT5CYWNrUGl4
ZWwgPSBjb2xvci5waXhlbDsgCi0gCX0KLSAgICAgICB0bXBfd2luLT5TaGFkb3dQaXhlbCA9
IEdldFNoYWRvdyh0bXBfd2luLT5CYWNrUGl4ZWwpOwotICAgICAgIHRtcF93aW4tPlJlbGll
ZlBpeGVsID0gR2V0SGlsaXRlKHRtcF93aW4tPkJhY2tQaXhlbCk7Ci0gICAgIH0KLSAKLSAK
ICAgIC8qIGFkZCB0aGUgd2luZG93IGludG8gdGhlIGZ2d20gbGlzdCAqLwogICAgdG1wX3dp
bi0+bmV4dCA9IFNjci5GdndtUm9vdC5uZXh0OwogICAgaWYgKFNjci5GdndtUm9vdC5uZXh0
ICE9IE5VTEwpCi0tLSAzMDAsMzI4IC0tLS0KICAgIHRtcF93aW4tPlNoYWRvd1BpeGVsID0g
U2NyLk1lbnVSZWxpZWYuYmFjazsKICAgIHRtcF93aW4tPkJhY2tQaXhlbCA9IFNjci5NZW51
Q29sb3JzLmJhY2s7CiAgCiEgICBpZihzdHlsZXMuRm9yZUNvbG9yICE9IE5VTEwpIHsKISAg
ICAgWENvbG9yIGNvbG9yOwohICAgICAKISAgICAgaWYoKFhQYXJzZUNvbG9yIChkcHksIFNj
ci5GdndtUm9vdC5hdHRyLmNvbG9ybWFwLCBzdHlsZXMuRm9yZUNvbG9yLCAmY29sb3IpKQoh
ICAgICAgICAmJihYQWxsb2NDb2xvciAoZHB5LCBTY3IuRnZ3bVJvb3QuYXR0ci5jb2xvcm1h
cCwgJmNvbG9yKSkpCiEgICAgICAgewohICAgICAgICAgdG1wX3dpbi0+VGV4dFBpeGVsID0g
Y29sb3IucGl4ZWw7IAohICAgICAgIH0KISAgIH0KISAgIGlmKHN0eWxlcy5CYWNrQ29sb3Ig
IT0gTlVMTCkgewohICAgICBYQ29sb3IgY29sb3I7CiEgICAgIAohICAgICBpZigoWFBhcnNl
Q29sb3IgKGRweSwgU2NyLkZ2d21Sb290LmF0dHIuY29sb3JtYXAsc3R5bGVzLkJhY2tDb2xv
ciwgJmNvbG9yKSkKISAgICAgICAgJiYoWEFsbG9jQ29sb3IgKGRweSwgU2NyLkZ2d21Sb290
LmF0dHIuY29sb3JtYXAsICZjb2xvcikpKQohICAgICAgIAohICAgICAgIHsKISAgICAgICAg
IHRtcF93aW4tPkJhY2tQaXhlbCA9IGNvbG9yLnBpeGVsOyAKISAgICAgICB9CiEgICAgIHRt
cF93aW4tPlNoYWRvd1BpeGVsID0gR2V0U2hhZG93KHRtcF93aW4tPkJhY2tQaXhlbCk7CiEg
ICAgIHRtcF93aW4tPlJlbGllZlBpeGVsID0gR2V0SGlsaXRlKHRtcF93aW4tPkJhY2tQaXhl
bCk7CiEgICB9CiAgCiAgCiAgICAvKiBhZGQgdGhlIHdpbmRvdyBpbnRvIHRoZSBmdndtIGxp
c3QgKi8KICAgIHRtcF93aW4tPm5leHQgPSBTY3IuRnZ3bVJvb3QubmV4dDsKICAgIGlmIChT
Y3IuRnZ3bVJvb3QubmV4dCAhPSBOVUxMKQoqKioqKioqKioqKioqKioKKioqIDQ5OSw1Mzgg
KioqKgogIAkgIGVsc2UKICAJICAgIHRtcF93aW4tPmxlZnRfd1tpXSA9IE5vbmU7CiAgCiEg
CSAgaWYoKGk8U2NyLm5yX3JpZ2h0X2J1dHRvbnMpJiYodG1wX3dpbi0+cmlnaHRfd1tpXSA+
MCkpCiEgCSAgICB7CiAgI2lmIGRlZmluZWQoUElYTUFQX0JVVFRPTlMpICYmIGRlZmluZWQo
Qk9SREVSU1RZTEUpCiEgCSAgICAgIGlmIChUZXh0dXJlUGl4bWFwCiEgCQkgICYmIEdldERl
Y29yKHRtcF93aW4scmlnaHRfYnV0dG9uc1tpXS5mbGFncykgJiBVc2VCb3JkZXJTdHlsZSkg
ewohIAkJICBUZXh0dXJlUGl4bWFwU2F2ZSA9IGF0dHJpYnV0ZXMuYmFja2dyb3VuZF9waXht
YXA7CiEgCQkgIGF0dHJpYnV0ZXMuYmFja2dyb3VuZF9waXhtYXAgPSBUZXh0dXJlUGl4bWFw
OwohIAkJICB2YWx1ZW1hc2tfc2F2ZSA9IHZhbHVlbWFzazsKISAJCSAgdmFsdWVtYXNrID0g
KHZhbHVlbWFzayAmIH5DV0JhY2tQaXhlbCkgfCBDV0JhY2tQaXhtYXA7CiEgCSAgICAgIH0K
ICAjZW5kaWYKISAJICAgICAgdG1wX3dpbi0+cmlnaHRfd1tpXSA9CiEgCQlYQ3JlYXRlV2lu
ZG93IChkcHksIHRtcF93aW4tPmZyYW1lLCAKISAJCQkgICAgICAgdG1wX3dpbi0+dGl0bGVf
d2lkdGgtCiEgCQkJICAgICAgIHRtcF93aW4tPnRpdGxlX2hlaWdodCooaSsxKSwKISAJCQkg
ICAgICAgMCwgdG1wX3dpbi0+dGl0bGVfaGVpZ2h0LAohIAkJCSAgICAgICB0bXBfd2luLT50
aXRsZV9oZWlnaHQsIAohIAkJCSAgICAgICAwLCBDb3B5RnJvbVBhcmVudCwgSW5wdXRPdXRw
dXQsCiEgCQkJICAgICAgIENvcHlGcm9tUGFyZW50LAohIAkJCSAgICAgICB2YWx1ZW1hc2ss
CiEgCQkJICAgICAgICZhdHRyaWJ1dGVzKTsKICAjaWYgZGVmaW5lZChQSVhNQVBfQlVUVE9O
UykgJiYgZGVmaW5lZChCT1JERVJTVFlMRSkKISAJICAgICAgaWYgKFRleHR1cmVQaXhtYXAK
ISAJCSAgJiYgR2V0RGVjb3IodG1wX3dpbixyaWdodF9idXR0b25zW2ldLmZsYWdzKSAmIFVz
ZUJvcmRlclN0eWxlKSB7CiEgCQkgIGF0dHJpYnV0ZXMuYmFja2dyb3VuZF9waXhtYXAgPSBU
ZXh0dXJlUGl4bWFwU2F2ZTsKISAJCSAgdmFsdWVtYXNrID0gdmFsdWVtYXNrX3NhdmU7CiEg
CSAgICAgIH0KICAjZW5kaWYKISAJICAgIH0KICAJICBlbHNlCiAgCSAgICB0bXBfd2luLT5y
aWdodF93W2ldID0gTm9uZTsKICAJfQogICAgICB9CiEgCiAgICBpZih0bXBfd2luLT5mbGFn
cyAmIEJPUkRFUikKICAgICAgewogICNpZiBkZWZpbmVkKFBJWE1BUF9CVVRUT05TKSAmJiBk
ZWZpbmVkKEJPUkRFUlNUWUxFKQotLS0gNDgzLDUyMSAtLS0tCiAgCSAgZWxzZQogIAkgICAg
dG1wX3dpbi0+bGVmdF93W2ldID0gTm9uZTsKICAKISAJICBpZigoaTxTY3IubnJfcmlnaHRf
YnV0dG9ucykmJih0bXBfd2luLT5yaWdodF93W2ldID4wKSkgewogICNpZiBkZWZpbmVkKFBJ
WE1BUF9CVVRUT05TKSAmJiBkZWZpbmVkKEJPUkRFUlNUWUxFKQohICAgICAgICAgICAgIGlm
IChUZXh0dXJlUGl4bWFwCiEgICAgICAgICAgICAgICAgICYmIEdldERlY29yKHRtcF93aW4s
cmlnaHRfYnV0dG9uc1tpXS5mbGFncykgJiBVc2VCb3JkZXJTdHlsZSkgewohICAgICAgICAg
ICAgICAgVGV4dHVyZVBpeG1hcFNhdmUgPSBhdHRyaWJ1dGVzLmJhY2tncm91bmRfcGl4bWFw
OwohICAgICAgICAgICAgICAgYXR0cmlidXRlcy5iYWNrZ3JvdW5kX3BpeG1hcCA9IFRleHR1
cmVQaXhtYXA7CiEgICAgICAgICAgICAgICB2YWx1ZW1hc2tfc2F2ZSA9IHZhbHVlbWFzazsK
ISAgICAgICAgICAgICAgIHZhbHVlbWFzayA9ICh2YWx1ZW1hc2sgJiB+Q1dCYWNrUGl4ZWwp
IHwgQ1dCYWNrUGl4bWFwOwohICAgICAgICAgICAgIH0KICAjZW5kaWYKISAgICAgICAgICAg
ICB0bXBfd2luLT5yaWdodF93W2ldID0KISAgICAgICAgICAgICAgIFhDcmVhdGVXaW5kb3cg
KGRweSwgdG1wX3dpbi0+ZnJhbWUsIAohICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dG1wX3dpbi0+dGl0bGVfd2lkdGgtCiEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
bXBfd2luLT50aXRsZV9oZWlnaHQqKGkrMSksCiEgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLCB0bXBfd2luLT50aXRsZV9oZWlnaHQsCiEgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0bXBfd2luLT50aXRsZV9oZWlnaHQsIAohICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCwgQ29weUZyb21QYXJlbnQsIElucHV0T3V0cHV0LAohICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ29weUZyb21QYXJlbnQsCiEgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YWx1ZW1hc2ssCiEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
YXR0cmlidXRlcyk7CiAgI2lmIGRlZmluZWQoUElYTUFQX0JVVFRPTlMpICYmIGRlZmluZWQo
Qk9SREVSU1RZTEUpCiEgICAgICAgICAgICAgaWYgKFRleHR1cmVQaXhtYXAKISAgICAgICAg
ICAgICAgICAgJiYgR2V0RGVjb3IodG1wX3dpbixyaWdodF9idXR0b25zW2ldLmZsYWdzKSAm
IFVzZUJvcmRlclN0eWxlKSB7CiEgICAgICAgICAgICAgICBhdHRyaWJ1dGVzLmJhY2tncm91
bmRfcGl4bWFwID0gVGV4dHVyZVBpeG1hcFNhdmU7CiEgICAgICAgICAgICAgICB2YWx1ZW1h
c2sgPSB2YWx1ZW1hc2tfc2F2ZTsKISAgICAgICAgICAgICB9CiAgI2VuZGlmCiEgICAgICAg
ICAgIH0KICAJICBlbHNlCiAgCSAgICB0bXBfd2luLT5yaWdodF93W2ldID0gTm9uZTsKICAJ
fQogICAgICB9CiEgICAKICAgIGlmKHRtcF93aW4tPmZsYWdzICYgQk9SREVSKQogICAgICB7
CiAgI2lmIGRlZmluZWQoUElYTUFQX0JVVFRPTlMpICYmIGRlZmluZWQoQk9SREVSU1RZTEUp
CioqKioqKioqKioqKioqKgoqKiogOTU4LDExMjEgKioqKgogICAqCUxvb2tJbkxpc3QgLSBs
b29rIHRocm91Z2ggYSBsaXN0IGZvciBhIHdpbmRvdyBuYW1lLCBvciBjbGFzcwogICAqCiAg
ICogIFJldHVybmVkIFZhbHVlOgohICAqCXRoZSBwdHIgZmllbGQgb2YgdGhlIGxpc3Qgc3Ry
dWN0dXJlIG9yIE5VTEwgaWYgdGhlIG5hbWUgCiEgICoJb3IgY2xhc3Mgd2FzIG5vdCBmb3Vu
ZCBpbiB0aGUgbGlzdAogICAqCiAgICogIElucHV0czoKISAgKglsaXN0CS0gYSBwb2ludGVy
IHRvIHRoZSBoZWFkIG9mIGEgbGlzdAohICAqCW5hbWUJLSBhIHBvaW50ZXIgdG8gdGhlIG5h
bWUgdG8gbG9vayBmb3IKISAgKgljbGFzcwktIGEgcG9pbnRlciB0byB0aGUgY2xhc3MgdG8g
bG9vayBmb3IKICAgKgogICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KISB1bnNpZ25lZCBsb25nIExv
b2tJbkxpc3QobmFtZV9saXN0ICpsaXN0LCBjaGFyICpuYW1lLCBYQ2xhc3NIaW50ICpjbGFz
cywgCiEgCQkJIGNoYXIgKip2YWx1ZSwKISAjaWZkZWYgTUlOSV9JQ09OUwohICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICoqbWluaV92YWx1ZSwgCiEgI2VuZGlmCiEgI2lmZGVm
IFVTRURFQ09SCiEgCQkJIGNoYXIgKipkZWNvciwKISAjZW5kaWYKISAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50ICpEZXNrLCBpbnQgKmJvcmRlcl93aWR0aCwKISAJCQkgaW50ICpy
ZXNpemVfd2lkdGgsIGNoYXIgKipmb3JlY29sb3IsIGNoYXIgKipiYWNrY29sb3IsCiEgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKiBidXR0b25zLCBpbnQgKklj
b25Cb3gsCiEgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqQm94RmlsbE1ldGhvZCkK
ICB7CiAgICBuYW1lX2xpc3QgKm5wdHI7Ci0gICB1bnNpZ25lZCBsb25nIHJldHZhbCA9IDA7
CiAgCiEgICAqdmFsdWUgPSBOVUxMOwohICNpZmRlZiBNSU5JX0lDT05TCiEgICAqbWluaV92
YWx1ZSA9IE5VTEw7CiEgI2VuZGlmCiEgI2lmZGVmIFVTRURFQ09SCiEgICAqZGVjb3IgPSBO
VUxMOwohICNlbmRpZgohICAgKmZvcmVjb2xvciA9IE5VTEw7CiEgICAqYmFja2NvbG9yID0g
TlVMTDsKISAgICpEZXNrID0gMDsKISAgICpidXR0b25zID0gMDsKISAgICpCb3hGaWxsTWV0
aG9kID0gMDsKISAgICpib3JkZXJfd2lkdGggPSAwOwohICAgKnJlc2l6ZV93aWR0aCA9IDA7
CiEgICBJY29uQm94WzBdID0gLTE7CiEgICBJY29uQm94WzFdID0gLTE7CiEgICBJY29uQm94
WzJdID0gU2NyLk15RGlzcGxheVdpZHRoOwohICAgSWNvbkJveFszXSA9IFNjci5NeURpc3Bs
YXlIZWlnaHQ7CiAgCiEgICAvKiBsb29rIGZvciB0aGUgbmFtZSBmaXJzdCAqLwohICAgZm9y
IChucHRyID0gbGlzdDsgbnB0ciAhPSBOVUxMOyBucHRyID0gbnB0ci0+bmV4dCkKISAgICAg
ewohICAgICAgIGlmIChjbGFzcykKISAJewohIAkgIC8qIGZpcnN0IGxvb2sgZm9yIHRoZSBy
ZXNfY2xhc3MgIChsb3dlc3QgcHJpb3JpdHkpICovCiEgCSAgaWYgKG1hdGNoV2lsZGNhcmRz
KG5wdHItPm5hbWUsY2xhc3MtPnJlc19jbGFzcykgPT0gVFJVRSkKISAJICAgIHsKISAJICAg
ICAgaWYobnB0ci0+dmFsdWUgIT0gTlVMTCkqdmFsdWUgPSBucHRyLT52YWx1ZTsKISAjaWZk
ZWYgTUlOSV9JQ09OUwohICAgICAgICAgICAgICAgaWYobnB0ci0+bWluaV92YWx1ZSAhPSBO
VUxMKSAqbWluaV92YWx1ZSA9IG5wdHItPm1pbmlfdmFsdWU7CiEgI2VuZGlmCiEgI2lmZGVm
IFVTRURFQ09SCiEgCSAgICAgIGlmIChucHRyLT5EZWNvciAhPSBOVUxMKSAqZGVjb3IgPSBu
cHRyLT5EZWNvcjsKISAjZW5kaWYKISAJICAgICAgaWYobnB0ci0+b2ZmX2ZsYWdzICYgU1RB
UlRTT05ERVNLX0ZMQUcpCiEgCQkqRGVzayA9IG5wdHItPkRlc2s7CiEgCSAgICAgIGlmKG5w
dHItPm9mZl9mbGFncyAmIEJXX0ZMQUcpCiEgCQkqYm9yZGVyX3dpZHRoID0gbnB0ci0+Ym9y
ZGVyX3dpZHRoOwohIAkgICAgICBpZihucHRyLT5vZmZfZmxhZ3MgJiBGT1JFX0NPTE9SX0ZM
QUcpCiEgCQkqZm9yZWNvbG9yID0gbnB0ci0+Rm9yZUNvbG9yOwohIAkgICAgICBpZihucHRy
LT5vZmZfZmxhZ3MgJiBCQUNLX0NPTE9SX0ZMQUcpCiEgCQkqYmFja2NvbG9yID0gbnB0ci0+
QmFja0NvbG9yOwohIAkgICAgICBpZihucHRyLT5vZmZfZmxhZ3MgJiBOT0JXX0ZMQUcpCiEg
CQkqcmVzaXplX3dpZHRoID0gbnB0ci0+cmVzaXplX3dpZHRoOwohIAkgICAgICByZXR2YWwg
fD0gbnB0ci0+b2ZmX2ZsYWdzOwohIAkgICAgICByZXR2YWwgJj0gfihucHRyLT5vbl9mbGFn
cyk7CiEgICAgICAgICAgICAgICAqYnV0dG9ucyB8PSBucHRyLT5vZmZfYnV0dG9uczsKISAg
ICAgICAgICAgICAgICpidXR0b25zICY9IH4obnB0ci0+b25fYnV0dG9ucyk7CiEgCSAgICAg
IGlmKG5wdHItPkJveEZpbGxNZXRob2QgIT0gMCkKISAJCSpCb3hGaWxsTWV0aG9kID0gbnB0
ci0+Qm94RmlsbE1ldGhvZDsKISAJICAgICAgaWYobnB0ci0+SWNvbkJveFswXSA+PSAwKQoh
IAkJewohIAkJICBJY29uQm94WzBdID0gbnB0ci0+SWNvbkJveFswXTsKISAJCSAgSWNvbkJv
eFsxXSA9IG5wdHItPkljb25Cb3hbMV07CiEgCQkgIEljb25Cb3hbMl0gPSBucHRyLT5JY29u
Qm94WzJdOwohIAkJICBJY29uQm94WzNdID0gbnB0ci0+SWNvbkJveFszXTsKISAJCX0KISAJ
ICAgIH0KICAKISAJICAvKiBsb29rIGZvciB0aGUgcmVzX25hbWUgbmV4dCAqLwohIAkgIGlm
IChtYXRjaFdpbGRjYXJkcyhucHRyLT5uYW1lLGNsYXNzLT5yZXNfbmFtZSkgPT0gVFJVRSkK
ISAJICAgIHsKISAJICAgICAgaWYobnB0ci0+dmFsdWUgIT0gTlVMTCkqdmFsdWUgPSBucHRy
LT52YWx1ZTsKICAjaWZkZWYgTUlOSV9JQ09OUwohICAgICAgICAgICAgICAgaWYobnB0ci0+
bWluaV92YWx1ZSAhPSBOVUxMKSAqbWluaV92YWx1ZSA9IG5wdHItPm1pbmlfdmFsdWU7CiAg
I2VuZGlmCiAgI2lmZGVmIFVTRURFQ09SCiEgCSAgICAgIGlmIChucHRyLT5EZWNvciAhPSBO
VUxMKSAqZGVjb3IgPSBucHRyLT5EZWNvcjsKICAjZW5kaWYKISAJICAgICAgaWYobnB0ci0+
b2ZmX2ZsYWdzICYgU1RBUlRTT05ERVNLX0ZMQUcpCiEgCQkqRGVzayA9IG5wdHItPkRlc2s7
CiEgCSAgICAgIGlmKG5wdHItPm9mZl9mbGFncyAmIEZPUkVfQ09MT1JfRkxBRykKISAJCSpm
b3JlY29sb3IgPSBucHRyLT5Gb3JlQ29sb3I7CiEgCSAgICAgIGlmKG5wdHItPm9mZl9mbGFn
cyAmIEJBQ0tfQ09MT1JfRkxBRykKISAJCSpiYWNrY29sb3IgPSBucHRyLT5CYWNrQ29sb3I7
CiEgCSAgICAgIGlmKG5wdHItPm9mZl9mbGFncyAmIEJXX0ZMQUcpCiEgCQkqYm9yZGVyX3dp
ZHRoID0gbnB0ci0+Ym9yZGVyX3dpZHRoOwohIAkgICAgICBpZihucHRyLT5vZmZfZmxhZ3Mg
JiBOT0JXX0ZMQUcpCiEgCQkqcmVzaXplX3dpZHRoID0gbnB0ci0+cmVzaXplX3dpZHRoOwoh
IAkgICAgICByZXR2YWwgfD0gbnB0ci0+b2ZmX2ZsYWdzOwohIAkgICAgICByZXR2YWwgJj0g
fihucHRyLT5vbl9mbGFncyk7CiEgICAgICAgICAgICAgICAqYnV0dG9ucyB8PSBucHRyLT5v
ZmZfYnV0dG9uczsKISAgICAgICAgICAgICAgICpidXR0b25zICY9IH4obnB0ci0+b25fYnV0
dG9ucyk7CiEgCSAgICAgIGlmKG5wdHItPkJveEZpbGxNZXRob2QgIT0gMCkKISAJCSpCb3hG
aWxsTWV0aG9kID0gbnB0ci0+Qm94RmlsbE1ldGhvZDsKISAJICAgICAgaWYobnB0ci0+SWNv
bkJveFswXSA+PSAwKQohIAkJewohIAkJICBJY29uQm94WzBdID0gbnB0ci0+SWNvbkJveFsw
XTsKISAJCSAgSWNvbkJveFsxXSA9IG5wdHItPkljb25Cb3hbMV07CiEgCQkgIEljb25Cb3hb
Ml0gPSBucHRyLT5JY29uQm94WzJdOwohIAkJICBJY29uQm94WzNdID0gbnB0ci0+SWNvbkJv
eFszXTsKISAJCX0KISAJICAgIH0KISAJfQohICAgICAgIC8qIGZpbmFsbHksIGxvb2sgZm9y
IG5hbWUgbWF0Y2hlcyAqLwohICAgICAgIGlmIChtYXRjaFdpbGRjYXJkcyhucHRyLT5uYW1l
LG5hbWUpID09IFRSVUUpCiEgCXsKISAJICBpZihucHRyLT52YWx1ZSAhPSBOVUxMKSp2YWx1
ZSA9IG5wdHItPnZhbHVlOwohICNpZmRlZiBNSU5JX0lDT05TCiEgICAgICAgICAgIGlmKG5w
dHItPm1pbmlfdmFsdWUgIT0gTlVMTCkgKm1pbmlfdmFsdWUgPSBucHRyLT5taW5pX3ZhbHVl
OwohICNlbmRpZgohICNpZmRlZiBVU0VERUNPUgohIAkgIGlmIChucHRyLT5EZWNvciAhPSBO
VUxMKSAqZGVjb3IgPSBucHRyLT5EZWNvcjsKISAjZW5kaWYKISAJICBpZihucHRyLT5vZmZf
ZmxhZ3MgJiBTVEFSVFNPTkRFU0tfRkxBRykJICAgCiEgCSAgICAqRGVzayA9IG5wdHItPkRl
c2s7CiEgCSAgaWYobnB0ci0+b2ZmX2ZsYWdzICYgRk9SRV9DT0xPUl9GTEFHKQohIAkgICAg
KmZvcmVjb2xvciA9IG5wdHItPkZvcmVDb2xvcjsKISAJICBpZihucHRyLT5vZmZfZmxhZ3Mg
JiBCQUNLX0NPTE9SX0ZMQUcpCiEgCSAgICAqYmFja2NvbG9yID0gbnB0ci0+QmFja0NvbG9y
OwohIAkgIGlmKG5wdHItPm9mZl9mbGFncyAmIEJXX0ZMQUcpCiEgCSAgICAqYm9yZGVyX3dp
ZHRoID0gbnB0ci0+Ym9yZGVyX3dpZHRoOwohIAkgIGlmKG5wdHItPm9mZl9mbGFncyAmIE5P
QldfRkxBRykKISAJICAgICpyZXNpemVfd2lkdGggPSBucHRyLT5yZXNpemVfd2lkdGg7CiEg
CSAgcmV0dmFsIHw9IG5wdHItPm9mZl9mbGFnczsKISAJICByZXR2YWwgJj0gfihucHRyLT5v
bl9mbGFncyk7CiEgICAgICAgICAgICpidXR0b25zIHw9IG5wdHItPm9mZl9idXR0b25zOwoh
ICAgICAgICAgICAqYnV0dG9ucyAmPSB+KG5wdHItPm9uX2J1dHRvbnMpOwohIAkgIGlmKG5w
dHItPkJveEZpbGxNZXRob2QgIT0gMCkKISAJICAgICpCb3hGaWxsTWV0aG9kID0gbnB0ci0+
Qm94RmlsbE1ldGhvZDsKISAJICBpZihucHRyLT5JY29uQm94WzBdID49IDApCiEgCSAgICB7
CiEgCSAgICAgIEljb25Cb3hbMF0gPSBucHRyLT5JY29uQm94WzBdOwohIAkgICAgICBJY29u
Qm94WzFdID0gbnB0ci0+SWNvbkJveFsxXTsKISAJICAgICAgSWNvbkJveFsyXSA9IG5wdHIt
Pkljb25Cb3hbMl07CiEgCSAgICAgIEljb25Cb3hbM10gPSBucHRyLT5JY29uQm94WzNdOwoh
IAkgICAgfQohIAl9CiEgICAgIH0KISAgIHJldHVybiByZXR2YWw7CiAgfQotIAotIAotIAot
IAotIAotLS0gOTQxLDEwMjMgLS0tLQogICAqCUxvb2tJbkxpc3QgLSBsb29rIHRocm91Z2gg
YSBsaXN0IGZvciBhIHdpbmRvdyBuYW1lLCBvciBjbGFzcwogICAqCiAgICogIFJldHVybmVk
IFZhbHVlOgohICAqCW1lcmdlZCBtYXRjaGluZyBzdHlsZXMgaW4gY2FsbGVycyBuYW1lX2xp
c3QuCiAgICoKICAgKiAgSW5wdXRzOgohICAqCXRtcF93aW4gLSBGdndXaW5kb3cgc3RydWN0
dXJlIHRvIG1hdGNoIGFnYWluc3QKISAgKglzdHlsZXMgLSBjYWxsZXJzIHJldHVybiBhcmVh
CiAgICoKKyAgKiAgQ2hhbmdlczoKKyAgKiAgICAgIGRqZSAxMC8wNi85NyB0ZXN0IGZvciBO
VUxMIGNsYXNzIHJlbW92ZWQsIGNhbid0IGhhcHBlbi4KKyAgKiAgICAgIHVzZSBtZXJnZSBz
dWJyb3V0aW5lIGluc3RlYWQgb2YgY29kaW5nIG1lcmdlcyAzIHRpbWVzLgorICAqICAgICAg
VXNlIHN0cnVjdHVyZSB0byByZXR1cm4gdmFsdWVzLCBub3QgbWFueSwgbWFueSBhcmdzCisg
ICogICAgICBhbmQgcmV0dXJuIHZhbHVlLgorICAqICAgICAgUG9pbnQgYXQgaWNvbmJveGVz
IGNoYWluLCBub3Qgc2luZ2xlIGljb25ib3hlcyBlbGVtZW50cy4KKyAgKgogICAqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKi8KISB2b2lkIExvb2tJbkxpc3QoICBGdndtV2luZG93ICp0bXBfd2luLCBu
YW1lX2xpc3QgKnN0eWxlcykKICB7CiAgICBuYW1lX2xpc3QgKm5wdHI7CiAgCiEgICBtZW1z
ZXQoc3R5bGVzLCAwLCBzaXplb2YobmFtZV9saXN0KSk7IC8qIGNsZWFyIGNhbGxlcnMgcmV0
dXJuIGFyZWEgKi8KISAgIC8qIGxvb2sgdGhydSBhbGwgc3R5bGVzIGluIG9yZGVyIGRlZmlu
ZWQuICovCiEgICBmb3IgKG5wdHIgPSBTY3IuVGhlTGlzdDsgbnB0ciAhPSBOVUxMOyBucHRy
ID0gbnB0ci0+bmV4dCkgewohICAgICAvKiBJZiBuYW1lL3Jlc19jbGFzcy9yZXNfbmFtZSBt
YXRjaCwgbWVyZ2UgKi8KISAgICAgaWYgKG1hdGNoV2lsZGNhcmRzKG5wdHItPm5hbWUsdG1w
X3dpbi0+Y2xhc3MucmVzX2NsYXNzKSA9PSBUUlVFKSB7CiEgICAgICAgbWVyZ2Vfc3R5bGVz
KHN0eWxlcywgbnB0cik7CiEgICAgIH0gZWxzZSBpZiAobWF0Y2hXaWxkY2FyZHMobnB0ci0+
bmFtZSx0bXBfd2luLT5jbGFzcy5yZXNfbmFtZSkgPT0gVFJVRSkgewohICAgICAgIG1lcmdl
X3N0eWxlcyhzdHlsZXMsIG5wdHIpOwohICAgICB9IGVsc2UgaWYgKG1hdGNoV2lsZGNhcmRz
KG5wdHItPm5hbWUsdG1wX3dpbi0+bmFtZSkgPT0gVFJVRSkgewohICAgICAgIG1lcmdlX3N0
eWxlcyhzdHlsZXMsIG5wdHIpOwohICAgICB9CiEgICB9CiEgICByZXR1cm47CiEgfQogIAoh
IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgohICAqCiEgICogIFByb2NlZHVyZToKISAgKiBtZXJnZV9z
dHlsZXMgLSBGb3IgYSBtYXRjaGluZyBzdHlsZSwgbWVyZ2UgbmFtZV9saXN0IHRvIG5hbWVf
bGlzdAohICAqCiEgICogIFJldHVybmVkIFZhbHVlOgohICAqCW1lcmdlZCBtYXRjaGluZyBz
dHlsZXMgaW4gY2FsbGVycyBuYW1lX2xpc3QuCiEgICoKISAgKiAgSW5wdXRzOgohICAqCXN0
eWxlcyAtIGNhbGxlcnMgcmV0dXJuIGFyZWEKISAgKiAgICAgIG5wdHIgLSBtYXRjaGluZyBu
YW1lX2xpc3QKISAgKgohICAqICBOb3RlOgohICAqICAgICAgVGhlIG9ubHkgdHJpY2sgaGVy
ZSBpcyB0aGF0IG9uIGFuZCBvZmYgZmxhZ3MvYnV0dG9ucyBhcmUKISAgKiAgICAgIGNvbWJp
bmVkIGludG8gdGhlIG9uIGZsYWcvYnV0dG9uLgohICAqCiEgICoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
LwogIAohIHN0YXRpYyB2b2lkIG1lcmdlX3N0eWxlcyhuYW1lX2xpc3QgKnN0eWxlcywgbmFt
ZV9saXN0ICpucHRyKSB7CiEgICBpZihucHRyLT52YWx1ZSAhPSBOVUxMKSBzdHlsZXMtPnZh
bHVlID0gbnB0ci0+dmFsdWU7CiAgI2lmZGVmIE1JTklfSUNPTlMKISAgIGlmKG5wdHItPm1p
bmlfdmFsdWUgIT0gTlVMTCkgc3R5bGVzLT5taW5pX3ZhbHVlID0gbnB0ci0+bWluaV92YWx1
ZTsKICAjZW5kaWYKICAjaWZkZWYgVVNFREVDT1IKISAgIGlmIChucHRyLT5EZWNvciAhPSBO
VUxMKSBzdHlsZXMtPkRlY29yID0gbnB0ci0+RGVjb3I7CiAgI2VuZGlmCiEgICBpZihucHRy
LT5vZmZfZmxhZ3MgJiBTVEFSVFNPTkRFU0tfRkxBRykKISAgICAgc3R5bGVzLT5EZXNrID0g
bnB0ci0+RGVzazsKISAgIGlmKG5wdHItPm9mZl9mbGFncyAmIEJXX0ZMQUcpCiEgICAgIHN0
eWxlcy0+Ym9yZGVyX3dpZHRoID0gbnB0ci0+Ym9yZGVyX3dpZHRoOwohICAgaWYobnB0ci0+
b2ZmX2ZsYWdzICYgRk9SRV9DT0xPUl9GTEFHKQohICAgICBzdHlsZXMtPkZvcmVDb2xvciA9
IG5wdHItPkZvcmVDb2xvcjsKISAgIGlmKG5wdHItPm9mZl9mbGFncyAmIEJBQ0tfQ09MT1Jf
RkxBRykKISAgICAgc3R5bGVzLT5CYWNrQ29sb3IgPSBucHRyLT5CYWNrQ29sb3I7CiEgICBp
ZihucHRyLT5vZmZfZmxhZ3MgJiBOT0JXX0ZMQUcpCiEgICAgIHN0eWxlcy0+cmVzaXplX3dp
ZHRoID0gbnB0ci0+cmVzaXplX3dpZHRoOwohICAgc3R5bGVzLT5vbl9mbGFncyB8PSBucHRy
LT5vZmZfZmxhZ3M7ICAvKiBjb21iaW5lIG9uIGFuZCBvZmYgZmxhZ3MgKi8KISAgIHN0eWxl
cy0+b25fZmxhZ3MgJj0gfihucHRyLT5vbl9mbGFncyk7CiEgICBzdHlsZXMtPm9uX2J1dHRv
bnMgfD0gbnB0ci0+b2ZmX2J1dHRvbnM7IC8qIGNvbWJpbmUgYnV0dG9ucyAqLwohICAgc3R5
bGVzLT5vbl9idXR0b25zICY9IH4obnB0ci0+b25fYnV0dG9ucyk7CiEgICAvKiBOb3RlLCBv
bmx5IG9uZSBzdHlsZSBjbWQgY2FuIGRlZmluZSBhIHdpbmRvd3MgaWNvbmJveGVzLAohICAg
ICAgdGhlIGxhc3Qgb25lIGVuY291bnRlcmVkLiAqLwohICAgaWYobnB0ci0+SWNvbkJveGVz
ICE9IE5VTEwpIHsgICAgICAgICAvKiBJZiBzdHlsZSBoYXMgaWNvbmJveGVzICovCiEgICAg
IHN0eWxlcy0+SWNvbkJveGVzID0gbnB0ci0+SWNvbkJveGVzOyAvKiBjb3B5IGl0ICovCiEg
ICB9CiEgICByZXR1cm47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJldHVy
biAqLwogIH0KKioqIGZ2d20vYnVpbHRpbnMuYy5vcmlnCVN1biBPY3QgIDUgMTc6MTI6NDQg
MTk5NwotLS0gZnZ3bS9idWlsdGlucy5jCVN1biBPY3QgIDUgMTc6MTY6NDggMTk5NwoqKioq
KioqKioqKioqKioKKioqIDcwMCw3MDUgKioqKgotLS0gNzAwLDcwNiAtLS0tCiAgdm9pZCBy
YWlzZV9mdW5jdGlvbihYRXZlbnQgKmV2ZW50cCxXaW5kb3cgdyxGdndtV2luZG93ICp0bXBf
d2luLAogIAkJICAgIHVuc2lnbmVkIGxvbmcgY29udGV4dCwgY2hhciAqYWN0aW9uLCBpbnQg
Kk1vZHVsZSkKICB7CisgICBuYW1lX2xpc3Qgc3R5bGVzOyAgICAgICAgICAgICAgICAgICAg
IC8qIHBsYWNlIGZvciBtZXJnZWQgc3R5bGVzICovCiAgICBjaGFyICpqdW5rLCAqanVua0M7
CiAgICB1bnNpZ25lZCBsb25nIGp1bmtOOwogICAgaW50IGp1bmtELCBtZXRob2QsIEJveEp1
bmtbNF07CioqKioqKioqKioqKioqKgoqKiogNzEwLDcyNSAqKioqCiAgICBpZih0bXBfd2lu
KQogICAgICBSYWlzZVdpbmRvdyh0bXBfd2luKTsKICAKISAgIGlmIChMb29rSW5MaXN0KFNj
ci5UaGVMaXN0LHRtcF93aW4tPm5hbWUsICZ0bXBfd2luLT5jbGFzcywgJmp1bmssCiEgI2lm
ZGVmIE1JTklfSUNPTlMKISAgICAgICAgICAgICAgICAgICZqdW5rLAohICNlbmRpZgohICNp
ZmRlZiBVU0VERUNPUgohIAkJICZqdW5rQywKISAjZW5kaWYKISAJCSAmanVua0QsICZqdW5r
RCwgJmp1bmtELCAmanVua0MsICZqdW5rQywgJmp1bmtOLAohIAkJIEJveEp1bmssICAmbWV0
aG9kKSYgU1RBWVNPTlRPUF9GTEFHKQogICAgICB0bXBfd2luLT5mbGFncyB8PSBPTlRPUDsK
ICAgIEtlZXBPblRvcCgpOwogIH0KICAKLS0tIDcxMSw3MjAgLS0tLQogICAgaWYodG1wX3dp
bikKICAgICAgUmFpc2VXaW5kb3codG1wX3dpbik7CiAgCiEgICBMb29rSW5MaXN0KHRtcF93
aW4sICZzdHlsZXMpOyAgICAgICAgIC8qIGdldCBtZXJnZWQgc3R5bGVzICovCiEgICBpZiAo
c3R5bGVzLm9uX2ZsYWdzICYgU1RBWVNPTlRPUF9GTEFHKSB7CiAgICAgIHRtcF93aW4tPmZs
YWdzIHw9IE9OVE9QOworICAgfQogICAgS2VlcE9uVG9wKCk7CiAgfQogIAoqKioqKioqKioq
KioqKioKKioqIDExMjksMTEzNyAqKioqCiAgdm9pZCByYWlzZWxvd2VyX2Z1bmMoWEV2ZW50
ICpldmVudHAsV2luZG93IHcsRnZ3bVdpbmRvdyAqdG1wX3dpbiwKICAJCSAgICAgdW5zaWdu
ZWQgbG9uZyBjb250ZXh0LCBjaGFyICphY3Rpb24saW50ICpNb2R1bGUpCiAgewohICAgY2hh
ciAqanVuaywgKmp1bmtDOwohICAgdW5zaWduZWQgbG9uZyBqdW5rTjsKISAgIGludCBqdW5r
RCxtZXRob2QsIEJveEp1bmtbNF07CiAgCiAgICBpZiAoRGVmZXJFeGVjdXRpb24oZXZlbnRw
LCZ3LCZ0bXBfd2luLCZjb250ZXh0LCBTRUxFQ1QsQnV0dG9uUmVsZWFzZSkpCiAgICAgIHJl
dHVybjsKLS0tIDExMjQsMTEzMCAtLS0tCiAgdm9pZCByYWlzZWxvd2VyX2Z1bmMoWEV2ZW50
ICpldmVudHAsV2luZG93IHcsRnZ3bVdpbmRvdyAqdG1wX3dpbiwKICAJCSAgICAgdW5zaWdu
ZWQgbG9uZyBjb250ZXh0LCBjaGFyICphY3Rpb24saW50ICpNb2R1bGUpCiAgewohICAgbmFt
ZV9saXN0IHN0eWxlczsKICAKICAgIGlmIChEZWZlckV4ZWN1dGlvbihldmVudHAsJncsJnRt
cF93aW4sJmNvbnRleHQsIFNFTEVDVCxCdXR0b25SZWxlYXNlKSkKICAgICAgcmV0dXJuOwoq
KioqKioqKioqKioqKioKKioqIDExNDcsMTE2MiAqKioqCiAgICBlbHNlCiAgICB7CiAgICAg
IFJhaXNlV2luZG93KHRtcF93aW4pOwohICAgICBpZiAoTG9va0luTGlzdChTY3IuVGhlTGlz
dCx0bXBfd2luLT5uYW1lLCAmdG1wX3dpbi0+Y2xhc3MsJmp1bmssCiEgI2lmZGVmIE1JTklf
SUNPTlMKISAgICAgICAgICAgICAgICAgICAgJmp1bmssCiEgI2VuZGlmCiEgI2lmZGVmIFVT
RURFQ09SCiEgCQkgICAmanVua0MsCiEgI2VuZGlmCiEgICAgICAgICAgICAgICAgICAgICZq
dW5rRCwmanVua0QsICZqdW5rRCwgJmp1bmtDLCZqdW5rQywmanVua04sQm94SnVuaywKISAg
ICAgICAgICAgICAgICAgICAgJm1ldGhvZCkmU1RBWVNPTlRPUF9GTEFHKQohICAgICAgIHRt
cF93aW4tPmZsYWdzIHw9IE9OVE9QOwkgICAgCiAgICAgIEtlZXBPblRvcCgpOwogICAgfQog
IH0KLS0tIDExNDAsMTE0OSAtLS0tCiAgICBlbHNlCiAgICB7CiAgICAgIFJhaXNlV2luZG93
KHRtcF93aW4pOwohICAgICBMb29rSW5MaXN0KHRtcF93aW4sICZzdHlsZXMpOyAgICAgICAv
KiBnZXQgbWVyZ2VkIHN0eWxlcyAqLwohICAgICBpZiAoc3R5bGVzLm9uX2ZsYWdzICYgU1RB
WVNPTlRPUF9GTEFHKSB7CiEgICAgICAgdG1wX3dpbi0+ZmxhZ3MgfD0gT05UT1A7CiEgICAg
IH0KICAgICAgS2VlcE9uVG9wKCk7CiAgICB9CiAgfQo=

--Multipart_Mon_Oct__6_22:53:46_1997-1
Content-Type: text/plain; charset=US-ASCII


--
Dan Espen                                    Phone: (732) 699-5570
dane@bae.bellcore.com
444 Hoes Lane  Room RRC 1C-214
Piscataway, NJ 08854

--Multipart_Mon_Oct__6_22:53:46_1997-1--

--
Visit the official FVWM web page at <URL:http://www.hpc.uh.edu/fvwm/>.
To unsubscribe from the list, send "unsubscribe fvwm" in the body of a
message to majordomo@hpc.uh.edu.
To report problems, send mail to fvwm-owner@hpc.uh.edu.

