Re: texinfo 4.11.90 pretest

Peter Breitenlohner <[email protected]> Mon, 25 Feb 2008 16:15:31 +0100 (CET)
Newsgroups gmane.comp.tex.texinfo.bugs,gmane.comp.tex.texinfo.pretest
Message-ID <[email protected]>
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--1803957763-510385146-1203952531=:15997
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

On Fri, 22 Feb 2008, Karl Berry wrote:

> I uploaded a texinfo pretest release at
> http://alpha.gnu.org/gnu/texinfo/texinfo-4.11.90.tar.gz.  Please try it
> if you can.

Hi Karl,

just fetched this and did
 	../SRCDIR/configure --disable-nls
 	make
 	make check
 	make DESTRIR=somewhere install

At first two of the tests (ii-0041-test, ii-0050-test) went into an endless
loop, caused by the buggy zdiff from gzip-1.3.9. After upgrading to
gzip-1.3.12 everything was fine.

However, there were two gcc warnings (`discards qualifier'). I think they
prevent texinfo from being built with a C++ compiler.

Anyway, attached is a patch cleaning some of that `const' mess, and at the
same time removing quite a lot of `(char *)' casts.

Another patch adds a space in install-info's usage message, such that
help2man handles this correctly.
Maybe you prefer to move everything one column to the right?

I'll have a look at texi2dvi's usage message and see what can be done there.
Thus another patch might follow.

regards		Peter
--1803957763-510385146-1203952531=:15997
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch-04-const
Content-Transfer-Encoding: BASE64
Content-ID: <[email protected]>
Content-Description: 
Content-Disposition: attachment; filename=patch-04-const

Q2hhbmdlTG9nOg0KDQoyMDA4LTAyLTI1ICBQZXRlciBCcmVpdGVubG9obmVy
IDxwZWJAbXBwbXUubXBnLmRlPg0KDQoJKiBpbmZvL2RvYy5oLCBpbmZvL2Vj
aG8tYXJlYS5jLCBpbmZvL2VjaG8tYXJlYS5oLA0KCWluZm8vZm9vdG5vdGVz
LmMsIGluZm8vaW5kaWNlcy5jLCBpbmZvL2luZm8uYywgaW5mby9pbmZvLmgs
DQoJaW5mby9pbmZvZG9jLmMsIGluZm8vaW5mb2tleS5jLCBpbmZvL2luZm9t
YXAuYywgaW5mby9tLXguYywNCglpbmZvL25vZGVtZW51LmMsIGluZm8vc2Vz
c2lvbi5jLCBpbmZvL3Nlc3Npb24uaCwNCglpbmZvL3ZhcmlhYmxlcy5jLCBp
bmZvL3ZhcmlhYmxlcy5oLCBpbmZvL3dpbmRvdy5jLA0KCWluZm8vd2luZG93
Lmg6IGRlY2xhcmUgY29uc3RhbnQgc3RyaW5ncyBhcyBzdWNoIGFuZCByZW1v
dmUNCgltYW55IGAoY2hhciAqKScgY2FzdHMgLS0gaW4gcGFydGljdWxhciBm
b3IgYF8oLi4uKScuDQoJQXZvaWQgZ2NjIHdhcm5pbmdzIChmb3IgLS1kaXNh
YmxlLW5scyBhbmQgbWF5YmUgd2l0aG91dCkuDQoNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KDQpkaWZmIC11ciB0ZXhpbmZvLTQuMTEuOTAu
b3JpZy9pbmZvL2RvYy5oIHRleGluZm8tNC4xMS45MC9pbmZvL2RvYy5oDQot
LS0gdGV4aW5mby00LjExLjkwLm9yaWcvaW5mby9kb2MuaAkyMDA3LTA3LTAx
IDIzOjIwOjI5LjAwMDAwMDAwMCArMDIwMA0KKysrIHRleGluZm8tNC4xMS45
MC9pbmZvL2RvYy5oCTIwMDgtMDItMjUgMTE6Mjk6NDMuMDAwMDAwMDAwICsw
MTAwDQpAQCAtOTYsNyArOTYsNyBAQA0KIGV4dGVybiBjaGFyICpwcmV0dHlf
a2V5bmFtZSAodW5zaWduZWQgY2hhciBrZXkpOw0KIGV4dGVybiBjaGFyICpw
cmV0dHlfa2V5c2VxIChjaGFyICprZXlzZXEpOw0KIGV4dGVybiBjaGFyICp3
aGVyZV9pcyAoS2V5bWFwIG1hcCwgSW5mb0NvbW1hbmQgKmNtZCk7DQotZXh0
ZXJuIGNoYXIgKnJlcGxhY2VfaW5fZG9jdW1lbnRhdGlvbiAoY2hhciAqc3Ry
aW5nLCBpbnQgaGVscF9pc19vbmx5X3dpbmRvd19wKTsNCitleHRlcm4gY2hh
ciAqcmVwbGFjZV9pbl9kb2N1bWVudGF0aW9uIChjb25zdCBjaGFyICpzdHJp
bmcsIGludCBoZWxwX2lzX29ubHlfd2luZG93X3ApOw0KIGV4dGVybiB2b2lk
IGR1bXBfbWFwX3RvX21lc3NhZ2VfYnVmZmVyIChjaGFyICpwcmVmaXgsIEtl
eW1hcCBtYXApOw0KIA0KICNlbmRpZiAvKiAhRE9DX0ggKi8NCmRpZmYgLXVy
IHRleGluZm8tNC4xMS45MC5vcmlnL2luZm8vZWNoby1hcmVhLmMgdGV4aW5m
by00LjExLjkwL2luZm8vZWNoby1hcmVhLmMNCi0tLSB0ZXhpbmZvLTQuMTEu
OTAub3JpZy9pbmZvL2VjaG8tYXJlYS5jCTIwMDctMTItMDMgMDI6Mzg6NDIu
MDAwMDAwMDAwICswMTAwDQorKysgdGV4aW5mby00LjExLjkwL2luZm8vZWNo
by1hcmVhLmMJMjAwOC0wMi0yNSAxMzozMTo1Mi4wMDAwMDAwMDAgKzAxMDAN
CkBAIC00NCw3ICs0NCw3IEBADQogDQogLyogVmFyaWFibGVzIHdoaWNoIGhv
bGQgb24gdG8gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGlucHV0IGxpbmUu
ICovDQogc3RhdGljIGNoYXIgaW5wdXRfbGluZVsxICsgRUFfTUFYX0lOUFVU
XTsNCi1zdGF0aWMgY2hhciAqaW5wdXRfbGluZV9wcm9tcHQ7DQorc3RhdGlj
IGNvbnN0IGNoYXIgKmlucHV0X2xpbmVfcHJvbXB0Ow0KIHN0YXRpYyBpbnQg
aW5wdXRfbGluZV9wb2ludDsNCiBzdGF0aWMgaW50IGlucHV0X2xpbmVfYmVn
Ow0KIHN0YXRpYyBpbnQgaW5wdXRfbGluZV9lbmQ7DQpAQCAtMTU5LDcgKzE1
OSw3IEBADQogDQogLyogU2V0IHVwIGEgbmV3IGlucHV0IGxpbmUgd2l0aCBQ
Uk9NUFQuICovDQogc3RhdGljIHZvaWQNCi1pbml0aWFsaXplX2lucHV0X2xp
bmUgKGNoYXIgKnByb21wdCkNCitpbml0aWFsaXplX2lucHV0X2xpbmUgKGNv
bnN0IGNoYXIgKnByb21wdCkNCiB7DQogICBpbnB1dF9saW5lX3Byb21wdCA9
IHByb21wdDsNCiAgIGlmIChwcm9tcHQpDQpAQCAtMjAwLDcgKzIwMCw3IEBA
DQogICAgYWN0aXZlIHdpbmRvdywgc28gdGhhdCB3ZSBjYW4gcmVzdG9yZSBp
dCB3aGVuIHdlIG5lZWQgdG8uICBQUk9NUFQsIGlmDQogICAgbm9uLW51bGws
IGlzIGEgcHJvbXB0IHRvIHByaW50IGJlZm9yZSByZWFkaW5nIHRoZSBsaW5l
LiAqLw0KIGNoYXIgKg0KLWluZm9fcmVhZF9pbl9lY2hvX2FyZWEgKFdJTkRP
VyAqd2luZG93LCBjaGFyICpwcm9tcHQpDQoraW5mb19yZWFkX2luX2VjaG9f
YXJlYSAoV0lORE9XICp3aW5kb3csIGNvbnN0IGNoYXIgKnByb21wdCkNCiB7
DQogICBjaGFyICpsaW5lOw0KIA0KQEAgLTU1OSw3ICs1NTksNyBAQA0KIA0K
ICAgaWYgKCFraWxsX3JpbmdfaW5kZXgpDQogICAgIHsNCi0gICAgICBpbmZv
cm1faW5fZWNob19hcmVhICgoY2hhciAqKSBfKCJLaWxsIHJpbmcgaXMgZW1w
dHkiKSk7DQorICAgICAgaW5mb3JtX2luX2VjaG9fYXJlYSAoXygiS2lsbCBy
aW5nIGlzIGVtcHR5IikpOw0KICAgICAgIHJldHVybjsNCiAgICAgfQ0KIA0K
QEAgLTc5OCw3ICs3OTgsNyBAQA0KIC8qIFdvcmtob3JzZSBmb3IgY29tcGxl
dGlvbiByZWFkZXJzLiAgSWYgRk9SQ0UgaXMgbm9uLXplcm8sIHRoZSB1c2Vy
IGNhbm5vdA0KICAgIGV4aXQgdW5sZXNzIHRoZSBsaW5lIHJlYWQgY29tcGxl
dGVzLCBvciBpcyBlbXB0eS4gKi8NCiBjaGFyICoNCi1pbmZvX3JlYWRfY29t
cGxldGluZ19pbnRlcm5hbCAoV0lORE9XICp3aW5kb3csIGNoYXIgKnByb21w
dCwNCitpbmZvX3JlYWRfY29tcGxldGluZ19pbnRlcm5hbCAoV0lORE9XICp3
aW5kb3csIGNvbnN0IGNoYXIgKnByb21wdCwNCiAgICAgUkVGRVJFTkNFICoq
Y29tcGxldGlvbnMsIGludCBmb3JjZSkNCiB7DQogICBjaGFyICpsaW5lOw0K
QEAgLTg2NCw5ICs4NjQsOSBAQA0KICAgICAgICAgICBpZiAoaSA9PSBjb21w
bGV0aW9uc19mb3VuZF9pbmRleCkNCiAgICAgICAgICAgICB7DQogICAgICAg
ICAgICAgICBpZiAoIWNvbXBsZXRpb25zX2ZvdW5kX2luZGV4KQ0KLSAgICAg
ICAgICAgICAgICBpbmZvcm1faW5fZWNob19hcmVhICgoY2hhciAqKSBfKCJO
byBjb21wbGV0aW9ucyIpKTsNCisgICAgICAgICAgICAgICAgaW5mb3JtX2lu
X2VjaG9fYXJlYSAoXygiTm8gY29tcGxldGlvbnMiKSk7DQogICAgICAgICAg
ICAgICBlbHNlDQotICAgICAgICAgICAgICAgIGluZm9ybV9pbl9lY2hvX2Fy
ZWEgKChjaGFyICopIF8oIk5vdCBjb21wbGV0ZSIpKTsNCisgICAgICAgICAg
ICAgICAgaW5mb3JtX2luX2VjaG9fYXJlYSAoXygiTm90IGNvbXBsZXRlIikp
Ow0KICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICAgfQ0K
ICAgICAgICAgfQ0KQEAgLTg5Myw3ICs4OTMsNyBAQA0KIC8qIFJlYWQgYSBs
aW5lIGluIHRoZSBlY2hvIGFyZWEgd2l0aCBjb21wbGV0aW9uIG92ZXIgQ09N
UExFVElPTlMuICovDQogY2hhciAqDQogaW5mb19yZWFkX2NvbXBsZXRpbmdf
aW5fZWNob19hcmVhIChXSU5ET1cgKndpbmRvdywNCi0gICAgY2hhciAqcHJv
bXB0LCBSRUZFUkVOQ0UgKipjb21wbGV0aW9ucykNCisgICAgY29uc3QgY2hh
ciAqcHJvbXB0LCBSRUZFUkVOQ0UgKipjb21wbGV0aW9ucykNCiB7DQogICBy
ZXR1cm4gKGluZm9fcmVhZF9jb21wbGV0aW5nX2ludGVybmFsICh3aW5kb3cs
IHByb21wdCwgY29tcGxldGlvbnMsIDEpKTsNCiB9DQpAQCAtOTAyLDcgKzkw
Miw3IEBADQogICAgbm90IHJlcXVpcmluZyBpdC4gKi8NCiBjaGFyICoNCiBp
bmZvX3JlYWRfbWF5YmVfY29tcGxldGluZyAoV0lORE9XICp3aW5kb3csDQot
ICAgIGNoYXIgKnByb21wdCwgUkVGRVJFTkNFICoqY29tcGxldGlvbnMpDQor
ICAgIGNvbnN0IGNoYXIgKnByb21wdCwgUkVGRVJFTkNFICoqY29tcGxldGlv
bnMpDQogew0KICAgcmV0dXJuIChpbmZvX3JlYWRfY29tcGxldGluZ19pbnRl
cm5hbCAod2luZG93LCBwcm9tcHQsIGNvbXBsZXRpb25zLCAwKSk7DQogfQ0K
QEAgLTkyMCwxMSArOTIwLDExIEBADQogICBpZiAoIWNvbXBsZXRpb25zX2Zv
dW5kX2luZGV4KQ0KICAgICB7DQogICAgICAgdGVybWluYWxfcmluZ19iZWxs
ICgpOw0KLSAgICAgIGluZm9ybV9pbl9lY2hvX2FyZWEgKChjaGFyICopIF8o
Ik5vIGNvbXBsZXRpb25zIikpOw0KKyAgICAgIGluZm9ybV9pbl9lY2hvX2Fy
ZWEgKF8oIk5vIGNvbXBsZXRpb25zIikpOw0KICAgICB9DQogICBlbHNlIGlm
ICgoY29tcGxldGlvbnNfZm91bmRfaW5kZXggPT0gMSkgJiYgKGtleSAhPSAn
PycpKQ0KICAgICB7DQotICAgICAgaW5mb3JtX2luX2VjaG9fYXJlYSAoKGNo
YXIgKikgXygiU29sZSBjb21wbGV0aW9uIikpOw0KKyAgICAgIGluZm9ybV9p
bl9lY2hvX2FyZWEgKF8oIlNvbGUgY29tcGxldGlvbiIpKTsNCiAgICAgfQ0K
ICAgZWxzZQ0KICAgICB7DQpAQCAtOTMzLDggKzkzMyw4IEBADQogDQogICAg
ICAgaW5pdGlhbGl6ZV9tZXNzYWdlX2J1ZmZlciAoKTsNCiAgICAgICBwcmlu
dGZfdG9fbWVzc2FnZV9idWZmZXIgKGNvbXBsZXRpb25zX2ZvdW5kX2luZGV4
ID09IDENCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKGNo
YXIgKikgXygiT25lIGNvbXBsZXRpb246XG4iKQ0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiAoY2hhciAqKSBfKCIlZCBjb21wbGV0aW9u
czpcbiIpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBf
KCJPbmUgY29tcGxldGlvbjpcbiIpDQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6IF8oIiVkIGNvbXBsZXRpb25zOlxuIiksDQogCQkJCSh2
b2lkICopIChsb25nKSBjb21wbGV0aW9uc19mb3VuZF9pbmRleCwNCiAJCQkJ
TlVMTCwgTlVMTCk7DQogDQpAQCAtMTIxNiw3ICsxMjE2LDcgQEANCiAgICAg
ICBpZiAoIWluZm9ybWVkX29mX2xlbmd0aHlfam9iICYmIGNvbXBsZXRpb25z
X2ZvdW5kX2luZGV4ID4gMTAwKQ0KICAgICAgICAgew0KICAgICAgICAgICBp
bmZvcm1lZF9vZl9sZW5ndGh5X2pvYiA9IDE7DQotICAgICAgICAgIHdpbmRv
d19tZXNzYWdlX2luX2VjaG9fYXJlYSAoKGNoYXIgKikgXygiQnVpbGRpbmcg
Y29tcGxldGlvbnMuLi4iKSwNCisgICAgICAgICAgd2luZG93X21lc3NhZ2Vf
aW5fZWNob19hcmVhIChfKCJCdWlsZGluZyBjb21wbGV0aW9ucy4uLiIpLA0K
ICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7DQogICAgICAgICB9DQogICAg
IH0NCkBAIC0xMzgyLDcgKzEzODIsNyBAQA0KIC8qIFB1c2ggYW5kIFBvcCB0
aGUgZWNobyBhcmVhLiAqLw0KIHR5cGVkZWYgc3RydWN0IHsNCiAgIGNoYXIg
KmxpbmU7DQotICBjaGFyICpwcm9tcHQ7DQorICBjb25zdCBjaGFyICpwcm9t
cHQ7DQogICBSRUZFUkVOQ0UgKipjb21wX2l0ZW1zOw0KICAgaW50IHBvaW50
LCBiZWcsIGVuZDsNCiAgIGludCBtdXN0X2NvbXBsZXRlOw0KZGlmZiAtdXIg
dGV4aW5mby00LjExLjkwLm9yaWcvaW5mby9lY2hvLWFyZWEuaCB0ZXhpbmZv
LTQuMTEuOTAvaW5mby9lY2hvLWFyZWEuaA0KLS0tIHRleGluZm8tNC4xMS45
MC5vcmlnL2luZm8vZWNoby1hcmVhLmgJMjAwNy0wNy0wMSAyMzoyMDoyOS4w
MDAwMDAwMDAgKzAyMDANCisrKyB0ZXhpbmZvLTQuMTEuOTAvaW5mby9lY2hv
LWFyZWEuaAkyMDA4LTAyLTI1IDEzOjMxOjU1LjAwMDAwMDAwMCArMDEwMA0K
QEAgLTM2LDI1ICszNiwyNSBAQA0KIGV4dGVybiB2b2lkIGVjaG9fYXJlYV9p
bmZvcm1fb2ZfZGVsZXRlZF93aW5kb3cgKFdJTkRPVyAqd2luZG93KTsNCiBl
eHRlcm4gdm9pZCBlY2hvX2FyZWFfcHJlcF9yZWFkICh2b2lkKTsNCiBleHRl
cm4gVkZ1bmN0aW9uICplYV9sYXN0X2V4ZWN1dGVkX2NvbW1hbmQ7DQotZXh0
ZXJuIGNoYXIgKiBpbmZvX3JlYWRfY29tcGxldGluZ19pbnRlcm5hbCAoV0lO
RE9XICp3aW5kb3csIGNoYXIgKnByb21wdCwNCitleHRlcm4gY2hhciAqIGlu
Zm9fcmVhZF9jb21wbGV0aW5nX2ludGVybmFsIChXSU5ET1cgKndpbmRvdywg
Y29uc3QgY2hhciAqcHJvbXB0LA0KICAgICBSRUZFUkVOQ0UgKipjb21wbGV0
aW9ucywgaW50IGZvcmNlKTsNCiANCiAvKiBSZWFkIGEgbGluZSBvZiB0ZXh0
IGluIHRoZSBlY2hvIGFyZWEuICBSZXR1cm4gYSBtYWxsb2MgKCknZWQgc3Ry
aW5nLA0KICAgIG9yIE5VTEwgaWYgdGhlIHVzZXIgYWJvcnRlZCBvdXQgb2Yg
dGhpcyByZWFkLiAgV0lORE9XIGlzIHRoZSBjdXJyZW50bHkNCiAgICBhY3Rp
dmUgd2luZG93LCBzbyB0aGF0IHdlIGNhbiByZXN0b3JlIGl0IHdoZW4gd2Ug
bmVlZCB0by4gIFBST01QVCwgaWYNCiAgICBub24tbnVsbCwgaXMgYSBwcm9t
cHQgdG8gcHJpbnQgYmVmb3JlIHJlYWRpbmcgdGhlIGxpbmUuICovDQotZXh0
ZXJuIGNoYXIgKmluZm9fcmVhZF9pbl9lY2hvX2FyZWEgKFdJTkRPVyAqd2lu
ZG93LCBjaGFyICpwcm9tcHQpOw0KK2V4dGVybiBjaGFyICppbmZvX3JlYWRf
aW5fZWNob19hcmVhIChXSU5ET1cgKndpbmRvdywgY29uc3QgY2hhciAqcHJv
bXB0KTsNCiANCiAvKiBSZWFkIGEgbGluZSBpbiB0aGUgZWNobyBhcmVhIHdp
dGggY29tcGxldGlvbiBvdmVyIENPTVBMRVRJT05TLg0KICAgIFRha2VzIGFy
Z3VtZW50cyBvZiBXSU5ET1csIFBST01QVCwgYW5kIENPTVBMRVRJT05TLCBh
IFJFRkVSRU5DRSAqKi4gKi8NCiBjaGFyICppbmZvX3JlYWRfY29tcGxldGlu
Z19pbl9lY2hvX2FyZWEgKFdJTkRPVyAqd2luZG93LA0KLSAgICBjaGFyICpw
cm9tcHQsIFJFRkVSRU5DRSAqKmNvbXBsZXRpb25zKTsNCisgICAgY29uc3Qg
Y2hhciAqcHJvbXB0LCBSRUZFUkVOQ0UgKipjb21wbGV0aW9ucyk7DQogDQog
LyogUmVhZCBhIGxpbmUgaW4gdGhlIGVjaG8gYXJlYSBhbGxvd2luZyBjb21w
bGV0aW9uIG92ZXIgQ09NUExFVElPTlMsIGJ1dA0KICAgIG5vdCByZXF1aXJp
bmcgaXQuICBUYWtlcyBhcmd1bWVudHMgb2YgV0lORE9XLCBQUk9NUFQsIGFu
ZCBDT01QTEVUSU9OUywNCiAgICBhIFJFRkVSRU5DRSAqKi4gKi8NCiBleHRl
cm4gY2hhciAqaW5mb19yZWFkX21heWJlX2NvbXBsZXRpbmcgKFdJTkRPVyAq
d2luZG93LA0KLSAgICBjaGFyICpwcm9tcHQsIFJFRkVSRU5DRSAqKmNvbXBs
ZXRpb25zKTsNCisgICAgY29uc3QgY2hhciAqcHJvbXB0LCBSRUZFUkVOQ0Ug
Kipjb21wbGV0aW9ucyk7DQogDQogZXh0ZXJuIHZvaWQgZWFfaW5zZXJ0IChX
SU5ET1cgKndpbmRvdywgaW50IGNvdW50LCB1bnNpZ25lZCBjaGFyIGtleSk7
DQogZXh0ZXJuIHZvaWQgZWFfcXVvdGVkX2luc2VydCAoV0lORE9XICp3aW5k
b3csIGludCBjb3VudCwgdW5zaWduZWQgY2hhciBrZXkpOw0KZGlmZiAtdXIg
dGV4aW5mby00LjExLjkwLm9yaWcvaW5mby9mb290bm90ZXMuYyB0ZXhpbmZv
LTQuMTEuOTAvaW5mby9mb290bm90ZXMuYw0KLS0tIHRleGluZm8tNC4xMS45
MC5vcmlnL2luZm8vZm9vdG5vdGVzLmMJMjAwNy0xMi0wMyAwMjoxOToyNy4w
MDAwMDAwMDAgKzAxMDANCisrKyB0ZXhpbmZvLTQuMTEuOTAvaW5mby9mb290
bm90ZXMuYwkyMDA4LTAyLTI1IDEyOjA5OjM4LjAwMDAwMDAwMCArMDEwMA0K
QEAgLTIwOSw3ICsyMDksNyBAQA0KICAgICAgICAgICAvKiBJZiB3ZSBhcmUg
aGFja2luZyBhdXRvbWF0aWMgZm9vdG5vdGVzLCBhbmQgdGhlcmUgYXJlIGZv
b3Rub3Rlcw0KICAgICAgICAgICAgICBidXQgd2UgY291bGRuJ3QgZGlzcGxh
eSB0aGVtLCBwcmludCBhIG1lc3NhZ2UgdG8gdGhhdCBlZmZlY3QuICovDQog
ICAgICAgICAgIGlmIChhdXRvX2Zvb3Rub3Rlc19wKQ0KLSAgICAgICAgICAg
IGluZm9ybV9pbl9lY2hvX2FyZWEgKChjaGFyICopIF8oIkZvb3Rub3RlcyBj
b3VsZCBub3QgYmUgZGlzcGxheWVkIikpOw0KKyAgICAgICAgICAgIGluZm9y
bV9pbl9lY2hvX2FyZWEgKF8oIkZvb3Rub3RlcyBjb3VsZCBub3QgYmUgZGlz
cGxheWVkIikpOw0KICAgICAgICAgICByZXR1cm4gKEZOX1VOQUJMRSk7DQog
ICAgICAgICB9DQogICAgIH0NCkBAIC0yNTYsMTEgKzI1NiwxMSBAQA0KICAg
ICAgIHN3aXRjaCAocmVzdWx0KQ0KICAgICAgICAgew0KICAgICAgICAgY2Fz
ZSBGTl9VTkZPVU5EOg0KLSAgICAgICAgICBpbmZvX2Vycm9yICgoY2hhciAq
KSBtc2dfbm9fZm9vdF9ub2RlLCBOVUxMLCBOVUxMKTsNCisgICAgICAgICAg
aW5mb19lcnJvciAobXNnX25vX2Zvb3Rfbm9kZSwgTlVMTCwgTlVMTCk7DQog
ICAgICAgICAgIGJyZWFrOw0KIA0KICAgICAgICAgY2FzZSBGTl9VTkFCTEU6
DQotICAgICAgICAgIGluZm9fZXJyb3IgKChjaGFyICopIG1zZ193aW5fdG9v
X3NtYWxsLCBOVUxMLCBOVUxMKTsNCisgICAgICAgICAgaW5mb19lcnJvciAo
bXNnX3dpbl90b29fc21hbGwsIE5VTEwsIE5VTEwpOw0KICAgICAgICAgICBi
cmVhazsNCiAgICAgICAgIH0NCiAgICAgfQ0KZGlmZiAtdXIgdGV4aW5mby00
LjExLjkwLm9yaWcvaW5mby9pbmRpY2VzLmMgdGV4aW5mby00LjExLjkwL2lu
Zm8vaW5kaWNlcy5jDQotLS0gdGV4aW5mby00LjExLjkwLm9yaWcvaW5mby9p
bmRpY2VzLmMJMjAwNy0xMi0wMyAwMjoxOToyNy4wMDAwMDAwMDAgKzAxMDAN
CisrKyB0ZXhpbmZvLTQuMTEuOTAvaW5mby9pbmRpY2VzLmMJMjAwOC0wMi0y
NSAxMzoyMTo0Ny4wMDAwMDAwMDAgKzAxMDANCkBAIC0xOTUsNyArMTk1LDcg
QEANCiAgICAgICAoRklMRU5BTUVfQ01QIChpbml0aWFsX2luZGV4X2ZpbGVu
YW1lLCBmYi0+ZmlsZW5hbWUpICE9IDApKQ0KICAgICB7DQogICAgICAgaW5m
b19mcmVlX3JlZmVyZW5jZXMgKGluZGV4X2luZGV4KTsNCi0gICAgICB3aW5k
b3dfbWVzc2FnZV9pbl9lY2hvX2FyZWEgKChjaGFyICopIF8oIkZpbmRpbmcg
aW5kZXggZW50cmllcy4uLiIpLA0KKyAgICAgIHdpbmRvd19tZXNzYWdlX2lu
X2VjaG9fYXJlYSAoXygiRmluZGluZyBpbmRleCBlbnRyaWVzLi4uIiksDQog
ICAgICAgICAgIE5VTEwsIE5VTEwpOw0KICAgICAgIGluZGV4X2luZGV4ID0g
aW5mb19pbmRpY2VzX29mX2ZpbGVfYnVmZmVyIChmYik7DQogICAgIH0NCkBA
IC0yMDMsNyArMjAzLDcgQEANCiAgIC8qIElmIHRoZXJlIGlzIG5vIGluZGV4
LCBxdWl0IG5vdy4gKi8NCiAgIGlmICghaW5kZXhfaW5kZXgpDQogICAgIHsN
Ci0gICAgICBpbmZvX2Vycm9yICgoY2hhciAqKSBfKCJObyBpbmRpY2VzIGZv
dW5kLiIpLCBOVUxMLCBOVUxMKTsNCisgICAgICBpbmZvX2Vycm9yIChfKCJO
byBpbmRpY2VzIGZvdW5kLiIpLCBOVUxMLCBOVUxMKTsNCiAgICAgICByZXR1
cm47DQogICAgIH0NCiANCkBAIC0yMTMsNyArMjEzLDcgQEANCiAgICAgbGlu
ZSA9IHhzdHJkdXAgKHNlYXJjaF9zdHJpbmcpOw0KICAgZWxzZQ0KICAgICB7
DQotICAgICAgbGluZSA9IGluZm9fcmVhZF9tYXliZV9jb21wbGV0aW5nICh3
aW5kb3csIChjaGFyICopIF8oIkluZGV4IGVudHJ5OiAiKSwNCisgICAgICBs
aW5lID0gaW5mb19yZWFkX21heWJlX2NvbXBsZXRpbmcgKHdpbmRvdywgXygi
SW5kZXggZW50cnk6ICIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5kZXhfaW5kZXgpOw0KICAgICAgIHdpbmRvdyA9
IGFjdGl2ZV93aW5kb3c7DQogDQpAQCAtMzMxLDE0ICszMzEsMTQgQEANCiAg
ICAgIHlldC4gKi8NCiAgIGlmICghaW5kZXhfc2VhcmNoKQ0KICAgICB7DQot
ICAgICAgaW5mb19lcnJvciAoKGNoYXIgKikgXygiTm8gcHJldmlvdXMgaW5k
ZXggc2VhcmNoIHN0cmluZy4iKSwgTlVMTCwgTlVMTCk7DQorICAgICAgaW5m
b19lcnJvciAoXygiTm8gcHJldmlvdXMgaW5kZXggc2VhcmNoIHN0cmluZy4i
KSwgTlVMTCwgTlVMTCk7DQogICAgICAgcmV0dXJuOw0KICAgICB9DQogDQog
ICAvKiBJZiB0aGVyZSBpcyBubyBpbmRleCwgdGhhdCBpcyBhbiBlcnJvci4g
Ki8NCiAgIGlmICghaW5kZXhfaW5kZXgpDQogICAgIHsNCi0gICAgICBpbmZv
X2Vycm9yICgoY2hhciAqKSBfKCJObyBpbmRleCBlbnRyaWVzLiIpLCBOVUxM
LCBOVUxMKTsNCisgICAgICBpbmZvX2Vycm9yIChfKCJObyBpbmRleCBlbnRy
aWVzLiIpLCBOVUxMLCBOVUxMKTsNCiAgICAgICByZXR1cm47DQogICAgIH0N
CiANCkBAIC0zNzEsNyArMzcxLDcgQEANCiAgIC8qIElmIHRoYXQgZmFpbGVk
LCBwcmludCBhbiBlcnJvci4gKi8NCiAgIGlmICgoaSA8IDApIHx8ICghaW5k
ZXhfaW5kZXhbaV0pKQ0KICAgICB7DQotICAgICAgaW5mb19lcnJvciAoKGNo
YXIgKikgXygiTm8gJXNpbmRleCBlbnRyaWVzIGNvbnRhaW5pbmcgYCVzJy4i
KSwNCisgICAgICBpbmZvX2Vycm9yIChfKCJObyAlc2luZGV4IGVudHJpZXMg
Y29udGFpbmluZyBgJXMnLiIpLA0KICAgICAgICAgICAgICAgICAgIGluZGV4
X29mZnNldCA+IDAgPyAoY2hhciAqKSBfKCJtb3JlICIpIDogIiIsIGluZGV4
X3NlYXJjaCk7DQogICAgICAgcmV0dXJuOw0KICAgICB9DQpAQCAtNDE4LDcg
KzQxOCw3IEBADQogICAgICAgY2hhciAqZm9ybWF0Ow0KIA0KICAgICAgIGZv
cm1hdCA9IHJlcGxhY2VfaW5fZG9jdW1lbnRhdGlvbg0KLSAgICAgICAgKChj
aGFyICopIF8oIkZvdW5kIGAlcycgaW4gJXMuIChgXFxbbmV4dC1pbmRleC1t
YXRjaF0nIHRyaWVzIHRvIGZpbmQgbmV4dC4pIiksDQorICAgICAgICAoXygi
Rm91bmQgYCVzJyBpbiAlcy4gKGBcXFtuZXh0LWluZGV4LW1hdGNoXScgdHJp
ZXMgdG8gZmluZCBuZXh0LikiKSwNCiAgICAgICAgICAwKTsNCiANCiAgICAg
ICB3aW5kb3dfbWVzc2FnZV9pbl9lY2hvX2FyZWEgKGZvcm1hdCwgbWF0Y2gs
IChjaGFyICopIG5hbWUpOw0KQEAgLTQzMiw3ICs0MzIsNyBAQA0KIA0KICAg
aWYgKCFub2RlKQ0KICAgICB7DQotICAgICAgaW5mb19lcnJvciAoKGNoYXIg
KikgbXNnX2NhbnRfZmlsZV9ub2RlLA0KKyAgICAgIGluZm9fZXJyb3IgKG1z
Z19jYW50X2ZpbGVfbm9kZSwNCiAgICAgICAgICAgICAgICAgICBpbmRleF9p
bmRleFtpXS0+ZmlsZW5hbWUsIGluZGV4X2luZGV4W2ldLT5ub2RlbmFtZSk7
DQogICAgICAgcmV0dXJuOw0KICAgICB9DQpAQCAtNTQ2LDcgKzU0Niw3IEBA
DQogCSAgfQ0KIA0KICAgICAgICAgaWYgKHRoaXNfZmIgJiYgaW5mb3JtKQ0K
LSAgICAgICAgICBtZXNzYWdlX2luX2VjaG9fYXJlYSAoKGNoYXIgKikgXygi
U2Nhbm5pbmcgaW5kaWNlcyBvZiBgJXMnLi4uIiksDQorICAgICAgICAgIG1l
c3NhZ2VfaW5fZWNob19hcmVhIChfKCJTY2FubmluZyBpbmRpY2VzIG9mIGAl
cycuLi4iKSwNCiAgICAgICAgICAgICAgIGZpbGVzX25hbWUsIE5VTEwpOw0K
IA0KICAgICAgICAgdGhpc19pbmRleCA9IGluZm9faW5kaWNlc19vZl9maWxl
X2J1ZmZlciAodGhpc19mYik7DQpAQCAtNjExLDcgKzYxMSw3IEBADQogICBh
cHJvcG9zX2xpc3QgPSBhcHJvcG9zX2luX2FsbF9pbmRpY2VzIChzdHJpbmcs
IDApOw0KIA0KICAgaWYgKCFhcHJvcG9zX2xpc3QpDQotICAgIGluZm9fZXJy
b3IgKChjaGFyICopIF8oQVBST1BPU19OT05FKSwgc3RyaW5nLCBOVUxMKTsN
CisgICAgaW5mb19lcnJvciAoXyhBUFJPUE9TX05PTkUpLCBzdHJpbmcsIE5V
TEwpOw0KICAgZWxzZQ0KICAgICB7DQogICAgICAgcmVnaXN0ZXIgaW50IGk7
DQpAQCAtNjMxLDcgKzYzMSw3IEBADQogew0KICAgY2hhciAqbGluZTsNCiAN
Ci0gIGxpbmUgPSBpbmZvX3JlYWRfaW5fZWNob19hcmVhICh3aW5kb3csIChj
aGFyICopIF8oIkluZGV4IGFwcm9wb3M6ICIpKTsNCisgIGxpbmUgPSBpbmZv
X3JlYWRfaW5fZWNob19hcmVhICh3aW5kb3csIF8oIkluZGV4IGFwcm9wb3M6
ICIpKTsNCiANCiAgIHdpbmRvdyA9IGFjdGl2ZV93aW5kb3c7DQogDQpAQCAt
NjUxLDcgKzY1MSw3IEBADQogICAgICAgYXByb3Bvc19saXN0ID0gYXByb3Bv
c19pbl9hbGxfaW5kaWNlcyAobGluZSwgMSk7DQogDQogICAgICAgaWYgKCFh
cHJvcG9zX2xpc3QpDQotICAgICAgICBpbmZvX2Vycm9yICgoY2hhciAqKSBf
KEFQUk9QT1NfTk9ORSksIGxpbmUsIE5VTEwpOw0KKyAgICAgICAgaW5mb19l
cnJvciAoXyhBUFJPUE9TX05PTkUpLCBsaW5lLCBOVUxMKTsNCiAgICAgICBl
bHNlDQogICAgICAgICB7DQogICAgICAgICAgIHJlZ2lzdGVyIGludCBpOw0K
QEAgLTY1OSw3ICs2NTksNyBAQA0KIA0KICAgICAgICAgICBpbml0aWFsaXpl
X21lc3NhZ2VfYnVmZmVyICgpOw0KICAgICAgICAgICBwcmludGZfdG9fbWVz
c2FnZV9idWZmZXINCi0gICAgICAgICAgICAoKGNoYXIgKikgXygiXG4qIE1l
bnU6IE5vZGVzIHdob3NlIGluZGljZXMgY29udGFpbiBgJXMnOlxuIiksDQor
ICAgICAgICAgICAgKF8oIlxuKiBNZW51OiBOb2RlcyB3aG9zZSBpbmRpY2Vz
IGNvbnRhaW4gYCVzJzpcbiIpLA0KICAgICAgICAgICAgICBsaW5lLCBOVUxM
LCBOVUxMKTsNCiAgICAgICAgICAgbGluZV9idWZmZXIgPSAoY2hhciAqKXht
YWxsb2MgKDUwMCk7DQogDQpkaWZmIC11ciB0ZXhpbmZvLTQuMTEuOTAub3Jp
Zy9pbmZvL2luZm8uYyB0ZXhpbmZvLTQuMTEuOTAvaW5mby9pbmZvLmMNCi0t
LSB0ZXhpbmZvLTQuMTEuOTAub3JpZy9pbmZvL2luZm8uYwkyMDA4LTAyLTIy
IDIwOjE4OjI1LjAwMDAwMDAwMCArMDEwMA0KKysrIHRleGluZm8tNC4xMS45
MC9pbmZvL2luZm8uYwkyMDA4LTAyLTI1IDEyOjA0OjA3LjAwMDAwMDAwMCAr
MDEwMA0KQEAgLTM2NSw3ICszNjUsNyBAQA0KICAgICAgIGlmIChpbmZvX3Jl
Y2VudF9maWxlX2Vycm9yKQ0KICAgICAgICAgaW5mb19lcnJvciAoaW5mb19y
ZWNlbnRfZmlsZV9lcnJvciwgTlVMTCwgTlVMTCk7DQogICAgICAgZWxzZQ0K
LSAgICAgICAgaW5mb19lcnJvciAoKGNoYXIgKikgbXNnX2NhbnRfZmluZF9u
b2RlLA0KKyAgICAgICAgaW5mb19lcnJvciAobXNnX2NhbnRfZmluZF9ub2Rl
LA0KICAgICAgICAgICAgICAgICAgICAgdXNlcl9ub2RlbmFtZXMgPyB1c2Vy
X25vZGVuYW1lc1swXSA6ICJUb3AiLCBOVUxMKTsNCiAgICAgICB4ZXhpdCAo
MSk7DQogICAgIH0NCkBAIC00MzAsMTMgKzQzMCwxMyBAQA0KICAgICAgICAg
ICBkdW1wX25vZGVfdG9fZmlsZSAoaW5pdGlhbF9ub2RlLCB1c2VyX291dHB1
dF9maWxlbmFtZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1
bXBfc3Vibm9kZXMpOw0KICAgICAgICAgZWxzZQ0KLSAgICAgICAgICBpbmZv
X2Vycm9yICgoY2hhciAqKSBlcnJzdHIsIGVycmFyZzEsIGVycmFyZzIpOw0K
KyAgICAgICAgICBpbmZvX2Vycm9yIChlcnJzdHIsIGVycmFyZzEsIGVycmFy
ZzIpOw0KICAgICAgIH0NCiAgICAgZWxzZQ0KICAgICAgIHsNCiANCiAgICAg
ICAgIGlmIChlcnJzdHIpDQotICAgICAgICAgIGJlZ2luX2luZm9fc2Vzc2lv
bl93aXRoX2Vycm9yIChpbml0aWFsX25vZGUsIChjaGFyICopIGVycnN0ciwN
CisgICAgICAgICAgYmVnaW5faW5mb19zZXNzaW9uX3dpdGhfZXJyb3IgKGlu
aXRpYWxfbm9kZSwgZXJyc3RyLA0KICAgICAgICAgICAgICAgZXJyYXJnMSwg
ZXJyYXJnMik7DQogICAgICAgICAvKiBJZiB0aGUgdXNlciBzcGVjaWZpZWQg
YC0taW5kZXgtc2VhcmNoPVNUUklORycgb3INCiAgICAgICAgICAgIC0tc2hv
dy1vcHRpb25zLCBzdGFydCB0aGUgaW5mbyBzZXNzaW9uIGluIHRoZSBub2Rl
DQpAQCAtNTUzLDcgKzU1Myw3IEBADQogICAgdGhlbiB0aGUgbWVzc2FnZSBp
cyBwcmludGVkIGluIHRoZSBlY2hvIGFyZWEuICBPdGhlcndpc2UsIGEgbWVz
c2FnZSBpcw0KICAgIG91dHB1dCB0byBzdGRlcnIuICovDQogdm9pZA0KLWlu
Zm9fZXJyb3IgKGNoYXIgKmZvcm1hdCwgdm9pZCAqYXJnMSwgdm9pZCAqYXJn
MikNCitpbmZvX2Vycm9yIChjb25zdCBjaGFyICpmb3JtYXQsIHZvaWQgKmFy
ZzEsIHZvaWQgKmFyZzIpDQogew0KICAgaW5mb19lcnJvcl93YXNfcHJpbnRl
ZCA9IDE7DQogDQpkaWZmIC11ciB0ZXhpbmZvLTQuMTEuOTAub3JpZy9pbmZv
L2luZm8uaCB0ZXhpbmZvLTQuMTEuOTAvaW5mby9pbmZvLmgNCi0tLSB0ZXhp
bmZvLTQuMTEuOTAub3JpZy9pbmZvL2luZm8uaAkyMDA3LTA3LTAxIDIzOjIw
OjMwLjAwMDAwMDAwMCArMDIwMA0KKysrIHRleGluZm8tNC4xMS45MC9pbmZv
L2luZm8uaAkyMDA4LTAyLTI1IDEzOjI5OjM4LjAwMDAwMDAwMCArMDEwMA0K
QEAgLTEyNSw3ICsxMjUsNyBAQA0KIC8qIFByaW50IEZPUk1BVCB3aXRoIEFS
RzEgYW5kIEFSRzIuICBJZiB0aGUgd2luZG93IHN5c3RlbSB3YXMgaW5pdGlh
bGl6ZWQsDQogICAgdGhlbiB0aGUgbWVzc2FnZSBpcyBwcmludGVkIGluIHRo
ZSBlY2hvIGFyZWEuICBPdGhlcndpc2UsIGEgbWVzc2FnZSBpcw0KICAgIG91
dHB1dCB0byBzdGRlcnIuICovDQotZXh0ZXJuIHZvaWQgaW5mb19lcnJvciAo
Y2hhciAqZm9ybWF0LCB2b2lkICphcmcxLCB2b2lkICphcmcyKTsNCitleHRl
cm4gdm9pZCBpbmZvX2Vycm9yIChjb25zdCBjaGFyICpmb3JtYXQsIHZvaWQg
KmFyZzEsIHZvaWQgKmFyZzIpOw0KIA0KIGV4dGVybiB2b2lkIGFkZF9maWxl
X2RpcmVjdG9yeV90b19wYXRoIChjaGFyICpmaWxlbmFtZSk7DQogDQpAQCAt
MTU0LDYgKzE1NCw2IEBADQogI2VuZGlmIC8qIElORk9LRVkgKi8NCiANCiAv
KiBGb3VuZCBpbiBtLXguYy4gICovDQotZXh0ZXJuIGNoYXIgKnJlYWRfZnVu
Y3Rpb25fbmFtZSAoY2hhciAqcHJvbXB0LCBXSU5ET1cgKndpbmRvdyk7DQor
ZXh0ZXJuIGNoYXIgKnJlYWRfZnVuY3Rpb25fbmFtZSAoY29uc3QgY2hhciAq
cHJvbXB0LCBXSU5ET1cgKndpbmRvdyk7DQogDQogI2VuZGlmIC8qICFJTkZP
X0ggKi8NCmRpZmYgLXVyIHRleGluZm8tNC4xMS45MC5vcmlnL2luZm8vaW5m
b2RvYy5jIHRleGluZm8tNC4xMS45MC9pbmZvL2luZm9kb2MuYw0KLS0tIHRl
eGluZm8tNC4xMS45MC5vcmlnL2luZm8vaW5mb2RvYy5jCTIwMDgtMDItMjIg
MDA6MzY6MTYuMDAwMDAwMDAwICswMTAwDQorKysgdGV4aW5mby00LjExLjkw
L2luZm8vaW5mb2RvYy5jCTIwMDgtMDItMjUgMTM6Mjk6MDIuMDAwMDAwMDAw
ICswMTAwDQpAQCAtMjk0LDcgKzI5NCw3IEBADQogICAgICAgICB7DQogI2lm
ZGVmIElORk9LRVkNCiAgICAgICAgICAgcHJpbnRmX3RvX21lc3NhZ2VfYnVm
ZmVyIChyZXBsYWNlX2luX2RvY3VtZW50YXRpb24NCi0gICAgICAgICAgICAg
ICgoY2hhciAqKSBfKGluZm9faW50ZXJuYWxfaGVscF90ZXh0W2ldKSwgaGVs
cF9pc19vbmx5X3dpbmRvd19wKSwNCisgICAgICAgICAgICAgIChfKGluZm9f
aW50ZXJuYWxfaGVscF90ZXh0W2ldKSwgaGVscF9pc19vbmx5X3dpbmRvd19w
KSwNCiAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwpOw0KICNlbHNl
DQogICAgICAgICAgIC8qIERvbid0IHRyYW5zbGF0ZSBibGFuayBsaW5lcywg
Z2V0dGV4dCBvdXRwdXRzIHRoZSBwbyBmaWxlDQpAQCAtMzE0LDE1ICszMTQs
MTUgQEANCiAgICAgICAgIH0NCiANCiAgICAgICBwcmludGZfdG9fbWVzc2Fn
ZV9idWZmZXIgKCItLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuIiwgTlVMTCwg
TlVMTCwgTlVMTCk7DQotICAgICAgcHJpbnRmX3RvX21lc3NhZ2VfYnVmZmVy
ICgoY2hhciAqKSBfKCJUaGUgY3VycmVudCBzZWFyY2ggcGF0aCBpczpcbiIp
LA0KKyAgICAgIHByaW50Zl90b19tZXNzYWdlX2J1ZmZlciAoXygiVGhlIGN1
cnJlbnQgc2VhcmNoIHBhdGggaXM6XG4iKSwNCiAgICAgICAgICAgTlVMTCwg
TlVMTCwgTlVMTCk7DQogICAgICAgcHJpbnRmX3RvX21lc3NhZ2VfYnVmZmVy
ICgiICAlc1xuIiwgaW5mb3BhdGgsIE5VTEwsIE5VTEwpOw0KICAgICAgIHBy
aW50Zl90b19tZXNzYWdlX2J1ZmZlciAoIi0tLS0tLS0tLS0tLS0tLS0tLS0t
LVxuXG4iLCBOVUxMLCBOVUxMLCBOVUxMKTsNCi0gICAgICBwcmludGZfdG9f
bWVzc2FnZV9idWZmZXIgKChjaGFyICopIF8oIkNvbW1hbmRzIGF2YWlsYWJs
ZSBpbiBJbmZvIHdpbmRvd3M6XG5cbiIpLA0KKyAgICAgIHByaW50Zl90b19t
ZXNzYWdlX2J1ZmZlciAoXygiQ29tbWFuZHMgYXZhaWxhYmxlIGluIEluZm8g
d2luZG93czpcblxuIiksDQogICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwp
Ow0KICAgICAgIGR1bXBfbWFwX3RvX21lc3NhZ2VfYnVmZmVyICgiIiwgaW5m
b19rZXltYXApOw0KICAgICAgIHByaW50Zl90b19tZXNzYWdlX2J1ZmZlciAo
Ii0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4iLCBOVUxMLCBOVUxMLCBOVUxM
KTsNCi0gICAgICBwcmludGZfdG9fbWVzc2FnZV9idWZmZXIgKChjaGFyICop
IF8oIkNvbW1hbmRzIGF2YWlsYWJsZSBpbiB0aGUgZWNobyBhcmVhOlxuXG4i
KSwNCisgICAgICBwcmludGZfdG9fbWVzc2FnZV9idWZmZXIgKF8oIkNvbW1h
bmRzIGF2YWlsYWJsZSBpbiB0aGUgZWNobyBhcmVhOlxuXG4iKSwNCiAgICAg
ICAgICAgTlVMTCwgTlVMTCwgTlVMTCk7DQogICAgICAgZHVtcF9tYXBfdG9f
bWVzc2FnZV9idWZmZXIgKCIiLCBlY2hvX2FyZWFfa2V5bWFwKTsNCiANCkBA
IC0zNDUsMTEgKzM0NSwxMSBAQA0KICAgICAgICAgICAgICAgICAgICAgICBO
VUxMLCBOVUxMLCBOVUxMKTsNCiAgICAgICAgICAgICAgICAgICBpZiAoZXhl
Y19rZXlzICYmIGV4ZWNfa2V5c1swXSkNCiAgICAgICAgICAgICAgICAgICAg
ICAgcHJpbnRmX3RvX21lc3NhZ2VfYnVmZmVyDQotICAgICAgICAgICAgICAg
ICAgICAgICAgKChjaGFyICopIF8oIlRoZSBmb2xsb3dpbmcgY29tbWFuZHMg
Y2FuIG9ubHkgYmUgaW52b2tlZCB2aWEgJXM6XG5cbiIpLA0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIChfKCJUaGUgZm9sbG93aW5nIGNvbW1hbmRzIGNh
biBvbmx5IGJlIGludm9rZWQgdmlhICVzOlxuXG4iKSwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXhlY19rZXlzLCBOVUxMLCBOVUxMKTsNCiAgICAg
ICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgICAgIHBy
aW50Zl90b19tZXNzYWdlX2J1ZmZlcg0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICgoY2hhciAqKSBfKCJUaGUgZm9sbG93aW5nIGNvbW1hbmRzIGNhbm5v
dCBiZSBpbnZva2VkIGF0IGFsbDpcblxuIiksDQorICAgICAgICAgICAgICAg
ICAgICAgICAgKF8oIlRoZSBmb2xsb3dpbmcgY29tbWFuZHMgY2Fubm90IGJl
IGludm9rZWQgYXQgYWxsOlxuXG4iKSwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgTlVMTCwgTlVMTCwgTlVMTCk7DQogICAgICAgICAgICAgICAgICAg
cHJpbnRlZF9vbmVfbXggPSAxOw0KICAgICAgICAgICAgICAgICB9DQpAQCAt
MzU5LDcgKzM1OSw3IEBADQogICAgICAgICAgICAgICAgICBleGVjX2tleXMs
DQogICAgICAgICAgICAgICAgICBmdW5jdGlvbl9kb2NfYXJyYXlbaV0uZnVu
Y19uYW1lLA0KICAgICAgICAgICAgICAgICAgcmVwbGFjZV9pbl9kb2N1bWVu
dGF0aW9uIChzdHJsZW4gKGZ1bmN0aW9uX2RvY19hcnJheVtpXS5kb2MpDQot
ICAgICAgICAgICAgICAgICAgID8gKGNoYXIgKikgXyhmdW5jdGlvbl9kb2Nf
YXJyYXlbaV0uZG9jKSA6ICIiLCAwKQ0KKyAgICAgICAgICAgICAgICAgICA/
IF8oZnVuY3Rpb25fZG9jX2FycmF5W2ldLmRvYykgOiAiIiwgMCkNCiAgICAg
ICAgICAgICAgICAgKTsNCiANCiAgICAgICAgICAgICB9DQpAQCAtMzczLDcg
KzM3Myw3IEBADQogDQogICAgICAgcHJpbnRmX3RvX21lc3NhZ2VfYnVmZmVy
DQogICAgICAgICAoIiVzIiwgcmVwbGFjZV9pbl9kb2N1bWVudGF0aW9uDQot
ICAgICAgICAgKChjaGFyICopIF8oIi0tLSBVc2UgYFxcW2hpc3Rvcnktbm9k
ZV0nIG9yIGBcXFtraWxsLW5vZGVdJyB0byBleGl0IC0tLVxuIiksIDApLA0K
KyAgICAgICAgIChfKCItLS0gVXNlIGBcXFtoaXN0b3J5LW5vZGVdJyBvciBg
XFxba2lsbC1ub2RlXScgdG8gZXhpdCAtLS1cbiIpLCAwKSwNCiAgICAgICAg
ICBOVUxMLCBOVUxMKTsNCiAgICAgICBub2RlID0gbWVzc2FnZV9idWZmZXJf
dG9fbm9kZSAoKTsNCiAgICAgICBpbnRlcm5hbF9pbmZvX2hlbHBfbm9kZV9j
b250ZW50cyA9IG5vZGUtPmNvbnRlbnRzOw0KQEAgLTQ5NSw3ICs0OTUsNyBA
QA0KICAgICB9DQogICBlbHNlDQogICAgIHsNCi0gICAgICBpbmZvX2Vycm9y
ICgoY2hhciAqKSBtc2dfY2FudF9tYWtlX2hlbHAsIE5VTEwsIE5VTEwpOw0K
KyAgICAgIGluZm9fZXJyb3IgKG1zZ19jYW50X21ha2VfaGVscCwgTlVMTCwg
TlVMTCk7DQogICAgIH0NCiB9DQogDQpAQCAtNTM5LDcgKzUzOSw3IEBADQog
ICAgICAgaWYgKGluZm9fcmVjZW50X2ZpbGVfZXJyb3IpDQogICAgICAgICBp
bmZvX2Vycm9yIChpbmZvX3JlY2VudF9maWxlX2Vycm9yLCBOVUxMLCBOVUxM
KTsNCiAgICAgICBlbHNlDQotICAgICAgICBpbmZvX2Vycm9yICgoY2hhciAq
KSBtc2dfY2FudF9maWxlX25vZGUsICJJbmZvIiwgbm9kZW5hbWUpOw0KKyAg
ICAgICAgaW5mb19lcnJvciAobXNnX2NhbnRfZmlsZV9ub2RlLCAiSW5mbyIs
IG5vZGVuYW1lKTsNCiAgICAgfQ0KICAgZWxzZQ0KICAgICB7DQpAQCAtNTg3
LDcgKzU4Nyw3IEBADQogDQogI2VuZGlmIC8qICFJTkZPS0VZICovDQogDQot
ICByZXR1cm4gcmVwbGFjZV9pbl9kb2N1bWVudGF0aW9uICgoc3RybGVuIChk
b2MpID09IDApID8gZG9jIDogKGNoYXIgKikgXyhkb2MpLCAwKTsNCisgIHJl
dHVybiByZXBsYWNlX2luX2RvY3VtZW50YXRpb24gKChzdHJsZW4gKGRvYykg
PT0gMCkgPyBkb2MgOiBfKGRvYyksIDApOw0KIH0NCiANCiAjaWYgZGVmaW5l
ZCAoTkFNRURfRlVOQ1RJT05TKQ0KQEAgLTY1MSw3ICs2NTEsNyBAQA0KIA0K
ICAgZm9yICg7OykNCiAgICAgew0KLSAgICAgIG1lc3NhZ2VfaW5fZWNob19h
cmVhICgoY2hhciAqKSBfKCJEZXNjcmliZSBrZXk6ICVzIiksDQorICAgICAg
bWVzc2FnZV9pbl9lY2hvX2FyZWEgKF8oIkRlc2NyaWJlIGtleTogJXMiKSwN
CiAgICAgICAgICAgcHJldHR5X2tleXNlcSAoa2V5cyksIE5VTEwpOw0KICAg
ICAgIGtleXN0cm9rZSA9IGluZm9fZ2V0X2lucHV0X2NoYXIgKCk7DQogICAg
ICAgdW5tZXNzYWdlX2luX2VjaG9fYXJlYSAoKTsNCkBAIC02NzgsNyArNjc4
LDcgQEANCiANCiAgICAgICBpZiAobWFwW2tleXN0cm9rZV0uZnVuY3Rpb24g
PT0gKEluZm9Db21tYW5kICopTlVMTCkNCiAgICAgICAgIHsNCi0gICAgICAg
ICAgbWVzc2FnZV9pbl9lY2hvX2FyZWEgKChjaGFyICopIF8oIiVzIGlzIHVu
ZGVmaW5lZC4iKSwNCisgICAgICAgICAgbWVzc2FnZV9pbl9lY2hvX2FyZWEg
KF8oIiVzIGlzIHVuZGVmaW5lZC4iKSwNCiAgICAgICAgICAgICAgIHByZXR0
eV9rZXlzZXEgKGtleXMpLCBOVUxMKTsNCiAgICAgICAgICAgcmV0dXJuOw0K
ICAgICAgICAgfQ0KQEAgLTcwNyw3ICs3MDcsNyBAQA0KIA0KICAgICAgICAg
ICAgICAgaWYgKG1hcFtsb3dlcmtleV0uZnVuY3Rpb24gPT0gKEluZm9Db21t
YW5kICopTlVMTCkNCiAgICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAg
ICAgICAgIG1lc3NhZ2VfaW5fZWNob19hcmVhICgoY2hhciAqKSBfKCIlcyBp
cyB1bmRlZmluZWQuIiksDQorICAgICAgICAgICAgICAgICAgbWVzc2FnZV9p
bl9lY2hvX2FyZWEgKF8oIiVzIGlzIHVuZGVmaW5lZC4iKSwNCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldHR5X2tleXNl
cSAoa2V5cyksIE5VTEwpOw0KICAgICAgICAgICAgICAgICAgIHJldHVybjsN
CiAgICAgICAgICAgICAgICAgfQ0KQEAgLTg4OCw3ICs4ODgsNyBAQA0KIA0K
IC8qIFJlcGxhY2UgdGhlIG5hbWVzIG9mIGZ1bmN0aW9ucyB3aXRoIHRoZSBr
ZXkgdGhhdCBpbnZva2VzIHRoZW0uICovDQogY2hhciAqDQotcmVwbGFjZV9p
bl9kb2N1bWVudGF0aW9uIChjaGFyICpzdHJpbmcsIGludCBoZWxwX2lzX29u
bHlfd2luZG93X3ApDQorcmVwbGFjZV9pbl9kb2N1bWVudGF0aW9uIChjb25z
dCBjaGFyICpzdHJpbmcsIGludCBoZWxwX2lzX29ubHlfd2luZG93X3ApDQog
ew0KICAgdW5zaWduZWQgcmVzbGVuID0gc3RybGVuIChzdHJpbmcpOw0KICAg
cmVnaXN0ZXIgaW50IGksIHN0YXJ0LCBuZXh0Ow0KQEAgLTExNTUsNyArMTE1
NSw3IEBADQogew0KICAgY2hhciAqY29tbWFuZF9uYW1lOw0KIA0KLSAgY29t
bWFuZF9uYW1lID0gcmVhZF9mdW5jdGlvbl9uYW1lICgoY2hhciAqKSBfKCJX
aGVyZSBpcyBjb21tYW5kOiAiKSwgd2luZG93KTsNCisgIGNvbW1hbmRfbmFt
ZSA9IHJlYWRfZnVuY3Rpb25fbmFtZSAoXygiV2hlcmUgaXMgY29tbWFuZDog
IiksIHdpbmRvdyk7DQogDQogICBpZiAoIWNvbW1hbmRfbmFtZSkNCiAgICAg
ew0KQEAgLTExNzcsMjMgKzExNzcsMjMgQEANCiANCiAgICAgICAgICAgaWYg
KCFsb2NhdGlvbiB8fCAhbG9jYXRpb25bMF0pDQogICAgICAgICAgICAgew0K
LSAgICAgICAgICAgICAgaW5mb19lcnJvciAoKGNoYXIgKikgXygiYCVzJyBp
cyBub3Qgb24gYW55IGtleXMiKSwNCisgICAgICAgICAgICAgIGluZm9fZXJy
b3IgKF8oImAlcycgaXMgbm90IG9uIGFueSBrZXlzIiksDQogICAgICAgICAg
ICAgICAgICAgY29tbWFuZF9uYW1lLCBOVUxMKTsNCiAgICAgICAgICAgICB9
DQogICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICB7DQogICAgICAgICAg
ICAgICBpZiAoc3Ryc3RyIChsb2NhdGlvbiwgZnVuY3Rpb25fbmFtZSAoY29t
bWFuZCkpKQ0KICAgICAgICAgICAgICAgICB3aW5kb3dfbWVzc2FnZV9pbl9l
Y2hvX2FyZWENCi0gICAgICAgICAgICAgICAgICAoKGNoYXIgKikgXygiJXMg
Y2FuIG9ubHkgYmUgaW52b2tlZCB2aWEgJXMuIiksDQorICAgICAgICAgICAg
ICAgICAgKF8oIiVzIGNhbiBvbmx5IGJlIGludm9rZWQgdmlhICVzLiIpLA0K
ICAgICAgICAgICAgICAgICAgICBjb21tYW5kX25hbWUsIGxvY2F0aW9uKTsN
CiAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgd2luZG93
X21lc3NhZ2VfaW5fZWNob19hcmVhDQotICAgICAgICAgICAgICAgICAgKChj
aGFyICopIF8oIiVzIGNhbiBiZSBpbnZva2VkIHZpYSAlcy4iKSwNCisgICAg
ICAgICAgICAgICAgICAoXygiJXMgY2FuIGJlIGludm9rZWQgdmlhICVzLiIp
LA0KICAgICAgICAgICAgICAgICAgICBjb21tYW5kX25hbWUsIGxvY2F0aW9u
KTsNCiAgICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICAgZWxzZQ0K
LSAgICAgICAgaW5mb19lcnJvciAoKGNoYXIgKikgXygiVGhlcmUgaXMgbm8g
ZnVuY3Rpb24gbmFtZWQgYCVzJyIpLA0KKyAgICAgICAgaW5mb19lcnJvciAo
XygiVGhlcmUgaXMgbm8gZnVuY3Rpb24gbmFtZWQgYCVzJyIpLA0KICAgICAg
ICAgICAgIGNvbW1hbmRfbmFtZSwgTlVMTCk7DQogICAgIH0NCiANCmRpZmYg
LXVyIHRleGluZm8tNC4xMS45MC5vcmlnL2luZm8vaW5mb2tleS5jIHRleGlu
Zm8tNC4xMS45MC9pbmZvL2luZm9rZXkuYw0KLS0tIHRleGluZm8tNC4xMS45
MC5vcmlnL2luZm8vaW5mb2tleS5jCTIwMDgtMDItMjIgMjA6MjE6MTguMDAw
MDAwMDAwICswMTAwDQorKysgdGV4aW5mby00LjExLjkwL2luZm8vaW5mb2tl
eS5jCTIwMDgtMDItMjUgMTM6MzY6MjUuMDAwMDAwMDAwICswMTAwDQpAQCAt
NjM4LDcgKzYzOCw3IEBADQogCSAgICAgIGVsc2UNCiAJCXsNCiAJCSAgc3lu
dGF4X2Vycm9yIChmaWxlbmFtZSwgbG51bSwNCi0gICAgICAgICAgICAgICAg
ICAgICAgKGNoYXIgKikgXygiTlVMIGNoYXJhY3RlciAoXiVjKSBub3QgcGVy
bWl0dGVkIiksDQorICAgICAgICAgICAgICAgICAgICAgIF8oIk5VTCBjaGFy
YWN0ZXIgKF4lYykgbm90IHBlcm1pdHRlZCIpLA0KICAgICAgICAgICAgICAg
ICAgICAgICAodm9pZCAqKSAobG9uZykgYywgTlVMTCwgTlVMTCwgTlVMTCk7
DQogCQkgIGVycm9yID0gMTsNCiAJCX0NCkBAIC02NjIsNyArNjYyLDcgQEAN
CiAJICAgICAgcmVzY2FuID0gMTsNCiAJICAgICAgaWYgKGFsZW4gPT0gMCkN
CiAJCXsNCi0JCSAgc3ludGF4X2Vycm9yIChmaWxlbmFtZSwgbG51bSwgKGNo
YXIgKikgXygibWlzc2luZyBhY3Rpb24gbmFtZSIpLA0KKwkJICBzeW50YXhf
ZXJyb3IgKGZpbGVuYW1lLCBsbnVtLCBfKCJtaXNzaW5nIGFjdGlvbiBuYW1l
IiksDQogCQkJCSh2b2lkICopIChsb25nKSBjLCBOVUxMLCBOVUxMLCBOVUxM
KTsNCiAJCSAgZXJyb3IgPSAxOw0KIAkJfQ0KZGlmZiAtdXIgdGV4aW5mby00
LjExLjkwLm9yaWcvaW5mby9pbmZvbWFwLmMgdGV4aW5mby00LjExLjkwL2lu
Zm8vaW5mb21hcC5jDQotLS0gdGV4aW5mby00LjExLjkwLm9yaWcvaW5mby9p
bmZvbWFwLmMJMjAwOC0wMi0xOSAxNTo1ODoyOS4wMDAwMDAwMDAgKzAxMDAN
CisrKyB0ZXhpbmZvLTQuMTEuOTAvaW5mby9pbmZvbWFwLmMJMjAwOC0wMi0y
NSAxMTo1NDowMy4wMDAwMDAwMDAgKzAxMDANCkBAIC0xNTA1LDEwICsxNTA1
LDEwIEBADQogICAgICAgICAgICAgICAgIC8qIEJhZCBmaWxlIChhIHZhbGlk
IGZpbGUgbXVzdCBoYXZlIGF0IGxlYXN0IDkgY2hhcnMsIGFuZA0KICAgICAg
ICAgICAgICAgICAgICBtb3JlIHRoYW4gMTAwIEtCIGlzIGEgcHJvYmxlbSku
ICovDQogICAgICAgICAgICAgICAgIGlmIChsZW4gPCBJTkZPS0VZX05NQUdJ
QyArIDIpDQotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb19lcnJvcigo
Y2hhciAqKSBfKCJJZ25vcmluZyBpbnZhbGlkIGluZm9rZXkgZmlsZSBgJXMn
IC0gdG9vIHNtYWxsIiksDQorICAgICAgICAgICAgICAgICAgICAgICAgaW5m
b19lcnJvcihfKCJJZ25vcmluZyBpbnZhbGlkIGluZm9rZXkgZmlsZSBgJXMn
IC0gdG9vIHNtYWxsIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmaWxlbmFtZSwgTlVMTCk7DQogICAgICAgICAgICAgICAgIGVs
c2UNCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvX2Vycm9yKChjaGFy
ICopIF8oIklnbm9yaW5nIGludmFsaWQgaW5mb2tleSBmaWxlIGAlcycgLSB0
b28gYmlnIiksDQorICAgICAgICAgICAgICAgICAgICAgICAgaW5mb19lcnJv
cihfKCJJZ25vcmluZyBpbnZhbGlkIGluZm9rZXkgZmlsZSBgJXMnIC0gdG9v
IGJpZyIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmlsZW5hbWUsIE5VTEwpOw0KICAgICAgICAgICAgICAgICBjbG9zZShmKTsN
CiAgICAgICAgICAgICAgICAgZnJlZShmaWxlbmFtZSk7DQpAQCAtMTUyMSw3
ICsxNTIxLDcgQEANCiAgICAgICAgIGNsb3NlKGYpOw0KICAgICAgICAgaWYg
KCh1bnNpZ25lZCBpbnQpIG5yZWFkICE9IGxlbikNCiAgICAgICAgIHsNCi0g
ICAgICAgICAgICAgICAgaW5mb19lcnJvcigoY2hhciAqKSBfKCJFcnJvciBy
ZWFkaW5nIGluZm9rZXkgZmlsZSBgJXMnIC0gc2hvcnQgcmVhZCIpLA0KKyAg
ICAgICAgICAgICAgICBpbmZvX2Vycm9yKF8oIkVycm9yIHJlYWRpbmcgaW5m
b2tleSBmaWxlIGAlcycgLSBzaG9ydCByZWFkIiksDQogICAgICAgICAgICAg
ICAgICAgICBmaWxlbmFtZSwgTlVMTCk7DQogICAgICAgICAgICAgICAgIGZy
ZWUoYnVmKTsNCiAgICAgICAgICAgICAgICAgZnJlZShmaWxlbmFtZSk7DQpA
QCAtMTU0MCw3ICsxNTQwLDcgQEANCiAgICAgICAgICAgICAgICAgfHwgYnVm
W2xlbiAtIDFdICE9IElORk9LRVlfTUFHSUNfRTMNCiAgICAgICAgICkNCiAg
ICAgICAgIHsNCi0gICAgICAgICAgICAgICAgaW5mb19lcnJvcigoY2hhciAq
KSBfKCJJbnZhbGlkIGluZm9rZXkgZmlsZSBgJXMnIChiYWQgbWFnaWMgbnVt
YmVycykgLS0gcnVuIGluZm9rZXkgdG8gdXBkYXRlIGl0IiksDQorICAgICAg
ICAgICAgICAgIGluZm9fZXJyb3IoXygiSW52YWxpZCBpbmZva2V5IGZpbGUg
YCVzJyAoYmFkIG1hZ2ljIG51bWJlcnMpIC0tIHJ1biBpbmZva2V5IHRvIHVw
ZGF0ZSBpdCIpLA0KICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIE5V
TEwpOw0KICAgICAgICAgICAgICAgICBmcmVlKGZpbGVuYW1lKTsNCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIDA7DQpAQCAtMTU0OSw3ICsxNTQ5LDcgQEAN
CiAgICAgICAgICAgICB8fCBzdHJjbXAoVkVSU0lPTiwgKGNoYXIgKikgKGJ1
ZiArIDQpKSAhPSAwKQ0KICAgICAgICAgew0KICAgICAgICAgICAgICAgICBp
bmZvX2Vycm9yDQotICAgICAgICAgICAgICAgICAgKChjaGFyICopIF8oIllv
dXIgaW5mb2tleSBmaWxlIGAlcycgaXMgb3V0IG9mIGRhdGUgLS0gcnVuIGlu
Zm9rZXkgdG8gdXBkYXRlIGl0IiksDQorICAgICAgICAgICAgICAgICAgKF8o
IllvdXIgaW5mb2tleSBmaWxlIGAlcycgaXMgb3V0IG9mIGRhdGUgLS0gcnVu
IGluZm9rZXkgdG8gdXBkYXRlIGl0IiksDQogICAgICAgICAgICAgICAgICAg
ICBmaWxlbmFtZSwgTlVMTCk7DQogICAgICAgICAgICAgICAgIGZyZWUoZmls
ZW5hbWUpOw0KICAgICAgICAgICAgICAgICByZXR1cm4gMDsNCkBAIC0xNTY1
LDcgKzE1NjUsNyBAQA0KICAgICAgICAgICAgICAgICBuID0gZ2V0aW50KCZw
KTsNCiAgICAgICAgICAgICAgICAgaWYgKG4gPCAwIHx8ICh1bnNpZ25lZCBp
bnQpIG4gPiBsZW4gLSA0IC0gKHAgLSBidWYpKQ0KICAgICAgICAgICAgICAg
ICB7DQotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb19lcnJvcigoY2hh
ciAqKSBfKCJJbnZhbGlkIGluZm9rZXkgZmlsZSBgJXMnIChiYWQgc2VjdGlv
biBsZW5ndGgpIC0tIHJ1biBpbmZva2V5IHRvIHVwZGF0ZSBpdCIpLA0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIGluZm9fZXJyb3IoXygiSW52YWxpZCBp
bmZva2V5IGZpbGUgYCVzJyAoYmFkIHNlY3Rpb24gbGVuZ3RoKSAtLSBydW4g
aW5mb2tleSB0byB1cGRhdGUgaXQiKSwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmlsZW5hbWUsIE5VTEwpOw0KICAgICAgICAgICAgICAgICAg
ICAgICAgIGZyZWUoZmlsZW5hbWUpOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAwOw0KQEAgLTE1ODYsNyArMTU4Niw3IEBADQogICAgICAg
ICAgICAgICAgICAgICAgICAgdXNlcl92YXJzX2xlbiA9IG47DQogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6DQotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb19lcnJvcigo
Y2hhciAqKSBfKCJJbnZhbGlkIGluZm9rZXkgZmlsZSBgJXMnIChiYWQgc2Vj
dGlvbiBjb2RlKSAtLSBydW4gaW5mb2tleSB0byB1cGRhdGUgaXQiKSwNCisg
ICAgICAgICAgICAgICAgICAgICAgICBpbmZvX2Vycm9yKF8oIkludmFsaWQg
aW5mb2tleSBmaWxlIGAlcycgKGJhZCBzZWN0aW9uIGNvZGUpIC0tIHJ1biBp
bmZva2V5IHRvIHVwZGF0ZSBpdCIpLA0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmaWxlbmFtZSwgTlVMTCk7DQogICAgICAgICAgICAgICAgICAg
ICAgICAgZnJlZShmaWxlbmFtZSk7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDA7DQpAQCAtMTcyMSw3ICsxNzIxLDcgQEANCiAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICAgICAgaWYgKHN0YXRlICE9
IGdldHNlcSkNCi0gICAgICAgICAgICAgICAgaW5mb19lcnJvcigoY2hhciAq
KSBfKCJCYWQgZGF0YSBpbiBpbmZva2V5IGZpbGUgLS0gc29tZSBrZXkgYmlu
ZGluZ3MgaWdub3JlZCIpLA0KKyAgICAgICAgICAgICAgICBpbmZvX2Vycm9y
KF8oIkJhZCBkYXRhIGluIGluZm9rZXkgZmlsZSAtLSBzb21lIGtleSBiaW5k
aW5ncyBpZ25vcmVkIiksDQogICAgICAgICAgICAgICAgICAgICBOVUxMLCBO
VUxMKTsNCiAgICAgICAgIHJldHVybiAhc3RvcDsNCiB9DQpAQCAtMTc3MSw3
ICsxNzcxLDcgQEANCiAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgfQ0K
ICAgICAgIGlmIChzdGF0ZSAhPSBnZXR2YXIpDQotICAgICAgICBpbmZvX2Vy
cm9yKChjaGFyICopIF8oIkJhZCBkYXRhIGluIGluZm9rZXkgZmlsZSAtLSBz
b21lIHZhciBzZXR0aW5ncyBpZ25vcmVkIiksDQorICAgICAgICBpbmZvX2Vy
cm9yKF8oIkJhZCBkYXRhIGluIGluZm9rZXkgZmlsZSAtLSBzb21lIHZhciBz
ZXR0aW5ncyBpZ25vcmVkIiksDQogICAgICAgICAgICAgTlVMTCwgTlVMTCk7
DQogfQ0KIA0KZGlmZiAtdXIgdGV4aW5mby00LjExLjkwLm9yaWcvaW5mby9t
LXguYyB0ZXhpbmZvLTQuMTEuOTAvaW5mby9tLXguYw0KLS0tIHRleGluZm8t
NC4xMS45MC5vcmlnL2luZm8vbS14LmMJMjAwNy0xMi0wMyAwMjoxOToyNy4w
MDAwMDAwMDAgKzAxMDANCisrKyB0ZXhpbmZvLTQuMTEuOTAvaW5mby9tLXgu
YwkyMDA4LTAyLTI1IDEzOjI5OjMxLjAwMDAwMDAwMCArMDEwMA0KQEAgLTMy
LDcgKzMyLDcgQEANCiAgICBuYW1lLiAgQSByZXR1cm4gdmFsdWUgb2YgTlVM
TCBpbmRpY2F0ZXMgdGhhdCBubyBmdW5jdGlvbiBuYW1lIGNvdWxkDQogICAg
YmUgcmVhZC4gKi8NCiBjaGFyICoNCi1yZWFkX2Z1bmN0aW9uX25hbWUgKGNo
YXIgKnByb21wdCwgV0lORE9XICp3aW5kb3cpDQorcmVhZF9mdW5jdGlvbl9u
YW1lIChjb25zdCBjaGFyICpwcm9tcHQsIFdJTkRPVyAqd2luZG93KQ0KIHsN
CiAgIHJlZ2lzdGVyIGludCBpOw0KICAgY2hhciAqbGluZTsNCkBAIC02OSw3
ICs2OSw3IEBADQogew0KICAgY2hhciAqbGluZTsNCiANCi0gIGxpbmUgPSBy
ZWFkX2Z1bmN0aW9uX25hbWUgKChjaGFyICopIF8oIkRlc2NyaWJlIGNvbW1h
bmQ6ICIpLCB3aW5kb3cpOw0KKyAgbGluZSA9IHJlYWRfZnVuY3Rpb25fbmFt
ZSAoXygiRGVzY3JpYmUgY29tbWFuZDogIiksIHdpbmRvdyk7DQogDQogICBp
ZiAoIWxpbmUpDQogICAgIHsNCkBAIC0xMzYsNyArMTM2LDcgQEANCiAgICAg
ICAgIChzdHJuY21wIChsaW5lLCAiZWNoby1hcmVhLSIsIDEwKSA9PSAwKSkN
CiAgICAgICB7DQogICAgICAgICBmcmVlIChsaW5lKTsNCi0gICAgICAgIGlu
Zm9fZXJyb3IgKChjaGFyICopIF8oIkNhbm5vdCBleGVjdXRlIGFuIGBlY2hv
LWFyZWEnIGNvbW1hbmQgaGVyZS4iKSwNCisgICAgICAgIGluZm9fZXJyb3Ig
KF8oIkNhbm5vdCBleGVjdXRlIGFuIGBlY2hvLWFyZWEnIGNvbW1hbmQgaGVy
ZS4iKSwNCiAgICAgICAgICAgICBOVUxMLCBOVUxMKTsNCiAgICAgICAgIHJl
dHVybjsNCiAgICAgICB9DQpAQCAtMTUwLDcgKzE1MCw3IEBADQogICAgIGlm
IChJbmZvRnVuY3Rpb24oY29tbWFuZCkpDQogICAgICAgKCpJbmZvRnVuY3Rp
b24oY29tbWFuZCkpIChhY3RpdmVfd2luZG93LCBjb3VudCwgMCk7DQogICAg
IGVsc2UNCi0gICAgICBpbmZvX2Vycm9yICgoY2hhciAqKSBfKCJVbmRlZmlu
ZWQgY29tbWFuZDogJXMiKSwgbGluZSwgTlVMTCk7DQorICAgICAgaW5mb19l
cnJvciAoXygiVW5kZWZpbmVkIGNvbW1hbmQ6ICVzIiksIGxpbmUsIE5VTEwp
Ow0KICAgfQ0KIH0NCiANCmRpZmYgLXVyIHRleGluZm8tNC4xMS45MC5vcmln
L2luZm8vbm9kZW1lbnUuYyB0ZXhpbmZvLTQuMTEuOTAvaW5mby9ub2RlbWVu
dS5jDQotLS0gdGV4aW5mby00LjExLjkwLm9yaWcvaW5mby9ub2RlbWVudS5j
CTIwMDctMTItMDMgMDI6Mzg6NDIuMDAwMDAwMDAwICswMTAwDQorKysgdGV4
aW5mby00LjExLjkwL2luZm8vbm9kZW1lbnUuYwkyMDA4LTAyLTI1IDEzOjMx
OjE1LjAwMDAwMDAwMCArMDEwMA0KQEAgLTE5OCw3ICsxOTgsNyBAQA0KIA0K
ICAgcHJpbnRmX3RvX21lc3NhZ2VfYnVmZmVyDQogICAgICgiJXMiLCByZXBs
YWNlX2luX2RvY3VtZW50YXRpb24NCi0gICAgICgoY2hhciAqKSBfKCJIZXJl
IGlzIHRoZSBtZW51IG9mIG5vZGVzIHlvdSBoYXZlIHJlY2VudGx5IHZpc2l0
ZWQuXG5cDQorICAgICAoXygiSGVyZSBpcyB0aGUgbWVudSBvZiBub2RlcyB5
b3UgaGF2ZSByZWNlbnRseSB2aXNpdGVkLlxuXA0KIFNlbGVjdCBvbmUgZnJv
bSB0aGlzIG1lbnUsIG9yIHVzZSBgXFxbaGlzdG9yeS1ub2RlXScgaW4gYW5v
dGhlciB3aW5kb3cuXG4iKSwgMCksDQogICAgICBOVUxMLCBOVUxMKTsNCiAN
CkBAIC0zMTMsNyArMzEzLDcgQEANCiANCiAgIGxpbmUgPQ0KICAgICBpbmZv
X3JlYWRfY29tcGxldGluZ19pbl9lY2hvX2FyZWEgKHdpbmRvdywNCi0gICAg
ICAgIChjaGFyICopIF8oIlNlbGVjdCB2aXNpdGVkIG5vZGU6ICIpLCBtZW51
KTsNCisgICAgICAgIF8oIlNlbGVjdCB2aXNpdGVkIG5vZGU6ICIpLCBtZW51
KTsNCiANCiAgIHdpbmRvdyA9IGFjdGl2ZV93aW5kb3c7DQogDQpAQCAtMzMz
LDcgKzMzMyw3IEBADQogICAgICAgZW50cnkgPSBpbmZvX2dldF9sYWJlbGVk
X3JlZmVyZW5jZSAobGluZSwgbWVudSk7DQogDQogICAgICAgaWYgKCFlbnRy
eSkNCi0gICAgICAgIGluZm9fZXJyb3IgKChjaGFyICopIF8oIlRoZSByZWZl
cmVuY2UgZGlzYXBwZWFyZWQhICglcykuIiksIGxpbmUsIE5VTEwpOw0KKyAg
ICAgICAgaW5mb19lcnJvciAoXygiVGhlIHJlZmVyZW5jZSBkaXNhcHBlYXJl
ZCEgKCVzKS4iKSwgbGluZSwgTlVMTCk7DQogICAgICAgZWxzZQ0KICAgICAg
ICAgaW5mb19zZWxlY3RfcmVmZXJlbmNlICh3aW5kb3csIGVudHJ5KTsNCiAg
ICAgfQ0KZGlmZiAtdXIgdGV4aW5mby00LjExLjkwLm9yaWcvaW5mby9zZXNz
aW9uLmMgdGV4aW5mby00LjExLjkwL2luZm8vc2Vzc2lvbi5jDQotLS0gdGV4
aW5mby00LjExLjkwLm9yaWcvaW5mby9zZXNzaW9uLmMJMjAwOC0wMi0xOSAx
NTo1ODoyOS4wMDAwMDAwMDAgKzAxMDANCisrKyB0ZXhpbmZvLTQuMTEuOTAv
aW5mby9zZXNzaW9uLmMJMjAwOC0wMi0yNSAxMzozNDowNC4wMDAwMDAwMDAg
KzAxMDANCkBAIC0xMTIsNyArMTEyLDcgQEANCiAgICAgICAgICAgaWYgKCFs
YXJnZXN0KQ0KICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgIGRpc3Bs
YXlfdXBkYXRlX2Rpc3BsYXkgKHdpbmRvd3MpOw0KLSAgICAgICAgICAgICAg
aW5mb19lcnJvciAoKGNoYXIgKikgbXNnX2NhbnRfZmluZF93aW5kb3csIE5V
TEwsIE5VTEwpOw0KKyAgICAgICAgICAgICAgaW5mb19lcnJvciAobXNnX2Nh
bnRfZmluZF93aW5kb3csIE5VTEwsIE5VTEwpOw0KICAgICAgICAgICAgICAg
aW5mb19zZXNzaW9uICgpOw0KICAgICAgICAgICAgICAgeGV4aXQgKDApOw0K
ICAgICAgICAgICAgIH0NCkBAIC0xMjcsNyArMTI3LDcgQEANCiAgICAgICAg
ICAgZWxzZQ0KICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgIGRpc3Bs
YXlfdXBkYXRlX2Rpc3BsYXkgKHdpbmRvd3MpOw0KLSAgICAgICAgICAgICAg
aW5mb19lcnJvciAoKGNoYXIgKikgbXNnX3dpbl90b29fc21hbGwsIE5VTEws
IE5VTEwpOw0KKyAgICAgICAgICAgICAgaW5mb19lcnJvciAobXNnX3dpbl90
b29fc21hbGwsIE5VTEwsIE5VTEwpOw0KICAgICAgICAgICAgICAgaW5mb19z
ZXNzaW9uICgpOw0KICAgICAgICAgICAgICAgeGV4aXQgKDApOw0KICAgICAg
ICAgICAgIH0NCkBAIC0xMzksNyArMTM5LDcgQEANCiAvKiBTdGFydCBhbiBp
bmZvIHNlc3Npb24gd2l0aCBJTklUSUFMX05PREUsIGFuZCBhbiBlcnJvciBt
ZXNzYWdlIGluIHRoZSBlY2hvDQogICAgYXJlYSBtYWRlIGZyb20gRk9STUFU
IGFuZCBBUkcuICovDQogdm9pZA0KLWJlZ2luX2luZm9fc2Vzc2lvbl93aXRo
X2Vycm9yIChOT0RFICppbml0aWFsX25vZGUsIGNoYXIgKmZvcm1hdCwNCiti
ZWdpbl9pbmZvX3Nlc3Npb25fd2l0aF9lcnJvciAoTk9ERSAqaW5pdGlhbF9u
b2RlLCBjb25zdCBjaGFyICpmb3JtYXQsDQogICAgIHZvaWQgKmFyZzEsIHZv
aWQgKmFyZzIpDQogew0KICAgaW5pdGlhbGl6ZV9pbmZvX3Nlc3Npb24gKGlu
aXRpYWxfbm9kZSwgMSk7DQpAQCAtMTYxLDcgKzE2MSw3IEBADQogICBjaGFy
ICpmb3JtYXQ7DQogDQogICBmb3JtYXQgPSByZXBsYWNlX2luX2RvY3VtZW50
YXRpb24NCi0gICAgKChjaGFyICopIF8oIldlbGNvbWUgdG8gSW5mbyB2ZXJz
aW9uICVzLiBUeXBlIFxcW2dldC1oZWxwLXdpbmRvd10gZm9yIGhlbHAsIFxc
W21lbnUtaXRlbV0gZm9yIG1lbnUgaXRlbS4iKSwNCisgICAgKF8oIldlbGNv
bWUgdG8gSW5mbyB2ZXJzaW9uICVzLiBUeXBlIFxcW2dldC1oZWxwLXdpbmRv
d10gZm9yIGhlbHAsIFxcW21lbnUtaXRlbV0gZm9yIG1lbnUgaXRlbS4iKSwN
CiAgICAgIDApOw0KIA0KICAgd2luZG93X21lc3NhZ2VfaW5fZWNob19hcmVh
IChmb3JtYXQsIFZFUlNJT04sIE5VTEwpOw0KQEAgLTI2OCw3ICsyNjgsNyBA
QA0KICAgICAgIGlmICghdGVybV9uYW1lKQ0KICAgICAgICAgdGVybV9uYW1l
ID0gImR1bWIiOw0KIA0KLSAgICAgIGluZm9fZXJyb3IgKChjaGFyICopIG1z
Z190ZXJtX3Rvb19kdW1iLCB0ZXJtX25hbWUsIE5VTEwpOw0KKyAgICAgIGlu
Zm9fZXJyb3IgKG1zZ190ZXJtX3Rvb19kdW1iLCB0ZXJtX25hbWUsIE5VTEwp
Ow0KICAgICAgIHhleGl0ICgxKTsNCiAgICAgfQ0KIA0KQEAgLTYwMCw3ICs2
MDAsNyBAQA0KIHsNCiAgIGlmIChvbGQgPT0gLTEpDQogICAgIHsNCi0gICAg
ICBpbmZvX2Vycm9yICgoY2hhciAqKSBtc2dfY2FudF9maW5kX3BvaW50LCBO
VUxMLCBOVUxMKTsNCisgICAgICBpbmZvX2Vycm9yIChtc2dfY2FudF9maW5k
X3BvaW50LCBOVUxMLCBOVUxMKTsNCiAgICAgfQ0KICAgZWxzZQ0KICAgICB7
DQpAQCAtOTc2LDE0ICs5NzYsMTQgQEANCiAgIHN3aXRjaCAoYmVoYXZpb3Vy
KQ0KICAgICB7DQogICAgIGNhc2UgSVNfUGFnZU9ubHk6DQotICAgICAgaW5m
b19lcnJvciAoKGNoYXIgKikgbXNnX2F0X25vZGVfYm90dG9tLCBOVUxMLCBO
VUxMKTsNCisgICAgICBpbmZvX2Vycm9yIChtc2dfYXRfbm9kZV9ib3R0b20s
IE5VTEwsIE5VTEwpOw0KICAgICAgIHJldHVybiAxOw0KIA0KICAgICBjYXNl
IElTX05leHRPbmx5Og0KICAgICAgIGluZm9fbmV4dF9sYWJlbF9vZl9ub2Rl
ICh3aW5kb3ctPm5vZGUpOw0KICAgICAgIGlmICghaW5mb19wYXJzZWRfbm9k
ZW5hbWUgJiYgIWluZm9fcGFyc2VkX2ZpbGVuYW1lKQ0KICAgICAgICAgew0K
LSAgICAgICAgICBpbmZvX2Vycm9yICgoY2hhciAqKSBtc2dfbm9fcG9pbnRl
ciwgKGNoYXIgKikgXygiTmV4dCIpLCBOVUxMKTsNCisgICAgICAgICAgaW5m
b19lcnJvciAobXNnX25vX3BvaW50ZXIsIChjaGFyICopIF8oIk5leHQiKSwg
TlVMTCk7DQogICAgICAgICAgIHJldHVybiAxOw0KICAgICAgICAgfQ0KICAg
ICAgIGVsc2UNCkBAIC0xMTAzLDcgKzExMDMsNyBAQA0KICAgICAgICAgICAg
ICAgICAgIHdpbmRvdy0+cG9pbnQgPSBpbmZvX3dpbi0+cG9pbnRzW29sZF9j
dXJyZW50XTsNCiAgICAgICAgICAgICAgICAgICByZWNhbGN1bGF0ZV9saW5l
X3N0YXJ0cyAod2luZG93KTsNCiAgICAgICAgICAgICAgICAgICB3aW5kb3ct
PmZsYWdzIHw9IFdfVXBkYXRlV2luZG93Ow0KLSAgICAgICAgICAgICAgICAg
IGluZm9fZXJyb3IgKChjaGFyICopIF8oIk5vIG1vcmUgbm9kZXMgd2l0aGlu
IHRoaXMgZG9jdW1lbnQuIiksDQorICAgICAgICAgICAgICAgICAgaW5mb19l
cnJvciAoXygiTm8gbW9yZSBub2RlcyB3aXRoaW4gdGhpcyBkb2N1bWVudC4i
KSwNCiAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7DQogICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDE7DQogICAgICAgICAgICAgICAgIH0N
CkBAIC0xMTIyLDE0ICsxMTIyLDE0IEBADQogICBzd2l0Y2ggKGJlaGF2aW91
cikNCiAgICAgew0KICAgICBjYXNlIElTX1BhZ2VPbmx5Og0KLSAgICAgIGlu
Zm9fZXJyb3IgKChjaGFyICopIG1zZ19hdF9ub2RlX3RvcCwgTlVMTCwgTlVM
TCk7DQorICAgICAgaW5mb19lcnJvciAobXNnX2F0X25vZGVfdG9wLCBOVUxM
LCBOVUxMKTsNCiAgICAgICByZXR1cm4gMTsNCiANCiAgICAgY2FzZSBJU19O
ZXh0T25seToNCiAgICAgICBpbmZvX3ByZXZfbGFiZWxfb2Zfbm9kZSAod2lu
ZG93LT5ub2RlKTsNCiAgICAgICBpZiAoIWluZm9fcGFyc2VkX25vZGVuYW1l
ICYmICFpbmZvX3BhcnNlZF9maWxlbmFtZSkNCiAgICAgICAgIHsNCi0gICAg
ICAgICAgaW5mb19lcnJvciAoKGNoYXIgKikgXygiTm8gYFByZXYnIGZvciB0
aGlzIG5vZGUuIiksIE5VTEwsIE5VTEwpOw0KKyAgICAgICAgICBpbmZvX2Vy
cm9yIChfKCJObyBgUHJldicgZm9yIHRoaXMgbm9kZS4iKSwgTlVMTCwgTlVM
TCk7DQogICAgICAgICAgIHJldHVybiAxOw0KICAgICAgICAgfQ0KICAgICAg
IGVsc2UNCkBAIC0xMTQ4LDcgKzExNDgsNyBAQA0KICAgICAgICAgICBpZiAo
IWluZm9fcGFyc2VkX25vZGVuYW1lICYmICghaW5mb19wYXJzZWRfZmlsZW5h
bWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fHwgaXNfZGlyX25hbWUgKGluZm9fcGFyc2VkX2ZpbGVuYW1lKSkpDQogICAg
ICAgICAgICAgew0KLSAgICAgICAgICAgICAgaW5mb19lcnJvciAoKGNoYXIg
KikNCisgICAgICAgICAgICAgIGluZm9fZXJyb3IgKA0KICAgICAgICAgICAg
ICAgICAgICAgXygiTm8gYFByZXYnIG9yIGBVcCcgZm9yIHRoaXMgbm9kZSB3
aXRoaW4gdGhpcyBkb2N1bWVudC4iKSwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5VTEwsIE5VTEwpOw0KICAgICAgICAgICAgICAgcmV0dXJuIDE7
DQpAQCAtMTUwMSw3ICsxNTAxLDcgQEANCiAgIC8qIElmIG5vIG90aGVyIHdp
bmRvdywgZXJyb3Igbm93LiAqLw0KICAgaWYgKCF3aW5kb3dzLT5uZXh0ICYm
ICFlY2hvX2FyZWFfaXNfYWN0aXZlKQ0KICAgICB7DQotICAgICAgaW5mb19l
cnJvciAoKGNoYXIgKikgbXNnX29uZV93aW5kb3csIE5VTEwsIE5VTEwpOw0K
KyAgICAgIGluZm9fZXJyb3IgKG1zZ19vbmVfd2luZG93LCBOVUxMLCBOVUxM
KTsNCiAgICAgICByZXR1cm47DQogICAgIH0NCiANCkBAIC0xNTQxLDcgKzE1
NDEsNyBAQA0KIA0KICAgaWYgKCF3aW5kb3dzLT5uZXh0ICYmICFlY2hvX2Fy
ZWFfaXNfYWN0aXZlKQ0KICAgICB7DQotICAgICAgaW5mb19lcnJvciAoKGNo
YXIgKikgbXNnX29uZV93aW5kb3csIE5VTEwsIE5VTEwpOw0KKyAgICAgIGlu
Zm9fZXJyb3IgKG1zZ19vbmVfd2luZG93LCBOVUxMLCBOVUxMKTsNCiAgICAg
ICByZXR1cm47DQogICAgIH0NCiANCkBAIC0xNTk3LDcgKzE1OTcsNyBAQA0K
IA0KICAgaWYgKCFzcGxpdCkNCiAgICAgew0KLSAgICAgIGluZm9fZXJyb3Ig
KChjaGFyICopIG1zZ193aW5fdG9vX3NtYWxsLCBOVUxMLCBOVUxMKTsNCisg
ICAgICBpbmZvX2Vycm9yIChtc2dfd2luX3Rvb19zbWFsbCwgTlVMTCwgTlVM
TCk7DQogICAgIH0NCiAgIGVsc2UNCiAgICAgew0KQEAgLTE2NjUsMTEgKzE2
NjUsMTEgQEANCiB7DQogICBpZiAoIXdpbmRvd3MtPm5leHQpDQogICAgIHsN
Ci0gICAgICBpbmZvX2Vycm9yICgoY2hhciAqKSBtc2dfY2FudF9raWxsX2xh
c3QsIE5VTEwsIE5VTEwpOw0KKyAgICAgIGluZm9fZXJyb3IgKG1zZ19jYW50
X2tpbGxfbGFzdCwgTlVMTCwgTlVMTCk7DQogICAgIH0NCiAgIGVsc2UgaWYg
KHdpbmRvdy0+ZmxhZ3MgJiBXX1dpbmRvd0lzUGVybSkNCiAgICAgew0KLSAg
ICAgIGluZm9fZXJyb3IgKChjaGFyICopIF8oIkNhbm5vdCBkZWxldGUgYSBw
ZXJtYW5lbnQgd2luZG93IiksIE5VTEwsIE5VTEwpOw0KKyAgICAgIGluZm9f
ZXJyb3IgKF8oIkNhbm5vdCBkZWxldGUgYSBwZXJtYW5lbnQgd2luZG93Iiks
IE5VTEwsIE5VTEwpOw0KICAgICB9DQogICBlbHNlDQogICAgIHsNCkBAIC0x
NzU0LDcgKzE3NTQsNyBAQA0KICAgLyogSWYgb25seSBvbmUgd2luZG93LCBn
aXZlIHVwLiAqLw0KICAgaWYgKCF3aW5kb3dzLT5uZXh0KQ0KICAgICB7DQot
ICAgICAgaW5mb19lcnJvciAoKGNoYXIgKikgbXNnX29uZV93aW5kb3csIE5V
TEwsIE5VTEwpOw0KKyAgICAgIGluZm9fZXJyb3IgKG1zZ19vbmVfd2luZG93
LCBOVUxMLCBOVUxMKTsNCiAgICAgICByZXR1cm47DQogICAgIH0NCiANCkBA
IC0xODg1LDcgKzE4ODUsNyBAQA0KICAgICAgIGlmIChmaWxlX3N5c3RlbV9l
cnJvcikNCiAgICAgICAgIGluZm9fZXJyb3IgKGZpbGVfc3lzdGVtX2Vycm9y
LCBOVUxMLCBOVUxMKTsNCiAgICAgICBlbHNlDQotICAgICAgICBpbmZvX2Vy
cm9yICgoY2hhciAqKSBtc2dfY2FudF9maW5kX25vZGUsIG5vZGVuYW1lLCBO
VUxMKTsNCisgICAgICAgIGluZm9fZXJyb3IgKG1zZ19jYW50X2ZpbmRfbm9k
ZSwgbm9kZW5hbWUsIE5VTEwpOw0KICAgICB9DQogDQogICBtYXliZV9mcmVl
IChmaWxlX3N5c3RlbV9lcnJvcik7DQpAQCAtMTk2MSw3ICsxOTYxLDcgQEAN
CiAgICAgICAgICAgaWYgKGluZm9fcmVjZW50X2ZpbGVfZXJyb3IpDQogICAg
ICAgICAgICAgaW5mb19lcnJvciAoaW5mb19yZWNlbnRfZmlsZV9lcnJvciwg
TlVMTCwgTlVMTCk7DQogICAgICAgICAgIGVsc2UNCi0gICAgICAgICAgICBp
bmZvX2Vycm9yICgoY2hhciAqKSBtc2dfY2FudF9maWxlX25vZGUsIGZpbGVu
YW1lLCBub2RlbmFtZSk7DQorICAgICAgICAgICAgaW5mb19lcnJvciAobXNn
X2NhbnRfZmlsZV9ub2RlLCBmaWxlbmFtZSwgbm9kZW5hbWUpOw0KICAgICAg
ICAgfQ0KIA0KICAgICAgIGZyZWUgKGZpbGVuYW1lKTsNCkBAIC0xOTY5LDcg
KzE5NjksNyBAQA0KICAgICB9DQogICBlbHNlDQogICAgIHsNCi0gICAgICBp
bmZvX2Vycm9yICgoY2hhciAqKSBtc2dfbm9fcG9pbnRlciwgbGFiZWwsIE5V
TEwpOw0KKyAgICAgIGluZm9fZXJyb3IgKG1zZ19ub19wb2ludGVyLCBsYWJl
bCwgTlVMTCk7DQogICAgIH0NCiB9DQogDQpAQCAtMjAyNSw3ICsyMDI1LDcg
QEANCiAgICAgfQ0KIA0KICAgaWYgKCFub2RlKQ0KLSAgICBpbmZvX2Vycm9y
ICgoY2hhciAqKSBfKCJUaGlzIHdpbmRvdyBoYXMgbm8gYWRkaXRpb25hbCBu
b2RlcyIpLCBOVUxMLCBOVUxMKTsNCisgICAgaW5mb19lcnJvciAoXygiVGhp
cyB3aW5kb3cgaGFzIG5vIGFkZGl0aW9uYWwgbm9kZXMiKSwgTlVMTCwgTlVM
TCk7DQogICBlbHNlDQogICAgIGluZm9fc2V0X25vZGVfb2Zfd2luZG93ICgx
LCB3aW5kb3csIG5vZGUpOw0KIH0NCkBAIC0yMDU4LDcgKzIwNTgsNyBAQA0K
ICAgICB9DQogDQogICBpZiAoIW5vZGUpDQotICAgIGluZm9fZXJyb3IgKChj
aGFyICopIF8oIlRoaXMgd2luZG93IGhhcyBubyBhZGRpdGlvbmFsIG5vZGVz
IiksIE5VTEwsIE5VTEwpOw0KKyAgICBpbmZvX2Vycm9yIChfKCJUaGlzIHdp
bmRvdyBoYXMgbm8gYWRkaXRpb25hbCBub2RlcyIpLCBOVUxMLCBOVUxMKTsN
CiAgIGVsc2UNCiAgICAgaW5mb19zZXRfbm9kZV9vZl93aW5kb3cgKDEsIHdp
bmRvdywgbm9kZSk7DQogfQ0KQEAgLTIwODAsNyArMjA4MCw3IEBADQogDQog
ICBpZiAoIW1lbnUpDQogICAgIHsNCi0gICAgICBpbmZvX2Vycm9yICgoY2hh
ciAqKSBtc2dfbm9fbWVudV9ub2RlLCBOVUxMLCBOVUxMKTsNCisgICAgICBp
bmZvX2Vycm9yIChtc2dfbm9fbWVudV9ub2RlLCBOVUxMLCBOVUxMKTsNCiAg
ICAgICByZXR1cm47DQogICAgIH0NCiANCkBAIC0yMTA0LDcgKzIxMDQsNyBA
QA0KICAgICAgICAgaW5mb19uZXh0X2xpbmUgKHdpbmRvdywgbWVudVtpXS0+
bGluZV9udW1iZXIgLSAxLCBrZXkpOw0KICAgICB9DQogICBlbHNlDQotICAg
IGluZm9fZXJyb3IgKChjaGFyICopIF8oIlRoZXJlIGFyZW4ndCAlZCBpdGVt
cyBpbiB0aGlzIG1lbnUuIiksDQorICAgIGluZm9fZXJyb3IgKF8oIlRoZXJl
IGFyZW4ndCAlZCBpdGVtcyBpbiB0aGlzIG1lbnUuIiksDQogICAgICAgICAg
ICAgICAgICh2b2lkICopIChsb25nKSBpdGVtLCBOVUxMKTsNCiANCiAgIGlu
Zm9fZnJlZV9yZWZlcmVuY2VzIChtZW51KTsNCkBAIC0yMTkzLDkgKzIxOTMs
OSBAQA0KICAgaWYgKCFtZW51KQ0KICAgICB7DQogICAgICAgaWYgKGJ1aWxk
ZXIgPT0gaW5mb19tZW51X29mX25vZGUpDQotICAgICAgICBpbmZvX2Vycm9y
ICgoY2hhciAqKSBtc2dfbm9fbWVudV9ub2RlLCBOVUxMLCBOVUxMKTsNCisg
ICAgICAgIGluZm9fZXJyb3IgKG1zZ19ub19tZW51X25vZGUsIE5VTEwsIE5V
TEwpOw0KICAgICAgIGVsc2UNCi0gICAgICAgIGluZm9fZXJyb3IgKChjaGFy
ICopIG1zZ19ub194cmVmX25vZGUsIE5VTEwsIE5VTEwpOw0KKyAgICAgICAg
aW5mb19lcnJvciAobXNnX25vX3hyZWZfbm9kZSwgTlVMTCwgTlVMTCk7DQog
ICAgICAgcmV0dXJuOw0KICAgICB9DQogDQpAQCAtMjM5MSw3ICsyMzkxLDcg
QEANCiAgICAgICAgIH0NCiANCiAgICAgICBpZiAoIWVudHJ5ICYmIGRlZmVu
dHJ5KQ0KLSAgICAgICAgaW5mb19lcnJvciAoKGNoYXIgKikgXygiVGhlIHJl
ZmVyZW5jZSBkaXNhcHBlYXJlZCEgKCVzKS4iKSwgbGluZSwgTlVMTCk7DQor
ICAgICAgICBpbmZvX2Vycm9yIChfKCJUaGUgcmVmZXJlbmNlIGRpc2FwcGVh
cmVkISAoJXMpLiIpLCBsaW5lLCBOVUxMKTsNCiAgICAgICBlbHNlDQogICAg
ICAgICB7DQogICAgICAgICAgIE5PREUgKm9yaWcgPSB3aW5kb3ctPm5vZGU7
DQpAQCAtMjQ2OSw3ICsyNDY5LDcgQEANCiAgIHBvc2l0aW9uID0gc2VhcmNo
IChJTkZPX01FTlVfTEFCRUwsICZiaW5kaW5nKTsNCiANCiAgIGlmIChwb3Np
dGlvbiA9PSAtMSkNCi0gICAgaW5mb19lcnJvciAoKGNoYXIgKikgbXNnX25v
X21lbnVfbm9kZSwgTlVMTCwgTlVMTCk7DQorICAgIGluZm9fZXJyb3IgKG1z
Z19ub19tZW51X25vZGUsIE5VTEwsIE5VTEwpOw0KICAgZWxzZQ0KICAgICB7
DQogICAgICAgd2luZG93LT5wb2ludCA9IHBvc2l0aW9uOw0KQEAgLTI0ODgs
NyArMjQ4OCw3IEBADQogICBtZW51ID0gaW5mb19tZW51X29mX25vZGUgKHdp
bmRvdy0+bm9kZSk7DQogDQogICBpZiAoIW1lbnUpDQotICAgIGluZm9fZXJy
b3IgKChjaGFyICopIG1zZ19ub19tZW51X25vZGUsIE5VTEwsIE5VTEwpOw0K
KyAgICBpbmZvX2Vycm9yIChtc2dfbm9fbWVudV9ub2RlLCBOVUxMLCBOVUxM
KTsNCiANCiAgIGZvciAoaSA9IDA7ICghaW5mb19lcnJvcl93YXNfcHJpbnRl
ZCkgJiYgKGVudHJ5ID0gbWVudVtpXSk7IGkrKykNCiAgICAgew0KQEAgLTI0
OTgsNyArMjQ5OCw3IEBADQogICAgICAgd2luZG93X3RpbGVfd2luZG93cyAo
VElMRV9JTlRFUk5BTFMpOw0KIA0KICAgICAgIGlmICghbmV3KQ0KLSAgICAg
ICAgaW5mb19lcnJvciAoKGNoYXIgKikgbXNnX3dpbl90b29fc21hbGwsIE5V
TEwsIE5VTEwpOw0KKyAgICAgICAgaW5mb19lcnJvciAobXNnX3dpbl90b29f
c21hbGwsIE5VTEwsIE5VTEwpOw0KICAgICAgIGVsc2UNCiAgICAgICAgIHsN
CiAgICAgICAgICAgYWN0aXZlX3dpbmRvdyA9IG5ldzsNCkBAIC0yNTYzLDEy
ICsyNTYzLDEyIEBADQogICAgICAgICAgICAgICB9DQogICAgICAgICAgIH0N
CiAgICAgICB9DQotICAgIGxpbmUgPSBpbmZvX3JlYWRfbWF5YmVfY29tcGxl
dGluZyAod2luZG93LCAoY2hhciAqKSBfKCJHb3RvIG5vZGU6ICIpLA0KKyAg
ICBsaW5lID0gaW5mb19yZWFkX21heWJlX2NvbXBsZXRpbmcgKHdpbmRvdywg
XygiR290byBub2RlOiAiKSwNCiAgICAgICAgIGl0ZW1zKTsNCiAgICAgaW5m
b19mcmVlX3JlZmVyZW5jZXMgKGl0ZW1zKTsNCiAgIH0NCiAjZWxzZSAvKiAh
R09UT19DT01QTEVURVMgKi8NCi0gIGxpbmUgPSBpbmZvX3JlYWRfaW5fZWNo
b19hcmVhICh3aW5kb3csIChjaGFyICopIF8oIkdvdG8gbm9kZTogIikpOw0K
KyAgbGluZSA9IGluZm9fcmVhZF9pbl9lY2hvX2FyZWEgKHdpbmRvdywgXygi
R290byBub2RlOiAiKSk7DQogI2VuZGlmIC8qICFHT1RPX0NPTVBMRVRFUyAq
Lw0KIA0KICAgLyogSWYgdGhlIHVzZXIgYWJvcnRlZCwgcXVpdCBub3cuICov
DQpAQCAtMjc2MCw3ICsyNzYwLDcgQEANCiBERUNMQVJFX0lORk9fQ09NTUFO
RCAoaW5mb19tZW51X3NlcXVlbmNlLA0KICAgIF8oIlJlYWQgYSBsaXN0IG9m
IG1lbnVzIHN0YXJ0aW5nIGZyb20gZGlyIGFuZCBmb2xsb3cgdGhlbSIpKQ0K
IHsNCi0gIGNoYXIgKmxpbmUgPSBpbmZvX3JlYWRfaW5fZWNob19hcmVhICh3
aW5kb3csIChjaGFyICopIF8oIkZvbGxvdyBtZW51czogIikpOw0KKyAgY2hh
ciAqbGluZSA9IGluZm9fcmVhZF9pbl9lY2hvX2FyZWEgKHdpbmRvdywgXygi
Rm9sbG93IG1lbnVzOiAiKSk7DQogDQogICAvKiBJZiB0aGUgdXNlciBhYm9y
dGVkLCBxdWl0IG5vdy4gKi8NCiAgIGlmICghbGluZSkNCkBAIC0yNzkzLDcg
KzI3OTMsNyBAQA0KICAgICAgIC8qIElmIHdlIHN0aWxsIGNhbm5vdCBmaW5k
IHRoZSBzdGFydGluZyBwb2ludCwgZ2l2ZSB1cC4NCiAgICAgICAgICBXZSBj
YW5ub3QgYWxsb3cgYSBOVUxMIHBvaW50ZXIgaW5zaWRlIGluZm9fZm9sbG93
X21lbnVzLiAgKi8NCiAgICAgICBpZiAoIWRpcl9ub2RlKQ0KLSAgICAgICAg
aW5mb19lcnJvciAoKGNoYXIgKikgbXNnX2NhbnRfZmluZF9ub2RlLCAiVG9w
IiwgTlVMTCk7DQorICAgICAgICBpbmZvX2Vycm9yIChtc2dfY2FudF9maW5k
X25vZGUsICJUb3AiLCBOVUxMKTsNCiAgICAgICBlbHNlDQogICAgICAgICBu
b2RlID0gaW5mb19mb2xsb3dfbWVudXMgKGRpcl9ub2RlLCBub2RlcywgJmVy
cnN0ciwgJmVycmFyZzEsICZlcnJhcmcyKTsNCiANCkBAIC0yODAxLDcgKzI4
MDEsNyBAQA0KICAgICAgIGlmICghZXJyc3RyKQ0KICAgICAgICAgaW5mb19z
ZXRfbm9kZV9vZl93aW5kb3cgKDEsIHdpbmRvdywgbm9kZSk7DQogICAgICAg
ZWxzZQ0KLSAgICAgICAgaW5mb19lcnJvciAoKGNoYXIgKikgZXJyc3RyLCBl
cnJhcmcxLCBlcnJhcmcyKTsNCisgICAgICAgIGluZm9fZXJyb3IgKGVycnN0
ciwgZXJyYXJnMSwgZXJyYXJnMik7DQogICAgIH0NCiANCiAgIGZyZWUgKGxp
bmUpOw0KQEAgLTI5ODUsNyArMjk4NSw3IEBADQogICAgICBmcm9tIHRoZSBU
b3Agbm9kZS4gICovDQogICB0b3Bfbm9kZSA9IGluZm9fZ2V0X25vZGUgKGZp
bGVfbmFtZSwgTlVMTCk7DQogICBpZiAoIXRvcF9ub2RlKQ0KLSAgICBpbmZv
X2Vycm9yICgoY2hhciAqKSBtc2dfY2FudF9maW5kX25vZGUsICJUb3AiLCBO
VUxMKTsNCisgICAgaW5mb19lcnJvciAobXNnX2NhbnRfZmluZF9ub2RlLCAi
VG9wIiwgTlVMTCk7DQogDQogICBpbmZvX2ludHVpdF9vcHRpb25zX25vZGUg
KHdpbmRvdywgdG9wX25vZGUsIHByb2dyYW1fbmFtZSk7DQogICBmcmVlIChs
aW5lKTsNCkBAIC0yOTk3LDcgKzI5OTcsNyBAQA0KIHsNCiAgIGNoYXIgKmxp
bmU7DQogDQotICBsaW5lID0gaW5mb19yZWFkX2luX2VjaG9fYXJlYSAod2lu
ZG93LCAoY2hhciAqKSBfKCJHZXQgTWFucGFnZTogIikpOw0KKyAgbGluZSA9
IGluZm9fcmVhZF9pbl9lY2hvX2FyZWEgKHdpbmRvdywgXygiR2V0IE1hbnBh
Z2U6ICIpKTsNCiANCiAgIGlmICghbGluZSkNCiAgICAgew0KQEAgLTMxMDQs
NyArMzEwNCw3IEBADQogICBpZiAoIWluZm9fd2luKQ0KICAgICB7DQogICAg
ICAgaWYgKCpub2RlbmFtZSkNCi0gICAgICAgIGluZm9fZXJyb3IgKChjaGFy
ICopIF8oIkNhbm5vdCBraWxsIG5vZGUgYCVzJyIpLCBub2RlbmFtZSwgTlVM
TCk7DQorICAgICAgICBpbmZvX2Vycm9yIChfKCJDYW5ub3Qga2lsbCBub2Rl
IGAlcyciKSwgbm9kZW5hbWUsIE5VTEwpOw0KICAgICAgIGVsc2UNCiAgICAg
ICAgIHdpbmRvd19jbGVhcl9lY2hvX2FyZWEgKCk7DQogDQpAQCAtMzExNCw3
ICszMTE0LDcgQEANCiAgIC8qIElmIHRoZXJlIGFyZSBubyBtb3JlIG5vZGVz
IGxlZnQgYW55d2hlcmUgdG8gdmlldywgY29tcGxhaW4gYW5kIGV4aXQuICov
DQogICBpZiAoaW5mb193aW5kb3dzX2luZGV4ID09IDEgJiYgaW5mb193aW5k
b3dzWzBdLT5ub2Rlc19pbmRleCA9PSAxKQ0KICAgICB7DQotICAgICAgaW5m
b19lcnJvciAoKGNoYXIgKikgXygiQ2Fubm90IGtpbGwgdGhlIGxhc3Qgbm9k
ZSIpLCBOVUxMLCBOVUxMKTsNCisgICAgICBpbmZvX2Vycm9yIChfKCJDYW5u
b3Qga2lsbCB0aGUgbGFzdCBub2RlIiksIE5VTEwsIE5VTEwpOw0KICAgICAg
IHJldHVybjsNCiAgICAgfQ0KIA0KQEAgLTMyMTgsNyArMzIxOCw3IEBADQog
ew0KICAgY2hhciAqbGluZTsNCiANCi0gIGxpbmUgPSBpbmZvX3JlYWRfaW5f
ZWNob19hcmVhICh3aW5kb3csIChjaGFyICopIF8oIkZpbmQgZmlsZTogIikp
Ow0KKyAgbGluZSA9IGluZm9fcmVhZF9pbl9lY2hvX2FyZWEgKHdpbmRvdywg
XygiRmluZCBmaWxlOiAiKSk7DQogICBpZiAoIWxpbmUpDQogICAgIHsNCiAg
ICAgICBpbmZvX2Fib3J0X2tleSAoYWN0aXZlX3dpbmRvdywgMSwgMCk7DQpA
QCAtMzIzNSw3ICszMjM1LDcgQEANCiAgICAgICAgICAgaWYgKGluZm9fcmVj
ZW50X2ZpbGVfZXJyb3IpDQogICAgICAgICAgICAgaW5mb19lcnJvciAoaW5m
b19yZWNlbnRfZmlsZV9lcnJvciwgTlVMTCwgTlVMTCk7DQogICAgICAgICAg
IGVsc2UNCi0gICAgICAgICAgICBpbmZvX2Vycm9yICgoY2hhciAqKSBfKCJD
YW5ub3QgZmluZCBgJXMnLiIpLCBsaW5lLCBOVUxMKTsNCisgICAgICAgICAg
ICBpbmZvX2Vycm9yIChfKCJDYW5ub3QgZmluZCBgJXMnLiIpLCBsaW5lLCBO
VUxMKTsNCiAgICAgICAgIH0NCiAgICAgICBlbHNlDQogICAgICAgICBpbmZv
X3NldF9ub2RlX29mX3dpbmRvdyAoMSwgd2luZG93LCBub2RlKTsNCkBAIC0z
Mjc4LDcgKzMyNzgsNyBAQA0KIA0KICAgaWYgKCFvdXRwdXRfc3RyZWFtKQ0K
ICAgICB7DQotICAgICAgaW5mb19lcnJvciAoKGNoYXIgKikgXygiQ291bGQg
bm90IGNyZWF0ZSBvdXRwdXQgZmlsZSBgJXMnLiIpLA0KKyAgICAgIGluZm9f
ZXJyb3IgKF8oIkNvdWxkIG5vdCBjcmVhdGUgb3V0cHV0IGZpbGUgYCVzJy4i
KSwNCiAgICAgICAgICAgb3V0cHV0X2ZpbGVuYW1lLCBOVUxMKTsNCiAgICAg
ICByZXR1cm47DQogICAgIH0NCkBAIC0zMjkyLDcgKzMyOTIsNyBAQA0KICAg
ICBmY2xvc2UgKG91dHB1dF9zdHJlYW0pOw0KIA0KICNpZiBkZWZpbmVkIChW
RVJCT1NFX05PREVfRFVNUElORykNCi0gIGluZm9fZXJyb3IgKChjaGFyICop
IF8oIkRvbmUuIiksIE5VTEwsIE5VTEwpOw0KKyAgaW5mb19lcnJvciAoXygi
RG9uZS4iKSwgTlVMTCwgTlVMTCk7DQogI2VuZGlmIC8qIFZFUkJPU0VfTk9E
RV9EVU1QSU5HICovDQogfQ0KIA0KQEAgLTMzMjYsMTEgKzMzMjYsMTEgQEAN
CiAgICAgICBlbHNlDQogICAgICAgICB7DQogICAgICAgICAgIGlmIChmaWxl
bmFtZSAmJiAqbm9kZW5hbWUgIT0gJygnKQ0KLSAgICAgICAgICAgIGluZm9f
ZXJyb3IgKChjaGFyICopIG1zZ19jYW50X2ZpbGVfbm9kZSwNCisgICAgICAg
ICAgICBpbmZvX2Vycm9yIChtc2dfY2FudF9maWxlX25vZGUsDQogICAgICAg
ICAgICAgICAgIGZpbGVuYW1lX25vbl9kaXJlY3RvcnkgKGZpbGVuYW1lKSwN
CiAgICAgICAgICAgICAgICAgbm9kZW5hbWUpOw0KICAgICAgICAgICBlbHNl
DQotICAgICAgICAgICAgaW5mb19lcnJvciAoKGNoYXIgKikgbXNnX2NhbnRf
ZmluZF9ub2RlLCBub2RlbmFtZSwgTlVMTCk7DQorICAgICAgICAgICAgaW5m
b19lcnJvciAobXNnX2NhbnRfZmluZF9ub2RlLCBub2RlbmFtZSwgTlVMTCk7
DQogICAgICAgICB9DQogICAgICAgcmV0dXJuOw0KICAgICB9DQpAQCAtMzM0
Nyw3ICszMzQ3LDcgQEANCiANCiAjaWYgZGVmaW5lZCAoVkVSQk9TRV9OT0RF
X0RVTVBJTkcpDQogICAvKiBNYXliZSB3ZSBzaG91bGQgcHJpbnQgc29tZSBp
bmZvcm1hdGlvbiBhYm91dCB0aGUgbm9kZSBiZWluZyBvdXRwdXQuICovDQot
ICBpbmZvX2Vycm9yICgoY2hhciAqKSBfKCJXcml0aW5nIG5vZGUgJXMuLi4i
KSwgbm9kZV9wcmludGVkX3JlcCAobm9kZSksIE5VTEwpOw0KKyAgaW5mb19l
cnJvciAoXygiV3JpdGluZyBub2RlICVzLi4uIiksIG5vZGVfcHJpbnRlZF9y
ZXAgKG5vZGUpLCBOVUxMKTsNCiAjZW5kaWYgLyogVkVSQk9TRV9OT0RFX0RV
TVBJTkcgKi8NCiANCiAgIHdyaXRlX25vZGVfdG9fc3RyZWFtIChub2RlLCBz
dHJlYW0pOw0KQEAgLTMzOTYsNyArMzM5Niw3IEBADQogDQogICBpZiAoIW91
dHB1dF9zdHJlYW0pDQogICAgIHsNCi0gICAgICBpbmZvX2Vycm9yICgoY2hh
ciAqKSBfKCJDb3VsZCBub3QgY3JlYXRlIG91dHB1dCBmaWxlIGAlcycuIiks
IGZpbGVuYW1lLA0KKyAgICAgIGluZm9fZXJyb3IgKF8oIkNvdWxkIG5vdCBj
cmVhdGUgb3V0cHV0IGZpbGUgYCVzJy4iKSwgZmlsZW5hbWUsDQogICAgICAg
ICAgIE5VTEwpOw0KICAgICAgIHJldHVybjsNCiAgICAgfQ0KQEAgLTM0MTQs
NyArMzQxNCw3IEBADQogICAgIGZjbG9zZSAob3V0cHV0X3N0cmVhbSk7DQog
DQogI2lmIGRlZmluZWQgKFZFUkJPU0VfTk9ERV9EVU1QSU5HKQ0KLSAgaW5m
b19lcnJvciAoKGNoYXIgKikgXygiRG9uZS4iKSwgTlVMTCwgTlVMTCk7DQor
ICBpbmZvX2Vycm9yIChfKCJEb25lLiIpLCBOVUxMLCBOVUxMKTsNCiAjZW5k
aWYgLyogVkVSQk9TRV9OT0RFX0RVTVBJTkcgKi8NCiB9DQogDQpAQCAtMzQ1
OCwxMyArMzQ1OCwxMyBAQA0KIA0KICAgaWYgKCFwcmludGVyX3BpcGUpDQog
ICAgIHsNCi0gICAgICBpbmZvX2Vycm9yICgoY2hhciAqKSBfKCJDYW5ub3Qg
b3BlbiBwaXBlIHRvIGAlcycuIiksIHByaW50X2NvbW1hbmQsIE5VTEwpOw0K
KyAgICAgIGluZm9fZXJyb3IgKF8oIkNhbm5vdCBvcGVuIHBpcGUgdG8gYCVz
Jy4iKSwgcHJpbnRfY29tbWFuZCwgTlVMTCk7DQogICAgICAgcmV0dXJuOw0K
ICAgICB9DQogDQogI2lmIGRlZmluZWQgKFZFUkJPU0VfTk9ERV9EVU1QSU5H
KQ0KICAgLyogTWF5YmUgd2Ugc2hvdWxkIHByaW50IHNvbWUgaW5mb3JtYXRp
b24gYWJvdXQgdGhlIG5vZGUgYmVpbmcgb3V0cHV0LiAqLw0KLSAgaW5mb19l
cnJvciAoKGNoYXIgKikgXygiUHJpbnRpbmcgbm9kZSAlcy4uLiIpLCBub2Rl
X3ByaW50ZWRfcmVwIChub2RlKSwgTlVMTCk7DQorICBpbmZvX2Vycm9yIChf
KCJQcmludGluZyBub2RlICVzLi4uIiksIG5vZGVfcHJpbnRlZF9yZXAgKG5v
ZGUpLCBOVUxMKTsNCiAjZW5kaWYgLyogVkVSQk9TRV9OT0RFX0RVTVBJTkcg
Ki8NCiANCiAgIHdyaXRlX25vZGVfdG9fc3RyZWFtIChub2RlLCBwcmludGVy
X3BpcGUpOw0KQEAgLTM0NzQsNyArMzQ3NCw3IEBADQogICAgIGZjbG9zZSAo
cHJpbnRlcl9waXBlKTsNCiANCiAjaWYgZGVmaW5lZCAoVkVSQk9TRV9OT0RF
X0RVTVBJTkcpDQotICBpbmZvX2Vycm9yICgoY2hhciAqKSBfKCJEb25lLiIp
LCBOVUxMLCBOVUxMKTsNCisgIGluZm9fZXJyb3IgKF8oIkRvbmUuIiksIE5V
TEwsIE5VTEwpOw0KICNlbmRpZiAvKiBWRVJCT1NFX05PREVfRFVNUElORyAq
Lw0KIH0NCiANCkBAIC0zNjk2LDcgKzM2OTYsNyBAQA0KICAgICAgICAgICBp
ZiAoIWVjaG9fYXJlYV9pc19hY3RpdmUgJiYgKGxhc3Rfc3ViZmlsZSAhPSB0
YWctPmZpbGVuYW1lKSkNCiAgICAgICAgICAgICB7DQogICAgICAgICAgICAg
ICB3aW5kb3dfbWVzc2FnZV9pbl9lY2hvX2FyZWENCi0gICAgICAgICAgICAg
ICAgKChjaGFyICopIF8oIlNlYXJjaGluZyBzdWJmaWxlICVzIC4uLiIpLA0K
KyAgICAgICAgICAgICAgICAoXygiU2VhcmNoaW5nIHN1YmZpbGUgJXMgLi4u
IiksDQogICAgICAgICAgICAgICAgICBmaWxlbmFtZV9ub25fZGlyZWN0b3J5
ICh0YWctPmZpbGVuYW1lKSwgTlVMTCk7DQogDQogICAgICAgICAgICAgICBs
YXN0X3N1YmZpbGUgPSB0YWctPmZpbGVuYW1lOw0KQEAgLTM3MTIsNyArMzcx
Miw3IEBADQogICAgICAgICAgICAgICAgICAgaWYgKGluZm9fcmVjZW50X2Zp
bGVfZXJyb3IpDQogICAgICAgICAgICAgICAgICAgICBpbmZvX2Vycm9yIChp
bmZvX3JlY2VudF9maWxlX2Vycm9yLCBOVUxMLCBOVUxMKTsNCiAgICAgICAg
ICAgICAgICAgICBlbHNlDQotICAgICAgICAgICAgICAgICAgICBpbmZvX2Vy
cm9yICgoY2hhciAqKSBtc2dfY2FudF9maWxlX25vZGUsDQorICAgICAgICAg
ICAgICAgICAgICBpbmZvX2Vycm9yIChtc2dfY2FudF9maWxlX25vZGUsDQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZV9ub25f
ZGlyZWN0b3J5IChmaWxlX2J1ZmZlci0+ZmlsZW5hbWUpLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGFnLT5ub2RlbmFtZSk7DQogICAg
ICAgICAgICAgICAgIH0NCkBAIC0zODQ3LDcgKzM4NDcsNyBAQA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlX3dpbmRvdywg
ZGlyZWN0aW9uLCBjYXNlX3NlbnNpdGl2ZSk7DQogDQogICBpZiAocmVzdWx0
ICE9IDAgJiYgIWluZm9fZXJyb3Jfd2FzX3ByaW50ZWQpDQotICAgIGluZm9f
ZXJyb3IgKChjaGFyICopIF8oIlNlYXJjaCBmYWlsZWQuIiksIE5VTEwsIE5V
TEwpOw0KKyAgICBpbmZvX2Vycm9yIChfKCJTZWFyY2ggZmFpbGVkLiIpLCBO
VUxMLCBOVUxMKTsNCiAgIGVsc2UgaWYgKG9sZF9wYWdldG9wICE9IGFjdGl2
ZV93aW5kb3ctPnBhZ2V0b3ApDQogICAgIHsNCiAgICAgICBpbnQgbmV3X3Bh
Z2V0b3A7DQpAQCAtMzg2OCw3ICszODY4LDcgQEANCiAgICAgICAgICAgICAg
ICAgICAgICAgXygiUmVwZWF0IGxhc3Qgc2VhcmNoIGluIHRoZSBzYW1lIGRp
cmVjdGlvbiIpKQ0KIHsNCiAgIGlmICghbGFzdF9zZWFyY2hfZGlyZWN0aW9u
KQ0KLSAgICBpbmZvX2Vycm9yICgoY2hhciAqKSBfKCJObyBwcmV2aW91cyBz
ZWFyY2ggc3RyaW5nIiksIE5VTEwsIE5VTEwpOw0KKyAgICBpbmZvX2Vycm9y
IChfKCJObyBwcmV2aW91cyBzZWFyY2ggc3RyaW5nIiksIE5VTEwsIE5VTEwp
Ow0KICAgZWxzZQ0KICAgICBpbmZvX3NlYXJjaF8xICh3aW5kb3csIGxhc3Rf
c2VhcmNoX2RpcmVjdGlvbiAqIGNvdW50LA0KICAgICAgICAgICAgICAgICAg
ICBrZXksIGxhc3Rfc2VhcmNoX2Nhc2Vfc2Vuc2l0aXZlLCAwKTsNCkBAIC0z
ODc4LDcgKzM4NzgsNyBAQA0KICAgICAgICAgICAgICAgICAgICAgICBfKCJS
ZXBlYXQgbGFzdCBzZWFyY2ggaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uIikp
DQogew0KICAgaWYgKCFsYXN0X3NlYXJjaF9kaXJlY3Rpb24pDQotICAgIGlu
Zm9fZXJyb3IgKChjaGFyICopIF8oIk5vIHByZXZpb3VzIHNlYXJjaCBzdHJp
bmciKSwgTlVMTCwgTlVMTCk7DQorICAgIGluZm9fZXJyb3IgKF8oIk5vIHBy
ZXZpb3VzIHNlYXJjaCBzdHJpbmciKSwgTlVMTCwgTlVMTCk7DQogICBlbHNl
DQogICAgIGluZm9fc2VhcmNoXzEgKHdpbmRvdywgLWxhc3Rfc2VhcmNoX2Rp
cmVjdGlvbiAqIGNvdW50LA0KICAgICAgICAgICAgICAgICAgICBrZXksIGxh
c3Rfc2VhcmNoX2Nhc2Vfc2Vuc2l0aXZlLCAwKTsNCkBAIC00NDE4LDcgKzQ0
MTgsNyBAQA0KIA0KICAgaWYgKGZpcnN0bWVudSA9PSAtMSAmJiBmaXJzdHhy
ZWYgPT0gLTEpDQogICAgIHsNCi0gICAgICBpbmZvX2Vycm9yICgoY2hhciAq
KSBtc2dfbm9feHJlZl9ub2RlLCBOVUxMLCBOVUxMKTsNCisgICAgICBpbmZv
X2Vycm9yIChtc2dfbm9feHJlZl9ub2RlLCBOVUxMLCBOVUxMKTsNCiAgICAg
ICB1c2VfcmVnZXggPSBzYXZlX3VzZV9yZWdleDsNCiAgICAgICByZXR1cm4g
Y3Vyc29yX21vdmVtZW50X3Njcm9sbHNfcDsNCiAgICAgfQ0KQEAgLTQ1NjUs
NyArNDU2NSw3IEBADQogICAgICBkbyBpdC4gKi8NCiAgIGlmICghaW5mb19l
cnJvcl9yaW5nc19iZWxsX3ApDQogICAgIHRlcm1pbmFsX3JpbmdfYmVsbCAo
KTsNCi0gIGluZm9fZXJyb3IgKChjaGFyICopIF8oIlF1aXQiKSwgTlVMTCwg
TlVMTCk7DQorICBpbmZvX2Vycm9yIChfKCJRdWl0IiksIE5VTEwsIE5VTEwp
Ow0KIA0KICAgaW5mb19pbml0aWFsaXplX251bWVyaWNfYXJnICgpOw0KICAg
aW5mb19jbGVhcl9wZW5kaW5nX2lucHV0ICgpOw0KQEAgLTQ2NjcsNyArNDY2
Nyw3IEBADQogICByZXAgPSBwcmV0dHlfa2V5c2VxIChrZXlzZXEpOw0KIA0K
ICAgaWYgKCFlY2hvX2FyZWFfaXNfYWN0aXZlKQ0KLSAgICBpbmZvX2Vycm9y
ICgoY2hhciAqKSBfKCJVbmtub3duIGNvbW1hbmQgKCVzKS4iKSwgcmVwLCBO
VUxMKTsNCisgICAgaW5mb19lcnJvciAoXygiVW5rbm93biBjb21tYW5kICgl
cykuIiksIHJlcCwgTlVMTCk7DQogICBlbHNlDQogICAgIHsNCiAgICAgICBj
aGFyICp0ZW1wID0geG1hbGxvYyAoMSArIHN0cmxlbiAocmVwKSArIHN0cmxl
biAoXygiXCIlc1wiIGlzIGludmFsaWQiKSkpOw0KZGlmZiAtdXIgdGV4aW5m
by00LjExLjkwLm9yaWcvaW5mby9zZXNzaW9uLmggdGV4aW5mby00LjExLjkw
L2luZm8vc2Vzc2lvbi5oDQotLS0gdGV4aW5mby00LjExLjkwLm9yaWcvaW5m
by9zZXNzaW9uLmgJMjAwNy0xMi0xNyAyMDoxMjoxMS4wMDAwMDAwMDAgKzAx
MDANCisrKyB0ZXhpbmZvLTQuMTEuOTAvaW5mby9zZXNzaW9uLmgJMjAwOC0w
Mi0yNSAxMjowMzoyMC4wMDAwMDAwMDAgKzAxMDANCkBAIC0xMDksNyArMTA5
LDcgQEANCiAgICAgY2hhciAqKm5vZGVuYW1lcyk7DQogZXh0ZXJuIHZvaWQg
YmVnaW5faW5mb19zZXNzaW9uIChOT0RFICppbml0aWFsX25vZGUpOw0KIGV4
dGVybiB2b2lkIGJlZ2luX2luZm9fc2Vzc2lvbl93aXRoX2Vycm9yIChOT0RF
ICppbml0aWFsX25vZGUsDQotICAgIGNoYXIgKmZvcm1hdCwgdm9pZCAqYXJn
MSwgdm9pZCAqYXJnMik7DQorICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgdm9p
ZCAqYXJnMSwgdm9pZCAqYXJnMik7DQogZXh0ZXJuIHZvaWQgaW5mb19zZXNz
aW9uICh2b2lkKTsNCiBleHRlcm4gdm9pZCBpbml0aWFsaXplX2luZm9fc2Vz
c2lvbiAoTk9ERSAqbm9kZSwgaW50IGNsZWFyX3NjcmVlbik7DQogZXh0ZXJu
IHZvaWQgaW5mb19yZWFkX2FuZF9kaXNwYXRjaCAodm9pZCk7DQpkaWZmIC11
ciB0ZXhpbmZvLTQuMTEuOTAub3JpZy9pbmZvL3ZhcmlhYmxlcy5jIHRleGlu
Zm8tNC4xMS45MC9pbmZvL3ZhcmlhYmxlcy5jDQotLS0gdGV4aW5mby00LjEx
LjkwLm9yaWcvaW5mby92YXJpYWJsZXMuYwkyMDA3LTEyLTAzIDAyOjE5OjI3
LjAwMDAwMDAwMCArMDEwMA0KKysrIHRleGluZm8tNC4xMS45MC9pbmZvL3Zh
cmlhYmxlcy5jCTIwMDgtMDItMjUgMTI6MTQ6MjQuMDAwMDAwMDAwICswMTAw
DQpAQCAtODYsNyArODYsNyBAQA0KICAgY2hhciAqZGVzY3JpcHRpb247DQog
DQogICAvKiBHZXQgdGhlIHZhcmlhYmxlJ3MgbmFtZS4gKi8NCi0gIHZhciA9
IHJlYWRfdmFyaWFibGVfbmFtZSAoKGNoYXIgKikgXygiRGVzY3JpYmUgdmFy
aWFibGU6ICIpLCB3aW5kb3cpOw0KKyAgdmFyID0gcmVhZF92YXJpYWJsZV9u
YW1lIChfKCJEZXNjcmliZSB2YXJpYWJsZTogIiksIHdpbmRvdyk7DQogDQog
ICBpZiAoIXZhcikNCiAgICAgcmV0dXJuOw0KQEAgLTExMSw3ICsxMTEsNyBA
QA0KICAgY2hhciAqbGluZTsNCiANCiAgIC8qIEdldCB0aGUgdmFyaWFibGUn
cyBuYW1lIGFuZCB2YWx1ZS4gKi8NCi0gIHZhciA9IHJlYWRfdmFyaWFibGVf
bmFtZSAoKGNoYXIgKikgXygiU2V0IHZhcmlhYmxlOiAiKSwgd2luZG93KTsN
CisgIHZhciA9IHJlYWRfdmFyaWFibGVfbmFtZSAoXygiU2V0IHZhcmlhYmxl
OiAiKSwgd2luZG93KTsNCiANCiAgIGlmICghdmFyKQ0KICAgICByZXR1cm47
DQpAQCAtMjEwLDcgKzIxMCw3IEBADQogICAgYWRkcmVzcyBvZiBhIFZBUklB
QkxFX0FMSVNUIG1lbWJlci4gIEEgcmV0dXJuIHZhbHVlIG9mIE5VTEwgaW5k
aWNhdGVzDQogICAgdGhhdCBubyB2YXJpYWJsZSBjb3VsZCBiZSByZWFkLiAq
Lw0KIFZBUklBQkxFX0FMSVNUICoNCi1yZWFkX3ZhcmlhYmxlX25hbWUgKGNo
YXIgKnByb21wdCwgV0lORE9XICp3aW5kb3cpDQorcmVhZF92YXJpYWJsZV9u
YW1lIChjb25zdCBjaGFyICpwcm9tcHQsIFdJTkRPVyAqd2luZG93KQ0KIHsN
CiAgIHJlZ2lzdGVyIGludCBpOw0KICAgY2hhciAqbGluZTsNCmRpZmYgLXVy
IHRleGluZm8tNC4xMS45MC5vcmlnL2luZm8vdmFyaWFibGVzLmggdGV4aW5m
by00LjExLjkwL2luZm8vdmFyaWFibGVzLmgNCi0tLSB0ZXhpbmZvLTQuMTEu
OTAub3JpZy9pbmZvL3ZhcmlhYmxlcy5oCTIwMDctMDgtMDcgMTA6MjQ6NDYu
MDAwMDAwMDAwICswMjAwDQorKysgdGV4aW5mby00LjExLjkwL2luZm8vdmFy
aWFibGVzLmgJMjAwOC0wMi0yNSAxMjoxNDoyOS4wMDAwMDAwMDAgKzAxMDAN
CkBAIC00MSw3ICs0MSw3IEBADQogLyogUmVhZCB0aGUgbmFtZSBvZiBhbiBJ
bmZvIHZhcmlhYmxlIGluIHRoZSBlY2hvIGFyZWEgYW5kIHJldHVybiB0aGUN
CiAgICBhZGRyZXNzIG9mIGEgVkFSSUFCTEVfQUxJU1QgbWVtYmVyLiAgQSBy
ZXR1cm4gdmFsdWUgb2YgTlVMTCBpbmRpY2F0ZXMNCiAgICB0aGF0IG5vIHZh
cmlhYmxlIGNvdWxkIGJlIHJlYWQuICovDQotZXh0ZXJuIFZBUklBQkxFX0FM
SVNUICpyZWFkX3ZhcmlhYmxlX25hbWUgKGNoYXIgKnByb21wdCwgV0lORE9X
ICp3aW5kb3cpOw0KK2V4dGVybiBWQVJJQUJMRV9BTElTVCAqcmVhZF92YXJp
YWJsZV9uYW1lIChjb25zdCBjaGFyICpwcm9tcHQsIFdJTkRPVyAqd2luZG93
KTsNCiANCiAvKiBNYWtlIGFuIGFycmF5IG9mIFJFRkVSRU5DRSB3aGljaCBh
Y3R1YWxseSBjb250YWlucyB0aGUgbmFtZXMgb2YgdGhlDQogICAgdmFyaWFi
bGVzIGF2YWlsYWJsZSBpbiBJbmZvLiAqLw0KZGlmZiAtdXIgdGV4aW5mby00
LjExLjkwLm9yaWcvaW5mby93aW5kb3cuYyB0ZXhpbmZvLTQuMTEuOTAvaW5m
by93aW5kb3cuYw0KLS0tIHRleGluZm8tNC4xMS45MC5vcmlnL2luZm8vd2lu
ZG93LmMJMjAwOC0wMi0xOSAxNTo1ODoyOS4wMDAwMDAwMDAgKzAxMDANCisr
KyB0ZXhpbmZvLTQuMTEuOTAvaW5mby93aW5kb3cuYwkyMDA4LTAyLTI1IDEx
OjQxOjQxLjAwMDAwMDAwMCArMDEwMA0KQEAgLTEyNjksNyArMTI2OSw3IEBA
DQogICAgcHJpbnRmICgpIGhhaXIgaXMgcHJlc2VudC4gIFRoZSBtZXNzYWdl
IGFwcGVhcnMgaW1tZWRpYXRlbHkuICBJZiB0aGVyZSB3YXMNCiAgICBhbHJl
YWR5IGEgbWVzc2FnZSBhcHBlYXJpbmcgaW4gdGhlIGVjaG8gYXJlYSwgaXQg
aXMgcmVtb3ZlZC4gKi8NCiB2b2lkDQotd2luZG93X21lc3NhZ2VfaW5fZWNo
b19hcmVhIChjaGFyICpmb3JtYXQsIHZvaWQgKmFyZzEsIHZvaWQgKmFyZzIp
DQord2luZG93X21lc3NhZ2VfaW5fZWNob19hcmVhIChjb25zdCBjaGFyICpm
b3JtYXQsIHZvaWQgKmFyZzEsIHZvaWQgKmFyZzIpDQogew0KICAgZnJlZV9l
Y2hvX2FyZWEgKCk7DQogICBlY2hvX2FyZWFfbm9kZSA9IGJ1aWxkX21lc3Nh
Z2Vfbm9kZSAoZm9ybWF0LCBhcmcxLCBhcmcyKTsNCkBAIC0xMjg2LDcgKzEy
ODYsNyBAQA0KIHN0YXRpYyBpbnQgb2xkX2VjaG9fYXJlYV9ub2Rlc19zbG90
cyA9IDA7DQogDQogdm9pZA0KLW1lc3NhZ2VfaW5fZWNob19hcmVhIChjaGFy
ICpmb3JtYXQsIHZvaWQgKmFyZzEsIHZvaWQgKmFyZzIpDQorbWVzc2FnZV9p
bl9lY2hvX2FyZWEgKGNvbnN0IGNoYXIgKmZvcm1hdCwgdm9pZCAqYXJnMSwg
dm9pZCAqYXJnMikNCiB7DQogICBpZiAoZWNob19hcmVhX25vZGUpDQogICAg
IHsNCkBAIC0xMzM2LDcgKzEzMzYsNyBAQA0KIC8qIEZvcm1hdCBNRVNTQUdF
X0JVRkZFUiB3aXRoIHRoZSByZXN1bHRzIG9mIHByaW50aW5nIEZPUk1BVCB3
aXRoIEFSRzEgYW5kDQogICAgQVJHMi4gKi8NCiBzdGF0aWMgdm9pZA0KLWJ1
aWxkX21lc3NhZ2VfYnVmZmVyIChjaGFyICpmb3JtYXQsIHZvaWQgKmFyZzEs
IHZvaWQgKmFyZzIsIHZvaWQgKmFyZzMpDQorYnVpbGRfbWVzc2FnZV9idWZm
ZXIgKGNvbnN0IGNoYXIgKmZvcm1hdCwgdm9pZCAqYXJnMSwgdm9pZCAqYXJn
Miwgdm9pZCAqYXJnMykNCiB7DQogICByZWdpc3RlciBpbnQgaSwgbGVuOw0K
ICAgdm9pZCAqYXJnc1szXTsNCkBAIC0xMzYwLDcgKzEzNjAsNyBAQA0KICAg
ICAgIGVsc2UNCiAgICAgICAgIHsNCiAgICAgICAgICAgY2hhciBjOw0KLSAg
ICAgICAgICBjaGFyICpmbXRfc3RhcnQgPSBmb3JtYXQgKyBpOw0KKyAgICAg
ICAgICBjb25zdCBjaGFyICpmbXRfc3RhcnQgPSBmb3JtYXQgKyBpOw0KICAg
ICAgICAgICBjaGFyICpmbXQ7DQogICAgICAgICAgIGludCBmbXRfbGVuLCBm
b3JtYXR0ZWRfbGVuOw0KIAkgIGludCBwYXJhbWVkID0gMDsNCkBAIC0xNDgz
LDcgKzE0ODMsNyBAQA0KIC8qIEJ1aWxkIGEgbmV3IG5vZGUgd2hpY2ggaGFz
IEZPUk1BVCBwcmludGVkIHdpdGggQVJHMSBhbmQgQVJHMiBhcyB0aGUNCiAg
ICBjb250ZW50cy4gKi8NCiBOT0RFICoNCi1idWlsZF9tZXNzYWdlX25vZGUg
KGNoYXIgKmZvcm1hdCwgdm9pZCAqYXJnMSwgdm9pZCAqYXJnMikNCitidWls
ZF9tZXNzYWdlX25vZGUgKGNvbnN0IGNoYXIgKmZvcm1hdCwgdm9pZCAqYXJn
MSwgdm9pZCAqYXJnMikNCiB7DQogICBOT0RFICpub2RlOw0KIA0KQEAgLTE1
MjUsNyArMTUyNSw3IEBADQogDQogLyogUHJpbnQgRk9STUFUIHdpdGggQVJH
MSwyIHRvIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgbWVzc2FnZSBidWZmZXIu
ICovDQogdm9pZA0KLXByaW50Zl90b19tZXNzYWdlX2J1ZmZlciAoY2hhciAq
Zm9ybWF0LCB2b2lkICphcmcxLCB2b2lkICphcmcyLCB2b2lkICphcmczKQ0K
K3ByaW50Zl90b19tZXNzYWdlX2J1ZmZlciAoY29uc3QgY2hhciAqZm9ybWF0
LCB2b2lkICphcmcxLCB2b2lkICphcmcyLCB2b2lkICphcmczKQ0KIHsNCiAg
IGJ1aWxkX21lc3NhZ2VfYnVmZmVyIChmb3JtYXQsIGFyZzEsIGFyZzIsIGFy
ZzMpOw0KIH0NCmRpZmYgLXVyIHRleGluZm8tNC4xMS45MC5vcmlnL2luZm8v
d2luZG93LmggdGV4aW5mby00LjExLjkwL2luZm8vd2luZG93LmgNCi0tLSB0
ZXhpbmZvLTQuMTEuOTAub3JpZy9pbmZvL3dpbmRvdy5oCTIwMDctMDctMDEg
MjM6MjA6MzEuMDAwMDAwMDAwICswMjAwDQorKysgdGV4aW5mby00LjExLjkw
L2luZm8vd2luZG93LmgJMjAwOC0wMi0yNSAxMTo0MTozMi4wMDAwMDAwMDAg
KzAxMDANCkBAIC0xNjYsMTMgKzE2NiwxMyBAQA0KIA0KIC8qIEJ1aWxkIGEg
bmV3IG5vZGUgd2hpY2ggaGFzIEZPUk1BVCBwcmludGVkIHdpdGggQVJHMSBh
bmQgQVJHMiBhcyB0aGUNCiAgICBjb250ZW50cy4gKi8NCi1leHRlcm4gTk9E
RSAqYnVpbGRfbWVzc2FnZV9ub2RlIChjaGFyICpmb3JtYXQsIHZvaWQgKmFy
ZzEsIHZvaWQgKmFyZzIpOw0KK2V4dGVybiBOT0RFICpidWlsZF9tZXNzYWdl
X25vZGUgKGNvbnN0IGNoYXIgKmZvcm1hdCwgdm9pZCAqYXJnMSwgdm9pZCAq
YXJnMik7DQogDQogLyogVXNlZnVsIGZ1bmN0aW9ucyBjYW4gYmUgY2FsbGVk
IGZyb20gb3V0c2lkZSBvZiB3aW5kb3cuYy4gKi8NCiBleHRlcm4gdm9pZCBp
bml0aWFsaXplX21lc3NhZ2VfYnVmZmVyICh2b2lkKTsNCiANCiAvKiBQcmlu
dCBGT1JNQVQgd2l0aCBBUkcxLDIgdG8gdGhlIGVuZCBvZiB0aGUgY3VycmVu
dCBtZXNzYWdlIGJ1ZmZlci4gKi8NCi1leHRlcm4gdm9pZCBwcmludGZfdG9f
bWVzc2FnZV9idWZmZXIgKGNoYXIgKmZvcm1hdCwgdm9pZCAqYXJnMSwgdm9p
ZCAqYXJnMiwNCitleHRlcm4gdm9pZCBwcmludGZfdG9fbWVzc2FnZV9idWZm
ZXIgKGNvbnN0IGNoYXIgKmZvcm1hdCwgdm9pZCAqYXJnMSwgdm9pZCAqYXJn
MiwNCiAgICAgdm9pZCAqYXJnMyk7DQogDQogLyogQ29udmVydCB0aGUgY29u
dGVudHMgb2YgdGhlIG1lc3NhZ2UgYnVmZmVyIHRvIGEgbm9kZS4gKi8NCkBA
IC0xODgsMTMgKzE4OCwxMyBAQA0KICAgIFRoZSBhcmd1bWVudHMgYXJlIHRy
ZWF0ZWQgc2ltaWxhciB0byBwcmludGYgKCkgYXJndW1lbnRzLCBidXQgbm90
IGFsbCBvZg0KICAgIHByaW50ZiAoKSBoYWlyIGlzIHByZXNlbnQuICBUaGUg
bWVzc2FnZSBhcHBlYXJzIGltbWVkaWF0ZWx5LiAgSWYgdGhlcmUgd2FzDQog
ICAgYWxyZWFkeSBhIG1lc3NhZ2UgYXBwZWFyaW5nIGluIHRoZSBlY2hvIGFy
ZWEsIGl0IGlzIHJlbW92ZWQuICovDQotZXh0ZXJuIHZvaWQgd2luZG93X21l
c3NhZ2VfaW5fZWNob19hcmVhIChjaGFyICpmb3JtYXQsIHZvaWQgKmFyZzEs
IHZvaWQgKmFyZzIpOw0KK2V4dGVybiB2b2lkIHdpbmRvd19tZXNzYWdlX2lu
X2VjaG9fYXJlYSAoY29uc3QgY2hhciAqZm9ybWF0LCB2b2lkICphcmcxLCB2
b2lkICphcmcyKTsNCiANCiAvKiBQbGFjZSBhIHRlbXBvcmFyeSBtZXNzYWdl
IGluIHRoZSBlY2hvIGFyZWEgYnVpbHQgZnJvbSBGT1JNQVQsIEFSRzENCiAg
ICBhbmQgQVJHMi4gIFRoZSBtZXNzYWdlIGFwcGVhcnMgaW1tZWRpYXRlbHks
IGJ1dCBkb2VzIG5vdCBkZXN0cm95DQogICAgYW55IGV4aXN0aW5nIG1lc3Nh
Z2UuICBBIGZ1dHVyZSBjYWxsIHRvIHVubWVzc2FnZV9pbl9lY2hvX2FyZWEg
KCkNCiAgICByZXN0b3JlcyB0aGUgb2xkIGNvbnRlbnRzLiAqLw0KLWV4dGVy
biB2b2lkIG1lc3NhZ2VfaW5fZWNob19hcmVhIChjaGFyICpmb3JtYXQsIHZv
aWQgKmFyZzEsIHZvaWQgKmFyZzIpOw0KK2V4dGVybiB2b2lkIG1lc3NhZ2Vf
aW5fZWNob19hcmVhIChjb25zdCBjaGFyICpmb3JtYXQsIHZvaWQgKmFyZzEs
IHZvaWQgKmFyZzIpOw0KIGV4dGVybiB2b2lkIHVubWVzc2FnZV9pbl9lY2hv
X2FyZWEgKHZvaWQpOw0KIA0KIC8qIENsZWFyIHRoZSBlY2hvIGFyZWEsIHJl
bW92aW5nIGFueSBtZXNzYWdlIHRoYXQgaXMgYWxyZWFkeSBwcmVzZW50Lg0K

--1803957763-510385146-1203952531=:15997
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch-05-install-info-help2man
Content-Transfer-Encoding: BASE64
Content-ID: <[email protected]>
Content-Description: 
Content-Disposition: attachment; filename=patch-05-install-info-help2man

Q2hhbmdlTG9nOg0KDQoyMDA4LTAyLTI1ICBQZXRlciBCcmVpdGVubG9obmVy
IDxwZWJAbXBwbXUubXBnLmRlPg0KDQoJKiBpbnN0YWxsLWluZm8vaW5zdGFs
bC1pbmZvLmM6IHNsaWdodGx5IHJlZm9ybWF0IHVzYWdlIG1lc3NhZ2UNCgko
aGVscDJtYW4gcmVxdWlyZXMgdHdvIHNwYWNlcykuDQoNCgkqIGRvYy9pbnN0
YWxsLWluZm8uMTogcmVnZW5lcmF0ZWQuDQoNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KDQpkaWZmIC11ciB0ZXhpbmZvLTQuMTEuOTAub3Jp
Zy9kb2MvaW5zdGFsbC1pbmZvLjEgdGV4aW5mby00LjExLjkwL2RvYy9pbnN0
YWxsLWluZm8uMQ0KLS0tIHRleGluZm8tNC4xMS45MC5vcmlnL2RvYy9pbnN0
YWxsLWluZm8uMQkyMDA4LTAyLTIzIDAwOjM1OjE0LjAwMDAwMDAwMCArMDEw
MA0KKysrIHRleGluZm8tNC4xMS45MC9kb2MvaW5zdGFsbC1pbmZvLjEJMjAw
OC0wMi0yNSAxNTo0MzoyNC4wMDAwMDAwMDAgKzAxMDANCkBAIC0xNiw3ICsx
Niw4IEBADQogZGVsZXRlIGV4aXN0aW5nIGVudHJpZXMgZm9yIElORk9cLUZJ
TEUgZnJvbSBESVJcLUZJTEU7DQogZG9uJ3QgaW5zZXJ0IGFueSBuZXcgZW50
cmllcy4NCiAuVFANCi1cZkJcLVwtZGVzY3JpcHRpb25cZlI9XGZJVEVYVFxm
UiB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGVudHJ5IGlzIFRFWFQ7IHVzZWQg
d2l0aA0KK1xmQlwtXC1kZXNjcmlwdGlvblxmUj1cZklURVhUXGZSDQordGhl
IGRlc2NyaXB0aW9uIG9mIHRoZSBlbnRyeSBpcyBURVhUOyB1c2VkIHdpdGgN
CiB0aGUgXGZCXC1cLW5hbWVcZlIgb3B0aW9uIHRvIGJlY29tZSBzeW5vbnlt
b3VzIHdpdGggdGhlDQogXGZCXC1cLWVudHJ5XGZSIG9wdGlvbi4NCiAuVFAN
CmRpZmYgLXVyIHRleGluZm8tNC4xMS45MC5vcmlnL2luc3RhbGwtaW5mby9p
bnN0YWxsLWluZm8uYyB0ZXhpbmZvLTQuMTEuOTAvaW5zdGFsbC1pbmZvL2lu
c3RhbGwtaW5mby5jDQotLS0gdGV4aW5mby00LjExLjkwLm9yaWcvaW5zdGFs
bC1pbmZvL2luc3RhbGwtaW5mby5jCTIwMDgtMDItMjIgMjA6MTg6MjUuMDAw
MDAwMDAwICswMTAwDQorKysgdGV4aW5mby00LjExLjkwL2luc3RhbGwtaW5m
by9pbnN0YWxsLWluZm8uYwkyMDA4LTAyLTI1IDE1OjQzOjE0LjAwMDAwMDAw
MCArMDEwMA0KQEAgLTUxMCw3ICs1MTAsNyBAQA0KICAtLWRlYnVnICAgICAg
ICAgICAgcmVwb3J0IHdoYXQgaXMgYmVpbmcgZG9uZS5cblwNCiAgLS1kZWxl
dGUgICAgICAgICAgIGRlbGV0ZSBleGlzdGluZyBlbnRyaWVzIGZvciBJTkZP
LUZJTEUgZnJvbSBESVItRklMRTtcblwNCiAgICAgICAgICAgICAgICAgICAg
ICBkb24ndCBpbnNlcnQgYW55IG5ldyBlbnRyaWVzLlxuXA0KLSAtLWRlc2Ny
aXB0aW9uPVRFWFQgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBlbnRyeSBpcyBU
RVhUOyB1c2VkIHdpdGhcblwNCisgLS1kZXNjcmlwdGlvbj1URVhUICB0aGUg
ZGVzY3JpcHRpb24gb2YgdGhlIGVudHJ5IGlzIFRFWFQ7IHVzZWQgd2l0aFxu
XA0KICAgICAgICAgICAgICAgICAgICAgIHRoZSAtLW5hbWUgb3B0aW9uIHRv
IGJlY29tZSBzeW5vbnltb3VzIHdpdGggdGhlXG5cDQogCQkgICAgIC0tZW50
cnkgb3B0aW9uLlxuXA0KICAtLWRpci1maWxlPU5BTUUgICAgc3BlY2lmeSBm
aWxlIG5hbWUgb2YgSW5mbyBkaXJlY3RvcnkgZmlsZTtcblwNCg==

--1803957763-510385146-1203952531=:15997--