From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5578 invoked by alias); 6 Aug 2014 16:51:06 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 5542 invoked by uid 89); 6 Aug 2014 16:51:01 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-Spam-User: qpsmtpd, 2 recipients X-HELO: mail-wg0-f52.google.com Received: from mail-wg0-f52.google.com (HELO mail-wg0-f52.google.com) (74.125.82.52) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Wed, 06 Aug 2014 16:50:55 +0000 Received: by mail-wg0-f52.google.com with SMTP id a1so2866919wgh.35 for ; Wed, 06 Aug 2014 09:50:51 -0700 (PDT) X-Received: by 10.194.216.163 with SMTP id or3mr16853236wjc.31.1407343851712; Wed, 06 Aug 2014 09:50:51 -0700 (PDT) MIME-Version: 1.0 Received: by 10.217.150.131 with HTTP; Wed, 6 Aug 2014 09:50:30 -0700 (PDT) From: =?ISO-8859-1?Q?Manuel_L=F3pez=2DIb=E1=F1ez?= Date: Wed, 06 Aug 2014 16:51:00 -0000 Message-ID: Subject: [PATCH Fortran/Diagnostics] Move Fortran to common diagnostics machinery To: Gcc Patch List , "fortran@gcc.gnu.org List" , Tobias Burnus , Dodji Seketeli Content-Type: multipart/mixed; boundary=001a11c27eb45d791f04fff8c6e7 X-SW-Source: 2014-08/txt/msg00488.txt.bz2 --001a11c27eb45d791f04fff8c6e7 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 1863 This is the first step for moving Fortran to use the common diagnostics machinery. This patch makes Fortran use the common machinery for those warnings that don't have a location or a controlling option. Before: manuel@gcc10:~/test1$ echo end | ./213518/build/gcc/f951 -fdiagnostics-color -Werror -x - f951: error: command line option '-x -' is valid for the driver but not for Fortran Warning: Reading file '' as free form After: manuel@gcc10:~/test1$ echo end | ./213518M/build/gcc/f951 -fdiagnostics-color -Werror -x - f951: Error: command line option '-x -' is valid for the driver but not for Fortran f951: Error: Reading file '' as free form [-Werror] (Plus the colors that you cannot see in this mail). Bootstrapped and regression tested on x86_64-linux-gnu. OK? 2014-08-03 Manuel L=F3pez-Ib=E1=F1ez PR fortran/44054 c-family/ * c-format.c: Handle Fortran flags. * diagnostic.c (build_message_string): Make it extern. * diagnostic.h (build_message_string): Make it extern. fortran/ * gfortran.h: Define GCC_DIAG_STYLE. (gfc_diagnostics_init,gfc_warning_cmdline): Declare. * trans-array.c: Include gfortran.h before diagnostic-core.h. * trans-expr.c: Likewise. * trans-openmp.c: Likewise. * trans-const.c: Likewise. * trans.c: Likewise. * trans-types.c: Likewise. * f95-lang.c: Likewise. * trans-decl.c: Likewise. * trans-io.c: Likewise. * trans-intrinsic.c: Likewise. * error.c: Include diagnostic.h and diagnostic-color.h. (gfc_diagnostic_build_prefix): New. (gfc_diagnostic_starter): New. (gfc_diagnostic_finalizer): New. (gfc_warning_cmdline): New. (gfc_diagnostics_init): New. * gfc-diagnostic.def: New. * options.c (gfc_init_options): Call gfc_diagnostics_init. (gfc_post_options): Use gfc_warning_cmdline. --001a11c27eb45d791f04fff8c6e7 Content-Type: text/plain; charset=US-ASCII; name="fortran-diagnostics-part1.diff" Content-Disposition: attachment; filename="fortran-diagnostics-part1.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hyeb4pab0 Content-length: 34465 SW5kZXg6IGdjYy9jLWZhbWlseS9jLWZvcm1hdC5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIGdjYy9jLWZhbWlseS9jLWZvcm1hdC5jCShyZXZpc2lv biAyMTM1MTgpCisrKyBnY2MvYy1mYW1pbHkvYy1mb3JtYXQuYwkod29ya2lu ZyBjb3B5KQpAQCAtNTA4LDE1ICs1MDgsMTEgQEAgc3RhdGljIGNvbnN0IGZv cm1hdF9mbGFnX3BhaXIgZ2NjX2RpYWdfZgogfTsKIAogI2RlZmluZSBnY2Nf dGRpYWdfZmxhZ19wYWlycyBnY2NfZGlhZ19mbGFnX3BhaXJzCiAjZGVmaW5l IGdjY19jZGlhZ19mbGFnX3BhaXJzIGdjY19kaWFnX2ZsYWdfcGFpcnMKICNk ZWZpbmUgZ2NjX2N4eGRpYWdfZmxhZ19wYWlycyBnY2NfZGlhZ19mbGFnX3Bh aXJzCi0KLXN0YXRpYyBjb25zdCBmb3JtYXRfZmxhZ19wYWlyIGdjY19nZmNf ZmxhZ19wYWlyc1tdID0KLXsKLSAgeyAwLCAwLCAwLCAwIH0KLX07CisjZGVm aW5lIGdjY19nZmNfZmxhZ19wYWlycyBnY2NfZGlhZ19mbGFnX3BhaXJzCiAK IHN0YXRpYyBjb25zdCBmb3JtYXRfZmxhZ19zcGVjIGdjY19kaWFnX2ZsYWdf c3BlY3NbXSA9CiB7CiAgIHsgJysnLCAgMCwgMCwgTl8oIicrJyBmbGFnIiks ICAgICAgICBOXygidGhlICcrJyBwcmludGYgZmxhZyIpLCAgICAgICAgICAg ICAgU1REX0M4OSB9LAogICB7ICcjJywgIDAsIDAsIE5fKCInIycgZmxhZyIp LCAgICAgICAgTl8oInRoZSAnIycgcHJpbnRmIGZsYWciKSwgICAgICAgICAg ICAgIFNURF9DODkgfSwKQEAgLTUyNywxMCArNTIzLDExIEBAIHN0YXRpYyBj b25zdCBmb3JtYXRfZmxhZ19zcGVjIGdjY19kaWFnX2YKIH07CiAKICNkZWZp bmUgZ2NjX3RkaWFnX2ZsYWdfc3BlY3MgZ2NjX2RpYWdfZmxhZ19zcGVjcwog I2RlZmluZSBnY2NfY2RpYWdfZmxhZ19zcGVjcyBnY2NfZGlhZ19mbGFnX3Nw ZWNzCiAjZGVmaW5lIGdjY19jeHhkaWFnX2ZsYWdfc3BlY3MgZ2NjX2RpYWdf ZmxhZ19zcGVjcworI2RlZmluZSBnY2NfZ2ZjX2ZsYWdfc3BlY3MgZ2NjX2Rp YWdfZmxhZ19zcGVjcwogCiBzdGF0aWMgY29uc3QgZm9ybWF0X2ZsYWdfc3Bl YyBzY2FuZl9mbGFnX3NwZWNzW10gPQogewogICB7ICcqJywgIDAsIDAsIE5f KCJhc3NpZ25tZW50IHN1cHByZXNzaW9uIiksIE5fKCJ0aGUgYXNzaWdubWVu dCBzdXBwcmVzc2lvbiBzY2FuZiBmZWF0dXJlIiksIFNURF9DODkgfSwKICAg eyAnYScsICAwLCAwLCBOXygiJ2EnIGZsYWciKSwgICAgICAgICAgICAgICBO XygidGhlICdhJyBzY2FuZiBmbGFnIiksICAgICAgICAgICAgICAgICAgICAg ICBTVERfRVhUIH0sCkBAIC03MzksMTkgKzczNiwyMSBAQCBzdGF0aWMgY29u c3QgZm9ybWF0X2NoYXJfaW5mbyBnY2NfZ2ZjX2NoCiB7CiAgIC8qIEM4OSBj b252ZXJzaW9uIHNwZWNpZmllcnMuICAqLwogICB7ICJkaSIsICAwLCBTVERf Qzg5LCB7IFQ4OV9JLCAgIEJBRExFTiwgIEJBRExFTiwgIFQ4OV9MLCAgIEJB RExFTiwgIEJBRExFTiwgIEJBRExFTiwgIEJBRExFTiwgIEJBRExFTiAgfSwg IiIsICIiLCBOVUxMIH0sCiAgIHsgInUiLCAgIDAsIFNURF9DODksIHsgVDg5 X1VJLCAgQkFETEVOLCAgQkFETEVOLCAgVDg5X1VMLCAgQkFETEVOLCAgQkFE TEVOLCAgQkFETEVOLCAgQkFETEVOLCAgQkFETEVOICB9LCAiIiwgIiIsIE5V TEwgfSwKICAgeyAiYyIsICAgMCwgU1REX0M4OSwgeyBUODlfSSwgICBCQURM RU4sICBCQURMRU4sICBCQURMRU4sICBCQURMRU4sICBCQURMRU4sICBCQURM RU4sICBCQURMRU4sICBCQURMRU4gIH0sICIiLCAiIiwgTlVMTCB9LAotICB7 ICJzIiwgICAxLCBTVERfQzg5LCB7IFQ4OV9DLCAgIEJBRExFTiwgIEJBRExF TiwgIEJBRExFTiwgIEJBRExFTiwgIEJBRExFTiwgIEJBRExFTiwgIEJBRExF TiwgIEJBRExFTiAgfSwgIiIsICJjUiIsIE5VTEwgfSwKKyAgeyAicyIsICAg MSwgU1REX0M4OSwgeyBUODlfQywgICBCQURMRU4sICBCQURMRU4sICBCQURM RU4sICBCQURMRU4sICBCQURMRU4sICBCQURMRU4sICBCQURMRU4sICBCQURM RU4gIH0sICJxIiwgImNSIiwgTlVMTCB9LAogCiAgIC8qIGdmYyBjb252ZXJz aW9uIHNwZWNpZmllcnMuICAqLwogCiAgIHsgIkMiLCAgIDAsIFNURF9DODks IE5PQVJHVU1FTlRTLCAiIiwgICAgICAiIiwgICBOVUxMIH0sCiAKICAgLyog VGhpcyB3aWxsIHJlcXVpcmUgYSAibG9jdXMiIGF0IHJ1bnRpbWUuICAqLwog ICB7ICJMIiwgICAwLCBTVERfQzg5LCB7IFQ4OV9WLCAgIEJBRExFTiwgIEJB RExFTiwgIEJBRExFTiwgIEJBRExFTiwgIEJBRExFTiwgIEJBRExFTiwgIEJB RExFTiwgIEJBRExFTiAgfSwgIiIsICJSIiwgTlVMTCB9LAogCisgIC8qIFRo ZXNlIHdpbGwgcmVxdWlyZSBub3RoaW5nLiAgKi8KKyAgeyAiPD4iLDAsIFNU RF9DODksIE5PQVJHVU1FTlRTLCAiIiwgICAgICAiIiwgICBOVUxMIH0sCiAg IHsgTlVMTCwgIDAsIFNURF9DODksIE5PTEVOR1RIUywgTlVMTCwgTlVMTCwg TlVMTCB9CiB9OwogCiBzdGF0aWMgY29uc3QgZm9ybWF0X2NoYXJfaW5mbyBz Y2FuX2NoYXJfdGFibGVbXSA9CiB7CkBAIC04NDQsMTIgKzg0MywxMiBAQCBz dGF0aWMgY29uc3QgZm9ybWF0X2tpbmRfaW5mbyBmb3JtYXRfdHlwCiAgICAg Z2NjX2N4eGRpYWdfZmxhZ19zcGVjcywgZ2NjX2N4eGRpYWdfZmxhZ19wYWly cywKICAgICBGTVRfRkxBR19BUkdfQ09OVkVSVCwKICAgICAwLCAwLCAncCcs IDAsICdMJywgMCwKICAgICBOVUxMLCAmaW50ZWdlcl90eXBlX25vZGUKICAg fSwKLSAgeyAiZ2NjX2dmYyIsIGdjY19nZmNfbGVuZ3RoX3NwZWNzLCBnY2Nf Z2ZjX2NoYXJfdGFibGUsICIiLCBOVUxMLAotICAgIE5VTEwsIGdjY19nZmNf ZmxhZ19wYWlycywKKyAgeyAiZ2NjX2dmYyIsIGdjY19nZmNfbGVuZ3RoX3Nw ZWNzLCBnY2NfZ2ZjX2NoYXJfdGFibGUsICJxKyMiLCBOVUxMLAorICAgIGdj Y19nZmNfZmxhZ19zcGVjcywgZ2NjX2dmY19mbGFnX3BhaXJzLAogICAgIEZN VF9GTEFHX0FSR19DT05WRVJULAogICAgIDAsIDAsIDAsIDAsIDAsIDAsCiAg ICAgTlVMTCwgTlVMTAogICB9LAogICB7ICJOU1N0cmluZyIsICAgTlVMTCwg IE5VTEwsIE5VTEwsIE5VTEwsCkluZGV4OiBnY2MvZGlhZ25vc3RpYy5jCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjYy9kaWFnbm9zdGljLmMJKHJl dmlzaW9uIDIxMzUxOCkKKysrIGdjYy9kaWFnbm9zdGljLmMJKHdvcmtpbmcg Y29weSkKQEAgLTM5LDEyICszOSwxMCBAQCBhbG9uZyB3aXRoIEdDQzsgc2Vl IHRoZSBmaWxlIENPUFlJTkczLgogICAoKERDKS0+cGVkYW50aWNfZXJyb3Jz ID8gREtfRVJST1IgOiBES19XQVJOSU5HKQogI2RlZmluZSBwZXJtaXNzaXZl X2Vycm9yX2tpbmQoREMpICgoREMpLT5wZXJtaXNzaXZlID8gREtfV0FSTklO RyA6IERLX0VSUk9SKQogI2RlZmluZSBwZXJtaXNzaXZlX2Vycm9yX29wdGlv bihEQykgKChEQyktPm9wdF9wZXJtaXNzaXZlKQogCiAvKiBQcm90b3R5cGVz LiAgKi8KLXN0YXRpYyBjaGFyICpidWlsZF9tZXNzYWdlX3N0cmluZyAoY29u c3QgY2hhciAqLCAuLi4pIEFUVFJJQlVURV9QUklOVEZfMTsKLQogc3RhdGlj IHZvaWQgZXJyb3JfcmVjdXJzaW9uIChkaWFnbm9zdGljX2NvbnRleHQgKikg QVRUUklCVVRFX05PUkVUVVJOOwogCiBzdGF0aWMgdm9pZCBkaWFnbm9zdGlj X2FjdGlvbl9hZnRlcl9vdXRwdXQgKGRpYWdub3N0aWNfY29udGV4dCAqLAog CQkJCQkgICAgZGlhZ25vc3RpY19pbmZvICopOwogc3RhdGljIHZvaWQgcmVh bF9hYm9ydCAodm9pZCkgQVRUUklCVVRFX05PUkVUVVJOOwpAQCAtNTcsMTEg KzU1LDExIEBAIGNvbnN0IGNoYXIgKnByb2duYW1lOwogc3RhdGljIGRpYWdu b3N0aWNfY29udGV4dCBnbG9iYWxfZGlhZ25vc3RpY19jb250ZXh0OwogZGlh Z25vc3RpY19jb250ZXh0ICpnbG9iYWxfZGMgPSAmZ2xvYmFsX2RpYWdub3N0 aWNfY29udGV4dDsKIAwKIC8qIFJldHVybiBhIG1hbGxvYydkIHN0cmluZyBj b250YWluaW5nIE1TRyBmb3JtYXR0ZWQgYSBsYSBwcmludGYuICBUaGUKICAg IGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZnJlZWluZyB0aGUgbWVtb3J5 LiAgKi8KLXN0YXRpYyBjaGFyICoKK2NoYXIgKgogYnVpbGRfbWVzc2FnZV9z dHJpbmcgKGNvbnN0IGNoYXIgKm1zZywgLi4uKQogewogICBjaGFyICpzdHI7 CiAgIHZhX2xpc3QgYXA7CiAKSW5kZXg6IGdjYy9kaWFnbm9zdGljLmgKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2RpYWdub3N0aWMuaAkocmV2 aXNpb24gMjEzNTE4KQorKysgZ2NjL2RpYWdub3N0aWMuaAkod29ya2luZyBj b3B5KQpAQCAtMjk0LDYgKzI5NCw5IEBAIHZvaWQgZGlhZ25vc3RpY19zZXRf Y2FyZXRfbWF4X3dpZHRoIChkaWEKIHZvaWQgZGlhZ25vc3RpY19maWxlX2Nh Y2hlX2ZpbmkgKHZvaWQpOwogCiAvKiBQdXJlIHRleHQgZm9ybWF0dGluZyBz dXBwb3J0IGZ1bmN0aW9ucy4gICovCiBleHRlcm4gY2hhciAqZmlsZV9uYW1l X2FzX3ByZWZpeCAoZGlhZ25vc3RpY19jb250ZXh0ICosIGNvbnN0IGNoYXIg Kik7CiAKK2V4dGVybiBjaGFyICpidWlsZF9tZXNzYWdlX3N0cmluZyAoY29u c3QgY2hhciAqLCAuLi4pIEFUVFJJQlVURV9QUklOVEZfMTsKKworCiAjZW5k aWYgLyogISBHQ0NfRElBR05PU1RJQ19IICovCkluZGV4OiBnY2MvZm9ydHJh bi90cmFucy1hcnJheS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdj Yy9mb3J0cmFuL3RyYW5zLWFycmF5LmMJKHJldmlzaW9uIDIxMzUxOCkKKysr IGdjYy9mb3J0cmFuL3RyYW5zLWFycmF5LmMJKHdvcmtpbmcgY29weSkKQEAg LTc2LDE1ICs3NiwxNSBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxl IENPUFlJTkczLgogICAgaXMgY2FsbGVkIHRvIGZyZWUgYWxsIHRoZSBTUyBh bGxvY2F0ZWQgYnkgdGhlIHNjYWxhcml6ZXIuICAqLwogCiAjaW5jbHVkZSAi Y29uZmlnLmgiCiAjaW5jbHVkZSAic3lzdGVtLmgiCiAjaW5jbHVkZSAiY29y ZXR5cGVzLmgiCisjaW5jbHVkZSAiZ2ZvcnRyYW4uaCIKICNpbmNsdWRlICJ0 cmVlLmgiCiAjaW5jbHVkZSAiZ2ltcGxlLWV4cHIuaCIKICNpbmNsdWRlICJk aWFnbm9zdGljLWNvcmUuaCIJLyogRm9yIGludGVybmFsX2Vycm9yL2ZhdGFs X2Vycm9yLiAgKi8KICNpbmNsdWRlICJmbGFncy5oIgotI2luY2x1ZGUgImdm b3J0cmFuLmgiCiAjaW5jbHVkZSAiY29uc3RydWN0b3IuaCIKICNpbmNsdWRl ICJ0cmFucy5oIgogI2luY2x1ZGUgInRyYW5zLXN0bXQuaCIKICNpbmNsdWRl ICJ0cmFucy10eXBlcy5oIgogI2luY2x1ZGUgInRyYW5zLWFycmF5LmgiCklu ZGV4OiBnY2MvZm9ydHJhbi90cmFucy1leHByLmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gZ2NjL2ZvcnRyYW4vdHJhbnMtZXhwci5jCShyZXZpc2lv biAyMTM1MTgpCisrKyBnY2MvZm9ydHJhbi90cmFucy1leHByLmMJKHdvcmtp bmcgY29weSkKQEAgLTIyLDE2ICsyMiwxNiBAQCBhbG9uZyB3aXRoIEdDQzsg c2VlIHRoZSBmaWxlIENPUFlJTkczLgogLyogdHJhbnMtZXhwci5jLS0gZ2Vu ZXJhdGUgR0VORVJJQyB0cmVlcyBmb3IgZ2ZjX2V4cHIuICAqLwogCiAjaW5j bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAic3lzdGVtLmgiCiAjaW5jbHVk ZSAiY29yZXR5cGVzLmgiCisjaW5jbHVkZSAiZ2ZvcnRyYW4uaCIKICNpbmNs dWRlICJ0cmVlLmgiCiAjaW5jbHVkZSAic3RyaW5ncG9vbC5oIgogI2luY2x1 ZGUgImRpYWdub3N0aWMtY29yZS5oIgkvKiBGb3IgZmF0YWxfZXJyb3IuICAq LwogI2luY2x1ZGUgImxhbmdob29rcy5oIgogI2luY2x1ZGUgImZsYWdzLmgi Ci0jaW5jbHVkZSAiZ2ZvcnRyYW4uaCIKICNpbmNsdWRlICJhcml0aC5oIgog I2luY2x1ZGUgImNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAidHJhbnMuaCIK ICNpbmNsdWRlICJ0cmFucy1jb25zdC5oIgogI2luY2x1ZGUgInRyYW5zLXR5 cGVzLmgiCkluZGV4OiBnY2MvZm9ydHJhbi90cmFucy1vcGVubXAuYwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvZm9ydHJhbi90cmFucy1vcGVu bXAuYwkocmV2aXNpb24gMjEzNTE4KQorKysgZ2NjL2ZvcnRyYW4vdHJhbnMt b3Blbm1wLmMJKHdvcmtpbmcgY29weSkKQEAgLTI0LDEyICsyNCwxMiBAQCBh bG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLgogI2luY2x1 ZGUgImNvcmV0eXBlcy5oIgogI2luY2x1ZGUgInRyZWUuaCIKICNpbmNsdWRl ICJnaW1wbGUtZXhwci5oIgogI2luY2x1ZGUgImdpbXBsaWZ5LmgiCS8qIEZv ciBjcmVhdGVfdG1wX3Zhcl9yYXcuICAqLwogI2luY2x1ZGUgInN0cmluZ3Bv b2wuaCIKLSNpbmNsdWRlICJkaWFnbm9zdGljLWNvcmUuaCIJLyogRm9yIGlu dGVybmFsX2Vycm9yLiAgKi8KICNpbmNsdWRlICJnZm9ydHJhbi5oIgorI2lu Y2x1ZGUgImRpYWdub3N0aWMtY29yZS5oIgkvKiBGb3IgaW50ZXJuYWxfZXJy b3IuICAqLwogI2luY2x1ZGUgInRyYW5zLmgiCiAjaW5jbHVkZSAidHJhbnMt c3RtdC5oIgogI2luY2x1ZGUgInRyYW5zLXR5cGVzLmgiCiAjaW5jbHVkZSAi dHJhbnMtYXJyYXkuaCIKICNpbmNsdWRlICJ0cmFucy1jb25zdC5oIgpJbmRl eDogZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaAo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBnY2MvZm9ydHJhbi9nZm9ydHJhbi5oCShyZXZpc2lvbiAyMTM1 MTgpCisrKyBnY2MvZm9ydHJhbi9nZm9ydHJhbi5oCSh3b3JraW5nIGNvcHkp CkBAIC0yOSwxMCArMjksMjMgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUg ZmlsZSBDT1BZSU5HMy4KIAogI2lmbmRlZiBHQ0NfQ09SRVRZUEVTX0gKICNl cnJvciAiZ2ZvcnRyYW4uaCBtdXN0IGJlIGluY2x1ZGVkIGFmdGVyIGNvcmV0 eXBlcy5oIgogI2VuZGlmCiAKKy8qIEluIG9yZGVyIGZvciB0aGUgZm9ybWF0 IGNoZWNraW5nIHRvIGFjY2VwdCB0aGUgRm9ydHJhbiBmcm9udCBlbmQKKyAg IGRpYWdub3N0aWMgZnJhbWV3b3JrIGV4dGVuc2lvbnMsIHlvdSBtdXN0IGlu Y2x1ZGUgdGhpcyBmaWxlIGJlZm9yZQorICAgZGlhZ25vc3RpYy1jb3JlLmgs IG5vdCBhZnRlci4gIFdlIG92ZXJyaWRlIHRoZSBkZWZpbml0aW9uIG9mIEdD Q19ESUFHX1NUWUxFCisgICBpbiBjLWNvbW1vbi5oLiAgKi8KKyN1bmRlZiBH Q0NfRElBR19TVFlMRQorI2RlZmluZSBHQ0NfRElBR19TVFlMRSBfX2djY19n ZmNfXworI2lmIGRlZmluZWQoR0NDX0RJQUdOT1NUSUNfQ09SRV9IKQorI2Vy cm9yIFwKK0luIG9yZGVyIGZvciB0aGUgZm9ybWF0IGNoZWNraW5nIHRvIGFj Y2VwdCB0aGUgRm9ydHJhbiBmcm9udCBlbmQgZGlhZ25vc3RpYyBcCitmcmFt ZXdvcmsgZXh0ZW5zaW9ucywgeW91IG11c3QgaW5jbHVkZSB0aGlzIGZpbGUg YmVmb3JlIGRpYWdub3N0aWMtY29yZS5oLCBcCitub3QgYWZ0ZXIuCisjZW5k aWYKKwogLyogRGVjbGFyYXRpb25zIGNvbW1vbiB0byB0aGUgZnJvbnQtZW5k IGFuZCBsaWJyYXJ5IGFyZSBwdXQgaW4KICAgIGxpYmdmb3J0cmFuL2xpYmdm b3J0cmFuX2Zyb250ZW5kLmggICovCiAjaW5jbHVkZSAibGliZ2ZvcnRyYW4u aCIKIAogCkBAIC0yNjcwLDE2ICsyNjgzLDE5IEBAIHR5cGVkZWYgc3RydWN0 IGdmY19lcnJvcl9idWYKICAgc2l6ZV90IGFsbG9jYXRlZCwgaW5kZXg7CiAg IGNoYXIgKm1lc3NhZ2U7CiB9IGdmY19lcnJvcl9idWY7CiAKIHZvaWQgZ2Zj X2Vycm9yX2luaXRfMSAodm9pZCk7Cit2b2lkIGdmY19kaWFnbm9zdGljc19p bml0KHZvaWQpOwogdm9pZCBnZmNfYnVmZmVyX2Vycm9yIChpbnQpOwogCiBj b25zdCBjaGFyICpnZmNfcHJpbnRfd2lkZV9jaGFyIChnZmNfY2hhcl90KTsK IAogdm9pZCBnZmNfd2FybmluZyAoY29uc3QgY2hhciAqLCAuLi4pIEFUVFJJ QlVURV9HQ0NfR0ZDKDEsMik7CiB2b2lkIGdmY193YXJuaW5nX25vdyAoY29u c3QgY2hhciAqLCAuLi4pIEFUVFJJQlVURV9HQ0NfR0ZDKDEsMik7Cit2b2lk IGdmY193YXJuaW5nX2NtZGxpbmUgKGNvbnN0IGNoYXIgKmdtc2dpZCwgLi4u KSBBVFRSSUJVVEVfR0NDX0dGQygxLDIpOworCiB2b2lkIGdmY19jbGVhcl93 YXJuaW5nICh2b2lkKTsKIHZvaWQgZ2ZjX3dhcm5pbmdfY2hlY2sgKHZvaWQp OwogCiB2b2lkIGdmY19lcnJvciAoY29uc3QgY2hhciAqLCAuLi4pIEFUVFJJ QlVURV9HQ0NfR0ZDKDEsMik7CiB2b2lkIGdmY19lcnJvcl9ub3cgKGNvbnN0 IGNoYXIgKiwgLi4uKSBBVFRSSUJVVEVfR0NDX0dGQygxLDIpOwpJbmRleDog Z2NjL2ZvcnRyYW4vZXJyb3IuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBnY2MvZm9ydHJhbi9lcnJvci5jCShyZXZpc2lvbiAyMTM1MTgpCisrKyBn Y2MvZm9ydHJhbi9lcnJvci5jCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCAr MzYsMTIgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5H My4KIAogI2lmZGVmIEdXSU5TWl9JTl9TWVNfSU9DVEwKICMgaW5jbHVkZSA8 c3lzL2lvY3RsLmg+CiAjZW5kaWYKIAorI2luY2x1ZGUgImRpYWdub3N0aWMu aCIKKyNpbmNsdWRlICJkaWFnbm9zdGljLWNvbG9yLmgiCiAKIHN0YXRpYyBp bnQgc3VwcHJlc3NfZXJyb3JzID0gMDsKIAogc3RhdGljIGludCB3YXJuaW5n c19ub3RfZXJyb3JzID0gMDsgCiAKQEAgLTk1NCwxMCArOTU2LDg3IEBAIGdm Y193YXJuaW5nX25vdyAoY29uc3QgY2hhciAqZ21zZ2lkLCAuLi4KICAgICBn ZmNfaW5jcmVtZW50X2Vycm9yX2NvdW50KCk7CiAKICAgYnVmZmVyX2ZsYWcg PSBpOwogfQogCisvKiBSZXR1cm4gYSBtYWxsb2MnZCBzdHJpbmcgZGVzY3Jp YmluZyBhIGxvY2F0aW9uLiAgVGhlIGNhbGxlciBpcworICAgcmVzcG9uc2li bGUgZm9yIGZyZWVpbmcgdGhlIG1lbW9yeS4gICovCitzdGF0aWMgY2hhciAq CitnZmNfZGlhZ25vc3RpY19idWlsZF9wcmVmaXggKGRpYWdub3N0aWNfY29u dGV4dCAqY29udGV4dCwKKwkJCSAgICAgY29uc3QgZGlhZ25vc3RpY19pbmZv ICpkaWFnbm9zdGljKQoreworICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qg ZGlhZ25vc3RpY19raW5kX3RleHRbXSA9IHsKKyNkZWZpbmUgREVGSU5FX0RJ QUdOT1NUSUNfS0lORChLLCBULCBDKSAoVCksCisjaW5jbHVkZSAiZ2ZjLWRp YWdub3N0aWMuZGVmIgorI3VuZGVmIERFRklORV9ESUFHTk9TVElDX0tJTkQK KyAgICAibXVzdC1ub3QtaGFwcGVuIgorICB9OworICBzdGF0aWMgY29uc3Qg Y2hhciAqY29uc3QgZGlhZ25vc3RpY19raW5kX2NvbG9yW10gPSB7CisjZGVm aW5lIERFRklORV9ESUFHTk9TVElDX0tJTkQoSywgVCwgQykgKEMpLAorI2lu Y2x1ZGUgImdmYy1kaWFnbm9zdGljLmRlZiIKKyN1bmRlZiBERUZJTkVfRElB R05PU1RJQ19LSU5ECisgICAgTlVMTAorICB9OworICBnY2NfYXNzZXJ0IChk aWFnbm9zdGljLT5raW5kIDwgREtfTEFTVF9ESUFHTk9TVElDX0tJTkQpOwor ICBjb25zdCBjaGFyICp0ZXh0ID0gXyhkaWFnbm9zdGljX2tpbmRfdGV4dFtk aWFnbm9zdGljLT5raW5kXSk7CisgIGNvbnN0IGNoYXIgKnRleHRfY3MgPSAi IiwgKnRleHRfY2UgPSAiIjsKKyAgcHJldHR5X3ByaW50ZXIgKnBwID0gY29u dGV4dC0+cHJpbnRlcjsKKworICBpZiAoZGlhZ25vc3RpY19raW5kX2NvbG9y W2RpYWdub3N0aWMtPmtpbmRdKQorICAgIHsKKyAgICAgIHRleHRfY3MgPSBj b2xvcml6ZV9zdGFydCAocHBfc2hvd19jb2xvciAocHApLAorCQkJCWRpYWdu b3N0aWNfa2luZF9jb2xvcltkaWFnbm9zdGljLT5raW5kXSk7CisgICAgICB0 ZXh0X2NlID0gY29sb3JpemVfc3RvcCAocHBfc2hvd19jb2xvciAocHApKTsK KyAgICB9CisgIGNvbnN0IGNoYXIgKmxvY3VzX2NzID0gY29sb3JpemVfc3Rh cnQgKHBwX3Nob3dfY29sb3IgKHBwKSwgImxvY3VzIik7CisgIGNvbnN0IGNo YXIgKmxvY3VzX2NlID0gY29sb3JpemVfc3RvcCAocHBfc2hvd19jb2xvciAo cHApKTsKKworICBleHBhbmRlZF9sb2NhdGlvbiBzID0gZXhwYW5kX2xvY2F0 aW9uX3RvX3NwZWxsaW5nX3BvaW50IChkaWFnbm9zdGljLT5sb2NhdGlvbik7 CisgIGlmIChkaWFnbm9zdGljLT5vdmVycmlkZV9jb2x1bW4pCisgICAgcy5j b2x1bW4gPSBkaWFnbm9zdGljLT5vdmVycmlkZV9jb2x1bW47CisKKyAgcmV0 dXJuIChzLmZpbGUgPT0gTlVMTAorCSAgPyBidWlsZF9tZXNzYWdlX3N0cmlu ZyAoIiVzJXM6JXMgJXMlcyVzOiAiLCBsb2N1c19jcywgcHJvZ25hbWUsIGxv Y3VzX2NlLAorCQkJCSAgdGV4dF9jcywgdGV4dCwgdGV4dF9jZSkKKwkgIDog IXN0cmNtcCAocy5maWxlLCBOXygiPGJ1aWx0LWluPiIpKQorCSAgPyBidWls ZF9tZXNzYWdlX3N0cmluZyAoIiVzJXM6JXMgJXMlcyVzOiAiLCBsb2N1c19j cywgcy5maWxlLCBsb2N1c19jZSwKKwkJCSAgICAgdGV4dF9jcywgdGV4dCwg dGV4dF9jZSkKKwkgIDogY29udGV4dC0+c2hvd19jb2x1bW4KKwkgID8gYnVp bGRfbWVzc2FnZV9zdHJpbmcgKCIlcyVzOiVkOiVkOiVzICVzJXMlczogIiwg bG9jdXNfY3MsIHMuZmlsZSwgcy5saW5lLAorCQkJCSAgcy5jb2x1bW4sIGxv Y3VzX2NlLCB0ZXh0X2NzLCB0ZXh0LCB0ZXh0X2NlKQorCSAgOiBidWlsZF9t ZXNzYWdlX3N0cmluZyAoIiVzJXM6JWQ6JXMgJXMlcyVzOiAiLCBsb2N1c19j cywgcy5maWxlLCBzLmxpbmUsIGxvY3VzX2NlLAorCQkJCSAgdGV4dF9jcywg dGV4dCwgdGV4dF9jZSkpOworfQorCitzdGF0aWMgdm9pZAorZ2ZjX2RpYWdu b3N0aWNfc3RhcnRlciAoZGlhZ25vc3RpY19jb250ZXh0ICpjb250ZXh0LAor CQkJZGlhZ25vc3RpY19pbmZvICpkaWFnbm9zdGljKQoreworICBwcF9zZXRf cHJlZml4IChjb250ZXh0LT5wcmludGVyLCBnZmNfZGlhZ25vc3RpY19idWls ZF9wcmVmaXggKGNvbnRleHQsCisJCQkJCQkJCWRpYWdub3N0aWMpKTsKK30K Kworc3RhdGljIHZvaWQKK2dmY19kaWFnbm9zdGljX2ZpbmFsaXplciAoZGlh Z25vc3RpY19jb250ZXh0ICpjb250ZXh0IEFUVFJJQlVURV9VTlVTRUQsCisJ CQkgIGRpYWdub3N0aWNfaW5mbyAqZGlhZ25vc3RpYyBBVFRSSUJVVEVfVU5V U0VEKQoreworfQorCisvKiBHaXZlIGEgd2FybmluZyBhYm91dCB0aGUgY29t bWFuZC1saW5lLiAgKi8KKwordm9pZAorZ2ZjX3dhcm5pbmdfY21kbGluZSAo Y29uc3QgY2hhciAqZ21zZ2lkLCAuLi4pCit7CisgIHZhX2xpc3QgYXJncDsK KyAgZGlhZ25vc3RpY19pbmZvIGRpYWdub3N0aWM7CisKKyAgdmFfc3RhcnQg KGFyZ3AsIGdtc2dpZCk7CisgIGRpYWdub3N0aWNfc2V0X2luZm8gKCZkaWFn bm9zdGljLCBnbXNnaWQsICZhcmdwLCBVTktOT1dOX0xPQ0FUSU9OLAorCQkg ICAgICAgREtfV0FSTklORyk7CisgIHJlcG9ydF9kaWFnbm9zdGljICgmZGlh Z25vc3RpYyk7CisgIHZhX2VuZCAoYXJncCk7Cit9CiAKIC8qIENsZWFyIHRo ZSB3YXJuaW5nIGZsYWcuICAqLwogCiB2b2lkCiBnZmNfY2xlYXJfd2Fybmlu ZyAodm9pZCkKQEAgLTEyMDMsNSArMTI4MiwxMiBAQCBnZmNfZ2V0X2Vycm9y cyAoaW50ICp3LCBpbnQgKmUpCiB2b2lkCiBnZmNfZXJyb3JzX3RvX3dhcm5p bmdzIChpbnQgZikKIHsKICAgd2FybmluZ3Nfbm90X2Vycm9ycyA9IChmID09 IDEpID8gMSA6IDA7CiB9CisKK3ZvaWQKK2dmY19kaWFnbm9zdGljc19pbml0 ICh2b2lkKQoreworICBkaWFnbm9zdGljX3N0YXJ0ZXIgKGdsb2JhbF9kYykg PSBnZmNfZGlhZ25vc3RpY19zdGFydGVyOworICBkaWFnbm9zdGljX2ZpbmFs aXplciAoZ2xvYmFsX2RjKSA9IGdmY19kaWFnbm9zdGljX2ZpbmFsaXplcjsK K30KSW5kZXg6IGdjYy9mb3J0cmFuL2dmYy1kaWFnbm9zdGljLmRlZgo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvZm9ydHJhbi9nZmMtZGlhZ25v c3RpYy5kZWYJKHJldmlzaW9uIDApCisrKyBnY2MvZm9ydHJhbi9nZmMtZGlh Z25vc3RpYy5kZWYJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTQgQEAKKy8q IENvcHlyaWdodCAoQykgMjAwMS0yMDE0IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiBHQ0MuCisKK0dD QyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5IGl0IHVuZGVyCit0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZQorU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3Ig KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIKK3ZlcnNpb24uCisKK0dDQyBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLCBidXQgV0lUSE9VVCBBTlkKK1dBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCitG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKK2ZvciBtb3JlIGRldGFpbHMuCisK K1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCithbG9uZyB3aXRoIEdDQzsgc2VlIHRo ZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworLyogREtfVU5TUEVDSUZJRUQgbXVz dCBiZSBmaXJzdCBzbyBpdCBoYXMgYSB2YWx1ZSBvZiB6ZXJvLiAgV2UgbmV2 ZXIKKyAgIGFzc2lnbiB0aGlzIGtpbmQgdG8gYW4gYWN0dWFsIGRpYWdub3N0 aWMsIHdlIG9ubHkgdXNlIHRoaXMgaW4KKyAgIHZhcmlhYmxlcyB0aGF0IGNh biBob2xkIGEga2luZCwgdG8gbWVhbiB0aGV5IGhhdmUgeWV0IHRvIGhhdmUg YQorICAga2luZCBzcGVjaWZpZWQuICBJLmUuIHRoZXkncmUgdW5pbml0aWFs aXplZC4gIFdpdGhpbiB0aGUgZGlhZ25vc3RpYworICAgbWFjaGluZXJ5LCB0 aGlzIGtpbmQgYWxzbyBtZWFucyAiZG9uJ3QgY2hhbmdlIHRoZSBleGlzdGlu ZyBraW5kIiwKKyAgIG1lYW5pbmcgIm5vIGNoYW5nZSBpcyBzcGVjaWZpZWQi LiAgKi8KK0RFRklORV9ESUFHTk9TVElDX0tJTkQgKERLX1VOU1BFQ0lGSUVE LCAiIiwgTlVMTCkKKworLyogSWYgYSBkaWFnbm9zdGljIGlzIHNldCB0byBE S19JR05PUkVELCBpdCB3b24ndCBnZXQgcmVwb3J0ZWQgYXQgYWxsLgorICAg VGhpcyBpcyB1c2VkIGJ5IHRoZSBkaWFnbm9zdGljIG1hY2hpbmVyeSB3aGVu IGl0IHdhbnRzIHRvIGRpc2FibGUgYQorICAgZGlhZ25vc3RpYyB3aXRob3V0 IGRpc2FibGluZyB0aGUgb3B0aW9uIHdoaWNoIGNhdXNlcyBpdC4gICovCitE RUZJTkVfRElBR05PU1RJQ19LSU5EIChES19JR05PUkVELCAiIiwgTlVMTCkK KworLyogVGhlIHJlbWFpbmRlciBhcmUgcmVhbCBkaWFnbm9zdGljIHR5cGVz LiAgKi8KK0RFRklORV9ESUFHTk9TVElDX0tJTkQgKERLX0ZBVEFMLCAiZmF0 YWwgZXJyb3IiLCAiZXJyb3IiKQorREVGSU5FX0RJQUdOT1NUSUNfS0lORCAo REtfSUNFLCAiaW50ZXJuYWwgY29tcGlsZXIgZXJyb3IiLCAiZXJyb3IiKQor REVGSU5FX0RJQUdOT1NUSUNfS0lORCAoREtfRVJST1IsICJFcnJvciIsICJl cnJvciIpCitERUZJTkVfRElBR05PU1RJQ19LSU5EIChES19TT1JSWSwgInNv cnJ5LCB1bmltcGxlbWVudGVkIiwgImVycm9yIikKK0RFRklORV9ESUFHTk9T VElDX0tJTkQgKERLX1dBUk5JTkcsICJXYXJuaW5nIiwgIndhcm5pbmciKQor REVGSU5FX0RJQUdOT1NUSUNfS0lORCAoREtfQU5BQ0hST05JU00sICJhbmFj aHJvbmlzbSIsICJ3YXJuaW5nIikKK0RFRklORV9ESUFHTk9TVElDX0tJTkQg KERLX05PVEUsICJub3RlIiwgIm5vdGUiKQorREVGSU5FX0RJQUdOT1NUSUNf S0lORCAoREtfREVCVUcsICJkZWJ1ZyIsICJub3RlIikKKy8qIFRoZXNlIHR3 byB3b3VsZCBiZSByZS1jbGFzc2lmaWVkIGFzIERLX1dBUk5JTkcgb3IgREtf RVJST1IsIHNvIHRoZQorcHJlZml4IGRvZXMgbm90IG1hdHRlci4gICovCitE RUZJTkVfRElBR05PU1RJQ19LSU5EIChES19QRURXQVJOLCAicGVkd2FybiIs IE5VTEwpCitERUZJTkVfRElBR05PU1RJQ19LSU5EIChES19QRVJNRVJST1Is ICJwZXJtZXJyb3IiLCBOVUxMKQorLyogVGhpcyBvbmUgaXMganVzdCBmb3Ig Y291bnRpbmcgREtfV0FSTklORyBwcm9tb3RlZCB0byBES19FUlJPUgorICAg ZHVlIHRvIC1XZXJyb3IgYW5kIC1XZXJyb3I9d2FybmluZy4gICovCitERUZJ TkVfRElBR05PU1RJQ19LSU5EIChES19XRVJST1IsICJlcnJvciIsIE5VTEwp CisvKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0NDLgor CitHQ0MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgordGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUKK1NvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMs IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyCit2ZXJzaW9uLgorCitH Q0MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZCitXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBv cgorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCitmb3IgbW9yZSBkZXRhaWxz LgorCitZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorYWxvbmcgd2l0aCBHQ0M7IHNl ZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKzxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKy8qIERLX1VOU1BFQ0lGSUVE IG11c3QgYmUgZmlyc3Qgc28gaXQgaGFzIGEgdmFsdWUgb2YgemVyby4gIFdl IG5ldmVyCisgICBhc3NpZ24gdGhpcyBraW5kIHRvIGFuIGFjdHVhbCBkaWFn bm9zdGljLCB3ZSBvbmx5IHVzZSB0aGlzIGluCisgICB2YXJpYWJsZXMgdGhh dCBjYW4gaG9sZCBhIGtpbmQsIHRvIG1lYW4gdGhleSBoYXZlIHlldCB0byBo YXZlIGEKKyAgIGtpbmQgc3BlY2lmaWVkLiAgSS5lLiB0aGV5J3JlIHVuaW5p dGlhbGl6ZWQuICBXaXRoaW4gdGhlIGRpYWdub3N0aWMKKyAgIG1hY2hpbmVy eSwgdGhpcyBraW5kIGFsc28gbWVhbnMgImRvbid0IGNoYW5nZSB0aGUgZXhp c3Rpbmcga2luZCIsCisgICBtZWFuaW5nICJubyBjaGFuZ2UgaXMgc3BlY2lm aWVkIi4gICovCitERUZJTkVfRElBR05PU1RJQ19LSU5EIChES19VTlNQRUNJ RklFRCwgIiIsIE5VTEwpCisKKy8qIElmIGEgZGlhZ25vc3RpYyBpcyBzZXQg dG8gREtfSUdOT1JFRCwgaXQgd29uJ3QgZ2V0IHJlcG9ydGVkIGF0IGFsbC4K KyAgIFRoaXMgaXMgdXNlZCBieSB0aGUgZGlhZ25vc3RpYyBtYWNoaW5lcnkg d2hlbiBpdCB3YW50cyB0byBkaXNhYmxlIGEKKyAgIGRpYWdub3N0aWMgd2l0 aG91dCBkaXNhYmxpbmcgdGhlIG9wdGlvbiB3aGljaCBjYXVzZXMgaXQuICAq LworREVGSU5FX0RJQUdOT1NUSUNfS0lORCAoREtfSUdOT1JFRCwgIiIsIE5V TEwpCisKKy8qIFRoZSByZW1haW5kZXIgYXJlIHJlYWwgZGlhZ25vc3RpYyB0 eXBlcy4gICovCitERUZJTkVfRElBR05PU1RJQ19LSU5EIChES19GQVRBTCwg ImZhdGFsIGVycm9yIiwgImVycm9yIikKK0RFRklORV9ESUFHTk9TVElDX0tJ TkQgKERLX0lDRSwgImludGVybmFsIGNvbXBpbGVyIGVycm9yIiwgImVycm9y IikKK0RFRklORV9ESUFHTk9TVElDX0tJTkQgKERLX0VSUk9SLCAiRXJyb3Ii LCAiZXJyb3IiKQorREVGSU5FX0RJQUdOT1NUSUNfS0lORCAoREtfU09SUlks ICJzb3JyeSwgdW5pbXBsZW1lbnRlZCIsICJlcnJvciIpCitERUZJTkVfRElB R05PU1RJQ19LSU5EIChES19XQVJOSU5HLCAiV2FybmluZyIsICJ3YXJuaW5n IikKK0RFRklORV9ESUFHTk9TVElDX0tJTkQgKERLX0FOQUNIUk9OSVNNLCAi YW5hY2hyb25pc20iLCAid2FybmluZyIpCitERUZJTkVfRElBR05PU1RJQ19L SU5EIChES19OT1RFLCAibm90ZSIsICJub3RlIikKK0RFRklORV9ESUFHTk9T VElDX0tJTkQgKERLX0RFQlVHLCAiZGVidWciLCAibm90ZSIpCisvKiBUaGVz ZSB0d28gd291bGQgYmUgcmUtY2xhc3NpZmllZCBhcyBES19XQVJOSU5HIG9y IERLX0VSUk9SLCBzbyB0aGUKK3ByZWZpeCBkb2VzIG5vdCBtYXR0ZXIuICAq LworREVGSU5FX0RJQUdOT1NUSUNfS0lORCAoREtfUEVEV0FSTiwgInBlZHdh cm4iLCBOVUxMKQorREVGSU5FX0RJQUdOT1NUSUNfS0lORCAoREtfUEVSTUVS Uk9SLCAicGVybWVycm9yIiwgTlVMTCkKKy8qIFRoaXMgb25lIGlzIGp1c3Qg Zm9yIGNvdW50aW5nIERLX1dBUk5JTkcgcHJvbW90ZWQgdG8gREtfRVJST1IK KyAgIGR1ZSB0byAtV2Vycm9yIGFuZCAtV2Vycm9yPXdhcm5pbmcuICAqLwor REVGSU5FX0RJQUdOT1NUSUNfS0lORCAoREtfV0VSUk9SLCAiZXJyb3IiLCBO VUxMKQpJbmRleDogZ2NjL2ZvcnRyYW4vdHJhbnMtY29uc3QuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBnY2MvZm9ydHJhbi90cmFucy1jb25zdC5j CShyZXZpc2lvbiAyMTM1MTgpCisrKyBnY2MvZm9ydHJhbi90cmFucy1jb25z dC5jCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxNiArMjEsMTYgQEAgYWxvbmcg d2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4KIC8qIHRyYW5zLWNv bnN0LmMgLS0gY29udmVydCBjb25zdGFudCB2YWx1ZXMgKi8KIAogI2luY2x1 ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgInN5c3RlbS5oIgogI2luY2x1ZGUg ImNvcmV0eXBlcy5oIgorI2luY2x1ZGUgImdmb3J0cmFuLmgiCiAjaW5jbHVk ZSAidHJlZS5oIgogI2luY2x1ZGUgInN0b3ItbGF5b3V0LmgiCiAjaW5jbHVk ZSAicmVhbG1wZnIuaCIKICNpbmNsdWRlICJkaWFnbm9zdGljLWNvcmUuaCIJ LyogRm9yIGZhdGFsX2Vycm9yLiAgKi8KICNpbmNsdWRlICJkb3VibGUtaW50 LmgiCi0jaW5jbHVkZSAiZ2ZvcnRyYW4uaCIKICNpbmNsdWRlICJ0cmFucy5o IgogI2luY2x1ZGUgInRyYW5zLWNvbnN0LmgiCiAjaW5jbHVkZSAidHJhbnMt dHlwZXMuaCIKICNpbmNsdWRlICJ0YXJnZXQtbWVtb3J5LmgiCiAjaW5jbHVk ZSAid2lkZS1pbnQuaCIKSW5kZXg6IGdjYy9mb3J0cmFuL3RyYW5zLmMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gZ2NjL2ZvcnRyYW4vdHJhbnMuYwko cmV2aXNpb24gMjEzNTE4KQorKysgZ2NjL2ZvcnRyYW4vdHJhbnMuYwkod29y a2luZyBjb3B5KQpAQCAtMTksMTcgKzE5LDE3IEBAIGFsb25nIHdpdGggR0ND OyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuCiA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j bHVkZSAic3lzdGVtLmgiCiAjaW5jbHVkZSAiY29yZXR5cGVzLmgiCisjaW5j bHVkZSAiZ2ZvcnRyYW4uaCIKICNpbmNsdWRlICJ0cmVlLmgiCiAjaW5jbHVk ZSAiZ2ltcGxlLWV4cHIuaCIJLyogRm9yIGNyZWF0ZV90bXBfdmFyX3Jhdy4g ICovCiAjaW5jbHVkZSAic3RyaW5ncG9vbC5oIgogI2luY2x1ZGUgInRyZWUt aXRlcmF0b3IuaCIKICNpbmNsdWRlICJkaWFnbm9zdGljLWNvcmUuaCIgIC8q IEZvciBpbnRlcm5hbF9lcnJvci4gICovCiAjaW5jbHVkZSAiZmxhZ3MuaCIK LSNpbmNsdWRlICJnZm9ydHJhbi5oIgogI2luY2x1ZGUgInRyYW5zLmgiCiAj aW5jbHVkZSAidHJhbnMtc3RtdC5oIgogI2luY2x1ZGUgInRyYW5zLWFycmF5 LmgiCiAjaW5jbHVkZSAidHJhbnMtdHlwZXMuaCIKICNpbmNsdWRlICJ0cmFu cy1jb25zdC5oIgpJbmRleDogZ2NjL2ZvcnRyYW4vdHJhbnMtdHlwZXMuYwo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLSBnY2MvZm9ydHJhbi90cmFucy10 eXBlcy5jCShyZXZpc2lvbiAyMTM1MTgpCisrKyBnY2MvZm9ydHJhbi90cmFu cy10eXBlcy5jCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMyArMzcsMTMgQEAg YWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4KICNpbmNs dWRlICJzdG9yLWxheW91dC5oIgogI2luY2x1ZGUgInN0cmluZ3Bvb2wuaCIK ICNpbmNsdWRlICJsYW5naG9va3MuaCIJLyogRm9yIGlzby1jLWJpbmRpbmdz LmRlZi4gICovCiAjaW5jbHVkZSAidGFyZ2V0LmgiCiAjaW5jbHVkZSAiZ2dj LmgiCisjaW5jbHVkZSAiZ2ZvcnRyYW4uaCIKICNpbmNsdWRlICJkaWFnbm9z dGljLWNvcmUuaCIgIC8qIEZvciBmYXRhbF9lcnJvci4gICovCiAjaW5jbHVk ZSAidG9wbGV2LmgiCS8qIEZvciByZXN0X29mX2RlY2xfY29tcGlsYXRpb24u ICAqLwotI2luY2x1ZGUgImdmb3J0cmFuLmgiCiAjaW5jbHVkZSAidHJhbnMu aCIKICNpbmNsdWRlICJ0cmFucy10eXBlcy5oIgogI2luY2x1ZGUgInRyYW5z LWNvbnN0LmgiCiAjaW5jbHVkZSAiZmxhZ3MuaCIKICNpbmNsdWRlICJkd2Fy ZjJvdXQuaCIJLyogRm9yIHN0cnVjdCBhcnJheV9kZXNjcl9pbmZvLiAgKi8K SW5kZXg6IGdjYy9mb3J0cmFuL2Y5NS1sYW5nLmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gZ2NjL2ZvcnRyYW4vZjk1LWxhbmcuYwkocmV2aXNpb24g MjEzNTE4KQorKysgZ2NjL2ZvcnRyYW4vZjk1LWxhbmcuYwkod29ya2luZyBj b3B5KQpAQCAtMjUsMTAgKzI1LDExIEBAIGFsb25nIHdpdGggR0NDOyBzZWUg dGhlIGZpbGUgQ09QWUlORzMuCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j bHVkZSAic3lzdGVtLmgiCiAjaW5jbHVkZSAiYW5zaWRlY2wuaCIKICNpbmNs dWRlICJzeXN0ZW0uaCIKICNpbmNsdWRlICJjb3JldHlwZXMuaCIKKyNpbmNs dWRlICJnZm9ydHJhbi5oIgogI2luY2x1ZGUgInRyZWUuaCIKICNpbmNsdWRl ICJmbGFncy5oIgogI2luY2x1ZGUgImxhbmdob29rcy5oIgogI2luY2x1ZGUg Imxhbmdob29rcy1kZWYuaCIKICNpbmNsdWRlICJ0aW1ldmFyLmgiCkBAIC0z NiwxNCArMzcsMTMgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBD T1BZSU5HMy4KICNpbmNsdWRlICJmdW5jdGlvbi5oIgogI2luY2x1ZGUgImdn Yy5oIgogI2luY2x1ZGUgInRvcGxldi5oIgogI2luY2x1ZGUgInRhcmdldC5o IgogI2luY2x1ZGUgImRlYnVnLmgiCi0jaW5jbHVkZSAiZGlhZ25vc3RpYy5o IgorI2luY2x1ZGUgImRpYWdub3N0aWMuaCIgLyogRm9yIGVycm9yY291bnQv d2FybmluZ2NvdW50ICovCiAjaW5jbHVkZSAiZHVtcGZpbGUuaCIKICNpbmNs dWRlICJjZ3JhcGguaCIKLSNpbmNsdWRlICJnZm9ydHJhbi5oIgogI2luY2x1 ZGUgImNwcC5oIgogI2luY2x1ZGUgInRyYW5zLmgiCiAjaW5jbHVkZSAidHJh bnMtdHlwZXMuaCIKICNpbmNsdWRlICJ0cmFucy1jb25zdC5oIgogCkluZGV4 OiBnY2MvZm9ydHJhbi90cmFucy1kZWNsLmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gZ2NjL2ZvcnRyYW4vdHJhbnMtZGVjbC5jCShyZXZpc2lvbiAy MTM1MTgpCisrKyBnY2MvZm9ydHJhbi90cmFucy1kZWNsLmMJKHdvcmtpbmcg Y29weSkKQEAgLTIyLDEwICsyMiwxMSBAQCBhbG9uZyB3aXRoIEdDQzsgc2Vl IHRoZSBmaWxlIENPUFlJTkczLgogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj aW5jbHVkZSAic3lzdGVtLmgiCiAjaW5jbHVkZSAiY29yZXR5cGVzLmgiCiAj aW5jbHVkZSAidG0uaCIKKyNpbmNsdWRlICJnZm9ydHJhbi5oIgogI2luY2x1 ZGUgInRyZWUuaCIKICNpbmNsdWRlICJzdHJpbmdwb29sLmgiCiAjaW5jbHVk ZSAic3Rvci1sYXlvdXQuaCIKICNpbmNsdWRlICJ2YXJhc20uaCIKICNpbmNs dWRlICJhdHRyaWJzLmgiCkBAIC0zNywxMSArMzgsMTAgQEAgYWxvbmcgd2l0 aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4KICNpbmNsdWRlICJ0YXJn ZXQuaCIKICNpbmNsdWRlICJmdW5jdGlvbi5oIgogI2luY2x1ZGUgImZsYWdz LmgiCiAjaW5jbHVkZSAiY2dyYXBoLmgiCiAjaW5jbHVkZSAiZGVidWcuaCIK LSNpbmNsdWRlICJnZm9ydHJhbi5oIgogI2luY2x1ZGUgImhhc2gtc2V0Lmgi CiAjaW5jbHVkZSAiY29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJ0cmFucy5o IgogI2luY2x1ZGUgInRyYW5zLXR5cGVzLmgiCiAjaW5jbHVkZSAidHJhbnMt YXJyYXkuaCIKSW5kZXg6IGdjYy9mb3J0cmFuL3RyYW5zLWlvLmMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gZ2NjL2ZvcnRyYW4vdHJhbnMtaW8uYwko cmV2aXNpb24gMjEzNTE4KQorKysgZ2NjL2ZvcnRyYW4vdHJhbnMtaW8uYwko d29ya2luZyBjb3B5KQpAQCAtMjQsMTIgKzI0LDEyIEBAIGFsb25nIHdpdGgg R0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuCiAjaW5jbHVkZSAiY29yZXR5 cGVzLmgiCiAjaW5jbHVkZSAidHJlZS5oIgogI2luY2x1ZGUgInN0cmluZ3Bv b2wuaCIKICNpbmNsdWRlICJzdG9yLWxheW91dC5oIgogI2luY2x1ZGUgImdn Yy5oIgotI2luY2x1ZGUgImRpYWdub3N0aWMtY29yZS5oIgkvKiBGb3IgaW50 ZXJuYWxfZXJyb3IuICAqLwogI2luY2x1ZGUgImdmb3J0cmFuLmgiCisjaW5j bHVkZSAiZGlhZ25vc3RpYy1jb3JlLmgiCS8qIEZvciBpbnRlcm5hbF9lcnJv ci4gICovCiAjaW5jbHVkZSAidHJhbnMuaCIKICNpbmNsdWRlICJ0cmFucy1z dG10LmgiCiAjaW5jbHVkZSAidHJhbnMtYXJyYXkuaCIKICNpbmNsdWRlICJ0 cmFucy10eXBlcy5oIgogI2luY2x1ZGUgInRyYW5zLWNvbnN0LmgiCkluZGV4 OiBnY2MvZm9ydHJhbi90cmFucy1pbnRyaW5zaWMuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBnY2MvZm9ydHJhbi90cmFucy1pbnRyaW5zaWMuYwko cmV2aXNpb24gMjEzNTE4KQorKysgZ2NjL2ZvcnRyYW4vdHJhbnMtaW50cmlu c2ljLmMJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE0ICsyOCwxNCBAQCBhbG9u ZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLgogI2luY2x1ZGUg InRyZWUuaCIKICNpbmNsdWRlICJzdHJpbmdwb29sLmgiCiAjaW5jbHVkZSAi dHJlZS1uZXN0ZWQuaCIKICNpbmNsdWRlICJzdG9yLWxheW91dC5oIgogI2lu Y2x1ZGUgImdnYy5oIgorI2luY2x1ZGUgImdmb3J0cmFuLmgiCiAjaW5jbHVk ZSAiZGlhZ25vc3RpYy1jb3JlLmgiCS8qIEZvciBpbnRlcm5hbF9lcnJvci4g ICovCiAjaW5jbHVkZSAidG9wbGV2LmgiCS8qIEZvciByZXN0X29mX2RlY2xf Y29tcGlsYXRpb24uICAqLwogI2luY2x1ZGUgImZsYWdzLmgiCi0jaW5jbHVk ZSAiZ2ZvcnRyYW4uaCIKICNpbmNsdWRlICJhcml0aC5oIgogI2luY2x1ZGUg ImludHJpbnNpYy5oIgogI2luY2x1ZGUgInRyYW5zLmgiCiAjaW5jbHVkZSAi dHJhbnMtY29uc3QuaCIKICNpbmNsdWRlICJ0cmFucy10eXBlcy5oIgpJbmRl eDogZ2NjL2ZvcnRyYW4vb3B0aW9ucy5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGdjYy9mb3J0cmFuL29wdGlvbnMuYwkocmV2aXNpb24gMjEzNTE4 KQorKysgZ2NjL2ZvcnRyYW4vb3B0aW9ucy5jCSh3b3JraW5nIGNvcHkpCkBA IC0xNzEsMTAgKzE3MSwxMSBAQCBnZmNfaW5pdF9vcHRpb25zICh1bnNpZ25l ZCBpbnQgZGVjb2RlZF9vCiAKICAgc2V0X2RlZmF1bHRfc3RkX2ZsYWdzICgp OwogCiAgIC8qIEluaXRpYWxpemUgY3BwLXJlbGF0ZWQgb3B0aW9ucy4gICov CiAgIGdmY19jcHBfaW5pdF9vcHRpb25zIChkZWNvZGVkX29wdGlvbnNfY291 bnQsIGRlY29kZWRfb3B0aW9ucyk7CisgIGdmY19kaWFnbm9zdGljc19pbml0 ICgpOwogfQogCiAKIC8qIERldGVybWluZSB0aGUgc291cmNlIGZvcm0gZnJv bSB0aGUgZmlsZW5hbWUgZXh0ZW5zaW9uLiAgV2UgYXNzdW1lCiAgICBjYXNl IGluc2Vuc2l0aXZpdHkuICAqLwpAQCAtMzUwLDI0ICszNTEsMjQgQEAgZ2Zj X3Bvc3Rfb3B0aW9ucyAoY29uc3QgY2hhciAqKnBmaWxlbmFtZQogICAgICAg Z2ZjX2N1cnJlbnRfZm9ybSA9IGZvcm1fZnJvbV9maWxlbmFtZSAoZmlsZW5h bWUpOwogCiAgICAgICBpZiAoZ2ZjX2N1cnJlbnRfZm9ybSA9PSBGT1JNX1VO S05PV04pCiAJewogCSAgZ2ZjX2N1cnJlbnRfZm9ybSA9IEZPUk1fRlJFRTsK LQkgIGdmY193YXJuaW5nX25vdyAoIlJlYWRpbmcgZmlsZSAnJXMnIGFzIGZy ZWUgZm9ybSIsIAotCQkJICAgKGZpbGVuYW1lWzBdID09ICdcMCcpID8gIjxz dGRpbj4iIDogZmlsZW5hbWUpOworCSAgZ2ZjX3dhcm5pbmdfY21kbGluZSAo IlJlYWRpbmcgZmlsZSAlcXMgYXMgZnJlZSBmb3JtIiwgCisJCQkgICAgICAg KGZpbGVuYW1lWzBdID09ICdcMCcpID8gIjxzdGRpbj4iIDogZmlsZW5hbWUp OwogCX0KICAgICB9CiAKICAgLyogSWYgdGhlIHVzZXIgc3BlY2lmaWVkIC1m ZC1saW5lcy1hcy17Y29kZXxjb21tZW50c30gdmVyaWZ5IHRoYXQgd2UncmUK ICAgICAgaW4gZml4ZWQgZm9ybS4gICovCiAgIGlmIChnZmNfY3VycmVudF9m b3JtID09IEZPUk1fRlJFRSkKICAgICB7CiAgICAgICBpZiAoZ2ZjX29wdGlv bi5mbGFnX2RfbGluZXMgPT0gMCkKLQlnZmNfd2FybmluZ19ub3cgKCInLWZk LWxpbmVzLWFzLWNvbW1lbnRzJyBoYXMgbm8gZWZmZWN0ICIKLQkJCSAiaW4g ZnJlZSBmb3JtIik7CisJZ2ZjX3dhcm5pbmdfY21kbGluZSAoIiU8LWZkLWxp bmVzLWFzLWNvbW1lbnRzJT4gaGFzIG5vIGVmZmVjdCAiCisJCQkgICAgICJp biBmcmVlIGZvcm0iKTsKICAgICAgIGVsc2UgaWYgKGdmY19vcHRpb24uZmxh Z19kX2xpbmVzID09IDEpCi0JZ2ZjX3dhcm5pbmdfbm93ICgiJy1mZC1saW5l cy1hcy1jb2RlJyBoYXMgbm8gZWZmZWN0IGluIGZyZWUgZm9ybSIpOworCWdm Y193YXJuaW5nX2NtZGxpbmUgKCIlPC1mZC1saW5lcy1hcy1jb2RlJT4gaGFz IG5vIGVmZmVjdCBpbiBmcmVlIGZvcm0iKTsKICAgICB9CiAKICAgLyogSWYg LXBlZGFudGljLCB3YXJuIGFib3V0IHRoZSB1c2Ugb2YgR05VIGV4dGVuc2lv bnMuICAqLwogICBpZiAocGVkYW50aWMgJiYgKGdmY19vcHRpb24uYWxsb3df c3RkICYgR0ZDX1NURF9HTlUpICE9IDApCiAgICAgZ2ZjX29wdGlvbi53YXJu X3N0ZCB8PSBHRkNfU1REX0dOVTsKQEAgLTM4MSwyNSArMzgyLDI1IEBAIGdm Y19wb3N0X29wdGlvbnMgKGNvbnN0IGNoYXIgKipwZmlsZW5hbWUKICAgaWYg KGdmY19vcHRpb24uZmxhZ19zZWNvbmRfdW5kZXJzY29yZSA9PSAtMSkKICAg ICBnZmNfb3B0aW9uLmZsYWdfc2Vjb25kX3VuZGVyc2NvcmUgPSBnZmNfb3B0 aW9uLmZsYWdfZjJjOwogCiAgIGlmICghZ2ZjX29wdGlvbi5mbGFnX2F1dG9t YXRpYyAmJiBnZmNfb3B0aW9uLmZsYWdfbWF4X3N0YWNrX3Zhcl9zaXplICE9 IC0yCiAgICAgICAmJiBnZmNfb3B0aW9uLmZsYWdfbWF4X3N0YWNrX3Zhcl9z aXplICE9IDApCi0gICAgZ2ZjX3dhcm5pbmdfbm93ICgiRmxhZyAtZm5vLWF1 dG9tYXRpYyBvdmVyd3JpdGVzIC1mbWF4LXN0YWNrLXZhci1zaXplPSVkIiwK LQkJICAgICBnZmNfb3B0aW9uLmZsYWdfbWF4X3N0YWNrX3Zhcl9zaXplKTsK KyAgICBnZmNfd2FybmluZ19jbWRsaW5lICgiRmxhZyAlPC1mbm8tYXV0b21h dGljJT4gb3ZlcndyaXRlcyAlPC1mbWF4LXN0YWNrLXZhci1zaXplPSVkJT4i LAorCQkJIGdmY19vcHRpb24uZmxhZ19tYXhfc3RhY2tfdmFyX3NpemUpOwog ICBlbHNlIGlmICghZ2ZjX29wdGlvbi5mbGFnX2F1dG9tYXRpYyAmJiBnZmNf b3B0aW9uLmZsYWdfcmVjdXJzaXZlKQotICAgIGdmY193YXJuaW5nX25vdyAo IkZsYWcgLWZuby1hdXRvbWF0aWMgb3ZlcndyaXRlcyAtZnJlY3Vyc2l2ZSIp OworICAgIGdmY193YXJuaW5nX2NtZGxpbmUgKCJGbGFnICU8LWZuby1hdXRv bWF0aWMlPiBvdmVyd3JpdGVzICU8LWZyZWN1cnNpdmUlPiIpOwogICBlbHNl IGlmICghZ2ZjX29wdGlvbi5mbGFnX2F1dG9tYXRpYyAmJiBnZmNfb3B0aW9u LmdmY19mbGFnX29wZW5tcCkKLSAgICBnZmNfd2FybmluZ19ub3cgKCJGbGFn IC1mbm8tYXV0b21hdGljIG92ZXJ3cml0ZXMgLWZyZWN1cnNpdmUgaW1wbGll ZCBieSAiCi0JCSAgICAgIi1mb3Blbm1wIik7CisgICAgZ2ZjX3dhcm5pbmdf Y21kbGluZSAoIkZsYWcgJTwtZm5vLWF1dG9tYXRpYyU+IG92ZXJ3cml0ZXMg JTwtZnJlY3Vyc2l2ZSU+IGltcGxpZWQgYnkgIgorCQkJICIlPC1mb3Blbm1w JT4iKTsKICAgZWxzZSBpZiAoZ2ZjX29wdGlvbi5mbGFnX21heF9zdGFja192 YXJfc2l6ZSAhPSAtMgogCSAgICYmIGdmY19vcHRpb24uZmxhZ19yZWN1cnNp dmUpCi0gICAgZ2ZjX3dhcm5pbmdfbm93ICgiRmxhZyAtZnJlY3Vyc2l2ZSBv dmVyd3JpdGVzIC1mbWF4LXN0YWNrLXZhci1zaXplPSVkIiwKLQkJICAgICBn ZmNfb3B0aW9uLmZsYWdfbWF4X3N0YWNrX3Zhcl9zaXplKTsKKyAgICBnZmNf d2FybmluZ19jbWRsaW5lICgiRmxhZyAlPC1mcmVjdXJzaXZlJT4gb3Zlcndy aXRlcyAlPC1mbWF4LXN0YWNrLXZhci1zaXplPSVkJT4iLAorCQkJIGdmY19v cHRpb24uZmxhZ19tYXhfc3RhY2tfdmFyX3NpemUpOwogICBlbHNlIGlmIChn ZmNfb3B0aW9uLmZsYWdfbWF4X3N0YWNrX3Zhcl9zaXplICE9IC0yCiAJICAg JiYgZ2ZjX29wdGlvbi5nZmNfZmxhZ19vcGVubXApCi0gICAgZ2ZjX3dhcm5p bmdfbm93ICgiRmxhZyAtZm1heC1zdGFjay12YXItc2l6ZT0lZCBvdmVyd3Jp dGVzIC1mcmVjdXJzaXZlICIKLQkJICAgICAiaW1wbGllZCBieSAtZm9wZW5t cCIsIAorICAgIGdmY193YXJuaW5nX2NtZGxpbmUgKCJGbGFnICU8LWZtYXgt c3RhY2stdmFyLXNpemU9JWQlPiBvdmVyd3JpdGVzICU8LWZyZWN1cnNpdmUl PiAiCisJCQkgImltcGxpZWQgYnkgJTwtZm9wZW5tcCU+IiwgCiAJCSAgICAg Z2ZjX29wdGlvbi5mbGFnX21heF9zdGFja192YXJfc2l6ZSk7CiAKICAgLyog SW1wbGVtZW50IC1mcmVjdXJzaXZlIGFzIC1mbWF4LXN0YWNrLXZhci1zaXpl PS0xLiAgKi8KICAgaWYgKGdmY19vcHRpb24uZmxhZ19yZWN1cnNpdmUpCiAg ICAgZ2ZjX29wdGlvbi5mbGFnX21heF9zdGFja192YXJfc2l6ZSA9IC0xOwo= --001a11c27eb45d791f04fff8c6e7--