From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18152 invoked by alias); 5 Jun 2012 11:02:24 -0000 Received: (qmail 18041 invoked by uid 22791); 5 Jun 2012 11:02:14 -0000 X-SWARE-Spam-Status: No, hits=-7.2 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_DNSWL_HI,RCVD_IN_HOSTKARMA_NO,RCVD_IN_HOSTKARMA_W,TW_FN,TW_PM,TW_TM,TW_VT,TW_WR,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from acsinet15.oracle.com (HELO acsinet15.oracle.com) (141.146.126.227) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 05 Jun 2012 11:01:54 +0000 Received: from acsinet22.oracle.com (acsinet22.oracle.com [141.146.126.238]) by acsinet15.oracle.com (Sentrion-MTA-4.2.2/Sentrion-MTA-4.2.2) with ESMTP id q55B1pk4027009 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 5 Jun 2012 11:01:52 GMT Received: from acsmt358.oracle.com (acsmt358.oracle.com [141.146.40.158]) by acsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id q55B1oJg018764 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 5 Jun 2012 11:01:51 GMT Received: from abhmt114.oracle.com (abhmt114.oracle.com [141.146.116.66]) by acsmt358.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id q55B1ogu006552; Tue, 5 Jun 2012 06:01:50 -0500 Received: from [192.168.1.4] (/79.53.82.91) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 05 Jun 2012 04:01:49 -0700 Message-ID: <4FCDE6C4.7030705@oracle.com> Date: Tue, 05 Jun 2012 11:02:00 -0000 From: Paolo Carlini User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120421 Thunderbird/12.0 MIME-Version: 1.0 To: Jason Merrill CC: "gcc-patches@gcc.gnu.org" Subject: Re: [C++ Patch] PR 53567 References: <4FCCC301.7040505@oracle.com> <4FCCFA7A.8040508@redhat.com> <4FCD3CE8.2040307@oracle.com> <4FCD4364.7060103@redhat.com> <4FCD488D.5000703@oracle.com> <4FCD5148.8040309@oracle.com> <4FCD6AAB.10609@redhat.com> In-Reply-To: <4FCD6AAB.10609@redhat.com> Content-Type: multipart/mixed; boundary="------------010303000900040702040307" X-IsSubscribed: yes 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 X-SW-Source: 2012-06/txt/msg00292.txt.bz2 This is a multi-part message in MIME format. --------------010303000900040702040307 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-length: 608 Hi, On 06/05/2012 04:10 AM, Jason Merrill wrote: > On 06/04/2012 08:22 PM, Paolo Carlini wrote: >> In fact, I think setting complain to tf_warning may work better. > Sounds plausible. Having quickly tried hackish implementations of the idea of allowing warnings, the way I actually propose to implement it in implicit_conversion is by masking out tf_error in the same place where we adjust the flags: exactly were we used to mask out LOOKUP_COMPLAIN we now mask out tf_error. The patch passes bootstrap and testing on x86_64-linux, LOOKUP_COMPLAIN is gone ;) Thanks, Paolo. /////////////////////// --------------010303000900040702040307 Content-Type: text/plain; charset=UTF-8; name="CL_53567_12" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="CL_53567_12" Content-length: 3404 L2NwCjIwMTItMDYtMDUgIFBhb2xvIENhcmxpbmkgIDxwYW9sby5jYXJsaW5p QG9yYWNsZS5jb20+CgoJUFIgYysrLzUzNTY3CgkqIHR5cGVjay5jIChjcF9w ZXJmb3JtX2ludGVncmFsX3Byb21vdGlvbnMpOiBOZXcsIGxpa2UKCXBlcmZv cm1faW50ZWdyYWxfcHJvbW90aW9ucyBidXQgYWxzbyB0YWtlcyBhIHRzdWJz dF9mbGFnc190IHBhcmFtZXRlci4KCShwb2ludGVyX2RpZmYpOiBBZGQgdHN1 YnN0X2ZsYWdzX3QgcGFyYW1ldGVyLgoJKGRlY2F5X2NvbnZlcnNpb24sIGNw X2RlZmF1bHRfY29udmVyc2lvbiwgY3BfYnVpbGRfYXJyYXlfcmVmLAoJY3Bf YnVpbGRfYmluYXJ5X29wLCBjcF9idWlsZF91bmFyeV9vcCwgYnVpbGRfc3Rh dGljX2Nhc3RfMSwKCWJ1aWxkX3JlaW50ZXJwcmV0X2Nhc3RfMSwgY3BfYnVp bGRfbW9kaWZ5X2V4cHIsCgljb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogQWRq dXN0LgoJKiBvcHRpbWl6ZS5jIChidWlsZF9kZWxldGVfZGVzdHJ1Y3Rvcl9i b2R5KTogQWRqdXN0LgoJKiBpbml0LmMgKGV4cGFuZF92aXJ0dWFsX2luaXQs IGV4cGFuZF9kZWZhdWx0X2luaXQsIGJ1aWxkX25ld18xLAoJYnVpbGRfbmV3 LCBidWlsZF92ZWNfZGVsZXRlXzEsIGJ1aWxkX3ZlY19pbml0LCBidWlsZF9k ZWxldGUpOiBBZGp1c3QuCgkoY29uc3RydWN0X3ZpcnR1YWxfYmFzZSk6IEFk anVzdCBMT09LVVBfQ09NUExBSU4gLT4gTE9PS1VQX05PUk1BTC4KCSogY2xh c3MuYyAoYnVpbGRfYmFzZV9wYXRoKTogQWRqdXN0LgoJKiBkZWNsLmMgKGNv bXB1dGVfYXJyYXlfaW5kZXhfdHlwZSwgZmluaXNoX2Rlc3RydWN0b3JfYm9k eSk6IExpa2V3aXNlLgoJKiBtZXRob2QuYyAoc3ludGhlc2l6ZWRfbWV0aG9k X3dhbGspOiBBZGp1c3QgTE9PS1VQX1BST1RFQ1QgLT4gCglMT09LVVBfTk9S TUFMLgoJKiBydHRpLmMgKGlmbm9ubnVsbCk6IEFkZCB0c3Vic3RfZmxhZ3Nf dCBwYXJhbWV0ZXIuCgkoYnVpbGRfdHlwZWlkLCBidWlsZF9keW5hbWljX2Nh c3RfMSk6IEFkanVzdC4KCSogZXhjZXB0LmMgKGluaXRpYWxpemVfaGFuZGxl cl9wYXJtKTogTGlrZXdpc2UuCgkqIHR5cGVjazIuYyAocHJvY2Vzc19pbml0 X2NvbnN0cnVjdG9yX3JlY29yZCk6IExpa2V3aXNlLgoJKiBwdC5jICh0c3Vi c3RfZnJpZW5kX2NsYXNzKTogQWRqdXN0IExPT0tVUF9DT01QTEFJTiAtPiBM T09LVVBfTk9STUFMLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2dvdG9fc3Rt dCwgaGFuZGxlX29tcF9mb3JfY2xhc3NfaXRlcmF0b3IsCglmaW5pc2hfc3Rh dGljX2Fzc2VydCk6IExpa2V3aXNlLgoJKiBwYXJzZXIuYyAoY3BfcGFyc2Vy X2xvb2t1cF9uYW1lKTogQWRqdXN0IExPT0tVUF9DT01QTEFJTiAtPiAKCUxP T0tVUF9OT1JNQUwuCgkqIGNhbGwuYyAoYnVpbGRfb3BfZGVsZXRlX2NhbGwp OiBBZGQgdHN1YnN0X2ZsYWdzX3QgcGFyYW1ldGVyLgoJKGNvbnZlcnRfbGlr ZV9yZWFsLCBjb252ZXJ0X2FyZ190b19lbGxpcHNpcywgY29udmVydF9mb3Jf YXJnX3Bhc3NpbmcpOgoJQWRqdXN0LgoJKHN0YW5kYXJkX2NvbnZlcnNpb24p OiBBZGp1c3QgTE9PS1VQX0NPTVBMQUlOIC0+IExPT0tVUF9OT1JNQUwuCgko aW1wbGljaXRfY29udmVyc2lvbik6IEFkanVzdCBMT09LVVBfUFJPVEVDVCAt PiBMT09LVVBfTk9STUFMOyBtYXNrCglvdXQgdGZfZXJyb3IuCgkoYnVpbGRf dXNlcl90eXBlX2NvbnZlcnNpb25fMSwgYnVpbGRfbmV3X29wXzEsIGJ1aWxk X292ZXJfY2FsbCk6IFVzZQoJY29tcGxhaW4gJiB0Zl9lcnJvciBpbnN0ZWFk IG9mIGZsYWdzICYgTE9PS1VQX0NPTVBMQUlOLgoJKiBjdnQuYyAoY3BfY29u dmVydF90b19wb2ludGVyLCBjb252ZXJ0X3RvX3BvaW50ZXJfZm9yY2UsCgli dWlsZF91cF9yZWZlcmVuY2UsIGNvbnZlcnRfdG9fcmVmZXJlbmNlLCBjcF9j b252ZXJ0LAoJY3BfY29udmVydF9hbmRfY2hlY2ssIG9jcF9jb252ZXJ0LCBj b252ZXJ0X2ZvcmNlKTogQWRkIHRzdWJzdF9mbGFnc190CglwYXJhbWV0ZXIu CgkoY29udmVydF90b19yZWZlcmVuY2UsIG9jcF9jb252ZXJ0KTogVXNlIGNv bXBsYWluICYgdGZfZXJyb3IgaW5zdGVhZAoJb2YgZmxhZ3MgJiBMT09LVVBf Q09NUExBSU4uCgkoY29udmVydF9mb3JjZSk6IEFkanVzdCBMT09LVVBfQ09N UExBSU4gLT4gTE9PS1VQX05PUk1BTC4KCSogbmFtZS1sb29rdXAuYyAoaWRl bnRpZmllcl90eXBlX3ZhbHVlXzEsIGxvb2t1cF9xdWFsaWZpZWRfbmFtZSwK CWxvb2t1cF9uYW1lX3JlYWwsIGxvb2t1cF9mdW5jdGlvbl9ub25jbGFzcywg bG9va3VwX25hbWUsCglsb29rdXBfbmFtZV9wcmVmZXJfdHlwZSk6IEFkanVz dCBMT09LVVBfQ09NUExBSU4gLT4gTE9PS1VQX05PUk1BTC4KCSogY3AtdHJl ZS5oOiBBZGp1c3QgcHJvdG90eXBlczsgcmVtb3ZlIExPT0tVUF9DT01QTEFJ Ti4KCi90ZXN0c3VpdGUKMjAxMi0wNi0wNSAgUGFvbG8gQ2FybGluaSAgPHBh b2xvLmNhcmxpbmlAb3JhY2xlLmNvbT4KCglQUiBjKysvNTM1NjcKCSogZysr LmRnL2NwcDB4L2FsaWFzLWRlY2wtMTkuQzogTmV3LgoKCg== --------------010303000900040702040307 Content-Type: text/plain; charset=UTF-8; name="patch_53567_12" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="patch_53567_12" Content-length: 85409 SW5kZXg6IHRlc3RzdWl0ZS9nKysuZGcvY3BwMHgvYWxpYXMtZGVjbC0xOS5D Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRlc3RzdWl0ZS9nKysuZGcv Y3BwMHgvYWxpYXMtZGVjbC0xOS5DCShyZXZpc2lvbiAwKQorKysgdGVzdHN1 aXRlL2crKy5kZy9jcHAweC9hbGlhcy1kZWNsLTE5LkMJKHJldmlzaW9uIDAp CkBAIC0wLDAgKzEsMzEgQEAKKy8vIFBSIGMrKy81MzU2NworLy8geyBkZy1k byBjb21waWxlIHsgdGFyZ2V0IGMrKzExIH0gfQorCit0ZW1wbGF0ZSA8dW5z aWduZWQgaW50LCBib29sPiBzdHJ1Y3QgSW50ZWdlclR5cGUgeyB0eXBlZGVm IHVuc2lnbmVkIHR5cGU7IH07CisKK3RlbXBsYXRlIDxjbGFzcyBFbnVtVD4K K3VzaW5nIFVuZGVybHlpbmdFbnVtVHlwZSA9IHR5cGVuYW1lIEludGVnZXJU eXBlPHNpemVvZihFbnVtVCksIChFbnVtVCgtMSkgPiBFbnVtVCgwKSk+Ojp0 eXBlOworCit0ZW1wbGF0ZSA8Y2xhc3MgRW51bVQsIGNsYXNzIFVuZGVybHlp bmdUID0gVW5kZXJseWluZ0VudW1UeXBlPEVudW1UPj4KK3N0cnVjdCBFbnVt TWFzaworeworICBjb25zdGV4cHIgRW51bU1hc2soRW51bVQgdmFsKSA6IG1f dmFsKHZhbCkge30KKyAgb3BlcmF0b3IgRW51bVQoKSB7IHJldHVybiBtX3Zh bDsgfQorCisgIEVudW1UIG1fdmFsOworfTsKKworZW51bSBjbGFzcyBBIDog dW5zaWduZWQgeyB4IH07CisKK3RlbXBsYXRlIDxjbGFzcyBFbnVtVD4KK0Vu dW1NYXNrPEVudW1UPiBvcGVyYXRvciB+KEVudW1UIGxocykKK3sKKyAgcmV0 dXJuIEVudW1UKH51bnNpZ25lZChsaHMpICYgdW5zaWduZWQoRW51bVQ6Om1h c2tBbGwpKTsgLy8geyBkZy1lcnJvciAibm90IGEgbWVtYmVyIiB9CisKK30K KworaW50IG1haW4oKQoreworICB+QTo6eDsKKyAgcmV0dXJuIDA7Cit9Cklu ZGV4OiBjcC90eXBlY2suYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBj cC90eXBlY2suYwkocmV2aXNpb24gMTg4MjAzKQorKysgY3AvdHlwZWNrLmMJ KHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIHRyZWUg cmF0aW9uYWxpemVfY29uZGl0aW9uYWxfZXhwciAoZW51bSB0cmUKIHN0YXRp YyBpbnQgY29tcF9wdHJfdHR5cGVzX3JlYWwgKHRyZWUsIHRyZWUsIGludCk7 CiBzdGF0aWMgYm9vbCBjb21wX2V4Y2VwdF90eXBlcyAodHJlZSwgdHJlZSwg Ym9vbCk7CiBzdGF0aWMgYm9vbCBjb21wX2FycmF5X3R5cGVzIChjb25zdF90 cmVlLCBjb25zdF90cmVlLCBib29sKTsKLXN0YXRpYyB0cmVlIHBvaW50ZXJf ZGlmZiAodHJlZSwgdHJlZSwgdHJlZSk7CitzdGF0aWMgdHJlZSBwb2ludGVy X2RpZmYgKHRyZWUsIHRyZWUsIHRyZWUsIHRzdWJzdF9mbGFnc190KTsKIHN0 YXRpYyB0cmVlIGdldF9kZWx0YV9kaWZmZXJlbmNlICh0cmVlLCB0cmVlLCBi b29sLCBib29sLCB0c3Vic3RfZmxhZ3NfdCk7CiBzdGF0aWMgdm9pZCBjYXN0 c19hd2F5X2NvbnN0bmVzc19yICh0cmVlICosIHRyZWUgKiwgdHN1YnN0X2Zs YWdzX3QpOwogc3RhdGljIGJvb2wgY2FzdHNfYXdheV9jb25zdG5lc3MgKHRy ZWUsIHRyZWUsIHRzdWJzdF9mbGFnc190KTsKQEAgLTE5MDYsNyArMTkwNiw3 IEBAIGRlY2F5X2NvbnZlcnNpb24gKHRyZWUgZXhwLCB0c3Vic3RfZmxhZ3Nf dCBjb21wbGFpCiAgICAgICAvKiBUaGlzIHdheSBpcyBiZXR0ZXIgZm9yIGEg Q09NUE9ORU5UX1JFRiBzaW5jZSBpdCBjYW4KIAkgc2ltcGxpZnkgdGhlIG9m ZnNldCBmb3IgYSBjb21wb25lbnQuICAqLwogICAgICAgYWRyID0gY3BfYnVp bGRfYWRkcl9leHByIChleHAsIGNvbXBsYWluKTsKLSAgICAgIHJldHVybiBj cF9jb252ZXJ0IChwdHJ0eXBlLCBhZHIpOworICAgICAgcmV0dXJuIGNwX2Nv bnZlcnQgKHB0cnR5cGUsIGFkciwgY29tcGxhaW4pOwogICAgIH0KIAogICAv KiBJZiBhIGJpdGZpZWxkIGlzIHVzZWQgaW4gYSBjb250ZXh0IHdoZXJlIGlu dGVncmFsIHByb21vdGlvbgpAQCAtMTk1MCwxMiArMTk1MCwxMiBAQCBjcF9k ZWZhdWx0X2NvbnZlcnNpb24gKHRyZWUgZXhwLCB0c3Vic3RfZmxhZ3NfdCBj bwogICAvKiBDaGVjayBmb3IgdGFyZ2V0LXNwZWNpZmljIHByb21vdGlvbnMu ICAqLwogICB0cmVlIHByb21vdGVkX3R5cGUgPSB0YXJnZXRtLnByb21vdGVk X3R5cGUgKFRSRUVfVFlQRSAoZXhwKSk7CiAgIGlmIChwcm9tb3RlZF90eXBl KQotICAgIGV4cCA9IGNwX2NvbnZlcnQgKHByb21vdGVkX3R5cGUsIGV4cCk7 CisgICAgZXhwID0gY3BfY29udmVydCAocHJvbW90ZWRfdHlwZSwgZXhwLCBj b21wbGFpbik7CiAgIC8qIFBlcmZvcm0gdGhlIGludGVncmFsIHByb21vdGlv bnMgZmlyc3Qgc28gdGhhdCBiaXRmaWVsZAogICAgICBleHByZXNzaW9ucyAo d2hpY2ggbWF5IHByb21vdGUgdG8gImludCIsIGV2ZW4gaWYgdGhlIGJpdGZp ZWxkIGlzCiAgICAgIGRlY2xhcmVkICJ1bnNpZ25lZCIpIGFyZSBwcm9tb3Rl ZCBjb3JyZWN0bHkuICAqLwogICBlbHNlIGlmIChJTlRFR1JBTF9PUl9VTlND T1BFRF9FTlVNRVJBVElPTl9UWVBFX1AgKFRSRUVfVFlQRSAoZXhwKSkpCi0g ICAgZXhwID0gcGVyZm9ybV9pbnRlZ3JhbF9wcm9tb3Rpb25zIChleHApOwor ICAgIGV4cCA9IGNwX3BlcmZvcm1faW50ZWdyYWxfcHJvbW90aW9ucyAoZXhw LCBjb21wbGFpbik7CiAgIC8qIFBlcmZvcm0gdGhlIG90aGVyIGNvbnZlcnNp b25zLiAgKi8KICAgZXhwID0gZGVjYXlfY29udmVyc2lvbiAoZXhwLCBjb21w bGFpbik7CiAKQEAgLTE5NzUsNyArMTk3NSw3IEBAIGRlZmF1bHRfY29udmVy c2lvbiAodHJlZSBleHApCiAgICBjb252ZXJ0ZWQgdmFsdWUuICAqLwogCiB0 cmVlCi1wZXJmb3JtX2ludGVncmFsX3Byb21vdGlvbnMgKHRyZWUgZXhwcikK K2NwX3BlcmZvcm1faW50ZWdyYWxfcHJvbW90aW9ucyAodHJlZSBleHByLCB0 c3Vic3RfZmxhZ3NfdCBjb21wbGFpbikKIHsKICAgdHJlZSB0eXBlOwogICB0 cmVlIHByb21vdGVkX3R5cGU7CkBAIC0xOTk1LDEwICsxOTk1LDE4IEBAIHRy ZWUKICAgICByZXR1cm4gZXhwcjsKICAgcHJvbW90ZWRfdHlwZSA9IHR5cGVf cHJvbW90ZXNfdG8gKHR5cGUpOwogICBpZiAodHlwZSAhPSBwcm9tb3RlZF90 eXBlKQotICAgIGV4cHIgPSBjcF9jb252ZXJ0IChwcm9tb3RlZF90eXBlLCBl eHByKTsKKyAgICBleHByID0gY3BfY29udmVydCAocHJvbW90ZWRfdHlwZSwg ZXhwciwgY29tcGxhaW4pOwogICByZXR1cm4gZXhwcjsKIH0KIAorLyogQyB2 ZXJzaW9uLiAgKi8KKwordHJlZQorcGVyZm9ybV9pbnRlZ3JhbF9wcm9tb3Rp b25zICh0cmVlIGV4cHIpCit7CisgIHJldHVybiBjcF9wZXJmb3JtX2ludGVn cmFsX3Byb21vdGlvbnMgKGV4cHIsIHRmX3dhcm5pbmdfb3JfZXJyb3IpOwor fQorCiAvKiBSZXR1cm5zIG5vbnplcm8gaWZmIGV4cCBpcyBhIFNUUklOR19D U1Qgb3IgdGhlIHJlc3VsdCBvZiBhcHBseWluZwogICAgZGVjYXlfY29udmVy c2lvbiB0byBvbmUuICAqLwogCkBAIC0yOTQ1LDcgKzI5NTMsNyBAQCBjcF9i dWlsZF9hcnJheV9yZWYgKGxvY2F0aW9uX3QgbG9jLCB0cmVlIGFycmF5LCB0 cgogCSBkb2VzIG5vdCBzYXkgdGhhdCB3ZSBzaG91bGQuICBJbiBmYWN0LCB0 aGUgbmF0dXJhbCB0aGluZyB3b3VsZAogCSBzZWVtIHRvIGJlIHRvIGNvbnZl cnQgSURYIHRvIHB0cmRpZmZfdDsgd2UncmUgcGVyZm9ybWluZwogCSBwb2lu dGVyIGFyaXRobWV0aWMuKSAgKi8KLSAgICAgIGlkeCA9IHBlcmZvcm1faW50 ZWdyYWxfcHJvbW90aW9ucyAoaWR4KTsKKyAgICAgIGlkeCA9IGNwX3BlcmZv cm1faW50ZWdyYWxfcHJvbW90aW9ucyAoaWR4LCBjb21wbGFpbik7CiAKICAg ICAgIC8qIEFuIGFycmF5IHRoYXQgaXMgaW5kZXhlZCBieSBhIG5vbi1jb25z dGFudAogCSBjYW5ub3QgYmUgc3RvcmVkIGluIGEgcmVnaXN0ZXI7IHdlIG11 c3QgYmUgYWJsZSB0byBkbwpAQCAtMzg2Nyw3ICszODc1LDggQEAgY3BfYnVp bGRfYmluYXJ5X29wIChsb2NhdGlvbl90IGxvY2F0aW9uLAogICAgICAgaWYg KGNvZGUwID09IFBPSU5URVJfVFlQRSAmJiBjb2RlMSA9PSBQT0lOVEVSX1RZ UEUKIAkgICYmIHNhbWVfdHlwZV9pZ25vcmluZ190b3BfbGV2ZWxfcXVhbGlm aWVyc19wIChUUkVFX1RZUEUgKHR5cGUwKSwKIAkJCQkJCQlUUkVFX1RZUEUg KHR5cGUxKSkpCi0JcmV0dXJuIHBvaW50ZXJfZGlmZiAob3AwLCBvcDEsIGNv bW1vbl9wb2ludGVyX3R5cGUgKHR5cGUwLCB0eXBlMSkpOworCXJldHVybiBw b2ludGVyX2RpZmYgKG9wMCwgb3AxLCBjb21tb25fcG9pbnRlcl90eXBlICh0 eXBlMCwgdHlwZTEpLAorCQkJICAgICBjb21wbGFpbik7CiAgICAgICAvKiBJ biBhbGwgb3RoZXIgY2FzZXMgZXhjZXB0IHBvaW50ZXIgLSBpbnQsIHRoZSB1 c3VhbCBhcml0aG1ldGljCiAJIHJ1bGVzIGFwcGx5LiAgKi8KICAgICAgIGVs c2UgaWYgKCEoY29kZTAgPT0gUE9JTlRFUl9UWVBFICYmIGNvZGUxID09IElO VEVHRVJfVFlQRSkpCkBAIC00MDAzLDcgKzQwMTIsNyBAQCBjcF9idWlsZF9i aW5hcnlfb3AgKGxvY2F0aW9uX3QgbG9jYXRpb24sCiAJICAvKiBDb252ZXJ0 IHRoZSBzaGlmdC1jb3VudCB0byBhbiBpbnRlZ2VyLCByZWdhcmRsZXNzIG9m CiAJICAgICBzaXplIG9mIHZhbHVlIGJlaW5nIHNoaWZ0ZWQuICAqLwogCSAg aWYgKFRZUEVfTUFJTl9WQVJJQU5UIChUUkVFX1RZUEUgKG9wMSkpICE9IGlu dGVnZXJfdHlwZV9ub2RlKQotCSAgICBvcDEgPSBjcF9jb252ZXJ0IChpbnRl Z2VyX3R5cGVfbm9kZSwgb3AxKTsKKwkgICAgb3AxID0gY3BfY29udmVydCAo aW50ZWdlcl90eXBlX25vZGUsIG9wMSwgY29tcGxhaW4pOwogCSAgLyogQXZv aWQgY29udmVydGluZyBvcDEgdG8gcmVzdWx0X3R5cGUgbGF0ZXIuICAqLwog CSAgY29udmVydGVkID0gMTsKIAl9CkBAIC00MDMxLDcgKzQwNDAsNyBAQCBj cF9idWlsZF9iaW5hcnlfb3AgKGxvY2F0aW9uX3QgbG9jYXRpb24sCiAJICAv KiBDb252ZXJ0IHRoZSBzaGlmdC1jb3VudCB0byBhbiBpbnRlZ2VyLCByZWdh cmRsZXNzIG9mCiAJICAgICBzaXplIG9mIHZhbHVlIGJlaW5nIHNoaWZ0ZWQu ICAqLwogCSAgaWYgKFRZUEVfTUFJTl9WQVJJQU5UIChUUkVFX1RZUEUgKG9w MSkpICE9IGludGVnZXJfdHlwZV9ub2RlKQotCSAgICBvcDEgPSBjcF9jb252 ZXJ0IChpbnRlZ2VyX3R5cGVfbm9kZSwgb3AxKTsKKwkgICAgb3AxID0gY3Bf Y29udmVydCAoaW50ZWdlcl90eXBlX25vZGUsIG9wMSwgY29tcGxhaW4pOwog CSAgLyogQXZvaWQgY29udmVydGluZyBvcDEgdG8gcmVzdWx0X3R5cGUgbGF0 ZXIuICAqLwogCSAgY29udmVydGVkID0gMTsKIAl9CkBAIC00MDYyLDcgKzQw NzEsNyBAQCBjcF9idWlsZF9iaW5hcnlfb3AgKGxvY2F0aW9uX3QgbG9jYXRp b24sCiAJICAvKiBDb252ZXJ0IHRoZSBzaGlmdC1jb3VudCB0byBhbiBpbnRl Z2VyLCByZWdhcmRsZXNzIG9mCiAJICAgICBzaXplIG9mIHZhbHVlIGJlaW5n IHNoaWZ0ZWQuICAqLwogCSAgaWYgKFRZUEVfTUFJTl9WQVJJQU5UIChUUkVF X1RZUEUgKG9wMSkpICE9IGludGVnZXJfdHlwZV9ub2RlKQotCSAgICBvcDEg PSBjcF9jb252ZXJ0IChpbnRlZ2VyX3R5cGVfbm9kZSwgb3AxKTsKKwkgICAg b3AxID0gY3BfY29udmVydCAoaW50ZWdlcl90eXBlX25vZGUsIG9wMSwgY29t cGxhaW4pOwogCX0KICAgICAgIGJyZWFrOwogCkBAIC00MTYyLDEyICs0MTcx LDEyIEBAIGNwX2J1aWxkX2JpbmFyeV9vcCAobG9jYXRpb25fdCBsb2NhdGlv biwKIAkgICAgICBvcDAgPSBjcF9idWlsZF9iaW5hcnlfb3AgKGxvY2F0aW9u LAogCQkJCQlUUlVUSF9BTkRJRl9FWFBSLCBlMSwgZTIsCiAJCQkJCWNvbXBs YWluKTsKLQkgICAgICBvcDEgPSBjcF9jb252ZXJ0IChUUkVFX1RZUEUgKG9w MCksIGludGVnZXJfb25lX25vZGUpOyAKKwkgICAgICBvcDEgPSBjcF9jb252 ZXJ0IChUUkVFX1RZUEUgKG9wMCksIGludGVnZXJfb25lX25vZGUsIGNvbXBs YWluKTsgCiAJICAgIH0KICAgICAgCSAgZWxzZSAKIAkgICAgewogCSAgICAg IG9wMCA9IGJ1aWxkX3B0cm1lbWZ1bmNfYWNjZXNzX2V4cHIgKG9wMCwgcGZu X2lkZW50aWZpZXIpOwotCSAgICAgIG9wMSA9IGNwX2NvbnZlcnQgKFRSRUVf VFlQRSAob3AwKSwgb3AxKTsKKwkgICAgICBvcDEgPSBjcF9jb252ZXJ0IChU UkVFX1RZUEUgKG9wMCksIG9wMSwgY29tcGxhaW4pOwogCSAgICB9CiAJICBy ZXN1bHRfdHlwZSA9IFRSRUVfVFlQRSAob3AwKTsKIAl9CkBAIC00MTkwLDkg KzQxOTksOSBAQCBjcF9idWlsZF9iaW5hcnlfb3AgKGxvY2F0aW9uX3QgbG9j YXRpb24sCiAJCQkJCSBDUE9fQ09NUEFSSVNPTiwgY29tcGxhaW4pOwogCiAJ ICBpZiAoIXNhbWVfdHlwZV9wIChUUkVFX1RZUEUgKG9wMCksIHR5cGUpKQot CSAgICBvcDAgPSBjcF9jb252ZXJ0X2FuZF9jaGVjayAodHlwZSwgb3AwKTsK KwkgICAgb3AwID0gY3BfY29udmVydF9hbmRfY2hlY2sgKHR5cGUsIG9wMCwg Y29tcGxhaW4pOwogCSAgaWYgKCFzYW1lX3R5cGVfcCAoVFJFRV9UWVBFIChv cDEpLCB0eXBlKSkKLQkgICAgb3AxID0gY3BfY29udmVydF9hbmRfY2hlY2sg KHR5cGUsIG9wMSk7CisJICAgIG9wMSA9IGNwX2NvbnZlcnRfYW5kX2NoZWNr ICh0eXBlLCBvcDEsIGNvbXBsYWluKTsKIAogCSAgaWYgKG9wMCA9PSBlcnJv cl9tYXJrX25vZGUgfHwgb3AxID09IGVycm9yX21hcmtfbm9kZSkKIAkgICAg cmV0dXJuIGVycm9yX21hcmtfbm9kZTsKQEAgLTQ0NTYsMTYgKzQ0NjUsMTYg QEAgY3BfYnVpbGRfYmluYXJ5X29wIChsb2NhdGlvbl90IGxvY2F0aW9uLAog CSAgaWYgKGZpcnN0X2NvbXBsZXgpCiAJICAgIHsKIAkgICAgICBpZiAoVFJF RV9UWVBFIChvcDApICE9IHJlc3VsdF90eXBlKQotCQlvcDAgPSBjcF9jb252 ZXJ0X2FuZF9jaGVjayAocmVzdWx0X3R5cGUsIG9wMCk7CisJCW9wMCA9IGNw X2NvbnZlcnRfYW5kX2NoZWNrIChyZXN1bHRfdHlwZSwgb3AwLCBjb21wbGFp bik7CiAJICAgICAgaWYgKFRSRUVfVFlQRSAob3AxKSAhPSByZWFsX3R5cGUp Ci0JCW9wMSA9IGNwX2NvbnZlcnRfYW5kX2NoZWNrIChyZWFsX3R5cGUsIG9w MSk7CisJCW9wMSA9IGNwX2NvbnZlcnRfYW5kX2NoZWNrIChyZWFsX3R5cGUs IG9wMSwgY29tcGxhaW4pOwogCSAgICB9CiAJICBlbHNlCiAJICAgIHsKIAkg ICAgICBpZiAoVFJFRV9UWVBFIChvcDApICE9IHJlYWxfdHlwZSkKLQkJb3Aw ID0gY3BfY29udmVydF9hbmRfY2hlY2sgKHJlYWxfdHlwZSwgb3AwKTsKKwkJ b3AwID0gY3BfY29udmVydF9hbmRfY2hlY2sgKHJlYWxfdHlwZSwgb3AwLCBj b21wbGFpbik7CiAJICAgICAgaWYgKFRSRUVfVFlQRSAob3AxKSAhPSByZXN1 bHRfdHlwZSkKLQkJb3AxID0gY3BfY29udmVydF9hbmRfY2hlY2sgKHJlc3Vs dF90eXBlLCBvcDEpOworCQlvcDEgPSBjcF9jb252ZXJ0X2FuZF9jaGVjayAo cmVzdWx0X3R5cGUsIG9wMSwgY29tcGxhaW4pOwogCSAgICB9CiAJICBpZiAo VFJFRV9DT0RFIChvcDApID09IEVSUk9SX01BUksgfHwgVFJFRV9DT0RFIChv cDEpID09IEVSUk9SX01BUkspCiAJICAgIHJldHVybiBlcnJvcl9tYXJrX25v ZGU7CkBAIC00NTUwLDcgKzQ1NTksNyBAQCBjcF9idWlsZF9iaW5hcnlfb3Ag KGxvY2F0aW9uX3QgbG9jYXRpb24sCiAJICB0cmVlIHZhbAogCSAgICA9IHNo b3J0ZW5fY29tcGFyZSAoJnhvcDAsICZ4b3AxLCAmeHJlc3VsdF90eXBlLCAm eHJlc3VsdGNvZGUpOwogCSAgaWYgKHZhbCAhPSAwKQotCSAgICByZXR1cm4g Y3BfY29udmVydCAoYm9vbGVhbl90eXBlX25vZGUsIHZhbCk7CisJICAgIHJl dHVybiBjcF9jb252ZXJ0IChib29sZWFuX3R5cGVfbm9kZSwgdmFsLCBjb21w bGFpbik7CiAJICBvcDAgPSB4b3AwLCBvcDEgPSB4b3AxOwogCSAgY29udmVy dGVkID0gMTsKIAkgIHJlc3VsdGNvZGUgPSB4cmVzdWx0Y29kZTsKQEAgLTQ1 ODAsOSArNDU4OSw5IEBAIGNwX2J1aWxkX2JpbmFyeV9vcCAobG9jYXRpb25f dCBsb2NhdGlvbiwKICAgaWYgKCEgY29udmVydGVkKQogICAgIHsKICAgICAg IGlmIChUUkVFX1RZUEUgKG9wMCkgIT0gcmVzdWx0X3R5cGUpCi0Jb3AwID0g Y3BfY29udmVydF9hbmRfY2hlY2sgKHJlc3VsdF90eXBlLCBvcDApOworCW9w MCA9IGNwX2NvbnZlcnRfYW5kX2NoZWNrIChyZXN1bHRfdHlwZSwgb3AwLCBj b21wbGFpbik7CiAgICAgICBpZiAoVFJFRV9UWVBFIChvcDEpICE9IHJlc3Vs dF90eXBlKQotCW9wMSA9IGNwX2NvbnZlcnRfYW5kX2NoZWNrIChyZXN1bHRf dHlwZSwgb3AxKTsKKwlvcDEgPSBjcF9jb252ZXJ0X2FuZF9jaGVjayAocmVz dWx0X3R5cGUsIG9wMSwgY29tcGxhaW4pOwogCiAgICAgICBpZiAob3AwID09 IGVycm9yX21hcmtfbm9kZSB8fCBvcDEgPT0gZXJyb3JfbWFya19ub2RlKQog CXJldHVybiBlcnJvcl9tYXJrX25vZGU7CkBAIC00NTk0LDcgKzQ2MDMsNyBA QCBjcF9idWlsZF9iaW5hcnlfb3AgKGxvY2F0aW9uX3QgbG9jYXRpb24sCiAg IHJlc3VsdCA9IGJ1aWxkMiAocmVzdWx0Y29kZSwgYnVpbGRfdHlwZSwgb3Aw LCBvcDEpOwogICByZXN1bHQgPSBmb2xkX2lmX25vdF9pbl90ZW1wbGF0ZSAo cmVzdWx0KTsKICAgaWYgKGZpbmFsX3R5cGUgIT0gMCkKLSAgICByZXN1bHQg PSBjcF9jb252ZXJ0IChmaW5hbF90eXBlLCByZXN1bHQpOworICAgIHJlc3Vs dCA9IGNwX2NvbnZlcnQgKGZpbmFsX3R5cGUsIHJlc3VsdCwgY29tcGxhaW4p OwogCiAgIGlmIChUUkVFX09WRVJGTE9XX1AgKHJlc3VsdCkgCiAgICAgICAm JiAhVFJFRV9PVkVSRkxPV19QIChvcDApIApAQCAtNDYyNyw3ICs0NjM2LDcg QEAgY3BfcG9pbnRlcl9pbnRfc3VtIChlbnVtIHRyZWVfY29kZSByZXN1bHRj b2RlLCB0cmUKICAgIFRoZSByZXN1bHRpbmcgdHJlZSBoYXMgdHlwZSBpbnQu ICAqLwogCiBzdGF0aWMgdHJlZQotcG9pbnRlcl9kaWZmICh0cmVlIG9wMCwg dHJlZSBvcDEsIHRyZWUgcHRydHlwZSkKK3BvaW50ZXJfZGlmZiAodHJlZSBv cDAsIHRyZWUgb3AxLCB0cmVlIHB0cnR5cGUsIHRzdWJzdF9mbGFnc190IGNv bXBsYWluKQogewogICB0cmVlIHJlc3VsdDsKICAgdHJlZSByZXN0eXBlID0g cHRyZGlmZl90eXBlX25vZGU7CkBAIC00NjM3LDI0ICs0NjQ2LDQ4IEBAIHN0 YXRpYyB0cmVlCiAgICAgcmV0dXJuIGVycm9yX21hcmtfbm9kZTsKIAogICBp ZiAoVFJFRV9DT0RFICh0YXJnZXRfdHlwZSkgPT0gVk9JRF9UWVBFKQotICAg IHBlcm1lcnJvciAoaW5wdXRfbG9jYXRpb24sICJJU08gQysrIGZvcmJpZHMg dXNpbmcgcG9pbnRlciBvZiB0eXBlICU8dm9pZCAqJT4gaW4gc3VidHJhY3Rp b24iKTsKKyAgICB7CisgICAgICBpZiAoY29tcGxhaW4gJiB0Zl9lcnJvcikK KwlwZXJtZXJyb3IgKGlucHV0X2xvY2F0aW9uLCAiSVNPIEMrKyBmb3JiaWRz IHVzaW5nIHBvaW50ZXIgb2YgIgorCQkgICAidHlwZSAlPHZvaWQgKiU+IGlu IHN1YnRyYWN0aW9uIik7CisgICAgICBlbHNlCisJcmV0dXJuIGVycm9yX21h cmtfbm9kZTsKKyAgICB9CiAgIGlmIChUUkVFX0NPREUgKHRhcmdldF90eXBl KSA9PSBGVU5DVElPTl9UWVBFKQotICAgIHBlcm1lcnJvciAoaW5wdXRfbG9j YXRpb24sICJJU08gQysrIGZvcmJpZHMgdXNpbmcgcG9pbnRlciB0byBhIGZ1 bmN0aW9uIGluIHN1YnRyYWN0aW9uIik7CisgICAgeworICAgICAgaWYgKGNv bXBsYWluICYgdGZfZXJyb3IpCisJcGVybWVycm9yIChpbnB1dF9sb2NhdGlv biwgIklTTyBDKysgZm9yYmlkcyB1c2luZyBwb2ludGVyIHRvICIKKwkJICAg ImEgZnVuY3Rpb24gaW4gc3VidHJhY3Rpb24iKTsKKyAgICAgIGVsc2UKKwly ZXR1cm4gZXJyb3JfbWFya19ub2RlOworICAgIH0KICAgaWYgKFRSRUVfQ09E RSAodGFyZ2V0X3R5cGUpID09IE1FVEhPRF9UWVBFKQotICAgIHBlcm1lcnJv ciAoaW5wdXRfbG9jYXRpb24sICJJU08gQysrIGZvcmJpZHMgdXNpbmcgcG9p bnRlciB0byBhIG1ldGhvZCBpbiBzdWJ0cmFjdGlvbiIpOworICAgIHsKKyAg ICAgIGlmIChjb21wbGFpbiAmIHRmX2Vycm9yKQorCXBlcm1lcnJvciAoaW5w dXRfbG9jYXRpb24sICJJU08gQysrIGZvcmJpZHMgdXNpbmcgcG9pbnRlciB0 byAiCisJCSAgICJhIG1ldGhvZCBpbiBzdWJ0cmFjdGlvbiIpOworICAgICAg ZWxzZQorCXJldHVybiBlcnJvcl9tYXJrX25vZGU7CisgICAgfQogCiAgIC8q IEZpcnN0IGRvIHRoZSBzdWJ0cmFjdGlvbiBhcyBpbnRlZ2VyczsKICAgICAg dGhlbiBkcm9wIHRocm91Z2ggdG8gYnVpbGQgdGhlIGRpdmlkZSBvcGVyYXRv ci4gICovCiAKICAgb3AwID0gY3BfYnVpbGRfYmluYXJ5X29wIChpbnB1dF9s b2NhdGlvbiwKIAkJCSAgICBNSU5VU19FWFBSLAotCQkJICAgIGNwX2NvbnZl cnQgKHJlc3R5cGUsIG9wMCksCi0JCQkgICAgY3BfY29udmVydCAocmVzdHlw ZSwgb3AxKSwKLQkJCSAgICB0Zl93YXJuaW5nX29yX2Vycm9yKTsKKwkJCSAg ICBjcF9jb252ZXJ0IChyZXN0eXBlLCBvcDAsIGNvbXBsYWluKSwKKwkJCSAg ICBjcF9jb252ZXJ0IChyZXN0eXBlLCBvcDEsIGNvbXBsYWluKSwKKwkJCSAg ICBjb21wbGFpbik7CiAKICAgLyogVGhpcyBnZW5lcmF0ZXMgYW4gZXJyb3Ig aWYgb3AxIGlzIGEgcG9pbnRlciB0byBhbiBpbmNvbXBsZXRlIHR5cGUuICAq LwogICBpZiAoIUNPTVBMRVRFX1RZUEVfUCAoVFJFRV9UWVBFIChUUkVFX1RZ UEUgKG9wMSkpKSkKLSAgICBlcnJvciAoImludmFsaWQgdXNlIG9mIGEgcG9p bnRlciB0byBhbiBpbmNvbXBsZXRlIHR5cGUgaW4gcG9pbnRlciBhcml0aG1l dGljIik7CisgICAgeworICAgICAgaWYgKGNvbXBsYWluICYgdGZfZXJyb3Ip CisJZXJyb3IgKCJpbnZhbGlkIHVzZSBvZiBhIHBvaW50ZXIgdG8gYW4gaW5j b21wbGV0ZSB0eXBlIGluICIKKwkgICAgICAgInBvaW50ZXIgYXJpdGhtZXRp YyIpOworICAgICAgZWxzZQorCXJldHVybiBlcnJvcl9tYXJrX25vZGU7Cisg ICAgfQogCiAgIG9wMSA9IChUWVBFX1BUUk9CX1AgKHB0cnR5cGUpCiAJID8g c2l6ZV9pbl9ieXRlcyAodGFyZ2V0X3R5cGUpCkBAIC00NjYyLDcgKzQ2OTUs OCBAQCBzdGF0aWMgdHJlZQogCiAgIC8qIERvIHRoZSBkaXZpc2lvbi4gICov CiAKLSAgcmVzdWx0ID0gYnVpbGQyIChFWEFDVF9ESVZfRVhQUiwgcmVzdHlw ZSwgb3AwLCBjcF9jb252ZXJ0IChyZXN0eXBlLCBvcDEpKTsKKyAgcmVzdWx0 ID0gYnVpbGQyIChFWEFDVF9ESVZfRVhQUiwgcmVzdHlwZSwgb3AwLAorCQkg ICBjcF9jb252ZXJ0IChyZXN0eXBlLCBvcDEsIGNvbXBsYWluKSk7CiAgIHJl dHVybiBmb2xkX2lmX25vdF9pbl90ZW1wbGF0ZSAocmVzdWx0KTsKIH0KIAwK QEAgLTUxNzUsNyArNTIwOSw3IEBAIGNwX2J1aWxkX3VuYXJ5X29wIChlbnVt IHRyZWVfY29kZSBjb2RlLCB0cmVlIHhhcmcsCiAJZWxzZQogCSAgewogCSAg ICBpZiAoIW5vY29udmVydCAmJiBDUF9JTlRFR1JBTF9UWVBFX1AgKFRSRUVf VFlQRSAoYXJnKSkpCi0JICAgICAgYXJnID0gcGVyZm9ybV9pbnRlZ3JhbF9w cm9tb3Rpb25zIChhcmcpOworCSAgICAgIGFyZyA9IGNwX3BlcmZvcm1faW50 ZWdyYWxfcHJvbW90aW9ucyAoYXJnLCBjb21wbGFpbik7CiAKIAkgICAgLyog TWFrZSBzdXJlIHRoZSByZXN1bHQgaXMgbm90IGFuIGx2YWx1ZTogYSB1bmFy eSBwbHVzIG9yIG1pbnVzCiAJICAgICAgIGV4cHJlc3Npb24gaXMgYWx3YXlz IGEgcnZhbHVlLiAgKi8KQEAgLTUyMDAsNyArNTIzNCw3IEBAIGNwX2J1aWxk X3VuYXJ5X29wIChlbnVtIHRyZWVfY29kZSBjb2RlLCB0cmVlIHhhcmcsCiAJ CQkJCQkgICBhcmcsIHRydWUpKSkKIAllcnJzdHJpbmcgPSBfKCJ3cm9uZyB0 eXBlIGFyZ3VtZW50IHRvIGJpdC1jb21wbGVtZW50Iik7CiAgICAgICBlbHNl IGlmICghbm9jb252ZXJ0ICYmIENQX0lOVEVHUkFMX1RZUEVfUCAoVFJFRV9U WVBFIChhcmcpKSkKLQlhcmcgPSBwZXJmb3JtX2ludGVncmFsX3Byb21vdGlv bnMgKGFyZyk7CisJYXJnID0gY3BfcGVyZm9ybV9pbnRlZ3JhbF9wcm9tb3Rp b25zIChhcmcsIGNvbXBsYWluKTsKICAgICAgIGJyZWFrOwogCiAgICAgY2Fz ZSBBQlNfRVhQUjoKQEAgLTUzNTgsNyArNTM5Miw3IEBAIGNwX2J1aWxkX3Vu YXJ5X29wIChlbnVtIHRyZWVfY29kZSBjb2RlLCB0cmVlIHhhcmcsCiAJZWxz ZQogCSAgaW5jID0gaW50ZWdlcl9vbmVfbm9kZTsKIAotCWluYyA9IGNwX2Nv bnZlcnQgKGFyZ3R5cGUsIGluYyk7CisJaW5jID0gY3BfY29udmVydCAoYXJn dHlwZSwgaW5jLCBjb21wbGFpbik7CiAKIAkvKiBJZiAnYXJnJyBpcyBhbiBP YmplY3RpdmUtQyBQUk9QRVJUWV9SRUYgZXhwcmVzc2lvbiwgdGhlbiB3ZQog CSAgIG5lZWQgdG8gYXNrIE9iamVjdGl2ZS1DIHRvIGJ1aWxkIHRoZSBpbmNy ZW1lbnQgb3IgZGVjcmVtZW50CkBAIC02MDc0LDcgKzYxMDgsNyBAQCBidWls ZF9zdGF0aWNfY2FzdF8xICh0cmVlIHR5cGUsIHRyZWUgZXhwciwgYm9vbCBj XwogICAgICAgIHx8IFNDQUxBUl9GTE9BVF9UWVBFX1AgKHR5cGUpKQogICAg ICAgJiYgKElOVEVHUkFMX09SX0VOVU1FUkFUSU9OX1RZUEVfUCAoaW50eXBl KQogCSAgfHwgU0NBTEFSX0ZMT0FUX1RZUEVfUCAoaW50eXBlKSkpCi0gICAg cmV0dXJuIG9jcF9jb252ZXJ0ICh0eXBlLCBleHByLCBDT05WX0NfQ0FTVCwg TE9PS1VQX05PUk1BTCk7CisgICAgcmV0dXJuIG9jcF9jb252ZXJ0ICh0eXBl LCBleHByLCBDT05WX0NfQ0FTVCwgTE9PS1VQX05PUk1BTCwgY29tcGxhaW4p OwogCiAgIGlmIChUWVBFX1BUUl9QICh0eXBlKSAmJiBUWVBFX1BUUl9QIChp bnR5cGUpCiAgICAgICAmJiBDTEFTU19UWVBFX1AgKFRSRUVfVFlQRSAodHlw ZSkpCkBAIC02NDE3LDcgKzY0NTEsNyBAQCBidWlsZF9yZWludGVycHJldF9j YXN0XzEgKHRyZWUgdHlwZSwgdHJlZSBleHByLCBibwogICAgICAgcmV0dXJu IGVycm9yX21hcmtfbm9kZTsKICAgICB9CiAKLSAgcmV0dXJuIGNwX2NvbnZl cnQgKHR5cGUsIGV4cHIpOworICByZXR1cm4gY3BfY29udmVydCAodHlwZSwg ZXhwciwgY29tcGxhaW4pOwogfQogCiB0cmVlCkBAIC03MDc4LDcgKzcxMTIs NyBAQCBjcF9idWlsZF9tb2RpZnlfZXhwciAodHJlZSBsaHMsIGVudW0gdHJl ZV9jb2RlIG1vZAogCQkJCSAgICAgTlVMTF9UUkVFLCAwLCBjb21wbGFpbiwg TE9PS1VQX0lNUExJQ0lUKTsKIAogICBpZiAoIXNhbWVfdHlwZV9wIChsaHN0 eXBlLCBvbGhzdHlwZSkpCi0gICAgbmV3cmhzID0gY3BfY29udmVydF9hbmRf Y2hlY2sgKGxoc3R5cGUsIG5ld3Jocyk7CisgICAgbmV3cmhzID0gY3BfY29u dmVydF9hbmRfY2hlY2sgKGxoc3R5cGUsIG5ld3JocywgY29tcGxhaW4pOwog CiAgIGlmIChtb2RpZnljb2RlICE9IElOSVRfRVhQUikKICAgICB7CkBAIC03 NTk5LDcgKzc2MzMsNyBAQCBjb252ZXJ0X2Zvcl9hc3NpZ25tZW50ICh0cmVl IHR5cGUsIHRyZWUgcmhzLAogICAgICAgaWYgKCF3YXJuX3BtZjJwdHIKIAkg ICYmIFRZUEVfUFRSX1AgKHR5cGUpCiAJICAmJiBUWVBFX1BUUk1FTUZVTkNf UCAocmhzdHlwZSkpCi0JcmhzID0gY3BfY29udmVydCAoc3RyaXBfdG9wX3F1 YWxzICh0eXBlKSwgcmhzKTsKKwlyaHMgPSBjcF9jb252ZXJ0IChzdHJpcF90 b3BfcXVhbHMgKHR5cGUpLCByaHMsIGNvbXBsYWluKTsKICAgICAgIGVsc2UK IAl7CiAJICBpZiAoY29tcGxhaW4gJiB0Zl9lcnJvcikKQEAgLTc3MjMsMTAg Kzc3NTcsOCBAQCBjb252ZXJ0X2Zvcl9hc3NpZ25tZW50ICh0cmVlIHR5cGUs IHRyZWUgcmhzLAogICAgbGF0dGVyIChYKFgmKSkuCiAKICAgIElmIHVzaW5n IGNvbnN0cnVjdG9yIG1ha2Ugc3VyZSBubyBjb252ZXJzaW9uIG9wZXJhdG9y IGV4aXN0cywgaWYgb25lIGRvZXMKLSAgIGV4aXN0LCBhbiBhbWJpZ3VpdHkg ZXhpc3RzLgorICAgZXhpc3QsIGFuIGFtYmlndWl0eSBleGlzdHMuICAqLwog Ci0gICBJZiBmbGFncyBkb2Vzbid0IGluY2x1ZGUgTE9PS1VQX0NPTVBMQUlO LCBkb24ndCBjb21wbGFpbiBhYm91dCBhbnl0aGluZy4gICovCi0KIHRyZWUK IGNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uICh0cmVlIGV4cCwgdHJlZSB0 eXBlLCB0cmVlIHJocywgaW50IGZsYWdzLAogCQkJICAgIGltcGxfY29udl9y aHMgZXJydHlwZSwgdHJlZSBmbmRlY2wsIGludCBwYXJtbnVtLApJbmRleDog Y3Avb3B0aW1pemUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjcC9v cHRpbWl6ZS5jCShyZXZpc2lvbiAxODgyMDMpCisrKyBjcC9vcHRpbWl6ZS5j CSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNyArMTM4LDggQEAgYnVpbGRfZGVs ZXRlX2Rlc3RydWN0b3JfYm9keSAodHJlZSBkZWxldGVfZHRvciwgdHIKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbF9z aXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv Kmdsb2JhbF9wPSovZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8qcGxhY2VtZW50PSovTlVMTF9UUkVFLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmFsbG9jX2ZuPSov TlVMTF9UUkVFKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLyphbGxvY19mbj0qL05VTExfVFJFRSwKKwkJCQkgICAgICB0Zl93 YXJuaW5nX29yX2Vycm9yKTsKICAgYWRkX3N0bXQgKGNhbGxfZGVsZXRlKTsK IAogICAvKiBSZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIG9iamVjdC4gICov CkluZGV4OiBjcC9pbml0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g Y3AvaW5pdC5jCShyZXZpc2lvbiAxODgyMDMpCisrKyBjcC9pbml0LmMJKHdv cmtpbmcgY29weSkKQEAgLTExODAsNyArMTE4MCw3IEBAIGV4cGFuZF92aXJ0 dWFsX2luaXQgKHRyZWUgYmluZm8sIHRyZWUgZGVjbCkKICAgZ2NjX2Fzc2Vy dCAodnRibF9wdHIgIT0gZXJyb3JfbWFya19ub2RlKTsKIAogICAvKiBBc3Np Z24gdGhlIHZ0YWJsZSB0byB0aGUgdnB0ci4gICovCi0gIHZ0YmwgPSBjb252 ZXJ0X2ZvcmNlIChUUkVFX1RZUEUgKHZ0YmxfcHRyKSwgdnRibCwgMCk7Cisg IHZ0YmwgPSBjb252ZXJ0X2ZvcmNlIChUUkVFX1RZUEUgKHZ0YmxfcHRyKSwg dnRibCwgMCwgdGZfd2FybmluZ19vcl9lcnJvcik7CiAgIGZpbmlzaF9leHBy X3N0bXQgKGNwX2J1aWxkX21vZGlmeV9leHByICh2dGJsX3B0ciwgTk9QX0VY UFIsIHZ0YmwsCiAJCQkJCSAgdGZfd2FybmluZ19vcl9lcnJvcikpOwogfQpA QCAtMTI1MCw3ICsxMjUwLDcgQEAgY29uc3RydWN0X3ZpcnR1YWxfYmFzZSAo dHJlZSB2YmFzZSwgdHJlZSBhcmd1bWVudHMKICAgZXhwID0gY29udmVydF90 b19iYXNlX3N0YXRpY2FsbHkgKGN1cnJlbnRfY2xhc3NfcmVmLCB2YmFzZSk7 CiAKICAgZXhwYW5kX2FnZ3JfaW5pdF8xICh2YmFzZSwgY3VycmVudF9jbGFz c19yZWYsIGV4cCwgYXJndW1lbnRzLAotCQkgICAgICBMT09LVVBfQ09NUExB SU4sIHRmX3dhcm5pbmdfb3JfZXJyb3IpOworCQkgICAgICBMT09LVVBfTk9S TUFMLCB0Zl93YXJuaW5nX29yX2Vycm9yKTsKICAgZmluaXNoX3RoZW5fY2xh dXNlIChpbm5lcl9pZl9zdG10KTsKICAgZmluaXNoX2lmX3N0bXQgKGlubmVy X2lmX3N0bXQpOwogCkBAIC0xNTk4LDcgKzE1OTgsOCBAQCBleHBhbmRfZGVm YXVsdF9pbml0ICh0cmVlIGJpbmZvLCB0cmVlIHRydWVfZXhwLCB0cgogCSAg IGhhdmUgYWxyZWFkeSBidWlsdCB1cCB0aGUgY29uc3RydWN0b3IgY2FsbCBz byB3ZSBjb3VsZCB3cmFwIGl0CiAJICAgaW4gYW4gZXhjZXB0aW9uIHJlZ2lv bi4gICovOwogICAgICAgZWxzZQotCWluaXQgPSBvY3BfY29udmVydCAodHlw ZSwgaW5pdCwgQ09OVl9JTVBMSUNJVHxDT05WX0ZPUkNFX1RFTVAsIGZsYWdz KTsKKwlpbml0ID0gb2NwX2NvbnZlcnQgKHR5cGUsIGluaXQsIENPTlZfSU1Q TElDSVR8Q09OVl9GT1JDRV9URU1QLAorCQkJICAgIGZsYWdzLCBjb21wbGFp bik7CiAKICAgICAgIGlmIChUUkVFX0NPREUgKGluaXQpID09IE1VU1RfTk9U X1RIUk9XX0VYUFIpCiAJLyogV2UgbmVlZCB0byBwcm90ZWN0IHRoZSBpbml0 aWFsaXphdGlvbiBvZiBhIGNhdGNoIHBhcm0gd2l0aCBhCkBAIC0yNjU2LDcg KzI2NTcsOCBAQCBidWlsZF9uZXdfMSAoVkVDKHRyZWUsZ2MpICoqcGxhY2Vt ZW50LCB0cmVlIHR5cGUsCiAJCSAgICAgIHNpemUsCiAJCSAgICAgIGdsb2Jh bGx5X3F1YWxpZmllZF9wLAogCQkgICAgICBwbGFjZW1lbnRfYWxsb2NhdGlv bl9mbl9wID8gYWxsb2NfY2FsbCA6IE5VTExfVFJFRSwKLQkJICAgICAgYWxs b2NfZm4pKTsKKwkJICAgICAgYWxsb2NfZm4sCisJCSAgICAgIGNvbXBsYWlu KSk7CiAKIAkgIGlmICghY2xlYW51cCkKIAkgICAgLyogV2UncmUgZG9uZS4g ICovOwpAQCAtMjgxNSw3ICsyODE3LDcgQEAgYnVpbGRfbmV3IChWRUModHJl ZSxnYykgKipwbGFjZW1lbnQsIHRyZWUgdHlwZSwgdHIKICAgICAgICAgICAg IHJldHVybiBlcnJvcl9tYXJrX25vZGU7CiAgICAgICAgIH0KICAgICAgIG5l bHRzID0gbWFya19ydmFsdWVfdXNlIChuZWx0cyk7Ci0gICAgICBuZWx0cyA9 IGNwX3NhdmVfZXhwciAoY3BfY29udmVydCAoc2l6ZXR5cGUsIG5lbHRzKSk7 CisgICAgICBuZWx0cyA9IGNwX3NhdmVfZXhwciAoY3BfY29udmVydCAoc2l6 ZXR5cGUsIG5lbHRzLCBjb21wbGFpbikpOwogICAgIH0KIAogICAvKiBgYEEg cmVmZXJlbmNlIGNhbm5vdCBiZSBjcmVhdGVkIGJ5IHRoZSBuZXcgb3BlcmF0 b3IuICBBIHJlZmVyZW5jZQpAQCAtMzAxMiwxMiArMzAxNCwxMiBAQCBidWls ZF92ZWNfZGVsZXRlXzEgKHRyZWUgYmFzZSwgdHJlZSBtYXhpbmRleCwgdHJl ZQogCSAgYmFzZV90YmQgPSBjcF9idWlsZF9iaW5hcnlfb3AgKGlucHV0X2xv Y2F0aW9uLAogCQkJCQkgTUlOVVNfRVhQUiwKIAkJCQkJIGNwX2NvbnZlcnQg KHN0cmluZ190eXBlX25vZGUsCi0JCQkJCQkgICAgIGJhc2UpLAorCQkJCQkJ ICAgICBiYXNlLCBjb21wbGFpbiksCiAJCQkJCSBjb29raWVfc2l6ZSwKIAkJ CQkJIGNvbXBsYWluKTsKIAkgIGlmIChiYXNlX3RiZCA9PSBlcnJvcl9tYXJr X25vZGUpCiAJICAgIHJldHVybiBlcnJvcl9tYXJrX25vZGU7Ci0JICBiYXNl X3RiZCA9IGNwX2NvbnZlcnQgKHB0eXBlLCBiYXNlX3RiZCk7CisJICBiYXNl X3RiZCA9IGNwX2NvbnZlcnQgKHB0eXBlLCBiYXNlX3RiZCwgY29tcGxhaW4p OwogCSAgLyogVHJ1ZSBzaXplIHdpdGggaGVhZGVyLiAgKi8KIAkgIHZpcnR1 YWxfc2l6ZSA9IHNpemVfYmlub3AgKFBMVVNfRVhQUiwgdmlydHVhbF9zaXpl LCBjb29raWVfc2l6ZSk7CiAJfQpAQCAtMzAyNiw3ICszMDI4LDggQEAgYnVp bGRfdmVjX2RlbGV0ZV8xICh0cmVlIGJhc2UsIHRyZWUgbWF4aW5kZXgsIHRy ZWUKIAkJCQkJICAgICAgYmFzZV90YmQsIHZpcnR1YWxfc2l6ZSwKIAkJCQkJ ICAgICAgdXNlX2dsb2JhbF9kZWxldGUgJiAxLAogCQkJCQkgICAgICAvKnBs YWNlbWVudD0qL05VTExfVFJFRSwKLQkJCQkJICAgICAgLyphbGxvY19mbj0q L05VTExfVFJFRSk7CisJCQkJCSAgICAgIC8qYWxsb2NfZm49Ki9OVUxMX1RS RUUsCisJCQkJCSAgICAgIGNvbXBsYWluKTsKICAgICB9CiAKICAgYm9keSA9 IGxvb3A7CkBAIC0zMTg5LDE0ICszMTkyLDE0IEBAIGJ1aWxkX3ZlY19pbml0 ICh0cmVlIGJhc2UsIHRyZWUgbWF4aW5kZXgsIHRyZWUgaW5pCiAgICAgICBy ZXR1cm4gc3RtdF9leHByOwogICAgIH0KIAotICBtYXhpbmRleCA9IGNwX2Nv bnZlcnQgKHB0cmRpZmZfdHlwZV9ub2RlLCBtYXhpbmRleCk7CisgIG1heGlu ZGV4ID0gY3BfY29udmVydCAocHRyZGlmZl90eXBlX25vZGUsIG1heGluZGV4 LCBjb21wbGFpbik7CiAgIGlmIChUUkVFX0NPREUgKGF0eXBlKSA9PSBBUlJB WV9UWVBFKQogICAgIHsKICAgICAgIHB0eXBlID0gYnVpbGRfcG9pbnRlcl90 eXBlICh0eXBlKTsKICAgICAgIGJhc2UgPSBkZWNheV9jb252ZXJzaW9uIChi YXNlLCBjb21wbGFpbik7CiAgICAgICBpZiAoYmFzZSA9PSBlcnJvcl9tYXJr X25vZGUpCiAJcmV0dXJuIGVycm9yX21hcmtfbm9kZTsKLSAgICAgIGJhc2Ug PSBjcF9jb252ZXJ0IChwdHlwZSwgYmFzZSk7CisgICAgICBiYXNlID0gY3Bf Y29udmVydCAocHR5cGUsIGJhc2UsIGNvbXBsYWluKTsKICAgICB9CiAgIGVs c2UKICAgICBwdHlwZSA9IGF0eXBlOwpAQCAtMzY2NSw3ICszNjY4LDcgQEAg YnVpbGRfZGVsZXRlICh0cmVlIHR5cGUsIHRyZWUgYWRkciwgc3BlY2lhbF9m dW5jdGkKIAlhZGRyID0gc2F2ZV9leHByIChhZGRyKTsKIAogICAgICAgLyog VGhyb3cgYXdheSBjb25zdCBhbmQgdm9sYXRpbGUgb24gdGFyZ2V0IHR5cGUg b2YgYWRkci4gICovCi0gICAgICBhZGRyID0gY29udmVydF9mb3JjZSAoYnVp bGRfcG9pbnRlcl90eXBlICh0eXBlKSwgYWRkciwgMCk7CisgICAgICBhZGRy ID0gY29udmVydF9mb3JjZSAoYnVpbGRfcG9pbnRlcl90eXBlICh0eXBlKSwg YWRkciwgMCwgY29tcGxhaW4pOwogICAgIH0KICAgZWxzZSBpZiAoVFJFRV9D T0RFICh0eXBlKSA9PSBBUlJBWV9UWVBFKQogICAgIHsKQEAgLTM2OTEsNyAr MzY5NCw3IEBAIGJ1aWxkX2RlbGV0ZSAodHJlZSB0eXBlLCB0cmVlIGFkZHIs IHNwZWNpYWxfZnVuY3RpCiAgICAgICBpZiAoVFJFRV9TSURFX0VGRkVDVFMg KGFkZHIpKQogCWFkZHIgPSBzYXZlX2V4cHIgKGFkZHIpOwogCi0gICAgICBh ZGRyID0gY29udmVydF9mb3JjZSAoYnVpbGRfcG9pbnRlcl90eXBlICh0eXBl KSwgYWRkciwgMCk7CisgICAgICBhZGRyID0gY29udmVydF9mb3JjZSAoYnVp bGRfcG9pbnRlcl90eXBlICh0eXBlKSwgYWRkciwgMCwgY29tcGxhaW4pOwog ICAgIH0KIAogICBnY2NfYXNzZXJ0IChNQVlCRV9DTEFTU19UWVBFX1AgKHR5 cGUpKTsKQEAgLTM3MDUsNyArMzcwOCw4IEBAIGJ1aWxkX2RlbGV0ZSAodHJl ZSB0eXBlLCB0cmVlIGFkZHIsIHNwZWNpYWxfZnVuY3RpCiAJCQkJICAgY3h4 X3NpemVvZl9ub3dhcm4gKHR5cGUpLAogCQkJCSAgIHVzZV9nbG9iYWxfZGVs ZXRlLAogCQkJCSAgIC8qcGxhY2VtZW50PSovTlVMTF9UUkVFLAotCQkJCSAg IC8qYWxsb2NfZm49Ki9OVUxMX1RSRUUpOworCQkJCSAgIC8qYWxsb2NfZm49 Ki9OVUxMX1RSRUUsCisJCQkJICAgY29tcGxhaW4pOwogICAgIH0KICAgZWxz ZQogICAgIHsKQEAgLTM3NDQsNyArMzc0OCw4IEBAIGJ1aWxkX2RlbGV0ZSAo dHJlZSB0eXBlLCB0cmVlIGFkZHIsIHNwZWNpYWxfZnVuY3RpCiAJCQkJCSAg ICBjeHhfc2l6ZW9mX25vd2FybiAodHlwZSksCiAJCQkJCSAgICAvKmdsb2Jh bF9wPSovZmFsc2UsCiAJCQkJCSAgICAvKnBsYWNlbWVudD0qL05VTExfVFJF RSwKLQkJCQkJICAgIC8qYWxsb2NfZm49Ki9OVUxMX1RSRUUpOworCQkJCQkg ICAgLyphbGxvY19mbj0qL05VTExfVFJFRSwKKwkJCQkJICAgIGNvbXBsYWlu KTsKIAkgIC8qIENhbGwgdGhlIGNvbXBsZXRlIG9iamVjdCBkZXN0cnVjdG9y LiAgKi8KIAkgIGF1dG9fZGVsZXRlID0gc2ZrX2NvbXBsZXRlX2Rlc3RydWN0 b3I7CiAJfQpAQCAtMzc1Niw3ICszNzYxLDggQEAgYnVpbGRfZGVsZXRlICh0 cmVlIHR5cGUsIHRyZWUgYWRkciwgc3BlY2lhbF9mdW5jdGkKIAkgIGJ1aWxk X29wX2RlbGV0ZV9jYWxsIChERUxFVEVfRVhQUiwgYWRkciwgY3h4X3NpemVv Zl9ub3dhcm4gKHR5cGUpLAogCQkJCS8qZ2xvYmFsX3A9Ki9mYWxzZSwKIAkJ CQkvKnBsYWNlbWVudD0qL05VTExfVFJFRSwKLQkJCQkvKmFsbG9jX2ZuPSov TlVMTF9UUkVFKTsKKwkJCQkvKmFsbG9jX2ZuPSovTlVMTF9UUkVFLAorCQkJ CWNvbXBsYWluKTsKIAl9CiAKICAgICAgIGV4cHIgPSBidWlsZF9kdG9yX2Nh bGwgKGNwX2J1aWxkX2luZGlyZWN0X3JlZiAoYWRkciwgUk9fTlVMTCwgY29t cGxhaW4pLApJbmRleDogY3AvY2xhc3MuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBjcC9jbGFzcy5jCShyZXZpc2lvbiAxODgyMDMpCisrKyBjcC9j bGFzcy5jCSh3b3JraW5nIGNvcHkpCkBAIC0zNjYsNyArMzY2LDcgQEAgYnVp bGRfYmFzZV9wYXRoIChlbnVtIHRyZWVfY29kZSBjb2RlLAogICAvKiBOb3cg dGhhdCB3ZSd2ZSBzYXZlZCBleHByLCBidWlsZCB0aGUgcmVhbCBudWxsIHRl c3QuICAqLwogICBpZiAobnVsbF90ZXN0KQogICAgIHsKLSAgICAgIHRyZWUg emVybyA9IGNwX2NvbnZlcnQgKFRSRUVfVFlQRSAoZXhwciksIG51bGxwdHJf bm9kZSk7CisgICAgICB0cmVlIHplcm8gPSBjcF9jb252ZXJ0IChUUkVFX1RZ UEUgKGV4cHIpLCBudWxscHRyX25vZGUsIGNvbXBsYWluKTsKICAgICAgIG51 bGxfdGVzdCA9IGZvbGRfYnVpbGQyX2xvYyAoaW5wdXRfbG9jYXRpb24sIE5F X0VYUFIsIGJvb2xlYW5fdHlwZV9ub2RlLAogCQkJICAgICAgIGV4cHIsIHpl cm8pOwogICAgIH0KSW5kZXg6IGNwL2RlY2wuYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBjcC9kZWNsLmMJKHJldmlzaW9uIDE4ODIwMykKKysrIGNw L2RlY2wuYwkod29ya2luZyBjb3B5KQpAQCAtODEwNCw5ICs4MTA0LDEwIEBA IGNvbXB1dGVfYXJyYXlfaW5kZXhfdHlwZSAodHJlZSBuYW1lLCB0cmVlIHNp emUsIHRzCiAgICAgICBwcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2wgPSAwOwog ICAgICAgaXR5cGUgPSBjcF9idWlsZF9iaW5hcnlfb3AgKGlucHV0X2xvY2F0 aW9uLAogCQkJCSAgTUlOVVNfRVhQUiwKLQkJCQkgIGNwX2NvbnZlcnQgKHNz aXpldHlwZSwgc2l6ZSksCi0JCQkJICBjcF9jb252ZXJ0IChzc2l6ZXR5cGUs IGludGVnZXJfb25lX25vZGUpLAotCQkJCSAgdGZfd2FybmluZ19vcl9lcnJv cik7CisJCQkJICBjcF9jb252ZXJ0IChzc2l6ZXR5cGUsIHNpemUsIGNvbXBs YWluKSwKKwkJCQkgIGNwX2NvbnZlcnQgKHNzaXpldHlwZSwgaW50ZWdlcl9v bmVfbm9kZSwKKwkJCQkJICAgICAgY29tcGxhaW4pLAorCQkJCSAgY29tcGxh aW4pOwogICAgICAgaXR5cGUgPSBmb2xkIChpdHlwZSk7CiAgICAgICBwcm9j ZXNzaW5nX3RlbXBsYXRlX2RlY2wgPSBzYXZlZF9wcm9jZXNzaW5nX3RlbXBs YXRlX2RlY2w7CiAKQEAgLTEzMjkwLDExICsxMzI5MSwxMiBAQCBmaW5pc2hf ZGVzdHJ1Y3Rvcl9ib2R5ICh2b2lkKQogICAgICAgYW4gaW1wbGljaXQgZGVm aW5pdGlvbiksIG5vbi1wbGFjZW1lbnQgb3BlcmF0b3IgZGVsZXRlIHNoYWxs CiAgICAgICBiZSBsb29rZWQgdXAgaW4gdGhlIHNjb3BlIG9mIHRoZSBkZXN0 cnVjdG9yJ3MgY2xhc3MgYW5kIGlmCiAgICAgICBmb3VuZCBzaGFsbCBiZSBh Y2Nlc3NpYmxlIGFuZCB1bmFtYmlndW91cy4gICovCi0gICAgICBleHByc3Rt dCA9IGJ1aWxkX29wX2RlbGV0ZV9jYWxsKERFTEVURV9FWFBSLCBjdXJyZW50 X2NsYXNzX3B0ciwKLQkJCQkgICAgICB2aXJ0dWFsX3NpemUsCi0JCQkJICAg ICAgLypnbG9iYWxfcD0qL2ZhbHNlLAotCQkJCSAgICAgIC8qcGxhY2VtZW50 PSovTlVMTF9UUkVFLAotCQkJCSAgICAgIC8qYWxsb2NfZm49Ki9OVUxMX1RS RUUpOworICAgICAgZXhwcnN0bXQgPSBidWlsZF9vcF9kZWxldGVfY2FsbCAo REVMRVRFX0VYUFIsIGN1cnJlbnRfY2xhc3NfcHRyLAorCQkJCSAgICAgICB2 aXJ0dWFsX3NpemUsCisJCQkJICAgICAgIC8qZ2xvYmFsX3A9Ki9mYWxzZSwK KwkJCQkgICAgICAgLypwbGFjZW1lbnQ9Ki9OVUxMX1RSRUUsCisJCQkJICAg ICAgIC8qYWxsb2NfZm49Ki9OVUxMX1RSRUUsCisJCQkJICAgICAgIHRmX3dh cm5pbmdfb3JfZXJyb3IpOwogCiAgICAgICBpZl9zdG10ID0gYmVnaW5faWZf c3RtdCAoKTsKICAgICAgIGZpbmlzaF9pZl9zdG10X2NvbmQgKGJ1aWxkMiAo QklUX0FORF9FWFBSLCBpbnRlZ2VyX3R5cGVfbm9kZSwKSW5kZXg6IGNwL21l dGhvZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNwL21ldGhvZC5j CShyZXZpc2lvbiAxODgyMDMpCisrKyBjcC9tZXRob2QuYwkod29ya2luZyBj b3B5KQpAQCAtMTIyOCwxNyArMTIyOCwxMCBAQCBzeW50aGVzaXplZF9tZXRo b2Rfd2FsayAodHJlZSBjdHlwZSwgc3BlY2lhbF9mdW5jdAogCiAgIHNjb3Bl ID0gcHVzaF9zY29wZSAoY3R5cGUpOwogCi0gIGlmIChkaWFnKQotICAgIHsK LSAgICAgIGZsYWdzID0gTE9PS1VQX05PUk1BTHxMT09LVVBfU1BFQ1VMQVRJ VkV8TE9PS1VQX0RFRkFVTFRFRDsKLSAgICAgIGNvbXBsYWluID0gdGZfd2Fy bmluZ19vcl9lcnJvcjsKLSAgICB9Ci0gIGVsc2UKLSAgICB7Ci0gICAgICBm bGFncyA9IExPT0tVUF9QUk9URUNUfExPT0tVUF9TUEVDVUxBVElWRXxMT09L VVBfREVGQVVMVEVEOwotICAgICAgY29tcGxhaW4gPSB0Zl9ub25lOwotICAg IH0KKyAgZmxhZ3MgPSBMT09LVVBfTk9STUFMfExPT0tVUF9TUEVDVUxBVElW RXxMT09LVVBfREVGQVVMVEVEOwogCisgIGNvbXBsYWluID0gZGlhZyA/IHRm X3dhcm5pbmdfb3JfZXJyb3IgOiB0Zl9ub25lOworCiAgIGlmIChjb25zdF9w KQogICAgIHF1YWxzID0gVFlQRV9RVUFMX0NPTlNUOwogICBlbHNlCkluZGV4 OiBjcC9ydHRpLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3AvcnR0 aS5jCShyZXZpc2lvbiAxODgyMDMpCisrKyBjcC9ydHRpLmMJKHdvcmtpbmcg Y29weSkKQEAgLTk5LDcgKzk5LDcgQEAgVkVDKHRyZWUsZ2MpICp1bmVtaXR0 ZWRfdGluZm9fZGVjbHM7CiAgICBhbmQgYXJlIGdlbmVyYXRlZCBhcyBuZWVk ZWQuICovCiBzdGF0aWMgR1RZICgoKSkgVkVDKHRpbmZvX3MsZ2MpICp0aW5m b19kZXNjczsKIAotc3RhdGljIHRyZWUgaWZub25udWxsICh0cmVlLCB0cmVl KTsKK3N0YXRpYyB0cmVlIGlmbm9ubnVsbCAodHJlZSwgdHJlZSwgdHN1YnN0 X2ZsYWdzX3QpOwogc3RhdGljIHRyZWUgdGluZm9fbmFtZSAodHJlZSwgYm9v bCk7CiBzdGF0aWMgdHJlZSBidWlsZF9keW5hbWljX2Nhc3RfMSAodHJlZSwg dHJlZSwgdHN1YnN0X2ZsYWdzX3QpOwogc3RhdGljIHRyZWUgdGhyb3dfYmFk X2Nhc3QgKHZvaWQpOwpAQCAtMzM2LDcgKzMzNiw4IEBAIGJ1aWxkX3R5cGVp ZCAodHJlZSBleHApCiAgICAgICAgICBUaGlzIGlzIGFuIGx2YWx1ZSB1c2Ug b2YgZXhwciB0aGVuLiAgKi8KICAgICAgIGV4cCA9IG1hcmtfbHZhbHVlX3Vz ZSAoZXhwKTsKICAgICAgIGV4cCA9IHN0YWJpbGl6ZV9yZWZlcmVuY2UgKGV4 cCk7Ci0gICAgICBjb25kID0gY3BfY29udmVydCAoYm9vbGVhbl90eXBlX25v ZGUsIFRSRUVfT1BFUkFORCAoZXhwLCAwKSk7CisgICAgICBjb25kID0gY3Bf Y29udmVydCAoYm9vbGVhbl90eXBlX25vZGUsIFRSRUVfT1BFUkFORCAoZXhw LCAwKSwKKwkJCSB0Zl93YXJuaW5nX29yX2Vycm9yKTsKICAgICB9CiAKICAg ZXhwID0gZ2V0X3RpbmZvX2RlY2xfZHluYW1pYyAoZXhwKTsKQEAgLTQ5OCwx MiArNDk5LDEzIEBAIGdldF90eXBlaWQgKHRyZWUgdHlwZSkKICAgIFJFU1VM VCwgaXQgbXVzdCBoYXZlIHByZXZpb3VzbHkgaGFkIGEgc2F2ZV9leHByIGFw cGxpZWQgdG8gaXQuICAqLwogCiBzdGF0aWMgdHJlZQotaWZub25udWxsICh0 cmVlIHRlc3QsIHRyZWUgcmVzdWx0KQoraWZub25udWxsICh0cmVlIHRlc3Qs IHRyZWUgcmVzdWx0LCB0c3Vic3RfZmxhZ3NfdCBjb21wbGFpbikKIHsKICAg cmV0dXJuIGJ1aWxkMyAoQ09ORF9FWFBSLCBUUkVFX1RZUEUgKHJlc3VsdCks CiAJCSBidWlsZDIgKEVRX0VYUFIsIGJvb2xlYW5fdHlwZV9ub2RlLCB0ZXN0 LAotCQkJIGNwX2NvbnZlcnQgKFRSRUVfVFlQRSAodGVzdCksIG51bGxwdHJf bm9kZSkpLAotCQkgY3BfY29udmVydCAoVFJFRV9UWVBFIChyZXN1bHQpLCBu dWxscHRyX25vZGUpLAorCQkJIGNwX2NvbnZlcnQgKFRSRUVfVFlQRSAodGVz dCksIG51bGxwdHJfbm9kZSwKKwkJCQkgICAgIGNvbXBsYWluKSksCisJCSBj cF9jb252ZXJ0IChUUkVFX1RZUEUgKHJlc3VsdCksIG51bGxwdHJfbm9kZSwg Y29tcGxhaW4pLAogCQkgcmVzdWx0KTsKIH0KIApAQCAtNTk2LDcgKzU5OCw3 IEBAIGJ1aWxkX2R5bmFtaWNfY2FzdF8xICh0cmVlIHR5cGUsIHRyZWUgZXhw ciwgdHN1YnN0CiAKICAgICAgIC8qIEFwcGx5IHRyaXZpYWwgY29udmVyc2lv biBUIC0+IFQmIGZvciBkZXJlZmVyZW5jZWQgcHRycy4gICovCiAgICAgICBl eHByID0gY29udmVydF90b19yZWZlcmVuY2UgKGV4cHJ0eXBlLCBleHByLCBD T05WX0lNUExJQ0lULAotCQkJCSAgIExPT0tVUF9OT1JNQUwsIE5VTExfVFJF RSk7CisJCQkJICAgTE9PS1VQX05PUk1BTCwgTlVMTF9UUkVFLCBjb21wbGFp bik7CiAgICAgfQogCiAgIC8qIFRoZSBkeW5hbWljX2Nhc3Qgb3BlcmF0b3Ig c2hhbGwgbm90IGNhc3QgYXdheSBjb25zdG5lc3MuICAqLwpAQCAtNjQ0LDcg KzY0Niw3IEBAIGJ1aWxkX2R5bmFtaWNfY2FzdF8xICh0cmVlIHR5cGUsIHRy ZWUgZXhwciwgdHN1YnN0CiAJICBleHByMSA9IGJ1aWxkX2hlYWRvZiAoZXhw cik7CiAJICBpZiAoVFJFRV9UWVBFIChleHByMSkgIT0gdHlwZSkKIAkgICAg ZXhwcjEgPSBidWlsZDEgKE5PUF9FWFBSLCB0eXBlLCBleHByMSk7Ci0JICBy ZXR1cm4gaWZub25udWxsIChleHByLCBleHByMSk7CisJICByZXR1cm4gaWZu b25udWxsIChleHByLCBleHByMSwgY29tcGxhaW4pOwogCX0KICAgICAgIGVs c2UKIAl7CkBAIC03NTIsMTIgKzc1NCwxMiBAQCBidWlsZF9keW5hbWljX2Nh c3RfMSAodHJlZSB0eXBlLCB0cmVlIGV4cHIsIHRzdWJzdAogCSAgICAgIG5l cSA9IGNwX3RydXRodmFsdWVfY29udmVyc2lvbiAocmVzdWx0KTsKIAkgICAg ICByZXR1cm4gY3BfY29udmVydCAodHlwZSwKIAkJCQkgYnVpbGQzIChDT05E X0VYUFIsIFRSRUVfVFlQRSAocmVzdWx0KSwKLQkJCQkJIG5lcSwgcmVzdWx0 LCBiYWQpKTsKKwkJCQkJIG5lcSwgcmVzdWx0LCBiYWQpLCBjb21wbGFpbik7 CiAJICAgIH0KIAogCSAgLyogTm93IGJhY2sgdG8gdGhlIHR5cGUgd2Ugd2Fu dCBmcm9tIGEgdm9pZCouICAqLwotCSAgcmVzdWx0ID0gY3BfY29udmVydCAo dHlwZSwgcmVzdWx0KTsKLQkgIHJldHVybiBpZm5vbm51bGwgKGV4cHIsIHJl c3VsdCk7CisJICByZXN1bHQgPSBjcF9jb252ZXJ0ICh0eXBlLCByZXN1bHQs IGNvbXBsYWluKTsKKwkgIHJldHVybiBpZm5vbm51bGwgKGV4cHIsIHJlc3Vs dCwgY29tcGxhaW4pOwogCX0KICAgICB9CiAgIGVsc2UKSW5kZXg6IGNwL2V4 Y2VwdC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNwL2V4Y2VwdC5j CShyZXZpc2lvbiAxODgyMDMpCisrKyBjcC9leGNlcHQuYwkod29ya2luZyBj b3B5KQpAQCAtNDI0LDcgKzQyNCw4IEBAIGluaXRpYWxpemVfaGFuZGxlcl9w YXJtICh0cmVlIGRlY2wsIHRyZWUgZXhwKQogICAgICAgJiYgVFlQRV9QVFJf UCAoVFJFRV9UWVBFIChpbml0X3R5cGUpKSkKICAgICBleHAgPSBjcF9idWls ZF9hZGRyX2V4cHIgKGV4cCwgdGZfd2FybmluZ19vcl9lcnJvcik7CiAKLSAg ZXhwID0gb2NwX2NvbnZlcnQgKGluaXRfdHlwZSwgZXhwLCBDT05WX0lNUExJ Q0lUfENPTlZfRk9SQ0VfVEVNUCwgMCk7CisgIGV4cCA9IG9jcF9jb252ZXJ0 IChpbml0X3R5cGUsIGV4cCwgQ09OVl9JTVBMSUNJVHxDT05WX0ZPUkNFX1RF TVAsIDAsCisJCSAgICAgdGZfd2FybmluZ19vcl9lcnJvcik7CiAKICAgaW5p dCA9IGNvbnZlcnRfZnJvbV9yZWZlcmVuY2UgKGV4cCk7CiAKQEAgLTQzNSw3 ICs0MzYsOCBAQCBpbml0aWFsaXplX2hhbmRsZXJfcGFybSAodHJlZSBkZWNs LCB0cmVlIGV4cCkKICAgICAgIC8qIEdlbmVyYXRlIHRoZSBjb3B5IGNvbnN0 cnVjdG9yIGNhbGwgZGlyZWN0bHkgc28gd2UgY2FuIHdyYXAgaXQuCiAJIFNl ZSBhbHNvIGV4cGFuZF9kZWZhdWx0X2luaXQuICAqLwogICAgICAgaW5pdCA9 IG9jcF9jb252ZXJ0IChUUkVFX1RZUEUgKGRlY2wpLCBpbml0LAotCQkJICBD T05WX0lNUExJQ0lUfENPTlZfRk9SQ0VfVEVNUCwgMCk7CisJCQkgIENPTlZf SU1QTElDSVR8Q09OVl9GT1JDRV9URU1QLCAwLAorCQkJICB0Zl93YXJuaW5n X29yX2Vycm9yKTsKICAgICAgIC8qIEZvcmNlIGNsZWFudXBzIG5vdyB0byBh dm9pZCBuZXN0aW5nIHByb2JsZW1zIHdpdGggdGhlCiAJIE1VU1RfTk9UX1RI Uk9XX0VYUFIuICAqLwogICAgICAgaW5pdCA9IGZvbGRfYnVpbGRfY2xlYW51 cF9wb2ludF9leHByIChUUkVFX1RZUEUgKGluaXQpLCBpbml0KTsKSW5kZXg6 IGNwL3R5cGVjazIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjcC90 eXBlY2syLmMJKHJldmlzaW9uIDE4ODIwMykKKysrIGNwL3R5cGVjazIuYwko d29ya2luZyBjb3B5KQpAQCAtMTI2NCw3ICsxMjY0LDcgQEAgcHJvY2Vzc19p bml0X2NvbnN0cnVjdG9yX3JlY29yZCAodHJlZSB0eXBlLCB0cmVlIGkKIAog ICAgICAgLyogSWYgdGhpcyBpcyBhIGJpdGZpZWxkLCBub3cgY29udmVydCB0 byB0aGUgbG93ZXJlZCB0eXBlLiAgKi8KICAgICAgIGlmICh0eXBlICE9IFRS RUVfVFlQRSAoZmllbGQpKQotCW5leHQgPSBjcF9jb252ZXJ0X2FuZF9jaGVj ayAoVFJFRV9UWVBFIChmaWVsZCksIG5leHQpOworCW5leHQgPSBjcF9jb252 ZXJ0X2FuZF9jaGVjayAoVFJFRV9UWVBFIChmaWVsZCksIG5leHQsIGNvbXBs YWluKTsKICAgICAgIGZsYWdzIHw9IHBpY2ZsYWdfZnJvbV9pbml0aWFsaXpl ciAobmV4dCk7CiAgICAgICBDT05TVFJVQ1RPUl9BUFBFTkRfRUxUICh2LCBm aWVsZCwgbmV4dCk7CiAgICAgfQpJbmRleDogY3AvcHQuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBjcC9wdC5jCShyZXZpc2lvbiAxODgyMDMpCisr KyBjcC9wdC5jCSh3b3JraW5nIGNvcHkpCkBAIC04NDc1LDcgKzg0NzUsNyBA QCB0c3Vic3RfZnJpZW5kX2NsYXNzICh0cmVlIGZyaWVuZF90bXBsLCB0cmVl IGFyZ3MpCiAgICAgIGJvdGggRiB0ZW1wbGF0ZXMgYXJlIHRoZSBzYW1lLiAg Ki8KICAgdG1wbCA9IGxvb2t1cF9uYW1lX3JlYWwgKERFQ0xfTkFNRSAoZnJp ZW5kX3RtcGwpLCAwLCAwLAogCQkJICAgLypibG9ja19wPSovdHJ1ZSwgMCwg Ci0JCQkgICBMT09LVVBfQ09NUExBSU4gfCBMT09LVVBfSElEREVOKTsKKwkJ CSAgIExPT0tVUF9OT1JNQUwgfCBMT09LVVBfSElEREVOKTsKIAogICAvKiBC dXQsIGlmIHdlIGRvbid0IGZpbmQgb25lLCBpdCBtaWdodCBiZSBiZWNhdXNl IHdlJ3JlIGluIGEKICAgICAgc2l0dWF0aW9uIGxpa2UgdGhpczoKSW5kZXg6 IGNwL3NlbWFudGljcy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNw L3NlbWFudGljcy5jCShyZXZpc2lvbiAxODgyMDMpCisrKyBjcC9zZW1hbnRp Y3MuYwkod29ya2luZyBjb3B5KQpAQCAtNTY0LDcgKzU2NCw4IEBAIGZpbmlz aF9nb3RvX3N0bXQgKHRyZWUgZGVzdGluYXRpb24pCiAgICAgICBkZXN0aW5h dGlvbiA9IG1hcmtfcnZhbHVlX3VzZSAoZGVzdGluYXRpb24pOwogICAgICAg aWYgKCFwcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2wpCiAJewotCSAgZGVzdGlu YXRpb24gPSBjcF9jb252ZXJ0IChwdHJfdHlwZV9ub2RlLCBkZXN0aW5hdGlv bik7CisJICBkZXN0aW5hdGlvbiA9IGNwX2NvbnZlcnQgKHB0cl90eXBlX25v ZGUsIGRlc3RpbmF0aW9uLAorCQkJCSAgICB0Zl93YXJuaW5nX29yX2Vycm9y KTsKIAkgIGlmIChlcnJvcl9vcGVyYW5kX3AgKGRlc3RpbmF0aW9uKSkKIAkg ICAgcmV0dXJuIE5VTExfVFJFRTsKIAl9CkBAIC00NTI2LDcgKzQ1MjcsOCBA QCBoYW5kbGVfb21wX2Zvcl9jbGFzc19pdGVyYXRvciAoaW50IGksIGxvY2F0 aW9uX3QgbAogCQkgIGlmIChlcnJvcl9vcGVyYW5kX3AgKGl0ZXJfaW5jcikp CiAJCSAgICByZXR1cm4gdHJ1ZTsKIAkJICBpbmNyID0gVFJFRV9PUEVSQU5E IChyaHMsIDEpOwotCQkgIGluY3IgPSBjcF9jb252ZXJ0IChUUkVFX1RZUEUg KGRpZmYpLCBpbmNyKTsKKwkJICBpbmNyID0gY3BfY29udmVydCAoVFJFRV9U WVBFIChkaWZmKSwgaW5jciwKKwkJCQkgICAgIHRmX3dhcm5pbmdfb3JfZXJy b3IpOwogCQkgIGlmIChUUkVFX0NPREUgKHJocykgPT0gTUlOVVNfRVhQUikK IAkJICAgIHsKIAkJICAgICAgaW5jciA9IGJ1aWxkMSAoTkVHQVRFX0VYUFIs IFRSRUVfVFlQRSAoZGlmZiksIGluY3IpOwpAQCAtNDU4MSw3ICs0NTgzLDcg QEAgaGFuZGxlX29tcF9mb3JfY2xhc3NfaXRlcmF0b3IgKGludCBpLCBsb2Nh dGlvbl90IGwKICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICBpbmNy ID0gY3BfY29udmVydCAoVFJFRV9UWVBFIChkaWZmKSwgaW5jcik7CisgIGlu Y3IgPSBjcF9jb252ZXJ0IChUUkVFX1RZUEUgKGRpZmYpLCBpbmNyLCB0Zl93 YXJuaW5nX29yX2Vycm9yKTsKICAgZm9yIChjID0gY2xhdXNlczsgYyA7IGMg PSBPTVBfQ0xBVVNFX0NIQUlOIChjKSkKICAgICBpZiAoT01QX0NMQVVTRV9D T0RFIChjKSA9PSBPTVBfQ0xBVVNFX0xBU1RQUklWQVRFCiAJJiYgT01QX0NM QVVTRV9ERUNMIChjKSA9PSBpdGVyKQpAQCAtNTEzMCw3ICs1MTMyLDcgQEAg ZmluaXNoX3N0YXRpY19hc3NlcnQgKHRyZWUgY29uZGl0aW9uLCB0cmVlIG1l c3NhZ2UKIAogICAvKiBGb2xkIHRoZSBleHByZXNzaW9uIGFuZCBjb252ZXJ0 IGl0IHRvIGEgYm9vbGVhbiB2YWx1ZS4gKi8KICAgY29uZGl0aW9uID0gZm9s ZF9ub25fZGVwZW5kZW50X2V4cHIgKGNvbmRpdGlvbik7Ci0gIGNvbmRpdGlv biA9IGNwX2NvbnZlcnQgKGJvb2xlYW5fdHlwZV9ub2RlLCBjb25kaXRpb24p OworICBjb25kaXRpb24gPSBjcF9jb252ZXJ0IChib29sZWFuX3R5cGVfbm9k ZSwgY29uZGl0aW9uLCB0Zl93YXJuaW5nX29yX2Vycm9yKTsKICAgY29uZGl0 aW9uID0gbWF5YmVfY29uc3RhbnRfdmFsdWUgKGNvbmRpdGlvbik7CiAKICAg aWYgKFRSRUVfQ09ERSAoY29uZGl0aW9uKSA9PSBJTlRFR0VSX0NTVCAmJiAh aW50ZWdlcl96ZXJvcCAoY29uZGl0aW9uKSkKSW5kZXg6IGNwL3BhcnNlci5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNwL3BhcnNlci5jCShyZXZp c2lvbiAxODgyMDMpCisrKyBjcC9wYXJzZXIuYwkod29ya2luZyBjb3B5KQpA QCAtMjAzMjIsNyArMjAzMjIsNyBAQCBjcF9wYXJzZXJfbG9va3VwX25hbWUg KGNwX3BhcnNlciAqcGFyc2VyLCB0cmVlIG5hbQogICB0cmVlIG9iamVjdF90 eXBlID0gcGFyc2VyLT5jb250ZXh0LT5vYmplY3RfdHlwZTsKIAogICBpZiAo IWNwX3BhcnNlcl91bmNvbW1pdHRlZF90b190ZW50YXRpdmVfcGFyc2VfcCAo cGFyc2VyKSkKLSAgICBmbGFncyB8PSBMT09LVVBfQ09NUExBSU47CisgICAg ZmxhZ3MgfD0gTE9PS1VQX05PUk1BTDsKIAogICAvKiBBc3N1bWUgdGhhdCB0 aGUgbG9va3VwIHdpbGwgYmUgdW5hbWJpZ3VvdXMuICAqLwogICBpZiAoYW1i aWd1b3VzX2RlY2xzKQpJbmRleDogY3AvY2FsbC5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIGNwL2NhbGwuYwkocmV2aXNpb24gMTg4MjA0KQorKysg Y3AvY2FsbC5jCSh3b3JraW5nIGNvcHkpCkBAIC0xMDk1LDcgKzEwOTUsNyBA QCBzdGFuZGFyZF9jb252ZXJzaW9uICh0cmVlIHRvLCB0cmVlIGZyb20sIHRy ZWUgZXhwcgogICAgICAgJiYgZXhwciAmJiB0eXBlX3Vua25vd25fcCAoZXhw cikpCiAgICAgewogICAgICAgdHN1YnN0X2ZsYWdzX3QgdGZsYWdzID0gdGZf Y29udjsKLSAgICAgIGlmICghKGZsYWdzICYgTE9PS1VQX1BST1RFQ1QpKQor ICAgICAgaWYgKCEoZmxhZ3MgJiBMT09LVVBfTk9STUFMKSkKIAl0ZmxhZ3Mg fD0gdGZfbm9fYWNjZXNzX2NvbnRyb2w7CiAgICAgICBleHByID0gaW5zdGFu dGlhdGVfdHlwZSAodG8sIGV4cHIsIHRmbGFncyk7CiAgICAgICBpZiAoZXhw ciA9PSBlcnJvcl9tYXJrX25vZGUpCkBAIC0xNjkzLDggKzE2OTMsMTAgQEAg aW1wbGljaXRfY29udmVyc2lvbiAodHJlZSB0bywgdHJlZSBmcm9tLCB0cmVl IGV4cHIKICAgICAgcmVzb2x1dGlvbiwgb3IgYWZ0ZXIgd2UndmUgY2hvc2Vu IG9uZS4gICovCiAgIGZsYWdzICY9IChMT09LVVBfT05MWUNPTlZFUlRJTkd8 TE9PS1VQX05PX0NPTlZFUlNJT058TE9PS1VQX0NPUFlfUEFSTQogCSAgICB8 TE9PS1VQX05PX1RFTVBfQklORHxMT09LVVBfTk9fUlZBTF9CSU5EfExPT0tV UF9QUkVGRVJfUlZBTFVFCi0JICAgIHxMT09LVVBfTk9fTkFSUk9XSU5HfExP T0tVUF9QUk9URUNUKTsKKwkgICAgfExPT0tVUF9OT19OQVJST1dJTkd8TE9P S1VQX05PUk1BTCk7CiAKKyAgY29tcGxhaW4gJj0gfnRmX2Vycm9yOworCiAg IGlmIChUUkVFX0NPREUgKHRvKSA9PSBSRUZFUkVOQ0VfVFlQRSkKICAgICBj b252ID0gcmVmZXJlbmNlX2JpbmRpbmcgKHRvLCBmcm9tLCBleHByLCBjX2Nh c3RfcCwgZmxhZ3MsIGNvbXBsYWluKTsKICAgZWxzZQpAQCAtMzYwNyw4ICsz NjA5LDcgQEAgYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb25fMSAodHJlZSB0 b3R5cGUsIHRyZWUgZXgKICAgY2FuZCA9IHRvdXJuZXkgKGNhbmRpZGF0ZXMs IGNvbXBsYWluKTsKICAgaWYgKGNhbmQgPT0gMCkKICAgICB7Ci0gICAgICBp ZiAoKGZsYWdzICYgTE9PS1VQX0NPTVBMQUlOKQotCSAgJiYgKGNvbXBsYWlu ICYgdGZfZXJyb3IpKQorICAgICAgaWYgKGNvbXBsYWluICYgdGZfZXJyb3Ip CiAJewogCSAgZXJyb3IgKCJjb252ZXJzaW9uIGZyb20gJXFUIHRvICVxVCBp cyBhbWJpZ3VvdXMiLAogCQkgZnJvbXR5cGUsIHRvdHlwZSk7CkBAIC01MDk4 LDcgKzUwOTksNyBAQCBidWlsZF9uZXdfb3BfMSAobG9jYXRpb25fdCBsb2Ms IGVudW0gdHJlZV9jb2RlIGNvZAogCSAgICAgZGlzdGluZ3Vpc2ggYmV0d2Vl biBwcmVmaXggYW5kIHBvc3RmaXggKysgYW5kCiAJICAgICBvcGVyYXRvcisr KCkgd2FzIHVzZWQgZm9yIGJvdGgsIHNvIHdlIGFsbG93IHRoaXMgd2l0aAog CSAgICAgLWZwZXJtaXNzaXZlLiAgKi8KLQkgIGlmIChmbGFncyAmIExPT0tV UF9DT01QTEFJTikKKwkgIGVsc2UKIAkgICAgewogCSAgICAgIGNvbnN0IGNo YXIgKm1zZyA9IChmbGFnX3Blcm1pc3NpdmUpIAogCQk/IEdfKCJubyAlPCVE KGludCklPiBkZWNsYXJlZCBmb3IgcG9zdGZpeCAlcXMsIgpAQCAtNTEyNyw3 ICs1MTI4LDcgQEAgYnVpbGRfbmV3X29wXzEgKGxvY2F0aW9uX3QgbG9jLCBl bnVtIHRyZWVfY29kZSBjb2QKIAkgIGJyZWFrOwogCiAJZGVmYXVsdDoKLQkg IGlmICgoZmxhZ3MgJiBMT09LVVBfQ09NUExBSU4pICYmIChjb21wbGFpbiAm IHRmX2Vycm9yKSkKKwkgIGlmIChjb21wbGFpbiAmIHRmX2Vycm9yKQogCSAg ICB7CiAJCS8qIElmIG9uZSBvZiB0aGUgYXJndW1lbnRzIG9mIHRoZSBvcGVy YXRvciByZXByZXNlbnRzCiAJCSAgIGFuIGludmFsaWQgdXNlIG9mIG1lbWJl ciBmdW5jdGlvbiBwb2ludGVyLCB0cnkgdG8gcmVwb3J0CkBAIC01MTUzLDcg KzUxNTQsNyBAQCBidWlsZF9uZXdfb3BfMSAobG9jYXRpb25fdCBsb2MsIGVu dW0gdHJlZV9jb2RlIGNvZAogICAgICAgY2FuZCA9IHRvdXJuZXkgKGNhbmRp ZGF0ZXMsIGNvbXBsYWluKTsKICAgICAgIGlmIChjYW5kID09IDApCiAJewot CSAgaWYgKChmbGFncyAmIExPT0tVUF9DT01QTEFJTikgJiYgKGNvbXBsYWlu ICYgdGZfZXJyb3IpKQorCSAgaWYgKGNvbXBsYWluICYgdGZfZXJyb3IpCiAJ ICAgIHsKIAkgICAgICBvcF9lcnJvciAobG9jLCBjb2RlLCBjb2RlMiwgYXJn MSwgYXJnMiwgYXJnMywgVFJVRSk7CiAJICAgICAgcHJpbnRfel9jYW5kaWRh dGVzIChsb2MsIGNhbmRpZGF0ZXMpOwpAQCAtNTM3OSw3ICs1MzgwLDcgQEAg bm9uX3BsYWNlbWVudF9kZWFsbG9jYXRpb25fZm5fcCAodHJlZSB0KQogdHJl ZQogYnVpbGRfb3BfZGVsZXRlX2NhbGwgKGVudW0gdHJlZV9jb2RlIGNvZGUs IHRyZWUgYWRkciwgdHJlZSBzaXplLAogCQkgICAgICBib29sIGdsb2JhbF9w LCB0cmVlIHBsYWNlbWVudCwKLQkJICAgICAgdHJlZSBhbGxvY19mbikKKwkJ ICAgICAgdHJlZSBhbGxvY19mbiwgdHN1YnN0X2ZsYWdzX3QgY29tcGxhaW4p CiB7CiAgIHRyZWUgZm4gPSBOVUxMX1RSRUU7CiAgIHRyZWUgZm5zLCBmbm5h bWUsIHR5cGUsIHQ7CkBAIC01NDEzLDcgKzU0MTQsNyBAQCBidWlsZF9vcF9k ZWxldGVfY2FsbCAoZW51bSB0cmVlX2NvZGUgY29kZSwgdHJlZSBhZAogICAg IGZucyA9IGxvb2t1cF9uYW1lX25vbmNsYXNzIChmbm5hbWUpOwogCiAgIC8q IFN0cmlwIGNvbnN0IGFuZCB2b2xhdGlsZSBmcm9tIGFkZHIuICAqLwotICBh ZGRyID0gY3BfY29udmVydCAocHRyX3R5cGVfbm9kZSwgYWRkcik7CisgIGFk ZHIgPSBjcF9jb252ZXJ0IChwdHJfdHlwZV9ub2RlLCBhZGRyLCBjb21wbGFp bik7CiAKICAgaWYgKHBsYWNlbWVudCkKICAgICB7CkBAIC01NDUyLDggKzU0 NTMsMTMgQEAgYnVpbGRfb3BfZGVsZXRlX2NhbGwgKGVudW0gdHJlZV9jb2Rl IGNvZGUsIHRyZWUgYWQKIAkJICAmJiBGVU5DVElPTl9BUkdfQ0hBSU4gKGVs dCkgPT0gdm9pZF9saXN0X25vZGUpCiAJCWdvdG8gb2s7CiAJICAgIH0KLQkg IHBlcm1lcnJvciAoMCwgIm5vbi1wbGFjZW1lbnQgZGVhbGxvY2F0aW9uIGZ1 bmN0aW9uICVxK0QiLCBmbik7Ci0JICBwZXJtZXJyb3IgKGlucHV0X2xvY2F0 aW9uLCAic2VsZWN0ZWQgZm9yIHBsYWNlbWVudCBkZWxldGUiKTsKKwkgIGlm IChjb21wbGFpbiAmIHRmX2Vycm9yKQorCSAgICB7CisJICAgICAgcGVybWVy cm9yICgwLCAibm9uLXBsYWNlbWVudCBkZWFsbG9jYXRpb24gZnVuY3Rpb24g JXErRCIsIGZuKTsKKwkgICAgICBwZXJtZXJyb3IgKGlucHV0X2xvY2F0aW9u LCAic2VsZWN0ZWQgZm9yIHBsYWNlbWVudCBkZWxldGUiKTsKKwkgICAgfQor CSAgZWxzZQorCSAgICByZXR1cm4gZXJyb3JfbWFya19ub2RlOwogCW9rOjsK IAl9CiAgICAgfQpAQCAtNTUxOCw3ICs1NTI0LDcgQEAgYnVpbGRfb3BfZGVs ZXRlX2NhbGwgKGVudW0gdHJlZV9jb2RlIGNvZGUsIHRyZWUgYWQKIAkgIFZF Q19xdWlja19wdXNoICh0cmVlLCBhcmdzLCBhZGRyKTsKIAkgIGlmIChGVU5D VElPTl9BUkdfQ0hBSU4gKGZuKSAhPSB2b2lkX2xpc3Rfbm9kZSkKIAkgICAg VkVDX3F1aWNrX3B1c2ggKHRyZWUsIGFyZ3MsIHNpemUpOwotCSAgcmV0ID0g Y3BfYnVpbGRfZnVuY3Rpb25fY2FsbF92ZWMgKGZuLCAmYXJncywgdGZfd2Fy bmluZ19vcl9lcnJvcik7CisJICByZXQgPSBjcF9idWlsZF9mdW5jdGlvbl9j YWxsX3ZlYyAoZm4sICZhcmdzLCBjb21wbGFpbik7CiAJICBWRUNfZnJlZSAo dHJlZSwgZ2MsIGFyZ3MpOwogCSAgcmV0dXJuIHJldDsKIAl9CkBAIC01NTMx LDE0ICs1NTM3LDE2IEBAIGJ1aWxkX29wX2RlbGV0ZV9jYWxsIChlbnVtIHRy ZWVfY29kZSBjb2RlLCB0cmVlIGFkCiAgICAgIGJlIGZyZWVkLiAgKi8KICAg aWYgKGFsbG9jX2ZuKQogICAgIHsKLSAgICAgIGlmICghcGxhY2VtZW50KQor ICAgICAgaWYgKChjb21wbGFpbiAmIHRmX3dhcm5pbmcpCisJICAmJiAhcGxh Y2VtZW50KQogCXdhcm5pbmcgKDAsICJubyBjb3JyZXNwb25kaW5nIGRlYWxs b2NhdGlvbiBmdW5jdGlvbiBmb3IgJXFEIiwKIAkJIGFsbG9jX2ZuKTsKICAg ICAgIHJldHVybiBOVUxMX1RSRUU7CiAgICAgfQogCi0gIGVycm9yICgibm8g c3VpdGFibGUgJTxvcGVyYXRvciAlcyU+IGZvciAlcVQiLAotCSBvcGVyYXRv cl9uYW1lX2luZm9bKGludCljb2RlXS5uYW1lLCB0eXBlKTsKKyAgaWYgKGNv bXBsYWluICYgdGZfZXJyb3IpCisgICAgZXJyb3IgKCJubyBzdWl0YWJsZSAl PG9wZXJhdG9yICVzJT4gZm9yICVxVCIsCisJICAgb3BlcmF0b3JfbmFtZV9p bmZvWyhpbnQpY29kZV0ubmFtZSwgdHlwZSk7CiAgIHJldHVybiBlcnJvcl9t YXJrX25vZGU7CiB9CiAKQEAgLTU2ODUsOSArNTY5MywxMCBAQCBjb252ZXJ0 X2xpa2VfcmVhbCAoY29udmVyc2lvbiAqY29udnMsIHRyZWUgZXhwciwgdAog CQkJCQljb21wbGFpbik7CiAJICAgICAgaWYgKGNvbnZzLT5raW5kID09IGNr X3JlZl9iaW5kKQogCQlyZXR1cm4gY29udmVydF90b19yZWZlcmVuY2UgKHRv dHlwZSwgZXhwciwgQ09OVl9JTVBMSUNJVCwKLQkJCQkJICAgICBMT09LVVBf Tk9STUFMLCBOVUxMX1RSRUUpOworCQkJCQkgICAgIExPT0tVUF9OT1JNQUws IE5VTExfVFJFRSwKKwkJCQkJICAgICBjb21wbGFpbik7CiAJICAgICAgZWxz ZQotCQlyZXR1cm4gY3BfY29udmVydCAodG90eXBlLCBleHByKTsKKwkJcmV0 dXJuIGNwX2NvbnZlcnQgKHRvdHlwZSwgZXhwciwgY29tcGxhaW4pOwogCSAg ICB9CiAJICBlbHNlIGlmICh0LT5raW5kID09IGNrX3VzZXIgfHwgIXQtPmJh ZF9wKQogCSAgICB7CkBAIC01NzEyLDcgKzU3MjEsNyBAQCBjb252ZXJ0X2xp a2VfcmVhbCAoY29udmVyc2lvbiAqY29udnMsIHRyZWUgZXhwciwgdAogCXBl cm1lcnJvciAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKGZuKSwKIAkJICAgIiAg aW5pdGlhbGl6aW5nIGFyZ3VtZW50ICVQIG9mICVxRCIsIGFyZ251bSwgZm4p OwogCi0gICAgICByZXR1cm4gY3BfY29udmVydCAodG90eXBlLCBleHByKTsK KyAgICAgIHJldHVybiBjcF9jb252ZXJ0ICh0b3R5cGUsIGV4cHIsIGNvbXBs YWluKTsKICAgICB9CiAKICAgaWYgKGlzc3VlX2NvbnZlcnNpb25fd2Fybmlu Z3MgJiYgKGNvbXBsYWluICYgdGZfd2FybmluZykpCkBAIC01ODUxLDcgKzU4 NjAsNyBAQCBjb252ZXJ0X2xpa2VfcmVhbCAoY29udmVyc2lvbiAqY29udnMs IHRyZWUgZXhwciwgdAogCS8qIFRha2UgdGhlIGFkZHJlc3MgZXhwbGljaXRs eSByYXRoZXIgdGhhbiB2aWEgZGVjYXlfY29udmVyc2lvbgogCSAgIHRvIGF2 b2lkIHRoZSBlcnJvciBhYm91dCB0YWtpbmcgdGhlIGFkZHJlc3Mgb2YgYSB0 ZW1wb3JhcnkuICAqLwogCWFycmF5ID0gY3BfYnVpbGRfYWRkcl9leHByIChh cnJheSwgY29tcGxhaW4pOwotCWFycmF5ID0gY3BfY29udmVydCAoYnVpbGRf cG9pbnRlcl90eXBlIChlbHR0eXBlKSwgYXJyYXkpOworCWFycmF5ID0gY3Bf Y29udmVydCAoYnVpbGRfcG9pbnRlcl90eXBlIChlbHR0eXBlKSwgYXJyYXks IGNvbXBsYWluKTsKIAogCS8qIEJ1aWxkIHVwIHRoZSBpbml0aWFsaXplcl9s aXN0IG9iamVjdC4gICovCiAJdG90eXBlID0gY29tcGxldGVfdHlwZSAodG90 eXBlKTsKQEAgLTYwMTcsNyArNjAyNiw3IEBAIGNvbnZlcnRfbGlrZV9yZWFs IChjb252ZXJzaW9uICpjb252cywgdHJlZSBleHByLCB0CiAJICAgcmVmZXJl bmNlLiAgVGhpcyB3aWxsIGFkanVzdCB0aGUgcG9pbnRlciBpZiBhIGRlcml2 ZWQgdG8KIAkgICBiYXNlIGNvbnZlcnNpb24gaXMgYmVpbmcgcGVyZm9ybWVk LiAgKi8KIAlleHByID0gY3BfY29udmVydCAoYnVpbGRfcG9pbnRlcl90eXBl IChUUkVFX1RZUEUgKHJlZl90eXBlKSksCi0JCQkgICBleHByKTsKKwkJCSAg IGV4cHIsIGNvbXBsYWluKTsKIAkvKiBDb252ZXJ0IHRoZSBwb2ludGVyIHRv IHRoZSBkZXNpcmVkIHJlZmVyZW5jZSB0eXBlLiAgKi8KIAlyZXR1cm4gYnVp bGRfbm9wIChyZWZfdHlwZSwgZXhwcik7CiAgICAgICB9CkBAIC02MDk5LDkg KzYxMDgsOSBAQCBjb252ZXJ0X2FyZ190b19lbGxpcHNpcyAodHJlZSBhcmcs IHRzdWJzdF9mbGFnc190CiAJICBpZiAoY29tcGxhaW4gJiB0Zl93YXJuaW5n KQogCSAgICB3YXJuaW5nX2F0IChsb2MsIE9QVF9XYWJpLCAic2NvcGVkIGVu dW0gJXFUIHdpbGwgbm90IHByb21vdGUgdG8gYW4gIgogCQkJImludGVncmFs IHR5cGUgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBHQ0MiLCBhcmdfdHlwZSk7 Ci0JICBhcmcgPSBjcF9jb252ZXJ0IChFTlVNX1VOREVSTFlJTkdfVFlQRSAo YXJnX3R5cGUpLCBhcmcpOworCSAgYXJnID0gY3BfY29udmVydCAoRU5VTV9V TkRFUkxZSU5HX1RZUEUgKGFyZ190eXBlKSwgYXJnLCBjb21wbGFpbik7CiAJ fQotICAgICAgYXJnID0gcGVyZm9ybV9pbnRlZ3JhbF9wcm9tb3Rpb25zIChh cmcpOworICAgICAgYXJnID0gY3BfcGVyZm9ybV9pbnRlZ3JhbF9wcm9tb3Rp b25zIChhcmcsIGNvbXBsYWluKTsKICAgICB9CiAKICAgYXJnID0gcmVxdWly ZV9jb21wbGV0ZV90eXBlIChhcmcpOwpAQCAtNjMzNiw3ICs2MzQ1LDcgQEAg Y29udmVydF9mb3JfYXJnX3Bhc3NpbmcgKHRyZWUgdHlwZSwgdHJlZSB2YWws IHRzdWIKIAkgICAmJiBDT01QTEVURV9UWVBFX1AgKHR5cGUpCiAJICAgJiYg SU5UX0NTVF9MVF9VTlNJR05FRCAoVFlQRV9TSVpFICh0eXBlKSwKIAkJCQkg ICBUWVBFX1NJWkUgKGludGVnZXJfdHlwZV9ub2RlKSkpCi0gICAgdmFsID0g cGVyZm9ybV9pbnRlZ3JhbF9wcm9tb3Rpb25zICh2YWwpOworICAgIHZhbCA9 IGNwX3BlcmZvcm1faW50ZWdyYWxfcHJvbW90aW9ucyAodmFsLCBjb21wbGFp bik7CiAgIGlmICgoY29tcGxhaW4gJiB0Zl93YXJuaW5nKQogICAgICAgJiYg d2Fybl9zdWdnZXN0X2F0dHJpYnV0ZV9mb3JtYXQpCiAgICAgewpAQCAtNjQ4 Nyw3ICs2NDk2LDcgQEAgYnVpbGRfb3Zlcl9jYWxsIChzdHJ1Y3Qgel9jYW5k aWRhdGUgKmNhbmQsIGludCBmbGEKICAgICAgIGlmIChmbGFncyAmIExPT0tV UF9TUEVDVUxBVElWRSkKIAl7CiAJICBpZiAoIXNwZWN1bGF0aXZlX2FjY2Vz c19jaGVjayAoY2FuZC0+YWNjZXNzX3BhdGgsIGFjY2Vzc19mbiwgZm4sCi0J CQkJCSAhIShmbGFncyAmIExPT0tVUF9DT01QTEFJTikpKQorCQkJCQkgY29t cGxhaW4gJiB0Zl9lcnJvcikpCiAJICAgIHJldHVybiBlcnJvcl9tYXJrX25v ZGU7CiAJfQogICAgICAgZWxzZQpAQCAtNjUwMCwxMyArNjUwOSwxMyBAQCBi dWlsZF9vdmVyX2NhbGwgKHN0cnVjdCB6X2NhbmRpZGF0ZSAqY2FuZCwgaW50 IGZsYQogICAgIHsKICAgICAgIGlmIChERUNMX0RFTEVURURfRk4gKGZuKSkK IAl7Ci0JICBpZiAoZmxhZ3MgJiBMT09LVVBfQ09NUExBSU4pCisJICBpZiAo Y29tcGxhaW4gJiB0Zl9lcnJvcikKIAkgICAgbWFya191c2VkIChmbik7CiAJ ICByZXR1cm4gZXJyb3JfbWFya19ub2RlOwogCX0KICAgICAgIGlmIChjYW5k LT52aWFibGUgPT0gMSkKIAlyZXR1cm4gZm47Ci0gICAgICBlbHNlIGlmICgh KGZsYWdzICYgTE9PS1VQX0NPTVBMQUlOKSkKKyAgICAgIGVsc2UgaWYgKCEo Y29tcGxhaW4gJiB0Zl9lcnJvcikpCiAJLyogUmVqZWN0IGJhZCBjb252ZXJz aW9ucyBub3cuICAqLwogCXJldHVybiBlcnJvcl9tYXJrX25vZGU7CiAgICAg ICAvKiBlbHNlIGNvbnRpbnVlIHRvIGdldCBjb252ZXJzaW9uIGVycm9yLiAg Ki8KSW5kZXg6IGNwL2N2dC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IGNwL2N2dC5jCShyZXZpc2lvbiAxODgyMDMpCisrKyBjcC9jdnQuYwkod29y a2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEwIEBAIGFsb25nIHdpdGggR0ND OyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCiAjaW5jbHVk ZSAiZGVjbC5oIgogI2luY2x1ZGUgInRhcmdldC5oIgogCi1zdGF0aWMgdHJl ZSBjcF9jb252ZXJ0X3RvX3BvaW50ZXIgKHRyZWUsIHRyZWUpOwotc3RhdGlj IHRyZWUgY29udmVydF90b19wb2ludGVyX2ZvcmNlICh0cmVlLCB0cmVlKTsK K3N0YXRpYyB0cmVlIGNwX2NvbnZlcnRfdG9fcG9pbnRlciAodHJlZSwgdHJl ZSwgdHN1YnN0X2ZsYWdzX3QpOworc3RhdGljIHRyZWUgY29udmVydF90b19w b2ludGVyX2ZvcmNlICh0cmVlLCB0cmVlLCB0c3Vic3RfZmxhZ3NfdCk7CiBz dGF0aWMgdHJlZSBidWlsZF90eXBlX2NvbnZlcnNpb24gKHRyZWUsIHRyZWUp Owotc3RhdGljIHRyZWUgYnVpbGRfdXBfcmVmZXJlbmNlICh0cmVlLCB0cmVl LCBpbnQsIHRyZWUpOworc3RhdGljIHRyZWUgYnVpbGRfdXBfcmVmZXJlbmNl ICh0cmVlLCB0cmVlLCBpbnQsIHRyZWUsIHRzdWJzdF9mbGFnc190KTsKIHN0 YXRpYyB2b2lkIHdhcm5fcmVmX2JpbmRpbmcgKGxvY2F0aW9uX3QsIHRyZWUs IHRyZWUsIHRyZWUpOwogCiAvKiBDaGFuZ2Ugb2Ygd2lkdGgtLXRydW5jYXRp b24gYW5kIGV4dGVuc2lvbiBvZiBpbnRlZ2VycyBvciByZWFscy0tCkBAIC03 NCw3ICs3NCw3IEBAIHN0YXRpYyB2b2lkIHdhcm5fcmVmX2JpbmRpbmcgKGxv Y2F0aW9uX3QsIHRyZWUsIHRyCiAgICBlbHNlIHRyeSBDLXN0eWxlIHBvaW50 ZXIgY29udmVyc2lvbi4gICovCiAKIHN0YXRpYyB0cmVlCi1jcF9jb252ZXJ0 X3RvX3BvaW50ZXIgKHRyZWUgdHlwZSwgdHJlZSBleHByKQorY3BfY29udmVy dF90b19wb2ludGVyICh0cmVlIHR5cGUsIHRyZWUgZXhwciwgdHN1YnN0X2Zs YWdzX3QgY29tcGxhaW4pCiB7CiAgIHRyZWUgaW50eXBlID0gVFJFRV9UWVBF IChleHByKTsKICAgZW51bSB0cmVlX2NvZGUgZm9ybTsKQEAgLTg5LDE1ICs4 OSwxNyBAQCBzdGF0aWMgdHJlZQogICAgICAgaW50eXBlID0gY29tcGxldGVf dHlwZSAoaW50eXBlKTsKICAgICAgIGlmICghQ09NUExFVEVfVFlQRV9QIChp bnR5cGUpKQogCXsKLQkgIGVycm9yX2F0IChsb2MsICJjYW4lJ3QgY29udmVy dCBmcm9tIGluY29tcGxldGUgdHlwZSAlcVQgdG8gJXFUIiwKLQkJICAgIGlu dHlwZSwgdHlwZSk7CisJICBpZiAoY29tcGxhaW4gJiB0Zl9lcnJvcikKKwkg ICAgZXJyb3JfYXQgKGxvYywgImNhbiUndCBjb252ZXJ0IGZyb20gaW5jb21w bGV0ZSB0eXBlICVxVCB0byAlcVQiLAorCQkgICAgICBpbnR5cGUsIHR5cGUp OwogCSAgcmV0dXJuIGVycm9yX21hcmtfbm9kZTsKIAl9CiAKICAgICAgIHJ2 YWwgPSBidWlsZF90eXBlX2NvbnZlcnNpb24gKHR5cGUsIGV4cHIpOwogICAg ICAgaWYgKHJ2YWwpCiAJewotCSAgaWYgKHJ2YWwgPT0gZXJyb3JfbWFya19u b2RlKQorCSAgaWYgKChjb21wbGFpbiAmIHRmX2Vycm9yKQorCSAgICAgICYm IHJ2YWwgPT0gZXJyb3JfbWFya19ub2RlKQogCSAgICBlcnJvcl9hdCAobG9j LCAiY29udmVyc2lvbiBvZiAlcUUgZnJvbSAlcVQgdG8gJXFUIGlzIGFtYmln dW91cyIsCiAJCSAgICAgIGV4cHIsIGludHlwZSwgdHlwZSk7CiAJICByZXR1 cm4gcnZhbDsKQEAgLTExMSw3ICsxMTMsNyBAQCBzdGF0aWMgdHJlZQogICAg IHsKICAgICAgIGlmIChUWVBFX1BUUk1FTUZVTkNfUCAoaW50eXBlKQogCSAg fHwgVFJFRV9DT0RFIChpbnR5cGUpID09IE1FVEhPRF9UWVBFKQotCXJldHVy biBjb252ZXJ0X21lbWJlcl9mdW5jX3RvX3B0ciAodHlwZSwgZXhwciwgdGZf d2FybmluZ19vcl9lcnJvcik7CisJcmV0dXJuIGNvbnZlcnRfbWVtYmVyX2Z1 bmNfdG9fcHRyICh0eXBlLCBleHByLCBjb21wbGFpbik7CiAgICAgICBpZiAo VFJFRV9DT0RFIChUUkVFX1RZUEUgKGV4cHIpKSA9PSBQT0lOVEVSX1RZUEUp CiAJcmV0dXJuIGJ1aWxkX25vcCAodHlwZSwgZXhwcik7CiAgICAgICBpbnR5 cGUgPSBUUkVFX1RZUEUgKGV4cHIpOwpAQCAtMTU5LDggKzE2MSw3IEBAIHN0 YXRpYyB0cmVlCiAJICBpZiAoYmluZm8gfHwgc2FtZV9wKQogCSAgICB7CiAJ ICAgICAgaWYgKGJpbmZvKQotCQlleHByID0gYnVpbGRfYmFzZV9wYXRoIChj b2RlLCBleHByLCBiaW5mbywgMCwKLQkJCQkJdGZfd2FybmluZ19vcl9lcnJv cik7CisJCWV4cHIgPSBidWlsZF9iYXNlX3BhdGggKGNvZGUsIGV4cHIsIGJp bmZvLCAwLCBjb21wbGFpbik7CiAJICAgICAgLyogQWRkIGFueSBxdWFsaWZp ZXIgY29udmVyc2lvbnMuICAqLwogCSAgICAgIHJldHVybiBidWlsZF9ub3Ag KHR5cGUsIGV4cHIpOwogCSAgICB9CkBAIC0xNjgsOCArMTY5LDkgQEAgc3Rh dGljIHRyZWUKIAogICAgICAgaWYgKFRZUEVfUFRSTUVNRlVOQ19QICh0eXBl KSkKIAl7Ci0JICBlcnJvcl9hdCAobG9jLCAiY2Fubm90IGNvbnZlcnQgJXFF IGZyb20gdHlwZSAlcVQgdG8gdHlwZSAlcVQiLAotCQkgICAgZXhwciwgaW50 eXBlLCB0eXBlKTsKKwkgIGlmIChjb21wbGFpbiAmIHRmX2Vycm9yKQorCSAg ICBlcnJvcl9hdCAobG9jLCAiY2Fubm90IGNvbnZlcnQgJXFFIGZyb20gdHlw ZSAlcVQgdG8gdHlwZSAlcVQiLAorCQkgICAgICBleHByLCBpbnR5cGUsIHR5 cGUpOwogCSAgcmV0dXJuIGVycm9yX21hcmtfbm9kZTsKIAl9CiAKQEAgLTE3 OCwyMCArMTgwLDIwIEBAIHN0YXRpYyB0cmVlCiAgIGVsc2UgaWYgKChUWVBF X1BUUkRBVEFNRU1fUCAodHlwZSkgJiYgVFlQRV9QVFJEQVRBTUVNX1AgKGlu dHlwZSkpCiAJICAgfHwgKFRZUEVfUFRSTUVNRlVOQ19QICh0eXBlKSAmJiBU WVBFX1BUUk1FTUZVTkNfUCAoaW50eXBlKSkpCiAgICAgcmV0dXJuIGNvbnZl cnRfcHRybWVtICh0eXBlLCBleHByLCAvKmFsbG93X2ludmVyc2VfcD0qL2Zh bHNlLAotCQkJICAgLypjX2Nhc3RfcD0qL2ZhbHNlLCB0Zl93YXJuaW5nX29y X2Vycm9yKTsKKwkJCSAgIC8qY19jYXN0X3A9Ki9mYWxzZSwgY29tcGxhaW4p OwogICBlbHNlIGlmIChUWVBFX1BUUk1FTUZVTkNfUCAoaW50eXBlKSkKICAg ICB7CiAgICAgICBpZiAoIXdhcm5fcG1mMnB0cikKIAl7CiAJICBpZiAoVFJF RV9DT0RFIChleHByKSA9PSBQVFJNRU1fQ1NUKQotCSAgICByZXR1cm4gY3Bf Y29udmVydF90b19wb2ludGVyICh0eXBlLAotCQkJCQkgIFBUUk1FTV9DU1Rf TUVNQkVSIChleHByKSk7CisJICAgIHJldHVybiBjcF9jb252ZXJ0X3RvX3Bv aW50ZXIgKHR5cGUsIFBUUk1FTV9DU1RfTUVNQkVSIChleHByKSwKKwkJCQkJ ICBjb21wbGFpbik7CiAJICBlbHNlIGlmIChUUkVFX0NPREUgKGV4cHIpID09 IE9GRlNFVF9SRUYpCiAJICAgIHsKIAkgICAgICB0cmVlIG9iamVjdCA9IFRS RUVfT1BFUkFORCAoZXhwciwgMCk7CiAJICAgICAgcmV0dXJuIGdldF9tZW1i ZXJfZnVuY3Rpb25fZnJvbV9wdHJmdW5jICgmb2JqZWN0LAogCQkJCQkJICAg ICAgIFRSRUVfT1BFUkFORCAoZXhwciwgMSksCi0JCQkJCQkgICAgICAgdGZf d2FybmluZ19vcl9lcnJvcik7CisJCQkJCQkgICAgICAgY29tcGxhaW4pOwog CSAgICB9CiAJfQogICAgICAgZXJyb3JfYXQgKGxvYywgImNhbm5vdCBjb252 ZXJ0ICVxRSBmcm9tIHR5cGUgJXFUIHRvIHR5cGUgJXFUIiwKQEAgLTIwMSwx NCArMjAzLDE1IEBAIHN0YXRpYyB0cmVlCiAKICAgaWYgKG51bGxfcHRyX2Nz dF9wIChleHByKSkKICAgICB7Ci0gICAgICBpZiAoY19pbmhpYml0X2V2YWx1 YXRpb25fd2FybmluZ3MgPT0gMAorICAgICAgaWYgKChjb21wbGFpbiAmIHRm X3dhcm5pbmcpCisJICAmJiBjX2luaGliaXRfZXZhbHVhdGlvbl93YXJuaW5n cyA9PSAwCiAJICAmJiAhTlVMTFBUUl9UWVBFX1AgKFRSRUVfVFlQRSAoZXhw cikpKQogCXdhcm5pbmdfYXQgKGxvYywgT1BUX1d6ZXJvX2FzX251bGxfcG9p bnRlcl9jb25zdGFudCwKIAkJICAgICJ6ZXJvIGFzIG51bGwgcG9pbnRlciBj b25zdGFudCIpOwogCiAgICAgICBpZiAoVFlQRV9QVFJNRU1GVU5DX1AgKHR5 cGUpKQogCXJldHVybiBidWlsZF9wdHJtZW1mdW5jIChUWVBFX1BUUk1FTUZV TkNfRk5fVFlQRSAodHlwZSksIGV4cHIsIDAsCi0JCQkJIC8qY19jYXN0X3A9 Ki9mYWxzZSwgdGZfd2FybmluZ19vcl9lcnJvcik7CisJCQkJIC8qY19jYXN0 X3A9Ki9mYWxzZSwgY29tcGxhaW4pOwogCiAgICAgICBpZiAoVFlQRV9QVFJE QVRBTUVNX1AgKHR5cGUpKQogCXsKQEAgLTIyMyw3ICsyMjYsOCBAQCBzdGF0 aWMgdHJlZQogICAgIH0KICAgZWxzZSBpZiAoVFlQRV9QVFJNRU1fUCAodHlw ZSkgJiYgSU5URUdSQUxfQ09ERV9QIChmb3JtKSkKICAgICB7Ci0gICAgICBl cnJvcl9hdCAobG9jLCAiaW52YWxpZCBjb252ZXJzaW9uIGZyb20gJXFUIHRv ICVxVCIsIGludHlwZSwgdHlwZSk7CisgICAgICBpZiAoY29tcGxhaW4gJiB0 Zl9lcnJvcikKKwllcnJvcl9hdCAobG9jLCAiaW52YWxpZCBjb252ZXJzaW9u IGZyb20gJXFUIHRvICVxVCIsIGludHlwZSwgdHlwZSk7CiAgICAgICByZXR1 cm4gZXJyb3JfbWFya19ub2RlOwogICAgIH0KIApAQCAtMjMxLDcgKzIzNSw4 IEBAIHN0YXRpYyB0cmVlCiAgICAgewogICAgICAgaWYgKFRZUEVfUFJFQ0lT SU9OIChpbnR5cGUpID09IFBPSU5URVJfU0laRSkKIAlyZXR1cm4gYnVpbGQx IChDT05WRVJUX0VYUFIsIHR5cGUsIGV4cHIpOwotICAgICAgZXhwciA9IGNw X2NvbnZlcnQgKGNfY29tbW9uX3R5cGVfZm9yX3NpemUgKFBPSU5URVJfU0la RSwgMCksIGV4cHIpOworICAgICAgZXhwciA9IGNwX2NvbnZlcnQgKGNfY29t bW9uX3R5cGVfZm9yX3NpemUgKFBPSU5URVJfU0laRSwgMCksIGV4cHIsCisJ CQkgY29tcGxhaW4pOwogICAgICAgLyogTW9kZXMgbWF5IGJlIGRpZmZlcmVu dCBidXQgc2l6ZXMgc2hvdWxkIGJlIHRoZSBzYW1lLiAgVGhlcmUKIAkgaXMg c3VwcG9zZWQgdG8gYmUgc29tZSBpbnRlZ3JhbCB0eXBlIHRoYXQgaXMgdGhl IHNhbWUgd2lkdGgKIAkgYXMgYSBwb2ludGVyLiAgKi8KQEAgLTI0MiwxMCAr MjQ3LDExIEBAIHN0YXRpYyB0cmVlCiAgICAgfQogCiAgIGlmICh0eXBlX3Vu a25vd25fcCAoZXhwcikpCi0gICAgcmV0dXJuIGluc3RhbnRpYXRlX3R5cGUg KHR5cGUsIGV4cHIsIHRmX3dhcm5pbmdfb3JfZXJyb3IpOworICAgIHJldHVy biBpbnN0YW50aWF0ZV90eXBlICh0eXBlLCBleHByLCBjb21wbGFpbik7CiAK LSAgZXJyb3JfYXQgKGxvYywgImNhbm5vdCBjb252ZXJ0ICVxRSBmcm9tIHR5 cGUgJXFUIHRvIHR5cGUgJXFUIiwKLQkgICAgZXhwciwgaW50eXBlLCB0eXBl KTsKKyAgaWYgKGNvbXBsYWluICYgdGZfZXJyb3IpCisgICAgZXJyb3JfYXQg KGxvYywgImNhbm5vdCBjb252ZXJ0ICVxRSBmcm9tIHR5cGUgJXFUIHRvIHR5 cGUgJXFUIiwKKwkgICAgICBleHByLCBpbnR5cGUsIHR5cGUpOwogICByZXR1 cm4gZXJyb3JfbWFya19ub2RlOwogfQogCkBAIC0yNTQsNyArMjYwLDcgQEAg c3RhdGljIHRyZWUKICAgIChzdWNoIGFzIGNvbnZlcnNpb24gZnJvbSBzdWIt dHlwZSB0byBwcml2YXRlIHN1cGVyLXR5cGUpLiAgKi8KIAogc3RhdGljIHRy ZWUKLWNvbnZlcnRfdG9fcG9pbnRlcl9mb3JjZSAodHJlZSB0eXBlLCB0cmVl IGV4cHIpCitjb252ZXJ0X3RvX3BvaW50ZXJfZm9yY2UgKHRyZWUgdHlwZSwg dHJlZSBleHByLCB0c3Vic3RfZmxhZ3NfdCBjb21wbGFpbikKIHsKICAgdHJl ZSBpbnR5cGUgPSBUUkVFX1RZUEUgKGV4cHIpOwogICBlbnVtIHRyZWVfY29k ZSBmb3JtID0gVFJFRV9DT0RFIChpbnR5cGUpOwpAQCAtMjg0LDggKzI5MCw3 IEBAIHN0YXRpYyB0cmVlCiAJICAgIHJldHVybiBlcnJvcl9tYXJrX25vZGU7 CiAJICBpZiAoYmluZm8pCiAJICAgIHsKLQkgICAgICBleHByID0gYnVpbGRf YmFzZV9wYXRoIChjb2RlLCBleHByLCBiaW5mbywgMCwKLQkJCQkgICAgICB0 Zl93YXJuaW5nX29yX2Vycm9yKTsKKwkgICAgICBleHByID0gYnVpbGRfYmFz ZV9wYXRoIChjb2RlLCBleHByLCBiaW5mbywgMCwgY29tcGxhaW4pOwogCSAg ICAgIGlmIChleHByID09IGVycm9yX21hcmtfbm9kZSkKIAkJIHJldHVybiBl cnJvcl9tYXJrX25vZGU7CiAJICAgICAgLyogQWRkIGFueSBxdWFsaWZpZXIg Y29udmVyc2lvbnMuICAqLwpAQCAtMjk3LDcgKzMwMiw3IEBAIHN0YXRpYyB0 cmVlCiAJfQogICAgIH0KIAotICByZXR1cm4gY3BfY29udmVydF90b19wb2lu dGVyICh0eXBlLCBleHByKTsKKyAgcmV0dXJuIGNwX2NvbnZlcnRfdG9fcG9p bnRlciAodHlwZSwgZXhwciwgY29tcGxhaW4pOwogfQogCiAvKiBXZSBhcmUg cGFzc2luZyBzb21ldGhpbmcgdG8gYSBmdW5jdGlvbiB3aGljaCByZXF1aXJl cyBhIHJlZmVyZW5jZS4KQEAgLTMwOSw3ICszMTQsOCBAQCBzdGF0aWMgdHJl ZQogICAgICBJZiBESVJFQ1RfQklORCBpcyBzZXQsIERFQ0wgaXMgdGhlIHJl ZmVyZW5jZSB3ZSdyZSBiaW5kaW5nIHRvLiAgKi8KIAogc3RhdGljIHRyZWUK LWJ1aWxkX3VwX3JlZmVyZW5jZSAodHJlZSB0eXBlLCB0cmVlIGFyZywgaW50 IGZsYWdzLCB0cmVlIGRlY2wpCitidWlsZF91cF9yZWZlcmVuY2UgKHRyZWUg dHlwZSwgdHJlZSBhcmcsIGludCBmbGFncywgdHJlZSBkZWNsLAorCQkgICAg dHN1YnN0X2ZsYWdzX3QgY29tcGxhaW4pCiB7CiAgIHRyZWUgcnZhbDsKICAg dHJlZSBhcmd0eXBlID0gVFJFRV9UWVBFIChhcmcpOwpAQCAtMzQwLDcgKzM0 Niw3IEBAIHN0YXRpYyB0cmVlCiAgIGlmIChydmFsID09IGVycm9yX21hcmtf bm9kZSkKICAgICByZXR1cm4gZXJyb3JfbWFya19ub2RlOwogCi0gIGlmICgo ZmxhZ3MgJiBMT09LVVBfUFJPVEVDVCkKKyAgaWYgKChmbGFncyAmIExPT0tV UF9OT1JNQUwpCiAgICAgICAmJiBUWVBFX01BSU5fVkFSSUFOVCAoYXJndHlw ZSkgIT0gVFlQRV9NQUlOX1ZBUklBTlQgKHRhcmdldF90eXBlKQogICAgICAg JiYgTUFZQkVfQ0xBU1NfVFlQRV9QIChhcmd0eXBlKQogICAgICAgJiYgTUFZ QkVfQ0xBU1NfVFlQRV9QICh0YXJnZXRfdHlwZSkpCkBAIC0zNTEsMTIgKzM1 NywxMiBAQCBzdGF0aWMgdHJlZQogCXJldHVybiBlcnJvcl9tYXJrX25vZGU7 CiAgICAgICBpZiAoYmluZm8gPT0gTlVMTF9UUkVFKQogCXJldHVybiBlcnJv cl9ub3RfYmFzZV90eXBlICh0YXJnZXRfdHlwZSwgYXJndHlwZSk7Ci0gICAg ICBydmFsID0gYnVpbGRfYmFzZV9wYXRoIChQTFVTX0VYUFIsIHJ2YWwsIGJp bmZvLCAxLAotCQkJICAgICAgdGZfd2FybmluZ19vcl9lcnJvcik7CisgICAg ICBydmFsID0gYnVpbGRfYmFzZV9wYXRoIChQTFVTX0VYUFIsIHJ2YWwsIGJp bmZvLCAxLCBjb21wbGFpbik7CiAgICAgfQogICBlbHNlCiAgICAgcnZhbAot ICAgICAgPSBjb252ZXJ0X3RvX3BvaW50ZXJfZm9yY2UgKGJ1aWxkX3BvaW50 ZXJfdHlwZSAodGFyZ2V0X3R5cGUpLCBydmFsKTsKKyAgICAgID0gY29udmVy dF90b19wb2ludGVyX2ZvcmNlIChidWlsZF9wb2ludGVyX3R5cGUgKHRhcmdl dF90eXBlKSwKKwkJCQkgIHJ2YWwsIGNvbXBsYWluKTsKICAgcmV0dXJuIGJ1 aWxkX25vcCAodHlwZSwgcnZhbCk7CiB9CiAKQEAgLTQwMywxNSArNDA5LDEz IEBAIHdhcm5fcmVmX2JpbmRpbmcgKGxvY2F0aW9uX3QgbG9jLCB0cmVlIHJl ZnR5cGUsIHRyCiAKIHRyZWUKIGNvbnZlcnRfdG9fcmVmZXJlbmNlICh0cmVl IHJlZnR5cGUsIHRyZWUgZXhwciwgaW50IGNvbnZ0eXBlLAotCQkgICAgICBp bnQgZmxhZ3MsIHRyZWUgZGVjbCkKKwkJICAgICAgaW50IGZsYWdzLCB0cmVl IGRlY2wsIHRzdWJzdF9mbGFnc190IGNvbXBsYWluKQogewogICB0cmVlIHR5 cGUgPSBUWVBFX01BSU5fVkFSSUFOVCAoVFJFRV9UWVBFIChyZWZ0eXBlKSk7 CiAgIHRyZWUgaW50eXBlOwogICB0cmVlIHJ2YWwgPSBOVUxMX1RSRUU7CiAg IHRyZWUgcnZhbF9hc19jb252ZXJzaW9uID0gTlVMTF9UUkVFOwogICBib29s IGNhbl9jb252ZXJ0X2ludHlwZV90b190eXBlOwotICB0c3Vic3RfZmxhZ3Nf dCBjb21wbGFpbiA9ICgoZmxhZ3MgJiBMT09LVVBfQ09NUExBSU4pCi0JCQkg ICAgID8gdGZfd2FybmluZ19vcl9lcnJvciA6IHRmX25vbmUpOwogICBsb2Nh dGlvbl90IGxvYyA9IEVYUFJfTE9DX09SX0hFUkUgKGV4cHIpOwogCiAgIGlm IChUUkVFX0NPREUgKHR5cGUpID09IEZVTkNUSU9OX1RZUEUKQEAgLTQ1Miwy MSArNDU2LDI2IEBAIGNvbnZlcnRfdG9fcmVmZXJlbmNlICh0cmVlIHJlZnR5 cGUsIHRyZWUgZXhwciwgaW50CiAgIGlmICgoKGNvbnZ0eXBlICYgQ09OVl9T VEFUSUMpICYmIGNhbl9jb252ZXJ0IChpbnR5cGUsIHR5cGUsIGNvbXBsYWlu KSkKICAgICAgIHx8ICgoY29udnR5cGUgJiBDT05WX0lNUExJQ0lUKSAmJiBj YW5fY29udmVydF9pbnR5cGVfdG9fdHlwZSkpCiAgICAgewotICAgICAgaWYg KGZsYWdzICYgTE9PS1VQX0NPTVBMQUlOKQotCXsKLQkgIHRyZWUgdHRsID0g VFJFRV9UWVBFIChyZWZ0eXBlKTsKLQkgIHRyZWUgdHRyID0gbHZhbHVlX3R5 cGUgKGV4cHIpOworICAgICAgeworCXRyZWUgdHRsID0gVFJFRV9UWVBFIChy ZWZ0eXBlKTsKKwl0cmVlIHR0ciA9IGx2YWx1ZV90eXBlIChleHByKTsKIAot CSAgaWYgKCEgcmVhbF9sdmFsdWVfcCAoZXhwcikpCi0JICAgIHdhcm5fcmVm X2JpbmRpbmcgKGxvYywgcmVmdHlwZSwgaW50eXBlLCBkZWNsKTsKKwlpZiAo KGNvbXBsYWluICYgdGZfd2FybmluZykKKwkgICAgJiYgISByZWFsX2x2YWx1 ZV9wIChleHByKSkKKwkgIHdhcm5fcmVmX2JpbmRpbmcgKGxvYywgcmVmdHlw ZSwgaW50eXBlLCBkZWNsKTsKIAotCSAgaWYgKCEgKGNvbnZ0eXBlICYgQ09O Vl9DT05TVCkKLQkJICAgJiYgIWF0X2xlYXN0X2FzX3F1YWxpZmllZF9wICh0 dGwsIHR0cikpCi0JICAgIHBlcm1lcnJvciAobG9jLCAiY29udmVyc2lvbiBm cm9tICVxVCB0byAlcVQgZGlzY2FyZHMgcXVhbGlmaWVycyIsCi0JCSAgICAg ICB0dHIsIHJlZnR5cGUpOwotCX0KKwlpZiAoISAoY29udnR5cGUgJiBDT05W X0NPTlNUKQorCSAgICAmJiAhYXRfbGVhc3RfYXNfcXVhbGlmaWVkX3AgKHR0 bCwgdHRyKSkKKwkgIHsKKwkgICAgaWYgKGNvbXBsYWluICYgdGZfZXJyb3Ip CisJICAgICAgcGVybWVycm9yIChsb2MsICJjb252ZXJzaW9uIGZyb20gJXFU IHRvICVxVCBkaXNjYXJkcyBxdWFsaWZpZXJzIiwKKwkJCSB0dHIsIHJlZnR5 cGUpOworCSAgICBlbHNlCisJICAgICAgcmV0dXJuIGVycm9yX21hcmtfbm9k ZTsKKwkgIH0KKyAgICAgIH0KIAotICAgICAgcmV0dXJuIGJ1aWxkX3VwX3Jl ZmVyZW5jZSAocmVmdHlwZSwgZXhwciwgZmxhZ3MsIGRlY2wpOworICAgICAg cmV0dXJuIGJ1aWxkX3VwX3JlZmVyZW5jZSAocmVmdHlwZSwgZXhwciwgZmxh Z3MsIGRlY2wsIGNvbXBsYWluKTsKICAgICB9CiAgIGVsc2UgaWYgKChjb252 dHlwZSAmIENPTlZfUkVJTlRFUlBSRVQpICYmIGx2YWx1ZV9wIChleHByKSkK ICAgICB7CkBAIC00NzcsMjggKzQ4NiwyOSBAQCBjb252ZXJ0X3RvX3JlZmVy ZW5jZSAodHJlZSByZWZ0eXBlLCB0cmVlIGV4cHIsIGludAogCiAgICAgICAv KiBCKiBicDsgQSYgYXIgPSAoQSYpYnA7IGlzIHZhbGlkLCBidXQgaXQncyBw cm9iYWJseSBub3Qgd2hhdCB0aGV5CiAJIG1lYW50LiAgKi8KLSAgICAgIGlm IChUUkVFX0NPREUgKGludHlwZSkgPT0gUE9JTlRFUl9UWVBFCisgICAgICBp ZiAoKGNvbXBsYWluICYgdGZfd2FybmluZykKKwkgICYmIFRSRUVfQ09ERSAo aW50eXBlKSA9PSBQT0lOVEVSX1RZUEUKIAkgICYmIChjb21wdHlwZXMgKFRS RUVfVFlQRSAoaW50eXBlKSwgdHlwZSwKIAkJCSBDT01QQVJFX0JBU0UgfCBD T01QQVJFX0RFUklWRUQpKSkKIAl3YXJuaW5nX2F0IChsb2MsIDAsICJjYXN0 aW5nICVxVCB0byAlcVQgZG9lcyBub3QgZGVyZWZlcmVuY2UgcG9pbnRlciIs CiAJCSAgICBpbnR5cGUsIHJlZnR5cGUpOwogCi0gICAgICBydmFsID0gY3Bf YnVpbGRfYWRkcl9leHByIChleHByLCB0Zl93YXJuaW5nX29yX2Vycm9yKTsK KyAgICAgIHJ2YWwgPSBjcF9idWlsZF9hZGRyX2V4cHIgKGV4cHIsIGNvbXBs YWluKTsKICAgICAgIGlmIChydmFsICE9IGVycm9yX21hcmtfbm9kZSkKIAly dmFsID0gY29udmVydF9mb3JjZSAoYnVpbGRfcG9pbnRlcl90eXBlIChUUkVF X1RZUEUgKHJlZnR5cGUpKSwKLQkJCSAgICAgIHJ2YWwsIDApOworCQkJICAg ICAgcnZhbCwgMCwgY29tcGxhaW4pOwogICAgICAgaWYgKHJ2YWwgIT0gZXJy b3JfbWFya19ub2RlKQogCXJ2YWwgPSBidWlsZDEgKE5PUF9FWFBSLCByZWZ0 eXBlLCBydmFsKTsKICAgICB9CiAgIGVsc2UKICAgICB7CiAgICAgICBydmFs ID0gY29udmVydF9mb3JfaW5pdGlhbGl6YXRpb24gKE5VTExfVFJFRSwgdHlw ZSwgZXhwciwgZmxhZ3MsCi0JCQkJCSBJQ1JfQ09OVkVSVElORywgMCwgMCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGZf d2FybmluZ19vcl9lcnJvcik7CisJCQkJCSBJQ1JfQ09OVkVSVElORywgMCwg MCwgY29tcGxhaW4pOwogICAgICAgaWYgKHJ2YWwgPT0gTlVMTF9UUkVFIHx8 IHJ2YWwgPT0gZXJyb3JfbWFya19ub2RlKQogCXJldHVybiBydmFsOwotICAg ICAgd2Fybl9yZWZfYmluZGluZyAobG9jLCByZWZ0eXBlLCBpbnR5cGUsIGRl Y2wpOwotICAgICAgcnZhbCA9IGJ1aWxkX3VwX3JlZmVyZW5jZSAocmVmdHlw ZSwgcnZhbCwgZmxhZ3MsIGRlY2wpOworICAgICAgaWYgKGNvbXBsYWluICYg dGZfd2FybmluZykKKwl3YXJuX3JlZl9iaW5kaW5nIChsb2MsIHJlZnR5cGUs IGludHlwZSwgZGVjbCk7CisgICAgICBydmFsID0gYnVpbGRfdXBfcmVmZXJl bmNlIChyZWZ0eXBlLCBydmFsLCBmbGFncywgZGVjbCwgY29tcGxhaW4pOwog ICAgIH0KIAogICBpZiAocnZhbCkKQEAgLTUwNyw3ICs1MTcsNyBAQCBjb252 ZXJ0X3RvX3JlZmVyZW5jZSAodHJlZSByZWZ0eXBlLCB0cmVlIGV4cHIsIGlu dAogICAgICAgcmV0dXJuIHJ2YWw7CiAgICAgfQogCi0gIGlmIChmbGFncyAm IExPT0tVUF9DT01QTEFJTikKKyAgaWYgKGNvbXBsYWluICYgdGZfZXJyb3Ip CiAgICAgZXJyb3JfYXQgKGxvYywgImNhbm5vdCBjb252ZXJ0IHR5cGUgJXFU IHRvIHR5cGUgJXFUIiwgaW50eXBlLCByZWZ0eXBlKTsKIAogICByZXR1cm4g ZXJyb3JfbWFya19ub2RlOwpAQCAtNTk1LDkgKzYwNSw5IEBAIGNwX2ZvbGRf Y29udmVydCAodHJlZSB0eXBlLCB0cmVlIGV4cHIpCiAvKiBDKysgY29udmVy c2lvbnMsIHByZWZlcmVuY2UgdG8gc3RhdGljIGNhc3QgY29udmVyc2lvbnMu ICAqLwogCiB0cmVlCi1jcF9jb252ZXJ0ICh0cmVlIHR5cGUsIHRyZWUgZXhw cikKK2NwX2NvbnZlcnQgKHRyZWUgdHlwZSwgdHJlZSBleHByLCB0c3Vic3Rf ZmxhZ3NfdCBjb21wbGFpbikKIHsKLSAgcmV0dXJuIG9jcF9jb252ZXJ0ICh0 eXBlLCBleHByLCBDT05WX09MRF9DT05WRVJULCBMT09LVVBfTk9STUFMKTsK KyAgcmV0dXJuIG9jcF9jb252ZXJ0ICh0eXBlLCBleHByLCBDT05WX09MRF9D T05WRVJULCBMT09LVVBfTk9STUFMLCBjb21wbGFpbik7CiB9CiAKIC8qIEMr KyBlcXVpdmFsZW50IG9mIGNvbnZlcnRfYW5kX2NoZWNrIGJ1dCB1c2luZyBj cF9jb252ZXJ0IGFzIHRoZQpAQCAtNjA4LDE2ICs2MTgsMTcgQEAgdHJlZQog ICAgaS5lLiBiZWNhdXNlIG9mIGxhbmd1YWdlIHJ1bGVzIGFuZCBub3QgYmVj YXVzZSBvZiBhbiBleHBsaWNpdCBjYXN0LiAgKi8KIAogdHJlZQotY3BfY29u dmVydF9hbmRfY2hlY2sgKHRyZWUgdHlwZSwgdHJlZSBleHByKQorY3BfY29u dmVydF9hbmRfY2hlY2sgKHRyZWUgdHlwZSwgdHJlZSBleHByLCB0c3Vic3Rf ZmxhZ3NfdCBjb21wbGFpbikKIHsKICAgdHJlZSByZXN1bHQ7CiAKICAgaWYg KFRSRUVfVFlQRSAoZXhwcikgPT0gdHlwZSkKICAgICByZXR1cm4gZXhwcjsK ICAgCi0gIHJlc3VsdCA9IGNwX2NvbnZlcnQgKHR5cGUsIGV4cHIpOworICBy ZXN1bHQgPSBjcF9jb252ZXJ0ICh0eXBlLCBleHByLCBjb21wbGFpbik7CiAK LSAgaWYgKGNfaW5oaWJpdF9ldmFsdWF0aW9uX3dhcm5pbmdzID09IDAKKyAg aWYgKChjb21wbGFpbiAmIHRmX3dhcm5pbmcpCisgICAgICAmJiBjX2luaGli aXRfZXZhbHVhdGlvbl93YXJuaW5ncyA9PSAwCiAgICAgICAmJiAhVFJFRV9P VkVSRkxPV19QIChleHByKQogICAgICAgJiYgcmVzdWx0ICE9IGVycm9yX21h cmtfbm9kZSkKICAgICB3YXJuaW5nc19mb3JfY29udmVydF9hbmRfY2hlY2sg KHR5cGUsIGV4cHIsIHJlc3VsdCk7CkBAIC02MzAsNyArNjQxLDggQEAgdHJl ZQogICAgRkxBR1MgaW5kaWNhdGVzIGhvdyB3ZSBzaG91bGQgYmVoYXZlLiAg Ki8KIAogdHJlZQotb2NwX2NvbnZlcnQgKHRyZWUgdHlwZSwgdHJlZSBleHBy LCBpbnQgY29udnR5cGUsIGludCBmbGFncykKK29jcF9jb252ZXJ0ICh0cmVl IHR5cGUsIHRyZWUgZXhwciwgaW50IGNvbnZ0eXBlLCBpbnQgZmxhZ3MsCisJ ICAgICB0c3Vic3RfZmxhZ3NfdCBjb21wbGFpbikKIHsKICAgdHJlZSBlID0g ZXhwcjsKICAgZW51bSB0cmVlX2NvZGUgY29kZSA9IFRSRUVfQ09ERSAodHlw ZSk7CkBAIC02NDcsNyArNjU5LDggQEAgdHJlZQogICBpZiAoKGludmFsaWRf Y29udl9kaWFnCiAgICAgICAgPSB0YXJnZXRtLmludmFsaWRfY29udmVyc2lv biAoVFJFRV9UWVBFIChleHByKSwgdHlwZSkpKQogICAgIHsKLSAgICAgIGVy cm9yIChpbnZhbGlkX2NvbnZfZGlhZyk7CisgICAgICBpZiAoY29tcGxhaW4g JiB0Zl9lcnJvcikKKwllcnJvciAoaW52YWxpZF9jb252X2RpYWcpOwogICAg ICAgcmV0dXJuIGVycm9yX21hcmtfbm9kZTsKICAgICB9CiAKQEAgLTY5Niw3 ICs3MDksNyBAQCB0cmVlCiAKICAgaWYgKGNvZGUgPT0gVk9JRF9UWVBFICYm IChjb252dHlwZSAmIENPTlZfU1RBVElDKSkKICAgICB7Ci0gICAgICBlID0g Y29udmVydF90b192b2lkIChlLCBJQ1ZfQ0FTVCwgdGZfd2FybmluZ19vcl9l cnJvcik7CisgICAgICBlID0gY29udmVydF90b192b2lkIChlLCBJQ1ZfQ0FT VCwgY29tcGxhaW4pOwogICAgICAgcmV0dXJuIGU7CiAgICAgfQogCkBAIC03 MTQsOSArNzI3LDE0IEBAIHRyZWUKIAkgICAgICAgJiYgISAoY29udnR5cGUg JiBDT05WX1NUQVRJQykpCiAJICAgICAgfHwgVFJFRV9DT0RFIChpbnR5cGUp ID09IFBPSU5URVJfVFlQRSkKIAkgICAgewotCSAgICAgIGlmIChmbGFncyAm IExPT0tVUF9DT01QTEFJTikKLQkJcGVybWVycm9yIChsb2MsICJjb252ZXJz aW9uIGZyb20gJXEjVCB0byAlcSNUIiwgaW50eXBlLCB0eXBlKTsKLQkgICAg ICBpZiAoIWZsYWdfcGVybWlzc2l2ZSkKKwkgICAgICBpZiAoY29tcGxhaW4g JiB0Zl9lcnJvcikKKwkJeworCQkgIHBlcm1lcnJvciAobG9jLCAiY29udmVy c2lvbiBmcm9tICVxI1QgdG8gJXEjVCIsCisJCQkgICAgIGludHlwZSwgdHlw ZSk7CisJCSAgaWYgKCFmbGFnX3Blcm1pc3NpdmUpCisJCSAgICByZXR1cm4g ZXJyb3JfbWFya19ub2RlOworCQl9CisJICAgICAgZWxzZQogCQlyZXR1cm4g ZXJyb3JfbWFya19ub2RlOwogCSAgICB9CiAKQEAgLTcyNyw3ICs3NDUsOCBA QCB0cmVlCiAJICAgICB0aGUgb3JpZ2luYWwgdmFsdWUgaXMgd2l0aGluIHRo ZSByYW5nZSBvZiB0aGUgZW51bWVyYXRpb24KIAkgICAgIHZhbHVlcy4gT3Ro ZXJ3aXNlLCB0aGUgcmVzdWx0aW5nIGVudW1lcmF0aW9uIHZhbHVlIGlzCiAJ ICAgICB1bnNwZWNpZmllZC4gICovCi0JICBpZiAoVFJFRV9DT0RFIChleHBy KSA9PSBJTlRFR0VSX0NTVAorCSAgaWYgKChjb21wbGFpbiAmIHRmX3dhcm5p bmcpCisJICAgICAgJiYgVFJFRV9DT0RFIChleHByKSA9PSBJTlRFR0VSX0NT VAogCSAgICAgICYmICFpbnRfZml0c190eXBlX3AgKGV4cHIsIEVOVU1fVU5E RVJMWUlOR19UWVBFICh0eXBlKSkpCiAJICAgIHdhcm5pbmdfYXQgKGxvYywg T1BUX1djb252ZXJzaW9uLCAKIAkJCSJ0aGUgcmVzdWx0IG9mIHRoZSBjb252 ZXJzaW9uIGlzIHVuc3BlY2lmaWVkIGJlY2F1c2UgIgpAQCAtNzQwLDcgKzc1 OSw3IEBAIHRyZWUKIAkgIHJ2YWwgPSBidWlsZF90eXBlX2NvbnZlcnNpb24g KHR5cGUsIGUpOwogCSAgaWYgKHJ2YWwpCiAJICAgIHJldHVybiBydmFsOwot CSAgaWYgKGZsYWdzICYgTE9PS1VQX0NPTVBMQUlOKQorCSAgaWYgKGNvbXBs YWluICYgdGZfZXJyb3IpCiAJICAgIGVycm9yX2F0IChsb2MsICIlcSNUIHVz ZWQgd2hlcmUgYSAlcVQgd2FzIGV4cGVjdGVkIiwgaW50eXBlLCB0eXBlKTsK IAkgIHJldHVybiBlcnJvcl9tYXJrX25vZGU7CiAJfQpAQCAtNzQ4LDggKzc2 NywxMCBAQCB0cmVlCiAJewogCSAgaWYgKFRSRUVfQ09ERSAoaW50eXBlKSA9 PSBWT0lEX1RZUEUpCiAJICAgIHsKLQkgICAgICBlcnJvcl9hdCAobG9jLCAi Y291bGQgbm90IGNvbnZlcnQgJXFFIGZyb20gJTx2b2lkJT4gdG8gJTxib29s JT4iLAotCQkJZXhwcik7CisJICAgICAgaWYgKGNvbXBsYWluICYgdGZfZXJy b3IpCisJCWVycm9yX2F0IChsb2MsCisJCQkgICJjb3VsZCBub3QgY29udmVy dCAlcUUgZnJvbSAlPHZvaWQlPiB0byAlPGJvb2wlPiIsCisJCQkgIGV4cHIp OwogCSAgICAgIHJldHVybiBlcnJvcl9tYXJrX25vZGU7CiAJICAgIH0KIApA QCAtNzY4LDcgKzc4OSw3IEBAIHRyZWUKICAgaWYgKE5VTExQVFJfVFlQRV9Q ICh0eXBlKSAmJiBlICYmIG51bGxfcHRyX2NzdF9wIChlKSkKICAgICByZXR1 cm4gbnVsbHB0cl9ub2RlOwogICBpZiAoUE9JTlRFUl9UWVBFX1AgKHR5cGUp IHx8IFRZUEVfUFRSTUVNX1AgKHR5cGUpKQotICAgIHJldHVybiBmb2xkX2lm X25vdF9pbl90ZW1wbGF0ZSAoY3BfY29udmVydF90b19wb2ludGVyICh0eXBl LCBlKSk7CisgICAgcmV0dXJuIGZvbGRfaWZfbm90X2luX3RlbXBsYXRlIChj cF9jb252ZXJ0X3RvX3BvaW50ZXIgKHR5cGUsIGUsIGNvbXBsYWluKSk7CiAg IGlmIChjb2RlID09IFZFQ1RPUl9UWVBFKQogICAgIHsKICAgICAgIHRyZWUg aW5fdnR5cGUgPSBUUkVFX1RZUEUgKGUpOwpAQCAtNzc4LDggKzc5OSw5IEBA IHRyZWUKIAkgIHJldF92YWwgPSBidWlsZF90eXBlX2NvbnZlcnNpb24gKHR5 cGUsIGUpOwogCSAgaWYgKHJldF92YWwpCiAJICAgIHJldHVybiByZXRfdmFs OwotCSAgaWYgKGZsYWdzICYgTE9PS1VQX0NPTVBMQUlOKQotCSAgICBlcnJv cl9hdCAobG9jLCAiJXEjVCB1c2VkIHdoZXJlIGEgJXFUIHdhcyBleHBlY3Rl ZCIsIGluX3Z0eXBlLCB0eXBlKTsKKwkgIGlmIChjb21wbGFpbiAmIHRmX2Vy cm9yKQorCSAgICBlcnJvcl9hdCAobG9jLCAiJXEjVCB1c2VkIHdoZXJlIGEg JXFUIHdhcyBleHBlY3RlZCIsCisJCSAgICAgIGluX3Z0eXBlLCB0eXBlKTsK IAkgIHJldHVybiBlcnJvcl9tYXJrX25vZGU7CiAJfQogICAgICAgcmV0dXJu IGZvbGRfaWZfbm90X2luX3RlbXBsYXRlIChjb252ZXJ0X3RvX3ZlY3RvciAo dHlwZSwgZSkpOwpAQCAtNzkyLDEwICs4MTQsMTAgQEAgdHJlZQogCSAgcnZh bCA9IGJ1aWxkX3R5cGVfY29udmVyc2lvbiAodHlwZSwgZSk7CiAJICBpZiAo cnZhbCkKIAkgICAgcmV0dXJuIHJ2YWw7Ci0JICBlbHNlCi0JICAgIGlmIChm bGFncyAmIExPT0tVUF9DT01QTEFJTikKLQkgICAgICBlcnJvcl9hdCAobG9j LCAiJXEjVCB1c2VkIHdoZXJlIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWUgd2Fz IGV4cGVjdGVkIiwKLQkJCVRSRUVfVFlQRSAoZSkpOworCSAgZWxzZSBpZiAo Y29tcGxhaW4gJiB0Zl9lcnJvcikKKwkgICAgZXJyb3JfYXQgKGxvYywKKwkJ ICAgICAgIiVxI1QgdXNlZCB3aGVyZSBhIGZsb2F0aW5nIHBvaW50IHZhbHVl IHdhcyBleHBlY3RlZCIsCisJCSAgICAgIFRSRUVfVFlQRSAoZSkpOwogCX0K ICAgICAgIGlmIChjb2RlID09IFJFQUxfVFlQRSkKIAlyZXR1cm4gZm9sZF9p Zl9ub3RfaW5fdGVtcGxhdGUgKGNvbnZlcnRfdG9fcmVhbCAodHlwZSwgZSkp OwpAQCAtODI2LDMzICs4NDgsMzEgQEAgdHJlZQogCXJldHVybiBlcnJvcl9t YXJrX25vZGU7CiAKICAgICAgIGlmIChCUkFDRV9FTkNMT1NFRF9JTklUSUFM SVpFUl9QIChjdG9yKSkKLQljdG9yID0gcGVyZm9ybV9pbXBsaWNpdF9jb252 ZXJzaW9uICh0eXBlLCBjdG9yLCB0Zl93YXJuaW5nX29yX2Vycm9yKTsKKwlj dG9yID0gcGVyZm9ybV9pbXBsaWNpdF9jb252ZXJzaW9uICh0eXBlLCBjdG9y LCBjb21wbGFpbik7CiAgICAgICBlbHNlIGlmICgoZmxhZ3MgJiBMT09LVVBf T05MWUNPTlZFUlRJTkcpCiAJICAgICAgICYmICEgKENMQVNTX1RZUEVfUCAo ZHR5cGUpICYmIERFUklWRURfRlJPTV9QICh0eXBlLCBkdHlwZSkpKQogCS8q IEZvciBjb3B5LWluaXRpYWxpemF0aW9uLCBmaXJzdCB3ZSBjcmVhdGUgYSB0 ZW1wIG9mIHRoZSBwcm9wZXIgdHlwZQogCSAgIHdpdGggYSB1c2VyLWRlZmlu ZWQgY29udmVyc2lvbiBzZXF1ZW5jZSwgdGhlbiB3ZSBkaXJlY3QtaW5pdGlh bGl6ZQogCSAgIHRoZSB0YXJnZXQgd2l0aCB0aGUgdGVtcCAoc2VlIFtkY2wu aW5pdF0pLiAgKi8KLQljdG9yID0gYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNp b24gKHR5cGUsIGN0b3IsIGZsYWdzLAotCQkJCQkgICB0Zl93YXJuaW5nX29y X2Vycm9yKTsKKwljdG9yID0gYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb24g KHR5cGUsIGN0b3IsIGZsYWdzLCBjb21wbGFpbik7CiAgICAgICBlbHNlCiAJ ewogCSAgVkVDKHRyZWUsZ2MpICpjdG9yX3ZlYyA9IG1ha2VfdHJlZV92ZWN0 b3Jfc2luZ2xlIChjdG9yKTsKIAkgIGN0b3IgPSBidWlsZF9zcGVjaWFsX21l bWJlcl9jYWxsIChOVUxMX1RSRUUsCiAJCQkJCSAgICBjb21wbGV0ZV9jdG9y X2lkZW50aWZpZXIsCiAJCQkJCSAgICAmY3Rvcl92ZWMsCi0JCQkJCSAgICB0 eXBlLCBmbGFncywKLQkJCQkJICAgIHRmX3dhcm5pbmdfb3JfZXJyb3IpOwor CQkJCQkgICAgdHlwZSwgZmxhZ3MsIGNvbXBsYWluKTsKIAkgIHJlbGVhc2Vf dHJlZV92ZWN0b3IgKGN0b3JfdmVjKTsKIAl9CiAgICAgICBpZiAoY3RvcikK LQlyZXR1cm4gYnVpbGRfY3BsdXNfbmV3ICh0eXBlLCBjdG9yLCB0Zl93YXJu aW5nX29yX2Vycm9yKTsKKwlyZXR1cm4gYnVpbGRfY3BsdXNfbmV3ICh0eXBl LCBjdG9yLCBjb21wbGFpbik7CiAgICAgfQogCi0gIGlmIChmbGFncyAmIExP T0tVUF9DT01QTEFJTikKKyAgaWYgKGNvbXBsYWluICYgdGZfZXJyb3IpCiAg ICAgewogICAgICAgLyogSWYgdGhlIGNvbnZlcnNpb24gZmFpbGVkIGFuZCBl eHByIHdhcyBhbiBpbnZhbGlkIHVzZSBvZiBwb2ludGVyIHRvCiAJIG1lbWJl ciBmdW5jdGlvbiwgdHJ5IHRvIHJlcG9ydCBhIG1lYW5pbmdmdWwgZXJyb3Iu ICAqLwotICAgICAgaWYgKGludmFsaWRfbm9uc3RhdGljX21lbWZuX3AgKGV4 cHIsIHRmX3dhcm5pbmdfb3JfZXJyb3IpKQorICAgICAgaWYgKGludmFsaWRf bm9uc3RhdGljX21lbWZuX3AgKGV4cHIsIGNvbXBsYWluKSkKIAkvKiBXZSBk aXNwbGF5ZWQgdGhlIGVycm9yIG1lc3NhZ2UuICAqLzsKICAgICAgIGVsc2UK IAllcnJvcl9hdCAobG9jLCAiY29udmVyc2lvbiBmcm9tICVxVCB0byBub24t c2NhbGFyIHR5cGUgJXFUIHJlcXVlc3RlZCIsCkBAIC0xNDE2LDcgKzE0MzYs OCBAQCBjb252ZXJ0ICh0cmVlIHR5cGUsIHRyZWUgZXhwcikKICAgICByZXR1 cm4gZm9sZF9pZl9ub3RfaW5fdGVtcGxhdGUgKGJ1aWxkX25vcCAodHlwZSwg ZXhwcikpOwogCiAgIHJldHVybiBvY3BfY29udmVydCAodHlwZSwgZXhwciwg Q09OVl9PTERfQ09OVkVSVCwKLQkJICAgICAgTE9PS1VQX05PUk1BTHxMT09L VVBfTk9fQ09OVkVSU0lPTik7CisJCSAgICAgIExPT0tVUF9OT1JNQUx8TE9P S1VQX05PX0NPTlZFUlNJT04sCisJCSAgICAgIHRmX3dhcm5pbmdfb3JfZXJy b3IpOwogfQogCiAvKiBMaWtlIGNwX2NvbnZlcnQsIGV4Y2VwdCBwZXJtaXQg Y29udmVyc2lvbnMgdG8gdGFrZSBwbGFjZSB3aGljaApAQCAtMTQyNCwxOCAr MTQ0NSwxOSBAQCBjb252ZXJ0ICh0cmVlIHR5cGUsIHRyZWUgZXhwcikKICAg IChzdWNoIGFzIGNvbnZlcnNpb24gZnJvbSBzdWItdHlwZSB0byBwcml2YXRl IHN1cGVyLXR5cGUpLiAgKi8KIAogdHJlZQotY29udmVydF9mb3JjZSAodHJl ZSB0eXBlLCB0cmVlIGV4cHIsIGludCBjb252dHlwZSkKK2NvbnZlcnRfZm9y Y2UgKHRyZWUgdHlwZSwgdHJlZSBleHByLCBpbnQgY29udnR5cGUsIHRzdWJz dF9mbGFnc190IGNvbXBsYWluKQogewogICB0cmVlIGUgPSBleHByOwogICBl bnVtIHRyZWVfY29kZSBjb2RlID0gVFJFRV9DT0RFICh0eXBlKTsKIAogICBp ZiAoY29kZSA9PSBSRUZFUkVOQ0VfVFlQRSkKICAgICByZXR1cm4gKGZvbGRf aWZfbm90X2luX3RlbXBsYXRlCi0JICAgIChjb252ZXJ0X3RvX3JlZmVyZW5j ZSAodHlwZSwgZSwgQ09OVl9DX0NBU1QsIExPT0tVUF9DT01QTEFJTiwKLQkJ CQkgICBOVUxMX1RSRUUpKSk7CisJICAgIChjb252ZXJ0X3RvX3JlZmVyZW5j ZSAodHlwZSwgZSwgQ09OVl9DX0NBU1QsIExPT0tVUF9OT1JNQUwsCisJCQkJ ICAgTlVMTF9UUkVFLCBjb21wbGFpbikpKTsKIAogICBpZiAoY29kZSA9PSBQ T0lOVEVSX1RZUEUpCi0gICAgcmV0dXJuIGZvbGRfaWZfbm90X2luX3RlbXBs YXRlIChjb252ZXJ0X3RvX3BvaW50ZXJfZm9yY2UgKHR5cGUsIGUpKTsKKyAg ICByZXR1cm4gZm9sZF9pZl9ub3RfaW5fdGVtcGxhdGUgKGNvbnZlcnRfdG9f cG9pbnRlcl9mb3JjZSAodHlwZSwgZSwKKwkJCQkJCQkgICAgICBjb21wbGFp bikpOwogCiAgIC8qIEZyb20gdHlwZWNrLmMgY29udmVydF9mb3JfYXNzaWdu bWVudCAqLwogICBpZiAoKChUUkVFX0NPREUgKFRSRUVfVFlQRSAoZSkpID09 IFBPSU5URVJfVFlQRSAmJiBUUkVFX0NPREUgKGUpID09IEFERFJfRVhQUgpA QCAtMTQ0Niw5ICsxNDY4LDkgQEAgdHJlZQogICAgICAgJiYgVFlQRV9QVFJN RU1GVU5DX1AgKHR5cGUpKQogICAgIC8qIGNvbXBhdGlibGUgcG9pbnRlciB0 byBtZW1iZXIgZnVuY3Rpb25zLiAgKi8KICAgICByZXR1cm4gYnVpbGRfcHRy bWVtZnVuYyAoVFlQRV9QVFJNRU1GVU5DX0ZOX1RZUEUgKHR5cGUpLCBlLCAx LAotCQkJICAgICAvKmNfY2FzdF9wPSovMSwgdGZfd2FybmluZ19vcl9lcnJv cik7CisJCQkgICAgIC8qY19jYXN0X3A9Ki8xLCBjb21wbGFpbik7CiAKLSAg cmV0dXJuIG9jcF9jb252ZXJ0ICh0eXBlLCBlLCBDT05WX0NfQ0FTVHxjb252 dHlwZSwgTE9PS1VQX05PUk1BTCk7CisgIHJldHVybiBvY3BfY29udmVydCAo dHlwZSwgZSwgQ09OVl9DX0NBU1R8Y29udnR5cGUsIExPT0tVUF9OT1JNQUws IGNvbXBsYWluKTsKIH0KIAogLyogQ29udmVydCBhbiBhZ2dyZWdhdGUgRVhQ UiB0byB0eXBlIFhUWVBFLiAgSWYgYSBjb252ZXJzaW9uCkluZGV4OiBjcC9j cC10cmVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3AvY3AtdHJl ZS5oCShyZXZpc2lvbiAxODgyMDMpCisrKyBjcC9jcC10cmVlLmgJKHdvcmtp bmcgY29weSkKQEAgLTQzNzAsMTcgKzQzNzAsMTMgQEAgZW51bSBvdmVybG9h ZF9mbGFncyB7IE5PX1NQRUNJQUwgPSAwLCBEVE9SX0ZMQUcsIFQKICAgIHBy b2JhYmx5IGJlIG1vZGlmaWVkIHRvIGFjY2VwdCBleHBsaWNpdCBib29sZWFu IGZsYWdzIGZvciB0aGUKICAgIGJlaGF2aW9ycyByZWxldmFudCB0byB0aGVt LiAgKi8KIC8qIENoZWNrIGZvciBhY2Nlc3MgdmlvbGF0aW9ucy4gICovCi0j ZGVmaW5lIExPT0tVUF9QUk9URUNUICgxIDw8IDApCi0vKiBDb21wbGFpbiBp ZiBubyBzdWl0YWJsZSBtZW1iZXIgZnVuY3Rpb24gbWF0Y2hpbmcgdGhlIGFy Z3VtZW50cyBpcwotICAgZm91bmQuICAqLwotI2RlZmluZSBMT09LVVBfQ09N UExBSU4gKDEgPDwgMSkKLSNkZWZpbmUgTE9PS1VQX05PUk1BTCAoTE9PS1VQ X1BST1RFQ1QgfCBMT09LVVBfQ09NUExBSU4pCisjZGVmaW5lIExPT0tVUF9O T1JNQUwgKDEgPDwgMCkKIC8qIEV2ZW4gaWYgdGhlIGZ1bmN0aW9uIGZvdW5k IGJ5IGxvb2t1cCBpcyBhIHZpcnR1YWwgZnVuY3Rpb24sIGl0CiAgICBzaG91 bGQgYmUgY2FsbGVkIGRpcmVjdGx5LiAgKi8KLSNkZWZpbmUgTE9PS1VQX05P TlZJUlRVQUwgKDEgPDwgMikKKyNkZWZpbmUgTE9PS1VQX05PTlZJUlRVQUwg KDEgPDwgMSkKIC8qIE5vbi1jb252ZXJ0aW5nIChpLmUuLCAiZXhwbGljaXQi KSBjb25zdHJ1Y3RvcnMgYXJlIG5vdCB0cmllZC4gIFRoaXMgZmxhZwogICAg aW5kaWNhdGVzIHRoYXQgd2UgYXJlIG5vdCBwZXJmb3JtaW5nIGRpcmVjdC1p bml0aWFsaXphdGlvbi4gICovCi0jZGVmaW5lIExPT0tVUF9PTkxZQ09OVkVS VElORyAoMSA8PCAzKQorI2RlZmluZSBMT09LVVBfT05MWUNPTlZFUlRJTkcg KDEgPDwgMikKICNkZWZpbmUgTE9PS1VQX0lNUExJQ0lUIChMT09LVVBfTk9S TUFMIHwgTE9PS1VQX09OTFlDT05WRVJUSU5HKQogLyogSWYgYSB0ZW1wb3Jh cnkgaXMgY3JlYXRlZCwgaXQgc2hvdWxkIGJlIGNyZWF0ZWQgc28gdGhhdCBp dCBsaXZlcwogICAgYXMgbG9uZyBhcyB0aGUgY3VycmVudCB2YXJpYWJsZSBi aW5kaW5nczsgb3RoZXJ3aXNlIGl0IG9ubHkgbGl2ZXMKQEAgLTQzODgsMjAg KzQzODQsMjAgQEAgZW51bSBvdmVybG9hZF9mbGFncyB7IE5PX1NQRUNJQUwg PSAwLCBEVE9SX0ZMQUcsIFQKICAgIGRpcmVjdC1pbml0aWFsaXphdGlvbiBp biBjYXNlcyB3aGVyZSBvdGhlciBwYXJ0cyBvZiB0aGUgY29tcGlsZXIKICAg IGhhdmUgYWxyZWFkeSBnZW5lcmF0ZWQgYSB0ZW1wb3JhcnksIHN1Y2ggYXMg cmVmZXJlbmNlCiAgICBpbml0aWFsaXphdGlvbiBhbmQgdGhlIGNhdGNoIHBh cmFtZXRlci4gICovCi0jZGVmaW5lIERJUkVDVF9CSU5EICgxIDw8IDQpCisj ZGVmaW5lIERJUkVDVF9CSU5EICgxIDw8IDMpCiAvKiBXZSdyZSBwZXJmb3Jt aW5nIGEgdXNlci1kZWZpbmVkIGNvbnZlcnNpb24sIHNvIG1vcmUgdXNlci1k ZWZpbmVkCiAgICBjb252ZXJzaW9ucyBhcmUgbm90IHBlcm1pdHRlZCAob25s eSBidWlsdC1pbiBjb252ZXJzaW9ucykuICAqLwotI2RlZmluZSBMT09LVVBf Tk9fQ09OVkVSU0lPTiAoMSA8PCA1KQorI2RlZmluZSBMT09LVVBfTk9fQ09O VkVSU0lPTiAoMSA8PCA0KQogLyogVGhlIHVzZXIgaGFzIGV4cGxpY2l0bHkg Y2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIChUaGVyZWZvcmUsIHdlIGRvCiAgICBu b3QgbmVlZCB0byBjaGVjayB0aGF0IHRoZSBvYmplY3QgaXMgbm9uLU5VTEwg YmVmb3JlIGNhbGxpbmcgdGhlCiAgICBkZXN0cnVjdG9yLikgICovCi0jZGVm aW5lIExPT0tVUF9ERVNUUlVDVE9SICgxIDw8IDYpCisjZGVmaW5lIExPT0tV UF9ERVNUUlVDVE9SICgxIDw8IDUpCiAvKiBEbyBub3QgcGVybWl0IHJlZmVy ZW5jZXMgdG8gYmluZCB0byB0ZW1wb3Jhcmllcy4gICovCi0jZGVmaW5lIExP T0tVUF9OT19URU1QX0JJTkQgKDEgPDwgNykKKyNkZWZpbmUgTE9PS1VQX05P X1RFTVBfQklORCAoMSA8PCA2KQogLyogRG8gbm90IGFjY2VwdCBvYmplY3Rz LCBhbmQgcG9zc2libHkgbmFtZXNwYWNlcy4gICovCi0jZGVmaW5lIExPT0tV UF9QUkVGRVJfVFlQRVMgKDEgPDwgOCkKKyNkZWZpbmUgTE9PS1VQX1BSRUZF Ul9UWVBFUyAoMSA8PCA3KQogLyogRG8gbm90IGFjY2VwdCBvYmplY3RzLCBh bmQgcG9zc2libHkgdHlwZXMuICAgKi8KLSNkZWZpbmUgTE9PS1VQX1BSRUZF Ul9OQU1FU1BBQ0VTICgxIDw8IDkpCisjZGVmaW5lIExPT0tVUF9QUkVGRVJf TkFNRVNQQUNFUyAoMSA8PCA4KQogLyogQWNjZXB0IHR5cGVzIG9yIG5hbWVz cGFjZXMuICAqLwogI2RlZmluZSBMT09LVVBfUFJFRkVSX0JPVEggKExPT0tV UF9QUkVGRVJfVFlQRVMgfCBMT09LVVBfUFJFRkVSX05BTUVTUEFDRVMpCiAv KiBSZXR1cm4gZnJpZW5kIGRlY2xhcmF0aW9ucyBhbmQgdW4tZGVjbGFyZWQg YnVpbHRpbiBmdW5jdGlvbnMuCkBAIC00ODk0LDcgKzQ4OTAsOSBAQCBleHRl cm4gdHJlZSBidWlsZF9uZXdfb3AJCQkobG9jYXRpb25fdCwgZW51bSB0cmVl XwogCQkJCQkJIHRzdWJzdF9mbGFnc190KTsKIGV4dGVybiB0cmVlIGJ1aWxk X29wX2NhbGwJCQkodHJlZSwgVkVDKHRyZWUsZ2MpICoqLAogCQkJCQkJIHRz dWJzdF9mbGFnc190KTsKLWV4dGVybiB0cmVlIGJ1aWxkX29wX2RlbGV0ZV9j YWxsCQkoZW51bSB0cmVlX2NvZGUsIHRyZWUsIHRyZWUsIGJvb2wsIHRyZWUs IHRyZWUpOworZXh0ZXJuIHRyZWUgYnVpbGRfb3BfZGVsZXRlX2NhbGwJCShl bnVtIHRyZWVfY29kZSwgdHJlZSwgdHJlZSwKKwkJCQkJCSBib29sLCB0cmVl LCB0cmVlLAorCQkJCQkJIHRzdWJzdF9mbGFnc190KTsKIGV4dGVybiBib29s IGNhbl9jb252ZXJ0CQkJCSh0cmVlLCB0cmVlLCB0c3Vic3RfZmxhZ3NfdCk7 CiBleHRlcm4gYm9vbCBjYW5fY29udmVydF9hcmcJCQkodHJlZSwgdHJlZSwg dHJlZSwgaW50LAogCQkJCQkJIHRzdWJzdF9mbGFnc190KTsKQEAgLTUwMDEs MTYgKzQ5OTksMTkgQEAgZXh0ZXJuIHZvaWQgYWRqdXN0X2Nsb25lX2FyZ3MJ CQkodHJlZSk7CiBleHRlcm4gdm9pZCBkZWR1Y2Vfbm9leGNlcHRfb25fZGVz dHJ1Y3RvciAgICAgICAodHJlZSk7CiAKIC8qIGluIGN2dC5jICovCi1leHRl cm4gdHJlZSBjb252ZXJ0X3RvX3JlZmVyZW5jZQkJKHRyZWUsIHRyZWUsIGlu dCwgaW50LCB0cmVlKTsKK2V4dGVybiB0cmVlIGNvbnZlcnRfdG9fcmVmZXJl bmNlCQkodHJlZSwgdHJlZSwgaW50LCBpbnQsIHRyZWUsCisJCQkJCQkgdHN1 YnN0X2ZsYWdzX3QpOwogZXh0ZXJuIHRyZWUgY29udmVydF9mcm9tX3JlZmVy ZW5jZQkJKHRyZWUpOwogZXh0ZXJuIHRyZWUgZm9yY2VfcnZhbHVlCQkJKHRy ZWUsIHRzdWJzdF9mbGFnc190KTsKLWV4dGVybiB0cmVlIG9jcF9jb252ZXJ0 CQkJCSh0cmVlLCB0cmVlLCBpbnQsIGludCk7Ci1leHRlcm4gdHJlZSBjcF9j b252ZXJ0CQkJCSh0cmVlLCB0cmVlKTsKLWV4dGVybiB0cmVlIGNwX2NvbnZl cnRfYW5kX2NoZWNrICAgICAgICAgICAgICAgICh0cmVlLCB0cmVlKTsKK2V4 dGVybiB0cmVlIG9jcF9jb252ZXJ0CQkJCSh0cmVlLCB0cmVlLCBpbnQsIGlu dCwKKwkJCQkJCSB0c3Vic3RfZmxhZ3NfdCk7CitleHRlcm4gdHJlZSBjcF9j b252ZXJ0CQkJCSh0cmVlLCB0cmVlLCB0c3Vic3RfZmxhZ3NfdCk7CitleHRl cm4gdHJlZSBjcF9jb252ZXJ0X2FuZF9jaGVjayAgICAgICAgICAgICAgICAo dHJlZSwgdHJlZSwgdHN1YnN0X2ZsYWdzX3QpOwogZXh0ZXJuIHRyZWUgY3Bf Zm9sZF9jb252ZXJ0CQkJKHRyZWUsIHRyZWUpOwogZXh0ZXJuIHRyZWUgY29u dmVydF90b192b2lkCQkJKHRyZWUsIGltcGxfY29udl92b2lkLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkgdHN1YnN0X2ZsYWdzX3Qp OwotZXh0ZXJuIHRyZWUgY29udmVydF9mb3JjZQkJCSh0cmVlLCB0cmVlLCBp bnQpOworZXh0ZXJuIHRyZWUgY29udmVydF9mb3JjZQkJCSh0cmVlLCB0cmVl LCBpbnQsCisJCQkJCQkgdHN1YnN0X2ZsYWdzX3QpOwogZXh0ZXJuIHRyZWUg YnVpbGRfZXhwcl90eXBlX2NvbnZlcnNpb24JCShpbnQsIHRyZWUsIGJvb2wp OwogZXh0ZXJuIHRyZWUgdHlwZV9wcm9tb3Rlc190bwkJCSh0cmVlKTsKIGV4 dGVybiB0cmVlIHBlcmZvcm1fcXVhbGlmaWNhdGlvbl9jb252ZXJzaW9ucwko dHJlZSwgdHJlZSk7CkBAIC01OTAxLDYgKzU5MDIsNyBAQCBleHRlcm4gdm9p ZCBjaGVja190ZW1wbGF0ZV9rZXl3b3JkCQkodHJlZSk7CiBleHRlcm4gYm9v bCBjaGVja19yYXdfbGl0ZXJhbF9vcGVyYXRvcgkJKGNvbnN0X3RyZWUgZGVj bCk7CiBleHRlcm4gYm9vbCBjaGVja19saXRlcmFsX29wZXJhdG9yX2FyZ3MJ CShjb25zdF90cmVlLCBib29sICosIGJvb2wgKik7CiBleHRlcm4gdm9pZCBt YXliZV93YXJuX2Fib3V0X3VzZWxlc3NfY2FzdCAgICAgICAodHJlZSwgdHJl ZSwgdHN1YnN0X2ZsYWdzX3QpOworZXh0ZXJuIHRyZWUgY3BfcGVyZm9ybV9p bnRlZ3JhbF9wcm9tb3Rpb25zICAgICAgKHRyZWUsIHRzdWJzdF9mbGFnc190 KTsKIAogLyogaW4gdHlwZWNrMi5jICovCiBleHRlcm4gdm9pZCByZXF1aXJl X2NvbXBsZXRlX2VoX3NwZWNfdHlwZXMJKHRyZWUsIHRyZWUpOwpJbmRleDog Y3AvbmFtZS1sb29rdXAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBj cC9uYW1lLWxvb2t1cC5jCShyZXZpc2lvbiAxODgyMDMpCisrKyBjcC9uYW1l LWxvb2t1cC5jCSh3b3JraW5nIGNvcHkpCkBAIC0xODU0LDcgKzE4NTQsNyBA QCBpZGVudGlmaWVyX3R5cGVfdmFsdWVfMSAodHJlZSBpZCkKICAgICByZXR1 cm4gUkVBTF9JREVOVElGSUVSX1RZUEVfVkFMVUUgKGlkKTsKICAgLyogSGF2 ZSB0byBzZWFyY2ggZm9yIGl0LiBJdCBtdXN0IGJlIG9uIHRoZSBnbG9iYWwg bGV2ZWwsIG5vdy4KICAgICAgQXNrIGxvb2t1cF9uYW1lIG5vdCB0byByZXR1 cm4gbm9uLXR5cGVzLiAgKi8KLSAgaWQgPSBsb29rdXBfbmFtZV9yZWFsIChp ZCwgMiwgMSwgLypibG9ja19wPSovdHJ1ZSwgMCwgTE9PS1VQX0NPTVBMQUlO KTsKKyAgaWQgPSBsb29rdXBfbmFtZV9yZWFsIChpZCwgMiwgMSwgLypibG9j a19wPSovdHJ1ZSwgMCwgTE9PS1VQX05PUk1BTCk7CiAgIGlmIChpZCkKICAg ICByZXR1cm4gVFJFRV9UWVBFIChpZCk7CiAgIHJldHVybiBOVUxMX1RSRUU7 CkBAIC00MzQ1LDcgKzQzNDUsNyBAQCBsb29rdXBfcXVhbGlmaWVkX25hbWUg KHRyZWUgc2NvcGUsIHRyZWUgbmFtZSwgYm9vbAogICAgIHsKICAgICAgIHN0 cnVjdCBzY29wZV9iaW5kaW5nIGJpbmRpbmcgPSBFTVBUWV9TQ09QRV9CSU5E SU5HOwogCi0gICAgICBmbGFncyB8PSBMT09LVVBfQ09NUExBSU47CisgICAg ICBmbGFncyB8PSBMT09LVVBfTk9STUFMOwogICAgICAgaWYgKGlzX3R5cGVf cCkKIAlmbGFncyB8PSBMT09LVVBfUFJFRkVSX1RZUEVTOwogICAgICAgaWYg KHF1YWxpZmllZF9sb29rdXBfdXNpbmdfbmFtZXNwYWNlIChuYW1lLCBzY29w ZSwgJmJpbmRpbmcsIGZsYWdzKSkKQEAgLTQ3NzIsNyArNDc3Miw3IEBAIGxv b2t1cF9uYW1lX3JlYWwgKHRyZWUgbmFtZSwgaW50IHByZWZlcl90eXBlLCBp bnQKIHRyZWUKIGxvb2t1cF9uYW1lX25vbmNsYXNzICh0cmVlIG5hbWUpCiB7 Ci0gIHJldHVybiBsb29rdXBfbmFtZV9yZWFsIChuYW1lLCAwLCAxLCAvKmJs b2NrX3A9Ki90cnVlLCAwLCBMT09LVVBfQ09NUExBSU4pOworICByZXR1cm4g bG9va3VwX25hbWVfcmVhbCAobmFtZSwgMCwgMSwgLypibG9ja19wPSovdHJ1 ZSwgMCwgTE9PS1VQX05PUk1BTCk7CiB9CiAKIHRyZWUKQEAgLTQ3ODEsMjEg KzQ3ODEsMjEgQEAgbG9va3VwX2Z1bmN0aW9uX25vbmNsYXNzICh0cmVlIG5h bWUsIFZFQyh0cmVlLGdjKQogICByZXR1cm4KICAgICBsb29rdXBfYXJnX2Rl cGVuZGVudCAobmFtZSwKIAkJCSAgbG9va3VwX25hbWVfcmVhbCAobmFtZSwg MCwgMSwgYmxvY2tfcCwgMCwKLQkJCQkJICAgIExPT0tVUF9DT01QTEFJTiks CisJCQkJCSAgICBMT09LVVBfTk9STUFMKSwKIAkJCSAgYXJncywgZmFsc2Up OwogfQogCiB0cmVlCiBsb29rdXBfbmFtZSAodHJlZSBuYW1lKQogewotICBy ZXR1cm4gbG9va3VwX25hbWVfcmVhbCAobmFtZSwgMCwgMCwgLypibG9ja19w PSovdHJ1ZSwgMCwgTE9PS1VQX0NPTVBMQUlOKTsKKyAgcmV0dXJuIGxvb2t1 cF9uYW1lX3JlYWwgKG5hbWUsIDAsIDAsIC8qYmxvY2tfcD0qL3RydWUsIDAs IExPT0tVUF9OT1JNQUwpOwogfQogCiB0cmVlCiBsb29rdXBfbmFtZV9wcmVm ZXJfdHlwZSAodHJlZSBuYW1lLCBpbnQgcHJlZmVyX3R5cGUpCiB7CiAgIHJl dHVybiBsb29rdXBfbmFtZV9yZWFsIChuYW1lLCBwcmVmZXJfdHlwZSwgMCwg LypibG9ja19wPSovdHJ1ZSwKLQkJCSAgIDAsIExPT0tVUF9DT01QTEFJTik7 CisJCQkgICAwLCBMT09LVVBfTk9STUFMKTsKIH0KIAogLyogTG9vayB1cCBO QU1FIGZvciB0eXBlIHVzZWQgaW4gZWxhYm9yYXRlZCBuYW1lIHNwZWNpZmll ciBpbgoK --------------010303000900040702040307--