From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Lennart Borgman Newsgroups: gmane.emacs.bugs Subject: bug#6871: Please make linum-mode per buffer, not per major mode Date: Thu, 19 Aug 2010 06:29:42 +0200 Message-ID: References: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=0016367d595abe8ddc048e25a2af X-Trace: dough.gmane.org 1282192815 15816 80.91.229.12 (19 Aug 2010 04:40:15 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Thu, 19 Aug 2010 04:40:15 +0000 (UTC) Cc: 6871@debbugs.gnu.org To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Thu Aug 19 06:40:13 2010 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1OlwvF-0000XD-7S for geb-bug-gnu-emacs@m.gmane.org; Thu, 19 Aug 2010 06:40:13 +0200 Original-Received: from localhost ([127.0.0.1]:44525 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OlwvE-00087c-KM for geb-bug-gnu-emacs@m.gmane.org; Thu, 19 Aug 2010 00:40:12 -0400 Original-Received: from [140.186.70.92] (port=53219 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Olwu3-000838-SC for bug-gnu-emacs@gnu.org; Thu, 19 Aug 2010 00:39:00 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1Olwu2-0000s5-E9 for bug-gnu-emacs@gnu.org; Thu, 19 Aug 2010 00:38:59 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:48072) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Olwu2-0000ry-CK for bug-gnu-emacs@gnu.org; Thu, 19 Aug 2010 00:38:58 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.69) (envelope-from ) id 1OlwkQ-0002GR-FS; Thu, 19 Aug 2010 00:29:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Lennart Borgman Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 19 Aug 2010 04:29:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 6871 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 6871-submit@debbugs.gnu.org id=B6871.12821921388697 (code B ref 6871); Thu, 19 Aug 2010 04:29:02 +0000 Original-Received: (at 6871) by debbugs.gnu.org; 19 Aug 2010 04:28:58 +0000 Original-Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OlwkM-0002GE-05 for submit@debbugs.gnu.org; Thu, 19 Aug 2010 00:28:58 -0400 Original-Received: from mail-qy0-f172.google.com ([209.85.216.172]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OlwkK-0002G9-3c for 6871@debbugs.gnu.org; Thu, 19 Aug 2010 00:28:56 -0400 Original-Received: by qyk1 with SMTP id 1so2649937qyk.3 for <6871@debbugs.gnu.org>; Wed, 18 Aug 2010 21:30:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:mime-version:received:in-reply-to :references:from:date:message-id:subject:to:cc:content-type; bh=TFaL7BPRyW41pJJ63JhqMfAJBLhb+GpRSvE0q7fO7KI=; b=NN4pF/u54jA9lWjPJk/E0JKkbnAmem42ngr4EMaV8uJcaX8oJaEhc+Uz2k6mm+2g+D 8AQu635T5/w65xkHFXDPx3RrvnE/Z8YamsSmWzYA0SkFXAdcjkPm69UgRlcN31qj9sxU uHIXTulnnPa67eF9T+PcDoGUB0hks3zycPqJ8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; b=p7dtdQ73bFMkUrjFLzWc/DH4a4ntXO+R7qyTqU9EcFCR639/tmL2VVpWZw8JuOACin 3eAY8ol33VGbXI16dw1t/+37zI2GERzJKrEcQGRzCIFtCZKpZqf5tFUdL4LaXd/IteS6 CU1LLxa48+nlf6Erdpv+3XhcJWs2KajUJtEFQ= Original-Received: by 10.229.51.219 with SMTP id e27mr224922qcg.250.1282192202173; Wed, 18 Aug 2010 21:30:02 -0700 (PDT) Original-Received: by 10.229.54.80 with HTTP; Wed, 18 Aug 2010 21:29:42 -0700 (PDT) In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list Resent-Date: Thu, 19 Aug 2010 00:29:02 -0400 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) 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: , Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:39616 Archived-At: --0016367d595abe8ddc048e25a2af Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Wed, Aug 18, 2010 at 9:19 AM, Stefan Monnier wrote: >>>>> I don't think that's going to be sufficient: you'll probably at least >>>>> also want to remove the >>>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0(add-hook 'change-major-mode-hook 'linum-d= elete-overlays nil t) > [...] >>> minor-modes should be made permanent-local), but we need a proper patch >>> for it. >> How about also removing adding linum to change-major-mode-hook? > > Yes, that's what I suggested, isn't it? I was not quite sure. > Please write a patch, test it (after removing the workarounds you > currently use), and send it here. Attached the patch. There are some other changes to linum.el too. The handling in after-change-functions was not optimal. Maybe the doc string for these hook should explain a bit more about how to use it? --0016367d595abe8ddc048e25a2af Content-Type: application/octet-stream; name="linum-multi-major.diff" Content-Disposition: attachment; filename="linum-multi-major.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gd143hq90 Ozs7IGxpbnVtLmVsIC0tLSBkaXNwbGF5IGxpbmUgbnVtYmVycyBpbiB0aGUgbGVmdCBtYXJnaW4K Cjs7IENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KCjs7IEF1dGhvcjogTWFya3VzIFRyaXNrYSA8bWFya3VzLnRyaXNrYUBnbXguYXQ+ Cjs7IE1haW50YWluZXI6IEZTRgo7OyBLZXl3b3JkczogY29udmVuaWVuY2UKCjs7IFRoaXMgZmls ZSBpcyBwYXJ0IG9mIEdOVSBFbWFjcy4KCjs7IEdOVSBFbWFjcyBpcyBmcmVlIHNvZnR3YXJlOiB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cjs7IGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cjs7IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCjs7IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgo7OyBHTlUgRW1h Y3MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKOzsg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQo7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgoKOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCgo7OzsgQ29tbWVudGFyeToKCjs7IERpc3Bs YXkgbGluZSBudW1iZXJzIGZvciB0aGUgY3VycmVudCBidWZmZXIuCjs7Cjs7IFRvZ2dsZSBkaXNw bGF5IG9mIGxpbmUgbnVtYmVycyB3aXRoIE0teCBsaW51bS1tb2RlLiAgVG8gZW5hYmxlCjs7IGxp bmUgbnVtYmVyaW5nIGluIGFsbCBidWZmZXJzLCB1c2UgTS14IGdsb2JhbC1saW51bS1tb2RlLgoK Ozs7IENvZGU6CgooZGVmY29uc3QgbGludW0tdmVyc2lvbiAiMC45eCIpCgooZGVmdmFyIGxpbnVt LW92ZXJsYXlzIG5pbCAiT3ZlcmxheXMgdXNlZCBpbiB0aGlzIGJ1ZmZlci4iKQooZGVmdmFyIGxp bnVtLWF2YWlsYWJsZSBuaWwgIk92ZXJsYXlzIGF2YWlsYWJsZSBmb3IgcmV1c2UuIikKKGRlZnZh ciBsaW51bS1iZWZvcmUtbnVtYmVyaW5nLWhvb2sgbmlsCiAgIkZ1bmN0aW9ucyBydW4gaW4gZWFj aCBidWZmZXIgYmVmb3JlIGxpbmUgbnVtYmVyaW5nIHN0YXJ0cy4iKQoKKG1hcGMgIydtYWtlLXZh cmlhYmxlLWJ1ZmZlci1sb2NhbCAnKGxpbnVtLW92ZXJsYXlzIGxpbnVtLWF2YWlsYWJsZSkpCihw dXQgJ2xpbnVtLW92ZXJsYXlzICAncGVybWFuZW50LWxvY2FsIHQpCihwdXQgJ2xpbnVtLWF2YWls YWJsZSAncGVybWFuZW50LWxvY2FsIHQpCgooZGVmZ3JvdXAgbGludW0gbmlsCiAgIlNob3cgbGlu ZSBudW1iZXJzIGluIHRoZSBsZWZ0IG1hcmdpbi4iCiAgOmdyb3VwICdjb252ZW5pZW5jZSkKCjs7 OyMjI2F1dG9sb2FkCihkZWZjdXN0b20gbGludW0tZm9ybWF0ICdkeW5hbWljCiAgIkZvcm1hdCB1 c2VkIHRvIGRpc3BsYXkgbGluZSBudW1iZXJzLgpFaXRoZXIgYSBmb3JtYXQgc3RyaW5nIGxpa2Ug XCIlN2RcIiwgYGR5bmFtaWMnIHRvIGFkYXB0IHRoZSB3aWR0aAphcyBuZWVkZWQsIG9yIGEgZnVu Y3Rpb24gdGhhdCBpcyBjYWxsZWQgd2l0aCBhIGxpbmUgbnVtYmVyIGFzIGl0cwphcmd1bWVudCBh bmQgc2hvdWxkIGV2YWx1YXRlIHRvIGEgc3RyaW5nIHRvIGJlIHNob3duIG9uIHRoYXQgbGluZS4K U2VlIGFsc28gYGxpbnVtLWJlZm9yZS1udW1iZXJpbmctaG9vaycuIgogIDpncm91cCAnbGludW0K ICA6dHlwZSAnc2V4cCkKCihkZWZmYWNlIGxpbnVtCiAgJygodCA6aW5oZXJpdCAoc2hhZG93IGRl ZmF1bHQpKSkKICAiRmFjZSBmb3IgZGlzcGxheWluZyBsaW5lIG51bWJlcnMgaW4gdGhlIGRpc3Bs YXkgbWFyZ2luLiIKICA6Z3JvdXAgJ2xpbnVtKQoKKGRlZmN1c3RvbSBsaW51bS1kZWxheSBuaWwK ICAiRGVsYXkgdXBkYXRlcyB0byBnaXZlIEVtYWNzIGEgY2hhbmNlIGZvciBvdGhlciBjaGFuZ2Vz LiIKICA6Z3JvdXAgJ2xpbnVtCiAgOnR5cGUgJ2Jvb2xlYW4pCgo7OzsjIyNhdXRvbG9hZAooZGVm aW5lLW1pbm9yLW1vZGUgbGludW0tbW9kZQogICJUb2dnbGUgZGlzcGxheSBvZiBsaW5lIG51bWJl cnMgaW4gdGhlIGxlZnQgbWFyZ2luLiIKICA6bGlnaHRlciAiIiAgICAgICAgICAgICAgICAgICAg ICAgICAgIDsgZm9yIGRlc2t0b3AuZWwKICAoaWYgbGludW0tbW9kZQogICAgICAocHJvZ24KICAg ICAgICAoYWRkLWhvb2sgJ3Bvc3QtY29tbWFuZC1ob29rIChpZiBsaW51bS1kZWxheQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaW51bS1zY2hlZHVsZQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGludW0tdXBkYXRlLWN1cnJlbnQtYnVm ZmVyKSBuaWwgdCkKICAgICAgICAoYWRkLWhvb2sgJ2JlZm9yZS1jaGFuZ2UtZnVuY3Rpb25zICds aW51bS1iZWZvcmUtY2hhbmdlIG5pbCB0KQogICAgICAgIChhZGQtaG9vayAnYWZ0ZXItY2hhbmdl LWZ1bmN0aW9ucyAnbGludW0tYWZ0ZXItY2hhbmdlIG5pbCB0KQogICAgICAgIChhZGQtaG9vayAn d2luZG93LXNjcm9sbC1mdW5jdGlvbnMgJ2xpbnVtLWFmdGVyLXNjcm9sbCBuaWwgdCkKICAgICAg ICA7OyBVc2luZyBib3RoIHdpbmRvdy1zaXplLWNoYW5nZS1mdW5jdGlvbnMgYW5kCiAgICAgICAg Ozsgd2luZG93LWNvbmZpZ3VyYXRpb24tY2hhbmdlLWhvb2sgc2VlbXMgcmVkdW5kYW50LiAtLVN0 ZWYKICAgICAgICA7OyAoYWRkLWhvb2sgJ3dpbmRvdy1zaXplLWNoYW5nZS1mdW5jdGlvbnMgJ2xp bnVtLWFmdGVyLXNpemUgbmlsIHQpCiAgICAgICAgKGFkZC1ob29rICd3aW5kb3ctY29uZmlndXJh dGlvbi1jaGFuZ2UtaG9vawogICAgICAgICAgICAgICAgICA7OyBVcGRhdGUganVzdCB0aGUgc2Vs ZWN0ZWQgd2luZG93CiAgICAgICAgICAgICAgICAgICdsaW51bS11cGRhdGUtc2VsZWN0ZWQtd2lu ZG93IG5pbCB0KQogICAgICAgIChzZXRxIGxpbnVtLWNoYW5nZS1iZWcgMSkKICAgICAgICAobGlu dW0tdXBkYXRlLWN1cnJlbnQtYnVmZmVyKSkKICAgIChyZW1vdmUtaG9vayAncG9zdC1jb21tYW5k LWhvb2sgJ2xpbnVtLXVwZGF0ZS1jdXJyZW50LWJ1ZmZlciB0KQogICAgKHJlbW92ZS1ob29rICdw b3N0LWNvbW1hbmQtaG9vayAnbGludW0tc2NoZWR1bGUgdCkKICAgIDs7IChyZW1vdmUtaG9vayAn d2luZG93LXNpemUtY2hhbmdlLWZ1bmN0aW9ucyAnbGludW0tYWZ0ZXItc2l6ZSB0KQogICAgKHJl bW92ZS1ob29rICd3aW5kb3ctc2Nyb2xsLWZ1bmN0aW9ucyAnbGludW0tYWZ0ZXItc2Nyb2xsIHQp CiAgICAocmVtb3ZlLWhvb2sgJ2JlZm9yZS1jaGFuZ2UtZnVuY3Rpb25zICdsaW51bS1iZWZvcmUt Y2hhbmdlIHQpCiAgICAocmVtb3ZlLWhvb2sgJ2FmdGVyLWNoYW5nZS1mdW5jdGlvbnMgJ2xpbnVt LWFmdGVyLWNoYW5nZSB0KQogICAgKHJlbW92ZS1ob29rICd3aW5kb3ctY29uZmlndXJhdGlvbi1j aGFuZ2UtaG9vayAnbGludW0tdXBkYXRlLXNlbGVjdGVkLXdpbmRvdyB0KQogICAgKGxpbnVtLWRl bGV0ZS1vdmVybGF5cykpKQoocHV0ICdsaW51bS1tb2RlICAgICAgJ3Blcm1hbmVudC1sb2NhbCB0 KQoKOzs7IyMjYXV0b2xvYWQKKGRlZmluZS1nbG9iYWxpemVkLW1pbm9yLW1vZGUgZ2xvYmFsLWxp bnVtLW1vZGUgbGludW0tbW9kZSBsaW51bS1vbikKCihkZWZ1biBsaW51bS1vbiAoKQogICh1bmxl c3MgKG1pbmlidWZmZXJwKQogICAgKGxpbnVtLW1vZGUgMSkpKQoKKGRlZnVuIGxpbnVtLWRlbGV0 ZS1vdmVybGF5cyAoKQogICJEZWxldGUgYWxsIG92ZXJsYXlzIGRpc3BsYXlpbmcgbGluZSBudW1i ZXJzIGZvciB0aGlzIGJ1ZmZlci4iCiAgKG1hcGMgIydkZWxldGUtb3ZlcmxheSBsaW51bS1vdmVy bGF5cykKICAoc2V0cSBsaW51bS1vdmVybGF5cyBuaWwpCiAgKGRvbGlzdCAodyAoZ2V0LWJ1ZmZl ci13aW5kb3ctbGlzdCAoY3VycmVudC1idWZmZXIpIG5pbCB0KSkKICAgIChzZXQtd2luZG93LW1h cmdpbnMgdyAwIChjZHIgKHdpbmRvdy1tYXJnaW5zIHcpKSkpKQoKKGRlZnVuIGxpbnVtLXVwZGF0 ZS1jdXJyZW50LWJ1ZmZlciAoKQogICJVcGRhdGUgbGluZSBudW1iZXJzIGZvciB0aGUgY3VycmVu dCBidWZmZXIuIgogIChsaW51bS11cGRhdGUgKGN1cnJlbnQtYnVmZmVyKSkpCihwdXQgJ2xpbnVt LXVwZGF0ZS1jdXJyZW50LWJ1ZmZlciAncGVybWFuZW50LWxvY2FsLWhvb2sgdCkKCihkZWZ1biBs aW51bS11cGRhdGUgKGJ1ZmZlcikKICAiVXBkYXRlIGxpbmUgbnVtYmVycyBmb3IgYWxsIHdpbmRv d3MgZGlzcGxheWluZyBCVUZGRVIuIgogICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlcgogICAg KHdoZW4gKGFuZCBsaW51bS1tb2RlCiAgICAgICAgICAgICAgIGxpbnVtLWNoYW5nZS1iZWcpCiAg ICAgIChzZXRxIGxpbnVtLWF2YWlsYWJsZSBsaW51bS1vdmVybGF5cykKICAgICAgKHNldHEgbGlu dW0tb3ZlcmxheXMgbmlsKQogICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAobWFwYyAjJ2xp bnVtLXVwZGF0ZS13aW5kb3cKICAgICAgICAgICAgICAoZ2V0LWJ1ZmZlci13aW5kb3ctbGlzdCBi dWZmZXIgbmlsICd2aXNpYmxlKSkpCiAgICAgIChtYXBjICMnZGVsZXRlLW92ZXJsYXkgbGludW0t YXZhaWxhYmxlKQogICAgICAoc2V0cSBsaW51bS1jaGFuZ2UtYmVnIG5pbCkKICAgICAgKHNldHEg bGludW0tYXZhaWxhYmxlIG5pbCkpKSkKCihkZWZ1biBsaW51bS11cGRhdGUtc2VsZWN0ZWQtd2lu ZG93ICgpCiAgIlVwZGF0ZSBsaW5lIG51bWJlcnMgZm9yIHRoZSBzZWxlY3RlZCB3aW5kb3cuIgog IChsZXQgKChoZXJlICh3aW5kb3ctcG9pbnQpKQogICAgICAgIDs7IFdlIG1pZ2h0IGhhdmUgc2Ny b2xsZWQgb3IgY2hhbmdlZCB3aW4gY29uZmlnCiAgICAgICAgKGxpbnVtLWNoYW5nZS1iZWcgMSkp CiAgICAobGludW0tdXBkYXRlLXdpbmRvdyAoc2VsZWN0ZWQtd2luZG93KSkKICAgIChnb3RvLWNo YXIgaGVyZSkpKQoocHV0ICdsaW51bS11cGRhdGUtc2VsZWN0ZWQtd2luZG93ICdwZXJtYW5lbnQt bG9jYWwtaG9vayB0KQoKKGRlZnVuIGxpbnVtLXVwZGF0ZS13aW5kb3cgKHdpbikKICAiVXBkYXRl IGxpbmUgbnVtYmVycyBmb3IgdGhlIHBvcnRpb24gdmlzaWJsZSBpbiB3aW5kb3cgV0lOLiIKICAo Z290by1jaGFyICh3aW5kb3ctc3RhcnQgd2luKSkKICAobGV0ICgobGluZSAobGluZS1udW1iZXIt YXQtcG9zKSkKICAgICAgICAobGltaXQgKHdpbmRvdy1lbmQgd2luIHQpKQogICAgICAgIChmbXQg KGNvbmQgKChzdHJpbmdwIGxpbnVtLWZvcm1hdCkgbGludW0tZm9ybWF0KQogICAgICAgICAgICAg ICAgICAgKChlcSBsaW51bS1mb3JtYXQgJ2R5bmFtaWMpCiAgICAgICAgICAgICAgICAgICAgKGxl dCAoKHcgKGxlbmd0aCAobnVtYmVyLXRvLXN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChjb3VudC1saW5lcyAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkpKSkpCiAg ICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICIlIiAobnVtYmVyLXRvLXN0cmluZyB3KSAiZCIp KSkpKQogICAgICAgICh3aWR0aCAwKSkKICAgICh3aGVuICg8PSBsaW51bS1jaGFuZ2UtYmVnIGxp bWl0KQogICAgICAocnVuLWhvb2tzICdsaW51bS1iZWZvcmUtbnVtYmVyaW5nLWhvb2spCiAgICAg IDs7IENyZWF0ZSBhbiBvdmVybGF5IChvciByZXVzZSBhbiBleGlzdGluZyBvbmUpIGZvciBlYWNo CiAgICAgIDs7IGxpbmUgdmlzaWJsZSBpbiB0aGlzIHdpbmRvdywgaWYgbmVjZXNzYXJ5LgogICAg ICAod2hpbGUgKGFuZCAobm90IChlb2JwKSkgKDw9IChwb2ludCkgbGltaXQpKQogICAgICAgIChs ZXQqICgoc3RyIChpZiBmbXQKICAgICAgICAgICAgICAgICAgICAgICAgKHByb3BlcnRpemUgKGZv cm1hdCBmbXQgbGluZSkgJ2ZhY2UgJ2xpbnVtKQogICAgICAgICAgICAgICAgICAgICAgKGZ1bmNh bGwgbGludW0tZm9ybWF0IGxpbmUpKSkKICAgICAgICAgICAgICAgKHZpc2l0ZWQgKGNhdGNoICd2 aXNpdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvbGlzdCAobyAob3ZlcmxheXMtaW4g KHBvaW50KSAocG9pbnQpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIChlcXVh bC1pbmNsdWRpbmctcHJvcGVydGllcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChvdmVybGF5LWdldCBvICdsaW51bS1zdHIpIHN0cikKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHVubGVzcyAobWVtcSBvIGxpbnVtLW92ZXJsYXlzKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChwdXNoIG8gbGludW0tb3ZlcmxheXMpKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc2V0cSBsaW51bS1hdmFpbGFibGUgKGRlbHEgbyBsaW51bS1hdmFpbGFibGUp KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhyb3cgJ3Zpc2l0ZWQgdCkpKSkpKQog ICAgICAgICAgKHNldHEgd2lkdGggKG1heCB3aWR0aCAobGVuZ3RoIHN0cikpKQogICAgICAgICAg KHVubGVzcyB2aXNpdGVkCiAgICAgICAgICAgIChsZXQgKChvdiAoaWYgKG51bGwgbGludW0tYXZh aWxhYmxlKQogICAgICAgICAgICAgICAgICAgICAgICAgIChtYWtlLW92ZXJsYXkgKHBvaW50KSAo cG9pbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAobW92ZS1vdmVybGF5IChwb3AgbGludW0t YXZhaWxhYmxlKSAocG9pbnQpIChwb2ludCkpKSkpCiAgICAgICAgICAgICAgKHB1c2ggb3YgbGlu dW0tb3ZlcmxheXMpCiAgICAgICAgICAgICAgKG92ZXJsYXktcHV0IG92ICdiZWZvcmUtc3RyaW5n CiAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wZXJ0aXplICIgIiAnZGlzcGxheSBgKCht YXJnaW4gbGVmdC1tYXJnaW4pICxzdHIpKSkKICAgICAgICAgICAgICAob3ZlcmxheS1wdXQgb3Yg J2xpbnVtLXN0ciBzdHIpKSkpCiAgICAgICAgOzsgVGV4dCBtYXkgY29udGFpbiB0aG9zZSBuYXN0 eSBpbnRhbmdpYmxlIHByb3BlcnRpZXMsIGJ1dCB0aGF0CiAgICAgICAgOzsgc2hvdWxkbid0IHBy ZXZlbnQgdXMgZnJvbSBjb3VudGluZyB0aG9zZSBsaW5lcy4KICAgICAgICAobGV0ICgoaW5oaWJp dC1wb2ludC1tb3Rpb24taG9va3MgdCkpCiAgICAgICAgICAoZm9yd2FyZC1saW5lKSkKICAgICAg ICAoc2V0cSBsaW5lICgxKyBsaW5lKSkpCiAgICAgIChzZXQtd2luZG93LW1hcmdpbnMgd2luIHdp ZHRoIChjZHIgKHdpbmRvdy1tYXJnaW5zIHdpbikpKSkpKQoKKGRlZnZhciBsaW51bS1jaGFuZ2Ut YmVnIG5pbAogICJQb3NpdGlvbiBvZiBjaGFuZ2UgYmVnaW5uaW5nLCByZWNvcmRlZCBhZnRlciBj aGFuZ2UuIikKKG1ha2UtdmFyaWFibGUtYnVmZmVyLWxvY2FsICdsaW51bS1jaGFuZ2UtYmVnKQoo cHV0IGxpbnVtLWNoYW5nZS1iZWcgJ3Blcm1hbmVudC1sb2NhbCB0KQoKKGRlZnZhciBsaW51bS1j aGFuZ2VkLXJlZ2lvbi1oYXMtbmV3bGluZSBuaWwpCihkZWZ1biBsaW51bS1iZWZvcmUtY2hhbmdl IChiZWcgZW5kKQogIDs7IFJlY29yZCBuZXcgbGluZXMgaW4gY2hhbmdlZCByZWdpb24gZm9yIGNo ZWNrIGluIGFmdGVyIGNoYW5nZSBmdW5jdGlvbi4KICAod2hlbiAoc3RyaW5nLW1hdGNoLXAgIlxu IiAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIGJlZyBlbmQpKQogICAgKHNldHEgbGlu dW0tY2hhbmdlZC1yZWdpb24taGFzLW5ld2xpbmUgdCkpKQoocHV0ICdsaW51bS1iZWZvcmUtY2hh bmdlICdwZXJtYW5lbnQtbG9jYWwtaG9vayB0KQoKKGRlZnVuIGxpbnVtLWFmdGVyLWNoYW5nZSAo YmVnIGVuZCBsZW4pCiAgOzsgdXBkYXRlIG92ZXJsYXlzIGFmdGVyIG5ld2xpbmVzIGFyZSBkZWxl dGUgb3IgaW5zZXJ0ZWQKICAod2hlbiAob3IgbGludW0tY2hhbmdlZC1yZWdpb24taGFzLW5ld2xp bmUKICAgICAgICAgICAgKHN0cmluZy1tYXRjaC1wICJcbiIgKGJ1ZmZlci1zdWJzdHJpbmctbm8t cHJvcGVydGllcyBiZWcgZW5kKSkpCiAgICAoc2V0cSBsaW51bS1jaGFuZ2VkLXJlZ2lvbi1oYXMt bmV3bGluZSBuaWwpCiAgICAoc2V0cSBsaW51bS1jaGFuZ2UtYmVnIGJlZykpKQoocHV0ICdsaW51 bS1hZnRlci1jaGFuZ2UgJ3Blcm1hbmVudC1sb2NhbC1ob29rIHQpCgooZGVmdW4gbGludW0tYWZ0 ZXItc2Nyb2xsICh3aW4gc3RhcnQpCiAgKHdpdGgtc2VsZWN0ZWQtd2luZG93IHdpbgogICAgKGxp bnVtLXVwZGF0ZS1zZWxlY3RlZC13aW5kb3cpKSkKKHB1dCAnbGludW0tYWZ0ZXItc2Nyb2xsICdw ZXJtYW5lbnQtbG9jYWwtaG9vayB0KQoKOzsgKGRlZnVuIGxpbnVtLWFmdGVyLXNpemUgKGZyYW1l KQo7OyAgIChsaW51bS1hZnRlci1jb25maWcpKQoKKGRlZnVuIGxpbnVtLXNjaGVkdWxlICgpCiAg Ozsgc2NoZWR1bGUgYW4gdXBkYXRlOyB0aGUgZGVsYXkgZ2l2ZXMgRW1hY3MgYSBjaGFuY2UgZm9y IGRpc3BsYXkgY2hhbmdlcwogIChydW4td2l0aC1pZGxlLXRpbWVyIDAgbmlsICMnbGludW0tdXBk YXRlLWN1cnJlbnQtYnVmZmVyKSkKKHB1dCAnbGludW0tc2NoZWR1bGUgJ3Blcm1hbmVudC1sb2Nh bC1ob29rIHQpCgo7OyAoZGVmdW4gbGludW0tYWZ0ZXItY29uZmlnICgpCjs7ICAgKHdhbGstd2lu ZG93cyAobGFtYmRhICh3KSAobGludW0tdXBkYXRlICh3aW5kb3ctYnVmZmVyIHcpKSkgbmlsICd2 aXNpYmxlKSkKCihkZWZ1biBsaW51bS11bmxvYWQtZnVuY3Rpb24gKCkKICAiVW5sb2FkIHRoZSBM aW51bSBsaWJyYXJ5LiIKICAoZ2xvYmFsLWxpbnVtLW1vZGUgLTEpCiAgOzsgY29udGludWUgc3Rh bmRhcmQgdW5sb2FkaW5nCiAgbmlsKQoKKHByb3ZpZGUgJ2xpbnVtKQoKOzsgYXJjaC10YWc6IGRl YTQ1NjMxLWVkM2MtNDg2Ny04YjQ5LTFjNDFjODBhZWM2YQo7OzsgbGludW0uZWwgZW5kcyBoZXJl Cg== --0016367d595abe8ddc048e25a2af--