Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 25 Mar 2013 14:37:05 +0800
From:      HU Dong <itechbear@gmail.com>
To:        =?GB2312?B?s8LS5tLl?= <chenyy@sifinc.cn>
Cc:        "freebsd-ports@freebsd.org" <ports@freebsd.org>
Subject:   Re: postfix-vda-v11-2.9.5.patch
Message-ID:  <CAA96eVtF8VYzKxEuQMJdzHKg=wnAdzWRB9wrNBkX_gdSmqWD4Q@mail.gmail.com>
In-Reply-To: <001801ce291f$346878f0$9d396ad0$@sifinc.cn>
References:  <001801ce291f$346878f0$9d396ad0$@sifinc.cn>

next in thread | previous in thread | raw e-mail | index | archive | help
--e89a8fb1ed0690339604d8ba0895
Content-Type: text/plain; charset=ISO-8859-1

you can manually download the patch from sourceforge.net through any
proxy...

also, you can use the attached file i downloaded just now. just put it in
/usr/ports/distfiles/postfix or /usr/ports/distfiles. give it a try.

remember to check the patch that it doesn't contain any malicious code
before using it.


B.R.
HU Dong

--e89a8fb1ed0690339604d8ba0895
Content-Type: application/octet-stream; name="postfix-vda-v11-2.9.5.patch"
Content-Disposition: attachment; filename="postfix-vda-v11-2.9.5.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_hep9ipq10

