Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 Feb 2000 14:07:31 -0800 (PST)
From:      Kris Kennaway <kris@FreeBSD.org>
To:        Khetan Gajjar <khetan@uunet.co.za>
Cc:        ports@freebsd.org
Subject:   Re: Hylafax port status
Message-ID:  <Pine.BSF.4.21.0002211404090.25667-200000@freefall.freebsd.org>
In-Reply-To: <Pine.BSF.4.21.0002212307520.85466-100000@bofh.ops.uunet.co.za>

next in thread | previous in thread | raw e-mail | index | archive | help
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--0-1812434641-951170710=:25667
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.BSF.4.21.0002211405241.25667@freefall.freebsd.org>

On Mon, 21 Feb 2000, Khetan Gajjar wrote:

> Hi.
> 
> What is the status of the Hylafax port ? It's been marked broken
> for quite a while now due to the buffer overflow which yields
> UUCP setuid.
> 
> I've checked the Hylafax page, but there don't appear to be any
> patches forthcoming.

The hylafax guys really don't seem to care about the security of their
product, which is a shame since as far as I can tell it fills a niche.

Alexander Langer just sent me this patch which claims to address all the
instances of unsafe sprintf/strcat/strcpy buffers. I havent reviewed it
yet and wont be before 4.0, but you might like to try it out if you want
to use hylafax but arent comfortable with the current security status
(remember, it's only known to be vulnerable to a local exploit - I dont
know if it even listens on the network).

Kris

----
"How many roads must a man walk down, before you call him a man?"
"Eight!"
"That was a rhetorical question!"
"Oh..then, seven!" -- Homer Simpson

--0-1812434641-951170710=:25667
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME=patch-ah
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.BSF.4.21.0002211405100.25667@freefall.freebsd.org>
Content-Description: 
Content-Disposition: ATTACHMENT; FILENAME=patch-ah

