delorie.com/archives/browse.cgi | search |
X-Authentication-Warning: | delorie.com: mail set sender to djgpp-bounces using -f |
X-Recipient: | djgpp AT delorie DOT com |
X-Original-DKIM-Signature: | v=1; a=rsa-sha256; c=relaxed/relaxed; |
d=gmail.com; s=20120113; | |
h=mime-version:in-reply-to:references:date:message-id:subject:from:to | |
:content-type; | |
bh=GMTb60YRmCl8Rs+lShKoq8xzuoo2ehzEfwllt2pgjFQ=; | |
b=iNiReZL47F4fovMQUrmeZTPLKLJa72ab2UIts7WQtYYlJNSrp1cHedUGmcac12EFxQ | |
4/z6hT1753aNi5z1CsDv1qknXDbEwYoaEeDWuHvJ8s+i9iJdjfMzp14QVwR14WmSsYLH | |
Q7EkyeWf+fZHEzpXqFN90M09hFZSzwZpPyk1TNtr7ZoG6SSUf2cgvmWrTvC1c6Q+UngV | |
wen+hFm5E0x4wOocmfrQiaLIVdOtjC8AmdtVnbyPsFfcvMMZ4l5vZw4a/JcS70R0SWC9 | |
6DgPiMC9ZpPiLnaCgIUXILzD+b6kDWimtqCr9ADICIbL7jXJOI11QujYlt02KviZEoZF | |
x/ug== | |
MIME-Version: | 1.0 |
X-Received: | by 10.42.81.201 with SMTP id a9mr2586404icl.9.1431171529621; Sat, |
09 May 2015 04:38:49 -0700 (PDT) | |
In-Reply-To: | <201505042003.t44K3odg011007@delorie.com> |
References: | <201505042003 DOT t44K3odg011007 AT delorie DOT com> |
Date: | Sat, 9 May 2015 14:38:49 +0300 |
Message-ID: | <CAA2C=vAjN-HamFRWCQak=QF_NPjR5-TBYZw1U5707MO0b=qXkw@mail.gmail.com> |
Subject: | Re: ANNOUNCE: DJGPP 2.05 beta 1 |
From: | "Ozkan Sezer (sezeroz AT gmail DOT com)" <djgpp AT delorie DOT com> |
To: | djgpp AT delorie DOT com |
Reply-To: | djgpp AT delorie DOT com |
Errors-To: | nobody AT delorie DOT com |
X-Mailing-List: | djgpp AT delorie DOT com |
X-Unsubscribes-To: | listserv AT delorie DOT com |
--90e6ba614ed2a3d1640515a49626 Content-Type: text/plain; charset=UTF-8 On 5/4/15, Andris Pavenis (andris DOT pavenis AT iki DOT fi) <djgpp-announce AT delorie DOT com> wrote: > This is announcement of DJGPP 2.05 beta 1 > > It has numerous changes since previous DJGPP 2.04 beta 1 release in 2003. > (http://www.delorie.com/djgpp/mail-archives/browse.cgi?p=djgpp-announce/2003/12/06/22:18:05) > Unfortunately DJGPP v2.04 was never released and old beta version slowly > became almost unusable together with other newer DJGPP packages. > > More information about changes in DJGPP 2.05 beta 1 is available at > > http://www.delorie.com/djgpp/doc/kb/ > > both in sections about changes in 2.04 and 2.05. The same information is > also > available in file info/kb.inf in djdev205.zip > > It needs a lot of testing. Please test it if you have time and/or are > interested in any of the above features. Any level of testing would be > appreciated. Here are some more janitorial work: see the attached six patches: 001-makefile.patch : * src/makefile: - add -Wall to compiler flags where 'gcc' is used directly to build the build utils. - add -xc to rmake.exe build rule, because older compilers fail in linking it, and the source is pure-C anyway. 002-makemake-parens.patch : * src/makemake.c (find): fix -Wparentheses warning 003-rmake.cc-unused.patch : * src/rmake.cc: remove unused local variable 'pathp' 004-djasm-mess.patch : * djasm.y: remove the dependency on local cdefs.h, and fix the unused variables mess properly. 005-chew.c-mess.patch : * src/libm/math/chew.c: remove dependency on ansidecl.h and fix the huge mess of conflicting declarations, unused vars and functions, and shadowed variables, so that it builds without any warnings at all. * src/libm/math/makefile: remove the ansidecl.h dependency and also the -D_HAVE_STDC flag from chew.exe build rule. 006-bin2h.c-no-basename.patch * src/utils/bin2h.c: remove basename() dependency and report the exe name simply as 'bin2h', so that it cross-builds without warnings. Regards. -- O.S. --90e6ba614ed2a3d1640515a49626 Content-Type: application/octet-stream; name="001-makefile.patch" Content-Disposition: attachment; filename="001-makefile.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: file1 KiBzcmMvbWFrZWZpbGU6Ci0gYWRkIC1XYWxsIHRvIGNvbXBpbGVyIGZsYWdzIHdoZXJlICdnY2Mn IGlzIHVzZWQgZGlyZWN0bHkgdG8gYnVpbGQKICB0aGUgYnVpbGQgdXRpbHMuCi0gYWRkIC14YyB0 byBybWFrZS5leGUgYnVpbGQgcnVsZSwgYmVjYXVzZSBvbGRlciBjb21waWxlcnMgZmFpbCBpbgog IGxpbmtpbmcgaXQsIGFuZCB0aGUgc291cmNlIGlzIHB1cmUtQyBhbnl3YXkuCgpJbmRleDogc3Jj L21ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvZGpncHAvZGpncHAvc3JjL21ha2Vm aWxlLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE0CmRpZmYgLXUgLXAgLXIxLjE0IG1ha2VmaWxl Ci0tLSBzcmMvbWFrZWZpbGUJMiBNYXkgMjAxNSAwNzozMTo1OSAtMDAwMAkxLjE0CisrKyBzcmMv bWFrZWZpbGUJOSBNYXkgMjAxNSAxMDozMDoxNCAtMDAwMApAQCAtMjQsMTYgKzI0LDE2IEBAIERJ UlMgPSBcCiBhbGwgOiBtaXNjLmV4ZSBjb25maWcgJChESVJTKSBtYWtlbWFrZS5leGUgc3VicyAu Li9saWIvbGliZy5hIC4uL2xpYi9saWJwYy5hCiAKIG1pc2MuZXhlIDogbWlzYy5jCi0JZ2NjIC1P MiBtaXNjLmMgLW8gbWlzYy5leGUKKwlnY2MgLU8yIC1XYWxsIG1pc2MuYyAtbyBtaXNjLmV4ZQog CiAkKERJUlMpIDoKIAkuL21pc2MuZXhlIG1rZGlyICRACiAKIG1ha2VtYWtlLmV4ZSA6IG1ha2Vt YWtlLmMKLQlnY2MgLU8yIG1ha2VtYWtlLmMgLW8gbWFrZW1ha2UuZXhlCisJZ2NjIC1PMiAtV2Fs bCBtYWtlbWFrZS5jIC1vIG1ha2VtYWtlLmV4ZQogCiBjb3B5cml0ZS5leGUgOiBjb3B5cml0ZS5j YwotCWdjYyAtTzIgY29weXJpdGUuY2MgLW8gY29weXJpdGUuZXhlCisJZ2NjIC1PMiAtV2FsbCBj b3B5cml0ZS5jYyAtbyBjb3B5cml0ZS5leGUKIAogc3ViczoKIAkkKE1BS0UpIC1DIGRqYXNtIG5h dGl2ZQpAQCAtNzUsNCArNzUsNCBAQCBjb25maWc6CiAJJChNQUtFKSAtZiBtYWtlZmlsZS5jZmcK IAogcm1ha2UuZXhlOiBybWFrZS5jYwotCWdjYyAtTzIgcm1ha2UuY2MgLW8gcm1ha2UuZXhlCisJ Z2NjIC1PMiAtV2FsbCAteGMgcm1ha2UuY2MgLW8gcm1ha2UuZXhlCg== --90e6ba614ed2a3d1640515a49626 Content-Type: application/octet-stream; name="002-makemake-parens.patch" Content-Disposition: attachment; filename="002-makemake-parens.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: file2 KiBzcmMvbWFrZW1ha2UuYyAoZmluZCk6IGZpeCAtV3BhcmVudGhlc2VzIHdhcm5pbmcKCkluZGV4 OiBzcmMvbWFrZW1ha2UuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL2RqZ3BwL2RqZ3BwL3Ny Yy9tYWtlbWFrZS5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEKZGlmZiAtdSAtcCAtcjEuMSBt YWtlbWFrZS5jCi0tLSBzcmMvbWFrZW1ha2UuYwkxIEphbiAxOTk4IDE4OjE1OjM0IC0wMDAwCTEu MQorKysgc3JjL21ha2VtYWtlLmMJOSBNYXkgMjAxNSAxMDozMDoxNSAtMDAwMApAQCAtODcsNyAr ODcsNyBAQCBmaW5kKHZvaWQpCiAgIH0KICAgKnBhdGhfZW5kID0gJy8nOwogICBzdWJzID0gKGNo YXIgKiopbWFsbG9jKG1zdWJzKnNpemVvZihjaGFyICopKTsKLSAgd2hpbGUgKGRlID0gcmVhZGRp cihkKSkgeworICB3aGlsZSAoKGRlID0gcmVhZGRpcihkKSkgIT0gTlVMTCkgewogCiAgICAgLyog U2tpcCAuIGFuZCAuLiAqLwogICAgIGlmIChkZS0+ZF9uYW1lWzBdID09ICcuJykK --90e6ba614ed2a3d1640515a49626 Content-Type: application/octet-stream; name="003-rmake.cc-unused.patch" Content-Disposition: attachment; filename="003-rmake.cc-unused.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: file3 c3JjL3JtYWtlLmNjOiByZW1vdmUgdW51c2VkIGxvY2FsIHZhcmlhYmxlICdwYXRocCcKCkluZGV4 OiBzcmMvcm1ha2UuY2MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9kamdwcC9kamdwcC9zcmMv cm1ha2UuY2MsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC11IC1wIC1yMS40IHJtYWtl LmNjCi0tLSBzcmMvcm1ha2UuY2MJMiBNYXkgMjAxNSAwNzozMjowMCAtMDAwMAkxLjQKKysrIHNy Yy9ybWFrZS5jYwk5IE1heSAyMDE1IDEwOjMwOjE1IC0wMDAwCkBAIC0xMiw3ICsxMiw3IEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogewogICBpbnQgaTsKICAgY2hhciBjd2RbMjAwXTsK LSAgY2hhciBwYXRoWzIwMF0sICpwYXRocDsKKyAgY2hhciBwYXRoWzIwMF07CiAgIGNoYXIgZmls ZVsyMDBdOwogICBGSUxFICpvaSA9IGZvcGVuKCJtYWtlZmlsZS5vaSIsICJ3Iik7CiAgIEZJTEUg KnJmID0gZm9wZW4oIm1ha2VmaWxlLnJmMiIsICJ3Iik7Cg== --90e6ba614ed2a3d1640515a49626 Content-Type: application/octet-stream; name="004-djasm-mess.patch" Content-Disposition: attachment; filename="004-djasm-mess.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: file4 KiBkamFzbS55OiByZW1vdmUgdGhlIGRlcGVuZGVuY3kgb24gbG9jYWwgY2RlZnMuaCwgYW5kIGZp eCB0aGUKICB1bnVzZWQgdmFyaWFibGVzIG1lc3MgcHJvcGVybHkuCgpJbmRleDogc3JjL2RqYXNt L2RqYXNtLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9kamdwcC9kamdwcC9zcmMvZGphc20v ZGphc20ueSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNApkaWZmIC11IC1wIC1yMS4xNCBkamFz bS55Ci0tLSBzcmMvZGphc20vZGphc20ueQkyIE1heSAyMDE1IDA3OjMyOjAzIC0wMDAwCTEuMTQK KysrIHNyYy9kamFzbS9kamFzbS55CTkgTWF5IDIwMTUgMTA6MzA6MTYgLTAwMDAKQEAgLTE4LDcg KzE4LDYgQEAKICNpbmNsdWRlIDx0aW1lLmg+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KICNpbmNsdWRl IDx1bmlzdGQuaD4KLSNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL3N5cy9jZGVmcy5oIgogI2lmbmRl ZiBPX0JJTkFSWQogI2RlZmluZSBPX0JJTkFSWSAwCiAjZW5kaWYKQEAgLTE0NjYsMTggKzE0NjUs MTUgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgIHN0cm5jYXQocGV4ZSAr IElORk9fVEVYVF9TVEFSVCwgY29weXJpZ2h0LCAoNTEyLTMtSU5GT19URVhUX1NUQVJUKSAtIHN0 cmxlbihwZXhlICsgSU5GT19URVhUX1NUQVJUKSk7IC8qIC0zIGZvciB0aGUgZm9sbG93aW5nIGxp bmU6ICovCiAgIHN0cmNhdChwZXhlICsgSU5GT19URVhUX1NUQVJULCAiXHJcblwwMzIiKTsKIAot ICBpZiAoYXJndlsyXSA9PSAwKQorICBpZiAoISBhcmd2WzJdKQogICB7Ci0gICAgY2hhciAqY3As ICAqZG90ID0gTlVMTCwgKnNsIF9BVFRSSUJVVEUoX191bnVzZWRfXykgPSBOVUxMOworICAgIGNo YXIgKmNwLCAqZG90ID0gTlVMTDsKICAgICBvdXRmaWxlbmFtZSA9IChjaGFyICopYWxsb2NhKHN0 cmxlbihhcmd2WzFdKSs1KTsKICAgICBzdHJjcHkob3V0ZmlsZW5hbWUsIGFyZ3ZbMV0pOwogICAg IGZvciAoY3A9b3V0ZmlsZW5hbWU7ICpjcDsgY3ArKykKICAgICB7CiAgICAgICBpZiAoKmNwID09 ICc6JyB8fCAqY3AgPT0gJ1xcJyB8fCAqY3AgPT0gJy8nKQotICAgICAgewotICAgICAgICBzbCA9 IGNwKzE7Ci0gICAgICAgIGRvdCA9IDA7Ci0gICAgICB9CisgICAgICAgIGRvdCA9IE5VTEw7CiAg ICAgICBpZiAoKmNwID09ICcuJykKICAgICAgICAgZG90ID0gY3A7CiAgICAgfQpAQCAtMTQ5MCwy NCArMTQ4NiwyMSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgIH0KICAgZWxz ZQogICB7Ci0gICAgY2hhciAqZG90PTAsICpzbD0wLCAqY3A7CisgICAgY2hhciAqY3AsICpkb3Qg PSBOVUxMOworICAgIHNpemVfdCBzeiA9IHN0cmxlbihhcmd2WzJdKTsKICAgICBvdXRmaWxlbmFt ZSA9IGFyZ3ZbMl07CiAgICAgZm9yIChjcD1vdXRmaWxlbmFtZTsgKmNwOyBjcCsrKQogICAgIHsK ICAgICAgIGlmICgqY3AgPT0gJzonIHx8ICpjcCA9PSAnXFwnIHx8ICpjcCA9PSAnLycpCi0gICAg ICB7Ci0gICAgICAgIHNsID0gY3ArMTsKLSAgICAgICAgZG90ID0gMDsKLSAgICAgIH0KKyAgICAg ICAgZG90ID0gTlVMTDsKICAgICAgIGlmICgqY3AgPT0gJy4nKQogICAgICAgICBkb3QgPSBjcDsK ICAgICB9CiAgICAgaWYgKCFkb3QpCiAgICAgewotICAgICAgc2wgPSAoY2hhciAqKWFsbG9jYShz dHJsZW4ob3V0ZmlsZW5hbWUpKzUpOwotICAgICAgc3RyY3B5KHNsLCBvdXRmaWxlbmFtZSk7Ci0g ICAgICBvdXRmaWxlbmFtZSA9IHNsOwotICAgICAgZG90ID0gb3V0ZmlsZW5hbWUgKyBzdHJsZW4o b3V0ZmlsZW5hbWUpOworICAgICAgb3V0ZmlsZW5hbWUgPSAoY2hhciAqKWFsbG9jYShzeis1KTsK KyAgICAgIHN0cmNweShvdXRmaWxlbmFtZSwgYXJndlsyXSk7CisgICAgICBkb3QgPSBvdXRmaWxl bmFtZSArIHN6OwogICAgICAgKmRvdCA9ICcuJzsKICAgICAgIHN0cmNweShkb3QrMSwgZXh0X3R5 cGVzW291dF90eXBlXSk7CiAgICAgfQpAQCAtMjY2Myw3ICsyNjU2LDcgQEAgdm9pZCBhZGRfY29w eXJpZ2h0KGNoYXIgKmJ1ZikKICAgY29weXJpZ2h0ID0gdG1wOwogfQogCi12b2lkIGFkZF9yY3Nf aWRlbnQoKQordm9pZCBhZGRfcmNzX2lkZW50KHZvaWQpCiB7CiAgIGNoYXIgdG1wWzUwMF07CiAg IHRpbWVfdCBub3c7CkBAIC0yNzY1LDE1ICsyNzU4LDE4IEBAIHZvaWQgZG9fbGlua2NvZmYgKGNo YXIgKmZpbGVuYW1lKQogICBTQ05IRFIgKmZfdGhkcjsJCS8qIFRleHQgc2VjdGlvbiBoZWFkZXIg Ki8KICAgU0NOSERSICpmX2RoZHI7CQkvKiBEYXRhIHNlY3Rpb24gaGVhZGVyICovCiAgIFNDTkhE UiAqZl9iaGRyOwkJLyogQnNzIHNlY3Rpb24gaGVhZGVyICovCi0vKiAgQU9VVEhEUiBmX29oZHI7 Ki8JCS8qIE9wdGlvbmFsIGZpbGUgaGVhZGVyIChhLm91dCkgKi8KKy8qQU9VVEhEUiBmX29oZHI7 Ki8JCS8qIE9wdGlvbmFsIGZpbGUgaGVhZGVyIChhLm91dCkgKi8KICAgU1lNRU5UICpzeW1ib2w7 CiAgIFJFTE9DICpycDsKICAgaW50IGNudDsKICAgc2l6ZV90IGk7CiAgIHZvaWQgKmJhc2U7Ci0g IGludCB0ZXh0YmFzZSwgZGF0YWJhc2UgX0FUVFJJQlVURShfX3VudXNlZF9fKSwgYnNzYmFzZSBf QVRUUklCVVRFKF9fdW51c2VkX18pIC8qLCBkZWx0YSovOworICBpbnQgdGV4dGJhc2UgLyosIGRl bHRhKi87CisjaWZkZWYgREVCVUdfUkVMT0MKKyAgaW50IGRhdGFiYXNlLCBic3NiYXNlOworI2Vu ZGlmCiAgIGNoYXIgc21hbGxuYW1lWzldOwotICB1bnNpZ25lZCBjaGFyICpjcCBfQVRUUklCVVRF KF9fdW51c2VkX18pOworLyp1bnNpZ25lZCBjaGFyICpjcDsqLwogCiAgIGYgPSBvcGVuIChmaWxl bmFtZSwgT19SRE9OTFkgfCBPX0JJTkFSWSk7CiAgIGlmIChmIDwgMCkKQEAgLTI4MDQsOSArMjgw MCwxMyBAQCB2b2lkIGRvX2xpbmtjb2ZmIChjaGFyICpmaWxlbmFtZSkKIAogICB0ZXh0YmFzZSA9 IHBjOwogICBlbWl0KGRhdGEgKyBmX3RoZHItPnNfc2NucHRyLCBmX3RoZHItPnNfc2l6ZSk7Cisj aWZkZWYgREVCVUdfUkVMT0MKICAgZGF0YWJhc2UgPSBwYzsKKyNlbmRpZgogICBlbWl0KGRhdGEg KyBmX2RoZHItPnNfc2NucHRyLCBmX2RoZHItPnNfc2l6ZSk7CisjaWZkZWYgREVCVUdfUkVMT0MK ICAgYnNzYmFzZSA9IHBjOworI2VuZGlmCiAgIGZvciAoaSA9IDA7IGkgPCBmX2JoZHItPnNfc2l6 ZTsgaSsrKQogICAgIGVtaXRiICgwKTsKIApAQCAtMjk0OCw3ICsyOTQ4LDcgQEAgdm9pZCBkb19s aW5rY29mZiAoY2hhciAqZmlsZW5hbWUpCiAJCSAgICAgICBpbm5hbWUsIGxpbmVubywgZmlsZW5h bWUsIHJwLT5yX3R5cGUpOwogCSAgICAgIGRlbHRhID0gMDsKIAkgICAgfQotCSAgY3AgPSAodW5z aWduZWQgY2hhciAqKShvdXRiaW4gKyB0ZXh0YmFzZSArIHJwLT5yX3ZhZGRyKTsKKwkgIC8qY3Ag PSAodW5zaWduZWQgY2hhciAqKShvdXRiaW4gKyB0ZXh0YmFzZSArIHJwLT5yX3ZhZGRyKTsqLwog CSAgdmFkZHIgKz0gZGVsdGE7CiAJICB2YWRkcl9wdHJbMF09dmFkZHI7CiAJICB2YWRkcl9wdHJb MV09dmFkZHI+Pjg7Cg== --90e6ba614ed2a3d1640515a49626 Content-Type: application/octet-stream; name="005-chew.c-mess.patch" Content-Disposition: attachment; filename="005-chew.c-mess.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: file5 KiBzcmMvbGlibS9tYXRoL2NoZXcuYzogcmVtb3ZlIGRlcGVuZGVuY3kgb24gYW5zaWRlY2wuaCBh bmQgZml4IHRoZQogIGh1Z2UgbWVzcyBvZiBjb25mbGljdGluZyBkZWNsYXJhdGlvbnMsIHVudXNl ZCB2YXJzIGFuZCBmdW5jdGlvbnMsCiAgYW5kIHNoYWRvd2VkIHZhcmlhYmxlcywgc28gdGhhdCBp dCBidWlsZHMgd2l0aG91dCBhbnkgd2FybmluZ3MgYXQKICBhbGwuCiogc3JjL2xpYm0vbWF0aC9t YWtlZmlsZTogcmVtb3ZlIHRoZSBhbnNpZGVjbC5oIGRlcGVuZGVuY3kgYW5kIGFsc28KICB0aGUg LURfSEFWRV9TVERDIGZsYWcgZnJvbSBjaGV3LmV4ZSBidWlsZCBydWxlLgoKSW5kZXg6IHNyYy9s aWJtL21hdGgvbWFrZWZpbGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9kamdwcC9kamdwcC9z cmMvbGlibS9tYXRoL21ha2VmaWxlLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjExCmRpZmYgLXUg LXAgLXIxLjExIG1ha2VmaWxlCi0tLSBzcmMvbGlibS9tYXRoL21ha2VmaWxlCTE3IE5vdiAyMDEz IDE0OjI3OjU3IC0wMDAwCTEuMTEKKysrIHNyYy9saWJtL21hdGgvbWFrZWZpbGUJOSBNYXkgMjAx NSAxMDozMDoxNyAtMDAwMApAQCAtMjE3LDggKzIxNyw4IEBAIHRhcmdldGRlcC50ZXhpOiAkKGNo b2JqKSBtYXRoLnRleGkKICUuZGVmOiAlLmMgY2hldy5leGUKIAkkKENIRVcpIDwgJDwgPiAkQAog Ci1jaGV3LmV4ZTogY2hldy5jIGFuc2lkZWNsLmgKLQkkKEdDQykgLURfSEFWRV9TVERDIC1PMiAt byAkQCAkPAorY2hldy5leGU6IGNoZXcuYworCSQoR0NDKSAtTzIgLW8gJEAgJDwKIAogY2xlYW4g OjoKIAktJChNSVNDKSBybSAqLmRlZiAqLmQgY2hldy5leGUgdGFyZ2V0ZGVwLnRleGkKSW5kZXg6 IHNyYy9saWJtL21hdGgvY2hldy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvZGpncHAvZGpn cHAvc3JjL2xpYm0vbWF0aC9jaGV3LmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpkaWZmIC11 IC1wIC1yMS4zIGNoZXcuYwotLS0gc3JjL2xpYm0vbWF0aC9jaGV3LmMJMzAgSnVsIDIwMTEgMTM6 MDU6NDkgLTAwMDAJMS4zCisrKyBzcmMvbGlibS9tYXRoL2NoZXcuYwk5IE1heSAyMDE1IDEwOjMw OjE3IC0wMDAwCkBAIC0yLDcgKzIsNiBAQAogICAgQ29weXJpZ2h0IChDKSAxOTkwLTE5OTIgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgICBDb250cmlidXRlZCBieSBzdGV2ZSBjaGFt YmVybGFpbiBAY3lnbnVzCiAKLQogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgpA QCAtMjEsNyArMjAsNyBAQCBGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRn CiAgWWV0IGFub3RoZXIgd2F5IG9mIGV4dHJhY3RpbmcgZG9jdW1lbnRhdGlvbiBmcm9tIHNvdXJj ZS4KICBObywgSSBoYXZlbid0IGZpbmlzaGVkIGl0IHlldCwgYnV0IEkgaG9wZSB5b3UgcGVvcGxl IGxpa2UgaXQgYmV0dGVyCiAgdGhhdCB0aGUgb2xkIHdheQotICAKKwogIHNhYwogCiBCYXNpY2Fs bHksIHRoaXMgaXMgYSBzb3J0IG9mIHN0cmluZyBmb3J0aCwgbWF5YmUgd2Ugc2hvdWxkIGNhbGwg aXQKQEAgLTI5LDIyICsyOCwxNyBAQCBzdHJ1dGg/CiAKIFlvdSBkZWZpbmUgbmV3IHdvcmRzIHRo dXM6CiA6IDxuZXd3b3JkPiA8b2xkd29yZHM+IDsKLVRoZXJlIGlzICBubwogCiAqLwogCiAKLQot I2luY2x1ZGUgImFuc2lkZWNsLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRs aWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxjdHlwZS5oPgogI2luY2x1ZGUg PGZjbnRsLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKLWV4dGVybiBQVFIgbWFsbG9jKCk7Ci1l eHRlcm4gUFRSIHJlYWxsb2MoKTsKLQogI2RlZmluZSBERUZfU0laRSA1MDAwCiAjZGVmaW5lIFNU QUNLIDUwCiAKQEAgLTUyLDEwICs0Niw4IEBAIGludCBpbnRlcm5hbF93YW50ZWQ7CiBpbnQgaW50 ZXJuYWxfbW9kZTsKIAogCi0KIC8qIEhlcmUgaXMgYSBzdHJpbmcgdHlwZSAuLi4gKi8KLQotdHlw ZWRlZiBzdHJ1Y3QgYnVmZmVyIAordHlwZWRlZiBzdHJ1Y3QgYnVmZmVyCiB7CiAgICAgY2hhciAq cHRyOwogICAgIHVuc2lnbmVkIGludCB3cml0ZV9pZHg7CkBAIC02MywzNSArNTUsMjQgQEAgdHlw ZWRlZiBzdHJ1Y3QgYnVmZmVyIAogfSBzdHJpbmdfdHlwZTsKIAogCi0KLQotCi0KLQotc3RhdGlj IHZvaWQgREVGVU4oaW5pdF9zdHJpbmdfd2l0aF9zaXplLChidWZmZXIsIHNpemUpLAotCSAgIHN0 cmluZ190eXBlICpidWZmZXIgQU5ECi0JICAgdW5zaWduZWQgaW50IHNpemUgKQorc3RhdGljIHZv aWQgaW5pdF9zdHJpbmdfd2l0aF9zaXplKHN0cmluZ190eXBlICpidWZmZXIsIHVuc2lnbmVkIGlu dCBzaXplKQogewogICBidWZmZXItPndyaXRlX2lkeCA9IDA7CiAgIGJ1ZmZlci0+c2l6ZSA9IHNp emU7CiAgIGJ1ZmZlci0+cHRyID0gbWFsbG9jKHNpemUpOwogfQogCi1zdGF0aWMgdm9pZCBERUZV Tihpbml0X3N0cmluZywoYnVmZmVyKSwKLQkgICBzdHJpbmdfdHlwZSAqYnVmZmVyKQorc3RhdGlj IHZvaWQgaW5pdF9zdHJpbmcoc3RyaW5nX3R5cGUgKmJ1ZmZlcikKIHsKICAgICBpbml0X3N0cmlu Z193aXRoX3NpemUoYnVmZmVyLCBERUZfU0laRSk7Ci0KIH0KIAotc3RhdGljIGludCBERUZVTihm aW5kLCAoc3RyLCB3aGF0KSwKLQkgIHN0cmluZ190eXBlICpzdHIgQU5ECi0JICBjaGFyICp3aGF0 KQorc3RhdGljIGludCBmaW5kKHN0cmluZ190eXBlICpzdHIsIGNvbnN0IGNoYXIgKndoYXQpCiB7 CiAgICAgdW5zaWduZWQgaW50IGk7Ci0gICAgY2hhciAqcDsKKyAgICBjb25zdCBjaGFyICpwOwog ICAgIHAgPSB3aGF0OwotICAgIGZvciAoaSA9IDA7IGkgPCBzdHItPndyaXRlX2lkeCAmJiAqcDsg aSsrKSAKKyAgICBmb3IgKGkgPSAwOyBpIDwgc3RyLT53cml0ZV9pZHggJiYgKnA7IGkrKykKICAg ICB7CiAJaWYgKCpwID09IHN0ci0+cHRyW2ldKQogCSBwKys7CkBAIC05OSw1OCArODAsNDIgQEAg c3RhdGljIGludCBERUZVTihmaW5kLCAoc3RyLCB3aGF0KSwKIAkgcCA9IHdoYXQ7CiAgICAgfQog ICAgIHJldHVybiAoKnAgPT0gMCk7Ci0gICAgCiB9CiAKLXN0YXRpYyB2b2lkIERFRlVOKHdyaXRl X2J1ZmZlciwoYnVmZmVyKSwKLQkgICBzdHJpbmdfdHlwZSAqYnVmZmVyKQorc3RhdGljIHZvaWQg d3JpdGVfYnVmZmVyKHN0cmluZ190eXBlICpidWZmZXIpCiB7CiAgICAgZndyaXRlKGJ1ZmZlci0+ cHRyLCBidWZmZXItPndyaXRlX2lkeCwgMSwgc3Rkb3V0KTsKIH0KIAotCi1zdGF0aWMgdm9pZCBE RUZVTihkZWxldGVfc3RyaW5nLChidWZmZXIpLAotCSAgIHN0cmluZ190eXBlICpidWZmZXIpCitz dGF0aWMgdm9pZCBkZWxldGVfc3RyaW5nKHN0cmluZ190eXBlICpidWZmZXIpCiB7CiAgICAgZnJl ZShidWZmZXItPnB0cik7CiB9CiAKLQotc3RhdGljIGNoYXIgKkRFRlVOKGFkZHIsIChidWZmZXIs IGlkeCksCi0JICAgIHN0cmluZ190eXBlICpidWZmZXIgQU5ECi0JICAgIHVuc2lnbmVkIGludCBp ZHgpCitzdGF0aWMgY2hhciAqYWRkcihzdHJpbmdfdHlwZSAqYnVmZmVyLCB1bnNpZ25lZCBpbnQg aWR4KQogewogICAgIHJldHVybiBidWZmZXItPnB0ciArIGlkeDsKIH0KIAotc3RhdGljIGNoYXIg REVGVU4oYXQsKGJ1ZmZlciwgcG9zKSwKLQkgICBzdHJpbmdfdHlwZSAqYnVmZmVyIEFORAotCSAg IHVuc2lnbmVkIGludCBwb3MpIAorc3RhdGljIGNoYXIgYXQoc3RyaW5nX3R5cGUgKmJ1ZmZlciwg dW5zaWduZWQgaW50IHBvcykKIHsKLSAgICBpZiAoIHBvcyA+PSBidWZmZXItPndyaXRlX2lkeCkg Ci0gICAgeworICAgIGlmIChwb3MgPj0gYnVmZmVyLT53cml0ZV9pZHgpCiAJcmV0dXJuIDA7Ci0g ICAgfQogICAgIHJldHVybiBidWZmZXItPnB0cltwb3NdOwogfQogCi1zdGF0aWMgdm9pZCBERUZV TihjYXRjaGFyLChidWZmZXIsIGNoKSwgCi0JICAgc3RyaW5nX3R5cGUgKmJ1ZmZlciBBTkQKLQkg ICBjaGFyIGNoKQorc3RhdGljIHZvaWQgY2F0Y2hhcihzdHJpbmdfdHlwZSAqYnVmZmVyLCBjaGFy IGNoKQogewotICBpZiAoYnVmZmVyLT53cml0ZV9pZHggPT0gYnVmZmVyLT5zaXplKSAKKyAgaWYg KGJ1ZmZlci0+d3JpdGVfaWR4ID09IGJ1ZmZlci0+c2l6ZSkKICAgewotICAgIGJ1ZmZlci0+c2l6 ZSAqPTI7CisgICAgYnVmZmVyLT5zaXplICo9IDI7CiAgICAgYnVmZmVyLT5wdHIgPSByZWFsbG9j KGJ1ZmZlci0+cHRyLCBidWZmZXItPnNpemUpOwogICB9CiAKLSAgYnVmZmVyLT5wdHJbYnVmZmVy LT53cml0ZV9pZHggKysgXSA9IGNoOworICBidWZmZXItPnB0cltidWZmZXItPndyaXRlX2lkeCsr XSA9IGNoOwogfQogCi0KLXN0YXRpYyB2b2lkIERFRlVOKG92ZXJ3cml0ZV9zdHJpbmcsKGRzdCwg ICBzcmMpLAotCSAgIHN0cmluZ190eXBlICpkc3QgQU5ECi0JICAgc3RyaW5nX3R5cGUgKnNyYykK K3N0YXRpYyB2b2lkIG92ZXJ3cml0ZV9zdHJpbmcoc3RyaW5nX3R5cGUgKmRzdCwgc3RyaW5nX3R5 cGUgKnNyYykKIHsKICAgICBmcmVlKGRzdC0+cHRyKTsKICAgICBkc3QtPnNpemUgPSBzcmMtPnNp emU7CkBAIC0xNTgsMTk2ICsxMjMsMTU5IEBAIHN0YXRpYyB2b2lkIERFRlVOKG92ZXJ3cml0ZV9z dHJpbmcsKGRzdCwKICAgICBkc3QtPnB0ciA9IHNyYy0+cHRyOwogfQogCi1zdGF0aWMgdm9pZCBE RUZVTihjYXRzdHIsKGRzdCwgc3JjKSwKLQkgICBzdHJpbmdfdHlwZSAqZHN0IEFORAotCSAgIHN0 cmluZ190eXBlICpzcmMpCitzdGF0aWMgdm9pZCBjYXRzdHIoc3RyaW5nX3R5cGUgKmRzdCwgc3Ry aW5nX3R5cGUgKnNyYykKIHsKICAgICB1bnNpZ25lZCBpbnQgaTsKLSAgICBmb3IgKGkgPSAwOyBp IDwgc3JjLT53cml0ZV9pZHg7IGkrKykgCi0gICAgeworICAgIGZvciAoaSA9IDA7IGkgPCBzcmMt PndyaXRlX2lkeDsgaSsrKSB7CiAJY2F0Y2hhcihkc3QsIHNyYy0+cHRyW2ldKTsKICAgICB9CiB9 CiAKIAotc3RhdGljIHZvaWQgREVGVU4oY2F0dGV4dCwoYnVmZmVyLCBzdHJpbmcpLAotCSAgIHN0 cmluZ190eXBlICpidWZmZXIgQU5ECi0JICAgY2hhciAqc3RyaW5nKQorc3RhdGljIHZvaWQgY2F0 dGV4dChzdHJpbmdfdHlwZSAqYnVmZmVyLCBjb25zdCBjaGFyICpzdHJpbmcpCiB7Ci0gICAgCi0g ICAgd2hpbGUgKCpzdHJpbmcpIAorICAgIHdoaWxlICgqc3RyaW5nKQogICAgIHsKIAljYXRjaGFy KGJ1ZmZlciwgKnN0cmluZyk7CiAJc3RyaW5nKys7CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBE RUZVTihjYXRidWYsKGJ1ZmZlciwgYnVmLCBsZW4pLAotCSAgIHN0cmluZ190eXBlICpidWZmZXIg QU5ECi0JICAgY2hhciAqYnVmIEFORAotCSAgIHVuc2lnbmVkIGludCBsZW4pCitzdGF0aWMgdm9p ZCBjYXRidWYoc3RyaW5nX3R5cGUgKmJ1ZmZlciwgY29uc3QgY2hhciAqYnVmLCB1bnNpZ25lZCBp bnQgbGVuKQogewotICAgIAotICAgIHdoaWxlIChsZW4tLSkgCisgICAgd2hpbGUgKGxlbi0tKQog ICAgIHsKIAljYXRjaGFyKGJ1ZmZlciwgKmJ1Zik7CiAJYnVmKys7CiAgICAgfQogfQogCi0KLQot c3RhdGljIHVuc2lnbmVkIGludCAKLURFRlVOKHNraXBfd2hpdGVfYW5kX3N0YXJzLChzcmMsIGlk eCksCi0gICAgICBzdHJpbmdfdHlwZSAqc3JjIEFORAotICAgICAgdW5zaWduZWQgaW50IGlkeCkK K3N0YXRpYyB1bnNpZ25lZCBpbnQgc2tpcF93aGl0ZV9hbmRfc3RhcnMoc3RyaW5nX3R5cGUgKnNy YywgdW5zaWduZWQgaW50IGlkeCkKIHsKLSAgICB3aGlsZSAoaXNzcGFjZShhdChzcmMsaWR4KSkg Ci0JICAgfHwgKGF0KHNyYyxpZHgpID09ICcqJyAmJiBhdChzcmMsaWR4ICsxKSAhPScvJykpIAor ICAgIHdoaWxlIChpc3NwYWNlKGF0KHNyYyxpZHgpKQorCSAgIHx8IChhdChzcmMsaWR4KSA9PSAn KicgJiYgYXQoc3JjLGlkeCArMSkgIT0nLycpKQogICAgICBpZHgrKzsKICAgICByZXR1cm4gaWR4 OwotICAgIAotCiB9CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogCi1zdHJpbmdfdHlwZSBzdGFja1tT VEFDS107Ci1zdHJpbmdfdHlwZSAqdG9zOworc3RhdGljIHN0cmluZ190eXBlIHN0YWNrW1NUQUNL XTsKK3N0YXRpYyBzdHJpbmdfdHlwZSAqdG9zOwogCi11bnNpZ25lZCBpbnQgaWR4ID0gMDsgLyog UG9zIGluIGlucHV0IGJ1ZmZlciAqLwotc3RyaW5nX3R5cGUgKnB0cjsgLyogYW5kIHRoZSBidWZm ZXIgKi8KK3N0YXRpYyB1bnNpZ25lZCBpbnQgcG9zID0gMDsgLyogUG9zIGluIGlucHV0IGJ1ZmZl ciAqLworc3RhdGljIHN0cmluZ190eXBlICpwdHI7IC8qIGFuZCB0aGUgYnVmZmVyICovCiB0eXBl ZGVmIHZvaWQgKCpzdGluc3RfdHlwZSkoKTsKLXN0aW5zdF90eXBlICpwYzsKLXN0aW5zdF90eXBl IHNzdGFja1tTVEFDS107Ci1zdGluc3RfdHlwZSAqc3NwID0gJnNzdGFja1swXTsKLSNpZmRlZiBf V0lONjQKLXR5cGVkZWYgbG9uZyBsb25nCWludHA7CitzdGF0aWMgc3RpbnN0X3R5cGUgKnBjOwor I2lmZGVmIF9XSU42NAkJCS8qIF9XSU42NCBpcyBfTExQNjQgKi8KK3R5cGVkZWYgbG9uZyBsb25n IGludAlpbnRwOwogI2Vsc2UKLXR5cGVkZWYgbG9uZwkJaW50cDsKK3R5cGVkZWYgbG9uZyBpbnQJ aW50cDsKICNlbmRpZgotaW50cCBpc3RhY2tbU1RBQ0tdOwotaW50cCAqaXNwID0gJmlzdGFja1sw XTsKK3N0YXRpYyBpbnRwIGlzdGFja1tTVEFDS107CitzdGF0aWMgaW50cCAqaXNwID0gJmlzdGFj a1swXTsKIAogdHlwZWRlZiBpbnQgKndvcmRfdHlwZTsKIAotCi0KIHN0cnVjdCBkaWN0X3N0cnVj dAogewogICAgIGNoYXIgKndvcmQ7CiAgICAgc3RydWN0IGRpY3Rfc3RydWN0ICpuZXh0OwotICAg c3RpbnN0X3R5cGUgKmNvZGU7CisgICAgc3RpbnN0X3R5cGUgKmNvZGU7CiAgICAgaW50IGNvZGVf bGVuZ3RoOwogICAgIGludCBjb2RlX2VuZDsKICAgICBpbnQgdmFyOwotICAgIAogfTsKIHR5cGVk ZWYgc3RydWN0IGRpY3Rfc3RydWN0IGRpY3RfdHlwZTsKLSNkZWZpbmUgV09SRCh4KSBzdGF0aWMg dm9pZCB4KCkKIAotc3RhdGljIHZvaWQgREVGVU4oZXhlYywod29yZCksCi0JCSAgZGljdF90eXBl ICp3b3JkKQorCitzdGF0aWMgdm9pZCBleGVjKGRpY3RfdHlwZSAqd29yZCkKIHsKICAgICBwYyA9 IHdvcmQtPmNvZGU7Ci0gICAgd2hpbGUgKCpwYykgCi0gICAgeworICAgIHdoaWxlICgqcGMpIHsK IAkoKnBjKSgpOwogICAgIH0KLSAgICAKIH0KLVdPUkQoY2FsbCkKKworc3RhdGljIHZvaWQgY2Fs bCh2b2lkKQogewotc3RpbnN0X3R5cGUgKm9sZHBjID0gcGM7CisgICAgc3RpbnN0X3R5cGUgKm9s ZHBjID0gcGM7CiAgICAgZGljdF90eXBlICplOwogICAgIGUgPSAgKGRpY3RfdHlwZSAqKShwYyBb MV0pOwogICAgIGV4ZWMoZSk7CiAgICAgcGMgPSBvbGRwYyArIDI7Ci0gICAgCiB9CiAKLVdPUkQo cmVtY2hhcikKK3N0YXRpYyB2b2lkIHJlbWNoYXIodm9pZCkKIHsKLSAgICB0b3MtPndyaXRlX2lk eC0tOyAgICAKKyAgICB0b3MtPndyaXRlX2lkeC0tOwogICAgIHBjKys7Ci0gICAgCiB9CiAKLVdP UkQocHVzaF9udW1iZXIpCitzdGF0aWMgdm9pZCBwdXNoX251bWJlcih2b2lkKQogewogICAgIGlz cCsrOwogICAgIHBjKys7CiAgICAgKmlzcCA9IChpbnRwKSgqcGMpOwogICAgIHBjKys7Ci0gICAg CiB9CiAKLQotCi0KLVdPUkQocHVzaF90ZXh0KQorc3RhdGljIHZvaWQgcHVzaF90ZXh0KHZvaWQp CiB7Ci0gICAgCiAgICAgdG9zKys7CiAgICAgaW5pdF9zdHJpbmcodG9zKTsKICAgICBwYysrOwog ICAgIGNhdHRleHQodG9zLCooKGNoYXIgKiopcGMpKTsKICAgICBwYysrOwotICAgIAogfQogCiAK LSAgIAogLyogVGhpcyBmdW5jdGlvbiByZW1vdmVzIGV2ZXJ5dGhpbmcgbm90IGluc2lkZSBjb21t ZW50cyBzdGFydGluZyBvbgogICAgdGhlIGZpcnN0IGNoYXIgb2YgdGhlIGxpbmUgZnJvbSB0aGUg IHN0cmluZywgYWxzbyB3aGVuIGNvcHlpbmcKLSAgIGNvbW1lbnRzLCByZW1vdmVzIGJsYW5rIHNw YWNlIGFuZCBsZWFkaW5nIConcyAKKyAgIGNvbW1lbnRzLCByZW1vdmVzIGJsYW5rIHNwYWNlIGFu ZCBsZWFkaW5nIConcwogICAgQmxhbmsgbGluZXMgYXJlIHR1cm5lZCBpbnRvIG9uZSBibGFuayBs aW5lCiAgKi8KLQotc3RhdGljIHZvaWQgCi1ERUZVTihyZW1vdmVfbm9uY29tbWVudHMsKHNyYyxk c3QpLAotCSAgIHN0cmluZ190eXBlICpzcmMgQU5ECi0JICAgc3RyaW5nX3R5cGUgKmRzdCkKK3N0 YXRpYyB2b2lkIHJlbW92ZV9ub25jb21tZW50cyhzdHJpbmdfdHlwZSAqc3JjLCBzdHJpbmdfdHlw ZSAqZHN0KQogewogICAgIHVuc2lnbmVkIGludCBpZHggPSAwOwotICAgIAotICAgIHdoaWxlIChh dChzcmMsaWR4KSkgCisKKyAgICB3aGlsZSAoYXQoc3JjLGlkeCkpCiAgICAgewogCS8qIE5vdyBz ZWUgaWYgd2UgaGF2ZSBhIGNvbW1lbnQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lICovCi0JaWYg KGF0KHNyYyxpZHgpID09ICdcbicgCi0JICAgICYmIGF0KHNyYyxpZHgrMSkgPT0gICcvJyAKLQkg ICAgJiYgYXQoc3JjLGlkeCsyKSA9PSAnKicpIAorCWlmIChhdChzcmMsaWR4KSAgID09ICdcbicg JiYKKwkgICAgYXQoc3JjLGlkeCsxKSA9PSAgJy8nICYmCisJICAgIGF0KHNyYyxpZHgrMikgPT0g JyonKQogCXsKLQkgICAgaWR4Kz0zOwotCSAgICAKKwkgICAgaWR4ICs9IDM7CiAJICAgIGlkeCA9 IHNraXBfd2hpdGVfYW5kX3N0YXJzKHNyYyxpZHgpOwogCiAJICAgIC8qIFJlbW92ZSBsZWFkaW5n IGRvdCAqLwotCSAgICBpZiAoYXQoc3JjLCBpZHgpID09ICcuJykKLQkgICAgIGlkeCsrOwotCSAg ICAKKwkgICAgaWYgKGF0KHNyYyxpZHgpID09ICcuJykKKwkJaWR4Kys7CisKIAkgICAgLyogQ29w eSB0byB0aGUgZW5kIG9mIHRoZSBsaW5lLCBvciB0aWxsIHRoZSBlbmQgb2YgdGhlCiAJICAgICAg IGNvbW1lbnQgKi8KLQkgICAgd2hpbGUgKGF0KHNyYywgaWR4KSkKKwkgICAgd2hpbGUgKGF0KHNy YyxpZHgpKQogCSAgICB7Ci0JCWlmIChhdChzcmMsIGlkeCkgPT0gJ1xuJykgCisJCWlmIChhdChz cmMsaWR4KSA9PSAnXG4nKQogCQl7CiAJCSAgICAvKiBlbmQgb2YgbGluZSwgZWNobyBhbmQgc2Ny YXBlIG9mIGxlYWRpbmcgYmxhbmtzICAqLwogCQkgICAgaWYgKGF0KHNyYyxpZHggKzEpID09ICdc bicpCi0JCSAgICAgY2F0Y2hhcihkc3QsJ1xuJyk7CisJCQljYXRjaGFyKGRzdCwnXG4nKTsKIAkJ ICAgIGNhdGNoYXIoZHN0LCdcbicpOwogCQkgICAgaWR4Kys7Ci0JCSAgICBpZHggPSAgIHNraXBf d2hpdGVfYW5kX3N0YXJzKHNyYywgaWR4KTsKKwkJICAgIGlkeCA9IHNraXBfd2hpdGVfYW5kX3N0 YXJzKHNyYywgaWR4KTsKIAkJfQotCQllbHNlIGlmIChhdChzcmMsIGlkeCkgPT0gJyonICYmIGF0 KHNyYyxpZHgrMSkgPT0gJy8nKSAKKwkJZWxzZSBpZiAoYXQoc3JjLGlkeCkgPT0gJyonICYmIGF0 KHNyYyxpZHgrMSkgPT0gJy8nKQogCQl7Ci0JCSAgICBpZHggKz0yIDsKKwkJICAgIGlkeCArPSAy OwogCQkgICAgY2F0dGV4dChkc3QsIlxuRU5ERERcbiIpOwogCQkgICAgYnJlYWs7CiAJCX0KLQkJ ZWxzZSAKKwkJZWxzZQogCQl7Ci0JCSAgICBjYXRjaGFyKGRzdCwgYXQoc3JjLCBpZHgpKTsKKwkJ ICAgIGNhdGNoYXIoZHN0LCBhdChzcmMsaWR4KSk7CiAJCSAgICBpZHgrKzsKIAkJfQogCSAgICB9 CkBAIC0zNTUsOTkgKzI4Myw5MCBAQCBERUZVTihyZW1vdmVfbm9uY29tbWVudHMsKHNyYyxkc3Qp LAogCWVsc2UgaWR4Kys7CiAgICAgfQogfQotLyogdHVybiBmb29iYXIgbmFtZShzdHVmZik7IGlu dG8gZm9vYmFyIEVYRlVOKG5hbWUsKHN0dWZmKSk7CiAKKy8qIHR1cm4gZm9vYmFyIG5hbWUoc3R1 ZmYpOyBpbnRvIGZvb2JhciBFWEZVTihuYW1lLChzdHVmZikpOwogICovCi0KLXN0YXRpYyB2b2lk Ci1ERUZVTl9WT0lEKGV4ZnVuc3R1ZmYpCitzdGF0aWMgdm9pZCBleGZ1bnN0dWZmKHZvaWQpCiB7 CiAgICAgdW5zaWduZWQgaW50IG9wZW5wOwogICAgIHVuc2lnbmVkIGludCBmbmFtZTsKICAgICB1 bnNpZ25lZCBpbnQgaWR4OwogICAgIHN0cmluZ190eXBlIG91dDsKICAgICBpbml0X3N0cmluZygm b3V0KTsKLSAgICAKIAogICAgIC8qIG1ha2Ugc3VyZSB0aGF0IGl0J3Mgbm90IGFscmVhZHkgZXhm dW5lZCAqLwotICAgIGlmKGZpbmQodG9zLCJFWEZVTiIpIHx8IGZpbmQodG9zLCJQUk9UTyIpIHx8 ICFmaW5kKHRvcywiKCIpKSB7Ci0JICAgIGNhdHN0cigmb3V0LHRvcyk7Ci0JfQotICAgIGVsc2Ug CisgICAgaWYgKGZpbmQodG9zLCJFWEZVTiIpIHx8IGZpbmQodG9zLCJQUk9UTyIpIHx8ICFmaW5k KHRvcywiKCIpKSB7CisJY2F0c3RyKCZvdXQsdG9zKTsKKyAgICB9CisgICAgZWxzZQogICAgIHsK LQkKIAkvKkZpbmQgdGhlIG9wZW4gcGFyZW4qLwotCWZvciAob3BlbnAgPSAwOyBhdCh0b3MsIG9w ZW5wKSAhPSAnKCcgICYmIGF0KHRvcyxvcGVucCk7IG9wZW5wKyspCi0JIDsKKwlmb3IgKG9wZW5w ID0gMDsgYXQodG9zLG9wZW5wKSAhPSAnKCcgJiYgYXQodG9zLG9wZW5wKTsgb3BlbnArKykKKwkg ICA7CiAKIAlmbmFtZSA9IG9wZW5wOwogCS8qIFN0ZXAgYmFjayB0byB0aGUgZm5hbWUgKi8KIAlm bmFtZS0tOwotCXdoaWxlIChmbmFtZSAmJiBpc3NwYWNlKGF0KHRvcywgZm5hbWUpKSkKLQkgZm5h bWUgLS07CisJd2hpbGUgKGZuYW1lICYmIGlzc3BhY2UoYXQodG9zLGZuYW1lKSkpCisJICAgIGZu YW1lIC0tOwogCXdoaWxlIChmbmFtZSAmJiAhaXNzcGFjZShhdCh0b3MsZm5hbWUpKSAmJiBhdCh0 b3MsZm5hbWUpICE9ICcqJykKLQkgZm5hbWUtLTsKKwkgICAgZm5hbWUtLTsKIAogCWZuYW1lKys7 Ci0JCi0JZm9yIChpZHggPSAwOyBpZHggPCBmbmFtZTsgaWR4KyspIAorCisJZm9yIChpZHggPSAw OyBpZHggPCBmbmFtZTsgaWR4KyspCiAJewogCSAgICBjYXRjaGFyKCZvdXQsIGF0KHRvcyxpZHgp KTsKIAl9Ci0gICAgCisKIAljYXR0ZXh0KCZvdXQsIkVYRlVOKCIpOwotCWZvciAoaWR4ID0gZm5h bWU7IGlkeCA8IG9wZW5wOyBpZHgrKykgCisJZm9yIChpZHggPSBmbmFtZTsgaWR4IDwgb3BlbnA7 IGlkeCsrKQogCXsKIAkgICAgY2F0Y2hhcigmb3V0LCBhdCh0b3MsaWR4KSk7CiAJfQogCWNhdHRl eHQoJm91dCwiLCAiKTsKLQl3aGlsZSAoYXQodG9zLGlkeCkgJiYgYXQodG9zLGlkeCkgIT0nOycp IAorCXdoaWxlIChhdCh0b3MsaWR4KSAmJiBhdCh0b3MsaWR4KSAhPSc7JykKIAl7Ci0JICAgIGNh dGNoYXIoJm91dCwgYXQodG9zLCBpZHgpKTsKKwkgICAgY2F0Y2hhcigmb3V0LCBhdCh0b3MsaWR4 KSk7CiAJICAgIGlkeCsrOwogCX0KIAljYXR0ZXh0KCZvdXQsIik7XG4iKTsKICAgICB9Ci0gICAg b3ZlcndyaXRlX3N0cmluZyh0b3MsICZvdXQpOyAgICAKKyAgICBvdmVyd3JpdGVfc3RyaW5nKHRv cywgJm91dCk7CiAgICAgcGMrKzsKLSAgICAKIH0KIAogCi0KIC8qIHR1cm4geyoKICAgIGFuZCAq fSBpbnRvIGNvbW1lbnRzICovCiAKLVdPUkQodHJhbnNsYXRlY29tbWVudHMpCitzdGF0aWMgdm9p ZCB0cmFuc2xhdGVjb21tZW50cyh2b2lkKQogewogICAgIHVuc2lnbmVkIGludCBpZHggPSAwOwog ICAgIHN0cmluZ190eXBlIG91dDsKICAgICBpbml0X3N0cmluZygmb3V0KTsKLSAgICAKLSAgICB3 aGlsZSAoYXQodG9zLCBpZHgpKSAKKworICAgIHdoaWxlIChhdCh0b3MsaWR4KSkKICAgICB7Ci0J aWYgKGF0KHRvcyxpZHgpID09ICd7JyAmJiBhdCh0b3MsaWR4KzEpID09JyonKSAKKwlpZiAoYXQo dG9zLGlkeCkgPT0gJ3snICYmIGF0KHRvcyxpZHgrMSkgPT0nKicpCiAJewogCSAgICBjYXR0ZXh0 KCZvdXQsIgkvKiIpOwotCSAgICBpZHgrPTI7CisJICAgIGlkeCArPSAyOwogCX0KLQllbHNlIGlm IChhdCh0b3MsaWR4KSA9PSAnKicgJiYgYXQodG9zLGlkeCsxKSA9PSd9JykgCisJZWxzZSBpZiAo YXQodG9zLGlkeCkgPT0gJyonICYmIGF0KHRvcyxpZHgrMSkgPT0nfScpCiAJewogCSAgICBjYXR0 ZXh0KCZvdXQsIiovIik7Ci0JICAgIGlkeCs9MjsKKwkgICAgaWR4ICs9IDI7CiAJfQotCWVsc2Ug IAorCWVsc2UKIAl7Ci0JICAgIGNhdGNoYXIoJm91dCwgYXQodG9zLCBpZHgpKTsKKwkgICAgY2F0 Y2hhcigmb3V0LCBhdCh0b3MsaWR4KSk7CiAJICAgIGlkeCsrOwogCX0KICAgICB9CiAKLQogICAg IG92ZXJ3cml0ZV9zdHJpbmcodG9zLCAmb3V0KTsKLSAgICAKICAgICBwYysrOwotICAgIAogfQog CiAvKiBmaW5kIHNvbWV0aGluZyBsaWtlCkBAIC00NTYsMzYgKzM3NSwzMiBAQCBXT1JEKHRyYW5z bGF0ZWNvbW1lbnRzKQogCiAgICAgIGludG8KICAgICAgbWVyZ2Ugd2l0aCB3b3JkcyBvbiB0b3Mg YW5kIG91dHB1dCB0aGVtIHRvIHN0ZGVycm9yCi0KICovCi1XT1JEKHF1aWNrcmVmKQorc3RhdGlj IHZvaWQgcXVpY2tyZWYodm9pZCkKIHsKICAgc3RyaW5nX3R5cGUgKm5vcyA9IHRvcy0xOwotICB1 bnNpZ25lZCBpbnQgc2Nhbj0wOwogICB1bnNpZ25lZCBpbnQgbm9zc2NhbiA9IDA7CiAgIHVuc2ln bmVkIGludCBpZHggPSAwOwotICAKLSAgd2hpbGUgKGF0KHRvcywgaWR4KSkgCisKKyAgd2hpbGUg KGF0KHRvcyxpZHgpKQogICB7CiAgICAgaWYgKGF0KHRvcyxpZHgpID09ICd+JykKICAgICB7CiAg ICAgICAvKiBTa2lwIHRoZSB3aGl0ZXNwYWNlICovCi0gICAgICB3aGlsZSAoYXQobm9zLCBub3Nz Y2FuKSA9PSAnICcpCi0gICAgICAgbm9zc2NhbisrOwotICAgIAorICAgICAgd2hpbGUgKGF0KG5v cyxub3NzY2FuKSA9PSAnICcpCisJbm9zc2NhbisrOworCiAgICAgICAvKiBTdWIgdGhlIG5leHQg d29yZCBmcm9tIHRoZSBub3MqLwotICAgICAgd2hpbGUgKGF0KG5vcywgbm9zc2NhbikgIT0gJyAn ICYmCi0JICAgICBhdChub3MsIG5vc3NjYW4pICE9IDApCisgICAgICB3aGlsZSAoYXQobm9zLG5v c3NjYW4pICE9ICcgJyAmJgorCSAgICAgYXQobm9zLG5vc3NjYW4pICE9IDApCiAgICAgICB7Ci0J ZnByaW50ZihzdGRlcnIsICIlYyIsIGF0KG5vcywgbm9zc2NhbikpOworCWZwcmludGYoc3RkZXJy LCAiJWMiLCBhdChub3Msbm9zc2NhbikpOwogCW5vc3NjYW4rKzsKICAgICAgIH0KICAgICB9Ci0g IAotICAgIGVsc2UgCisgICAgZWxzZQogICAgIHsKLSAgICAgIGZwcmludGYoc3RkZXJyLCIlYyIs IGF0KHRvcywgaWR4KSk7Ci0gICAgCisgICAgICBmcHJpbnRmKHN0ZGVyciwiJWMiLCBhdCh0b3Ms aWR4KSk7CiAgICAgfQogICAgIGlkeCsrOwogICB9CkBAIC00OTQsMTIzICs0MDksODIgQEAgV09S RChxdWlja3JlZikKICAgZGVsZXRlX3N0cmluZyhub3MpOwogICB0b3MtPTI7CiAgIHBjKys7Ci0g IAotfQotCi0vKiB0dXJuIGV2ZXJ5dGhpbmcgbm90IHN0YXJ0aW5nIHdpdGggYSAuIGludG8gYSBj b21tZW50ICovCi0KLVdPUkQobWFuZ2xlY29tbWVudHMpCi17Ci0gICAgdW5zaWduZWQgaW50IGlk eCA9IDA7Ci0gICAgc3RyaW5nX3R5cGUgb3V0OwotICAgIGluaXRfc3RyaW5nKCZvdXQpOwotICAg IAotICAgIHdoaWxlIChhdCh0b3MsIGlkeCkpIAotICAgIHsKLQlpZiAoYXQodG9zLGlkeCkgPT0g J1xuJyAmJiBhdCh0b3MsaWR4KzEpID09JyonKSAKLQl7Ci0JICAgIGNhdHRleHQoJm91dCwiCS8q Iik7Ci0JICAgIGlkeCs9MjsKLQl9Ci0JZWxzZSBpZiAoYXQodG9zLGlkeCkgPT0gJyonICYmIGF0 KHRvcyxpZHgrMSkgPT0nfScpIAotCXsKLQkgICAgY2F0dGV4dCgmb3V0LCIqLyIpOwotCSAgICBp ZHgrPTI7Ci0JfQotCWVsc2UgIAotCXsKLQkgICAgY2F0Y2hhcigmb3V0LCBhdCh0b3MsIGlkeCkp OwotCSAgICBpZHgrKzsKLQl9Ci0gICAgfQotCi0KLSAgICBvdmVyd3JpdGVfc3RyaW5nKHRvcywg Jm91dCk7Ci0gICAgCi0gICAgcGMrKzsKLSAgICAKIH0KIAogLyogTW9kIHRvcyBzbyB0aGF0IG9u bHkgbGluZXMgd2l0aCBsZWFkaW5nIGRvdHMgcmVtYWluICovCi1zdGF0aWMgdm9pZAotREVGVU5f Vk9JRChvdXRwdXRkb3RzKQorc3RhdGljIHZvaWQgb3V0cHV0ZG90cyh2b2lkKQogewogICAgIHVu c2lnbmVkIGludCBpZHggPSAwOwogICAgIHN0cmluZ190eXBlIG91dDsKICAgICBpbml0X3N0cmlu Zygmb3V0KTsKLSAgICAKLSAgICB3aGlsZSAoYXQodG9zLCBpZHgpKSAKKworICAgIHdoaWxlIChh dCh0b3MsaWR4KSkKICAgICB7Ci0JaWYgKGF0KHRvcywgaWR4KSA9PSAnXG4nICYmIGF0KHRvcywg aWR4KzEpID09ICcuJykgCisJaWYgKGF0KHRvcyxpZHgpID09ICdcbicgJiYgYXQodG9zLGlkeCsx KSA9PSAnLicpCiAJewogCSAgICBpZHggKz0gMjsKLQkgICAgCi0JICAgIHdoaWxlIChhdCh0b3Ms IGlkeCkgJiYgYXQodG9zLCBpZHgpIT0nXG4nKQorCSAgICB3aGlsZSAoYXQodG9zLGlkeCkgJiYg YXQodG9zLGlkeCkgIT0nXG4nKQogCSAgICB7Ci0JCWlmIChhdCh0b3MsaWR4KSA9PSAneycgJiYg YXQodG9zLGlkeCsxKSA9PScqJykgCisJCWlmIChhdCh0b3MsaWR4KSA9PSAneycgJiYgYXQodG9z LGlkeCsxKSA9PScqJykKIAkJewogCQkgICAgY2F0dGV4dCgmb3V0LCIgLyoiKTsKLQkJICAgIGlk eCs9MjsKKwkJICAgIGlkeCArPSAyOwogCQl9Ci0JCWVsc2UgaWYgKGF0KHRvcyxpZHgpID09ICcq JyAmJiBhdCh0b3MsaWR4KzEpID09J30nKSAKKwkJZWxzZSBpZiAoYXQodG9zLGlkeCkgPT0gJyon ICYmIGF0KHRvcyxpZHgrMSkgPT0nfScpCiAJCXsKIAkJICAgIGNhdHRleHQoJm91dCwiKi8iKTsK LQkJICAgIGlkeCs9MjsKKwkJICAgIGlkeCArPSAyOwogCQl9Ci0JCWVsc2UgIAorCQllbHNlCiAJ CXsKLQkJICAgIGNhdGNoYXIoJm91dCwgYXQodG9zLCBpZHgpKTsKKwkJICAgIGNhdGNoYXIoJm91 dCwgYXQodG9zLGlkeCkpOwogCQkgICAgaWR4Kys7CiAJCX0KIAkgICAgfQogCSAgICBjYXRjaGFy KCZvdXQsJ1xuJyk7CiAJfQotCWVsc2UgCisJZWxzZQogCXsKIAkgICAgaWR4Kys7CiAJfQotICAg IH0JCisgICAgfQogCiAgICAgb3ZlcndyaXRlX3N0cmluZyh0b3MsICZvdXQpOwogICAgIHBjKys7 Ci0gICAgCiB9CiAKIC8qIEZpbmQgbGluZXMgc3RhcnRpbmcgd2l0aCAuIGFuZCB8IGFuZCBwdXQg ZXhhbXBsZSBhcm91bmQgdGhlbSBvbiB0b3MKLSAgIHR1cm4gCisgICB0dXJuCiAgICB7KiAgaW50 byBvcGVuIGNvbW1lbnQgYW5kICp9IGludG8gY2xvc2UgY29tbWVudAogICAgZXNjYXBlIGN1cmxp ZXMKLSAgIAogKi8KLVdPUkQoY291cmllcml6ZSkKK3N0YXRpYyB2b2lkIGNvdXJpZXJpemUodm9p ZCkKIHsKICAgICBzdHJpbmdfdHlwZSBvdXQ7CiAgICAgdW5zaWduZWQgaW50IGlkeCA9IDA7Ci0g ICAgCisKICAgICBpbml0X3N0cmluZygmb3V0KTsKLSAgICAKLSAgICB3aGlsZSAoYXQodG9zLCBp ZHgpKSAKKworICAgIHdoaWxlIChhdCh0b3MsaWR4KSkKICAgICB7Ci0JaWYgKGF0KHRvcywgaWR4 KSA9PSAnXG4nIAotCSAgICAmJiAoYXQodG9zLCBpZHggKzEgKSA9PSAnLicKLQkJfHwgYXQodG9z LGlkeCsxKSA9PSAnfCcpKSAKKwlpZiAoYXQodG9zLGlkeCkgPT0gJ1xuJyAmJgorCSAgICAoYXQo dG9zLGlkeCsxKSA9PSAnLicgfHwgYXQodG9zLGlkeCsxKSA9PSAnfCcpKQogCXsKIAkgICAgY2F0 dGV4dCgmb3V0LCJcbkBzbWFsbGV4YW1wbGVcbiIpOwotCSAgICBkbyAKKwkgICAgZG8KIAkgICAg ewogCQlpZHggKz0gMjsKLQkJCi0JCXdoaWxlIChhdCh0b3MsIGlkeCkgJiYgYXQodG9zLCBpZHgp IT0nXG4nKQorCQl3aGlsZSAoYXQodG9zLGlkeCkgJiYgYXQodG9zLGlkeCkhPSdcbicpCiAJCXsK LQkJICAgIGlmIChhdCh0b3MsaWR4KT09J3snICYmIGF0KHRvcyxpZHgrMSkgPT0nKicpIAorCQkg ICAgaWYgKGF0KHRvcyxpZHgpPT0neycgJiYgYXQodG9zLGlkeCsxKSA9PScqJykKIAkJICAgIHsK IAkJCWNhdHRleHQoJm91dCwiIC8qIik7Ci0JCQlpZHgrPTI7CisJCQlpZHggKz0gMjsKIAkJICAg IH0KLQkJICAgIGVsc2UgaWYgKGF0KHRvcyxpZHgpPT0nKicgJiYgYXQodG9zLGlkeCsxKSA9PSd9 JykgCisJCSAgICBlbHNlIGlmIChhdCh0b3MsaWR4KT09JyonICYmIGF0KHRvcyxpZHgrMSkgPT0n fScpCiAJCSAgICB7CiAJCQljYXR0ZXh0KCZvdXQsIiovIik7Ci0JCQlpZHgrPTI7CisJCQlpZHgg Kz0gMjsKIAkJICAgIH0KIAkgICAgICAgICAgICBlbHNlIGlmIChhdCh0b3MsaWR4KSA9PSAneycp CiAJCSAgICB7CkBAIC02MjIsMzQgKzQ5NiwzMSBAQCBXT1JEKGNvdXJpZXJpemUpCiAJCQljYXR0 ZXh0KCZvdXQsIkB9Iik7CiAJCQlpZHgrKzsKIAkJICAgIH0KLQkJICAgIGVsc2UgCisJCSAgICBl bHNlCiAJCSAgICB7Ci0JCQljYXRjaGFyKCZvdXQsIGF0KHRvcywgaWR4KSk7CisJCQljYXRjaGFy KCZvdXQsIGF0KHRvcyxpZHgpKTsKIAkJCWlkeCsrOwogCQkgICAgfQotCQkgICAgCiAJCX0KIAkJ Y2F0Y2hhcigmb3V0LCdcbicpOwotCSAgICB9ICAKLQkgICAgd2hpbGUgKGF0KHRvcywgaWR4KSA9 PSAnXG4nIAotCQkgICAmJiAoYXQodG9zLCBpZHgrMSkgPT0gJy4nKQotCQkgICB8fCAoYXQodG9z LGlkeCsxKSA9PSAnfCcpKTsKKwkgICAgfQorCSAgICB3aGlsZSAoYXQodG9zLGlkeCkgPT0gJ1xu JworCQkgICAmJiAoKGF0KHRvcyxpZHgrMSkgPT0gJy4nKSB8fCAoYXQodG9zLGlkeCsxKSA9PSAn fCcpKSk7CisKIAkgICAgY2F0dGV4dCgmb3V0LCJAZW5kIHNtYWxsZXhhbXBsZSIpOwogCX0KLQll bHNlIAotCXsgICAgCi0JICAgIGNhdGNoYXIoJm91dCwgYXQodG9zLCBpZHgpKTsKKwllbHNlCisJ eworCSAgICBjYXRjaGFyKCZvdXQsIGF0KHRvcyxpZHgpKTsKIAkgICAgaWR4Kys7CiAJfQotICAg IH0gICAgCisgICAgfQogCiAgICAgb3ZlcndyaXRlX3N0cmluZyh0b3MsICZvdXQpOwogICAgIHBj Kys7Ci0KLSAgICAKIH0KIAotLyogCisvKgogICAgTysgIGVtaXQgQGl0ZW1pemUgQGJ1bGxldAog ICAgT08gIGVtaXQgQGl0ZW0KICAgIE8tICBlbWl0IEBlbmQgaXRlbWl6ZQpAQCAtNjU4LDY0ICs1 MjksNTggQEAgV09SRChjb3VyaWVyaXplKQogICAgb28gIEBpdGVtCiAgICBvLSAgZW1pdCBAZW5k IHRhYmxlCiAqLwotCi0KLVdPUkQoYnVsbGV0aXplKQorc3RhdGljIHZvaWQgYnVsbGV0aXplKHZv aWQpCiB7CiAgIHVuc2lnbmVkIGludCBpZHggPSAwOwotICBpbnQgb24gPSAwOwogICBzdHJpbmdf dHlwZSBvdXQ7CiAgIGluaXRfc3RyaW5nKCZvdXQpOwotICAgIAotICB3aGlsZSAoYXQodG9zLCBp ZHgpKSB7Ci0gICAgICBpZiAoYXQodG9zLCBpZHgpID09ICdAJyAmJgotCSAgYXQodG9zLCBpZHgr MSkgPT0gJyonKSAKKworICB3aGlsZSAoYXQodG9zLGlkeCkpIHsKKyAgICAgIGlmIChhdCh0b3Ms aWR4KSAgID09ICdAJyAmJgorCSAgYXQodG9zLGlkeCsxKSA9PSAnKicpCiAgICAgICB7CiAJY2F0 dGV4dCgmb3V0LCIqIik7Ci0JaWR4Kz0yOworCWlkeCArPSAyOwogICAgICAgfQotCQogICAgICAg ZWxzZQotICAgICAgIGlmIChhdCh0b3MsIGlkeCkgPT0gJ1xuJyAmJiAgYXQodG9zLCBpZHgrMSkg PT0gJ28nKQorICAgICAgIGlmIChhdCh0b3MsaWR4KSA9PSAnXG4nICYmICBhdCh0b3MsaWR4KzEp ID09ICdvJykKICAgICAgICB7CiAJIGlmIChhdCh0b3MsaWR4KzIpID09ICcrJykgewogCSAgICAg Y2F0dGV4dCgmb3V0LCJcbkB0YWJsZSBAY29kZVxuIik7Ci0JICAgICBpZHgrPTM7CisJICAgICBp ZHggKz0gMzsKIAkgICB9CiAJIGVsc2UgaWYgKGF0KHRvcyxpZHgrMikgPT0gJy0nKSB7CiAJICAg ICBjYXR0ZXh0KCZvdXQsIlxuQGVuZCB0YWJsZVxuIik7Ci0JICAgICBpZHgrPTM7CisJICAgICBp ZHggKz0gMzsKIAkgICB9CiAJIGVsc2UgaWYgKGlzc3BhY2UoYXQodG9zLGlkeCsyKSkpIHsKIAkg ICAgIGNhdHRleHQoJm91dCwiXG5AaXRlbSAiKTsKLQkgICAgIGlkeCs9MzsKKwkgICAgIGlkeCAr PSAzOwogCSAgIH0KIAkgZWxzZSB7Ci0JICAgICBjYXRjaGFyKCZvdXQsIGF0KHRvcywgaWR4KSk7 CisJICAgICBjYXRjaGFyKCZvdXQsIGF0KHRvcyxpZHgpKTsKIAkgICAgIGlkeCsrOwogCSAgIH0K ICAgICAgICB9Ci0gICAgICAKICAgICAgICBlbHNlCi0JaWYgKGF0KHRvcywgaWR4KSA9PSAnXG4n ICYmICBhdCh0b3MsIGlkeCsxKSA9PSAnTycpCisJaWYgKGF0KHRvcyxpZHgpID09ICdcbicgJiYg IGF0KHRvcyxpZHgrMSkgPT0gJ08nKQogCXsKIAkgIGlmIChhdCh0b3MsaWR4KzIpID09ICcrJykg ewogCSAgICAgIGNhdHRleHQoJm91dCwiXG5AaXRlbWl6ZSBAYnVsbGV0XG4iKTsKLQkgICAgICBp ZHgrPTM7Ci0JICAgIH0KLQorCSAgICAgIGlkeCArPSAzOworCSAgfQogCSAgZWxzZSBpZiAoYXQo dG9zLGlkeCsyKSA9PSAnLScpIHsKIAkgICAgICBjYXR0ZXh0KCZvdXQsIlxuQGVuZCBpdGVtaXpl XG4iKTsKLQkgICAgICBpZHgrPTM7Ci0JICAgIH0KKwkgICAgICBpZHggKz0gMzsKKwkgIH0KIAkg IGVsc2UgewotCSAgICAgIGNhdGNoYXIoJm91dCwgYXQodG9zLCBpZHgpKTsKKwkgICAgICBjYXRj aGFyKCZvdXQsIGF0KHRvcyxpZHgpKTsKIAkgICAgICBpZHgrKzsKLQkgICAgfQotCX0JICAgICAg CisJICB9CisJfQogCWVsc2UKIAl7Ci0JICBjYXRjaGFyKCZvdXQsIGF0KHRvcywgaWR4KSk7CisJ ICBjYXRjaGFyKCZvdXQsIGF0KHRvcyxpZHgpKTsKIAkgIGlkeCsrOwogCX0KICAgICB9CkBAIC03 MjMsMTYyICs1ODgsMTM2IEBAIFdPUkQoYnVsbGV0aXplKQogICBkZWxldGVfc3RyaW5nKHRvcyk7 CiAgICp0b3MgPSBvdXQ7CiAgIHBjKys7Ci0gICAgCiB9CiAKLS8qIFR1cm4gPDxmb28+PiBpbnRv IEBjb2Rle2Zvb30gaW4gcGxhY2UgYXQgVE9TIAorLyogVHVybiA8PGZvbz4+IGludG8gQGNvZGV7 Zm9vfSBpbiBwbGFjZSBhdCBUT1MKICAgIFR1cm4gPFtmb29dPiBpbnRvIEB2YXJ7Zm9vfSBpbiBw bGFjZSBhdCBUT1MKICAgIG5lc3QgdGhlbSB0b28gIQotCiAqLwotICAgCi0KLVdPUkQoZG9fZmFu Y3lfc3R1ZmYpCi0geworc3RhdGljIHZvaWQgZG9fZmFuY3lfc3R1ZmYodm9pZCkKK3sKICAgICB1 bnNpZ25lZCBpbnQgaWR4ID0gMDsKICAgICBzdHJpbmdfdHlwZSBvdXQ7CisKICAgICBpbml0X3N0 cmluZygmb3V0KTsKLSAgICB3aGlsZSAoYXQodG9zLCBpZHgpKSAKKyAgICB3aGlsZSAoYXQodG9z LGlkeCkpCiAgICAgewotCWlmIChhdCh0b3MsIGlkeCkgPT0gJzwnIAotCSAgICAmJiBhdCh0b3Ms IGlkeCsxKSA9PSAnPCcKLQkgICAgJiYgKCFpc3NwYWNlKGF0KHRvcyxpZHggKyAyKSkgfHwgYXQo dG9zLGlkeCszKSA9PSAnPicpKSAKKwlpZiAoYXQodG9zLGlkeCkgPT0gJzwnICYmIGF0KHRvcyxp ZHgrMSkgPT0gJzwnICYmCisJICAgICghaXNzcGFjZShhdCh0b3MsaWR4KzIpKSB8fCBhdCh0b3Ms aWR4KzMpID09ICc+JykpCiAJewogCSAgICAvKiBUaGlzIHF1YWxpZmllcyBhcyBhIDw8IHN0YXJ0 dXAgKi8KLQkgICAgaWR4ICs9MjsKKwkgICAgaWR4ICs9IDI7CiAJICAgIGNhdHRleHQoJm91dCwi QGNvZGV7Iik7Ci0JICB9Ci0JCi0JZWxzZSAJaWYgKGF0KHRvcywgaWR4KSA9PSAnPCcgCi0JICAg ICYmIGF0KHRvcywgaWR4KzEpID09ICdbJwotCSAgICAmJiAhaXNzcGFjZShhdCh0b3MsaWR4ICsg MikpKSAKKwl9CisJZWxzZSBpZiAoYXQodG9zLGlkeCkgICA9PSAnPCcgJiYKKwkJIGF0KHRvcyxp ZHgrMSkgPT0gJ1snICYmCisJCSAhaXNzcGFjZShhdCh0b3MsaWR4KzIpKSkKIAl7CiAJICAgIC8q IFRoaXMgcXVhbGlmaWVzIGFzIGEgPFsgc3RhcnR1cCAqLwotCSAgICBpZHggKz0yOworCSAgICBp ZHggKz0gMjsKIAkgICAgY2F0dGV4dCgmb3V0LCJAdmFyeyIpOwotCSAgfQotCWVsc2UgaWYgKGF0 KHRvcywgaWR4KSA9PSAnPicgCi0JCSAmJiBhdCh0b3MsaWR4KzEpID09Jz4nKSAKKwl9CisJZWxz ZSBpZiAoYXQodG9zLGlkeCkgPT0gJz4nICYmIGF0KHRvcyxpZHgrMSkgPT0nPicpCiAJewotCSAg CiAJICAgIGNhdHRleHQoJm91dCwifSIpOwotCSAgICBpZHgrPTI7CisJICAgIGlkeCArPSAyOwog CX0KLQllbHNlIGlmIChhdCh0b3MsIGlkeCkgPT0gJ10nIAotCQkgJiYgYXQodG9zLGlkeCsxKSA9 PSc+JykgCisJZWxzZSBpZiAoYXQodG9zLGlkeCkgPT0gJ10nICYmIGF0KHRvcyxpZHgrMSkgPT0n PicpCiAJewogCSAgICBjYXR0ZXh0KCZvdXQsIn0iKTsKLQkgICAgaWR4Kz0yOworCSAgICBpZHgg Kz0gMjsKIAl9Ci0JZWxzZSAKKwllbHNlCiAJewotCSAgICBjYXRjaGFyKCZvdXQsIGF0KHRvcywg aWR4KSk7CisJICAgIGNhdGNoYXIoJm91dCwgYXQodG9zLGlkeCkpOwogCSAgICBpZHgrKzsKIAl9 CiAgICAgfQogICAgIGRlbGV0ZV9zdHJpbmcodG9zKTsKICAgICAqdG9zID0gb3V0OwogICAgIHBj Kys7Ci0gICAgCiB9CisKIC8qIEEgY29tbWFuZCBpcyBhbGwgdXBwZXIgY2FzZSxhbmQgYWxvbmUg b24gYSBsaW5lICovCi1zdGF0aWMgaW50IAotREVGVU4oIGlzY29tbWFuZCwocHRyLCBpZHgpLAot ICAgICAgc3RyaW5nX3R5cGUgKnB0ciBBTkQKLSAgICAgIHVuc2lnbmVkIGludCBpZHgpCitzdGF0 aWMgaW50IGlzY29tbWFuZChzdHJpbmdfdHlwZSAqcywgdW5zaWduZWQgaW50IGlkeCkKIHsKICAg ICB1bnNpZ25lZCBpbnQgbGVuID0gMDsKLSAgICB3aGlsZSAoYXQocHRyLGlkeCkpIHsKLQkgICAg aWYgKGlzdXBwZXIoYXQocHRyLGlkeCkpIHx8IGF0KHB0cixpZHgpID09ICcgJyB8fAotCQlhdChw dHIsaWR4KSA9PSAnXycpIAorICAgIHdoaWxlIChhdChzLGlkeCkpIHsKKwkgICAgaWYgKGlzdXBw ZXIoYXQocyxpZHgpKSB8fCBhdChzLGlkeCkgPT0gJyAnIHx8CisJCWF0KHMsaWR4KSA9PSAnXycp CiAJICAgIHsKLQkgICAgIGxlbisrOwotCSAgICAgaWR4Kys7Ci0JIH0KLQkgICAgZWxzZSBpZihh dChwdHIsaWR4KSA9PSAnXG4nKQorCQlsZW4rKzsKKwkJaWR4Kys7CisJICAgIH0KKwkgICAgZWxz ZSBpZihhdChzLGlkeCkgPT0gJ1xuJykKIAkgICAgewotCQlpZiAobGVuID40KSByZXR1cm4gMTsK KwkJaWYgKGxlbiA+IDQpCisJCSAgICByZXR1cm4gMTsKIAkJcmV0dXJuIDA7CiAJICAgIH0KIAkg ICAgZWxzZSByZXR1cm4gMDsKIAl9CiAgICAgcmV0dXJuIDA7Ci0KIH0KIAotCi1ERUZVTihjb3B5 X3Bhc3RfbmV3bGluZSwocHRyLCBpZHgsIGRzdCksCi0gICAgICBzdHJpbmdfdHlwZSAqcHRyIEFO RAotICAgICAgdW5zaWduZWQgaW50IGlkeCBBTkQKLSAgICAgIHN0cmluZ190eXBlICpkc3QpCitz dGF0aWMgaW50IGNvcHlfcGFzdF9uZXdsaW5lKHN0cmluZ190eXBlICpzLCB1bnNpZ25lZCBpbnQg aWR4LCBzdHJpbmdfdHlwZSAqZHN0KQogewotICAgIHdoaWxlIChhdChwdHIsIGlkeCkgJiYgYXQo cHRyLCBpZHgpICE9ICdcbicpIAorICAgIHdoaWxlIChhdChzLGlkeCkgJiYgYXQocyxpZHgpICE9 ICdcbicpIAogICAgIHsKLQljYXRjaGFyKGRzdCwgYXQocHRyLCBpZHgpKTsKKwljYXRjaGFyKGRz dCwgYXQocyxpZHgpKTsKIAlpZHgrKzsKLQkKLSAgICB9ICAgIAotICAgIGNhdGNoYXIoZHN0LCBh dChwdHIsIGlkeCkpOworICAgIH0KKyAgICBjYXRjaGFyKGRzdCwgYXQocyxpZHgpKTsKICAgICBp ZHgrKzsKICAgICByZXR1cm4gaWR4OwotCiB9CiAKLVdPUkQoaWNvcHlfcGFzdF9uZXdsaW5lKQor c3RhdGljIHZvaWQgaWNvcHlfcGFzdF9uZXdsaW5lKHZvaWQpCiB7CiAgICAgdG9zKys7CiAgICAg aW5pdF9zdHJpbmcodG9zKTsKLSAgICBpZHggPSBjb3B5X3Bhc3RfbmV3bGluZShwdHIsIGlkeCwg dG9zKTsKLSAgICBwYysrOwkKKyAgICBwb3MgPSBjb3B5X3Bhc3RfbmV3bGluZShwdHIsIHBvcywg dG9zKTsKKyAgICBwYysrOwogfQogCiAKIC8qIGluZGVudAogICAgVGFrZSB0aGUgc3RyaW5nIGF0 IHRoZSB0b3Agb2YgdGhlIHN0YWNrLCBkbyBzb21lIHByZXR0eWluZyAqLwogCi0KLQotCi1XT1JE KGtpbGxfYm9ndXNfbGluZXMpCitzdGF0aWMgdm9pZCBraWxsX2JvZ3VzX2xpbmVzKHZvaWQpCiB7 CiAgICAgaW50IHNsIDsKLSAgICAKLSAgICBpbnQgbmwgPSAwOwogICAgIGludCBpZHggPSAwOwog ICAgIGludCBjOwotICAgIGludCBkb3QgPSAwICAgIDsKLSAgICAKLSAgICBzdHJpbmdfdHlwZSBv dXQ7ICAgIAorICAgIGludCBkb3QgPSAwOworCisgICAgc3RyaW5nX3R5cGUgb3V0OwogICAgIGlu aXRfc3RyaW5nKCZvdXQpOwogICAgIC8qIERyb3AgbGVhZGluZyBubCAqLwogICAgIHdoaWxlIChh dCh0b3MsaWR4KSA9PSAnXG4nKQotICAgIHsKIAlpZHgrKzsKLSAgICB9CiAgICAgYyA9IGlkeDsK LSAgICAKKwogICAgIC8qIEZpbmQgdGhlIGxhc3QgY2hhciAqLwogICAgIHdoaWxlIChhdCh0b3Ms aWR4KSkKLSAgICB7CiAJaWR4Kys7Ci0gICAgfQotICAgIAorCiAgICAgLyogZmluZCB0aGUgbGFz dCBub24gd2hpdGUgYmVmb3JlIHRoZSBubCAqLwogICAgIGlkeC0tOwotICAgIAorCiAgICAgd2hp bGUgKGlkeCAmJiBpc3NwYWNlKGF0KHRvcyxpZHgpKSkKLSAgICAgaWR4LS07CisJaWR4LS07CiAg ICAgaWR4Kys7Ci0gICAgCisKICAgICAvKiBDb3B5IGJ1ZmZlciB1cHRvIGxhc3QgY2hhciwgYnV0 IGJsYW5rIGxpbmVzIGJlZm9yZSBhbmQgYWZ0ZXIKICAgICAgICBkb3RzIGRvbid0IGNvdW50ICov CiAgICAgc2wgPSAxOwogCiAgICAgd2hpbGUgKGMgPCBpZHgpCiAgICAgewotCWlmIChhdCh0b3Ms YykgPT0gJ1xuJyAKLQkgICAgJiYgYXQodG9zLGMrMSkgPT0gJ1xuJwotCSAgICAmJiBhdCh0b3Ms YysyKSA9PSAnLicpIAorCWlmIChhdCh0b3MsYykgICA9PSAnXG4nICYmCisJICAgIGF0KHRvcyxj KzEpID09ICdcbicgJiYKKwkgICAgYXQodG9zLGMrMikgPT0gJy4nKQogCXsKIAkgICAgLyogSWdu b3JlIHR3byBsaW5lbGluZXMgYmVmb3JlICBhIGRvdCovCiAJICAgIGMrKzsKQEAgLTg4OCw5ICs3 MjcsOCBAQCBXT1JEKGtpbGxfYm9ndXNfbGluZXMpCiAJICAgIC8qIHJlbWVtYmVyIHRoYXQgdGhp cyBsaW5lIHN0YXJ0ZWQgd2l0aCBhIGRvdCAqLwogCSAgICBkb3Q9MjsKIAl9Ci0JZWxzZSBpZiAo YXQodG9zLGMpID09ICdcbicgCi0JCSAmJiBhdCh0b3MsYysxKSA9PSAnXG4nCi0JCSAmJiBkb3Qp CisJZWxzZSBpZiAoYXQodG9zLGMpICAgPT0gJ1xuJyAmJgorCQkgYXQodG9zLGMrMSkgPT0gJ1xu JyAmJiBkb3QpCiAJewogCSAgICBjKys7CiAJICAgIC8qIElnbm9yZSB0d28gbmV3bGluZXMgd2hl biBsYXN0IGxpbmUgd2FzIGRvdCAqLwpAQCAtOTAwLDI0ICs3MzgsMjIgQEAgV09SRChraWxsX2Jv Z3VzX2xpbmVzKQogCWlmIChhdCh0b3MsYykgPT0gJ1xuJykKIAl7CiAJICAgIHNsID0gMTsKLQkg ICAgCi0JICAgIGlmIChkb3QgPT0gMilkb3Q9MTtlbHNlIGRvdCA9IDA7CisJICAgIGlmIChkb3Qg PT0gMikKKwkJZG90ID0gMTsKKwkgICAgZWxzZSBkb3QgPSAwOwogCX0KLQkKLQljKys7CQogCisJ YysrOwogICAgIH0KLSAgICAKKwogICAgIC8qIEFwcGVuZCBubCovCiAgICAgY2F0Y2hhcigmb3V0 LCAnXG4nKTsKICAgICBwYysrOwogICAgIGRlbGV0ZV9zdHJpbmcodG9zKTsKICAgICAqdG9zID0g b3V0OwotICAgIAotICAgIAogfQogCi1XT1JEKGluZGVudCkKK3N0YXRpYyB2b2lkIGluZGVudCh2 b2lkKQogewogICAgIHN0cmluZ190eXBlIG91dDsKICAgICBpbnQgdGFiID0gMDsKQEAgLTkyNSw2 MyArNzYxLDU2IEBAIFdPUkQoaW5kZW50KQogICAgIGludCBvbCA9MDsKICAgICBpbml0X3N0cmlu Zygmb3V0KTsKICAgICB3aGlsZSAoYXQodG9zLGlkeCkpIHsKLQkgICAgc3dpdGNoIChhdCh0b3Ms aWR4KSkgCi0JICAgIHsKLQkgICAgICBjYXNlICdcbic6Ci0JCWNhdHRleHQoJm91dCwiXG4iKTsK LQkJaWR4Kys7Ci0JCWlmICh0YWIpIAotCQl7Ci0JCSAgICBjYXR0ZXh0KCZvdXQsIiAgICAiKTsK LQkJfQotCQlvbCA9IDA7Ci0JCWJyZWFrOwotCSAgICAgIGNhc2UgJygnOgotCQl0YWIrKzsKLQkJ aWYgKG9sID09IDApCi0JCSAgICBjYXR0ZXh0KCZvdXQsIiAgICIpOwotCQlpZHgrKzsKLQkJY2F0 dGV4dCgmb3V0LCIoIik7Ci0JCW9sID0gMTsKLQkJYnJlYWs7Ci0JICAgICAgY2FzZSAnKSc6Ci0J CXRhYi0tOwotCQljYXR0ZXh0KCZvdXQsIikiKTsKLQkJaWR4Kys7Ci0JCW9sPTE7Ci0JCQotCQli cmVhazsKLQkgICAgICBkZWZhdWx0OgotCQljYXRjaGFyKCZvdXQsYXQodG9zLGlkeCkpOwotCQlv bD0xOwotCQkKLQkJaWR4Kys7Ci0JCWJyZWFrOwotCSAgICB9Ci0JfQkKKwlzd2l0Y2ggKGF0KHRv cyxpZHgpKSAKKwl7CisJY2FzZSAnXG4nOgorCSAgICBjYXR0ZXh0KCZvdXQsIlxuIik7CisJICAg IGlkeCsrOworCSAgICBpZiAodGFiKQorCQljYXR0ZXh0KCZvdXQsIiAgICAiKTsKKwkgICAgb2wg PSAwOworCSAgICBicmVhazsKKwljYXNlICcoJzoKKwkgICAgdGFiKys7CisJICAgIGlmIChvbCA9 PSAwKQorCQljYXR0ZXh0KCZvdXQsIiAgICIpOworCSAgICBpZHgrKzsKKwkgICAgY2F0dGV4dCgm b3V0LCIoIik7CisJICAgIG9sID0gMTsKKwkgICAgYnJlYWs7CisJY2FzZSAnKSc6CisJICAgIHRh Yi0tOworCSAgICBjYXR0ZXh0KCZvdXQsIikiKTsKKwkgICAgaWR4Kys7CisJICAgIG9sPTE7CisJ ICAgIGJyZWFrOworCWRlZmF1bHQ6CisJICAgIGNhdGNoYXIoJm91dCxhdCh0b3MsaWR4KSk7CisJ ICAgIG9sPTE7CisJICAgIGlkeCsrOworCSAgICBicmVhazsKKwl9CisgICAgfQogCiAgICAgcGMr KzsKICAgICBkZWxldGVfc3RyaW5nKHRvcyk7CiAgICAgKnRvcyA9IG91dDsKLQogfQogCiAvKiBD aGFuZ2UgdGhlIFRPUyBzbyB0aGF0IGFsbCB0aGF0IGlzIGxlZnQgaXMgdGhlIHN0dWZmIGluc2lk ZSB0aGUKLSBmaXJzdCA8PGZvbz4+IC4KKyAgIGZpcnN0IDw8Zm9vPj4KICovCi0KLVdPUkQoZ2V0 X3N0dWZmX2luX2FuZ2xlKQorc3RhdGljIHZvaWQgZ2V0X3N0dWZmX2luX2FuZ2xlKHZvaWQpCiB7 CiAgIHVuc2lnbmVkIGludCBpZHggPSAwOwogICBzdHJpbmdfdHlwZSBvdXQ7CiAgIGluaXRfc3Ry aW5nKCZvdXQpOwotICAgIAotICB3aGlsZSAoYXQodG9zLCBpZHgpKSAKKworICB3aGlsZSAoYXQo dG9zLGlkeCkpCiAgICAgewotICAgICAgaWYgKGF0KHRvcyxpZHgpID09ICc8JyAmJiBhdCh0b3Ms aWR4KzEpID09JzwnKSAKKyAgICAgIGlmIChhdCh0b3MsaWR4KSA9PSAnPCcgJiYgYXQodG9zLGlk eCsxKSA9PSc8JykKIAl7Ci0JICBpZHgrPTI7Ci0JICAKKwkgIGlkeCArPSAyOwogCSAgd2hpbGUg KCEoYXQodG9zLGlkeCkgPT0gJz4nICYmIGF0KHRvcyxpZHgrMSkgPT0gJz4nKSkKIAkgICAgewog CSAgICAgIGNhdGNoYXIoJm91dCwgYXQodG9zLCBpZHgpKTsKQEAgLTk5NCwyMTkgKzgyMywxODYg QEAgV09SRChnZXRfc3R1ZmZfaW5fYW5nbGUpCiAjaWYgMAogICBjYXRjaGFyKCZvdXQsJ1xuJyk7 CiAjZW5kaWYKLSAgCisKICAgb3ZlcndyaXRlX3N0cmluZyh0b3MsICZvdXQpOwogICBwYysrOwog fQogCi0KLVdPUkQoZ2V0X3N0dWZmX2luX2NvbW1hbmQpCitzdGF0aWMgdm9pZCBnZXRfc3R1ZmZf aW5fY29tbWFuZCh2b2lkKQogewogICB0b3MrKzsKICAgaW5pdF9zdHJpbmcodG9zKTsKIAotICB3 aGlsZSAoYXQocHRyLCBpZHgpKSB7Ci0gICAgaWYgKGlzY29tbWFuZChwdHIsIGlkeCkpICBicmVh azsKLSAgICBpZHggPSAgIGNvcHlfcGFzdF9uZXdsaW5lKHB0ciwgaWR4LCB0b3MpOworICB3aGls ZSAoYXQocHRyLHBvcykpIHsKKyAgICBpZiAoaXNjb21tYW5kKHB0cixwb3MpKQorCWJyZWFrOwor ICAgIHBvcyA9IGNvcHlfcGFzdF9uZXdsaW5lKHB0ciwgcG9zLCB0b3MpOwogICB9Ci0gIHBjKys7 ICAgIAorICBwYysrOwogfQogCi1XT1JEKHN3YXApCitzdGF0aWMgdm9pZCBzd2FwKHZvaWQpCiB7 CiAgICAgc3RyaW5nX3R5cGUgdDsKLSAgICAKKwogICAgIHQgPSB0b3NbMF07CiAgICAgdG9zWzBd ID0gdG9zWy0xXTsKLSAgICB0b3NbLTFdID10OyAKKyAgICB0b3NbLTFdID0gdDsKICAgICBwYysr OwotICAgIAogfQogCi1XT1JEKGR1cGxpY2F0ZSkKK3N0YXRpYyB2b2lkIGR1cGxpY2F0ZSh2b2lk KQogewogICAgIHRvcysrOwogICAgIGluaXRfc3RyaW5nKHRvcyk7CiAgICAgY2F0c3RyKHRvcywg dG9zLTEpOwogICAgIHBjKys7Ci0gICAgCiB9CiAKLQotCi1XT1JEKGljYXRzdHIpCitzdGF0aWMg dm9pZCBpY2F0c3RyKHZvaWQpCiB7CiAgICAgY2F0c3RyKHRvcy0xLCB0b3MpOwogICAgIGRlbGV0 ZV9zdHJpbmcodG9zKTsKICAgICB0b3MtLTsKICAgICBwYysrOwotICAgIAogfQogCi1XT1JEKHNr aXBfcGFzdF9uZXdsaW5lKQorc3RhdGljIHZvaWQgc2tpcF9wYXN0X25ld2xpbmUodm9pZCkKIHsK LSAgICB3aGlsZSAoYXQocHRyLGlkeCkgCi0JICAgJiYgYXQocHRyLGlkeCkgIT0gJ1xuJykKLSAg ICAgaWR4Kys7Ci0gICAgaWR4Kys7CisgICAgd2hpbGUgKGF0KHB0cixwb3MpICYmCisJICAgYXQo cHRyLHBvcykgIT0gJ1xuJykKKwlwb3MrKzsKKworICAgIHBvcysrOwogICAgIHBjKys7CiB9CiAK LQotV09SRChpbnRlcm5hbG1vZGUpCitzdGF0aWMgdm9pZCBpbnRlcm5hbG1vZGUodm9pZCkKIHsK ICAgICBpbnRlcm5hbF9tb2RlID0gKihpc3ApOwogICAgIGlzcC0tOwogICAgIHBjKys7CiB9CiAK LVdPUkQobWF5YmVjYXRzdHIpCitzdGF0aWMgdm9pZCBtYXliZWNhdHN0cih2b2lkKQogewotICAg IGlmIChpbnRlcm5hbF93YW50ZWQgPT0gaW50ZXJuYWxfbW9kZSkgCisgICAgaWYgKGludGVybmFs X3dhbnRlZCA9PSBpbnRlcm5hbF9tb2RlKQogICAgIHsKIAljYXRzdHIodG9zLTEsIHRvcyk7CiAg ICAgfQogICAgIGRlbGV0ZV9zdHJpbmcodG9zKTsKICAgICB0b3MtLTsKICAgICBwYysrOwotICAg IAogfQogCi1jaGFyICoKLURFRlVOKG5leHR3b3JkLChzdHJpbmcsIHdvcmQpLAotICAgICAgY2hh ciAqc3RyaW5nIEFORAotICAgICAgY2hhciAqKndvcmQpCitzdGF0aWMgY2hhciAqbmV4dHdvcmQo Y2hhciAqc3RyaW5nLCBjaGFyICoqd29yZCkKIHsKICAgY2hhciAqd29yZF9zdGFydDsKICAgaW50 IGlkeDsKICAgY2hhciAqZHN0OwogICBjaGFyICpzcmM7Ci0gICAgCiAgIGludCBsZW5ndGggPSAw OwotICAgIAorCiAgIHdoaWxlIChpc3NwYWNlKCpzdHJpbmcpIHx8ICpzdHJpbmcgPT0gJy0nKSB7 Ci0gICAgICBpZiAoKnN0cmluZyA9PSAnLScpIAorICAgICAgaWYgKCpzdHJpbmcgPT0gJy0nKQog ICAgICAgewotCXdoaWxlICgqc3RyaW5nICYmICpzdHJpbmcgIT0gJ1xuJykgCi0JIHN0cmluZysr OwotCQkKKwl3aGlsZSAoKnN0cmluZyAmJiAqc3RyaW5nICE9ICdcbicpCisJICBzdHJpbmcrKzsK ICAgICAgIH0KICAgICAgIGVsc2UgewogCSAgc3RyaW5nKys7Ci0JfQotICAgIH0KLSAgaWYgKCEq c3RyaW5nKSByZXR1cm4gMDsKLSAgICAKLSAgd29yZF9zdGFydCA9IHN0cmluZzsgICAgCQotICBp ZiAoKnN0cmluZyA9PSAnIicpIAorICAgICAgfQorICB9CisgIGlmICghKnN0cmluZykgcmV0dXJu IE5VTEw7CisKKyAgd29yZF9zdGFydCA9IHN0cmluZzsKKyAgaWYgKCpzdHJpbmcgPT0gJyInKQog ICB7CiAgICAgc3RyaW5nKys7CiAgICAgbGVuZ3RoKys7Ci0JCi0gICAgd2hpbGUgKCpzdHJpbmcg IT0gJyInKSAKKworICAgIHdoaWxlICgqc3RyaW5nICE9ICciJykKICAgICB7CiAgICAgICBzdHJp bmcrKzsKICAgICAgIGxlbmd0aCsrOwogICAgIH0KICAgfQotICBlbHNlICAgICAKKyAgZWxzZQog ICB7Ci0JCi0KLSAgICB3aGlsZSAoIWlzc3BhY2UoKnN0cmluZykpIAorICAgIHdoaWxlICghaXNz cGFjZSgqc3RyaW5nKSkKICAgICB7CiAgICAgICBzdHJpbmcrKzsKICAgICAgIGxlbmd0aCsrOwog ICAgIH0KICAgfQotICAgIAorCiAgICp3b3JkID0gbWFsbG9jKGxlbmd0aCArIDEpOwogCiAgIGRz dCA9ICp3b3JkOwogICBzcmMgPSB3b3JkX3N0YXJ0OwogCi0KLSAgZm9yIChpZHg9IDA7IGlkeCA8 IGxlbmd0aDsgaWR4KyspIAorICBmb3IgKGlkeD0gMDsgaWR4IDwgbGVuZ3RoOyBpZHgrKykKICAg ewotICAgIAotICAgIGlmIChzcmNbaWR4XSA9PSAnXFwnICYmIHNyY1tpZHgrMV0gPT0gJ24nKSAK KyAgICBpZiAoc3JjW2lkeF0gPT0gJ1xcJyAmJiBzcmNbaWR4KzFdID09ICduJykKICAgICB7CiAg ICAgICAqZHN0KysgPSAnXG4nOwogICAgICAgaWR4Kys7Ci0gICAgCiAgICAgfQogICAgIGVsc2Ug KmRzdCsrID0gc3JjW2lkeF07CiAgIH0KICAgKmRzdCsrID0gMDsKIAorICBpZigqc3RyaW5nKQor ICAgICByZXR1cm4gc3RyaW5nICsgMTsKKyAgZWxzZQorICAgICByZXR1cm4gTlVMTDsKK30KIAog CitzdGF0aWMgZGljdF90eXBlICpyb290OwogCi0KLSAgaWYoKnN0cmluZykgICAgCi0gICByZXR1 cm4gc3RyaW5nICsgMTsKLSAgZWxzZSAKLSAgIHJldHVybiAwOwotICAgIAotfQotZGljdF90eXBl ICpyb290OwotZGljdF90eXBlICoKLURFRlVOKGxvb2t1cF93b3JkLCh3b3JkKSwKLSAgICAgIGNo YXIgKndvcmQpCi17Ci0gICAgZGljdF90eXBlICpwdHIgPSByb290OwotICAgIHdoaWxlIChwdHIp IHsKLQkgICAgaWYgKHN0cmNtcChwdHItPndvcmQsIHdvcmQpID09IDApIHJldHVybiBwdHI7Ci0J ICAgIHB0ciA9IHB0ci0+bmV4dDsKLQkgICAgCi0JIH0KK3N0YXRpYyBkaWN0X3R5cGUgKmxvb2t1 cF93b3JkKGNvbnN0IGNoYXIgKndvcmQpCit7CisgICAgZGljdF90eXBlICpkID0gcm9vdDsKKyAg ICB3aGlsZSAoZCkgeworCWlmIChzdHJjbXAoZC0+d29yZCwgd29yZCkgPT0gMCkKKwkgICAgcmV0 dXJuIGQ7CisJZCA9IGQtPm5leHQ7CisgICAgfQogICAgIGZwcmludGYoc3RkZXJyLCJDYW4ndCBm aW5kICVzXG4iLHdvcmQpOwogICAgIHJldHVybiAwOwotICAgIAotICAgIAogfQogCi1zdGF0aWMg dm9pZCBERUZVTl9WT0lEKHBlcmZvcm0pCitzdGF0aWMgdm9pZCBwZXJmb3JtKHZvaWQpCiB7CiAg ICAgdG9zID0gc3RhY2s7Ci0gICAgCi0gICAgd2hpbGUgKGF0KHB0ciwgaWR4KSkgewotCSAgICAv KiBJdCdzIHdvcnRoIGxvb2tpbmcgdGhyb3VnaCB0aGUgY29tbWFuZCBsaXN0ICovCi0JICAgIGlm IChpc2NvbW1hbmQocHRyLCBpZHgpKQotCSAgICB7Ci0JCXVuc2lnbmVkIGludCBpOwotCQlpbnQg Zm91bmQgPSAwOwotCi0JCWNoYXIgKm5leHQ7Ci0JCWRpY3RfdHlwZSAqd29yZCA7Ci0JCQotCQko dm9pZCkJCW5leHR3b3JkKGFkZHIocHRyLCBpZHgpLCAmbmV4dCk7Ci0KLQotCQl3b3JkID0gbG9v a3VwX3dvcmQobmV4dCk7CiAKKyAgICB3aGlsZSAoYXQocHRyLHBvcykpIHsKKwkvKiBJdCdzIHdv cnRoIGxvb2tpbmcgdGhyb3VnaCB0aGUgY29tbWFuZCBsaXN0ICovCisJaWYgKGlzY29tbWFuZChw dHIscG9zKSkKKwl7CisJICAgIGNoYXIgKm5leHQ7CisJICAgIGRpY3RfdHlwZSAqd29yZCA7CiAK LQkJCisJICAgICh2b2lkKSBuZXh0d29yZChhZGRyKHB0ciwgcG9zKSwgJm5leHQpOworCSAgICB3 b3JkID0gbG9va3VwX3dvcmQobmV4dCk7CiAKLQkJaWYgKHdvcmQpIAotCQl7Ci0JCSAgICBleGVj KHdvcmQpOwotCQl9Ci0JCWVsc2UKLQkJewotCQkgICAgZnByaW50ZihzdGRlcnIsIndhcm5pbmcs ICVzIGlzIG5vdCByZWNvZ25pc2VkXG4iLCAgbmV4dCk7Ci0JCSAgICBza2lwX3Bhc3RfbmV3bGlu ZSgpOwotCQl9Ci0JCQorCSAgICBpZiAod29yZCkKKwkgICAgeworCQlleGVjKHdvcmQpOworCSAg ICB9CisJICAgIGVsc2UKKwkgICAgeworCQlmcHJpbnRmKHN0ZGVyciwid2FybmluZywgJXMgaXMg bm90IHJlY29nbmlzZWRcbiIsIG5leHQpOworCQlza2lwX3Bhc3RfbmV3bGluZSgpOwogCSAgICB9 Ci0JICAgIGVsc2Ugc2tpcF9wYXN0X25ld2xpbmUoKTsKLQogCX0KKwllbHNlCisJICAgIHNraXBf cGFzdF9uZXdsaW5lKCk7CisgICAgfQogfQogCi1kaWN0X3R5cGUgKgotREVGVU4obmV3ZW50cnks KHdvcmQpLAotICAgICAgY2hhciAqd29yZCkKK3N0YXRpYyBkaWN0X3R5cGUgKm5ld2VudHJ5KGNo YXIgKndvcmQpCiB7CiAgICAgZGljdF90eXBlICpuZXcgPSAoZGljdF90eXBlICopbWFsbG9jKHNp emVvZihkaWN0X3R5cGUpKTsKICAgICBuZXctPndvcmQgPSB3b3JkOwpAQCAtMTIxNiwxNCArMTAx Miw5IEBAIERFRlVOKG5ld2VudHJ5LCh3b3JkKSwKICAgICBuZXctPmNvZGVfbGVuZ3RoID0gMTsK ICAgICBuZXctPmNvZGVfZW5kID0gMDsKICAgICByZXR1cm4gbmV3OwotICAgIAogfQogCi0KLXVu c2lnbmVkIGludAotREVGVU4oYWRkX3RvX2RlZmluaXRpb24sKGVudHJ5LCB3b3JkKSwgCi0gICAg ICBkaWN0X3R5cGUgKmVudHJ5IEFORAotICAgICAgc3RpbnN0X3R5cGUgd29yZCkKK3N0YXRpYyB1 bnNpZ25lZCBpbnQgYWRkX3RvX2RlZmluaXRpb24oZGljdF90eXBlICplbnRyeSwgc3RpbnN0X3R5 cGUgd29yZCkKIHsKICAgICBpZiAoZW50cnktPmNvZGVfZW5kID09IGVudHJ5LT5jb2RlX2xlbmd0 aCkgCiAgICAgewpAQCAtMTIzMywxODYgKzEwMjQsMTQ1IEBAIERFRlVOKGFkZF90b19kZWZpbml0 aW9uLChlbnRyeSwgd29yZCksIAogCQkJICAgICAgIGVudHJ5LT5jb2RlX2xlbmd0aCAqc2l6ZW9m KHdvcmRfdHlwZSkpOwogICAgIH0KICAgICBlbnRyeS0+Y29kZVtlbnRyeS0+Y29kZV9lbmRdID0g d29yZDsKLSAgICAKLXJldHVybiAgICAgZW50cnktPmNvZGVfZW5kKys7ICAKLX0KLQotCi0KLQot CiAKKyAgICByZXR1cm4gZW50cnktPmNvZGVfZW5kKys7Cit9CiAKLXZvaWQKLURFRlVOKGFkZF9p bnRyaW5zaWMsKG5hbWUsIGZ1bmMpLAotICAgICAgY2hhciAqbmFtZSBBTkQKLSAgICAgIHZvaWQg KCpmdW5jKSgpKQorc3RhdGljIHZvaWQgYWRkX2ludHJpbnNpYyhjaGFyICpuYW1lLCB2b2lkICgq ZnVuYykoKSkKIHsKICAgICBkaWN0X3R5cGUgKm5ldyA9IG5ld2VudHJ5KG5hbWUpOwogICAgIGFk ZF90b19kZWZpbml0aW9uKG5ldywgZnVuYyk7CiAgICAgYWRkX3RvX2RlZmluaXRpb24obmV3LCAw KTsKIH0KIAotV09SRChwdXNoX2FkZHIpCi17Ci0gICAgCi0KLX0KLQotdm9pZAotREVGVU4oYWRk X3ZhciwobmFtZSksCi0gICAgICBjaGFyICpuYW1lKQorc3RhdGljIHZvaWQgYWRkX3ZhcihjaGFy ICpuYW1lKQogewogICAgIGRpY3RfdHlwZSAqbmV3ID0gbmV3ZW50cnkobmFtZSk7CiAgICAgYWRk X3RvX2RlZmluaXRpb24obmV3LCBwdXNoX251bWJlcik7CiAgICAgYWRkX3RvX2RlZmluaXRpb24o bmV3LCAoc3RpbnN0X3R5cGUpKCYobmV3LT52YXIpKSk7CiAgICAgYWRkX3RvX2RlZmluaXRpb24o bmV3LDApOwotICAgIAogfQotICAgICAgCi0KLQotCi12b2lkIAotREVGVU4oY29tcGlsZSwgKHN0 cmluZyksIAotICAgICAgY2hhciAqc3RyaW5nKQogCitzdGF0aWMgdm9pZCBjb21waWxlKGNoYXIg KnN0cmluZykKIHsKLSAgICBpbnQganN0YWNrW1NUQUNLXTsKLSAgICBpbnQgKmpwdHIgPSBqc3Rh Y2s7CiAgICAgLyogYWRkIHdvcmRzIHRvIHRoZSBkaWN0aW9uYXJ5ICovCiAgICAgY2hhciAqd29y ZDsKICAgICBzdHJpbmcgPSBuZXh0d29yZChzdHJpbmcsICZ3b3JkKTsKLSAgICB3aGlsZSAoc3Ry aW5nICYmICpzdHJpbmcgJiYgd29yZFswXSkgCisgICAgd2hpbGUgKHN0cmluZyAmJiAqc3RyaW5n ICYmIHdvcmRbMF0pCiAgICAgewogCWlmIChzdHJjbXAod29yZCwidmFyIik9PTApIAogCXsKLSBz dHJpbmc9bmV4dHdvcmQoc3RyaW5nLCAmd29yZCk7Ci0JICAKKwkgIHN0cmluZz1uZXh0d29yZChz dHJpbmcsICZ3b3JkKTsKIAkgIGFkZF92YXIod29yZCk7Ci0gc3RyaW5nPW5leHR3b3JkKHN0cmlu ZywgJndvcmQpOworCSAgc3RyaW5nPW5leHR3b3JkKHN0cmluZywgJndvcmQpOwogCX0KLWVsc2UJ Ci0JICAgIAorCWVsc2UKIAlpZiAod29yZFswXSA9PSAnOicpCiAJewotCSAgICBkaWN0X3R5cGUg KnB0cjsKKwkgICAgZGljdF90eXBlICpkOwogCSAgICAvKiBDb21waWxlIGEgd29yZCBhbmQgYWRk IHRvIGRpY3Rpb25hcnkgKi8KIAkgICAgc3RyaW5nID0gbmV4dHdvcmQoc3RyaW5nLCAmd29yZCk7 Ci0JICAgIAotCSAgICBwdHIgPSBuZXdlbnRyeSh3b3JkKTsKKworCSAgICBkID0gbmV3ZW50cnko d29yZCk7CiAJICAgIHN0cmluZyA9IG5leHR3b3JkKHN0cmluZywgJndvcmQpOwogCSAgICB3aGls ZSAod29yZFswXSAhPSAnOycgKSAKIAkgICAgewotCQkgc3dpdGNoICh3b3JkWzBdKSAKLQkJIHsK LQkJICAgIAotCQkgICAgCi0JCSAgIGNhc2UgJyInOgotCQkgICAgIC8qIGdvdCBhIHN0cmluZywg ZW1iZWQgbWFnaWMgcHVzaCBzdHJpbmcKKwkJc3dpdGNoICh3b3JkWzBdKQorCQl7CisJCWNhc2Ug JyInOgorCQkgICAgLyogZ290IGEgc3RyaW5nLCBlbWJlZCBtYWdpYyBwdXNoIHN0cmluZwogCQkJ ZnVuY3Rpb24gKi8KLQkJICAgICBhZGRfdG9fZGVmaW5pdGlvbihwdHIsIHB1c2hfdGV4dCk7Ci0J CSAgICAgYWRkX3RvX2RlZmluaXRpb24ocHRyLCAoc3RpbnN0X3R5cGUpKHdvcmQrMSkpOwotCQkg ICAgIGJyZWFrOwotCQkgICBjYXNlICcwJzoKLQkJICAgY2FzZSAnMSc6Ci0JCSAgIGNhc2UgJzIn OgotCQkgICBjYXNlICczJzoKLQkJICAgY2FzZSAnNCc6Ci0JCSAgIGNhc2UgJzUnOgotCQkgICBj YXNlICc2JzoKLQkJICAgY2FzZSAnNyc6Ci0JCSAgIGNhc2UgJzgnOgotCQkgICBjYXNlICc5JzoK LQkJICAgICAvKiBHb3QgYSBudW1iZXIsIGVtYmVkZCB0aGUgbWFnaWMgcHVzaCBudW1iZXIKKwkJ ICAgIGFkZF90b19kZWZpbml0aW9uKGQsIHB1c2hfdGV4dCk7CisJCSAgICBhZGRfdG9fZGVmaW5p dGlvbihkLCAoc3RpbnN0X3R5cGUpKHdvcmQrMSkpOworCQkgICAgYnJlYWs7CisJCWNhc2UgJzAn OgorCQljYXNlICcxJzoKKwkJY2FzZSAnMic6CisJCWNhc2UgJzMnOgorCQljYXNlICc0JzoKKwkJ Y2FzZSAnNSc6CisJCWNhc2UgJzYnOgorCQljYXNlICc3JzoKKwkJY2FzZSAnOCc6CisJCWNhc2Ug JzknOgorCQkgICAgLyogR290IGEgbnVtYmVyLCBlbWJlZGQgdGhlIG1hZ2ljIHB1c2ggbnVtYmVy CiAJCQlmdW5jdGlvbiAqLwotCQkgICAgIGFkZF90b19kZWZpbml0aW9uKHB0ciwgcHVzaF9udW1i ZXIpOwotCQkgICAgIGFkZF90b19kZWZpbml0aW9uKHB0ciwgKHN0aW5zdF90eXBlKWF0b2wod29y ZCkpOwotCQkgICAgIGJyZWFrOwotCQkgICBkZWZhdWx0OgotCQkgICAgIGFkZF90b19kZWZpbml0 aW9uKHB0ciwgY2FsbCk7Ci0JCSAgICAgYWRkX3RvX2RlZmluaXRpb24ocHRyLCAoc3RpbnN0X3R5 cGUpbG9va3VwX3dvcmQod29yZCkpOwotCQkgfQorCQkgICAgYWRkX3RvX2RlZmluaXRpb24oZCwg cHVzaF9udW1iZXIpOworCQkgICAgYWRkX3RvX2RlZmluaXRpb24oZCwgKHN0aW5zdF90eXBlKShp bnRwKWF0b2wod29yZCkpOworCQkgICAgYnJlYWs7CisJCWRlZmF1bHQ6CisJCSAgICBhZGRfdG9f ZGVmaW5pdGlvbihkLCBjYWxsKTsKKwkJICAgIGFkZF90b19kZWZpbml0aW9uKGQsIChzdGluc3Rf dHlwZSlsb29rdXBfd29yZCh3b3JkKSk7CisJCX0KIAotCQlzdHJpbmcgPSBuZXh0d29yZChzdHJp bmcsICZ3b3JkKTsJCSAgICAgCisJCXN0cmluZyA9IG5leHR3b3JkKHN0cmluZywgJndvcmQpOwog CSAgICB9Ci0JICAgIGFkZF90b19kZWZpbml0aW9uKHB0ciwwKTsKKwkgICAgYWRkX3RvX2RlZmlu aXRpb24oZCwwKTsKIAkgICAgc3RyaW5nID0gbmV4dHdvcmQoc3RyaW5nLCAmd29yZCk7CiAJfQot CWVsc2UgCisJZWxzZQogCXsKIAkgICAgZnByaW50ZihzdGRlcnIsInN5bnRheCBlcnJvciBhdCAl c1xuIixzdHJpbmctMSk7Ci0JfQkgICAgCisJfQogICAgIH0KLQogfQogCi0gCi1zdGF0aWMgdm9p ZCBERUZVTl9WT0lEKGJhbmcpCi17Ci0qKGludHAgKikoKGlzcFswXSkpID0gaXNwWy0xXTsKLWlz cC09MjsKLXBjKys7CiAKK3N0YXRpYyB2b2lkIGJhbmcodm9pZCkKK3sKKyAgICAqKGludHAgKiko KGlzcFswXSkpID0gaXNwWy0xXTsKKyAgICBpc3AtPTI7CisgICAgcGMrKzsKIH0KIAotV09SRChh dHNpZ24pCitzdGF0aWMgdm9pZCBhdHNpZ24odm9pZCkKIHsKICAgICBpc3BbMF0gPSAqKGludHAg KikoaXNwWzBdKTsKICAgICBwYysrOwogfQogCi1XT1JEKGhlbGxvKQorc3RhdGljIHZvaWQgaGVs bG8odm9pZCkKIHsKLSAgICAKICAgICBwcmludGYoImhlbGxvXG4iKTsKLSAgICBwYysrOyAgICAK KyAgICBwYysrOwogfQogCi0KLQotc3RhdGljIHZvaWQgREVGVU4ocmVhZF9pbiwgKHN0ciwgZmls ZSksIAotCSAgIHN0cmluZ190eXBlICpzdHIgQU5ECi0JCSAgRklMRSAqZmlsZSkKK3N0YXRpYyB2 b2lkIHJlYWRfaW4oc3RyaW5nX3R5cGUgKnN0ciwgRklMRSAqZmlsZSkKIHsKLSAgICBjaGFyIGJ1 ZmZbMTAwMDBdOyAgICAKKyAgICBjaGFyIGJ1ZmZbMTAwMDBdOwogICAgIHVuc2lnbmVkIGludCBy OwotICAgIGRvIAorCisgICAgZG8KICAgICB7CiAJciA9IGZyZWFkKGJ1ZmYsIDEsIHNpemVvZihi dWZmKSwgZmlsZSk7CiAJY2F0YnVmKHN0ciwgYnVmZiwgcik7CiAgICAgfQogICAgIHdoaWxlIChy KTsKICAgICBidWZmWzBdID0gMDsKLSAgICAKKwogICAgIGNhdGJ1ZihzdHIsIGJ1ZmYsMSk7Ci0g ICAgCiB9CiAKIAotc3RhdGljIHZvaWQgREVGVU5fVk9JRCh1c2FnZSkKK3N0YXRpYyB2b2lkIHVz YWdlKHZvaWQpCiB7CiAgICAgZnByaW50ZihzdGRlcnIsInVzYWdlOiAtW2R8aXxnXSA8ZmlsZSA+ ZmlsZVxuIik7Ci0gICAgZXhpdCgzMyk7ICAgIAorICAgIGV4aXQoMzMpOwogfQogCi1pbnQgREVG VU4obWFpbiwoYWMsYXYpLAotaW50IGFjIEFORAotY2hhciAqYXZbXSkKK2ludCBtYWluKGludCBh YywgY2hhciAqYXZbXSkKIHsKICAgICB1bnNpZ25lZCBpbnQgaTsKLSAgICAKLQorICAgIGludCBl cnJfZmQ7CiAgICAgc3RyaW5nX3R5cGUgYnVmZmVyOwogICAgIHN0cmluZ190eXBlIHBwdHI7Ci0g ICAgCiAKICAgICBpbml0X3N0cmluZygmYnVmZmVyKTsKICAgICBpbml0X3N0cmluZygmcHB0cik7 CiAgICAgaW5pdF9zdHJpbmcoc3RhY2srMCk7CiAgICAgdG9zPXN0YWNrKzE7CiAgICAgcHRyID0g JnBwdHI7Ci0gICAgCisKICAgICBhZGRfaW50cmluc2ljKCJwdXNoX3RleHQiLCBwdXNoX3RleHQp OwogICAgIGFkZF9pbnRyaW5zaWMoIiEiLCBiYW5nKTsKICAgICBhZGRfaW50cmluc2ljKCJAIiwg YXRzaWduKTsKQEAgLTE0MzYsNTYgKzExODYsNjMgQEAgY2hhciAqYXZbXSkKICAgICBhZGRfaW50 cmluc2ljKCJpbmRlbnQiLCBpbmRlbnQpOwogICAgIGFkZF9pbnRyaW5zaWMoInF1aWNrcmVmIiwg cXVpY2tyZWYpOwogICAgIGFkZF9pbnRyaW5zaWMoImludGVybmFsbW9kZSIsIGludGVybmFsbW9k ZSk7Ci0gICAgCisKICAgICAvKiBQdXQgYSBubCBhdCB0aGUgc3RhcnQgKi8KICAgICBjYXRjaGFy KCZidWZmZXIsJ1xuJyk7CiAKLSAgICBmb3IgKGk9IDE7IGkgPCBhYzsgaSsrKSAKKyAgICBmb3Ig KGkgPSAxOyBpIDwgYWM7IGkrKykKICAgICB7CiAgICAgICBpZiAoYXZbaV1bMF0gPT0gJy0nICYm IGF2W2ldWzFdID09ICdlJykKICAgICAgIHsKLQlpbnQgZXJyX2ZkID0gb3BlbiAoYXZbaSsxXSwg T19XUk9OTFl8T19DUkVBVHxPX1RSVU5DLCAwNjY2KTsKLQotCWlmIChlcnJfZmQgPCAwIHx8IGR1 cDIgKGVycl9mZCwgMikgPT0gLTEpCi0JICBmcHJpbnRmIChzdGRlcnIsICJDYW4ndCByZWRpcmVj dCBzdGRlcnIgdG8gJXNcbiIsIGF2W2krMV0pOworCWlmICgrK2kgPT0gYWMpIHVzYWdlKCk7CisJ ZXJyX2ZkID0gb3BlbiAoYXZbaV0sIE9fV1JPTkxZfE9fQ1JFQVR8T19UUlVOQywgMDY2Nik7CisJ aWYgKGVycl9mZCA8IDAgfHwgZHVwMihlcnJfZmQsMikgPT0gLTEpCisJICAgIGZwcmludGYgKHN0 ZGVyciwgIkNhbid0IHJlZGlyZWN0IHN0ZGVyciB0byAlc1xuIiwgYXZbaV0pOwogCWlmIChlcnJf ZmQgPiAwKQotCSAgY2xvc2UgKGVycl9mZCk7CisJICAgIGNsb3NlIChlcnJfZmQpOwogICAgICAg fQogICAgIH0KLSAgICByZWFkX2luKCZidWZmZXIsIHN0ZGluKTsgCisKKyAgICByZWFkX2luKCZi dWZmZXIsIHN0ZGluKTsKICAgICByZW1vdmVfbm9uY29tbWVudHMoJmJ1ZmZlciwgcHRyKTsKLSAg ICBmb3IgKGk9IDE7IGkgPCBhYzsgaSsrKSAKKworICAgIGZvciAoaSA9IDE7IGkgPCBhYzsgaSsr KQogICAgIHsKIAlpZiAoYXZbaV1bMF0gPT0gJy0nKQogCXsKLQkgICAgaWYgKGF2W2ldWzFdID09 ICdmJykKKwkgICAgaWYgKGF2W2ldWzFdID09ICdlJykKKwkgICAgeworCQkrK2k7IC8qIGhhbmRs ZWQgYWJvdmUgKi8KKwkgICAgfQorCSAgICBlbHNlIGlmIChhdltpXVsxXSA9PSAnZicpCiAJICAg IHsKIAkJc3RyaW5nX3R5cGUgYjsKIAkJRklMRSAqZjsKLQkJaW5pdF9zdHJpbmcoJmIpOwogCi0J CWYgID0gZm9wZW4oYXZbaSsxXSwiciIpOworCQlpZiAoKytpID09IGFjKSB1c2FnZSgpOworCisJ CWluaXRfc3RyaW5nKCZiKTsKKwkJZiAgPSBmb3BlbihhdltpXSwiciIpOwogCQlpZiAoIWYpIAog CQl7Ci0JCSAgZnByaW50ZihzdGRlcnIsIkNhbid0IG9wZW4gdGhlIGlucHV0IGZpbGUgJXNcbiIs YXZbaSsxXSk7CisJCSAgZnByaW50ZihzdGRlcnIsIkNhbid0IG9wZW4gdGhlIGlucHV0IGZpbGUg JXNcbiIsYXZbaV0pOwogCQkgIHJldHVybiAzMzsKIAkJfQotCQkKLQkJICAKIAkJcmVhZF9pbigm YiwgZik7CiAJCWNvbXBpbGUoYi5wdHIpOwotCQlwZXJmb3JtKCk7CQorCQlwZXJmb3JtKCk7CiAJ ICAgIH0KLQkgICAgZWxzZSBpZiAoYXZbaV1bMV0gPT0gJ2knKSAKKwkgICAgZWxzZSBpZiAoYXZb aV1bMV0gPT0gJ2knKQogCSAgICB7CiAJCWludGVybmFsX3dhbnRlZCA9IDE7CiAJICAgIH0KKwkg ICAgZWxzZQorCSAgICB7CisJCXVzYWdlKCk7CisJICAgIH0KIAl9CisgICAgfQogCi0gICAgfSAg ICAgIAogICAgIHdyaXRlX2J1ZmZlcihzdGFjayswKTsKICAgICByZXR1cm4gMDsKIH0KLQotCi0K --90e6ba614ed2a3d1640515a49626 Content-Type: application/octet-stream; name="006-bin2h.c-no-basename.patch" Content-Disposition: attachment; filename="006-bin2h.c-no-basename.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: file6 c3JjL3V0aWxzL2JpbjJoLmM6IHJlbW92ZSBiYXNlbmFtZSgpIGRlcGVuZGVuY3kgYW5kIHJlcG9y dCB0aGUgZXhlCm5hbWUgc2ltcGx5IGFzICdiaW4yaCcsIHNvIHRoYXQgaXQgY3Jvc3MtYnVpbGRz IHdpdGhvdXQgd2FybmluZ3MuCgpJbmRleDogc3JjL3V0aWxzL2JpbjJoLmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS Q1MgZmlsZTogL2N2cy9kamdwcC9kamdwcC9zcmMvdXRpbHMvYmluMmguYyx2CnJldHJpZXZpbmcg cmV2aXNpb24gMS43CmRpZmYgLXUgLXAgLXIxLjcgYmluMmguYwotLS0gc3JjL3V0aWxzL2JpbjJo LmMJMiBNYXkgMjAxNSAwNzozMjozNCAtMDAwMAkxLjcKKysrIHNyYy91dGlscy9iaW4yaC5jCTkg TWF5IDIwMTUgMTA6MzA6MTcgLTAwMDAKQEAgLTI1LDEzICsyNSwxMyBAQCBtYWluKGludCBhcmdj LCBjaGFyICoqYXJndikKICAgaW50IGNvbD0wLCBpOwogICBpZiAoYXJnYyA8IDQpCiAgIHsKLSAg ICBwcmludGYoInVzYWdlOiAlcyBpbmZpbGUgc3ltbmFtZSBvdXRmaWxlXG4iLCBiYXNlbmFtZShh cmd2WzBdKSk7CisgICAgcHJpbnRmKCJ1c2FnZTogYmluMmggaW5maWxlIHN5bW5hbWUgb3V0Zmls ZVxuIik7CiAgICAgZXhpdCgxKTsKICAgfQogICBmID0gb3Blbihhcmd2WzFdLCBPX1JET05MWXxP X0JJTkFSWSk7CiAgIGlmIChmIDwgMSkKICAgewotICAgIHByaW50ZigiJXM6ICIsYmFzZW5hbWUo YXJndlswXSkpOworICAgIHByaW50ZigiYmluMmg6ICIpOwogICAgIHBlcnJvcihhcmd2WzFdKTsK ICAgICBleGl0KDEpOwogICB9CkBAIC00MCw3ICs0MCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogCiAgIGlmIChvZiA9PSBOVUxMKQogICB7Ci0gICAgcHJpbnRmKCIlczogIixiYXNl bmFtZShhcmd2WzBdKSk7CisgICAgcHJpbnRmKCJiaW4yaDogIik7CiAgICAgcGVycm9yKGFyZ3Zb M10pOwogICAgIGV4aXQoMSk7CiAgIH0K --90e6ba614ed2a3d1640515a49626--
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |