|
||||||||||
|
New in This Group PHP uploadprogress12/5/2009 7:24:55 PM svn: /pecl/rar/trunk/ rarentry.c11/29/2009 1:19:02 PM svn: /pecl/rar/trunk/ config.m4 config.w32 php_rar.h rar.c rar_stream.c rarentry.c tests/002.phpt tests/003.phpt tests/004.phpt tests/006.phpt tests/008.phpt tests/013.phpt tests/014.phpt tests/015.ph11/29/2009 3:41:11 AM svn: /pecl/rar/trunk/ rar.c rar_stream.c tests/022.phpt11/26/2009 1:40:14 AM svn: /pecl/rar/trunk/ rar.c tests/021.phpt tests/directories.rar11/25/2009 11:22:03 AM svn: /pecl/rar/trunk/ php_rar.h tests/015.phpt tests/016.phpt tests/017.phpt11/23/2009 12:49:10 AM svn: /pecl/rar/trunk/tests/ 019.phpt 020.phpt solid.rar store_method.rar11/22/2009 7:48:03 PM svn: /pecl/rar/trunk/ rar.c rar_stream.c tests/018.phpt11/22/2009 6:57:37 PM svn: /pecl/rar/trunk/ rar.c rar_stream.c tests/011.phpt tests/012.phpt unrar/coder.cpp unrar/dll.cpp unrar/dll.hpp unrar/extract.hpp unrar/extractchunk.cpp unrar/unpack15.cpp unrar/unpack20.cpp unrar/11/22/2009 4:07:39 PM svn: /pecl/rar/trunk/ config.m4 config.w32 php_rar.h rar.c rar.cpp rar_stream.c rar_stream.cpp tests/016.phpt tests/017.phpt unrar/coder.cpp unrar/extractchunk.cpp unrar/os.hpp11/22/2009 3:14:09 AM |
svn: /pecl/rar/trunk/ config.m4 config.w32 php_rar.h rar.c rar_stream.c rarentry.c tests/002.phpt tests/003.phpt tests/004.phpt tests/006.phpt tests/008.phpt tests/013.phpt tests/014.phpt tests/015.ph
|
|||||||||
| Group: php.pecl.cvs |
Subscribe
|
Posted:11/29/2009 3:41:11 AM | Replies:0 | Views:20 | Items(0) |
|
--b7f2d50c9fca83761e55bd90629464c18e1a3a7b
Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit cataphract Sun, 29 Nov 2009 03:41:11 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=291411 Log: Refactoring. Added a bunch of constants to RarEntry. Fixed possible crash with empty RAR files (though WinRAR doesn't let you create empty RAR files) Added __toString method All RarEntry properties are now private. Made most methods not implementation dependent. Changed paths: U pecl/rar/trunk/config.m4 U pecl/rar/trunk/config.w32 U pecl/rar/trunk/php_rar.h U pecl/rar/trunk/rar.c U pecl/rar/trunk/rar_stream.c A pecl/rar/trunk/rarentry.c U pecl/rar/trunk/tests/002.phpt U pecl/rar/trunk/tests/003.phpt U pecl/rar/trunk/tests/004.phpt U pecl/rar/trunk/tests/006.phpt U pecl/rar/trunk/tests/008.phpt U pecl/rar/trunk/tests/013.phpt U pecl/rar/trunk/tests/014.phpt U pecl/rar/trunk/tests/015.phpt U pecl/rar/trunk/tests/018.phpt --b7f2d50c9fca83761e55bd90629464c18e1a3a7b Content-Type: text/x-diff; charset="utf-8" Content-Disposition: attachment; filename="svn-diffs-291411.txt" Content-Transfer-Encoding: base64 TW9kaWZpZWQ6IHBlY2wvcmFyL3RydW5rL2NvbmZpZy5tNAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwZWNsL3Jhci90cnVu ay9jb25maWcubTQJMjAwOS0xMS0yOSAwMzozMjo1NCBVVEMgKHJldiAyOTE0MTApCisrKyBwZWNsL3Jh ci90cnVuay9jb25maWcubTQJMjAwOS0xMS0yOSAwMzo0MToxMSBVVEMgKHJldiAyOTE0MTEpCkBAIC0y Niw2ICsyNiw2IEBACiAgIFBIUF9TVUJTVChSQVJfU0hBUkVEX0xJQkFERCkKICAgUEhQX0FERF9MSUJS QVJZX1dJVEhfUEFUSChzdGRjKyssICIiLCBSQVJfU0hBUkVEX0xJQkFERCkKCi0gIFBIUF9ORVdfRVhU RU5TSU9OKHJhciwgcmFyLmMgcmFyX3N0cmVhbS5jICR1bnJhcl9zb3VyY2VzLCAkZXh0X3NoYXJlZCws LURSQVJETEwgLURHVUkgLURTSUxFTlQgLVduby13cml0ZS1zdHJpbmdzIC1JQGV4dF9zcmNkaXJAL3Vu cmFyKQorICBQSFBfTkVXX0VYVEVOU0lPTihyYXIsIHJhci5jIHJhcmVudHJ5LmMgcmFyX3N0cmVhbS5j ICR1bnJhcl9zb3VyY2VzLCAkZXh0X3NoYXJlZCwsLURSQVJETEwgLURHVUkgLURTSUxFTlQgLVduby13 cml0ZS1zdHJpbmdzIC1JQGV4dF9zcmNkaXJAL3VucmFyKQogICBQSFBfQUREX0JVSUxEX0RJUigkZXh0 X2J1aWxkZGlyL3VucmFyKQogZmkKCk1vZGlmaWVkOiBwZWNsL3Jhci90cnVuay9jb25maWcudzMyCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIHBlY2wvcmFyL3RydW5rL2NvbmZpZy53MzIJMjAwOS0xMS0yOSAwMzozMjo1NCBVVEMg KHJldiAyOTE0MTApCisrKyBwZWNsL3Jhci90cnVuay9jb25maWcudzMyCTIwMDktMTEtMjkgMDM6NDE6 MTEgVVRDIChyZXYgMjkxNDExKQpAQCAtNCw3ICs0LDcgQEAKIEFSR19FTkFCTEUoInJhciIsICJSYXIg c3VwcG9ydCIsICJubyIpOwoKIGlmIChQSFBfUkFSICE9ICJubyIpIHsKLQlFWFRFTlNJT04oInJhciIs ICJyYXIuYyByYXJfc3RyZWFtLmMiLCBQSFBfUkFSX1NIQVJFRCwgIi9EUkFSRExMIC9ER1VJIC9EU0lM RU5UIC9FSHNjIC9EX1dTVERJT19ERUZJTkVEIik7CisJRVhURU5TSU9OKCJyYXIiLCAicmFyLmMgcmFy ZW50cnkuYyByYXJfc3RyZWFtLmMiLCBQSFBfUkFSX1NIQVJFRCwgIi9EUkFSRExMIC9ER1VJIC9EU0lM RU5UIC9FSHNjIC9EX1dTVERJT19ERUZJTkVEIik7CiAJQUREX1NPVVJDRVMoY29uZmlndXJlX21vZHVs ZV9kaXJuYW1lICsgIi91bnJhciIsCiAJCSJyYXIuY3BwIHN0cmxpc3QuY3BwIHN0cmZuLmNwcCBcCiAJ CXBhdGhmbi5jcHAgc21hbGxmbi5jcHAgc2F2ZXBvcy5jcHAgXAoKTW9kaWZpZWQ6IHBlY2wvcmFyL3Ry dW5rL3BocF9yYXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwZWNsL3Jhci90cnVuay9waHBfcmFyLmgJMjAwOS0xMS0y OSAwMzozMjo1NCBVVEMgKHJldiAyOTE0MTApCisrKyBwZWNsL3Jhci90cnVuay9waHBfcmFyLmgJMjAw OS0xMS0yOSAwMzo0MToxMSBVVEMgKHJldiAyOTE0MTEpCkBAIC0xNSwxMiArMTUsMTMgQEAKICAgfCAg ICAgICAgICAgICAgICAgICAgICAgICoqKiogV0FSTklORyAqKioqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8CiAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfAogICB8IFRoaXMgbW9kdWxlIG1ha2VzIHVzZSBvZiB1blJB UiAtIGZyZWUgdXRpbGl0eSBmb3IgUkFSIGFyY2hpdmVzLiAgICAgIHwKLSAgfCBJdCdzIGxpY2Vuc2Ug c3RhdGVzLCB0aGF0IHlvdSBNVVNUIE5PVCB1c2UgaXQncyBjb2RlIHRvIGRldmVsb3AgICAgICB8Cisg IHwgSXRzIGxpY2Vuc2Ugc3RhdGVzLCB0aGF0IHlvdSBNVVNUIE5PVCB1c2UgaXRzIGNvZGUgdG8gZGV2 ZWxvcCAgICAgICAgfAogICB8IGEgUkFSIChXaW5SQVIpIGNvbXBhdGlibGUgYXJjaGl2ZXIuICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgfCBQbGVhc2UsIHJlYWQgdW5SQVIgbGljZW5z ZSBmb3IgZnVsbCBpbmZvcm1hdGlvbi4gICAgICAgICAgICAgICAgICAgICB8CiAgIHwgdW5SQVIgJiBS QVIgY29weXJpZ2h0cyBhcmUgb3duZWQgYnkgRXVnZW5lIFJvc2hhbCAgICAgICAgICAgICAgICAgICAg fAogICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSsKICAgfCBBdXRob3I6IEFudG9ueSBEb3ZnYWwgPHRvbnlAZGF5bGVzc2Rh eS5vcmc+ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgIHwgQXV0aG9yOiBHdXN0YXZvIExvcGVz IDxjYXRhcGhyYWN0QHBocC5uZXQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICArLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSsKICovCgpAQCAtNjAsNiArNjEsMTAgQEAKICAgSE9TVF9CRU9TPTUsSE9TVF9NQVgKIH07Cgor LyogcmFyLmMgKi8KK2ludCBsZV9yYXJfZmlsZTsKK2V4dGVybiBjaGFyICpsZV9yYXJfZmlsZV9uYW1l OworCiBQSFBfTUlOSVRfRlVOQ1RJT04ocmFyKTsKIFBIUF9NU0hVVERPV05fRlVOQ1RJT04ocmFyKTsK IFBIUF9SSU5JVF9GVU5DVElPTihyYXIpOwpAQCAtOTUsNiArMTAwLDggQEAKIAkJCQkgICBpbnQgKmZv dW5kLCAvKiBPVVQgKi8KIAkJCQkgICBzdHJ1Y3QgUkFSSGVhZGVyRGF0YUV4ICpoZWFkZXJfZGF0YSAv KiBPVVQsIGNhbiBiZSBudWxsICovCiAJCQkJICAgKTsKK3ZvaWQgX3Jhcl93aWRlX3RvX3V0Zihjb25z dCB3Y2hhcl90ICpzcmMsIGNoYXIgKmRlc3QsIHNpemVfdCBkZXN0X3NpemUpOwordm9pZCBfcmFyX3V0 Zl90b193aWRlKGNvbnN0IGNoYXIgKnNyYywgd2NoYXJfdCAqZGVzdCwgc2l6ZV90IGRlc3Rfc2l6ZSk7 CgogLy9QSFAgNS4yIGNvbXBhdGliaWxpdHkKICNpZiBQSFBfTUFKT1JfVkVSU0lPTiA9PSA1ICYmIFBI UF9NSU5PUl9WRVJTSU9OIDwgMwpAQCAtMTA0LDYgKzExMSwxMiBAQAogCXx8IHBocF9jaGVja19vcGVu X2Jhc2VkaXIoZmlsZW5hbWUgVFNSTUxTX0NDKQogI2VuZGlmCgorLyogcmFyZW50cnkuYyAqLworZXh0 ZXJuIHplbmRfY2xhc3NfZW50cnkgKnJhcl9jbGFzc19lbnRyeV9wdHI7Cit2b2lkIG1pbml0X3JhcmVu dHJ5KFRTUk1MU19EKTsKK3ZvaWQgX3Jhcl9lbnRyeV90b196dmFsKHN0cnVjdCBSQVJIZWFkZXJEYXRh RXggKmVudHJ5LCB6dmFsICpvYmplY3QsCisJCQkJCQkJICAgdW5zaWduZWQgbG9uZyBwYWNrZWRfc2l6 ZSBUU1JNTFNfREMpOworCiAjZW5kaWYJLyogUEhQX1JBUl9IICovCgoKCk1vZGlmaWVkOiBwZWNsL3Jh ci90cnVuay9yYXIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwZWNsL3Jhci90cnVuay9yYXIuYwkyMDA5LTExLTI5IDAz OjMyOjU0IFVUQyAocmV2IDI5MTQxMCkKKysrIHBlY2wvcmFyL3RydW5rL3Jhci5jCTIwMDktMTEtMjkg MDM6NDE6MTEgVVRDIChyZXYgMjkxNDExKQpAQCAtNDksMjQgKzQ5LDE2IEBACgogI2luY2x1ZGUgInBo cF9yYXIuaCIKCi1zdGF0aWMgaW50IGxlX3Jhcl9maWxlOwotI2RlZmluZSBsZV9yYXJfZmlsZV9uYW1l ICJSYXIgZmlsZSIKLXN0YXRpYyB6ZW5kX2NsYXNzX2VudHJ5ICpyYXJfY2xhc3NfZW50cnlfcHRyOwor aW50IGxlX3Jhcl9maWxlOworY2hhciAqbGVfcmFyX2ZpbGVfbmFtZSA9ICJSYXIgZmlsZSI7CgogLyog e3t7IGludGVybmFsIGZ1bmN0aW9ucyBwcm90b3MgKi8KIHN0YXRpYyB2b2lkIF9yYXJfZmlsZV9saXN0 X2R0b3IoemVuZF9yc3JjX2xpc3RfZW50cnkgKiBUU1JNTFNfREMpOwogc3RhdGljIGludCBfcmFyX2xp c3RfZmlsZXMocmFyX2ZpbGVfdCAqIFRTUk1MU19EQyk7CiBzdGF0aWMgY29uc3QgY2hhciAqIF9yYXJf ZXJyb3JfdG9fc3RyaW5nKGludCBlcnJjb2RlKTsKLXN0YXRpYyB2b2lkIF9yYXJfZG9zX2RhdGVfdG9f dGV4dChpbnQgZG9zX3RpbWUsIGNoYXIgKmRhdGVfc3RyaW5nKTsKLXN0YXRpYyB2b2lkIF9yYXJfZW50 cnlfdG9fenZhbChzdHJ1Y3QgUkFSSGVhZGVyRGF0YUV4ICplbnRyeSwKLQkJCQkJCQkgICB6dmFsICpv YmplY3QsCi0JCQkJCQkJICAgdW5zaWduZWQgbG9uZyBwYWNrZWRfc2l6ZSBUU1JNTFNfREMpOwogc3Rh dGljIGludCBfcmFyX3Jhd19lbnRyaWVzX3RvX2ZpbGVzKHJhcl9maWxlX3QgKnJhciwKIAkJCQkJCQkJ ICAgICBjb25zdCB3Y2hhcl90ICogY29uc3QgZmlsZSwgLy9jYW4gYmUgTlVMTAogCQkJCQkJCQkgICAg IHp2YWwgKnRhcmdldCBUU1JNTFNfREMpOwotc3RhdGljIHp2YWwgKipfcmFyX2VudHJ5X2dldF9wcm9w ZXJ0eSh6dmFsICosIGNoYXIgKiwgaW50IFRTUk1MU19EQyk7Ci1zdGF0aWMgdm9pZCBfcmFyX3dpZGVf dG9fdXRmKGNvbnN0IHdjaGFyX3QgKnNyYywgY2hhciAqZGVzdCwgc2l6ZV90IGRlc3Rfc2l6ZSk7Ci1z dGF0aWMgdm9pZCBfcmFyX3V0Zl90b193aWRlKGNvbnN0IGNoYXIgKnNyYywgd2NoYXJfdCAqZGVzdCwg c2l6ZV90IGRlc3Rfc2l6ZSk7CiBzdGF0aWMgdm9pZCBfcmFyX2ZpeF93aWRlKHdjaGFyX3QgKnN0cik7 CiAvKiB9fX0gKi8KCkBAIC04Myw4ICs3NSw5NiBAQAogCXBocF9lcnJvcl9kb2NyZWYoTlVMTCBUU1JN TFNfQ0MsIEVfV0FSTklORywgZXJyKTsKIAlyZXR1cm4gRkFJTFVSRTsKIH0KKworLyogRnJvbSB1bmlj b2RlLmNwcAorICogSSBjYW4ndCB1c2UgdGhhdCBvbmUgZGlyZWN0eSBiZWNhdXNlIGl0IHRha2VzIGEg Y29uc3Qgd2NoYXIsIG5vdCB3Y2hhcl90LgorICogQW5kIEkgc2hvdWxkbid0IGJlY2F1c2UgaXQncyBu b3QgYSBwdWJsaWMgQVBJLgorICovCit2b2lkIF9yYXJfd2lkZV90b191dGYoY29uc3Qgd2NoYXJfdCAq c3JjLCBjaGFyICpkZXN0LCBzaXplX3QgZGVzdF9zaXplKSAvKiB7e3sgKi8KK3sKKwlsb25nIGRzaXpl PSAobG9uZykgZGVzdF9zaXplOworCWRzaXplLS07CisJd2hpbGUgKCpzcmMgIT0gMCAmJiAtLWRzaXpl ID49IDApIHsKKwkJdWludCBjID0qKHNyYysrKTsKKwkJaWYgKGMgPCAweDgwKQorCQkJKihkZXN0Kysp ID0gYzsKKwkJZWxzZSBpZiAoYyA8IDB4ODAwICYmIC0tZHNpemUgPj0gMCkJeworCQkJKihkZXN0Kysp ID0gKDB4YzAgfCAoYyA+PiA2KSk7CisJCQkqKGRlc3QrKykgPSAoMHg4MCB8IChjICYgMHgzZikpOwor CQl9CisJCWVsc2UgaWYgKGMgPCAweDEwMDAwICYmIChkc2l6ZSAtPSAyKSA+PSAwKSB7CisJCQkqKGRl c3QrKykgPSAoMHhlMCB8IChjID4+IDEyKSk7CisJCQkqKGRlc3QrKykgPSAoMHg4MCB8ICgoYyA+PiA2 KSAmIDB4M2YpKTsKKwkJCSooZGVzdCsrKSA9ICgweDgwIHwgKGMgJiAweDNmKSk7CisJCX0KKwkJZWxz ZSBpZiAoYyA8IDB4MjAwMDAwICYmIChkc2l6ZSAtPSAzKSA+PSAwKSB7CisJCQkqKGRlc3QrKykgPSAo MHhmMCB8IChjID4+IDE4KSk7CisJCQkqKGRlc3QrKykgPSAoMHg4MCB8ICgoYyA+PiAxMikgJiAweDNm KSk7CisJCQkqKGRlc3QrKykgPSAoMHg4MCB8ICgoYyA+PiA2KSAmIDB4M2YpKTsKKwkJCSooZGVzdCsr KSA9ICgweDgwIHwgKGMgJiAweDNmKSk7CisJCX0KKwl9CisJKmRlc3QgPSAwOworfQogLyogfX19ICov CgorLyogaWRlbSAqLwordm9pZCBfcmFyX3V0Zl90b193aWRlKGNvbnN0IGNoYXIgKnNyYywgd2NoYXJf dCAqZGVzdCwgc2l6ZV90IGRlc3Rfc2l6ZSkgLyoge3t7ICovCit7CisJbG9uZyBkc2l6ZSA9IChsb25n KSBkZXN0X3NpemU7CisJZHNpemUtLTsKKwl3aGlsZSAoKnNyYyAhPSAwKSB7CisJCXVpbnQgYyA9ICh1 bnNpZ25lZCBjaGFyKSAqKHNyYysrKSwKKwkJCSBkOworCQlpZiAoYyA8IDB4ODApCisJCQlkID0gYzsK KwkJZWxzZSBpZiAoKGMgPj4gNSkgPT0gNikgeworCQkJaWYgKCgqc3JjICYgMHhjMCkgIT0gMHg4MCkK KwkJCQlicmVhazsKKwkJCWQ9KChjICYgMHgxZikgPDwgNil8KCpzcmMgJiAweDNmKTsKKwkJCXNyYysr OworCQl9CisJCWVsc2UgaWYgKChjPj40KT09MTQpIHsKKwkJCWlmICgoc3JjWzBdICYgMHhjMCkgIT0g MHg4MCB8fCAoc3JjWzFdICYgMHhjMCkgIT0gMHg4MCkKKwkJCQlicmVhazsKKwkJCWQgPSAoKGMgJiAw eGYpIDw8IDEyKSB8ICgoc3JjWzBdICYgMHgzZikgPDwgNikgfCAoc3JjWzFdICYgMHgzZik7CisJCQlz cmMgKz0gMjsKKwkJfQorCQllbHNlIGlmICgoYz4+Myk9PTMwKSB7CisJCQlpZiAoKHNyY1swXSAmIDB4 YzApICE9IDB4ODAgfHwgKHNyY1sxXSAmIDB4YzApICE9IDB4ODAgfHwgKHNyY1syXSAmIDB4YzApICE9 IDB4ODApCisJCQkJYnJlYWs7CisJCQlkID0gKChjICYgNykgPDwgMTgpIHwgKChzcmNbMF0gJiAweDNm KSA8PCAxMikgfCAoKHNyY1sxXSAmIDB4M2YpIDw8IDYpIHwgKHNyY1syXSAmIDB4M2YpOworCQkJc3Jj ICs9IDM7CisJCX0KKwkJZWxzZQorCQkJYnJlYWs7CisJCWlmICgtLWRzaXplIDwgMCkKKwkJCWJyZWFr OworCQlpZiAoZCA+IDB4ZmZmZikgeworCQkJaWYgKC0tZHNpemUgPCAwIHx8IGQgPiAweDEwZmZmZikK KwkJCQlicmVhazsKKwkJCSooZGVzdCsrKSA9ICgoZCAtIDB4MTAwMDApID4+IDEwKSArIDB4ZDgwMDsK KwkJCSooZGVzdCsrKSA9IChkICYgMHgzZmYpICsgMHhkYzAwOworCQl9CisJCWVsc2UKKwkJCSooZGVz dCsrKSA9IGQ7CisJfQorCSpkZXN0ID0gMDsKK30KKy8qIH19fSAqLworCisvKiBNaXNzaW5nIGZ1bmN0 aW9ucyBmcm9tIFZDNiB7e3sgKi8KKyNpZiAhSEFWRV9TVFJOTEVOCitzdGF0aWMgc2l6ZV90IHN0cm5s ZW4oY29uc3QgY2hhciAqcywgc2l6ZV90IG1heGxlbikgLyoge3t7ICovCit7CisJY2hhciAqciA9IG1l bWNocihzLCAnXDAnLCBtYXhsZW4pOworCXJldHVybiByID8gci1zIDogbWF4bGVuOworfQorLyogfX19 ICovCisjZW5kaWYKKy8qIH19fSAqLworLyogfX19ICovCisKIC8qIFdBUk5JTkc6IEl0J3MgdGhlIGNh bGxlciB3aG8gbXVzdCBjbG9zZSB0aGUgYXJjaGl2ZS4KICAqIEtpbmQgb2YgYWdhaW5zdCB0aGUgY29u dmVudGlvbnMgKi8KIGludCBfcmFyX2ZpbmRfZmlsZShzdHJ1Y3QgUkFST3BlbkFyY2hpdmVEYXRhRXgg Km9wZW5fZGF0YSwgLyogSU4gKi8KQEAgLTE1NCwxNSArMjM0LDYgQEAKIC8qIH19fSAqLwogLyogPGlu dGVybmFsPiAqLwoKLSNkZWZpbmUgUkFSX0dFVF9QUk9QRVJUWSh2YXIsIHByb3BfbmFtZSkgXAotCWlm ICghZW50cnlfb2JqKSB7IFwKLQkJcGhwX2Vycm9yX2RvY3JlZihOVUxMIFRTUk1MU19DQywgRV9XQVJO SU5HLCAidGhpcyBtZXRob2QgY2Fubm90IGJlIGNhbGxlZCBzdGF0aWNhbGx5Iik7IFwKLQkJUkVUVVJO X0ZBTFNFOyBcCi0JfSBcCi0JaWYgKCh2YXIgPSBfcmFyX2VudHJ5X2dldF9wcm9wZXJ0eShlbnRyeV9v YmosIHByb3BfbmFtZSwgc2l6ZW9mKHByb3BfbmFtZSkgVFNSTUxTX0NDKSkgPT0gTlVMTCkgeyBcCi0J CVJFVFVSTl9GQUxTRTsgXAotCX0KLQogc3RhdGljIHZvaWQgX3Jhcl9maWxlX2xpc3RfZHRvcih6ZW5k X3JzcmNfbGlzdF9lbnRyeSAqcnNyYyBUU1JNTFNfREMpIC8qIHt7eyAqLwogewogCXJhcl9maWxlX3Qg KnJhciA9IChyYXJfZmlsZV90ICopcnNyYy0+cHRyOwpAQCAtMjgyLDcxICszNTMsNiBAQAogfQogLyog fX19ICovCgotc3RhdGljIHZvaWQgX3Jhcl9kb3NfZGF0ZV90b190ZXh0KGludCBkb3NfdGltZSwgY2hh ciAqZGF0ZV9zdHJpbmcpIC8qIHt7eyAqLwotewotCWludCBzZWNvbmQsIG1pbnV0ZSwgaG91ciwgZGF5 LCBtb250aCwgeWVhcjsKLQkvKiBmb2xsb3dpbmcgbGluZXMgd2VyZSB0YWtlbiBmcm9tIHRpbWVmbi5j cHAgKi8KLQlzZWNvbmQgPSAoZG9zX3RpbWUgJiAweDFmKSoyOwotCW1pbnV0ZSA9IChkb3NfdGltZT4+ NSkgJiAweDNmOwotCWhvdXIgICA9IChkb3NfdGltZT4+MTEpICYgMHgxZjsKLQlkYXkgICAgPSAoZG9z X3RpbWU+PjE2KSAmIDB4MWY7Ci0JbW9udGggID0gKGRvc190aW1lPj4yMSkgJiAweDBmOwotCXllYXIg ICA9IChkb3NfdGltZT4+MjUpKzE5ODA7Ci0Jc3ByaW50ZihkYXRlX3N0cmluZywgIiV1LSUwMnUtJTAy dSAlMDJ1OiUwMnU6JTAydSIsIHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKTsK LX0KLS8qIH19fSAqLwotCi0vKiBzaG91bGQgYmUgcGFzc2VkIHRoZSBsYXN0IGVudHJ5IHRoYXQgY29y cmVzcG9uZHMgdG8gYSBnaXZlbiBmaWxlCi0gKiBvbmx5IHRoYXQgb25lIGhhcyB0aGUgY29ycmVjdCBD UkMuIFN0aWxsLCBpdCBtYXkgaGF2ZSBhIHdyb25nIHBhY2tlZFNpemUgKi8KLXN0YXRpYyB2b2lkIF9y YXJfZW50cnlfdG9fenZhbChzdHJ1Y3QgUkFSSGVhZGVyRGF0YUV4ICplbnRyeSwgenZhbCAqb2JqZWN0 LAotCQkJCQkJCSAgIHVuc2lnbmVkIGxvbmcgcGFja2VkX3NpemUgVFNSTUxTX0RDKSAvKiB7e3sgKi8K LXsKLQljaGFyIHRtcF9zIFtNQVhfTEVOR1RIX09GX0xPTkcgKyAxXTsKLQljaGFyIHRpbWVbNTBdOwot CWNoYXIgKmZpbGVuYW1lOwotCWxvbmcgdW5wU2l6ZTsKLQotCWlmIChzaXplb2YobG9uZykgPj0gOCkK LQkJdW5wU2l6ZSA9ICgobG9uZykgZW50cnktPlVucFNpemUpICsgKCgobG9uZykgZW50cnktPlVucFNp emVIaWdoKSA8PCAzMik7Ci0JZWxzZSB7Ci0JCS8vZm9yIDMyLWJpdCBsb25nLCBhdCBsZWFzdCBkb24n dCBnaXZlIG5lZ2F0aXZlIHZhbHVlcwotCQlpZiAoKHVuc2lnbmVkIGxvbmcpIGVudHJ5LT5VbnBTaXpl ID4gKHVuc2lnbmVkIGxvbmcpIExPTkdfTUFYCi0JCQkJfHwgZW50cnktPlVucFNpemVIaWdoICE9IDAp Ci0JCQl1bnBTaXplID0gTE9OR19NQVg7Ci0JCWVsc2UKLQkJCXVucFNpemUgPSAobG9uZykgZW50cnkt PlVucFNpemU7Ci0JfQotCi0JLyogMiBpbnN0ZWFkIG9mIHNpemVvZih3Y2hhcl90KSB3b3VsZCBzdWZm aWNlLCBJIHRoaW5rLiBJIGRvdWJ0Ci0JICogX3Jhcl93aWRlX3RvX3V0ZiBoYW5kbGVzIGNoYXJhY3Rl cnMgbm90IGluIFVDUy0yLiBCdXQgYmV0dGVyIGJlIHNhZmUgKi8KLQlmaWxlbmFtZSA9IChjaGFyKikg ZW1hbGxvYyhzaXplb2YoZW50cnktPkZpbGVOYW1lVykgKiBzaXplb2Yod2NoYXJfdCkpOwotCi0JaWYg KHBhY2tlZF9zaXplID4gKHVuc2lnbmVkIGxvbmcpIExPTkdfTUFYKQotCQlwYWNrZWRfc2l6ZSA9IExP TkdfTUFYOwotCV9yYXJfd2lkZV90b191dGYoZW50cnktPkZpbGVOYW1lVywgZmlsZW5hbWUsCi0JCXNp emVvZihlbnRyeS0+RmlsZU5hbWVXKSAqIHNpemVvZih3Y2hhcl90KSk7Ci0JYWRkX3Byb3BlcnR5X3N0 cmluZyhvYmplY3QsICJuYW1lIiwgZmlsZW5hbWUsIDEpOwotCWFkZF9wcm9wZXJ0eV9sb25nKG9iamVj dCwgInVucGFja2VkX3NpemUiLCBlbnRyeS0+VW5wU2l6ZSk7Ci0JLy9wYWNrZWQgc2l6ZSBjYW4gYmUg d3JvbmcgaW4gbXVsdGktdm9sdW1lIGFyY2hpdmVzCi0JYWRkX3Byb3BlcnR5X2xvbmcob2JqZWN0LCAi cGFja2VkX3NpemUiLCBwYWNrZWRfc2l6ZSk7Ci0JYWRkX3Byb3BlcnR5X2xvbmcob2JqZWN0LCAiaG9z dF9vcyIsIGVudHJ5LT5Ib3N0T1MpOwotCi0JX3Jhcl9kb3NfZGF0ZV90b190ZXh0KGVudHJ5LT5GaWxl VGltZSwgdGltZSk7Ci0JYWRkX3Byb3BlcnR5X3N0cmluZyhvYmplY3QsICJmaWxlX3RpbWUiLCB0aW1l LCAxKTsKLQotCXNwcmludGYodG1wX3MsICIlbHgiLCBlbnRyeS0+RmlsZUNSQyk7Ci0JYWRkX3Byb3Bl cnR5X3N0cmluZyhvYmplY3QsICJjcmMiLCB0bXBfcywgMSk7Ci0KLQlhZGRfcHJvcGVydHlfbG9uZyhv YmplY3QsICJhdHRyIiwgIGVudHJ5LT5GaWxlQXR0cik7Ci0JYWRkX3Byb3BlcnR5X2xvbmcob2JqZWN0 LCAidmVyc2lvbiIsICBlbnRyeS0+VW5wVmVyKTsKLQlhZGRfcHJvcGVydHlfbG9uZyhvYmplY3QsICJt ZXRob2QiLCAgZW50cnktPk1ldGhvZCk7Ci0JLy9pZiBiaXRzIDUsIDYgYW5kIDcgYW5kIHNldCAoc3Rh cnRpbmcgZnJvbSAwKQotCWFkZF9wcm9wZXJ0eV9ib29sKG9iamVjdCwgImRpcmVjdG9yeSIsICAoKGVu dHJ5LT5GbGFncyAmIDB4RTApID09IDB4RTApKTsKLQotCWVmcmVlKGZpbGVuYW1lKTsKLX0KLS8qIH19 fSAqLwotCiBzdGF0aWMgaW50IF9yYXJfcmF3X2VudHJpZXNfdG9fZmlsZXMocmFyX2ZpbGVfdCAqcmFy LAogCQkJCQkJCQkJIGNvbnN0IHdjaGFyX3QgKiBjb25zdCBmaWxlLCAvL2NhbiBiZSBOVUxMCiAJCQkJ CQkJCQkgenZhbCAqdGFyZ2V0IFRTUk1MU19EQykgLyoge3t7ICovCkBAIC0zNTQsNyArMzYwLDcgQEAK IAl3Y2hhcl90IGxhc3RfbmFtZVsxMDI0XSA9IHtMJ1wwJ307CiAJY2hhciBzdHJpY3RfbGFzdF9uYW1l WzEwMjRdID0geydcMCd9OwogCXVuc2lnbmVkIGxvbmcgcGFja2VkX3NpemUgPSAwVUw7Ci0Jc3RydWN0 IFJBUkhlYWRlckRhdGFFeCAqbGFzdF9lbnRyeTsKKwlzdHJ1Y3QgUkFSSGVhZGVyRGF0YUV4ICpsYXN0 X2VudHJ5ID0gTlVMTDsKIAlpbnQgYW55X2NvbW1pdCA9IEZBTFNFOwogCWludCBmaXJzdF9maWxlX2No ZWNrID0gVFJVRTsKIAlpbnQgaTsKQEAgLTM3MiwxNSArMzc4LDE1IEBACiAJCQllbnRyeSA9IHJhci0+ ZW50cmllc1tpXTsKIAkJCWN1cnJlbnRfbmFtZSA9IGVudHJ5LT5GaWxlTmFtZVc7CiAJCQlzdHJpY3Rf Y3VycmVudF9uYW1lID0gZW50cnktPkZpbGVOYW1lOwotCQl9CgotCQkvKiBJZiBmaWxlIGlzIGNvbnRp bnVlZCBmcm9tIHByZXZpb3VzIHZvbHVtZSwgc2tpcCBpdCwgYXMgb3RoZXJ3aXNlCi0JCSAqIGluY29y cmVjdCBwYWNrZWQgYW5kIHVucGFja2VkIHNpemVzIHdvdWxkIGJlIHJldHVybmVkICovCi0JCWlmIChm aXJzdF9maWxlX2NoZWNrKSB7Ci0JCQlpZiAoZW50cnktPkZsYWdzICYgMHgwMSkKLQkJCQljb250aW51 ZTsKLQkJCWVsc2UKLQkJCQlmaXJzdF9maWxlX2NoZWNrID0gRkFMU0U7CisJCQkvKiBJZiBmaWxlIGlz IGNvbnRpbnVlZCBmcm9tIHByZXZpb3VzIHZvbHVtZSwgc2tpcCBpdCwgYXMgb3RoZXJ3aXNlCisJCQkg KiBpbmNvcnJlY3QgcGFja2VkIGFuZCB1bnBhY2tlZCBzaXplcyB3b3VsZCBiZSByZXR1cm5lZCAqLwor CQkJaWYgKGZpcnN0X2ZpbGVfY2hlY2spIHsKKwkJCQlpZiAoZW50cnktPkZsYWdzICYgMHgwMSkKKwkJ CQkJY29udGludWU7CisJCQkJZWxzZQorCQkJCQlmaXJzdF9maWxlX2NoZWNrID0gRkFMU0U7CisJCQl9 CiAJCX0KCiAJCS8qIFRoZSB3aWRlIGZpbGUgbmFtZSBtYXkgcmVzdWx0IGZyb20gY29udmVyc2lvbiBm cm9tIHRoZQpAQCAtMzk0LDI5ICs0MDAsMzkgQEAKIAkJY29tbWl0X2ZpbGUgPSBlbmRlZF9maWxlICYm IChmaWxlID09IE5VTEwgfHwKIAkJCShmaWxlICE9IE5VTEwgJiYgd2NzbmNtcChsYXN0X25hbWUsIGZp bGUsIDEwMjQpID09IDApKTsKCi0JCWlmIChjb21taXRfZmlsZSkgewotCQkJLy90aGlzIGVudHJ5IGNv cnJlc3BvbmRzIHRvIGEgbmV3IGZpbGUKLQkJCXp2YWwgKnRtcDsKKwkJaWYgKGNvbW1pdF9maWxlKSB7 IC8vdGhpcyBlbnRyeSBjb3JyZXNwb25kcyB0byBhIG5ldyBmaWxlCisJCQl6dmFsICplbnRyeV9vYmos CisJCQkJICpyYXJfcmVzOwoKLQkJCWFueV9jb21taXQgPSBUUlVFOworCQkJLyogZ3VhcmFudGVlZCBi eSBjb21taXRfZmlsZSA9IGVuZGVkX2ZpbGUgJiYuLi4KKwkJCSAqIHdpdGggZW5kZWRfZmlsZSA9IGhh c19sYXN0X2VudHJ5ICYmIC4uLgorCQkJICogd2l0aCBoYXNfbGFzdF9lbnRyeSA9IChsYXN0X25hbWUg IT0gTlVMTCkKKwkJCSAqIGFuZCBsYXN0X2VudHJ5IGlzIHNldCB3aGVuIGxhc3RfbmFtZSBpcyBzZXQg Ki8KKwkJCWFzc2VydChsYXN0X2VudHJ5ICE9IE5VTEwpOwoKKwkJCWFueV9jb21taXQgPSBUUlVFOyAv L2F0IGxlYXN0IG9uZSBjb21taXQgZG9uZQorCiAJCQkvL3Rha2UgY2FyZSBvZiBsYXN0IGVudHJ5CiAJ CQkvKiBpZiBmaWxlIGlzIE5VTEwsIGFzc3VtZSB0YXJnZXQgaXMgYSB6dmFsIHRoYXQgd2lsbCBob2xk IHRoZQogCQkJICogZW50cnksIG90aGVyd2lzZSBhc3N1bWUgaXQgaXMgYSBudW1lcmljYWwgYXJyYXkg Ki8KIAkJCWlmIChmaWxlID09IE5VTEwpIHsKLQkJCQlNQUtFX1NURF9aVkFMKHRtcCk7CisJCQkJTUFL RV9TVERfWlZBTChlbnRyeV9vYmopOwogCQkJfQogCQkJZWxzZQotCQkJCXRtcCA9IHRhcmdldDsKKwkJ CQllbnRyeV9vYmogPSB0YXJnZXQ7CgotCQkJb2JqZWN0X2luaXRfZXgodG1wLCByYXJfY2xhc3NfZW50 cnlfcHRyKTsKLQkJCWFkZF9wcm9wZXJ0eV9yZXNvdXJjZSh0bXAsICJyYXJmaWxlIiwgcmFyLT5pZCk7 CisJCQlvYmplY3RfaW5pdF9leChlbnRyeV9vYmosIHJhcl9jbGFzc19lbnRyeV9wdHIpOworCQkJLy9h ZGRfcHJvcGVydHlfcmVzb3VyY2UoZW50cnlfb2JqLCAicmFyZmlsZSIsIHJhci0+aWQpOworCQkJTUFL RV9TVERfWlZBTChyYXJfcmVzKTsKKwkJCVpWQUxfUkVTT1VSQ0UocmFyX3JlcywgcmFyLT5pZCk7CisJ CQl6ZW5kX3VwZGF0ZV9wcm9wZXJ0eShyYXJfY2xhc3NfZW50cnlfcHRyLCBlbnRyeV9vYmosICJyYXJm aWxlIiwKKwkJCQlzaXplb2YoInJhcmZpbGUiKSAtIDEsIHJhcl9yZXMgVFNSTUxTX0NDKTsKIAkJCS8q IHRvIGF2b2lkIGRlc3RydWN0aW9uIG9mIHRoZSByZXNvdXJjZSBkdWUgdG8gbGUtPnJlZmNvdW50IGhp dHRpbmcKIAkJCSAqIDAgd2hlbiB0aGlzIG5ldyB6dmFsIHdlJ3JlIGNyZWF0aW5nIGlzIGRlc3Ryb3ll ZD8gKi8KIAkJCXplbmRfbGlzdF9hZGRyZWYocmFyLT5pZCk7Ci0JCQlfcmFyX2VudHJ5X3RvX3p2YWwo bGFzdF9lbnRyeSwgdG1wLCBwYWNrZWRfc2l6ZSBUU1JNTFNfQ0MpOworCQkJX3Jhcl9lbnRyeV90b196 dmFsKGxhc3RfZW50cnksIGVudHJ5X29iaiwgcGFja2VkX3NpemUgVFNSTUxTX0NDKTsKIAkJCWlmIChm aWxlID09IE5VTEwpCi0JCQkJYWRkX25leHRfaW5kZXhfenZhbCh0YXJnZXQsIHRtcCk7CisJCQkJYWRk X25leHRfaW5kZXhfenZhbCh0YXJnZXQsIGVudHJ5X29iaik7CiAJCX0KCiAJCWlmIChlbmRlZF9maWxl KSB7CkBAIC00NTAsOTUgKzQ2Niw2IEBACiB9CiAvKiB9fX0gKi8KCi1zdGF0aWMgenZhbCAqKl9yYXJf ZW50cnlfZ2V0X3Byb3BlcnR5KHp2YWwgKmlkLCBjaGFyICpuYW1lLCBpbnQgbmFtZWxlbiBUU1JNTFNf REMpIC8qIHt7eyAqLwotewotCXp2YWwgKip0bXA7Ci0KLQlpZiAoemVuZF9oYXNoX2ZpbmQoWl9PQkpQ Uk9QX1AoaWQpLCBuYW1lLCBuYW1lbGVuLCAodm9pZCAqKikmdG1wKSA9PSBGQUlMVVJFKSB7Ci0JCXBo cF9lcnJvcl9kb2NyZWYoTlVMTCBUU1JNTFNfQ0MsIEVfV0FSTklORywgIlVuYWJsZSB0byBmaW5kIHBy b3BlcnR5ICclcyciLCBuYW1lKTsKLQkJcmV0dXJuIE5VTEw7Ci0JfQotCXJldHVybiB0bXA7Ci19Ci0v KiB9fX0gKi8KLQotLyogRnJvbSB1bmljb2RlLmNwcAotICogSSBjYW4ndCB1c2UgdGhhdCBvbmUgZGly ZWN0eSBiZWNhdXNlIGl0IHRha2VzIGEgY29uc3Qgd2NoYXIsIG5vdCB3Y2hhcl90LgotICogQW5kIEkg c2hvdWxkbid0IGJlY2F1c2UgaXQncyBub3QgYSBwdWJsaWMgQVBJLgotICovCi1zdGF0aWMgdm9pZCBf cmFyX3dpZGVfdG9fdXRmKGNvbnN0IHdjaGFyX3QgKnNyYywgY2hhciAqZGVzdCwgc2l6ZV90IGRlc3Rf c2l6ZSkgLyoge3t7ICovCi17Ci0JbG9uZyBkc2l6ZT0gKGxvbmcpIGRlc3Rfc2l6ZTsKLQlkc2l6ZS0t OwotCXdoaWxlICgqc3JjICE9IDAgJiYgLS1kc2l6ZSA+PSAwKSB7Ci0JCXVpbnQgYyA9KihzcmMrKyk7 Ci0JCWlmIChjIDwgMHg4MCkKLQkJCSooZGVzdCsrKSA9IGM7Ci0JCWVsc2UgaWYgKGMgPCAweDgwMCAm JiAtLWRzaXplID49IDApCXsKLQkJCSooZGVzdCsrKSA9ICgweGMwIHwgKGMgPj4gNikpOwotCQkJKihk ZXN0KyspID0gKDB4ODAgfCAoYyAmIDB4M2YpKTsKLQkJfQotCQllbHNlIGlmIChjIDwgMHgxMDAwMCAm JiAoZHNpemUgLT0gMikgPj0gMCkgewotCQkJKihkZXN0KyspID0gKDB4ZTAgfCAoYyA+PiAxMikpOwot CQkJKihkZXN0KyspID0gKDB4ODAgfCAoKGMgPj4gNikgJiAweDNmKSk7Ci0JCQkqKGRlc3QrKykgPSAo MHg4MCB8IChjICYgMHgzZikpOwotCQl9Ci0JCWVsc2UgaWYgKGMgPCAweDIwMDAwMCAmJiAoZHNpemUg LT0gMykgPj0gMCkgewotCQkJKihkZXN0KyspID0gKDB4ZjAgfCAoYyA+PiAxOCkpOwotCQkJKihkZXN0 KyspID0gKDB4ODAgfCAoKGMgPj4gMTIpICYgMHgzZikpOwotCQkJKihkZXN0KyspID0gKDB4ODAgfCAo KGMgPj4gNikgJiAweDNmKSk7Ci0JCQkqKGRlc3QrKykgPSAoMHg4MCB8IChjICYgMHgzZikpOwotCQl9 Ci0JfQotCSpkZXN0ID0gMDsKLX0KLS8qIH19fSAqLwotCi0vKiBpZGVtICovCi1zdGF0aWMgdm9pZCBf cmFyX3V0Zl90b193aWRlKGNvbnN0IGNoYXIgKnNyYywgd2NoYXJfdCAqZGVzdCwgc2l6ZV90IGRlc3Rf c2l6ZSkgLyoge3t7ICovCi17Ci0JbG9uZyBkc2l6ZSA9IChsb25nKSBkZXN0X3NpemU7Ci0JZHNpemUt LTsKLQl3aGlsZSAoKnNyYyAhPSAwKSB7Ci0JCXVpbnQgYyA9ICh1bnNpZ25lZCBjaGFyKSAqKHNyYysr KSwKLQkJCSBkOwotCQlpZiAoYyA8IDB4ODApCi0JCQlkID0gYzsKLQkJZWxzZSBpZiAoKGMgPj4gNSkg PT0gNikgewotCQkJaWYgKCgqc3JjICYgMHhjMCkgIT0gMHg4MCkKLQkJCQlicmVhazsKLQkJCWQ9KChj ICYgMHgxZikgPDwgNil8KCpzcmMgJiAweDNmKTsKLQkJCXNyYysrOwotCQl9Ci0JCWVsc2UgaWYgKChj Pj40KT09MTQpIHsKLQkJCWlmICgoc3JjWzBdICYgMHhjMCkgIT0gMHg4MCB8fCAoc3JjWzFdICYgMHhj MCkgIT0gMHg4MCkKLQkJCQlicmVhazsKLQkJCWQgPSAoKGMgJiAweGYpIDw8IDEyKSB8ICgoc3JjWzBd ICYgMHgzZikgPDwgNikgfCAoc3JjWzFdICYgMHgzZik7Ci0JCQlzcmMgKz0gMjsKLQkJfQotCQllbHNl IGlmICgoYz4+Myk9PTMwKSB7Ci0JCQlpZiAoKHNyY1swXSAmIDB4YzApICE9IDB4ODAgfHwgKHNyY1sx XSAmIDB4YzApICE9IDB4ODAgfHwgKHNyY1syXSAmIDB4YzApICE9IDB4ODApCi0JCQkJYnJlYWs7Ci0J CQlkID0gKChjICYgNykgPDwgMTgpIHwgKChzcmNbMF0gJiAweDNmKSA8PCAxMikgfCAoKHNyY1sxXSAm IDB4M2YpIDw8IDYpIHwgKHNyY1syXSAmIDB4M2YpOwotCQkJc3JjICs9IDM7Ci0JCX0KLQkJZWxzZQot CQkJYnJlYWs7Ci0JCWlmICgtLWRzaXplIDwgMCkKLQkJCWJyZWFrOwotCQlpZiAoZCA+IDB4ZmZmZikg ewotCQkJaWYgKC0tZHNpemUgPCAwIHx8IGQgPiAweDEwZmZmZikKLQkJCQlicmVhazsKLQkJCSooZGVz dCsrKSA9ICgoZCAtIDB4MTAwMDApID4+IDEwKSArIDB4ZDgwMDsKLQkJCSooZGVzdCsrKSA9IChkICYg MHgzZmYpICsgMHhkYzAwOwotCQl9Ci0JCWVsc2UKLQkJCSooZGVzdCsrKSA9IGQ7Ci0JfQotCSpkZXN0 ID0gMDsKLX0KLS8qIH19fSAqLwotCiBzdGF0aWMgdm9pZCBfcmFyX2ZpeF93aWRlKHdjaGFyX3QgKnN0 cikgLyoge3t7ICovCiB7CiAJd2NoYXJfdCAqd3JpdGUsCkBAIC03MzQsNyArNjYxLDYgQEAKIHsKIAl6 dmFsICpmaWxlOwogCXJhcl9maWxlX3QgKnJhciA9IE5VTEw7Ci0JaW50IGZpbGVfY291bnRlciA9IDA7 CgogCWlmICh6ZW5kX3BhcnNlX3BhcmFtZXRlcnMoWkVORF9OVU1fQVJHUygpIFRTUk1MU19DQywgInIi LCAmZmlsZSkgPT0gRkFJTFVSRSkgewogCQlyZXR1cm47CkBAIC03NDksMjY5ICs2NzUsNiBAQAogfQog LyogfX19ICovCgotLyoge3t7IHByb3RvIGJvb2wgUmFyRW50cnk6OmV4dHJhY3Qoc3RyaW5nIGRpciBb LCBzdHJpbmcgZmlsZXBhdGggXSkKLSAgIEV4dHJhY3QgZmlsZSBmcm9tIHRoZSBhcmNoaXZlICovCi1Q SFBfTUVUSE9EKHJhcmVudHJ5LCBleHRyYWN0KQoteyAvL2xvdHMgb2YgdmFyaWFibGVzLCBidXQgbm8g bmVlZCB0byBiZSBpbnRpbWlkYXRlZAotCWNoYXIJCQkJCSpkaXIsCi0JCQkJCQkJKmZpbGVwYXRoID0g TlVMTDsKLQlpbnQJCQkJCQlkaXJfbGVuLAotCQkJCQkJCWZpbGVwYXRoX2xlbiA9IDA7Ci0JY2hhcgkJ CQkJKmNvbnNpZGVyZWRfcGF0aDsKLQljaGFyCQkJCQljb25zaWRlcmVkX3BhdGhfcmVzW01BWFBBVEhM RU5dOwotCWludAkJCQkJCXdpdGhfc2Vjb25kX2FyZzsKLQotCXp2YWwJCQkJCSoqdG1wLAotCQkJCQkJ CSoqdG1wX25hbWU7Ci0JcmFyX2ZpbGVfdAkJCQkqcmFyID0gTlVMTDsKLQl6dmFsCQkJCQkqZW50cnlf b2JqID0gZ2V0VGhpcygpOwotCXN0cnVjdCBSQVJIZWFkZXJEYXRhRXgJZW50cnk7Ci0JSEFORExFCQkJ CQlleHRyYWN0X2hhbmRsZSA9IE5VTEw7Ci0JaW50CQkJCQkJcmVzdWx0OwotCWludAkJCQkJCWZvdW5k OwotCi0JaWYgKHplbmRfcGFyc2VfcGFyYW1ldGVycyhaRU5EX05VTV9BUkdTKCkgVFNSTUxTX0NDLCAi c3xzIiwgJmRpciwgJmRpcl9sZW4sICZmaWxlcGF0aCwgJmZpbGVwYXRoX2xlbikgPT0gRkFJTFVSRSAp IHsKLQkJcmV0dXJuOwotCX0KLQotCVJBUl9HRVRfUFJPUEVSVFkodG1wLCAicmFyZmlsZSIpOwotCVpF TkRfRkVUQ0hfUkVTT1VSQ0UocmFyLCByYXJfZmlsZV90ICosIHRtcCwgLTEsIGxlX3Jhcl9maWxlX25h bWUsIGxlX3Jhcl9maWxlKTsKLQotCS8qIERlY2lkZSB3aGVyZSB0byBleHRyYWN0ICovCi0Jd2l0aF9z ZWNvbmRfYXJnID0gKGZpbGVwYXRoX2xlbiAhPSAwKTsKLQotCS8vdGhlIGFyZ3VtZW50cyBhcmUgbXV0 dWFsbHkgZXhjbHVzaXZlLiBJZiB0aGUgc2Vjb25kIGlzIHNwZWNpZmllZCwgbXVzdCBpZ25vcmUgdGhl IGZpcnN0Ci0JaWYgKCF3aXRoX3NlY29uZF9hcmcpIHsKLQkJaWYgKGRpcl9sZW4gPT0gMCkgLy9ib3Ro IHBhcmFtcyBlbXB0eQotCQkJZGlyID0gIi4iOwotCQljb25zaWRlcmVkX3BhdGggPSBkaXI7Ci0JfQot CWVsc2UgewotCQljb25zaWRlcmVkX3BhdGggPSBmaWxlcGF0aDsKLQl9Ci0KLQlpZiAoT1BFTkJBU0VE SVJfQ0hFQ0tQQVRIKGNvbnNpZGVyZWRfcGF0aCkpIHsKLQkJUkVUVVJOX0ZBTFNFOwotCX0KLQlpZiAo IWV4cGFuZF9maWxlcGF0aChjb25zaWRlcmVkX3BhdGgsIGNvbnNpZGVyZWRfcGF0aF9yZXMgVFNSTUxT X0NDKSkgewotCQlSRVRVUk5fRkFMU0U7Ci0JfQotCi0JLyogRmluZCBmaWxlIGluc2lkZSBhcmNoaXZl ICovCi0JUkFSX0dFVF9QUk9QRVJUWSh0bXBfbmFtZSwgIm5hbWUiKTsKLQotCXJlc3VsdCA9IF9yYXJf ZmluZF9maWxlKHJhci0+ZXh0cmFjdF9vcGVuX2RhdGEsIFpfU1RSVkFMX1BQKHRtcF9uYW1lKSwKLQkJ JmV4dHJhY3RfaGFuZGxlLCAmZm91bmQsICZlbnRyeSk7Ci0KLQlpZiAoX3Jhcl9oYW5kbGVfZXJyb3Io cmVzdWx0IFRTUk1MU19DQykgPT0gRkFJTFVSRSkgewotCQlSRVRWQUxfRkFMU0U7Ci0JCWdvdG8gY2xl YW51cDsKLQl9Ci0KLQlpZiAoIWZvdW5kKSB7Ci0JCXBocF9lcnJvcl9kb2NyZWYoTlVMTCBUU1JNTFNf Q0MsIEVfV0FSTklORywKLQkJCSJDYW4ndCBmaW5kIGZpbGUgJXMgaW4gYXJjaGl2ZSAlcyIsIFpfU1RS VkFMX1BQKHRtcF9uYW1lKSwKLQkJCXJhci0+bGlzdF9vcGVuX2RhdGEtPkFyY05hbWUpOwotCQlSRVRW QUxfRkFMU0U7Ci0JCWdvdG8gY2xlYW51cDsKLQl9Ci0KLQkvKiBEbyBleHRyYWN0aW9uICovCi0JaWYg KCF3aXRoX3NlY29uZF9hcmcpCi0JCXJlc3VsdCA9IFJBUlByb2Nlc3NGaWxlKGV4dHJhY3RfaGFuZGxl LCBSQVJfRVhUUkFDVCwKLQkJCWNvbnNpZGVyZWRfcGF0aF9yZXMsIE5VTEwpOwotCWVsc2UKLQkJcmVz dWx0ID0gUkFSUHJvY2Vzc0ZpbGUoZXh0cmFjdF9oYW5kbGUsIFJBUl9FWFRSQUNULAotCQkJTlVMTCwg Y29uc2lkZXJlZF9wYXRoX3Jlcyk7Ci0KLQlpZiAoX3Jhcl9oYW5kbGVfZXJyb3IocmVzdWx0IFRTUk1M U19DQykgPT0gRkFJTFVSRSkgewotCQlSRVRWQUxfRkFMU0U7Ci0JfQotCWVsc2UgewotCQlSRVRWQUxf VFJVRTsKLQl9Ci0KLWNsZWFudXA6Ci0JaWYgKGV4dHJhY3RfaGFuZGxlICE9IE5VTEwpCi0JCVJBUkNs b3NlQXJjaGl2ZShleHRyYWN0X2hhbmRsZSk7Ci19Ci0vKiB9fX0gKi8KLQotLyoge3t7IHByb3RvIHN0 cmluZyBSYXJFbnRyeTo6Z2V0TmFtZSgpCi0gICBSZXR1cm4gZW50cnkgbmFtZSAqLwotUEhQX01FVEhP RChyYXJlbnRyeSwgZ2V0TmFtZSkKLXsKLQl6dmFsICoqdG1wOwotCXJhcl9maWxlX3QgKnJhciA9IE5V TEw7Ci0JenZhbCAqZW50cnlfb2JqID0gZ2V0VGhpcygpOwotCi0JUkFSX0dFVF9QUk9QRVJUWSh0bXAs ICJuYW1lIik7Ci0KLQljb252ZXJ0X3RvX3N0cmluZ19leCh0bXApOwotCVJFVFVSTl9TVFJJTkdMKFpf U1RSVkFMX1BQKHRtcCksIFpfU1RSTEVOX1BQKHRtcCksIDEpOwotfQotLyogfX19ICovCi0KLS8qIHt7 eyBwcm90byBpbnQgUmFyRW50cnk6OmdldFVucGFja2VkU2l6ZSgpCi0gICBSZXR1cm4gdW5wYWNrZWQg c2l6ZSBvZiB0aGUgZW50cnkgKi8KLVBIUF9NRVRIT0QocmFyZW50cnksIGdldFVucGFja2VkU2l6ZSkK LXsKLQl6dmFsICoqdG1wOwotCXJhcl9maWxlX3QgKnJhciA9IE5VTEw7Ci0JenZhbCAqZW50cnlfb2Jq ID0gZ2V0VGhpcygpOwotCi0JUkFSX0dFVF9QUk9QRVJUWSh0bXAsICJ1bnBhY2tlZF9zaXplIik7Ci0K LQljb252ZXJ0X3RvX2xvbmdfZXgodG1wKTsKLQlSRVRVUk5fTE9ORyhaX0xWQUxfUFAodG1wKSk7Ci19 Ci0vKiB9fX0gKi8KLQotLyoge3t7IHByb3RvIGludCBSYXJFbnRyeTo6Z2V0UGFja2VkU2l6ZSgpCi0g ICBSZXR1cm4gcGFja2VkIHNpemUgb2YgdGhlIGVudHJ5ICovCi1QSFBfTUVUSE9EKHJhcmVudHJ5LCBn ZXRQYWNrZWRTaXplKQotewotCXp2YWwgKip0bXA7Ci0JcmFyX2ZpbGVfdCAqcmFyID0gTlVMTDsKLQl6 dmFsICplbnRyeV9vYmogPSBnZXRUaGlzKCk7Ci0KLQlSQVJfR0VUX1BST1BFUlRZKHRtcCwgInBhY2tl ZF9zaXplIik7Ci0KLQljb252ZXJ0X3RvX2xvbmdfZXgodG1wKTsKLQlSRVRVUk5fTE9ORyhaX0xWQUxf UFAodG1wKSk7Ci19Ci0vKiB9fX0gKi8KLQotLyoge3t7IHByb3RvIGludCBSYXJFbnRyeTo6Z2V0SG9z dE9zKCkKLSAgIFJldHVybiBob3N0IE9TIG9mIHRoZSBlbnRyeSAqLwotUEhQX01FVEhPRChyYXJlbnRy eSwgZ2V0SG9zdE9zKQotewotCXp2YWwgKip0bXA7Ci0JcmFyX2ZpbGVfdCAqcmFyID0gTlVMTDsKLQl6 dmFsICplbnRyeV9vYmogPSBnZXRUaGlzKCk7Ci0KLQlSQVJfR0VUX1BST1BFUlRZKHRtcCwgImhvc3Rf b3MiKTsKLQotCWNvbnZlcnRfdG9fbG9uZ19leCh0bXApOwotCVJFVFVSTl9MT05HKFpfTFZBTF9QUCh0 bXApKTsKLX0KLS8qIH19fSAqLwotCi0vKiB7e3sgcHJvdG8gc3RyaW5nIFJhckVudHJ5OjpnZXRGaWxl VGltZSgpCi0gICBSZXR1cm4gbW9kaWZpY2F0aW9uIHRpbWUgb2YgdGhlIGVudHJ5ICovCi1QSFBfTUVU SE9EKHJhcmVudHJ5LCBnZXRGaWxlVGltZSkKLXsKLQl6dmFsICoqdG1wOwotCXJhcl9maWxlX3QgKnJh ciA9IE5VTEw7Ci0JenZhbCAqZW50cnlfb2JqID0gZ2V0VGhpcygpOwotCi0JUkFSX0dFVF9QUk9QRVJU WSh0bXAsICJmaWxlX3RpbWUiKTsKLQotCWNvbnZlcnRfdG9fc3RyaW5nX2V4KHRtcCk7Ci0JUkVUVVJO X1NUUklOR0woWl9TVFJWQUxfUFAodG1wKSwgWl9TVFJMRU5fUFAodG1wKSwgMSk7Ci19Ci0vKiB9fX0g Ki8KLQotLyoge3t7IHByb3RvIHN0cmluZyBSYXJFbnRyeTo6Z2V0Q3JjKCkKLSAgIFJldHVybiBDUkMg b2YgdGhlIGVudHJ5ICovCi1QSFBfTUVUSE9EKHJhcmVudHJ5LCBnZXRDcmMpCi17Ci0JenZhbCAqKnRt cDsKLQlyYXJfZmlsZV90ICpyYXIgPSBOVUxMOwotCXp2YWwgKmVudHJ5X29iaiA9IGdldFRoaXMoKTsK LQotCVJBUl9HRVRfUFJPUEVSVFkodG1wLCAiY3JjIik7Ci0KLQljb252ZXJ0X3RvX3N0cmluZ19leCh0 bXApOwotCVJFVFVSTl9TVFJJTkdMKFpfU1RSVkFMX1BQKHRtcCksIFpfU1RSTEVOX1BQKHRtcCksIDEp OwotfQotLyogfX19ICovCi0KLS8qIHt7eyBwcm90byBpbnQgUmFyRW50cnk6OmdldEF0dHIoKQotICAg UmV0dXJuIGF0dHJpYnV0ZXMgb2YgdGhlIGVudHJ5ICovCi1QSFBfTUVUSE9EKHJhcmVudHJ5LCBnZXRB dHRyKQotewotCXp2YWwgKip0bXA7Ci0JcmFyX2ZpbGVfdCAqcmFyID0gTlVMTDsKLQl6dmFsICplbnRy eV9vYmogPSBnZXRUaGlzKCk7Ci0KLQlSQVJfR0VUX1BST1BFUlRZKHRtcCwgImF0dHIiKTsKLQotCWNv bnZlcnRfdG9fbG9uZ19leCh0bXApOwotCVJFVFVSTl9MT05HKFpfTFZBTF9QUCh0bXApKTsKLX0KLS8q IH19fSAqLwotCi0vKiB7e3sgcHJvdG8gaW50IFJhckVudHJ5OjpnZXRWZXJzaW9uKCkKLSAgIFJldHVy biB2ZXJzaW9uIG9mIHRoZSBhcmNoaXZlciwgdXNlZCB0byBjcmVhdGUgdGhpcyBlbnRyeSAqLwotUEhQ X01FVEhPRChyYXJlbnRyeSwgZ2V0VmVyc2lvbikKLXsKLQl6dmFsICoqdG1wOwotCXJhcl9maWxlX3Qg KnJhciA9IE5VTEw7Ci0JenZhbCAqZW50cnlfb2JqID0gZ2V0VGhpcygpOwotCi0JUkFSX0dFVF9QUk9Q RVJUWSh0bXAsICJ2ZXJzaW9uIik7Ci0KLQljb252ZXJ0X3RvX2xvbmdfZXgodG1wKTsKLQlSRVRVUk5f TE9ORyhaX0xWQUxfUFAodG1wKSk7Ci19Ci0vKiB9fX0gKi8KLQotLyoge3t7IHByb3RvIGludCBSYXJF bnRyeTo6Z2V0TWV0aG9kKCkKLSAgIFJldHVybiBwYWNraW5nIG1ldGhvZCAqLwotUEhQX01FVEhPRChy YXJlbnRyeSwgZ2V0TWV0aG9kKQotewotCXp2YWwgKip0bXA7Ci0JcmFyX2ZpbGVfdCAqcmFyID0gTlVM TDsKLQl6dmFsICplbnRyeV9vYmogPSBnZXRUaGlzKCk7Ci0KLQlSQVJfR0VUX1BST1BFUlRZKHRtcCwg Im1ldGhvZCIpOwotCi0JY29udmVydF90b19sb25nX2V4KHRtcCk7Ci0JUkVUVVJOX0xPTkcoWl9MVkFM X1BQKHRtcCkpOwotfQotLyogfX19ICovCi0KLS8qIHt7eyBwcm90byByZXNvdXJjZSBSYXJFbnRyeTo6 Z2V0U3RyZWFtKCkKLSAgIFJldHVybiBwYWNraW5nIG1ldGhvZCAqLwotUEhQX01FVEhPRChyYXJlbnRy eSwgZ2V0U3RyZWFtKQotewotCXp2YWwgKip0bXAsICoqbmFtZTsKLQlyYXJfZmlsZV90ICpyYXIgPSBO VUxMOwotCXp2YWwgKmVudHJ5X29iaiA9IGdldFRoaXMoKTsKLQlwaHBfc3RyZWFtICpzdHJlYW0gPSBO VUxMOwotCi0JUkFSX0dFVF9QUk9QRVJUWShuYW1lLCAibmFtZSIpOwotCVJBUl9HRVRfUFJPUEVSVFko dG1wLCAicmFyZmlsZSIpOwotCVpFTkRfRkVUQ0hfUkVTT1VSQ0UocmFyLCByYXJfZmlsZV90ICosIHRt cCwgLTEsIGxlX3Jhcl9maWxlX25hbWUsIGxlX3Jhcl9maWxlKTsKLQotCXN0cmVhbSA9IHBocF9zdHJl YW1fcmFyX29wZW4ocmFyLT5leHRyYWN0X29wZW5fZGF0YS0+QXJjTmFtZSwKLQkJWl9TVFJWQUxfUFAo bmFtZSksICJyIiBTVFJFQU1TX0NDIFRTUk1MU19DQyk7Ci0KLQlpZiAoc3RyZWFtICE9IE5VTEwpIHsK LQkJcGhwX3N0cmVhbV90b196dmFsKHN0cmVhbSwgcmV0dXJuX3ZhbHVlKTsKLQl9Ci0gIGVsc2UKLSAg ICBSRVRWQUxfRkFMU0U7Ci19Ci0vKiB9fX0gKi8KLQotLyoge3t7IHByb3RvIGludCBSYXJFbnRyeTo6 aXNEaXJlY3RvcnkoKQotICAgUmV0dXJuIGlmIHRoZSBlbnRyeSBpcyBhIGRpcmVjdG9yeSAqLwotUEhQ X01FVEhPRChyYXJlbnRyeSwgaXNEaXJlY3RvcnkpCi17Ci0JenZhbCAqKnRtcDsKLQlyYXJfZmlsZV90 ICpyYXIgPSBOVUxMOwotCXp2YWwgKmVudHJ5X29iaiA9IGdldFRoaXMoKTsKLQotCVJBUl9HRVRfUFJP UEVSVFkodG1wLCAiZGlyZWN0b3J5Iik7Ci0KLQljb252ZXJ0X3RvX2Jvb2xlYW5fZXgodG1wKTsKLQlS RVRVUk5fQk9PTChaX0JWQUxfUFAodG1wKSk7Ci19Ci0vKiB9fX0gKi8KLQotCiAvKiB7e3sgYXJnaW5m byAqLwogWkVORF9CRUdJTl9BUkdfSU5GT19FWChhcmdpbmZvX3Jhcl9vcGVuLCAwLCAwLCAxKQogCVpF TkRfQVJHX0lORk8oMCwgZmlsZW5hbWUpCkBAIC0xMDQ3LDcgKzcxMCw3IEBACiAvKiB7e3sgcmFyX2Z1 bmN0aW9uc1tdCiAgKgogICovCi1mdW5jdGlvbl9lbnRyeSByYXJfZnVuY3Rpb25zW10gPSB7CitzdGF0 aWMgZnVuY3Rpb25fZW50cnkgcmFyX2Z1bmN0aW9uc1tdID0gewogCVBIUF9GRShyYXJfb3BlbiwJCWFy Z2luZm9fcmFyX29wZW4pCiAJUEhQX0ZFKHJhcl9saXN0LAkJYXJnaW5mb19yYXJfbGlzdCkKIAlQSFBf RkUocmFyX2VudHJ5X2dldCwJYXJnaW5mb19yYXJfZW50cnlfZ2V0KQpAQCAtMTA1NSwzMSArNzE4LDEz IEBACiAJUEhQX0ZFKHJhcl9jbG9zZSwJCWFyZ2luZm9fcmFyX2Nsb3NlKQogCXtOVUxMLCBOVUxMLCBO VUxMfQogfTsKLQotc3RhdGljIHplbmRfZnVuY3Rpb25fZW50cnkgcGhwX3Jhcl9jbGFzc19mdW5jdGlv bnNbXSA9IHsKLQlQSFBfTUUocmFyZW50cnksCQlleHRyYWN0LAkJCWFyZ2luZm9fcmFyZW50cnlfZXh0 cmFjdCwJWkVORF9BQ0NfUFVCTElDKQotCVBIUF9NRShyYXJlbnRyeSwJCWdldE5hbWUsCQkJYXJnaW5m b19yYXJfdm9pZCwJWkVORF9BQ0NfUFVCTElDKQotCVBIUF9NRShyYXJlbnRyeSwJCWdldFVucGFja2Vk U2l6ZSwJYXJnaW5mb19yYXJfdm9pZCwJWkVORF9BQ0NfUFVCTElDKQotCVBIUF9NRShyYXJlbnRyeSwJ CWdldFBhY2tlZFNpemUsCQlhcmdpbmZvX3Jhcl92b2lkLAlaRU5EX0FDQ19QVUJMSUMpCi0JUEhQX01F KHJhcmVudHJ5LAkJZ2V0SG9zdE9zLAkJCWFyZ2luZm9fcmFyX3ZvaWQsCVpFTkRfQUNDX1BVQkxJQykK LQlQSFBfTUUocmFyZW50cnksCQlnZXRGaWxlVGltZSwJCWFyZ2luZm9fcmFyX3ZvaWQsCVpFTkRfQUND X1BVQkxJQykKLQlQSFBfTUUocmFyZW50cnksCQlnZXRDcmMsCQkJCWFyZ2luZm9fcmFyX3ZvaWQsCVpF TkRfQUNDX1BVQkxJQykKLQlQSFBfTUUocmFyZW50cnksCQlnZXRBdHRyLAkJCWFyZ2luZm9fcmFyX3Zv aWQsCVpFTkRfQUNDX1BVQkxJQykKLQlQSFBfTUUocmFyZW50cnksCQlnZXRWZXJzaW9uLAkJCWFyZ2lu Zm9fcmFyX3ZvaWQsCVpFTkRfQUNDX1BVQkxJQykKLQlQSFBfTUUocmFyZW50cnksCQlnZXRNZXRob2Qs CQkJYXJnaW5mb19yYXJfdm9pZCwJWkVORF9BQ0NfUFVCTElDKQotCVBIUF9NRShyYXJlbnRyeSwJCWdl dFN0cmVhbSwJCQlhcmdpbmZvX3Jhcl92b2lkLAlaRU5EX0FDQ19QVUJMSUMpCi0JUEhQX01FKHJhcmVu dHJ5LAkJaXNEaXJlY3RvcnksCQlhcmdpbmZvX3Jhcl92b2lkLAlaRU5EX0FDQ19QVUJMSUMpCi0Je05V TEwsIE5VTEwsIE5VTEx9Ci19OwogLyogfX19ICovCgogLyoge3t7IFBIUF9NSU5JVF9GVU5DVElPTgog ICovCiBQSFBfTUlOSVRfRlVOQ1RJT04ocmFyKQogewotCXplbmRfY2xhc3NfZW50cnkgcmFyX2NsYXNz X2VudHJ5OwotCUlOSVRfQ0xBU1NfRU5UUlkocmFyX2NsYXNzX2VudHJ5LCAiUmFyRW50cnkiLCBwaHBf cmFyX2NsYXNzX2Z1bmN0aW9ucyk7Ci0JcmFyX2NsYXNzX2VudHJ5X3B0ciA9IHplbmRfcmVnaXN0ZXJf aW50ZXJuYWxfY2xhc3MoJnJhcl9jbGFzc19lbnRyeSBUU1JNTFNfQ0MpOworCW1pbml0X3JhcmVudHJ5 KFRTUk1MU19DKTsKCiAJbGVfcmFyX2ZpbGUgPSB6ZW5kX3JlZ2lzdGVyX2xpc3RfZGVzdHJ1Y3RvcnNf ZXgoX3Jhcl9maWxlX2xpc3RfZHRvciwgTlVMTCwgbGVfcmFyX2ZpbGVfbmFtZSwgbW9kdWxlX251bWJl cik7CgpAQCAtMTEwNCwxNCArNzQ5LDE0IEBACiAJcGhwX2luZm9fcHJpbnRfdGFibGVfcm93KDIsICJS YXIgRVhUIHZlcnNpb24iLCBQSFBfUkFSX1ZFUlNJT04pOwogCXBocF9pbmZvX3ByaW50X3RhYmxlX3Jv dygyLCAiUmV2aXNpb24iLCAiJFJldmlzaW9uJCIpOwoKLQlpZiAoUkFSVkVSX0JFVEEgIT0gMCkgewot CQlzcHJpbnRmKHZlcnNpb24sIiVkLiUwMmQgYmV0YSVkIHBhdGNoJWQgJWQtJWQtJWQiLCBSQVJWRVJf TUFKT1IsCi0JCQlSQVJWRVJfTUlOT1IsIFJBUlZFUl9CRVRBLCBSQVJWRVJfUEFUQ0gsIFJBUlZFUl9Z RUFSLCBSQVJWRVJfTU9OVEgsCi0JCQlSQVJWRVJfREFZKTsKLQl9IGVsc2UgewotCQlzcHJpbnRmKHZl cnNpb24sIiVkLiUwMmQgcGF0Y2glZCAlZC0lZC0lZCIsIFJBUlZFUl9NQUpPUiwgUkFSVkVSX01JTk9S LAotCQkJUkFSVkVSX1BBVENILCBSQVJWRVJfWUVBUiwgUkFSVkVSX01PTlRILCBSQVJWRVJfREFZKTsK LQl9CisjaWYJUkFSVkVSX0JFVEEgIT0gMAorCXNwcmludGYodmVyc2lvbiwiJWQuJTAyZCBiZXRhJWQg cGF0Y2glZCAlZC0lZC0lZCIsIFJBUlZFUl9NQUpPUiwKKwkJUkFSVkVSX01JTk9SLCBSQVJWRVJfQkVU QSwgUkFSVkVSX1BBVENILCBSQVJWRVJfWUVBUiwgUkFSVkVSX01PTlRILAorCQlSQVJWRVJfREFZKTsK KyNlbHNlCisJc3ByaW50Zih2ZXJzaW9uLCIlZC4lMDJkIHBhdGNoJWQgJWQtJWQtJWQiLCBSQVJWRVJf TUFKT1IsIFJBUlZFUl9NSU5PUiwKKwkJUkFSVkVSX1BBVENILCBSQVJWRVJfWUVBUiwgUkFSVkVSX01P TlRILCBSQVJWRVJfREFZKTsKKyNlbmRpZgoKIAlwaHBfaW5mb19wcmludF90YWJsZV9yb3coMiwgIlVu UkFSIHZlcnNpb24iLCB2ZXJzaW9uKTsKIAlwaHBfaW5mb19wcmludF90YWJsZV9lbmQoKTsKCk1vZGlm aWVkOiBwZWNsL3Jhci90cnVuay9yYXJfc3RyZWFtLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGVjbC9yYXIvdHJ1bmsv cmFyX3N0cmVhbS5jCTIwMDktMTEtMjkgMDM6MzI6NTQgVVRDIChyZXYgMjkxNDEwKQorKysgcGVjbC9y YXIvdHJ1bmsvcmFyX3N0cmVhbS5jCTIwMDktMTEtMjkgMDM6NDE6MTEgVVRDIChyZXYgMjkxNDExKQpA QCAtMjMyLDcgKzIzMiw3IEBACiAJCQlzZWxmLT5oZWFkZXJfZGF0YS5VbnBTaXplKSk7CiAJCWludCBw cm9jZXNzX3Jlc3VsdCA9IFJBUlByb2Nlc3NGaWxlQ2h1bmtJbml0KHNlbGYtPnJhcl9oYW5kbGUpOwoK LQkJaWYgKF9yYXJfaGFuZGxlX2Vycm9yKHJlc3VsdCBUU1JNTFNfQ0MpID09IEZBSUxVUkUpIHsKKwkJ aWYgKF9yYXJfaGFuZGxlX2Vycm9yKHByb2Nlc3NfcmVzdWx0IFRTUk1MU19DQykgPT0gRkFJTFVSRSkg ewogCQkJZ290byBjbGVhbnVwOwogCQl9CgoKQWRkZWQ6IHBlY2wvcmFyL3RydW5rL3JhcmVudHJ5LmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gcGVjbC9yYXIvdHJ1bmsvcmFyZW50cnkuYwkgICAgICAgICAgICAgICAgICAgICAg ICAocmV2IDApCisrKyBwZWNsL3Jhci90cnVuay9yYXJlbnRyeS5jCTIwMDktMTEtMjkgMDM6NDE6MTEg VVRDIChyZXYgMjkxNDExKQpAQCAtMCwwICsxLDU2MyBAQAorLyogJElkJCAqLworCisjaW5jbHVkZSAi cGhwLmgiCisjaW5jbHVkZSAicGhwX3Jhci5oIgorCisvKiB7e3sgR2xvYmFscyB3aXRoIGV4dGVybmFs IGxpbmFrYWdlICovCit6ZW5kX2NsYXNzX2VudHJ5ICpyYXJfY2xhc3NfZW50cnlfcHRyOworLyogfX19 ICovCisKKy8qIHt7eyBHbG9iYWxzIHdpdGggaW50ZXJuYWwgbGluYWthZ2UgKi8KK3N0YXRpYyB6ZW5k X29iamVjdF9oYW5kbGVycyByYXJfb2JqZWN0X2hhbmRsZXJzOworLyogfX19ICovCisKKy8qIHt7eyBG dW5jdGlvbiBwcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgd2l0aCBpbnRlcm5hbCBsaW5rYWdlICovCitz dGF0aWMgenZhbCAqKl9yYXJfZW50cnlfZ2V0X3Byb3BlcnR5KHp2YWwgKiwgY2hhciAqLCBpbnQgVFNS TUxTX0RDKTsKK3N0YXRpYyB2b2lkIF9yYXJfZG9zX2RhdGVfdG9fdGV4dChpbnQgZG9zX3RpbWUsIGNo YXIgKmRhdGVfc3RyaW5nKTsKK3N0YXRpYyB6ZW5kX29iamVjdF92YWx1ZSByYXJlbnRyeV9jZV9jcmVh dGVfb2JqZWN0KHplbmRfY2xhc3NfZW50cnkgKmNsYXNzX3R5cGUgVFNSTUxTX0RDKTsKKy8qIH19fSAq LworCisvKiB7e3sgRnVuY3Rpb25zIHdpdGggZXh0ZXJuYWwgbGlua2FnZSAqLworLyogc2hvdWxkIGJl IHBhc3NlZCB0aGUgbGFzdCBlbnRyeSB0aGF0IGNvcnJlc3BvbmRzIHRvIGEgZ2l2ZW4gZmlsZQorICog b25seSB0aGF0IG9uZSBoYXMgdGhlIGNvcnJlY3QgQ1JDLiBTdGlsbCwgaXQgbWF5IGhhdmUgYSB3cm9u ZyBwYWNrZWRTaXplICovCit2b2lkIF9yYXJfZW50cnlfdG9fenZhbChzdHJ1Y3QgUkFSSGVhZGVyRGF0 YUV4ICplbnRyeSwgenZhbCAqb2JqZWN0LAorCQkJCQkJCSAgIHVuc2lnbmVkIGxvbmcgcGFja2VkX3Np emUgVFNSTUxTX0RDKSAvKiB7e3sgKi8KK3sKKwljaGFyIHRtcF9zIFtNQVhfTEVOR1RIX09GX0xPTkcg KyAxXTsKKwljaGFyIHRpbWVbNTBdOworCWNoYXIgKmZpbGVuYW1lOworCWxvbmcgdW5wX3NpemU7CisK KwlpZiAoc2l6ZW9mKGxvbmcpID49IDgpCisJCXVucF9zaXplID0gKChsb25nKSBlbnRyeS0+VW5wU2l6 ZSkgKyAoKChsb25nKSBlbnRyeS0+VW5wU2l6ZUhpZ2gpIDw8IDMyKTsKKwllbHNlIHsKKwkJLy9mb3Ig MzItYml0IGxvbmcsIGF0IGxlYXN0IGRvbid0IGdpdmUgbmVnYXRpdmUgdmFsdWVzCisJCWlmICgodW5z aWduZWQgbG9uZykgZW50cnktPlVucFNpemUgPiAodW5zaWduZWQgbG9uZykgTE9OR19NQVgKKwkJCQl8 fCBlbnRyeS0+VW5wU2l6ZUhpZ2ggIT0gMCkKKwkJCXVucF9zaXplID0gTE9OR19NQVg7CisJCWVsc2UK KwkJCXVucF9zaXplID0gKGxvbmcpIGVudHJ5LT5VbnBTaXplOworCX0KKworCS8qIDIgaW5zdGVhZCBv ZiBzaXplb2Yod2NoYXJfdCkgd291bGQgc3VmZmljZSwgSSB0aGluay4gSSBkb3VidAorCSAqIF9yYXJf d2lkZV90b191dGYgaGFuZGxlcyBjaGFyYWN0ZXJzIG5vdCBpbiBVQ1MtMi4gQnV0IGJldHRlciBiZSBz YWZlICovCisJZmlsZW5hbWUgPSAoY2hhciopIGVtYWxsb2Moc2l6ZW9mKGVudHJ5LT5GaWxlTmFtZVcp ICogc2l6ZW9mKHdjaGFyX3QpKTsKKworCWlmIChwYWNrZWRfc2l6ZSA+ICh1bnNpZ25lZCBsb25nKSBM T05HX01BWCkKKwkJcGFja2VkX3NpemUgPSBMT05HX01BWDsKKwlfcmFyX3dpZGVfdG9fdXRmKGVudHJ5 LT5GaWxlTmFtZVcsIGZpbGVuYW1lLAorCQlzaXplb2YoZW50cnktPkZpbGVOYW1lVykgKiBzaXplb2Yo d2NoYXJfdCkpOworCS8qIHdlJ3JlIG5vdCBpbiBjbGFzcyBzY29wZSwgc28gd2UgY2Fubm90IGNoYW5n ZSB0aGUgY2xhc3MgcHJpdmF0ZQorCSAqIHByb3BlcnRpZXMgZnJvbSBoZXJlIHdpdGggYWRkX3Byb3Bl cnR5X3gKKwkgKiB6ZW5kX3VwZGF0ZV9wcm9wZXJ0eV94IHVwZGF0ZXMgdGhlIHNjb3BlIGFjY29yZGlu Z2x5ICovCisJemVuZF91cGRhdGVfcHJvcGVydHlfc3RyaW5nKHJhcl9jbGFzc19lbnRyeV9wdHIsIG9i amVjdCwgIm5hbWUiLAorCQlzaXplb2YoIm5hbWUiKSAtIDEsIGZpbGVuYW1lIFRTUk1MU19DQyk7CisJ emVuZF91cGRhdGVfcHJvcGVydHlfbG9uZyhyYXJfY2xhc3NfZW50cnlfcHRyLCBvYmplY3QsICJ1bnBh Y2tlZF9zaXplIiwKKwkJc2l6ZW9mKCJ1bnBhY2tlZF9zaXplIikgLSAxLCB1bnBfc2l6ZSBUU1JNTFNf Q0MpOworCXplbmRfdXBkYXRlX3Byb3BlcnR5X2xvbmcocmFyX2NsYXNzX2VudHJ5X3B0ciwgb2JqZWN0 LCAicGFja2VkX3NpemUiLAorCQlzaXplb2YoInBhY2tlZF9zaXplIikgLSAxLCBwYWNrZWRfc2l6ZSBU U1JNTFNfQ0MpOworCXplbmRfdXBkYXRlX3Byb3BlcnR5X2xvbmcocmFyX2NsYXNzX2VudHJ5X3B0ciwg b2JqZWN0LCAiaG9zdF9vcyIsCisJCXNpemVvZigiaG9zdF9vcyIpIC0gMSwgZW50cnktPkhvc3RPUyBU U1JNTFNfQ0MpOworCisJX3Jhcl9kb3NfZGF0ZV90b190ZXh0KGVudHJ5LT5GaWxlVGltZSwgdGltZSk7 CisJemVuZF91cGRhdGVfcHJvcGVydHlfc3RyaW5nKHJhcl9jbGFzc19lbnRyeV9wdHIsIG9iamVjdCwg ImZpbGVfdGltZSIsCisJCXNpemVvZigiZmlsZV90aW1lIikgLSAxLCB0aW1lIFRTUk1MU19DQyk7CisK KwlzcHJpbnRmKHRtcF9zLCAiJWx4IiwgZW50cnktPkZpbGVDUkMpOworCXplbmRfdXBkYXRlX3Byb3Bl cnR5X3N0cmluZyhyYXJfY2xhc3NfZW50cnlfcHRyLCBvYmplY3QsICJjcmMiLAorCQlzaXplb2YoImNy YyIpIC0gMSwgdG1wX3MgVFNSTUxTX0NDKTsKKworCXplbmRfdXBkYXRlX3Byb3BlcnR5X2xvbmcocmFy X2NsYXNzX2VudHJ5X3B0ciwgb2JqZWN0LCAiYXR0ciIsCisJCXNpemVvZigiYXR0ciIpIC0gMSwgZW50 cnktPkZpbGVBdHRyIFRTUk1MU19DQyk7CisJemVuZF91cGRhdGVfcHJvcGVydHlfbG9uZyhyYXJfY2xh c3NfZW50cnlfcHRyLCBvYmplY3QsICJ2ZXJzaW9uIiwKKwkJc2l6ZW9mKCJ2ZXJzaW9uIikgLSAxLCBl bnRyeS0+VW5wVmVyIFRTUk1MU19DQyk7CisJemVuZF91cGRhdGVfcHJvcGVydHlfbG9uZyhyYXJfY2xh c3NfZW50cnlfcHRyLCBvYmplY3QsICJtZXRob2QiLAorCQlzaXplb2YoIm1ldGhvZCIpIC0gMSwgZW50 cnktPk1ldGhvZCBUU1JNTFNfQ0MpOworCXplbmRfdXBkYXRlX3Byb3BlcnR5X2xvbmcocmFyX2NsYXNz X2VudHJ5X3B0ciwgb2JqZWN0LCAiZmxhZ3MiLAorCQlzaXplb2YoImZsYWdzIikgLSAxLCBlbnRyeS0+ RmxhZ3MgVFNSTUxTX0NDKTsKKworCWVmcmVlKGZpbGVuYW1lKTsKK30KKy8qIH19fSAqLworLyogfX19 ICovCisKKy8qIHt7eyBIZWxwZXIgZnVuY3Rpb25zIGFuZCBwcmVwcm9jZXNzb3IgZGVmaW5pdGlvbnMg Ki8KKyNkZWZpbmUgUkFSX0dFVF9QUk9QRVJUWSh2YXIsIHByb3BfbmFtZSkgXAorCWlmICghZW50cnlf b2JqKSB7IFwKKwkJcGhwX2Vycm9yX2RvY3JlZihOVUxMIFRTUk1MU19DQywgRV9XQVJOSU5HLCAidGhp cyBtZXRob2QgY2Fubm90IGJlIGNhbGxlZCBzdGF0aWNhbGx5Iik7IFwKKwkJUkVUVVJOX0ZBTFNFOyBc CisJfSBcCisJaWYgKCh2YXIgPSBfcmFyX2VudHJ5X2dldF9wcm9wZXJ0eShlbnRyeV9vYmosIHByb3Bf bmFtZSwgc2l6ZW9mKHByb3BfbmFtZSkgVFNSTUxTX0NDKSkgPT0gTlVMTCkgeyBcCisJCVJFVFVSTl9G QUxTRTsgXAorCX0KKworI2RlZmluZSBSRUdfUkFSX0NMQVNTX0NPTlNUX0xPTkcoY29uc3RfbmFtZSwg dmFsdWUpIFwKKwl6ZW5kX2RlY2xhcmVfY2xhc3NfY29uc3RhbnRfbG9uZyhyYXJfY2xhc3NfZW50cnlf cHRyLCBjb25zdF9uYW1lLCBcCisJCXNpemVvZihjb25zdF9uYW1lKSAtIDEsIChsb25nKSB2YWx1ZSBU U1JNTFNfQ0MpCisKKyNkZWZpbmUgUkVHX1JBUl9QUk9QRVJUWShuYW1lLCBjb21tZW50KSBcCisJX3Jh cl9kZWNsX3ByaXZfcHJvcF9udWxsKHJhcl9jbGFzc19lbnRyeV9wdHIsIG5hbWUsIHNpemVvZihuYW1l KSAtMSwgXAorCQljb21tZW50LCBzaXplb2YoY29tbWVudCkgLSAxIFRTUk1MU19DQykKKworc3RhdGlj IGludCBfcmFyX2RlY2xfcHJpdl9wcm9wX251bGwoemVuZF9jbGFzc19lbnRyeSAqY2UsIGNvbnN0IGNo YXIgKm5hbWUsCisJCQkJCQkJCQkgaW50IG5hbWVfbGVuZ3RoLCBjaGFyICpkb2NfY29tbWVudCwKKwkJ CQkJCQkJCSBpbnQgZG9jX2NvbW1lbnRfbGVuIFRTUk1MU19EQykgLyoge3t7ICovCit7CisJenZhbCAq cHJvcGVydHk7CisJQUxMT0NfUEVSTUFORU5UX1pWQUwocHJvcGVydHkpOworCUlOSVRfWlZBTCgqcHJv cGVydHkpOworCXJldHVybiB6ZW5kX2RlY2xhcmVfcHJvcGVydHlfZXgoY2UsIG5hbWUsIG5hbWVfbGVu Z3RoLCBwcm9wZXJ0eSwKKwkJWkVORF9BQ0NfUFJJVkFURSwgZG9jX2NvbW1lbnQsIGRvY19jb21tZW50 X2xlbiBUU1JNTFNfQ0MpOworfQorLyogfX19ICovCisKK3N0YXRpYyB6dmFsICoqX3Jhcl9lbnRyeV9n ZXRfcHJvcGVydHkoenZhbCAqZW50cnlfb2JqLCBjaGFyICpuYW1lLCBpbnQgbmFtZWxlbiBUU1JNTFNf REMpIC8qIHt7eyAqLworeworCXp2YWwgKip0bXA7CisJY2hhciAqbWFuZ2xlZF9uYW1lOworCWludCBt YW5nbGVkX25hbWVfbGVuOworCisJLy9wZXJoYXBzIGNsZWFuZXIgYWx0ZXJuYXRpdmU6IHVzZSBaX09C Sl9IQU5ETEVSX1AoZW50cnlfb2JqLCByZWFkX3Byb3BlcnR5KQorCS8vYW5vdGhlciB3YXkgdG8gYXZv aWQgbWVtIGFsbG9jYXRpb24gd291bGQgYmUgdG8gZ2V0IHRoZSBtYW5nbGVkIG5hbWUgZnJvbQorCS8v Y2UtPnByb3BlcnRpZXNfaW5mby5uYW1lIChwcm9wZXJ0aWVzX2luZm8gaGFzaCB0YWJsZSBpbmRleGVz IGJ5IHVubWFuZ2xlZCBuYW1lKQorCisJemVuZF9tYW5nbGVfcHJvcGVydHlfbmFtZSgmbWFuZ2xlZF9u YW1lLCAmbWFuZ2xlZF9uYW1lX2xlbiwgIlJhckVudHJ5IiwKKwkJc2l6ZW9mKCJSYXJFbnRyeSIpIC0g MSwgbmFtZSwgbmFtZWxlbiwgMCk7CisJaWYgKHplbmRfaGFzaF9maW5kKFpfT0JKUFJPUF9QKGVudHJ5 X29iaiksIG1hbmdsZWRfbmFtZSwgbWFuZ2xlZF9uYW1lX2xlbiwKKwkJCSh2b2lkKiopICZ0bXApID09 IEZBSUxVUkUpIHsKKwkJcGhwX2Vycm9yX2RvY3JlZihOVUxMIFRTUk1MU19DQywgRV9XQVJOSU5HLAor CQkJIkJ1ZzogdW5hYmxlIHRvIGZpbmQgcHJvcGVydHkgJyVzJyIsIG5hbWUpOworCQllZnJlZShtYW5n bGVkX25hbWUpOworCQlyZXR1cm4gTlVMTDsKKwl9CisJZWZyZWUobWFuZ2xlZF9uYW1lKTsKKwlyZXR1 cm4gdG1wOworfQorLyogfX19ICovCisKK3N0YXRpYyB2b2lkIF9yYXJfZG9zX2RhdGVfdG9fdGV4dChp bnQgZG9zX3RpbWUsIGNoYXIgKmRhdGVfc3RyaW5nKSAvKiB7e3sgKi8KK3sKKwlpbnQgc2Vjb25kLCBt aW51dGUsIGhvdXIsIGRheSwgbW9udGgsIHllYXI7CisJLyogZm9sbG93aW5nIGxpbmVzIHdlcmUgdGFr ZW4gZnJvbSB0aW1lZm4uY3BwICovCisJc2Vjb25kID0gKGRvc190aW1lICYgMHgxZikqMjsKKwltaW51 dGUgPSAoZG9zX3RpbWU+PjUpICYgMHgzZjsKKwlob3VyICAgPSAoZG9zX3RpbWU+PjExKSAmIDB4MWY7 CisJZGF5ICAgID0gKGRvc190aW1lPj4xNikgJiAweDFmOworCW1vbnRoICA9IChkb3NfdGltZT4+MjEp ICYgMHgwZjsKKwl5ZWFyICAgPSAoZG9zX3RpbWU+PjI1KSsxOTgwOworCXNwcmludGYoZGF0ZV9zdHJp bmcsICIldS0lMDJ1LSUwMnUgJTAydTolMDJ1OiUwMnUiLCB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBt aW51dGUsIHNlY29uZCk7Cit9CisvKiB9fX0gKi8KKworc3RhdGljIHplbmRfb2JqZWN0X3ZhbHVlIHJh cmVudHJ5X2NlX2NyZWF0ZV9vYmplY3QoemVuZF9jbGFzc19lbnRyeSAqY2xhc3NfdHlwZSBUU1JNTFNf REMpIC8qIHt7eyAqLworeworCXplbmRfb2JqZWN0X3ZhbHVlCXpvdjsKKwl6ZW5kX29iamVjdAkJCSp6 b2JqOworCXp2YWwJCQkJKnRtcDsKKworCXpvYmogPSBlbWFsbG9jKHNpemVvZiAqem9iaik7CisJemVu ZF9vYmplY3Rfc3RkX2luaXQoem9iaiwgY2xhc3NfdHlwZSBUU1JNTFNfQ0MpOworCisJemVuZF9oYXNo X2NvcHkoem9iai0+cHJvcGVydGllcywgJihjbGFzc190eXBlLT5kZWZhdWx0X3Byb3BlcnRpZXMpLAor CQkoY29weV9jdG9yX2Z1bmNfdCkgenZhbF9hZGRfcmVmLCAmdG1wLCBzaXplb2YoenZhbCopKTsKKwl6 b3YuaGFuZGxlID0gemVuZF9vYmplY3RzX3N0b3JlX3B1dCh6b2JqLCBOVUxMLAorCQkoemVuZF9vYmpl Y3RzX2ZyZWVfb2JqZWN0X3N0b3JhZ2VfdCkgemVuZF9vYmplY3Rfc3RkX2R0b3IsCisJCU5VTEwgVFNS TUxTX0NDKTsKKwl6b3YuaGFuZGxlcnMgPSAmcmFyX29iamVjdF9oYW5kbGVyczsKKwlyZXR1cm4gem92 OworfQorLyogfX19ICovCisvKiB9fX0gKi8KKworLyoge3t7IE1ldGhvZHMgKi8KKy8qIHt7eyBwcm90 byBib29sIFJhckVudHJ5OjpleHRyYWN0KHN0cmluZyBkaXIgWywgc3RyaW5nIGZpbGVwYXRoIF0pCisg ICBFeHRyYWN0IGZpbGUgZnJvbSB0aGUgYXJjaGl2ZSAqLworUEhQX01FVEhPRChyYXJlbnRyeSwgZXh0 cmFjdCkKK3sgLy9sb3RzIG9mIHZhcmlhYmxlcywgYnV0IG5vIG5lZWQgdG8gYmUgaW50aW1pZGF0ZWQK KwljaGFyCQkJCQkqZGlyLAorCQkJCQkJCSpmaWxlcGF0aCA9IE5VTEw7CisJaW50CQkJCQkJZGlyX2xl biwKKwkJCQkJCQlmaWxlcGF0aF9sZW4gPSAwOworCWNoYXIJCQkJCSpjb25zaWRlcmVkX3BhdGg7CisJ Y2hhcgkJCQkJY29uc2lkZXJlZF9wYXRoX3Jlc1tNQVhQQVRITEVOXTsKKwlpbnQJCQkJCQl3aXRoX3Nl Y29uZF9hcmc7CisKKwl6dmFsCQkJCQkqKnRtcCwKKwkJCQkJCQkqKnRtcF9uYW1lOworCXJhcl9maWxl X3QJCQkJKnJhciA9IE5VTEw7CisJenZhbAkJCQkJKmVudHJ5X29iaiA9IGdldFRoaXMoKTsKKwlzdHJ1 Y3QgUkFSSGVhZGVyRGF0YUV4CWVudHJ5OworCUhBTkRMRQkJCQkJZXh0cmFjdF9oYW5kbGUgPSBOVUxM OworCWludAkJCQkJCXJlc3VsdDsKKwlpbnQJCQkJCQlmb3VuZDsKKworCWlmICh6ZW5kX3BhcnNlX3Bh cmFtZXRlcnMoWkVORF9OVU1fQVJHUygpIFRTUk1MU19DQywgInN8cyIsICZkaXIsICZkaXJfbGVuLCAm ZmlsZXBhdGgsICZmaWxlcGF0aF9sZW4pID09IEZBSUxVUkUgKSB7CisJCXJldHVybjsKKwl9CisKKwlS QVJfR0VUX1BST1BFUlRZKHRtcCwgInJhcmZpbGUiKTsKKwlaRU5EX0ZFVENIX1JFU09VUkNFKHJhciwg cmFyX2ZpbGVfdCAqLCB0bXAsIC0xLCBsZV9yYXJfZmlsZV9uYW1lLCBsZV9yYXJfZmlsZSk7CisKKwkv KiBEZWNpZGUgd2hlcmUgdG8gZXh0cmFjdCAqLworCXdpdGhfc2Vjb25kX2FyZyA9IChmaWxlcGF0aF9s ZW4gIT0gMCk7CisKKwkvL3RoZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gSWYgdGhl IHNlY29uZCBpcyBzcGVjaWZpZWQsIG11c3QgaWdub3JlIHRoZSBmaXJzdAorCWlmICghd2l0aF9zZWNv bmRfYXJnKSB7CisJCWlmIChkaXJfbGVuID09IDApIC8vYm90aCBwYXJhbXMgZW1wdHkKKwkJCWRpciA9 ICIuIjsKKwkJY29uc2lkZXJlZF9wYXRoID0gZGlyOworCX0KKwllbHNlIHsKKwkJY29uc2lkZXJlZF9w YXRoID0gZmlsZXBhdGg7CisJfQorCisJaWYgKE9QRU5CQVNFRElSX0NIRUNLUEFUSChjb25zaWRlcmVk X3BhdGgpKSB7CisJCVJFVFVSTl9GQUxTRTsKKwl9CisJaWYgKCFleHBhbmRfZmlsZXBhdGgoY29uc2lk ZXJlZF9wYXRoLCBjb25zaWRlcmVkX3BhdGhfcmVzIFRTUk1MU19DQykpIHsKKwkJUkVUVVJOX0ZBTFNF OworCX0KKworCS8qIEZpbmQgZmlsZSBpbnNpZGUgYXJjaGl2ZSAqLworCVJBUl9HRVRfUFJPUEVSVFko dG1wX25hbWUsICJuYW1lIik7CisKKwlyZXN1bHQgPSBfcmFyX2ZpbmRfZmlsZShyYXItPmV4dHJhY3Rf b3Blbl9kYXRhLCBaX1NUUlZBTF9QUCh0bXBfbmFtZSksCisJCSZleHRyYWN0X2hhbmRsZSwgJmZvdW5k LCAmZW50cnkpOworCisJaWYgKF9yYXJfaGFuZGxlX2Vycm9yKHJlc3VsdCBUU1JNTFNfQ0MpID09IEZB SUxVUkUpIHsKKwkJUkVUVkFMX0ZBTFNFOworCQlnb3RvIGNsZWFudXA7CisJfQorCisJaWYgKCFmb3Vu ZCkgeworCQlwaHBfZXJyb3JfZG9jcmVmKE5VTEwgVFNSTUxTX0NDLCBFX1dBUk5JTkcsCisJCQkiQ2Fu J3QgZmluZCBmaWxlICVzIGluIGFyY2hpdmUgJXMiLCBaX1NUUlZBTF9QUCh0bXBfbmFtZSksCisJCQly YXItPmxpc3Rfb3Blbl9kYXRhLT5BcmNOYW1lKTsKKwkJUkVUVkFMX0ZBTFNFOworCQlnb3RvIGNsZWFu dXA7CisJfQorCisJLyogRG8gZXh0cmFjdGlvbiAqLworCWlmICghd2l0aF9zZWNvbmRfYXJnKQorCQly ZXN1bHQgPSBSQVJQcm9jZXNzRmlsZShleHRyYWN0X2hhbmRsZSwgUkFSX0VYVFJBQ1QsCisJCQljb25z aWRlcmVkX3BhdGhfcmVzLCBOVUxMKTsKKwllbHNlCisJCXJlc3VsdCA9IFJBUlByb2Nlc3NGaWxlKGV4 dHJhY3RfaGFuZGxlLCBSQVJfRVhUUkFDVCwKKwkJCU5VTEwsIGNvbnNpZGVyZWRfcGF0aF9yZXMpOwor CisJaWYgKF9yYXJfaGFuZGxlX2Vycm9yKHJlc3VsdCBUU1JNTFNfQ0MpID09IEZBSUxVUkUpIHsKKwkJ UkVUVkFMX0ZBTFNFOworCX0KKwllbHNlIHsKKwkJUkVUVkFMX1RSVUU7CisJfQorCitjbGVhbnVwOgor CWlmIChleHRyYWN0X2hhbmRsZSAhPSBOVUxMKQorCQlSQVJDbG9zZUFyY2hpdmUoZXh0cmFjdF9oYW5k bGUpOworfQorLyogfX19ICovCisKKy8qIHt7eyBwcm90byBzdHJpbmcgUmFyRW50cnk6OmdldE5hbWUo KQorICAgUmV0dXJuIGVudHJ5IG5hbWUgKi8KK1BIUF9NRVRIT0QocmFyZW50cnksIGdldE5hbWUpCit7 CisJenZhbCAqKnRtcDsKKwl6dmFsICplbnRyeV9vYmogPSBnZXRUaGlzKCk7CisKKwlSQVJfR0VUX1BS T1BFUlRZKHRtcCwgIm5hbWUiKTsKKworCWNvbnZlcnRfdG9fc3RyaW5nX2V4KHRtcCk7CisJUkVUVVJO X1NUUklOR0woWl9TVFJWQUxfUFAodG1wKSwgWl9TVFJMRU5fUFAodG1wKSwgMSk7Cit9CisvKiB9fX0g Ki8KKworLyoge3t7IHByb3RvIGludCBSYXJFbnRyeTo6Z2V0VW5wYWNrZWRTaXplKCkKKyAgIFJldHVy biB1bnBhY2tlZCBzaXplIG9mIHRoZSBlbnRyeSAqLworUEhQX01FVEhPRChyYXJlbnRyeSwgZ2V0VW5w YWNrZWRTaXplKQoreworCXp2YWwgKip0bXA7CisJenZhbCAqZW50cnlfb2JqID0gZ2V0VGhpcygpOwor CisJUkFSX0dFVF9QUk9QRVJUWSh0bXAsICJ1bnBhY2tlZF9zaXplIik7CisKKwljb252ZXJ0X3RvX2xv bmdfZXgodG1wKTsKKwlSRVRVUk5fTE9ORyhaX0xWQUxfUFAodG1wKSk7Cit9CisvKiB9fX0gKi8KKwor Lyoge3t7IHByb3RvIGludCBSYXJFbnRyeTo6Z2V0UGFja2VkU2l6ZSgpCisgICBSZXR1cm4gcGFja2Vk IHNpemUgb2YgdGhlIGVudHJ5ICovCitQSFBfTUVUSE9EKHJhcmVudHJ5LCBnZXRQYWNrZWRTaXplKQor eworCXp2YWwgKip0bXA7CisJenZhbCAqZW50cnlfb2JqID0gZ2V0VGhpcygpOworCisJUkFSX0dFVF9Q Uk9QRVJUWSh0bXAsICJwYWNrZWRfc2l6ZSIpOworCisJY29udmVydF90b19sb25nX2V4KHRtcCk7CisJ UkVUVVJOX0xPTkcoWl9MVkFMX1BQKHRtcCkpOworfQorLyogfX19ICovCisKKy8qIHt7eyBwcm90byBp bnQgUmFyRW50cnk6OmdldEhvc3RPcygpCisgICBSZXR1cm4gaG9zdCBPUyBvZiB0aGUgZW50cnkgKi8K K1BIUF9NRVRIT0QocmFyZW50cnksIGdldEhvc3RPcykKK3sKKwl6dmFsICoqdG1wOworCXp2YWwgKmVu dHJ5X29iaiA9IGdldFRoaXMoKTsKKworCVJBUl9HRVRfUFJPUEVSVFkodG1wLCAiaG9zdF9vcyIpOwor CisJY29udmVydF90b19sb25nX2V4KHRtcCk7CisJUkVUVVJOX0xPTkcoWl9MVkFMX1BQKHRtcCkpOwor fQorLyogfX19ICovCisKKy8qIHt7eyBwcm90byBzdHJpbmcgUmFyRW50cnk6OmdldEZpbGVUaW1lKCkK KyAgIFJldHVybiBtb2RpZmljYXRpb24gdGltZSBvZiB0aGUgZW50cnkgKi8KK1BIUF9NRVRIT0QocmFy ZW50cnksIGdldEZpbGVUaW1lKQoreworCXp2YWwgKip0bXA7CisJenZhbCAqZW50cnlfb2JqID0gZ2V0 VGhpcygpOworCisJUkFSX0dFVF9QUk9QRVJUWSh0bXAsICJmaWxlX3RpbWUiKTsKKworCWNvbnZlcnRf dG9fc3RyaW5nX2V4KHRtcCk7CisJUkVUVVJOX1NUUklOR0woWl9TVFJWQUxfUFAodG1wKSwgWl9TVFJM RU5fUFAodG1wKSwgMSk7Cit9CisvKiB9fX0gKi8KKworLyoge3t7IHByb3RvIHN0cmluZyBSYXJFbnRy eTo6Z2V0Q3JjKCkKKyAgIFJldHVybiBDUkMgb2YgdGhlIGVudHJ5ICovCitQSFBfTUVUSE9EKHJhcmVu dHJ5LCBnZXRDcmMpCit7CisJenZhbCAqKnRtcDsKKwl6dmFsICplbnRyeV9vYmogPSBnZXRUaGlzKCk7 CisKKwlSQVJfR0VUX1BST1BFUlRZKHRtcCwgImNyYyIpOworCisJY29udmVydF90b19zdHJpbmdfZXgo dG1wKTsKKwlSRVRVUk5fU1RSSU5HTChaX1NUUlZBTF9QUCh0bXApLCBaX1NUUkxFTl9QUCh0bXApLCAx KTsKK30KKy8qIH19fSAqLworCisvKiB7e3sgcHJvdG8gaW50IFJhckVudHJ5OjpnZXRBdHRyKCkKKyAg IFJldHVybiBhdHRyaWJ1dGVzIG9mIHRoZSBlbnRyeSAqLworUEhQX01FVEhPRChyYXJlbnRyeSwgZ2V0 QXR0cikKK3sKKwl6dmFsICoqdG1wOworCXp2YWwgKmVudHJ5X29iaiA9IGdldFRoaXMoKTsKKworCVJB Ul9HRVRfUFJPUEVSVFkodG1wLCAiYXR0ciIpOworCisJY29udmVydF90b19sb25nX2V4KHRtcCk7CisJ UkVUVVJOX0xPTkcoWl9MVkFMX1BQKHRtcCkpOworfQorLyogfX19ICovCisKKy8qIHt7eyBwcm90byBp bnQgUmFyRW50cnk6OmdldFZlcnNpb24oKQorICAgUmV0dXJuIHZlcnNpb24gb2YgdGhlIGFyY2hpdmVy LCB1c2VkIHRvIGNyZWF0ZSB0aGlzIGVudHJ5ICovCitQSFBfTUVUSE9EKHJhcmVudHJ5LCBnZXRWZXJz aW9uKQoreworCXp2YWwgKip0bXA7CisJenZhbCAqZW50cnlfb2JqID0gZ2V0VGhpcygpOworCisJUkFS X0dFVF9QUk9QRVJUWSh0bXAsICJ2ZXJzaW9uIik7CisKKwljb252ZXJ0X3RvX2xvbmdfZXgodG1wKTsK KwlSRVRVUk5fTE9ORyhaX0xWQUxfUFAodG1wKSk7Cit9CisvKiB9fX0gKi8KKworLyoge3t7IHByb3Rv IGludCBSYXJFbnRyeTo6Z2V0TWV0aG9kKCkKKyAgIFJldHVybiBwYWNraW5nIG1ldGhvZCAqLworUEhQ X01FVEhPRChyYXJlbnRyeSwgZ2V0TWV0aG9kKQoreworCXp2YWwgKip0bXA7CisJenZhbCAqZW50cnlf b2JqID0gZ2V0VGhpcygpOworCisJUkFSX0dFVF9QUk9QRVJUWSh0bXAsICJtZXRob2QiKTsKKworCWNv bnZlcnRfdG9fbG9uZ19leCh0bXApOworCVJFVFVSTl9MT05HKFpfTFZBTF9QUCh0bXApKTsKK30KKy8q IH19fSAqLworCisvKiB7e3sgcHJvdG8gcmVzb3VyY2UgUmFyRW50cnk6OmdldFN0cmVhbSgpCisgICBS ZXR1cm4gcGFja2luZyBtZXRob2QgKi8KK1BIUF9NRVRIT0QocmFyZW50cnksIGdldFN0cmVhbSkKK3sK Kwl6dmFsICoqdG1wLCAqKm5hbWU7CisJcmFyX2ZpbGVfdCAqcmFyID0gTlVMTDsKKwl6dmFsICplbnRy eV9vYmogPSBnZXRUaGlzKCk7CisJcGhwX3N0cmVhbSAqc3RyZWFtID0gTlVMTDsKKworCVJBUl9HRVRf UFJPUEVSVFkobmFtZSwgIm5hbWUiKTsKKwlSQVJfR0VUX1BST1BFUlRZKHRtcCwgInJhcmZpbGUiKTsK KwlaRU5EX0ZFVENIX1JFU09VUkNFKHJhciwgcmFyX2ZpbGVfdCAqLCB0bXAsIC0xLCBsZV9yYXJfZmls ZV9uYW1lLCBsZV9yYXJfZmlsZSk7CisKKwlzdHJlYW0gPSBwaHBfc3RyZWFtX3Jhcl9vcGVuKHJhci0+ ZXh0cmFjdF9vcGVuX2RhdGEtPkFyY05hbWUsCisJCVpfU1RSVkFMX1BQKG5hbWUpLCAiciIgU1RSRUFN U19DQyBUU1JNTFNfQ0MpOworCisJaWYgKHN0cmVhbSAhPSBOVUxMKSB7CisJCXBocF9zdHJlYW1fdG9f enZhbChzdHJlYW0sIHJldHVybl92YWx1ZSk7CisJfQorICBlbHNlCisgICAgUkVUVkFMX0ZBTFNFOwor fQorLyogfX19ICovCisKKy8qIHt7eyBwcm90byBpbnQgUmFyRW50cnk6OmlzRGlyZWN0b3J5KCkKKyAg IFJldHVybiB3aGV0aGVyIHRoZSBlbnRyeSByZXByZXNlbnRzIGEgZGlyZWN0b3J5ICovCitQSFBfTUVU SE9EKHJhcmVudHJ5LCBpc0RpcmVjdG9yeSkKK3sKKwl6dmFsICoqdG1wOworCXp2YWwgKmVudHJ5X29i aiA9IGdldFRoaXMoKTsKKwlsb25nIGZsYWdzOworCWludCBpc19kaXI7CisKKwlSQVJfR0VUX1BST1BF UlRZKHRtcCwgImZsYWdzIik7CisJZmxhZ3MgPSBaX0xWQUxfUFAodG1wKTsKKwlpc19kaXIgPSAoKGZs YWdzICYgMHhFMCkgPT0gMHhFMCk7CisKKwlSRVRVUk5fQk9PTChpc19kaXIpOworfQorLyogfX19ICov CisKKy8qIHt7eyBwcm90byBpbnQgUmFyRW50cnk6Ol9fdG9TdHJpbmcoKQorICAgUmV0dXJuIHN0cmlu ZyByZXByZXNlbnRhdGlvbiBmb3IgZW50cnkgKi8KK1BIUF9NRVRIT0QocmFyZW50cnksIF9fdG9TdHJp bmcpCit7CisJenZhbAkJKipmbGFnc196dmFsLAorCQkJCSoqbmFtZV96dmFsLAorCQkJCSoqY3JjX3p2 YWw7CisJenZhbAkJKmVudHJ5X29iaiA9IGdldFRoaXMoKTsKKwlsb25nCQlmbGFnczsKKwlpbnQJCQlp c19kaXI7CisJY2hhcgkJKm5hbWUsCisJCQkJKmNyYzsKKwljaGFyCQkqcmVzdHJpbmc7CisJaW50CQkJ cmVzdHJpbmdfbGVuOworCWNvbnN0IGNoYXIJZm9ybWF0W10gPSAiUmFyRW50cnkgZm9yICVzIFwiJXNc IiAoJXMpIjsKKworCVJBUl9HRVRfUFJPUEVSVFkoZmxhZ3NfenZhbCwgImZsYWdzIik7CisJZmxhZ3Mg PSBaX0xWQUxfUFAoZmxhZ3NfenZhbCk7CisJaXNfZGlyID0gKChmbGFncyAmIDB4RTApID09IDB4RTAp OworCisJUkFSX0dFVF9QUk9QRVJUWShuYW1lX3p2YWwsICJuYW1lIik7CisJbmFtZSA9IFpfU1RSVkFM X1BQKG5hbWVfenZhbCk7CisKKwlSQVJfR0VUX1BST1BFUlRZKGNyY196dmFsLCAiY3JjIik7CisJY3Jj ID0gWl9TVFJWQUxfUFAoY3JjX3p2YWwpOworCisJLy8yIGlzIHNpemUgb2YgJXMsIDggaXMgc2l6ZSBv ZiBjcmMKKwlyZXN0cmluZ19sZW4gPSAoc2l6ZW9mKGZvcm1hdCktMSkgLSAyICogMyArIChzaXplb2Yo ImRpcmVjdG9yeSIpLTEpICsKKwkJc3RybGVuKG5hbWUpICsgOCArIDE7CisJcmVzdHJpbmcgPSBlbWFs bG9jKHJlc3RyaW5nX2xlbik7CisJc25wcmludGYocmVzdHJpbmcsIHJlc3RyaW5nX2xlbiwgZm9ybWF0 LCBpc19kaXI/ImRpcmVjdG9yeSI6ImZpbGUiLAorCQluYW1lLCBjcmMpOworCXJlc3RyaW5nW3Jlc3Ry aW5nX2xlbiAtIDFdID0gJ1wwJzsgLy9qdXN0IHRvIGJlIHNhZmUKKworCVJFVFVSTl9TVFJJTkcocmVz dHJpbmcsIDApOworfQorLyogfX19ICovCisvKiB9fX0gKi8KKworLyoge3t7IGFyZ2luZm8gKi8KK1pF TkRfQkVHSU5fQVJHX0lORk9fRVgoYXJnaW5mb19yYXJlbnRyeV9leHRyYWN0LCAwLCAwLCAxKQorCVpF TkRfQVJHX0lORk8oMCwgcGF0aCkKKwlaRU5EX0FSR19JTkZPKDAsIGZpbGVuYW1lKQorWkVORF9FTkRf QVJHX0lORk8oKQorCitaRU5EX0JFR0lOX0FSR19JTkZPKGFyZ2luZm9fcmFyX3ZvaWQsIDApCitaRU5E X0VORF9BUkdfSU5GTygpCisvKiB9fX0gKi8KKworc3RhdGljIHplbmRfZnVuY3Rpb25fZW50cnkgcGhw X3Jhcl9jbGFzc19mdW5jdGlvbnNbXSA9IHsKKwlQSFBfTUUocmFyZW50cnksCQlleHRyYWN0LAkJCWFy Z2luZm9fcmFyZW50cnlfZXh0cmFjdCwJWkVORF9BQ0NfUFVCTElDKQorCVBIUF9NRShyYXJlbnRyeSwJ CWdldE5hbWUsCQkJYXJnaW5mb19yYXJfdm9pZCwJWkVORF9BQ0NfUFVCTElDKQorCVBIUF9NRShyYXJl bnRyeSwJCWdldFVucGFja2VkU2l6ZSwJYXJnaW5mb19yYXJfdm9pZCwJWkVORF9BQ0NfUFVCTElDKQor CVBIUF9NRShyYXJlbnRyeSwJCWdldFBhY2tlZFNpemUsCQlhcmdpbmZvX3Jhcl92b2lkLAlaRU5EX0FD Q19QVUJMSUMpCisJUEhQX01FKHJhcmVudHJ5LAkJZ2V0SG9zdE9zLAkJCWFyZ2luZm9fcmFyX3ZvaWQs CVpFTkRfQUNDX1BVQkxJQykKKwlQSFBfTUUocmFyZW50cnksCQlnZXRGaWxlVGltZSwJCWFyZ2luZm9f cmFyX3ZvaWQsCVpFTkRfQUNDX1BVQkxJQykKKwlQSFBfTUUocmFyZW50cnksCQlnZXRDcmMsCQkJCWFy Z2luZm9fcmFyX3ZvaWQsCVpFTkRfQUNDX1BVQkxJQykKKwlQSFBfTUUocmFyZW50cnksCQlnZXRBdHRy LAkJCWFyZ2luZm9fcmFyX3ZvaWQsCVpFTkRfQUNDX1BVQkxJQykKKwlQSFBfTUUocmFyZW50cnksCQln ZXRWZXJzaW9uLAkJCWFyZ2luZm9fcmFyX3ZvaWQsCVpFTkRfQUNDX1BVQkxJQykKKwlQSFBfTUUocmFy ZW50cnksCQlnZXRNZXRob2QsCQkJYXJnaW5mb19yYXJfdm9pZCwJWkVORF9BQ0NfUFVCTElDKQorCVBI UF9NRShyYXJlbnRyeSwJCWdldFN0cmVhbSwJCQlhcmdpbmZvX3Jhcl92b2lkLAlaRU5EX0FDQ19QVUJM SUMpCisJUEhQX01FKHJhcmVudHJ5LAkJaXNEaXJlY3RvcnksCQlhcmdpbmZvX3Jhcl92b2lkLAlaRU5E X0FDQ19QVUJMSUMpCisJUEhQX01FKHJhcmVudHJ5LAkJX190b1N0cmluZywJCQlhcmdpbmZvX3Jhcl92 b2lkLAlaRU5EX0FDQ19QVUJMSUMpCisJe05VTEwsIE5VTEwsIE5VTEx9Cit9OworCit2b2lkIG1pbml0 X3JhcmVudHJ5KFRTUk1MU19EKSB7CisJemVuZF9jbGFzc19lbnRyeSBjZTsKKworCW1lbWNweSgmcmFy X29iamVjdF9oYW5kbGVycywgemVuZF9nZXRfc3RkX29iamVjdF9oYW5kbGVycygpLCBzaXplb2YgcmFy X29iamVjdF9oYW5kbGVycyk7CisKKwlJTklUX0NMQVNTX0VOVFJZKGNlLCAiUmFyRW50cnkiLCBwaHBf cmFyX2NsYXNzX2Z1bmN0aW9ucyk7CisJY2UuY2VfZmxhZ3MgfD0gWkVORF9BQ0NfRklOQUxfQ0xBU1M7 CisJY2UuY2xvbmUgPSBOVUxMOworCS8vQ3VzdG9tIGNyZWF0aW9uIGN1cnJlbnRseSBub3QgcmVhbGx5 IG5lZWRlZCwgYnV0IHlvdSBuZXZlciBrbm93Li4uCisJY2UuY3JlYXRlX29iamVjdCA9ICZyYXJlbnRy eV9jZV9jcmVhdGVfb2JqZWN0OworCXJhcl9jbGFzc19lbnRyeV9wdHIgPSB6ZW5kX3JlZ2lzdGVyX2lu dGVybmFsX2NsYXNzKCZjZSBUU1JNTFNfQ0MpOworCisJUkVHX1JBUl9QUk9QRVJUWSgicmFyZmlsZSIs ICJBc3NvY2lhdGVkIFJBUiBhcmNoaXZlIik7CisJUkVHX1JBUl9QUk9QRVJUWSgibmFtZSIsICJGaWxl IG9yIGRpcmVjdG9yeSBuYW1lIHdpdGggcGF0aCIpOworCVJFR19SQVJfUFJPUEVSVFkoInVucGFja2Vk X3NpemUiLCAiU2l6ZSBvZiBmaWxlIHdoZW4gdW5wYWNrZWQiKTsKKwlSRUdfUkFSX1BST1BFUlRZKCJw YWNrZWRfc2l6ZSIsICJTaXplIG9mIHRoZSBwYWNrZWQgZmlsZSBpbnNpZGUgdGhlIGFyY2hpdmUiKTsK KwlSRUdfUkFSX1BST1BFUlRZKCJob3N0X29zIiwgIk9TIHVzZWQgdG8gcGFjayB0aGUgZmlsZSIpOwor CVJFR19SQVJfUFJPUEVSVFkoImZpbGVfdGltZSIsICJFbnRyeSdzIHRpbWUgb2YgbGFzdCBtb2RpZmlj YXRpb24iKTsKKwlSRUdfUkFSX1BST1BFUlRZKCJjcmMiLCAiQ1JDIGNoZWNrc3VtIGZvciB0aGUgdW5w YWNrZWQgZmlsZSIpOworCVJFR19SQVJfUFJPUEVSVFkoImF0dHIiLCAiT1MtZGVwZW5kZW50IGZpbGUg YXR0cmlidXRlcyIpOworCVJFR19SQVJfUFJPUEVSVFkoInZlcnNpb24iLCAiUkFSIHZlcnNpb24gbmVl ZGVkIHRvIGV4dHJhY3QgZW50cnkiKTsKKwlSRUdfUkFSX1BST1BFUlRZKCJtZXRob2QiLCAiSWRlbnRp ZmllciBmb3IgcGFja2luZyBtZXRob2QiKTsKKwlSRUdfUkFSX1BST1BFUlRZKCJmbGFncyIsICJFbnRy eSBoZWFkZXIgZmxhZ3MiKTsKKworCVJFR19SQVJfQ0xBU1NfQ09OU1RfTE9ORygiSE9TVF9NU0RPUyIs CUhPU1RfTVNET1MpOworCVJFR19SQVJfQ0xBU1NfQ09OU1RfTE9ORygiSE9TVF9PUzIiLAlIT1NUX09T Mik7CisJUkVHX1JBUl9DTEFTU19DT05TVF9MT05HKCJIT1NUX1dJTjMyIiwJSE9TVF9XSU4zMik7CisJ UkVHX1JBUl9DTEFTU19DT05TVF9MT05HKCJIT1NUX1VOSVgiLAlIT1NUX1VOSVgpOworCVJFR19SQVJf Q0xBU1NfQ09OU1RfTE9ORygiSE9TVF9NQUNPUyIsCUhPU1RfTUFDT1MpOworCVJFR19SQVJfQ0xBU1Nf Q09OU1RfTE9ORygiSE9TVF9CRU9TIiwJSE9TVF9CRU9TKTsKKworCS8vc2VlIFdpbk5ULmgKKwlSRUdf UkFSX0NMQVNTX0NPTlNUX0xPTkcoIkFUVFJJQlVURV9XSU5fUkVBRE9OTFkiLAkJCQkweDAwMDAxTCk7 CisJUkVHX1JBUl9DTEFTU19DT05TVF9MT05HKCJBVFRSSUJVVEVfV0lOX0hJRERFTiIsCQkJCTB4MDAw MDJMKTsKKwlSRUdfUkFSX0NMQVNTX0NPTlNUX0xPTkcoIkFUVFJJQlVURV9XSU5fU1lTVEVNIiwJCQkJ MHgwMDAwNEwpOworCVJFR19SQVJfQ0xBU1NfQ09OU1RfTE9ORygiQVRUUklCVVRFX1dJTl9ESVJFQ1RP UlkiLAkJCQkweDAwMDEwTCk7CisJUkVHX1JBUl9DTEFTU19DT05TVF9MT05HKCJBVFRSSUJVVEVfV0lO X0FSQ0hJVkUiLAkJCQkweDAwMDIwTCk7CisJUkVHX1JBUl9DTEFTU19DT05TVF9MT05HKCJBVFRSSUJV VEVfV0lOX0RFVklDRSIsCQkJCTB4MDAwNDBMKTsKKwlSRUdfUkFSX0NMQVNTX0NPTlNUX0xPTkcoIkFU VFJJQlVURV9XSU5fTk9STUFMIiwJCQkJMHgwMDA4MEwpOworCVJFR19SQVJfQ0xBU1NfQ09OU1RfTE9O RygiQVRUUklCVVRFX1dJTl9URU1QT1JBUlkiLAkJCQkweDAwMTAwTCk7CisJUkVHX1JBUl9DTEFTU19D T05TVF9MT05HKCJBVFRSSUJVVEVfV0lOX1NQQVJTRV9GSUxFIiwJCQkweDAwMjAwTCk7CisJUkVHX1JB Ul9DTEFTU19DT05TVF9MT05HKCJBVFRSSUJVVEVfV0lOX1JFUEFSU0VfUE9JTlQiLAkJCTB4MDA0MDBM KTsKKwlSRUdfUkFSX0NMQVNTX0NPTlNUX0xPTkcoIkFUVFJJQlVURV9XSU5fQ09NUFJFU1NFRCIsCQkJ MHgwMDgwMEwpOworCVJFR19SQVJfQ0xBU1NfQ09OU1RfTE9ORygiQVRUUklCVVRFX1dJTl9PRkZMSU5F IiwJCQkJMHgwMTAwMEwpOworCVJFR19SQVJfQ0xBU1NfQ09OU1RfTE9ORygiQVRUUklCVVRFX1dJTl9O T1RfQ09OVEVOVF9JTkRFWEVEIiwJMHgwMjAwMEwpOworCVJFR19SQVJfQ0xBU1NfQ09OU1RfTE9ORygi QVRUUklCVVRFX1dJTl9FTkNSWVBURUQiLAkJCQkweDA0MDAwTCk7CisJUkVHX1JBUl9DTEFTU19DT05T VF9MT05HKCJBVFRSSUJVVEVfV0lOX1ZJUlRVQUwiLAkJCQkweDEwMDAwTCk7CisKKwlSRUdfUkFSX0NM QVNTX0NPTlNUX0xPTkcoIkFUVFJJQlVURV9VTklYX1dPUkxEX0VYRUNVVEUiLAkJMHgwMDAwMUwpOwor CVJFR19SQVJfQ0xBU1NfQ09OU1RfTE9ORygiQVRUUklCVVRFX1VOSVhfV09STERfV1JJVEUiLAkJCTB4 MDAwMDJMKTsKKwlSRUdfUkFSX0NMQVNTX0NPTlNUX0xPTkcoIkFUVFJJQlVURV9VTklYX1dPUkxEX1JF QUQiLAkJCTB4MDAwMDRMKTsKKwlSRUdfUkFSX0NMQVNTX0NPTlNUX0xPTkcoIkFUVFJJQlVURV9VTklY X0dST1VQX0VYRUNVVEUiLAkJMHgwMDAwOEwpOworCVJFR19SQVJfQ0xBU1NfQ09OU1RfTE9ORygiQVRU UklCVVRFX1VOSVhfR1JPVVBfV1JJVEUiLAkJCTB4MDAwMTBMKTsKKwlSRUdfUkFSX0NMQVNTX0NPTlNU X0xPTkcoIkFUVFJJQlVURV9VTklYX0dST1VQX1JFQUQiLAkJCTB4MDAwMjBMKTsKKwlSRUdfUkFSX0NM QVNTX0NPTlNUX0xPTkcoIkFUVFJJQlVURV9VTklYX09XTkVSX0VYRUNVVEUiLAkJMHgwMDA0MEwpOwor CVJFR19SQVJfQ0xBU1NfQ09OU1RfTE9ORygiQVRUUklCVVRFX1VOSVhfT1dORVJfV1JJVEUiLAkJCTB4 MDAwODBMKTsKKwlSRUdfUkFSX0NMQVNTX0NPTlNUX0xPTkcoIkFUVFJJQlVURV9VTklYX09XTkVSX1JF QUQiLAkJCTB4MDAxMDBMKTsKKwlSRUdfUkFSX0NMQVNTX0NPTlNUX0xPTkcoIkFUVFJJQlVURV9VTklY X1NUSUNLWSIsCQkJCTB4MDAyMDBMKTsKKwlSRUdfUkFSX0NMQVNTX0NPTlNUX0xPTkcoIkFUVFJJQlVU RV9VTklYX1NFVEdJRCIsCQkJCTB4MDA0MDBMKTsKKwlSRUdfUkFSX0NMQVNTX0NPTlNUX0xPTkcoIkFU VFJJQlVURV9VTklYX1NFVFVJRCIsCQkJCTB4MDA4MDBMKTsKKworCVJFR19SQVJfQ0xBU1NfQ09OU1Rf TE9ORygiQVRUUklCVVRFX1VOSVhfRklOQUxfUVVBUlRFVCIsCQkweDBGMDAwTCk7CisJUkVHX1JBUl9D TEFTU19DT05TVF9MT05HKCJBVFRSSUJVVEVfVU5JWF9GSUZPIiwJCQkJCTB4MDEwMDBMKTsKKwlSRUdf UkFSX0NMQVNTX0NPTlNUX0xPTkcoIkFUVFJJQlVURV9VTklYX0NIQVJfREVWIiwJCQkJMHgwMjAwMEwp OworCVJFR19SQVJfQ0xBU1NfQ09OU1RfTE9ORygiQVRUUklCVVRFX1VOSVhfRElSRUNUT1JZIiwJCQkw eDA0MDAwTCk7CisJUkVHX1JBUl9DTEFTU19DT05TVF9MT05HKCJBVFRSSUJVVEVfVU5JWF9CTE9DS19E RVYiLAkJCTB4MDYwMDBMKTsKKwlSRUdfUkFSX0NMQVNTX0NPTlNUX0xPTkcoIkFUVFJJQlVURV9VTklY X1JFR1VMQVJfRklMRSIsCQkJMHgwODAwMEwpOworCVJFR19SQVJfQ0xBU1NfQ09OU1RfTE9ORygiQVRU UklCVVRFX1VOSVhfU1lNX0xJTksiLAkJCQkweDBBMDAwTCk7CisJUkVHX1JBUl9DTEFTU19DT05TVF9M T05HKCJBVFRSSUJVVEVfVU5JWF9TT0NLRVQiLAkJCQkweDBDMDAwTCk7Cit9CgpNb2RpZmllZDogcGVj bC9yYXIvdHJ1bmsvdGVzdHMvMDAyLnBocHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGVjbC9yYXIvdHJ1bmsvdGVzdHMv MDAyLnBocHQJMjAwOS0xMS0yOSAwMzozMjo1NCBVVEMgKHJldiAyOTE0MTApCisrKyBwZWNsL3Jhci90 cnVuay90ZXN0cy8wMDIucGhwdAkyMDA5LTExLTI5IDAzOjQxOjExIFVUQyAocmV2IDI5MTQxMSkKQEAg LTI1LDk4ICsyNSwxMDYgQEAKIC0tRVhQRUNURi0tCiBhcnJheSgyKSB7CiAgIFswXT0+Ci0gIG9iamVj dChSYXJFbnRyeSkjJWQgKDEwKSB7Ci0gICAgWyJyYXJmaWxlIl09PgorICBvYmplY3QoUmFyRW50cnkp IyVkICglZCkgeworICAgIFsicmFyZmlsZSI6IlJhckVudHJ5Ijpwcml2YXRlXT0+CiAgICAgcmVzb3Vy Y2UoJWQpIG9mIHR5cGUgKFJhciBmaWxlKQotICAgIFsibmFtZSJdPT4KKyAgICBbIm5hbWUiOiJSYXJF bnRyeSI6cHJpdmF0ZV09PgogICAgIHN0cmluZyg5KSAicGxhaW4udHh0IgotICAgIFsidW5wYWNrZWRf c2l6ZSJdPT4KKyAgICBbInVucGFja2VkX3NpemUiOiJSYXJFbnRyeSI6cHJpdmF0ZV09PgogICAgIGlu dCgxNSkKLSAgICBbInBhY2tlZF9zaXplIl09PgorICAgIFsicGFja2VkX3NpemUiOiJSYXJFbnRyeSI6 cHJpdmF0ZV09PgogICAgIGludCgyNSkKLSAgICBbImhvc3Rfb3MiXT0+CisgICAgWyJob3N0X29zIjoi UmFyRW50cnkiOnByaXZhdGVdPT4KICAgICBpbnQoMykKLSAgICBbImZpbGVfdGltZSJdPT4KKyAgICBb ImZpbGVfdGltZSI6IlJhckVudHJ5Ijpwcml2YXRlXT0+CiAgICAgc3RyaW5nKDE5KSAiMjAwNC0wNi0x MSAxMTowMToyNCIKLSAgICBbImNyYyJdPT4KKyAgICBbImNyYyI6IlJhckVudHJ5Ijpwcml2YXRlXT0+ CiAgICAgc3RyaW5nKDgpICI3NzI4YjZmZSIKLSAgICBbImF0dHIiXT0+CisgICAgWyJhdHRyIjoiUmFy RW50cnkiOnByaXZhdGVdPT4KICAgICBpbnQoMzMxODgpCi0gICAgWyJ2ZXJzaW9uIl09PgorICAgIFsi dmVyc2lvbiI6IlJhckVudHJ5Ijpwcml2YXRlXT0+CiAgICAgaW50KDI5KQotICAgIFsibWV0aG9kIl09 PgorICAgIFsibWV0aG9kIjoiUmFyRW50cnkiOnByaXZhdGVdPT4KICAgICBpbnQoNTEpCisgICAgWyJm bGFncyI6IlJhckVudHJ5Ijpwcml2YXRlXT0+CisgICAgaW50KDMyODAwKQogICB9CiAgIFsxXT0+Ci0g IG9iamVjdChSYXJFbnRyeSkjJWQgKDEwKSB7Ci0gICAgWyJyYXJmaWxlIl09PgorICBvYmplY3QoUmFy RW50cnkpIyVkICglZCkgeworICAgIFsicmFyZmlsZSI6IlJhckVudHJ5Ijpwcml2YXRlXT0+CiAgICAg cmVzb3VyY2UoJWQpIG9mIHR5cGUgKFJhciBmaWxlKQotICAgIFsibmFtZSJdPT4KKyAgICBbIm5hbWUi OiJSYXJFbnRyeSI6cHJpdmF0ZV09PgogICAgIHN0cmluZygzMCkgInRlc3QgZmlsZSB3aXRoIHdoaXRl c3BhY2VzLnR4dCIKLSAgICBbInVucGFja2VkX3NpemUiXT0+CisgICAgWyJ1bnBhY2tlZF9zaXplIjoi UmFyRW50cnkiOnByaXZhdGVdPT4KICAgICBpbnQoMTQpCi0gICAgWyJwYWNrZWRfc2l6ZSJdPT4KKyAg ICBbInBhY2tlZF9zaXplIjoiUmFyRW50cnkiOnByaXZhdGVdPT4KICAgICBpbnQoMjApCi0gICAgWyJo b3N0X29zIl09PgorICAgIFsiaG9zdF9vcyI6IlJhckVudHJ5Ijpwcml2YXRlXT0+CiAgICAgaW50KDMp Ci0gICAgWyJmaWxlX3RpbWUiXT0+CisgICAgWyJmaWxlX3RpbWUiOiJSYXJFbnRyeSI6cHJpdmF0ZV09 PgogICAgIHN0cmluZygxOSkgIjIwMDQtMDYtMTEgMTE6MDE6MzIiCi0gICAgWyJjcmMiXT0+CisgICAg WyJjcmMiOiJSYXJFbnRyeSI6cHJpdmF0ZV09PgogICAgIHN0cmluZyg4KSAiMjE4OTBkZDkiCi0gICAg WyJhdHRyIl09PgorICAgIFsiYXR0ciI6IlJhckVudHJ5Ijpwcml2YXRlXT0+CiAgICAgaW50KDMzMTg4 KQotICAgIFsidmVyc2lvbiJdPT4KKyAgICBbInZlcnNpb24iOiJSYXJFbnRyeSI6cHJpdmF0ZV09Pgog ICAgIGludCgyOSkKLSAgICBbIm1ldGhvZCJdPT4KKyAgICBbIm1ldGhvZCI6IlJhckVudHJ5Ijpwcml2 YXRlXT0+CiAgICAgaW50KDUxKQorICAgIFsiZmxhZ3MiOiJSYXJFbnRyeSI6cHJpdmF0ZV09PgorICAg IGludCgzMjgwMCkKICAgfQogfQogYXJyYXkoMikgewogICBbMF09PgotICBvYmplY3QoUmFyRW50cnkp IyVkICgxMCkgewotICAgIFsicmFyZmlsZSJdPT4KKyAgb2JqZWN0KFJhckVudHJ5KSMlZCAoJWQpIHsK KyAgICBbInJhcmZpbGUiOiJSYXJFbnRyeSI6cHJpdmF0ZV09PgogICAgIHJlc291cmNlKCVkKSBvZiB0 eXBlIChSYXIgZmlsZSkKLSAgICBbIm5hbWUiXT0+CisgICAgWyJuYW1lIjoiUmFyRW50cnkiOnByaXZh dGVdPT4KICAgICBzdHJpbmcoNSkgIjEudHh0IgotICAgIFsidW5wYWNrZWRfc2l6ZSJdPT4KKyAgICBb InVucGFja2VkX3NpemUiOiJSYXJFbnRyeSI6cHJpdmF0ZV09PgogICAgIGludCg1KQotICAgIFsicGFj a2VkX3NpemUiXT0+CisgICAgWyJwYWNrZWRfc2l6ZSI6IlJhckVudHJ5Ijpwcml2YXRlXT0+CiAgICAg aW50KDE3KQotICAgIFsiaG9zdF9vcyJdPT4KKyAgICBbImhvc3Rfb3MiOiJSYXJFbnRyeSI6cHJpdmF0 ZV09PgogICAgIGludCgyKQotICAgIFsiZmlsZV90aW1lIl09PgorICAgIFsiZmlsZV90aW1lIjoiUmFy RW50cnkiOnByaXZhdGVdPT4KICAgICBzdHJpbmcoMTkpICIyMDA0LTA2LTExIDEwOjA3OjE4IgotICAg IFsiY3JjIl09PgorICAgIFsiY3JjIjoiUmFyRW50cnkiOnByaXZhdGVdPT4KICAgICBzdHJpbmcoOCkg ImEwZGU3MWMwIgotICAgIFsiYXR0ciJdPT4KKyAgICBbImF0dHIiOiJSYXJFbnRyeSI6cHJpdmF0ZV09 PgogICAgIGludCgzMikKLSAgICBbInZlcnNpb24iXT0+CisgICAgWyJ2ZXJzaW9uIjoiUmFyRW50cnki OnByaXZhdGVdPT4KICAgICBpbnQoMjkpCi0gICAgWyJtZXRob2QiXT0+CisgICAgWyJtZXRob2QiOiJS YXJFbnRyeSI6cHJpdmF0ZV09PgogICAgIGludCg1MykKKyAgICBbImZsYWdzIjoiUmFyRW50cnkiOnBy aXZhdGVdPT4KKyAgICBpbnQoMzY5OTIpCiAgIH0KICAgWzFdPT4KLSAgb2JqZWN0KFJhckVudHJ5KSMl ZCAoMTApIHsKLSAgICBbInJhcmZpbGUiXT0+CisgIG9iamVjdChSYXJFbnRyeSkjJWQgKCVkKSB7Cisg ICAgWyJyYXJmaWxlIjoiUmFyRW50cnkiOnByaXZhdGVdPT4KICAgICByZXNvdXJjZSglZCkgb2YgdHlw ZSAoUmFyIGZpbGUpCi0gICAgWyJuYW1lIl09PgorICAgIFsibmFtZSI6IlJhckVudHJ5Ijpwcml2YXRl XT0+CiAgICAgc3RyaW5nKDUpICIyLnR4dCIKLSAgICBbInVucGFja2VkX3NpemUiXT0+CisgICAgWyJ1 bnBhY2tlZF9zaXplIjoiUmFyRW50cnkiOnByaXZhdGVdPT4KICAgICBpbnQoNSkKLSAgICBbInBhY2tl ZF9zaXplIl09PgorICAgIFsicGFja2VkX3NpemUiOiJSYXJFbnRyeSI6cHJpdmF0ZV09PgogICAgIGlu dCgxNikKLSAgICBbImhvc3Rfb3MiXT0+CisgICAgWyJob3N0X29zIjoiUmFyRW50cnkiOnByaXZhdGVd PT4KICAgICBpbnQoMikKLSAgICBbImZpbGVfdGltZSJdPT4KKyAgICBbImZpbGVfdGltZSI6IlJhckVu dHJ5Ijpwcml2YXRlXT0+CiAgICAgc3RyaW5nKDE5KSAiMjAwNC0wNi0xMSAxMDowNzoyNiIKLSAgICBb ImNyYyJdPT4KKyAgICBbImNyYyI6IlJhckVudHJ5Ijpwcml2YXRlXT0+CiAgICAgc3RyaW5nKDgpICI0 NWE5MThkZSIKLSAgICBbImF0dHIiXT0+CisgICAgWyJhdHRyIjoiUmFyRW50cnkiOnByaXZhdGVdPT4K ICAgICBpbnQoMzIpCi0gICAgWyJ2ZXJzaW9uIl09PgorICAgIFsidmVyc2lvbiI6IlJhckVudHJ5Ijpw cml2YXRlXT0+CiAgICAgaW50KDI5KQotICAgIFsibWV0aG9kIl09PgorICAgIFsibWV0aG9kIjoiUmFy RW50cnkiOnByaXZhdGVdPT4KICAgICBpbnQoNTMpCisgICAgWyJmbGFncyI6IlJhckVudHJ5Ijpwcml2 YXRlXT0+CisgICAgaW50KDM3MDA4KQogICB9CiB9CgoKTW9kaWZpZWQ6IHBlY2wvcmFyL3RydW5rL3Rl c3RzLzAwMy5waHB0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIHBlY2wvcmFyL3RydW5rL3Rlc3RzLzAwMy5waHB0CTIwMDkt MTEtMjkgMDM6MzI6NTQgVVRDIChyZXYgMjkxNDEwKQorKysgcGVjbC9yYXIvdHJ1bmsvdGVzdHMvMDAz LnBocHQJMjAwOS0xMS0yOSAwMzo0MToxMSBVVEMgKHJldiAyOTE0MTEpCkBAIC0yMyw0OSArMjMsNTMg QEAKIGVjaG8gIkRvbmVcbiI7CiA/PgogLS1FWFBFQ1RGLS0KLW9iamVjdChSYXJFbnRyeSkjJWQgKDEw KSB7Ci0gIFsicmFyZmlsZSJdPT4KK29iamVjdChSYXJFbnRyeSkjJWQgKCVkKSB7CisgIFsicmFyZmls ZSI6IlJhckVudHJ5Ijpwcml2YXRlXT0+CiAgIHJlc291cmNlKCVkKSBvZiB0eXBlIChSYXIgZmlsZSkK LSAgWyJuYW1lIl09PgorICBbIm5hbWUiOiJSYXJFbnRyeSI6cHJpdmF0ZV09PgogICBzdHJpbmcoMzAp ICJ0ZXN0IGZpbGUgd2l0aCB3aGl0ZXNwYWNlcy50eHQiCi0gIFsidW5wYWNrZWRfc2l6ZSJdPT4KKyAg WyJ1bnBhY2tlZF9zaXplIjoiUmFyRW50cnkiOnByaXZhdGVdPT4KICAgaW50KDE0KQotICBbInBhY2tl ZF9zaXplIl09PgorICBbInBhY2tlZF9zaXplIjoiUmFyRW50cnkiOnByaXZhdGVdPT4KICAgaW50KDIw KQotICBbImhvc3Rfb3MiXT0+CisgIFsiaG9zdF9vcyI6IlJhckVudHJ5Ijpwcml2YXRlXT0+CiAgIGlu dCgzKQotICBbImZpbGVfdGltZSJdPT4KKyAgWyJmaWxlX3RpbWUiOiJSYXJFbnRyeSI6cHJpdmF0ZV09 PgogICBzdHJpbmcoMTkpICIyMDA0LTA2LTExIDExOjAxOjMyIgotICBbImNyYyJdPT4KKyAgWyJjcmMi OiJSYXJFbnRyeSI6cHJpdmF0ZV09PgogICBzdHJpbmcoOCkgIjIxODkwZGQ5IgotICBbImF0dHIiXT0+ CisgIFsiYXR0ciI6IlJhckVudHJ5Ijpwcml2YXRlXT0+CiAgIGludCgzMzE4OCkKLSAgWyJ2ZXJzaW9u Il09PgorICBbInZlcnNpb24iOiJSYXJFbnRyeSI6cHJpdmF0ZV09PgogICBpbnQoMjkpCi0gIFsibWV0 aG9kIl09PgorICBbIm1ldGhvZCI6IlJhckVudHJ5Ijpwcml2YXRlXT0+CiAgIGludCg1MSkKKyAgWyJm bGFncyI6IlJhckVudHJ5Ijpwcml2YXRlXT0+CisgIGludCgzMjgwMCkKIH0KLW9iamVjdChSYXJFbnRy eSkjJWQgKDEwKSB7Ci0gIFsicmFyZmlsZSJdPT4KK29iamVjdChSYXJFbnRyeSkjJWQgKCVkKSB7Cisg IFsicmFyZmlsZSI6IlJhckVudHJ5Ijpwcml2YXRlXT0+CiAgIHJlc291cmNlKCVkKSBvZiB0eXBlIChS YXIgZmlsZSkKLSAgWyJuYW1lIl09PgorICBbIm5hbWUiOiJSYXJFbnRyeSI6cHJpdmF0ZV09PgogICBz dHJpbmcoNSkgIjIudHh0IgotICBbInVucGFja2VkX3NpemUiXT0+CisgIFsidW5wYWNrZWRfc2l6ZSI6 IlJhckVudHJ5Ijpwcml2YXRlXT0+CiAgIGludCg1KQotICBbInBhY2tlZF9zaXplIl09PgorICBbInBh Y2tlZF9zaXplIjoiUmFyRW50cnkiOnByaXZhdGVdPT4KICAgaW50KDE2KQotICBbImhvc3Rfb3MiXT0+ CisgIFsiaG9zdF9vcyI6IlJhckVudHJ5Ijpwcml2YXRlXT0+CiAgIGludCgyKQotICBbImZpbGVfdGlt ZSJdPT4KKyAgWyJmaWxlX3RpbWUiOiJSYXJFbnRyeSI6cHJpdmF0ZV09PgogICBzdHJpbmcoMTkpICIy MDA0LTA2LTExIDEwOjA3OjI2IgotICBbImNyYyJdPT4KKyAgWyJjcmMiOiJSYXJFbnRyeSI6cHJpdmF0 ZV09PgogICBzdHJpbmcoOCkgIjQ1YTkxOGRlIgotICBbImF0dHIiXT0+CisgIFsiYXR0ciI6IlJhckVu dHJ5Ijpwcml2YXRlXT0+CiAgIGludCgzMikKLSAgWyJ2ZXJzaW9uIl09PgorICBbInZlcnNpb24iOiJS YXJFbnRyeSI6cHJpdmF0ZV09PgogICBpbnQoMjkpCi0gIFsibWV0aG9kIl09PgorICBbIm1ldGhvZCI6 IlJhckVudHJ5Ijpwcml2YXRlXT0+CiAgIGludCg1MykKKyAgWyJmbGFncyI6IlJhckVudHJ5Ijpwcml2 YXRlXT0+CisgIGludCgzNzAwOCkKIH0KCiBXYXJuaW5nOiByYXJfb3BlbigpOiBGYWlsZWQgdG8gb3Bl biAlczogRVJBUl9FT1BFTiAoZmlsZSBvcGVuIGVycm9yKSBpbiAlcyBvbiBsaW5lICVkCgpNb2RpZmll ZDogcGVjbC9yYXIvdHJ1bmsvdGVzdHMvMDA0LnBocHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGVjbC9yYXIvdHJ1bmsv dGVzdHMvMDA0LnBocHQJMjAwOS0xMS0yOSAwMzozMjo1NCBVVEMgKHJldiAyOTE0MTApCisrKyBwZWNs L3Jhci90cnVuay90ZXN0cy8wMDQucGhwdAkyMDA5LTExLTI5IDAzOjQxOjExIFVUQyAocmV2IDI5MTQx MSkKQEAgLTQxLDkgKzQxLDYgQEAKIHZhcl9kdW1wKCRlbnRyeTIpOwogdmFyX2R1bXAoJGVudHJ5Mi0+ ZXh0cmFjdCgiIiwiIikpOwoKLXVuc2V0KCRlbnRyeTItPm5hbWUpOwotdmFyX2R1bXAoJGVudHJ5Mi0+ ZXh0cmFjdCgiIiwiIikpOwotCiBAdW5saW5rKCcyLnR4dCcpOwoKIGNoZGlyKCRvbGRjd2QpOwpAQCAt NTYsMzAgKzUzLDI5IEBACiAyMjIyMgogMjIyMjIKIHN0cmluZyg1KSAiMjIyMjIiCi1vYmplY3QoUmFy RW50cnkpIyVkICgxMCkgewotICBbInJhcmZpbGUiXT0+CitvYmplY3QoUmFyRW50cnkpIyVkICglZCkg eworICBbInJhcmZpbGUiOiJSYXJFbnRyeSI6cHJpdmF0ZV09PgogICByZXNvdXJjZSglZCkgb2YgdHlw ZSAoUmFyIGZpbGUpCi0gIFsibmFtZSJdPT4KKyAgWyJuYW1lIjoiUmFyRW50cnkiOnByaXZhdGVdPT4K ICAgc3RyaW5nKDUpICIyLnR4dCIKLSAgWyJ1bnBhY2tlZF9zaXplIl09PgorICBbInVucGFja2VkX3Np emUiOiJSYXJFbnRyeSI6cHJpdmF0ZV09PgogICBpbnQoNSkKLSAgWyJwYWNrZWRfc2l6ZSJdPT4KKyAg WyJwYWNrZWRfc2l6ZSI6IlJhckVudHJ5Ijpwcml2YXRlXT0+CiAgIGludCgxNikKLSAgWyJob3N0X29z Il09PgorICBbImhvc3Rfb3MiOiJSYXJFbnRyeSI6cHJpdmF0ZV09PgogICBpbnQoMikKLSAgWyJmaWxl X3RpbWUiXT0+CisgIFsiZmlsZV90aW1lIjoiUmFyRW50cnkiOnByaXZhdGVdPT4KICAgc3RyaW5nKDE5 KSAiMjAwNC0wNi0xMSAxMDowNzoyNiIKLSAgWyJjcmMiXT0+CisgIFsiY3JjIjoiUmFyRW50cnkiOnBy aXZhdGVdPT4KICAgc3RyaW5nKDgpICI0NWE5MThkZSIKLSAgWyJhdHRyIl09PgorICBbImF0dHIiOiJS YXJFbnRyeSI6cHJpdmF0ZV09PgogICBpbnQoMzIpCi0gIFsidmVyc2lvbiJdPT4KKyAgWyJ2ZXJzaW9u IjoiUmFyRW50cnkiOnByaXZhdGVdPT4KICAgaW50KDI5KQotICBbIm1ldGhvZCJdPT4KKyAgWyJtZXRo b2QiOiJSYXJFbnRyeSI6cHJpdmF0ZV09PgogICBpbnQoNTMpCisgIFsiZmxhZ3MiOiJSYXJFbnRyeSI6 cHJpdmF0ZV09PgorICBpbnQoMzcwMDgpCiB9CiBib29sKHRydWUpCi0KLVdhcm5pbmc6IFJhckVudHJ5 OjpleHRyYWN0KCk6IFVuYWJsZSB0byBmaW5kIHByb3BlcnR5ICduYW1lJyBpbiAlcyBvbiBsaW5lICVk Ci1ib29sKGZhbHNlKQogRG9uZQoKTW9kaWZpZWQ6IHBlY2wvcmFyL3RydW5rL3Rlc3RzLzAwNi5waHB0 Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIHBlY2wvcmFyL3RydW5rL3Rlc3RzLzAwNi5waHB0CTIwMDktMTEtMjkgMDM6MzI6 NTQgVVRDIChyZXYgMjkxNDEwKQorKysgcGVjbC9yYXIvdHJ1bmsvdGVzdHMvMDA2LnBocHQJMjAwOS0x MS0yOSAwMzo0MToxMSBVVEMgKHJldiAyOTE0MTEpCkBAIC03LDgyICs3LDE2IEBACgogJHJhcl9maWxl MSA9IHJhcl9vcGVuKGRpcm5hbWUoX19GSUxFX18pLicvbXVsdGkucGFydDEucmFyJyk7CiAkbGlzdCA9 IHJhcl9saXN0KCRyYXJfZmlsZTEpOwotdmFyX2R1bXAoJGxpc3QpOworZWNobyAkbGlzdFswXS0+Z2V0 Q3JjKCkuIlxuIjsKK2VjaG8gJGxpc3RbMV0tPmdldENyYygpLiJcbiI7CitlY2hvICRsaXN0WzJdLT5n ZXRDcmMoKS4iXG4iOwogZWNobyAiXG4iOwoKIGVjaG8gIkRvbmVcbiI7CiA/PgogLS1FWFBFQ1RGLS0K LWFycmF5KDMpIHsKLSAgWzBdPT4KLSAgb2JqZWN0KFJhckVudHJ5KSMlZCAoJWQpIHsKLSAgICBbInJh cmZpbGUiXT0+Ci0gICAgcmVzb3VyY2UoJWQpIG9mIHR5cGUgKFJhciBmaWxlKQotICAgIFsibmFtZSJd PT4KLSAgICBzdHJpbmcoOSkgImZpbGUxLnR4dCIKLSAgICBbInVucGFja2VkX3NpemUiXT0+Ci0gICAg aW50KDE4KQotICAgIFsicGFja2VkX3NpemUiXT0+Ci0gICAgaW50KDE4KQotICAgIFsiaG9zdF9vcyJd PT4KLSAgICBpbnQoMikKLSAgICBbImZpbGVfdGltZSJdPT4KLSAgICBzdHJpbmcoMTkpICIyMDA5LTEx LTE4IDIzOjUyOjI0IgotICAgIFsiY3JjIl09PgotICAgIHN0cmluZyg4KSAiNTJiMjgyMDIiCi0gICAg WyJhdHRyIl09PgotICAgIGludCgzMikKLSAgICBbInZlcnNpb24iXT0+Ci0gICAgaW50KDI5KQotICAg IFsibWV0aG9kIl09PgotICAgIGludCg0OCkKLSAgfQotICBbMV09PgotICBvYmplY3QoUmFyRW50cnkp IyVkICglZCkgewotICAgIFsicmFyZmlsZSJdPT4KLSAgICByZXNvdXJjZSglZCkgb2YgdHlwZSAoUmFy IGZpbGUpCi0gICAgWyJuYW1lIl09PgotICAgIHN0cmluZyg5KSAiZmlsZTIudHh0IgotICAgIFsidW5w YWNrZWRfc2l6ZSJdPT4KLSAgICBpbnQoMTc3MDQpCi0gICAgWyJwYWNrZWRfc2l6ZSJdPT4KLSAgICBp bnQoMTM2NTQpCi0gICAgWyJob3N0X29zIl09PgotICAgIGludCgyKQotICAgIFsiZmlsZV90aW1lIl09 PgotICAgIHN0cmluZygxOSkgIjIwMDktMTEtMTkgMDA6MDA6NTIiCi0gICAgWyJjcmMiXT0+Ci0gICAg c3RyaW5nKDgpICJmMmM3OTg4MSIKLSAgICBbImF0dHIiXT0+Ci0gICAgaW50KDMyKQotICAgIFsidmVy c2lvbiJdPT4KLSAgICBpbnQoMjkpCi0gICAgWyJtZXRob2QiXT0+Ci0gICAgaW50KDUxKQotICB9Ci0g IFsyXT0+Ci0gIG9iamVjdChSYXJFbnRyeSkjJWQgKCVkKSB7Ci0gICAgWyJyYXJmaWxlIl09PgotICAg IHJlc291cmNlKCVkKSBvZiB0eXBlIChSYXIgZmlsZSkKLSAgICBbIm5hbWUiXT0+Ci0gICAgc3RyaW5n KDkpICJmaWxlMy50eHQiCi0gICAgWyJ1bnBhY2tlZF9zaXplIl09PgotICAgIGludCgxOCkKLSAgICBb InBhY2tlZF9zaXplIl09PgotICAgIGludCgyNykKLSAgICBbImhvc3Rfb3MiXT0+Ci0gICAgaW50KDIp Ci0gICAgWyJmaWxlX3RpbWUiXT0+Ci0gICAgc3RyaW5nKDE5KSAiMjAwOS0xMS0xOCAyMzo1MjozNiIK LSAgICBbImNyYyJdPT4KLSAgICBzdHJpbmcoOCkgImJjYmNlMzJlIgotICAgIFsiYXR0ciJdPT4KLSAg ICBpbnQoMzIpCi0gICAgWyJ2ZXJzaW9uIl09PgotICAgIGludCgyOSkKLSAgICBbIm1ldGhvZCJdPT4K LSAgICBpbnQoNTEpCi0gIH0KLX0KKzUyYjI4MjAyCitmMmM3OTg4MQorYmNiY2UzMmUKCiBEb25lCgpN b2RpZmllZDogcGVjbC9yYXIvdHJ1bmsvdGVzdHMvMDA4LnBocHQKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGVjbC9yYXIv dHJ1bmsvdGVzdHMvMDA4LnBocHQJMjAwOS0xMS0yOSAwMzozMjo1NCBVVEMgKHJldiAyOTE0MTApCisr KyBwZWNsL3Jhci90cnVuay90ZXN0cy8wMDgucGhwdAkyMDA5LTExLTI5IDAzOjQxOjExIFVUQyAocmV2 IDI5MTQxMSkKQEAgLTcsOCArNyw3IEBACgogJHJhcl9maWxlMSA9IHJhcl9vcGVuKGRpcm5hbWUoX19G SUxFX18pLicvbXVsdGkucGFydDEucmFyJyk7CiAkZW50cnkgPSByYXJfZW50cnlfZ2V0KCRyYXJfZmls ZTEsICJmaWxlMS50eHQiKTsKLXZhcl9kdW1wKCRlbnRyeSk7Ci1lY2hvICJcbiI7CitlY2hvICIkZW50 cnlcbiI7CiAkZW50cnkgPSByYXJfZW50cnlfZ2V0KCRyYXJfZmlsZTEsICJub25leGlzdGVudF9maWxl LnR4dCIpOwogdmFyX2R1bXAoJGVudHJ5KTsKIGVjaG8gIlxuIjsKQEAgLTIxLDMwICsyMCw4IEBACiBl Y2hvICJEb25lXG4iOwogPz4KIC0tRVhQRUNURi0tCi1vYmplY3QoUmFyRW50cnkpIyVkICglZCkgewot ICBbInJhcmZpbGUiXT0+Ci0gIHJlc291cmNlKCVkKSBvZiB0eXBlIChSYXIgZmlsZSkKLSAgWyJuYW1l Il09PgotICBzdHJpbmcoOSkgImZpbGUxLnR4dCIKLSAgWyJ1bnBhY2tlZF9zaXplIl09PgotICBpbnQo MTgpCi0gIFsicGFja2VkX3NpemUiXT0+Ci0gIGludCgxOCkKLSAgWyJob3N0X29zIl09PgotICBpbnQo MikKLSAgWyJmaWxlX3RpbWUiXT0+Ci0gIHN0cmluZygxOSkgIjIwMDktMTEtMTggMjM6NTI6MjQiCi0g IFsiY3JjIl09PgotICBzdHJpbmcoOCkgIjUyYjI4MjAyIgotICBbImF0dHIiXT0+Ci0gIGludCgzMikK LSAgWyJ2ZXJzaW9uIl09PgotICBpbnQoMjkpCi0gIFsibWV0aG9kIl09PgotICBpbnQoNDgpCi19CitS YXJFbnRyeSBmb3IgZmlsZSAiZmlsZTEudHh0IiAoNTJiMjgyMDIpCgotCiBXYXJuaW5nOiByYXJfZW50 cnlfZ2V0KCk6IGNhbm5vdCBmaW5kIGZpbGUgIm5vbmV4aXN0ZW50X2ZpbGUudHh0IiBpbiBSYXIgYXJj aGl2ZSAiJXMiLiBpbiAlcyBvbiBsaW5lICVkCiBib29sKGZhbHNlKQoKCk1vZGlmaWVkOiBwZWNsL3Jh ci90cnVuay90ZXN0cy8wMTMucGhwdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwZWNsL3Jhci90cnVuay90ZXN0cy8wMTMu cGhwdAkyMDA5LTExLTI5IDAzOjMyOjU0IFVUQyAocmV2IDI5MTQxMCkKKysrIHBlY2wvcmFyL3RydW5r L3Rlc3RzLzAxMy5waHB0CTIwMDktMTEtMjkgMDM6NDE6MTEgVVRDIChyZXYgMjkxNDExKQpAQCAtOSwz MyArOSwxMiBAQAogJGVudHJpZXMgPSByYXJfbGlzdCgkcmFyX2ZpbGUxKTsKICRuYW1lID0gcmVzZXQo JGVudHJpZXMpLT5nZXROYW1lKCk7CiAkZW50cnliYWNrID0gcmFyX2VudHJ5X2dldCgkcmFyX2ZpbGUx LCAkbmFtZSk7Ci12YXJfZHVtcCgkZW50cnliYWNrKTsKK2VjaG8gIiRlbnRyeWJhY2tcbiI7CiBlY2hv ICJcbiI7CgogZWNobyAiRG9uZVxuIjsKID8+CiAtLUVYUEVDVEYtLQotb2JqZWN0KFJhckVudHJ5KSMl ZCAoJWQpIHsKLSAgWyJyYXJmaWxlIl09PgotICByZXNvdXJjZSglZCkgb2YgdHlwZSAoUmFyIGZpbGUp Ci0gIFsibmFtZSJdPT4KLSAgc3RyaW5nKDEzKSAiZmlsZTHDgNueLnR4dCIKLSAgWyJ1bnBhY2tlZF9z aXplIl09PgotICBpbnQoMTgpCi0gIFsicGFja2VkX3NpemUiXT0+Ci0gIGludCgxOCkKLSAgWyJob3N0 X29zIl09PgotICBpbnQoMikKLSAgWyJmaWxlX3RpbWUiXT0+Ci0gIHN0cmluZygxOSkgIjIwMDktMTEt MTggMjM6NTI6MjQiCi0gIFsiY3JjIl09PgotICBzdHJpbmcoOCkgIjUyYjI4MjAyIgotICBbImF0dHIi XT0+Ci0gIGludCgzMikKLSAgWyJ2ZXJzaW9uIl09PgotICBpbnQoMjkpCi0gIFsibWV0aG9kIl09Pgot ICBpbnQoNDgpCi19CitSYXJFbnRyeSBmb3IgZmlsZSAiZmlsZTHDgNueLnR4dCIgKDUyYjI4MjAyKQoK IERvbmUKCk1vZGlmaWVkOiBwZWNsL3Jhci90cnVuay90ZXN0cy8wMTQucGhwdAo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBw ZWNsL3Jhci90cnVuay90ZXN0cy8wMTQucGhwdAkyMDA5LTExLTI5IDAzOjMyOjU0IFVUQyAocmV2IDI5 MTQxMCkKKysrIHBlY2wvcmFyL3RydW5rL3Rlc3RzLzAxNC5waHB0CTIwMDktMTEtMjkgMDM6NDE6MTEg VVRDIChyZXYgMjkxNDExKQpAQCAtNyw3ICs3LDcgQEAKCiAkcmFyX2ZpbGUxID0gcmFyX29wZW4oZGly bmFtZShfX0ZJTEVfXykuJy9yYXJfdW5pY29kZS5yYXInKTsKICRlbnRyeSA9IHJhcl9lbnRyeV9nZXQo JHJhcl9maWxlMSwgImZpbGUxw4Dbni50eHQiKTsKLXZhcl9kdW1wKCRlbnRyeSk7CitlY2hvICRlbnRy eS4iXG4iOwogZWNobyAiXG4iOwogJHN0cmVhbSA9ICRlbnRyeS0+Z2V0U3RyZWFtKCk7CiBpZiAoJHN0 cmVhbSAhPT0gZmFsc2UpCkBAIC0yMCwyOCArMjAsNyBAQAogZWNobyAiRG9uZVxuIjsKID8+CiAtLUVY UEVDVEYtLQotb2JqZWN0KFJhckVudHJ5KSMlZCAoJWQpIHsKLSAgWyJyYXJmaWxlIl09PgotICByZXNv dXJjZSglZCkgb2YgdHlwZSAoUmFyIGZpbGUpCi0gIFsibmFtZSJdPT4KLSAgc3RyaW5nKDEzKSAiZmls ZTHDgNueLnR4dCIKLSAgWyJ1bnBhY2tlZF9zaXplIl09PgotICBpbnQoMTgpCi0gIFsicGFja2VkX3Np emUiXT0+Ci0gIGludCgxOCkKLSAgWyJob3N0X29zIl09PgotICBpbnQoMikKLSAgWyJmaWxlX3RpbWUi XT0+Ci0gIHN0cmluZygxOSkgIjIwMDktMTEtMTggMjM6NTI6MjQiCi0gIFsiY3JjIl09PgotICBzdHJp bmcoOCkgIjUyYjI4MjAyIgotICBbImF0dHIiXT0+Ci0gIGludCgzMikKLSAgWyJ2ZXJzaW9uIl09Pgot ICBpbnQoMjkpCi0gIFsibWV0aG9kIl09PgotICBpbnQoNDgpCi19CitSYXJFbnRyeSBmb3IgZmlsZSAi ZmlsZTHDgNueLnR4dCIgKDUyYjI4MjAyKQoKIGNvbnRlbnRzIG9mIGZpbGUgMQogRG9uZQoKTW9kaWZp ZWQ6IHBlY2wvcmFyL3RydW5rL3Rlc3RzLzAxNS5waHB0Cj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBlY2wvcmFyL3RydW5r L3Rlc3RzLzAxNS5waHB0CTIwMDktMTEtMjkgMDM6MzI6NTQgVVRDIChyZXYgMjkxNDEwKQorKysgcGVj bC9yYXIvdHJ1bmsvdGVzdHMvMDE1LnBocHQJMjAwOS0xMS0yOSAwMzo0MToxMSBVVEMgKHJldiAyOTE0 MTEpCkBAIC0xMCw3ICsxMCw3IEBACiAkZW50cmllcyA9IHJhcl9saXN0KCRyYXJfZmlsZTEpOwogJGVu dHJ5MSA9IHJlc2V0KCRlbnRyaWVzKTsKIHVuc2V0KCRlbnRyaWVzKTsKLXZhcl9kdW1wKCRlbnRyeTEp OworZWNobyAkZW50cnkxLiJcbiI7CiBlY2hvICJcbiI7CgogcmFyX2Nsb3NlKCRyYXJfZmlsZTEpOwpA QCAtMjEsMjggKzIxLDcgQEAKID8+CiAtLUVYUEVDVEYtLQogcmVzb3VyY2UoJWQpIG9mIHR5cGUgKFJh ciBmaWxlKQotb2JqZWN0KFJhckVudHJ5KSMlZCAoJWQpIHsKLSAgWyJyYXJmaWxlIl09PgotICByZXNv dXJjZSglZCkgb2YgdHlwZSAoUmFyIGZpbGUpCi0gIFsibmFtZSJdPT4KLSAgc3RyaW5nKDUpICIxLnR4 dCIKLSAgWyJ1bnBhY2tlZF9zaXplIl09PgotICBpbnQoNSkKLSAgWyJwYWNrZWRfc2l6ZSJdPT4KLSAg aW50KDE3KQotICBbImhvc3Rfb3MiXT0+Ci0gIGludCgyKQotICBbImZpbGVfdGltZSJdPT4KLSAgc3Ry aW5nKDE5KSAiMjAwNC0wNi0xMSAxMDowNzoxOCIKLSAgWyJjcmMiXT0+Ci0gIHN0cmluZyg4KSAiYTBk ZTcxYzAiCi0gIFsiYXR0ciJdPT4KLSAgaW50KDMyKQotICBbInZlcnNpb24iXT0+Ci0gIGludCgyOSkK LSAgWyJtZXRob2QiXT0+Ci0gIGludCg1MykKLX0KK1JhckVudHJ5IGZvciBmaWxlICIxLnR4dCIgKGEw ZGU3MWMwKQoKIHJlc291cmNlKCVkKSBvZiB0eXBlIChVbmtub3duKQogRG9uZQoKTW9kaWZpZWQ6IHBl Y2wvcmFyL3RydW5rL3Rlc3RzLzAxOC5waHB0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBlY2wvcmFyL3RydW5rL3Rlc3Rz LzAxOC5waHB0CTIwMDktMTEtMjkgMDM6MzI6NTQgVVRDIChyZXYgMjkxNDEwKQorKysgcGVjbC9yYXIv dHJ1bmsvdGVzdHMvMDE4LnBocHQJMjAwOS0xMS0yOSAwMzo0MToxMSBVVEMgKHJldiAyOTE0MTEpCkBA IC02LDYyICs2LDE5IEBACiA8P3BocAogJHJhcl9maWxlMSA9IHJhcl9vcGVuKGRpcm5hbWUoX19GSUxF X18pLicvbXVsdGkucGFydDIucmFyJyk7CiAkZW50cmllcyA9IHJhcl9saXN0KCRyYXJfZmlsZTEpOwot dmFyX2R1bXAoJGVudHJpZXMpOworZWNobyAiTnVtYmVyIG9mIGVudHJpZXM6ICIgLiBjb3VudCgkZW50 cmllcykgLiAiXG4iOworZWNobyByZXNldCgkZW50cmllcykuIlxuIjsKICRlID0gcmFyX2VudHJ5X2dl dCgkcmFyX2ZpbGUxLCAiZmlsZTIudHh0Iik7CiB2YXJfZHVtcCgkZSk7CiAkZSA9IHJhcl9lbnRyeV9n ZXQoJHJhcl9maWxlMSwgImZpbGUzLnR4dCIpOwotdmFyX2R1bXAoJGUpOworZWNobyAkZS4iXG4iOwoK IGVjaG8gIkRvbmVcbiI7CiAtLUVYUEVDVEYtLQotYXJyYXkoMSkgewotICBbMF09PgotICBvYmplY3Qo UmFyRW50cnkpIyVkICglZCkgewotICAgIFsicmFyZmlsZSJdPT4KLSAgICByZXNvdXJjZSglZCkgb2Yg dHlwZSAoUmFyIGZpbGUpCi0gICAgWyJuYW1lIl09PgotICAgIHN0cmluZyg5KSAiZmlsZTMudHh0Igot ICAgIFsidW5wYWNrZWRfc2l6ZSJdPT4KLSAgICBpbnQoMTgpCi0gICAgWyJwYWNrZWRfc2l6ZSJdPT4K LSAgICBpbnQoMjcpCi0gICAgWyJob3N0X29zIl09PgotICAgIGludCgyKQotICAgIFsiZmlsZV90aW1l Il09PgotICAgIHN0cmluZygxOSkgIjIwMDktMTEtMTggMjM6NTI6MzYiCi0gICAgWyJjcmMiXT0+Ci0g ICAgc3RyaW5nKDgpICJiY2JjZTMyZSIKLSAgICBbImF0dHIiXT0+Ci0gICAgaW50KDMyKQotICAgIFsi dmVyc2lvbiJdPT4KLSAgICBpbnQoMjkpCi0gICAgWyJtZXRob2QiXT0+Ci0gICAgaW50KDUxKQotICB9 Ci19CitOdW1iZXIgb2YgZW50cmllczogMQorUmFyRW50cnkgZm9yIGZpbGUgImZpbGUzLnR4dCIgKGJj YmNlMzJlKQoKIFdhcm5pbmc6IHJhcl9lbnRyeV9nZXQoKTogY2Fubm90IGZpbmQgZmlsZSAiZmlsZTIu dHh0IiBpbiBSYXIgYXJjaGl2ZSAiJXMuIGluICVzIG9uIGxpbmUgJWQKIGJvb2woZmFsc2UpCi1vYmpl Y3QoUmFyRW50cnkpIyVkICglZCkgewotICBbInJhcmZpbGUiXT0+Ci0gIHJlc291cmNlKCVkKSBvZiB0 eXBlIChSYXIgZmlsZSkKLSAgWyJuYW1lIl09PgotICBzdHJpbmcoOSkgImZpbGUzLnR4dCIKLSAgWyJ1 bnBhY2tlZF9zaXplIl09PgotICBpbnQoMTgpCi0gIFsicGFja2VkX3NpemUiXT0+Ci0gIGludCgyNykK LSAgWyJob3N0X29zIl09PgotICBpbnQoMikKLSAgWyJmaWxlX3RpbWUiXT0+Ci0gIHN0cmluZygxOSkg IjIwMDktMTEtMTggMjM6NTI6MzYiCi0gIFsiY3JjIl09PgotICBzdHJpbmcoOCkgImJjYmNlMzJlIgot ICBbImF0dHIiXT0+Ci0gIGludCgzMikKLSAgWyJ2ZXJzaW9uIl09PgotICBpbnQoMjkpCi0gIFsibWV0 aG9kIl09PgotICBpbnQoNTEpCi19CitSYXJFbnRyeSBmb3IgZmlsZSAiZmlsZTMudHh0IiAoYmNiY2Uz MmUpCiBEb25lCg== --b7f2d50c9fca83761e55bd90629464c18e1a3a7b-- |
cataphr...@php.net (=?utf-8?q?Gustavo_Andr=C3=A9_dos_Santos_Lopes?=) 11/29/2009 3:41:11 AM |
note 97095 added to soapclient.soapclient
note 97094 added to function.sqlite-changes
note 97093 added to function.sqlite-changes
note 97092 added to ref.xmlrpc
note 97091 added to function.var-export