Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:36115 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 18984 invoked from network); 13 Mar 2008 08:55:45 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 13 Mar 2008 08:55:45 -0000 Authentication-Results: pb1.pair.com smtp.mail=dmitry@zend.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=dmitry@zend.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain zend.com designates 212.25.124.162 as permitted sender) X-PHP-List-Original-Sender: dmitry@zend.com X-Host-Fingerprint: 212.25.124.162 mail.zend.com Windows 2000 SP4, XP SP1 Received: from [212.25.124.162] ([212.25.124.162:33097] helo=mx1.zend.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 6D/93-34038-E0CE8D74 for ; Thu, 13 Mar 2008 03:55:45 -0500 X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C884E8.0F9249FF" Date: Thu, 13 Mar 2008 10:55:04 +0200 Message-ID: <06B0D32C7A96544490D18AF653D6BDE5026BA06C@il-ex1.zend.net> X-MS-Has-Attach: yes X-MS-TNEF-Correlator: Thread-Topic: Delayed early binding patch Thread-Index: AciE592wy2I0hqXfRYiObxewzVd3QQ== To: "internals" Subject: Delayed early binding patch From: dmitry@zend.com ("Dmitry Stogov") ------_=_NextPart_001_01C884E8.0F9249FF Content-Type: text/plain; charset="koi8-r" Content-Transfer-Encoding: quoted-printable Hi, I have separated fixes and optimizations from the delayed early binding = itself and added comments about options. Now the patch must be more = clear. The order of actual class declaration in PHP scripts doesn't follow to = syntax order. Some classes might be declared at compile-time (early = binding - the classes which don't implement interfaces and doesn't have = parent or have parent class that is known during compilation) others = only in run-time. Many applications depend on this order and will be = broken in case if we disable early binding. On the other hand early = binding provides a big problem for opcode caches which are not able to = emulate it properly. The early binding itself is impossible because = caches cannot create cross-script dependencies or dependencies from = internal classes. So most of them try to emulate early binding during = restoring script from cache, but in fact they may declare classes that = were never declared at compile time (for example class declarations = wrapped by =D4=E1=F8if=D4=E1=FC statement=D4=E1=FC). The path for PHP_5_3 is going to provide a general solution to control = some aspect of PHP compilation. The patch introduces = CG(compiler_options) that is a bit-set of compiler flags. ZE provides = two default sets of the options. One for script compilation and another = for code evaluation. Some extensions like opcode caches and debuggers = might set (or reset) individual flags in the CG(compiler_options). The patch defines the following options: ZEND_COMPILE_EXTENDED_INFO is a replacement of CG(extended_info) ZEND_COMPILE_HANDLE_OP_ARRAY is a replacement CG(handle_op_arrays) ZEND_COMPILE_IGNORE_INTERNAL_FUNCTIONS disables generation of direct = calls to internal functions (ZEND_DO_FCALL) and use indirect calls = (ZEND_INIT_FCALL_BY_NAME + ZEND_DO_FCALL_BY_NAME). This flag may be = useful if script compiled by one PHP binary but executed by another, = which may miss some internal functions. ZEND_COMPILE_IGNORE_INTERNAL_CLASSES disables usage of internal classes = during compilation. It disables early binding of classes with parent = internal classes. Also all non-compound names in namespaces might be = resolved to internal classes at runtime. ZEND_COMPILE_DELAYED_BINDING changes ZEND_DECLARE_INHERITED_CLASS opcode = into ZEND_DECLARE_INHERITED_CLASS_DELAYD for all opcodes that were = failed to perform early binding because of inexistence of parent class. = This flag is especial useful with caches which have to perform early = binding during script-loading-time instead of compile-time. In case if = parent class doesn't exists at script-loading-time too, actual class = declaration will be finally delayed to run-time. So to use delayed early binding, opcode cache should set proper flags = and then call the original compiler. cache_compile_file() { ... orig_compiler_options =3D CG(compiler_options); CG(compiler_options) |=3D ZEND_COMPILE_IGNORE_INTERNAL_CLASSES | ZEND_COMPILE_DELAYED_BINDING; ret =3D orig_compile_file(); CG(compiler_options) =3D orig_compiler_options; ... retur ret; } And then call to zend_do_delayed_early_binding() for op_array of each = restored script. Thanks. Dmitry. ------_=_NextPart_001_01C884E8.0F9249FF Content-Type: text/plain; name="delayed_early_binding-9.diff.txt" Content-Transfer-Encoding: base64 Content-Description: delayed_early_binding-9.diff.txt Content-Disposition: attachment; filename="delayed_early_binding-9.diff.txt" SW5kZXg6IFplbmQvemVuZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L1plbmRF bmdpbmUyL3plbmQuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zMDguMi4xMi4yLjM1LjIuMTAK ZGlmZiAtdSAtcCAtZCAtcjEuMzA4LjIuMTIuMi4zNS4yLjEwIHplbmQuYwotLS0gWmVuZC96ZW5k LmMJOCBNYXIgMjAwOCAyMTo1NDowMyAtMDAwMAkxLjMwOC4yLjEyLjIuMzUuMi4xMAorKysgWmVu ZC96ZW5kLmMJMTIgTWFyIDIwMDggMTE6MDY6MzYgLTAwMDAKQEAgLTQ0NiwxNSArNDQ2LDE1IEBA IHN0YXRpYyB2b2lkIHJlZ2lzdGVyX3N0YW5kYXJkX2NsYXNzKFRTUk0KIC8qIH19fSAqLwogCiAj aWZkZWYgWlRTCi1zdGF0aWMgemVuZF9ib29sIGFzcF90YWdzX2RlZmF1bHQJCT0gMDsKLXN0YXRp YyB6ZW5kX2Jvb2wgc2hvcnRfdGFnc19kZWZhdWx0CQk9IDE7Ci1zdGF0aWMgemVuZF9ib29sIGN0 X3Bhc3NfcmVmX2RlZmF1bHQJPSAxOwotc3RhdGljIHplbmRfYm9vbCBleHRlbmRlZF9pbmZvX2Rl ZmF1bHQJPSAwOworc3RhdGljIHplbmRfYm9vbCBhc3BfdGFnc19kZWZhdWx0CQkgID0gMDsKK3N0 YXRpYyB6ZW5kX2Jvb2wgc2hvcnRfdGFnc19kZWZhdWx0CQkgID0gMTsKK3N0YXRpYyB6ZW5kX2Jv b2wgY3RfcGFzc19yZWZfZGVmYXVsdAkgID0gMTsKK3N0YXRpYyB6ZW5kX3VpbnQgY29tcGlsZXJf b3B0aW9uc19kZWZhdWx0ID0gWkVORF9DT01QSUxFX0RFRkFVTFQ7CiAjZWxzZQotIyBkZWZpbmUg YXNwX3RhZ3NfZGVmYXVsdAkJMAotIyBkZWZpbmUgc2hvcnRfdGFnc19kZWZhdWx0CQkxCi0jIGRl ZmluZSBjdF9wYXNzX3JlZl9kZWZhdWx0CTEKLSMgZGVmaW5lIGV4dGVuZGVkX2luZm9fZGVmYXVs dAkwCisjIGRlZmluZSBhc3BfdGFnc19kZWZhdWx0CQkJMAorIyBkZWZpbmUgc2hvcnRfdGFnc19k ZWZhdWx0CQkJMQorIyBkZWZpbmUgY3RfcGFzc19yZWZfZGVmYXVsdAkJMQorIyBkZWZpbmUgY29t cGlsZXJfb3B0aW9uc19kZWZhdWx0CVpFTkRfQ09NUElMRV9ERUZBVUxUCiAjZW5kaWYKIAogc3Rh dGljIHZvaWQgemVuZF9zZXRfZGVmYXVsdF9jb21waWxlX3RpbWVfdmFsdWVzKFRTUk1MU19EKSAv KiB7e3sgKi8KQEAgLTQ2Myw3ICs0NjMsNyBAQCBzdGF0aWMgdm9pZCB6ZW5kX3NldF9kZWZhdWx0 X2NvbXBpbGVfdGltCiAJQ0coYXNwX3RhZ3MpID0gYXNwX3RhZ3NfZGVmYXVsdDsKIAlDRyhzaG9y dF90YWdzKSA9IHNob3J0X3RhZ3NfZGVmYXVsdDsKIAlDRyhhbGxvd19jYWxsX3RpbWVfcGFzc19y ZWZlcmVuY2UpID0gY3RfcGFzc19yZWZfZGVmYXVsdDsKLQlDRyhleHRlbmRlZF9pbmZvKSA9IGV4 dGVuZGVkX2luZm9fZGVmYXVsdDsKKwlDRyhjb21waWxlcl9vcHRpb25zKSA9IGNvbXBpbGVyX29w dGlvbnNfZGVmYXVsdDsKIH0KIC8qIH19fSAqLwogCkBAIC03MjgsNyArNzI4LDcgQEAgdm9pZCB6 ZW5kX3Bvc3Rfc3RhcnR1cChUU1JNTFNfRCkgLyoge3t7IAogCWFzcF90YWdzX2RlZmF1bHQgPSBD Ryhhc3BfdGFncyk7CiAJc2hvcnRfdGFnc19kZWZhdWx0ID0gQ0coc2hvcnRfdGFncyk7CiAJY3Rf cGFzc19yZWZfZGVmYXVsdCA9IENHKGFsbG93X2NhbGxfdGltZV9wYXNzX3JlZmVyZW5jZSk7Ci0J ZXh0ZW5kZWRfaW5mb19kZWZhdWx0ID0gQ0coZXh0ZW5kZWRfaW5mbyk7CisJY29tcGlsZXJfb3B0 aW9uc19kZWZhdWx0ID0gQ0coY29tcGlsZXJfb3B0aW9ucyk7CiAKIAl6ZW5kX2Rlc3Ryb3lfcnNy Y19saXN0KCZFRyhwZXJzaXN0ZW50X2xpc3QpIFRTUk1MU19DQyk7CiAJZnJlZShjb21waWxlcl9n bG9iYWxzLT5mdW5jdGlvbl90YWJsZSk7CkluZGV4OiBaZW5kL3plbmRfY29tcGlsZS5jCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L1plbmRFbmdpbmUyL3plbmRfY29tcGlsZS5jLHYK cmV0cmlldmluZyByZXZpc2lvbiAxLjY0Ny4yLjI3LjIuNDEuMi40OQpkaWZmIC11IC1wIC1kIC1y MS42NDcuMi4yNy4yLjQxLjIuNDkgemVuZF9jb21waWxlLmMKLS0tIFplbmQvemVuZF9jb21waWxl LmMJMTIgTWFyIDIwMDggMTA6NDA6MDIgLTAwMDAJMS42NDcuMi4yNy4yLjQxLjIuNDkKKysrIFpl bmQvemVuZF9jb21waWxlLmMJMTIgTWFyIDIwMDggMTE6MDY6MzcgLTAwMDAKQEAgLTEzNyw3ICsx MzcsNiBAQCB2b2lkIHplbmRfaW5pdF9jb21waWxlcl9kYXRhX3N0cnVjdHVyZXMoCiAJemVuZF9s bGlzdF9pbml0KCZDRyhsaXN0X2xsaXN0KSwgc2l6ZW9mKGxpc3RfbGxpc3RfZWxlbWVudCksIE5V TEwsIDApOwogCXplbmRfbGxpc3RfaW5pdCgmQ0coZGltZW5zaW9uX2xsaXN0KSwgc2l6ZW9mKGlu dCksIE5VTEwsIDApOwogCXplbmRfc3RhY2tfaW5pdCgmQ0cobGlzdF9zdGFjaykpOwotCUNHKGhh bmRsZV9vcF9hcnJheXMpID0gMTsKIAlDRyhpbl9jb21waWxhdGlvbikgPSAwOwogCUNHKHN0YXJ0 X2xpbmVubykgPSAwOwogCUNHKGN1cnJlbnRfbmFtZXNwYWNlKSA9IE5VTEw7CkBAIC0xMjU5LDcg KzEyNTgsNyBAQCB2b2lkIHplbmRfZG9fYmVnaW5fZnVuY3Rpb25fZGVjbGFyYXRpb24oCiAJCXpl bmRfaGFzaF91cGRhdGUoQ0coZnVuY3Rpb25fdGFibGUpLCBvcGxpbmUtPm9wMS51LmNvbnN0YW50 LnZhbHVlLnN0ci52YWwsIG9wbGluZS0+b3AxLnUuY29uc3RhbnQudmFsdWUuc3RyLmxlbiwgJm9w X2FycmF5LCBzaXplb2YoemVuZF9vcF9hcnJheSksICh2b2lkICoqKSAmQ0coYWN0aXZlX29wX2Fy cmF5KSk7CiAJfQogCi0JaWYgKENHKGV4dGVuZGVkX2luZm8pKSB7CisJaWYgKENHKGNvbXBpbGVy X29wdGlvbnMpICYgWkVORF9DT01QSUxFX0VYVEVOREVEX0lORk8pIHsKIAkJemVuZF9vcCAqb3Bs aW5lID0gZ2V0X25leHRfb3AoQ0coYWN0aXZlX29wX2FycmF5KSBUU1JNTFNfQ0MpOwogCiAJCW9w bGluZS0+b3Bjb2RlID0gWkVORF9FWFRfTk9QOwpAQCAtMTQzOCw3ICsxNDM3LDkgQEAgaW50IHpl bmRfZG9fYmVnaW5fZnVuY3Rpb25fY2FsbCh6bm9kZSAqZgogCX0KIAkKIAlsY25hbWUgPSB6ZW5k X3N0cl90b2xvd2VyX2R1cChmdW5jdGlvbl9uYW1lLT51LmNvbnN0YW50LnZhbHVlLnN0ci52YWws IGZ1bmN0aW9uX25hbWUtPnUuY29uc3RhbnQudmFsdWUuc3RyLmxlbik7Ci0JaWYgKHplbmRfaGFz aF9maW5kKENHKGZ1bmN0aW9uX3RhYmxlKSwgbGNuYW1lLCBmdW5jdGlvbl9uYW1lLT51LmNvbnN0 YW50LnZhbHVlLnN0ci5sZW4rMSwgKHZvaWQgKiopICZmdW5jdGlvbik9PUZBSUxVUkUpIHsKKwlp ZiAoKHplbmRfaGFzaF9maW5kKENHKGZ1bmN0aW9uX3RhYmxlKSwgbGNuYW1lLCBmdW5jdGlvbl9u YW1lLT51LmNvbnN0YW50LnZhbHVlLnN0ci5sZW4rMSwgKHZvaWQgKiopICZmdW5jdGlvbik9PUZB SUxVUkUpIHx8CisJCSgoQ0coY29tcGlsZXJfb3B0aW9ucykgJiBaRU5EX0NPTVBJTEVfSUdOT1JF X0lOVEVSTkFMX0ZVTkNUSU9OUykgJiYKKwkJIChmdW5jdGlvbi0+dHlwZSA9PSBaRU5EX0lOVEVS TkFMX0ZVTkNUSU9OKSkpIHsKIAkJemVuZF9kb19iZWdpbl9keW5hbWljX2Z1bmN0aW9uX2NhbGwo ZnVuY3Rpb25fbmFtZSwgcHJlZml4X2xlbiBUU1JNTFNfQ0MpOwogCQllZnJlZShsY25hbWUpOwog CQlyZXR1cm4gMTsgLyogRHluYW1pYyAqLwpAQCAtMTYyMSw4ICsxNjIyLDkgQEAgdm9pZCB6ZW5k X3Jlc29sdmVfY2xhc3NfbmFtZSh6bm9kZSAqY2xhcwogCQkJCWVmcmVlKG5zX2xjbmFtZSk7CiAJ CQl9CiAKLQkJCWlmICh6ZW5kX2hhc2hfZmluZChDRyhjbGFzc190YWJsZSksIGxjbmFtZSwgWl9T VFJMRU4oY2xhc3NfbmFtZS0+dS5jb25zdGFudCkrMSwgKHZvaWQqKikmcGNlKSA9PSBTVUNDRVNT ICYmCi0JCQkgICAgKCpwY2UpLT50eXBlID09IFpFTkRfSU5URVJOQUxfQ0xBU1MpIHsKKwkJCWlm ICgoQ0coY29tcGlsZXJfb3B0aW9ucykgJiBaRU5EX0NPTVBJTEVfSUdOT1JFX0lOVEVSTkFMX0NM QVNTRVMpIHx8CisJCQkgICAgKHplbmRfaGFzaF9maW5kKENHKGNsYXNzX3RhYmxlKSwgbGNuYW1l LCBaX1NUUkxFTihjbGFzc19uYW1lLT51LmNvbnN0YW50KSsxLCAodm9pZCoqKSZwY2UpID09IFNV Q0NFU1MgJiYKKwkJCSAgICAoKnBjZSktPnR5cGUgPT0gWkVORF9JTlRFUk5BTF9DTEFTUykpIHsK IAkJCSAgICAvKiBUaGVyZSBpcyBhbiBpbnRlcm5hbCBjbGFzcyB3aXRoIHRoZSBzYW1lIG5hbWUg ZXhpc3RzLgogCQkJICAgICAgIFBIUCB3aWxsIG5lZWQgdG8gcGVyZm9ybSBhZGRpdGlvbmFsIGNo ZWtzIGF0IHJ1bi10aW1lIHRvCiAJCQkgICAgICAgZGV0ZXJtaW5lIGlmIHdlIGFzc3VtZSBjbGFz cyBpbiBjdXJyZW50IG5hbWVzcGFjZSBvcgpAQCAtMjc0NCw3ICsyNzQ2LDYgQEAgdm9pZCB6ZW5k X2RvX2Vhcmx5X2JpbmRpbmcoVFNSTUxTX0QpCiB7CiAJemVuZF9vcCAqb3BsaW5lID0gJkNHKGFj dGl2ZV9vcF9hcnJheSktPm9wY29kZXNbQ0coYWN0aXZlX29wX2FycmF5KS0+bGFzdC0xXTsKIAlI YXNoVGFibGUgKnRhYmxlOwotCXplbmRfYm9vbCBpc19hYnN0cmFjdF9jbGFzcyA9IDA7CiAKIAl3 aGlsZSAob3BsaW5lLT5vcGNvZGUgPT0gWkVORF9USUNLUyAmJiBvcGxpbmUgPiBDRyhhY3RpdmVf b3BfYXJyYXkpLT5vcGNvZGVzKSB7CiAJCW9wbGluZS0tOwpAQCAtMjc1OCw1NyArMjc1OSw0OSBA QCB2b2lkIHplbmRfZG9fZWFybHlfYmluZGluZyhUU1JNTFNfRCkKIAkJCXRhYmxlID0gQ0coZnVu Y3Rpb25fdGFibGUpOwogCQkJYnJlYWs7CiAJCWNhc2UgWkVORF9ERUNMQVJFX0NMQVNTOgorCQkJ aWYgKGRvX2JpbmRfY2xhc3Mob3BsaW5lLCBDRyhjbGFzc190YWJsZSksIDEgVFNSTUxTX0NDKSA9 PSBOVUxMKSB7CisJCQkJcmV0dXJuOworCQkJfQorCQkJdGFibGUgPSBDRyhjbGFzc190YWJsZSk7 CisJCQlicmVhazsKIAkJY2FzZSBaRU5EX0RFQ0xBUkVfSU5IRVJJVEVEX0NMQVNTOgotCQkJaXNf YWJzdHJhY3RfY2xhc3MgPSAxOwotCQkJLyogYnJlYWsgbWlzc2luZyBpbnRlbnRpb25hbGx5ICov Ci0JCWNhc2UgWkVORF9WRVJJRllfQUJTVFJBQ1RfQ0xBU1M6IHsKLQkJCQl6ZW5kX29wICp2ZXJp ZnlfYWJzdHJhY3RfY2xhc3Nfb3AgPSBvcGxpbmU7Ci0KLQkJCQlpZiAoIWlzX2Fic3RyYWN0X2Ns YXNzKSB7Ci0JCQkJCW9wbGluZS0tOwotCQkJCX0KLQkJCQlpZiAob3BsaW5lLT5vcGNvZGUgPT0g WkVORF9ERUNMQVJFX0NMQVNTKSB7Ci0JCQkJCWlmIChkb19iaW5kX2NsYXNzKG9wbGluZSwgQ0co Y2xhc3NfdGFibGUpLCAxIFRTUk1MU19DQykgPT0gTlVMTCkgewotCQkJCQkJcmV0dXJuOwotCQkJ CQl9Ci0JCQkJfSBlbHNlIGlmIChvcGxpbmUtPm9wY29kZSA9PSBaRU5EX0RFQ0xBUkVfSU5IRVJJ VEVEX0NMQVNTKSB7Ci0JCQkJCXp2YWwgKnBhcmVudF9uYW1lID0gJihvcGxpbmUtMSktPm9wMi51 LmNvbnN0YW50OwotCQkJCQl6ZW5kX2NsYXNzX2VudHJ5ICoqcGNlOworCQkJeworCQkJCXplbmRf b3AgKmZldGNoX2NsYXNzX29wbGluZSA9IG9wbGluZS0xOworCQkJCXp2YWwgKnBhcmVudF9uYW1l ID0gJmZldGNoX2NsYXNzX29wbGluZS0+b3AyLnUuY29uc3RhbnQ7CisJCQkJemVuZF9jbGFzc19l bnRyeSAqKnBjZTsKIAotCQkJCQlpZiAoemVuZF9sb29rdXBfY2xhc3MoWl9TVFJWQUxfUChwYXJl bnRfbmFtZSksIFpfU1RSTEVOX1AocGFyZW50X25hbWUpLCAmcGNlIFRTUk1MU19DQykgPT0gRkFJ TFVSRSkgewotCQkJCQkJcmV0dXJuOwotCQkJCQl9Ci0JCQkJCWlmIChkb19iaW5kX2luaGVyaXRl ZF9jbGFzcyhvcGxpbmUsIENHKGNsYXNzX3RhYmxlKSwgKnBjZSwgMSBUU1JNTFNfQ0MpID09IE5V TEwpIHsKLQkJCQkJCXJldHVybjsKLQkJCQkJfQotCQkJCQkvKiBjbGVhciB1bm5lY2Vzc2FyeSBa RU5EX0ZFVENIX0NMQVNTIG9wY29kZSAqLwotCQkJCQlpZiAob3BsaW5lID4gQ0coYWN0aXZlX29w X2FycmF5KS0+b3Bjb2RlcyAmJgotCQkJCQkgICAgKG9wbGluZS0xKS0+b3Bjb2RlID09IFpFTkRf RkVUQ0hfQ0xBU1MpIHsKLQkJCQkJICB6ZW5kX29wICpmZXRjaF9jbGFzc19vcGxpbmUgPSBvcGxp bmUtMTsKKwkJCQlpZiAoKHplbmRfbG9va3VwX2NsYXNzKFpfU1RSVkFMX1AocGFyZW50X25hbWUp LCBaX1NUUkxFTl9QKHBhcmVudF9uYW1lKSwgJnBjZSBUU1JNTFNfQ0MpID09IEZBSUxVUkUpIHx8 CisJCQkJICAgICgoQ0coY29tcGlsZXJfb3B0aW9ucykgJiBaRU5EX0NPTVBJTEVfSUdOT1JFX0lO VEVSTkFMX0NMQVNTRVMpICYmCisJCQkJICAgICAoKCpwY2UpLT50eXBlID09IFpFTkRfSU5URVJO QUxfQ0xBU1MpKSkgeworCQkJCSAgICBpZiAoQ0coY29tcGlsZXJfb3B0aW9ucykgJiBaRU5EX0NP TVBJTEVfREVMQVlFRF9CSU5ESU5HKSB7CisJCQkJCQl6ZW5kX3VpbnQgKm9wbGluZV9udW0gPSAm Q0coYWN0aXZlX29wX2FycmF5KS0+ZWFybHlfYmluZGluZzsKIAotCQkJCQkJenZhbF9kdG9yKCZm ZXRjaF9jbGFzc19vcGxpbmUtPm9wMi51LmNvbnN0YW50KTsKLQkJCQkJCWZldGNoX2NsYXNzX29w bGluZS0+b3Bjb2RlID0gWkVORF9OT1A7Ci0JCQkJCQltZW1zZXQoJmZldGNoX2NsYXNzX29wbGlu ZS0+b3AxLCAwLCBzaXplb2Yoem5vZGUpKTsKLQkJCQkJCW1lbXNldCgmZmV0Y2hfY2xhc3Nfb3Bs aW5lLT5vcDIsIDAsIHNpemVvZih6bm9kZSkpOwotCQkJCQkJU0VUX1VOVVNFRChmZXRjaF9jbGFz c19vcGxpbmUtPm9wMSk7Ci0JCQkJCQlTRVRfVU5VU0VEKGZldGNoX2NsYXNzX29wbGluZS0+b3Ay KTsKLQkJCQkJCVNFVF9VTlVTRUQoZmV0Y2hfY2xhc3Nfb3BsaW5lLT5yZXN1bHQpOworCQkJCQkJ d2hpbGUgKCpvcGxpbmVfbnVtICE9IC0xKSB7CisJCQkJCQkJb3BsaW5lX251bSA9ICZDRyhhY3Rp dmVfb3BfYXJyYXkpLT5vcGNvZGVzWypvcGxpbmVfbnVtXS5yZXN1bHQudS5vcGxpbmVfbnVtOwor CQkJCQkJfQorCQkJCQkJKm9wbGluZV9udW0gPSBvcGxpbmUgLSBDRyhhY3RpdmVfb3BfYXJyYXkp LT5vcGNvZGVzOworCQkJCQkJb3BsaW5lLT5vcGNvZGUgPSBaRU5EX0RFQ0xBUkVfSU5IRVJJVEVE X0NMQVNTX0RFTEFZRUQ7CisJCQkJCQlvcGxpbmUtPnJlc3VsdC5vcF90eXBlID0gSVNfVU5VU0VE OworCQkJCQkJb3BsaW5lLT5yZXN1bHQudS5vcGxpbmVfbnVtID0gLTE7CiAJCQkJCX0KLQkJCQl9 IGVsc2UgewotCQkJCQkvKiBXZSBjdXJyZW50bHkgZG9uJ3QgZWFybHktYmluZCBjbGFzc2VzIHRo YXQgaW1wbGVtZW50IGludGVyZmFjZXMgKi8KIAkJCQkJcmV0dXJuOwogCQkJCX0KLQkJCQl0YWJs ZSA9IENHKGNsYXNzX3RhYmxlKTsKLQkJCQlpZiAoIWlzX2Fic3RyYWN0X2NsYXNzKSB7Ci0JCQkJ CS8qIGNsZWFyIHRoZSB2ZXJpZnlfYWJzdHJhY3RfY2xhc3Mgb3AgKi8KLQkJCQkJaW5pdF9vcCh2 ZXJpZnlfYWJzdHJhY3RfY2xhc3Nfb3AgVFNSTUxTX0NDKTsKLQkJCQkJU0VUX1VOVVNFRCh2ZXJp ZnlfYWJzdHJhY3RfY2xhc3Nfb3AtPm9wMSk7Ci0JCQkJCVNFVF9VTlVTRUQodmVyaWZ5X2Fic3Ry YWN0X2NsYXNzX29wLT5vcDIpOwotCQkJCQl2ZXJpZnlfYWJzdHJhY3RfY2xhc3Nfb3AtPm9wY29k ZSA9IFpFTkRfTk9QOworCQkJCWlmIChkb19iaW5kX2luaGVyaXRlZF9jbGFzcyhvcGxpbmUsIENH KGNsYXNzX3RhYmxlKSwgKnBjZSwgMSBUU1JNTFNfQ0MpID09IE5VTEwpIHsKKwkJCQkJcmV0dXJu OwogCQkJCX0KLQkJCX0KKwkJCQkvKiBjbGVhciB1bm5lY2Vzc2FyeSBaRU5EX0ZFVENIX0NMQVNT IG9wY29kZSAqLworCQkJCXp2YWxfZHRvcigmZmV0Y2hfY2xhc3Nfb3BsaW5lLT5vcDIudS5jb25z dGFudCk7CisJCQkJZmV0Y2hfY2xhc3Nfb3BsaW5lLT5vcGNvZGUgPSBaRU5EX05PUDsKKwkJCQlt ZW1zZXQoJmZldGNoX2NsYXNzX29wbGluZS0+b3AxLCAwLCBzaXplb2Yoem5vZGUpKTsKKwkJCQlt ZW1zZXQoJmZldGNoX2NsYXNzX29wbGluZS0+b3AyLCAwLCBzaXplb2Yoem5vZGUpKTsKKwkJCQlT RVRfVU5VU0VEKGZldGNoX2NsYXNzX29wbGluZS0+b3AxKTsKKwkJCQlTRVRfVU5VU0VEKGZldGNo X2NsYXNzX29wbGluZS0+b3AyKTsKKwkJCQlTRVRfVU5VU0VEKGZldGNoX2NsYXNzX29wbGluZS0+ cmVzdWx0KTsKIAotCQkJYnJlYWs7CisJCQkJdGFibGUgPSBDRyhjbGFzc190YWJsZSk7CisJCQkJ YnJlYWs7CisJCQl9CisJCWNhc2UgWkVORF9WRVJJRllfQUJTVFJBQ1RfQ0xBU1M6CiAJCWNhc2Ug WkVORF9BRERfSU5URVJGQUNFOgogCQkJLyogV2UgY3VycmVudGx5IGRvbid0IGVhcmx5LWJpbmQg Y2xhc3NlcyB0aGF0IGltcGxlbWVudCBpbnRlcmZhY2VzICovCiAJCQlyZXR1cm47CkBAIC0yODI3 LDYgKzI4MjAsMjMgQEAgdm9pZCB6ZW5kX2RvX2Vhcmx5X2JpbmRpbmcoVFNSTUxTX0QpCiAJU0VU X1VOVVNFRChvcGxpbmUtPm9wMik7CiB9CiAKK1pFTkRfQVBJIHZvaWQgemVuZF9kb19kZWxheWVk X2Vhcmx5X2JpbmRpbmcoemVuZF9vcF9hcnJheSAqb3BfYXJyYXkgVFNSTUxTX0RDKQoreworCWlm IChvcF9hcnJheS0+ZWFybHlfYmluZGluZyAhPSAtMSkgeworCQl6ZW5kX2Jvb2wgb3JpZ19pbl9j b21waWxhdGlvbiA9IENHKGluX2NvbXBpbGF0aW9uKTsKKwkJemVuZF91aW50IG9wbGluZV9udW0g PSBvcF9hcnJheS0+ZWFybHlfYmluZGluZzsKKwkJemVuZF9jbGFzc19lbnRyeSAqKnBjZTsKKwor CQlDRyhpbl9jb21waWxhdGlvbikgPSAxOworCQl3aGlsZSAob3BsaW5lX251bSAhPSAtMSkgewor CQkJaWYgKHplbmRfbG9va3VwX2NsYXNzKFpfU1RSVkFMKG9wX2FycmF5LT5vcGNvZGVzW29wbGlu ZV9udW0tMV0ub3AyLnUuY29uc3RhbnQpLCBaX1NUUkxFTihvcF9hcnJheS0+b3Bjb2Rlc1tvcGxp bmVfbnVtLTFdLm9wMi51LmNvbnN0YW50KSwgJnBjZSBUU1JNTFNfQ0MpID09IFNVQ0NFU1MpIHsK KwkJCQlkb19iaW5kX2luaGVyaXRlZF9jbGFzcygmb3BfYXJyYXktPm9wY29kZXNbb3BsaW5lX251 bV0sIEVHKGNsYXNzX3RhYmxlKSwgKnBjZSwgMSBUU1JNTFNfQ0MpOworCQkJfQorCQkJb3BsaW5l X251bSA9IG9wX2FycmF5LT5vcGNvZGVzW29wbGluZV9udW1dLnJlc3VsdC51Lm9wbGluZV9udW07 CisJCX0KKwkJQ0coaW5fY29tcGlsYXRpb24pID0gb3JpZ19pbl9jb21waWxhdGlvbjsKKwl9Cit9 CiAKIHZvaWQgemVuZF9kb19ib29sZWFuX29yX2JlZ2luKHpub2RlICpleHByMSwgem5vZGUgKm9w X3Rva2VuIFRTUk1MU19EQykKIHsKQEAgLTQ1MDAsNyArNDUxMCw3IEBAIHZvaWQgemVuZF9kb19l eHRlbmRlZF9pbmZvKFRTUk1MU19EKQogewogCXplbmRfb3AgKm9wbGluZTsKIAotCWlmICghQ0co ZXh0ZW5kZWRfaW5mbykpIHsKKwlpZiAoIShDRyhjb21waWxlcl9vcHRpb25zKSAmIFpFTkRfQ09N UElMRV9FWFRFTkRFRF9JTkZPKSkgewogCQlyZXR1cm47CiAJfQogCkBAIC00NTE2LDcgKzQ1MjYs NyBAQCB2b2lkIHplbmRfZG9fZXh0ZW5kZWRfZmNhbGxfYmVnaW4oVFNSTUxTCiB7CiAJemVuZF9v cCAqb3BsaW5lOwogCi0JaWYgKCFDRyhleHRlbmRlZF9pbmZvKSkgeworCWlmICghKENHKGNvbXBp bGVyX29wdGlvbnMpICYgWkVORF9DT01QSUxFX0VYVEVOREVEX0lORk8pKSB7CiAJCXJldHVybjsK IAl9CiAKQEAgLTQ1MzIsNyArNDU0Miw3IEBAIHZvaWQgemVuZF9kb19leHRlbmRlZF9mY2FsbF9l bmQoVFNSTUxTX0QKIHsKIAl6ZW5kX29wICpvcGxpbmU7CiAKLQlpZiAoIUNHKGV4dGVuZGVkX2lu Zm8pKSB7CisJaWYgKCEoQ0coY29tcGlsZXJfb3B0aW9ucykgJiBaRU5EX0NPTVBJTEVfRVhURU5E RURfSU5GTykpIHsKIAkJcmV0dXJuOwogCX0KIApJbmRleDogWmVuZC96ZW5kX2NvbXBpbGUuaAo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09ClJDUyBmaWxlOiAvcmVwb3NpdG9yeS9aZW5kRW5naW5lMi96ZW5kX2NvbXBpbGUu aCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zMTYuMi44LjIuMTIuMi4xNQpkaWZmIC11IC1wIC1k IC1yMS4zMTYuMi44LjIuMTIuMi4xNSB6ZW5kX2NvbXBpbGUuaAotLS0gWmVuZC96ZW5kX2NvbXBp bGUuaAkxMiBNYXIgMjAwOCAwOTo0Njo0MiAtMDAwMAkxLjMxNi4yLjguMi4xMi4yLjE1CisrKyBa ZW5kL3plbmRfY29tcGlsZS5oCTEyIE1hciAyMDA4IDExOjA2OjM3IC0wMDAwCkBAIC0yMjQsNiAr MjI0LDcgQEAgc3RydWN0IF96ZW5kX29wX2FycmF5IHsKIAl6ZW5kX3VpbnQgbGluZV9lbmQ7CiAJ Y2hhciAqZG9jX2NvbW1lbnQ7CiAJemVuZF91aW50IGRvY19jb21tZW50X2xlbjsKKwl6ZW5kX3Vp bnQgZWFybHlfYmluZGluZzsgLyogdGhlIGxpbmtlZCBsaXN0IG9mIGRlbGF5ZWQgZGVjbGFyYXRp b25zICovCiAKIAl2b2lkICpyZXNlcnZlZFtaRU5EX01BWF9SRVNFUlZFRF9SRVNPVVJDRVNdOwog fTsKQEAgLTQyOCw2ICs0MjksNyBAQCB2b2lkIHplbmRfZG9faW1wbGVtZW50c19pbnRlcmZhY2Uo em5vZGUgCiAKIFpFTkRfQVBJIHZvaWQgemVuZF9kb19pbmhlcml0YW5jZSh6ZW5kX2NsYXNzX2Vu dHJ5ICpjZSwgemVuZF9jbGFzc19lbnRyeSAqcGFyZW50X2NlIFRTUk1MU19EQyk7CiB2b2lkIHpl bmRfZG9fZWFybHlfYmluZGluZyhUU1JNTFNfRCk7CitaRU5EX0FQSSB2b2lkIHplbmRfZG9fZGVs YXllZF9lYXJseV9iaW5kaW5nKHplbmRfb3BfYXJyYXkgKm9wX2FycmF5IFRTUk1MU19EQyk7CiAK IHZvaWQgemVuZF9kb19wYXNzX3BhcmFtKHpub2RlICpwYXJhbSwgemVuZF91Y2hhciBvcCwgaW50 IG9mZnNldCBUU1JNTFNfREMpOwogCkBAIC03MjAsNiArNzIyLDMyIEBAIEVORF9FWFRFUk5fQygp CiAjZGVmaW5lIFpFTkRfVE9TVFJJTkdfRlVOQ19OQU1FICAgICAiX190b3N0cmluZyIKICNkZWZp bmUgWkVORF9BVVRPTE9BRF9GVU5DX05BTUUgICAgICJfX2F1dG9sb2FkIgogCisvKiBUaGUgZm9s bG93aW5nIGNvbnN0YW50cyBtYXkgYmUgY29tYmluZWQgaW4gQ0coY29tcGlsZXJfb3B0aW9ucykK KyAqIHRvIGNoYW5nZSB0aGUgZGVmYXVsdCBjb21waWxlciBiZWhhdmlvciAqLworCisvKiBnZW5l cmF0ZSBleHRlbmRlZCBkZWJ1ZyBpbmZvcm1hdGlvbiAqLworI2RlZmluZSBaRU5EX0NPTVBJTEVf RVhURU5ERURfSU5GTwkJCQkoMTw8MCkKKworLyogY2FsbCBvcF9hcnJheSBoYW5kbGVyIG9mIGV4 dGVuZGlvbnMgKi8KKyNkZWZpbmUgWkVORF9DT01QSUxFX0hBTkRMRV9PUF9BUlJBWSAgICAgICAg ICAgICgxPDwxKQorCisvKiBnZW5lcmF0ZSBaRU5EX0RPX0ZDQUxMX0JZX05BTUUgZm9yIGludGVy bmFsIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIFpFTkRfRE9fRkNBTEwgKi8KKyNkZWZpbmUgWkVORF9D T01QSUxFX0lHTk9SRV9JTlRFUk5BTF9GVU5DVElPTlMJKDE8PDIpCisKKy8qIGRvbid0IHBlcmZv cm0gZWFybHkgYmluZGluZyBmb3IgY2xhc3NlcyBpbmhlcml0ZWQgZm9ybSBpbnRlcm5hbCBvbmVz OworICogaW4gbmFtZXNwYWNlcyBhc3N1bWUgdGhhdCBpbnRlcm5hbCBjbGFzcyB0aGF0IGRvZXNu J3QgZXhpc3QgYXQgY29tcGlsZS10aW1lCisgKiBtYXkgYXBwZXIgaW4gcnVuLXRpbWUgKi8KKyNk ZWZpbmUgWkVORF9DT01QSUxFX0lHTk9SRV9JTlRFUk5BTF9DTEFTU0VTCSgxPDwzKQorCisvKiBn ZW5lcmF0ZSBaRU5EX0RFQ0xBUkVfSU5IRVJJVEVEX0NMQVNTX0RFTEFZRUQgb3Bjb2RlIHRvIGRl bGF5IGVhcmx5IGJpbmRpbmcgKi8KKyNkZWZpbmUgWkVORF9DT01QSUxFX0RFTEFZRURfQklORElO RwkJCSgxPDw0KQorCisvKiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgQ0coY29tcGlsZXJfb3B0aW9u cykgKi8KKyNkZWZpbmUgWkVORF9DT01QSUxFX0RFRkFVTFQJCQkJCVpFTkRfQ09NUElMRV9IQU5E TEVfT1BfQVJSQVkKKworLyogVGhlIGRlZmF1bHQgdmFsdWUgZm9yIENHKGNvbXBpbGVyX29wdGlv bnMpIGR1cmluZyBldmFsKCkgKi8KKyNkZWZpbmUgWkVORF9DT01QSUxFX0RFRkFVTFRfRk9SX0VW QUwJCQkwCisKICNlbmRpZiAvKiBaRU5EX0NPTVBJTEVfSCAqLwogCiAvKgpJbmRleDogWmVuZC96 ZW5kX2V4ZWN1dGVfQVBJLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvWmVuZEVu Z2luZTIvemVuZF9leGVjdXRlX0FQSS5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMzMS4yLjIw LjIuMjQuMi4yOApkaWZmIC11IC1wIC1kIC1yMS4zMzEuMi4yMC4yLjI0LjIuMjggemVuZF9leGVj dXRlX0FQSS5jCi0tLSBaZW5kL3plbmRfZXhlY3V0ZV9BUEkuYwk5IE1hciAyMDA4IDIwOjUyOjI5 IC0wMDAwCTEuMzMxLjIuMjAuMi4yNC4yLjI4CisrKyBaZW5kL3plbmRfZXhlY3V0ZV9BUEkuYwkx MiBNYXIgMjAwOCAxMTowNjozNyAtMDAwMApAQCAtMTI2NCw3ICsxMjY0LDcgQEAgWkVORF9BUEkg aW50IHplbmRfZXZhbF9zdHJpbmcoY2hhciAqc3RyLAogCXp2YWwgcHY7CiAJemVuZF9vcF9hcnJh eSAqbmV3X29wX2FycmF5OwogCXplbmRfb3BfYXJyYXkgKm9yaWdpbmFsX2FjdGl2ZV9vcF9hcnJh eSA9IEVHKGFjdGl2ZV9vcF9hcnJheSk7Ci0JemVuZF91Y2hhciBvcmlnaW5hbF9oYW5kbGVfb3Bf YXJyYXlzOworCXplbmRfdWludCBvcmlnaW5hbF9jb21waWxlcl9vcHRpb25zOwogCWludCByZXR2 YWw7CiAKIAlpZiAocmV0dmFsX3B0cikgewpAQCAtMTI4NCwxMCArMTI4NCwxMCBAQCBaRU5EX0FQ SSBpbnQgemVuZF9ldmFsX3N0cmluZyhjaGFyICpzdHIsCiAKIAkvKnByaW50ZigiRXZhbHVhdGlu ZyAnJXMnXG4iLCBwdi52YWx1ZS5zdHIudmFsKTsqLwogCi0Jb3JpZ2luYWxfaGFuZGxlX29wX2Fy cmF5cyA9IENHKGhhbmRsZV9vcF9hcnJheXMpOwotCUNHKGhhbmRsZV9vcF9hcnJheXMpID0gMDsK KwlvcmlnaW5hbF9jb21waWxlcl9vcHRpb25zID0gQ0coY29tcGlsZXJfb3B0aW9ucyk7CisJQ0co aGFuZGxlX29wX2FycmF5cykgPSBaRU5EX0NPTVBJTEVfREVGQVVMVF9GT1JfRVZBTDsKIAluZXdf b3BfYXJyYXkgPSB6ZW5kX2NvbXBpbGVfc3RyaW5nKCZwdiwgc3RyaW5nX25hbWUgVFNSTUxTX0ND KTsKLQlDRyhoYW5kbGVfb3BfYXJyYXlzKSA9IG9yaWdpbmFsX2hhbmRsZV9vcF9hcnJheXM7CisJ Q0coY29tcGlsZXJfb3B0aW9ucykgPSBvcmlnaW5hbF9jb21waWxlcl9vcHRpb25zOwogCiAJaWYg KG5ld19vcF9hcnJheSkgewogCQl6dmFsICpsb2NhbF9yZXR2YWxfcHRyPU5VTEw7CkluZGV4OiBa ZW5kL3plbmRfZ2xvYmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L1plbmRF bmdpbmUyL3plbmRfZ2xvYmFscy5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE0MS4yLjMuMi43 LjIuOApkaWZmIC11IC1wIC1kIC1yMS4xNDEuMi4zLjIuNy4yLjggemVuZF9nbG9iYWxzLmgKLS0t IFplbmQvemVuZF9nbG9iYWxzLmgJOCBNYXIgMjAwOCAyMTo1NDowMyAtMDAwMAkxLjE0MS4yLjMu Mi43LjIuOAorKysgWmVuZC96ZW5kX2dsb2JhbHMuaAkxMiBNYXIgMjAwOCAxMTowNjozNyAtMDAw MApAQCAtNTksNiArNTksOSBAQCBFTkRfRVhURVJOX0MoKQogLyogZXhjcHQuaCBvbiBEaWdpdGFs IFVuaXggNC4wIGRlZmluZXMgZnVuY3Rpb25fdGFibGUgKi8KICN1bmRlZiBmdW5jdGlvbl90YWJs ZQogCisjZGVmaW5lIFpFTkRfRUFSTFlfQklORElOR19DT01QSUxFX1RJTUUgMAorI2RlZmluZSBa RU5EX0VBUkxZX0JJTkRJTkdfREVMQVlFRCAgICAgIDEKKyNkZWZpbmUgWkVORF9FQVJMWV9CSU5E SU5HX0RFTEFZRURfQUxMICAyCiAKIHR5cGVkZWYgc3RydWN0IF96ZW5kX2RlY2xhcmFibGVzIHsK IAl6dmFsIHRpY2tzOwpAQCAtMTA2LDcgKzEwOSw2IEBAIHN0cnVjdCBfemVuZF9jb21waWxlcl9n bG9iYWxzIHsKIAl6ZW5kX2RlY2xhcmFibGVzIGRlY2xhcmFibGVzOwogCiAJLyogRm9yIGV4dGVu c2lvbnMgc3VwcG9ydCAqLwotCXplbmRfYm9vbCBleHRlbmRlZF9pbmZvOwkvKiBnZW5lcmF0ZSBl eHRlbnNpb24gaW5mb3JtYXRpb24gZm9yIGRlYnVnZ2VyL3Byb2ZpbGVyICovCiAJemVuZF9ib29s IGhhbmRsZV9vcF9hcnJheXM7CS8qIHJ1biBvcF9hcnJheXMgdGhyb3VnaCBvcF9hcnJheSBoYW5k bGVycyAqLwogCiAJemVuZF9ib29sIHVuY2xlYW5fc2h1dGRvd247CkBAIC0xMzEsNiArMTMzLDgg QEAgc3RydWN0IF96ZW5kX2NvbXBpbGVyX2dsb2JhbHMgewogCWNoYXIgKmRvY19jb21tZW50Owog CXplbmRfdWludCBkb2NfY29tbWVudF9sZW47CiAKKwl6ZW5kX3VpbnQgY29tcGlsZXJfb3B0aW9u czsgLyogc2V0IG9mIFpFTkRfQ09NUElMRV8qIGNvbnN0YW50cyAqLworCiAJenZhbCAgICAgICpj dXJyZW50X25hbWVzcGFjZTsKIAlIYXNoVGFibGUgKmN1cnJlbnRfaW1wb3J0OwogCkluZGV4OiBa ZW5kL3plbmRfb3Bjb2RlLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvWmVuZEVu Z2luZTIvemVuZF9vcGNvZGUuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMTAuMi42LjIuMy4y LjUKZGlmZiAtdSAtcCAtZCAtcjEuMTEwLjIuNi4yLjMuMi41IHplbmRfb3Bjb2RlLmMKLS0tIFpl bmQvemVuZF9vcGNvZGUuYwkzMSBEZWMgMjAwNyAwNzoxNzowNCAtMDAwMAkxLjExMC4yLjYuMi4z LjIuNQorKysgWmVuZC96ZW5kX29wY29kZS5jCTEyIE1hciAyMDA4IDExOjA2OjM3IC0wMDAwCkBA IC0xMDEsNiArMTAxLDggQEAgdm9pZCBpbml0X29wX2FycmF5KHplbmRfb3BfYXJyYXkgKm9wX2Fy cgogCiAJb3BfYXJyYXktPmZuX2ZsYWdzID0gQ0coaW50ZXJhY3RpdmUpP1pFTkRfQUNDX0lOVEVS QUNUSVZFOjA7CiAKKwlvcF9hcnJheS0+ZWFybHlfYmluZGluZyA9IC0xOworCiAJbWVtc2V0KG9w X2FycmF5LT5yZXNlcnZlZCwgMCwgWkVORF9NQVhfUkVTRVJWRURfUkVTT1VSQ0VTICogc2l6ZW9m KHZvaWQqKSk7CiAKIAl6ZW5kX2xsaXN0X2FwcGx5X3dpdGhfYXJndW1lbnQoJnplbmRfZXh0ZW5z aW9ucywgKGxsaXN0X2FwcGx5X3dpdGhfYXJnX2Z1bmNfdCkgemVuZF9leHRlbnNpb25fb3BfYXJy YXlfY3Rvcl9oYW5kbGVyLCBvcF9hcnJheSBUU1JNTFNfQ0MpOwpAQCAtMzY0LDEwICszNjYsMTAg QEAgaW50IHBhc3NfdHdvKHplbmRfb3BfYXJyYXkgKm9wX2FycmF5IFRTUgogCWlmIChvcF9hcnJh eS0+dHlwZSE9WkVORF9VU0VSX0ZVTkNUSU9OICYmIG9wX2FycmF5LT50eXBlIT1aRU5EX0VWQUxf Q09ERSkgewogCQlyZXR1cm4gMDsKIAl9Ci0JaWYgKENHKGV4dGVuZGVkX2luZm8pKSB7CisJaWYg KENHKGNvbXBpbGVyX29wdGlvbnMpICYgWkVORF9DT01QSUxFX0VYVEVOREVEX0lORk8pIHsKIAkJ emVuZF91cGRhdGVfZXh0ZW5kZWRfaW5mbyhvcF9hcnJheSBUU1JNTFNfQ0MpOwogCX0KLQlpZiAo Q0coaGFuZGxlX29wX2FycmF5cykpIHsKKwlpZiAoQ0coY29tcGlsZXJfb3B0aW9ucykgJiBaRU5E X0NPTVBJTEVfSEFORExFX09QX0FSUkFZKSB7CiAJCXplbmRfbGxpc3RfYXBwbHlfd2l0aF9hcmd1 bWVudCgmemVuZF9leHRlbnNpb25zLCAobGxpc3RfYXBwbHlfd2l0aF9hcmdfZnVuY190KSB6ZW5k X2V4dGVuc2lvbl9vcF9hcnJheV9oYW5kbGVyLCBvcF9hcnJheSBUU1JNTFNfQ0MpOwogCX0KIApJ bmRleDogWmVuZC96ZW5kX3ZtX2RlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5 L1plbmRFbmdpbmUyL3plbmRfdm1fZGVmLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNTkuMi4y OS4yLjQ4LjIuNDIKZGlmZiAtdSAtcCAtZCAtcjEuNTkuMi4yOS4yLjQ4LjIuNDIgemVuZF92bV9k ZWYuaAotLS0gWmVuZC96ZW5kX3ZtX2RlZi5oCTEyIE1hciAyMDA4IDEwOjMyOjExIC0wMDAwCTEu NTkuMi4yOS4yLjQ4LjIuNDIKKysrIFplbmQvemVuZF92bV9kZWYuaAkxMiBNYXIgMjAwOCAxMTow NjozNyAtMDAwMApAQCAtMzk2Miw2ICszOTYyLDE5IEBAIFpFTkRfVk1fSEFORExFUigxNDAsIFpF TkRfREVDTEFSRV9JTkhFUkkKIAlaRU5EX1ZNX05FWFRfT1BDT0RFKCk7CiB9CiAKK1pFTkRfVk1f SEFORExFUigxNDUsIFpFTkRfREVDTEFSRV9JTkhFUklURURfQ0xBU1NfREVMQVlFRCwgQU5ZLCBB TlkpCit7CisJemVuZF9vcCAqb3BsaW5lID0gRVgob3BsaW5lKTsKKwl6ZW5kX2NsYXNzX2VudHJ5 ICoqcGNlLCAqKnBjZV9vcmlnOworCisJaWYgKHplbmRfaGFzaF9maW5kKEVHKGNsYXNzX3RhYmxl KSwgWl9TVFJWQUwob3BsaW5lLT5vcDIudS5jb25zdGFudCksIFpfU1RSTEVOKG9wbGluZS0+b3Ay LnUuY29uc3RhbnQpKzEsICh2b2lkKiopJnBjZSkgPT0gRkFJTFVSRSB8fAorCSAgICAoemVuZF9o YXNoX2ZpbmQoRUcoY2xhc3NfdGFibGUpLCBaX1NUUlZBTChvcGxpbmUtPm9wMS51LmNvbnN0YW50 KSwgWl9TVFJMRU4ob3BsaW5lLT5vcDEudS5jb25zdGFudCksICh2b2lkKiopJnBjZV9vcmlnKSA9 PSBTVUNDRVNTICYmCisJICAgICAqcGNlICE9ICpwY2Vfb3JpZykpIHsKKwkJZG9fYmluZF9pbmhl cml0ZWRfY2xhc3Mob3BsaW5lLCBFRyhjbGFzc190YWJsZSksIEVYX1Qob3BsaW5lLT5leHRlbmRl ZF92YWx1ZSkuY2xhc3NfZW50cnksIDAgVFNSTUxTX0NDKTsKKwl9CisJWkVORF9WTV9ORVhUX09Q Q09ERSgpOworfQorCiBaRU5EX1ZNX0hBTkRMRVIoMTQxLCBaRU5EX0RFQ0xBUkVfRlVOQ1RJT04s IEFOWSwgQU5ZKQogewogCWRvX2JpbmRfZnVuY3Rpb24oRVgob3BsaW5lKSwgRUcoZnVuY3Rpb25f dGFibGUpLCAwKTsKSW5kZXg6IFplbmQvemVuZF92bV9leGVjdXRlLmgKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg ZmlsZTogL3JlcG9zaXRvcnkvWmVuZEVuZ2luZTIvemVuZF92bV9leGVjdXRlLmgsdgpyZXRyaWV2 aW5nIHJldmlzaW9uIDEuNjIuMi4zMC4yLjQ5LjIuNDEKZGlmZiAtdSAtcCAtZCAtcjEuNjIuMi4z MC4yLjQ5LjIuNDEgemVuZF92bV9leGVjdXRlLmgKLS0tIFplbmQvemVuZF92bV9leGVjdXRlLmgJ MTIgTWFyIDIwMDggMTA6MzI6MTIgLTAwMDAJMS42Mi4yLjMwLjIuNDkuMi40MQorKysgWmVuZC96 ZW5kX3ZtX2V4ZWN1dGUuaAkxMiBNYXIgMjAwOCAxMTowNjozOSAtMDAwMApAQCAtNDgyLDYgKzQ4 MiwxOSBAQCBzdGF0aWMgaW50IFpFTkRfREVDTEFSRV9JTkhFUklURURfQ0xBU1NfCiAJWkVORF9W TV9ORVhUX09QQ09ERSgpOwogfQogCitzdGF0aWMgaW50IFpFTkRfREVDTEFSRV9JTkhFUklURURf Q0xBU1NfREVMQVlFRF9TUEVDX0hBTkRMRVIoWkVORF9PUENPREVfSEFORExFUl9BUkdTKQorewor CXplbmRfb3AgKm9wbGluZSA9IEVYKG9wbGluZSk7CisJemVuZF9jbGFzc19lbnRyeSAqKnBjZSwg KipwY2Vfb3JpZzsKKworCWlmICh6ZW5kX2hhc2hfZmluZChFRyhjbGFzc190YWJsZSksIFpfU1RS VkFMKG9wbGluZS0+b3AyLnUuY29uc3RhbnQpLCBaX1NUUkxFTihvcGxpbmUtPm9wMi51LmNvbnN0 YW50KSsxLCAodm9pZCoqKSZwY2UpID09IEZBSUxVUkUgfHwKKwkgICAgKHplbmRfaGFzaF9maW5k KEVHKGNsYXNzX3RhYmxlKSwgWl9TVFJWQUwob3BsaW5lLT5vcDEudS5jb25zdGFudCksIFpfU1RS TEVOKG9wbGluZS0+b3AxLnUuY29uc3RhbnQpLCAodm9pZCoqKSZwY2Vfb3JpZykgPT0gU1VDQ0VT UyAmJgorCSAgICAgKnBjZSAhPSAqcGNlX29yaWcpKSB7CisJCWRvX2JpbmRfaW5oZXJpdGVkX2Ns YXNzKG9wbGluZSwgRUcoY2xhc3NfdGFibGUpLCBFWF9UKG9wbGluZS0+ZXh0ZW5kZWRfdmFsdWUp LmNsYXNzX2VudHJ5LCAwIFRTUk1MU19DQyk7CisJfQorCVpFTkRfVk1fTkVYVF9PUENPREUoKTsK K30KKwogc3RhdGljIGludCBaRU5EX0RFQ0xBUkVfRlVOQ1RJT05fU1BFQ19IQU5ETEVSKFpFTkRf T1BDT0RFX0hBTkRMRVJfQVJHUykKIHsKIAlkb19iaW5kX2Z1bmN0aW9uKEVYKG9wbGluZSksIEVH KGZ1bmN0aW9uX3RhYmxlKSwgMCk7CkBAIC0zMjk5MCwzMSArMzMwMDMsMzEgQEAgdm9pZCB6ZW5k X2luaXRfb3Bjb2Rlc19oYW5kbGVycyh2b2lkKQogICAJWkVORF9OVUxMX0hBTkRMRVIsCiAgIAla RU5EX05VTExfSEFORExFUiwKICAgCVpFTkRfTlVMTF9IQU5ETEVSLAotICAJWkVORF9OVUxMX0hB TkRMRVIsCi0gIAlaRU5EX05VTExfSEFORExFUiwKLSAgCVpFTkRfTlVMTF9IQU5ETEVSLAotICAJ WkVORF9OVUxMX0hBTkRMRVIsCi0gIAlaRU5EX05VTExfSEFORExFUiwKLSAgCVpFTkRfTlVMTF9I QU5ETEVSLAotICAJWkVORF9OVUxMX0hBTkRMRVIsCi0gIAlaRU5EX05VTExfSEFORExFUiwKLSAg CVpFTkRfTlVMTF9IQU5ETEVSLAotICAJWkVORF9OVUxMX0hBTkRMRVIsCi0gIAlaRU5EX05VTExf SEFORExFUiwKLSAgCVpFTkRfTlVMTF9IQU5ETEVSLAotICAJWkVORF9OVUxMX0hBTkRMRVIsCi0g IAlaRU5EX05VTExfSEFORExFUiwKLSAgCVpFTkRfTlVMTF9IQU5ETEVSLAotICAJWkVORF9OVUxM X0hBTkRMRVIsCi0gIAlaRU5EX05VTExfSEFORExFUiwKLSAgCVpFTkRfTlVMTF9IQU5ETEVSLAot ICAJWkVORF9OVUxMX0hBTkRMRVIsCi0gIAlaRU5EX05VTExfSEFORExFUiwKLSAgCVpFTkRfTlVM TF9IQU5ETEVSLAotICAJWkVORF9OVUxMX0hBTkRMRVIsCi0gIAlaRU5EX05VTExfSEFORExFUiwK LSAgCVpFTkRfTlVMTF9IQU5ETEVSLAotICAJWkVORF9OVUxMX0hBTkRMRVIsCisgIAlaRU5EX0RF Q0xBUkVfSU5IRVJJVEVEX0NMQVNTX0RFTEFZRURfU1BFQ19IQU5ETEVSLAorICAJWkVORF9ERUNM QVJFX0lOSEVSSVRFRF9DTEFTU19ERUxBWUVEX1NQRUNfSEFORExFUiwKKyAgCVpFTkRfREVDTEFS RV9JTkhFUklURURfQ0xBU1NfREVMQVlFRF9TUEVDX0hBTkRMRVIsCisgIAlaRU5EX0RFQ0xBUkVf SU5IRVJJVEVEX0NMQVNTX0RFTEFZRURfU1BFQ19IQU5ETEVSLAorICAJWkVORF9ERUNMQVJFX0lO SEVSSVRFRF9DTEFTU19ERUxBWUVEX1NQRUNfSEFORExFUiwKKyAgCVpFTkRfREVDTEFSRV9JTkhF UklURURfQ0xBU1NfREVMQVlFRF9TUEVDX0hBTkRMRVIsCisgIAlaRU5EX0RFQ0xBUkVfSU5IRVJJ VEVEX0NMQVNTX0RFTEFZRURfU1BFQ19IQU5ETEVSLAorICAJWkVORF9ERUNMQVJFX0lOSEVSSVRF RF9DTEFTU19ERUxBWUVEX1NQRUNfSEFORExFUiwKKyAgCVpFTkRfREVDTEFSRV9JTkhFUklURURf Q0xBU1NfREVMQVlFRF9TUEVDX0hBTkRMRVIsCisgIAlaRU5EX0RFQ0xBUkVfSU5IRVJJVEVEX0NM QVNTX0RFTEFZRURfU1BFQ19IQU5ETEVSLAorICAJWkVORF9ERUNMQVJFX0lOSEVSSVRFRF9DTEFT U19ERUxBWUVEX1NQRUNfSEFORExFUiwKKyAgCVpFTkRfREVDTEFSRV9JTkhFUklURURfQ0xBU1Nf REVMQVlFRF9TUEVDX0hBTkRMRVIsCisgIAlaRU5EX0RFQ0xBUkVfSU5IRVJJVEVEX0NMQVNTX0RF TEFZRURfU1BFQ19IQU5ETEVSLAorICAJWkVORF9ERUNMQVJFX0lOSEVSSVRFRF9DTEFTU19ERUxB WUVEX1NQRUNfSEFORExFUiwKKyAgCVpFTkRfREVDTEFSRV9JTkhFUklURURfQ0xBU1NfREVMQVlF RF9TUEVDX0hBTkRMRVIsCisgIAlaRU5EX0RFQ0xBUkVfSU5IRVJJVEVEX0NMQVNTX0RFTEFZRURf U1BFQ19IQU5ETEVSLAorICAJWkVORF9ERUNMQVJFX0lOSEVSSVRFRF9DTEFTU19ERUxBWUVEX1NQ RUNfSEFORExFUiwKKyAgCVpFTkRfREVDTEFSRV9JTkhFUklURURfQ0xBU1NfREVMQVlFRF9TUEVD X0hBTkRMRVIsCisgIAlaRU5EX0RFQ0xBUkVfSU5IRVJJVEVEX0NMQVNTX0RFTEFZRURfU1BFQ19I QU5ETEVSLAorICAJWkVORF9ERUNMQVJFX0lOSEVSSVRFRF9DTEFTU19ERUxBWUVEX1NQRUNfSEFO RExFUiwKKyAgCVpFTkRfREVDTEFSRV9JTkhFUklURURfQ0xBU1NfREVMQVlFRF9TUEVDX0hBTkRM RVIsCisgIAlaRU5EX0RFQ0xBUkVfSU5IRVJJVEVEX0NMQVNTX0RFTEFZRURfU1BFQ19IQU5ETEVS LAorICAJWkVORF9ERUNMQVJFX0lOSEVSSVRFRF9DTEFTU19ERUxBWUVEX1NQRUNfSEFORExFUiwK KyAgCVpFTkRfREVDTEFSRV9JTkhFUklURURfQ0xBU1NfREVMQVlFRF9TUEVDX0hBTkRMRVIsCisg IAlaRU5EX0RFQ0xBUkVfSU5IRVJJVEVEX0NMQVNTX0RFTEFZRURfU1BFQ19IQU5ETEVSLAogICAJ WkVORF9WRVJJRllfQUJTVFJBQ1RfQ0xBU1NfU1BFQ19IQU5ETEVSLAogICAJWkVORF9WRVJJRllf QUJTVFJBQ1RfQ0xBU1NfU1BFQ19IQU5ETEVSLAogICAJWkVORF9WRVJJRllfQUJTVFJBQ1RfQ0xB U1NfU1BFQ19IQU5ETEVSLApJbmRleDogWmVuZC96ZW5kX3ZtX29wY29kZXMuaAo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 ClJDUyBmaWxlOiAvcmVwb3NpdG9yeS9aZW5kRW5naW5lMi96ZW5kX3ZtX29wY29kZXMuaCx2CnJl dHJpZXZpbmcgcmV2aXNpb24gMS40Mi4yLjE3LjIuMS4yLjQKZGlmZiAtdSAtcCAtZCAtcjEuNDIu Mi4xNy4yLjEuMi40IHplbmRfdm1fb3Bjb2Rlcy5oCi0tLSBaZW5kL3plbmRfdm1fb3Bjb2Rlcy5o CTMxIERlYyAyMDA3IDA3OjE3OjA2IC0wMDAwCTEuNDIuMi4xNy4yLjEuMi40CisrKyBaZW5kL3pl bmRfdm1fb3Bjb2Rlcy5oCTEyIE1hciAyMDA4IDExOjA2OjM5IC0wMDAwCkBAIC0xOCwxMzUgKzE4 LDEzNiBAQAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAqLwogCi0jZGVmaW5lIFpFTkRfTk9QICAgICAg ICAgICAgICAgICAgICAgICAwCi0jZGVmaW5lIFpFTkRfQUREICAgICAgICAgICAgICAgICAgICAg ICAxCi0jZGVmaW5lIFpFTkRfU1VCICAgICAgICAgICAgICAgICAgICAgICAyCi0jZGVmaW5lIFpF TkRfTVVMICAgICAgICAgICAgICAgICAgICAgICAzCi0jZGVmaW5lIFpFTkRfRElWICAgICAgICAg ICAgICAgICAgICAgICA0Ci0jZGVmaW5lIFpFTkRfTU9EICAgICAgICAgICAgICAgICAgICAgICA1 Ci0jZGVmaW5lIFpFTkRfU0wgICAgICAgICAgICAgICAgICAgICAgICA2Ci0jZGVmaW5lIFpFTkRf U1IgICAgICAgICAgICAgICAgICAgICAgICA3Ci0jZGVmaW5lIFpFTkRfQ09OQ0FUICAgICAgICAg ICAgICAgICAgICA4Ci0jZGVmaW5lIFpFTkRfQldfT1IgICAgICAgICAgICAgICAgICAgICA5Ci0j ZGVmaW5lIFpFTkRfQldfQU5EICAgICAgICAgICAgICAgICAgIDEwCi0jZGVmaW5lIFpFTkRfQldf WE9SICAgICAgICAgICAgICAgICAgIDExCi0jZGVmaW5lIFpFTkRfQldfTk9UICAgICAgICAgICAg ICAgICAgIDEyCi0jZGVmaW5lIFpFTkRfQk9PTF9OT1QgICAgICAgICAgICAgICAgIDEzCi0jZGVm aW5lIFpFTkRfQk9PTF9YT1IgICAgICAgICAgICAgICAgIDE0Ci0jZGVmaW5lIFpFTkRfSVNfSURF TlRJQ0FMICAgICAgICAgICAgIDE1Ci0jZGVmaW5lIFpFTkRfSVNfTk9UX0lERU5USUNBTCAgICAg ICAgIDE2Ci0jZGVmaW5lIFpFTkRfSVNfRVFVQUwgICAgICAgICAgICAgICAgIDE3Ci0jZGVmaW5l IFpFTkRfSVNfTk9UX0VRVUFMICAgICAgICAgICAgIDE4Ci0jZGVmaW5lIFpFTkRfSVNfU01BTExF UiAgICAgICAgICAgICAgIDE5Ci0jZGVmaW5lIFpFTkRfSVNfU01BTExFUl9PUl9FUVVBTCAgICAg IDIwCi0jZGVmaW5lIFpFTkRfQ0FTVCAgICAgICAgICAgICAgICAgICAgIDIxCi0jZGVmaW5lIFpF TkRfUU1fQVNTSUdOICAgICAgICAgICAgICAgIDIyCi0jZGVmaW5lIFpFTkRfQVNTSUdOX0FERCAg ICAgICAgICAgICAgIDIzCi0jZGVmaW5lIFpFTkRfQVNTSUdOX1NVQiAgICAgICAgICAgICAgIDI0 Ci0jZGVmaW5lIFpFTkRfQVNTSUdOX01VTCAgICAgICAgICAgICAgIDI1Ci0jZGVmaW5lIFpFTkRf QVNTSUdOX0RJViAgICAgICAgICAgICAgIDI2Ci0jZGVmaW5lIFpFTkRfQVNTSUdOX01PRCAgICAg ICAgICAgICAgIDI3Ci0jZGVmaW5lIFpFTkRfQVNTSUdOX1NMICAgICAgICAgICAgICAgIDI4Ci0j ZGVmaW5lIFpFTkRfQVNTSUdOX1NSICAgICAgICAgICAgICAgIDI5Ci0jZGVmaW5lIFpFTkRfQVNT SUdOX0NPTkNBVCAgICAgICAgICAgIDMwCi0jZGVmaW5lIFpFTkRfQVNTSUdOX0JXX09SICAgICAg ICAgICAgIDMxCi0jZGVmaW5lIFpFTkRfQVNTSUdOX0JXX0FORCAgICAgICAgICAgIDMyCi0jZGVm aW5lIFpFTkRfQVNTSUdOX0JXX1hPUiAgICAgICAgICAgIDMzCi0jZGVmaW5lIFpFTkRfUFJFX0lO QyAgICAgICAgICAgICAgICAgIDM0Ci0jZGVmaW5lIFpFTkRfUFJFX0RFQyAgICAgICAgICAgICAg ICAgIDM1Ci0jZGVmaW5lIFpFTkRfUE9TVF9JTkMgICAgICAgICAgICAgICAgIDM2Ci0jZGVmaW5l IFpFTkRfUE9TVF9ERUMgICAgICAgICAgICAgICAgIDM3Ci0jZGVmaW5lIFpFTkRfQVNTSUdOICAg ICAgICAgICAgICAgICAgIDM4Ci0jZGVmaW5lIFpFTkRfQVNTSUdOX1JFRiAgICAgICAgICAgICAg IDM5Ci0jZGVmaW5lIFpFTkRfRUNITyAgICAgICAgICAgICAgICAgICAgIDQwCi0jZGVmaW5lIFpF TkRfUFJJTlQgICAgICAgICAgICAgICAgICAgIDQxCi0jZGVmaW5lIFpFTkRfSk1QICAgICAgICAg ICAgICAgICAgICAgIDQyCi0jZGVmaW5lIFpFTkRfSk1QWiAgICAgICAgICAgICAgICAgICAgIDQz Ci0jZGVmaW5lIFpFTkRfSk1QTlogICAgICAgICAgICAgICAgICAgIDQ0Ci0jZGVmaW5lIFpFTkRf Sk1QWk5aICAgICAgICAgICAgICAgICAgIDQ1Ci0jZGVmaW5lIFpFTkRfSk1QWl9FWCAgICAgICAg ICAgICAgICAgIDQ2Ci0jZGVmaW5lIFpFTkRfSk1QTlpfRVggICAgICAgICAgICAgICAgIDQ3Ci0j ZGVmaW5lIFpFTkRfQ0FTRSAgICAgICAgICAgICAgICAgICAgIDQ4Ci0jZGVmaW5lIFpFTkRfU1dJ VENIX0ZSRUUgICAgICAgICAgICAgIDQ5Ci0jZGVmaW5lIFpFTkRfQlJLICAgICAgICAgICAgICAg ICAgICAgIDUwCi0jZGVmaW5lIFpFTkRfQ09OVCAgICAgICAgICAgICAgICAgICAgIDUxCi0jZGVm aW5lIFpFTkRfQk9PTCAgICAgICAgICAgICAgICAgICAgIDUyCi0jZGVmaW5lIFpFTkRfSU5JVF9T VFJJTkcgICAgICAgICAgICAgIDUzCi0jZGVmaW5lIFpFTkRfQUREX0NIQVIgICAgICAgICAgICAg ICAgIDU0Ci0jZGVmaW5lIFpFTkRfQUREX1NUUklORyAgICAgICAgICAgICAgIDU1Ci0jZGVmaW5l IFpFTkRfQUREX1ZBUiAgICAgICAgICAgICAgICAgIDU2Ci0jZGVmaW5lIFpFTkRfQkVHSU5fU0lM RU5DRSAgICAgICAgICAgIDU3Ci0jZGVmaW5lIFpFTkRfRU5EX1NJTEVOQ0UgICAgICAgICAgICAg IDU4Ci0jZGVmaW5lIFpFTkRfSU5JVF9GQ0FMTF9CWV9OQU1FICAgICAgIDU5Ci0jZGVmaW5lIFpF TkRfRE9fRkNBTEwgICAgICAgICAgICAgICAgIDYwCi0jZGVmaW5lIFpFTkRfRE9fRkNBTExfQllf TkFNRSAgICAgICAgIDYxCi0jZGVmaW5lIFpFTkRfUkVUVVJOICAgICAgICAgICAgICAgICAgIDYy Ci0jZGVmaW5lIFpFTkRfUkVDViAgICAgICAgICAgICAgICAgICAgIDYzCi0jZGVmaW5lIFpFTkRf UkVDVl9JTklUICAgICAgICAgICAgICAgIDY0Ci0jZGVmaW5lIFpFTkRfU0VORF9WQUwgICAgICAg ICAgICAgICAgIDY1Ci0jZGVmaW5lIFpFTkRfU0VORF9WQVIgICAgICAgICAgICAgICAgIDY2Ci0j ZGVmaW5lIFpFTkRfU0VORF9SRUYgICAgICAgICAgICAgICAgIDY3Ci0jZGVmaW5lIFpFTkRfTkVX ICAgICAgICAgICAgICAgICAgICAgIDY4Ci0jZGVmaW5lIFpFTkRfSU5JVF9OU19GQ0FMTF9CWV9O QU1FICAgIDY5Ci0jZGVmaW5lIFpFTkRfRlJFRSAgICAgICAgICAgICAgICAgICAgIDcwCi0jZGVm aW5lIFpFTkRfSU5JVF9BUlJBWSAgICAgICAgICAgICAgIDcxCi0jZGVmaW5lIFpFTkRfQUREX0FS UkFZX0VMRU1FTlQgICAgICAgIDcyCi0jZGVmaW5lIFpFTkRfSU5DTFVERV9PUl9FVkFMICAgICAg ICAgIDczCi0jZGVmaW5lIFpFTkRfVU5TRVRfVkFSICAgICAgICAgICAgICAgIDc0Ci0jZGVmaW5l IFpFTkRfVU5TRVRfRElNICAgICAgICAgICAgICAgIDc1Ci0jZGVmaW5lIFpFTkRfVU5TRVRfT0JK ICAgICAgICAgICAgICAgIDc2Ci0jZGVmaW5lIFpFTkRfRkVfUkVTRVQgICAgICAgICAgICAgICAg IDc3Ci0jZGVmaW5lIFpFTkRfRkVfRkVUQ0ggICAgICAgICAgICAgICAgIDc4Ci0jZGVmaW5lIFpF TkRfRVhJVCAgICAgICAgICAgICAgICAgICAgIDc5Ci0jZGVmaW5lIFpFTkRfRkVUQ0hfUiAgICAg ICAgICAgICAgICAgIDgwCi0jZGVmaW5lIFpFTkRfRkVUQ0hfRElNX1IgICAgICAgICAgICAgIDgx Ci0jZGVmaW5lIFpFTkRfRkVUQ0hfT0JKX1IgICAgICAgICAgICAgIDgyCi0jZGVmaW5lIFpFTkRf RkVUQ0hfVyAgICAgICAgICAgICAgICAgIDgzCi0jZGVmaW5lIFpFTkRfRkVUQ0hfRElNX1cgICAg ICAgICAgICAgIDg0Ci0jZGVmaW5lIFpFTkRfRkVUQ0hfT0JKX1cgICAgICAgICAgICAgIDg1Ci0j ZGVmaW5lIFpFTkRfRkVUQ0hfUlcgICAgICAgICAgICAgICAgIDg2Ci0jZGVmaW5lIFpFTkRfRkVU Q0hfRElNX1JXICAgICAgICAgICAgIDg3Ci0jZGVmaW5lIFpFTkRfRkVUQ0hfT0JKX1JXICAgICAg ICAgICAgIDg4Ci0jZGVmaW5lIFpFTkRfRkVUQ0hfSVMgICAgICAgICAgICAgICAgIDg5Ci0jZGVm aW5lIFpFTkRfRkVUQ0hfRElNX0lTICAgICAgICAgICAgIDkwCi0jZGVmaW5lIFpFTkRfRkVUQ0hf T0JKX0lTICAgICAgICAgICAgIDkxCi0jZGVmaW5lIFpFTkRfRkVUQ0hfRlVOQ19BUkcgICAgICAg ICAgIDkyCi0jZGVmaW5lIFpFTkRfRkVUQ0hfRElNX0ZVTkNfQVJHICAgICAgIDkzCi0jZGVmaW5l IFpFTkRfRkVUQ0hfT0JKX0ZVTkNfQVJHICAgICAgIDk0Ci0jZGVmaW5lIFpFTkRfRkVUQ0hfVU5T RVQgICAgICAgICAgICAgIDk1Ci0jZGVmaW5lIFpFTkRfRkVUQ0hfRElNX1VOU0VUICAgICAgICAg IDk2Ci0jZGVmaW5lIFpFTkRfRkVUQ0hfT0JKX1VOU0VUICAgICAgICAgIDk3Ci0jZGVmaW5lIFpF TkRfRkVUQ0hfRElNX1RNUF9WQVIgICAgICAgIDk4Ci0jZGVmaW5lIFpFTkRfRkVUQ0hfQ09OU1RB TlQgICAgICAgICAgIDk5Ci0jZGVmaW5lIFpFTkRfRVhUX1NUTVQgICAgICAgICAgICAgICAgMTAx Ci0jZGVmaW5lIFpFTkRfRVhUX0ZDQUxMX0JFR0lOICAgICAgICAgMTAyCi0jZGVmaW5lIFpFTkRf RVhUX0ZDQUxMX0VORCAgICAgICAgICAgMTAzCi0jZGVmaW5lIFpFTkRfRVhUX05PUCAgICAgICAg ICAgICAgICAgMTA0Ci0jZGVmaW5lIFpFTkRfVElDS1MgICAgICAgICAgICAgICAgICAgMTA1Ci0j ZGVmaW5lIFpFTkRfU0VORF9WQVJfTk9fUkVGICAgICAgICAgMTA2Ci0jZGVmaW5lIFpFTkRfQ0FU Q0ggICAgICAgICAgICAgICAgICAgMTA3Ci0jZGVmaW5lIFpFTkRfVEhST1cgICAgICAgICAgICAg ICAgICAgMTA4Ci0jZGVmaW5lIFpFTkRfRkVUQ0hfQ0xBU1MgICAgICAgICAgICAgMTA5Ci0jZGVm aW5lIFpFTkRfQ0xPTkUgICAgICAgICAgICAgICAgICAgMTEwCi0jZGVmaW5lIFpFTkRfSU5JVF9N RVRIT0RfQ0FMTCAgICAgICAgMTEyCi0jZGVmaW5lIFpFTkRfSU5JVF9TVEFUSUNfTUVUSE9EX0NB TEwgMTEzCi0jZGVmaW5lIFpFTkRfSVNTRVRfSVNFTVBUWV9WQVIgICAgICAgMTE0Ci0jZGVmaW5l IFpFTkRfSVNTRVRfSVNFTVBUWV9ESU1fT0JKICAgMTE1Ci0jZGVmaW5lIFpFTkRfUFJFX0lOQ19P QkogICAgICAgICAgICAgMTMyCi0jZGVmaW5lIFpFTkRfUFJFX0RFQ19PQkogICAgICAgICAgICAg MTMzCi0jZGVmaW5lIFpFTkRfUE9TVF9JTkNfT0JKICAgICAgICAgICAgMTM0Ci0jZGVmaW5lIFpF TkRfUE9TVF9ERUNfT0JKICAgICAgICAgICAgMTM1Ci0jZGVmaW5lIFpFTkRfQVNTSUdOX09CSiAg ICAgICAgICAgICAgMTM2Ci0jZGVmaW5lIFpFTkRfSU5TVEFOQ0VPRiAgICAgICAgICAgICAgMTM4 Ci0jZGVmaW5lIFpFTkRfREVDTEFSRV9DTEFTUyAgICAgICAgICAgMTM5Ci0jZGVmaW5lIFpFTkRf REVDTEFSRV9JTkhFUklURURfQ0xBU1MgMTQwCi0jZGVmaW5lIFpFTkRfREVDTEFSRV9GVU5DVElP TiAgICAgICAgMTQxCi0jZGVmaW5lIFpFTkRfUkFJU0VfQUJTVFJBQ1RfRVJST1IgICAgMTQyCi0j ZGVmaW5lIFpFTkRfREVDTEFSRV9DT05TVCAgICAgICAgICAgMTQzCi0jZGVmaW5lIFpFTkRfQURE X0lOVEVSRkFDRSAgICAgICAgICAgMTQ0Ci0jZGVmaW5lIFpFTkRfVkVSSUZZX0FCU1RSQUNUX0NM QVNTICAgMTQ2Ci0jZGVmaW5lIFpFTkRfQVNTSUdOX0RJTSAgICAgICAgICAgICAgMTQ3Ci0jZGVm aW5lIFpFTkRfSVNTRVRfSVNFTVBUWV9QUk9QX09CSiAgMTQ4Ci0jZGVmaW5lIFpFTkRfSEFORExF X0VYQ0VQVElPTiAgICAgICAgMTQ5Ci0jZGVmaW5lIFpFTkRfVVNFUl9PUENPREUgICAgICAgICAg ICAgMTUwCi0jZGVmaW5lIFpFTkRfSk1QX1NFVCAgICAgICAgICAgICAgICAgMTUyCisjZGVmaW5l IFpFTkRfTk9QICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgWkVORF9B REQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQorI2RlZmluZSBaRU5EX1NVQiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAyCisjZGVmaW5lIFpFTkRfTVVMICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDMKKyNkZWZpbmUgWkVORF9ESVYgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgNAorI2RlZmluZSBaRU5EX01PRCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA1CisjZGVmaW5lIFpFTkRfU0wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYK KyNkZWZpbmUgWkVORF9TUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNworI2RlZmlu ZSBaRU5EX0NPTkNBVCAgICAgICAgICAgICAgICAgICAgICAgICAgICA4CisjZGVmaW5lIFpFTkRf QldfT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkKKyNkZWZpbmUgWkVORF9CV19BTkQg ICAgICAgICAgICAgICAgICAgICAgICAgICAxMAorI2RlZmluZSBaRU5EX0JXX1hPUiAgICAgICAg ICAgICAgICAgICAgICAgICAgIDExCisjZGVmaW5lIFpFTkRfQldfTk9UICAgICAgICAgICAgICAg ICAgICAgICAgICAgMTIKKyNkZWZpbmUgWkVORF9CT09MX05PVCAgICAgICAgICAgICAgICAgICAg ICAgICAxMworI2RlZmluZSBaRU5EX0JPT0xfWE9SICAgICAgICAgICAgICAgICAgICAgICAgIDE0 CisjZGVmaW5lIFpFTkRfSVNfSURFTlRJQ0FMICAgICAgICAgICAgICAgICAgICAgMTUKKyNkZWZp bmUgWkVORF9JU19OT1RfSURFTlRJQ0FMICAgICAgICAgICAgICAgICAxNgorI2RlZmluZSBaRU5E X0lTX0VRVUFMICAgICAgICAgICAgICAgICAgICAgICAgIDE3CisjZGVmaW5lIFpFTkRfSVNfTk9U X0VRVUFMICAgICAgICAgICAgICAgICAgICAgMTgKKyNkZWZpbmUgWkVORF9JU19TTUFMTEVSICAg ICAgICAgICAgICAgICAgICAgICAxOQorI2RlZmluZSBaRU5EX0lTX1NNQUxMRVJfT1JfRVFVQUwg ICAgICAgICAgICAgIDIwCisjZGVmaW5lIFpFTkRfQ0FTVCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMjEKKyNkZWZpbmUgWkVORF9RTV9BU1NJR04gICAgICAgICAgICAgICAgICAgICAgICAy MgorI2RlZmluZSBaRU5EX0FTU0lHTl9BREQgICAgICAgICAgICAgICAgICAgICAgIDIzCisjZGVm aW5lIFpFTkRfQVNTSUdOX1NVQiAgICAgICAgICAgICAgICAgICAgICAgMjQKKyNkZWZpbmUgWkVO RF9BU1NJR05fTVVMICAgICAgICAgICAgICAgICAgICAgICAyNQorI2RlZmluZSBaRU5EX0FTU0lH Tl9ESVYgICAgICAgICAgICAgICAgICAgICAgIDI2CisjZGVmaW5lIFpFTkRfQVNTSUdOX01PRCAg ICAgICAgICAgICAgICAgICAgICAgMjcKKyNkZWZpbmUgWkVORF9BU1NJR05fU0wgICAgICAgICAg ICAgICAgICAgICAgICAyOAorI2RlZmluZSBaRU5EX0FTU0lHTl9TUiAgICAgICAgICAgICAgICAg ICAgICAgIDI5CisjZGVmaW5lIFpFTkRfQVNTSUdOX0NPTkNBVCAgICAgICAgICAgICAgICAgICAg MzAKKyNkZWZpbmUgWkVORF9BU1NJR05fQldfT1IgICAgICAgICAgICAgICAgICAgICAzMQorI2Rl ZmluZSBaRU5EX0FTU0lHTl9CV19BTkQgICAgICAgICAgICAgICAgICAgIDMyCisjZGVmaW5lIFpF TkRfQVNTSUdOX0JXX1hPUiAgICAgICAgICAgICAgICAgICAgMzMKKyNkZWZpbmUgWkVORF9QUkVf SU5DICAgICAgICAgICAgICAgICAgICAgICAgICAzNAorI2RlZmluZSBaRU5EX1BSRV9ERUMgICAg ICAgICAgICAgICAgICAgICAgICAgIDM1CisjZGVmaW5lIFpFTkRfUE9TVF9JTkMgICAgICAgICAg ICAgICAgICAgICAgICAgMzYKKyNkZWZpbmUgWkVORF9QT1NUX0RFQyAgICAgICAgICAgICAgICAg ICAgICAgICAzNworI2RlZmluZSBaRU5EX0FTU0lHTiAgICAgICAgICAgICAgICAgICAgICAgICAg IDM4CisjZGVmaW5lIFpFTkRfQVNTSUdOX1JFRiAgICAgICAgICAgICAgICAgICAgICAgMzkKKyNk ZWZpbmUgWkVORF9FQ0hPICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MAorI2RlZmluZSBa RU5EX1BSSU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQxCisjZGVmaW5lIFpFTkRfSk1Q ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIKKyNkZWZpbmUgWkVORF9KTVBaICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA0MworI2RlZmluZSBaRU5EX0pNUE5aICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDQ0CisjZGVmaW5lIFpFTkRfSk1QWk5aICAgICAgICAgICAgICAgICAg ICAgICAgICAgNDUKKyNkZWZpbmUgWkVORF9KTVBaX0VYICAgICAgICAgICAgICAgICAgICAgICAg ICA0NgorI2RlZmluZSBaRU5EX0pNUE5aX0VYICAgICAgICAgICAgICAgICAgICAgICAgIDQ3Cisj ZGVmaW5lIFpFTkRfQ0FTRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDgKKyNkZWZpbmUg WkVORF9TV0lUQ0hfRlJFRSAgICAgICAgICAgICAgICAgICAgICA0OQorI2RlZmluZSBaRU5EX0JS SyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUwCisjZGVmaW5lIFpFTkRfQ09OVCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgNTEKKyNkZWZpbmUgWkVORF9CT09MICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA1MgorI2RlZmluZSBaRU5EX0lOSVRfU1RSSU5HICAgICAgICAgICAg ICAgICAgICAgIDUzCisjZGVmaW5lIFpFTkRfQUREX0NIQVIgICAgICAgICAgICAgICAgICAgICAg ICAgNTQKKyNkZWZpbmUgWkVORF9BRERfU1RSSU5HICAgICAgICAgICAgICAgICAgICAgICA1NQor I2RlZmluZSBaRU5EX0FERF9WQVIgICAgICAgICAgICAgICAgICAgICAgICAgIDU2CisjZGVmaW5l IFpFTkRfQkVHSU5fU0lMRU5DRSAgICAgICAgICAgICAgICAgICAgNTcKKyNkZWZpbmUgWkVORF9F TkRfU0lMRU5DRSAgICAgICAgICAgICAgICAgICAgICA1OAorI2RlZmluZSBaRU5EX0lOSVRfRkNB TExfQllfTkFNRSAgICAgICAgICAgICAgIDU5CisjZGVmaW5lIFpFTkRfRE9fRkNBTEwgICAgICAg ICAgICAgICAgICAgICAgICAgNjAKKyNkZWZpbmUgWkVORF9ET19GQ0FMTF9CWV9OQU1FICAgICAg ICAgICAgICAgICA2MQorI2RlZmluZSBaRU5EX1JFVFVSTiAgICAgICAgICAgICAgICAgICAgICAg ICAgIDYyCisjZGVmaW5lIFpFTkRfUkVDViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjMK KyNkZWZpbmUgWkVORF9SRUNWX0lOSVQgICAgICAgICAgICAgICAgICAgICAgICA2NAorI2RlZmlu ZSBaRU5EX1NFTkRfVkFMICAgICAgICAgICAgICAgICAgICAgICAgIDY1CisjZGVmaW5lIFpFTkRf U0VORF9WQVIgICAgICAgICAgICAgICAgICAgICAgICAgNjYKKyNkZWZpbmUgWkVORF9TRU5EX1JF RiAgICAgICAgICAgICAgICAgICAgICAgICA2NworI2RlZmluZSBaRU5EX05FVyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDY4CisjZGVmaW5lIFpFTkRfSU5JVF9OU19GQ0FMTF9CWV9OQU1F ICAgICAgICAgICAgNjkKKyNkZWZpbmUgWkVORF9GUkVFICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA3MAorI2RlZmluZSBaRU5EX0lOSVRfQVJSQVkgICAgICAgICAgICAgICAgICAgICAgIDcx CisjZGVmaW5lIFpFTkRfQUREX0FSUkFZX0VMRU1FTlQgICAgICAgICAgICAgICAgNzIKKyNkZWZp bmUgWkVORF9JTkNMVURFX09SX0VWQUwgICAgICAgICAgICAgICAgICA3MworI2RlZmluZSBaRU5E X1VOU0VUX1ZBUiAgICAgICAgICAgICAgICAgICAgICAgIDc0CisjZGVmaW5lIFpFTkRfVU5TRVRf RElNICAgICAgICAgICAgICAgICAgICAgICAgNzUKKyNkZWZpbmUgWkVORF9VTlNFVF9PQkogICAg ICAgICAgICAgICAgICAgICAgICA3NgorI2RlZmluZSBaRU5EX0ZFX1JFU0VUICAgICAgICAgICAg ICAgICAgICAgICAgIDc3CisjZGVmaW5lIFpFTkRfRkVfRkVUQ0ggICAgICAgICAgICAgICAgICAg ICAgICAgNzgKKyNkZWZpbmUgWkVORF9FWElUICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3 OQorI2RlZmluZSBaRU5EX0ZFVENIX1IgICAgICAgICAgICAgICAgICAgICAgICAgIDgwCisjZGVm aW5lIFpFTkRfRkVUQ0hfRElNX1IgICAgICAgICAgICAgICAgICAgICAgODEKKyNkZWZpbmUgWkVO RF9GRVRDSF9PQkpfUiAgICAgICAgICAgICAgICAgICAgICA4MgorI2RlZmluZSBaRU5EX0ZFVENI X1cgICAgICAgICAgICAgICAgICAgICAgICAgIDgzCisjZGVmaW5lIFpFTkRfRkVUQ0hfRElNX1cg ICAgICAgICAgICAgICAgICAgICAgODQKKyNkZWZpbmUgWkVORF9GRVRDSF9PQkpfVyAgICAgICAg ICAgICAgICAgICAgICA4NQorI2RlZmluZSBaRU5EX0ZFVENIX1JXICAgICAgICAgICAgICAgICAg ICAgICAgIDg2CisjZGVmaW5lIFpFTkRfRkVUQ0hfRElNX1JXICAgICAgICAgICAgICAgICAgICAg ODcKKyNkZWZpbmUgWkVORF9GRVRDSF9PQkpfUlcgICAgICAgICAgICAgICAgICAgICA4OAorI2Rl ZmluZSBaRU5EX0ZFVENIX0lTICAgICAgICAgICAgICAgICAgICAgICAgIDg5CisjZGVmaW5lIFpF TkRfRkVUQ0hfRElNX0lTICAgICAgICAgICAgICAgICAgICAgOTAKKyNkZWZpbmUgWkVORF9GRVRD SF9PQkpfSVMgICAgICAgICAgICAgICAgICAgICA5MQorI2RlZmluZSBaRU5EX0ZFVENIX0ZVTkNf QVJHICAgICAgICAgICAgICAgICAgIDkyCisjZGVmaW5lIFpFTkRfRkVUQ0hfRElNX0ZVTkNfQVJH ICAgICAgICAgICAgICAgOTMKKyNkZWZpbmUgWkVORF9GRVRDSF9PQkpfRlVOQ19BUkcgICAgICAg ICAgICAgICA5NAorI2RlZmluZSBaRU5EX0ZFVENIX1VOU0VUICAgICAgICAgICAgICAgICAgICAg IDk1CisjZGVmaW5lIFpFTkRfRkVUQ0hfRElNX1VOU0VUICAgICAgICAgICAgICAgICAgOTYKKyNk ZWZpbmUgWkVORF9GRVRDSF9PQkpfVU5TRVQgICAgICAgICAgICAgICAgICA5NworI2RlZmluZSBa RU5EX0ZFVENIX0RJTV9UTVBfVkFSICAgICAgICAgICAgICAgIDk4CisjZGVmaW5lIFpFTkRfRkVU Q0hfQ09OU1RBTlQgICAgICAgICAgICAgICAgICAgOTkKKyNkZWZpbmUgWkVORF9FWFRfU1RNVCAg ICAgICAgICAgICAgICAgICAgICAgIDEwMQorI2RlZmluZSBaRU5EX0VYVF9GQ0FMTF9CRUdJTiAg ICAgICAgICAgICAgICAgMTAyCisjZGVmaW5lIFpFTkRfRVhUX0ZDQUxMX0VORCAgICAgICAgICAg ICAgICAgICAxMDMKKyNkZWZpbmUgWkVORF9FWFRfTk9QICAgICAgICAgICAgICAgICAgICAgICAg IDEwNAorI2RlZmluZSBaRU5EX1RJQ0tTICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA1Cisj ZGVmaW5lIFpFTkRfU0VORF9WQVJfTk9fUkVGICAgICAgICAgICAgICAgICAxMDYKKyNkZWZpbmUg WkVORF9DQVRDSCAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNworI2RlZmluZSBaRU5EX1RI Uk9XICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA4CisjZGVmaW5lIFpFTkRfRkVUQ0hfQ0xB U1MgICAgICAgICAgICAgICAgICAgICAxMDkKKyNkZWZpbmUgWkVORF9DTE9ORSAgICAgICAgICAg ICAgICAgICAgICAgICAgIDExMAorI2RlZmluZSBaRU5EX0lOSVRfTUVUSE9EX0NBTEwgICAgICAg ICAgICAgICAgMTEyCisjZGVmaW5lIFpFTkRfSU5JVF9TVEFUSUNfTUVUSE9EX0NBTEwgICAgICAg ICAxMTMKKyNkZWZpbmUgWkVORF9JU1NFVF9JU0VNUFRZX1ZBUiAgICAgICAgICAgICAgIDExNAor I2RlZmluZSBaRU5EX0lTU0VUX0lTRU1QVFlfRElNX09CSiAgICAgICAgICAgMTE1CisjZGVmaW5l IFpFTkRfUFJFX0lOQ19PQkogICAgICAgICAgICAgICAgICAgICAxMzIKKyNkZWZpbmUgWkVORF9Q UkVfREVDX09CSiAgICAgICAgICAgICAgICAgICAgIDEzMworI2RlZmluZSBaRU5EX1BPU1RfSU5D X09CSiAgICAgICAgICAgICAgICAgICAgMTM0CisjZGVmaW5lIFpFTkRfUE9TVF9ERUNfT0JKICAg ICAgICAgICAgICAgICAgICAxMzUKKyNkZWZpbmUgWkVORF9BU1NJR05fT0JKICAgICAgICAgICAg ICAgICAgICAgIDEzNgorI2RlZmluZSBaRU5EX0lOU1RBTkNFT0YgICAgICAgICAgICAgICAgICAg ICAgMTM4CisjZGVmaW5lIFpFTkRfREVDTEFSRV9DTEFTUyAgICAgICAgICAgICAgICAgICAxMzkK KyNkZWZpbmUgWkVORF9ERUNMQVJFX0lOSEVSSVRFRF9DTEFTUyAgICAgICAgIDE0MAorI2RlZmlu ZSBaRU5EX0RFQ0xBUkVfRlVOQ1RJT04gICAgICAgICAgICAgICAgMTQxCisjZGVmaW5lIFpFTkRf UkFJU0VfQUJTVFJBQ1RfRVJST1IgICAgICAgICAgICAxNDIKKyNkZWZpbmUgWkVORF9ERUNMQVJF X0NPTlNUICAgICAgICAgICAgICAgICAgIDE0MworI2RlZmluZSBaRU5EX0FERF9JTlRFUkZBQ0Ug ICAgICAgICAgICAgICAgICAgMTQ0CisjZGVmaW5lIFpFTkRfREVDTEFSRV9JTkhFUklURURfQ0xB U1NfREVMQVlFRCAxNDUKKyNkZWZpbmUgWkVORF9WRVJJRllfQUJTVFJBQ1RfQ0xBU1MgICAgICAg ICAgIDE0NgorI2RlZmluZSBaRU5EX0FTU0lHTl9ESU0gICAgICAgICAgICAgICAgICAgICAgMTQ3 CisjZGVmaW5lIFpFTkRfSVNTRVRfSVNFTVBUWV9QUk9QX09CSiAgICAgICAgICAxNDgKKyNkZWZp bmUgWkVORF9IQU5ETEVfRVhDRVBUSU9OICAgICAgICAgICAgICAgIDE0OQorI2RlZmluZSBaRU5E X1VTRVJfT1BDT0RFICAgICAgICAgICAgICAgICAgICAgMTUwCisjZGVmaW5lIFpFTkRfSk1QX1NF VCAgICAgICAgICAgICAgICAgICAgICAgICAxNTIKSW5kZXg6IHNhcGkvY2dpL2NnaV9tYWluLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvcGhwLXNyYy9zYXBpL2NnaS9jZ2lfbWFp bi5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjI2Ny4yLjE1LjIuNTAuMi4xMwpkaWZmIC11IC1w IC1kIC1yMS4yNjcuMi4xNS4yLjUwLjIuMTMgY2dpX21haW4uYwotLS0gc2FwaS9jZ2kvY2dpX21h aW4uYwkyOCBGZWIgMjAwOCAwMDo1MTo1NiAtMDAwMAkxLjI2Ny4yLjE1LjIuNTAuMi4xMworKysg c2FwaS9jZ2kvY2dpX21haW4uYwkxMiBNYXIgMjAwOCAxMTowNjozOSAtMDAwMApAQCAtMTY5MSw3 ICsxNjkxLDcgQEAgY29uc3VsdCB0aGUgaW5zdGFsbGF0aW9uIGZpbGUgdGhhdCBjYW1lIAogCQkJ CQkJCWJyZWFrOwogCiAJCQkJCQljYXNlICdlJzogLyogZW5hYmxlIGV4dGVuZGVkIGluZm8gb3V0 cHV0ICovCi0JCQkJCQkJQ0coZXh0ZW5kZWRfaW5mbykgPSAxOworCQkJCQkJCUNHKGNvbXBpbGVy X29wdGlvbnMpIHw9IFpFTkRfQ09NUElMRV9FWFRFTkRFRF9JTkZPOwogCQkJCQkJCWJyZWFrOwog CiAJCQkJCQljYXNlICdmJzogLyogcGFyc2UgZmlsZSAqLwpJbmRleDogc2FwaS9jbGkvcGhwX2Ns aS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L3BocC1zcmMvc2FwaS9jbGkvcGhw X2NsaS5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEyOS4yLjEzLjIuMjIuMi40CmRpZmYgLXUg LXAgLWQgLXIxLjEyOS4yLjEzLjIuMjIuMi40IHBocF9jbGkuYwotLS0gc2FwaS9jbGkvcGhwX2Ns aS5jCTMgRmViIDIwMDggMTc6NDk6NDYgLTAwMDAJMS4xMjkuMi4xMy4yLjIyLjIuNAorKysgc2Fw aS9jbGkvcGhwX2NsaS5jCTEyIE1hciAyMDA4IDExOjA2OjQwIC0wMDAwCkBAIC04MjEsNyArODIx LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCQlicmVhazsKIAogCQkJ Y2FzZSAnZSc6IC8qIGVuYWJsZSBleHRlbmRlZCBpbmZvIG91dHB1dCAqLwotCQkJCUNHKGV4dGVu ZGVkX2luZm8pID0gMTsKKwkJCQlDRyhjb21waWxlcl9vcHRpb25zKSB8PSBaRU5EX0NPTVBJTEVf RVhURU5ERURfSU5GTzsKIAkJCQlicmVhazsKIAogCQkJY2FzZSAnRic6CkluZGV4OiBzYXBpL21p bHRlci9waHBfbWlsdGVyLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvcGhwLXNy Yy9zYXBpL21pbHRlci9waHBfbWlsdGVyLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTQuMi4y LjIuMy4yLjIKZGlmZiAtdSAtcCAtZCAtcjEuMTQuMi4yLjIuMy4yLjIgcGhwX21pbHRlci5jCi0t LSBzYXBpL21pbHRlci9waHBfbWlsdGVyLmMJMzEgRGVjIDIwMDcgMDc6MTc6MTggLTAwMDAJMS4x NC4yLjIuMi4zLjIuMgorKysgc2FwaS9taWx0ZXIvcGhwX21pbHRlci5jCTEyIE1hciAyMDA4IDEx OjA2OjQwIC0wMDAwCkBAIC0xMDMzLDcgKzEwMzMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hh ciAqYXJndltdKQogCQkJCWJyZWFrOwogCiAJCQljYXNlICdlJzogLyogZW5hYmxlIGV4dGVuZGVk IGluZm8gb3V0cHV0ICovCi0JCQkJQ0coZXh0ZW5kZWRfaW5mbykgPSAxOworCQkJCUNHKGNvbXBp bGVyX29wdGlvbnMpIHw9IFpFTkRfQ09NUElMRV9FWFRFTkRFRF9JTkZPOwogCQkJCWJyZWFrOwog CiAJCQljYXNlICdmJzogLyogcGFyc2UgZmlsZSAqLwo= ------_=_NextPart_001_01C884E8.0F9249FF--