NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: bin/57953
The following reply was made to PR bin/57953; it has been noted by GNATS.
From: Attaullah <mdattaullahansari152%gmail.com@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc:
Subject: Re: bin/57953
Date: Thu, 16 Jan 2025 21:07:57 +0530
--000000000000bfefb1062bd49425
Content-Type: multipart/alternative; boundary="000000000000bfefb0062bd49423"
--000000000000bfefb0062bd49423
Content-Type: text/plain; charset="UTF-8"
I have developed a getnameinfo(1) utility as requested in this PR and am
submitting a patch for it.
This patch adds a new `getnameinfo(1)` utility, similar to
`getaddrinfo(1)`, which wraps the `getnameinfo(3)` C API. It supports
various options for resolving IP addresses and ports to hostnames and
service names.
I have tested the utility on NetBSD 10 with IPv4 and IPv6 addresses,
different port numbers, and various flag combinations. The patch was
generated using `git format-patch HEAD^` and is attached to this comment.
Thank you for your time and consideration.
--000000000000bfefb0062bd49423
Content-Type: text/html; charset="UTF-8"
<div dir="ltr"><div>I have developed a getnameinfo(1) utility as requested in this PR and am submitting a patch for it.</div><div><br></div><div>This patch adds a new `getnameinfo(1)` utility, similar to `getaddrinfo(1)`,
which wraps the `getnameinfo(3)` C API. It supports various options for
resolving IP addresses and ports to hostnames and service names.</div><div><br></div><div>I have tested the utility
on NetBSD 10 with IPv4 and IPv6 addresses, different port numbers, and
various flag combinations.
The patch was generated using `git format-patch HEAD^` and is attached to this comment.
Thank you for your time and consideration.</div></div>
--000000000000bfefb0062bd49423--
--000000000000bfefb1062bd49425
Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Add-getnameinfo-utility.patch"
Content-Disposition: attachment;
filename="0001-Add-getnameinfo-utility.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_m5zhrrg30>
X-Attachment-Id: f_m5zhrrg30
RnJvbSBlMTAyODE5YjhkOWQ4ZGU0ZmFlOWQ5Yjg3Y2E2NTE2ZTYwOTg2MmU4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBhdHRhdWxsYWggPG1kYXR0YXVsbGFoYW5zYXJpMTUyQGdtYWls
LmNvbT4KRGF0ZTogVGh1LCAxNiBKYW4gMjAyNSAyMDo0MzoyOSArMDUzMApTdWJqZWN0OiBbUEFU
Q0hdIEFkZCBnZXRuYW1laW5mbyB1dGlsaXR5CgotLS0KIGRpc3RyaWIvc2V0cy9saXN0cy9iYXNl
L21pICAgICAgICB8ICAgMSArCiBkaXN0cmliL3NldHMvbGlzdHMvZGVidWcvbWkgICAgICAgfCAg
IDEgKwogZGlzdHJpYi9zZXRzL2xpc3RzL21hbi9taSAgICAgICAgIHwgICAyICsKIGRpc3RyaWIv
c2V0cy9saXN0cy9tYW5odG1sL21pICAgICB8ICAgMSArCiB1c3IuYmluL01ha2VmaWxlICAgICAg
ICAgICAgICAgICAgfCAgIDIgKy0KIHVzci5iaW4vZ2V0bmFtZWluZm8vTWFrZWZpbGUgICAgICB8
ICAgOSArKwogdXNyLmJpbi9nZXRuYW1laW5mby9nZXRuYW1laW5mby4xIHwgMTM0ICsrKysrKysr
KysrKysrKysKIHVzci5iaW4vZ2V0bmFtZWluZm8vZ2V0bmFtZWluZm8uYyB8IDI1NCArKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgNDAzIGluc2VydGlvbnMo
KyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB1c3IuYmluL2dldG5hbWVpbmZv
L01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgdXNyLmJpbi9nZXRuYW1laW5mby9nZXRuYW1l
aW5mby4xCiBjcmVhdGUgbW9kZSAxMDA2NDQgdXNyLmJpbi9nZXRuYW1laW5mby9nZXRuYW1laW5m
by5jCgpkaWZmIC0tZ2l0IGEvZGlzdHJpYi9zZXRzL2xpc3RzL2Jhc2UvbWkgYi9kaXN0cmliL3Nl
dHMvbGlzdHMvYmFzZS9taQppbmRleCA5MDFmYzQ3NGExNzcuLmNhZDgwY2MwZjZlMCAxMDA2NDQK
LS0tIGEvZGlzdHJpYi9zZXRzL2xpc3RzL2Jhc2UvbWkKKysrIGIvZGlzdHJpYi9zZXRzL2xpc3Rz
L2Jhc2UvbWkKQEAgLTYyNCw2ICs2MjQsNyBAQAogLi91c3IvYmluL2dldGNvbmYJCQkJYmFzZS11
dGlsLWJpbgogLi91c3IvYmluL2dldGVudAkJCQliYXNlLXV0aWwtYmluCiAuL3Vzci9iaW4vZ2V0
ZXh0YXR0cgkJCQliYXNlLXV0aWwtYmluCisuL3Vzci9iaW4vZ2V0bmFtZWluZm8JCQkJYmFzZS1u
ZXR1dGlsLWJpbgogLi91c3IvYmluL2dldG9wdAkJCQliYXNlLXV0aWwtYmluCiAuL3Vzci9iaW4v
Z2tlcm1pdAkJCQliYXNlLW9ic29sZXRlCQlvYnNvbGV0ZQogLi91c3IvYmluL2dyZXAJCQkJCWJh
c2UtdXRpbC1iaW4KZGlmZiAtLWdpdCBhL2Rpc3RyaWIvc2V0cy9saXN0cy9kZWJ1Zy9taSBiL2Rp
c3RyaWIvc2V0cy9saXN0cy9kZWJ1Zy9taQppbmRleCA2NzQ1YzVlNjM1MjkuLmVmN2JhMGY3NmE0
ZiAxMDA2NDQKLS0tIGEvZGlzdHJpYi9zZXRzL2xpc3RzL2RlYnVnL21pCisrKyBiL2Rpc3RyaWIv
c2V0cy9saXN0cy9kZWJ1Zy9taQpAQCAtNTgzLDYgKzU4Myw3IEBACiAuL3Vzci9saWJkYXRhL2Rl
YnVnL3Vzci9iaW4vZ2V0Y29uZi5kZWJ1Zwljb21wLXV0aWwtZGVidWcJCWRlYnVnCiAuL3Vzci9s
aWJkYXRhL2RlYnVnL3Vzci9iaW4vZ2V0ZW50LmRlYnVnCWNvbXAtdXRpbC1kZWJ1ZwkJZGVidWcK
IC4vdXNyL2xpYmRhdGEvZGVidWcvdXNyL2Jpbi9nZXRleHRhdHRyLmRlYnVnCWNvbXAtdXRpbC1k
ZWJ1ZwkJZGVidWcKKy4vdXNyL2xpYmRhdGEvZGVidWcvdXNyL2Jpbi9nZXRuYW1laW5mby5kZWJ1
Zwljb21wLXV0aWwtZGVidWcJCWRlYnVnCiAuL3Vzci9saWJkYXRhL2RlYnVnL3Vzci9iaW4vZ2V0
b3B0LmRlYnVnCWNvbXAtdXRpbC1kZWJ1ZwkJZGVidWcKIC4vdXNyL2xpYmRhdGEvZGVidWcvdXNy
L2Jpbi9nZXR0ZXh0LmRlYnVnCWNvbXAtYy1kZWJ1ZwkJZGVidWcKIC4vdXNyL2xpYmRhdGEvZGVi
dWcvdXNyL2Jpbi9na2VybWl0LmRlYnVnCWNvbXAtb2Jzb2xldGUJCWRlYnVnLG9ic29sZXRlCmRp
ZmYgLS1naXQgYS9kaXN0cmliL3NldHMvbGlzdHMvbWFuL21pIGIvZGlzdHJpYi9zZXRzL2xpc3Rz
L21hbi9taQppbmRleCA0NzZkOWMxNTVhMWQuLjc4ODMyNWU2ODI5OCAxMDA2NDQKLS0tIGEvZGlz
dHJpYi9zZXRzL2xpc3RzL21hbi9taQorKysgYi9kaXN0cmliL3NldHMvbGlzdHMvbWFuL21pCkBA
IC0yMDEsNiArMjAxLDcgQEAKIC4vdXNyL3NoYXJlL21hbi9jYXQxL2dldGVudC4wCQkJbWFuLXV0
aWwtY2F0bWFuCQkuY2F0CiAuL3Vzci9zaGFyZS9tYW4vY2F0MS9nZXRleHRhdHRyLjAJCW1hbi11
dGlsLWNhdG1hbgkJLmNhdAogLi91c3Ivc2hhcmUvbWFuL2NhdDEvZ2V0ZmFjbC4wCQkJbWFuLXV0
aWwtY2F0bWFuCQkuY2F0CisuL3Vzci9zaGFyZS9tYW4vY2F0MS9nZXRuYW1laW5mby4wCQltYW4t
bmV0dXRpbC1jYXRtYW4JLmNhdAogLi91c3Ivc2hhcmUvbWFuL2NhdDEvZ2V0b3B0LjAJCQltYW4t
dXRpbC1jYXRtYW4JCS5jYXQKIC4vdXNyL3NoYXJlL21hbi9jYXQxL2dldHRleHQuMAkJCW1hbi1s
b2NhbGUtY2F0bWFuCS5jYXQKIC4vdXNyL3NoYXJlL21hbi9jYXQxL2drZXJtaXQuMAkJCW1hbi1v
YnNvbGV0ZQkJLmNhdCxvYnNvbGV0ZQpAQCAtMzc2Nyw2ICszNzY4LDcgQEAKIC4vdXNyL3NoYXJl
L21hbi9tYW4xL2dldGVudC4xCQkJbWFuLXV0aWwtbWFuCQkubWFuCiAuL3Vzci9zaGFyZS9tYW4v
bWFuMS9nZXRleHRhdHRyLjEJCW1hbi11dGlsLW1hbgkJLm1hbgogLi91c3Ivc2hhcmUvbWFuL21h
bjEvZ2V0ZmFjbC4xCQkJbWFuLXV0aWwtbWFuCQkubWFuCisuL3Vzci9zaGFyZS9tYW4vbWFuMS9n
ZXRuYW1laW5mby4xCQltYW4tbmV0dXRpbC1tYW4JCS5tYW4KIC4vdXNyL3NoYXJlL21hbi9tYW4x
L2dldG9wdC4xCQkJbWFuLXV0aWwtbWFuCQkubWFuCiAuL3Vzci9zaGFyZS9tYW4vbWFuMS9nZXR0
ZXh0LjEJCQltYW4tbG9jYWxlLW1hbgkJLm1hbgogLi91c3Ivc2hhcmUvbWFuL21hbjEvZ2tlcm1p
dC4xCQkJbWFuLW9ic29sZXRlCQkubWFuLG9ic29sZXRlCmRpZmYgLS1naXQgYS9kaXN0cmliL3Nl
dHMvbGlzdHMvbWFuaHRtbC9taSBiL2Rpc3RyaWIvc2V0cy9saXN0cy9tYW5odG1sL21pCmluZGV4
IDYwOGZkYzNmNDRkMC4uMGFjYTJmNGRiMDRlIDEwMDY0NAotLS0gYS9kaXN0cmliL3NldHMvbGlz
dHMvbWFuaHRtbC9taQorKysgYi9kaXN0cmliL3NldHMvbGlzdHMvbWFuaHRtbC9taQpAQCAtMTYx
LDYgKzE2MSw3IEBACiAuL3Vzci9zaGFyZS9tYW4vaHRtbDEvZ2V0ZW50Lmh0bWwJCW1hbi11dGls
LWh0bWxtYW4JaHRtbAogLi91c3Ivc2hhcmUvbWFuL2h0bWwxL2dldGV4dGF0dHIuaHRtbAkJbWFu
LXV0aWwtaHRtbG1hbglodG1sCiAuL3Vzci9zaGFyZS9tYW4vaHRtbDEvZ2V0ZmFjbC5odG1sCQlt
YW4tdXRpbC1odG1sbWFuCWh0bWwKKy4vdXNyL3NoYXJlL21hbi9odG1sMS9nZXRuYW1laW5mby5o
dG1sCQltYW4tdXRpbC1odG1sbWFuCWh0bWwKIC4vdXNyL3NoYXJlL21hbi9odG1sMS9nZXRvcHQu
aHRtbAkJbWFuLXV0aWwtaHRtbG1hbglodG1sCiAuL3Vzci9zaGFyZS9tYW4vaHRtbDEvZ2V0dGV4
dC5odG1sCQltYW4tbG9jYWxlLWh0bWxtYW4JaHRtbAogLi91c3Ivc2hhcmUvbWFuL2h0bWwxL2dr
ZXJtaXQuaHRtbAkJbWFuLW9ic29sZXRlCQlodG1sLG9ic29sZXRlCmRpZmYgLS1naXQgYS91c3Iu
YmluL01ha2VmaWxlIGIvdXNyLmJpbi9NYWtlZmlsZQppbmRleCAyMzBiZmQ3YTgzMGUuLjdhMWY2
NmYyNWMzOSAxMDA2NDQKLS0tIGEvdXNyLmJpbi9NYWtlZmlsZQorKysgYi91c3IuYmluL01ha2Vm
aWxlCkBAIC0xMiw3ICsxMiw3IEBAIFNVQkRJUj0gYWlvbWl4ZXIgYXBwbHkgYXNhIGF0IGF1ZGlv
IGF1ZGlvY2ZnIFwKIAllamVjdCBlbGYyYW91dCBlbGYyZWNvZmYgZW52IGVycm9yIGV4cGFuZCBl
eHRhdHRyIFwKIAlmYWxzZSBmZGZvcm1hdCBmZ2VuIGZpbmNvcmUgZmluZCBmaW5nZXIgZmxvY2sg
Zm10IGZvbGQgZnByIGZyb20gXAogCWZzcGxpdCBmc3RhdCBmdHAgZ2NvcmUgZ2VuYXNzeW0gZ2Vu
Y2F0IGdldGFkZHJpbmZvIGdldGNvbmYgZ2V0ZW50IFwKLQlnZXRvcHQgZ2V0dGV4dCBncHJvZiBc
CisJZ2V0bmFtZWluZm8gZ2V0b3B0IGdldHRleHQgZ3Byb2YgXAogCWhlYWQgaGV4ZHVtcCBpY29u
diBpZCBpbmRlbnQgaW5mb2NtcCBpbm5ldGdyIGlwY3JtIGlwY3Mgam9pbiBqb3QgXAogCWtkdW1w
IGt0cmFjZSBrdHJ1c3MgbGFtIGxhc3QgbGFzdGNvbW0gbGRkIGxlYXZlIFwKIAlsb2NhbGUgbG9j
YXRlIGxvY2sgbG9nZ2VyIGxvZ2luIGxvZ25hbWUgbG9vayBsb3JkZXIgbTQgXApkaWZmIC0tZ2l0
IGEvdXNyLmJpbi9nZXRuYW1laW5mby9NYWtlZmlsZSBiL3Vzci5iaW4vZ2V0bmFtZWluZm8vTWFr
ZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yZjdjYTdlYWZl
NjEKLS0tIC9kZXYvbnVsbAorKysgYi91c3IuYmluL2dldG5hbWVpbmZvL01ha2VmaWxlCkBAIC0w
LDAgKzEsOSBAQAorIyAkTmV0QlNEOiBNYWtlZmlsZSx2IDEuMCAyMDI1LzAxLzE2IDAzOjEzOjE0
IGF0dGF1bGxhaCBFeHAgJAorCisuaW5jbHVkZSA8YnNkLm93bi5taz4KKworUFJPRwkJPSBnZXRu
YW1laW5mbworCitXQVJOUwkJPSA1CisKKy5pbmNsdWRlIDxic2QucHJvZy5taz4KZGlmZiAtLWdp
dCBhL3Vzci5iaW4vZ2V0bmFtZWluZm8vZ2V0bmFtZWluZm8uMSBiL3Vzci5iaW4vZ2V0bmFtZWlu
Zm8vZ2V0bmFtZWluZm8uMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjlhNGY5NWYxZWM1ZAotLS0gL2Rldi9udWxsCisrKyBiL3Vzci5iaW4vZ2V0bmFtZWluZm8vZ2V0
bmFtZWluZm8uMQpAQCAtMCwwICsxLDEzNCBAQAorLlwiICROZXRCU0Q6IGdldG5hbWVpbmZvLjEs
diAxLjAgMjAyNS8wMS8xNiAwMTo1MjozMCBhdHRhdWxsYWggRXhwICQKKy5cIgorLlwiIENvcHly
aWdodCAoYykgMjAyNSBUaGUgTmV0QlNEIEZvdW5kYXRpb24sIEluYy4KKy5cIiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLlwiCisuXCIgVGhpcyBkb2N1bWVudGF0aW9uIGlzIGRlcml2ZWQgZnJvbSB0
ZXh0IGNvbnRyaWJ1dGVkIHRvIFRoZSBOZXRCU0QKKy5cIiBGb3VuZGF0aW9uIGJ5IEF0dGF1bGxh
aCBBbnNhcmkuCisuXCIKKy5cIiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy5cIiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy5cIiBhcmUgbWV0
OgorLlwiIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisuXCIgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLlwiIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisuXCIgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorLlwiICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisuXCIKKy5cIiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBORVRCU0QgRk9VTkRBVElPTiwgSU5DLiBBTkQgQ09OVFJJQlVUT1JTCisu
XCIgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVECisuXCIgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy5cIiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEZPVU5EQVRJT04gT1IgQ09O
VFJJQlVUT1JTCisuXCIgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorLlwiIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisuXCIgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisuXCIgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKy5cIiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorLlwiIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFCisuXCIgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisuXCIKKy5E
ZCBKYW51YXJ5IDE2LCAyMDI1CisuRHQgR0VUTkFNRUlORk8gMQorLk9zCisuU2ggTkFNRQorLk5t
IGdldG5hbWVpbmZvCisuTmQgcmVzb2x2ZSBJUCBhZGRyZXNzZXMgYW5kIHBvcnRzIHRvIGhvc3Qg
YW5kIHNlcnZpY2UgbmFtZXMKKy5TaCBTWU5PUFNJUworLk5tCisuT3AgRmwgNDZydWZuTkhTCisu
T3AgRmwgcCBBciBwb3J0CisuQXIgSVAtYWRkcmVzcworLlNoIERFU0NSSVBUSU9OCitUaGUKKy5O
bQordXRpbGl0eSByZXNvbHZlcyBJUCBhZGRyZXNzZXMgYW5kIHBvcnQgbnVtYmVycyB0byBob3N0
bmFtZXMgYW5kIHNlcnZpY2UgbmFtZXMKK2FzIGlmIHdpdGggdGhlCisuWHIgZ2V0bmFtZWluZm8g
MworbGlicmFyeSByb3V0aW5lIGFuZCBmb3JtYXRzIHRoZW0gdG8gc3RhbmRhcmQgb3V0cHV0Lgor
LlBwCitUaGUgb3V0cHV0IGlzIGEgc2luZ2xlIGxpbmUgb2Ygc3BhY2Utc2VwYXJhdGVkIGZpZWxk
czoKKy5QcAorLkRsIGhvc3RuYW1lIHNlcnZpY2UKKy5QcAorRGVwZW5kaW5nIG9uIHRoZSBmbGFn
cyBzcGVjaWZpZWQsIHRoZSBvdXRwdXQgbWF5IGNvbnNpc3Qgb25seSBvZiB0aGUgaG9zdG5hbWUK
K29yIHNlcnZpY2UgbmFtZSwgb3IgdGhlaXIgbnVtZXJpYyByZXByZXNlbnRhdGlvbnMuIEJ5IGRl
ZmF1bHQsIGJvdGggYXJlIHNob3duLgorLlBwCitBbHRob3VnaAorLk5tCittYXkgcXVlcnkgdGhl
IEROUyBvciBvdGhlciBzb3VyY2VzIGZvciBuYW1lIHJlc29sdXRpb24gZGVwZW5kaW5nIG9uIHRo
ZSBzeXN0ZW0ncworLlhyIG5zc3dpdGNoLmNvbmYgNQorY29uZmlndXJhdGlvbiwgaXQgaXMgbm90
IGludGVuZGVkIHRvIHJlcGxhY2UgRE5TLXNwZWNpZmljIHRvb2xzIGxpa2UKKy5YciBkaWcgMSAu
CisuUHAKK1RoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgYXZhaWxhYmxlOgorLkJsIC10YWcgLXdp
ZHRoIERzCisuSXQgRmwgNAorUmVzdHJpY3QgdGhlIGxvb2t1cCB0byBJUHY0IGFkZHJlc3NlcyBv
bmx5LgorLkl0IEZsIDYKK1Jlc3RyaWN0IHRoZSBsb29rdXAgdG8gSVB2NiBhZGRyZXNzZXMgb25s
eS4KKy5JdCBGbCByCitFbnN1cmUgdGhhdCBhIG5hbWUgaXMgcmV0dXJuZWQuIElmIG5vIG5hbWUg
Y2FuIGJlIHJlc29sdmVkLCBhbiBlcnJvciBpcyByZXBvcnRlZC4gVGhpcyBpcyBlcXVpdmFsZW50
IHRvIHRoZQorLkR2IE5JX05BTUVSRVFECitmbGFnIGluCisuWHIgZ2V0bmFtZWluZm8gMyAuCisu
SXQgRmwgdQorVXNlIFVEUCBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IFRDUC4gVGhpcyBpcyBlcXVp
dmFsZW50IHRvIHRoZQorLkR2IE5JX0RHUkFNCitmbGFnIGluCisuWHIgZ2V0bmFtZWluZm8gMyAu
CisuSXQgRmwgZgorU3VwcHJlc3MgdGhlIGZ1bGx5LXF1YWxpZmllZCBkb21haW4gbmFtZSAoRlFE
TikuIFRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUKKy5EdiBOSV9OT0ZRRE4KK2ZsYWcgaW4KKy5Y
ciBnZXRuYW1laW5mbyAzIC4KKy5JdCBGbCBuCitEaXNwbGF5IHRoZSBudW1lcmljIGhvc3QgYWRk
cmVzcyBpbnN0ZWFkIG9mIHJlc29sdmluZyB0byBhIGhvc3RuYW1lLiBUaGlzIGlzIGVxdWl2YWxl
bnQgdG8gdGhlCisuRHYgTklfTlVNRVJJQ0hPU1QKK2ZsYWcgaW4KKy5YciBnZXRuYW1laW5mbyAz
IC4KKy5JdCBGbCBOCitEaXNwbGF5IHRoZSBudW1lcmljIHNlcnZpY2UgbmFtZSBpbnN0ZWFkIG9m
IHJlc29sdmluZyB0byBhIHNlcnZpY2UgbmFtZS4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZQor
LkR2IE5JX05VTUVSSUNTRVJWCitmbGFnIGluCisuWHIgZ2V0bmFtZWluZm8gMyAuCisuSXQgRmwg
SAorRGlzcGxheSBvbmx5IHRoZSBob3N0bmFtZSwgb21pdHRpbmcgdGhlIHNlcnZpY2UgbmFtZS4K
Ky5JdCBGbCBTCitEaXNwbGF5IG9ubHkgdGhlIHNlcnZpY2UgbmFtZSwgb21pdHRpbmcgdGhlIGhv
c3RuYW1lLgorLkl0IEZsIHAgQXIgcG9ydAorU3BlY2lmeSB0aGUgcG9ydCBudW1iZXIgdG8gYmUg
dXNlZCBpbiB0aGUgbG9va3VwLgorLkVsCisuU2ggRVhJVCBTVEFUVVMKKy5FeCAtc3RkIGdldG5h
bWVpbmZvCisuU2ggRVhBTVBMRVMKK0xvb2sgdXAgdGhlIGhvc3RuYW1lIGFuZCBzZXJ2aWNlIG5h
bWUgZm9yIGFuIElQdjQgYWRkcmVzczoKKy5CZCAtbGl0ZXJhbCAtb2Zmc2V0IGluZGVudAorJCBn
ZXRuYW1laW5mbyAtNCAtcCA4MCA5My4xODQuMjE2LjM0CitleGFtcGxlLmNvbSBodHRwCisuRWQK
Ky5QcAorTG9vayB1cCB0aGUgbnVtZXJpYyBob3N0IGFuZCBzZXJ2aWNlIGZvciBhbiBJUHY2IGFk
ZHJlc3M6CisuQmQgLWxpdGVyYWwgLW9mZnNldCBpbmRlbnQKKyQgZ2V0bmFtZWluZm8gLW5OIC1w
IDQ0MyAyNjA2OjI4MDA6MjIwOjE6MjQ4OjE4OTM6MjVjODoxOTQ2CisyNjA2OjI4MDA6MjIwOjE6
MjQ4OjE4OTM6MjVjODoxOTQ2IDQ0MworLkVkCisuUHAKK1Jlc29sdmUgYW4gYWRkcmVzcyB0byBp
dHMgaG9zdG5hbWUgYnV0IHN1cHByZXNzIHRoZSBzZXJ2aWNlIG5hbWU6CisuQmQgLWxpdGVyYWwg
LW9mZnNldCBpbmRlbnQKKyQgZ2V0bmFtZWluZm8gLUggLXAgMjIgMTkyLjAuMi4xCitleGFtcGxl
LWhvc3QKKy5FZAorLlBwCitSZXNvbHZlIGEgaG9zdG5hbWUgYW5kIHNlcnZpY2UgZm9yIGEgVURQ
IGNvbm5lY3Rpb246CisuQmQgLWxpdGVyYWwgLW9mZnNldCBpbmRlbnQKKyQgZ2V0bmFtZWluZm8g
LXUgLXAgNTMgMTk4LjUxLjEwMC4yCitleGFtcGxlLWRucy1zZXJ2ZXIgZG9tYWluCisuRWQKKy5T
aCBTRUUgQUxTTworLlhyIGRpZyAxICwKKy5YciBnZXRhZGRyaW5mbyAxICwKKy5YciBnZXRhZGRy
aW5mbyAzICwKKy5YciBnZXRuYW1laW5mbyAzICwKKy5YciBpbmV0IDMgLAorLlhyIGhvc3RzIDUg
LAorLlhyIG5zc3dpdGNoLmNvbmYgNQpkaWZmIC0tZ2l0IGEvdXNyLmJpbi9nZXRuYW1laW5mby9n
ZXRuYW1laW5mby5jIGIvdXNyLmJpbi9nZXRuYW1laW5mby9nZXRuYW1laW5mby5jCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWZjYzJhZjc0ZjYxCi0tLSAvZGV2L251
bGwKKysrIGIvdXNyLmJpbi9nZXRuYW1laW5mby9nZXRuYW1laW5mby5jCkBAIC0wLDAgKzEsMjU0
IEBACisvKiAkTmV0QlNEOiBnZXRuYW1laW5mby5jLHYgMS4xIDIwMjUvMDEvMTYgMDI6NTM6MTkg
YXR0YXVsbGFoIEV4cCAkICovCisKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjUgVGhlIE5ldEJT
RCBGb3VuZGF0aW9uLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
Y29kZSBpcyBkZXJpdmVkIGZyb20gc29mdHdhcmUgY29udHJpYnV0ZWQgdG8gVGhlIE5ldEJTRCBG
b3VuZGF0aW9uCisgKiBieSBBdHRhdWxsYWggQW5zYXJpLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4KKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE5FVEJTRCBGT1VOREFUSU9OLCBJTkMuIEFORCBD
T05UUklCVVRPUlMKKyAqIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgRk9VTkRB
VElPTiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsKKyAqIE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLAorICogV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IKKyAqIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYKKyAqIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KKyNpZm5kZWYgbGludAorX19SQ1NJRCgiJE5ldEJT
RDogZ2V0bmFtZWluZm8uYyx2IDEuMSAyMDI1LzAxLzE2IDAyOjUzOjE5IGF0dGF1bGxhaCBFeHAg
JCIpOworI2VuZGlmCisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc29j
a2V0Lmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPGFycGEvaW5ldC5oPgor
CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8ZXJyLmg+CisjaW5jbHVkZSA8ZXJybm8u
aD4KKyNpbmNsdWRlIDxuZXRkYi5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0
ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKy8qCisg
KiBnZXRuYW1laW5mbzogUmVzb2x2ZSBJUCBhZGRyZXNzZXMgYW5kIHBvcnRzIHRvIGhvc3RuYW1l
cyBhbmQgc2VydmljZSBuYW1lcywKKyAqIHNpbWlsYXIgdG8gdGhlIGdldG5hbWVpbmZvIGZ1bmN0
aW9uIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LgorICoKKyAqIHVzYWdlOgorICogICBnZXRuYW1l
aW5mbyBbLTQ2cnVmbk5IU10gWy1wIHBvcnRdIDxJUC1hZGRyZXNzPgorICoKKyAqICAgLTQ6IFJl
c3RyaWN0IGxvb2t1cCB0byBJUHY0IGFkZHJlc3NlcyBvbmx5CisgKiAgIC02OiBSZXN0cmljdCBs
b29rdXAgdG8gSVB2NiBhZGRyZXNzZXMgb25seQorICogICAtcjogRW5zdXJlIHRoYXQgdGhlIG5h
bWUgaXMgcmV0dXJuZWQgKGVycm9yIGlmIG5vIG5hbWUgaXMgZm91bmQpCisgKiAgIC11OiBVc2Ug
VURQIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgVENQCisgKiAgIC1mOiBTdXBwcmVzcyB0aGUgZnVs
bHktcXVhbGlmaWVkIGRvbWFpbiBuYW1lIChGUUROKQorICogICAtbjogRGlzcGxheSB0aGUgbnVt
ZXJpYyBob3N0IGFkZHJlc3MgaW5zdGVhZCBvZiB0aGUgaG9zdG5hbWUKKyAqICAgLU46IERpc3Bs
YXkgdGhlIG51bWVyaWMgc2VydmljZSBuYW1lIGluc3RlYWQgb2YgdGhlIHNlcnZpY2UgbmFtZQor
ICogICAtSDogRGlzcGxheSBvbmx5IHRoZSBob3N0bmFtZSwgb21pdHRpbmcgdGhlIHNlcnZpY2Ug
bmFtZQorICogICAtUzogRGlzcGxheSBvbmx5IHRoZSBzZXJ2aWNlIG5hbWUsIG9taXR0aW5nIHRo
ZSBob3N0bmFtZQorICogICAtcDogU3BlY2lmeSB0aGUgcG9ydCBudW1iZXIgdG8gYmUgdXNlZCBp
biB0aGUgbG9va3VwCisgKi8KKworCitzdGF0aWMgdm9pZAl1c2FnZSh2b2lkKSBfX2RlYWQ7Citz
dGF0aWMgdm9pZAlwcmludF9yZXN1bHQoaW50LCBpbnQsIGNoYXIgKiwgY2hhciAqKTsKK3N0YXRp
YyBpbnQJdmFsaWRhdGVfcG9ydChjb25zdCBjaGFyICopOworc3RhdGljIGludAlnZXRfaXBfdmVy
c2lvbihjb25zdCBjaGFyICopOworCitpbnQKK21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQor
eworCWludCBob3N0bGVuID0gTklfTUFYSE9TVCwgc2VydmxlbiA9IE5JX01BWFNFUlY7CisJY2hh
ciBob3N0bmFtZVtob3N0bGVuXSwgc2VydmljZVtzZXJ2bGVuXTsKKwlpbnQgaG9zdG5hbWVfb25s
eSA9IDAsIHNlcnZpY2Vfb25seSA9IDA7CisJaW50IGZhbWlseSA9IEFGX1VOU1BFQzsKKwlpbnQg
ZmxhZ3MgPSAwOworCWNoYXIgKmFkZHJlc3MgPSBOVUxMOyAKKwlpbnQgcG9ydCA9IDA7CisJc3Ry
dWN0IHNvY2thZGRyX3N0b3JhZ2UgYWRkcl9zdDsKKwlpbnQgYWRkcl9zdGxlbjsKKwlpbnQgY2g7
CisJaW50IGVycm9yOworCisJc2V0cHJvZ25hbWUoYXJndlswXSk7CisKKwl3aGlsZSAoKGNoID0g
Z2V0b3B0KGFyZ2MsIGFyZ3YsICI0NnJ1Zm5OSFNwOiIpKSAhPSAtMSkgeworCQlzd2l0Y2ggKGNo
KSB7CisJCWNhc2UgJzQnOgorCQkJaWYgKGZhbWlseSAhPSBBRl9VTlNQRUMpIHsKKwkJCQl3YXJu
eCgiT3B0aW9ucyAtNCBhbmQgLTYgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiKTsKKwkJCQl1c2Fn
ZSgpOworCQkJfQorCQkJZmFtaWx5ID0gQUZfSU5FVDsKKwkJCWJyZWFrOworCQljYXNlICc2JzoK
KwkJCWlmIChmYW1pbHkgIT0gQUZfVU5TUEVDKSB7CisJCQkJd2FybngoIk9wdGlvbnMgLTQgYW5k
IC02IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIik7CisJCQkJdXNhZ2UoKTsKKwkJCX0KKwkJCWZh
bWlseSA9IEFGX0lORVQ2OworCQkJYnJlYWs7CisJCWNhc2UgJ3InOgorCQkJZmxhZ3MgfD0gTklf
TkFNRVJFUUQ7CisJCQlicmVhazsKKwkJY2FzZSAndSc6CisJCQlmbGFncyB8PSBOSV9ER1JBTTsK
KwkJCWJyZWFrOworCQljYXNlICdmJzoKKwkJCWZsYWdzIHw9IE5JX05PRlFETjsKKwkJCWJyZWFr
OworCQljYXNlICduJzoKKwkJCWZsYWdzIHw9IE5JX05VTUVSSUNIT1NUOworCQkJYnJlYWs7CisJ
CWNhc2UgJ04nOgorCQkJZmxhZ3MgfD0gTklfTlVNRVJJQ1NFUlY7CisJCQlicmVhazsKKwkJY2Fz
ZSAnSCc6CisJCQlpZiAoc2VydmljZV9vbmx5KSB7CisJCQkJd2FybngoIk9wdGlvbnMgLUggYW5k
IC1TIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIik7CisJCQkJdXNhZ2UoKTsKKwkJCX0KKwkJCWhv
c3RuYW1lX29ubHkgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ1MnOgorCQkJaWYgKGhvc3RuYW1l
X29ubHkpIHsKKwkJCQl3YXJueCgiT3B0aW9ucyAtSCBhbmQgLVMgY2Fubm90IGJlIHVzZWQgdG9n
ZXRoZXIiKTsKKwkJCQl1c2FnZSgpOworCQkJfQorCQkJc2VydmljZV9vbmx5ID0gMTsKKwkJCWJy
ZWFrOworCQljYXNlICdwJzoKKwkJCWlmICgocG9ydCA9IHZhbGlkYXRlX3BvcnQob3B0YXJnKSkg
PCAwKSB7CisJCQkJd2FybngoIkludmFsaWQgcG9ydCBudW1iZXI6ICVzIiwgb3B0YXJnKTsKKwkJ
CQl1c2FnZSgpOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgJz8nOgorCQlkZWZhdWx0OgorCQkJ
dXNhZ2UoKTsKKwkJfQorCX0KKworCWFyZ2MgLT0gb3B0aW5kOworCWFyZ3YgKz0gb3B0aW5kOwor
CisJaWYgKGFyZ2MgPT0gMCAmJiAoaG9zdG5hbWVfb25seSB8fCAoaG9zdG5hbWVfb25seSA9PSAw
ICYmIHNlcnZpY2Vfb25seSA9PSAwKSkpIHsKKwkJd2FybngoIk5vIElQIGFkZHJlc3MgcHJvdmlk
ZWQiKTsKKwkJdXNhZ2UoKTsKKwl9CisKKwlpZiAocG9ydCA9PSAwICYmIChzZXJ2aWNlX29ubHkg
fHwgKGhvc3RuYW1lX29ubHkgPT0gMCAmJiBzZXJ2aWNlX29ubHkgPT0gMCkpKSB7CisJCXdhcm54
KCJObyBwb3J0IG51bWJlciBwcm92aWRlZCIpOworCQl1c2FnZSgpOworCX0KKworCWlmIChhcmdj
ID09IDEpIHsKKwkJYWRkcmVzcyA9IGFyZ3ZbMF07CisJCWlmIChmYW1pbHkgPT0gQUZfVU5TUEVD
ICYmIChmYW1pbHkgPSBnZXRfaXBfdmVyc2lvbihhZGRyZXNzKSkgPCAwKSB7CisJCQl3YXJueCgi
SW52YWxpZCBJUCBhZGRyZXNzOiAlcyIsIGFkZHJlc3MpOworCQkJdXNhZ2UoKTsKKwkJfQorCX0K
KworCWlmIChmYW1pbHkgPT0gQUZfSU5FVCkgeworCQlzdHJ1Y3Qgc29ja2FkZHJfaW4gKmFkZHJf
aW4gPSAoc3RydWN0IHNvY2thZGRyX2luICopJmFkZHJfc3Q7CisJCWFkZHJfaW4tPnNpbl9mYW1p
bHkgPSBmYW1pbHk7CisJCWFkZHJfaW4tPnNpbl9wb3J0ID0gaHRvbnMocG9ydCk7CisJCWlmIChp
bmV0X3B0b24oZmFtaWx5LCBhZGRyZXNzLCAmYWRkcl9pbi0+c2luX2FkZHIpID09IDApIHsKKwkJ
CXdhcm54KCJJbnZhbGlkIElQdjQgYWRkcmVzczogJXMiLCBhZGRyZXNzKTsKKwkJCXVzYWdlKCk7
CisJCX0gCisKKwkJYWRkcl9zdGxlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOworCX0g
ZWxzZSB7CisJCXN0cnVjdCBzb2NrYWRkcl9pbjYgKmFkZHJfaW42ID0gKHN0cnVjdCBzb2NrYWRk
cl9pbjYgKikmYWRkcl9zdDsKKwkJYWRkcl9pbjYtPnNpbjZfZmFtaWx5ID0gZmFtaWx5OworCQlh
ZGRyX2luNi0+c2luNl9wb3J0ID0gaHRvbnMocG9ydCk7CisJCWlmIChpbmV0X3B0b24oZmFtaWx5
LCBhZGRyZXNzLCAmYWRkcl9pbjYtPnNpbjZfYWRkcikgPT0gMCkgeworCQkJd2FybngoIkludmFs
aWQgSVB2NiBhZGRyZXNzOiAlcyIsIGFkZHJlc3MpOworCQkJdXNhZ2UoKTsKKwkJfQorCQlhZGRy
X3N0bGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOworCX0KKworCWlmIChob3N0bmFt
ZV9vbmx5KQorCQlzZXJ2bGVuID0gMDsKKwllbHNlIGlmIChzZXJ2aWNlX29ubHkpCisJCWhvc3Rs
ZW4gPSAwOworCisJZXJyb3IgPSBnZXRuYW1laW5mbygoc3RydWN0IHNvY2thZGRyICopJmFkZHJf
c3QsIGFkZHJfc3RsZW4sIGhvc3RuYW1lLCBob3N0bGVuLCBzZXJ2aWNlLCBzZXJ2bGVuLCBmbGFn
cyk7CisJaWYgKGVycm9yKSAKKwkJZXJyeCgxLCAiJXMiLCBnYWlfc3RyZXJyb3IoZXJyb3IpKTsK
KworCXByaW50X3Jlc3VsdChob3N0bmFtZV9vbmx5LCBzZXJ2aWNlX29ubHksIGhvc3RuYW1lLCBz
ZXJ2aWNlKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50CitnZXRfaXBfdmVyc2lvbihj
b25zdCBjaGFyKiBpcF9hZGRyZXNzKQoreworCXN0cnVjdCBpbl9hZGRyIGlwdjRfYWRkcjsKKwlz
dHJ1Y3QgaW42X2FkZHIgaXB2Nl9hZGRyOworCisJaWYgKGluZXRfcHRvbihBRl9JTkVULCBpcF9h
ZGRyZXNzLCAmaXB2NF9hZGRyKSA9PSAxKQorCQlyZXR1cm4gQUZfSU5FVDsKKworCWlmIChpbmV0
X3B0b24oQUZfSU5FVDYsIGlwX2FkZHJlc3MsICZpcHY2X2FkZHIpID09IDEpCisJCXJldHVybiBB
Rl9JTkVUNjsKKworCXJldHVybiAtMTsKK30KKworc3RhdGljIGludAordmFsaWRhdGVfcG9ydChj
b25zdCBjaGFyICpwb3J0X3N0cikKK3sKKwljaGFyICplbmRwdHI7CisJbG9uZyBwb3J0ID0gc3Ry
dG9sKHBvcnRfc3RyLCAmZW5kcHRyLCAxMCk7CisKKwlpZiAoKmVuZHB0ciAhPSAnXDAnIHx8IHBv
cnQgPCAxIHx8IHBvcnQgPiA2NTUzNSkKKwkJcmV0dXJuIC0xOworCisJcmV0dXJuIChpbnQpcG9y
dDsKK30KKworc3RhdGljIHZvaWQKK3ByaW50X3Jlc3VsdChpbnQgaG9zdG5hbWVfb25seSwgaW50
IHNlcnZpY2Vfb25seSwgY2hhciAqaG9zdG5hbWUsIGNoYXIgKnNlcnZpY2UpCit7CisJaW50IG47
CisJaWYgKGhvc3RuYW1lX29ubHkpCisJCW4gPSBwcmludGYoIiVzXG4iLCBob3N0bmFtZSk7CisJ
ZWxzZSBpZiAoc2VydmljZV9vbmx5KQorCQluID0gcHJpbnRmKCIlc1xuIiwgc2VydmljZSk7CisJ
ZWxzZQorCQluID0gcHJpbnRmKCIlcyAlc1xuIiwgaG9zdG5hbWUsIHNlcnZpY2UpOworCWlmIChu
IDwgMCkKKwkJZXJyKDEsICJwcmludGYiKTsKK30KKworCitzdGF0aWMgdm9pZCBfX2RlYWQKK3Vz
YWdlKHZvaWQpCit7CisJKHZvaWQpZnByaW50ZihzdGRlcnIsICJVc2FnZTogJXMiLCBnZXRwcm9n
bmFtZSgpKTsKKwkodm9pZClmcHJpbnRmKHN0ZGVyciwgIiBbLTQ2cnVmbk5IU10gWy1wIHBvcnRd
IDxJUC1hZGRyZXNzPlxuIik7CisJZXhpdCgxKTsKK30KLS0gCjIuNDguMAoK
--000000000000bfefb1062bd49425--
Home |
Main Index |
Thread Index |
Old Index