From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.bugs Subject: bug#14803: Setting close-on-exec flag consistently Date: Sat, 06 Jul 2013 23:34:18 -0700 Organization: UCLA Computer Science Department Message-ID: <51D90BEA.20308@cs.ucla.edu> References: <51D7DFAF.3030500@cs.ucla.edu> <83obafylf1.fsf@gnu.org> <51D8514F.8090307@cs.ucla.edu> <834nc7y3o2.fsf@gnu.org> <51D88F7E.3080502@cs.ucla.edu> <83zjtzw0ho.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------000309000805020605030606" X-Trace: ger.gmane.org 1373178917 24554 80.91.229.3 (7 Jul 2013 06:35:17 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 7 Jul 2013 06:35:17 +0000 (UTC) Cc: 14803@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Jul 07 08:35:17 2013 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1UviZ2-0004VF-HT for geb-bug-gnu-emacs@m.gmane.org; Sun, 07 Jul 2013 08:35:17 +0200 Original-Received: from localhost ([::1]:42659 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UviZ1-0005tf-KS for geb-bug-gnu-emacs@m.gmane.org; Sun, 07 Jul 2013 02:35:15 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:38251) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UviYu-0005sU-7S for bug-gnu-emacs@gnu.org; Sun, 07 Jul 2013 02:35:13 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UviYp-0003Al-6D for bug-gnu-emacs@gnu.org; Sun, 07 Jul 2013 02:35:08 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:41847) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UviYp-0003A4-2X for bug-gnu-emacs@gnu.org; Sun, 07 Jul 2013 02:35:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1UviYo-0003Si-7s for bug-gnu-emacs@gnu.org; Sun, 07 Jul 2013 02:35:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Paul Eggert Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 07 Jul 2013 06:35:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 14803 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 14803-submit@debbugs.gnu.org id=B14803.137317887813235 (code B ref 14803); Sun, 07 Jul 2013 06:35:02 +0000 Original-Received: (at 14803) by debbugs.gnu.org; 7 Jul 2013 06:34:38 +0000 Original-Received: from localhost ([127.0.0.1]:36163 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1UviYM-0003RK-Pp for submit@debbugs.gnu.org; Sun, 07 Jul 2013 02:34:38 -0400 Original-Received: from smtp.cs.ucla.edu ([131.179.128.62]:37317) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1UviYG-0003Qa-5n for 14803@debbugs.gnu.org; Sun, 07 Jul 2013 02:34:32 -0400 Original-Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 0C631A60050; Sat, 6 Jul 2013 23:34:22 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Original-Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id djagUeDxTQFc; Sat, 6 Jul 2013 23:34:18 -0700 (PDT) Original-Received: from [192.168.1.9] (pool-71-108-49-126.lsanca.fios.verizon.net [71.108.49.126]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id A534FA6004B; Sat, 6 Jul 2013 23:34:18 -0700 (PDT) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130623 Thunderbird/17.0.7 In-Reply-To: <83zjtzw0ho.fsf@gnu.org> X-Enigmail-Version: 1.5.1 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:76035 Archived-At: This is a multi-part message in MIME format. --------------000309000805020605030606 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 07/06/2013 07:46 PM, Eli Zaretskii wrote: > This should probably go into nt/mingw-cfg.site. Thanks, I didn't know about that file. Also, it strikes me that since MinGW doesn't have pipe2, there's no need to have "#define pipe2 sys_pipe2". Revised patch attached. --------------000309000805020605030606 Content-Type: text/plain; charset=UTF-8; name="cloexec1.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="cloexec1.diff" PT09IG1vZGlmaWVkIGZpbGUgJ0NoYW5nZUxvZycKLS0tIENoYW5nZUxvZwkyMDEzLTA3LTAz IDAzOjIwOjA0ICswMDAwCisrKyBDaGFuZ2VMb2cJMjAxMy0wNy0wNyAwNjowMjo0NCArMDAw MApAQCAtMSwzICsxLDEyIEBACisyMDEzLTA3LTA3ICBQYXVsIEVnZ2VydCAgPGVnZ2VydEBj cy51Y2xhLmVkdT4KKworCU1ha2UgZmlsZSBkZXNjcmlwdG9ycyBjbG9zZS1vbi1leGVjIHdo ZW4gcG9zc2libGUgKEJ1ZyMxNDgwMykuCisJKiBjb25maWd1cmUuYWMgKG1rb3N0ZW1wKTog TmV3IGZ1bmN0aW9uIHRvIGNoZWNrIGZvci4KKwkoUFRZX09QRU4pOiBQYXNzIE9fQ0xPRVhF QyB0byBwb3NpeF9vcGVucHQuCisJKiBsaWIvZmNudGwuYywgbGliL2dldGR0YWJsZXNpemUu YywgbGliL3BpcGUyLmMsIG00L2ZjbnRsLm00OgorCSogbTQvZ2V0ZHRhYmxlc2l6ZS5tNCwg bTQvcGlwZTIubTQ6IE5ldyBmaWxlcywgdGFrZW4gZnJvbSBnbnVsaWIuCisJKiBsaWIvZ251 bGliLm1rLCBtNC9nbnVsaWItY29tcC5tNDogUmVnZW5lcmF0ZS4KKwogMjAxMy0wNy0wMyAg Q2hyaXN0b3BoIEVnZ2VyICA8Y2hyaXN0b3BoQGRlYmlhbi5vcmc+ICAodGlueSBjaGFuZ2Up CiAKIAkqIGNvbmZpZ3VyZS5hYyAoZW1hY3NfYnJva2VuX1NJR0lPKTogU2V0IG9uIGdudS1r ZnJlZWJzZCB0byBhdm9pZCBoYW5nLgoKPT09IG1vZGlmaWVkIGZpbGUgJ2FkbWluL0NoYW5n ZUxvZycKLS0tIGFkbWluL0NoYW5nZUxvZwkyMDEzLTA3LTA2IDE4OjI4OjU0ICswMDAwCisr KyBhZG1pbi9DaGFuZ2VMb2cJMjAxMy0wNy0wNyAwNTo1MjowOSArMDAwMApAQCAtMSwzICsx LDkgQEAKKzIwMTMtMDctMDcgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1Pgor CisJTWFrZSBmaWxlIGRlc2NyaXB0b3JzIGNsb3NlLW9uLWV4ZWMgd2hlbiBwb3NzaWJsZSAo QnVnIzE0ODAzKS4KKwkqIG1lcmdlLWdudWxpYiAoR05VTElCX01PRFVMRVMpOiBBZGQgZmNu dGwsIHBpcGUyLgorCShHTlVMSUJfVE9PTF9GTEFHUyk6IEF2b2lkIGJpbmFyeS1pbywgY2xv c2UuICBEbyBub3QgYXZvaWQgZmNudGwuCisKIDIwMTMtMDctMDYgIEdsZW5uIE1vcnJpcyAg PHJnbUBnbnUub3JnPgogCiAJKiBhZG1pbi5lbCAobWFudWFsLW1pc2MtbWFudWFscyk6IE5l dyBmdW5jdGlvbi4KCj09PSBtb2RpZmllZCBmaWxlICdhZG1pbi9tZXJnZS1nbnVsaWInCi0t LSBhZG1pbi9tZXJnZS1nbnVsaWIJMjAxMy0wNS0wNyAyMTozNDowMyArMDAwMAorKysgYWRt aW4vbWVyZ2UtZ251bGliCTIwMTMtMDctMDUgMjI6MDM6MzYgKzAwMDAKQEAgLTI5LDExICsy OSwxMSBAQAogICBhbGxvY2Etb3B0IGMtY3R5cGUgYy1zdHJjYXNlCiAgIGNhcmVhZGxpbmth dCBjbG9zZS1zdHJlYW0gY3J5cHRvL21kNSBjcnlwdG8vc2hhMSBjcnlwdG8vc2hhMjU2IGNy eXB0by9zaGE1MTIKICAgZHRvYXN0ciBkdG90aW1lc3BlYyBkdXAyIGVudmlyb24gZXhlY2lu Zm8gZmFjY2Vzc2F0Ci0gIGZjbnRsLWggZmRhdGFzeW5jIGZkb3BlbmRpciBmaWxlbW9kZSBm c3RhdGF0IGZzeW5jCisgIGZjbnRsIGZjbnRsLWggZmRhdGFzeW5jIGZkb3BlbmRpciBmaWxl bW9kZSBmc3RhdGF0IGZzeW5jCiAgIGdldGxvYWRhdmcgZ2V0b3B0LWdudSBnZXR0aW1lIGdl dHRpbWVvZmRheQogICBpZ25vcmUtdmFsdWUgaW50cHJvcHMgbGFyZ2VmaWxlIGxzdGF0CiAg IG1hbnl3YXJuaW5ncyBtZW1yY2hyIG1rdGltZQotICBwc2VsZWN0IHB0aHJlYWRfc2lnbWFz ayBwdXRlbnYgcWFjbCByZWFkbGluayByZWFkbGlua2F0CisgIHBpcGUyIHBzZWxlY3QgcHRo cmVhZF9zaWdtYXNrIHB1dGVudiBxYWNsIHJlYWRsaW5rIHJlYWRsaW5rYXQKICAgc2lnMnN0 ciBzb2NrbGVuIHN0YXQtdGltZSBzdGRhbGlnbiBzdGRhcmcgc3RkYm9vbCBzdGRpbwogICBz dHJmdGltZSBzdHJ0b2ltYXggc3RydG91bWF4IHN5bWxpbmsgc3lzX3N0YXQKICAgc3lzX3Rp bWUgdGltZSB0aW1lci10aW1lIHRpbWVzcGVjLWFkZCB0aW1lc3BlYy1zdWIgdW5zZXRlbnYg dXRpbWVucwpAQCAtNDEsOCArNDEsOCBAQAogJwogCiBHTlVMSUJfVE9PTF9GTEFHUz0nCi0g IC0tYXZvaWQ9ZHVwCi0gIC0tYXZvaWQ9ZmNoZGlyIC0tYXZvaWQ9ZmNudGwgLS1hdm9pZD1m c3RhdAorICAtLWF2b2lkPWJpbmFyeS1pbyAtLWF2b2lkPWNsb3NlIC0tYXZvaWQ9ZHVwCisg IC0tYXZvaWQ9ZmNoZGlyIC0tYXZvaWQ9ZnN0YXQKICAgLS1hdm9pZD1tYWxsb2MtcG9zaXgg LS1hdm9pZD1tc3ZjLWludmFsIC0tYXZvaWQ9bXN2Yy1ub3Rocm93CiAgIC0tYXZvaWQ9b3Bl biAtLWF2b2lkPW9wZW5hdC1kaWUgLS1hdm9pZD1vcGVuZGlyCiAgIC0tYXZvaWQ9cmFpc2UK Cj09PSBtb2RpZmllZCBmaWxlICdjb25maWd1cmUuYWMnCi0tLSBjb25maWd1cmUuYWMJMjAx My0wNy0wMyAwMzoyMDowNCArMDAwMAorKysgY29uZmlndXJlLmFjCTIwMTMtMDctMDcgMDU6 NTM6MTIgKzAwMDAKQEAgLTMyNDQsNyArMzI0NCw3IEBACiBnZXRybGltaXQgc2V0cmxpbWl0 IHNodXRkb3duIGdldGFkZHJpbmZvIFwKIHN0cnNpZ25hbCBzZXRpdGltZXIgXAogc2VuZHRv IHJlY3Zmcm9tIGdldHNvY2tuYW1lIGdldHBlZXJuYW1lIGdldGlmYWRkcnMgZnJlZWlmYWRk cnMgXAotZ2FpX3N0cmVycm9yIG1rc3RlbXAgZ2V0bGluZSBnZXRkZWxpbSBzeW5jIFwKK2dh aV9zdHJlcnJvciBta29zdGVtcCBta3N0ZW1wIGdldGxpbmUgZ2V0ZGVsaW0gc3luYyBcCiBk aWZmdGltZSBwb3NpeF9tZW1hbGlnbiBcCiBnZXRwd2VudCBlbmRwd2VudCBnZXRncmVudCBl bmRncmVudCBcCiB0b3VjaGxvY2sgXApAQCAtMzkzNCw3ICszOTM0LDcgQEAKICAgICAgIEFD X0RFRklORShQVFlfVFRZX05BTUVfU1BSSU5URiwgW3sgY2hhciAqcHR5bmFtZSA9IDA7IHNp Z3NldF90IGJsb2NrZWQ7IHNpZ2VtcHR5c2V0ICgmYmxvY2tlZCk7IHNpZ2FkZHNldCAoJmJs b2NrZWQsIFNJR0NITEQpOyBwdGhyZWFkX3NpZ21hc2sgKFNJR19CTE9DSywgJmJsb2NrZWQs IDApOyBpZiAoZ3JhbnRwdCAoZmQpICE9IC0xICYmIHVubG9ja3B0IChmZCkgIT0gLTEpIHB0 eW5hbWUgPSBwdHNuYW1lKGZkKTsgcHRocmVhZF9zaWdtYXNrIChTSUdfVU5CTE9DSywgJmJs b2NrZWQsIDApOyBpZiAoIXB0eW5hbWUpIHsgY2xvc2UgKGZkKTsgcmV0dXJuIC0xOyB9IHNu cHJpbnRmIChwdHlfbmFtZSwgc2l6ZW9mIHB0eV9uYW1lLCAiJXMiLCBwdHluYW1lKTsgfV0p CiAgICAgICBkbmwgaWYgSEFWRV9QT1NJWF9PUEVOUFQKICAgICAgIGlmIHRlc3QgIngkYWNf Y3ZfZnVuY19wb3NpeF9vcGVucHQiID0geHllczsgdGhlbgotICAgICAgICBBQ19ERUZJTkUo UFRZX09QRU4sIFtmZCA9IHBvc2l4X29wZW5wdCAoT19SRFdSIHwgT19OT0NUVFkpXSkKKyAg ICAgICAgQUNfREVGSU5FKFBUWV9PUEVOLCBbZmQgPSBwb3NpeF9vcGVucHQgKE9fUkRXUiB8 IE9fQ0xPRVhFQyB8IE9fTk9DVFRZKV0pCiAgICAgICAgIEFDX0RFRklORShQVFlfTkFNRV9T UFJJTlRGLCBbXSkKICAgICAgIGRubCBpZiBIQVZFX0dFVFBUCiAgICAgICBlbGlmIHRlc3Qg IngkYWNfY3ZfZnVuY19nZXRwdCIgPSB4eWVzOyB0aGVuCgo9PT0gYWRkZWQgZmlsZSAnbGli L2ZjbnRsLmMnCi0tLSBsaWIvZmNudGwuYwkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAwCisr KyBsaWIvZmNudGwuYwkyMDEzLTA3LTA1IDIyOjQ0OjA3ICswMDAwCkBAIC0wLDAgKzEsMzEx IEBACisvKiBQcm92aWRlIGZpbGUgZGVzY3JpcHRvciBjb250cm9sLgorCisgICBDb3B5cmln aHQgKEMpIDIwMDktMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LiAgKi8KKworLyogV3JpdHRlbiBieSBFcmljIEJsYWtlIDxlYmI5QGJ5dS5uZXQ+LiAgKi8K KworI2luY2x1ZGUgPGNvbmZpZy5oPgorCisvKiBTcGVjaWZpY2F0aW9uLiAgKi8KKyNpbmNs dWRlIDxmY250bC5oPgorCisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxsaW1pdHMu aD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworI2lmICFI QVZFX0ZDTlRMCisjIGRlZmluZSBycGxfZmNudGwgZmNudGwKKyNlbmRpZgorI3VuZGVmIGZj bnRsCisKKyNpZiAoZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX1dJTjMyX18pICYmICEg ZGVmaW5lZCBfX0NZR1dJTl9fCisvKiBHZXQgZGVjbGFyYXRpb25zIG9mIHRoZSBuYXRpdmUg V2luZG93cyBBUEkgZnVuY3Rpb25zLiAgKi8KKyMgZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01F QU4KKyMgaW5jbHVkZSA8d2luZG93cy5oPgorCisvKiBHZXQgX2dldF9vc2ZoYW5kbGUuICAq LworIyBpbmNsdWRlICJtc3ZjLW5vdGhyb3cuaCIKKworLyogVXBwZXIgYm91bmQgb24gZ2V0 ZHRhYmxlc2l6ZSgpLiAgU2VlIGxpYi9nZXRkdGFibGVzaXplLmMuICAqLworIyBkZWZpbmUg T1BFTl9NQVhfTUFYIDB4MTAwMDAKKworLyogRHVwbGljYXRlIE9MREZEIGludG8gdGhlIGZp cnN0IGF2YWlsYWJsZSBzbG90IG9mIGF0IGxlYXN0IE5FV0ZELAorICAgd2hpY2ggbXVzdCBi ZSBwb3NpdGl2ZSwgd2l0aCBGTEFHUyBkZXRlcm1pbmluZyB3aGV0aGVyIHRoZSBkdXBsaWNh dGUKKyAgIHdpbGwgYmUgaW5oZXJpdGFibGUuICAqLworc3RhdGljIGludAorZHVwZmQgKGlu dCBvbGRmZCwgaW50IG5ld2ZkLCBpbnQgZmxhZ3MpCit7CisgIC8qIE1pbmd3IGhhcyBubyB3 YXkgdG8gY3JlYXRlIGFuIGFyYml0cmFyeSBmZC4gIEl0ZXJhdGUgdW50aWwgYWxsCisgICAg IGZpbGUgZGVzY3JpcHRvcnMgbGVzcyB0aGFuIG5ld2ZkIGFyZSBmaWxsZWQgdXAuICAqLwor ICBIQU5ETEUgY3Vycl9wcm9jZXNzID0gR2V0Q3VycmVudFByb2Nlc3MgKCk7CisgIEhBTkRM RSBvbGRfaGFuZGxlID0gKEhBTkRMRSkgX2dldF9vc2ZoYW5kbGUgKG9sZGZkKTsKKyAgdW5z aWduZWQgY2hhciBmZHNfdG9fY2xvc2VbT1BFTl9NQVhfTUFYIC8gQ0hBUl9CSVRdOworICB1 bnNpZ25lZCBpbnQgZmRzX3RvX2Nsb3NlX2JvdW5kID0gMDsKKyAgaW50IHJlc3VsdDsKKyAg Qk9PTCBpbmhlcml0ID0gZmxhZ3MgJiBPX0NMT0VYRUMgPyBGQUxTRSA6IFRSVUU7CisgIGlu dCBtb2RlOworCisgIGlmIChuZXdmZCA8IDAgfHwgZ2V0ZHRhYmxlc2l6ZSAoKSA8PSBuZXdm ZCkKKyAgICB7CisgICAgICBlcnJubyA9IEVJTlZBTDsKKyAgICAgIHJldHVybiAtMTsKKyAg ICB9CisgIGlmIChvbGRfaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFCisgICAgICB8 fCAobW9kZSA9IHNldG1vZGUgKG9sZGZkLCBPX0JJTkFSWSkpID09IC0xKQorICAgIHsKKyAg ICAgIC8qIG9sZGZkIGlzIG5vdCBvcGVuLCBvciBpcyBhbiB1bmFzc2lnbmVkIHN0YW5kYXJk IGZpbGUKKyAgICAgICAgIGRlc2NyaXB0b3IuICAqLworICAgICAgZXJybm8gPSBFQkFERjsK KyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgIHNldG1vZGUgKG9sZGZkLCBtb2RlKTsKKyAg ZmxhZ3MgfD0gbW9kZTsKKworICBmb3IgKDs7KQorICAgIHsKKyAgICAgIEhBTkRMRSBuZXdf aGFuZGxlOworICAgICAgaW50IGR1cGxpY2F0ZWRfZmQ7CisgICAgICB1bnNpZ25lZCBpbnQg aW5kZXg7CisKKyAgICAgIGlmICghRHVwbGljYXRlSGFuZGxlIChjdXJyX3Byb2Nlc3MsICAg ICAgICAgICAvKiBTb3VyY2VQcm9jZXNzSGFuZGxlICovCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgb2xkX2hhbmRsZSwgICAgICAgICAgICAgLyogU291cmNlSGFuZGxlICovCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vycl9wcm9jZXNzLCAgICAgICAgICAgLyog VGFyZ2V0UHJvY2Vzc0hhbmRsZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQ SEFORExFKSAmbmV3X2hhbmRsZSwgIC8qIFRhcmdldEhhbmRsZSAqLworICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChEV09SRCkgMCwgICAgICAgICAgICAgIC8qIERlc2lyZWRBY2Nl c3MgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0LCAgICAgICAgICAg ICAgICAvKiBJbmhlcml0SGFuZGxlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg RFVQTElDQVRFX1NBTUVfQUNDRVNTKSkgLyogT3B0aW9ucyAqLworICAgICAgICB7CisgICAg ICAgICAgLyogVE9ETzogVHJhbnNsYXRlIEdldExhc3RFcnJvciAoKSBpbnRvIGVycm5vLiAg Ki8KKyAgICAgICAgICBlcnJubyA9IEVNRklMRTsKKyAgICAgICAgICByZXN1bHQgPSAtMTsK KyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgZHVwbGljYXRlZF9mZCA9IF9v cGVuX29zZmhhbmRsZSAoKGludHB0cl90KSBuZXdfaGFuZGxlLCBmbGFncyk7CisgICAgICBp ZiAoZHVwbGljYXRlZF9mZCA8IDApCisgICAgICAgIHsKKyAgICAgICAgICBDbG9zZUhhbmRs ZSAobmV3X2hhbmRsZSk7CisgICAgICAgICAgZXJybm8gPSBFTUZJTEU7CisgICAgICAgICAg cmVzdWx0ID0gLTE7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIGlmIChu ZXdmZCA8PSBkdXBsaWNhdGVkX2ZkKQorICAgICAgICB7CisgICAgICAgICAgcmVzdWx0ID0g ZHVwbGljYXRlZF9mZDsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAv KiBTZXQgdGhlIGJpdCBkdXBsaWNhdGVkX2ZkIGluIGZkc190b19jbG9zZVtdLiAgKi8KKyAg ICAgIGluZGV4ID0gKHVuc2lnbmVkIGludCkgZHVwbGljYXRlZF9mZCAvIENIQVJfQklUOwor ICAgICAgaWYgKGZkc190b19jbG9zZV9ib3VuZCA8PSBpbmRleCkKKyAgICAgICAgeworICAg ICAgICAgIGlmIChzaXplb2YgZmRzX3RvX2Nsb3NlIDw9IGluZGV4KQorICAgICAgICAgICAg LyogTmVlZCB0byBpbmNyZWFzZSBPUEVOX01BWF9NQVguICAqLworICAgICAgICAgICAgYWJv cnQgKCk7CisgICAgICAgICAgbWVtc2V0IChmZHNfdG9fY2xvc2UgKyBmZHNfdG9fY2xvc2Vf Ym91bmQsICdcMCcsCisgICAgICAgICAgICAgICAgICBpbmRleCArIDEgLSBmZHNfdG9fY2xv c2VfYm91bmQpOworICAgICAgICAgIGZkc190b19jbG9zZV9ib3VuZCA9IGluZGV4ICsgMTsK KyAgICAgICAgfQorICAgICAgZmRzX3RvX2Nsb3NlW2luZGV4XSB8PSAxIDw8ICgodW5zaWdu ZWQgaW50KSBkdXBsaWNhdGVkX2ZkICUgQ0hBUl9CSVQpOworICAgIH0KKworICAvKiBDbG9z ZSB0aGUgcHJldmlvdXMgZmRzIHRoYXQgdHVybmVkIG91dCB0byBiZSB0b28gc21hbGwuICAq LworICB7CisgICAgaW50IHNhdmVkX2Vycm5vID0gZXJybm87CisgICAgdW5zaWduZWQgaW50 IGR1cGxpY2F0ZWRfZmQ7CisKKyAgICBmb3IgKGR1cGxpY2F0ZWRfZmQgPSAwOworICAgICAg ICAgZHVwbGljYXRlZF9mZCA8IGZkc190b19jbG9zZV9ib3VuZCAqIENIQVJfQklUOworICAg ICAgICAgZHVwbGljYXRlZF9mZCsrKQorICAgICAgaWYgKChmZHNfdG9fY2xvc2VbZHVwbGlj YXRlZF9mZCAvIENIQVJfQklUXQorICAgICAgICAgICA+PiAoZHVwbGljYXRlZF9mZCAlIENI QVJfQklUKSkKKyAgICAgICAgICAmIDEpCisgICAgICAgIGNsb3NlIChkdXBsaWNhdGVkX2Zk KTsKKworICAgIGVycm5vID0gc2F2ZWRfZXJybm87CisgIH0KKworIyBpZiBSRVBMQUNFX0ZD SERJUgorICBpZiAoMCA8PSByZXN1bHQpCisgICAgcmVzdWx0ID0gX2dsX3JlZ2lzdGVyX2R1 cCAob2xkZmQsIHJlc3VsdCk7CisjIGVuZGlmCisgIHJldHVybiByZXN1bHQ7Cit9CisjZW5k aWYgLyogVzMyICovCisKKy8qIFBlcmZvcm0gdGhlIHNwZWNpZmllZCBBQ1RJT04gb24gdGhl IGZpbGUgZGVzY3JpcHRvciBGRCwgcG9zc2libHkKKyAgIHVzaW5nIHRoZSBhcmd1bWVudCBB UkcgZnVydGhlciBkZXNjcmliZWQgYmVsb3cuICBUaGlzIHJlcGxhY2VtZW50CisgICBoYW5k bGVzIHRoZSBmb2xsb3dpbmcgYWN0aW9ucywgYW5kIGZvcndhcmRzIGFsbCBvdGhlcnMgb24g dG8gdGhlCisgICBuYXRpdmUgZmNudGwuICBBbiB1bnJlY29nbml6ZWQgQUNUSU9OIHJldHVy bnMgLTEgd2l0aCBlcnJubyBzZXQgdG8KKyAgIEVJTlZBTC4KKworICAgRl9EVVBGRCAtIGR1 cGxpY2F0ZSBGRCwgd2l0aCBpbnQgQVJHIGJlaW5nIHRoZSBtaW5pbXVtIHRhcmdldCBmZC4K KyAgIElmIHN1Y2Nlc3NmdWwsIHJldHVybiB0aGUgZHVwbGljYXRlLCB3aGljaCB3aWxsIGJl IGluaGVyaXRhYmxlOworICAgb3RoZXJ3aXNlIHJldHVybiAtMSBhbmQgc2V0IGVycm5vLgor CisgICBGX0RVUEZEX0NMT0VYRUMgLSBkdXBsaWNhdGUgRkQsIHdpdGggaW50IEFSRyBiZWlu ZyB0aGUgbWluaW11bQorICAgdGFyZ2V0IGZkLiAgSWYgc3VjY2Vzc2Z1bCwgcmV0dXJuIHRo ZSBkdXBsaWNhdGUsIHdoaWNoIHdpbGwgbm90IGJlCisgICBpbmhlcml0YWJsZTsgb3RoZXJ3 aXNlIHJldHVybiAtMSBhbmQgc2V0IGVycm5vLgorCisgICBGX0dFVEZEIC0gQVJHIG5lZWQg bm90IGJlIHByZXNlbnQuICBJZiBzdWNjZXNzZnVsLCByZXR1cm4gYQorICAgbm9uLW5lZ2F0 aXZlIHZhbHVlIGNvbnRhaW5pbmcgdGhlIGRlc2NyaXB0b3IgZmxhZ3Mgb2YgRkQgKG9ubHkK KyAgIEZEX0NMT0VYRUMgaXMgcG9ydGFibGUsIGJ1dCBvdGhlciBmbGFncyBtYXkgYmUgcHJl c2VudCk7IG90aGVyd2lzZQorICAgcmV0dXJuIC0xIGFuZCBzZXQgZXJybm8uICAqLworCitp bnQKK3JwbF9mY250bCAoaW50IGZkLCBpbnQgYWN0aW9uLCAvKiBhcmcgKi8uLi4pCit7Cisg IHZhX2xpc3QgYXJnOworICBpbnQgcmVzdWx0ID0gLTE7CisgIHZhX3N0YXJ0IChhcmcsIGFj dGlvbik7CisgIHN3aXRjaCAoYWN0aW9uKQorICAgIHsKKworI2lmICFIQVZFX0ZDTlRMCisg ICAgY2FzZSBGX0RVUEZEOgorICAgICAgeworICAgICAgICBpbnQgdGFyZ2V0ID0gdmFfYXJn IChhcmcsIGludCk7CisgICAgICAgIHJlc3VsdCA9IGR1cGZkIChmZCwgdGFyZ2V0LCAwKTsK KyAgICAgICAgYnJlYWs7CisgICAgICB9CisjZWxpZiBGQ05UTF9EVVBGRF9CVUdHWSB8fCBS RVBMQUNFX0ZDSERJUgorICAgIGNhc2UgRl9EVVBGRDoKKyAgICAgIHsKKyAgICAgICAgaW50 IHRhcmdldCA9IHZhX2FyZyAoYXJnLCBpbnQpOworICAgICAgICAvKiBEZXRlY3QgaW52YWxp ZCB0YXJnZXQ7IG5lZWRlZCBmb3IgY3lnd2luIDEuNS54LiAgKi8KKyAgICAgICAgaWYgKHRh cmdldCA8IDAgfHwgZ2V0ZHRhYmxlc2l6ZSAoKSA8PSB0YXJnZXQpCisgICAgICAgICAgZXJy bm8gPSBFSU5WQUw7CisgICAgICAgIGVsc2UKKyAgICAgICAgICB7CisgICAgICAgICAgICAv KiBIYWlrdSBhbHBoYSAyIGxvc2VzIGZkIGZsYWdzIG9uIG9yaWdpbmFsLiAgKi8KKyAgICAg ICAgICAgIGludCBmbGFncyA9IGZjbnRsIChmZCwgRl9HRVRGRCk7CisgICAgICAgICAgICBp ZiAoZmxhZ3MgPCAwKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmVzdWx0 ID0gLTE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgIHJlc3VsdCA9IGZjbnRsIChmZCwgYWN0aW9uLCB0YXJnZXQpOworICAgICAgICAg ICAgaWYgKDAgPD0gcmVzdWx0ICYmIGZjbnRsIChmZCwgRl9TRVRGRCwgZmxhZ3MpID09IC0x KQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaW50IHNhdmVkX2Vycm5vID0g ZXJybm87CisgICAgICAgICAgICAgICAgY2xvc2UgKHJlc3VsdCk7CisgICAgICAgICAgICAg ICAgcmVzdWx0ID0gLTE7CisgICAgICAgICAgICAgICAgZXJybm8gPSBzYXZlZF9lcnJubzsK KyAgICAgICAgICAgICAgfQorIyBpZiBSRVBMQUNFX0ZDSERJUgorICAgICAgICAgICAgaWYg KDAgPD0gcmVzdWx0KQorICAgICAgICAgICAgICByZXN1bHQgPSBfZ2xfcmVnaXN0ZXJfZHVw IChmZCwgcmVzdWx0KTsKKyMgZW5kaWYKKyAgICAgICAgICB9CisgICAgICAgIGJyZWFrOwor ICAgICAgfSAvKiBGX0RVUEZEICovCisjZW5kaWYgLyogRkNOVExfRFVQRkRfQlVHR1kgfHwg UkVQTEFDRV9GQ0hESVIgKi8KKworICAgIGNhc2UgRl9EVVBGRF9DTE9FWEVDOgorICAgICAg eworICAgICAgICBpbnQgdGFyZ2V0ID0gdmFfYXJnIChhcmcsIGludCk7CisKKyNpZiAhSEFW RV9GQ05UTAorICAgICAgICByZXN1bHQgPSBkdXBmZCAoZmQsIHRhcmdldCwgT19DTE9FWEVD KTsKKyAgICAgICAgYnJlYWs7CisjZWxzZSAvKiBIQVZFX0ZDTlRMICovCisgICAgICAgIC8q IFRyeSB0aGUgc3lzdGVtIGNhbGwgZmlyc3QsIGlmIHRoZSBoZWFkZXJzIGNsYWltIGl0IGV4 aXN0cworICAgICAgICAgICAodGhhdCBpcywgaWYgR05VTElCX2RlZmluZWRfRl9EVVBGRF9D TE9FWEVDIGlzIDApLCBzaW5jZSB3ZQorICAgICAgICAgICBtYXkgYmUgcnVubmluZyB3aXRo IGEgZ2xpYmMgdGhhdCBoYXMgdGhlIG1hY3JvIGJ1dCB3aXRoIGFuCisgICAgICAgICAgIG9s ZGVyIGtlcm5lbCB0aGF0IGRvZXMgbm90IHN1cHBvcnQgaXQuICBDYWNoZSB0aGUKKyAgICAg ICAgICAgaW5mb3JtYXRpb24gb24gd2hldGhlciB0aGUgc3lzdGVtIGNhbGwgcmVhbGx5IHdv cmtzLCBidXQKKyAgICAgICAgICAgYXZvaWQgY2FjaGluZyBmYWlsdXJlIGlmIHRoZSBjb3Jy ZXNwb25kaW5nIEZfRFVQRkQgZmFpbHMKKyAgICAgICAgICAgZm9yIGFueSByZWFzb24uICAw ID0gdW5rbm93biwgMSA9IHllcywgLTEgPSBuby4gICovCisgICAgICAgIHN0YXRpYyBpbnQg aGF2ZV9kdXBmZF9jbG9leGVjID0gR05VTElCX2RlZmluZWRfRl9EVVBGRF9DTE9FWEVDID8g LTEgOiAwOworICAgICAgICBpZiAoMCA8PSBoYXZlX2R1cGZkX2Nsb2V4ZWMpCisgICAgICAg ICAgeworICAgICAgICAgICAgcmVzdWx0ID0gZmNudGwgKGZkLCBhY3Rpb24sIHRhcmdldCk7 CisgICAgICAgICAgICBpZiAoMCA8PSByZXN1bHQgfHwgZXJybm8gIT0gRUlOVkFMKQorICAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaGF2ZV9kdXBmZF9jbG9leGVjID0gMTsK KyMgaWYgUkVQTEFDRV9GQ0hESVIKKyAgICAgICAgICAgICAgICBpZiAoMCA8PSByZXN1bHQp CisgICAgICAgICAgICAgICAgICByZXN1bHQgPSBfZ2xfcmVnaXN0ZXJfZHVwIChmZCwgcmVz dWx0KTsKKyMgZW5kaWYKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gcnBsX2ZjbnRsIChmZCwg Rl9EVVBGRCwgdGFyZ2V0KTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0IDwgMCkKKyAg ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGhhdmVfZHVwZmRfY2xv ZXhlYyA9IC0xOworICAgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICBlbHNl CisgICAgICAgICAgcmVzdWx0ID0gcnBsX2ZjbnRsIChmZCwgRl9EVVBGRCwgdGFyZ2V0KTsK KyAgICAgICAgaWYgKDAgPD0gcmVzdWx0ICYmIGhhdmVfZHVwZmRfY2xvZXhlYyA9PSAtMSkK KyAgICAgICAgICB7CisgICAgICAgICAgICBpbnQgZmxhZ3MgPSBmY250bCAocmVzdWx0LCBG X0dFVEZEKTsKKyAgICAgICAgICAgIGlmIChmbGFncyA8IDAgfHwgZmNudGwgKHJlc3VsdCwg Rl9TRVRGRCwgZmxhZ3MgfCBGRF9DTE9FWEVDKSA9PSAtMSkKKyAgICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgIGludCBzYXZlZF9lcnJubyA9IGVycm5vOworICAgICAgICAgICAg ICAgIGNsb3NlIChyZXN1bHQpOworICAgICAgICAgICAgICAgIGVycm5vID0gc2F2ZWRfZXJy bm87CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gLTE7CisgICAgICAgICAgICAgIH0KKyAg ICAgICAgICB9CisgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIEhBVkVfRkNOVEwgKi8KKyAg ICAgIH0gLyogRl9EVVBGRF9DTE9FWEVDICovCisKKyNpZiAhSEFWRV9GQ05UTAorICAgIGNh c2UgRl9HRVRGRDoKKyAgICAgIHsKKyMgaWYgKGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQg X19XSU4zMl9fKSAmJiAhIGRlZmluZWQgX19DWUdXSU5fXworICAgICAgICBIQU5ETEUgaGFu ZGxlID0gKEhBTkRMRSkgX2dldF9vc2ZoYW5kbGUgKGZkKTsKKyAgICAgICAgRFdPUkQgZmxh Z3M7CisgICAgICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUKKyAgICAg ICAgICAgIHx8IEdldEhhbmRsZUluZm9ybWF0aW9uIChoYW5kbGUsICZmbGFncykgPT0gMCkK KyAgICAgICAgICBlcnJubyA9IEVCQURGOworICAgICAgICBlbHNlCisgICAgICAgICAgcmVz dWx0ID0gKGZsYWdzICYgSEFORExFX0ZMQUdfSU5IRVJJVCkgPyAwIDogRkRfQ0xPRVhFQzsK KyMgZWxzZSAvKiAhVzMyICovCisgICAgICAgIC8qIFVzZSBkdXAyIHRvIHJlamVjdCBpbnZh bGlkIGZpbGUgZGVzY3JpcHRvcnMuICBObyB3YXkgdG8KKyAgICAgICAgICAgYWNjZXNzIHRo aXMgaW5mb3JtYXRpb24sIHNvIHB1bnQuICAqLworICAgICAgICBpZiAoMCA8PSBkdXAyIChm ZCwgZmQpKQorICAgICAgICAgIHJlc3VsdCA9IDA7CisjIGVuZGlmIC8qICFXMzIgKi8KKyAg ICAgICAgYnJlYWs7CisgICAgICB9IC8qIEZfR0VURkQgKi8KKyNlbmRpZiAvKiAhSEFWRV9G Q05UTCAqLworCisgICAgICAvKiBJbXBsZW1lbnRpbmcgRl9TRVRGRCBvbiBtaW5ndyBpcyBu b3QgdHJpdmlhbCAtIHRoZXJlIGlzIG5vCisgICAgICAgICBBUEkgZm9yIGNoYW5naW5nIHRo ZSBPX05PSU5IRVJJVCBiaXQgb24gYW4gZmQsIGFuZCBtZXJlbHkKKyAgICAgICAgIGNoYW5n aW5nIHRoZSBIQU5ETEVfRkxBR19JTkhFUklUIGJpdCBvbiB0aGUgdW5kZXJseWluZyBoYW5k bGUKKyAgICAgICAgIGNhbiBsZWFkIHRvIG9kZCBzdGF0ZS4gIEl0IG1heSBiZSBwb3NzaWJs ZSBieSBkdXBsaWNhdGluZyB0aGUKKyAgICAgICAgIGhhbmRsZSwgdXNpbmcgX29wZW5fb3Nm aGFuZGxlIHdpdGggdGhlIHJpZ2h0IGZsYWdzLCB0aGVuCisgICAgICAgICB1c2luZyBkdXAy IHRvIG1vdmUgdGhlIGR1cGxpY2F0ZSBvbnRvIHRoZSBvcmlnaW5hbCwgYnV0IHRoYXQKKyAg ICAgICAgIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdy4gICovCisKKyAgICBkZWZhdWx0Ogor ICAgICAgeworI2lmIEhBVkVfRkNOVEwKKyAgICAgICAgdm9pZCAqcCA9IHZhX2FyZyAoYXJn LCB2b2lkICopOworICAgICAgICByZXN1bHQgPSBmY250bCAoZmQsIGFjdGlvbiwgcCk7Cisj ZWxzZQorICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyNlbmRpZgorICAgICAgICBicmVhazsK KyAgICAgIH0KKyAgICB9CisgIHZhX2VuZCAoYXJnKTsKKyAgcmV0dXJuIHJlc3VsdDsKK30K Cj09PSBhZGRlZCBmaWxlICdsaWIvZ2V0ZHRhYmxlc2l6ZS5jJwotLS0gbGliL2dldGR0YWJs ZXNpemUuYwkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAwCisrKyBsaWIvZ2V0ZHRhYmxlc2l6 ZS5jCTIwMTMtMDctMDUgMjI6NDQ6MDcgKzAwMDAKQEAgLTAsMCArMSw4NiBAQAorLyogZ2V0 ZHRhYmxlc2l6ZSgpIGZ1bmN0aW9uIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCBoYXZlIGl0 LgorICAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisgICBXcml0dGVuIGJ5IEJydW5vIEhhaWJsZSA8YnJ1bm9AY2xpc3Aub3JnPiwg MjAwOC4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1ZGUgPGNvbmZpZy5oPgorCisvKiBTcGVjaWZp Y2F0aW9uLiAgKi8KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworI2lmIChkZWZpbmVkIF9XSU4z MiB8fCBkZWZpbmVkIF9fV0lOMzJfXykgJiYgISBkZWZpbmVkIF9fQ1lHV0lOX18KKworI2lu Y2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJtc3ZjLWludmFsLmgiCisKKyNpZiBIQVZF X01TVkNfSU5WQUxJRF9QQVJBTUVURVJfSEFORExFUgorc3RhdGljIGludAorX3NldG1heHN0 ZGlvX25vdGhyb3cgKGludCBuZXdtYXgpCit7CisgIGludCByZXN1bHQ7CisKKyAgVFJZX01T VkNfSU5WQUwKKyAgICB7CisgICAgICByZXN1bHQgPSBfc2V0bWF4c3RkaW8gKG5ld21heCk7 CisgICAgfQorICBDQVRDSF9NU1ZDX0lOVkFMCisgICAgeworICAgICAgcmVzdWx0ID0gLTE7 CisgICAgfQorICBET05FX01TVkNfSU5WQUw7CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKyMg ZGVmaW5lIF9zZXRtYXhzdGRpbyBfc2V0bWF4c3RkaW9fbm90aHJvdworI2VuZGlmCisKKy8q IENhY2hlIGZvciB0aGUgcHJldmlvdXMgZ2V0ZHRhYmxlc2l6ZSAoKSByZXN1bHQuICAqLwor c3RhdGljIGludCBkdGFibGVzaXplOworCitpbnQKK2dldGR0YWJsZXNpemUgKHZvaWQpCit7 CisgIGlmIChkdGFibGVzaXplID09IDApCisgICAgeworICAgICAgLyogV2UgYXJlIGxvb2tp bmcgZm9yIHRoZSBudW1iZXIgTiBzdWNoIHRoYXQgdGhlIHZhbGlkIGZpbGUgZGVzY3JpcHRv cnMKKyAgICAgICAgIGFyZSAwLi5OLTEuICBJdCBjYW4gYmUgb2J0YWluZWQgdGhyb3VnaCBh IGxvb3AgYXMgZm9sbG93czoKKyAgICAgICAgICAgeworICAgICAgICAgICAgIGludCBmZDsK KyAgICAgICAgICAgICBmb3IgKGZkID0gMzsgZmQgPCA2NTUzNjsgZmQrKykKKyAgICAgICAg ICAgICAgIGlmIChkdXAyICgwLCBmZCkgPT0gLTEpCisgICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgICAgIHJldHVybiBmZDsKKyAgICAgICAgICAgfQorICAgICAgICAgT24g V2luZG93cyBYUCwgdGhlIHJlc3VsdCBpcyAyMDQ4LgorICAgICAgICAgVGhlIGRyYXdiYWNr IG9mIHRoaXMgbG9vcCBpcyB0aGF0IGl0IGFsbG9jYXRlcyBtZW1vcnkgZm9yIGEgbGliYwor ICAgICAgICAgaW50ZXJuYWwgYXJyYXkgdGhhdCBpcyBuZXZlciBmcmVlZC4KKworICAgICAg ICAgVGhlIG51bWJlciBOIGNhbiBhbHNvIGJlIG9idGFpbmVkIGFzIHRoZSB1cHBlciBib3Vu ZCBmb3IKKyAgICAgICAgIF9nZXRtYXhzdGRpbyAoKS4gIF9nZXRtYXhzdGRpbyAoKSByZXR1 cm5zIHRoZSBtYXhpbXVtIG51bWJlciBvZiBvcGVuCisgICAgICAgICBGSUxFIG9iamVjdHMu ICBUaGUgc2FuaXR5IGNoZWNrIGluIF9zZXRtYXhzdGRpbyByZXZlYWxzIHRoZSBtYXhpbXVt CisgICAgICAgICBudW1iZXIgb2YgZmlsZSBkZXNjcmlwdG9ycy4gIFRoaXMgdG9vIGFsbG9j YXRlcyBtZW1vcnksIGJ1dCBpdCBpcworICAgICAgICAgZnJlZWQgd2hlbiB3ZSBjYWxsIF9z ZXRtYXhzdGRpbyB3aXRoIHRoZSBvcmlnaW5hbCB2YWx1ZS4gICovCisgICAgICBpbnQgb3Jp Z19tYXhfc3RkaW8gPSBfZ2V0bWF4c3RkaW8gKCk7CisgICAgICB1bnNpZ25lZCBpbnQgYm91 bmQ7CisgICAgICBmb3IgKGJvdW5kID0gMHgxMDAwMDsgX3NldG1heHN0ZGlvIChib3VuZCkg PCAwOyBib3VuZCA9IGJvdW5kIC8gMikKKyAgICAgICAgOworICAgICAgX3NldG1heHN0ZGlv IChvcmlnX21heF9zdGRpbyk7CisgICAgICBkdGFibGVzaXplID0gYm91bmQ7CisgICAgfQor ICByZXR1cm4gZHRhYmxlc2l6ZTsKK30KKworI2VuZGlmCgo9PT0gbW9kaWZpZWQgZmlsZSAn bGliL2dudWxpYi5taycKLS0tIGxpYi9nbnVsaWIubWsJMjAxMy0wNS0wNyAyMTozNDowMyAr MDAwMAorKysgbGliL2dudWxpYi5tawkyMDEzLTA3LTA1IDIyOjAzOjM2ICswMDAwCkBAIC0y MSw3ICsyMSw3IEBACiAjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVz dCBvZiB0aGF0IHByb2dyYW0uCiAjCiAjIEdlbmVyYXRlZCBieSBnbnVsaWItdG9vbC4KLSMg UmVwcm9kdWNlIGJ5OiBnbnVsaWItdG9vbCAtLWltcG9ydCAtLWRpcj0uIC0tbGliPWxpYmdu dSAtLXNvdXJjZS1iYXNlPWxpYiAtLW00LWJhc2U9bTQgLS1kb2MtYmFzZT1kb2MgLS10ZXN0 cy1iYXNlPXRlc3RzIC0tYXV4LWRpcj1idWlsZC1hdXggLS1hdm9pZD1kdXAgLS1hdm9pZD1m Y2hkaXIgLS1hdm9pZD1mY250bCAtLWF2b2lkPWZzdGF0IC0tYXZvaWQ9bWFsbG9jLXBvc2l4 IC0tYXZvaWQ9bXN2Yy1pbnZhbCAtLWF2b2lkPW1zdmMtbm90aHJvdyAtLWF2b2lkPW9wZW4g LS1hdm9pZD1vcGVuYXQtZGllIC0tYXZvaWQ9b3BlbmRpciAtLWF2b2lkPXJhaXNlIC0tYXZv aWQ9c2F2ZS1jd2QgLS1hdm9pZD1zZWxlY3QgLS1hdm9pZD1zaWdwcm9jbWFzayAtLWF2b2lk PXN5c190eXBlcyAtLWF2b2lkPXRocmVhZGxpYiAtLW1ha2VmaWxlLW5hbWU9Z251bGliLm1r IC0tY29uZGl0aW9uYWwtZGVwZW5kZW5jaWVzIC0tbm8tbGlidG9vbCAtLW1hY3JvLXByZWZp eD1nbCAtLW5vLXZjLWZpbGVzIGFsbG9jYS1vcHQgYy1jdHlwZSBjLXN0cmNhc2UgY2FyZWFk bGlua2F0IGNsb3NlLXN0cmVhbSBjcnlwdG8vbWQ1IGNyeXB0by9zaGExIGNyeXB0by9zaGEy NTYgY3J5cHRvL3NoYTUxMiBkdG9hc3RyIGR0b3RpbWVzcGVjIGR1cDIgZW52aXJvbiBleGVj aW5mbyBmYWNjZXNzYXQgZmNudGwtaCBmZGF0YXN5bmMgZmRvcGVuZGlyIGZpbGVtb2RlIGZz dGF0YXQgZnN5bmMgZ2V0bG9hZGF2ZyBnZXRvcHQtZ251IGdldHRpbWUgZ2V0dGltZW9mZGF5 IGlnbm9yZS12YWx1ZSBpbnRwcm9wcyBsYXJnZWZpbGUgbHN0YXQgbWFueXdhcm5pbmdzIG1l bXJjaHIgbWt0aW1lIHBzZWxlY3QgcHRocmVhZF9zaWdtYXNrIHB1dGVudiBxYWNsIHJlYWRs aW5rIHJlYWRsaW5rYXQgc2lnMnN0ciBzb2NrbGVuIHN0YXQtdGltZSBzdGRhbGlnbiBzdGRh cmcgc3RkYm9vbCBzdGRpbyBzdHJmdGltZSBzdHJ0b2ltYXggc3RydG91bWF4IHN5bWxpbmsg c3lzX3N0YXQgc3lzX3RpbWUgdGltZSB0aW1lci10aW1lIHRpbWVzcGVjLWFkZCB0aW1lc3Bl Yy1zdWIgdW5zZXRlbnYgdXRpbWVucyB3YXJuaW5ncworIyBSZXByb2R1Y2UgYnk6IGdudWxp Yi10b29sIC0taW1wb3J0IC0tZGlyPS4gLS1saWI9bGliZ251IC0tc291cmNlLWJhc2U9bGli IC0tbTQtYmFzZT1tNCAtLWRvYy1iYXNlPWRvYyAtLXRlc3RzLWJhc2U9dGVzdHMgLS1hdXgt ZGlyPWJ1aWxkLWF1eCAtLWF2b2lkPWJpbmFyeS1pbyAtLWF2b2lkPWNsb3NlIC0tYXZvaWQ9 ZHVwIC0tYXZvaWQ9ZmNoZGlyIC0tYXZvaWQ9ZnN0YXQgLS1hdm9pZD1tYWxsb2MtcG9zaXgg LS1hdm9pZD1tc3ZjLWludmFsIC0tYXZvaWQ9bXN2Yy1ub3Rocm93IC0tYXZvaWQ9b3BlbiAt LWF2b2lkPW9wZW5hdC1kaWUgLS1hdm9pZD1vcGVuZGlyIC0tYXZvaWQ9cmFpc2UgLS1hdm9p ZD1zYXZlLWN3ZCAtLWF2b2lkPXNlbGVjdCAtLWF2b2lkPXNpZ3Byb2NtYXNrIC0tYXZvaWQ9 c3lzX3R5cGVzIC0tYXZvaWQ9dGhyZWFkbGliIC0tbWFrZWZpbGUtbmFtZT1nbnVsaWIubWsg LS1jb25kaXRpb25hbC1kZXBlbmRlbmNpZXMgLS1uby1saWJ0b29sIC0tbWFjcm8tcHJlZml4 PWdsIC0tbm8tdmMtZmlsZXMgYWxsb2NhLW9wdCBjLWN0eXBlIGMtc3RyY2FzZSBjYXJlYWRs aW5rYXQgY2xvc2Utc3RyZWFtIGNyeXB0by9tZDUgY3J5cHRvL3NoYTEgY3J5cHRvL3NoYTI1 NiBjcnlwdG8vc2hhNTEyIGR0b2FzdHIgZHRvdGltZXNwZWMgZHVwMiBlbnZpcm9uIGV4ZWNp bmZvIGZhY2Nlc3NhdCBmY250bCBmY250bC1oIGZkYXRhc3luYyBmZG9wZW5kaXIgZmlsZW1v ZGUgZnN0YXRhdCBmc3luYyBnZXRsb2FkYXZnIGdldG9wdC1nbnUgZ2V0dGltZSBnZXR0aW1l b2ZkYXkgaWdub3JlLXZhbHVlIGludHByb3BzIGxhcmdlZmlsZSBsc3RhdCBtYW55d2Fybmlu Z3MgbWVtcmNociBta3RpbWUgcGlwZTIgcHNlbGVjdCBwdGhyZWFkX3NpZ21hc2sgcHV0ZW52 IHFhY2wgcmVhZGxpbmsgcmVhZGxpbmthdCBzaWcyc3RyIHNvY2tsZW4gc3RhdC10aW1lIHN0 ZGFsaWduIHN0ZGFyZyBzdGRib29sIHN0ZGlvIHN0cmZ0aW1lIHN0cnRvaW1heCBzdHJ0b3Vt YXggc3ltbGluayBzeXNfc3RhdCBzeXNfdGltZSB0aW1lIHRpbWVyLXRpbWUgdGltZXNwZWMt YWRkIHRpbWVzcGVjLXN1YiB1bnNldGVudiB1dGltZW5zIHdhcm5pbmdzCiAKIAogTU9TVExZ Q0xFQU5GSUxFUyArPSBjb3JlICouc3RhY2tkdW1wCkBAIC0yOTYsNiArMjk2LDE1IEBACiAK ICMjIGVuZCAgIGdudWxpYiBtb2R1bGUgZmFjY2Vzc2F0CiAKKyMjIGJlZ2luIGdudWxpYiBt b2R1bGUgZmNudGwKKworCitFWFRSQV9ESVNUICs9IGZjbnRsLmMKKworRVhUUkFfbGliZ251 X2FfU09VUkNFUyArPSBmY250bC5jCisKKyMjIGVuZCAgIGdudWxpYiBtb2R1bGUgZmNudGwK KwogIyMgYmVnaW4gZ251bGliIG1vZHVsZSBmY250bC1oCiAKIEJVSUxUX1NPVVJDRVMgKz0g ZmNudGwuaApAQCAtMzg0LDYgKzM5MywxNyBAQAogCiAjIyBlbmQgICBnbnVsaWIgbW9kdWxl IGZzeW5jCiAKKyMjIGJlZ2luIGdudWxpYiBtb2R1bGUgZ2V0ZHRhYmxlc2l6ZQorCitpZiBn bF9HTlVMSUJfRU5BQkxFRF9nZXRkdGFibGVzaXplCisKK2VuZGlmCitFWFRSQV9ESVNUICs9 IGdldGR0YWJsZXNpemUuYworCitFWFRSQV9saWJnbnVfYV9TT1VSQ0VTICs9IGdldGR0YWJs ZXNpemUuYworCisjIyBlbmQgICBnbnVsaWIgbW9kdWxlIGdldGR0YWJsZXNpemUKKwogIyMg YmVnaW4gZ251bGliIG1vZHVsZSBnZXRncm91cHMKIAogaWYgZ2xfR05VTElCX0VOQUJMRURf Z2V0Z3JvdXBzCkBAIC01NjgsNiArNTg4LDEyIEBACiAKICMjIGVuZCAgIGdudWxpYiBtb2R1 bGUgcGF0aG1heAogCisjIyBiZWdpbiBnbnVsaWIgbW9kdWxlIHBpcGUyCisKK2xpYmdudV9h X1NPVVJDRVMgKz0gcGlwZTIuYworCisjIyBlbmQgICBnbnVsaWIgbW9kdWxlIHBpcGUyCisK ICMjIGJlZ2luIGdudWxpYiBtb2R1bGUgcHNlbGVjdAogCiAKQEAgLTE3MDQsOSArMTczMCw3 IEBACiAKICMjIGJlZ2luIGdudWxpYiBtb2R1bGUgdmVyaWZ5CiAKLWlmIGdsX0dOVUxJQl9F TkFCTEVEX3ZlcmlmeQogCi1lbmRpZgogRVhUUkFfRElTVCArPSB2ZXJpZnkuaAogCiAjIyBl bmQgICBnbnVsaWIgbW9kdWxlIHZlcmlmeQoKPT09IGFkZGVkIGZpbGUgJ2xpYi9waXBlMi5j JwotLS0gbGliL3BpcGUyLmMJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgbGliL3Bp cGUyLmMJMjAxMy0wNy0wNSAyMjo0NDowNyArMDAwMApAQCAtMCwwICsxLDE3MSBAQAorLyog Q3JlYXRlIGEgcGlwZSwgd2l0aCBzcGVjaWZpYyBvcGVuaW5nIGZsYWdzLgorICAgQ29weXJp Z2h0IChDKSAyMDA5LTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAg IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQor ICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisgICB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1 ZGUgPGNvbmZpZy5oPgorCisvKiBTcGVjaWZpY2F0aW9uLiAgKi8KKyNpbmNsdWRlIDx1bmlz dGQuaD4KKworI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKworI2lm IEdOVUxJQl9CSU5BUllfSU8KKyMgaW5jbHVkZSAiYmluYXJ5LWlvLmgiCisjZW5kaWYKKwor I2luY2x1ZGUgInZlcmlmeS5oIgorCisjaWYgR05VTElCX2RlZmluZWRfT19OT05CTE9DSwor IyBpbmNsdWRlICJub25ibG9ja2luZy5oIgorI2VuZGlmCisKKyNpZiAoZGVmaW5lZCBfV0lO MzIgfHwgZGVmaW5lZCBfX1dJTjMyX18pICYmICEgZGVmaW5lZCBfX0NZR1dJTl9fCisvKiBO YXRpdmUgV2luZG93cyBBUEkuICAqLworCisjIGluY2x1ZGUgPGlvLmg+CisKKyNlbmRpZgor CitpbnQKK3BpcGUyIChpbnQgZmRbMl0sIGludCBmbGFncykKK3sKKyAgLyogTWluZ3cgX3Bp cGUoKSBjb3JydXB0cyBmZCBvbiBmYWlsdXJlOyBhbHNvLCBpZiB3ZSBzdWNjZWVkIGF0Cisg ICAgIGNyZWF0aW5nIHRoZSBwaXBlIGJ1dCBsYXRlciBmYWlsIGF0IGNoYW5naW5nIGZjbnRs LCB3ZSB3YW50CisgICAgIHRvIGxlYXZlIGZkIHVuY2hhbmdlZDogaHR0cDovL2F1c3Rpbmdy b3VwYnVncy5uZXQvdmlldy5waHA/aWQ9NDY3ICAqLworICBpbnQgdG1wWzJdOworICB0bXBb MF0gPSBmZFswXTsKKyAgdG1wWzFdID0gZmRbMV07CisKKyNpZiBIQVZFX1BJUEUyCisjIHVu ZGVmIHBpcGUyCisgIC8qIFRyeSB0aGUgc3lzdGVtIGNhbGwgZmlyc3QsIGlmIGl0IGV4aXN0 cy4gIChXZSBtYXkgYmUgcnVubmluZyB3aXRoIGEgZ2xpYmMKKyAgICAgdGhhdCBoYXMgdGhl IGZ1bmN0aW9uIGJ1dCB3aXRoIGFuIG9sZGVyIGtlcm5lbCB0aGF0IGxhY2tzIGl0LikgICov CisgIHsKKyAgICAvKiBDYWNoZSB0aGUgaW5mb3JtYXRpb24gd2hldGhlciB0aGUgc3lzdGVt IGNhbGwgcmVhbGx5IGV4aXN0cy4gICovCisgICAgc3RhdGljIGludCBoYXZlX3BpcGUyX3Jl YWxseTsgLyogMCA9IHVua25vd24sIDEgPSB5ZXMsIC0xID0gbm8gKi8KKyAgICBpZiAoaGF2 ZV9waXBlMl9yZWFsbHkgPj0gMCkKKyAgICAgIHsKKyAgICAgICAgaW50IHJlc3VsdCA9IHBp cGUyIChmZCwgZmxhZ3MpOworICAgICAgICBpZiAoIShyZXN1bHQgPCAwICYmIGVycm5vID09 IEVOT1NZUykpCisgICAgICAgICAgeworICAgICAgICAgICAgaGF2ZV9waXBlMl9yZWFsbHkg PSAxOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICB9CisgICAgICAg IGhhdmVfcGlwZTJfcmVhbGx5ID0gLTE7CisgICAgICB9CisgIH0KKyNlbmRpZgorCisgIC8q IENoZWNrIHRoZSBzdXBwb3J0ZWQgZmxhZ3MuICAqLworICBpZiAoKGZsYWdzICYgfihPX0NM T0VYRUMgfCBPX05PTkJMT0NLIHwgT19CSU5BUlkgfCBPX1RFWFQpKSAhPSAwKQorICAgIHsK KyAgICAgIGVycm5vID0gRUlOVkFMOworICAgICAgcmV0dXJuIC0xOworICAgIH0KKworI2lm IChkZWZpbmVkIF9XSU4zMiB8fCBkZWZpbmVkIF9fV0lOMzJfXykgJiYgISBkZWZpbmVkIF9f Q1lHV0lOX18KKy8qIE5hdGl2ZSBXaW5kb3dzIEFQSS4gICovCisKKyAgaWYgKF9waXBlIChm ZCwgNDA5NiwgZmxhZ3MgJiB+T19OT05CTE9DSykgPCAwKQorICAgIHsKKyAgICAgIGZkWzBd ID0gdG1wWzBdOworICAgICAgZmRbMV0gPSB0bXBbMV07CisgICAgICByZXR1cm4gLTE7Cisg ICAgfQorCisgIC8qIE9fTk9OQkxPQ0sgaGFuZGxpbmcuCisgICAgIE9uIG5hdGl2ZSBXaW5k b3dzIHBsYXRmb3JtcywgT19OT05CTE9DSyBpcyBkZWZpbmVkIGJ5IGdudWxpYi4gIFVzZSB0 aGUKKyAgICAgZnVuY3Rpb25zIGRlZmluZWQgYnkgdGhlIGdudWxpYiBtb2R1bGUgJ25vbmJs b2NraW5nJy4gICovCisjIGlmIEdOVUxJQl9kZWZpbmVkX09fTk9OQkxPQ0sKKyAgaWYgKGZs YWdzICYgT19OT05CTE9DSykKKyAgICB7CisgICAgICBpZiAoc2V0X25vbmJsb2NraW5nX2Zs YWcgKGZkWzBdLCB0cnVlKSAhPSAwCisgICAgICAgICAgfHwgc2V0X25vbmJsb2NraW5nX2Zs YWcgKGZkWzFdLCB0cnVlKSAhPSAwKQorICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorIyBl bHNlCisgIHsKKyAgICB2ZXJpZnkgKE9fTk9OQkxPQ0sgPT0gMCk7CisgIH0KKyMgZW5kaWYK KworICByZXR1cm4gMDsKKworI2Vsc2UKKy8qIFVuaXggQVBJLiAgKi8KKworICBpZiAocGlw ZSAoZmQpIDwgMCkKKyAgICByZXR1cm4gLTE7CisKKyAgLyogUE9TSVggPGh0dHA6Ly93d3cu b3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvZnVuY3Rpb25zL3BpcGUuaHRt bD4KKyAgICAgc2F5cyB0aGF0IGluaXRpYWxseSwgdGhlIE9fTk9OQkxPQ0sgYW5kIEZEX0NM T0VYRUMgZmxhZ3MgYXJlIGNsZWFyZWQgb24KKyAgICAgYm90aCBmZFswXSBhbmQgZmRbMV0u ICAqLworCisgIC8qIE9fTk9OQkxPQ0sgaGFuZGxpbmcuCisgICAgIE9uIFVuaXggcGxhdGZv cm1zLCBPX05PTkJMT0NLIGlzIGRlZmluZWQgYnkgdGhlIHN5c3RlbS4gIFVzZSBmY250bCgp LiAgKi8KKyAgaWYgKGZsYWdzICYgT19OT05CTE9DSykKKyAgICB7CisgICAgICBpbnQgZmNu dGxfZmxhZ3M7CisKKyAgICAgIGlmICgoZmNudGxfZmxhZ3MgPSBmY250bCAoZmRbMV0sIEZf R0VURkwsIDApKSA8IDAKKyAgICAgICAgICB8fCBmY250bCAoZmRbMV0sIEZfU0VURkwsIGZj bnRsX2ZsYWdzIHwgT19OT05CTE9DSykgPT0gLTEKKyAgICAgICAgICB8fCAoZmNudGxfZmxh Z3MgPSBmY250bCAoZmRbMF0sIEZfR0VURkwsIDApKSA8IDAKKyAgICAgICAgICB8fCBmY250 bCAoZmRbMF0sIEZfU0VURkwsIGZjbnRsX2ZsYWdzIHwgT19OT05CTE9DSykgPT0gLTEpCisg ICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgaWYgKGZsYWdzICYgT19DTE9FWEVDKQor ICAgIHsKKyAgICAgIGludCBmY250bF9mbGFnczsKKworICAgICAgaWYgKChmY250bF9mbGFn cyA9IGZjbnRsIChmZFsxXSwgRl9HRVRGRCwgMCkpIDwgMAorICAgICAgICAgIHx8IGZjbnRs IChmZFsxXSwgRl9TRVRGRCwgZmNudGxfZmxhZ3MgfCBGRF9DTE9FWEVDKSA9PSAtMQorICAg ICAgICAgIHx8IChmY250bF9mbGFncyA9IGZjbnRsIChmZFswXSwgRl9HRVRGRCwgMCkpIDwg MAorICAgICAgICAgIHx8IGZjbnRsIChmZFswXSwgRl9TRVRGRCwgZmNudGxfZmxhZ3MgfCBG RF9DTE9FWEVDKSA9PSAtMSkKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKworIyBpZiBP X0JJTkFSWQorICBpZiAoZmxhZ3MgJiBPX0JJTkFSWSkKKyAgICB7CisgICAgICBzZXRtb2Rl IChmZFsxXSwgT19CSU5BUlkpOworICAgICAgc2V0bW9kZSAoZmRbMF0sIE9fQklOQVJZKTsK KyAgICB9CisgIGVsc2UgaWYgKGZsYWdzICYgT19URVhUKQorICAgIHsKKyAgICAgIHNldG1v ZGUgKGZkWzFdLCBPX1RFWFQpOworICAgICAgc2V0bW9kZSAoZmRbMF0sIE9fVEVYVCk7Cisg ICAgfQorIyBlbmRpZgorCisgIHJldHVybiAwOworCisjZW5kaWYKKworI2lmIEdOVUxJQl9k ZWZpbmVkX09fTk9OQkxPQ0sgfHwgXAorICAhKChkZWZpbmVkIF9XSU4zMiB8fCBkZWZpbmVk IF9fV0lOMzJfXykgJiYgISBkZWZpbmVkIF9fQ1lHV0lOX18pCisgZmFpbDoKKyAgeworICAg IGludCBzYXZlZF9lcnJubyA9IGVycm5vOworICAgIGNsb3NlIChmZFswXSk7CisgICAgY2xv c2UgKGZkWzFdKTsKKyAgICBmZFswXSA9IHRtcFswXTsKKyAgICBmZFsxXSA9IHRtcFsxXTsK KyAgICBlcnJubyA9IHNhdmVkX2Vycm5vOworICAgIHJldHVybiAtMTsKKyAgfQorI2VuZGlm Cit9Cgo9PT0gYWRkZWQgZmlsZSAnbTQvZmNudGwubTQnCi0tLSBtNC9mY250bC5tNAkxOTcw LTAxLTAxIDAwOjAwOjAwICswMDAwCisrKyBtNC9mY250bC5tNAkyMDEzLTA3LTA1IDIyOjQ0 OjA4ICswMDAwCkBAIC0wLDAgKzEsOTUgQEAKKyMgZmNudGwubTQgc2VyaWFsIDUKK2RubCBD b3B5cmlnaHQgKEMpIDIwMDktMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K K2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbgorZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29y IGRpc3RyaWJ1dGUgaXQsCitkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFz IGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIEZvciBub3csIHRoaXMg bW9kdWxlIGVuc3VyZXMgdGhhdCBmY250bCgpCisjIC0gc3VwcG9ydHMgRl9EVVBGRCBjb3Jy ZWN0bHkKKyMgLSBzdXBwb3J0cyBvciBlbXVsYXRlcyBGX0RVUEZEX0NMT0VYRUMKKyMgLSBz dXBwb3J0cyBGX0dFVEZECisjIFN0aWxsIHRvIGJlIHBvcnRlZCB0byBtaW5ndzoKKyMgLSBG X1NFVEZECisjIC0gRl9HRVRGTCwgRl9TRVRGTAorIyAtIEZfR0VUT1dOLCBGX1NFVE9XTgor IyAtIEZfR0VUTEssIEZfU0VUTEssIEZfU0VUTEtXCitBQ19ERUZVTihbZ2xfRlVOQ19GQ05U TF0sCitbCisgIGRubCBQZXJzdWFkZSBnbGliYyB0byBleHBvc2UgRl9EVVBGRF9DTE9FWEVD LgorICBBQ19SRVFVSVJFKFtnbF9VU0VfU1lTVEVNX0VYVEVOU0lPTlNdKQorICBBQ19SRVFV SVJFKFtnbF9GQ05UTF9IX0RFRkFVTFRTXSkKKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FM X0hPU1RdKQorICBBQ19DSEVDS19GVU5DU19PTkNFKFtmY250bF0pCisgIGlmIHRlc3QgJGFj X2N2X2Z1bmNfZmNudGwgPSBubzsgdGhlbgorICAgIGdsX1JFUExBQ0VfRkNOVEwKKyAgZWxz ZQorICAgIGRubCBjeWd3aW4gMS41LnggRl9EVVBGRCBoYXMgd3JvbmcgZXJybm8sIGFuZCBh bGxvd3MgbmVnYXRpdmUgdGFyZ2V0CisgICAgZG5sIGhhaWt1IGFscGhhIDIgRl9EVVBGRCBo YXMgd3JvbmcgZXJybm8KKyAgICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciBmY250bCBoYW5k bGVzIEZfRFVQRkQgY29ycmVjdGx5XSwKKyAgICAgIFtnbF9jdl9mdW5jX2ZjbnRsX2ZfZHVw ZmRfd29ya3NdLAorICAgICAgW0FDX1JVTl9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWwor I2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KK11dLCBbW2ludCByZXN1 bHQgPSAwOworICAgICAgaWYgKGZjbnRsICgwLCBGX0RVUEZELCAtMSkgIT0gLTEpIHJlc3Vs dCB8PSAxOworICAgICAgaWYgKGVycm5vICE9IEVJTlZBTCkgcmVzdWx0IHw9IDI7CisgICAg ICByZXR1cm4gcmVzdWx0OworICAgICAgICAgXV0pXSwKKyAgICAgICAgIFtnbF9jdl9mdW5j X2ZjbnRsX2ZfZHVwZmRfd29ya3M9eWVzXSwKKyAgICAgICAgIFtnbF9jdl9mdW5jX2ZjbnRs X2ZfZHVwZmRfd29ya3M9bm9dLAorICAgICAgICAgWyMgR3Vlc3MgdGhhdCBpdCB3b3JrcyBv biBnbGliYyBzeXN0ZW1zCisgICAgICAgICAgY2FzZSAkaG9zdF9vcyBpbiAjKCgKKyAgICAg ICAgICAgICotZ251KikgZ2xfY3ZfZnVuY19mY250bF9mX2R1cGZkX3dvcmtzPSJndWVzc2lu ZyB5ZXMiOzsKKyAgICAgICAgICAgICopICAgICAgZ2xfY3ZfZnVuY19mY250bF9mX2R1cGZk X3dvcmtzPSJndWVzc2luZyBubyI7OworICAgICAgICAgIGVzYWNdKV0pCisgICAgY2FzZSAk Z2xfY3ZfZnVuY19mY250bF9mX2R1cGZkX3dvcmtzIGluCisgICAgICAqeWVzKSA7OworICAg ICAgKikgZ2xfUkVQTEFDRV9GQ05UTAorICAgICAgICBBQ19ERUZJTkUoW0ZDTlRMX0RVUEZE X0JVR0dZXSwgWzFdLCBbRGVmaW5lIHRoaXMgdG8gMSBpZiBGX0RVUEZECisgICAgICAgICAg YmVoYXZpb3IgZG9lcyBub3QgbWF0Y2ggUE9TSVhdKSA7OworICAgIGVzYWMKKworICAgIGRu bCBNYW55IHN5c3RlbXMgbGFjayBGX0RVUEZEX0NMT0VYRUMKKyAgICBBQ19DQUNIRV9DSEVD Syhbd2hldGhlciBmY250bCB1bmRlcnN0YW5kcyBGX0RVUEZEX0NMT0VYRUNdLAorICAgICAg W2dsX2N2X2Z1bmNfZmNudGxfZl9kdXBmZF9jbG9leGVjXSwKKyAgICAgIFtBQ19DT01QSUxF X0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpZm5k ZWYgRl9EVVBGRF9DTE9FWEVDCitjaG9rZSBtZQorI2VuZGlmCisgICAgICAgICBdXSldLAor ICAgICAgICAgW0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKKyNpZmRl ZiBfX2xpbnV4X18KKy8qIFRoZSBMaW51eCBrZXJuZWwgb25seSBhZGRlZCBGX0RVUEZEX0NM T0VYRUMgaW4gMi42LjI0LCBzbyB3ZSBhbHdheXMgcmVwbGFjZQorICAgaXQgdG8gc3VwcG9y dCB0aGUgc2VtYW50aWNzIG9uIG9sZGVyIGtlcm5lbHMgdGhhdCBmYWlsZWQgd2l0aCBFSU5W QUwuICAqLworY2hva2UgbWUKKyNlbmRpZgorICAgICAgICAgICBdXSldLAorICAgICAgICAg ICBbZ2xfY3ZfZnVuY19mY250bF9mX2R1cGZkX2Nsb2V4ZWM9eWVzXSwKKyAgICAgICAgICAg W2dsX2N2X2Z1bmNfZmNudGxfZl9kdXBmZF9jbG9leGVjPSJuZWVkcyBydW50aW1lIGNoZWNr Il0pXSwKKyAgICAgICAgIFtnbF9jdl9mdW5jX2ZjbnRsX2ZfZHVwZmRfY2xvZXhlYz1ub10p XSkKKyAgICBpZiB0ZXN0ICIkZ2xfY3ZfZnVuY19mY250bF9mX2R1cGZkX2Nsb2V4ZWMiICE9 IHllczsgdGhlbgorICAgICAgZ2xfUkVQTEFDRV9GQ05UTAorICAgICAgZG5sIE5vIHdpdG5l c3MgbWFjcm8gbmVlZGVkIGZvciB0aGlzIGJ1Zy4KKyAgICBmaQorICBmaQorICBkbmwgUmVw bGFjZSBmY250bCgpIGZvciBzdXBwb3J0aW5nIHRoZSBnbnVsaWItZGVmaW5lZCBmY2hkaXIo KSBmdW5jdGlvbiwKKyAgZG5sIHRvIGtlZXAgZmNoZGlyJ3MgYm9va2tlZXBpbmcgdXAtdG8t ZGF0ZS4KKyAgbTRfaWZkZWYoW2dsX0ZVTkNfRkNIRElSXSwgWworICAgIGdsX1RFU1RfRkNI RElSCisgICAgaWYgdGVzdCAkSEFWRV9GQ0hESVIgPSAwOyB0aGVuCisgICAgICBnbF9SRVBM QUNFX0ZDTlRMCisgICAgZmkKKyAgXSkKK10pCisKK0FDX0RFRlVOKFtnbF9SRVBMQUNFX0ZD TlRMXSwKK1sKKyAgQUNfUkVRVUlSRShbZ2xfRkNOVExfSF9ERUZBVUxUU10pCisgIEFDX0NI RUNLX0ZVTkNTX09OQ0UoW2ZjbnRsXSkKKyAgaWYgdGVzdCAkYWNfY3ZfZnVuY19mY250bCA9 IG5vOyB0aGVuCisgICAgSEFWRV9GQ05UTD0wCisgIGVsc2UKKyAgICBSRVBMQUNFX0ZDTlRM PTEKKyAgZmkKK10pCgo9PT0gYWRkZWQgZmlsZSAnbTQvZ2V0ZHRhYmxlc2l6ZS5tNCcKLS0t IG00L2dldGR0YWJsZXNpemUubTQJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgbTQv Z2V0ZHRhYmxlc2l6ZS5tNAkyMDEzLTA3LTA1IDIyOjQ0OjA4ICswMDAwCkBAIC0wLDAgKzEs MTcgQEAKKyMgZ2V0ZHRhYmxlc2l6ZS5tNCBzZXJpYWwgNAorZG5sIENvcHlyaWdodCAoQykg MjAwOC0yMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorZG5sIFRoaXMgZmls ZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwg Z2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBp dCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlz IG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKK0FDX0RFRlVOKFtnbF9GVU5DX0dFVERUQUJMRVNJ WkVdLAorWworICBBQ19SRVFVSVJFKFtnbF9VTklTVERfSF9ERUZBVUxUU10pCisgIEFDX0NI RUNLX0ZVTkNTX09OQ0UoW2dldGR0YWJsZXNpemVdKQorICBpZiB0ZXN0ICRhY19jdl9mdW5j X2dldGR0YWJsZXNpemUgIT0geWVzOyB0aGVuCisgICAgSEFWRV9HRVREVEFCTEVTSVpFPTAK KyAgZmkKK10pCisKKyMgUHJlcmVxdWlzaXRlcyBvZiBsaWIvZ2V0ZHRhYmxlc2l6ZS5jLgor QUNfREVGVU4oW2dsX1BSRVJFUV9HRVREVEFCTEVTSVpFXSwgWzpdKQoKPT09IG1vZGlmaWVk IGZpbGUgJ200L2dudWxpYi1jb21wLm00JwotLS0gbTQvZ251bGliLWNvbXAubTQJMjAxMy0w NS0wNyAyMTozNDowMyArMDAwMAorKysgbTQvZ251bGliLWNvbXAubTQJMjAxMy0wNy0wNSAy MjowMzozNiArMDAwMApAQCAtNjMsNiArNjMsNyBAQAogICBBQ19SRVFVSVJFKFtnbF9VU0Vf U1lTVEVNX0VYVEVOU0lPTlNdKQogICAjIENvZGUgZnJvbSBtb2R1bGUgZXh0ZXJuLWlubGlu ZToKICAgIyBDb2RlIGZyb20gbW9kdWxlIGZhY2Nlc3NhdDoKKyAgIyBDb2RlIGZyb20gbW9k dWxlIGZjbnRsOgogICAjIENvZGUgZnJvbSBtb2R1bGUgZmNudGwtaDoKICAgIyBDb2RlIGZy b20gbW9kdWxlIGZkYXRhc3luYzoKICAgIyBDb2RlIGZyb20gbW9kdWxlIGZkb3BlbmRpcjoK QEAgLTcwLDYgKzcxLDcgQEAKICAgIyBDb2RlIGZyb20gbW9kdWxlIGZwZW5kaW5nOgogICAj IENvZGUgZnJvbSBtb2R1bGUgZnN0YXRhdDoKICAgIyBDb2RlIGZyb20gbW9kdWxlIGZzeW5j OgorICAjIENvZGUgZnJvbSBtb2R1bGUgZ2V0ZHRhYmxlc2l6ZToKICAgIyBDb2RlIGZyb20g bW9kdWxlIGdldGdyb3VwczoKICAgIyBDb2RlIGZyb20gbW9kdWxlIGdldGxvYWRhdmc6CiAg ICMgQ29kZSBmcm9tIG1vZHVsZSBnZXRvcHQtZ251OgpAQCAtOTIsNiArOTQsNyBAQAogICAj IENvZGUgZnJvbSBtb2R1bGUgbm9jcmFzaDoKICAgIyBDb2RlIGZyb20gbW9kdWxlIG9wZW5h dC1oOgogICAjIENvZGUgZnJvbSBtb2R1bGUgcGF0aG1heDoKKyAgIyBDb2RlIGZyb20gbW9k dWxlIHBpcGUyOgogICAjIENvZGUgZnJvbSBtb2R1bGUgcHNlbGVjdDoKICAgIyBDb2RlIGZy b20gbW9kdWxlIHB0aHJlYWRfc2lnbWFzazoKICAgIyBDb2RlIGZyb20gbW9kdWxlIHB1dGVu djoKQEAgLTE5MSw2ICsxOTQsMTEgQEAKICAgZmkKICAgZ2xfTU9EVUxFX0lORElDQVRPUihb ZmFjY2Vzc2F0XSkKICAgZ2xfVU5JU1REX01PRFVMRV9JTkRJQ0FUT1IoW2ZhY2Nlc3NhdF0p CisgIGdsX0ZVTkNfRkNOVEwKKyAgaWYgdGVzdCAkSEFWRV9GQ05UTCA9IDAgfHwgdGVzdCAk UkVQTEFDRV9GQ05UTCA9IDE7IHRoZW4KKyAgICBBQ19MSUJPQkooW2ZjbnRsXSkKKyAgZmkK KyAgZ2xfRkNOVExfTU9EVUxFX0lORElDQVRPUihbZmNudGxdKQogICBnbF9GQ05UTF9ICiAg IGdsX0ZVTkNfRkRBVEFTWU5DCiAgIGlmIHRlc3QgJEhBVkVfRkRBVEFTWU5DID0gMDsgdGhl bgpAQCAtMjczLDYgKzI4MSw4IEBACiAgIGZpCiAgIGdsX1RJTUVfTU9EVUxFX0lORElDQVRP UihbbWt0aW1lXSkKICAgZ2xfTVVMVElBUkNICisgIGdsX0ZVTkNfUElQRTIKKyAgZ2xfVU5J U1REX01PRFVMRV9JTkRJQ0FUT1IoW3BpcGUyXSkKICAgZ2xfRlVOQ19QU0VMRUNUCiAgIGlm IHRlc3QgJEhBVkVfUFNFTEVDVCA9IDAgfHwgdGVzdCAkUkVQTEFDRV9QU0VMRUNUID0gMTsg dGhlbgogICAgIEFDX0xJQk9CSihbcHNlbGVjdF0pCkBAIC0zNjQsNiArMzc0LDcgQEAKICAg Z2xfZ251bGliX2VuYWJsZWRfMjYwOTQxYzBlNWRjNjdlYzllODdkMWZiMzIxYzMwMGI9ZmFs c2UKICAgZ2xfZ251bGliX2VuYWJsZWRfZG9zbmFtZT1mYWxzZQogICBnbF9nbnVsaWJfZW5h YmxlZF9ldWlkYWNjZXNzPWZhbHNlCisgIGdsX2dudWxpYl9lbmFibGVkX2dldGR0YWJsZXNp emU9ZmFsc2UKICAgZ2xfZ251bGliX2VuYWJsZWRfZ2V0Z3JvdXBzPWZhbHNlCiAgIGdsX2du dWxpYl9lbmFibGVkX2JlNDUzY2VjNWVlY2Y1NzMxYTI3NGYyZGU3ZjJkYjM2PWZhbHNlCiAg IGdsX2dudWxpYl9lbmFibGVkX2E5Nzg2ODUwZTk5OWFlNjVhODM2YTYwNDFlOGU1ZWQxPWZh bHNlCkBAIC0zNzMsNyArMzg0LDYgQEAKICAgZ2xfZ251bGliX2VuYWJsZWRfc3RhdD1mYWxz ZQogICBnbF9nbnVsaWJfZW5hYmxlZF9zdHJ0b2xsPWZhbHNlCiAgIGdsX2dudWxpYl9lbmFi bGVkX3N0cnRvdWxsPWZhbHNlCi0gIGdsX2dudWxpYl9lbmFibGVkX3ZlcmlmeT1mYWxzZQog ICBnbF9nbnVsaWJfZW5hYmxlZF82ODJlNjA5NjA0Y2NhYWM2YmUzODJlNGVlM2E0ZWFlYz1m YWxzZQogICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfMjYwOTQxYzBlNWRjNjdlYzllODdkMWZi MzIxYzMwMGIgKCkKICAgewpAQCAtNDA3LDYgKzQxNywxOCBAQAogICAgICAgZmkKICAgICBm aQogICB9CisgIGZ1bmNfZ2xfZ251bGliX200Y29kZV9nZXRkdGFibGVzaXplICgpCisgIHsK KyAgICBpZiAhICRnbF9nbnVsaWJfZW5hYmxlZF9nZXRkdGFibGVzaXplOyB0aGVuCisgICAg ICBnbF9GVU5DX0dFVERUQUJMRVNJWkUKKyAgICAgIGlmIHRlc3QgJEhBVkVfR0VURFRBQkxF U0laRSA9IDA7IHRoZW4KKyAgICAgICAgQUNfTElCT0JKKFtnZXRkdGFibGVzaXplXSkKKyAg ICAgICAgZ2xfUFJFUkVRX0dFVERUQUJMRVNJWkUKKyAgICAgIGZpCisgICAgICBnbF9VTklT VERfTU9EVUxFX0lORElDQVRPUihbZ2V0ZHRhYmxlc2l6ZV0pCisgICAgICBnbF9nbnVsaWJf ZW5hYmxlZF9nZXRkdGFibGVzaXplPXRydWUKKyAgICBmaQorICB9CiAgIGZ1bmNfZ2xfZ251 bGliX200Y29kZV9nZXRncm91cHMgKCkKICAgewogICAgIGlmICEgJGdsX2dudWxpYl9lbmFi bGVkX2dldGdyb3VwczsgdGhlbgpAQCAtNDc5LDkgKzUwMSw2IEBACiAgICAgICBpZiB0ZXN0 ICRSRVBMQUNFX1NUQVQgPSAxOyB0aGVuCiAgICAgICAgIGZ1bmNfZ2xfZ251bGliX200Y29k ZV9wYXRobWF4CiAgICAgICBmaQotICAgICAgaWYgdGVzdCAkUkVQTEFDRV9TVEFUID0gMTsg dGhlbgotICAgICAgICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfdmVyaWZ5Ci0gICAgICBmaQog ICAgIGZpCiAgIH0KICAgZnVuY19nbF9nbnVsaWJfbTRjb2RlX3N0cnRvbGwgKCkKQEAgLTUw OCwxMiArNTI3LDYgQEAKICAgICAgIGdsX2dudWxpYl9lbmFibGVkX3N0cnRvdWxsPXRydWUK ICAgICBmaQogICB9Ci0gIGZ1bmNfZ2xfZ251bGliX200Y29kZV92ZXJpZnkgKCkKLSAgewot ICAgIGlmICEgJGdsX2dudWxpYl9lbmFibGVkX3ZlcmlmeTsgdGhlbgotICAgICAgZ2xfZ251 bGliX2VuYWJsZWRfdmVyaWZ5PXRydWUKLSAgICBmaQotICB9CiAgIGZ1bmNfZ2xfZ251bGli X200Y29kZV82ODJlNjA5NjA0Y2NhYWM2YmUzODJlNGVlM2E0ZWFlYyAoKQogICB7CiAgICAg aWYgISAkZ2xfZ251bGliX2VuYWJsZWRfNjgyZTYwOTYwNGNjYWFjNmJlMzgyZTRlZTNhNGVh ZWM7IHRoZW4KQEAgLTUzMiw2ICs1NDUsOSBAQAogICBpZiB0ZXN0ICRIQVZFX0ZBQ0NFU1NB VCA9IDA7IHRoZW4KICAgICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfMDNlMGFhYWQ0Y2I4OWNh NzU3NjUzYmQzNjdhNmNjYjcKICAgZmkKKyAgaWYgdGVzdCAkSEFWRV9GQ05UTCA9IDAgfHwg dGVzdCAkUkVQTEFDRV9GQ05UTCA9IDE7IHRoZW4KKyAgICBmdW5jX2dsX2dudWxpYl9tNGNv ZGVfZ2V0ZHRhYmxlc2l6ZQorICBmaQogICBpZiB0ZXN0ICRIQVZFX0ZET1BFTkRJUiA9IDA7 IHRoZW4KICAgICBmdW5jX2dsX2dudWxpYl9tNGNvZGVfMjYwOTQxYzBlNWRjNjdlYzllODdk MWZiMzIxYzMwMGIKICAgZmkKQEAgLTU2OCwxOSArNTg0LDE0IEBACiAgIGlmIHsgdGVzdCAk SEFWRV9TVFJUT0lNQVggPSAwIHx8IHRlc3QgJFJFUExBQ0VfU1RSVE9JTUFYID0gMTsgfSAm JiB0ZXN0ICRhY19jdl90eXBlX2xvbmdfbG9uZ19pbnQgPSB5ZXM7IHRoZW4KICAgICBmdW5j X2dsX2dudWxpYl9tNGNvZGVfc3RydG9sbAogICBmaQotICBpZiB0ZXN0ICRIQVZFX1NUUlRP SU1BWCA9IDAgfHwgdGVzdCAkUkVQTEFDRV9TVFJUT0lNQVggPSAxOyB0aGVuCi0gICAgZnVu Y19nbF9nbnVsaWJfbTRjb2RlX3ZlcmlmeQotICBmaQogICBpZiB0ZXN0ICRhY19jdl9mdW5j X3N0cnRvdW1heCA9IG5vICYmIHRlc3QgJGFjX2N2X3R5cGVfdW5zaWduZWRfbG9uZ19sb25n X2ludCA9IHllczsgdGhlbgogICAgIGZ1bmNfZ2xfZ251bGliX200Y29kZV9zdHJ0b3VsbAog ICBmaQotICBpZiB0ZXN0ICRhY19jdl9mdW5jX3N0cnRvdW1heCA9IG5vOyB0aGVuCi0gICAg ZnVuY19nbF9nbnVsaWJfbTRjb2RlX3ZlcmlmeQotICBmaQogICBtNF9wYXR0ZXJuX2FsbG93 KFteZ2xfR05VTElCX0VOQUJMRURfXSkKICAgQU1fQ09ORElUSU9OQUwoW2dsX0dOVUxJQl9F TkFCTEVEXzI2MDk0MWMwZTVkYzY3ZWM5ZTg3ZDFmYjMyMWMzMDBiXSwgWyRnbF9nbnVsaWJf ZW5hYmxlZF8yNjA5NDFjMGU1ZGM2N2VjOWU4N2QxZmIzMjFjMzAwYl0pCiAgIEFNX0NPTkRJ VElPTkFMKFtnbF9HTlVMSUJfRU5BQkxFRF9kb3NuYW1lXSwgWyRnbF9nbnVsaWJfZW5hYmxl ZF9kb3NuYW1lXSkKICAgQU1fQ09ORElUSU9OQUwoW2dsX0dOVUxJQl9FTkFCTEVEX2V1aWRh Y2Nlc3NdLCBbJGdsX2dudWxpYl9lbmFibGVkX2V1aWRhY2Nlc3NdKQorICBBTV9DT05ESVRJ T05BTChbZ2xfR05VTElCX0VOQUJMRURfZ2V0ZHRhYmxlc2l6ZV0sIFskZ2xfZ251bGliX2Vu YWJsZWRfZ2V0ZHRhYmxlc2l6ZV0pCiAgIEFNX0NPTkRJVElPTkFMKFtnbF9HTlVMSUJfRU5B QkxFRF9nZXRncm91cHNdLCBbJGdsX2dudWxpYl9lbmFibGVkX2dldGdyb3Vwc10pCiAgIEFN X0NPTkRJVElPTkFMKFtnbF9HTlVMSUJfRU5BQkxFRF9iZTQ1M2NlYzVlZWNmNTczMWEyNzRm MmRlN2YyZGIzNl0sIFskZ2xfZ251bGliX2VuYWJsZWRfYmU0NTNjZWM1ZWVjZjU3MzFhMjc0 ZjJkZTdmMmRiMzZdKQogICBBTV9DT05ESVRJT05BTChbZ2xfR05VTElCX0VOQUJMRURfYTk3 ODY4NTBlOTk5YWU2NWE4MzZhNjA0MWU4ZTVlZDFdLCBbJGdsX2dudWxpYl9lbmFibGVkX2E5 Nzg2ODUwZTk5OWFlNjVhODM2YTYwNDFlOGU1ZWQxXSkKQEAgLTU5MCw3ICs2MDEsNiBAQAog ICBBTV9DT05ESVRJT05BTChbZ2xfR05VTElCX0VOQUJMRURfc3RhdF0sIFskZ2xfZ251bGli X2VuYWJsZWRfc3RhdF0pCiAgIEFNX0NPTkRJVElPTkFMKFtnbF9HTlVMSUJfRU5BQkxFRF9z dHJ0b2xsXSwgWyRnbF9nbnVsaWJfZW5hYmxlZF9zdHJ0b2xsXSkKICAgQU1fQ09ORElUSU9O QUwoW2dsX0dOVUxJQl9FTkFCTEVEX3N0cnRvdWxsXSwgWyRnbF9nbnVsaWJfZW5hYmxlZF9z dHJ0b3VsbF0pCi0gIEFNX0NPTkRJVElPTkFMKFtnbF9HTlVMSUJfRU5BQkxFRF92ZXJpZnld LCBbJGdsX2dudWxpYl9lbmFibGVkX3ZlcmlmeV0pCiAgIEFNX0NPTkRJVElPTkFMKFtnbF9H TlVMSUJfRU5BQkxFRF82ODJlNjA5NjA0Y2NhYWM2YmUzODJlNGVlM2E0ZWFlY10sIFskZ2xf Z251bGliX2VuYWJsZWRfNjgyZTYwOTYwNGNjYWFjNmJlMzgyZTRlZTNhNGVhZWNdKQogICAj IEVuZCBvZiBjb2RlIGZyb20gbW9kdWxlcwogICBtNF9pZnZhbChnbF9MSUJTT1VSQ0VTX0xJ U1QsIFsKQEAgLTc2NCw2ICs3NzQsNyBAQAogICBsaWIvZXhlY2luZm8uYwogICBsaWIvZXhl Y2luZm8uaW4uaAogICBsaWIvZmFjY2Vzc2F0LmMKKyAgbGliL2ZjbnRsLmMKICAgbGliL2Zj bnRsLmluLmgKICAgbGliL2ZkYXRhc3luYy5jCiAgIGxpYi9mZG9wZW5kaXIuYwpAQCAtNzc2 LDYgKzc4Nyw3IEBACiAgIGxpYi9mc3luYy5jCiAgIGxpYi9mdG9hc3RyLmMKICAgbGliL2Z0 b2FzdHIuaAorICBsaWIvZ2V0ZHRhYmxlc2l6ZS5jCiAgIGxpYi9nZXRncm91cHMuYwogICBs aWIvZ2V0bG9hZGF2Zy5jCiAgIGxpYi9nZXRvcHQuYwpAQCAtNzk5LDYgKzgxMSw3IEBACiAg IGxpYi9vcGVuYXQtcHJvYy5jCiAgIGxpYi9vcGVuYXQuaAogICBsaWIvcGF0aG1heC5oCisg IGxpYi9waXBlMi5jCiAgIGxpYi9wc2VsZWN0LmMKICAgbGliL3B0aHJlYWRfc2lnbWFzay5j CiAgIGxpYi9wdXRlbnYuYwpAQCAtODcwLDYgKzg4Myw3IEBACiAgIG00L2V4dGVybi1pbmxp bmUubTQKICAgbTQvZmFjY2Vzc2F0Lm00CiAgIG00L2ZjbnRsLW8ubTQKKyAgbTQvZmNudGwu bTQKICAgbTQvZmNudGxfaC5tNAogICBtNC9mZGF0YXN5bmMubTQKICAgbTQvZmRvcGVuZGly Lm00CkBAIC04NzcsNiArODkxLDcgQEAKICAgbTQvZnBlbmRpbmcubTQKICAgbTQvZnN0YXRh dC5tNAogICBtNC9mc3luYy5tNAorICBtNC9nZXRkdGFibGVzaXplLm00CiAgIG00L2dldGdy b3Vwcy5tNAogICBtNC9nZXRsb2FkYXZnLm00CiAgIG00L2dldG9wdC5tNApAQCAtODk3LDYg KzkxMiw3IEBACiAgIG00L25vY3Jhc2gubTQKICAgbTQvb2ZmX3QubTQKICAgbTQvcGF0aG1h eC5tNAorICBtNC9waXBlMi5tNAogICBtNC9wc2VsZWN0Lm00CiAgIG00L3B0aHJlYWRfc2ln bWFzay5tNAogICBtNC9wdXRlbnYubTQKCj09PSBhZGRlZCBmaWxlICdtNC9waXBlMi5tNCcK LS0tIG00L3BpcGUyLm00CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKKysrIG00L3BpcGUy Lm00CTIwMTMtMDctMDUgMjI6NDQ6MDggKzAwMDAKQEAgLTAsMCArMSwxOCBAQAorIyBwaXBl Mi5tNCBzZXJpYWwgMgorZG5sIENvcHlyaWdodCAoQykgMjAwOS0yMDEzIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1p c3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhv dXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQu CisKK0FDX0RFRlVOKFtnbF9GVU5DX1BJUEUyXSwKK1sKKyAgQUNfUkVRVUlSRShbZ2xfVU5J U1REX0hfREVGQVVMVFNdKQorCisgIGRubCBQZXJzdWFkZSBnbGliYyA8dW5pc3RkLmg+IHRv IGRlY2xhcmUgcGlwZTIoKS4KKyAgQUNfUkVRVUlSRShbQUNfVVNFX1NZU1RFTV9FWFRFTlNJ T05TXSkKKworICBBQ19DSEVDS19GVU5DU19PTkNFKFtwaXBlMl0pCisgIGlmIHRlc3QgJGFj X2N2X2Z1bmNfcGlwZTIgIT0geWVzOyB0aGVuCisgICAgSEFWRV9QSVBFMj0wCisgIGZpCitd KQoKPT09IG1vZGlmaWVkIGZpbGUgJ250L0NoYW5nZUxvZycKLS0tIG50L0NoYW5nZUxvZwky MDEzLTA2LTI1IDE1OjA4OjQ3ICswMDAwCisrKyBudC9DaGFuZ2VMb2cJMjAxMy0wNy0wNyAw NjoyNDo1MCArMDAwMApAQCAtMSwzICsxLDEyIEBACisyMDEzLTA3LTA3ICBQYXVsIEVnZ2Vy dCAgPGVnZ2VydEBjcy51Y2xhLmVkdT4KKworCU1ha2UgZmlsZSBkZXNjcmlwdG9ycyBjbG9z ZS1vbi1leGVjIHdoZW4gcG9zc2libGUgKEJ1ZyMxNDgwMykuCisJKiBnbnVsaWIubWs6IFJl bW92ZSBlbXB0eSBnbF9HTlVMSUJfRU5BQkxFRF92ZXJpZnkgc2VjdGlvbjsKKwlvdGhlcndp c2UsIGdudWxpYi10b29sIGNvbXBsYWlucyBnaXZlbiBjbG9zZS1vbi1leGVjIGNoYW5nZXMu CisJKiBpbmMvbXMtdzMyLmggKHBpcGUpOiBSZW1vdmUuCisJKiBtaW5ndy1jZmcuc2l0ZSAo YWNfY3ZfZnVuY19mY250bCwgZ2xfY3ZfZnVuY19mY250bF9mX2R1cGZkX2Nsb2V4ZWMpCisJ KGdsX2N2X2Z1bmNfZmNudGxfZl9kdXBmZF93b3JrcywgYWNfY3ZfZnVuY19waXBlMik6IE5l dyB2YXJzLgorCiAyMDEzLTA2LTI1ICBKdWFubWEgQmFycmFucXVlcm8gIDxsZWtrdHVAZ21h aWwuY29tPgogCiAJKiBjb25maWd1cmUuYmF0OiBBZGQgd2FybmluZyB0byB0aGUgaGVscCB0 ZXh0IGFib3V0IHVzaW5nIHRoZQoKPT09IG1vZGlmaWVkIGZpbGUgJ250L2dudWxpYi5taycK LS0tIG50L2dudWxpYi5tawkyMDEzLTA1LTE2IDA1OjUxOjM5ICswMDAwCisrKyBudC9nbnVs aWIubWsJMjAxMy0wNy0wNSAyMjowMzozNiArMDAwMApAQCAtODc2LDkgKzg3Niw2IEBACiAK ICMjIGJlZ2luIGdudWxpYiBtb2R1bGUgdmVyaWZ5CiAKLWlmIGdsX0dOVUxJQl9FTkFCTEVE X3ZlcmlmeQotCi1lbmRpZgogRVhUUkFfRElTVCArPSB2ZXJpZnkuaAogCiAjIyBlbmQgICBn bnVsaWIgbW9kdWxlIHZlcmlmeQoKPT09IG1vZGlmaWVkIGZpbGUgJ250L2luYy9tcy13MzIu aCcKLS0tIG50L2luYy9tcy13MzIuaAkyMDEzLTA1LTE1IDE3OjA2OjI2ICswMDAwCisrKyBu dC9pbmMvbXMtdzMyLmgJMjAxMy0wNy0wNyAwNjowMTowOSArMDAwMApAQCAtMjExLDcgKzIx MSw2IEBACiAjZGVmaW5lIG1rdGVtcCAgc3lzX21rdGVtcAogI3VuZGVmIG9wZW4KICNkZWZp bmUgb3BlbiAgICBzeXNfb3BlbgotI2RlZmluZSBwaXBlICAgIHN5c19waXBlCiAjdW5kZWYg cmVhZAogI2RlZmluZSByZWFkICAgIHN5c19yZWFkCiAjZGVmaW5lIHJlbmFtZSAgc3lzX3Jl bmFtZQoKPT09IG1vZGlmaWVkIGZpbGUgJ250L21pbmd3LWNmZy5zaXRlJwotLS0gbnQvbWlu Z3ctY2ZnLnNpdGUJMjAxMy0wNS0xOCAwNzoxNzowMyArMDAwMAorKysgbnQvbWluZ3ctY2Zn LnNpdGUJMjAxMy0wNy0wNyAwNjowMTo0MiArMDAwMApAQCAtNjcsNiArNjcsMTAgQEAKIGds X2N2X2Z1bmNfc3ltbGlua193b3Jrcz15ZXMKIGFjX2N2X2Z1bmNfcmVhZGxpbmthdD15ZXMK IGFjX2N2X2Z1bmNfZmFjY2Vzc2F0PXllcworIyBJbXBsZW1lbnRlZCBpbiB3MzIuYworYWNf Y3ZfZnVuY19mY250bD15ZXMKK2dsX2N2X2Z1bmNfZmNudGxfZl9kdXBmZF9jbG9leGVjPXll cworZ2xfY3ZfZnVuY19mY250bF9mX2R1cGZkX3dvcmtzPXllcwogIyBXZSBkb24ndCBuZWVk IGZkb3BlbmRpcgogYWNfY3ZfZnVuY19mZG9wZW5kaXI9Im5vdC1uZWVkZWQiCiBnbF9jdl9m dW5jX2Zkb3BlbmRpcl93b3Jrcz0ibm8tYnV0LW5vdC1uZWVkZWQtc28teWVzIgpAQCAtOTUs NiArOTksNyBAQAogIyBBdm9pZCBjb21waWxpbmcgZ251bGliIG1rdGltZQogZ2xfY3ZfZnVu Y193b3JraW5nX21rdGltZT15ZXMKICMgSW1wbGVtZW50ZWQgaW4gdzMyLmMKK2FjX2N2X2Z1 bmNfcGlwZTI9eWVzCiBhY19jdl9oYXZlX2RlY2xfdW5zZXRlbnY9eWVzCiBhY19jdl9mdW5j X3Vuc2V0ZW52PXllcwogZ3RfY3ZfZnVuY191bnNldGVudl9yZXQ9J2ludCcKCj09PSBtb2Rp ZmllZCBmaWxlICdzcmMvQ2hhbmdlTG9nJwotLS0gc3JjL0NoYW5nZUxvZwkyMDEzLTA3LTA2 IDE3OjU4OjQxICswMDAwCisrKyBzcmMvQ2hhbmdlTG9nCTIwMTMtMDctMDcgMDY6MDA6NTcg KzAwMDAKQEAgLTEsMyArMSw0MSBAQAorMjAxMy0wNy0wNyAgUGF1bCBFZ2dlcnQgIDxlZ2dl cnRAY3MudWNsYS5lZHU+CisKKwlNYWtlIGZpbGUgZGVzY3JpcHRvcnMgY2xvc2Utb24tZXhl YyB3aGVuIHBvc3NpYmxlIChCdWcjMTQ4MDMpLgorCVRoaXMgc2ltcGxpZmllcyBFbWFjcyBh IGJpdCwgc2luY2UgaXQgbm8gbG9uZ2VyIG5lZWRzIHRvIHdvcnJ5CisJYWJvdXQgY2xvc2lu ZyBmaWxlIGRlc2NyaXB0b3JzIGJ5IGhhbmQgaW4gc29tZSBjYXNlcy4KKwlJdCBhbHNvIGZp eGVzIHNvbWUgdW5saWtlbHkgcmFjZXMuICBOb3QgYWxsIHN1Y2ggcmFjZXMsIGFzCisJbGli cmFyaWVzIG9mdGVuIG9wZW4gZmlsZXMgaW50ZXJuYWxseSB3aXRob3V0IHNldHRpbmcKKwlj bG9zZS1vbi1leGVjLCBidXQgaXQncyBhbiBpbXByb3ZlbWVudC4KKwkqIGFsbG9jLmMgKHZh bGlkX3BvaW50ZXJfcCkgWyFXSU5ET1dTTlRdOgorCSogY2FsbHByb2MuYyAoRmNhbGxfcHJv Y2VzcykgWyFNU0RPU106CisJKiBlbWFjcy5jIChtYWluKSBbIURPU19OVF06CisJKiBuc3Rl cm0ubSAobnNfdGVybV9pbml0KToKKwkqIHByb2Nlc3MuYyAoY3JlYXRlX3Byb2Nlc3MpOgor CVVzZSAncGlwZTInIHdpdGggT19DTE9FWEVDIGluc3RlYWQgb2YgJ3BpcGUnLgorCSogZW1h Y3MuYyAoRmNhbGxfcHJvY2Vzc19yZWdpb24pIFtIQVZFX01LT1NURU1QXToKKwkqIGZpbGVs b2NrLmMgKGNyZWF0ZV9sb2NrX2ZpbGUpIFtIQVZFX01LT1NURU1QXToKKwlQcmVmZXIgbWtv c3RlbXAgd2l0aCBPX0NMT0VYRUMgdG8gbWtzdGVtcC4KKwkqIGNhbGxwcm9jLmMgKHJlbG9j YXRlX2ZkKSBbIVdJTkRPV1NOVF06CisJKiBlbWFjcy5jIChtYWluKTogVXNlIEZfRFVQRkRf Q0xPRVhFQywgbm90IHBsYWluIEZfRFVQRkQuCisJTm8gbmVlZCB0byB1c2UgZmNudGwgKC4u LiwgRl9TRVRGRCwgRkRfQ0xPRVhFQyksIHNpbmNlIHdlJ3JlCisJbm93IHVzaW5nIHBpcGUy LgorCSogZmlsZWxvY2suYyAoY3JlYXRlX2xvY2tfZmlsZSkgWyEgSEFWRV9NS09TVEVNUF06 CisJTWFrZSB0aGUgcmVzdWx0aW5nIGZpbGUgZGVzY3JpcHRvciBjbG9zZS1vbi1leGVjLgor CSogbGlzcC5oLCBscmVhZC5jLCBwcm9jZXNzLmMgKGNsb3NlX2xvYWRfZGVzY3MsIGNsb3Nl X3Byb2Nlc3NfZGVzY3MpOgorCSogbHJlYWQuYyAobG9hZF9kZXNjcmlwdG9yX2xpc3QsIGxv YWRfZGVzY3JpcHRvcl91bndpbmQpOgorCVJlbW92ZTsgbm8gbG9uZ2VyIG5lZWRlZC4gIEFs bCB1c2VzIHJlbW92ZWQuCisJKiBwcm9jZXNzLmMgKFNPQ0tfQ0xPRVhFQyk6IERlZmluZSB0 byAwIGlmIG5vdCBzdXBwbGllZCBieSBzeXN0ZW0uCisJKGNsb3NlX29uX2V4ZWMsIGFjY2Vw dDQsIHByb2Nlc3Nfc29ja2V0KSBbIVNPQ0tfQ0xPRVhFQ106CisJTmV3IGZ1bmN0aW9ucy4K Kwkoc29ja2V0KSBbIVNPQ0tfQ0xPRVhFQ106IFN1cHBseSBhIHN1YnN0aXR1dGUuCisJKEZt YWtlX25ldHdvcmtfcHJvY2VzcywgRm5ldHdvcmtfaW50ZXJmYWNlX2xpc3QpOgorCShGbmV0 d29ya19pbnRlcmZhY2VfaW5mbywgc2VydmVyX2FjY2VwdF9jb25uZWN0aW9uKToKKwlNYWtl IG5ld2x5LWNyZWF0ZWQgc29ja2V0IGNsb3NlLW9uLWV4ZWMuCisJKiBzeXNkZXAuYyAoZW1h Y3Nfb3BlbiwgZW1hY3NfZm9wZW4pOgorCU1ha2UgbmV3LWNyZWF0ZWQgZGVzY3JpcHRvciBj bG9zZS1vbi1leGVjLgorCSogdzMyLmMgKGZjbnRsKTogU3VwcG9ydCBGX0RVUEZEX0NMT0VY RUMgd2VsbCBlbm91Z2ggZm9yIEVtYWNzLgorCSogdzMyLmMsIHczMi5oIChwaXBlMik6IFJl bmFtZSBmcm9tICdwaXBlJywgd2l0aCBuZXcgZmxhZ3MgYXJnLgorCiAyMDEzLTA3LTA2ICBK YW4gRGrDpHJ2ICA8amFuLmguZEBzd2lwbmV0LnNlPgogCiAJKiBuc3Rlcm0ubSAoc2VuZEV2 ZW50Oik6IEhhbmRsZSBOU0FQUF9EQVRBMl9SVU5GSUxFRElBTE9HLgoKPT09IG1vZGlmaWVk IGZpbGUgJ3NyYy9hbGxvYy5jJwotLS0gc3JjL2FsbG9jLmMJMjAxMy0wNy0wNSAxNjo1ODow MSArMDAwMAorKysgc3JjL2FsbG9jLmMJMjAxMy0wNy0wNiAwMDoxMDoyMiArMDAwMApAQCAt NDc0MSw3ICs0NzQxLDcgQEAKICAgICAgVW5mb3J0dW5hdGVseSwgd2UgY2Fubm90IHVzZSBO VUxMX0RFVklDRSBoZXJlLCBhcyBlbWFjc193cml0ZSBtYXkKICAgICAgbm90IHZhbGlkYXRl IHAgaW4gdGhhdCBjYXNlLiAgKi8KIAotICBpZiAocGlwZSAoZmQpID09IDApCisgIGlmIChw aXBlMiAoZmQsIE9fQ0xPRVhFQykgPT0gMCkKICAgICB7CiAgICAgICBib29sIHZhbGlkID0g ZW1hY3Nfd3JpdGUgKGZkWzFdLCAoY2hhciAqKSBwLCAxNikgPT0gMTY7CiAgICAgICBlbWFj c19jbG9zZSAoZmRbMV0pOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9jYWxscHJvYy5jJwot LS0gc3JjL2NhbGxwcm9jLmMJMjAxMy0wNy0wNiAwMjo0MDo1MCArMDAwMAorKysgc3JjL2Nh bGxwcm9jLmMJMjAxMy0wNy0wNyAwMTozNzoyMyArMDAwMApAQCAtNTE3LDcgKzUxNyw3IEBA CiAgICAgewogI2lmbmRlZiBNU0RPUwogICAgICAgaW50IGZkWzJdOwotICAgICAgaWYgKHBp cGUgKGZkKSA9PSAtMSkKKyAgICAgIGlmIChwaXBlMiAoZmQsIE9fQ0xPRVhFQykgIT0gMCkK IAl7CiAJICBpbnQgcGlwZV9lcnJubyA9IGVycm5vOwogCSAgZW1hY3NfY2xvc2UgKGZpbGVm ZCk7CkBAIC0xMDM0LDEyICsxMDM0LDE2IEBACiAgICAgbWVtY3B5ICh0ZW1wZmlsZSwgU0RB VEEgKGVuY29kZWRfdGVtKSwgU0JZVEVTIChlbmNvZGVkX3RlbSkgKyAxKTsKICAgICBjb2Rp bmdfc3lzdGVtcyA9IFF0OwogCi0jaWZkZWYgSEFWRV9NS1NURU1QCisjaWYgZGVmaW5lZCBI QVZFX01LT1NURU1QIHx8IGRlZmluZWQgSEFWRV9NS1NURU1QCiAgICAgewogICAgICAgaW50 IGZkOwogCiAgICAgICBibG9ja19pbnB1dCAoKTsKKyMgaWZkZWYgSEFWRV9NS09TVEVNUAor ICAgICAgZmQgPSBta29zdGVtcCAodGVtcGZpbGUsIE9fQ0xPRVhFQyk7CisjIGVsc2UKICAg ICAgIGZkID0gbWtzdGVtcCAodGVtcGZpbGUpOworIyBlbmRpZgogICAgICAgdW5ibG9ja19p bnB1dCAoKTsKICAgICAgIGlmIChmZCA9PSAtMSkKIAlyZXBvcnRfZmlsZV9lcnJvciAoIkZh aWxlZCB0byBvcGVuIHRlbXBvcmFyeSBmaWxlIiwKQEAgLTExODIsMTUgKzExODYsNiBAQAog CiAgIHBpZF90IHBpZCA9IGdldHBpZCAoKTsKIAotICAvKiBDbG9zZSBFbWFjcydzIGRlc2Ny aXB0b3JzIHRoYXQgdGhpcyBwcm9jZXNzIHNob3VsZCBub3QgaGF2ZS4gICovCi0gIGNsb3Nl X3Byb2Nlc3NfZGVzY3MgKCk7Ci0KLSAgLyogRE9TX05UIGlzbid0IGluIGEgdmZvcmssIHNv IGlmIHdlIGFyZSBpbiB0aGUgbWlkZGxlIG9mIGxvYWQtZmlsZSwKLSAgICAgd2Ugd2lsbCBs b3NlIGlmIHdlIGNhbGwgY2xvc2VfbG9hZF9kZXNjcyBoZXJlLiAgKi8KLSNpZm5kZWYgRE9T X05UCi0gIGNsb3NlX2xvYWRfZGVzY3MgKCk7Ci0jZW5kaWYKLQogICAvKiBOb3RlIHRoYXQg dXNlIG9mIGFsbG9jYSBpcyBhbHdheXMgc2FmZSBoZXJlLiAgSXQncyBvYnZpb3VzIGZvciBz eXN0ZW1zCiAgICAgIHRoYXQgZG8gbm90IGhhdmUgdHJ1ZSB2Zm9yayBvciB0aGF0IGhhdmUg dHJ1ZSAoc3RhY2spIGFsbG9jYS4KICAgICAgSWYgdXNpbmcgdmZvcmsgYW5kIENfQUxMT0NB ICh3aGVuIEVtYWNzIHVzZWQgdG8gaW5jbHVkZQpAQCAtMTM1Miw5ICsxMzQ3LDExIEBACiAg IGVtYWNzX2Nsb3NlICgxKTsKICAgZW1hY3NfY2xvc2UgKDIpOwogCisgIC8qIFJlZGlyZWN0 IGZpbGUgZGVzY3JpcHRvcnMgYW5kIGNsZWFyIEZEX0NMT0VYRUMgb24gdGhlIHJlZGlyZWN0 ZWQgb25lcy4gICovCiAgIGR1cDIgKGluLCAwKTsKICAgZHVwMiAob3V0LCAxKTsKICAgZHVw MiAoZXJyLCAyKTsKKwogICBlbWFjc19jbG9zZSAoaW4pOwogICBpZiAob3V0ICE9IGluKQog ICAgIGVtYWNzX2Nsb3NlIChvdXQpOwpAQCAtMTM5Miw3ICsxMzg5LDcgQEAKICAgICByZXR1 cm4gZmQ7CiAgIGVsc2UKICAgICB7Ci0gICAgICBpbnQgbmV3ID0gZmNudGwgKGZkLCBGX0RV UEZELCBtaW5mZCk7CisgICAgICBpbnQgbmV3ID0gZmNudGwgKGZkLCBGX0RVUEZEX0NMT0VY RUMsIG1pbmZkKTsKICAgICAgIGlmIChuZXcgPT0gLTEpCiAJewogCSAgY29uc3QgY2hhciAq bWVzc2FnZV8xID0gIkVycm9yIHdoaWxlIHNldHRpbmcgdXAgY2hpbGQ6ICI7Cgo9PT0gbW9k aWZpZWQgZmlsZSAnc3JjL2VtYWNzLmMnCi0tLSBzcmMvZW1hY3MuYwkyMDEzLTA3LTA2IDAy OjQwOjUwICswMDAwCisrKyBzcmMvZW1hY3MuYwkyMDEzLTA3LTA3IDAxOjM3OjIzICswMDAw CkBAIC04ODksNyArODg5LDcgQEAKIAkgIGVtYWNzX2Nsb3NlICgwKTsKIAkgIGVtYWNzX2Ns b3NlICgxKTsKIAkgIHJlc3VsdCA9IGVtYWNzX29wZW4gKHRlcm0sIE9fUkRXUiwgMCk7Ci0J ICBpZiAocmVzdWx0IDwgMCB8fCBkdXAgKDApIDwgMCkKKwkgIGlmIChyZXN1bHQgPCAwIHx8 IGZjbnRsICgwLCBGX0RVUEZEX0NMT0VYRUMsIDEpIDwgMCkKIAkgICAgewogCSAgICAgIGNo YXIgKmVycnN0cmluZyA9IHN0cmVycm9yIChlcnJubyk7CiAJICAgICAgZnByaW50ZiAoc3Rk ZXJyLCAiJXM6ICVzOiAlc1xuIiwgYXJndlswXSwgdGVybSwgZXJyc3RyaW5nKTsKQEAgLTk2 OSw3ICs5NjksNyBAQAogCSB1c2UgYSBwaXBlIGZvciBzeW5jaHJvbml6YXRpb24uICBUaGUg cGFyZW50IHdhaXRzIGZvciB0aGUgY2hpbGQKIAkgdG8gY2xvc2UgaXRzIGVuZCBvZiB0aGUg cGlwZSAodXNpbmcgYGRhZW1vbi1pbml0aWFsaXplZCcpCiAJIGJlZm9yZSBleGl0aW5nLiAg Ki8KLSAgICAgIGlmIChwaXBlIChkYWVtb25fcGlwZSkgPT0gLTEpCisgICAgICBpZiAocGlw ZTIgKGRhZW1vbl9waXBlLCBPX0NMT0VYRUMpICE9IDApCiAJewogCSAgZnByaW50ZiAoc3Rk ZXJyLCAiQ2Fubm90IHBpcGUhXG4iKTsKIAkgIGV4aXQgKDEpOwpAQCAtMTA2NSw5ICsxMDY1 LDYgQEAKICAgICAgICAJZGFlbW9uX25hbWUgPSB4c3RyZHVwIChkbmFtZV9hcmcpOwogICAg ICAgLyogQ2xvc2UgdW51c2VkIHJlYWRpbmcgZW5kIG9mIHRoZSBwaXBlLiAgKi8KICAgICAg IGNsb3NlIChkYWVtb25fcGlwZVswXSk7Ci0gICAgICAvKiBNYWtlIHN1cmUgdGhhdCB0aGUg dXNlZCBlbmQgb2YgdGhlIHBpcGUgaXMgY2xvc2VkIG9uIGV4ZWMsIHNvCi0JIHRoYXQgaXQg aXMgbm90IGFjY2Vzc2libGUgdG8gcHJvZ3JhbXMgc3RhcnRlZCBmcm9tIC5lbWFjcy4gICov Ci0gICAgICBmY250bCAoZGFlbW9uX3BpcGVbMV0sIEZfU0VURkQsIEZEX0NMT0VYRUMpOwog CiAgICAgICBzZXRzaWQgKCk7CiAjZWxzZSAvKiBET1NfTlQgKi8KCj09PSBtb2RpZmllZCBm aWxlICdzcmMvZmlsZWxvY2suYycKLS0tIHNyYy9maWxlbG9jay5jCTIwMTMtMDUtMDUgMDA6 NTE6NDkgKzAwMDAKKysrIHNyYy9maWxlbG9jay5jCTIwMTMtMDctMDYgMDI6MTQ6NTcgKzAw MDAKQEAgLTQxNiw4ICs0MTYsMTMgQEAKICAgICAgIG1lbWNweSAobm9uY2UsIGxmbmFtZSwg bGZkaXJsZW4pOwogICAgICAgc3RyY3B5IChub25jZSArIGxmZGlybGVuLCBub25jZV9iYXNl KTsKIAotI2lmIEhBVkVfTUtTVEVNUAotICAgICAgLyogUHJlZmVyIG1rc3RlbXAgaWYgYXZh aWxhYmxlLCBhcyBpdCBhdm9pZHMgYSByYWNlIGJldHdlZW4KKyNpZiBIQVZFX01LT1NURU1Q CisgICAgICAvKiBQcmVmZXIgbWtvc3RlbXAgdG8gbWtzdGVtcCwgYXMgaXQgYXZvaWRzIGEg d2luZG93IHdoZXJlIEZEIGlzCisJIHRlbXBvcmFyaWx5IG9wZW4gd2l0aG91dCBjbG9zZS1v bi1leGVjLiAgKi8KKyAgICAgIGZkID0gbWtvc3RlbXAgKG5vbmNlLCBPX0JJTkFSWSB8IE9f Q0xPRVhFQyk7CisgICAgICBuZWVkX2ZjaG1vZCA9IDE7CisjZWxpZiBIQVZFX01LU1RFTVAK KyAgICAgIC8qIFByZWZlciBta3N0ZW1wIHRvIG1rdGVtcCwgYXMgaXQgYXZvaWRzIGEgcmFj ZSBiZXR3ZWVuCiAJIG1rdGVtcCBhbmQgZW1hY3Nfb3Blbi4gICovCiAgICAgICBmZCA9IG1r c3RlbXAgKG5vbmNlKTsKICAgICAgIG5lZWRfZmNobW9kID0gMTsKQEAgLTQzMiw3ICs0Mzcs MTEgQEAKIAllcnIgPSBlcnJubzsKICAgICAgIGVsc2UKIAl7Ci0JICBwdHJkaWZmX3QgbG9j a19pbmZvX2xlbiA9IHN0cmxlbiAobG9ja19pbmZvX3N0cik7CisJICBwdHJkaWZmX3QgbG9j a19pbmZvX2xlbjsKKyNpZiAhIEhBVkVfTUtPU1RFTVAKKwkgIGZjbnRsIChmZCwgRl9TRVRG RCwgRkRfQ0xPRVhFQyk7CisjZW5kaWYKKwkgIGxvY2tfaW5mb19sZW4gPSBzdHJsZW4gKGxv Y2tfaW5mb19zdHIpOwogCSAgZXJyID0gMDsKIAkgIGlmIChlbWFjc193cml0ZSAoZmQsIGxv Y2tfaW5mb19zdHIsIGxvY2tfaW5mb19sZW4pICE9IGxvY2tfaW5mb19sZW4KIAkgICAgICB8 fCAobmVlZF9mY2htb2QgJiYgZmNobW9kIChmZCwgd29ybGRfcmVhZGFibGUpICE9IDApKQoK PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9saXNwLmgnCi0tLSBzcmMvbGlzcC5oCTIwMTMtMDct MDQgMDk6Mjk6MjggKzAwMDAKKysrIHNyYy9saXNwLmgJMjAxMy0wNy0wNSAyMjowMzo0NSAr MDAwMApAQCAtMzY2OCw3ICszNjY4LDYgQEAKIGV4dGVybiB2b2lkIG1hcF9vYmFycmF5IChM aXNwX09iamVjdCwgdm9pZCAoKikgKExpc3BfT2JqZWN0LCBMaXNwX09iamVjdCksCiAgICAg ICAgICAgICAgICAgICAgICAgICAgTGlzcF9PYmplY3QpOwogZXh0ZXJuIHZvaWQgZGlyX3dh cm5pbmcgKGNvbnN0IGNoYXIgKiwgTGlzcF9PYmplY3QpOwotZXh0ZXJuIHZvaWQgY2xvc2Vf bG9hZF9kZXNjcyAodm9pZCk7CiBleHRlcm4gdm9pZCBpbml0X29iYXJyYXkgKHZvaWQpOwog ZXh0ZXJuIHZvaWQgaW5pdF9scmVhZCAodm9pZCk7CiBleHRlcm4gdm9pZCBzeW1zX29mX2xy ZWFkICh2b2lkKTsKQEAgLTM5OTUsNyArMzk5NCw2IEBACiBleHRlcm4gdm9pZCBhZGRfZ3Bt X3dhaXRfZGVzY3JpcHRvciAoaW50KTsKIGV4dGVybiB2b2lkIGRlbGV0ZV9ncG1fd2FpdF9k ZXNjcmlwdG9yIChpbnQpOwogI2VuZGlmCi1leHRlcm4gdm9pZCBjbG9zZV9wcm9jZXNzX2Rl c2NzICh2b2lkKTsKIGV4dGVybiB2b2lkIGluaXRfcHJvY2Vzc19lbWFjcyAodm9pZCk7CiBl eHRlcm4gdm9pZCBzeW1zX29mX3Byb2Nlc3MgKHZvaWQpOwogZXh0ZXJuIHZvaWQgc2V0dXBf cHJvY2Vzc19jb2Rpbmdfc3lzdGVtcyAoTGlzcF9PYmplY3QpOwoKPT09IG1vZGlmaWVkIGZp bGUgJ3NyYy9scmVhZC5jJwotLS0gc3JjL2xyZWFkLmMJMjAxMy0wNy0wNiAwMjo0MDo1MCAr MDAwMAorKysgc3JjL2xyZWFkLmMJMjAxMy0wNy0wNSAyMjozNDo1NiArMDAwMApAQCAtOTUs OSArOTUsNiBAQAogICAgSXQgbXVzdCBiZSBzZXQgdG8gbmlsIGJlZm9yZSBhbGwgdG9wLWxl dmVsIGNhbGxzIHRvIHJlYWQwLiAgKi8KIHN0YXRpYyBMaXNwX09iamVjdCByZWFkX29iamVj dHM7CiAKLS8qIExpc3Qgb2YgZGVzY3JpcHRvcnMgbm93IG9wZW4gZm9yIEZsb2FkLiAgKi8K LXN0YXRpYyBMaXNwX09iamVjdCBsb2FkX2Rlc2NyaXB0b3JfbGlzdDsKLQogLyogRmlsZSBm b3IgZ2V0X2ZpbGVfY2hhciB0byByZWFkIGZyb20uICBVc2UgYnkgbG9hZC4gICovCiBzdGF0 aWMgRklMRSAqaW5zdHJlYW07CiAKQEAgLTE0OSw3ICsxNDYsNiBAQAogICAgICAgICAgICAg ICAgICAgICAgICAgICBMaXNwX09iamVjdCwgTGlzcF9PYmplY3QsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3BfT2JqZWN0LCBMaXNwX09iamVjdCk7CiBzdGF0aWMgTGlzcF9P YmplY3QgbG9hZF91bndpbmQgKExpc3BfT2JqZWN0KTsKLXN0YXRpYyBMaXNwX09iamVjdCBs b2FkX2Rlc2NyaXB0b3JfdW53aW5kIChMaXNwX09iamVjdCk7CiAMCiAvKiBGdW5jdGlvbnMg dGhhdCByZWFkIG9uZSBieXRlIGZyb20gdGhlIGN1cnJlbnQgc291cmNlIFJFQURDSEFSRlVO CiAgICBvciB1bnJlYWRzIG9uZSBieXRlLiAgSWYgdGhlIGludGVnZXIgYXJndW1lbnQgQyBp cyAtMSwgaXQgcmV0dXJucwpAQCAtMTMyOCwxMSArMTMyNCw4IEBACiAgICAgfQogCiAgIHJl Y29yZF91bndpbmRfcHJvdGVjdCAobG9hZF91bndpbmQsIG1ha2Vfc2F2ZV9wb2ludGVyIChz dHJlYW0pKTsKLSAgcmVjb3JkX3Vud2luZF9wcm90ZWN0IChsb2FkX2Rlc2NyaXB0b3JfdW53 aW5kLCBsb2FkX2Rlc2NyaXB0b3JfbGlzdCk7CiAgIHNwZWNiaW5kIChRbG9hZF9maWxlX25h bWUsIGZvdW5kKTsKICAgc3BlY2JpbmQgKFFpbmhpYml0X2ZpbGVfbmFtZV9vcGVyYXRpb24s IFFuaWwpOwotICBsb2FkX2Rlc2NyaXB0b3JfbGlzdAotICAgID0gRmNvbnMgKG1ha2VfbnVt YmVyIChmaWxlbm8gKHN0cmVhbSkpLCBsb2FkX2Rlc2NyaXB0b3JfbGlzdCk7CiAgIHNwZWNi aW5kIChRbG9hZF9pbl9wcm9ncmVzcywgUXQpOwogCiAgIGluc3RyZWFtID0gc3RyZWFtOwpA QCAtMTM5NSwyNiArMTM4OCw2IEBACiAgICAgfQogICByZXR1cm4gUW5pbDsKIH0KLQotc3Rh dGljIExpc3BfT2JqZWN0Ci1sb2FkX2Rlc2NyaXB0b3JfdW53aW5kIChMaXNwX09iamVjdCBv bGRsaXN0KQotewotICBsb2FkX2Rlc2NyaXB0b3JfbGlzdCA9IG9sZGxpc3Q7Ci0gIHJldHVy biBRbmlsOwotfQotCi0vKiBDbG9zZSBhbGwgZGVzY3JpcHRvcnMgaW4gdXNlIGZvciBGbG9h ZHMuCi0gICBUaGlzIGlzIHVzZWQgd2hlbiBzdGFydGluZyBhIHN1YnByb2Nlc3MuICAqLwot Ci12b2lkCi1jbG9zZV9sb2FkX2Rlc2NzICh2b2lkKQotewotI2lmbmRlZiBXSU5ET1dTTlQK LSAgTGlzcF9PYmplY3QgdGFpbDsKLSAgZm9yICh0YWlsID0gbG9hZF9kZXNjcmlwdG9yX2xp c3Q7IENPTlNQICh0YWlsKTsgdGFpbCA9IFhDRFIgKHRhaWwpKQotICAgIGVtYWNzX2Nsb3Nl IChYRkFTVElOVCAoWENBUiAodGFpbCkpKTsKLSNlbmRpZgotfQogDAogc3RhdGljIGJvb2wK IGNvbXBsZXRlX2ZpbGVuYW1lX3AgKExpc3BfT2JqZWN0IHBhdGhuYW1lKQpAQCAtNDM0OSw5 ICs0MzIyLDYgQEAKIAogICBsb2FkX2luX3Byb2dyZXNzID0gMDsKICAgVmxvYWRfZmlsZV9u YW1lID0gUW5pbDsKLQotICBsb2FkX2Rlc2NyaXB0b3JfbGlzdCA9IFFuaWw7Ci0KICAgVnN0 YW5kYXJkX2lucHV0ID0gUXQ7CiAgIFZsb2Fkc19pbl9wcm9ncmVzcyA9IFFuaWw7CiB9CkBA IC00NjI0LDkgKzQ1OTQsNiBAQAogCiAgIC8qIFZzb3VyY2VfZGlyZWN0b3J5IHdhcyBpbml0 aWFsaXplZCBpbiBpbml0X2xyZWFkLiAgKi8KIAotICBsb2FkX2Rlc2NyaXB0b3JfbGlzdCA9 IFFuaWw7Ci0gIHN0YXRpY3BybyAoJmxvYWRfZGVzY3JpcHRvcl9saXN0KTsKLQogICBERUZT WU0gKFFjdXJyZW50X2xvYWRfbGlzdCwgImN1cnJlbnQtbG9hZC1saXN0Iik7CiAgIERFRlNZ TSAoUXN0YW5kYXJkX2lucHV0LCAic3RhbmRhcmQtaW5wdXQiKTsKICAgREVGU1lNIChRcmVh ZF9jaGFyLCAicmVhZC1jaGFyIik7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL25zdGVybS5t JwotLS0gc3JjL25zdGVybS5tCTIwMTMtMDctMDYgMTc6NTg6NDEgKzAwMDAKKysrIHNyYy9u c3Rlcm0ubQkyMDEzLTA3LTA2IDE5OjEyOjM5ICswMDAwCkBAIC00MTQyLDcgKzQxNDIsNyBA QAogCiAgIGlmIChzZWxmZHNbMF0gPT0gLTEpCiAgICAgewotICAgICAgaWYgKHBpcGUgKHNl bGZkcykgPT0gLTEpCisgICAgICBpZiAocGlwZTIgKHNlbGZkcywgT19DTE9FWEVDKSAhPSAw KQogICAgICAgICB7CiAgICAgICAgICAgZnByaW50ZiAoc3RkZXJyLCAiRmFpbGVkIHRvIGNy ZWF0ZSBwaXBlOiAlc1xuIiwKICAgICAgICAgICAgICAgICAgICBlbWFjc19zdHJlcnJvciAo ZXJybm8pKTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvcHJvY2Vzcy5jJwotLS0gc3JjL3By b2Nlc3MuYwkyMDEzLTA3LTA1IDE2OjU4OjAxICswMDAwCisrKyBzcmMvcHJvY2Vzcy5jCTIw MTMtMDctMDYgMDk6MDY6MjYgKzAwMDAKQEAgLTEzNSw2ICsxMzUsMzQgQEAKIAkJICAgICAg IEVNQUNTX1RJTUUgKiwgdm9pZCAqKTsKICNlbmRpZgogCisjaWZuZGVmIFNPQ0tfQ0xPRVhF QworIyBkZWZpbmUgU09DS19DTE9FWEVDIDAKKworLyogRW11bGF0ZSBHTlUvTGludXggYWNj ZXB0NCBhbmQgc29ja2V0IHdlbGwgZW5vdWdoIGZvciB0aGlzIG1vZHVsZS4gICovCisKK3N0 YXRpYyBpbnQKK2Nsb3NlX29uX2V4ZWMgKGludCBmZCkKK3sKKyAgaWYgKDAgPD0gZmQpCisg ICAgZmNudGwgKGZkLCBGX1NFVEZELCBGRF9DTE9FWEVDKTsKKyAgcmV0dXJuIGZkOworfQor CitzdGF0aWMgaW50CithY2NlcHQ0IChpbnQgc29ja2ZkLCBzdHJ1Y3Qgc29ja2FkZHIgKmFk ZHIsIHNvY2tsZW5fdCAqYWRkcmxlbiwgaW50IGZsYWdzKQoreworICByZXR1cm4gY2xvc2Vf b25fZXhlYyAoYWNjZXB0IChzb2NrZmQsIGFkZHIsIGFkZHJsZW4pKTsKK30KKworc3RhdGlj IGludAorcHJvY2Vzc19zb2NrZXQgKGludCBkb21haW4sIGludCB0eXBlLCBpbnQgcHJvdG9j b2wpCit7CisgIHJldHVybiBjbG9zZV9vbl9leGVjIChzb2NrZXQgKGRvbWFpbiwgdHlwZSwg cHJvdG9jb2wpKTsKK30KKyMgdW5kZWYgc29ja2V0CisjIGRlZmluZSBzb2NrZXQoZG9tYWlu LCB0eXBlLCBwcm90b2NvbCkgcHJvY2Vzc19zb2NrZXQgKGRvbWFpbiwgdHlwZSwgcHJvdG9j b2wpCisjZW5kaWYKKwogLyogV29yayBhcm91bmQgR0NDIDQuNy4wIGJ1ZyB3aXRoIHN0cmlj dCBvdmVyZmxvdyBjaGVja2luZzsgc2VlCiAgICA8aHR0cDovL2djYy5nbnUub3JnL2J1Z3pp bGxhL3Nob3dfYnVnLmNnaT9pZD01MjkwND4uCiAgICBUaGVzZSBsaW5lcyBjYW4gYmUgcmVt b3ZlZCBvbmNlIHRoZSBHQ0MgYnVnIGlzIGZpeGVkLiAgKi8KQEAgLTE2MTksMTQgKzE2NDcs MTEgQEAKICAgZWxzZQogI2VuZGlmIC8qIEhBVkVfUFRZUyAqLwogICAgIHsKLSAgICAgIGlu dCB0ZW07Ci0gICAgICB0ZW0gPSBwaXBlIChzdik7Ci0gICAgICBpZiAodGVtIDwgMCkKKyAg ICAgIGlmIChwaXBlMiAoc3YsIE9fQ0xPRVhFQykgIT0gMCkKIAlyZXBvcnRfZmlsZV9lcnJv ciAoIkNyZWF0aW5nIHBpcGUiLCBRbmlsKTsKICAgICAgIGluY2hhbm5lbCA9IHN2WzBdOwog ICAgICAgZm9ya291dCA9IHN2WzFdOwotICAgICAgdGVtID0gcGlwZSAoc3YpOwotICAgICAg aWYgKHRlbSA8IDApCisgICAgICBpZiAocGlwZTIgKHN2LCBPX0NMT0VYRUMpICE9IDApCiAJ ewogCSAgZW1hY3NfY2xvc2UgKGluY2hhbm5lbCk7CiAJICBlbWFjc19jbG9zZSAoZm9ya291 dCk7CkBAIC0xNjM3LDI5ICsxNjYyLDE0IEBACiAgICAgfQogCiAjaWZuZGVmIFdJTkRPV1NO VAotICAgIHsKLSAgICAgIGludCB0ZW07Ci0KLSAgICAgIHRlbSA9IHBpcGUgKHdhaXRfY2hp bGRfc2V0dXApOwotICAgICAgaWYgKHRlbSA8IDApCi0JcmVwb3J0X2ZpbGVfZXJyb3IgKCJD cmVhdGluZyBwaXBlIiwgUW5pbCk7Ci0gICAgICB0ZW0gPSBmY250bCAod2FpdF9jaGlsZF9z ZXR1cFsxXSwgRl9HRVRGRCwgMCk7Ci0gICAgICBpZiAodGVtID49IDApCi0JdGVtID0gZmNu dGwgKHdhaXRfY2hpbGRfc2V0dXBbMV0sIEZfU0VURkQsIHRlbSB8IEZEX0NMT0VYRUMpOwot ICAgICAgaWYgKHRlbSA8IDApCi0JewotCSAgZW1hY3NfY2xvc2UgKHdhaXRfY2hpbGRfc2V0 dXBbMF0pOwotCSAgZW1hY3NfY2xvc2UgKHdhaXRfY2hpbGRfc2V0dXBbMV0pOwotCSAgcmVw b3J0X2ZpbGVfZXJyb3IgKCJTZXR0aW5nIGZpbGUgZGVzY3JpcHRvciBmbGFncyIsIFFuaWwp OwotCX0KLSAgICB9CisgIGlmIChwaXBlMiAod2FpdF9jaGlsZF9zZXR1cCwgT19DTE9FWEVD KSAhPSAwKQorICAgIHJlcG9ydF9maWxlX2Vycm9yICgiQ3JlYXRpbmcgcGlwZSIsIFFuaWwp OwogI2VuZGlmCiAKICAgZmNudGwgKGluY2hhbm5lbCwgRl9TRVRGTCwgT19OT05CTE9DSyk7 CiAgIGZjbnRsIChvdXRjaGFubmVsLCBGX1NFVEZMLCBPX05PTkJMT0NLKTsKIAotICAvKiBS ZWNvcmQgdGhpcyBhcyBhbiBhY3RpdmUgcHJvY2Vzcywgd2l0aCBpdHMgY2hhbm5lbHMuCi0g ICAgIEFzIGEgcmVzdWx0LCBjaGlsZF9zZXR1cCB3aWxsIGNsb3NlIEVtYWNzJ3Mgc2lkZSBv ZiB0aGUgcGlwZXMuICAqLworICAvKiBSZWNvcmQgdGhpcyBhcyBhbiBhY3RpdmUgcHJvY2Vz cywgd2l0aCBpdHMgY2hhbm5lbHMuICAqLwogICBjaGFuX3Byb2Nlc3NbaW5jaGFubmVsXSA9 IHByb2Nlc3M7CiAgIFhQUk9DRVNTIChwcm9jZXNzKS0+aW5mZCA9IGluY2hhbm5lbDsKICAg WFBST0NFU1MgKHByb2Nlc3MpLT5vdXRmZCA9IG91dGNoYW5uZWw7CkBAIC0zMTM1LDcgKzMx NDUsOCBAQAogICAgIHJldHJ5X2Nvbm5lY3Q6CiAjZW5kaWYKIAotICAgICAgcyA9IHNvY2tl dCAobHJlcy0+YWlfZmFtaWx5LCBscmVzLT5haV9zb2NrdHlwZSwgbHJlcy0+YWlfcHJvdG9j b2wpOworICAgICAgcyA9IHNvY2tldCAobHJlcy0+YWlfZmFtaWx5LCBscmVzLT5haV9zb2Nr dHlwZSB8IFNPQ0tfQ0xPRVhFQywKKwkJICBscmVzLT5haV9wcm90b2NvbCk7CiAgICAgICBp ZiAocyA8IDApCiAJewogCSAgeGVycm5vID0gZXJybm87CkBAIC0zNTMyLDcgKzM1NDMsNyBA QAogICBpbnQgczsKICAgTGlzcF9PYmplY3QgcmVzOwogCi0gIHMgPSBzb2NrZXQgKEFGX0lO RVQsIFNPQ0tfU1RSRUFNLCAwKTsKKyAgcyA9IHNvY2tldCAoQUZfSU5FVCwgU09DS19TVFJF QU0gfCBTT0NLX0NMT0VYRUMsIDApOwogICBpZiAocyA8IDApCiAgICAgcmV0dXJuIFFuaWw7 CiAKQEAgLTM2ODgsNyArMzY5OSw3IEBACiAgICAgZXJyb3IgKCJpbnRlcmZhY2UgbmFtZSB0 b28gbG9uZyIpOwogICBzdHJjcHkgKHJxLmlmcl9uYW1lLCBTU0RBVEEgKGlmbmFtZSkpOwog Ci0gIHMgPSBzb2NrZXQgKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCAwKTsKKyAgcyA9IHNvY2tl dCAoQUZfSU5FVCwgU09DS19TVFJFQU0gfCBTT0NLX0NMT0VYRUMsIDApOwogICBpZiAocyA8 IDApCiAgICAgcmV0dXJuIFFuaWw7CiAKQEAgLTM5ODQsNyArMzk5NSw3IEBACiAgIH0gc2Fk ZHI7CiAgIHNvY2tsZW5fdCBsZW4gPSBzaXplb2Ygc2FkZHI7CiAKLSAgcyA9IGFjY2VwdCAo Y2hhbm5lbCwgJnNhZGRyLnNhLCAmbGVuKTsKKyAgcyA9IGFjY2VwdDQgKGNoYW5uZWwsICZz YWRkci5zYSwgJmxlbiwgU09DS19DTE9FWEVDKTsKIAogICBpZiAocyA8IDApCiAgICAgewpA QCAtNjg1OCwzMiArNjg2OSw2IEBACiAjZW5kaWYKIH0KIAotLyogQ2xvc2UgYWxsIGRlc2Ny aXB0b3JzIGN1cnJlbnRseSBpbiB1c2UgZm9yIGNvbW11bmljYXRpb24KLSAgIHdpdGggc3Vi cHJvY2Vzcy4gIFRoaXMgaXMgdXNlZCBpbiBhIG5ld2x5LWZvcmtlZCBzdWJwcm9jZXNzCi0g ICB0byBnZXQgcmlkIG9mIGlycmVsZXZhbnQgZGVzY3JpcHRvcnMuICAqLwotCi12b2lkCi1j bG9zZV9wcm9jZXNzX2Rlc2NzICh2b2lkKQotewotI2lmbmRlZiBET1NfTlQKLSAgaW50IGk7 Ci0gIGZvciAoaSA9IDA7IGkgPCBNQVhERVNDOyBpKyspCi0gICAgewotICAgICAgTGlzcF9P YmplY3QgcHJvY2VzczsKLSAgICAgIHByb2Nlc3MgPSBjaGFuX3Byb2Nlc3NbaV07Ci0gICAg ICBpZiAoIU5JTFAgKHByb2Nlc3MpKQotCXsKLQkgIGludCBpbiAgPSBYUFJPQ0VTUyAocHJv Y2VzcyktPmluZmQ7Ci0JICBpbnQgb3V0ID0gWFBST0NFU1MgKHByb2Nlc3MpLT5vdXRmZDsK LQkgIGlmIChpbiA+PSAwKQotCSAgICBlbWFjc19jbG9zZSAoaW4pOwotCSAgaWYgKG91dCA+ PSAwICYmIGluICE9IG91dCkKLQkgICAgZW1hY3NfY2xvc2UgKG91dCk7Ci0JfQotICAgIH0K LSNlbmRpZgotfQotCiBERUZVTiAoImdldC1idWZmZXItcHJvY2VzcyIsIEZnZXRfYnVmZmVy X3Byb2Nlc3MsIFNnZXRfYnVmZmVyX3Byb2Nlc3MsIDEsIDEsIDAsCiAgICAgICAgZG9jOiAv KiBSZXR1cm4gdGhlIChvciBhKSBwcm9jZXNzIGFzc29jaWF0ZWQgd2l0aCBCVUZGRVIuCiBC VUZGRVIgbWF5IGJlIGEgYnVmZmVyIG9yIHRoZSBuYW1lIG9mIG9uZS4gICovKQoKPT09IG1v ZGlmaWVkIGZpbGUgJ3NyYy9zeXNkZXAuYycKLS0tIHNyYy9zeXNkZXAuYwkyMDEzLTA3LTA2 IDAyOjQwOjUwICswMDAwCisrKyBzcmMvc3lzZGVwLmMJMjAxMy0wNy0wNiAwNzowNTo0MSAr MDAwMApAQCAtNTQzLDggKzU0Myw2IEBACiAjZW5kaWYKIAl9CiAKLSAgICAgIGNsb3NlX3By b2Nlc3NfZGVzY3MgKCk7CS8qIENsb3NlIEVtYWNzJ3MgcGlwZXMvcHR5cyAqLwotCiAjaWZk ZWYgTVNET1MgICAgLyogRGVtYWNzIDEuMS4yIDkxLzEwLzIwIE1hbmFidSBIaWdhc2hpZGEg Ki8KICAgICAgIHsKIAljaGFyICplcHdkID0gZ2V0ZW52ICgiUFdEIik7CkBAIC0yMTUyLDYg KzIxNTAsOCBAQAogI2VuZGlmCiAKIC8qIE9wZW4gRklMRSBmb3IgRW1hY3MgdXNlLCB1c2lu ZyBvcGVuIGZsYWdzIE9GTEFHIGFuZCBtb2RlIE1PREUuCisgICBBcnJhbmdlIGZvciBzdWJw cm9ncmFtcyB0byBub3QgaW5oZXJpdCB0aGUgZmlsZSBkZXNjcmlwdG9yLgorICAgUHJlZmVy IGEgbWV0aG9kIHRoYXQgaXMgbXVsdGl0aHJlYWQtc2FmZSwgaWYgYXZhaWxhYmxlLgogICAg RG8gbm90IGZhaWwgbWVyZWx5IGJlY2F1c2UgdGhlIG9wZW4gd2FzIGludGVycnVwdGVkIGJ5 IGEgc2lnbmFsLgogICAgQWxsb3cgdGhlIHVzZXIgdG8gcXVpdC4gICovCiAKQEAgLTIxNTks OCArMjE1OSwxMSBAQAogZW1hY3Nfb3BlbiAoY29uc3QgY2hhciAqZmlsZSwgaW50IG9mbGFn cywgaW50IG1vZGUpCiB7CiAgIGludCBmZDsKKyAgb2ZsYWdzIHw9IE9fQ0xPRVhFQzsKICAg d2hpbGUgKChmZCA9IG9wZW4gKGZpbGUsIG9mbGFncywgbW9kZSkpIDwgMCAmJiBlcnJubyA9 PSBFSU5UUikKICAgICBRVUlUOworICBpZiAoISBPX0NMT0VYRUMgJiYgMCA8PSBmZCkKKyAg ICBmY250bCAoZmQsIEZfU0VURkQsIEZEX0NMT0VYRUMpOwogICByZXR1cm4gZmQ7CiB9CiAK QEAgLTIxNzAsMTAgKzIxNzMsMjkgQEAKIEZJTEUgKgogZW1hY3NfZm9wZW4gKGNoYXIgY29u c3QgKmZpbGUsIGNoYXIgY29uc3QgKm1vZGUpCiB7Ci0gIEZJTEUgKmZwOwotICB3aGlsZSAo ISAoZnAgPSBmb3BlbiAoZmlsZSwgbW9kZSkpICYmIGVycm5vID09IEVJTlRSKQotICAgIFFV SVQ7Ci0gIHJldHVybiBmcDsKKyAgaW50IGZkLCBvbW9kZSwgb2ZsYWdzOworICBpbnQgYmZs YWcgPSAwOworICBjaGFyIGNvbnN0ICptID0gbW9kZTsKKworICBzd2l0Y2ggKCptKyspCisg ICAgeworICAgIGNhc2UgJ3InOiBvbW9kZSA9IE9fUkRPTkxZOyBvZmxhZ3MgPSAwOyBicmVh azsKKyAgICBjYXNlICd3Jzogb21vZGUgPSBPX1dST05MWTsgb2ZsYWdzID0gT19DUkVBVCB8 IE9fVFJVTkM7IGJyZWFrOworICAgIGNhc2UgJ2EnOiBvbW9kZSA9IE9fV1JPTkxZOyBvZmxh Z3MgPSBPX0NSRUFUIHwgT19BUFBFTkQ7IGJyZWFrOworICAgIGRlZmF1bHQ6IGVtYWNzX2Fi b3J0ICgpOworICAgIH0KKworICB3aGlsZSAoKm0pCisgICAgc3dpdGNoICgqbSsrKQorICAg ICAgeworICAgICAgY2FzZSAnKyc6IG9tb2RlID0gT19SRFdSOyBicmVhazsKKyAgICAgIGNh c2UgJ2InOiBiZmxhZyA9IE9fQklOQVJZOyBicmVhazsKKyAgICAgIGNhc2UgJ3QnOiBiZmxh ZyA9IE9fVEVYVDsgYnJlYWs7CisgICAgICBkZWZhdWx0OiAvKiBJZ25vcmUuICAqLyBicmVh azsKKyAgICAgIH0KKworICBmZCA9IGVtYWNzX29wZW4gKGZpbGUsIG9tb2RlIHwgb2ZsYWdz IHwgYmZsYWcsIDA2NjYpOworICByZXR1cm4gZmQgPCAwID8gMCA6IGZkb3BlbiAoZmQsIG1v ZGUpOwogfQogCiBpbnQKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvdzMyLmMnCi0tLSBzcmMv dzMyLmMJMjAxMy0wNi0yMSAyMDoxMTo0NCArMDAwMAorKysgc3JjL3czMi5jCTIwMTMtMDct MDcgMDY6MDA6MDIgKzAwMDAKQEAgLTY3MTksMTAgKzY3MTksMTYgQEAKIH0KIAogLyogV2lu ZG93cyBkb2VzIG5vdCBoYXZlIGFuIGZjbnRsIGZ1bmN0aW9uLiAgUHJvdmlkZSBhbiBpbXBs ZW1lbnRhdGlvbgotICAgc29sZWx5IGZvciBtYWtpbmcgc29ja2V0cyBub24tYmxvY2tpbmcu ICAqLworICAgZ29vZCBlbm91Z2ggZm9yIEVtYWNzLiAgKi8KIGludAogZmNudGwgKGludCBz LCBpbnQgY21kLCBpbnQgb3B0aW9ucykKIHsKKyAgLyogSW4gdGhlIHczMiBFbWFjcyBwb3J0 LCBmY250bCAoZmQsIEZfRFVQRkRfQ0xPRVhFQywgZmQxKSBpcyBhbHdheXMKKyAgICAgaW52 b2tlZCBpbiBhIGNvbnRleHQgd2hlcmUgZmQxIGlzIGNsb3NlZCBhbmQgYWxsIGRlc2NyaXB0 b3JzIGxlc3MKKyAgICAgdGhhbiBmZDEgYXJlIG9wZW4sIHNvIHN5c19kdXAgaXMgYW4gYWRl cXVhdGUgaW1wbGVtZW50YXRpb24uICAqLworICBpZiAoY21kID09IEZfRFVQRkRfQ0xPRVhF QykKKyAgICByZXR1cm4gc3lzX2R1cCAocyk7CisKICAgaWYgKHdpbnNvY2tfbGliID09IE5V TEwpCiAgICAgewogICAgICAgZXJybm8gPSBFTkVURE9XTjsKQEAgLTY4NjQsMTMgKzY4NzAs MTQgQEAKICAgcmV0dXJuIHJjOwogfQogCi0vKiBVbml4IHBpcGUoKSBoYXMgb25seSBvbmUg YXJnICovCiBpbnQKLXN5c19waXBlIChpbnQgKiBwaGFuZGxlcykKK3BpcGUyIChpbnQgKiBw aGFuZGxlcywgaW50IHBpcGUyX2ZsYWdzKQogewogICBpbnQgcmM7CiAgIHVuc2lnbmVkIGZs YWdzOwogCisgIGVhc3NlcnQgKHBpcGUyX2ZsYWdzID09IE9fQ0xPRVhFQyk7CisKICAgLyog bWFrZSBwaXBlIGhhbmRsZXMgbm9uLWluaGVyaXRhYmxlOyB3aGVuIHdlIHNwYXduIGEgY2hp bGQsIHdlCiAgICAgIHJlcGxhY2UgdGhlIHJlbGV2YW50IGhhbmRsZSB3aXRoIGFuIGluaGVy aXRhYmxlIG9uZS4gIEFsc28gcHV0CiAgICAgIHBpcGVzIGludG8gYmluYXJ5IG1vZGU7IHdl IHdpbGwgZG8gdGV4dCBtb2RlIHRyYW5zbGF0aW9uIG91cnNlbHZlcwoKPT09IG1vZGlmaWVk IGZpbGUgJ3NyYy93MzIuaCcKLS0tIHNyYy93MzIuaAkyMDEzLTAzLTA1IDIyOjM1OjQxICsw MDAwCisrKyBzcmMvdzMyLmgJMjAxMy0wNy0wNyAwNjowMDoxOCArMDAwMApAQCAtMTg4LDcg KzE4OCw3IEBACiAKIGV4dGVybiBpbnQgZmNobW9kIChpbnQsIG1vZGVfdCk7CiBleHRlcm4g aW50IHN5c19yZW5hbWVfcmVwbGFjZSAoY2hhciBjb25zdCAqLCBjaGFyIGNvbnN0ICosIEJP T0wpOwotZXh0ZXJuIGludCBzeXNfcGlwZSAoaW50ICopOworZXh0ZXJuIGludCBwaXBlMiAo aW50ICosIGludCk7CiAKIGV4dGVybiB2b2lkIHNldF9wcm9jZXNzX2RpciAoY2hhciAqKTsK IGV4dGVybiBpbnQgc3lzX3NwYXdudmUgKGludCwgY2hhciAqLCBjaGFyICoqLCBjaGFyICoq KTsKCg== --------------000309000805020605030606--