From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp12.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id 6KF+M5Ual2NwdgAAbAwnHQ (envelope-from ) for ; Mon, 12 Dec 2022 13:12:05 +0100 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp12.migadu.com with LMTPS id KKtYM5Ual2NveAEAauVa8A (envelope-from ) for ; Mon, 12 Dec 2022 13:12:05 +0100 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 61A7011449 for ; Mon, 12 Dec 2022 13:12:05 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p4heV-0006zO-DU; Mon, 12 Dec 2022 07:11:23 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4heS-0006wJ-BB for emacs-orgmode@gnu.org; Mon, 12 Dec 2022 07:11:20 -0500 Received: from whuk14.whukhost.com ([5.77.41.174]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p4heP-0002vB-3i for emacs-orgmode@gnu.org; Mon, 12 Dec 2022 07:11:20 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=heagren.com ; s=default; h=Content-Type:Message-ID:References:In-Reply-To:Subject:Cc:To: From:Date:MIME-Version:Sender:Reply-To:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=Kjkdn9EYf84/GYovcqMTTiOthVK2L6w23v+Yc8DHFLE=; b=C4dOAH8/T7KCD5Dkqf4iSdAtWg UJNNUiO5/qJil339YWhpczUNtoLKXi9BrEYGDnsFTqEUp9qIZvPtEDuDsKUCS/IkZvv8ZZNVJvBi9 ntw+wN5Y60EMMtUHQxsNXbRkvyiLJQo7LFwK/P+vmInFLQaMkbEJTHvLbPxCJ4E4Wg0R8B+J6OfZu ouFCKDSB4lF9hg4WTxKKfvmcQZZsITzZmTGg5aFL1dVIr3fhoEzmWgtBcOmA92kulwo1552HzRIvi 0vYONoLzP/bk3psevyIy4a6MVW1G3+OsItondDGn3HGvZBDCQ5Wct/fCgGIxrMB3InUJhMbWeKA2b iYn/E7eg==; Received: from [::1] (port=39520 helo=whuk14.whukhost.com) by whuk14.whukhost.com with esmtpa (Exim 4.95) (envelope-from ) id 1p4hdf-000y7w-HE; Mon, 12 Dec 2022 12:10:31 +0000 MIME-Version: 1.0 Date: Mon, 12 Dec 2022 12:10:31 +0000 From: hugo@heagren.com To: "Thomas S. Dye" Cc: emacs-orgmode@gnu.org Subject: [PATCH 1] lisp/org-fold.el: Fold header lines in blocks (was: Proposal: folding stacked `#+header:' lines in src blocks) In-Reply-To: <87v8mndluw.fsf@tsdye.online> References: <754970738d6c5abc27c61180d356cd4f@heagren.com> <87v8mndluw.fsf@tsdye.online> User-Agent: Roundcube Webmail/1.5.2 Message-ID: <32864528822dfa0bc8efe3bcf112cbea@heagren.com> X-Sender: hugo@heagren.com Content-Type: multipart/mixed; boundary="=_6d41a1d6c03b3a1c35def9b72e2ac190" X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - whuk14.whukhost.com X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - heagren.com X-Get-Message-Sender-Via: whuk14.whukhost.com: authenticated_id: hugo@heagren.com X-Authenticated-Sender: whuk14.whukhost.com: hugo@heagren.com X-Source: X-Source-Args: X-Source-Dir: Received-SPF: pass client-ip=5.77.41.174; envelope-from=hugo@heagren.com; helo=whuk14.whukhost.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: emacs-orgmode-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1670847125; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=Kjkdn9EYf84/GYovcqMTTiOthVK2L6w23v+Yc8DHFLE=; b=BdwAy9McUBQ8+fmhOwcVkHaxjIBejyDJMhAwrKZe8WsOT5g2eaZ0OpugiFDbYJhTZZfID4 Dbitv50p/NU/1VeOKmHpJ56CEO5iuZx8PthXnhWVIFZuiUKIycAVl+do4amjWYbWLsd6zu y5EUBen+W0rhlPMDVo6OHc+doVSpuRH9daYU4ing/o5RZU1ZoJBAT3yVgK8k6ghPUTnYzB gY3hbvm55n90i3r1G4kU6z1SLdIxDb4p3yZletn3xNxiW204yTh89P8oytIvA5HdHPu9gb w4jeu+JgpDGMa6eVN+x+lxSGkFKGYfBtfhFFFkR2NCRomuc91hEEhXo7s5qkAw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=heagren.com header.s=default header.b="C4dOAH8/"; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=none ARC-Seal: i=1; s=key1; d=yhetil.org; t=1670847125; a=rsa-sha256; cv=none; b=PN6UjSYlU9evgxE85WlBQNTVPRXfb7QWeyG7r/IH4MUDgAaxiH7OmHXv8RCgALMLAdk89T RljTeFpxGf9Dy1Y/+hxgt+0k6cGb1KyikVwB9KXkJq9N+HKh8WLp6fQbDWirfpAM7ypEOC OkZLB6kJcbXQXYngFEBPmevPjNSzUjAXchkAqPAlWNXXVnZ1PNh5uGzUk5O9OtzB9gaPQ4 8nZSEHKPIm8cdMjGJTXe77Adz3mvrdshJN/02U2yyoQUOMvUW2qfM1f/2Xp6BHbL4Txs3q yQeT5OFfNx+vU4Axf/HgEVzw9admhJKu+T52HyBnMXJKQZqFOu24x6TgipwVQw== X-Migadu-Spam-Score: -0.66 X-Spam-Score: -0.66 X-Migadu-Queue-Id: 61A7011449 X-Migadu-Scanner: scn1.migadu.com Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=heagren.com header.s=default header.b="C4dOAH8/"; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=none X-TUID: 6+8d0ZtVqftZ --=_6d41a1d6c03b3a1c35def9b72e2ac190 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2022-12-07 19:58, Thomas S. Dye wrote: > I would use this feature. My stack typically includes headers, a > name, and a caption. It would be nice to fold them all out of sight. Great! I've worked up a patch (well, two patches), attached. Some details of the implementation: - folding blocks now cycles: - everything folded (only top header line visible if present, otherwise only `#+begin' line visible). - all content visible, (header stack folded, top header visible, `#+begin' and `#+end' lines visible). - everything visible - (the second and third are treated as equivalent unless there is more than one header line.) - Folding will happen on pressing (or whatever you have bound) with point: - anywhere on the `#+begin' or `#+end' line - on any header keyword (`#+name:', `#+header', etc.) - anywhere else in the header stack where completion does not otherwise kick in (not quite sure of the exact mechanics on this one, might be dependant on one's configuration)? This includes part-way through header lines. - This seemed to me the most comfortable configuration for use. - Retain the old behaviour of moving point to the beginning of the remaining visible lines when point is hidden by folding. - renames `org-fold--hide-wrapper-toggle' to `org-fold--hide-wrapper-cycle', which seemed more appropriate under the circumstances. - All the tests in testing/lisp/test-org-fold.el pass for me. Some less-than-perfections: - I'm not sure what to do about default block folding (as in, how blocks are folded when a file is first visited). First, I don't have a complete list of things (variables, startup options, etc.) which affect it. Secondly, I'm not sure what the behaviour should be now that blocks can be in up to three folding states. Advice would be appreciated. - I'm not sure what other documentation I should add. Once this patch is stable and people approve of it, I can add a news entry. Should I update the manual at all? Hope this is useful! Hugo --=_6d41a1d6c03b3a1c35def9b72e2ac190 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0002-lisp-org-fold.el-Rename-org-fold-hide-wrapper-toggle.patch Content-Disposition: attachment; filename=0002-lisp-org-fold.el-Rename-org-fold-hide-wrapper-toggle.patch; size=1692 RnJvbSAwNDE4NmRmODcxYjk0ZDRhOTYxYTUxOTNhN2NiMDUwZjJhNGJjMmZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWdvIEhlYWdyZW4gPGh1Z29AaGVhZ3Jlbi5jb20+CkRhdGU6 IE1vbiwgMTIgRGVjIDIwMjIgMTE6MzA6MTAgKzAwMDAKU3ViamVjdDogW1BBVENIIDIvMl0gbGlz cC9vcmctZm9sZC5lbDogUmVuYW1lIGBvcmctZm9sZC0taGlkZS13cmFwcGVyLXRvZ2dsZScKIHRv IGBvcmctZm9sZC0taGlkZS13cmFwcGVyLWN5Y2xlJwoKKiBsaXNwL29yZy1mb2xkLmVsOiByZW5h bWUKKG9yZy1mb2xkLS1oaWRlLXdyYXBwZXItdG9nZ2xlKTogUmVuYW1lIHRvCmBvcmctZm9sZC0t aGlkZS13cmFwcGVyLWN5Y2xlJy4KKG9yZy1mb2xkLWhpZGUtYmxvY2stdG9nZ2xlLCBvcmctZm9s ZC1oaWRlLWRyYXdlci10b2dnbGUpOiBSZXBsYWNlIG9sZApmdW5jdGlvbiBuYW1lIHdpdGggbmV3 LgotLS0KIGxpc3Avb3JnLWZvbGQuZWwgfCA2ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5z ZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saXNwL29yZy1mb2xkLmVs IGIvbGlzcC9vcmctZm9sZC5lbAppbmRleCAyMWNkYzZmYWQuLjM3ZTZkNjQ1MCAxMDA2NDQKLS0t IGEvbGlzcC9vcmctZm9sZC5lbAorKysgYi9saXNwL29yZy1mb2xkLmVsCkBAIC00NzcsNyArNDc3 LDcgQEAgaGVhZGluZyB0byBhcHBlYXIuIgogCiA7Ozs7OyBCbG9ja3MgYW5kIGRyYXdlcnMgdmlz aWJpbGl0eQogCi0oZGVmdW4gb3JnLWZvbGQtLWhpZGUtd3JhcHBlci10b2dnbGUgKGVsZW1lbnQg Y2F0ZWdvcnkgZm9yY2Ugbm8tZXJyb3IpCisoZGVmdW4gb3JnLWZvbGQtLWhpZGUtd3JhcHBlci1j eWNsZSAoZWxlbWVudCBjYXRlZ29yeSBmb3JjZSBuby1lcnJvcikKICAgIkN5Y2xlIHZpc2liaWxp dHkgZm9yIEVMRU1FTlQuCiAKIEVMRU1FTlQgaXMgYSBibG9jayBvciBkcmF3ZXIgdHlwZSBwYXJz ZWQgZWxlbWVudC4gIENBVEVHT1JZIGlzCkBAIC01NzksNyArNTc5LDcgQEAgRUxFTUVOVCBpcyBw cm92aWRlZCwgY29uc2lkZXIgaXQgaW5zdGVhZCBvZiB0aGUgY3VycmVudCBibG9jay4KIAogUmV0 dXJuIGEgbm9uLW5pbCB2YWx1ZSB3aGVuIHRvZ2dsaW5nIGlzIHN1Y2Nlc3NmdWwuIgogICAoaW50 ZXJhY3RpdmUpCi0gIChvcmctZm9sZC0taGlkZS13cmFwcGVyLXRvZ2dsZQorICAob3JnLWZvbGQt LWhpZGUtd3JhcHBlci1jeWNsZQogICAgKG9yIGVsZW1lbnQgKG9yZy1lbGVtZW50LWF0LXBvaW50 KSkgJ2Jsb2NrIGZvcmNlIG5vLWVycm9yKSkKIAogKGRlZnVuIG9yZy1mb2xkLWhpZGUtZHJhd2Vy LXRvZ2dsZSAoJm9wdGlvbmFsIGZvcmNlIG5vLWVycm9yIGVsZW1lbnQpCkBAIC01OTIsNyArNTky LDcgQEAgRUxFTUVOVCBpcyBwcm92aWRlZCwgY29uc2lkZXIgaXQgaW5zdGVhZCBvZiB0aGUgY3Vy cmVudCBkcmF3ZXIuCiAKIFJldHVybiBhIG5vbi1uaWwgdmFsdWUgd2hlbiB0b2dnbGluZyBpcyBz dWNjZXNzZnVsLiIKICAgKGludGVyYWN0aXZlKQotICAob3JnLWZvbGQtLWhpZGUtd3JhcHBlci10 b2dnbGUKKyAgKG9yZy1mb2xkLS1oaWRlLXdyYXBwZXItY3ljbGUKICAgIChvciBlbGVtZW50IChv cmctZWxlbWVudC1hdC1wb2ludCkpICdkcmF3ZXIgZm9yY2Ugbm8tZXJyb3IpKQogCiAoZGVmdW4g b3JnLWZvbGQtaGlkZS1ibG9jay1hbGwgKCkKLS0gCjIuMjAuMQoK --=_6d41a1d6c03b3a1c35def9b72e2ac190 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-lisp-org-fold.el-Fold-header-lines-in-blocks.patch Content-Disposition: attachment; filename=0001-lisp-org-fold.el-Fold-header-lines-in-blocks.patch; size=5403 RnJvbSA2MmVmMTE1MDRmMzYxZDA1OGM1NDI1YWQ1ZTExODRiZTZlMTliZDZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWdvIEhlYWdyZW4gPGh1Z29AaGVhZ3Jlbi5jb20+CkRhdGU6 IE1vbiwgMTIgRGVjIDIwMjIgMTE6MjU6MTQgKzAwMDAKU3ViamVjdDogW1BBVENIIDEvMl0gbGlz cC9vcmctZm9sZC5lbDogRm9sZCBoZWFkZXIgbGluZXMgaW4gYmxvY2tzCgoqIGxpc3Avb3JnLWZv bGQuZWwgKG9yZy1mb2xkLS1oaWRlLXdyYXBwZXItdG9nZ2xlKTogQ3ljbGUgYmxvY2tzCmJldHdl ZW4gdGhyZWUgZm9sZGluZyBzdGF0ZXMsIHBvdGVudGlhbGx5IGluY2x1ZGluZyBoZWFkZXJzIGlu CmZvbGRpbmcuICBVcGRhdGUgZG9jc3RyaW5nIGFjY29yZGluZ2x5LgotLS0KIGxpc3Avb3JnLWZv bGQuZWwgfCA2NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0KIDEgZmlsZSBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9saXNwL29yZy1mb2xkLmVsIGIvbGlzcC9vcmctZm9sZC5lbAppbmRleCAwNWFj NzFlYTQuLjIxY2RjNmZhZCAxMDA2NDQKLS0tIGEvbGlzcC9vcmctZm9sZC5lbAorKysgYi9saXNw L29yZy1mb2xkLmVsCkBAIC00NzgsMTQgKzQ3OCwyNyBAQCBoZWFkaW5nIHRvIGFwcGVhci4iCiA7 Ozs7OyBCbG9ja3MgYW5kIGRyYXdlcnMgdmlzaWJpbGl0eQogCiAoZGVmdW4gb3JnLWZvbGQtLWhp ZGUtd3JhcHBlci10b2dnbGUgKGVsZW1lbnQgY2F0ZWdvcnkgZm9yY2Ugbm8tZXJyb3IpCi0gICJU b2dnbGUgdmlzaWJpbGl0eSBmb3IgRUxFTUVOVC4KKyAgIkN5Y2xlIHZpc2liaWxpdHkgZm9yIEVM RU1FTlQuCiAKIEVMRU1FTlQgaXMgYSBibG9jayBvciBkcmF3ZXIgdHlwZSBwYXJzZWQgZWxlbWVu dC4gIENBVEVHT1JZIGlzCiBlaXRoZXIgYGJsb2NrJyBvciBgZHJhd2VyJy4gIFdoZW4gRk9SQ0Ug aXMgYG9mZicsIHNob3cgdGhlIGJsb2NrCiBvciBkcmF3ZXIuICBJZiBpdCBpcyBub24tbmlsLCBo aWRlIGl0IHVuY29uZGl0aW9uYWxseS4gIFRocm93IGFuCiBlcnJvciB3aGVuIG5vdCBhdCBhIGJs b2NrIG9yIGRyYXdlciwgdW5sZXNzIE5PLUVSUk9SIGlzIG5vbi1uaWwuCiAKLVJldHVybiBhIG5v bi1uaWwgdmFsdWUgd2hlbiB0b2dnbGluZyBpcyBzdWNjZXNzZnVsLiIKK0EgcHJvcGVydHkgZHJh d2VyIHdpbGwgY3ljbGUgYmV0d2VlbiBvcGVuIGFuZCBjbG9zZWQgc3RhdGVzLgorCitBIGJsb2Nr IHdpdGggbm90IGV4dHJhIGhlYWRlciBhcmd1bWVudHMgKGxpbmVzIGJlZ2lubmluZworYCMraGVh ZGVyOicsIGAjK25hbWU6JyBldGMuIGRpcmVjdGx5IGFib3ZlIGl0KSB3aWxsIGN5Y2xlIGJldHdl ZW4KK29wZW4gYW5kIGNsb3NlZCBzdGF0ZXMuICBBIGJsb2NrIHdpdGggc3VjaCBoZWFkZXJzIHdp bGwgY3ljbGU6CistIGV2ZXJ5dGhpbmcgY2xvc2VkICh3aXRoIG9ubHkgdGhlIHRvcCBoZWFkZXIg dmlzaWJsZSkKKy0gaGVhZGVyIHN0YWNrIGZvbGRlZCAodG9wIGhlYWRlciB2aXNpYmxlLCBvdGhl ciBoZWFkZXJzIGhpZGRlbiwgYm9keQorICBhbmQgY29udGVudCBvZiBibG9jayB2aXNpYmxlKQor LSBldmVyeXRoaW5nIG9wZW4KKworV2hlbiB0aGVyZSBpcyBvbmx5IG9uZSBoZWFkZXIgYXJndW1l bnQsIG5vIGRpc3RpbmN0aW9uIGlzIG1hZGUKK2JldHdlZW4gdGhlIHRoZSBzZWNvbmQgYW5kIHRo aXJkIHN0YXRlcy4KKworUmV0dXJuIGEgbm9uLW5pbCB2YWx1ZSB3aGVuIGN5Y2xpbmcgaXMgc3Vj Y2Vzc2Z1bC4iCiAgIChsZXQgKCh0eXBlIChvcmctZWxlbWVudC10eXBlIGVsZW1lbnQpKSkKICAg ICAoY29uZAogICAgICAoKG1lbXEgdHlwZQpAQCAtNDk1LDI4ICs1MDgsNTYgQEAgUmV0dXJuIGEg bm9uLW5pbCB2YWx1ZSB3aGVuIHRvZ2dsaW5nIGlzIHN1Y2Nlc3NmdWwuIgogICAgICAgICAgICAg ICAgICAgICAgICAgY29tbWVudC1ibG9jayBkeW5hbWljLWJsb2NrIGV4YW1wbGUtYmxvY2sgZXhw b3J0LWJsb2NrCiAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZS1ibG9jayBzcGVjaWFsLWJs b2NrIHNyYy1ibG9jayB2ZXJzZS1ibG9jaykpCiAgICAgICAgICAgICAgIChfIChlcnJvciAiVW5r bm93biBjYXRlZ29yeTogJVMiIGNhdGVnb3J5KSkpKQotICAgICAgKGxldCogKChwb3N0IChvcmct ZWxlbWVudC1wcm9wZXJ0eSA6cG9zdC1hZmZpbGlhdGVkIGVsZW1lbnQpKQorICAgICAgKGxldCog KChwb3N0IChvcmctZWxlbWVudC1wcm9wZXJ0eSA6cG9zdC1hZmZpbGlhdGVkIGVsZW1lbnQpKSA7 IGJvbCBvZiBiZWdpbl94CisgICAgICAgICAgICAgKGJlZ2luIChvcmctZWxlbWVudC1wcm9wZXJ0 eSA6YmVnaW4gZWxlbWVudCkpICAgICAgICAgIDsgYm9sIG9mIGZpcnN0IGhlYWRlcgorICAgICAg ICAgICAgIChjb250ZW50LWJlZ2luICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA7IGJvbCBvZiBibG9jayBjb250ZW50CisgICAgICAgICAgICAgICgxKyAoc2F2ZS1leGN1 cnNpb24gKGdvdG8tY2hhciBwb3N0KSAobGluZS1lbmQtcG9zaXRpb24pKSkpCisgICAgICAgICAg ICAgKHN0YXRlCisgICAgICAgICAgICAgIChjb25kCisgICAgICAgICAgICAgICA7OyBFdmVyeXRo aW5nIGlzIGZvbGRlZAorICAgICAgICAgICAgICAgKChvcmctZm9sZC1mb2xkZWQtcCBjb250ZW50 LWJlZ2luICdibG9jaykgJ2FsbCkKKyAgICAgICAgICAgICAgIDs7IEV2ZXJ5dGhpbmcgaXMgb3Bl bgorICAgICAgICAgICAgICAgKHQgJ25vdGhpbmcpKSkKICAgICAgICAgICAgICAoc3RhcnQgKHNh dmUtZXhjdXJzaW9uCi0gICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBwb3N0KQorICAg ICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIKKyAgICAgICAgICAgICAgICAgICAgICAgKGlm IChlcXVhbCBjYXRlZ29yeSAnYmxvY2spCisgICAgICAgICAgICAgICAgICAgICAgICAgICAocGNh c2Ugc3RhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgSWYgdGhlcmUgYXJlIG5v IGhlYWRlcnMsIHN0YXJ0IHVuZm9sZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7 OyBmcm9tIHRoZSBjaGFyIGJlZm9yZSB0aGUgY2hhciBhdCBib2wKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOzsgb2YgYGJlZ2luX3gnLCBzbyB0aGF0IGBiZWdpbl94JyBpcworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7OyBkaXNwbGF5ZWQgYWZ0ZXIgdW5mb2xkaW5nLiBPdGhl cndpc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgYmVnaW4gdW5mb2xkaW5nIGZy b20gYm9sIG9mIHRoYXQgbGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhbGwg KGlmICg9IHBvc3QgYmVnaW4pIHBvc3QgKDEtIHBvc3QpKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKCdub3RoaW5nIGJlZ2luKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0 KSkKICAgICAgICAgICAgICAgICAgICAgICAobGluZS1lbmQtcG9zaXRpb24pKSkKICAgICAgICAg ICAgICAoZW5kIChzYXZlLWV4Y3Vyc2lvbgotICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFy IChvcmctZWxlbWVudC1wcm9wZXJ0eSA6ZW5kIGVsZW1lbnQpKQorICAgICAgICAgICAgICAgICAg ICAoZ290by1jaGFyCisgICAgICAgICAgICAgICAgICAgICAoaWYgKGVxdWFsIGNhdGVnb3J5ICdi bG9jaykKKyAgICAgICAgICAgICAgICAgICAgICAgICAocGNhc2Ugc3RhdGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICgnYWxsIChvcmctZWxlbWVudC1wcm9wZXJ0eSA6ZW5kIGVsZW1lbnQp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdub3RoaW5nIChvcmctZWxlbWVudC1wcm9w ZXJ0eSA6ZW5kIGVsZW1lbnQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKG9yZy1lbGVtZW50 LXByb3BlcnR5IDplbmQgZWxlbWVudCkpKQogICAgICAgICAgICAgICAgICAgICAoc2tpcC1jaGFy cy1iYWNrd2FyZCAiIFx0XG4iKQogICAgICAgICAgICAgICAgICAgICAobGluZS1lbmQtcG9zaXRp b24pKSkpCiAgICAgICAgIDs7IERvIG5vdGhpbmcgd2hlbiBub3QgYmVmb3JlIG9yIGF0IHRoZSBi bG9jayBvcGVuaW5nIGxpbmUgb3IKICAgICAgICAgOzsgYXQgdGhlIGJsb2NrIGNsb3NpbmcgbGlu ZS4KICAgICAgICAgKHVubGVzcyAobGV0ICgoZW9sIChsaW5lLWVuZC1wb3NpdGlvbikpKQotICAg ICAgICAgICAgICAgICAgKGFuZCAoPiBlb2wgc3RhcnQpICgvPSBlb2wgZW5kKSkpCisgICAgICAg ICAgICAgICAgICAoYW5kICg+IGVvbCBjb250ZW50LWJlZ2luKSAoLz0gZW9sIGVuZCkpKQogICAg ICAgICAgIChvcmctZm9sZC1yZWdpb24gc3RhcnQgZW5kCi0gICAgICAgICAgICAgICAgICAgKGNv bmQgKChlcSBmb3JjZSAnb2ZmKSBuaWwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGZvcmNl IHQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgKChvcmctZm9sZC1mb2xkZWQtcCBzdGFydCBj YXRlZ29yeSkgbmlsKQotICAgICAgICAgICAgICAgICAgICAgICAgICh0IHQpKQotICAgICAgICAg ICAgICAgICAgIGNhdGVnb3J5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmQgKChl cSBmb3JjZSAnb2ZmKSBuaWwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9y Y2UgdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgob3JnLWZvbGQtZm9sZGVk LXAgc3RhcnQgY2F0ZWdvcnkpIG5pbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICh0IHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkpCiAgICAgICAgICAg OzsgV2hlbiB0aGUgYmxvY2sgaXMgaGlkZGVuIGF3YXksIG1ha2Ugc3VyZSBwb2ludCBpcyBsZWZ0 IGluCiAgICAgICAgICAgOzsgYSB2aXNpYmxlIHBhcnQgb2YgdGhlIGJ1ZmZlci4KICAgICAgICAg ICAod2hlbiAoaW52aXNpYmxlLXAgKG1heCAoMS0gKHBvaW50KSkgKHBvaW50LW1pbikpKQotICAg ICAgICAgICAgKGdvdG8tY2hhciBwb3N0KSkKKyAgICAgICAgICAgIDs7IFRoZSBvbmx5IHN0YXRl IHRyYW5zaXRpb24gd2hpY2ggaGlkZXMgcG9pbnQgaXMgZnJvbQorICAgICAgICAgICAgOzsgZXZl cnl0aGluZyBvcGVuIHRvIGV2ZXJ5dGhpbmcgZm9sZGVkLiBJbiB0aGlzIGNhc2UsIHRoZQorICAg ICAgICAgICAgOzsgYmVzdCBwbGFjZSB0byBsZWF2ZSBwb2ludCBpcyBhdCBib2wgb2YgZmlyc3Qg dmlzaWJsZQorICAgICAgICAgICAgOzsgbGluZSwgd2hpY2ggaXMgYGJlZ2luJy4KKyAgICAgICAg ICAgIChnb3RvLWNoYXIgYmVnaW4pKQogICAgICAgICAgIDs7IFNpZ25hbCBzdWNjZXNzLgogICAg ICAgICAgIHQpKSkKICAgICAgKG5vLWVycm9yIG5pbCkKLS0gCjIuMjAuMQoK --=_6d41a1d6c03b3a1c35def9b72e2ac190--