ZGlmZiAtcnUgL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBs
Mi9mYXhhbHRlci9mYXhhbHRlci5jKysgLi9mYXhhbHRlci9mYXhhbHRlci5j
KysNCi0tLSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwy
L2ZheGFsdGVyL2ZheGFsdGVyLmMrKwlTYXQgRmViIDE0IDExOjQ4OjM4IDE5
OTgNCisrKyAuL2ZheGFsdGVyL2ZheGFsdGVyLmMrKwlTdW4gRmViIDIwIDIy
OjE5OjI3IDIwMDANCkBAIC0xODUsNyArMTg1LDcgQEANCiAgICAgdmFfbGlz
dCBhcDsNCiAgICAgdmFfc3RhcnQoYXAsIGZtdDApOw0KICAgICBjaGFyIGZt
dFsxMDI0XTsNCi0gICAgc3ByaW50ZihmbXQsICIlcyAlc1xuIiwgZ3JvdXBz
ID8gIkpHUEFSTSIgOiAiSlBBUk0iLCBmbXQwKTsNCisgICAgc25wcmludGYo
Zm10LCAxMDI0LCAiJXMgJXNcbiIsIGdyb3VwcyA/ICJKR1BBUk0iIDogIkpQ
QVJNIiwgZm10MCk7DQogICAgIHNjcmlwdC5hcHBlbmQoZnhTdHI6OnZmb3Jt
YXQoZm10LCBhcCkpOw0KICAgICB2YV9lbmQoYXApOw0KIH0NCmRpZmYgLXJ1
IC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIvZmF4ZC9D
bGFzc01vZGVtLmMrKyAuL2ZheGQvQ2xhc3NNb2RlbS5jKysNCi0tLSAvdG1w
L29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL2ZheGQvQ2xhc3NN
b2RlbS5jKysJU2F0IEZlYiAxNCAxMTo0OToxNiAxOTk4DQorKysgLi9mYXhk
L0NsYXNzTW9kZW0uYysrCVN1biBGZWIgMjAgMjI6MTk6MjcgMjAwMA0KQEAg
LTE2OSw3ICsxNjksNyBAQA0KIHsNCiAgICAgcHJvdG9UcmFjZSgiRElBTCAl
cyIsIG51bWJlcik7DQogICAgIGNoYXIgYnVmWzI1Nl07DQotICAgIHNwcmlu
dGYoYnVmLCAoY29uc3QgY2hhciopIGNvbmYuZGlhbENtZCwgbnVtYmVyKTsN
CisgICAgc25wcmludGYoYnVmLCAyNTYsIChjb25zdCBjaGFyKikgY29uZi5k
aWFsQ21kLCBudW1iZXIpOw0KICAgICBlbXNnID0gIiI7DQogICAgIENhbGxT
dGF0dXMgY3MgPSAoYXRDbWQoYnVmLCBBVF9OT1RISU5HKSA/IGRpYWxSZXNw
b25zZShlbXNnKSA6IEZBSUxVUkUpOw0KICAgICBpZiAoY3MgIT0gT0sgJiYg
ZW1zZyA9PSAiIikNCmRpZmYgLXJ1IC90bXAvb2xkL2h5bGFmYXgvd29yay9o
eWxhZmF4LXY0LjBwbDIvZmF4ZC9GYXhNYWNoaW5lTG9nLmMrKyAuL2ZheGQv
RmF4TWFjaGluZUxvZy5jKysNCi0tLSAvdG1wL29sZC9oeWxhZmF4L3dvcmsv
aHlsYWZheC12NC4wcGwyL2ZheGQvRmF4TWFjaGluZUxvZy5jKysJU2F0IEZl
YiAxNCAxMTo0OToyMSAxOTk4DQorKysgLi9mYXhkL0ZheE1hY2hpbmVMb2cu
YysrCVN1biBGZWIgMjAgMjI6MTk6MjcgMjAwMA0KQEAgLTc3LDcgKzc3LDcg
QEANCiAgICAgdGltZXZhbCB0djsNCiAgICAgKHZvaWQpIGdldHRpbWVvZmRh
eSgmdHYsIDApOw0KICAgICBzdHJmdGltZShidWYsIHNpemVvZiAoYnVmKSwg
IiVoICVkICVUIiwgbG9jYWx0aW1lKCh0aW1lX3QqKSAmdHYudHZfc2VjKSk7
DQotICAgIHNwcmludGYoYnVmK3N0cmxlbihidWYpLCAiLiUwMnU6IFslNWRd
OiAiLCB0di50dl91c2VjIC8gMTAwMDAsIHBpZCk7DQorICAgIHNucHJpbnRm
KGJ1ZitzdHJsZW4oYnVmKSwgMTYqMTAyNCAtIHN0cmxlbihidWYpIi4lMDJ1
OiBbJTVkXTogIiwgdHYudHZfdXNlYyAvIDEwMDAwLCBwaWQpOw0KICAgICAv
Kg0KICAgICAgKiBDb3B5IGZvcm1hdCBzdHJpbmcgaW50byBhIGxvY2FsIGJ1
ZmZlciBzbw0KICAgICAgKiB0aGF0IHdlIGNhbiBzdWJzdGl0dXRlIGZvciAl
bSwgYSBsYSBzeXNsb2cuDQpAQCAtOTYsNiArOTYsNiBAQA0KIAlmbXQucHV0
KGZwWzBdKTsNCiAgICAgfQ0KICAgICBmbXQucHV0KCdcbicpOyBmbXQucHV0
KCdcMCcpOw0KLSAgICB2c3ByaW50ZihidWYrc3RybGVuKGJ1ZiksIChjb25z
dCBjaGFyKikgZm10LCBhcCk7DQorICAgIHZzbnByaW50ZihidWYrc3RybGVu
KGJ1ZiksIDE2KjEwMjQgLSBzdHJsZW4oYnVmKSwgKGNvbnN0IGNoYXIqKSBm
bXQsIGFwKTsNCiAgICAgKHZvaWQpIFN5czo6d3JpdGUoZmQsIGJ1Ziwgc3Ry
bGVuKGJ1ZikpOw0KIH0NCmRpZmYgLXJ1IC90bXAvb2xkL2h5bGFmYXgvd29y
ay9oeWxhZmF4LXY0LjBwbDIvZmF4ZC9GYXhSZWN2LmMrKyAuL2ZheGQvRmF4
UmVjdi5jKysNCi0tLSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12
NC4wcGwyL2ZheGQvRmF4UmVjdi5jKysJU2F0IEZlYiAxNCAxMTo0OToyMyAx
OTk4DQorKysgLi9mYXhkL0ZheFJlY3YuYysrCVN1biBGZWIgMjAgMjI6MTk6
MjcgMjAwMA0KQEAgLTEzOSw3ICsxMzksNyBAQA0KIAkgKiBudW1iZXIgZmls
ZSB0byByZWZsZWN0IHRoZSBhbGxvY2F0aW9uLg0KIAkgKi8NCiAJKHZvaWQp
IGZsb2NrKGZ0bXAsIExPQ0tfRVh8TE9DS19OQik7DQotCXNwcmludGYobGlu
ZSwgIiV1Iiwgc2VxbnVtKTsNCisJc25wcmludGYobGluZSwgMTYsICIldSIs
IHNlcW51bSk7DQogCSh2b2lkKSBsc2Vlayhmc2VxZiwgMCwgU0VFS19TRVQp
Ow0KIAlpZiAoU3lzOjp3cml0ZShmc2VxZiwgbGluZSwgc3RybGVuKGxpbmUp
KSAhPSBzdHJsZW4obGluZSkgfHwNCiAJCWZ0cnVuY2F0ZShmc2VxZixzdHJs
ZW4obGluZSkpKSB7DQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsv
aHlsYWZheC12NC4wcGwyL2ZheGQvRmF4UmVxdWVzdC5jKysgLi9mYXhkL0Zh
eFJlcXVlc3QuYysrDQotLS0gL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFm
YXgtdjQuMHBsMi9mYXhkL0ZheFJlcXVlc3QuYysrCVNhdCBGZWIgMTQgMTE6
NDk6MjQgMTk5OA0KKysrIC4vZmF4ZC9GYXhSZXF1ZXN0LmMrKwlTdW4gRmVi
IDIwIDIyOjE5OjI3IDIwMDANCkBAIC02NzksNyArNjc5LDcgQEANCiBGYXhS
ZXF1ZXN0OjplcnJvcihjb25zdCBjaGFyKiBmbXQwIC4uLikNCiB7DQogICAg
IGNoYXIgZm10WzEyOF07DQotICAgIHNwcmludGYoZm10LCAiJXM6IGxpbmUg
JXU6ICVzIiwgKGNvbnN0IGNoYXIqKSBxZmlsZSwgKHVfaW50KSBsaW5lbm8s
IGZtdDApOw0KKyAgICBzbnByaW50ZihmbXQsIDEyOCwgIiVzOiBsaW5lICV1
OiAlcyIsIChjb25zdCBjaGFyKikgcWZpbGUsICh1X2ludCkgbGluZW5vLCBm
bXQwKTsNCiAgICAgdmFfbGlzdCBhcDsNCiAgICAgdmFfc3RhcnQoYXAsIGZt
dDApOw0KICAgICB2bG9nRXJyb3IoZm10LCBhcCk7DQpkaWZmIC1ydSAvdG1w
L29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL2ZheGQvSm9iLmMr
KyAuL2ZheGQvSm9iLmMrKw0KLS0tIC90bXAvb2xkL2h5bGFmYXgvd29yay9o
eWxhZmF4LXY0LjBwbDIvZmF4ZC9Kb2IuYysrCVNhdCBGZWIgMTQgMTE6NDk6
MzIgMTk5OA0KKysrIC4vZmF4ZC9Kb2IuYysrCVN1biBGZWIgMjAgMjI6MTk6
MjcgMjAwMA0KQEAgLTE3MSw3ICsxNzEsNyBAQA0KICNkZWZpbmUJTihhKQko
c2l6ZW9mIChhKSAvIHNpemVvZiAoYVswXSkpDQogICAgIGlmICgodV9pbnQp
IHN0YXR1cyA+PSBOKG5hbWVzKSkgew0KIAlzdGF0aWMgY2hhciBzWzMwXTsN
Ci0Jc3ByaW50ZihzLCAic3RhdHVzXyV1IiwgKHVfaW50KSBzdGF0dXMpOw0K
KwlzbnByaW50ZihzLCAzMCwgInN0YXR1c18ldSIsICh1X2ludCkgc3RhdHVz
KTsNCiAJcmV0dXJuIChzKTsNCiAgICAgfSBlbHNlDQogCXJldHVybiAobmFt
ZXNbc3RhdHVzXSk7DQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsv
aHlsYWZheC12NC4wcGwyL2ZheGQvTW9kZW1TZXJ2ZXIuYysrIC4vZmF4ZC9N
b2RlbVNlcnZlci5jKysNCi0tLSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHls
YWZheC12NC4wcGwyL2ZheGQvTW9kZW1TZXJ2ZXIuYysrCVNhdCBGZWIgMTQg
MTE6NDk6MzQgMTk5OA0KKysrIC4vZmF4ZC9Nb2RlbVNlcnZlci5jKysJU3Vu
IEZlYiAyMCAyMjoxOToyNyAyMDAwDQpAQCAtNjA0LDcgKzYwNCw3IEBADQog
CX0gd2hpbGUgKGZ0bXAgPCAwICYmIGVycm5vID09IEVFWElTVCAmJiAtLW50
cnkgPj0gMCk7DQogCXVtYXNrKG9tYXNrKTsNCiAJaWYgKGZ0bXAgPj0gMCkg
ew0KLQkgICAgc3ByaW50ZihsaW5lLCAiJXUiLCBzZXFudW0pOw0KKwkgICAg
c25wcmludGYobGluZSwgMTAyNCwgIiV1Iiwgc2VxbnVtKTsNCiAJICAgICh2
b2lkKSBsc2Vlayhmc2VxZiwgMCwgU0VFS19TRVQpOw0KIAkgICAgaWYgKFN5
czo6d3JpdGUoZnNlcWYsIGxpbmUsIHN0cmxlbihsaW5lKSkgIT0gc3RybGVu
KGxpbmUpIHx8DQogCQlmdHJ1bmNhdGUoZnNlcWYsc3RybGVuKGxpbmUpKSkN
CkBAIC04MDYsNyArODA2LDcgQEANCiAgICAgdmFfbGlzdCBhcDsNCiAgICAg
dmFfc3RhcnQoYXAsIGZtdDApOw0KICAgICBjaGFyIGZtdFsyNTZdOw0KLSAg
ICBzcHJpbnRmKGZtdCwgIk1PREVNICVzIiwgZm10MCk7DQorICAgIHNucHJp
bnRmKGZtdCwgMjU2LCAiTU9ERU0gJXMiLCBmbXQwKTsNCiAgICAgdnRyYWNl
U3RhdHVzKEZBWFRSQUNFX01PREVNT1BTLCBmbXQsIGFwKTsNCiAgICAgdmFf
ZW5kKGFwKTsNCiB9DQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsv
aHlsYWZheC12NC4wcGwyL2ZheGQvU2VydmVyQ29uZmlnLmMrKyAuL2ZheGQv
U2VydmVyQ29uZmlnLmMrKw0KLS0tIC90bXAvb2xkL2h5bGFmYXgvd29yay9o
eWxhZmF4LXY0LjBwbDIvZmF4ZC9TZXJ2ZXJDb25maWcuYysrCVNhdCBGZWIg
MTQgMTE6NDk6MzYgMTk5OA0KKysrIC4vZmF4ZC9TZXJ2ZXJDb25maWcuYysr
CVN1biBGZWIgMjAgMjI6MTk6MjcgMjAwMA0KQEAgLTM3Myw5ICszNzMsOSBA
QA0KIHsNCiAgICAgY2hhciBmbXRbMTI4XTsNCiAgICAgaWYgKG1vZHVsZSAh
PSBOVUxMKQ0KLQlzcHJpbnRmKGZtdCwgIiVzOiBXYXJuaW5nLCAlcy4iLCBt
b2R1bGUsIGZtdDApOw0KKwlzbnByaW50ZihmbXQsIDEyOCwgIiVzOiBXYXJu
aW5nLCAlcy4iLCBtb2R1bGUsIGZtdDApOw0KICAgICBlbHNlDQotCXNwcmlu
dGYoZm10LCAiV2FybmluZywgJXMuIiwgZm10MCk7DQorCXNucHJpbnRmKGZt
dCwgMTI4LCAiV2FybmluZywgJXMuIiwgZm10MCk7DQogICAgIHZsb2dFcnJv
cihmbXQsIGFwKTsNCiB9DQogDQpAQCAtMzg0LDkgKzM4NCw5IEBADQogew0K
ICAgICBjaGFyIGZtdFsxMjhdOw0KICAgICBpZiAobW9kdWxlICE9IE5VTEwp
DQotCXNwcmludGYoZm10LCAiJXM6IFdhcm5pbmcsICVzLiIsIG1vZHVsZSwg
Zm10MCk7DQorCXNucHJpbnRmKGZtdCwgMTI4LCAiJXM6IFdhcm5pbmcsICVz
LiIsIG1vZHVsZSwgZm10MCk7DQogICAgIGVsc2UNCi0Jc3ByaW50ZihmbXQs
ICJXYXJuaW5nLCAlcy4iLCBmbXQwKTsNCisJc25wcmludGYoZm10LCAxMjgs
ICJXYXJuaW5nLCAlcy4iLCBmbXQwKTsNCiAgICAgdmxvZ1dhcm5pbmcoZm10
LCBhcCk7DQogfQ0KIA0KZGlmZiAtcnUgL3RtcC9vbGQvaHlsYWZheC93b3Jr
L2h5bGFmYXgtdjQuMHBsMi9mYXhkL1VVQ1BMb2NrLmMrKyAuL2ZheGQvVVVD
UExvY2suYysrDQotLS0gL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgt
djQuMHBsMi9mYXhkL1VVQ1BMb2NrLmMrKwlNb24gRmViIDIxIDE1OjE5OjQ0
IDIwMDANCisrKyAuL2ZheGQvVVVDUExvY2suYysrCU1vbiBGZWIgMjEgMTQ6
NTY6MjkgMjAwMA0KQEAgLTMxMyw3ICszMTMsNyBAQA0KIEFzY2lpVVVDUExv
Y2s6OnNldFBJRChwaWRfdCBwaWQpDQogew0KICAgICAvLyBYWFggc2hvdWxk
IHRoaXMgYmUgJWQgb3IgJWxkPyBkZXBlbmRzIG9uIHBpZF90DQotICAgIHNw
cmludGYoKGNoYXIqKSBkYXRhLCAiJSpkXG4iLCBVVUNQX1BJRERJR0lUUywg
cGlkKTsNCisgICAgc25wcmludGYoKGNoYXIqKSBkYXRhLCBVVUNQX1BJRERJ
R0lUUysyLCAiJSpkXG4iLCBVVUNQX1BJRERJR0lUUywgcGlkKTsNCiB9DQog
DQogZnhCb29sDQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHls
YWZheC12NC4wcGwyL2ZheGQvZmF4QXBwLmMrKyAuL2ZheGQvZmF4QXBwLmMr
Kw0KLS0tIC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIv
ZmF4ZC9mYXhBcHAuYysrCVNhdCBGZWIgMTQgMTE6NDk6MzkgMTk5OA0KKysr
IC4vZmF4ZC9mYXhBcHAuYysrCVN1biBGZWIgMjAgMjI6MTk6MjcgMjAwMA0K
QEAgLTIzMSw3ICsyMzEsNyBAQA0KIAkgICAgbG9nRXJyb3IoImZjbnRsOiAl
bSIpOw0KICAgICB9DQogICAgIGNoYXIgbXNnWzQwOTZdOw0KLSAgICB2c3By
aW50Zihtc2csIGZtdCwgYXApOw0KKyAgICB2c25wcmludGYobXNnLCA0MDk2
LCBmbXQsIGFwKTsNCiAgICAgdV9pbnQgbGVuID0gc3RybGVuKG1zZykrMTsN
CiAgICAgaWYgKFN5czo6d3JpdGUoZmF4cWZpZm8sIG1zZywgbGVuKSAhPSBs
ZW4pIHsNCiAJaWYgKGVycm5vID09IEVCQURGIHx8IGVycm5vID09IEVQSVBF
KQkJLy8gcmVhZGVyIGV4cGlyZWQNCkBAIC0yNjMsNyArMjYzLDcgQEANCiBm
YXhBcHA6OnNlbmRNb2RlbVN0YXR1cyhjb25zdCBjaGFyKiBkZXZpZCwgY29u
c3QgY2hhciogZm10MCAuLi4pDQogew0KICAgICBjaGFyIGZtdFsyKjEwMjRd
Ow0KLSAgICBzcHJpbnRmKGZtdCwgIislczolcyIsIGRldmlkLCBmbXQwKTsN
CisgICAgc25wcmludGYoZm10LCAyKjEwMjQsICIrJXM6JXMiLCBkZXZpZCwg
Zm10MCk7DQogICAgIHZhX2xpc3QgYXA7DQogICAgIHZhX3N0YXJ0KGFwLCBm
bXQwKTsNCiAgICAgZnhCb29sIG9rID0gdnNlbmRRdWV1ZXIoZm10LCBhcCk7
DQpAQCAtMjc4LDcgKzI3OCw3IEBADQogZmF4QXBwOjpzZW5kSm9iU3RhdHVz
KGNvbnN0IGNoYXIqIGpvYmlkLCBjb25zdCBjaGFyKiBmbXQwIC4uLikNCiB7
DQogICAgIGNoYXIgZm10WzIqMTAyNF07DQotICAgIHNwcmludGYoZm10LCAi
KiVzOiVzIiwgam9iaWQsIGZtdDApOw0KKyAgICBzbnByaW50ZihmbXQsIDIq
MTAyNCwgIiolczolcyIsIGpvYmlkLCBmbXQwKTsNCiAgICAgdmFfbGlzdCBh
cDsNCiAgICAgdmFfc3RhcnQoYXAsIGZtdDApOw0KICAgICBmeEJvb2wgb2sg
PSB2c2VuZFF1ZXVlcihmbXQsIGFwKTsNCkBAIC0yOTMsNyArMjkzLDcgQEAN
CiBmYXhBcHA6OnNlbmRSZWN2U3RhdHVzKGNvbnN0IGNoYXIqIGRldmlkLCBj
b25zdCBjaGFyKiBmbXQwIC4uLikNCiB7DQogICAgIGNoYXIgZm10WzIqMTAy
NF07DQotICAgIHNwcmludGYoZm10LCAiQCVzOiVzIiwgZGV2aWQsIGZtdDAp
Ow0KKyAgICBzbnByaW50ZihmbXQsIDIqMTAyNCwgIkAlczolcyIsIGRldmlk
LCBmbXQwKTsNCiAgICAgdmFfbGlzdCBhcDsNCiAgICAgdmFfc3RhcnQoYXAs
IGZtdDApOw0KICAgICBmeEJvb2wgb2sgPSB2c2VuZFF1ZXVlcihmbXQsIGFw
KTsNCmRpZmYgLXJ1IC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0
LjBwbDIvZmF4ZC9mYXhRdWV1ZUFwcC5jKysgLi9mYXhkL2ZheFF1ZXVlQXBw
LmMrKw0KLS0tIC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBw
bDIvZmF4ZC9mYXhRdWV1ZUFwcC5jKysJU2F0IEZlYiAxNCAxMTo0OTo0MiAx
OTk4DQorKysgLi9mYXhkL2ZheFF1ZXVlQXBwLmMrKwlTdW4gRmViIDIwIDIy
OjE5OjI3IDIwMDANCkBAIC05NzEsMTAgKzk3MSwxMCBAQA0KIAkgKiAgIC1t
IDxtYXhwYWdlcz4JbWF4IHBhZ2VzIHRvIGdlbmVyYXRlDQogCSAqICAgLTF8
LTIJCTFkIG9yIDJkIGVuY29kaW5nDQogCSAqLw0KLQljaGFyIHJidWZbMjBd
OyBzcHJpbnRmKHJidWYsICIldSIsIHBhcmFtcy52ZXJ0aWNhbFJlcygpKTsN
Ci0JY2hhciB3YnVmWzIwXTsgc3ByaW50Zih3YnVmLCAiJXUiLCBwYXJhbXMu
cGFnZVdpZHRoKCkpOw0KLQljaGFyIGxidWZbMjBdOyBzcHJpbnRmKGxidWYs
ICIlZCIsIHBhcmFtcy5wYWdlTGVuZ3RoKCkpOw0KLQljaGFyIG1idWZbMjBd
OyBzcHJpbnRmKG1idWYsICIldSIsIGRjaS5nZXRNYXhTZW5kUGFnZXMoKSk7
DQorCWNoYXIgcmJ1ZlsyMF07IHNucHJpbnRmKHJidWYsIDIwLCAiJXUiLCBw
YXJhbXMudmVydGljYWxSZXMoKSk7DQorCWNoYXIgd2J1ZlsyMF07IHNucHJp
bnRmKHdidWYsIDIwLCAiJXUiLCBwYXJhbXMucGFnZVdpZHRoKCkpOw0KKwlj
aGFyIGxidWZbMjBdOyBzbnByaW50ZihsYnVmLCAyMCwgIiVkIiwgcGFyYW1z
LnBhZ2VMZW5ndGgoKSk7DQorCWNoYXIgbWJ1ZlsyMF07IHNucHJpbnRmKG1i
dWYsIDIwLCAiJXUiLCBkY2kuZ2V0TWF4U2VuZFBhZ2VzKCkpOw0KIAljb25z
dCBjaGFyKiBhcmd2WzMwXTsNCiAJaW50IGFjID0gMDsNCiAJc3dpdGNoIChy
ZXEub3ApIHsNCkBAIC0yNzI2LDkgKzI3MjYsOSBAQA0KIHsNCiAgICAgY2hh
ciBmbXRbMTI4XTsNCiAgICAgaWYgKG1vZHVsZSAhPSBOVUxMKQ0KLQlzcHJp
bnRmKGZtdCwgIiVzOiBXYXJuaW5nLCAlcy4iLCBtb2R1bGUsIGZtdDApOw0K
KwlzbnByaW50ZihmbXQsIDEyOCwgIiVzOiBXYXJuaW5nLCAlcy4iLCBtb2R1
bGUsIGZtdDApOw0KICAgICBlbHNlDQotCXNwcmludGYoZm10LCAiV2Fybmlu
ZywgJXMuIiwgZm10MCk7DQorCXNucHJpbnRmKGZtdCwgMTI4LCAiV2Fybmlu
ZywgJXMuIiwgZm10MCk7DQogICAgIHZsb2dFcnJvcihmbXQsIGFwKTsNCiB9
DQogDQpAQCAtMjczNyw5ICsyNzM3LDkgQEANCiB7DQogICAgIGNoYXIgZm10
WzEyOF07DQogICAgIGlmIChtb2R1bGUgIT0gTlVMTCkNCi0Jc3ByaW50Zihm
bXQsICIlczogV2FybmluZywgJXMuIiwgbW9kdWxlLCBmbXQwKTsNCisJc25w
cmludGYoZm10LCAxMjgsICIlczogV2FybmluZywgJXMuIiwgbW9kdWxlLCBm
bXQwKTsNCiAgICAgZWxzZQ0KLQlzcHJpbnRmKGZtdCwgIldhcm5pbmcsICVz
LiIsIGZtdDApOw0KKwlzbnByaW50ZihmbXQsIDEyOCwgIldhcm5pbmcsICVz
LiIsIGZtdDApOw0KICAgICB2bG9nV2FybmluZyhmbXQsIGFwKTsNCiB9DQog
DQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4w
cGwyL2ZheGQvdHJpZ3Rlc3QuYysrIC4vZmF4ZC90cmlndGVzdC5jKysNCi0t
LSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL2ZheGQv
dHJpZ3Rlc3QuYysrCVNhdCBGZWIgMTQgMTE6NDk6NDcgMTk5OA0KKysrIC4v
ZmF4ZC90cmlndGVzdC5jKysJTW9uIEZlYiAyMSAxNDo1NzoyMCAyMDAwDQpA
QCAtMjk2LDcgKzI5Niw3IEBADQogICAgIGludCBmZCwgbjsNCiAgICAgY2hh
ciBtc2dbMjU2XTsNCiANCi0gICAgc3ByaW50ZihmaWZvTmFtZSwgImNsaWVu
dC8ldSIsIGdldHBpZCgpKTsNCisgICAgc25wcmludGYoZmlmb05hbWUsIDgw
LCAiY2xpZW50LyV1IiwgZ2V0cGlkKCkpOw0KICAgICBpZiAoU3lzOjpta2Zp
Zm8oZmlmb05hbWUsIDA2NjYpIDwgMCAmJiBlcnJubyAhPSBFRVhJU1QpIHsN
CiAJcGVycm9yKCJta2ZpZm8iKTsNCiAJZXhpdCgtMSk7DQpAQCAtMzA5LDcg
KzMwOSw3IEBADQogCXVubGluayhmaWZvTmFtZSk7DQogCWV4aXQoLTEpOw0K
ICAgICB9DQotICAgIHNwcmludGYobXNnLCAiVCVzOk4lcyIsIGZpZm9OYW1l
LCB0cmlnZ2VyKTsNCisgICAgc25wcmludGYobXNnLCAyNTYsICJUJXM6TiVz
IiwgZmlmb05hbWUsIHRyaWdnZXIpOw0KICAgICBzZW5kKG1zZywgc3RybGVu
KG1zZykrMSk7DQogICAgIGZvciAoOzspIHsNCiAJRkRfWkVSTygmcmQpOw0K
ZGlmZiAtcnUgL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBs
Mi9oZmF4ZC9IeWxhRkFYU2VydmVyLmMrKyAuL2hmYXhkL0h5bGFGQVhTZXJ2
ZXIuYysrDQotLS0gL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQu
MHBsMi9oZmF4ZC9IeWxhRkFYU2VydmVyLmMrKwlTYXQgRmViIDE0IDExOjUw
OjAyIDE5OTgNCisrKyAuL2hmYXhkL0h5bGFGQVhTZXJ2ZXIuYysrCVN1biBG
ZWIgMjAgMjI6MTk6MjcgMjAwMA0KQEAgLTE2MSw5ICsxNjEsOSBAQA0KIHsN
CiAgICAgY2hhciBmbXRbMTI4XTsNCiAgICAgaWYgKG1vZHVsZSAhPSBOVUxM
KQ0KLQlzcHJpbnRmKGZtdCwgIiVzOiBXYXJuaW5nLCAlcy4iLCBtb2R1bGUs
IGZtdDApOw0KKwlzbnByaW50ZihmbXQsIDEyOCwgIiVzOiBXYXJuaW5nLCAl
cy4iLCBtb2R1bGUsIGZtdDApOw0KICAgICBlbHNlDQotCXNwcmludGYoZm10
LCAiV2FybmluZywgJXMuIiwgZm10MCk7DQorCXNucHJpbnRmKGZtdCwgMTI4
LCAiV2FybmluZywgJXMuIiwgZm10MCk7DQogICAgIHZsb2dFcnJvcihmbXQs
IGFwKTsNCiB9DQogDQpAQCAtMTcyLDkgKzE3Miw5IEBADQogew0KICAgICBj
aGFyIGZtdFsxMjhdOw0KICAgICBpZiAobW9kdWxlICE9IE5VTEwpDQotCXNw
cmludGYoZm10LCAiJXM6IFdhcm5pbmcsICVzLiIsIG1vZHVsZSwgZm10MCk7
DQorCXNucHJpbnRmKGZtdCwgMTI4LCAiJXM6IFdhcm5pbmcsICVzLiIsIG1v
ZHVsZSwgZm10MCk7DQogICAgIGVsc2UNCi0Jc3ByaW50ZihmbXQsICJXYXJu
aW5nLCAlcy4iLCBmbXQwKTsNCisJc25wcmludGYoZm10LCAxMjgsICJXYXJu
aW5nLCAlcy4iLCBmbXQwKTsNCiAgICAgdmxvZ1dhcm5pbmcoZm10LCBhcCk7
DQogfQ0KIA0KQEAgLTUzMCw3ICs1MzAsNyBAQA0KIAkgICAgZmlsZW5hbWUs
IGxpbmUpOw0KIAlzZXFudW0gPSAxOw0KICAgICB9DQotICAgIHNwcmludGYo
bGluZSwgIiV1IiwgTkVYVFNFUU5VTShzZXFudW0rY291bnQpKTsNCisgICAg
c25wcmludGYobGluZSwgMTAyNCwgIiV1IiwgTkVYVFNFUU5VTShzZXFudW0r
Y291bnQpKTsNCiAgICAgbHNlZWsoZmQsIDAsIFNFRUtfU0VUKTsNCiAgICAg
aWYgKFN5czo6d3JpdGUoZmQsIGxpbmUsIHN0cmxlbihsaW5lKSkgIT0gc3Ry
bGVuKGxpbmUpIHx8DQogCQlmdHJ1bmNhdGUoZmQsc3RybGVuKGxpbmUpKSkg
ew0KZGlmZiAtcnUgL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQu
MHBsMi9oZmF4ZC9Kb2JzLmMrKyAuL2hmYXhkL0pvYnMuYysrDQotLS0gL3Rt
cC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBsMi9oZmF4ZC9Kb2Jz
LmMrKwlTYXQgRmViIDE0IDExOjUwOjA1IDE5OTgNCisrKyAuL2hmYXhkL0pv
YnMuYysrCVN1biBGZWIgMjAgMjI6MTk6MjcgMjAwMA0KQEAgLTE2NDYsNyAr
MTY0Niw3IEBADQogCQlmcHJpbnRmKGZkLCBmc3BlYywgKGNvbnN0IGNoYXIq
KSBqb2IuY29tcGFueSk7DQogCQlicmVhazsNCiAJICAgIGNhc2UgJ0QnOg0K
LQkJc3ByaW50Zih0bXBidWYsICIlMnU6JS0ydSIsIGpvYi50b3RkaWFscywg
am9iLm1heGRpYWxzKTsNCisJCXNucHJpbnRmKHRtcGJ1ZiwgMjAsICIlMnU6
JS0ydSIsIGpvYi50b3RkaWFscywgam9iLm1heGRpYWxzKTsNCiAJCWZwcmlu
dGYoZmQsIGZzcGVjLCB0bXBidWYpOw0KIAkJYnJlYWs7DQogCSAgICBjYXNl
ICdFJzoNCkBAIC0xNjgzLDcgKzE2ODMsNyBAQA0KIAkJZnByaW50ZihmZCwg
ZnNwZWMsICJOICJbam9iLnVzZWNjb3Zlcl0pOw0KIAkJYnJlYWs7DQogCSAg
ICBjYXNlICdQJzoNCi0JCXNwcmludGYodG1wYnVmLCAiJTJ1OiUtMnUiLCBq
b2IubnBhZ2VzLCBqb2IudG90cGFnZXMpOw0KKwkJc25wcmludGYodG1wYnVm
LCAyMCwgIiUydTolLTJ1Iiwgam9iLm5wYWdlcywgam9iLnRvdHBhZ2VzKTsN
CiAJCWZwcmludGYoZmQsIGZzcGVjLCB0bXBidWYpOw0KIAkJYnJlYWs7DQog
CSAgICBjYXNlICdRJzoNCkBAIC0xNjk2LDExICsxNjk2LDExIEBADQogCQlm
cHJpbnRmKGZkLCBmc3BlYywgKGNvbnN0IGNoYXIqKSBqb2Iuc2VuZGVyKTsN
CiAJCWJyZWFrOw0KIAkgICAgY2FzZSAnVCc6DQotCQlzcHJpbnRmKHRtcGJ1
ZiwgIiUydTolLTJ1Iiwgam9iLnRvdHRyaWVzLCBqb2IubWF4dHJpZXMpOw0K
KwkJc25wcmludGYodG1wYnVmLCAyMCwgIiUydTolLTJ1Iiwgam9iLnRvdHRy
aWVzLCBqb2IubWF4dHJpZXMpOw0KIAkJZnByaW50ZihmZCwgZnNwZWMsIHRt
cGJ1Zik7DQogCQlicmVhazsNCiAJICAgIGNhc2UgJ1UnOg0KLQkJc3ByaW50
Zih0bXBidWYsICIlLjFmIiwgam9iLmNob3B0aHJlc2hvbGQpOw0KKwkJc25w
cmludGYodG1wYnVmLCAyMCwgIiUuMWYiLCBqb2IuY2hvcHRocmVzaG9sZCk7
DQogCQlmcHJpbnRmKGZkLCBmc3BlYywgdG1wYnVmKTsNCiAJCWJyZWFrOw0K
IAkgICAgY2FzZSAnVic6DQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dv
cmsvaHlsYWZheC12NC4wcGwyL2hmYXhkL09sZFByb3RvY29sLmMrKyAuL2hm
YXhkL09sZFByb3RvY29sLmMrKw0KLS0tIC90bXAvb2xkL2h5bGFmYXgvd29y
ay9oeWxhZmF4LXY0LjBwbDIvaGZheGQvT2xkUHJvdG9jb2wuYysrCU1vbiBG
ZWIgMjEgMTU6MTk6NDQgMjAwMA0KKysrIC4vaGZheGQvT2xkUHJvdG9jb2wu
YysrCVN1biBGZWIgMjAgMjI6MTk6MjggMjAwMA0KQEAgLTM1Miw4ICszNTIs
OCBAQA0KIE9sZFByb3RvY29sU2VydmVyOjp2c2VuZENsaWVudChjb25zdCBj
aGFyKiB0YWcsIGNvbnN0IGNoYXIqIGZtdCwgdmFfbGlzdCBhcCkNCiB7DQog
ICAgIGNoYXIgYnVmWzIwNDhdOw0KLSAgICBzcHJpbnRmKGJ1ZiwgIiVzOiIs
IHRhZyk7DQotICAgIHZzcHJpbnRmKHN0cmNocihidWYsJ1wwJyksIGZtdCwg
YXApOw0KKyAgICBzbnByaW50ZihidWYsIDIwNDgsICIlczoiLCB0YWcpOw0K
KyAgICB2c25wcmludGYoc3RyY2hyKGJ1ZiwnXDAnKSwgMjA0OCAtIChzdHJj
aHIoYnVmLCAnXDAnKSAtIGJ1ZiksIGZtdCwgYXApOw0KICAgICBmcHJpbnRm
KHN0ZG91dCwgIiVzXG4iLCBidWYpOw0KICAgICBpZiAoVFJBQ0UoUFJPVE9D
T0wpKQ0KIAlsb2dEZWJ1ZygiJXMiLCBidWYpOw0KQEAgLTQ3MiwxOSArNDcy
LDE5IEBADQogICAgIGJ1ZlswXSA9ICdcMCc7DQogICAgIGlmIChwd2QtPnB3
X2dlY29zKSB7DQogCWlmIChwd2QtPnB3X2dlY29zWzBdID09ICcmJykgew0K
LQkgICAgc3RyY3B5KGJ1ZiwgcHdkLT5wd19uYW1lKTsNCi0JICAgIHN0cmNh
dChidWYsIHB3ZC0+cHdfZ2Vjb3MrMSk7DQorCSAgICBzdHJsY3B5KGJ1Ziwg
cHdkLT5wd19uYW1lLCAxMDI0KTsNCisJICAgIHN0cmxjYXQoYnVmLCBwd2Qt
PnB3X2dlY29zKzEsIDEwMjQgLSBzdHJsZW4oYnVmKSk7DQogCSAgICBpZiAo
aXNsb3dlcihidWZbMF0pKQ0KIAkJYnVmWzBdID0gdG91cHBlcihidWZbMF0p
Ow0KIAl9IGVsc2UNCi0JICAgIHN0cmNweShidWYsIHB3ZC0+cHdfZ2Vjb3Mp
Ow0KKwkgICAgc3RybGNweShidWYsIHB3ZC0+cHdfZ2Vjb3MsIDEwMjQpOw0K
IAlpZiAoKGNwID0gc3RyY2hyKGJ1ZiwnLCcpKSAhPSAwKQ0KIAkgICAgKmNw
ID0gJ1wwJzsNCiAJLyogc2VlIEZheENsaWVudDo6c2V0dXBVc2VySWRlbnRp
dHk7IHN0cmlwIFN5c1YganVuayAqLw0KIAlpZiAoKGNwID0gc3RyY2hyKGJ1
ZiwnKCcpKSAhPSAwKQ0KIAkgICAgKmNwID0gJ1wwJzsNCiAgICAgfSBlbHNl
DQotCXN0cmNweShidWYsIHB3ZC0+cHdfbmFtZSk7DQorCXN0cmxjcHkoYnVm
LCBwd2QtPnB3X25hbWUsIDEwMjQpOw0KICAgICBpZiAoVFJBQ0UoUFJPVE9D
T0wpKSB7DQogCWlmICgqYnVmKQ0KIAkgICAgIGxvZ0RlYnVnKCIlcyB1c2Vy
OiBcIiVzXCIiLCBwd2QtPnB3X25hbWUsIGJ1Zik7DQpkaWZmIC1ydSAvdG1w
L29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL2hmYXhkL1N0YXR1
cy5jKysgLi9oZmF4ZC9TdGF0dXMuYysrDQotLS0gL3RtcC9vbGQvaHlsYWZh
eC93b3JrL2h5bGFmYXgtdjQuMHBsMi9oZmF4ZC9TdGF0dXMuYysrCVNhdCBG
ZWIgMTQgMTE6NTA6MDkgMTk5OA0KKysrIC4vaGZheGQvU3RhdHVzLmMrKwlT
dW4gRmViIDIwIDIyOjE5OjI4IDIwMDANCkBAIC0yNjIsMTQgKzI2MiwxNCBA
QA0KIAkJaWYgKGNvbmZpZy5tYXhSZWN2UGFnZXMgPT0gKHVfaW50KSAtMSkN
CiAJCSAgICBzdHJjcHkodG1wYnVmLCAiSU5GIik7DQogCQllbHNlDQotCQkg
ICAgc3ByaW50Zih0bXBidWYsICIldSIsIGNvbmZpZy5tYXhSZWN2UGFnZXMp
Ow0KKwkJICAgIHNucHJpbnRmKHRtcGJ1ZiwgMjAsICIldSIsIGNvbmZpZy5t
YXhSZWN2UGFnZXMpOw0KIAkJZnByaW50ZihmZCwgZnNwZWMsIGNvbmZpZy5t
YXhSZWN2UGFnZXMpOw0KIAkJYnJlYWs7DQogCSAgICBjYXNlICdzJzoNCiAJ
CWZwcmludGYoZmQsIGZzcGVjLCAoY29uc3QgY2hhciopIGNvbmZpZy5zdGF0
dXMpOw0KIAkJYnJlYWs7DQogCSAgICBjYXNlICd0JzoNCi0JCXNwcmludGYo
dG1wYnVmLCAiJTA1eDolMDV4IiwNCisJCXNucHJpbnRmKHRtcGJ1ZiwgMjAs
ICIlMDV4OiUwNXgiLA0KIAkJICAgIGNvbmZpZy50cmFjaW5nTGV2ZWwmMHhm
ZmZmZiwNCiAJCSAgICBjb25maWcubG9nVHJhY2luZ0xldmVsJjB4ZmZmZmYp
Ow0KIAkJZnByaW50ZihmZCwgZnNwZWMsIHRtcGJ1Zik7DQpkaWZmIC1ydSAv
dG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL21hbi9jb25m
aWcuNGYgLi9tYW4vY29uZmlnLjRmDQotLS0gL3RtcC9vbGQvaHlsYWZheC93
b3JrL2h5bGFmYXgtdjQuMHBsMi9tYW4vY29uZmlnLjRmCVNhdCBGZWIgMTQg
MTE6NTA6NDYgMTk5OA0KKysrIC4vbWFuL2NvbmZpZy40ZglTdW4gRmViIDIw
IDIyOjE5OjI4IDIwMDANCkBAIC0xNDQ2LDcgKzE0NDYsNyBAQA0KIFRoZSBj
b21tYW5kIHRvIHBsYWNlIGEgcGhvbmUgY2FsbC4NCiBUaGUgc3RyaW5nIGlz
IGFzc3VtZWQgdG8gYmUgc3VpdGFibGUgZm9yIHVzZQ0KIGFzIGEgcGFyYW1l
dGVyIHRvIHRoZQ0KLS5JUiBzcHJpbnRmICgzUykNCisuSVIgc25wcmludGYg
KDNTKQ0KIGZ1bmN0aW9uOyBzbyB0aGUgYGAlJycgY2hhcmFjdGVyIHNob3Vs
ZCBiZSBlc2NhcGVkIGFzIGBgJSUnJy4NCiBUaGUgZGlhbCBjb21tYW5kIG11
c3QgaW5jbHVkZSBhIHNpbmdsZSBgYCVzJycgd2hlcmUgdGhlIG51bWJlcg0K
IHRoYXQgaXMgdG8gYmUgZGlhbGVkIGlzIHRvIGJlIHN1YnN0aXR1dGVkLg0K
ZGlmZiAtcnUgL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBs
Mi9wb3J0L3N5c2xvZy5jIC4vcG9ydC9zeXNsb2cuYw0KLS0tIC90bXAvb2xk
L2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIvcG9ydC9zeXNsb2cuYwlT
YXQgRmViIDE0IDExOjUwOjQyIDE5OTgNCisrKyAuL3BvcnQvc3lzbG9nLmMJ
TW9uIEZlYiAyMSAxNTowOTowNyAyMDAwDQpAQCAtODgsNyArODgsNyBAQA0K
IAlyZWdpc3RlciBpbnQgY250Ow0KIAlyZWdpc3RlciBjaGFyICpwOw0KIAl0
aW1lX3Qgbm93LCB0aW1lKCk7DQotCWludCBmZCwgc2F2ZWRfZXJybm87DQor
CWludCBmZCwgc2F2ZWRfZXJybm8sIG47DQogCWNoYXIgdGJ1ZlsyMDQ4XSwg
Zm10X2NweVsxMDI0XSwgKnN0ZHAsICpjdGltZSgpOw0KIA0KIAkvKiBjaGVj
ayBmb3IgaW52YWxpZCBiaXRzIG9yIG5vIHByaW9yaXR5IHNldCAqLw0KQEAg
LTEwNCwyMSArMTA0LDIxIEBADQogDQogCS8qIGJ1aWxkIHRoZSBtZXNzYWdl
ICovDQogCSh2b2lkKXRpbWUoJm5vdyk7DQotCSh2b2lkKXNwcmludGYodGJ1
ZiwgIjwlZD4lLjE1cyAiLCBwcmksIGN0aW1lKCZub3cpICsgNCk7DQotCWZv
ciAocCA9IHRidWY7ICpwOyArK3ApOw0KKwkodm9pZClzbnByaW50Zih0YnVm
LCAyMDQ4LCAiPCVkPiUuMTVzICIsIHByaSwgY3RpbWUoJm5vdykgKyA0KTsN
CisJZm9yIChwID0gdGJ1Ziwgbj0wOyAqcDsgKytwLCBuKyspOw0KIAlpZiAo
TG9nU3RhdCAmIExPR19QRVJST1IpDQogCQlzdGRwID0gcDsNCiAJaWYgKExv
Z1RhZykgew0KIAkJKHZvaWQpc3RyY3B5KHAsIExvZ1RhZyk7DQotCQlmb3Ig
KDsgKnA7ICsrcCk7DQorCQlmb3IgKDsgKnA7ICsrcCwgbisrKTsNCiAJfQ0K
IAlpZiAoTG9nU3RhdCAmIExPR19QSUQpIHsNCi0JCSh2b2lkKXNwcmludGYo
cCwgIlslZF0iLCBnZXRwaWQoKSk7DQotCQlmb3IgKDsgKnA7ICsrcCk7DQor
CQkodm9pZClzbnByaW50ZihwLCAyMDQ4IC0gbiwgIlslZF0iLCBnZXRwaWQo
KSk7DQorCQlmb3IgKDsgKnA7ICsrcCwgbisrKTsNCiAJfQ0KIAlpZiAoTG9n
VGFnKSB7DQotCQkqcCsrID0gJzonOw0KLQkJKnArKyA9ICcgJzsNCisJCSpw
KysgPSAnOic7IG4rKzsNCisJCSpwKysgPSAnICc7IG4rKzsNCiAJfQ0KIA0K
IAkvKiBzdWJzdGl0dXRlIGVycm9yIG1lc3NhZ2UgZm9yICVtICovDQpAQCAt
MTM3LDcgKzEzNyw3IEBADQogCQkqdDEgPSAnXDAnOw0KIAl9DQogDQotCSh2
b2lkKXZzcHJpbnRmKHAsIGZtdF9jcHksIGFwKTsNCisJKHZvaWQpdnNucHJp
bnRmKHAsIDIwNDggLSBuLCBmbXRfY3B5LCBhcCk7DQogDQogCWNudCA9IHN0
cmxlbih0YnVmKTsNCiANCkBAIC0xNzAsNyArMTcwLDcgQEANCiAJICogaXMg
dGhlIG9uZSBmcm9tIHRoZSBzeXNsb2dkIGZhaWx1cmUuDQogCSAqLw0KIAlp
ZiAoKGZkID0gb3BlbihfUEFUSF9DT05TT0xFLCBPX1dST05MWSwgMCkpID49
IDApIHsNCi0JCSh2b2lkKXN0cmNhdCh0YnVmLCAiXHJcbiIpOw0KKwkJKHZv
aWQpc3RybGNhdCh0YnVmLCAiXHJcbiIsIDIwNDgpOw0KIAkJY250ICs9IDI7
DQogCQlwID0gaW5kZXgodGJ1ZiwgJz4nKSArIDE7DQogCQkodm9pZCl3cml0
ZShmZCwgcCwgY250IC0gKHAgLSB0YnVmKSk7DQpkaWZmIC1ydSAvdG1wL29s
ZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL3BvcnQvdnN5c2xvZy5j
IC4vcG9ydC92c3lzbG9nLmMNCi0tLSAvdG1wL29sZC9oeWxhZmF4L3dvcmsv
aHlsYWZheC12NC4wcGwyL3BvcnQvdnN5c2xvZy5jCVNhdCBGZWIgMTQgMTE6
NTA6NDIgMTk5OA0KKysrIC4vcG9ydC92c3lzbG9nLmMJU3VuIEZlYiAyMCAy
MjoxOToyOCAyMDAwDQpAQCAtNDksNiArNDksNiBAQA0KIAkJKmNwKysgPSBj
Ow0KIAkgICAgKmNwID0gJ1wwJzsNCiAJfQ0KLQkodm9pZCkgdnNwcmludGYo
dGJ1ZiwgZm10X2NweSwgYXApOw0KKwkodm9pZCkgdnNucHJpbnRmKHRidWYs
IDIwNDgsIGZtdF9jcHksIGFwKTsNCiAJKHZvaWQpIHN5c2xvZyhwcmksICIl
cyIsIHRidWYpOw0KIH0NCmRpZmYgLXJ1IC90bXAvb2xkL2h5bGFmYXgvd29y
ay9oeWxhZmF4LXY0LjBwbDIvcmVnZXgvZW5naW5lLmMgLi9yZWdleC9lbmdp
bmUuYw0KLS0tIC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBw
bDIvcmVnZXgvZW5naW5lLmMJU2F0IEZlYiAxNCAxMTo0ODoxOSAxOTk4DQor
KysgLi9yZWdleC9lbmdpbmUuYwlTdW4gRmViIDIwIDIyOjE5OjI4IDIwMDAN
CkBAIC0xMDY1LDkgKzEwNjUsOSBAQA0KIAlzdGF0aWMgY2hhciBwYnVmWzEw
XTsNCiANCiAJaWYgKGlzcHJpbnQoY2gpIHx8IGNoID09ICcgJykNCi0JCXNw
cmludGYocGJ1ZiwgIiVjIiwgY2gpOw0KKwkJc25wcmludGYocGJ1ZiwgMTAs
ICIlYyIsIGNoKTsNCiAJZWxzZQ0KLQkJc3ByaW50ZihwYnVmLCAiXFwlbyIs
IGNoKTsNCisJCXNucHJpbnRmKHBidWYsIDEwLCAiXFwlbyIsIGNoKTsNCiAJ
cmV0dXJuKHBidWYpOw0KIH0NCiAjZW5kaWYNCmRpZmYgLXJ1IC90bXAvb2xk
L2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIvcmVnZXgvcmVnZXJyb3Iu
YyAuL3JlZ2V4L3JlZ2Vycm9yLmMNCi0tLSAvdG1wL29sZC9oeWxhZmF4L3dv
cmsvaHlsYWZheC12NC4wcGwyL3JlZ2V4L3JlZ2Vycm9yLmMJU2F0IEZlYiAx
NCAxMTo0ODoyMSAxOTk4DQorKysgLi9yZWdleC9yZWdlcnJvci5jCU1vbiBG
ZWIgMjEgMTU6MDM6MzEgMjAwMA0KQEAgLTU3LDcgKzU3LDcgQEANCiAjZW5k
aWYNCiANCiAvKiA9PT0gcmVnZXJyb3IuYyA9PT0gKi8NCi1zdGF0aWMgY2hh
ciAqcmVnYXRvaShjb25zdCByZWdleF90ICpwcmVnLCBjaGFyICpsb2NhbGJ1
Zik7DQorc3RhdGljIGNoYXIgKnJlZ2F0b2koY29uc3QgcmVnZXhfdCAqcHJl
ZywgY2hhciAqbG9jYWxidWYsIGludCBtYXhuKTsNCiANCiAjaWZkZWYgX19j
cGx1c3BsdXMNCiB9DQpAQCAtMTI2LDcgKzEyNiw3IEBADQogCWNoYXIgY29u
dmJ1Zls1MF07DQogDQogCWlmIChlcnJjb2RlID09IFJFR19BVE9JKQ0KLQkJ
cyA9IHJlZ2F0b2kocHJlZywgY29udmJ1Zik7DQorCQlzID0gcmVnYXRvaShw
cmVnLCBjb252YnVmLCA1MCk7DQogCWVsc2Ugew0KIAkJZm9yIChyID0gcmVy
cnM7IHItPmNvZGUgIT0gMDsgcisrKQ0KIAkJCWlmIChyLT5jb2RlID09IHRh
cmdldCkNCkBAIC0xMzQsOSArMTM0LDkgQEANCiAJDQogCQlpZiAoZXJyY29k
ZSZSRUdfSVRPQSkgew0KIAkJCWlmIChyLT5jb2RlICE9IDApDQotCQkJCSh2
b2lkKSBzdHJjcHkoY29udmJ1Ziwgci0+bmFtZSk7DQorCQkJCSh2b2lkKSBz
dHJsY3B5KGNvbnZidWYsIHItPm5hbWUsIDUwKTsNCiAJCQllbHNlDQotCQkJ
CXNwcmludGYoY29udmJ1ZiwgIlJFR18weCV4IiwgdGFyZ2V0KTsNCisJCQkJ
c25wcmludGYoY29udmJ1ZiwgNTAsICJSRUdfMHgleCIsIHRhcmdldCk7DQog
CQkJYXNzZXJ0KHN0cmxlbihjb252YnVmKSA8IHNpemVvZihjb252YnVmKSk7
DQogCQkJcyA9IGNvbnZidWY7DQogCQl9IGVsc2UNCkBAIC0xNjEsOSArMTYx
LDEwIEBADQogID09IHN0YXRpYyBjaGFyICpyZWdhdG9pKGNvbnN0IHJlZ2V4
X3QgKnByZWcsIGNoYXIgKmxvY2FsYnVmKTsNCiAgKi8NCiBzdGF0aWMgY2hh
ciAqDQotcmVnYXRvaShwcmVnLCBsb2NhbGJ1ZikNCityZWdhdG9pKHByZWcs
IGxvY2FsYnVmLCBtYXhuKQ0KIGNvbnN0IHJlZ2V4X3QgKnByZWc7DQogY2hh
ciAqbG9jYWxidWY7DQoraW50IG1heG47DQogew0KIAlyZWdpc3RlciBzdHJ1
Y3QgcmVyciAqcjsNCiANCkBAIC0xNzMsNiArMTc0LDYgQEANCiAJaWYgKHIt
PmNvZGUgPT0gMCkNCiAJCXJldHVybigiMCIpOw0KIA0KLQlzcHJpbnRmKGxv
Y2FsYnVmLCAiJWQiLCByLT5jb2RlKTsNCisJc25wcmludGYobG9jYWxidWYs
IG1heG4sICIlZCIsIHItPmNvZGUpOw0KIAlyZXR1cm4obG9jYWxidWYpOw0K
IH0NCmRpZmYgLXJ1IC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0
LjBwbDIvc2dpMmZheC9pbWd0b2ZheC5jIC4vc2dpMmZheC9pbWd0b2ZheC5j
DQotLS0gL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBsMi9z
Z2kyZmF4L2ltZ3RvZmF4LmMJU2F0IEZlYiAxNCAxMTo1MDoyMiAxOTk4DQor
KysgLi9zZ2kyZmF4L2ltZ3RvZmF4LmMJU3VuIEZlYiAyMCAyMjoxOToyOCAy
MDAwDQpAQCAtMjE0LDcgKzIxNCw3IEBADQogICAgIFRJRkZTZXRGaWVsZCh0
aWYsIFRJRkZUQUdfUEFHRU5VTUJFUiwgcG4sIG5wYWdlcyk7DQogICAgIFRJ
RkZTZXRGaWVsZCh0aWYsIFRJRkZUQUdfQ0xFQU5GQVhEQVRBLCBDTEVBTkZB
WERBVEFfQ0xFQU4pOw0KICAgICB7IGNoYXIgYnVmWzEwMjRdOw0KLSAgICAg
IHNwcmludGYoYnVmLCAiRGl0aGVyZXJlZCBCJlcgdmVyc2lvbiBvZiAlcyIs
IGlucHV0KTsNCisgICAgICBzbnByaW50ZihidWYsIDEwMjQsICJEaXRoZXJl
cmVkIEImVyB2ZXJzaW9uIG9mICVzIiwgaW5wdXQpOw0KICAgICAgIFRJRkZT
ZXRGaWVsZCh0aWYsIFRJRkZUQUdfSU1BR0VERVNDUklQVElPTiwgYnVmKTsN
CiAgICAgfQ0KICAgICBUSUZGU2V0RmllbGQodGlmLCBUSUZGVEFHX1NPRlRX
QVJFLCAic2dpMmZheCIpOw0KZGlmZiAtcnUgL3RtcC9vbGQvaHlsYWZheC93
b3JrL2h5bGFmYXgtdjQuMHBsMi91dGlsL0NsYXNzMlBhcmFtcy5jKysgLi91
dGlsL0NsYXNzMlBhcmFtcy5jKysNCi0tLSAvdG1wL29sZC9oeWxhZmF4L3dv
cmsvaHlsYWZheC12NC4wcGwyL3V0aWwvQ2xhc3MyUGFyYW1zLmMrKwlTYXQg
RmViIDE0IDExOjQ3OjEyIDE5OTgNCisrKyAuL3V0aWwvQ2xhc3MyUGFyYW1z
LmMrKwlNb24gRmViIDIxIDE1OjA3OjEyIDIwMDANCkBAIC01OSwxNCArNTks
MTUgQEANCiB9DQogDQogc3RhdGljIGNoYXIqDQotYWRkUGFyYW0oY2hhciog
Y3AsIHVfaW50IHYpDQorYWRkUGFyYW0oY2hhciogY3AsIHVfaW50IHYsIGlu
dCAqbWF4bikNCiB7DQogICAgIGlmICh2ICE9ICh1X2ludCktMSkgew0KLQlz
cHJpbnRmKGNwLCAiLCV1Iiwgdik7DQotCXdoaWxlICgqY3AgIT0gJ1wwJykg
Y3ArKzsNCisJc25wcmludGYoY3AsICptYXhuLCAiLCV1Iiwgdik7DQorCXdo
aWxlICgqY3AgIT0gJ1wwJykgeyBjcCsrOyAoKm1heG4pKys7IH0NCiAgICAg
fSBlbHNlIHsNCiAJKmNwKysgPSAnLCc7DQogCSpjcCA9ICdcMCc7DQorCSgq
bWF4bikrKzsNCiAgICAgfQ0KICAgICByZXR1cm4gKGNwKTsNCiB9DQpAQCAt
NzYsMTggKzc3LDE5IEBADQogew0KICAgICBjaGFyIGJ1ZlsxMDI0XTsNCiAg
ICAgY2hhciogY3AgPSBidWY7DQorCWludCBuID0gMTAyNDsNCiANCiAgICAg
aWYgKHZyICE9ICh1X2ludCkgLTEpIHsNCi0Jc3ByaW50ZihjcCwgIiV1Iiwg
dnIpOw0KLQl3aGlsZSAoKmNwICE9ICdcMCcpIGNwKys7DQorCXNucHJpbnRm
KGNwLCBuLCAiJXUiLCB2cik7DQorCXdoaWxlICgqY3AgIT0gJ1wwJykgeyBj
cCsrOyBuLS0gfTsNCiAgICAgfQ0KLSAgICBjcCA9IGFkZFBhcmFtKGNwLCBi
cik7DQotICAgIGNwID0gYWRkUGFyYW0oY3AsIHdkKTsNCi0gICAgY3AgPSBh
ZGRQYXJhbShjcCwgbG4pOw0KLSAgICBjcCA9IGFkZFBhcmFtKGNwLCBkZik7
DQotICAgIGNwID0gYWRkUGFyYW0oY3AsIGVjKTsNCi0gICAgY3AgPSBhZGRQ
YXJhbShjcCwgYmYpOw0KLSAgICBjcCA9IGFkZFBhcmFtKGNwLCBzdCk7DQor
ICAgIGNwID0gYWRkUGFyYW0oY3AsIGJyLCAmbik7DQorICAgIGNwID0gYWRk
UGFyYW0oY3AsIHdkLCAmbik7DQorICAgIGNwID0gYWRkUGFyYW0oY3AsIGxu
LCAmbik7DQorICAgIGNwID0gYWRkUGFyYW0oY3AsIGRmLCAmbik7DQorICAg
IGNwID0gYWRkUGFyYW0oY3AsIGVjLCAmbik7DQorICAgIGNwID0gYWRkUGFy
YW0oY3AsIGJmLCAmbik7DQorICAgIGNwID0gYWRkUGFyYW0oY3AsIHN0LCAm
bik7DQogICAgIHJldHVybiBmeFN0cihidWYpOw0KIH0NCiANCmRpZmYgLXJ1
IC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIvdXRpbC9G
YXhDbGllbnQuYysrIC4vdXRpbC9GYXhDbGllbnQuYysrDQotLS0gL3RtcC9v
bGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBsMi91dGlsL0ZheENsaWVu
dC5jKysJU2F0IEZlYiAxNCAxMTo0NzoxNiAxOTk4DQorKysgLi91dGlsL0Zh
eENsaWVudC5jKysJU3VuIEZlYiAyMCAyMjoxOToyOCAyMDAwDQpAQCAtNjIy
LDcgKzYyMiw3IEBADQogCSAgICB0cmFjZVNlcnZlcigiLT4gQURNSU4gWFhY
WCIpOw0KIAllbHNlIHsNCiAJICAgIGNoYXIgYnVmWzEyOF07DQotCSAgICBz
cHJpbnRmKGJ1ZiwgIi0+ICVzIiwgZm10KTsNCisJICAgIHNucHJpbnRmKGJ1
ZiwgMTI4LCAiLT4gJXMiLCBmbXQpOw0KIAkgICAgdnRyYWNlU2VydmVyKGJ1
ZiwgYXApOw0KIAl9DQogICAgIH0NCmRpZmYgLXJ1IC90bXAvb2xkL2h5bGFm
YXgvd29yay9oeWxhZmF4LXY0LjBwbDIvdXRpbC9QYWdlU2l6ZS5jKysgLi91
dGlsL1BhZ2VTaXplLmMrKw0KLS0tIC90bXAvb2xkL2h5bGFmYXgvd29yay9o
eWxhZmF4LXY0LjBwbDIvdXRpbC9QYWdlU2l6ZS5jKysJU2F0IEZlYiAxNCAx
MTo0NzoyMSAxOTk4DQorKysgLi91dGlsL1BhZ2VTaXplLmMrKwlTdW4gRmVi
IDIwIDIyOjE5OjI4IDIwMDANCkBAIC03Miw3ICs3Miw3IEBADQogUGFnZVNp
emVJbmZvOjpyZWFkUGFnZUluZm9GaWxlKCkNCiB7DQogICAgIGNoYXIgZmls
ZVsxMDI0XTsNCi0gICAgc3ByaW50ZihmaWxlLCAiJXMvJXMiLCBGQVhfTElC
REFUQSwgRkFYX1BBR0VTSVpFUyk7DQorICAgIHNucHJpbnRmKGZpbGUsIDEw
MjQsICIlcy8lcyIsIEZBWF9MSUJEQVRBLCBGQVhfUEFHRVNJWkVTKTsNCiAg
ICAgUGFnZUluZm9BcnJheSogaW5mbyA9IG5ldyBQYWdlSW5mb0FycmF5Ow0K
ICAgICBGSUxFKiBmcCA9IGZvcGVuKGZpbGUsICJyIik7DQogICAgIHVfaW50
IGxpbmVubyA9IDA7DQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsv
aHlsYWZheC12NC4wcGwyL3V0aWwvU05QUENsaWVudC5jKysgLi91dGlsL1NO
UFBDbGllbnQuYysrDQotLS0gL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFm
YXgtdjQuMHBsMi91dGlsL1NOUFBDbGllbnQuYysrCVNhdCBGZWIgMTQgMTE6
NDc6MjUgMTk5OA0KKysrIC4vdXRpbC9TTlBQQ2xpZW50LmMrKwlTdW4gRmVi
IDIwIDIyOjE5OjI4IDIwMDANCkBAIC02MzgsNyArNjM4LDcgQEANCiAJICAg
IHRyYWNlU2VydmVyKCItPiBMT0dJIFhYWFgiKTsNCiAJZWxzZSB7DQogCSAg
ICBjaGFyIGJ1ZlsxMjhdOw0KLQkgICAgc3ByaW50ZihidWYsICItPiAlcyIs
IGZtdCk7DQorCSAgICBzbnByaW50ZihidWYsIDEyOCwgIi0+ICVzIiwgZm10
KTsNCiAJICAgIHZ0cmFjZVNlcnZlcihidWYsIGFwKTsNCiAJfQ0KICAgICB9
DQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4w
cGwyL3V0aWwvU3RhY2tCdWZmZXIuYysrIC4vdXRpbC9TdGFja0J1ZmZlci5j
KysNCi0tLSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwy
L3V0aWwvU3RhY2tCdWZmZXIuYysrCVNhdCBGZWIgMTQgMTE6NDc6MjYgMTk5
OA0KKysrIC4vdXRpbC9TdGFja0J1ZmZlci5jKysJU3VuIEZlYiAyMCAyMjox
OToyOCAyMDAwDQpAQCAtMTA1LDcgKzEwNSw3IEBADQogZnhTdGFja0J1ZmZl
cjo6dnB1dChjb25zdCBjaGFyKiBmbXQsIHZhX2xpc3QgYXApDQogew0KICAg
ICBjaGFyIGJ1Zls4KjEwMjRdOw0KLSAgICB2c3ByaW50ZihidWYsIGZtdCwg
YXApOw0KKyAgICB2c25wcmludGYoYnVmLCA4KjEwMjQsIGZtdCwgYXApOw0K
ICAgICBwdXQoYnVmKTsNCiB9DQogDQpkaWZmIC1ydSAvdG1wL29sZC9oeWxh
ZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL3V0aWwvU3RyLmMrKyAuL3V0aWwv
U3RyLmMrKw0KLS0tIC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0
LjBwbDIvdXRpbC9TdHIuYysrCVNhdCBGZWIgMTQgMTE6NDc6MjcgMTk5OA0K
KysrIC4vdXRpbC9TdHIuYysrCVN1biBGZWIgMjAgMjI6MTk6MjggMjAwMA0K
QEAgLTkxLDcgKzkxLDcgQEANCiB7DQogICAgIGNoYXIgYnVmZmVyW05VTUJV
RlNJWkVdOw0KICAgICBpZiAoIWZvcm1hdCkgZm9ybWF0ID0gIiVkIjsNCi0g
ICAgc3ByaW50ZihidWZmZXIsZm9ybWF0LGEpOw0KKyAgICBzbnByaW50Zihi
dWZmZXIsIE5VTUJVRlNJWkUsIGZvcm1hdCxhKTsNCiAgICAgc2xlbmd0aCA9
IHN0cmxlbihidWZmZXIpICsgMTsNCiAgICAgZGF0YSA9IChjaGFyKikgbWFs
bG9jKHNsZW5ndGgpOw0KICAgICBtZW1jcHkoZGF0YSxidWZmZXIsc2xlbmd0
aCk7DQpAQCAtMTAxLDcgKzEwMSw3IEBADQogew0KICAgICBjaGFyIGJ1ZmZl
cltOVU1CVUZTSVpFXTsNCiAgICAgaWYgKCFmb3JtYXQpIGZvcm1hdCA9ICIl
bGQiOw0KLSAgICBzcHJpbnRmKGJ1ZmZlcixmb3JtYXQsYSk7DQorICAgIHNu
cHJpbnRmKGJ1ZmZlciwgTlVNQlVGU0laRSwgZm9ybWF0LGEpOw0KICAgICBz
bGVuZ3RoID0gc3RybGVuKGJ1ZmZlcikgKyAxOw0KICAgICBkYXRhID0gKGNo
YXIqKSBtYWxsb2Moc2xlbmd0aCk7DQogICAgIG1lbWNweShkYXRhLGJ1ZmZl
cixzbGVuZ3RoKTsNCkBAIC0xMTEsNyArMTExLDcgQEANCiB7DQogICAgIGNo
YXIgYnVmZmVyW05VTUJVRlNJWkVdOw0KICAgICBpZiAoIWZvcm1hdCkgZm9y
bWF0ID0gIiVnIjsNCi0gICAgc3ByaW50ZihidWZmZXIsZm9ybWF0LGEpOw0K
KyAgICBzbnByaW50ZihidWZmZXIsIE5VTUJVRlNJWkUsIGZvcm1hdCxhKTsN
CiAgICAgc2xlbmd0aCA9IHN0cmxlbihidWZmZXIpICsgMTsNCiAgICAgZnhB
c3NlcnQoc2xlbmd0aD4xLCAiU3RyOjpTdHIoZmxvYXQpOiBib2d1cyBjb252
ZXJzaW9uIik7DQogICAgIGRhdGEgPSAoY2hhciopIG1hbGxvYyhzbGVuZ3Ro
KTsNCkBAIC0xMjIsNyArMTIyLDcgQEANCiB7DQogICAgIGNoYXIgYnVmZmVy
W05VTUJVRlNJWkVdOw0KICAgICBpZiAoIWZvcm1hdCkgZm9ybWF0ID0gIiVs
ZyI7DQotICAgIHNwcmludGYoYnVmZmVyLGZvcm1hdCxhKTsNCisgICAgc25w
cmludGYoYnVmZmVyLCBOVU1CVUZTSVpFLCBmb3JtYXQsYSk7DQogICAgIHNs
ZW5ndGggPSBzdHJsZW4oYnVmZmVyKSArIDE7DQogICAgIGZ4QXNzZXJ0KHNs
ZW5ndGg+MSwgIlN0cjo6U3RyKGRvdWJsZSk6IGJvZ3VzIGNvbnZlcnNpb24i
KTsNCiAgICAgZGF0YSA9IChjaGFyKikgbWFsbG9jKHNsZW5ndGgpOyAvLyBY
WFggYXNzdW1lIHNsZW5ndGg+MQ0KQEAgLTE0MSw3ICsxNDEsNyBAQA0KICAg
ICBjaGFyIGJ1Zls0MDk2XTsNCiAgICAgdmFfbGlzdCBhcDsNCiAgICAgdmFf
c3RhcnQoYXAsIGZtdCk7DQotICAgIHZzcHJpbnRmKGJ1ZiwgZm10LCBhcCk7
DQorICAgIHZzbnByaW50ZihidWYsIDQwOTYsIGZtdCwgYXApOw0KICAgICB2
YV9lbmQoYXApOw0KICAgICByZXR1cm4gZnhTdHIoYnVmKTsNCiB9DQpAQCAt
MTUwLDcgKzE1MCw3IEBADQogZnhTdHI6OnZmb3JtYXQoY29uc3QgY2hhciog
Zm10LCB2YV9saXN0IGFwKQ0KIHsNCiAgICAgY2hhciBidWZbNDA5Nl07DQot
ICAgIHZzcHJpbnRmKGJ1ZiwgZm10LCBhcCk7DQorICAgIHZzbnByaW50Zihi
dWYsIDQwOTYsIGZtdCwgYXApOw0KICAgICByZXR1cm4gZnhTdHIoYnVmKTsN
CiB9DQogDQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZh
eC12NC4wcGwyL3V0aWwvU3RyLmggLi91dGlsL1N0ci5oDQotLS0gL3RtcC9v
bGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBsMi91dGlsL1N0ci5oCVNh
dCBGZWIgMTQgMTE6NDc6NTAgMTk5OA0KKysrIC4vdXRpbC9TdHIuaAlTdW4g
RmViIDIwIDIyOjE5OjI4IDIwMDANCkBAIC05Myw4ICs5Myw4IEBADQogICAg
IGZ4U3RyKGNvbnN0IGZ4VGVtcFN0ciYpOw0KICAgICB+ZnhTdHIoKTsNCiAN
Ci0gICAgc3RhdGljIGZ4U3RyIGZvcm1hdChjb25zdCBjaGFyKiBmbXQgLi4u
KTsJLy8gc3ByaW50ZiBzb3J0IG9mDQotICAgIHN0YXRpYyBmeFN0ciB2Zm9y
bWF0KGNvbnN0IGNoYXIqIGZtdCwgdmFfbGlzdCBhcCk7CS8vIHZzcHJpbnRm
IHNvcnQgb2YNCisgICAgc3RhdGljIGZ4U3RyIGZvcm1hdChjb25zdCBjaGFy
KiBmbXQgLi4uKTsJLy8gc25wcmludGYgc29ydCBvZg0KKyAgICBzdGF0aWMg
ZnhTdHIgdmZvcm1hdChjb25zdCBjaGFyKiBmbXQsIHZhX2xpc3QgYXApOwkv
LyB2c25wcmludGYgc29ydCBvZg0KICAgICBzdGF0aWMgZnhTdHIgbnVsbDsJ
CQkJLy8gbnVsbCBzdHJpbmcgZm9yIGdlbmVyYWwgdXNlDQogICAgIC8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vDQogICAgIHVfbG9uZyBoYXNoKCkgY29uc3Q7DQpkaWZmIC1ydSAvdG1w
L29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12NC4wcGwyL3V0aWwvZmF4Y29u
ZmlnLmMgLi91dGlsL2ZheGNvbmZpZy5jDQotLS0gL3RtcC9vbGQvaHlsYWZh
eC93b3JrL2h5bGFmYXgtdjQuMHBsMi91dGlsL2ZheGNvbmZpZy5jCU1vbiBG
ZWIgMjEgMTU6MTk6NDQgMjAwMA0KKysrIC4vdXRpbC9mYXhjb25maWcuYwlT
dW4gRmViIDIwIDIyOjE5OjI4IDIwMDANCkBAIC04Myw3ICs4Myw3IEBADQog
CWlmIChkZXZpZFswXSA9PSBGQVhfRklGT1swXSkNCiAJICAgIHN0cmNweShm
aWZvbmFtZSwgZGV2aWQpOw0KIAllbHNlDQotCSAgICBzcHJpbnRmKGZpZm9u
YW1lLCAiJXMuJS4qcyIsIEZBWF9GSUZPLA0KKwkgICAgc25wcmludGYoZmlm
b25hbWUsIDgwLCAiJXMuJS4qcyIsIEZBWF9GSUZPLA0KIAkJc2l6ZW9mIChm
aWZvbmFtZSkgLSBzaXplb2YgKEZBWF9GSUZPKSwgZGV2aWQpOw0KICAgICB9
IGVsc2UNCiAJc3RyY3B5KGZpZm9uYW1lLCBGQVhfRklGTyk7DQpAQCAtMTEx
LDEwICsxMTEsMTAgQEANCiAJCXF1b3RlID0gMTsNCiAJICAgIGNtZCA9IG1h
bGxvYyhzdHJsZW4oYXJndltvcHRpbmRdKStzdHJsZW4oYXJndltvcHRpbmQr
MV0pKzEwKTsNCiAJICAgIGlmIChxdW90ZSkNCi0JCXNwcmludGYoY21kLCAi
QyVzJXM6XCIlc1wiIiwNCisJCXNucHJpbnRmKGNtZCwgc3RybGVuKGFyZ3Zb
b3B0aW5kXSkrc3RybGVuKGFyZ3Zbb3B0aW5kKzFdKzEwLCAiQyVzJXM6XCIl
c1wiIiwNCiAJCSAgICBpc1F1ZXVlciA/ICI6IiA6ICIiLCBhcmd2W29wdGlu
ZF0sIGFyZ3Zbb3B0aW5kKzFdKTsNCiAJICAgIGVsc2UNCi0JCXNwcmludGYo
Y21kLCAiQyVzJXM6JXMiLA0KKwkJc25wcmludGYoY21kLCBzdHJsZW4oYXJn
dltvcHRpbmRdK3N0cmxlbihhcmd2W29wdGluZCsxXSsxMCkiQyVzJXM6JXMi
LA0KIAkJICAgIGlzUXVldWVyID8gIjoiIDogIiIsIGFyZ3Zbb3B0aW5kXSwg
YXJndltvcHRpbmQrMV0pOw0KIAkgICAgaWYgKHdyaXRlKGZpZm8sIGNtZCwg
c3RybGVuKGNtZCkpICE9IHN0cmxlbihjbWQpKQ0KIAkJZmF0YWwoIiVzOiBG
SUZPIHdyaXRlIGZhaWxlZCBmb3IgY29tbWFuZCAoJXMpIiwNCmRpZmYgLXJ1
IC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIvdXRpbC9m
YXhtb2RlbS5jIC4vdXRpbC9mYXhtb2RlbS5jDQotLS0gL3RtcC9vbGQvaHls
YWZheC93b3JrL2h5bGFmYXgtdjQuMHBsMi91dGlsL2ZheG1vZGVtLmMJTW9u
IEZlYiAyMSAxNToxOTo0NCAyMDAwDQorKysgLi91dGlsL2ZheG1vZGVtLmMJ
U3VuIEZlYiAyMCAyMjoxOToyOCAyMDAwDQpAQCAtMjQzLDkgKzI0Myw5IEBA
DQogICAgIGlmIChvcHRpbmQgIT0gYXJnYy0xKQ0KIAlmYXRhbCgiTWlzc2lu
ZyBtb2RlbSBkZXZpY2UuXG51c2FnZTogJXMgJXMgbW9kZW0iLCBhcmd2WzBd
LCB1c2FnZSk7DQogICAgIGlmIChzdHJuY21wKGFyZ3Zbb3B0aW5kXSwgX1BB
VEhfREVWLCBzdHJsZW4oX1BBVEhfREVWKSkgPT0gMCkNCi0Jc3RyY3B5KGRl
dm5hbWUsIGFyZ3Zbb3B0aW5kXStzdHJsZW4oX1BBVEhfREVWKSk7DQorCXN0
cmxjcHkoZGV2bmFtZSwgYXJndltvcHRpbmRdK3N0cmxlbihfUEFUSF9ERVYp
LCA4MCk7DQogICAgIGVsc2UNCi0Jc3RyY3B5KGRldm5hbWUsIGFyZ3Zbb3B0
aW5kXSk7DQorCXN0cmxjcHkoZGV2bmFtZSwgYXJndltvcHRpbmRdLCA4MCk7
DQogICAgIGZvciAoY3AgPSBkZXZuYW1lOyBjcCA9IHN0cmNocihjcCwgJy8n
KTsgKmNwKysgPSAnXycpDQogCTsNCiAgICAgaWYgKGNoZGlyKHNwb29sZGly
KSA8IDApDQpAQCAtMjU0LDkgKzI1NCw5IEBADQogICAgIGlmIChmaWZvIDwg
MCkNCiAJZmF0YWwoIiVzOiBvcGVuOiAlcyIsIEZBWF9GSUZPLCBzdHJlcnJv
cihlcnJubykpOw0KICAgICBpZiAocHJpb3JpdHkgIT0gLTEpDQotCXNwcmlu
dGYoY21kLCAiKyVzOlIlYyUwOHg6JXgiLCBkZXZuYW1lLCBjYW5wb2xsLCBj
YXBzLCBwcmlvcml0eSk7DQorCXNucHJpbnRmKGNtZCwgODAsICIrJXM6UiVj
JTA4eDoleCIsIGRldm5hbWUsIGNhbnBvbGwsIGNhcHMsIHByaW9yaXR5KTsN
CiAgICAgZWxzZQ0KLQlzcHJpbnRmKGNtZCwgIislczpSJWMlMDh4IiwgZGV2
bmFtZSwgY2FucG9sbCwgY2Fwcyk7DQorCXNucHJpbnRmKGNtZCwgODAsICIr
JXM6UiVjJTA4eCIsIGRldm5hbWUsIGNhbnBvbGwsIGNhcHMpOw0KICAgICBp
ZiAod3JpdGUoZmlmbywgY21kLCBzdHJsZW4oY21kKSkgIT0gc3RybGVuKGNt
ZCkpDQogCWZhdGFsKCIlczogRklGTyB3cml0ZSBmYWlsZWQgZm9yIGNvbW1h
bmQgKCVzKSIsDQogCSAgICBhcmd2WzBdLCBzdHJlcnJvcihlcnJubykpOw0K
ZGlmZiAtcnUgL3RtcC9vbGQvaHlsYWZheC93b3JrL2h5bGFmYXgtdjQuMHBs
Mi91dGlsL2ZheG1zZy5jIC4vdXRpbC9mYXhtc2cuYw0KLS0tIC90bXAvb2xk
L2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIvdXRpbC9mYXhtc2cuYwlN
b24gRmViIDIxIDE1OjE5OjQ0IDIwMDANCisrKyAuL3V0aWwvZmF4bXNnLmMJ
U3VuIEZlYiAyMCAyMjoxOToyOCAyMDAwDQpAQCAtMTA4LDEyICsxMDgsMTIg
QEANCiAJfQ0KICAgICBpZiAob3B0aW5kID09IGFyZ2MtMSkgew0KIAlpZiAo
YXJndltvcHRpbmRdWzBdID09IEZBWF9GSUZPWzBdKQ0KLQkgICAgc3RyY3B5
KGZpZm9uYW1lLCBhcmd2W29wdGluZF0pOw0KKwkgICAgc3RybGNweShmaWZv
bmFtZSwgYXJndltvcHRpbmRdLCAyNTYpOw0KIAllbHNlDQotCSAgICBzcHJp
bnRmKGZpZm9uYW1lLCAiJXMuJS4qcyIsIEZBWF9GSUZPLA0KKwkgICAgc25w
cmludGYoZmlmb25hbWUsIDI1NiwgIiVzLiUuKnMiLCBGQVhfRklGTywNCiAJ
CXNpemVvZiAoZmlmb25hbWUpIC0gc2l6ZW9mIChGQVhfRklGTyksIGFyZ3Zb
b3B0aW5kXSk7DQogICAgIH0gZWxzZSBpZiAoIW1vZGVtUmVxdWlyZWQpIHsN
Ci0Jc3RyY3B5KGZpZm9uYW1lLCBGQVhfRklGTyk7DQorCXN0cmxjcHkoZmlm
b25hbWUsIEZBWF9GSUZPLCAyNTYpOw0KICAgICB9IGVsc2UNCiAJZmF0YWwo
InVzYWdlOiAlcyAlcyIsIGFyZ3ZbMF0sIHVzYWdlKTsNCiAgICAgZm9yIChj
cCA9IGZpZm9uYW1lOyBjcCA9IHN0cmNocihjcCwgJy8nKTsgKmNwKysgPSAn
XycpDQpAQCAtMTIzLDcgKzEyMyw3IEBADQogICAgIGZpZm8gPSBvcGVuKGZp
Zm9uYW1lLCBPX1dST05MWXxPX05ERUxBWSk7DQogICAgIGlmIChmaWZvIDwg
MCkNCiAJZmF0YWwoIiVzOiBvcGVuOiAlcyIsIGZpZm9uYW1lLCBzdHJlcnJv
cihlcnJubykpOw0KLSAgICBzcHJpbnRmKGNtZCwgY21kZm10LCBhcmcpOw0K
KyAgICBzbnByaW50ZihjbWQsIDgwLCBjbWRmbXQsIGFyZyk7DQogICAgIGlm
ICh3cml0ZShmaWZvLCBjbWQsIHN0cmxlbihjbWQpKSAhPSBzdHJsZW4oY21k
KSkNCiAJZmF0YWwoIkZJRk8gd3JpdGUgZmFpbGVkIGZvciBjb21tYW5kICgl
cykiLCBzdHJlcnJvcihlcnJubykpOw0KICAgICAodm9pZCkgY2xvc2UoZmlm
byk7DQpkaWZmIC1ydSAvdG1wL29sZC9oeWxhZmF4L3dvcmsvaHlsYWZheC12
NC4wcGwyL3V0aWwvZmF4c3RhdGUuYyAuL3V0aWwvZmF4c3RhdGUuYw0KLS0t
IC90bXAvb2xkL2h5bGFmYXgvd29yay9oeWxhZmF4LXY0LjBwbDIvdXRpbC9m
YXhzdGF0ZS5jCU1vbiBGZWIgMjEgMTU6MTk6NDQgMjAwMA0KKysrIC4vdXRp
bC9mYXhzdGF0ZS5jCVN1biBGZWIgMjAgMjI6MTk6MjggMjAwMA0KQEAgLTEx
Myw3ICsxMTMsNyBAQA0KIAl9DQogICAgIGlmIChvcHRpbmQgIT0gYXJnYy0x
KQ0KIAlmYXRhbCgiQmFkIG9wdGlvbiBgJWMnOyB1c2FnZTogJXMgJXMgbW9k
ZW0iLCBjLCBhcmd2WzBdLCB1c2FnZSk7DQotICAgIHN0cmNweShkZXZpZCwg
YXJndltvcHRpbmRdKTsNCisgICAgc3RybGNweShkZXZpZCwgYXJndltvcHRp
bmRdLCAyNTYpOw0KICAgICBmb3IgKGNwID0gZGV2aWQ7IGNwID0gc3RyY2hy
KGNwLCAnLycpOyAqY3ArKyA9ICdfJykNCiAJOw0KICAgICBpZiAoY2hkaXIo
c3Bvb2xkaXIpIDwgMCkNCkBAIC0xMjYsMTYgKzEyNiwxNiBAQA0KIAlmaWZv
ID0gb3BlbihGQVhfRklGTywgT19XUk9OTFl8T19OREVMQVkpOw0KIAlpZiAo
ZmlmbyA8IDApDQogCSAgICBmYXRhbCgiJXM6IG9wZW46ICVzIiwgRkFYX0ZJ
Rk8sIHN0cmVycm9yKGVycm5vKSk7DQotCXNwcmludGYoY21kLCAiKyVzOiVz
IiwgZGV2aWQsIGFyZyk7DQorCXNucHJpbnRmKGNtZCwgODAsICIrJXM6JXMi
LCBkZXZpZCwgYXJnKTsNCiAJaWYgKHdyaXRlKGZpZm8sIGNtZCwgc3RybGVu
KGNtZCkpICE9IHN0cmxlbihjbWQpKQ0KIAkgICAgZmF0YWwoIkZJRk8gd3Jp
dGUgZmFpbGVkIGZvciBjb21tYW5kICglcykiLCBzdHJlcnJvcihlcnJubykp
Ow0KICAgICB9IGVsc2Ugew0KLQlzcHJpbnRmKGZpZm9uYW1lLCAiJXMuJS4q
cyIsIEZBWF9GSUZPLA0KKwlzbnByaW50ZihmaWZvbmFtZSwgMjU2LCAiJXMu
JS4qcyIsIEZBWF9GSUZPLA0KIAkgICAgc2l6ZW9mIChmaWZvbmFtZSkgLSBz
aXplb2YgKEZBWF9GSUZPKSwgZGV2aWQpOw0KIAlmaWZvID0gb3BlbihmaWZv
bmFtZSwgT19XUk9OTFl8T19OREVMQVkpOw0KIAlpZiAoZmlmbyA8IDApIA0K
IAkgICAgZmF0YWwoIiVzOiBvcGVuOiAlcyIsIGZpZm9uYW1lLCBzdHJlcnJv
cihlcnJubykpOw0KLQlzcHJpbnRmKGNtZCwgIlMlcyIsIGFyZyk7DQorCXNu
cHJpbnRmKGNtZCwgODAsICJTJXMiLCBhcmcpOw0KIAlpZiAod3JpdGUoZmlm
bywgY21kLCBzdHJsZW4oY21kKSkgIT0gc3RybGVuKGNtZCkpDQogCSAgICBm
YXRhbCgiRklGTyB3cml0ZSBmYWlsZWQgZm9yIGNvbW1hbmQgKCVzKSIsIHN0
cmVycm9yKGVycm5vKSk7DQogICAgIH0NCg==
--0-1812434641-951170710=:25667--


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-ports" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0002211404090.25667-200000>