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#13070: Use putenv+unsetenv instead of modifying environ directly Date: Mon, 03 Dec 2012 12:32:50 -0800 Message-ID: <50BD0C72.7070601@cs.ucla.edu> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------020805030603090107030509" X-Trace: ger.gmane.org 1354566899 11236 80.91.229.3 (3 Dec 2012 20:34:59 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 3 Dec 2012 20:34:59 +0000 (UTC) Cc: Fabrice Popineau To: 13070@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Dec 03 21:35:11 2012 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 1TfcjJ-0000ZT-Lf for geb-bug-gnu-emacs@m.gmane.org; Mon, 03 Dec 2012 21:35:06 +0100 Original-Received: from localhost ([::1]:40215 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tfcj7-0005hl-Hm for geb-bug-gnu-emacs@m.gmane.org; Mon, 03 Dec 2012 15:34:53 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:46861) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tfcj1-0005hV-2y for bug-gnu-emacs@gnu.org; Mon, 03 Dec 2012 15:34:51 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Tfcis-0003i0-QR for bug-gnu-emacs@gnu.org; Mon, 03 Dec 2012 15:34:46 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:41706) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tfcis-0003gs-MT for bug-gnu-emacs@gnu.org; Mon, 03 Dec 2012 15:34:38 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1TfclC-0000To-5R for bug-gnu-emacs@gnu.org; Mon, 03 Dec 2012 15:37:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Paul Eggert Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 03 Dec 2012 20:37:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 13070 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.13545669621778 (code B ref -1); Mon, 03 Dec 2012 20:37:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 3 Dec 2012 20:36:02 +0000 Original-Received: from localhost ([127.0.0.1]:51957 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TfckC-0000SK-Fg for submit@debbugs.gnu.org; Mon, 03 Dec 2012 15:36:02 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:34266) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tfck6-0000S9-BP for submit@debbugs.gnu.org; Mon, 03 Dec 2012 15:35:58 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Tfchi-0003Ls-7y for submit@debbugs.gnu.org; Mon, 03 Dec 2012 15:33:30 -0500 Original-Received: from lists.gnu.org ([208.118.235.17]:49779) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tfchi-0003Ln-3l for submit@debbugs.gnu.org; Mon, 03 Dec 2012 15:33:26 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:46620) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Tfchd-0005e6-E9 for bug-gnu-emacs@gnu.org; Mon, 03 Dec 2012 15:33:26 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TfchT-0003K6-81 for bug-gnu-emacs@gnu.org; Mon, 03 Dec 2012 15:33:20 -0500 Original-Received: from smtp.cs.ucla.edu ([131.179.128.62]:34276) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TfchS-0003JE-NG; Mon, 03 Dec 2012 15:33:11 -0500 Original-Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 2807EA60003; Mon, 3 Dec 2012 12:33:00 -0800 (PST) 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 7imZSepGUAjn; Mon, 3 Dec 2012 12:32:56 -0800 (PST) Original-Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id BE391A60001; Mon, 3 Dec 2012 12:32:56 -0800 (PST) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Thunderbird/17.0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.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:67866 Archived-At: This is a multi-part message in MIME format. --------------020805030603090107030509 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Tags: patch The attached patch is in response to last week's thread on emacs-devel . It's relative to trunk bzr 111078. Tested on Fedora 17. I don't see any issues related to the Microsoft port but I'm CC:ing this to Eli and Fabrice just in case, as the original bug seems to be Windows-related. --------------020805030603090107030509 Content-Type: text/plain; charset=us-ascii; name="setenv.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="setenv.txt" PT09IG1vZGlmaWVkIGZpbGUgJ0NoYW5nZUxvZycKLS0tIENoYW5nZUxvZwkyMDEyLTExLTMw IDE4OjI1OjU5ICswMDAwCisrKyBDaGFuZ2VMb2cJMjAxMi0xMi0wMyAyMDowMzoyMiArMDAw MApAQCAtMSwzICsxLDExIEBACisyMDEyLTEyLTAzICBQYXVsIEVnZ2VydCAgPGVnZ2VydEBj cy51Y2xhLmVkdT4KKworCVVzZSBwdXRlbnYrdW5zZXRlbnYgaW5zdGVhZCBvZiBtb2RpZnlp bmcgZW52aXJvbiBkaXJlY3RseS4KKwkqIGxpYi9wdXRlbnYuYywgbGliL3Vuc2V0ZW52LmMs IG00L3B1dGVudi5tNCwgbTQvc2V0ZW52Lm00OgorCU5ldyBmaWxlcywgY29waWVkIGF1dG9t YXRpY2FsbHkgZnJvbSBnbnVsaWIuCisJKiBsaWIvZ251bGliLm1rLCBtNC9nbnVsaWItY29t cC5tNDogUmVnZW5lcmF0ZS4KKwkqIG1lcmdlLWdudWxpYiAoR05VTElCX01PRFVMRVMpOiBB ZGQgcHV0ZW52LCB1bnNldGVudi4KKwogMjAxMi0xMS0zMCAgUGF1bCBFZ2dlcnQgIDxlZ2dl cnRAY3MudWNsYS5lZHU+CiAKIAlNZXJnZSBmcm9tIGdudWxpYiBmb3IgJ2lubGluZScgKEJ1 ZyMxMzA0MCksIGluY29ycG9yYXRpbmc6Cgo9PT0gbW9kaWZpZWQgZmlsZSAnYWRtaW4vQ2hh bmdlTG9nJwotLS0gYWRtaW4vQ2hhbmdlTG9nCTIwMTItMTEtMjQgMTc6MjA6NDkgKzAwMDAK KysrIGFkbWluL0NoYW5nZUxvZwkyMDEyLTEyLTAzIDIwOjAzOjIyICswMDAwCkBAIC0xLDMg KzEsOCBAQAorMjAxMi0xMi0wMyAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+ CisKKwlVc2UgcHV0ZW52K3Vuc2V0ZW52IGluc3RlYWQgb2YgbW9kaWZ5aW5nIGVudmlyb24g ZGlyZWN0bHkuCisJKiBtZXJnZS1nbnVsaWIgKEdOVUxJQl9NT0RVTEVTKTogQWRkIHB1dGVu diwgdW5zZXRlbnYuCisKIDIwMTItMTEtMjQgIEtlbiBCcm93biAgPGticm93bkBjb3JuZWxs LmVkdT4KIAogCSogQ1BQLURFRklORVMgKEhBVkVfTU9VU0UpOiBSZW1vdmUuCgo9PT0gbW9k aWZpZWQgZmlsZSAnYWRtaW4vbWVyZ2UtZ251bGliJwotLS0gYWRtaW4vbWVyZ2UtZ251bGli CTIwMTItMTEtMTcgMjI6MTI6NDcgKzAwMDAKKysrIGFkbWluL21lcmdlLWdudWxpYgkyMDEy LTEyLTAzIDIwOjAzOjIyICswMDAwCkBAIC0zMSwxMCArMzEsMTAgQEAKICAgZHRvYXN0ciBk dG90aW1lc3BlYyBkdXAyIGVudmlyb24gZXhlY2luZm8gZmFjY2Vzc2F0CiAgIGZjbnRsLWgg ZmlsZW1vZGUgZ2V0bG9hZGF2ZyBnZXRvcHQtZ251IGdldHRpbWUgZ2V0dGltZW9mZGF5CiAg IGlnbm9yZS12YWx1ZSBpbnRwcm9wcyBsYXJnZWZpbGUgbHN0YXQKLSAgbWFueXdhcm5pbmdz IG1rdGltZSBwc2VsZWN0IHB0aHJlYWRfc2lnbWFzayByZWFkbGluaworICBtYW55d2Fybmlu Z3MgbWt0aW1lIHBzZWxlY3QgcHRocmVhZF9zaWdtYXNrIHB1dGVudiByZWFkbGluawogICBz b2NrbGVuIHN0YXQtdGltZSBzdGRhbGlnbiBzdGRhcmcgc3RkYm9vbCBzdGRpbwogICBzdHJm dGltZSBzdHJ0b2ltYXggc3RydG91bWF4IHN5bWxpbmsgc3lzX3N0YXQKLSAgc3lzX3RpbWUg dGltZSB0aW1lci10aW1lIHRpbWVzcGVjLWFkZCB0aW1lc3BlYy1zdWIgdXRpbWVucworICBz eXNfdGltZSB0aW1lIHRpbWVyLXRpbWUgdGltZXNwZWMtYWRkIHRpbWVzcGVjLXN1YiB1bnNl dGVudiB1dGltZW5zCiAgIHdhcm5pbmdzCiAnCiAKCj09PSBtb2RpZmllZCBmaWxlICdsaWIv Z251bGliLm1rJwotLS0gbGliL2dudWxpYi5tawkyMDEyLTExLTMwIDE4OjI1OjU5ICswMDAw CisrKyBsaWIvZ251bGliLm1rCTIwMTItMTItMDMgMjA6MDM6MjIgKzAwMDAKQEAgLTIxLDcg KzIxLDcgQEAKICMgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9m IHRoYXQgcHJvZ3JhbS4KICMKICMgR2VuZXJhdGVkIGJ5IGdudWxpYi10b29sLgotIyBSZXBy b2R1Y2UgYnk6IGdudWxpYi10b29sIC0taW1wb3J0IC0tZGlyPS4gLS1saWI9bGliZ251IC0t c291cmNlLWJhc2U9bGliIC0tbTQtYmFzZT1tNCAtLWRvYy1iYXNlPWRvYyAtLXRlc3RzLWJh c2U9dGVzdHMgLS1hdXgtZGlyPWJ1aWxkLWF1eCAtLWF2b2lkPWF0LWludGVybmFsIC0tYXZv aWQ9ZXJybm8gLS1hdm9pZD1mY2hkaXIgLS1hdm9pZD1mY250bCAtLWF2b2lkPWZzdGF0IC0t YXZvaWQ9bWFsbG9jLXBvc2l4IC0tYXZvaWQ9bXN2Yy1pbnZhbCAtLWF2b2lkPW1zdmMtbm90 aHJvdyAtLWF2b2lkPW9wZW5hdC1kaWUgLS1hdm9pZD1vcGVuYXQtaCAtLWF2b2lkPXJhaXNl IC0tYXZvaWQ9c2F2ZS1jd2QgLS1hdm9pZD1zZWxlY3QgLS1hdm9pZD1zaWdwcm9jbWFzayAt LWF2b2lkPXN5c190eXBlcyAtLWF2b2lkPXRocmVhZGxpYiAtLW1ha2VmaWxlLW5hbWU9Z251 bGliLm1rIC0tY29uZGl0aW9uYWwtZGVwZW5kZW5jaWVzIC0tbm8tbGlidG9vbCAtLW1hY3Jv LXByZWZpeD1nbCAtLW5vLXZjLWZpbGVzIGFsbG9jYS1vcHQgYy1jdHlwZSBjLXN0cmNhc2Ug Y2FyZWFkbGlua2F0IGNsb3NlLXN0cmVhbSBjcnlwdG8vbWQ1IGNyeXB0by9zaGExIGNyeXB0 by9zaGEyNTYgY3J5cHRvL3NoYTUxMiBkdG9hc3RyIGR0b3RpbWVzcGVjIGR1cDIgZW52aXJv biBleGVjaW5mbyBmYWNjZXNzYXQgZmNudGwtaCBmaWxlbW9kZSBnZXRsb2FkYXZnIGdldG9w dC1nbnUgZ2V0dGltZSBnZXR0aW1lb2ZkYXkgaWdub3JlLXZhbHVlIGludHByb3BzIGxhcmdl ZmlsZSBsc3RhdCBtYW55d2FybmluZ3MgbWt0aW1lIHBzZWxlY3QgcHRocmVhZF9zaWdtYXNr IHJlYWRsaW5rIHNvY2tsZW4gc3RhdC10aW1lIHN0ZGFsaWduIHN0ZGFyZyBzdGRib29sIHN0 ZGlvIHN0cmZ0aW1lIHN0cnRvaW1heCBzdHJ0b3VtYXggc3ltbGluayBzeXNfc3RhdCBzeXNf dGltZSB0aW1lIHRpbWVyLXRpbWUgdGltZXNwZWMtYWRkIHRpbWVzcGVjLXN1YiB1dGltZW5z IHdhcm5pbmdzCisjIFJlcHJvZHVjZSBieTogZ251bGliLXRvb2wgLS1pbXBvcnQgLS1kaXI9 LiAtLWxpYj1saWJnbnUgLS1zb3VyY2UtYmFzZT1saWIgLS1tNC1iYXNlPW00IC0tZG9jLWJh c2U9ZG9jIC0tdGVzdHMtYmFzZT10ZXN0cyAtLWF1eC1kaXI9YnVpbGQtYXV4IC0tYXZvaWQ9 YXQtaW50ZXJuYWwgLS1hdm9pZD1lcnJubyAtLWF2b2lkPWZjaGRpciAtLWF2b2lkPWZjbnRs IC0tYXZvaWQ9ZnN0YXQgLS1hdm9pZD1tYWxsb2MtcG9zaXggLS1hdm9pZD1tc3ZjLWludmFs IC0tYXZvaWQ9bXN2Yy1ub3Rocm93IC0tYXZvaWQ9b3BlbmF0LWRpZSAtLWF2b2lkPW9wZW5h dC1oIC0tYXZvaWQ9cmFpc2UgLS1hdm9pZD1zYXZlLWN3ZCAtLWF2b2lkPXNlbGVjdCAtLWF2 b2lkPXNpZ3Byb2NtYXNrIC0tYXZvaWQ9c3lzX3R5cGVzIC0tYXZvaWQ9dGhyZWFkbGliIC0t bWFrZWZpbGUtbmFtZT1nbnVsaWIubWsgLS1jb25kaXRpb25hbC1kZXBlbmRlbmNpZXMgLS1u by1saWJ0b29sIC0tbWFjcm8tcHJlZml4PWdsIC0tbm8tdmMtZmlsZXMgYWxsb2NhLW9wdCBj LWN0eXBlIGMtc3RyY2FzZSBjYXJlYWRsaW5rYXQgY2xvc2Utc3RyZWFtIGNyeXB0by9tZDUg Y3J5cHRvL3NoYTEgY3J5cHRvL3NoYTI1NiBjcnlwdG8vc2hhNTEyIGR0b2FzdHIgZHRvdGlt ZXNwZWMgZHVwMiBlbnZpcm9uIGV4ZWNpbmZvIGZhY2Nlc3NhdCBmY250bC1oIGZpbGVtb2Rl IGdldGxvYWRhdmcgZ2V0b3B0LWdudSBnZXR0aW1lIGdldHRpbWVvZmRheSBpZ25vcmUtdmFs dWUgaW50cHJvcHMgbGFyZ2VmaWxlIGxzdGF0IG1hbnl3YXJuaW5ncyBta3RpbWUgcHNlbGVj dCBwdGhyZWFkX3NpZ21hc2sgcHV0ZW52IHJlYWRsaW5rIHNvY2tsZW4gc3RhdC10aW1lIHN0 ZGFsaWduIHN0ZGFyZyBzdGRib29sIHN0ZGlvIHN0cmZ0aW1lIHN0cnRvaW1heCBzdHJ0b3Vt YXggc3ltbGluayBzeXNfc3RhdCBzeXNfdGltZSB0aW1lIHRpbWVyLXRpbWUgdGltZXNwZWMt YWRkIHRpbWVzcGVjLXN1YiB1bnNldGVudiB1dGltZW5zIHdhcm5pbmdzCiAKIAogTU9TVExZ Q0xFQU5GSUxFUyArPSBjb3JlICouc3RhY2tkdW1wCkBAIC00MzksNiArNDM5LDE1IEBACiAK ICMjIGVuZCAgIGdudWxpYiBtb2R1bGUgcHRocmVhZF9zaWdtYXNrCiAKKyMjIGJlZ2luIGdu dWxpYiBtb2R1bGUgcHV0ZW52CisKKworRVhUUkFfRElTVCArPSBwdXRlbnYuYworCitFWFRS QV9saWJnbnVfYV9TT1VSQ0VTICs9IHB1dGVudi5jCisKKyMjIGVuZCAgIGdudWxpYiBtb2R1 bGUgcHV0ZW52CisKICMjIGJlZ2luIGdudWxpYiBtb2R1bGUgcmVhZGxpbmsKIAogCkBAIC0x NDAwLDYgKzE0MDksMTUgQEAKIAogIyMgZW5kICAgZ251bGliIG1vZHVsZSB1bmlzdGQKIAor IyMgYmVnaW4gZ251bGliIG1vZHVsZSB1bnNldGVudgorCisKK0VYVFJBX0RJU1QgKz0gdW5z ZXRlbnYuYworCitFWFRSQV9saWJnbnVfYV9TT1VSQ0VTICs9IHVuc2V0ZW52LmMKKworIyMg ZW5kICAgZ251bGliIG1vZHVsZSB1bnNldGVudgorCiAjIyBiZWdpbiBnbnVsaWIgbW9kdWxl IHV0aW1lbnMKIAogbGliZ251X2FfU09VUkNFUyArPSB1dGltZW5zLmMKCj09PSBhZGRlZCBm aWxlICdsaWIvcHV0ZW52LmMnCi0tLSBsaWIvcHV0ZW52LmMJMTk3MC0wMS0wMSAwMDowMDow MCArMDAwMAorKysgbGliL3B1dGVudi5jCTIwMTItMTItMDMgMjA6MDM6MjIgKzAwMDAKQEAg LTAsMCArMSwxMzQgQEAKKy8qIENvcHlyaWdodCAoQykgMTk5MSwgMTk5NCwgMTk5Ny0xOTk4 LCAyMDAwLCAyMDAzLTIwMTIgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLgor CisgICBOT1RFOiBUaGUgY2Fub25pY2FsIHNvdXJjZSBvZiB0aGlzIGZpbGUgaXMgbWFpbnRh aW5lZCB3aXRoIHRoZSBHTlUgQworICAgTGlicmFyeS4gIEJ1Z3MgY2FuIGJlIHJlcG9ydGVk IHRvIGJ1Zy1nbGliY0BwcmVwLmFpLm1pdC5lZHUuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0 CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgYW55CisgICBsYXRlciB2ZXJzaW9u LgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaW5jbHVkZSA8Y29uZmlnLmg+CisKKy8q IFNwZWNpZmljYXRpb24uICAqLworI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaW5jbHVkZSA8 c3RkZGVmLmg+CisKKy8qIEluY2x1ZGUgZXJybm8uaCAqYWZ0ZXIqIHN5cy90eXBlcy5oIHRv IHdvcmsgYXJvdW5kIGhlYWRlciBwcm9ibGVtcworICAgb24gQUlYIDMuMi41LiAgKi8KKyNp bmNsdWRlIDxlcnJuby5oPgorI2lmbmRlZiBfX3NldF9lcnJubworIyBkZWZpbmUgX19zZXRf ZXJybm8oZXYpICgoZXJybm8pID0gKGV2KSkKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RyaW5n Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpZiBfTElCQworIyBpZiBIQVZFX0dOVV9M RAorIyAgZGVmaW5lIGVudmlyb24gX19lbnZpcm9uCisjIGVsc2UKK2V4dGVybiBjaGFyICoq ZW52aXJvbjsKKyMgZW5kaWYKKyNlbmRpZgorCisjaWYgX0xJQkMKKy8qIFRoaXMgbG9jayBw cm90ZWN0cyBhZ2FpbnN0IHNpbXVsdGFuZW91cyBtb2RpZmljYXRpb25zIG9mICdlbnZpcm9u Jy4gICovCisjIGluY2x1ZGUgPGJpdHMvbGliYy1sb2NrLmg+CitfX2xpYmNfbG9ja19kZWZp bmVfaW5pdGlhbGl6ZWQgKHN0YXRpYywgZW52bG9jaykKKyMgZGVmaW5lIExPQ0sgICBfX2xp YmNfbG9ja19sb2NrIChlbnZsb2NrKQorIyBkZWZpbmUgVU5MT0NLIF9fbGliY19sb2NrX3Vu bG9jayAoZW52bG9jaykKKyNlbHNlCisjIGRlZmluZSBMT0NLCisjIGRlZmluZSBVTkxPQ0sK KyNlbmRpZgorCitzdGF0aWMgaW50CitfdW5zZXRlbnYgKGNvbnN0IGNoYXIgKm5hbWUpCit7 CisgIHNpemVfdCBsZW47CisgIGNoYXIgKiplcDsKKworICBpZiAobmFtZSA9PSBOVUxMIHx8 ICpuYW1lID09ICdcMCcgfHwgc3RyY2hyIChuYW1lLCAnPScpICE9IE5VTEwpCisgICAgewor ICAgICAgX19zZXRfZXJybm8gKEVJTlZBTCk7CisgICAgICByZXR1cm4gLTE7CisgICAgfQor CisgIGxlbiA9IHN0cmxlbiAobmFtZSk7CisKKyAgTE9DSzsKKworICBlcCA9IGVudmlyb247 CisgIHdoaWxlICgqZXAgIT0gTlVMTCkKKyAgICBpZiAoIXN0cm5jbXAgKCplcCwgbmFtZSwg bGVuKSAmJiAoKmVwKVtsZW5dID09ICc9JykKKyAgICAgIHsKKyAgICAgICAgLyogRm91bmQg aXQuICBSZW1vdmUgdGhpcyBwb2ludGVyIGJ5IG1vdmluZyBsYXRlciBvbmVzIGJhY2suICAq LworICAgICAgICBjaGFyICoqZHAgPSBlcDsKKworICAgICAgICBkbworICAgICAgICAgIGRw WzBdID0gZHBbMV07CisgICAgICAgIHdoaWxlICgqZHArKyk7CisgICAgICAgIC8qIENvbnRp bnVlIHRoZSBsb29wIGluIGNhc2UgTkFNRSBhcHBlYXJzIGFnYWluLiAgKi8KKyAgICAgIH0K KyAgICBlbHNlCisgICAgICArK2VwOworCisgIFVOTE9DSzsKKworICByZXR1cm4gMDsKK30K KworCisvKiBQdXQgU1RSSU5HLCB3aGljaCBpcyBvZiB0aGUgZm9ybSAiTkFNRT1WQUxVRSIs IGluIHRoZSBlbnZpcm9ubWVudC4KKyAgIElmIFNUUklORyBjb250YWlucyBubyAnPScsIHRo ZW4gcmVtb3ZlIFNUUklORyBmcm9tIHRoZSBlbnZpcm9ubWVudC4gICovCitpbnQKK3B1dGVu diAoY2hhciAqc3RyaW5nKQoreworICBjb25zdCBjaGFyICpjb25zdCBuYW1lX2VuZCA9IHN0 cmNociAoc3RyaW5nLCAnPScpOworICByZWdpc3RlciBzaXplX3Qgc2l6ZTsKKyAgcmVnaXN0 ZXIgY2hhciAqKmVwOworCisgIGlmIChuYW1lX2VuZCA9PSBOVUxMKQorICAgIHsKKyAgICAg IC8qIFJlbW92ZSB0aGUgdmFyaWFibGUgZnJvbSB0aGUgZW52aXJvbm1lbnQuICAqLworICAg ICAgcmV0dXJuIF91bnNldGVudiAoc3RyaW5nKTsKKyAgICB9CisKKyAgc2l6ZSA9IDA7Cisg IGZvciAoZXAgPSBlbnZpcm9uOyAqZXAgIT0gTlVMTDsgKytlcCkKKyAgICBpZiAoIXN0cm5j bXAgKCplcCwgc3RyaW5nLCBuYW1lX2VuZCAtIHN0cmluZykgJiYKKyAgICAgICAgKCplcClb bmFtZV9lbmQgLSBzdHJpbmddID09ICc9JykKKyAgICAgIGJyZWFrOworICAgIGVsc2UKKyAg ICAgICsrc2l6ZTsKKworICBpZiAoKmVwID09IE5VTEwpCisgICAgeworICAgICAgc3RhdGlj IGNoYXIgKipsYXN0X2Vudmlyb24gPSBOVUxMOworICAgICAgY2hhciAqKm5ld19lbnZpcm9u ID0gKGNoYXIgKiopIG1hbGxvYyAoKHNpemUgKyAyKSAqIHNpemVvZiAoY2hhciAqKSk7Cisg ICAgICBpZiAobmV3X2Vudmlyb24gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAg ICAgKHZvaWQpIG1lbWNweSAoKHZvaWQgKikgbmV3X2Vudmlyb24sICh2b2lkICopIGVudmly b24sCisgICAgICAgICAgICAgICAgICAgICBzaXplICogc2l6ZW9mIChjaGFyICopKTsKKyAg ICAgIG5ld19lbnZpcm9uW3NpemVdID0gKGNoYXIgKikgc3RyaW5nOworICAgICAgbmV3X2Vu dmlyb25bc2l6ZSArIDFdID0gTlVMTDsKKyAgICAgIGZyZWUgKGxhc3RfZW52aXJvbik7Cisg ICAgICBsYXN0X2Vudmlyb24gPSBuZXdfZW52aXJvbjsKKyAgICAgIGVudmlyb24gPSBuZXdf ZW52aXJvbjsKKyAgICB9CisgIGVsc2UKKyAgICAqZXAgPSBzdHJpbmc7CisKKyAgcmV0dXJu IDA7Cit9Cgo9PT0gYWRkZWQgZmlsZSAnbGliL3Vuc2V0ZW52LmMnCi0tLSBsaWIvdW5zZXRl bnYuYwkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAwCisrKyBsaWIvdW5zZXRlbnYuYwkyMDEy LTEyLTAzIDIwOjAzOjIyICswMDAwCkBAIC0wLDAgKzEsMTI3IEBACisvKiBDb3B5cmlnaHQg KEMpIDE5OTIsIDE5OTUtMjAwMiwgMjAwNS0yMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisK KyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4gICovCisKKyNpbmNsdWRlIDxjb25maWcuaD4KKworLyogRG9uJ3QgdXNlIF9fYXR0 cmlidXRlX18gX19ub25udWxsX18gaW4gdGhpcyBjb21waWxhdGlvbiB1bml0LiAgT3RoZXJ3 aXNlIGdjYworICAgb3B0aW1pemVzIGF3YXkgdGhlIG5hbWUgPT0gTlVMTCB0ZXN0IGJlbG93 LiAgKi8KKyNkZWZpbmUgX0dMX0FSR19OT05OVUxMKHBhcmFtcykKKworLyogU3BlY2lmaWNh dGlvbi4gICovCisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpbmNsdWRlIDxlcnJuby5oPgor I2lmICFfTElCQworIyBkZWZpbmUgX19zZXRfZXJybm8oZXYpICgoZXJybm8pID0gKGV2KSkK KyNlbmRpZgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisK KyNpZiAhX0xJQkMKKyMgZGVmaW5lIF9fZW52aXJvbiAgICAgIGVudmlyb24KKyNlbmRpZgor CisjaWYgX0xJQkMKKy8qIFRoaXMgbG9jayBwcm90ZWN0cyBhZ2FpbnN0IHNpbXVsdGFuZW91 cyBtb2RpZmljYXRpb25zIG9mICdlbnZpcm9uJy4gICovCisjIGluY2x1ZGUgPGJpdHMvbGli Yy1sb2NrLmg+CitfX2xpYmNfbG9ja19kZWZpbmVfaW5pdGlhbGl6ZWQgKHN0YXRpYywgZW52 bG9jaykKKyMgZGVmaW5lIExPQ0sgICBfX2xpYmNfbG9ja19sb2NrIChlbnZsb2NrKQorIyBk ZWZpbmUgVU5MT0NLIF9fbGliY19sb2NrX3VubG9jayAoZW52bG9jaykKKyNlbHNlCisjIGRl ZmluZSBMT0NLCisjIGRlZmluZSBVTkxPQ0sKKyNlbmRpZgorCisvKiBJbiB0aGUgR05VIEMg bGlicmFyeSB3ZSBtdXN0IGtlZXAgdGhlIG5hbWVzcGFjZSBjbGVhbi4gICovCisjaWZkZWYg X0xJQkMKKyMgZGVmaW5lIHVuc2V0ZW52IF9fdW5zZXRlbnYKKyNlbmRpZgorCisjaWYgX0xJ QkMgfHwgIUhBVkVfVU5TRVRFTlYKKworaW50Cit1bnNldGVudiAoY29uc3QgY2hhciAqbmFt ZSkKK3sKKyAgc2l6ZV90IGxlbjsKKyAgY2hhciAqKmVwOworCisgIGlmIChuYW1lID09IE5V TEwgfHwgKm5hbWUgPT0gJ1wwJyB8fCBzdHJjaHIgKG5hbWUsICc9JykgIT0gTlVMTCkKKyAg ICB7CisgICAgICBfX3NldF9lcnJubyAoRUlOVkFMKTsKKyAgICAgIHJldHVybiAtMTsKKyAg ICB9CisKKyAgbGVuID0gc3RybGVuIChuYW1lKTsKKworICBMT0NLOworCisgIGVwID0gX19l bnZpcm9uOworICB3aGlsZSAoKmVwICE9IE5VTEwpCisgICAgaWYgKCFzdHJuY21wICgqZXAs IG5hbWUsIGxlbikgJiYgKCplcClbbGVuXSA9PSAnPScpCisgICAgICB7CisgICAgICAgIC8q IEZvdW5kIGl0LiAgUmVtb3ZlIHRoaXMgcG9pbnRlciBieSBtb3ZpbmcgbGF0ZXIgb25lcyBi YWNrLiAgKi8KKyAgICAgICAgY2hhciAqKmRwID0gZXA7CisKKyAgICAgICAgZG8KKyAgICAg ICAgICBkcFswXSA9IGRwWzFdOworICAgICAgICB3aGlsZSAoKmRwKyspOworICAgICAgICAv KiBDb250aW51ZSB0aGUgbG9vcCBpbiBjYXNlIE5BTUUgYXBwZWFycyBhZ2Fpbi4gICovCisg ICAgICB9CisgICAgZWxzZQorICAgICAgKytlcDsKKworICBVTkxPQ0s7CisKKyAgcmV0dXJu IDA7Cit9CisKKyNpZmRlZiBfTElCQworIyB1bmRlZiB1bnNldGVudgord2Vha19hbGlhcyAo X191bnNldGVudiwgdW5zZXRlbnYpCisjZW5kaWYKKworI2Vsc2UgLyogSEFWRV9VTlNFVEVO ViAqLworCisjIHVuZGVmIHVuc2V0ZW52CisjIGlmICFIQVZFX0RFQ0xfVU5TRVRFTlYKKyMg IGlmIFZPSURfVU5TRVRFTlYKK2V4dGVybiB2b2lkIHVuc2V0ZW52IChjb25zdCBjaGFyICop OworIyAgZWxzZQorZXh0ZXJuIGludCB1bnNldGVudiAoY29uc3QgY2hhciAqKTsKKyMgIGVu ZGlmCisjIGVuZGlmCisKKy8qIENhbGwgdGhlIHVuZGVybHlpbmcgdW5zZXRlbnYsIGluIGNh c2UgdGhlcmUgaXMgaGlkZGVuIGJvb2trZWVwaW5nCisgICB0aGF0IG5lZWRzIHVwZGF0aW5n IGJleW9uZCBqdXN0IG1vZGlmeWluZyBlbnZpcm9uLiAgKi8KK2ludAorcnBsX3Vuc2V0ZW52 IChjb25zdCBjaGFyICpuYW1lKQoreworICBpbnQgcmVzdWx0ID0gMDsKKyAgaWYgKCFuYW1l IHx8ICEqbmFtZSB8fCBzdHJjaHIgKG5hbWUsICc9JykpCisgICAgeworICAgICAgZXJybm8g PSBFSU5WQUw7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICB3aGlsZSAoZ2V0ZW52IChu YW1lKSkKKyMgaWYgIVZPSURfVU5TRVRFTlYKKyAgICByZXN1bHQgPQorIyBlbmRpZgorICAg ICAgdW5zZXRlbnYgKG5hbWUpOworICByZXR1cm4gcmVzdWx0OworfQorCisjZW5kaWYgLyog SEFWRV9VTlNFVEVOViAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ200L2dudWxpYi1jb21wLm00 JwotLS0gbTQvZ251bGliLWNvbXAubTQJMjAxMi0xMS0zMCAxODoyNTo1OSArMDAwMAorKysg bTQvZ251bGliLWNvbXAubTQJMjAxMi0xMi0wMyAyMDowMzoyMiArMDAwMApAQCAtODUsNiAr ODUsNyBAQAogICAjIENvZGUgZnJvbSBtb2R1bGUgcGF0aG1heDoKICAgIyBDb2RlIGZyb20g bW9kdWxlIHBzZWxlY3Q6CiAgICMgQ29kZSBmcm9tIG1vZHVsZSBwdGhyZWFkX3NpZ21hc2s6 CisgICMgQ29kZSBmcm9tIG1vZHVsZSBwdXRlbnY6CiAgICMgQ29kZSBmcm9tIG1vZHVsZSBy ZWFkbGluazoKICAgIyBDb2RlIGZyb20gbW9kdWxlIHJvb3QtdWlkOgogICAjIENvZGUgZnJv bSBtb2R1bGUgc2lnbmFsLWg6CkBAIC0xMjUsNiArMTI2LDcgQEAKICAgIyBDb2RlIGZyb20g bW9kdWxlIHRpbWVzcGVjLXN1YjoKICAgIyBDb2RlIGZyb20gbW9kdWxlIHU2NDoKICAgIyBD b2RlIGZyb20gbW9kdWxlIHVuaXN0ZDoKKyAgIyBDb2RlIGZyb20gbW9kdWxlIHVuc2V0ZW52 OgogICAjIENvZGUgZnJvbSBtb2R1bGUgdXRpbWVuczoKICAgIyBDb2RlIGZyb20gbW9kdWxl IHZlcmlmeToKICAgIyBDb2RlIGZyb20gbW9kdWxlIHdhcm5pbmdzOgpAQCAtMjM5LDYgKzI0 MSwxMSBAQAogICAgIGdsX1BSRVJFUV9QVEhSRUFEX1NJR01BU0sKICAgZmkKICAgZ2xfU0lH TkFMX01PRFVMRV9JTkRJQ0FUT1IoW3B0aHJlYWRfc2lnbWFza10pCisgIGdsX0ZVTkNfUFVU RU5WCisgIGlmIHRlc3QgJFJFUExBQ0VfUFVURU5WID0gMTsgdGhlbgorICAgIEFDX0xJQk9C SihbcHV0ZW52XSkKKyAgZmkKKyAgZ2xfU1RETElCX01PRFVMRV9JTkRJQ0FUT1IoW3B1dGVu dl0pCiAgIGdsX0ZVTkNfUkVBRExJTksKICAgaWYgdGVzdCAkSEFWRV9SRUFETElOSyA9IDAg fHwgdGVzdCAkUkVQTEFDRV9SRUFETElOSyA9IDE7IHRoZW4KICAgICBBQ19MSUJPQkooW3Jl YWRsaW5rXSkKQEAgLTI5MSw2ICsyOTgsMTIgQEAKICAgZ2xfVElNRVJfVElNRQogICBnbF9U SU1FU1BFQwogICBnbF9VTklTVERfSAorICBnbF9GVU5DX1VOU0VURU5WCisgIGlmIHRlc3Qg JEhBVkVfVU5TRVRFTlYgPSAwIHx8IHRlc3QgJFJFUExBQ0VfVU5TRVRFTlYgPSAxOyB0aGVu CisgICAgQUNfTElCT0JKKFt1bnNldGVudl0pCisgICAgZ2xfUFJFUkVRX1VOU0VURU5WCisg IGZpCisgIGdsX1NURExJQl9NT0RVTEVfSU5ESUNBVE9SKFt1bnNldGVudl0pCiAgIGdsX1VU SU1FTlMKICAgZ2xfZ251bGliX2VuYWJsZWRfZG9zbmFtZT1mYWxzZQogICBnbF9nbnVsaWJf ZW5hYmxlZF9ldWlkYWNjZXNzPWZhbHNlCkBAIC02NzMsNiArNjg2LDcgQEAKICAgbGliL3Bh dGhtYXguaAogICBsaWIvcHNlbGVjdC5jCiAgIGxpYi9wdGhyZWFkX3NpZ21hc2suYworICBs aWIvcHV0ZW52LmMKICAgbGliL3JlYWRsaW5rLmMKICAgbGliL3Jvb3QtdWlkLmgKICAgbGli L3NoYTEuYwpAQCAtNzE1LDYgKzcyOSw3IEBACiAgIGxpYi91NjQuaAogICBsaWIvdW5pc3Rk LmMKICAgbGliL3VuaXN0ZC5pbi5oCisgIGxpYi91bnNldGVudi5jCiAgIGxpYi91dGltZW5z LmMKICAgbGliL3V0aW1lbnMuaAogICBsaWIvdmVyaWZ5LmgKQEAgLTc1Niw3ICs3NzEsOSBA QAogICBtNC9wYXRobWF4Lm00CiAgIG00L3BzZWxlY3QubTQKICAgbTQvcHRocmVhZF9zaWdt YXNrLm00CisgIG00L3B1dGVudi5tNAogICBtNC9yZWFkbGluay5tNAorICBtNC9zZXRlbnYu bTQKICAgbTQvc2hhMS5tNAogICBtNC9zaGEyNTYubTQKICAgbTQvc2hhNTEyLm00Cgo9PT0g YWRkZWQgZmlsZSAnbTQvcHV0ZW52Lm00JwotLS0gbTQvcHV0ZW52Lm00CTE5NzAtMDEtMDEg MDA6MDA6MDAgKzAwMDAKKysrIG00L3B1dGVudi5tNAkyMDEyLTEyLTAzIDIwOjAzOjIyICsw MDAwCkBAIC0wLDAgKzEsNTAgQEAKKyMgcHV0ZW52Lm00IHNlcmlhbCAxOQorZG5sIENvcHly aWdodCAoQykgMjAwMi0yMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorZG5s IFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlz dHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9u ZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKK2RubCBGcm9tIEppbSBNZXllcmlu Zy4KK2RubAorZG5sIENoZWNrIHdoZXRoZXIgcHV0ZW52ICgiRk9PIikgcmVtb3ZlcyBGT08g ZnJvbSB0aGUgZW52aXJvbm1lbnQuCitkbmwgVGhlIHB1dGVudiBpbiBsaWJjIG9uIGF0IGxl YXN0IFN1bk9TIDQuMS40IGRvZXMgKm5vdCogZG8gdGhhdC4KKworQUNfREVGVU4oW2dsX0ZV TkNfUFVURU5WXSwKK1sKKyAgQUNfUkVRVUlSRShbZ2xfU1RETElCX0hfREVGQVVMVFNdKQor ICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pIGRubCBmb3IgY3Jvc3MtY29tcGls ZXMKKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBwdXRlbnYgY29tcGF0aWJsZSB3aXRoIEdOVSBh bmQgU1ZJRF0sCisgICBbZ2xfY3ZfZnVuY19zdmlkX3B1dGVudl0sCisgICBbQUNfUlVOX0lG RUxTRShbQUNfTEFOR19QUk9HUkFNKFtBQ19JTkNMVURFU19ERUZBVUxUXSxbWworICAgIC8q IFB1dCBpdCBpbiBlbnYuICAqLworICAgIGlmIChwdXRlbnYgKCJDT05GVEVTVF9wdXRlbnY9 dmFsIikpCisgICAgICByZXR1cm4gMTsKKworICAgIC8qIFRyeSB0byByZW1vdmUgaXQuICAq LworICAgIGlmIChwdXRlbnYgKCJDT05GVEVTVF9wdXRlbnYiKSkKKyAgICAgIHJldHVybiAy OworCisgICAgLyogTWFrZSBzdXJlIGl0IHdhcyBkZWxldGVkLiAgKi8KKyAgICBpZiAoZ2V0 ZW52ICgiQ09ORlRFU1RfcHV0ZW52IikgIT0gMCkKKyAgICAgIHJldHVybiAzOworCisgICAg cmV0dXJuIDA7CisgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICAgZ2xfY3ZfZnVu Y19zdmlkX3B1dGVudj15ZXMsCisgICAgICAgICAgICAgZ2xfY3ZfZnVuY19zdmlkX3B1dGVu dj1ubywKKyAgICAgICAgICAgICBkbmwgV2hlbiBjcm9zc2NvbXBpbGluZywgYXNzdW1lIHB1 dGVudiBpcyBicm9rZW4uCisgICAgICAgICAgICAgW2Nhc2UgIiRob3N0X29zIiBpbgorICAg ICAgICAgICAgICAgICAgICAgICAgIyBHdWVzcyB5ZXMgb24gZ2xpYmMgc3lzdGVtcy4KKyAg ICAgICAgICAgICAgICAqLWdudSopIGdsX2N2X2Z1bmNfc3ZpZF9wdXRlbnY9Imd1ZXNzaW5n IHllcyIgOzsKKyAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgd2UgZG9uJ3Qga25vdywg YXNzdW1lIHRoZSB3b3JzdC4KKyAgICAgICAgICAgICAgICAqKSAgICAgIGdsX2N2X2Z1bmNf c3ZpZF9wdXRlbnY9Imd1ZXNzaW5nIG5vIiA7OworICAgICAgICAgICAgICBlc2FjCisgICAg ICAgICAgICAgXSkKKyAgIF0pCisgIGNhc2UgIiRnbF9jdl9mdW5jX3N2aWRfcHV0ZW52IiBp bgorICAgICp5ZXMpIDs7CisgICAgKikKKyAgICAgIFJFUExBQ0VfUFVURU5WPTEKKyAgICAg IDs7CisgIGVzYWMKK10pCgo9PT0gYWRkZWQgZmlsZSAnbTQvc2V0ZW52Lm00JwotLS0gbTQv c2V0ZW52Lm00CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKKysrIG00L3NldGVudi5tNAky MDEyLTEyLTAzIDIwOjAzOjIyICswMDAwCkBAIC0wLDAgKzEsMTYwIEBACisjIHNldGVudi5t NCBzZXJpYWwgMjYKK2RubCBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwNCwgMjAwNi0yMDEyIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNv ZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1p dGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRo IG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBw cmVzZXJ2ZWQuCisKK0FDX0RFRlVOKFtnbF9GVU5DX1NFVEVOVl0sCitbCisgIEFDX1JFUVVJ UkUoW2dsX0ZVTkNfU0VURU5WX1NFUEFSQVRFXSkKKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05J Q0FMX0hPU1RdKSBkbmwgZm9yIGNyb3NzLWNvbXBpbGVzCisgIGlmIHRlc3QgJGFjX2N2X2Z1 bmNfc2V0ZW52ID0gbm87IHRoZW4KKyAgICBIQVZFX1NFVEVOVj0wCisgIGVsc2UKKyAgICBB Q19DQUNIRV9DSEVDSyhbd2hldGhlciBzZXRlbnYgdmFsaWRhdGVzIGFyZ3VtZW50c10sCisg ICAgICBbZ2xfY3ZfZnVuY19zZXRlbnZfd29ya3NdLAorICAgICAgW0FDX1JVTl9JRkVMU0Uo W0FDX0xBTkdfUFJPR1JBTShbWworICAgICAgICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAgICAg ICAjaW5jbHVkZSA8ZXJybm8uaD4KKyAgICAgICAjaW5jbHVkZSA8c3RyaW5nLmg+CisgICAg ICBdXSwgW1sKKyAgICAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICAgICB7CisgICAgICAgICBp ZiAoc2V0ZW52ICgiIiwgIiIsIDApICE9IC0xKQorICAgICAgICAgICByZXN1bHQgfD0gMTsK KyAgICAgICAgIGVsc2UgaWYgKGVycm5vICE9IEVJTlZBTCkKKyAgICAgICAgICAgcmVzdWx0 IHw9IDI7CisgICAgICAgfQorICAgICAgIHsKKyAgICAgICAgIGlmIChzZXRlbnYgKCJhIiwg Ij0iLCAxKSAhPSAwKQorICAgICAgICAgICByZXN1bHQgfD0gNDsKKyAgICAgICAgIGVsc2Ug aWYgKHN0cmNtcCAoZ2V0ZW52ICgiYSIpLCAiPSIpICE9IDApCisgICAgICAgICAgIHJlc3Vs dCB8PSA4OworICAgICAgIH0KKyAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgXV0pXSwK KyAgICAgIFtnbF9jdl9mdW5jX3NldGVudl93b3Jrcz15ZXNdLCBbZ2xfY3ZfZnVuY19zZXRl bnZfd29ya3M9bm9dLAorICAgICAgW2Nhc2UgIiRob3N0X29zIiBpbgorICAgICAgICAgICAg ICAgICAjIEd1ZXNzIHllcyBvbiBnbGliYyBzeXN0ZW1zLgorICAgICAgICAgKi1nbnUqKSBn bF9jdl9mdW5jX3NldGVudl93b3Jrcz0iZ3Vlc3NpbmcgeWVzIiA7OworICAgICAgICAgICAg ICAgICAjIElmIHdlIGRvbid0IGtub3csIGFzc3VtZSB0aGUgd29yc3QuCisgICAgICAgICAq KSAgICAgIGdsX2N2X2Z1bmNfc2V0ZW52X3dvcmtzPSJndWVzc2luZyBubyIgOzsKKyAgICAg ICBlc2FjCisgICAgICBdKV0pCisgICAgY2FzZSAiJGdsX2N2X2Z1bmNfc2V0ZW52X3dvcmtz IiBpbgorICAgICAgKnllcykgOzsKKyAgICAgICopCisgICAgICAgIFJFUExBQ0VfU0VURU5W PTEKKyAgICAgICAgOzsKKyAgICBlc2FjCisgIGZpCitdKQorCisjIExpa2UgZ2xfRlVOQ19T RVRFTlYsIGV4Y2VwdCBwcmVwYXJlIGZvciBzZXBhcmF0ZSBjb21waWxhdGlvbgorIyAobm8g UkVQTEFDRV9TRVRFTlYsIG5vIEFDX0xJQk9CSikuCitBQ19ERUZVTihbZ2xfRlVOQ19TRVRF TlZfU0VQQVJBVEVdLAorWworICBBQ19SRVFVSVJFKFtnbF9TVERMSUJfSF9ERUZBVUxUU10p CisgIEFDX0NIRUNLX0RFQ0xTX09OQ0UoW3NldGVudl0pCisgIGlmIHRlc3QgJGFjX2N2X2hh dmVfZGVjbF9zZXRlbnYgPSBubzsgdGhlbgorICAgIEhBVkVfREVDTF9TRVRFTlY9MAorICBm aQorICBBQ19DSEVDS19GVU5DU19PTkNFKFtzZXRlbnZdKQorICBnbF9QUkVSRVFfU0VURU5W CitdKQorCitBQ19ERUZVTihbZ2xfRlVOQ19VTlNFVEVOVl0sCitbCisgIEFDX1JFUVVJUkUo W2dsX1NURExJQl9IX0RFRkFVTFRTXSkKKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hP U1RdKSBkbmwgZm9yIGNyb3NzLWNvbXBpbGVzCisgIEFDX0NIRUNLX0RFQ0xTX09OQ0UoW3Vu c2V0ZW52XSkKKyAgaWYgdGVzdCAkYWNfY3ZfaGF2ZV9kZWNsX3Vuc2V0ZW52ID0gbm87IHRo ZW4KKyAgICBIQVZFX0RFQ0xfVU5TRVRFTlY9MAorICBmaQorICBBQ19DSEVDS19GVU5DUyhb dW5zZXRlbnZdKQorICBpZiB0ZXN0ICRhY19jdl9mdW5jX3Vuc2V0ZW52ID0gbm87IHRoZW4K KyAgICBIQVZFX1VOU0VURU5WPTAKKyAgZWxzZQorICAgIEhBVkVfVU5TRVRFTlY9MQorICAg IGRubCBTb21lIEJTRHMgcmV0dXJuIHZvaWQsIGZhaWxpbmcgdG8gZG8gZXJyb3IgY2hlY2tp bmcuCisgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciB1bnNldGVudigpIHJldHVybiB0eXBlXSwg W2d0X2N2X2Z1bmNfdW5zZXRlbnZfcmV0XSwKKyAgICAgIFtBQ19DT01QSUxFX0lGRUxTRSgK KyAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgICBbWworI3VuZGVmIF9C U0QKKyNkZWZpbmUgX0JTRCAxIC8qIHVuaGlkZSB1bnNldGVudiBkZWNsYXJhdGlvbiBpbiBP U0YvMSA1LjEgPHN0ZGxpYi5oPiAqLworI2luY2x1ZGUgPHN0ZGxpYi5oPgorZXh0ZXJuCisj aWZkZWYgX19jcGx1c3BsdXMKKyJDIgorI2VuZGlmCitpbnQgdW5zZXRlbnYgKGNvbnN0IGNo YXIgKm5hbWUpOworICAgICAgICAgICAgXV0sCisgICAgICAgICAgICBbW11dKV0sCisgICAg ICAgICBbZ3RfY3ZfZnVuY191bnNldGVudl9yZXQ9J2ludCddLAorICAgICAgICAgW2d0X2N2 X2Z1bmNfdW5zZXRlbnZfcmV0PSd2b2lkJ10pXSkKKyAgICBpZiB0ZXN0ICRndF9jdl9mdW5j X3Vuc2V0ZW52X3JldCA9ICd2b2lkJzsgdGhlbgorICAgICAgQUNfREVGSU5FKFtWT0lEX1VO U0VURU5WXSwgWzFdLCBbRGVmaW5lIHRvIDEgaWYgdW5zZXRlbnYgcmV0dXJucyB2b2lkCisg ICAgICAgaW5zdGVhZCBvZiBpbnQuXSkKKyAgICAgIFJFUExBQ0VfVU5TRVRFTlY9MQorICAg IGZpCisKKyAgICBkbmwgU29sYXJpcyAxMCB1bnNldGVudiBkb2VzIG5vdCByZW1vdmUgYWxs IGNvcGllcyBvZiBhIG5hbWUuCisgICAgZG5sIEhhaWt1IGFscGhhIDIgdW5zZXRlbnYgZ2V0 cyBjb25mdXNlZCBieSBhc3NpZ25tZW50IHRvIGVudmlyb24uCisgICAgZG5sIE9wZW5CU0Qg NC43IHVuc2V0ZW52KCIiKSBkb2VzIG5vdCBmYWlsLgorICAgIEFDX0NBQ0hFX0NIRUNLKFt3 aGV0aGVyIHVuc2V0ZW52IG9iZXlzIFBPU0lYXSwKKyAgICAgIFtnbF9jdl9mdW5jX3Vuc2V0 ZW52X3dvcmtzXSwKKyAgICAgIFtBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sK KyAgICAgICAjaW5jbHVkZSA8c3RkbGliLmg+CisgICAgICAgI2luY2x1ZGUgPGVycm5vLmg+ CisgICAgICAgZXh0ZXJuIGNoYXIgKiplbnZpcm9uOworICAgICAgXV0sIFtbCisgICAgICAg Y2hhciBlbnRyeTFbXSA9ICJhPTEiOworICAgICAgIGNoYXIgZW50cnkyW10gPSAiYj0yIjsK KyAgICAgICBjaGFyICplbnZbXSA9IHsgZW50cnkxLCBlbnRyeTIsIE5VTEwgfTsKKyAgICAg ICBpZiAocHV0ZW52ICgoY2hhciAqKSAiYT0xIikpIHJldHVybiAxOworICAgICAgIGlmIChw dXRlbnYgKGVudHJ5MikpIHJldHVybiAyOworICAgICAgIGVudHJ5MlswXSA9ICdhJzsKKyAg ICAgICB1bnNldGVudiAoImEiKTsKKyAgICAgICBpZiAoZ2V0ZW52ICgiYSIpKSByZXR1cm4g MzsKKyAgICAgICBpZiAoIXVuc2V0ZW52ICgiIikgfHwgZXJybm8gIT0gRUlOVkFMKSByZXR1 cm4gNDsKKyAgICAgICBlbnRyeTJbMF0gPSAnYic7CisgICAgICAgZW52aXJvbiA9IGVudjsK KyAgICAgICBpZiAoIWdldGVudiAoImEiKSkgcmV0dXJuIDU7CisgICAgICAgZW50cnkyWzBd ID0gJ2EnOworICAgICAgIHVuc2V0ZW52ICgiYSIpOworICAgICAgIGlmIChnZXRlbnYgKCJh IikpIHJldHVybiA2OworICAgICAgXV0pXSwKKyAgICAgIFtnbF9jdl9mdW5jX3Vuc2V0ZW52 X3dvcmtzPXllc10sIFtnbF9jdl9mdW5jX3Vuc2V0ZW52X3dvcmtzPW5vXSwKKyAgICAgIFtj YXNlICIkaG9zdF9vcyIgaW4KKyAgICAgICAgICAgICAgICAgIyBHdWVzcyB5ZXMgb24gZ2xp YmMgc3lzdGVtcy4KKyAgICAgICAgICotZ251KikgZ2xfY3ZfZnVuY191bnNldGVudl93b3Jr cz0iZ3Vlc3NpbmcgeWVzIiA7OworICAgICAgICAgICAgICAgICAjIElmIHdlIGRvbid0IGtu b3csIGFzc3VtZSB0aGUgd29yc3QuCisgICAgICAgICAqKSAgICAgIGdsX2N2X2Z1bmNfdW5z ZXRlbnZfd29ya3M9Imd1ZXNzaW5nIG5vIiA7OworICAgICAgIGVzYWMKKyAgICAgIF0pXSkK KyAgICBjYXNlICIkZ2xfY3ZfZnVuY191bnNldGVudl93b3JrcyIgaW4KKyAgICAgICp5ZXMp IDs7CisgICAgICAqKQorICAgICAgICBSRVBMQUNFX1VOU0VURU5WPTEKKyAgICAgICAgOzsK KyAgICBlc2FjCisgIGZpCitdKQorCisjIFByZXJlcXVpc2l0ZXMgb2YgbGliL3NldGVudi5j LgorQUNfREVGVU4oW2dsX1BSRVJFUV9TRVRFTlZdLAorWworICBBQ19SRVFVSVJFKFtBQ19G VU5DX0FMTE9DQV0pCisgIEFDX1JFUVVJUkUoW2dsX0VOVklST05dKQorICBBQ19DSEVDS19I RUFERVJTX09OQ0UoW3VuaXN0ZC5oXSkKKyAgQUNfQ0hFQ0tfSEVBREVSUyhbc2VhcmNoLmhd KQorICBBQ19DSEVDS19GVU5DUyhbdHNlYXJjaF0pCitdKQorCisjIFByZXJlcXVpc2l0ZXMg b2YgbGliL3Vuc2V0ZW52LmMuCitBQ19ERUZVTihbZ2xfUFJFUkVRX1VOU0VURU5WXSwKK1sK KyAgQUNfUkVRVUlSRShbZ2xfRU5WSVJPTl0pCisgIEFDX0NIRUNLX0hFQURFUlNfT05DRShb dW5pc3RkLmhdKQorXSkKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvQ2hhbmdlTG9nJwotLS0g c3JjL0NoYW5nZUxvZwkyMDEyLTEyLTAzIDE5OjE2OjE3ICswMDAwCisrKyBzcmMvQ2hhbmdl TG9nCTIwMTItMTItMDMgMjA6MDc6MTMgKzAwMDAKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0x Mi0wMyAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CisKKwlVc2UgcHV0ZW52 K3Vuc2V0ZW52IGluc3RlYWQgb2YgbW9kaWZ5aW5nIGVudmlyb24gZGlyZWN0bHkuCisJKiBh bGxvYy5jICh4cHV0ZW52KTogTmV3IGZ1bmN0aW9uLgorCSogZGJ1c2JpbmQuYyAoRmRidXNf aW5pdF9idXMpOgorCSogZW1hY3MuYyAobWFpbik6CisJKiB4dGVybS5jICh4X3Rlcm1faW5p dCk6CisJVXNlIHhwdXRlbnYgaW5zdGVhZCBvZiBzZXRlbnYgb3IgcHV0ZW52LCB0byBkZXRl Y3QgbWVtb3J5IGV4aGF1c3Rpb24uCisJKiBlZGl0Zm5zLmMgKGluaXRpYWxfdHopOiBNb3Zl IHN0YXRpYyB2YXIgZGVjbCB1cC4KKwkodHp2YWxidWZfaW5fZW52aXJvbik6IE5ldyBzdGF0 aWMgdmFyLgorCShpbml0X2VkaXRmbnMpOglJbml0aWFsaXplIHRoZXNlIHR3byBzdGF0aWMg dmFycy4KKwkoRmVuY29kZV90aW1lKTogRG9uJ3QgYXNzdW1lIGFyYml0cmFyeSBsaW1pdCBv biBFTUFDU19JTlQgd2lkdGguCisJU2F2ZSBvbGQgVFogdmFsdWUgb24gc3RhY2ssIGlmIGl0 J3Mgc21hbGwuCisJKEZlbmNvZGVfdGltZSwgc2V0X3RpbWVfem9uZV9ydWxlKTogRG9uJ3Qg bW9kaWZ5ICdlbnZpcm9uJyBkaXJlY3RseTsKKwlpbnN0ZWFkLCB1c2UgeHB1dGVudit1bnNl dGVudiB0byBzZXQgYW5kIHJlc3RvcmUgVFouCisJKGVudmlyb25idWYpOiBSZW1vdmUgc3Rh dGljIHZhci4gIEFsbCB1c2VzIHJlbW92ZWQuCisJKEZzZXRfdGltZV96b25lX3J1bGUpOiBE byBub3Qgc2F2ZSBUWiBhbmQgZW52aXJvbjsgbm8gbG9uZ2VyIG5lZWRlZCBoZXJlLgorCShz ZXRfdGltZV96b25lX3J1bGVfdHoxLCBzZXRfdGltZV96b25lX3J1bGVfdHoyKSBbTE9DQUxU SU1FX0NBQ0hFXToKKwlNb3ZlIHRvIGluc2lkZSBzZXRfdGltZV96b25lX3J1bGU7IHRoZXkg ZG9uJ3QgbmVlZCBmaWxlIHNjb3BlIGFueSBtb3JlLgorCShzZXRfdGltZV96b25lX3J1bGUp OiBNYWludGFpbiB0aGUgVFo9dmFsdWUgc3RyaW5nIHNlcGFyYXRlbHkuCisJKHN5bXNfb2Zf ZWRpdGZucyk6IERvbid0IGluaXRpYWxpemUgaW5pdGlhbF90ejsgaW5pdF9lZGl0Zm5zIG5v dyBkb2VzIGl0LgorCSogZW1hY3MuYyAoZHVtcF90eikgW0hBVkVfVFpTRVRdOiBOb3cgY29u c3QuCisJKiBsaXNwLmggKHhwdXRlbnYpOiBOZXcgZGVjbC4KKwogMjAxMi0xMi0wMyAgSmFu IERqw6RydiAgPGphbi5oLmRAc3dpcG5ldC5zZT4KIAogCSogZ3RrdXRpbC5jIChteV9sb2df aGFuZGxlcik6IE5ldyBmdW5jdGlvbi4KCj09PSBtb2RpZmllZCBmaWxlICdzcmMvYWxsb2Mu YycKLS0tIHNyYy9hbGxvYy5jCTIwMTItMTItMDMgMDg6MDY6MDIgKzAwMDAKKysrIHNyYy9h bGxvYy5jCTIwMTItMTItMDMgMjA6MDc6MTMgKzAwMDAKQEAgLTgyMCw2ICs4MjAsMTUgQEAK ICAgcmV0dXJuIHA7CiB9CiAKKy8qIExpa2UgcHV0ZW52LCBidXQgKDEpIHVzZSB0aGUgZXF1 aXZhbGVudCBvZiB4bWFsbG9jIGFuZCAoMikgdGhlCisgICBhcmd1bWVudCBpcyBhIGNvbnN0 IHBvaW50ZXIuICAqLworCit2b2lkCit4cHV0ZW52IChjaGFyIGNvbnN0ICpzdHJpbmcpCit7 CisgIGlmIChwdXRlbnYgKChjaGFyICopIHN0cmluZykgIT0gMCkKKyAgICBtZW1vcnlfZnVs bCAoMCk7Cit9CiAKIC8qIFVud2luZCBmb3IgU0FGRV9BTExPQ0EgKi8KIAoKPT09IG1vZGlm aWVkIGZpbGUgJ3NyYy9kYnVzYmluZC5jJwotLS0gc3JjL2RidXNiaW5kLmMJMjAxMi0xMC0z MSAxMTo0NTo0MCArMDAwMAorKysgc3JjL2RidXNiaW5kLmMJMjAxMi0xMi0wMyAyMDowMzoy MiArMDAwMApAQCAtMTIwMyw3ICsxMjAzLDcgQEAKICAgICAgIHhkX3JlZ2lzdGVyZWRfYnVz ZXMgPSBGY29ucyAoRmNvbnMgKGJ1cywgdmFsKSwgeGRfcmVnaXN0ZXJlZF9idXNlcyk7CiAK ICAgICAgIC8qIFdlIGRvIG5vdCB3YW50IHRvIGFib3J0LiAgKi8KLSAgICAgIHB1dGVudiAo KGNoYXIgKikgIkRCVVNfRkFUQUxfV0FSTklOR1M9MCIpOworICAgICAgeHB1dGVudiAoIkRC VVNfRkFUQUxfV0FSTklOR1M9MCIpOwogCiAgICAgICAvKiBDbGVhbnVwLiAgKi8KICAgICAg IGRidXNfZXJyb3JfZnJlZSAoJmRlcnJvcik7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2Vk aXRmbnMuYycKLS0tIHNyYy9lZGl0Zm5zLmMJMjAxMi0xMi0wMyAxNDoxMzowNiArMDAwMAor Kysgc3JjL2VkaXRmbnMuYwkyMDEyLTEyLTAzIDIwOjA3OjEzICswMDAwCkBAIC03OCw2ICs3 OCwxNSBAQAogCiBzdGF0aWMgTGlzcF9PYmplY3QgUWJvdW5kYXJ5OwogCisvKiBUaGUgc3Rh cnR1cCB2YWx1ZSBvZiB0aGUgVFogZW52aXJvbm1lbnQgdmFyaWFibGUgc28gaXQgY2FuIGJl CisgICByZXN0b3JlZCBpZiB0aGUgdXNlciBjYWxscyBzZXQtdGltZS16b25lLXJ1bGUgd2l0 aCBhIG5pbAorICAgYXJndW1lbnQuICBJZiBudWxsLCB0aGUgVFogZW52aXJvbm1lbnQgdmFy aWFibGUgd2FzIHVuc2V0LiAgKi8KK3N0YXRpYyBjaGFyIGNvbnN0ICppbml0aWFsX3R6Owor CisvKiBUcnVlIGlmIHRoZSBzdGF0aWMgdmFyaWFibGUgdHp2YWxidWYgKGRlZmluZWQgaW4K KyAgIHNldF90aW1lX3pvbmVfcnVsZSkgaXMgcGFydCBvZiAnZW52aXJvbicuICAqLworc3Rh dGljIGJvb2wgdHp2YWxidWZfaW5fZW52aXJvbjsKKwogCiB2b2lkCiBpbml0X2VkaXRmbnMg KHZvaWQpCkBAIC05Niw2ICsxMDUsOSBAQAogICAgIHJldHVybjsKICNlbmRpZiAvKiBub3Qg Q0FOTk9UX0RVTVAgKi8KIAorICBpbml0aWFsX3R6ID0gZ2V0ZW52ICgiVFoiKTsKKyAgdHp2 YWxidWZfaW5fZW52aXJvbiA9IDA7CisKICAgcHcgPSBnZXRwd3VpZCAoZ2V0dWlkICgpKTsK ICNpZmRlZiBNU0RPUwogICAvKiBXZSBsZXQgdGhlIHJlYWwgdXNlciBuYW1lIGRlZmF1bHQg dG8gInJvb3QiIGJlY2F1c2UgdGhhdCdzIHF1aXRlCkBAIC0xOTAwLDkgKzE5MTIsMTEgQEAK ICAgICB9CiAgIGVsc2UKICAgICB7Ci0gICAgICBjaGFyIHR6YnVmWzEwMF07CisgICAgICBz dGF0aWMgY2hhciBjb25zdCB0emJ1Zl9mb3JtYXRbXSA9ICJYWFglcyUicEkiZDolMDJkOiUw MmQiOworICAgICAgY2hhciB0emJ1ZltzaXplb2YgdHpidWZfZm9ybWF0ICsgSU5UX1NUUkxF Tl9CT1VORCAoRU1BQ1NfSU5UKV07CisgICAgICBjaGFyICpvbGRfdHpzdHJpbmc7CiAgICAg ICBjb25zdCBjaGFyICp0enN0cmluZzsKLSAgICAgIGNoYXIgKipvbGRlbnYgPSBlbnZpcm9u LCAqKm5ld2VudjsKKyAgICAgIFVTRV9TQUZFX0FMTE9DQTsKIAogICAgICAgaWYgKEVRICh6 b25lLCBRdCkpCiAJdHpzdHJpbmcgPSAiVVRDMCI7CkBAIC0xOTE0LDEzICsxOTI4LDIwIEBA CiAJICBFTUFDU19JTlQgem9uZV9ociA9IGFic3pvbmUgLyAoNjAqNjApOwogCSAgaW50IHpv bmVfbWluID0gKGFic3pvbmUvNjApICUgNjA7CiAJICBpbnQgem9uZV9zZWMgPSBhYnN6b25l ICUgNjA7Ci0JICBzcHJpbnRmICh0emJ1ZiwgIlhYWCVzJSJwSSJkOiUwMmQ6JTAyZCIsICIt IiArIChYSU5UICh6b25lKSA8IDApLAorCSAgc3ByaW50ZiAodHpidWYsIHR6YnVmX2Zvcm1h dCwgIi0iICsgKFhJTlQgKHpvbmUpIDwgMCksCiAJCSAgIHpvbmVfaHIsIHpvbmVfbWluLCB6 b25lX3NlYyk7CiAJICB0enN0cmluZyA9IHR6YnVmOwogCX0KICAgICAgIGVsc2UKIAllcnJv ciAoIkludmFsaWQgdGltZSB6b25lIHNwZWNpZmljYXRpb24iKTsKIAorICAgICAgb2xkX3R6 c3RyaW5nID0gZ2V0ZW52ICgiVFoiKTsKKyAgICAgIGlmIChvbGRfdHpzdHJpbmcpCisJewor CSAgY2hhciAqYnVmID0gU0FGRV9BTExPQ0EgKHN0cmxlbiAob2xkX3R6c3RyaW5nKSArIDEp OworCSAgb2xkX3R6c3RyaW5nID0gc3RyY3B5IChidWYsIG9sZF90enN0cmluZyk7CisJfQor CiAgICAgICBibG9ja19pbnB1dCAoKTsKIAogICAgICAgLyogU2V0IFRaIGJlZm9yZSBjYWxs aW5nIG1rdGltZTsgbWVyZWx5IGFkanVzdGluZyBta3RpbWUncyByZXR1cm5lZApAQCAtMTky OSwxNSArMTk1MCwxMiBAQAogCiAgICAgICB2YWx1ZSA9IG1rdGltZSAoJnRtKTsKIAotICAg ICAgLyogUmVzdG9yZSBUWiB0byBwcmV2aW91cyB2YWx1ZS4gICovCi0gICAgICBuZXdlbnYg PSBlbnZpcm9uOwotICAgICAgZW52aXJvbiA9IG9sZGVudjsKKyAgICAgIHNldF90aW1lX3pv bmVfcnVsZSAob2xkX3R6c3RyaW5nKTsKICNpZmRlZiBMT0NBTFRJTUVfQ0FDSEUKICAgICAg IHR6c2V0ICgpOwogI2VuZGlmCiAgICAgICB1bmJsb2NrX2lucHV0ICgpOwotCi0gICAgICB4 ZnJlZSAobmV3ZW52KTsKKyAgICAgIFNBRkVfRlJFRSAoKTsKICAgICB9CiAKICAgaWYgKHZh bHVlID09ICh0aW1lX3QpIC0xKQpAQCAtMjA2NywxNiArMjA4NSw2IEBACiAgIHJldHVybiBs aXN0MiAoem9uZV9vZmZzZXQsIHpvbmVfbmFtZSk7CiB9CiAKLS8qIFRoaXMgaG9sZHMgdGhl IHZhbHVlIG9mIGBlbnZpcm9uJyBwcm9kdWNlZCBieSB0aGUgcHJldmlvdXMKLSAgIGNhbGwg dG8gRnNldF90aW1lX3pvbmVfcnVsZSwgb3IgMCBpZiBGc2V0X3RpbWVfem9uZV9ydWxlCi0g ICBoYXMgbmV2ZXIgYmVlbiBjYWxsZWQuICAqLwotc3RhdGljIGNoYXIgKiplbnZpcm9uYnVm OwotCi0vKiBUaGlzIGhvbGRzIHRoZSBzdGFydHVwIHZhbHVlIG9mIHRoZSBUWiBlbnZpcm9u bWVudCB2YXJpYWJsZSBzbyBpdAotICAgY2FuIGJlIHJlc3RvcmVkIGlmIHRoZSB1c2VyIGNh bGxzIHNldC10aW1lLXpvbmUtcnVsZSB3aXRoIGEgbmlsCi0gICBhcmd1bWVudC4gICovCi1z dGF0aWMgY2hhciAqaW5pdGlhbF90ejsKLQogREVGVU4gKCJzZXQtdGltZS16b25lLXJ1bGUi LCBGc2V0X3RpbWVfem9uZV9ydWxlLCBTc2V0X3RpbWVfem9uZV9ydWxlLCAxLCAxLCAwLAog ICAgICAgIGRvYzogLyogU2V0IHRoZSBsb2NhbCB0aW1lIHpvbmUgdXNpbmcgVFosIGEgc3Ry aW5nIHNwZWNpZnlpbmcgYSB0aW1lIHpvbmUgcnVsZS4KIElmIFRaIGlzIG5pbCwgdXNlIGlt cGxlbWVudGF0aW9uLWRlZmluZWQgZGVmYXVsdCB0aW1lIHpvbmUgaW5mb3JtYXRpb24uCkBA IC0yMDg5LDE4ICsyMDk3LDEwIEBACiAgIChMaXNwX09iamVjdCB0eikKIHsKICAgY29uc3Qg Y2hhciAqdHpzdHJpbmc7Ci0gIGNoYXIgKipvbGRfZW52aXJvbmJ1ZjsKIAogICBpZiAoISAo TklMUCAodHopIHx8IEVRICh0eiwgUXQpKSkKICAgICBDSEVDS19TVFJJTkcgKHR6KTsKIAot ICBibG9ja19pbnB1dCAoKTsKLQotICAvKiBXaGVuIGNhbGxlZCBmb3IgdGhlIGZpcnN0IHRp bWUsIHNhdmUgdGhlIG9yaWdpbmFsIFRaLiAgKi8KLSAgb2xkX2Vudmlyb25idWYgPSBlbnZp cm9uYnVmOwotICBpZiAoIW9sZF9lbnZpcm9uYnVmKQotICAgIGluaXRpYWxfdHogPSAoY2hh ciAqKSBnZXRlbnYgKCJUWiIpOwotCiAgIGlmIChOSUxQICh0eikpCiAgICAgdHpzdHJpbmcg PSBpbml0aWFsX3R6OwogICBlbHNlIGlmIChFUSAodHosIFF0KSkKQEAgLTIxMDgsMTA2ICsy MTA4LDk3IEBACiAgIGVsc2UKICAgICB0enN0cmluZyA9IFNTREFUQSAodHopOwogCisgIGJs b2NrX2lucHV0ICgpOwogICBzZXRfdGltZV96b25lX3J1bGUgKHR6c3RyaW5nKTsKLSAgZW52 aXJvbmJ1ZiA9IGVudmlyb247Ci0KICAgdW5ibG9ja19pbnB1dCAoKTsKIAotICB4ZnJlZSAo b2xkX2Vudmlyb25idWYpOwogICByZXR1cm4gUW5pbDsKIH0KIAotI2lmZGVmIExPQ0FMVElN RV9DQUNIRQotCi0vKiBUaGVzZSB0d28gdmFsdWVzIGFyZSBrbm93biB0byBsb2FkIHR6IGZp bGVzIGluIGJ1Z2d5IGltcGxlbWVudGF0aW9ucywKLSAgIGkuZS4gU29sYXJpcyAxIGV4ZWN1 dGFibGVzIHJ1bm5pbmcgdW5kZXIgZWl0aGVyIFNvbGFyaXMgMSBvciBTb2xhcmlzIDIuCi0g ICBUaGVpciB2YWx1ZXMgc2hvdWxkbid0IG1hdHRlciBpbiBub24tYnVnZ3kgaW1wbGVtZW50 YXRpb25zLgotICAgV2UgZG9uJ3QgdXNlIHN0cmluZyBsaXRlcmFscyBmb3IgdGhlc2Ugc3Ry aW5ncywKLSAgIHNpbmNlIGlmIGEgc3RyaW5nIGluIHRoZSBlbnZpcm9ubWVudCBpcyBpbiBy ZWFkb25seQotICAgc3RvcmFnZSwgaXQgcnVucyBhZm91bCBvZiBidWdzIGluIFNWUjQgYW5k IFNvbGFyaXMgMi4zLgotICAgU2VlIFN1biBidWdzIDExMTMwOTUgYW5kIDExMTQxMTQsIGBg VGltZXpvbmUgcm91dGluZXMKLSAgIGltcHJvcGVybHkgbW9kaWZ5IGVudmlyb25tZW50Jycu ICAqLwotCi1zdGF0aWMgY2hhciBzZXRfdGltZV96b25lX3J1bGVfdHoxW10gPSAiVFo9R01U KzAiOwotc3RhdGljIGNoYXIgc2V0X3RpbWVfem9uZV9ydWxlX3R6MltdID0gIlRaPUdNVCsx IjsKLQotI2VuZGlmCi0KIC8qIFNldCB0aGUgbG9jYWwgdGltZSB6b25lIHJ1bGUgdG8gVFpT VFJJTkcuCi0gICBUaGlzIGFsbG9jYXRlcyBtZW1vcnkgaW50byBgZW52aXJvbicsIHdoaWNo IGl0IGlzIHRoZSBjYWxsZXIncwotICAgcmVzcG9uc2liaWxpdHkgdG8gZnJlZS4gICovCisK KyAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IHRocmVhZC1zYWZlLCBwYXJ0bHkgYmVjYXVzZSBw dXRlbnYsIHVuc2V0ZW52CisgICBhbmQgdHpzZXQgYXJlIG5vdCwgYW5kIHBhcnRseSBiZWNh dXNlIG9mIHRoZSBzdGF0aWMgc3RvcmFnZSBpdAorICAgdXBkYXRlcy4gIE90aGVyIHRocmVh ZHMgdGhhdCBpbnZva2UgbG9jYWx0aW1lIGV0Yy4gbWF5IGJlIGFkdmVyc2VseQorICAgYWZm ZWN0ZWQgd2hpbGUgdGhpcyBmdW5jdGlvbiBpcyBleGVjdXRpbmcuICAqLwogCiB2b2lkCiBz ZXRfdGltZV96b25lX3J1bGUgKGNvbnN0IGNoYXIgKnR6c3RyaW5nKQogewotICBwdHJkaWZm X3QgZW52cHRyczsKLSAgY2hhciAqKmZyb20sICoqdG8sICoqbmV3ZW52OwotCi0gIC8qIE1h a2UgdGhlIEVOVklST04gdmVjdG9yIGxvbmdlciB3aXRoIHJvb20gZm9yIFRaU1RSSU5HLiAg Ki8KLSAgZm9yIChmcm9tID0gZW52aXJvbjsgKmZyb207IGZyb20rKykKLSAgICBjb250aW51 ZTsKLSAgZW52cHRycyA9IGZyb20gLSBlbnZpcm9uICsgMjsKLSAgbmV3ZW52ID0gdG8gPSB4 bWFsbG9jIChlbnZwdHJzICogc2l6ZW9mICpuZXdlbnYKLQkJCSArICh0enN0cmluZyA/IHN0 cmxlbiAodHpzdHJpbmcpICsgNCA6IDApKTsKLQotICAvKiBBZGQgVFpTVFJJTkcgdG8gdGhl IGVuZCBvZiBlbnZpcm9uLCBhcyBhIHZhbHVlIGZvciBUWi4gICovCisgIC8qIEEgYnVmZmVy IGhvbGRpbmcgYSBzdHJpbmcgb2YgdGhlIGZvcm0gIlRaPXZhbHVlIiwgaW50ZW5kZWQKKyAg ICAgdG8gYmUgcGFydCBvZiB0aGUgZW52aXJvbm1lbnQuICAqLworICBzdGF0aWMgY2hhciAq dHp2YWxidWY7CisgIHN0YXRpYyBwdHJkaWZmX3QgdHp2YWxidWZzaXplOworCisgIGludCB0 emVxbGVuID0gc2l6ZW9mICJUWj0iIC0gMTsKKworI2lmZGVmIExPQ0FMVElNRV9DQUNIRQor ICAvKiBUaGVzZSB0d28gdmFsdWVzIGFyZSBrbm93biB0byBsb2FkIHR6IGZpbGVzIGluIGJ1 Z2d5IGltcGxlbWVudGF0aW9ucywKKyAgICAgaS5lLiBTb2xhcmlzIDEgZXhlY3V0YWJsZXMg cnVubmluZyB1bmRlciBlaXRoZXIgU29sYXJpcyAxIG9yIFNvbGFyaXMgMi4KKyAgICAgVGhl aXIgdmFsdWVzIHNob3VsZG4ndCBtYXR0ZXIgaW4gbm9uLWJ1Z2d5IGltcGxlbWVudGF0aW9u cy4KKyAgICAgV2UgZG9uJ3QgdXNlIHN0cmluZyBsaXRlcmFscyBmb3IgdGhlc2Ugc3RyaW5n cywKKyAgICAgc2luY2UgaWYgYSBzdHJpbmcgaW4gdGhlIGVudmlyb25tZW50IGlzIGluIHJl YWRvbmx5CisgICAgIHN0b3JhZ2UsIGl0IHJ1bnMgYWZvdWwgb2YgYnVncyBpbiBTVlI0IGFu ZCBTb2xhcmlzIDIuMy4KKyAgICAgU2VlIFN1biBidWdzIDExMTMwOTUgYW5kIDExMTQxMTQs IGBgVGltZXpvbmUgcm91dGluZXMKKyAgICAgaW1wcm9wZXJseSBtb2RpZnkgZW52aXJvbm1l bnQnJy4gICovCisKKyAgc3RhdGljIGNoYXIgc2V0X3RpbWVfem9uZV9ydWxlX3R6W11bc2l6 ZW9mICJUWj1HTVQrMCJdCisgICAgPSB7ICJUWj1HTVQrMCIsICJUWj1HTVQrMSIgfTsKKwor ICAvKiBJbiBTdW5PUyA0LjEuM19VMSBhbmQgNC4xLjQsIGlmIFRaIGhhcyBhIHZhbHVlIGxp a2UKKyAgICAgIlVTL1BhY2lmaWMiIHRoYXQgbG9hZHMgYSB0eiBmaWxlLCB0aGVuIGNoYW5n ZXMgdG8gYSB2YWx1ZSBsaWtlCisgICAgICJYWFgwIiB0aGF0IGRvZXMgbm90IGxvYWQgYSB0 eiBmaWxlLCBhbmQgdGhlbiBjaGFuZ2VzIGJhY2sgdG8KKyAgICAgaXRzIG9yaWdpbmFsIHZh bHVlLCB0aGUgbGFzdCBjaGFuZ2UgaXMgKGluY29ycmVjdGx5KSBpZ25vcmVkLgorICAgICBB bHNvLCBpZiBUWiBjaGFuZ2VzIHR3aWNlIGluIHN1Y2Nlc3Npb24gdG8gdmFsdWVzIHRoYXQg ZG8KKyAgICAgbm90IGxvYWQgYSB0eiBmaWxlLCB0enNldCBjYW4gZHVtcCBjb3JlIChzZWUg U3VuIGJ1ZyMxMjI1MTc5KS4KKyAgICAgVGhlIGZvbGxvd2luZyBjb2RlIHdvcmtzIGFyb3Vu ZCB0aGVzZSBidWdzLiAgKi8KKwogICBpZiAodHpzdHJpbmcpCiAgICAgewotICAgICAgY2hh ciAqdCA9IChjaGFyICopICh0byArIGVudnB0cnMpOwotICAgICAgc3RyY3B5ICh0LCAiVFo9 Iik7Ci0gICAgICBzdHJjYXQgKHQsIHR6c3RyaW5nKTsKLSAgICAgICp0bysrID0gdDsKLSAg ICB9Ci0KLSAgLyogQ29weSB0aGUgb2xkIGVudmlyb24gdmVjdG9yIGVsZW1lbnRzIGludG8g TkVXRU5WLAotICAgICBidXQgZG9uJ3QgY29weSB0aGUgVFogdmFyaWFibGUuCi0gICAgIFNv IHdlIGhhdmUgb25seSBvbmUgZGVmaW5pdGlvbiBvZiBUWiwgd2hpY2ggY2FtZSBmcm9tIFRa U1RSSU5HLiAgKi8KLSAgZm9yIChmcm9tID0gZW52aXJvbjsgKmZyb207IGZyb20rKykKLSAg ICBpZiAoc3RybmNtcCAoKmZyb20sICJUWj0iLCAzKSAhPSAwKQotICAgICAgKnRvKysgPSAq ZnJvbTsKLSAgKnRvID0gMDsKLQotICBlbnZpcm9uID0gbmV3ZW52OwotCi0gIC8qIElmIHdl IGRvIGhhdmUgYSBUWlNUUklORywgTkVXRU5WIHBvaW50cyB0byB0aGUgdmVjdG9yIHNsb3Qg d2hlcmUKLSAgICAgdGhlIFRaIHZhcmlhYmxlIGlzIHN0b3JlZC4gIElmIHdlIGRvIG5vdCBo YXZlIGEgVFpTVFJJTkcsCi0gICAgIFRPIHBvaW50cyB0byB0aGUgdmVjdG9yIHNsb3Qgd2hp Y2ggaGFzIHRoZSB0ZXJtaW5hdGluZyBudWxsLiAgKi8KKyAgICAgIC8qIFRlbXBvcmFyaWx5 IHNldCBUWiB0byBhIHZhbHVlIHRoYXQgbG9hZHMgYSB0eiBmaWxlCisJIGFuZCB0aGF0IGRp ZmZlcnMgZnJvbSB0enN0cmluZy4gICovCisgICAgICBib29sIGVxMCA9IHN0cmNtcCAodHpz dHJpbmcsIHNldF90aW1lX3pvbmVfcnVsZV90elswXSArIHR6ZXFsZW4pID09IDA7CisgICAg ICB4cHV0ZW52IChzZXRfdGltZV96b25lX3J1bGVfdHpbZXEwXSk7CisgICAgfQorICBlbHNl CisgICAgeworICAgICAgLyogVGhlIGltcGxpZWQgdHpzdHJpbmcgaXMgdW5rbm93biwgc28g dGVtcG9yYXJpbHkgc2V0IFRaIHRvCisJIHR3byBkaWZmZXJlbnQgdmFsdWVzIHRoYXQgZWFj aCBsb2FkIGEgdHogZmlsZS4gICovCisgICAgICB4cHV0ZW52IChzZXRfdGltZV96b25lX3J1 bGVfdHpbMF0pOworICAgICAgdHpzZXQgKCk7CisgICAgICB4cHV0ZW52IChzZXRfdGltZV96 b25lX3J1bGVfdHpbMV0pOworICAgIH0KKyAgdHpzZXQgKCk7CisjZW5kaWYKKworICBpZiAo IXR6c3RyaW5nKQorICAgIHsKKyAgICAgIHVuc2V0ZW52ICgiVFoiKTsKKyAgICAgIHR6dmFs YnVmX2luX2Vudmlyb24gPSAwOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIHB0cmRp ZmZfdCB0enN0cmluZ2xlbiA9IHN0cmxlbiAodHpzdHJpbmcpOworCisgICAgICBpZiAodHp2 YWxidWZzaXplIDw9IHR6ZXFsZW4gKyB0enN0cmluZ2xlbikKKwl7CisJICB1bnNldGVudiAo IlRaIik7CisJICB0enZhbGJ1Zl9pbl9lbnZpcm9uID0gMDsKKwkgIHR6dmFsYnVmID0geHBh bGxvYyAodHp2YWxidWYsICZ0enZhbGJ1ZnNpemUsCisJCQkgICAgICB0emVxbGVuICsgdHpz dHJpbmdsZW4gLSB0enZhbGJ1ZnNpemUgKyAxLCAtMSwgMSk7CisJICBtZW1jcHkgKHR6dmFs YnVmLCAiVFo9IiwgdHplcWxlbik7CisJfQorCisgICAgICBzdHJjcHkgKHR6dmFsYnVmICsg dHplcWxlbiwgdHpzdHJpbmcpOworCisgICAgICBpZiAoIXR6dmFsYnVmX2luX2Vudmlyb24p CisJeworCSAgeHB1dGVudiAodHp2YWxidWYpOworCSAgdHp2YWxidWZfaW5fZW52aXJvbiA9 IDE7CisJfQorICAgIH0KIAogI2lmZGVmIExPQ0FMVElNRV9DQUNIRQotICB7Ci0gICAgLyog SW4gU3VuT1MgNC4xLjNfVTEgYW5kIDQuMS40LCBpZiBUWiBoYXMgYSB2YWx1ZSBsaWtlCi0g ICAgICAgIlVTL1BhY2lmaWMiIHRoYXQgbG9hZHMgYSB0eiBmaWxlLCB0aGVuIGNoYW5nZXMg dG8gYSB2YWx1ZSBsaWtlCi0gICAgICAgIlhYWDAiIHRoYXQgZG9lcyBub3QgbG9hZCBhIHR6 IGZpbGUsIGFuZCB0aGVuIGNoYW5nZXMgYmFjayB0bwotICAgICAgIGl0cyBvcmlnaW5hbCB2 YWx1ZSwgdGhlIGxhc3QgY2hhbmdlIGlzIChpbmNvcnJlY3RseSkgaWdub3JlZC4KLSAgICAg ICBBbHNvLCBpZiBUWiBjaGFuZ2VzIHR3aWNlIGluIHN1Y2Nlc3Npb24gdG8gdmFsdWVzIHRo YXQgZG8KLSAgICAgICBub3QgbG9hZCBhIHR6IGZpbGUsIHR6c2V0IGNhbiBkdW1wIGNvcmUg KHNlZSBTdW4gYnVnIzEyMjUxNzkpLgotICAgICAgIFRoZSBmb2xsb3dpbmcgY29kZSB3b3Jr cyBhcm91bmQgdGhlc2UgYnVncy4gICovCi0KLSAgICBpZiAodHpzdHJpbmcpCi0gICAgICB7 Ci0JLyogVGVtcG9yYXJpbHkgc2V0IFRaIHRvIGEgdmFsdWUgdGhhdCBsb2FkcyBhIHR6IGZp bGUKLQkgICBhbmQgdGhhdCBkaWZmZXJzIGZyb20gdHpzdHJpbmcuICAqLwotCWNoYXIgKnR6 ID0gKm5ld2VudjsKLQkqbmV3ZW52ID0gKHN0cmNtcCAodHpzdHJpbmcsIHNldF90aW1lX3pv bmVfcnVsZV90ejEgKyAzKSA9PSAwCi0JCSAgID8gc2V0X3RpbWVfem9uZV9ydWxlX3R6MiA6 IHNldF90aW1lX3pvbmVfcnVsZV90ejEpOwotCXR6c2V0ICgpOwotCSpuZXdlbnYgPSB0ejsK LSAgICAgIH0KLSAgICBlbHNlCi0gICAgICB7Ci0JLyogVGhlIGltcGxpZWQgdHpzdHJpbmcg aXMgdW5rbm93biwgc28gdGVtcG9yYXJpbHkgc2V0IFRaIHRvCi0JICAgdHdvIGRpZmZlcmVu dCB2YWx1ZXMgdGhhdCBlYWNoIGxvYWQgYSB0eiBmaWxlLiAgKi8KLQkqdG8gPSBzZXRfdGlt ZV96b25lX3J1bGVfdHoxOwotCXRvWzFdID0gMDsKLQl0enNldCAoKTsKLQkqdG8gPSBzZXRf dGltZV96b25lX3J1bGVfdHoyOwotCXR6c2V0ICgpOwotCSp0byA9IDA7Ci0gICAgICB9Ci0K LSAgICAvKiBOb3cgVFogaGFzIHRoZSBkZXNpcmVkIHZhbHVlLCBhbmQgdHpzZXQgY2FuIGJl IGludm9rZWQgc2FmZWx5LiAgKi8KLSAgfQotCiAgIHR6c2V0ICgpOwogI2VuZGlmCiB9CkBA IC00Nzk5LDkgKzQ3OTAsNiBAQAogdm9pZAogc3ltc19vZl9lZGl0Zm5zICh2b2lkKQogewot ICBlbnZpcm9uYnVmID0gMDsKLSAgaW5pdGlhbF90eiA9IDA7Ci0KICAgREVGU1lNIChRYnVm ZmVyX2FjY2Vzc19mb250aWZ5X2Z1bmN0aW9ucywgImJ1ZmZlci1hY2Nlc3MtZm9udGlmeS1m dW5jdGlvbnMiKTsKIAogICBERUZWQVJfTElTUCAoImluaGliaXQtZmllbGQtdGV4dC1tb3Rp b24iLCBWaW5oaWJpdF9maWVsZF90ZXh0X21vdGlvbiwKCj09PSBtb2RpZmllZCBmaWxlICdz cmMvZW1hY3MuYycKLS0tIHNyYy9lbWFjcy5jCTIwMTItMTEtMjEgMDQ6NDc6NTUgKzAwMDAK KysrIHNyYy9lbWFjcy5jCTIwMTItMTItMDMgMjA6MDM6MjIgKzAwMDAKQEAgLTUzNSw3ICs1 MzUsNyBAQAogI2lmZGVmIEhBVkVfVFpTRVQKIC8qIEEgdmFsaWQgYnV0IHVubGlrZWx5IHZh bHVlIGZvciB0aGUgVFogZW52aXJvbm1lbnQgdmFsdWUuCiAgICBJdCBpcyBPSyAodGhvdWdo IGEgYml0IHNsb3dlcikgaWYgdGhlIHVzZXIgYWN0dWFsbHkgY2hvb3NlcyB0aGlzIHZhbHVl LiAgKi8KLXN0YXRpYyBjaGFyIGR1bXBfdHpbXSA9ICJVdEMwIjsKK3N0YXRpYyBjaGFyIGNv bnN0IGR1bXBfdHpbXSA9ICJVdEMwIjsKICNlbmRpZgogCiAjaWZuZGVmIE9SRElOQVJZX0xJ TksKQEAgLTcxNyw3ICs3MTcsNyBAQAogCiAjaWZkZWYgR19TTElDRV9BTFdBWVNfTUFMTE9D CiAgIC8qIFRoaXMgaXMgdXNlZCBieSB0aGUgQ3lnd2luIGJ1aWxkLiAgKi8KLSAgc2V0ZW52 ICgiR19TTElDRSIsICJhbHdheXMtbWFsbG9jIiwgMSk7CisgIHhwdXRlbnYgKCJHX1NMSUNF PWFsd2F5cy1tYWxsb2MiKTsKICNlbmRpZgogCiAjaWZkZWYgR05VX0xJTlVYCkBAIC04MDMs OSArODAzLDggQEAKICNpZmRlZiBIQVZFX1BFUlNPTkFMSVRZX0xJTlVYMzIKICAgaWYgKGR1 bXBpbmcgJiYgISBnZXRlbnYgKCJFTUFDU19IRUFQX0VYRUMiKSkKICAgICB7Ci0gICAgICBz dGF0aWMgY2hhciBoZWFwZXhlY1tdID0gIkVNQUNTX0hFQVBfRVhFQz10cnVlIjsKICAgICAg IC8qIFNldCB0aGlzIHNvIHdlIG9ubHkgZG8gdGhpcyBvbmNlLiAgKi8KLSAgICAgIHB1dGVu diAoaGVhcGV4ZWMpOworICAgICAgeHB1dGVudiAoIkVNQUNTX0hFQVBfRVhFQz10cnVlIik7 CiAKICAgICAgIC8qIEEgZmxhZyB0byB0dXJuIG9mZiBhZGRyZXNzIHJhbmRvbWl6YXRpb24g d2hpY2ggaXMgaW50cm9kdWNlZAogICAgICAgICAgaW4gbGludXgga2VybmVsIHNoaXBwZWQg d2l0aCBmZWRvcmEgY29yZSA0ICovCkBAIC0xMzA5LDcgKzEzMDgsNyBAQAogICAgICBkb24n dCBwb2xsdXRlIFZnbG9iYWxfZW52aXJvbm1lbnQuICAqLwogICAvKiBTZXR0aW5nIExBTkcg aGVyZSB3aWxsIGRlZmVhdCB0aGUgc3RhcnR1cCBsb2NhbGUgcHJvY2Vzc2luZy4uLiAgKi8K ICNpZmRlZiBBSVgKLSAgcHV0ZW52ICgiTEFORz1DIik7CisgIHhwdXRlbnYgKCJMQU5HPUMi KTsKICNlbmRpZgogCiAgIGluaXRfYnVmZmVyICgpOwkvKiBJbml0IGRlZmF1bHQgZGlyZWN0 b3J5IG9mIG1haW4gYnVmZmVyLiAgKi8KCj09PSBtb2RpZmllZCBmaWxlICdzcmMvbGlzcC5o JwotLS0gc3JjL2xpc3AuaAkyMDEyLTEyLTAzIDE0OjEzOjA2ICswMDAwCisrKyBzcmMvbGlz cC5oCTIwMTItMTItMDMgMjA6MDc6MTMgKzAwMDAKQEAgLTM1OTQsNiArMzU5NCw3IEBACiBl eHRlcm4gdm9pZCAqeHBhbGxvYyAodm9pZCAqLCBwdHJkaWZmX3QgKiwgcHRyZGlmZl90LCBw dHJkaWZmX3QsIHB0cmRpZmZfdCk7CiAKIGV4dGVybiBjaGFyICp4c3RyZHVwIChjb25zdCBj aGFyICopOworZXh0ZXJuIHZvaWQgeHB1dGVudiAoY29uc3QgY2hhciAqKTsKIAogZXh0ZXJu IGNoYXIgKmVnZXRlbnYgKGNvbnN0IGNoYXIgKik7CiAKCj09PSBtb2RpZmllZCBmaWxlICdz cmMveHRlcm0uYycKLS0tIHNyYy94dGVybS5jCTIwMTItMTItMDEgMjM6MDY6MTQgKzAwMDAK KysrIHNyYy94dGVybS5jCTIwMTItMTItMDMgMjA6MDM6MjIgKzAwMDAKQEAgLTk5MDksMTAg Kzk5MDksNyBAQAogCiAgICAgICAgIC8qIEVtYWNzIGNhbiBvbmx5IGhhbmRsZSBjb3JlIGlu cHV0IGV2ZW50cywgc28gbWFrZSBzdXJlCiAgICAgICAgICAgIEd0ayBkb2Vzbid0IHVzZSBY aW5wdXQgb3IgWGlucHV0MiBleHRlbnNpb25zLiAgKi8KLSAgICAgICAgewotICAgICAgICAg IHN0YXRpYyBjaGFyIGZpeF9ldmVudHNbXSA9ICJHREtfQ09SRV9ERVZJQ0VfRVZFTlRTPTEi OwotICAgICAgICAgIHB1dGVudiAoZml4X2V2ZW50cyk7Ci0gICAgICAgIH0KKwl4cHV0ZW52 ICgiR0RLX0NPUkVfREVWSUNFX0VWRU5UUz0xIik7CiAKICAgICAgICAgLyogV29yayBhcm91 bmQgR0xpYiBidWcgdGhhdCBvdXRwdXRzIGEgZmF1bHR5IHdhcm5pbmcuIFNlZQogICAgICAg ICAgICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTYzNjI3 LiAgKi8KCg== --------------020805030603090107030509--