ZGlmZiAtdU5yIHBvc3RmaXgtMi45LjUub3JpZy9SRUFETUVfRklMRVMvVkRBX1JFQURNRSBwb3N0
Zml4LTIuOS41L1JFQURNRV9GSUxFUy9WREFfUkVBRE1FCi0tLSBwb3N0Zml4LTIuOS41Lm9yaWcv
UkVBRE1FX0ZJTEVTL1ZEQV9SRUFETUUJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAx
MDAKKysrIHBvc3RmaXgtMi45LjUvUkVBRE1FX0ZJTEVTL1ZEQV9SRUFETUUJMjAxMi0wMy0wMiAw
ODozMDoxMi4wNzk1MzcwNTIgKzAxMDAKQEAgLTAsMCArMSwxMCBAQAorUG9zdGZpeCBWREEgcGF0
Y2ggZm9yIG1haWxkaXIrKyBxdW90YSBzdXBwb3J0IGJ5IAorICAgIEFuZGVyc29uIE5hZGFsIDxh
bmRlcm5hZGFsQGdtYWlsLmNvbT4KKyAgICBUb21hcyBNYWNlayA8bWFjYTAyQGF0bGFzLmN6Pgor
ICAgIEx1Y2NhIExvbmdpbm90dGkKKworU2VlIFZEQSBwYXRjaCBvZmZpY2lhbCB3ZWJzaXRlIGh0
dHA6Ly92ZGEuc2YubmV0IGZvciBpbnN0cnVjdGlvbnMKK2hvd3RvIHBhdGNoIHRoZSBQb3N0Zml4
J3Mgc291cmNldHJlZSBhbmQgY29uZmlndXJlIHRoZSBvcHRpb25zIAorcHJvdmlkZWQgYnkgdGhp
cyBwYXRjaC4KKworCmRpZmYgLXVOciBwb3N0Zml4LTIuOS41Lm9yaWcvc3JjL2dsb2JhbC9tYWls
X3BhcmFtcy5oIHBvc3RmaXgtMi45LjUvc3JjL2dsb2JhbC9tYWlsX3BhcmFtcy5oCi0tLSBwb3N0
Zml4LTIuOS41Lm9yaWcvc3JjL2dsb2JhbC9tYWlsX3BhcmFtcy5oCTIwMTItMDEtMTUgMDE6MzY6
MzcuMDAwMDAwMDAwICswMTAwCisrKyBwb3N0Zml4LTIuOS41L3NyYy9nbG9iYWwvbWFpbF9wYXJh
bXMuaAkyMDEyLTAzLTAyIDA4OjMwOjEyLjA3OTUzNzA1MiArMDEwMApAQCAtMjM2MCw2ICsyMzYw
LDU0IEBACiAjZGVmaW5lIERFRl9WSVJUX0dJRF9NQVBTCQkiIgogZXh0ZXJuIGNoYXIgKnZhcl92
aXJ0X2dpZF9tYXBzOwogCisjZGVmaW5lIFZBUl9WSVJUX01BSUxCT1hfTElNSVRfTUFQUyAgICAg
InZpcnR1YWxfbWFpbGJveF9saW1pdF9tYXBzIgorI2RlZmluZSBERUZfVklSVF9NQUlMQk9YX0xJ
TUlUX01BUFMgICAgICIiCitleHRlcm4gY2hhciAqdmFyX3ZpcnRfbWFpbGJveF9saW1pdF9tYXBz
OworCisjZGVmaW5lIFZBUl9WSVJUX01BSUxCT1hfTElNSVRfSU5CT1ggICAgInZpcnR1YWxfbWFp
bGJveF9saW1pdF9pbmJveCIKKyNkZWZpbmUgREVGX1ZJUlRfTUFJTEJPWF9MSU1JVF9JTkJPWCAg
ICAwCitleHRlcm4gYm9vbCB2YXJfdmlydF9tYWlsYm94X2xpbWl0X2luYm94OworCisjZGVmaW5l
IFZBUl9WSVJUX01BSUxCT1hfTElNSVRfT1ZFUlJJREUgInZpcnR1YWxfbWFpbGJveF9saW1pdF9v
dmVycmlkZSIKKyNkZWZpbmUgREVGX1ZJUlRfTUFJTEJPWF9MSU1JVF9PVkVSUklERSAwCitleHRl
cm4gYm9vbCB2YXJfdmlydF9tYWlsYm94X2xpbWl0X292ZXJyaWRlOworCisjZGVmaW5lIFZBUl9W
SVJUX01BSUxESVJfRVhURU5ERUQgICAgICAgInZpcnR1YWxfbWFpbGRpcl9leHRlbmRlZCIKKyNk
ZWZpbmUgREVGX1ZJUlRfTUFJTERJUl9FWFRFTkRFRCAgICAgICAwCitleHRlcm4gYm9vbCB2YXJf
dmlydF9tYWlsZGlyX2V4dGVuZGVkOworCisjZGVmaW5lIFZBUl9WSVJUX09WRVJRVU9UQV9CT1VO
Q0UgICAgICAgInZpcnR1YWxfb3ZlcnF1b3RhX2JvdW5jZSIKKyNkZWZpbmUgREVGX1ZJUlRfT1ZF
UlFVT1RBX0JPVU5DRSAgICAgICAwCitleHRlcm4gYm9vbCB2YXJfdmlydF9vdmVycXVvdGFfYm91
bmNlOworCisjZGVmaW5lIFZBUl9WSVJUX01BSUxESVJfTElNSVRfTUVTU0FHRSAgInZpcnR1YWxf
bWFpbGRpcl9saW1pdF9tZXNzYWdlIgorI2RlZmluZSBERUZfVklSVF9NQUlMRElSX0xJTUlUX01F
U1NBR0UgICJTb3JyeSwgdGhlIHVzZXIncyBtYWlsZGlyIGhhcyBvdmVyZHJhd24gaGlzIGRpc2tz
cGFjZSBxdW90YSwgcGxlYXNlIHRyeSBhZ2FpbiBsYXRlci4iCitleHRlcm4gY2hhciAqdmFyX3Zp
cnRfbWFpbGRpcl9saW1pdF9tZXNzYWdlOworCisjZGVmaW5lIFZBUl9WSVJUX01BSUxESVJfTElN
SVRfTUVTU0FHRV9NQVBTICJ2aXJ0dWFsX21haWxkaXJfbGltaXRfbWVzc2FnZV9tYXBzIgorI2Rl
ZmluZSBERUZfVklSVF9NQUlMRElSX0xJTUlUX01FU1NBR0VfTUFQUyAiIgorZXh0ZXJuIGNoYXIg
KnZhcl92aXJ0X21haWxkaXJfbGltaXRfbWVzc2FnZV9tYXBzOworCisjZGVmaW5lIFZBUl9WSVJU
X01BSUxESVJfU1VGRklYICAgICAgICAgInZpcnR1YWxfbWFpbGRpcl9zdWZmaXgiCisjZGVmaW5l
IERFRl9WSVJUX01BSUxESVJfU1VGRklYICAgICAgICAgIiIKK2V4dGVybiBjaGFyICp2YXJfdmly
dF9tYWlsZGlyX3N1ZmZpeDsKKworI2RlZmluZSBWQVJfVklSVF9UUkFTSF9DT1VOVCAgICAgICAg
ICAgICJ2aXJ0dWFsX3RyYXNoX2NvdW50IgorI2RlZmluZSBERUZfVklSVF9UUkFTSF9DT1VOVCAg
ICAgICAgICAgIDAKK2V4dGVybiBib29sIHZhcl92aXJ0X3RyYXNoX2NvdW50OworCisjZGVmaW5l
IFZBUl9WSVJUX1RSQVNIX05BTUUgICAgICAgICAgICAgInZpcnR1YWxfdHJhc2hfbmFtZSIKKyNk
ZWZpbmUgREVGX1ZJUlRfVFJBU0hfTkFNRSAgICAgICAgICAgICAiLlRyYXNoIgorZXh0ZXJuIGNo
YXIgKnZhcl92aXJ0X3RyYXNoX25hbWU7CisKKyNkZWZpbmUgVkFSX1ZJUlRfTUFJTERJUl9GSUxU
RVIgICAgICAgICAidmlydHVhbF9tYWlsZGlyX2ZpbHRlciIKKyNkZWZpbmUgREVGX1ZJUlRfTUFJ
TERJUl9GSUxURVIgICAgICAgICAwCitleHRlcm4gYm9vbCB2YXJfdmlydF9tYWlsZGlyX2ZpbHRl
cjsKKworI2RlZmluZSBWQVJfVklSVF9NQUlMRElSX0ZJTFRFUl9NQVBTICAgICJ2aXJ0dWFsX21h
aWxkaXJfZmlsdGVyX21hcHMiCisjZGVmaW5lIERFRl9WSVJUX01BSUxESVJfRklMVEVSX01BUFMg
ICAgIiIKK2V4dGVybiBjaGFyICp2YXJfdmlydF9tYWlsZGlyX2ZpbHRlcl9tYXBzOworCiAjZGVm
aW5lIFZBUl9WSVJUX01JTlVJRAkJCSJ2aXJ0dWFsX21pbmltdW1fdWlkIgogI2RlZmluZSBERUZf
VklSVF9NSU5VSUQJCQkxMDAKIGV4dGVybiBpbnQgdmFyX3ZpcnRfbWluaW11bV91aWQ7CmRpZmYg
LXVOciBwb3N0Zml4LTIuOS41Lm9yaWcvc3JjL3V0aWwvZmlsZV9saW1pdC5jIHBvc3RmaXgtMi45
LjUvc3JjL3V0aWwvZmlsZV9saW1pdC5jCi0tLSBwb3N0Zml4LTIuOS41Lm9yaWcvc3JjL3V0aWwv
ZmlsZV9saW1pdC5jCTIwMDMtMTAtMjIgMjA6NDg6MzYuMDAwMDAwMDAwICswMjAwCisrKyBwb3N0
Zml4LTIuOS41L3NyYy91dGlsL2ZpbGVfbGltaXQuYwkyMDEyLTAzLTAyIDA4OjMwOjEyLjExMDUz
NzAzMyArMDEwMApAQCAtODUsNyArODUsMTEgQEAKICNlbHNlCiAgICAgc3RydWN0IHJsaW1pdCBy
bGltOwogCi0gICAgcmxpbS5ybGltX2N1ciA9IHJsaW0ucmxpbV9tYXggPSBsaW1pdDsKKyAgICAv
KiBybGltX21heCBjYW4gb25seSBiZSBjaGFuZ2VkIGJ5IHJvb3QuICovCisgICAgaWYgKGdldHJs
aW1pdChSTElNSVRfRlNJWkUsICZybGltKSA8IDApCisgICAgICAgIG1zZ19mYXRhbCgiZ2V0cmxp
bWl0OiAlbSIpOworICAgIHJsaW0ucmxpbV9jdXIgPSBsaW1pdDsKKwogICAgIGlmIChzZXRybGlt
aXQoUkxJTUlUX0ZTSVpFLCAmcmxpbSkgPCAwKQogCW1zZ19mYXRhbCgic2V0cmxpbWl0OiAlbSIp
OwogI2lmZGVmIFNJR1hGU1oKZGlmZiAtdU5yIHBvc3RmaXgtMi45LjUub3JpZy9zcmMvdmlydHVh
bC9tYWlsYm94LmMgcG9zdGZpeC0yLjkuNS9zcmMvdmlydHVhbC9tYWlsYm94LmMKLS0tIHBvc3Rm
aXgtMi45LjUub3JpZy9zcmMvdmlydHVhbC9tYWlsYm94LmMJMjAxMS0xMi0yNCAwMzoxMzozMi4w
MDAwMDAwMDAgKzAxMDAKKysrIHBvc3RmaXgtMi45LjUvc3JjL3ZpcnR1YWwvbWFpbGJveC5jCTIw
MTItMDMtMDIgMDg6MzA6MTIuMTEwNTM3MDMzICswMTAwCkBAIC03MCw2ICs3MCw3MCBAQAogI2Rl
ZmluZSBZRVMJMQogI2RlZmluZSBOTwkwCiAKKy8qIGNoYW5nZV9tYWlsYm94X2xpbWl0IC0gY2hh
bmdlIGxpbWl0IGZvciBtYWlsYm94IGZpbGUgKi8KK3N0YXRpYyBpbnQgY2hhbmdlX21haWxib3hf
bGltaXQoTE9DQUxfU1RBVEUgc3RhdGUsIFVTRVJfQVRUUiB1c3JfYXR0cikKK3sKKyAgICBjaGFy
ICpteW5hbWUgPSAiY2hhbmdlX21haWxib3hfbGltaXQiOworICAgIGNvbnN0IGNoYXIgKmxpbWl0
X3JlczsKKyAgICBsb25nIG4gPSAwOworICAgIGludCBzdGF0dXMgPSBOTzsKKworICAgIC8qCisg
ICAgICogTG9vayB1cCB0aGUgdmlydHVhbCBtYWlsYm94IGxpbWl0IHNpemUgZm9yIHRoaXMgdXNl
ci4KKyAgICAgKiBGYWxsIGJhY2sgdG8gdmlydHVhbF9tYWlsYm94X2xpbWl0IGluIGNhc2UgbG9v
a3VwIGZhaWxlZC4KKyAgICAgKiBJZiB2aXJ0dWFsIG1haWxib3ggbGltaXQgc2l6ZSBpcyBuZWdh
dGl2ZSwgZmFsbCBiYWNrIHRvIHZpcnR1YWxfbWFpbGJveF9saW1pdC4KKyAgICAgKiBJZiBpdCdz
IDAsIHNldCB0aGUgbWFpbGJveCBsaW1pdCB0byAwLCB3aGljaCBtZWFucyB1bmxpbWl0ZWQuCisg
ICAgICogSWYgaXQncyBtb3JlIHRoYW4gMCAocG9zaXRpdmUgaW50KSwgY2hlY2sgaWYgdGhlIHZh
bHVlIGlzIHNtYWxsZXIgdGhhbiB0aGUgbWF4aW11bSBtZXNzYWdlIHNpemUsCisgICAgICogaWYg
aXQgaXMgYW5kIHRoZSB2aXJ0dWFsIG1haWxib3ggbGltaXQgY2FuJ3QgYmUgb3ZlcnJpZGRlbiwg
ZmFsbCBiYWNrIHRvIHZpcnR1YWxfbWFpbGJveF9saW1pdCBhbmQKKyAgICAgKiB3YXJuIHRoZSB1
c2VyLCBlbHNlIHVzZSB0aGUgdmFsdWUgZGlyZWN0bHkgYXMgdGhlIG1haWxib3ggbGltaXQuCisg
ICAgICovCisgICAgaWYgKCp2YXJfdmlydF9tYWlsYm94X2xpbWl0X21hcHMgIT0gMCAmJiAobGlt
aXRfcmVzID0gbWFpbF9hZGRyX2ZpbmQodmlydHVhbF9tYWlsYm94X2xpbWl0X21hcHMsIHN0YXRl
Lm1zZ19hdHRyLnVzZXIsIChjaGFyICoqKSBOVUxMKSkgIT0gMCkgeworICAgICAgICBuID0gYXRv
bChsaW1pdF9yZXMpOworICAgICAgICBpZiAobiA+IDApIHsKKyAgICAgICAgICAgIGlmICgobiA8
IHZhcl9tZXNzYWdlX2xpbWl0KSAmJiAoIXZhcl92aXJ0X21haWxib3hfbGltaXRfb3ZlcnJpZGUp
KSB7CisgICAgICAgICAgICAgICAgc2V0X2ZpbGVfbGltaXQodmFyX3ZpcnRfbWFpbGJveF9saW1p
dCk7CisgICAgICAgICAgICAgICAgc3RhdHVzID0gTk87CisKKyAgICAgICAgICAgICAgICBtc2df
d2FybigiJXM6IHJlY2lwaWVudCAlcyAtIHZpcnR1YWwgbWFpbGJveCBsaW1pdCBpcyAiCisgICAg
ICAgICAgICAgICAgICAgICAgICAic21hbGxlciB0aGFuICVzIGluICVzIC0gZmFsbGluZyBiYWNr
IHRvICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG15bmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRlLm1zZ19hdHRyLnVzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBW
QVJfTUVTU0FHRV9MSU1JVCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxfbWFpbGJv
eF9saW1pdF9tYXBzLT50aXRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFZBUl9WSVJUX01B
SUxCT1hfTElNSVQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgc2V0X2ZpbGVfbGltaXQoKG9mZl90KSBuKTsKKyAgICAgICAgICAgICAgICBzdGF0
dXMgPSBZRVM7CisKKyAgICAgICAgICAgICAgICBpZiAobXNnX3ZlcmJvc2UpCisgICAgICAgICAg
ICAgICAgICAgIG1zZ19pbmZvKCIlczogc2V0IHZpcnR1YWwgbWFpbGJveCBsaW1pdCBzaXplIGZv
ciAlcyB0byAlbGQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15bmFtZSwgdXNyX2F0
dHIubWFpbGJveCwgbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBp
ZiAobiA9PSAwKSB7CisgICAgICAgICAgICAgICAgc2V0X2ZpbGVfbGltaXQoT0ZGX1RfTUFYKTsK
KyAgICAgICAgICAgICAgICBzdGF0dXMgPSBZRVM7CisKKyAgICAgICAgICAgICAgICBpZiAobXNn
X3ZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgIG1zZ19pbmZvKCIlczogc2V0IHZpcnR1YWwg
bWFpbGJveCBsaW1pdCBzaXplIGZvciAlcyB0byAlbGQiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG15bmFtZSwgdXNyX2F0dHIubWFpbGJveCwgT0ZGX1RfTUFYKTsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIEludmFsaWQgbGltaXQgc2l6ZSAobmVnYXRp
dmUpLiBVc2UgZGVmYXVsdCB2aXJ0dWFsX21haWxib3hfbGltaXQuICovCisgICAgICAgICAgICBz
ZXRfZmlsZV9saW1pdCh2YXJfdmlydF9tYWlsYm94X2xpbWl0KTsKKyAgICAgICAgICAgIHN0YXR1
cyA9IE5POworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBUaGVyZSBp
cyBubyBsaW1pdCBpbiB0aGUgbWFwcy4gVXNlIGRlZmF1bHQgdmlydHVhbF9tYWlsYm94X2xpbWl0
LiAqLworICAgICAgICBzZXRfZmlsZV9saW1pdCh2YXJfdmlydF9tYWlsYm94X2xpbWl0KTsKKyAg
ICAgICAgc3RhdHVzID0gTk87CisgICAgfQorCisgICAgcmV0dXJuKHN0YXR1cyk7Cit9CisKIC8q
IGRlbGl2ZXJfbWFpbGJveF9maWxlIC0gZGVsaXZlciB0byByZWNpcGllbnQgbWFpbGJveCAqLwog
CiBzdGF0aWMgaW50IGRlbGl2ZXJfbWFpbGJveF9maWxlKExPQ0FMX1NUQVRFIHN0YXRlLCBVU0VS
X0FUVFIgdXNyX2F0dHIpCkBAIC0yMTMsNjIgKzI3Nyw3MiBAQAogICAgICAqIExvb2sgdXAgdGhl
IG1haWxib3ggb3duZXIgcmlnaHRzLiBEZWZlciBpbiBjYXNlIG9mIHRyb3VibGUuCiAgICAgICov
CiAgICAgdWlkX3JlcyA9IG1haWxfYWRkcl9maW5kKHZpcnR1YWxfdWlkX21hcHMsIHN0YXRlLm1z
Z19hdHRyLnVzZXIsCi0JCQkgICAgIElHTk9SRV9FWFRFTlNJT04pOwotICAgIGlmICh1aWRfcmVz
ID09IDApIHsKLQltc2dfd2FybigicmVjaXBpZW50ICVzOiBub3QgZm91bmQgaW4gJXMiLAotCQkg
c3RhdGUubXNnX2F0dHIudXNlciwgdmlydHVhbF91aWRfbWFwcy0+dGl0bGUpOwotCWRzYl9zaW1w
bGUod2h5LCAiNC4zLjUiLCAibWFpbCBzeXN0ZW0gY29uZmlndXJhdGlvbiBlcnJvciIpOwotCSpz
dGF0dXNwID0gZGVmZXJfYXBwZW5kKEJPVU5DRV9GTEFHUyhzdGF0ZS5yZXF1ZXN0KSwKLQkJCQlC
T1VOQ0VfQVRUUihzdGF0ZS5tc2dfYXR0cikpOwotCVJFVFVSTihZRVMpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIElHTk9SRV9FWFRFTlNJT04pOworCisgICAgaWYgKCh1aWRfcmVzID0g
bWFpbF9hZGRyX2ZpbmQodmlydHVhbF91aWRfbWFwcywgc3RhdGUubXNnX2F0dHIudXNlciwgKGNo
YXIgKiopIDApKSA9PSAwKSB7CisgICAgICAgIGlmICgodWlkX3JlcyA9IG1hcHNfZmluZCh2aXJ0
dWFsX3VpZF9tYXBzLCBzdHJjaHIoc3RhdGUubXNnX2F0dHIudXNlciwgJ0AnKSwgRElDVF9GTEFH
X0ZJWEVEKSkgPT0gMCkgeworCQkJbXNnX3dhcm4oInJlY2lwaWVudCAlczogbm90IGZvdW5kIGlu
ICVzIiwgc3RhdGUubXNnX2F0dHIudXNlciwgdmlydHVhbF91aWRfbWFwcy0+dGl0bGUpOworCQkJ
ZHNiX3NpbXBsZSh3aHksICI0LjMuNSIsICJtYWlsIHN5c3RlbSBjb25maWd1cmF0aW9uIGVycm9y
Iik7CisJCQkqc3RhdHVzcCA9IGRlZmVyX2FwcGVuZChCT1VOQ0VfRkxBR1Moc3RhdGUucmVxdWVz
dCksIEJPVU5DRV9BVFRSKHN0YXRlLm1zZ19hdHRyKSk7CisJCQlSRVRVUk4oWUVTKTsKKyAgICAg
ICAgfQogICAgIH0KKwogICAgIGlmICgobiA9IGF0b2wodWlkX3JlcykpIDwgdmFyX3ZpcnRfbWlu
aW11bV91aWQpIHsKLQltc2dfd2FybigicmVjaXBpZW50ICVzOiBiYWQgdWlkICVzIGluICVzIiwK
LQkJIHN0YXRlLm1zZ19hdHRyLnVzZXIsIHVpZF9yZXMsIHZpcnR1YWxfdWlkX21hcHMtPnRpdGxl
KTsKLQlkc2Jfc2ltcGxlKHdoeSwgIjQuMy41IiwgIm1haWwgc3lzdGVtIGNvbmZpZ3VyYXRpb24g
ZXJyb3IiKTsKLQkqc3RhdHVzcCA9IGRlZmVyX2FwcGVuZChCT1VOQ0VfRkxBR1Moc3RhdGUucmVx
dWVzdCksCi0JCQkJQk9VTkNFX0FUVFIoc3RhdGUubXNnX2F0dHIpKTsKLQlSRVRVUk4oWUVTKTsK
KwkJbXNnX3dhcm4oInJlY2lwaWVudCAlczogYmFkIHVpZCAlcyBpbiAlcyIsIHN0YXRlLm1zZ19h
dHRyLnVzZXIsIHVpZF9yZXMsIHZpcnR1YWxfdWlkX21hcHMtPnRpdGxlKTsKKwkJZHNiX3NpbXBs
ZSh3aHksICI0LjMuNSIsICJtYWlsIHN5c3RlbSBjb25maWd1cmF0aW9uIGVycm9yIik7CisJCSpz
dGF0dXNwID0gZGVmZXJfYXBwZW5kKEJPVU5DRV9GTEFHUyhzdGF0ZS5yZXF1ZXN0KSwgQk9VTkNF
X0FUVFIoc3RhdGUubXNnX2F0dHIpKTsKKwkJUkVUVVJOKFlFUyk7CiAgICAgfQorCiAgICAgdXNy
X2F0dHIudWlkID0gKHVpZF90KSBuOwogCiAgICAgLyoKICAgICAgKiBMb29rIHVwIHRoZSBtYWls
Ym94IGdyb3VwIHJpZ2h0cy4gRGVmZXIgaW4gY2FzZSBvZiB0cm91YmxlLgogICAgICAqLwogICAg
IGdpZF9yZXMgPSBtYWlsX2FkZHJfZmluZCh2aXJ0dWFsX2dpZF9tYXBzLCBzdGF0ZS5tc2dfYXR0
ci51c2VyLAotCQkJICAgICBJR05PUkVfRVhURU5TSU9OKTsKLSAgICBpZiAoZ2lkX3JlcyA9PSAw
KSB7Ci0JbXNnX3dhcm4oInJlY2lwaWVudCAlczogbm90IGZvdW5kIGluICVzIiwKLQkJIHN0YXRl
Lm1zZ19hdHRyLnVzZXIsIHZpcnR1YWxfZ2lkX21hcHMtPnRpdGxlKTsKLQlkc2Jfc2ltcGxlKHdo
eSwgIjQuMy41IiwgIm1haWwgc3lzdGVtIGNvbmZpZ3VyYXRpb24gZXJyb3IiKTsKLQkqc3RhdHVz
cCA9IGRlZmVyX2FwcGVuZChCT1VOQ0VfRkxBR1Moc3RhdGUucmVxdWVzdCksCi0JCQkJQk9VTkNF
X0FUVFIoc3RhdGUubXNnX2F0dHIpKTsKLQlSRVRVUk4oWUVTKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJR05PUkVfRVhURU5TSU9OKTsKKworICAgIGlmICgoZ2lkX3JlcyA9IG1haWxf
YWRkcl9maW5kKHZpcnR1YWxfZ2lkX21hcHMsIHN0YXRlLm1zZ19hdHRyLnVzZXIsIChjaGFyICoq
KSAwKSkgPT0gMCkgeworICAgICAgICBpZiAoKGdpZF9yZXMgPSBtYXBzX2ZpbmQodmlydHVhbF9n
aWRfbWFwcywgc3RyY2hyKHN0YXRlLm1zZ19hdHRyLnVzZXIsICdAJyksIERJQ1RfRkxBR19GSVhF
RCkpID09IDApIHsKKwkJCW1zZ193YXJuKCJyZWNpcGllbnQgJXM6IG5vdCBmb3VuZCBpbiAlcyIs
IHN0YXRlLm1zZ19hdHRyLnVzZXIsIHZpcnR1YWxfZ2lkX21hcHMtPnRpdGxlKTsKKwkJCWRzYl9z
aW1wbGUod2h5LCAiNC4zLjUiLCAibWFpbCBzeXN0ZW0gY29uZmlndXJhdGlvbiBlcnJvciIpOwor
CQkJKnN0YXR1c3AgPSBkZWZlcl9hcHBlbmQoQk9VTkNFX0ZMQUdTKHN0YXRlLnJlcXVlc3QpLCBC
T1VOQ0VfQVRUUihzdGF0ZS5tc2dfYXR0cikpOworCQkJUkVUVVJOKFlFUyk7CisgICAgICAgIH0K
ICAgICB9CisKICAgICBpZiAoKG4gPSBhdG9sKGdpZF9yZXMpKSA8PSAwKSB7Ci0JbXNnX3dhcm4o
InJlY2lwaWVudCAlczogYmFkIGdpZCAlcyBpbiAlcyIsCi0JCSBzdGF0ZS5tc2dfYXR0ci51c2Vy
LCBnaWRfcmVzLCB2aXJ0dWFsX2dpZF9tYXBzLT50aXRsZSk7Ci0JZHNiX3NpbXBsZSh3aHksICI0
LjMuNSIsICJtYWlsIHN5c3RlbSBjb25maWd1cmF0aW9uIGVycm9yIik7Ci0JKnN0YXR1c3AgPSBk
ZWZlcl9hcHBlbmQoQk9VTkNFX0ZMQUdTKHN0YXRlLnJlcXVlc3QpLAotCQkJCUJPVU5DRV9BVFRS
KHN0YXRlLm1zZ19hdHRyKSk7Ci0JUkVUVVJOKFlFUyk7CisJCW1zZ193YXJuKCJyZWNpcGllbnQg
JXM6IGJhZCBnaWQgJXMgaW4gJXMiLCBzdGF0ZS5tc2dfYXR0ci51c2VyLCBnaWRfcmVzLCB2aXJ0
dWFsX2dpZF9tYXBzLT50aXRsZSk7CisJCWRzYl9zaW1wbGUod2h5LCAiNC4zLjUiLCAibWFpbCBz
eXN0ZW0gY29uZmlndXJhdGlvbiBlcnJvciIpOworCQkqc3RhdHVzcCA9IGRlZmVyX2FwcGVuZChC
T1VOQ0VfRkxBR1Moc3RhdGUucmVxdWVzdCksIEJPVU5DRV9BVFRSKHN0YXRlLm1zZ19hdHRyKSk7
CisJCVJFVFVSTihZRVMpOwogICAgIH0KKwogICAgIHVzcl9hdHRyLmdpZCA9IChnaWRfdCkgbjsK
IAogICAgIGlmIChtc2dfdmVyYm9zZSkKLQltc2dfaW5mbygiJXNbJWRdOiBzZXQgdXNlcl9hdHRy
OiAlcywgdWlkID0gJXUsIGdpZCA9ICV1IiwKLQkJIG15bmFtZSwgc3RhdGUubGV2ZWwsIHVzcl9h
dHRyLm1haWxib3gsCi0JCSAodW5zaWduZWQpIHVzcl9hdHRyLnVpZCwgKHVuc2lnbmVkKSB1c3Jf
YXR0ci5naWQpOworICAgICAgICBtc2dfaW5mbygiJXNbJWRdOiBzZXQgdXNlcl9hdHRyOiAlcywg
dWlkID0gJXUsIGdpZCA9ICV1IiwKKyAgICAgICAgICAgICAgICBteW5hbWUsIHN0YXRlLmxldmVs
LCB1c3JfYXR0ci5tYWlsYm94LAorICAgICAgICAgICAgICAgICh1bnNpZ25lZCkgdXNyX2F0dHIu
dWlkLCAodW5zaWduZWQpIHVzcl9hdHRyLmdpZCk7CiAKICAgICAvKgogICAgICAqIERlbGl2ZXIg
dG8gbWFpbGJveCBvciB0byBtYWlsZGlyLgogICAgICAqLwogI2RlZmluZSBMQVNUX0NIQVIocykg
KHNbc3RybGVuKHMpIC0gMV0pCiAKLSAgICBpZiAoTEFTVF9DSEFSKHVzcl9hdHRyLm1haWxib3gp
ID09ICcvJykKLQkqc3RhdHVzcCA9IGRlbGl2ZXJfbWFpbGRpcihzdGF0ZSwgdXNyX2F0dHIpOwot
ICAgIGVsc2UKLQkqc3RhdHVzcCA9IGRlbGl2ZXJfbWFpbGJveF9maWxlKHN0YXRlLCB1c3JfYXR0
cik7CisgICAgaWYgKExBU1RfQ0hBUih1c3JfYXR0ci5tYWlsYm94KSA9PSAnLycpIHsKKyAgICAg
ICAgKnN0YXR1c3AgPSBkZWxpdmVyX21haWxkaXIoc3RhdGUsIHVzcl9hdHRyKTsKKyAgICB9Cisg
ICAgZWxzZSB7CisgICAgICAgIGludCBjaGFuZ2VkX2xpbWl0OworCisgICAgICAgIGNoYW5nZWRf
bGltaXQgPSBjaGFuZ2VfbWFpbGJveF9saW1pdChzdGF0ZSwgdXNyX2F0dHIpOworICAgICAgICAq
c3RhdHVzcCA9IGRlbGl2ZXJfbWFpbGJveF9maWxlKHN0YXRlLCB1c3JfYXR0cik7CisKKyAgICAg
ICAgaWYgKGNoYW5nZWRfbGltaXQpCisgICAgICAgICAgICBzZXRfZmlsZV9saW1pdCh2YXJfdmly
dF9tYWlsYm94X2xpbWl0KTsKKyAgICB9CiAKICAgICAvKgogICAgICAqIENsZWFudXAuCmRpZmYg
LXVOciBwb3N0Zml4LTIuOS41Lm9yaWcvc3JjL3ZpcnR1YWwvbWFpbGRpci5jIHBvc3RmaXgtMi45
LjUvc3JjL3ZpcnR1YWwvbWFpbGRpci5jCi0tLSBwb3N0Zml4LTIuOS41Lm9yaWcvc3JjL3ZpcnR1
YWwvbWFpbGRpci5jCTIwMTItMDEtMjUgMDE6NDE6MDguMDAwMDAwMDAwICswMTAwCisrKyBwb3N0
Zml4LTIuOS41L3NyYy92aXJ0dWFsL21haWxkaXIuYwkyMDEyLTAzLTAyIDA4OjMzOjQ3LjcyNDUy
OTM2MSArMDEwMApAQCAtNjQsMjggKzY0LDQyMCBAQAogI2luY2x1ZGUgPG1ib3hfb3Blbi5oPgog
I2luY2x1ZGUgPGRzbl91dGlsLmg+CiAKKy8qIFBhdGNoIGxpYnJhcnkuICovCisKKyNpbmNsdWRl
IDxzeXMvdHlwZXMuaD4gLyogb3BlbmRpcigzKSwgc3RhdCgyKSAqLworI2luY2x1ZGUgPHN5cy9z
dGF0Lmg+ICAvKiBzdGF0KDIpICovCisjaW5jbHVkZSA8ZGlyZW50Lmg+ICAgIC8qIG9wZW5kaXIo
MykgKi8KKyNpbmNsdWRlIDx1bmlzdGQuaD4gICAgLyogc3RhdCgyKSAqLworI2luY2x1ZGUgPHN0
ZGxpYi5oPiAgICAvKiBhdG9sKDMpICovCisjaW5jbHVkZSA8c3RyaW5nLmg+ICAgIC8qIHN0cnJj
aHIoMykgKi8KKyNpbmNsdWRlIDx2c3RyaW5nX3ZzdHJlYW0uaD4KKyNpbmNsdWRlIDxkaWN0Lmg+
CisjaW5jbHVkZSA8ZGljdF9yZWdleHAuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUg
PHN0ZGlvLmg+CisjaW5jbHVkZSA8c3lzX2RlZnMuaD4KKyNpbmNsdWRlIDxtYWlsX2FkZHJfZmlu
ZC5oPgorCiAvKiBBcHBsaWNhdGlvbi1zcGVjaWZpYy4gKi8KIAogI2luY2x1ZGUgInZpcnR1YWwu
aCIKIAotLyogZGVsaXZlcl9tYWlsZGlyIC0gZGVsaXZlcnkgdG8gbWFpbGRpci1zdHlsZSBtYWls
Ym94ICovCisvKiBNYWlsZGlyc2l6ZSBtYXhpbWFsIHNpemUuICovCisKKyNkZWZpbmUgU0laRUZJ
TEVfTUFYIDUxMjAKKworLyoKKyAqIENocmlzIFN0cmF0Zm9yZCA8Y2hyaXNzQHBpcGV4Lm5ldD4K
KyAqIFJlYWQgdGhlIG1haWxkaXJzaXplIGZpbGUgdG8gZ2V0IHF1b3RhIGluZm8uCisgKgorICog
QXJndW1lbnRzOgorICogIGRpcm5hbWU6IHRoZSBtYWlsZGlyCisgKiAgY291bnRwdHI6IG51bWJl
ciBvZiBtZXNzYWdlcworICoKKyAqIFJldHVybnMgdGhlIHNpemUgb2YgYWxsIG1haWxzIGFzIHJl
YWQgZnJvbSBtYWlsZGlyc2l6ZSwKKyAqIHplcm8gaWYgaXQgY291bGRuJ3QgcmVhZCB0aGUgZmls
ZS4KKyAqLworc3RhdGljIGxvbmcgcmVhZF9tYWlsZGlyc2l6ZShjaGFyICpmaWxlbmFtZSwgbG9u
ZyAqc3VtcHRyLCBsb25nICpjb3VudHB0cikKK3sKKyAgICBjaGFyICpteW5hbWUgPSAicmVhZF9t
YWlsZGlyc2l6ZSI7CisgICAgc3RydWN0IHN0YXQgc3RhdGJ1ZjsKKyAgICBWU1RSRUFNICpzaXpl
ZmlsZTsKKyAgICBjaGFyICpwOworICAgIGludCBsZW4sIGZpcnN0OworICAgIGxvbmcgc3VtID0g
MCwgY291bnQgPSAwLCByZXRfdmFsdWUgPSAtMTsKKworICAgIGlmIChtc2dfdmVyYm9zZSkgCisJ
bXNnX2luZm8oIiVzOiB3ZSB3aWxsIHVzZSBzaXplZmlsZSA9ICclcyciLCBteW5hbWUsIGZpbGVu
YW1lKTsKKwkKKyAgICBzaXplZmlsZSA9IHZzdHJlYW1fZm9wZW4oZmlsZW5hbWUsIE9fUkRPTkxZ
LCAwKTsKKyAgICBpZiAoIXNpemVmaWxlKSB7CisJaWYgKG1zZ192ZXJib3NlKQorCSAgICBtc2df
aW5mbygiJXM6IGNhbm5vdCBvcGVuICVzOiAlbSAobWF5YmUgZmlsZSBkb2VzIG5vdCBleGlzdCki
LCBteW5hbWUsIGZpbGVuYW1lKTsKKwkgICAgCisJcmV0dXJuIC0xOworICAgIH0gZWxzZSBpZiAo
c3RhdChmaWxlbmFtZSwgJnN0YXRidWYpIDwgMCB8fCBzdGF0YnVmLnN0X3NpemUgPiBTSVpFRklM
RV9NQVgpIHsKKyAgICAgICAgaWYgKHNpemVmaWxlKSB7CisgICAgICAgICAgICB2c3RyZWFtX2Zj
bG9zZShzaXplZmlsZSk7CisgICAgICAgICAgICB1bmxpbmsoZmlsZW5hbWUpOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBpZiAobXNnX3ZlcmJvc2UpIAorCSAgICBtc2dfaW5mbygiJXM6
IHN0YXQoKSByZXR1cm5lZCA8IDAgb3IgZmlsZXNpemUgPiBTSVpFRklMRV9NQVggKGZpbGVuYW1l
ID0gJXMsIGZpbGVzaXplID0gJWxkKSIsIG15bmFtZSwgZmlsZW5hbWUsIHN0YXRidWYuc3Rfc2l6
ZSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIAorICAgIFZTVFJJ
TkcgKnNpemVidWYgPSB2c3RyaW5nX2FsbG9jKFNJWkVGSUxFX01BWCk7CisgICAgbGVuID0gdnN0
cmVhbV9mcmVhZChzaXplZmlsZSwgU1RSKHNpemVidWYpLCBTSVpFRklMRV9NQVgpOworCisgICAg
cCA9IFNUUihzaXplYnVmKTsKKyAgICAqKHAgKyBsZW4pID0gJ1wwJzsKKyAgICBmaXJzdCA9IDE7
CisKKyAgICB3aGlsZSAoKnApIHsKKyAgICAgICAgbG9uZyBuID0gMCwgYyA9IDA7CisgICAgICAg
IGNoYXIgKnEgPSBwOworCisgICAgICAgIHdoaWxlICgqcCkgeworICAgICAgICAgICAgaWYgKCpw
KysgPT0gJ1xuJykgeworICAgICAgICAgICAgICAgIHBbLTFdID0gMDsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChmaXJzdCkg
eworICAgICAgICAgICAgZmlyc3QgPSAwOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoc3NjYW5mKHEsICIlbGQgJWxkIiwgJm4sICZjKSA9PSAyKSB7Cisg
ICAgICAgICAgICBzdW0gKz0gbjsKKyAgICAgICAgICAgIGNvdW50ICs9IGM7CisgICAgICAgICAg
ICAvKiBpZiAobXNnX3ZlcmJvc2UpCisgICAgCQltc2dfaW5mbygiJXM6IHdlIHJlYWQgbGluZSAn
JXMnLCB0b3RhbHM6IHN1bSA9ICVsZCwgY291bnQgPSAlbGQiLCBteW5hbWUsIHEsIHN1bSwgY291
bnQpOyAqLworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdnN0cmVhbV9m
Y2xvc2Uoc2l6ZWZpbGUpOworICAgICAgICAgICAgdW5saW5rKGZpbGVuYW1lKTsKKyAgICAgICAg
ICAgIG1zZ193YXJuKCIlczogaW52YWxpZCBsaW5lICclcycgZm91bmQgaW4gJXMsIHJlbW92aW5n
IG1haWxkaXJzaXplIGZpbGUiLCBteW5hbWUsIHEsIGZpbGVuYW1lKTsKKyAgICAgICAgICAgIHZz
dHJpbmdfZnJlZShzaXplYnVmKTsKKworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9
CisgICAgfQorCisgICAgKmNvdW50cHRyID0gY291bnQ7CisgICAgKnN1bXB0ciA9IHN1bTsKKyAg
ICAgICAgCisgICAgaWYgKHN1bSA8IDAgfHwgY291bnQgPCAwIHx8IChzdW0gPT0gMCAmJiBjb3Vu
dCAhPSAwKSB8fCAoc3VtICE9IDAgJiYgY291bnQgPT0gMCkpIHsKKwlpZiAobXNnX3ZlcmJvc2Up
IHsKKwkgICAgbXNnX2luZm8oIiVzOiB3ZSB3aWxsIHJldHVybiAtMSBhbmQgdW5saW5rICVzLCBi
ZWNhdXNlIGZpbGUgY291bnQgb3Igc3VtIGlzIDw9IDAgKHN1bSA9ICVsZCwgY291bnQgPSAlbGQp
IiwgbXluYW1lLCBmaWxlbmFtZSwgc3VtLCBjb3VudCk7CisJfQorCQorCXVubGluayhmaWxlbmFt
ZSk7CisJcmV0X3ZhbHVlID0gLTE7CisgICAgfSBlbHNlIHsKKwlpZiAobXNnX3ZlcmJvc2UpIAor
CSAgICBtc2dfaW5mbygiJXM6IHdlIHdpbGwgcmV0dXJuIE1haWxkaXIgc2l6ZSA9ICVsZCwgY291
bnQgPSAlbGQiLCBteW5hbWUsICpzdW1wdHIsICpjb3VudHB0cik7CisKKwlyZXRfdmFsdWUgPSBz
dW07CQorICAgIH0KKworICAgIHZzdHJlYW1fZmNsb3NlKHNpemVmaWxlKTsKKyAgICB2c3RyaW5n
X2ZyZWUoc2l6ZWJ1Zik7CisgICAgCisgICAgcmV0dXJuIHJldF92YWx1ZTsKK30KKworLyoKKyAq
IEdpdmVzIHRoZSBzaXplIG9mIHRoZSBmaWxlIGFjY29yZGluZyB0byB0aGUgTWFpbGRpcisrIGV4
dGVuc2lvbgorICogcHJlc2VudCBpbiB0aGUgZmlsZW5hbWUgKGNvZGUgdGFrZW4gZnJvbSBjb3Vy
aWVyLWltYXApLgorICoKKyAqIEFyZ3VtZW50czoKKyAqICBuOiBmaWxlbmFtZQorICoKKyAqIFJl
dHVybnMgdGhlIHNpemUgZ2l2ZW4gaW4gIixTPTxzaXplPiIgaW4gdGhlIGZpbGVuYW1lLAorICog
emVybyBpZiBpdCBjYW5ub3QgZmluZCAiLFM9PHNpemU+IiBpbiB0aGUgZmlsZW5hbWUuCisgKi8K
K3N0YXRpYyBsb25nIG1haWxkaXJfcGFyc2VxdW90YShjb25zdCBjaGFyICpuKQoreworICAgIGNv
bnN0IGNoYXIgKm87CisgICAgaW50IHllcyA9IDA7CisKKyAgICBpZiAoKG8gPSBzdHJyY2hyKG4s
ICcvJykpID09IDApCisgICAgICAgIG8gPSBuOworCisgICAgZm9yICg7ICpvOyBvKyspIHsKKyAg
ICAgICAgaWYgKCpvID09ICc6JykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGZv
ciAoOyBvID49IG47IC0tbykgeworICAgICAgICBpZiAoKm8gPT0gJy8nKQorICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgaWYgKCpvID09ICcsJyAmJiBvWzFdID09ICdTJyAmJiBvWzJdID09
ICc9JykgeworICAgICAgICAgICAgeWVzID0gMTsKKyAgICAgICAgICAgIG8gKz0gMzsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHllcykgeworICAgICAg
ICBsb25nIHMgPSAwOworCisgICAgICAgIHdoaWxlICgqbyA+PSAnMCcgJiYgKm8gPD0gJzknKQor
ICAgICAgICAgICAgcyA9IHMqMTAgKyAoKm8rKyAtICcwJyk7CisKKyAgICAgICAgcmV0dXJuIHM7
CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBDb21wdXRlcyBxdW90YSB1c2Fn
ZSBmb3IgYSBkaXJlY3RvcnkgKHRha2VuIGZyb20gZXhpbSkuCisgKgorICogVGhpcyBmdW5jdGlv
biBpcyBjYWxsZWQgdG8gZGV0ZXJtaW5lIHRoZSBleGFjdCBxdW90YSB1c2FnZSBvZiBhIHZpcnR1
YWwKKyAqIG1haWxkaXIgYm94LiBUbyBhY2hpZXZlIG1heGltdW0gcG9zc2libGUgc3BlZWQgd2hp
bGUgZG9pbmcgdGhpcywgaXQgdGFrZXMKKyAqIGFkdmFudGFnZSBvZiB0aGUgbWFpbGRpcnNpemUg
ZmlsZSBhbmQgdGhlIE1haWxkaXIrKyBleHRlbnNpb25zIHRvIGZpbGVuYW1lcywKKyAqIHdoZW4g
YXBwbGljYWJsZSBhbmQgY29uZmlndXJlZCB0byBiZSB1c2VkLiBJbiBhbGwgb3RoZXIgY2FzZXMg
aXQgc2ltcGx5CisgKiBzdGF0cyBhbGwgdGhlIGZpbGVzIGFzIG5lZWRlZCB0byBnZXQgdGhlIHNp
emUgaW5mb3JtYXRpb24uCisgKgorICogQXJndW1lbnRzOgorICogIGRpcm5hbWU6IHRoZSBuYW1l
IG9mIHRoZSBkaXJlY3RvcnkKKyAqICBjb3VudHB0cjogd2hlcmUgdG8gYWRkIHRoZSBmaWxlIGNv
dW50IChiZWNhdXNlIHRoaXMgZnVuY3Rpb24gcmVjdXJzZXMpCisgKgorICogUmV0dXJucyB0aGUg
c3VtIG9mIHRoZSBzaXplcyBvZiBhbGwgbWVhc3VyYWJsZSBmaWxlcywKKyAqIHplcm8gaWYgdGhl
IGRpcmVjdG9yeSBjb3VsZCBub3QgYmUgb3BlbmVkLgorICovCitzdGF0aWMgbG9uZyBjaGVja19k
aXJfc2l6ZShjaGFyICpkaXJuYW1lLCBsb25nICpjb3VudHB0cikKK3sKKyAgICBjaGFyICpteW5h
bWUgPSAiY2hlY2tfZGlyX3NpemUiOworICAgIERJUiAqZGlyOworICAgIGxvbmcgc3VtID0gMDsK
KyAgICBzdHJ1Y3QgZGlyZW50ICplbnQ7CisgICAgc3RydWN0IHN0YXQgc3RhdGJ1ZjsKKworICAg
IGRpciA9IG9wZW5kaXIoZGlybmFtZSk7CisgICAgaWYgKGRpciA9PSBOVUxMKSB7CisgICAgICAg
IGlmIChtYWtlX2RpcnMoZGlybmFtZSwgMDcwMCkgPT0gMCkgeyAgICAvKiBUcnkgdG8gY3JlYXRl
IHRoZSBkaXJzLiAqLworICAgICAgICAgICAgZGlyID0gb3BlbmRpcihkaXJuYW1lKTsgICAgICAg
ICAgICAgLyogUmVvcGVuIHRoZSBkaXIuICovCisgICAgICAgICAgICBpZiAoZGlyID09IE5VTEwp
IHsKKyAgICAgICAgICAgICAgICBtc2dfd2FybigiJXM6IGNhbm5vdCByZW9wZW4gZGlyZWN0b3J5
OiAlcyIsIG15bmFtZSwgZGlybmFtZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtc2dfd2Fy
bigiJXM6IGNhbm5vdCBvcGVuIGRpcmVjdG9yeTogJXMiLCBteW5hbWUsIGRpcm5hbWUpOworICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB3aGlsZSAoKGVudCA9
IHJlYWRkaXIoZGlyKSkgIT0gTlVMTCkgeworICAgICAgICBjaGFyICpuYW1lID0gZW50LT5kX25h
bWU7CisgICAgICAgIGxvbmcgdG1wc3VtID0gMDsKKyAgICAgICAgVlNUUklORyAqYnVmZmVyOwor
CisJLyogZG8gbm90IGNvdW50IGRvdCBhIGRvdWJsZS1kb3QgZGlycyAqLworICAgICAgICBpZiAo
c3RyY21wKG5hbWUsICIuIikgPT0gMCB8fCBzdHJjbXAobmFtZSwgIi4uIikgPT0gMCkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAvKiBkbyBub3QgY291bnQgaWYgdGhpcyBpcyB0aGUg
dHJhc2ggc3ViZGlyIGFuZCBpZiB3ZSBzaG91bGQgTk9UIGNvdW50IGl0ICovCisJZWxzZSBpZiAo
dmFyX3ZpcnRfdHJhc2hfY291bnQgPT0gMCAmJiBzdHJjbXAobmFtZSwgdmFyX3ZpcnRfdHJhc2hf
bmFtZSkgPT0gMCkKKyAgICAJICAgIGNvbnRpbnVlOworCisgICAgICAgIC8qCisgICAgICAgICAq
IEhlcmUgY29tZXMgdGhlIHJlYWwgbG9naWMgYmVoaW5kIHRoaXMgZnVuY3Rpb24uCisgICAgICAg
ICAqIE9wdGltaXplZCB0byBiZSB0aGUgbW9zdCBlZmZpY2llbnQgcG9zc2libGUsCisgICAgICAg
ICAqIGRlcGVuZGluZyBvbiB0aGUgc2V0dGluZ3MgZ2l2ZW4uCisgICAgICAgICAqIFNlZSBhYm92
ZSBmb3IgYSBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uLgorICAgICAgICAgKi8KKyAgICAgICAg
aWYgKHZhcl92aXJ0X21haWxib3hfbGltaXRfaW5ib3gpIHsKKyAgICAgICAgICAgIGlmICh2YXJf
dmlydF9tYWlsZGlyX2V4dGVuZGVkICYmICh0bXBzdW0gPSBtYWlsZGlyX3BhcnNlcXVvdGEobmFt
ZSkpKSB7CisgICAgICAgICAgICAgICAgc3VtICs9IHRtcHN1bTsKKyAgICAgICAgICAgICAgICAo
KmNvdW50cHRyKSsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgYnVmZmVyID0gdnN0cmluZ19hbGxvYygxMDI0KTsKKyAgICAgICAgICAgICAgICB2
c3RyaW5nX3NwcmludGYoYnVmZmVyLCAiJXMvJXMiLCBkaXJuYW1lLCBuYW1lKTsKKworICAgICAg
ICAgICAgICAgIGlmIChzdGF0KFNUUihidWZmZXIpLCAmc3RhdGJ1ZikgPCAwKSB7CisgICAgICAg
ICAgICAgICAgICAgIHZzdHJpbmdfZnJlZShidWZmZXIpOworICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKChzdGF0YnVm
LnN0X21vZGUgJiBTX0lGUkVHKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHN1bSArPSAo
bG9uZykgc3RhdGJ1Zi5zdF9zaXplOworICAgICAgICAgICAgICAgICAgICAoKmNvdW50cHRyKSsr
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHZzdHJpbmdfZnJlZShidWZm
ZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgYnVmZmVyID0gdnN0cmluZ19hbGxvYygxMDI0KTsKKyAgICAgICAgICAgIHZzdHJpbmdfc3By
aW50ZihidWZmZXIsICIlcy8lcyIsIGRpcm5hbWUsIG5hbWUpOworCisgICAgICAgICAgICBpZiAo
c3RhdChTVFIoYnVmZmVyKSwgJnN0YXRidWYpIDwgMCkgeworICAgICAgICAgICAgICAgIHZzdHJp
bmdfZnJlZShidWZmZXIpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKChzdGF0YnVmLnN0X21vZGUgJiBTX0lGUkVHKSAhPSAwKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHN0cmNtcChkaXJuYW1lICsgc3RybGVuKGRpcm5hbWUpIC0gMywg
Im5ldyIpID09IDAgfHwgc3RyY21wKGRpcm5hbWUgKyBzdHJsZW4oZGlybmFtZSkgLSAzLCAiY3Vy
IikgPT0gMCB8fCBzdHJjbXAoZGlybmFtZSArIHN0cmxlbihkaXJuYW1lKSAtIDMsICJ0bXAiKSA9
PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHN1bSArPSAobG9uZykgc3RhdGJ1Zi5zdF9zaXpl
OworICAgICAgICAgICAgICAgICAgICAoKmNvdW50cHRyKSsrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKChzdGF0YnVmLnN0X21vZGUgJiBT
X0lGRElSKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgc3VtICs9IGNoZWNrX2Rpcl9zaXplKFNU
UihidWZmZXIpLCBjb3VudHB0cik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZzdHJp
bmdfZnJlZShidWZmZXIpOworICAgICAgICB9CisgICAgfQorICAgIGNsb3NlZGlyKGRpcik7CiAK
LWludCAgICAgZGVsaXZlcl9tYWlsZGlyKExPQ0FMX1NUQVRFIHN0YXRlLCBVU0VSX0FUVFIgdXNy
X2F0dHIpCisgICAgaWYgKG1zZ192ZXJib3NlKQorICAgICAgICBtc2dfaW5mbygiJXM6IGZ1bGwg
c2NhbiBkb25lOiBkaXI9JXMgc3VtPSVsZCBjb3VudD0lbGQiLCBteW5hbWUsIGRpcm5hbWUsIHN1
bSwgKmNvdW50cHRyKTsKKworICAgIHJldHVybiBzdW07Cit9CisKKy8qIEN1dCBhbGwgb2NjdXJy
ZW5jZXMgb2YgcGF0dGVybiBmcm9tIHN0cmluZy4gKi8KK3N0YXRpYyBjaGFyICpzdHJjdXQoY2hh
ciAqc3RyLCBjb25zdCBjaGFyICpwYXQpCit7CisgICAgY2hhciAqcHRyLCAqbG9jLCAqcmV0Owor
ICAgIHJldCA9IHN0cjsKKyAgICBsb2MgPSBzdHI7CisKKyAgICAvKiBObyBtYXRjaCwgcmV0dXJu
IG9yaWdpbmFsIHN0cmluZy4gKi8KKyAgICBpZiAoIXN0cnN0cihsb2MsIHBhdCkpCisgICAgICAg
IHJldHVybihzdHIpOworCisgICAgd2hpbGUgKCpsb2MgJiYgKHB0ciA9IHN0cnN0cihsb2MsIHBh
dCkpKSB7CisgICAgICAgIHdoaWxlIChsb2MgPCBwdHIpCisgICAgICAgICAgICAqc3RyKysgPSAq
bG9jKys7CisgICAgICAgIGxvYyArPSBzdHJsZW4ocGF0KTsKKyAgICB9CisKKyAgICB3aGlsZSAo
KmxvYykKKyAgICAgICAgKnN0cisrID0gKmxvYysrOworCisgICAgKnN0ciA9IDA7CisKKyAgICBy
ZXR1cm4ocmV0KTsKK30KKworLyogQ2hlY2sgaWYgbWFpbGRpcmZpbHRlciBmaWxlIGlzIHVwLXRv
LWRhdGUgY29tcGFyZWQgdG8gU1FMLCAocmUpd3JpdGUgaXQgaWYgbm90LiAqLworc3RhdGljIGxv
bmcgc3FsMmZpbGUoY2hhciAqZmlsZW5hbWUsIGNoYXIgKnVzZXIpCit7CisgICAgY2hhciAqbXlu
YW1lID0gInNxbDJmaWxlIjsKKyAgICBjaGFyICpmaWx0ZXJfc3FscmVzOworICAgIGNoYXIgZmls
dGVyX2ZpbGVyZXNbMTI4XTsKKyAgICBsb25nIHNxbG10aW1lID0gMCwgZmlsZW10aW1lID0gMCwg
cmV0dmFsID0gMDsKKyAgICBpbnQgZmlsdGVyZmlsZSwgc2l6ZV9zcWxyZXMsIGk7CisgICAgc3Ry
dWN0IHN0YXQgc3RhdGJ1ZjsKKworICAgIGlmICgqdmFyX3ZpcnRfbWFpbGRpcl9maWx0ZXJfbWFw
cyAhPSAwKSB7CisgICAgICAgIGZpbHRlcl9zcWxyZXMgPSAoY2hhciAqKSBteW1hbGxvYygxNjAw
MCk7CisgICAgICAgIGZpbHRlcl9zcWxyZXMgPSAoY2hhciAqKSBtYWlsX2FkZHJfZmluZCh2aXJ0
dWFsX21haWxkaXJfZmlsdGVyX21hcHMsIHVzZXIsIChjaGFyICoqKSAwKTsKKworICAgICAgICBp
ZiAoZmlsdGVyX3NxbHJlcykgeworICAgICAgICAgICAgc3RyY3V0KGZpbHRlcl9zcWxyZXMsICJc
ciIpOworICAgICAgICAgICAgaWYgKGZpbHRlcl9zcWxyZXNbMF0gPT0gJyMnICYmIGZpbHRlcl9z
cWxyZXNbMV0gPT0gJyAnICYmIGZpbHRlcl9zcWxyZXNbMl0gPT0gJ00nKSB7CisgICAgICAgICAg
ICAgICAgc2l6ZV9zcWxyZXMgPSBzdHJsZW4oZmlsdGVyX3NxbHJlcyk7CisKKyAgICAgICAgICAg
ICAgICBmb3IgKGkgPSA0OyBpIDw9IHNpemVfc3FscmVzOyBpKyspIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYoZmlsdGVyX3NxbHJlc1tpXSA9PSAnLycgJiYgZmlsdGVyX3NxbHJlc1tpKzFdID09
ICdeJykgeworICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX3NxbHJlc1tpLTFdID0gJ1xu
JzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGZpbHRlcl9zcWxyZXNbKHNpemVfc3FscmVzKzEpXSA9ICdcMCc7CisKKyAgICAgICAg
ICAgICAgICBzcWxtdGltZSA9IGF0b2woZmlsdGVyX3NxbHJlcyszKTsKKyAgICAgICAgICAgICAg
ICByZXR2YWwgPSBzcWxtdGltZTsKKworICAgICAgICAgICAgICAgIGZpbHRlcmZpbGUgPSBvcGVu
KGZpbGVuYW1lLCBPX1JET05MWSwgMCk7CisgICAgICAgICAgICAgICAgaWYgKGZpbHRlcmZpbGUp
IHsKKyAgICAgICAgICAgICAgICAgICAgcmVhZChmaWx0ZXJmaWxlLCAodm9pZCAqKSBmaWx0ZXJf
ZmlsZXJlcywgMTI3KTsKKyAgICAgICAgICAgICAgICAgICAgY2xvc2UoZmlsdGVyZmlsZSk7CisK
KyAgICAgICAgICAgICAgICAgICAgZmlsZW10aW1lID0gYXRvbChmaWx0ZXJfZmlsZXJlcyszKTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAobXNnX3ZlcmJvc2UpCisg
ICAgICAgICAgICAgICAgICAgIG1zZ19pbmZvKCIlczogZmlsdGVyIGRhdGE6IHNxbF9zaXplPSVs
aSBzcWxfbXRpbWU9JWxkIGZpbGVfbXRpbWU9JWxkIiwgbXluYW1lLCBzdHJsZW4oZmlsdGVyX3Nx
bHJlcyksIHNxbG10aW1lLCBmaWxlbXRpbWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKHNxbG10aW1lICE9IGZpbGVtdGltZSAmJiBzcWxtdGltZSAhPSAwKSB7CisgICAgICAgICAg
ICAgICAgaWYgKChmaWx0ZXJmaWxlID0gb3BlbihmaWxlbmFtZSwgT19XUk9OTFkgfCBPX0NSRUFU
IHwgT19UUlVOQywgMDY0MCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtc2dfdmVyYm9z
ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZ19pbmZvKCIlczogdXBkYXRpbmcgZmlsdGVy
IGZpbGU6ICVzIiwgbXluYW1lLCBmaWxlbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHdyaXRl
KGZpbHRlcmZpbGUsIGZpbHRlcl9zcWxyZXMsIHN0cmxlbihmaWx0ZXJfc3FscmVzKSk7CisgICAg
ICAgICAgICAgICAgICAgIGNsb3NlKGZpbHRlcmZpbGUpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbXNnX3dhcm4oIiVzOiBj
YW4ndCBjcmVhdGUgZmlsdGVyIGZpbGU6ICVzIiwgbXluYW1lLCBmaWxlbmFtZSk7CisgICAgICAg
ICAgICAgICAgICAgIHJldHZhbCA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoc3RhdChmaWxlbmFt
ZSwgJnN0YXRidWYpID09IDApCisgICAgICAgICAgICByZXR2YWwgPSAobG9uZykgc3RhdGJ1Zi5z
dF9tdGltZTsKKyAgICAgICAgaWYgKG1zZ192ZXJib3NlKQorICAgICAgICAgICAgbXNnX2luZm8o
IiVzOiBwcm9jZXNzaW5nIGZpbHRlciBmaWxlOiBmaWxlX210aW1lPSVsZCIsIG15bmFtZSwgcmV0
dmFsKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0dmFsOworfQorCisvKiBkZWxpdmVyX21haWxk
aXIgLSBkZWxpdmVyeSB0byBtYWlsZGlyLXN0eWxlIG1haWxib3ggKi8KK2ludCBkZWxpdmVyX21h
aWxkaXIoTE9DQUxfU1RBVEUgc3RhdGUsIFVTRVJfQVRUUiB1c3JfYXR0cikKIHsKICAgICBjb25z
dCBjaGFyICpteW5hbWUgPSAiZGVsaXZlcl9tYWlsZGlyIjsKLSAgICBjaGFyICAgKm5ld2RpcjsK
LSAgICBjaGFyICAgKnRtcGRpcjsKLSAgICBjaGFyICAgKmN1cmRpcjsKLSAgICBjaGFyICAgKnRt
cGZpbGU7Ci0gICAgY2hhciAgICpuZXdmaWxlOworICAgIGNoYXIgICAgKm5ld2RpcjsKKyAgICBj
aGFyICAgICp0bXBkaXI7CisgICAgY2hhciAgICAqY3VyZGlyOworICAgIGNoYXIgICAgKm5ld2Zp
bGU7CisgICAgY2hhciAgICAqdG1wZmlsZTsKICAgICBEU05fQlVGICp3aHkgPSBzdGF0ZS5tc2df
YXR0ci53aHk7CiAgICAgVlNUUklORyAqYnVmOwogICAgIFZTVFJFQU0gKmRzdDsKLSAgICBpbnQg
ICAgIG1haWxfY29weV9zdGF0dXM7Ci0gICAgaW50ICAgICBkZWxpdmVyX3N0YXR1czsKLSAgICBp
bnQgICAgIGNvcHlfZmxhZ3M7Ci0gICAgc3RydWN0IHN0YXQgc3Q7Ci0gICAgc3RydWN0IHRpbWV2
YWwgc3RhcnR0aW1lOworICAgIGludCAgICAgIG1haWxfY29weV9zdGF0dXM7CisgICAgaW50ICAg
ICAgZGVsaXZlcl9zdGF0dXM7CisgICAgaW50ICAgICAgY29weV9mbGFnczsKKyAgICBzdHJ1Y3Qg
ICBzdGF0IHN0OworICAgIHN0cnVjdCAgIHRpbWV2YWwgc3RhcnR0aW1lOworCisgICAgLyogTWFp
bGRpciBRdW90YS4gKi8KKyAgICBjb25zdCBjaGFyICpsaW1pdF9yZXM7ICAgICAgICAgICAgICAv
KiBMaW1pdCBmcm9tIG1hcC4gKi8KKyAgICBjaGFyICAgICpzaXplZmlsZW5hbWUgPSAoY2hhciAq
KSAwOyAvKiBNYWlsZGlyc2l6ZSBmaWxlIG5hbWUuICovCisgICAgVlNUUklORyAqZmlsZXF1b3Rh
OyAgICAgICAgICAgICAgICAgLyogUXVvdGEgc2V0dGluZyBmcm9tIHRoZSBtYWlsZGlyc2l6ZSBm
aWxlLiAqLworICAgIFZTVFJFQU0gKnNpemVmaWxlOyAgICAgICAgICAgICAgICAgIC8qIE1haWxk
aXJzaXplIGZpbGUgaGFuZGxlLiAqLworICAgIGxvbmcgICAgIG4gPSAwOyAgICAgICAgICAgICAg
ICAgICAgIC8qIExpbWl0IGluIGxvbmcgaW50ZWdlciBmb3JtYXQuICovCisgICAgbG9uZyAgICAg
c2F2ZWRfY291bnQgPSAwOyAgICAgICAgICAgLyogVGhlIHRvdGFsIG51bWJlciBvZiBmaWxlcy4g
Ki8KKyAgICBsb25nICAgICBzYXZlZF9zaXplID0gMDsgICAgICAgICAgICAvKiBUaGUgdG90YWwg
cXVvdGEgb2YgYWxsIGZpbGVzLiAqLworICAgIHN0cnVjdCAgIHN0YXQgbWFpbF9zdGF0OyAgICAg
ICAgICAgIC8qIFRvIGNoZWNrIHRoZSBzaXplIG9mIHRoZSBtYWlsIHRvIGJlIHdyaXR0ZW4uICov
CisgICAgc3RydWN0ICAgc3RhdCBzaXplZmlsZV9zdGF0OyAgICAgICAgLyogVG8gY2hlY2sgdGhl
IHNpemUgb2YgdGhlIG1haWxkaXJzaXplIGZpbGUuICovCisgICAgdGltZV90ICAgdG07ICAgICAg
ICAgICAgICAgICAgICAgICAgLyogVG8gY2hlY2sgdGhlIGFnZSBvZiB0aGUgbWFpbGRpcnNpemUg
ZmlsZS4gKi8KKworICAgIC8qIE1haWxkaXIgRmlsdGVycy4gKi8KKyAgICBjb25zdCBjaGFyICp2
YWx1ZSwgKmNtZF90ZXh0OyAgICAgICAvKiBGaWx0ZXIgdmFsdWVzLiAqLworICAgIGNoYXIgICAg
KmZpbHRlcm5hbWU7CisgICAgY2hhciAgICAqaGVhZGVyOworICAgIGNoYXIgICAgKmJrcG5ld2Zp
bGU7CisgICAgY2hhciAgICAqbWRmZmlsZW5hbWUgPSAoY2hhciAqKSAwOyAgLyogTWFpbGRpcmZv
bGRlciBmaWxlIG5hbWUuICovCisgICAgVlNUUklORyAqZmx0c3RyOworICAgIFZTVFJFQU0gKnRt
cGZpbHRlcjsKKyAgICBWU1RSRUFNICptZGZmaWxlOyAgICAgICAgICAgICAgICAgICAvKiBNYWls
ZGlyZm9sZGVyIGZpbGUgaGFuZGxlLiAqLworICAgIERJQ1QgICAgKkZJTFRFUlM7CisgICAgbG9u
ZyAgICAgc3FsbXRpbWU7ICAgICAgICAgICAgICAgICAgLyogTGF0ZXN0IG1vZGlmaWNhdGlvbiB0
aW1lIGZyb20gc3FsMmZpbGUoKS4gKi8KKyAgICBpbnQgICAgICBjbWRfbGVuOworICAgIGludAkg
ICAgcmVhZF9tZHMgPSAtMTsJCS8qIHJlYWRfbWFpbGRpcnNpemUoKSByZXR1cm5lZCB2YWx1ZSAq
LworICAgIHN0cnVjdCAgIHN0YXQgbWRmZmlsZV9zdGF0OyAgICAgICAgIC8qIFRvIGNoZWNrIGlm
IHRoZSBtYWlsZGlyZm9sZGVyIGZpbGUgZXhpc3RzLiAqLwogCiAgICAgR0VUVElNRU9GREFZKCZz
dGFydHRpbWUpOwogCkBAIC05NCwxNSArNDg2LDE0IEBACiAgICAgICovCiAgICAgc3RhdGUubGV2
ZWwrKzsKICAgICBpZiAobXNnX3ZlcmJvc2UpCi0JTVNHX0xPR19TVEFURShteW5hbWUsIHN0YXRl
KTsKKwkgICAgTVNHX0xPR19TVEFURShteW5hbWUsIHN0YXRlKTsKIAogICAgIC8qCiAgICAgICog
RG9uJ3QgZGVsaXZlciB0cmFjZS1vbmx5IHJlcXVlc3RzLgogICAgICAqLwogICAgIGlmIChERUxf
UkVRX1RSQUNFX09OTFkoc3RhdGUucmVxdWVzdC0+ZmxhZ3MpKSB7Ci0JZHNiX3NpbXBsZSh3aHks
ICIyLjAuMCIsICJkZWxpdmVycyB0byBtYWlsZGlyIik7Ci0JcmV0dXJuIChzZW50KEJPVU5DRV9G
TEFHUyhzdGF0ZS5yZXF1ZXN0KSwKLQkJICAgICBTRU5UX0FUVFIoc3RhdGUubXNnX2F0dHIpKSk7
CisgICAgICAgIGRzYl9zaW1wbGUod2h5LCAiMi4wLjAiLCAiZGVsaXZlcnMgdG8gbWFpbGRpciIp
OworICAgICAgICByZXR1cm4gKHNlbnQoQk9VTkNFX0ZMQUdTKHN0YXRlLnJlcXVlc3QpLCBTRU5U
X0FUVFIoc3RhdGUubXNnX2F0dHIpKSk7CiAgICAgfQogCiAgICAgLyoKQEAgLTExMCwxOCArNTAx
LDExNiBAQAogICAgICAqIGF0dHJpYnV0ZSB0byByZWZsZWN0IHRoZSBmaW5hbCByZWNpcGllbnQu
CiAgICAgICovCiAgICAgaWYgKHZzdHJlYW1fZnNlZWsoc3RhdGUubXNnX2F0dHIuZnAsIHN0YXRl
Lm1zZ19hdHRyLm9mZnNldCwgU0VFS19TRVQpIDwgMCkKLQltc2dfZmF0YWwoInNlZWsgbWVzc2Fn
ZSBmaWxlICVzOiAlbSIsIFZTVFJFQU1fUEFUSChzdGF0ZS5tc2dfYXR0ci5mcCkpOworICAgICAg
ICBtc2dfZmF0YWwoInNlZWsgbWVzc2FnZSBmaWxlICVzOiAlbSIsIFZTVFJFQU1fUEFUSChzdGF0
ZS5tc2dfYXR0ci5mcCkpOwogICAgIHN0YXRlLm1zZ19hdHRyLmRlbGl2ZXJlZCA9IHN0YXRlLm1z
Z19hdHRyLnJjcHQuYWRkcmVzczsKICAgICBtYWlsX2NvcHlfc3RhdHVzID0gTUFJTF9DT1BZX1NU
QVRfV1JJVEU7CiAgICAgYnVmID0gdnN0cmluZ19hbGxvYygxMDApOwogCi0gICAgY29weV9mbGFn
cyA9IE1BSUxfQ09QWV9UT0ZJTEUgfCBNQUlMX0NPUFlfUkVUVVJOX1BBVEgKLQl8IE1BSUxfQ09Q
WV9ERUxJVkVSRUQgfCBNQUlMX0NPUFlfT1JJR19SQ1BUOworICAgIGNvcHlfZmxhZ3MgPSBNQUlM
X0NPUFlfVE9GSUxFIHwgTUFJTF9DT1BZX1JFVFVSTl9QQVRIIHwgTUFJTF9DT1BZX0RFTElWRVJF
RCB8IE1BSUxfQ09QWV9PUklHX1JDUFQ7CiAKLSAgICBuZXdkaXIgPSBjb25jYXRlbmF0ZSh1c3Jf
YXR0ci5tYWlsYm94LCAibmV3LyIsIChjaGFyICopIDApOwotICAgIHRtcGRpciA9IGNvbmNhdGVu
YXRlKHVzcl9hdHRyLm1haWxib3gsICJ0bXAvIiwgKGNoYXIgKikgMCk7Ci0gICAgY3VyZGlyID0g
Y29uY2F0ZW5hdGUodXNyX2F0dHIubWFpbGJveCwgImN1ci8iLCAoY2hhciAqKSAwKTsKKyAgICAv
KgorICAgICAqIENvbmNhdGVuYXRlIHRoZSBtYWlsZGlyIHN1ZmZpeCAoaWYgc2V0KS4KKyAgICAg
Ki8KKyAgICBpZiAoKnZhcl92aXJ0X21haWxkaXJfc3VmZml4ID09IDApIHsKKyAgICAgICAgbmV3
ZGlyID0gY29uY2F0ZW5hdGUodXNyX2F0dHIubWFpbGJveCwgIm5ldy8iLCAoY2hhciAqKSAwKTsK
KyAgICAgICAgdG1wZGlyID0gY29uY2F0ZW5hdGUodXNyX2F0dHIubWFpbGJveCwgInRtcC8iLCAo
Y2hhciAqKSAwKTsKKyAgICAgICAgY3VyZGlyID0gY29uY2F0ZW5hdGUodXNyX2F0dHIubWFpbGJv
eCwgImN1ci8iLCAoY2hhciAqKSAwKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG5ld2Rp
ciA9IGNvbmNhdGVuYXRlKHVzcl9hdHRyLm1haWxib3gsIHZhcl92aXJ0X21haWxkaXJfc3VmZml4
LCAoY2hhciAqKSAwKTsKKyAgICAgICAgdG1wZGlyID0gY29uY2F0ZW5hdGUodXNyX2F0dHIubWFp
bGJveCwgdmFyX3ZpcnRfbWFpbGRpcl9zdWZmaXgsIChjaGFyICopIDApOworICAgICAgICBjdXJk
aXIgPSBjb25jYXRlbmF0ZSh1c3JfYXR0ci5tYWlsYm94LCB2YXJfdmlydF9tYWlsZGlyX3N1ZmZp
eCwgKGNoYXIgKikgMCk7CisgICAgICAgIG5ld2RpciA9IGNvbmNhdGVuYXRlKG5ld2RpciwgIm5l
dy8iLCAoY2hhciAqKSAwKTsKKyAgICAgICAgdG1wZGlyID0gY29uY2F0ZW5hdGUodG1wZGlyLCAi
dG1wLyIsIChjaGFyICopIDApOworICAgICAgICBjdXJkaXIgPSBjb25jYXRlbmF0ZShjdXJkaXIs
ICJjdXIvIiwgKGNoYXIgKikgMCk7CisgICAgfQogCisgICAgLyogZ2V0IHRoZSBzaXplZmlsZW5h
bWUsIG5vIG1hdHRlciBpZiB3ZSB1c2UgdmFyX3ZpcnRfbWFpbGRpcl9leHRlbmRlZCAqLworICAg
IGlmICgqdmFyX3ZpcnRfbWFpbGRpcl9zdWZmaXggPT0gMCkgeworICAgICAgICBzaXplZmlsZW5h
bWUgPSBjb25jYXRlbmF0ZSh1c3JfYXR0ci5tYWlsYm94LCAibWFpbGRpcnNpemUiLCAoY2hhciAq
KSAwKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzaXplZmlsZW5hbWUgPSBjb25jYXRlbmF0ZSh1
c3JfYXR0ci5tYWlsYm94LCB2YXJfdmlydF9tYWlsZGlyX3N1ZmZpeCwgKGNoYXIgKikgMCk7Cisg
ICAgICAgIHNpemVmaWxlbmFtZSA9IGNvbmNhdGVuYXRlKHNpemVmaWxlbmFtZSwgIm1haWxkaXJz
aXplIiwgKGNoYXIgKikgMCk7CisgICAgfQorICAgIAorICAgIC8qCisgICAgICogTG9vayB1cCB0
aGUgdmlydHVhbCBtYWlsZGlyIGxpbWl0IHNpemUgZm9yIHRoaXMgdXNlci4KKyAgICAgKiBGYWxs
IGJhY2sgdG8gdmlydHVhbF9tYWlsYm94X2xpbWl0IGluIGNhc2UgbG9va3VwIGZhaWxlZC4KKyAg
ICAgKiBJZiB2aXJ0dWFsIG1haWxkaXIgbGltaXQgc2l6ZSBpcyBuZWdhdGl2ZSwgZmFsbCBiYWNr
IHRvIHZpcnR1YWxfbWFpbGJveF9saW1pdC4KKyAgICAgKiBJZiBpdCdzIDAsIHNldCB0aGUgbWFp
bGJveCBsaW1pdCB0byAwLCB3aGljaCBtZWFucyB1bmxpbWl0ZWQuCisgICAgICogSWYgaXQncyBt
b3JlIHRoYW4gMCAocG9zaXRpdmUgaW50KSwgY2hlY2sgaWYgdGhlIHZhbHVlIGlzIHNtYWxsZXIg
dGhhbiB0aGUgbWF4aW11bSBtZXNzYWdlIHNpemUsCisgICAgICogaWYgaXQgaXMgYW5kIHRoZSB2
aXJ0dWFsIG1haWxkaXIgbGltaXQgY2FuJ3QgYmUgb3ZlcnJpZGRlbiwgZmFsbCBiYWNrIHRvIHZp
cnR1YWxfbWFpbGJveF9saW1pdCBhbmQKKyAgICAgKiB3YXJuIHRoZSB1c2VyLCBlbHNlIHVzZSB0
aGUgdmFsdWUgZGlyZWN0bHkgYXMgdGhlIG1haWxkaXIgbGltaXQuCisgICAgICovCisgICAgaWYg
KCp2YXJfdmlydF9tYWlsYm94X2xpbWl0X21hcHMgIT0gMCAmJiAobGltaXRfcmVzID0gbWFpbF9h
ZGRyX2ZpbmQodmlydHVhbF9tYWlsYm94X2xpbWl0X21hcHMsIHN0YXRlLm1zZ19hdHRyLnVzZXIs
IChjaGFyICoqKSBOVUxMKSkgIT0gMCkgeworICAgICAgICBuID0gYXRvbChsaW1pdF9yZXMpOwor
ICAgICAgICBpZiAobiA+IDApIHsKKyAgICAgICAgICAgIGlmICgobiA8IHZhcl9tZXNzYWdlX2xp
bWl0KSAmJiAoIXZhcl92aXJ0X21haWxib3hfbGltaXRfb3ZlcnJpZGUpKSB7CisgICAgICAgICAg
ICAgICAgbiA9IHZhcl92aXJ0X21haWxib3hfbGltaXQ7CisKKyAgICAgICAgICAgICAgICBtc2df
d2FybigiJXM6IHJlY2lwaWVudCAlcyAtIHZpcnR1YWwgbWFpbGRpciBsaW1pdCBpcyBzbWFsbGVy
IHRoYW4gJXMgaW4gJXMgLSBmYWxsaW5nIGJhY2sgdG8gJXMiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgbXluYW1lLCBzdGF0ZS5tc2dfYXR0ci51c2VyLCBWQVJfTUVTU0FHRV9MSU1JVCwgdmly
dHVhbF9tYWlsYm94X2xpbWl0X21hcHMtPnRpdGxlLAorICAgICAgICAgICAgICAgICAgICAgICAg
VkFSX1ZJUlRfTUFJTEJPWF9MSU1JVCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICBpZiAobXNnX3ZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAg
IG1zZ19pbmZvKCIlczogc2V0IHZpcnR1YWwgbWFpbGRpciBsaW1pdCBzaXplIGZvciAlcyB0byAl
bGQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15bmFtZSwgdXNyX2F0dHIubWFpbGJv
eCwgbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobiA9PSAw
KSB7CisgICAgICAgICAgICAgICAgaWYgKG1zZ192ZXJib3NlKQorICAgICAgICAgICAgICAgICAg
ICBtc2dfaW5mbygiJXM6IHNldCB2aXJ0dWFsIG1haWxkaXIgbGltaXQgc2l6ZSBmb3IgJXMgdG8g
JWxkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBteW5hbWUsIHVzcl9hdHRyLm1haWxi
b3gsIG4pOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworCSAgICBpZiAobXNnX3ZlcmJvc2Up
CisJCW1zZ19pbmZvKCIlczogcXVvdGEgaXMgbmVnYXRpdmUgKCVsZCksIHVzaW5nIGRlZmF1bHQg
dmlydHVhbF9tYWlsYm94X2xpbWl0ICglbGQpIiwgCisJCQkgICAgbXluYW1lLCBuLCB2YXJfdmly
dF9tYWlsYm94X2xpbWl0KTsKKyAgICAgICAgICAgIC8qIEludmFsaWQgbGltaXQgc2l6ZSAobmVn
YXRpdmUpLiBVc2UgZGVmYXVsdCB2aXJ0dWFsX21haWxib3hfbGltaXQuICovCisgICAgICAgICAg
ICBuID0gdmFyX3ZpcnRfbWFpbGJveF9saW1pdDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNl
IHsKKwlpZiAobXNnX3ZlcmJvc2UpCisJICAgIG1zZ19pbmZvKCIlczogbm8gbGltaXQgZm91bmQg
aW4gdGhlIG1hcHMsIHVzaW5nIGRlZmF1bHQgdmlydHVhbF9tYWlsYm94X2xpbWl0ICglbGQpIiwg
CisJCQlteW5hbWUsIHZhcl92aXJ0X21haWxib3hfbGltaXQpOworICAgICAgICAvKiBUaGVyZSBp
cyBubyBsaW1pdCBpbiB0aGUgbWFwcy4gVXNlIGRlZmF1bHQgdmlydHVhbF9tYWlsYm94X2xpbWl0
LiAqLworICAgICAgICBuID0gdmFyX3ZpcnRfbWFpbGJveF9saW1pdDsKKyAgICB9CisKKyAgICAv
KiBJZiB0aGVyZSBzaG91bGQgaXMgYSBxdW90YSBvbiBtYWlsZGlyIGdlbmVyYWx5LCBjaGVjayBp
dCBiZWZvcmUgZGVsaXZlcmluZyB0aGUgbWFpbCAqLworICAgIGlmIChuICE9IDApIHsKKyAgICAg
ICAgc2V0X2V1Z2lkKHVzcl9hdHRyLnVpZCwgdXNyX2F0dHIuZ2lkKTsKKwkvKiB0cnkgdG8gcmVh
ZCB0aGUgcXVvdGEgZnJvbSBtYWlsZGlyc2l6ZSBmaWxlLiBSZXR1cm5lZCB2YWx1ZXMgYnkgcmVh
ZF9tYWlsZGlyc2l6ZToKKwl4IDwgMCAgPSBzb21ldGhpbmcgZmFpbGVkCisJeCA+PSAwID0gcmVh
ZGluZyBzdWNjZXNzZnVsbHkgZmluaXNoZWQgLSBzdW0gc2kgcmV0dXJuZWQsIHNvIHN1bSBzaXpl
IG9mIE1haWxkaXIgd2FzIDAgb3IgbW9yZSAqLworICAgICAgICBpZiAoIXZhcl92aXJ0X21haWxi
b3hfbGltaXRfaW5ib3ggJiYgdmFyX3ZpcnRfbWFpbGRpcl9leHRlbmRlZCAmJiAocmVhZF9tZHMg
PSByZWFkX21haWxkaXJzaXplKHNpemVmaWxlbmFtZSwgJnNhdmVkX3NpemUsICZzYXZlZF9jb3Vu
dCkpID49IDApIHsKKyAgICAJICAgIGlmIChtc2dfdmVyYm9zZSkKKyAgICAgICAgCW1zZ19pbmZv
KCIlczogbWFpbGRpcnNpemUgdXNlZD0lcyBzdW09JWxkIGNvdW50PSVsZCIsIG15bmFtZSwgc2l6
ZWZpbGVuYW1lLCBzYXZlZF9zaXplLCBzYXZlZF9jb3VudCk7CisJfSBlbHNlIHsKKwkgICAgaWYg
KG1zZ192ZXJib3NlKSAKKwkJbXNnX2luZm8oIiVzOiBXZSB3aWxsIHJlY291bnQgdGhlIHF1b3Rh
ICh2YXJfdmlydF9tYWlsYm94X2xpbWl0ID0gJWxkLCB2YXJfdmlydF9tYWlsZGlyX2V4dGVuZGVk
ID0gJWQsIHJlYWRfbWFpbGRpcnNpemUgPSAlZCkiLCAKKwkJCSAgICBteW5hbWUsIHZhcl92aXJ0
X21haWxib3hfbGltaXQsIHZhcl92aXJ0X21haWxkaXJfZXh0ZW5kZWQsIHJlYWRfbWRzKTsKKwor
CSAgICAvKiBzYW5pdHkgKi8KKwkgICAgc2F2ZWRfc2l6ZSA9IDA7IAorCSAgICBzYXZlZF9jb3Vu
dCA9IDA7CisJICAgIAorICAgIAkgICAgaWYgKHZhcl92aXJ0X21haWxib3hfbGltaXRfaW5ib3gp
IHsKKyAgICAgICAgCS8qIENoZWNrIEluYm94IG9ubHkgKG5ldywgY3VyIGFuZCB0bXAgZGlycyku
ICovCisgICAgICAgIAlzYXZlZF9zaXplID0gY2hlY2tfZGlyX3NpemUobmV3ZGlyLCAmc2F2ZWRf
Y291bnQpOworICAgICAgICAJc2F2ZWRfc2l6ZSArPSBjaGVja19kaXJfc2l6ZShjdXJkaXIsICZz
YXZlZF9jb3VudCk7CisgICAgICAgIAlzYXZlZF9zaXplICs9IGNoZWNrX2Rpcl9zaXplKHRtcGRp
ciwgJnNhdmVkX2NvdW50KTsKKyAgICAJICAgIH0gZWxzZSB7CisgICAgICAgIAkvKiBDaGVjayBh
bGwgYm94ZXMuICovCisgICAgICAgIAlzYXZlZF9zaXplID0gY2hlY2tfZGlyX3NpemUodXNyX2F0
dHIubWFpbGJveCwgJnNhdmVkX2NvdW50KTsKKyAgICAJICAgIH0KKworICAgIAkgICAgc2V0X2V1
Z2lkKHZhcl9vd25lcl91aWQsIHZhcl9vd25lcl9naWQpOworICAgIAl9ICAgIAkKKyAgICB9Cisg
ICAgCiAgICAgLyoKICAgICAgKiBDcmVhdGUgYW5kIHdyaXRlIHRoZSBmaWxlIGFzIHRoZSByZWNp
cGllbnQsIHNvIHRoYXQgZmlsZSBxdW90YSB3b3JrLgogICAgICAqIENyZWF0ZSBhbnkgbWlzc2lu
ZyBkaXJlY3RvcmllcyBvbiB0aGUgZmx5LiBUaGUgZmlsZSBuYW1lIGlzIGNob3NlbgpAQCAtMTc1
LDQ2ICs2NjQsMjg4IEBACiAgICAgICogWy4uLl0KICAgICAgKi8KICAgICBzZXRfZXVnaWQodXNy
X2F0dHIudWlkLCB1c3JfYXR0ci5naWQpOwotICAgIHZzdHJpbmdfc3ByaW50ZihidWYsICIlbHUu
UCVkLiVzIiwKLQkJICh1bnNpZ25lZCBsb25nKSBzdGFydHRpbWUudHZfc2VjLCB2YXJfcGlkLCBn
ZXRfaG9zdG5hbWUoKSk7CisgICAgdnN0cmluZ19zcHJpbnRmKGJ1ZiwgIiVsdS5QJWQuJXMiLCAo
dW5zaWduZWQgbG9uZykgc3RhcnR0aW1lLnR2X3NlYywgdmFyX3BpZCwgZ2V0X2hvc3RuYW1lKCkp
OwogICAgIHRtcGZpbGUgPSBjb25jYXRlbmF0ZSh0bXBkaXIsIFNUUihidWYpLCAoY2hhciAqKSAw
KTsKICAgICBuZXdmaWxlID0gMDsKKyAgICBia3BuZXdmaWxlID0gMDsKICAgICBpZiAoKGRzdCA9
IHZzdHJlYW1fZm9wZW4odG1wZmlsZSwgT19XUk9OTFkgfCBPX0NSRUFUIHwgT19FWENMLCAwNjAw
KSkgPT0gMAotCSYmIChlcnJubyAhPSBFTk9FTlQKLQkgICAgfHwgbWFrZV9kaXJzKHRtcGRpciwg
MDcwMCkgPCAwCi0JICAgIHx8IChkc3QgPSB2c3RyZWFtX2ZvcGVuKHRtcGZpbGUsIE9fV1JPTkxZ
IHwgT19DUkVBVCB8IE9fRVhDTCwgMDYwMCkpID09IDApKSB7Ci0JZHNiX3NpbXBsZSh3aHksIG1i
b3hfZHNuKGVycm5vLCAiNC4yLjAiKSwKLQkJICAgImNyZWF0ZSBtYWlsZGlyIGZpbGUgJXM6ICVt
IiwgdG1wZmlsZSk7Ci0gICAgfSBlbHNlIGlmIChmc3RhdCh2c3RyZWFtX2ZpbGVubyhkc3QpLCAm
c3QpIDwgMCkgewotCi0JLyoKLQkgKiBDb3Zlcml0eSAyMDA2MDQ6IGZpbGUgZGVzY3JpcHRvciBs
ZWFrIGluIGNvZGUgdGhhdCBuZXZlciBleGVjdXRlcy4KLQkgKiBDb2RlIHJlcGxhY2VkIGJ5IG1z
Z19mYXRhbCgpLCBhcyBpdCBpcyBub3Qgd29ydGh3aGlsZSB0byBjb250aW51ZQotCSAqIGFmdGVy
IGFuIGltcG9zc2libGUgZXJyb3IgY29uZGl0aW9uLgotCSAqLwotCW1zZ19mYXRhbCgiZnN0YXQg
JXM6ICVtIiwgdG1wZmlsZSk7Ci0gICAgfSBlbHNlIHsKLQl2c3RyaW5nX3NwcmludGYoYnVmLCAi
JWx1LlYlbHhJJWx4TSVsdS4lcyIsCi0JCQkodW5zaWduZWQgbG9uZykgc3RhcnR0aW1lLnR2X3Nl
YywKLQkJCSh1bnNpZ25lZCBsb25nKSBzdC5zdF9kZXYsCi0JCQkodW5zaWduZWQgbG9uZykgc3Qu
c3RfaW5vLAotCQkJKHVuc2lnbmVkIGxvbmcpIHN0YXJ0dGltZS50dl91c2VjLAotCQkJZ2V0X2hv
c3RuYW1lKCkpOwotCW5ld2ZpbGUgPSBjb25jYXRlbmF0ZShuZXdkaXIsIFNUUihidWYpLCAoY2hh
ciAqKSAwKTsKLQlpZiAoKG1haWxfY29weV9zdGF0dXMgPSBtYWlsX2NvcHkoQ09QWV9BVFRSKHN0
YXRlLm1zZ19hdHRyKSwKLQkJCQkJICBkc3QsIGNvcHlfZmxhZ3MsICJcbiIsCi0JCQkJCSAgd2h5
KSkgPT0gMCkgewotCSAgICBpZiAoc2FuZV9saW5rKHRtcGZpbGUsIG5ld2ZpbGUpIDwgMAotCQkm
JiAoZXJybm8gIT0gRU5PRU5UCi0JCSAgICB8fCAobWFrZV9kaXJzKGN1cmRpciwgMDcwMCksIG1h
a2VfZGlycyhuZXdkaXIsIDA3MDApKSA8IDAKLQkJICAgIHx8IHNhbmVfbGluayh0bXBmaWxlLCBu
ZXdmaWxlKSA8IDApKSB7Ci0JCWRzYl9zaW1wbGUod2h5LCBtYm94X2RzbihlcnJubywgIjQuMi4w
IiksCi0JCQkgICAiY3JlYXRlIG1haWxkaXIgZmlsZSAlczogJW0iLCBuZXdmaWxlKTsKLQkJbWFp
bF9jb3B5X3N0YXR1cyA9IE1BSUxfQ09QWV9TVEFUX1dSSVRFOwotCSAgICB9Ci0JfQotCWlmICh1
bmxpbmsodG1wZmlsZSkgPCAwKQotCSAgICBtc2dfd2FybigicmVtb3ZlICVzOiAlbSIsIHRtcGZp
bGUpOworICAgICAgICAmJiAoZXJybm8gIT0gRU5PRU5UCisgICAgICAgICAgICB8fCBtYWtlX2Rp
cnModG1wZGlyLCAwNzAwKSA8IDAKKyAgICAgICAgICAgIHx8IChkc3QgPSB2c3RyZWFtX2ZvcGVu
KHRtcGZpbGUsIE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fRVhDTCwgMDYwMCkpID09IDApKSB7Cisg
ICAgICAgIGRzYl9zaW1wbGUod2h5LCBtYm94X2RzbihlcnJubywgIjQuMi4wIiksICJjcmVhdGUg
bWFpbGRpciBmaWxlICVzOiAlbSIsIHRtcGZpbGUpOworICAgIH0KKyAgICBlbHNlIGlmIChmc3Rh
dCh2c3RyZWFtX2ZpbGVubyhkc3QpLCAmc3QpIDwgMCkgeworICAgICAgICAvKgorICAgICAgICAg
KiBDb3Zlcml0eSAyMDA2MDQ6IGZpbGUgZGVzY3JpcHRvciBsZWFrIGluIGNvZGUgdGhhdCBuZXZl
ciBleGVjdXRlcy4KKyAgICAgICAgICogQ29kZSByZXBsYWNlZCBieSBtc2dfZmF0YWwoKSwgYXMg
aXQgaXMgbm90IHdvcnRod2hpbGUgdG8gY29udGludWUKKyAgICAgICAgICogYWZ0ZXIgYW4gaW1w
b3NzaWJsZSBlcnJvciBjb25kaXRpb24uCisgICAgICAgICAqLworICAgICAgICBtc2dfZmF0YWwo
ImZzdGF0ICVzOiAlbSIsIHRtcGZpbGUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdnN0
cmluZ19zcHJpbnRmKGJ1ZiwgIiVsdS5WJWx4SSVseE0lbHUuJXMiLAorICAgICAgICAgICAgICAg
ICh1bnNpZ25lZCBsb25nKSBzdGFydHRpbWUudHZfc2VjLAorICAgICAgICAgICAgICAgICh1bnNp
Z25lZCBsb25nKSBzdC5zdF9kZXYsCisgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpIHN0
LnN0X2lubywKKyAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykgc3RhcnR0aW1lLnR2X3Vz
ZWMsCisgICAgICAgICAgICAgICAgZ2V0X2hvc3RuYW1lKCkpOworICAgICAgICBuZXdmaWxlID0g
Y29uY2F0ZW5hdGUobmV3ZGlyLCBTVFIoYnVmKSwgKGNoYXIgKikgMCk7CisgICAgICAgIGJrcG5l
d2ZpbGUgPSBjb25jYXRlbmF0ZShTVFIoYnVmKSwgKGNoYXIgKikgMCk7IC8qIFdpbGwgbmVlZCBp
dCBsYXRlciwgaWYgd2UgTU9WRSB0byBvdGhlciBmb2xkZXJzLiAqLworCisgICAgICAgIGlmICgo
bWFpbF9jb3B5X3N0YXR1cyA9IG1haWxfY29weShDT1BZX0FUVFIoc3RhdGUubXNnX2F0dHIpLCBk
c3QsIGNvcHlfZmxhZ3MsICJcbiIsIHdoeSkpID09IDApIHsKKyAgICAgICAgICAgIC8qCisgICAg
ICAgICAgICAgKiBBZGQgYSAiLFM9PHNpemVvZmZpbGU+IiB0byB0aGUgbmV3bHkgd3JpdHRlbiBm
aWxlIGFjY29yZGluZyB0byB0aGUKKyAgICAgICAgICAgICAqIE1haWxkaXIrKyBzcGVjaWZpY2F0
aW9uczogaHR0cDovL3d3dy5pbnRlcjcuY29tL2NvdXJpZXJpbWFwL1JFQURNRS5tYWlsZGlycXVv
dGEuaHRtbAorICAgICAgICAgICAgICogVGhpcyBuZWVkcyBhIHN0YXQoMikgb2YgdGhlIHRlbXBm
aWxlIGFuZCBtb2RpZmljYXRpb24gb2YgdGhlCisgICAgICAgICAgICAgKiBuYW1lIG9mIHRoZSBm
aWxlLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoc3RhdCh0bXBmaWxlLCAmbWFp
bF9zdGF0KSA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKG4gIT0gMCkgeworICAgICAgICAg
ICAgICAgICAgICBzYXZlZF9zaXplICs9IChsb25nKSBtYWlsX3N0YXQuc3Rfc2l6ZTsKKyAgICAg
ICAgICAgICAgICAgICAgc2F2ZWRfY291bnQrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgaWYgKHZhcl92aXJ0X21haWxkaXJfZXh0ZW5kZWQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgLyogQXBwZW5kIHRoZSBzaXplIG9mIHRoZSBmaWxlIHRvIG5ld2ZpbGUuICovCisgICAg
ICAgICAgICAgICAgICAgIHZzdHJpbmdfc3ByaW50ZihidWYsICIsUz0lbGQiLCAobG9uZykgbWFp
bF9zdGF0LnN0X3NpemUpOworICAgICAgICAgICAgICAgICAgICBuZXdmaWxlID0gY29uY2F0ZW5h
dGUobmV3ZmlsZSwgU1RSKGJ1ZiksIChjaGFyICopIDApOworICAgICAgICAgICAgICAgICAgICBi
a3BuZXdmaWxlID0gY29uY2F0ZW5hdGUoYmtwbmV3ZmlsZSwgU1RSKGJ1ZiksIChjaGFyICopIDAp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoKKyAg
ICAgICAgICAgICAqIE5vdyB3ZSBoYXZlIHRoZSBtYWlsZGlyIHNpemUgaW4gc2F2ZWRfc2l6ZSwg
Y29tcGFyZSBpdCB0byB0aGUgbWF4CisgICAgICAgICAgICAgKiBxdW90YSB2YWx1ZSBhbmQgZXZl
bnR1YWxseSBpc3N1ZSBhIG1lc3NhZ2UgdGhhdCB3ZSd2ZSBvdmVyZHJhd24gaXQuCisgICAgICAg
ICAgICAgKi8KKyAgICAgICAgICAgIGlmIChzYXZlZF9zaXplID4gbikgeworICAgICAgICAgICAg
ICAgIG1haWxfY29weV9zdGF0dXMgPSBNQUlMX0NPUFlfU1RBVF9XUklURTsKKyAgICAgICAgICAg
ICAgICBpZiAoKChsb25nKSBtYWlsX3N0YXQuc3Rfc2l6ZSA+IG4pIHx8ICh2YXJfdmlydF9vdmVy
cXVvdGFfYm91bmNlKSkKKyAgICAgICAgICAgICAgICAgICAgZXJybm8gPSBFRkJJRzsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGVycm5vID0gRURRVU9UOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLyogTWFpbGRp
cmZpbHRlciBjb2RlIGJ5IHJrQGRlbWl1cmcubmV0LiAqLworICAgICAgICAgICAgICAgIGlmICh2
YXJfdmlydF9tYWlsZGlyX2ZpbHRlcikgeworICAgICAgICAgICAgICAgICAgICBpZiAobXNnX3Zl
cmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBtc2dfaW5mbygiJXM6IGxvYWRpbmcgRElD
VCBmaWx0ZXJzIiwgbXluYW1lKTsKKworI2RlZmluZSBTVFJFUVVBTCh4LHksbCkgKHN0cm5jYXNl
Y21wKCh4KSwgKHkpLCAobCkpID09IDAgJiYgKHkpW2xdID09IDApCisjZGVmaW5lIE1BSUxfQ09Q
WV9TVEFUX1JFSkVDVCAgKDE8PDMpCisjZGVmaW5lIE1BSUxfQ09QWV9TVEFUX0RJU0NBUkQgKDE8
PDQpCisKKyAgICAgICAgICAgICAgICAgICAgLyogUmVhZCBmaWx0ZXJzLiAqLworICAgICAgICAg
ICAgICAgICAgICBmaWx0ZXJuYW1lID0gY29uY2F0ZW5hdGUoInJlZ2V4cDoiLCB1c3JfYXR0ci5t
YWlsYm94LCAibWFpbGRpcmZpbHRlciIsIChjaGFyICopIDApOworICAgICAgICAgICAgICAgICAg
ICBzcWxtdGltZSA9IHNxbDJmaWxlKHN0cmNocihmaWx0ZXJuYW1lLCAnLycpLCBzdGF0ZS5tc2df
YXR0ci51c2VyKTsKKworICAgICAgICAgICAgICAgICAgICAvKiBDaGVjayBpZiB0aGlzIGZpbHRl
ciBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQgYXMgZGljdGlvbmFyeS4gKi8KKyAgICAgICAgICAgICAg
ICAgICAgaWYgKG1zZ192ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgbXNnX2luZm8o
IiVzOiBjaGVja2luZyBESUNUIGZpbHRlcnMgZm9yICVzIiwgbXluYW1lLCBmaWx0ZXJuYW1lKTsK
KworICAgICAgICAgICAgICAgICAgICBpZiAoKEZJTFRFUlMgPSBkaWN0X2hhbmRsZShmaWx0ZXJu
YW1lKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtc2dfdmVyYm9zZSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtc2dfaW5mbygiJXM6IERJQ1QgZmlsdGVyIGZvdW5kIiwg
bXluYW1lKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAqIElmIHdlIGhhdmUgbXRpbWUgaW4gb3VyIERJQ1Qgc3RydWN0dXJlLCBjaGVjayBp
dCBhZ2FpbnN0IHNxbG10aW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBhbmQgcmVsb2Fk
IHRoZSBmaWx0ZXJzIGlmIHRoZXkgZGlmZmVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICov
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRklMVEVSUy0+bXRpbWUgPiAwICYmIHNxbG10
aW1lID4gMCAmJiBGSUxURVJTLT5tdGltZSAhPSBzcWxtdGltZSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChtc2dfdmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbXNnX2luZm8oIiVzOiByZWxvYWRpbmcgRElDVCBmaWx0ZXJzIChkaWN0X210aW1lPSVs
ZCAhPSBzcWxfbXRpbWU9JWxkKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbXluYW1lLCBGSUxURVJTLT5tdGltZSwgc3FsbXRpbWUpOworCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGljdF91bnJlZ2lzdGVyKGZpbHRlcm5hbWUpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZJTFRFUlMgPSBkaWN0X29wZW4oZmlsdGVybmFtZSwgT19SRE9OTFks
IERJQ1RfRkxBR19MT0NLKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0X3JlZ2lz
dGVyKGZpbHRlcm5hbWUsIEZJTFRFUlMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJ
TFRFUlMtPm10aW1lID0gc3FsbXRpbWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoc3FsbXRpbWUgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogUmVnaXN0ZXJpbmcgZmlsdGVyIGFzIG5ldyBkaWN0aW9uYXJ5LiAqLworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChtc2dfdmVyYm9zZSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbXNnX2luZm8oIiVzOiBsb2FkaW5nIERJQ1QgZmlsdGVycyBmcm9tICVz
IChtdGltZT0lbGQpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
eW5hbWUsIGZpbHRlcm5hbWUsIHNxbG10aW1lKTsKKworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZJTFRFUlMgPSBkaWN0X29wZW4oZmlsdGVybmFtZSwgT19SRE9OTFksIERJQ1RfRkxBR19M
T0NLKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0X3JlZ2lzdGVyKGZpbHRlcm5h
bWUsIEZJTFRFUlMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTFRFUlMtPm10aW1l
ID0gc3FsbXRpbWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAoRklMVEVSUyAmJiAodG1wZmlsdGVyID0g
dnN0cmVhbV9mb3Blbih0bXBmaWxlLCBPX1JET05MWSwgMCkpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBmbHRzdHIgPSB2c3RyaW5nX2FsbG9jKDEwMjQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaGVhZGVyID0gKGNoYXIgKikgbWFsbG9jKDgxOTIpOyAvKiAhISFJTlNFQ1VSRSEhISBT
ZWUgNzE2OC1oYWNrIGJlbG93LiAqLworICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyWzBd
ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZzdHJpbmdfZ2V0X25vbmxfYm91bmQoZmx0
c3RyLCB0bXBmaWx0ZXIsIDEwMjMpOworICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyID0g
Y29uY2F0ZW5hdGUoaGVhZGVyLCBTVFIoZmx0c3RyKSwgKGNoYXIgKikgMCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHdoaWxlKCF2c3RyZWFtX2Zlb2YodG1wZmlsdGVyKSAmJiBmbHRzdHIt
PnZidWYuZGF0YVswXSAmJiBzdHJsZW4oaGVhZGVyKSA8IDcxNjggKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdnN0cmluZ19nZXRfbm9ubF9ib3VuZChmbHRzdHIsIHRtcGZpbHRlciwg
MTAyMyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR2x1ZSBtdWx0aWxpbmUgaGVh
ZGVycywgcmVwbGFjaW5nIGxlYWRpbmcgVEFCIHdpdGggc3BhY2UuICovCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1zZ192ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtc2dfaW5mbygiJXM6IGZsdHN0ciB2YWx1ZTogJXMiLCBteW5hbWUsIFNUUihmbHRz
dHIpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmbHRzdHItPnZidWYuZGF0
YVswXSA9PSAnICcgfHwgZmx0c3RyLT52YnVmLmRhdGFbMF0gPT0gJ1x0JyApIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsdHN0ci0+dmJ1Zi5kYXRhWzBdID09ICdcdCcp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbHRzdHItPnZidWYuZGF0YVsw
XSA9ICcgJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyID0gY29uY2F0
ZW5hdGUoaGVhZGVyLCBTVFIoZmx0c3RyKSwgKGNoYXIgKikgMCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIgPSBjb25jYXRlbmF0ZShoZWFkZXIsICJc
biIsIFNUUihmbHRzdHIpLCAoY2hhciAqKSAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChtc2dfdmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dfaW5mbygi
JXM6IGNoZWNraW5nIGZpbHRlciBDTUQgZm9yICVzIiwgbXluYW1lLCBmaWx0ZXJuYW1lKTsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2hlY2sgd2hvbGUgaGVhZGVyIHBhcnQgd2l0aCBy
ZWdleHAgbWFwcy4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodmFsdWUgPSBkaWN0
X2dldChGSUxURVJTLCBsb3dlcmNhc2UoaGVhZGVyKSkpICE9IDApIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobXNnX3ZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1zZ19pbmZvKCIlczogcHJlcGFyaW5nIGZpbHRlciBDTUQiLCBteW5hbWUpOworCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kX3RleHQgPSB2YWx1ZSArIHN0cmNzcG4odmFs
dWUsICIgXHQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRfbGVuID0gY21kX3Rl
eHQgLSB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKmNtZF90ZXh0
ICYmIElTU1BBQ0UoKmNtZF90ZXh0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y21kX3RleHQrKzsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtc2dfdmVyYm9z
ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnX2luZm8oIiVzOiBleGVjdXRp
bmcgZmlsdGVyIENNRCIsIG15bmFtZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoU1RSRVFVQUwodmFsdWUsICJSRUpFQ1QiLCBjbWRfbGVuKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobXNnX3ZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtc2dfaW5mbygiJXM6IGV4ZWN1dGluZyBmaWx0ZXIgQ01EIFJFSkVDVCIs
IG15bmFtZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbF9jb3B5X3N0
YXR1cyA9IE1BSUxfQ09QWV9TVEFUX1JFSkVDVDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdnN0cmluZ19zcHJpbnRmKHdoeS0+cmVhc29uLCAiJXMiLCBjbWRfdGV4dCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzYl9zaW1wbGUod2h5LCAiNS4wLjAiLCAiVXNl
ciBmaWx0ZXIgLSBSRUpFQ1QiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoU1RSRVFVQUwodmFsdWUsICJESVNDQVJEIiwg
Y21kX2xlbikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1zZ192ZXJi
b3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnX2luZm8oIiVzOiBl
eGVjdXRpbmcgZmlsdGVyIENNRCBESVNDQVJEIiwgbXluYW1lKTsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtYWlsX2NvcHlfc3RhdHVzID0gTUFJTF9DT1BZX1NUQVRfRElTQ0FS
RDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnN0cmluZ19zcHJpbnRmKHdoeS0+
cmVhc29uLCAiJXMiLCBjbWRfdGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRzYl9zaW1wbGUod2h5LCAiNS4wLjAiLCAiVXNlciBmaWx0ZXIgLSBESVNDQVJEIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHZhcl92aXJ0X21haWxkaXJfZXh0ZW5kZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKFNUUkVRVUFMKHZhbHVlLCAiTU9WRSIsIGNtZF9sZW4pKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobXNnX3ZlcmJvc2UpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnX2luZm8oIiVzOiBleGVjdXRpbmcgZmls
dGVyIENNRCBNT1ZFIiwgbXluYW1lKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RyY3V0KChjaGFyICopIGNtZF90ZXh0LCAiICIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RyY3V0KChjaGFyICopIGNtZF90ZXh0LCAiXHQiKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmN1dCgoY2hhciAqKSBjbWRfdGV4dCwg
Ii8iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmN1dCgoY2hhciAq
KSBjbWRfdGV4dCwgIi4uIik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICgqdmFyX3ZpcnRfbWFpbGRpcl9zdWZmaXggPT0gMCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5ld2ZpbGUgPSBjb25jYXRlbmF0ZSh1c3JfYXR0ci5tYWls
Ym94LCAoY2hhciAqKSAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2ZpbGUgPSBjb25jYXRlbmF0ZSh1c3JfYXR0
ci5tYWlsYm94LCB2YXJfdmlydF9tYWlsZGlyX3N1ZmZpeCwgKGNoYXIgKikgMCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChjbWRfdGV4dFswXSAhPSAnLicpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuZXdmaWxlID0gY29uY2F0ZW5hdGUobmV3ZmlsZSwgIi4i
LCAoY2hhciAqKSAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2RpciAgPSBjb25jYXRlbmF0ZShu
ZXdmaWxlLCBjbWRfdGV4dCwgIi8iLCAibmV3LyIsIChjaGFyICopIDApOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdG1wZGlyICA9IGNvbmNhdGVuYXRlKG5ld2ZpbGUsIGNt
ZF90ZXh0LCAiLyIsICJ0bXAvIiwgKGNoYXIgKikgMCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjdXJkaXIgID0gY29uY2F0ZW5hdGUobmV3ZmlsZSwgY21kX3RleHQsICIv
IiwgImN1ci8iLCAoY2hhciAqKSAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1kZmZpbGVuYW1lID0gY29uY2F0ZW5hdGUobmV3ZmlsZSwgY21kX3RleHQsICIvIiwgIm1h
aWxkaXJmb2xkZXIiLCAoY2hhciAqKSAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5ld2ZpbGUgPSBjb25jYXRlbmF0ZShuZXdmaWxlLCBjbWRfdGV4dCwgIi8iLCAibmV3
LyIsIGJrcG5ld2ZpbGUsIChjaGFyICopIDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKFNUUkVRVUFMKHZhbHVlLCAiTE9HIiwgY21kX2xlbikgfHwgU1RSRVFV
QUwodmFsdWUsICJXQVJOIiwgY21kX2xlbikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbXNnX3dhcm4oIiVzOiBoZWFkZXIgY2hlY2sgd2FybmluZzogJXMiLCBteW5hbWUsIGNt
ZF90ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoU1RSRVFVQUwodmFsdWUsICJJTkZPIiwgY21kX2xlbikpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnX2luZm8oIiVzOiBoZWFkZXIgY2hlY2sg
aW5mbzogJXMiLCBteW5hbWUsIGNtZF90ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobXNnX3ZlcmJvc2UpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ19pbmZvKCIlczogZXhpdGluZyBmaWx0ZXIg
Q01EIiwgbXluYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gLyogRW5kLU9mLUNoZWNr
ICovCisKKyAgICAgICAgICAgICAgICAgICAgICAgIG15ZnJlZShoZWFkZXIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgdnN0cmluZ19mcmVlKGZsdHN0cik7CisgICAgICAgICAgICAgICAgICAg
ICAgICB2c3RyZWFtX2ZjbG9zZSh0bXBmaWx0ZXIpOworICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgbXlmcmVlKGZpbHRlcm5hbWUpOworICAgICAgICAgICAgICAg
IH0gLyogRW5kLU9mLU1haWxkaXJmaWx0ZXIgKi8KKworICAgICAgICAgICAgICAgIC8qIERlbGl2
ZXIgdG8gY3VyZGlyLiAqLworICAgICAgICAgICAgICAgIGlmIChtYWlsX2NvcHlfc3RhdHVzID09
IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNhbmVfbGluayh0bXBmaWxlLCBuZXdmaWxl
KSA8IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIChlcnJubyAhPSBFTk9FTlQKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8fCAobWFrZV9kaXJzKGN1cmRpciwgMDcwMCksIG1ha2Vf
ZGlycyhuZXdkaXIsIDA3MDApLCBtYWtlX2RpcnModG1wZGlyLCAwNzAwKSkgPCAwCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfHwgc2FuZV9saW5rKHRtcGZpbGUsIG5ld2ZpbGUpIDwgMCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRzYl9zaW1wbGUod2h5LCBtYm94X2RzbihlcnJu
bywgIjQuMi4wIiksICJjcmVhdGUgbWFpbGRpciBmaWxlICVzOiAlbSIsIG5ld2ZpbGUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgbWFpbF9jb3B5X3N0YXR1cyA9IE1BSUxfQ09QWV9TVEFUX1dS
SVRFOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZh
cl92aXJ0X21haWxkaXJfZXh0ZW5kZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUo
JnRtKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2hlY2sgaWYgdGhlIHF1b3RhIGlu
IHRoZSBmaWxlIGlzIHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IG9uZSwgaWYgbm90LCBkZWxldGUg
dGhlIGZpbGUuICovCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplZmlsZSA9IHZzdHJlYW1f
Zm9wZW4oc2l6ZWZpbGVuYW1lLCBPX1JET05MWSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoc2l6ZWZpbGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcXVvdGEg
PSB2c3RyaW5nX2FsbG9jKDEyOCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnN0cmlu
Z19nZXRfbnVsbF9ib3VuZChmaWxlcXVvdGEsIHNpemVmaWxlLCAxMjcpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZzdHJlYW1fZmNsb3NlKHNpemVmaWxlKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoYXRvbCh2c3RyaW5nX2V4cG9ydChmaWxlcXVvdGEpKSAhPSBuKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxpbmsoc2l6ZWZpbGVuYW1lKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgLyogT3Bl
biBtYWlsZGlyc2l6ZSBmaWxlIHRvIGFwcGVuZCB0aGlzIHRyYW5zYWN0aW9uLiAqLworICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZWZpbGUgPSB2c3RyZWFtX2ZvcGVuKHNpemVmaWxlbmFtZSwg
T19XUk9OTFkgfCBPX0FQUEVORCwgMDY0MCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8q
IElmIHRoZSBvcGVuIGZhaWxzIChtYWlsZGlyc2l6ZSBkb2Vzbid0IGV4aXN0KSwgb3IgaXQncyB0
b28gbGFyZ2UsIG9yIHRvbyBvbGQsIG92ZXJ3cml0ZSBpdC4gKi8KKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmKCFzaXplZmlsZSB8fCAoc3RhdChzaXplZmlsZW5hbWUsICZzaXplZmlsZV9zdGF0
KSA8IDApIHx8IChzaXplZmlsZV9zdGF0LnN0X3NpemUgPiBTSVpFRklMRV9NQVgpIHx8IChzaXpl
ZmlsZV9zdGF0LnN0X210aW1lICsgMTUqNjAgPCB0bSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBJZiB0aGUgZmlsZSBleGlzdHMsIHNpemVmaWxlIGhhcyBiZWVuIG9wZW5lZCBh
Ym92ZSwgc28gY2xvc2UgaXQgZmlyc3QuICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHNpemVmaWxlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzdHJlYW1f
ZmNsb3NlKHNpemVmaWxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZWZp
bGUgPSB2c3RyZWFtX2ZvcGVuKHNpemVmaWxlbmFtZSwgT19XUk9OTFkgfCBPX1RSVU5DLCAwNjQw
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVmaWxlID0g
dnN0cmVhbV9mb3BlbihzaXplZmlsZW5hbWUsIE9fV1JPTkxZIHwgT19DUkVBVCwgMDY0MCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogSWYgdGhlIGNyZWF0aW9uIHdvcmtlZCwgd3JpdGUgdG8gdGhlIGZpbGUsIG90aGVyd2lz
ZSBqdXN0IGdpdmUgdXAuICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNpemVm
aWxlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzdHJlYW1fZnByaW50Zihz
aXplZmlsZSwgIiVsZFNcbiVsZCAlbGRcbiIsIG4sIHNhdmVkX3NpemUsIHNhdmVkX2NvdW50KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnN0cmVhbV9mY2xvc2Uoc2l6ZWZpbGUp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIFdlIG9wZW5lZCBtYWlsZGlyc2l6ZSwgc28gbGV0J3MganVzdCBhcHBlbmQgdGhp
cyB0cmFuc2FjdGlvbiBhbmQgY2xvc2UgaXQuICovCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdnN0cmVhbV9mcHJpbnRmKHNpemVmaWxlLCAiJWxkIDFcbiIsIChsb25nKSBtYWlsX3N0YXQu
c3Rfc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnN0cmVhbV9mY2xvc2Uoc2l6
ZWZpbGUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAg
ICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgICAgICogMSkgbWRmZmlsZW5hbWUgIT0gMCwg
c28gdGhlIG1haWxkaXJmaWx0ZXIgY29kZSB3ZW50IHRocm91Z2ggdGhlIE1PVkUgdG8gc3ViZm9s
ZGVyIHJ1bGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgKiAyKSBzdGF0KCkgZmFpbGVkLCBt
YXliZSB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdD8gVHJ5IHRvIGNyZWF0ZSBpdC4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1kZmZpbGVu
YW1lICYmIChzdGF0KG1kZmZpbGVuYW1lLCAmbWRmZmlsZV9zdGF0KSA8IDApKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWRmZmlsZSA9IHZzdHJlYW1fZm9wZW4obWRmZmlsZW5hbWUs
IE9fV1JPTkxZIHwgT19DUkVBVCwgMDYwMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG1kZmZpbGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnN0cmVhbV9m
Y2xvc2UobWRmZmlsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtc2dfd2FybigiQ2Fubm90IGNyZWF0ZSBtYWlsZGlyZm9sZGVyIGZpbGUgJyVzJzogJXMiLCBt
ZGZmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHVu
bGluayh0bXBmaWxlKSA8IDApCisgICAgICAgICAgICBtc2dfd2FybigicmVtb3ZlICVzOiAlbSIs
IHRtcGZpbGUpOwogICAgIH0KICAgICBzZXRfZXVnaWQodmFyX293bmVyX3VpZCwgdmFyX293bmVy
X2dpZCk7CiAKQEAgLTIyNCwzMSArOTU1LDY0IEBACiAgICAgICogbG9jYXRpb24gcG9zc2libHkg
dW5kZXIgdXNlciBjb250cm9sLgogICAgICAqLwogICAgIGlmIChtYWlsX2NvcHlfc3RhdHVzICYg
TUFJTF9DT1BZX1NUQVRfQ09SUlVQVCkgewotCWRlbGl2ZXJfc3RhdHVzID0gREVMX1NUQVRfREVG
RVI7Ci0gICAgfSBlbHNlIGlmIChtYWlsX2NvcHlfc3RhdHVzICE9IDApIHsKLQlpZiAoZXJybm8g
PT0gRUFDQ0VTKSB7Ci0JICAgIG1zZ193YXJuKCJtYWlsZGlyIGFjY2VzcyBwcm9ibGVtIGZvciBV
SUQvR0lEPSVsdS8lbHU6ICVzIiwKLQkJICAgICAobG9uZykgdXNyX2F0dHIudWlkLCAobG9uZykg
dXNyX2F0dHIuZ2lkLAotCQkgICAgIFNUUih3aHktPnJlYXNvbikpOwotCSAgICBtc2dfd2Fybigi
cGVyaGFwcyB5b3UgbmVlZCB0byBjcmVhdGUgdGhlIG1haWxkaXJzIGluIGFkdmFuY2UiKTsKLQl9
Ci0JdnN0cmluZ19zcHJpbnRmX3ByZXBlbmQod2h5LT5yZWFzb24sICJtYWlsZGlyIGRlbGl2ZXJ5
IGZhaWxlZDogIik7Ci0JZGVsaXZlcl9zdGF0dXMgPQotCSAgICAoU1RSKHdoeS0+c3RhdHVzKVsw
XSA9PSAnNCcgPwotCSAgICAgZGVmZXJfYXBwZW5kIDogYm91bmNlX2FwcGVuZCkKLQkgICAgKEJP
VU5DRV9GTEFHUyhzdGF0ZS5yZXF1ZXN0KSwKLQkgICAgIEJPVU5DRV9BVFRSKHN0YXRlLm1zZ19h
dHRyKSk7Ci0gICAgfSBlbHNlIHsKLQlkc2Jfc2ltcGxlKHdoeSwgIjIuMC4wIiwgImRlbGl2ZXJl
ZCB0byBtYWlsZGlyIik7Ci0JZGVsaXZlcl9zdGF0dXMgPSBzZW50KEJPVU5DRV9GTEFHUyhzdGF0
ZS5yZXF1ZXN0KSwKLQkJCSAgICAgIFNFTlRfQVRUUihzdGF0ZS5tc2dfYXR0cikpOworICAgICAg
ICBkZWxpdmVyX3N0YXR1cyA9IERFTF9TVEFUX0RFRkVSOworICAgIH0KKyAgICBlbHNlIGlmICht
YWlsX2NvcHlfc3RhdHVzICE9IDApIHsKKyAgICAgICAgaWYgKGVycm5vID09IEVBQ0NFUykgewor
ICAgICAgICAgICAgbXNnX3dhcm4oIm1haWxkaXIgYWNjZXNzIHByb2JsZW0gZm9yIFVJRC9HSUQ9
JWx1LyVsdTogJXMiLAorICAgICAgICAgICAgICAgICAgICAobG9uZykgdXNyX2F0dHIudWlkLCAo
bG9uZykgdXNyX2F0dHIuZ2lkLCBTVFIod2h5LT5yZWFzb24pKTsKKyAgICAgICAgICAgIG1zZ193
YXJuKCJwZXJoYXBzIHlvdSBuZWVkIHRvIGNyZWF0ZSB0aGUgbWFpbGRpcnMgaW4gYWR2YW5jZSIp
OworICAgICAgICB9CisKKyAgICAgICAgLyogU3VwcG9ydCBwZXItcmVjaXBpZW50IGJvdW5jZSBt
ZXNzYWdlcy4gKi8KKyAgICAgICAgY29uc3QgY2hhciAqbGltaXRfbWVzc2FnZTsKKyAgICAgICAg
aW50IGVycm5vcmVkID0gZXJybm87IC8qIFNlZW1zIGxpa2UgbWFpbF9hZGRyX2ZpbmQgcmVzZXRz
IGVycm5vIC4uLiAqLworCisgICAgICAgIGlmICgqdmFyX3ZpcnRfbWFpbGRpcl9saW1pdF9tZXNz
YWdlX21hcHMgIT0gMCAmJiAobGltaXRfbWVzc2FnZSA9IG1haWxfYWRkcl9maW5kKHZpcnR1YWxf
bWFpbGRpcl9saW1pdF9tZXNzYWdlX21hcHMsIHN0YXRlLm1zZ19hdHRyLnVzZXIsIChjaGFyICoq
KSBOVUxMKSkgIT0gMCkgeworICAgICAgICAgICAgZXJybm8gPSBlcnJub3JlZDsKKyAgICAgICAg
ICAgIGlmIChlcnJubyA9PSBFRkJJRykgeworICAgICAgICAgICAgICAgIGRzYl9zaW1wbGUod2h5
LCAiNS4yLjIiLCBsaW1pdF9tZXNzYWdlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChlcnJubyA9PSBFRFFVT1QpIHsKKyAgICAgICAgICAgICAgICBkc2Jfc2ltcGxlKHdoeSwgIjQu
Mi4yIiwgbGltaXRfbWVzc2FnZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBlcnJubyA9IGVycm5vcmVkOworICAgICAgICAgICAgaWYgKGVy
cm5vID09IEVGQklHKSB7CisgICAgICAgICAgICAgICAgZHNiX3NpbXBsZSh3aHksICI1LjIuMiIs
IHZhcl92aXJ0X21haWxkaXJfbGltaXRfbWVzc2FnZSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoZXJybm8gPT0gRURRVU9UKSB7CisgICAgICAgICAgICAgICAgZHNiX3NpbXBsZSh3
aHksICI0LjIuMiIsIHZhcl92aXJ0X21haWxkaXJfbGltaXRfbWVzc2FnZSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICB2c3RyaW5nX3NwcmludGZfcHJlcGVuZCh3aHktPnJl
YXNvbiwgIm1haWxkaXIgZGVsaXZlcnkgZmFpbGVkOiAiKTsKKyAgICAgICAgZGVsaXZlcl9zdGF0
dXMgPQorICAgICAgICAgICAgICAgIChTVFIod2h5LT5zdGF0dXMpWzBdID09ICc0JyA/IGRlZmVy
X2FwcGVuZCA6IGJvdW5jZV9hcHBlbmQpCisgICAgICAgICAgICAgICAgKEJPVU5DRV9GTEFHUyhz
dGF0ZS5yZXF1ZXN0KSwgQk9VTkNFX0FUVFIoc3RhdGUubXNnX2F0dHIpKTsKICAgICB9CisgICAg
ZWxzZSB7CisgICAgICAgIGRzYl9zaW1wbGUod2h5LCAiMi4wLjAiLCAiZGVsaXZlcmVkIHRvIG1h
aWxkaXIiKTsKKyAgICAgICAgZGVsaXZlcl9zdGF0dXMgPSBzZW50KEJPVU5DRV9GTEFHUyhzdGF0
ZS5yZXF1ZXN0KSwgU0VOVF9BVFRSKHN0YXRlLm1zZ19hdHRyKSk7CisgICAgfQorCiAgICAgdnN0
cmluZ19mcmVlKGJ1Zik7CisKICAgICBteWZyZWUobmV3ZGlyKTsKICAgICBteWZyZWUodG1wZGly
KTsKICAgICBteWZyZWUoY3VyZGlyKTsKKworICAgIGlmIChzaXplZmlsZW5hbWUpCisgICAgICAg
IG15ZnJlZShzaXplZmlsZW5hbWUpOworICAgIGlmIChtZGZmaWxlbmFtZSkKKyAgICAgICAgbXlm
cmVlKG1kZmZpbGVuYW1lKTsKKwogICAgIG15ZnJlZSh0bXBmaWxlKTsKICAgICBpZiAobmV3Zmls
ZSkKLQlteWZyZWUobmV3ZmlsZSk7CisgICAgICAgIG15ZnJlZShuZXdmaWxlKTsKKyAgICBpZiAo
YmtwbmV3ZmlsZSkKKyAgICAgICAgbXlmcmVlKGJrcG5ld2ZpbGUpOworCiAgICAgcmV0dXJuIChk
ZWxpdmVyX3N0YXR1cyk7CiB9CmRpZmYgLXVOciBwb3N0Zml4LTIuOS41Lm9yaWcvc3JjL3ZpcnR1
YWwvdmlydHVhbC5jIHBvc3RmaXgtMi45LjUvc3JjL3ZpcnR1YWwvdmlydHVhbC5jCi0tLSBwb3N0
Zml4LTIuOS41Lm9yaWcvc3JjL3ZpcnR1YWwvdmlydHVhbC5jCTIwMTEtMDItMTkgMDE6NDY6MDYu
MDAwMDAwMDAwICswMTAwCisrKyBwb3N0Zml4LTIuOS41L3NyYy92aXJ0dWFsL3ZpcnR1YWwuYwky
MDEyLTAzLTAyIDA4OjMwOjEyLjExMTUzNzAzMyArMDEwMApAQCAtMzM1LDEyICszMzUsMzAgQEAK
IGNoYXIgICAqdmFyX21haWxfc3Bvb2xfZGlyOwkJLyogWFhYIGRlcGVuZGVuY3kgZml4ICovCiBi
b29sICAgIHZhcl9zdHJpY3RfbWJveF9vd25lcjsKIAorY2hhciAgICp2YXJfdmlydF9tYWlsYm94
X2xpbWl0X21hcHM7Citib29sICAgIHZhcl92aXJ0X21haWxib3hfbGltaXRfaW5ib3g7Citib29s
ICAgIHZhcl92aXJ0X21haWxib3hfbGltaXRfb3ZlcnJpZGU7Citib29sICAgIHZhcl92aXJ0X21h
aWxkaXJfZXh0ZW5kZWQ7Citib29sICAgIHZhcl92aXJ0X292ZXJxdW90YV9ib3VuY2U7CitjaGFy
ICAgKnZhcl92aXJ0X21haWxkaXJfbGltaXRfbWVzc2FnZTsKK2NoYXIgICAqdmFyX3ZpcnRfbWFp
bGRpcl9saW1pdF9tZXNzYWdlX21hcHM7CitjaGFyICAgKnZhcl92aXJ0X21haWxkaXJfc3VmZml4
OworYm9vbCAgICB2YXJfdmlydF90cmFzaF9jb3VudDsKK2NoYXIgICAqdmFyX3ZpcnRfdHJhc2hf
bmFtZTsKK2Jvb2wgICAgdmFyX3ZpcnRfbWFpbGRpcl9maWx0ZXI7CitjaGFyICAgKnZhcl92aXJ0
X21haWxkaXJfZmlsdGVyX21hcHM7CisKKwogIC8qCiAgICogTWFwcGluZ3MuCiAgICovCiBNQVBT
ICAgKnZpcnR1YWxfbWFpbGJveF9tYXBzOwogTUFQUyAgICp2aXJ0dWFsX3VpZF9tYXBzOwogTUFQ
UyAgICp2aXJ0dWFsX2dpZF9tYXBzOworTUFQUyAgICp2aXJ0dWFsX21haWxib3hfbGltaXRfbWFw
czsKK01BUFMgICAqdmlydHVhbF9tYWlsZGlyX2xpbWl0X21lc3NhZ2VfbWFwczsKK01BUFMgICAq
dmlydHVhbF9tYWlsZGlyX2ZpbHRlcl9tYXBzOworCiAKICAvKgogICAqIEJpdCBtYXNrcy4KQEAg
LTQ1MCwxNSArNDY4LDI4IEBACiAgICAgICovCiAgICAgdmlydHVhbF9tYWlsYm94X21hcHMgPQog
CW1hcHNfY3JlYXRlKFZBUl9WSVJUX01BSUxCT1hfTUFQUywgdmFyX3ZpcnRfbWFpbGJveF9tYXBz
LAotCQkgICAgRElDVF9GTEFHX0xPQ0sgfCBESUNUX0ZMQUdfUEFSQU5PSUQpOworCQkgICAgRElD
VF9GTEFHX0xPQ0spOwogCiAgICAgdmlydHVhbF91aWRfbWFwcyA9CiAJbWFwc19jcmVhdGUoVkFS
X1ZJUlRfVUlEX01BUFMsIHZhcl92aXJ0X3VpZF9tYXBzLAotCQkgICAgRElDVF9GTEFHX0xPQ0sg
fCBESUNUX0ZMQUdfUEFSQU5PSUQpOworCQkgICAgRElDVF9GTEFHX0xPQ0spOwogCiAgICAgdmly
dHVhbF9naWRfbWFwcyA9CiAJbWFwc19jcmVhdGUoVkFSX1ZJUlRfR0lEX01BUFMsIHZhcl92aXJ0
X2dpZF9tYXBzLAotCQkgICAgRElDVF9GTEFHX0xPQ0sgfCBESUNUX0ZMQUdfUEFSQU5PSUQpOwor
CQkgICAgRElDVF9GTEFHX0xPQ0spOworCisgICAgdmlydHVhbF9tYWlsYm94X2xpbWl0X21hcHMg
PQorICAgICAgICBtYXBzX2NyZWF0ZShWQVJfVklSVF9NQUlMQk9YX0xJTUlUX01BUFMsIHZhcl92
aXJ0X21haWxib3hfbGltaXRfbWFwcywKKyAgICAgICAgICAgICAgICAgICAgRElDVF9GTEFHX0xP
Q0spOworCisgICAgdmlydHVhbF9tYWlsZGlyX2xpbWl0X21lc3NhZ2VfbWFwcyA9CisgICAgICAg
IG1hcHNfY3JlYXRlKFZBUl9WSVJUX01BSUxESVJfTElNSVRfTUVTU0FHRV9NQVBTLCB2YXJfdmly
dF9tYWlsZGlyX2xpbWl0X21lc3NhZ2VfbWFwcywKKyAgICAgICAgICAgICAgICAgICAgRElDVF9G
TEFHX0xPQ0spOworCisgICAgdmlydHVhbF9tYWlsZGlyX2ZpbHRlcl9tYXBzID0KKyAgICAgICAg
bWFwc19jcmVhdGUoVkFSX1ZJUlRfTUFJTERJUl9GSUxURVJfTUFQUywgdmFyX3ZpcnRfbWFpbGRp
cl9maWx0ZXJfbWFwcywKKyAgICAgICAgICAgICAgICAgICAgRElDVF9GTEFHX0xPQ0spOworCiAK
ICAgICB2aXJ0dWFsX21ib3hfbG9ja19tYXNrID0gbWJveF9sb2NrX21hc2sodmFyX3ZpcnRfbWFp
bGJveF9sb2NrKTsKIH0KQEAgLTUxMCwxMCArNTQxLDIyIEBACiAJVkFSX1ZJUlRfR0lEX01BUFMs
IERFRl9WSVJUX0dJRF9NQVBTLCAmdmFyX3ZpcnRfZ2lkX21hcHMsIDAsIDAsCiAJVkFSX1ZJUlRf
TUFJTEJPWF9CQVNFLCBERUZfVklSVF9NQUlMQk9YX0JBU0UsICZ2YXJfdmlydF9tYWlsYm94X2Jh
c2UsIDEsIDAsCiAJVkFSX1ZJUlRfTUFJTEJPWF9MT0NLLCBERUZfVklSVF9NQUlMQk9YX0xPQ0ss
ICZ2YXJfdmlydF9tYWlsYm94X2xvY2ssIDEsIDAsCisJVkFSX1ZJUlRfTUFJTEJPWF9MSU1JVF9N
QVBTLCBERUZfVklSVF9NQUlMQk9YX0xJTUlUX01BUFMsICZ2YXJfdmlydF9tYWlsYm94X2xpbWl0
X21hcHMsIDAsIDAsCisJVkFSX1ZJUlRfTUFJTERJUl9MSU1JVF9NRVNTQUdFLCBERUZfVklSVF9N
QUlMRElSX0xJTUlUX01FU1NBR0UsICZ2YXJfdmlydF9tYWlsZGlyX2xpbWl0X21lc3NhZ2UsIDEs
IDAsCisJVkFSX1ZJUlRfTUFJTERJUl9MSU1JVF9NRVNTQUdFX01BUFMsIERFRl9WSVJUX01BSUxE
SVJfTElNSVRfTUVTU0FHRV9NQVBTLCAmdmFyX3ZpcnRfbWFpbGRpcl9saW1pdF9tZXNzYWdlX21h
cHMsIDAsIDAsCisJVkFSX1ZJUlRfTUFJTERJUl9TVUZGSVgsIERFRl9WSVJUX01BSUxESVJfU1VG
RklYLCAmdmFyX3ZpcnRfbWFpbGRpcl9zdWZmaXgsIDAsIDAsCisJVkFSX1ZJUlRfVFJBU0hfTkFN
RSwgREVGX1ZJUlRfVFJBU0hfTkFNRSwgJnZhcl92aXJ0X3RyYXNoX25hbWUsIDAsIDAsCisJVkFS
X1ZJUlRfTUFJTERJUl9GSUxURVJfTUFQUywgREVGX1ZJUlRfTUFJTERJUl9GSUxURVJfTUFQUywg
JnZhcl92aXJ0X21haWxkaXJfZmlsdGVyX21hcHMsIDAsIDAsCiAJMCwKICAgICB9OwogICAgIHN0
YXRpYyBjb25zdCBDT05GSUdfQk9PTF9UQUJMRSBib29sX3RhYmxlW10gPSB7CiAJVkFSX1NUUklD
VF9NQk9YX09XTkVSLCBERUZfU1RSSUNUX01CT1hfT1dORVIsICZ2YXJfc3RyaWN0X21ib3hfb3du
ZXIsCisJVkFSX1ZJUlRfTUFJTEJPWF9MSU1JVF9JTkJPWCwgREVGX1ZJUlRfTUFJTEJPWF9MSU1J
VF9JTkJPWCwgJnZhcl92aXJ0X21haWxib3hfbGltaXRfaW5ib3gsCisJVkFSX1ZJUlRfTUFJTEJP
WF9MSU1JVF9PVkVSUklERSwgREVGX1ZJUlRfTUFJTEJPWF9MSU1JVF9PVkVSUklERSwgJnZhcl92
aXJ0X21haWxib3hfbGltaXRfb3ZlcnJpZGUsCisJVkFSX1ZJUlRfTUFJTERJUl9FWFRFTkRFRCwg
REVGX1ZJUlRfTUFJTERJUl9FWFRFTkRFRCwgJnZhcl92aXJ0X21haWxkaXJfZXh0ZW5kZWQsCisJ
VkFSX1ZJUlRfT1ZFUlFVT1RBX0JPVU5DRSwgREVGX1ZJUlRfT1ZFUlFVT1RBX0JPVU5DRSwgJnZh
cl92aXJ0X292ZXJxdW90YV9ib3VuY2UsCisJVkFSX1ZJUlRfVFJBU0hfQ09VTlQsIERFRl9WSVJU
X1RSQVNIX0NPVU5ULCAmdmFyX3ZpcnRfdHJhc2hfY291bnQsCisJVkFSX1ZJUlRfTUFJTERJUl9G
SUxURVIsIERFRl9WSVJUX01BSUxESVJfRklMVEVSLCAmdmFyX3ZpcnRfbWFpbGRpcl9maWx0ZXIs
CiAJMCwKICAgICB9OwogCkBAIC01MzAsNiArNTczLDcgQEAKIAkJICAgICAgIE1BSUxfU0VSVkVS
X1BSRV9JTklULCBwcmVfaW5pdCwKIAkJICAgICAgIE1BSUxfU0VSVkVSX1BPU1RfSU5JVCwgcG9z
dF9pbml0LAogCQkgICAgICAgTUFJTF9TRVJWRVJfUFJFX0FDQ0VQVCwgcHJlX2FjY2VwdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgTUFJTF9TRVJWRVJfQk9PTF9UQUJMRSwgYm9vbF90YWJsZSwK
IAkJICAgICAgIE1BSUxfU0VSVkVSX1BSSVZJTEVHRUQsCiAJCSAgICAgICAwKTsKIH0KZGlmZiAt
dU5yIHBvc3RmaXgtMi45LjUub3JpZy9zcmMvdmlydHVhbC92aXJ0dWFsLmggcG9zdGZpeC0yLjku
NS9zcmMvdmlydHVhbC92aXJ0dWFsLmgKLS0tIHBvc3RmaXgtMi45LjUub3JpZy9zcmMvdmlydHVh
bC92aXJ0dWFsLmgJMjAwNi0wMS0wOCAwMDo1OTo0Ny4wMDAwMDAwMDAgKzAxMDAKKysrIHBvc3Rm
aXgtMi45LjUvc3JjL3ZpcnR1YWwvdmlydHVhbC5oCTIwMTItMDMtMDIgMDg6MzA6MTIuMTExNTM3
MDMzICswMTAwCkBAIC0zNCw2ICszNCw5IEBACiBleHRlcm4gTUFQUyAqdmlydHVhbF9tYWlsYm94
X21hcHM7CiBleHRlcm4gTUFQUyAqdmlydHVhbF91aWRfbWFwczsKIGV4dGVybiBNQVBTICp2aXJ0
dWFsX2dpZF9tYXBzOworZXh0ZXJuIE1BUFMgKnZpcnR1YWxfbWFpbGJveF9saW1pdF9tYXBzOwor
ZXh0ZXJuIE1BUFMgKnZpcnR1YWxfbWFpbGRpcl9saW1pdF9tZXNzYWdlX21hcHM7CitleHRlcm4g
TUFQUyAqdmlydHVhbF9tYWlsZGlyX2ZpbHRlcl9tYXBzOwogCiAgLyoKICAgKiBVc2VyIGF0dHJp
YnV0ZXM6IHRoZXNlIGNvbnRyb2wgdGhlIHByaXZpbGVnZXMgZm9yIGRlbGl2ZXJ5IHRvIGV4dGVy
bmFsCg==
--e89a8fb1ed0690339604d8ba0895--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAA96eVtF8VYzKxEuQMJdzHKg=wnAdzWRB9wrNBkX_gdSmqWD4Q>