From unknown Wed Jun 18 00:26:52 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#73724 <73724@debbugs.gnu.org> To: bug#73724 <73724@debbugs.gnu.org> Subject: Status: [PATCH] Add folding support for begin and end macros Reply-To: bug#73724 <73724@debbugs.gnu.org> Date: Wed, 18 Jun 2025 07:26:52 +0000 retitle 73724 [PATCH] Add folding support for begin and end macros reassign 73724 auctex submitter 73724 Paul Nelson severity 73724 normal tag 73724 patch thanks From debbugs-submit-bounces@debbugs.gnu.org Wed Oct 09 16:37:41 2024 Received: (at submit) by debbugs.gnu.org; 9 Oct 2024 20:37:41 +0000 Received: from localhost ([127.0.0.1]:57756 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sydRF-0005qM-GC for submit@debbugs.gnu.org; Wed, 09 Oct 2024 16:37:41 -0400 Received: from lists.gnu.org ([209.51.188.17]:58350) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sydRD-0005qE-Ei for submit@debbugs.gnu.org; Wed, 09 Oct 2024 16:37:40 -0400 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 1sydR2-0006xz-Od for bug-auctex@gnu.org; Wed, 09 Oct 2024 16:37:28 -0400 Received: from mail-io1-xd31.google.com ([2607:f8b0:4864:20::d31]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sydR0-00012B-Uc for bug-auctex@gnu.org; Wed, 09 Oct 2024 16:37:28 -0400 Received: by mail-io1-xd31.google.com with SMTP id ca18e2360f4ac-835393b3c05so5822139f.2 for ; Wed, 09 Oct 2024 13:37:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1728506245; x=1729111045; darn=gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=RedfrxBdnvstJ0HXdUNpwnuObOwxlIqco4d99KkQDes=; b=RHmP/ps/SjZq8pxoCaQy9TY+b6O57Sb02lohr5Z2bF2ayaU8syshrThpJReTwpZTYH /SRULBmd1xZZROn/XGV/m0LJ6CDosg+vVLnY36JjAhtNjbk1qc/8sn0Q6ukzaj9oj1BO kubq/p4r28+VbYk9roOKzcHH4O+BFLtG3vkbMUwN9VGyalHkMTre5nOiD200XH4S9LD5 pV99EzeBC5/gME96p8XwXhMeaCn0COyeVbz3WPLtLkDkqfHs9Lh+IToYsX+UfSVeDVRr gcIVqjWC0dccF+eOGyrmW10d/cDAz8zdIfnK4JhoVzdNkLRbgkY5dfT16e+PHZsonDBJ IIyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728506245; x=1729111045; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=RedfrxBdnvstJ0HXdUNpwnuObOwxlIqco4d99KkQDes=; b=qvfhZoglWD36OYdHoJYxN86yxiU/Gw/r2jKhEyNDRcKNbEstQLp1jaIdJu7eurv6AN 3N5X1Ml3j3IHJ0fxDe6s0Bk6NwN36Gab9VBBjR/eqHvNFHthHndHPUuBBwTKqITb3Oaj KaRu18B2TO9nU+fiGNLhppZs6wBG+/MmH2CeZyyroUDUnFXa/M8D+v51E4VI/yw15WMR 4H+I18f44Qw2O6p32AVeh3/l8Bv5WMTI/BiSrWLA1GsWAETBhvBmlYUt5LUD8zVqLaA2 wG2VGpwC8RpagmRCL9Cyv9MiCdv9dFqwnEUUCY4CCiuqlMzlWZlq0JGepRcNVfECTwGP VL5g== X-Gm-Message-State: AOJu0YzUlczIjPWxtnODQf1rZ6hpN7W2xvTheIkOONo2ePSTuD9na+mS gXEnkgbYhOs+uaqkP0TGxoYVby85D6bsPUS8E51miuxFT4AtmHXOxLq+zm8JG3aGsZ8ufhKDnF4 IkJEQ9i2/9z+Af1WQFciXiDEjzs8RpC9I X-Google-Smtp-Source: AGHT+IHNKAJ7/rVVMa5ACvzxduX2aNY8eUmfl1S1rUBogT33QxSRsG9yql+gdBUytC8Mtugi3xfd31aXP939MSgMh3E= X-Received: by 2002:a05:6e02:138e:b0:3a0:8c5f:90d8 with SMTP id e9e14a558f8ab-3a397cf5374mr36428425ab.6.1728506245337; Wed, 09 Oct 2024 13:37:25 -0700 (PDT) MIME-Version: 1.0 From: Paul Nelson Date: Wed, 9 Oct 2024 22:37:14 +0200 Message-ID: Subject: [PATCH] Add folding support for begin and end macros To: bug-auctex@gnu.org Content-Type: multipart/mixed; boundary="000000000000bef48b062411380c" Received-SPF: pass client-ip=2607:f8b0:4864:20::d31; envelope-from=ultrono@gmail.com; helo=mail-io1-xd31.google.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, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) --000000000000bef48b062411380c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable This patch supports the folding of \begin{...} and \end{...} macros. The naive way to attempt such folding in AUCTeX via string specifications in TeX-fold-macro-spec-list has many drawbacks. I would be happy to elaborate upon these, but do not do so in this message. This patch adds function specifications to TeX-fold-macro-spec-list and a new user-facing option TeX-fold-begin-end-spec-list that controls how to fold begin/end arguments. To get a flavor, see the screenshots at https://github.com/ultronozm/czm-tex-fold.el (but let me note that I've streamlined the code while preparing this patch). I'll illustrate here with some examples: - If the option TeX-fold-begin-end-spec-list is nil, then behavior is as be= fore. - If the option contains an item such as (("=E2=86=B4" . "=E2=86=B2") ("itemize" "enumerate" "description" "fram= e")) then, e.g., \begin{enumerate} and \end{enumerate} fold to =E2=86=B4 and = =E2=86=B2, respectively. - If the option contains an item such as ((TeX-fold-format-theorem-environment . "=E2=97=BC") ("note" ("theorem" "thm"))) then - \begin{note} folds to "Note", - \begin{theorem} and \begin{thm} fold to "Theorem", - \begin{theorem}[Foo] and \begin{thm}[Foo] fold to "Theorem (Foo)". - \end{note}, etc., fold to "=E2=97=BC". I've supplied what I believe to be reasonable defaults (attempting to err on the conservative side), but would welcome any feedback. Thanks, best, Paul --000000000000bef48b062411380c Content-Type: application/octet-stream; name="0001-Add-folding-support-for-begin-and-end-macros.patch" Content-Disposition: attachment; filename="0001-Add-folding-support-for-begin-and-end-macros.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m22bwn4u0 RnJvbSBlOGU0NGIzODU5M2JiODlmNWMxMjE1NjU1MTNmMmZjNTgxY2E1ODk0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIE5lbHNvbiA8dWx0cm9ub0BnbWFpbC5jb20+CkRhdGU6 IFNhdCwgNSBPY3QgMjAyNCAxNDo1MTozMiArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBmb2xk aW5nIHN1cHBvcnQgZm9yIGJlZ2luIGFuZCBlbmQgbWFjcm9zCgoqIHRleC1mb2xkLmVsIChUZVgt Zm9sZC1tYWNyby1zcGVjLWxpc3QpOiBBZGQgYmVnaW4gYW5kIGVuZAplbnRyaWVzLgooVGVYLWZv bGQtYmVnaW4tZGlzcGxheSwgVGVYLWZvbGQtZW5kLWRpc3BsYXkpOiBOZXcgZnVuY3Rpb25zLAph ZGRlZCBhYm92ZSBhcyBlbnRyaWVzLgooVGVYLWZvbGQtLWhlbHBlci1kaXNwbGF5KTogTmV3IGhl bHBlciBmdW5jdGlvbi4KKFRlWC1mb2xkLWJlZ2luLWVuZC1zcGVjLWxpc3QpOiBOZXcgdXNlciBv cHRpb24sIHVzZWQgYnkKVGVYLWZvbGQtYmVnaW4tZGlzcGxheSBhbmQgVGVYLWZvbGQtZW5kLWRp c3BsYXkuCihUZVgtZm9sZC1mb3JtYXQtdGl0bGVkLWJsb2NrLApUZVgtZm9sZC1mb3JtYXQtdGl0 bGVkLWFsZXJ0YmxvY2ssClRlWC1mb2xkLWZvcm1hdC10aGVvcmVtLWVudmlyb25tZW50KTogTmV3 IGZ1bmN0aW9ucyB1c2VkIGluIHRoZQpkZWZhdWx0IHZhbHVlIG9mIHRoZSBuZXcgdXNlciBvcHRp b24uCgoqIGF1Y3RleC50ZXhpIChGb2xkaW5nIE1hY3JvcyBhbmQgRW52aXJvbm1lbnRzKTogRG9j dW1lbnQgdGhlCm5ldyB1c2VyIG9wdGlvbi4KLS0tCiBkb2MvYXVjdGV4LnRleGkgfCAgIDcgKysr CiB0ZXgtZm9sZC5lbCAgICAgfCAxNTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDE2MiBpbnNlcnRpb25zKCspCgpkaWZm IC0tZ2l0IGEvZG9jL2F1Y3RleC50ZXhpIGIvZG9jL2F1Y3RleC50ZXhpCmluZGV4IGQ4ZTkyZTgw Li4zYmQ4ZWViNiAxMDA2NDQKLS0tIGEvZG9jL2F1Y3RleC50ZXhpCisrKyBiL2RvYy9hdWN0ZXgu dGV4aQpAQCAtMjg4MCw2ICsyODgwLDEzIEBAIHJlcGxhY2VtZW50IHNwZWNpZmllciBnaXZlbiBi eSB0aGUgZGVmYXVsdCB2YWx1ZSBvZgogQGNvZGV7VGVYLWZvbGQtbWFjcm8tc3BlYy1saXN0fSku CiBAZW5kIGRlZm9wdAogCitAZGVmb3B0IFRlWC1mb2xkLWJlZ2luLWVuZC1zcGVjLWxpc3QKK0xp c3Qgb2YgcmVwbGFjZW1lbnQgc3BlY2lmaWVycyBmb3IgQHNhbXB7XGJlZ2luQHsuLi5AfX0gYW5k CitAc2FtcHtcZW5key4uLkB9fSBtYWNyb3MgKGZvciB0aGUgcmVwbGFjZW1lbnQgc3BlY2lmaWVy cyBnaXZlbiBieSB0aGUKK2RlZmF1bHQgdmFsdWUgb2YgQGNvZGV7VGVYLWZvbGQtbWFjcm8tc3Bl Yy1saXN0fSkuICBTZWUgdGhlIGRvYyBzdHJpbmcgZm9yCitkZXRhaWxzLgorQGVuZCBkZWZvcHQK KwogQG5vZGUgT3V0bGluZQogQHNlY3Rpb24gT3V0bGluaW5nIHRoZSBEb2N1bWVudAogQGNpbmRl eCBPdXRsaW5pbmcKZGlmZiAtLWdpdCBhL3RleC1mb2xkLmVsIGIvdGV4LWZvbGQuZWwKaW5kZXgg YzlmNjViNTkuLjE0YjJhMDA2IDEwMDY0NAotLS0gYS90ZXgtZm9sZC5lbAorKysgYi90ZXgtZm9s ZC5lbApAQCAtODMsNiArODMsOCBAQCBtYWNyb3MsIGBtYXRoJyBmb3IgbWF0aCBtYWNyb3MgYW5k IGBjb21tZW50JyBmb3IgY29tbWVudHMuIgogICAgICgiVE0iICAoInRleHR0cmFkZW1hcmsiKSkK ICAgICAoVGVYLWZvbGQtYWxlcnQtZGlzcGxheSAoImFsZXJ0IikpCiAgICAgKFRlWC1mb2xkLXRl eHRjb2xvci1kaXNwbGF5ICgidGV4dGNvbG9yIikpCisgICAgKFRlWC1mb2xkLWJlZ2luLWRpc3Bs YXkgKCJiZWdpbiIpKQorICAgIChUZVgtZm9sZC1lbmQtZGlzcGxheSAoImVuZCIpKQogICAgICgx ICgicGFydCIgImNoYXB0ZXIiICJzZWN0aW9uIiAic3Vic2VjdGlvbiIgInN1YnN1YnNlY3Rpb24i CiAgICAgICAgICJwYXJhZ3JhcGgiICJzdWJwYXJhZ3JhcGgiCiAgICAgICAgICJwYXJ0KiIgImNo YXB0ZXIqIiAic2VjdGlvbioiICJzdWJzZWN0aW9uKiIgInN1YnN1YnNlY3Rpb24qIgpAQCAtNjE1 LDYgKzYxNyw4IEBAIFJldHVybiBub24tbmlsIGlmIGEgY29tbWVudCB3YXMgZm91bmQgYW5kIGZv bGRlZCwgbmlsIG90aGVyd2lzZS4iCiAKIDs7OyBEaXNwbGF5IGZ1bmN0aW9ucwogCis7Ozs7IHRl eHRjb2xvcgorCiAoZGVmdW4gVGVYLWZvbGQtdGV4dGNvbG9yLWRpc3BsYXkgKGNvbG9yIHRleHQg JnJlc3QgX2FyZ3MpCiAgICJGb2xkIGRpc3BsYXkgZm9yIGEgXFx0ZXh0Y29sb3J7Q09MT1J9e1RF WFR9IG1hY3JvLiIKICAgKHdpdGgtdGVtcC1idWZmZXIKQEAgLTYyNCw2ICs2MjgsOCBAQCBSZXR1 cm4gbm9uLW5pbCBpZiBhIGNvbW1lbnQgd2FzIGZvdW5kIGFuZCBmb2xkZWQsIG5pbCBvdGhlcndp c2UuIgogICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1idWZmZXIpKQogICAgIChidWZm ZXItc3RyaW5nKSkpCiAKKzs7OzsgYWxlcnQKKwogKGRlZmN1c3RvbSBUZVgtZm9sZC1hbGVydC1j b2xvciAicmVkIgogICAiQ29sb3IgZm9yIGFsZXJ0IHRleHQuIgogICA6dHlwZSAnY29sb3IKQEAg LTYzOCw2ICs2NDQsMTU1IEBAIFJldHVybiBub24tbmlsIGlmIGEgY29tbWVudCB3YXMgZm91bmQg YW5kIGZvbGRlZCwgbmlsIG90aGVyd2lzZS4iCiAgICAgICAgICAgICAgICAgICAgICAgIChjdXJy ZW50LWJ1ZmZlcikpCiAgICAgKGJ1ZmZlci1zdHJpbmcpKSkKIAorOzs7OyBiZWdpbi9lbmQKKwor KGRlZmN1c3RvbSBUZVgtZm9sZC1iZWdpbi1lbmQtc3BlYy1saXN0CisgICcoKCgi4oa0IiAuICLi hrIiKQorICAgICAoIml0ZW1pemUiICJlbnVtZXJhdGUiICJkZXNjcmlwdGlvbiIgImZyYW1lIikp CisgICAgKChUZVgtZm9sZC1mb3JtYXQtdGl0bGVkLWJsb2NrIC4gIuKXvCIpCisgICAgICgiYmxv Y2siKSkKKyAgICAoKFRlWC1mb2xkLWZvcm1hdC10aXRsZWQtYWxlcnRibG9jayAuICLil7wiKQor ICAgICAoImFsZXJ0YmxvY2siKSkKKyAgICAoKFRlWC1mb2xkLWZvcm1hdC10aGVvcmVtLWVudmly b25tZW50IC4gIuKWoSIpCisgICAgICgicHJvb2YiKSkKKyAgICAoKFRlWC1mb2xkLWZvcm1hdC10 aGVvcmVtLWVudmlyb25tZW50IC4gIuKXvCIpCisgICAgICgiYWJzdHJhY3QiCisgICAgICAiYWNr bm93bGVkZ21lbnQiCisgICAgICAiYWxnb3JpdGhtIgorICAgICAgImFzc3VtcHRpb25zIgorICAg ICAgImNsYWltIgorICAgICAgImNvbW1lbnRhcnkiCisgICAgICAiZmFjdCIKKyAgICAgICJub3Rl IgorICAgICAgInF1ZXN0aW9ucyIKKyAgICAgICgiYW5zd2VyIiAiYW5zIikKKyAgICAgICgiY29u Y2x1c2lvbiIgImNvbmMiKQorICAgICAgKCJjb25qZWN0dXJlIiAiY29uaiIpCisgICAgICAoImNv cm9sbGFyeSIgImNvciIpCisgICAgICAoImNyaXRlcmlvbiIgImNyaXQiKQorICAgICAgKCJkZWZp bml0aW9uIiAiZGVmIiAiZGVmbiIpCisgICAgICAoImV4YW1wbGUiICJleCIpCisgICAgICAoImV4 ZXJjaXNlIiAiZXhlciIpCisgICAgICAoImxlbW1hIiAibGVtIikKKyAgICAgICgibm90YXRpb24i ICJub3QiKQorICAgICAgKCJwcm9ibGVtIiAicHJvYiIpCisgICAgICAoInByb3Bvc2l0aW9uIiAi cHJvcCIpCisgICAgICAoInF1ZXN0aW9uIiAicXVlcyIpCisgICAgICAoInJlbWFyayIgInJlbSIg InJtayIpCisgICAgICAoInN1bW1hcnkiICJzdW0iKQorICAgICAgKCJ0ZXJtaW5vbG9neSIgInRl cm0iKQorICAgICAgKCJ0aGVvcmVtIiAidGhtIikpKSkKKyAgIlJlcGxhY2VtZW50IHNwZWNpZmll ciBsaXN0IGZvciBgVGVYLWZvbGQtKi1kaXNwbGF5JywgKiA9IGJlZ2luIG9yIGVuZC4KKworRWFj aCBpdGVtIGlzIGEgbGlzdCBjb25zaXN0aW5nIG9mIHR3byBlbGVtZW50cy4KKworVGhlIGZpcnN0 IGVsZW1lbnQgaXMgYSBjb25zIGNlbGwsIHdpdGggY2FyIGFuZCBjZHIgdGhlIGRpc3BsYXkKK3Nw ZWNpZmljYXRpb25zIGZvciBcXGJlZ2luey4uLn0gYW5kIFxcZW5key4uLn0gIG1hY3JvcywgcmVz cGVjdGl2ZWx5LgorRWFjaCBzcGVjaWZpY2F0aW9uIGlzIGVpdGhlcgorCisgIC0gYSBzdHJpbmcs IHVzZWQgYXMgdGhlIGZvbGQgZGlzcGxheSBzdHJpbmcsIG9yCisKKyAgLSBhIGZ1bmN0aW9uLCBj YWxsZWQgd2l0aCB0aGUgKHVuYWJicmV2aWF0ZWQpIGVudmlyb25tZW50IG5hbWUgYW5kIGEKKyAg ICBsaXN0IGNvbnNpc3Rpbmcgb2YgdGhlIHJlbWFpbmluZyByZXF1aXJlZCBtYWNybyBhcmd1bWVu dHMsIHRoYXQKKyAgICByZXR1cm5zIGEgc3RyaW5nLgorCitUaGUgc2Vjb25kIGVsZW1lbnQgaXMg YSBsaXN0IG9mIGVudmlyb25tZW50IHR5cGVzLCB3aGljaCBhcmUgZWl0aGVyCisKKy0gdGhlIGVu dmlyb25tZW50IG5hbWUsIGUuZy4sIFwicmVtYXJrXCIsIG9yCisKKy0gYSBsaXN0IHdpdGggZmly c3QgZWxlbWVudCBhbiBlbnZpcm9ubWVudCBuYW1lIGFuZCByZW1haW5pbmcgZWxlbWVudHMKKyAg YW55IGFiYnJldmlhdGVkIGVudmlyb25tZW50IG5hbWVzLCBlLmcuLCAoXCJyZW1hcmtcIiBcInJl bVwiIFwicm1rXCIpLiIKKyAgOnR5cGUgJyhyZXBlYXQKKyAgICAgICAgICAoZ3JvdXAKKyAgICAg ICAgICAgKGNvbnMgKGNob2ljZSAoc3RyaW5nIDp0YWcgIkRpc3BsYXkgU3RyaW5nIGZvciBcXGJl Z2luey4uLn0iKQorICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvbiA6dGFnICJGdW5j dGlvbiB0byBleGVjdXRlIGZvciBcXGJlZ2luey4uLn0iKSkKKyAgICAgICAgICAgICAgICAgKGNo b2ljZSAoc3RyaW5nIDp0YWcgIkRpc3BsYXkgU3RyaW5nIGZvciBcXGVuZHsuLi59IikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb24gOnRhZyAiRnVuY3Rpb24gdG8gZXhlY3V0ZSBm b3IgXFxlbmR7Li4ufSIpKSkKKyAgICAgICAgICAgKHJlcGVhdCA6dGFnICJFbnZpcm9ubWVudCBU eXBlcyIKKyAgICAgICAgICAgICAgICAgICAoY2hvaWNlIChzdHJpbmcgOnRhZyAiRW52aXJvbm1l bnQiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMgOnRhZyAiRW52aXJvbm1lbnQg YW5kIEFiYnJldmlhdGlvbnMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3Ry aW5nIDp0YWcgIkVudmlyb25tZW50IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChyZXBlYXQgOnRhZyAiQWJicmV2aWF0aW9ucyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHN0cmluZyA6dGFnICJBYmJyZXZpYXRpb24iKSkpKSkpKQorICA6cGFj a2FnZS12ZXJzaW9uICcoYXVjdGV4IC4gIjE0LjAuOCIpKQorCisKKyhkZWZ1biBUZVgtZm9sZC1i ZWdpbi1kaXNwbGF5IChlbnYgJnJlc3QgYXJncykKKyAgIkZvbGQgZGlzcGxheSBmb3IgYSBcXGJl Z2lue0VOVn0uCitJbnRlbmRlZCBmb3IgdXNlIGluIGBUZVgtZm9sZC1iZWdpbi1lbmQtc3BlYy1s aXN0Jy4gIEFSR1MgaXMgYSBsaXN0Citjb25zaXN0aW5nIG9mIHRoZSByZW1haW5pbmcge30gYXJn dW1lbnRzIHN1cHBsaWVkIHRvIHRoZSBtYWNyby4iCisgIChUZVgtZm9sZC0taGVscGVyLWRpc3Bs YXkgZW52IGFyZ3MgIydjYXIpKQorCisoZGVmdW4gVGVYLWZvbGQtZW5kLWRpc3BsYXkgKGVudiAm cmVzdCBhcmdzKQorICAiRm9sZCBkaXNwbGF5IGZvciBhIFxcZW5ke0VOVn0gbWFjcm8uCitJbnRl bmRlZCBmb3IgdXNlIGluIGBUZVgtZm9sZC1iZWdpbi1lbmQtc3BlYy1saXN0Jy4gIEFSR1MgaXMg YSBsaXN0Citjb25zaXN0aW5nIG9mIHRoZSByZW1haW5pbmcge30gYXJndW1lbnRzIHN1cHBsaWVk IHRvIHRoZSBtYWNyby4iCisgIChUZVgtZm9sZC0taGVscGVyLWRpc3BsYXkgZW52IGFyZ3MgIydj ZHIpKQorCisoZGVmdW4gVGVYLWZvbGQtLWhlbHBlci1kaXNwbGF5IChlbnYgYXJncyBzcGVjLXJl dHJpZXZlcikKKyAgIkdlbmVyYXRlIGZvbGQgZGlzcGxheSBzdHJpbmcgZm9yIFxcYmVnaW57RU5W fSBvciBcXGVuZHtFTlZ9IG1hY3JvLgorQVJHUyBhcmUgdGhlIHJlbWFpbmluZyB7fSBhcmd1bWVu dHMgdG8gdGhlIG1hY3JvLiAgUmV0dXJucyB0aGUgc3RyaW5nIG9yCitmdW5jdGlvbiBkZXRlcm1p bmVkIGJ5IGBUZVgtZm9sZC1iZWdpbi1lbmQtc3BlYy1saXN0JyBpZiBFTlYgaXMgZm91bmQKK3Ro ZXJlLCBvdGhlcndpc2UgYGFib3J0Jy4gIFNQRUMtUkVUUklFVkVSLCB3aGljaCBzaG91bGQgYmUg ZWl0aGVyIGBjYXInCitvciBgY2RyJywgcmV0cmlldmVzIHRoZSBhcHByb3ByaWF0ZSBwYXJ0IG9m IHRoZSBkaXNwbGF5IHNwZWNpZmljYXRpb24uIgorICAoY2F0Y2ggJ3Jlc3VsdAorICAgIChkb2xp c3QgKGl0ZW0gVGVYLWZvbGQtYmVnaW4tZW5kLXNwZWMtbGlzdCkKKyAgICAgIChsZXQqICgoc3Bl YyAoZnVuY2FsbCBzcGVjLXJldHJpZXZlciAoY2FyIGl0ZW0pKSkKKyAgICAgICAgICAgICAodHlw ZXMgKGNhZHIgaXRlbSkpKQorICAgICAgICAoZG9saXN0ICh0eXBlIHR5cGVzKQorICAgICAgICAg ICh3aGVuLWxldCAoKG5hbWUgKGNvbmQgKChzdHJpbmdwIHR5cGUpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHdoZW4gKHN0cmluZz0gZW52IHR5cGUpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlbnYpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKChjb25zcCB0eXBlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3 aGVuIChtZW1iZXIgZW52IHR5cGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoY2FyIHR5cGUpKSkpKSkKKyAgICAgICAgICAgICh0aHJvdyAncmVzdWx0CisgICAgICAgICAg ICAgICAgICAgKGlmIChmdW5jdGlvbnAgc3BlYykKKyAgICAgICAgICAgICAgICAgICAgICAgKGZ1 bmNhbGwgc3BlYyBuYW1lIGFyZ3MpCisgICAgICAgICAgICAgICAgICAgICBzcGVjKSkpKSkpCisg ICAgJ2Fib3J0KSkKKworOzs7OzsgYmxvY2sgZW52aXJvbm1lbnRzCisKKyhkZWZ1biBUZVgtZm9s ZC1mb3JtYXQtdGl0bGVkLWJsb2NrIChfZW52IGFyZ3MpCisgICJGb3JtYXQgZm9sZCBkaXNwbGF5 IGZvciBiZWFtZXIgYmxvY2sgZW52aXJvbm1lbnRzLgorSW50ZW5kZWQgZm9yIHVzZSBpbiBgVGVY LWZvbGQtYmVnaW4tZW5kLXNwZWMtbGlzdCcuICBFTlYgaXMgaWdub3JlZC4KK0FSR1MgaXMgYSBs aXN0IHdob3NlIGNhciB3aWxsIGJlIHRoZSBibG9jayB0aXRsZS4KKworRXhhbXBsZTogXCJcXGJl Z2lue2Jsb2NrfXtUaGVvcmVtIDF9XCIgZm9sZHMgdG8gXCJUaGVvcmVtIDFcIi4iCisgIChjYXIg YXJncykpCisKKyhkZWZ1biBUZVgtZm9sZC1mb3JtYXQtdGl0bGVkLWFsZXJ0YmxvY2sgKF9lbnYg YXJncykKKyAgIkZvcm1hdCBmb2xkIGRpc3BsYXkgZm9yIGJlYW1lciBhbGVydGJsb2NrIGVudmly b25tZW50cy4KK0ludGVuZGVkIGZvciB1c2UgaW4gYFRlWC1mb2xkLWJlZ2luLWVuZC1zcGVjLWxp c3QnLiAgVGhlIGFyZ3VtZW50cworRU5WL0FSR1MgYW5kIHRoZSBiZWhhdmlvciBhcmUgYXMgaW4g YFRlWC1mb2xkLWZvcm1hdC10aXRsZWQtYmxvY2snLCBidXQKK3RoZSBmb2xkZWQgdGV4dCBpcyBj b2xvcmVkIHVzaW5nIGBUZVgtZm9sZC1hbGVydC1jb2xvcicuIgorICAobGV0ICgoY2FwdGlvbiAo Y2FyIGFyZ3MpKSkKKyAgICAoYWRkLWZhY2UtdGV4dC1wcm9wZXJ0eSAwIChsZW5ndGggY2FwdGlv bikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBgKDpmb3JlZ3JvdW5kICxUZVgtZm9sZC1h bGVydC1jb2xvcikgbmlsIGNhcHRpb24pCisgICAgKGZvcm1hdCAiJXMiIGNhcHRpb24pKSkKKwor Ozs7OzsgdGhlb3JlbS1saWtlIGVudmlyb25tZW50cworCisoZGVmdW4gVGVYLWZvbGQtZm9ybWF0 LXRoZW9yZW0tZW52aXJvbm1lbnQgKGVudiBfYXJncykKKyAgIkZvcm1hdCBmb2xkIGRpc3BsYXkg Zm9yIHRoZW9yZW0tbGlrZSBMYVRlWCBlbnZpcm9ubWVudHMuCitJbnRlbmRlZCBmb3IgdXNlIGlu IGBUZVgtZm9sZC1iZWdpbi1lbmQtc3BlYy1saXN0Jy4gIEVOViBpcyB0aGUKK2Vudmlyb25tZW50 IG5hbWUsIEFSR1MgYXJlIGlnbm9yZWQuICBSZXR1cm5zIGEgc3RyaW5nIG9mIHRoZSBmb3JtCitc IkVudmlyb25tZW50LlwiIG9yIFwiRW52aXJvbm1lbnQgKERlc2NyaXB0aW9uKS5cIiIKKyAgKGxl dCogKChlbnYgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAgICAgICAgICAgICAoaW5zZXJ0IGVudikK KyAgICAgICAgICAgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQorICAgICAgICAgICAgICAg IChjYXBpdGFsaXplLXdvcmQgMSkKKyAgICAgICAgICAgICAgICAoYnVmZmVyLXN0cmluZykpKQor ICAgICAgICAgKGRlc2NyaXB0aW9uCisgICAgICAgICAgKGNhciAoVGVYLWZvbGQtbWFjcm8tbnRo LWFyZyAxIChwb2ludCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChU ZVgtZm9sZC1pdGVtLWVuZCAocG9pbnQpICdtYWNybykKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICcoP1xbIC4gP1xdKSkpKSkKKyAgICAoY29uY2F0CisgICAgIChmb3Jt YXQgIiVzICIgZW52KQorICAgICAod2hlbiBkZXNjcmlwdGlvbgorICAgICAgIChmb3JtYXQgIigl cykgIiBkZXNjcmlwdGlvbikpKSkpCisKIDs7OyBVdGlsaXRpZXMKIAogKGRlZnVuIFRlWC1mb2xk LW1ha2Utb3ZlcmxheSAob3Ytc3RhcnQgb3YtZW5kIHR5cGUgZGlzcGxheS1zdHJpbmctc3BlYykK LS0gCjIuMzkuMyAoQXBwbGUgR2l0LTE0NSkKCg== --000000000000bef48b062411380c-- From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 13 07:57:35 2024 Received: (at 73724) by debbugs.gnu.org; 13 Oct 2024 11:57:35 +0000 Received: from localhost ([127.0.0.1]:50460 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1szxE6-0005lH-S4 for submit@debbugs.gnu.org; Sun, 13 Oct 2024 07:57:35 -0400 Received: from eggs.gnu.org ([209.51.188.92]:57306) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1szxE5-0005l2-Dm for 73724@debbugs.gnu.org; Sun, 13 Oct 2024 07:57:34 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1szxDj-00015Y-Ac; Sun, 13 Oct 2024 07:57:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To: From; bh=ndKoaXkr1CdLbK7M64T2c/JSC+QRg+YmSb7BRV19dzE=; b=FoxkG73MfIoCNfbC+E4c 6rh4JOT/HC/6vGuS/r6Hqwr0Gbs2oI0QYabiNqq9WYwzRWc+poeSkPVpQ/SE8RS5EIxz/QL/qrILo unEfaD3v1frMRESKa/gHqBFMPOPnWFiiDXTBGYMDgOk9pr+SvD3V/9d1zo3zffTXZOf16g4YyUQNk 45tUdxErKvme79l1ls9KkfKC8/wtNZq/LZ1XYhLdiHfyH2Eehrkj4v0yyPYjX9TJ411sG81RfZUpt qw3ADuMUpk7yx1OghpQ1m+gI3O+ZcaL17iO6QKCjp63gdhmG+1+AqCr8Aw/fWKhaiNd95ujaBUa2n J/ziFKccu6fRIw==; From: Arash Esbati To: Paul Nelson Subject: Re: bug#73724: [PATCH] Add folding support for begin and end macros In-Reply-To: (Paul Nelson's message of "Wed, 9 Oct 2024 22:37:14 +0200") References: Date: Sun, 13 Oct 2024 13:57:04 +0200 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 73724 Cc: 73724@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hi Paul, Paul Nelson writes: > This patch supports the folding of \begin{...} and \end{...} macros. Thanks for the proposal, I think this might be indeed interesting for people who use folding. I have some comments, see below. > --- > doc/auctex.texi | 7 +++ > tex-fold.el | 155 ++++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 162 insertions(+) > > diff --git a/doc/auctex.texi b/doc/auctex.texi > index d8e92e80..3bd8eeb6 100644 > --- a/doc/auctex.texi > +++ b/doc/auctex.texi > @@ -2880,6 +2880,13 @@ replacement specifier given by the default value of > @code{TeX-fold-macro-spec-list}). > @end defopt >=20=20 > +@defopt TeX-fold-begin-end-spec-list > +List of replacement specifiers for @samp{\begin@{...@}} and > +@samp{\end{...@}} macros (for the replacement specifiers given by the ^ @ is missing before { > +default value of @code{TeX-fold-macro-spec-list}). See the doc string f= or > +details. Which docstring are you referring to, `TeX-fold-begin-end-spec-list'? If so, I would expect to find the description here in the manual. See for example what it says about `TeX-fold-macro-spec-list': https://elpa.gnu.org/packages/doc/auctex.html#index-TeX_002dfold_002dmacr= o_002dspec_002dlist > +@end defopt > + > @node Outline > @section Outlining the Document > @cindex Outlining > diff --git a/tex-fold.el b/tex-fold.el > index c9f65b59..14b2a006 100644 > --- a/tex-fold.el > +++ b/tex-fold.el > @@ -83,6 +83,8 @@ macros, `math' for math macros and `comment' for commen= ts." > ("TM" ("texttrademark")) > (TeX-fold-alert-display ("alert")) > (TeX-fold-textcolor-display ("textcolor")) > + (TeX-fold-begin-display ("begin")) > + (TeX-fold-end-display ("end")) > (1 ("part" "chapter" "section" "subsection" "subsubsection" > "paragraph" "subparagraph" > "part*" "chapter*" "section*" "subsection*" "subsubsection*" > @@ -615,6 +617,8 @@ Return non-nil if a comment was found and folded, nil= otherwise." >=20=20 > ;;; Display functions >=20=20 > +;;;; textcolor > + > (defun TeX-fold-textcolor-display (color text &rest _args) > "Fold display for a \\textcolor{COLOR}{TEXT} macro." > (with-temp-buffer > @@ -624,6 +628,8 @@ Return non-nil if a comment was found and folded, nil= otherwise." > (current-buffer)) > (buffer-string))) >=20=20 > +;;;; alert > + > (defcustom TeX-fold-alert-color "red" > "Color for alert text." > :type 'color > @@ -638,6 +644,155 @@ Return non-nil if a comment was found and folded, n= il otherwise." > (current-buffer)) > (buffer-string))) >=20=20 > +;;;; begin/end > + > +(defcustom TeX-fold-begin-end-spec-list > + '((("=E2=86=B4" . "=E2=86=B2") > + ("itemize" "enumerate" "description" "frame")) > + ((TeX-fold-format-titled-block . "=E2=97=BC") > + ("block")) > + ((TeX-fold-format-titled-alertblock . "=E2=97=BC") > + ("alertblock")) > + ((TeX-fold-format-theorem-environment . "=E2=96=A1") > + ("proof")) > + ((TeX-fold-format-theorem-environment . "=E2=97=BC") > + ("abstract" > + "acknowledgment" > + "algorithm" > + "assumptions" > + "claim" > + "commentary" > + "fact" > + "note" > + "questions" > + ("answer" "ans") > + ("conclusion" "conc") > + ("conjecture" "conj") > + ("corollary" "cor") > + ("criterion" "crit") > + ("definition" "def" "defn") > + ("example" "ex") > + ("exercise" "exer") > + ("lemma" "lem") > + ("notation" "not") > + ("problem" "prob") > + ("proposition" "prop") > + ("question" "ques") > + ("remark" "rem" "rmk") > + ("summary" "sum") > + ("terminology" "term") > + ("theorem" "thm")))) > + "Replacement specifier list for `TeX-fold-*-display', * =3D begin or e= nd. This is hard to parse. I don't understand why the docstring should talk about `TeX-fold-begin-display' and `TeX-fold-end-display', they aren't relevant for the users, right? How about something like this: Replacement specifier list for \\begin{env} and \\end{env} macros. > + > +Each item is a list consisting of two elements. > + > +The first element is a cons cell, with car and cdr the display > +specifications for \\begin{...} and \\end{...} macros, respectively. > +Each specification is either > + > + - a string, used as the fold display string, or > + > + - a function, called with the (unabbreviated) environment name and a > + list consisting of the remaining required macro arguments, that > + returns a string. > + > +The second element is a list of environment types, which are either > + > +- the environment name, e.g., \"remark\", or > + > +- a list with first element an environment name and remaining elements > + any abbreviated environment names, e.g., (\"remark\" \"rem\" \"rmk\")." > + :type '(repeat > + (group > + (cons (choice (string :tag "Display String for \\begin{...}") > + (function :tag "Function to execute for \\begin= {...}")) > + (choice (string :tag "Display String for \\end{...}") > + (function :tag "Function to execute for \\end{.= ..}"))) > + (repeat :tag "Environment Types" > + (choice (string :tag "Environment") > + (cons :tag "Environment and Abbreviations" > + (string :tag "Environment") > + (repeat :tag "Abbreviations" > + (string :tag "Abbreviation"))))= ))) > + :package-version '(auctex . "14.0.8")) > + > + > +(defun TeX-fold-begin-display (env &rest args) > + "Fold display for a \\begin{ENV}. > +Intended for use in `TeX-fold-begin-end-spec-list'. ARGS is a list > +consisting of the remaining {} arguments supplied to the macro." ^^ Does this mean "mandatory arguments in braces"? > + (TeX-fold--helper-display env args #'car)) > + > +(defun TeX-fold-end-display (env &rest args) > + "Fold display for a \\end{ENV} macro. > +Intended for use in `TeX-fold-begin-end-spec-list'. ARGS is a list > +consisting of the remaining {} arguments supplied to the macro." See above. > + (TeX-fold--helper-display env args #'cdr)) > + > +(defun TeX-fold--helper-display (env args spec-retriever) > + "Generate fold display string for \\begin{ENV} or \\end{ENV} macro. > +ARGS are the remaining {} arguments to the macro. Returns the string or See above. Others LGTM. Best, Arash From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 13 09:25:16 2024 Received: (at 73724) by debbugs.gnu.org; 13 Oct 2024 13:25:16 +0000 Received: from localhost ([127.0.0.1]:50563 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1szyax-00024t-Mt for submit@debbugs.gnu.org; Sun, 13 Oct 2024 09:25:16 -0400 Received: from mail-io1-f41.google.com ([209.85.166.41]:61891) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1szyav-00023J-Ll for 73724@debbugs.gnu.org; Sun, 13 Oct 2024 09:25:14 -0400 Received: by mail-io1-f41.google.com with SMTP id ca18e2360f4ac-82cd93a6617so122934939f.3 for <73724@debbugs.gnu.org>; Sun, 13 Oct 2024 06:24:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1728825832; x=1729430632; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=AV33EIClQ8ian3l9Q932NgIGC456AuDBq7TDJltyDyo=; b=gFuZqDv5af275WxYVlj+YLFEjNmptN501c2XOOlkZADXNQcnDUVtyMnL8eRIGReGX/ SF5lWE8S/ts2hwU5xTlTXXscZv8BmrEDgN+iLk9WQRZVd0QC575PYjpjHuv7eJH23eiN ubyLaenNJ2uMlaPmO+c2j9cjAE15ZyOo7gjzuI63Nntcj1O71kqELZtnLpeHxItRMbx+ DMaabpblJ1PlkrpPsfHGLTY1H6J4z1uulOi07x18/3rFlpoWnlBTDuSNR2gincbC6IpN rwIWSkcYrdsf1+myJCf56rsLk/75LHiVog3BUE0biptBGxJxboQ00szaD8Z5q7QW2C26 4ptg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728825832; x=1729430632; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=AV33EIClQ8ian3l9Q932NgIGC456AuDBq7TDJltyDyo=; b=DviUFFwJie46oHMD2zoH9NUqgifc5yLquZ028n4WASzlSd3UjxqiWw2i3ZE5WGNi4O qAumhaqPWFTAQHZw8K96rOXw9u39a16OueFZJIcRX8W/Cupbch2VZYn5UH4EA81A7rcp JAU80W3uKgtOYbqR9W4GluL8xvKs/kl0XXSnone7GJZJnGKV+B63dy4TKHUXNCpZxwGj 56Lpxc8j/jXxP8fcwGZF0VHyd3EtnK3EVeL57ve2j6ZbZ+ZxzUnbBQaU9sSiR8zhvJd1 ciAnNxYiWtE4tBs11yEzexHsftG+nECCBGwZOzJZvcSbfBZebEtn0xXIO0pwcPbLnc+K 0c3w== X-Gm-Message-State: AOJu0YxWzv00m++XVTfgL0PJEQWbFmOr/hY24NIMZuZkZCL/Flckdeq5 JkJxoCCgwRK8KRZzU+FYWoGYje+a3nCb2DKZp8+qxRbhVC2Zd4sSlGhKo8/6gaiY9kfG8Gqq6VU WfAzlUVhTJCSTYMN7irMY2iyxmo8= X-Google-Smtp-Source: AGHT+IHQvetip8QMHp+UeP533swLj8Oujii2oK8nwBsgkwxK+ph1VKpGVLu88jQVy0E+q16ZN3OO2Pz+HsH0hjTK7W4= X-Received: by 2002:a05:6e02:164b:b0:3a3:983a:8741 with SMTP id e9e14a558f8ab-3a3b5f6efe8mr52413575ab.11.1728825832152; Sun, 13 Oct 2024 06:23:52 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Paul Nelson Date: Sun, 13 Oct 2024 15:23:39 +0200 Message-ID: Subject: Re: bug#73724: [PATCH] Add folding support for begin and end macros To: Arash Esbati Content-Type: multipart/mixed; boundary="0000000000009b07ca06245ba1cd" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 73724 Cc: 73724@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --0000000000009b07ca06245ba1cd Content-Type: text/plain; charset="UTF-8" Hi Arash, Many for your feedback. > > +default value of @code{TeX-fold-macro-spec-list}). See the doc string for > > +details. > > Which docstring are you referring to, `TeX-fold-begin-end-spec-list'? > If so, I would expect to find the description here in the manual. See > for example what it says about `TeX-fold-macro-spec-list': Indeed, I had in mind (but forgot to write) that I left the manual doc as a stub until the general behavior was approved. I've now attempted a proper manual entry. > > + "Replacement specifier list for `TeX-fold-*-display', * = begin or end. > > This is hard to parse. I don't understand why the docstring should talk > about `TeX-fold-begin-display' and `TeX-fold-end-display', they aren't > relevant for the users, right? > > How about something like this: > > Replacement specifier list for \\begin{env} and \\end{env} macros. Agreed that this is clearer. The relevance of TeX-fold-begin-display and TeX-fold-end-display is that it is only through these functions that TeX-fold-begin-end-spec-list "plugs in" to the user option TeX-macro-spec-fold-alist. If the user modifies that option to have different display specifiers for begin and end, then TeX-fold-begin-end-spec-list becomes irrelevant. I've tried to make this point clearer in the updated doc, but any further feedback is welcome. > > +(defun TeX-fold-begin-display (env &rest args) > > + "Fold display for a \\begin{ENV}. > > +Intended for use in `TeX-fold-begin-end-spec-list'. ARGS is a list > > +consisting of the remaining {} arguments supplied to the macro." > ^^ > Does this mean "mandatory arguments in braces"? > I had internalized that "mandatory arguments" and "arguments in braces" were the same thing in LaTeX, but could be mistaken on this. I've adjusted this docstring (and related ones) to say simply "mandatory macro arguments", which seems consistent with what is written elsewhere in tex-fold.el, but would welcome other suggestions. QUESTION: should these features be considered LaTeX-specific, hence added to LaTeX-fold-macro-spec-list and perhaps moved from tex-fold.el into either latex.el or some new file latex-fold.el? I personally find the current organization reasonable, but am open to suggestions here. Thanks, best, Paul --0000000000009b07ca06245ba1cd Content-Type: application/octet-stream; name="0001-Add-folding-support-for-begin-and-end-macros.patch" Content-Disposition: attachment; filename="0001-Add-folding-support-for-begin-and-end-macros.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m27m8m050 RnJvbSBiYjAzYTNhOGRhMzA3YjY1ZGU4NDU3YjZjZTBhOTkxNzY0NjlmZThiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIE5lbHNvbiA8dWx0cm9ub0BnbWFpbC5jb20+CkRhdGU6 IFNhdCwgNSBPY3QgMjAyNCAxNDo1MTozMiArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBmb2xk aW5nIHN1cHBvcnQgZm9yIGJlZ2luIGFuZCBlbmQgbWFjcm9zCgoqIHRleC1mb2xkLmVsIChUZVgt Zm9sZC1tYWNyby1zcGVjLWxpc3QpOiBBZGQgYmVnaW4gYW5kIGVuZAplbnRyaWVzLgooVGVYLWZv bGQtYmVnaW4tZGlzcGxheSwgVGVYLWZvbGQtZW5kLWRpc3BsYXkpOiBOZXcgZnVuY3Rpb25zLAph ZGRlZCBhYm92ZSBhcyBlbnRyaWVzLgooVGVYLWZvbGQtLWhlbHBlci1kaXNwbGF5KTogTmV3IGhl bHBlciBmdW5jdGlvbi4KKFRlWC1mb2xkLWJlZ2luLWVuZC1zcGVjLWxpc3QpOiBOZXcgdXNlciBv cHRpb24sIHVzZWQgYnkKdGhlIGFib3ZlIGZ1bmN0aW9ucy4KKFRlWC1mb2xkLWZvcm1hdC10aXRs ZWQtYmxvY2ssClRlWC1mb2xkLWZvcm1hdC10aXRsZWQtYWxlcnRibG9jaywKVGVYLWZvbGQtZm9y bWF0LXRoZW9yZW0tZW52aXJvbm1lbnQpOiBOZXcgZnVuY3Rpb25zIHVzZWQgaW4gdGhlCmRlZmF1 bHQgdmFsdWUgb2YgdGhlIG5ldyB1c2VyIG9wdGlvbi4KCiogYXVjdGV4LnRleGkgKEZvbGRpbmcg TWFjcm9zIGFuZCBFbnZpcm9ubWVudHMpOiBEb2N1bWVudCB0aGUKbmV3IHVzZXIgb3B0aW9uLgot LS0KIGRvYy9hdWN0ZXgudGV4aSB8ICA3NiArKysrKysrKysrKysrKysrKysrKysrKwogdGV4LWZv bGQuZWwgICAgIHwgMTU5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAyMzUgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBh L2RvYy9hdWN0ZXgudGV4aSBiL2RvYy9hdWN0ZXgudGV4aQppbmRleCBkOGU5MmU4MC4uZTVmMDg3 NDkgMTAwNjQ0Ci0tLSBhL2RvYy9hdWN0ZXgudGV4aQorKysgYi9kb2MvYXVjdGV4LnRleGkKQEAg LTI4ODAsNiArMjg4MCw4MiBAQCByZXBsYWNlbWVudCBzcGVjaWZpZXIgZ2l2ZW4gYnkgdGhlIGRl ZmF1bHQgdmFsdWUgb2YKIEBjb2Rle1RlWC1mb2xkLW1hY3JvLXNwZWMtbGlzdH0pLgogQGVuZCBk ZWZvcHQKIAorQGRlZm9wdCBUZVgtZm9sZC1iZWdpbi1lbmQtc3BlYy1saXN0CitMaXN0IG9mIHJl cGxhY2VtZW50IHNwZWNpZmllcnMgZm9yIEBzYW1we1xiZWdpbkB7QHZhcntlbnZ9QH19IGFuZAor QHNhbXB7XGVuZEB7QHZhcntlbnZ9QH19IG1hY3Jvcy4gIFRoaXMgb3B0aW9uIGlzIHVzZWQgb25s eSB3aGVuIHRoZQorcmVwbGFjZW1lbnQgc3BlY2lmaWVycyBmb3IgQHNhbXB7YmVnaW59IGFuZCBA c2FtcHtlbmR9IG1hY3JvcyBpbgorQGNvZGV7VGVYLWZvbGQtbWFjcm8tc3BlYy1saXN0fSBhcmUg c2V0IHRvIHRoZWlyIGRlZmF1bHQgdmFsdWVzOgorQGNvZGV7VGVYLWZvbGQtYmVnaW4tZGlzcGxh eX0gYW5kIEBjb2Rle1RlWC1mb2xkLWVuZC1kaXNwbGF5fSwKK3Jlc3BlY3RpdmVseS4KKworRWFj aCBpdGVtIGluIHRoZSBsaXN0IGNvbnNpc3RzIG9mIHR3byBlbGVtZW50czoKKworVGhlIGZpcnN0 IGVsZW1lbnQgaXMgYSBjb25zIGNlbGwgQGNvZGV7KEB2YXJ7QkVHSU59IC4gQHZhcntFTkR9KX0s IHdoZXJlCitAdmFye0JFR0lOfSBhbmQgQHZhcntFTkR9IGFyZSB0aGUgZGlzcGxheSBzcGVjaWZp Y2F0aW9ucyBmb3IKK0BzYW1we1xiZWdpbkB7Li4uQH19IGFuZCBAc2FtcHtcZW5kQHsuLi5AfX0g bWFjcm9zLCByZXNwZWN0aXZlbHkuICBFYWNoCitzcGVjaWZpY2F0aW9uIGNhbiBiZSBlaXRoZXI6 CisKK0BpdGVtaXplIEBidWxsZXQKK0BpdGVtCitBIHN0cmluZywgd2hpY2ggd2lsbCBiZSB1c2Vk IGRpcmVjdGx5IGFzIHRoZSBmb2xkIGRpc3BsYXkgc3RyaW5nLgorCitAaXRlbQorQSBmdW5jdGlv biBzeW1ib2wsIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogdGhlCiso dW5hYmJyZXZpYXRlZCkgZW52aXJvbm1lbnQgbmFtZSBhbmQgYSBsaXN0IG9mIHRoZSByZW1haW5p bmcgbWFuZGF0b3J5CittYWNybyBhcmd1bWVudHMuICBUaGUgZnVuY3Rpb24gc2hvdWxkIHJldHVy biBhIHN0cmluZyB0byBiZSB1c2VkIGFzIHRoZQorZm9sZCBkaXNwbGF5LgorQGVuZCBpdGVtaXpl CisKK1RoZSBzZWNvbmQgZWxlbWVudCBpcyBhIGxpc3Qgb2YgZW52aXJvbm1lbnQgdHlwZXMuICBF YWNoIHR5cGUgY2FuIGJlOgorCitAaXRlbWl6ZSBAYnVsbGV0CitAaXRlbQorQSBzdHJpbmcgcmVw cmVzZW50aW5nIHRoZSBlbnZpcm9ubWVudCBuYW1lIChlLmcuLCBAY29kZXsicmVtYXJrIn0pLgor CitAaXRlbQorQSBsaXN0IHdpdGggdGhlIGZpcnN0IGVsZW1lbnQgYmVpbmcgdGhlIGVudmlyb25t ZW50IG5hbWUgYW5kIHRoZSByZW1haW5pbmcKK2VsZW1lbnRzIGJlaW5nIGFueSBhYmJyZXZpYXRl ZCBmb3JtcyBvZiB0aGF0IG5hbWUgKGUuZy4sIEBjb2RleygicmVtYXJrIgorInJlbSIgInJtayIp fSkuCitAZW5kIGl0ZW1pemUKKworRm9yIGV4YW1wbGU6CisKK0BsaXNwCisoKCgi4oa0IiAuICLi hrIiKSAoIml0ZW1pemUiICJlbnVtZXJhdGUiICJkZXNjcmlwdGlvbiIgImZyYW1lIikpCisgKChU ZVgtZm9sZC1mb3JtYXQtdGhlb3JlbS1lbnZpcm9ubWVudCAuICLil7wiKQorICAoIm5vdGUiICgi dGhlb3JlbSIgInRobSIpKSkpCitAZW5kIGxpc3AKKworSW4gdGhpcyBleGFtcGxlOgorCitAaXRl bWl6ZSBAYnVsbGV0CitAaXRlbQorQHNhbXB7XGJlZ2luQHtpdGVtaXplQH19LCBAc2FtcHtcYmVn aW5Ae2VudW1lcmF0ZUB9fSwKK0BzYW1we1xiZWdpbkB7ZGVzY3JpcHRpb25AfX0sIGFuZCBAc2Ft cHtcYmVnaW5Ae2ZyYW1lQH19IHdpbGwgZm9sZCB0bworQHNhbXB74oa0fSwgd2hpbGUgdGhlaXIg Y29ycmVzcG9uZGluZyBAc2FtcHtcZW5kQHsuLi5AfX0gbWFjcm9zIHdpbGwgZm9sZCB0bworQHNh bXB74oayfS4KKworQGl0ZW0KK0BzYW1we1xiZWdpbkB7bm90ZUB9fSB3aWxsIGZvbGQgdG8gQHNh bXB7Tm90ZX0uCisKK0BpdGVtCitAc2FtcHtcYmVnaW5Ae3RoZW9yZW1AfX0gYW5kIEBzYW1we1xi ZWdpbkB7dGhtQH19IHdpbGwgZm9sZCB0byBAc2FtcHtUaGVvcmVtfS4KKworQGl0ZW0KK0lmIGFu IG9wdGlvbmFsIGFyZ3VtZW50IGlzIHByb3ZpZGVkLCBlLmcuLCBAc2FtcHtcYmVnaW5Ae3RoZW9y ZW1AfVtGb29dfSwKK2l0IHdpbGwgZm9sZCB0byBAc2FtcHtUaGVvcmVtIChGb28pfS4KKworQGl0 ZW0KK0FsbCBjb3JyZXNwb25kaW5nIEBzYW1we1xlbmRAey4uLkB9fSBtYWNyb3MgZm9yIEBzYW1w e25vdGV9LAorQHNhbXB7dGhlb3JlbX0sIGFuZCBAc2FtcHt0aG19IHdpbGwgZm9sZCB0byBAc2Ft cHvil7x9LgorQGVuZCBpdGVtaXplCisKK1RvIGRpc2FibGUgZm9sZGluZyBmb3IgQHNhbXB7XGJl Z2luQHsuLi5AfX0gYW5kIEBzYW1we1xlbmRAey4uLkB9fSBtYWNyb3MsCit5b3UgY2FuIGVpdGhl ciBzZXQgdGhpcyB2YXJpYWJsZSB0byBAY29kZXtuaWx9LCBvciByZW1vdmUgdGhlIGRpc3BsYXkK K3NwZWNpZmljYXRpb25zIGZvciBAc2FtcHtiZWdpbn0gYW5kIEBzYW1we2VuZH0gZnJvbQorQGNv ZGV7VGVYLWZvbGQtbWFjcm8tc3BlYy1saXN0fS4KK0BlbmQgZGVmb3B0CisKIEBub2RlIE91dGxp bmUKIEBzZWN0aW9uIE91dGxpbmluZyB0aGUgRG9jdW1lbnQKIEBjaW5kZXggT3V0bGluaW5nCmRp ZmYgLS1naXQgYS90ZXgtZm9sZC5lbCBiL3RleC1mb2xkLmVsCmluZGV4IGM5ZjY1YjU5Li41MTM1 MTc5MyAxMDA2NDQKLS0tIGEvdGV4LWZvbGQuZWwKKysrIGIvdGV4LWZvbGQuZWwKQEAgLTgzLDYg KzgzLDggQEAgbWFjcm9zLCBgbWF0aCcgZm9yIG1hdGggbWFjcm9zIGFuZCBgY29tbWVudCcgZm9y IGNvbW1lbnRzLiIKICAgICAoIlRNIiAgKCJ0ZXh0dHJhZGVtYXJrIikpCiAgICAgKFRlWC1mb2xk LWFsZXJ0LWRpc3BsYXkgKCJhbGVydCIpKQogICAgIChUZVgtZm9sZC10ZXh0Y29sb3ItZGlzcGxh eSAoInRleHRjb2xvciIpKQorICAgIChUZVgtZm9sZC1iZWdpbi1kaXNwbGF5ICgiYmVnaW4iKSkK KyAgICAoVGVYLWZvbGQtZW5kLWRpc3BsYXkgKCJlbmQiKSkKICAgICAoMSAoInBhcnQiICJjaGFw dGVyIiAic2VjdGlvbiIgInN1YnNlY3Rpb24iICJzdWJzdWJzZWN0aW9uIgogICAgICAgICAicGFy YWdyYXBoIiAic3VicGFyYWdyYXBoIgogICAgICAgICAicGFydCoiICJjaGFwdGVyKiIgInNlY3Rp b24qIiAic3Vic2VjdGlvbioiICJzdWJzdWJzZWN0aW9uKiIKQEAgLTYxNSw2ICs2MTcsOCBAQCBS ZXR1cm4gbm9uLW5pbCBpZiBhIGNvbW1lbnQgd2FzIGZvdW5kIGFuZCBmb2xkZWQsIG5pbCBvdGhl cndpc2UuIgogCiA7OzsgRGlzcGxheSBmdW5jdGlvbnMKIAorOzs7OyB0ZXh0Y29sb3IKKwogKGRl ZnVuIFRlWC1mb2xkLXRleHRjb2xvci1kaXNwbGF5IChjb2xvciB0ZXh0ICZyZXN0IF9hcmdzKQog ICAiRm9sZCBkaXNwbGF5IGZvciBhIFxcdGV4dGNvbG9ye0NPTE9SfXtURVhUfSBtYWNyby4iCiAg ICh3aXRoLXRlbXAtYnVmZmVyCkBAIC02MjQsNiArNjI4LDggQEAgUmV0dXJuIG5vbi1uaWwgaWYg YSBjb21tZW50IHdhcyBmb3VuZCBhbmQgZm9sZGVkLCBuaWwgb3RoZXJ3aXNlLiIKICAgICAgICAg ICAgICAgICAgICAgICAgKGN1cnJlbnQtYnVmZmVyKSkKICAgICAoYnVmZmVyLXN0cmluZykpKQog Cis7Ozs7IGFsZXJ0CisKIChkZWZjdXN0b20gVGVYLWZvbGQtYWxlcnQtY29sb3IgInJlZCIKICAg IkNvbG9yIGZvciBhbGVydCB0ZXh0LiIKICAgOnR5cGUgJ2NvbG9yCkBAIC02MzgsNiArNjQ0LDE1 OSBAQCBSZXR1cm4gbm9uLW5pbCBpZiBhIGNvbW1lbnQgd2FzIGZvdW5kIGFuZCBmb2xkZWQsIG5p bCBvdGhlcndpc2UuIgogICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1idWZmZXIpKQog ICAgIChidWZmZXItc3RyaW5nKSkpCiAKKzs7OzsgYmVnaW4vZW5kCisKKyhkZWZjdXN0b20gVGVY LWZvbGQtYmVnaW4tZW5kLXNwZWMtbGlzdAorICAnKCgoIuKGtCIgLiAi4oayIikKKyAgICAgKCJp dGVtaXplIiAiZW51bWVyYXRlIiAiZGVzY3JpcHRpb24iICJmcmFtZSIpKQorICAgICgoVGVYLWZv bGQtZm9ybWF0LXRpdGxlZC1ibG9jayAuICLil7wiKQorICAgICAoImJsb2NrIikpCisgICAgKChU ZVgtZm9sZC1mb3JtYXQtdGl0bGVkLWFsZXJ0YmxvY2sgLiAi4pe8IikKKyAgICAgKCJhbGVydGJs b2NrIikpCisgICAgKChUZVgtZm9sZC1mb3JtYXQtdGhlb3JlbS1lbnZpcm9ubWVudCAuICLilqEi KQorICAgICAoInByb29mIikpCisgICAgKChUZVgtZm9sZC1mb3JtYXQtdGhlb3JlbS1lbnZpcm9u bWVudCAuICLil7wiKQorICAgICAoImFic3RyYWN0IgorICAgICAgImFja25vd2xlZGdtZW50Igor ICAgICAgImFsZ29yaXRobSIKKyAgICAgICJhc3N1bXB0aW9ucyIKKyAgICAgICJjbGFpbSIKKyAg ICAgICJjb21tZW50YXJ5IgorICAgICAgImZhY3QiCisgICAgICAibm90ZSIKKyAgICAgICJxdWVz dGlvbnMiCisgICAgICAoImFuc3dlciIgImFucyIpCisgICAgICAoImNvbmNsdXNpb24iICJjb25j IikKKyAgICAgICgiY29uamVjdHVyZSIgImNvbmoiKQorICAgICAgKCJjb3JvbGxhcnkiICJjb3Ii KQorICAgICAgKCJjcml0ZXJpb24iICJjcml0IikKKyAgICAgICgiZGVmaW5pdGlvbiIgImRlZiIg ImRlZm4iKQorICAgICAgKCJleGFtcGxlIiAiZXgiKQorICAgICAgKCJleGVyY2lzZSIgImV4ZXIi KQorICAgICAgKCJsZW1tYSIgImxlbSIpCisgICAgICAoIm5vdGF0aW9uIiAibm90IikKKyAgICAg ICgicHJvYmxlbSIgInByb2IiKQorICAgICAgKCJwcm9wb3NpdGlvbiIgInByb3AiKQorICAgICAg KCJxdWVzdGlvbiIgInF1ZXMiKQorICAgICAgKCJyZW1hcmsiICJyZW0iICJybWsiKQorICAgICAg KCJzdW1tYXJ5IiAic3VtIikKKyAgICAgICgidGVybWlub2xvZ3kiICJ0ZXJtIikKKyAgICAgICgi dGhlb3JlbSIgInRobSIpKSkpCisgICJSZXBsYWNlbWVudCBzcGVjaWZpZXIgbGlzdCBmb3IgXFxi ZWdpbntlbnZ9IGFuZCBcXGVuZHtlbnZ9IG1hY3Jvcy4KKworVGhpcyBvcHRpb24gaXMgcmVsZXZh bnQgb25seSBpZiB0aGUgcmVwbGFjZW1lbnQgc3BlY2lmaWVycyBpbgorYFRlWC1mb2xkLW1hY3Jv LXNwZWMtbGlzdCcgZm9yIFwiYmVnaW5cIiBhbmQgXCJlbmRcIiBtYWNyb3MgYXJlIHRoZQorZGVm YXVsdHMsIG5hbWVseSBgVGVYLWZvbGQtYmVnaW4tZGlzcGxheScgYW5kIGBUZVgtZm9sZC1lbmQt ZGlzcGxheScuCisKK0VhY2ggaXRlbSBpcyBhIGxpc3QgY29uc2lzdGluZyBvZiB0d28gZWxlbWVu dHM6CisKK1RoZSBmaXJzdCBlbGVtZW50IGlzIGEgY29ucyBjZWxsLCB3aXRoIGNhciBhbmQgY2Ry IHRoZSBkaXNwbGF5CitzcGVjaWZpY2F0aW9ucyBmb3IgXFxiZWdpbnsuLi59IGFuZCBcXGVuZHsu Li59ICBtYWNyb3MsIHJlc3BlY3RpdmVseS4KK0VhY2ggc3BlY2lmaWNhdGlvbiBpcyBlaXRoZXIK KworICAtIGEgc3RyaW5nLCB1c2VkIGFzIHRoZSBmb2xkIGRpc3BsYXkgc3RyaW5nLCBvcgorCisg IC0gYSBmdW5jdGlvbiwgY2FsbGVkIHdpdGggdGhlICh1bmFiYnJldmlhdGVkKSBlbnZpcm9ubWVu dCBuYW1lIGFuZCBhCisgICAgbGlzdCBjb25zaXN0aW5nIG9mIHRoZSByZW1haW5pbmcgbWFuZGF0 b3J5IG1hY3JvIGFyZ3VtZW50cywgdGhhdAorICAgIHJldHVybnMgYSBzdHJpbmcuCisKK1RoZSBz ZWNvbmQgZWxlbWVudCBpcyBhIGxpc3Qgb2YgZW52aXJvbm1lbnQgdHlwZXMsIHdoaWNoIGFyZSBl aXRoZXIKKworLSB0aGUgZW52aXJvbm1lbnQgbmFtZSwgZS5nLiwgXCJyZW1hcmtcIiwgb3IKKwor LSBhIGxpc3Qgd2l0aCBmaXJzdCBlbGVtZW50IGFuIGVudmlyb25tZW50IG5hbWUgYW5kIHJlbWFp bmluZyBlbGVtZW50cworICBhbnkgYWJicmV2aWF0ZWQgZW52aXJvbm1lbnQgbmFtZXMsIGUuZy4s IChcInJlbWFya1wiIFwicmVtXCIgXCJybWtcIikuIgorICA6dHlwZSAnKHJlcGVhdAorICAgICAg ICAgIChncm91cAorICAgICAgICAgICAoY29ucyAoY2hvaWNlIChzdHJpbmcgOnRhZyAiRGlzcGxh eSBTdHJpbmcgZm9yIFxcYmVnaW57Li4ufSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1 bmN0aW9uIDp0YWcgIkZ1bmN0aW9uIHRvIGV4ZWN1dGUgZm9yIFxcYmVnaW57Li4ufSIpKQorICAg ICAgICAgICAgICAgICAoY2hvaWNlIChzdHJpbmcgOnRhZyAiRGlzcGxheSBTdHJpbmcgZm9yIFxc ZW5key4uLn0iKQorICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvbiA6dGFnICJGdW5j dGlvbiB0byBleGVjdXRlIGZvciBcXGVuZHsuLi59IikpKQorICAgICAgICAgICAocmVwZWF0IDp0 YWcgIkVudmlyb25tZW50IFR5cGVzIgorICAgICAgICAgICAgICAgICAgIChjaG9pY2UgKHN0cmlu ZyA6dGFnICJFbnZpcm9ubWVudCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29ucyA6 dGFnICJFbnZpcm9ubWVudCBhbmQgQWJicmV2aWF0aW9ucyIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChzdHJpbmcgOnRhZyAiRW52aXJvbm1lbnQiKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHJlcGVhdCA6dGFnICJBYmJyZXZpYXRpb25zIgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nIDp0YWcgIkFiYnJldmlhdGlv biIpKSkpKSkpCisgIDpwYWNrYWdlLXZlcnNpb24gJyhhdWN0ZXggLiAiMTQuMC44IikpCisKKwor KGRlZnVuIFRlWC1mb2xkLWJlZ2luLWRpc3BsYXkgKGVudiAmcmVzdCBhcmdzKQorICAiRm9sZCBk aXNwbGF5IGZvciBhIFxcYmVnaW57RU5WfS4KK0ludGVuZGVkIGZvciB1c2UgaW4gYFRlWC1mb2xk LWJlZ2luLWVuZC1zcGVjLWxpc3QnLiAgQVJHUyBpcyBhIGxpc3QKK2NvbnNpc3Rpbmcgb2YgdGhl IHJlbWFpbmluZyBtYW5kYXRvcnkgbWFjcm8gYXJndW1lbnRzLiIKKyAgKFRlWC1mb2xkLS1oZWxw ZXItZGlzcGxheSBlbnYgYXJncyAjJ2NhcikpCisKKyhkZWZ1biBUZVgtZm9sZC1lbmQtZGlzcGxh eSAoZW52ICZyZXN0IGFyZ3MpCisgICJGb2xkIGRpc3BsYXkgZm9yIGEgXFxlbmR7RU5WfSBtYWNy by4KK0ludGVuZGVkIGZvciB1c2UgaW4gYFRlWC1mb2xkLWJlZ2luLWVuZC1zcGVjLWxpc3QnLiAg QVJHUyBpcyBhIGxpc3QKK2NvbnNpc3Rpbmcgb2YgdGhlIHJlbWFpbmluZyBtYW5kYXRvcnkgbWFj cm8gYXJndW1lbnRzLiIKKyAgKFRlWC1mb2xkLS1oZWxwZXItZGlzcGxheSBlbnYgYXJncyAjJ2Nk cikpCisKKyhkZWZ1biBUZVgtZm9sZC0taGVscGVyLWRpc3BsYXkgKGVudiBhcmdzIHNwZWMtcmV0 cmlldmVyKQorICAiR2VuZXJhdGUgZm9sZCBkaXNwbGF5IHN0cmluZyBmb3IgXFxiZWdpbntFTlZ9 IG9yIFxcZW5ke0VOVn0gbWFjcm8uCitBUkdTIGFyZSB0aGUgcmVtYWluaW5nIG1hbmRhdG9yeSBt YWNybyBhcmd1bWVudHMuICBSZXR1cm5zIHRoZSBzdHJpbmcgb3IKK2Z1bmN0aW9uIGRldGVybWlu ZWQgYnkgYFRlWC1mb2xkLWJlZ2luLWVuZC1zcGVjLWxpc3QnIGlmIEVOViBpcyBmb3VuZAordGhl cmUsIG90aGVyd2lzZSBgYWJvcnQnLiAgU1BFQy1SRVRSSUVWRVIsIHdoaWNoIHNob3VsZCBiZSBl aXRoZXIgYGNhcicKK29yIGBjZHInLCByZXRyaWV2ZXMgdGhlIGFwcHJvcHJpYXRlIHBhcnQgb2Yg dGhlIGRpc3BsYXkgc3BlY2lmaWNhdGlvbi4iCisgIChjYXRjaCAncmVzdWx0CisgICAgKGRvbGlz dCAoaXRlbSBUZVgtZm9sZC1iZWdpbi1lbmQtc3BlYy1saXN0KQorICAgICAgKGxldCogKChzcGVj IChmdW5jYWxsIHNwZWMtcmV0cmlldmVyIChjYXIgaXRlbSkpKQorICAgICAgICAgICAgICh0eXBl cyAoY2FkciBpdGVtKSkpCisgICAgICAgIChkb2xpc3QgKHR5cGUgdHlwZXMpCisgICAgICAgICAg KHdoZW4tbGV0ICgobmFtZSAoY29uZCAoKHN0cmluZ3AgdHlwZSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAod2hlbiAoc3RyaW5nPSBlbnYgdHlwZSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVudikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoKGNvbnNwIHR5cGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdo ZW4gKG1lbWJlciBlbnYgdHlwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChjYXIgdHlwZSkpKSkpKQorICAgICAgICAgICAgKHRocm93ICdyZXN1bHQKKyAgICAgICAgICAg ICAgICAgICAoaWYgKGZ1bmN0aW9ucCBzcGVjKQorICAgICAgICAgICAgICAgICAgICAgICAoZnVu Y2FsbCBzcGVjIG5hbWUgYXJncykKKyAgICAgICAgICAgICAgICAgICAgIHNwZWMpKSkpKSkKKyAg ICAnYWJvcnQpKQorCis7Ozs7OyBibG9jayBlbnZpcm9ubWVudHMKKworKGRlZnVuIFRlWC1mb2xk LWZvcm1hdC10aXRsZWQtYmxvY2sgKF9lbnYgYXJncykKKyAgIkZvcm1hdCBmb2xkIGRpc3BsYXkg Zm9yIGJlYW1lciBibG9jayBlbnZpcm9ubWVudHMuCitJbnRlbmRlZCBmb3IgdXNlIGluIGBUZVgt Zm9sZC1iZWdpbi1lbmQtc3BlYy1saXN0Jy4gIEVOViBpcyBpZ25vcmVkLgorQVJHUyBpcyBhIGxp c3Qgd2hvc2UgY2FyIHdpbGwgYmUgdGhlIGJsb2NrIHRpdGxlLgorCitFeGFtcGxlOiBcIlxcYmVn aW57YmxvY2t9e1RoZW9yZW0gMX1cIiBmb2xkcyB0byBcIlRoZW9yZW0gMVwiLiIKKyAgKGNhciBh cmdzKSkKKworKGRlZnVuIFRlWC1mb2xkLWZvcm1hdC10aXRsZWQtYWxlcnRibG9jayAoX2VudiBh cmdzKQorICAiRm9ybWF0IGZvbGQgZGlzcGxheSBmb3IgYmVhbWVyIGFsZXJ0YmxvY2sgZW52aXJv bm1lbnRzLgorSW50ZW5kZWQgZm9yIHVzZSBpbiBgVGVYLWZvbGQtYmVnaW4tZW5kLXNwZWMtbGlz dCcuICBUaGUgYXJndW1lbnRzCitFTlYvQVJHUyBhbmQgdGhlIGJlaGF2aW9yIGFyZSBhcyBpbiBg VGVYLWZvbGQtZm9ybWF0LXRpdGxlZC1ibG9jaycsIGJ1dAordGhlIGZvbGRlZCB0ZXh0IGlzIGNv bG9yZWQgdXNpbmcgYFRlWC1mb2xkLWFsZXJ0LWNvbG9yJy4iCisgIChsZXQgKChjYXB0aW9uIChj YXIgYXJncykpKQorICAgIChhZGQtZmFjZS10ZXh0LXByb3BlcnR5IDAgKGxlbmd0aCBjYXB0aW9u KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoOmZvcmVncm91bmQgLFRlWC1mb2xkLWFs ZXJ0LWNvbG9yKSBuaWwgY2FwdGlvbikKKyAgICAoZm9ybWF0ICIlcyIgY2FwdGlvbikpKQorCis7 Ozs7OyB0aGVvcmVtLWxpa2UgZW52aXJvbm1lbnRzCisKKyhkZWZ1biBUZVgtZm9sZC1mb3JtYXQt dGhlb3JlbS1lbnZpcm9ubWVudCAoZW52IF9hcmdzKQorICAiRm9ybWF0IGZvbGQgZGlzcGxheSBm b3IgdGhlb3JlbS1saWtlIExhVGVYIGVudmlyb25tZW50cy4KK0ludGVuZGVkIGZvciB1c2UgaW4g YFRlWC1mb2xkLWJlZ2luLWVuZC1zcGVjLWxpc3QnLiAgRU5WIGlzIHRoZQorZW52aXJvbm1lbnQg bmFtZSwgQVJHUyBhcmUgaWdub3JlZC4gIFJldHVybnMgYSBzdHJpbmcgb2YgdGhlIGZvcm0KK1wi RW52aXJvbm1lbnQgXCIgb3IgXCJFbnZpcm9ubWVudCAoRGVzY3JpcHRpb24pIFwiIgorICAobGV0 KiAoKGVudiAod2l0aC10ZW1wLWJ1ZmZlcgorICAgICAgICAgICAgICAgIChpbnNlcnQgZW52KQor ICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAgICAgICAgICAg KGNhcGl0YWxpemUtd29yZCAxKQorICAgICAgICAgICAgICAgIChidWZmZXItc3RyaW5nKSkpCisg ICAgICAgICAoZGVzY3JpcHRpb24KKyAgICAgICAgICAoY2FyIChUZVgtZm9sZC1tYWNyby1udGgt YXJnIDEgKHBvaW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFRl WC1mb2xkLWl0ZW0tZW5kIChwb2ludCkgJ21hY3JvKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJyg/XFsgLiA/XF0pKSkpKQorICAgIChjb25jYXQKKyAgICAgKGZvcm1h dCAiJXMgIiBlbnYpCisgICAgICh3aGVuIGRlc2NyaXB0aW9uCisgICAgICAgKGZvcm1hdCAiKCVz KSAiIGRlc2NyaXB0aW9uKSkpKSkKKwogOzs7IFV0aWxpdGllcwogCiAoZGVmdW4gVGVYLWZvbGQt bWFrZS1vdmVybGF5IChvdi1zdGFydCBvdi1lbmQgdHlwZSBkaXNwbGF5LXN0cmluZy1zcGVjKQot LSAKMi4zOS4zIChBcHBsZSBHaXQtMTQ1KQoK --0000000000009b07ca06245ba1cd-- From debbugs-submit-bounces@debbugs.gnu.org Mon Oct 14 16:20:14 2024 Received: (at 73724) by debbugs.gnu.org; 14 Oct 2024 20:20:14 +0000 Received: from localhost ([127.0.0.1]:44463 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1t0RY5-00045T-Ha for submit@debbugs.gnu.org; Mon, 14 Oct 2024 16:20:13 -0400 Received: from eggs.gnu.org ([209.51.188.92]:44606) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1t0RY2-00045E-NJ for 73724@debbugs.gnu.org; Mon, 14 Oct 2024 16:20:11 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1t0RXf-0002yk-SL; Mon, 14 Oct 2024 16:19:47 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To: From; bh=dGAnTHzwnyBBOfUVKhi5g1VxeCdPMNQORu6CzWJj+ho=; b=TQLc4yab80N1w2QDELc4 UOVPX8L5WCDnTKrFjINZV4h19II5ogCqqGXZq6j3C6kzMsHrFzNsDHrdan6oVyour5NOwxQ7QoRvn pbtws5NeXvPgPjJT7CH0oIsm+LKPVn72I/0R9iu68F9De/ebC1MQ6v/dA4AnO6E9jSnqHRC3Rf3Hi 9Yn0Kv3yzqLjgm53DUlKW5ImInIJOlU3c5iZKvOYhgwkgOSSt2tlXqC8NzcKfS+RAA3vSE7Ei4uP5 WTyWRa9MN3xwRbWCJm9dQNAjY8OJo/NP3C8fZd/63o6kuXPOyqej52Pj6/eFeZQVj4GRFNsZxXHGK Vh8qWu4QFTvubA==; From: Arash Esbati To: Paul Nelson Subject: Re: bug#73724: [PATCH] Add folding support for begin and end macros In-Reply-To: (Paul Nelson's message of "Sun, 13 Oct 2024 15:23:39 +0200") References: Importance: high Date: Mon, 14 Oct 2024 22:19:43 +0200 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 73724 Cc: 73724@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi Paul, Paul Nelson writes: > Indeed, I had in mind (but forgot to write) that I left the manual doc > as a stub until the general behavior was approved. I've now attempted > a proper manual entry. Thanks, see below for some comments. > The relevance of TeX-fold-begin-display and TeX-fold-end-display is > that it is only through these functions that > TeX-fold-begin-end-spec-list "plugs in" to the user option > TeX-macro-spec-fold-alist. If the user modifies that option to have > different display specifiers for begin and end, then > TeX-fold-begin-end-spec-list becomes irrelevant. I've tried to make > this point clearer in the updated doc, but any further feedback is > welcome. Thanks, I think I get it now. > I had internalized that "mandatory arguments" and "arguments in > braces" were the same thing in LaTeX, but could be mistaken on this. > I've adjusted this docstring (and related ones) to say simply > "mandatory macro arguments", which seems consistent with what is > written elsewhere in tex-fold.el, but would welcome other suggestions. "mandatory macro arguments" sounds good, my question reg. braces was just to clarify what we're talking about. > QUESTION: should these features be considered LaTeX-specific, hence > added to LaTeX-fold-macro-spec-list and perhaps moved from tex-fold.el > into either latex.el or some new file latex-fold.el? I personally > find the current organization reasonable, but am open to suggestions > here. tex-fold.el is LaTeX-centric in general, so I also think we can keep the current organization. > From bb03a3a8da307b65de8457b6ce0a99176469fe8b Mon Sep 17 00:00:00 2001 > From: Paul Nelson > Date: Sat, 5 Oct 2024 14:51:32 +0100 > Subject: [PATCH] Add folding support for begin and end macros > > diff --git a/doc/auctex.texi b/doc/auctex.texi > index d8e92e80..e5f08749 100644 > --- a/doc/auctex.texi > +++ b/doc/auctex.texi > @@ -2880,6 +2880,82 @@ replacement specifier given by the default value of > @code{TeX-fold-macro-spec-list}). > @end defopt >=20=20 > +@defopt TeX-fold-begin-end-spec-list > +List of replacement specifiers for @samp{\begin@{@var{env}@}} and > +@samp{\end@{@var{env}@}} macros. This option is used only when the > +replacement specifiers for @samp{begin} and @samp{end} macros in > +@code{TeX-fold-macro-spec-list} are set to their default values: > +@code{TeX-fold-begin-display} and @code{TeX-fold-end-display}, > +respectively. > + > +Each item in the list consists of two elements: > + > +The first element is a cons cell @code{(@var{BEGIN} . @var{END})}, where > +@var{BEGIN} and @var{END} are the display specifications for > +@samp{\begin@{...@}} and @samp{\end@{...@}} macros, respectively. Each > +specification can be either: I'd rewrite this part as: +Each item in the list consists of two elements. The first element is a +cons cell @code{(@var{BEGIN} . @var{END})}, where @var{BEGIN} and +@var{END} are the display specifications for @samp{\begin@{...@}} and +@samp{\end@{...@}} macros, respectively. Each specification can be +either: > +For example: > + > +@lisp > +((("=E2=86=B4" . "=E2=86=B2") ("itemize" "enumerate" "description" "fram= e")) > + ((TeX-fold-format-theorem-environment . "=E2=97=BC") > + ("note" ("theorem" "thm")))) > +@end lisp Have you tried to typeset auctex.texi after this change? The .pdf file looks like this for me: --=-=-= Content-Type: image/png Content-Disposition: inline; filename=texinfo-pdf-out.png Content-Transfer-Encoding: base64 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 s3mfhYnFZIv5FjUWv1hSLNmWmZabLC9avrGytkq0Wm5Vb9VtrWfNsy6wrrG+Z0Oz8bWZZVNpc8OW aMu2zbbdanvNDrVztcu0q7C7ao/au9mL7bfat40jjPMYJxlXOe6Wg7oDxyHfocbhoSPTMdyx0LHe 8cV4i/HJ49eOvzj+s5OrU47TLqe7E7QnhE4onNA44U9nO2eBc4XzjYm0iUETF01smPjSxd5F5LLN 5bYrw3Wy63LXZtdPbu5uMrdatx53C/dU9y3ut9g67Cj2SvYlD4KHv8cijyaPd55unnmehz3/8HLw yvba69U9yXqSaNKuSY+9zbz53ju8O31YPqk+3/t0+pr68n0rfR/5mfsJ/Xb7PePYcrI4+zgv/J38 Zf7H/N9wPbkLuGcCsIDggOKA1kDtwPjA8sAHQWZBGUE1QX3BrsHzgs+EEELCQtaG3OIZ8QS8al5f qHvogtDzYephsWHlYY/C7cJl4Y2T0cmhk9dPvhdhGSGJqI8EkbzI9ZH3o6yjZkWdiCZGR0VXRD+N mRAzP+ZiLCN2Ruze2Ndx/nGr4+7G28Qr4psT6AkpCdUJbxIDEtcldk4ZP2XBlCtJBknipIZkUnJC 8u7k/qmBUzdO7UpxTSlK6ZhmPW3OtMvTDabnTD85gz6DP+NIKiE1MXVv6kd+JL+S35/GS9uS1ifg CjYJngv9hBuEPSJv0TrRs3Tv9HXp3RneGeszejJ9M0sze8Vccbn4ZVZI1vasN9mR2XuyB3IScw7k knNTc49LtCXZkvMzjWfOmdkmtZcWSTtnec7aOKtPFibbLUfk0+QNeTrwR79FYaP4RvEw3ye/Iv/t 7ITZR+ZozZHMaZlrN3fF3GcFQQU/zMPnCeY1zzedv2T+wwWcBTsWIgvTFjYvMl+0bFHX4uDFVUuo S7KX/FzoVLiu8K+liUsblxktW7zs8TfB39QUaRTJim4t91q+/Vv8W/G3rSsmrti84nOxsPinEqeS 0pKPKwUrf/puwndl3w2sSl/Vutpt9bY1xDWSNR1rfddWrdNaV7Du8frJ6+s2sDYUb/hr44yNl0td Srdvom5SbOosCy9r2Gyxec3mj+WZ5Tcr/CsObDHcsmLLm63Cre3b/LbVbjfaXrL9/ffi72/vCN5R V2lVWbqTuDN/59NdCbsu/sD+oXq3we6S3Z/2SPZ0VsVUna92r67ea7h3dQ1ao6jp2Zey79r+gP0N tQ61Ow4wD5QcBAcVB387lHqo43DY4eYj7CO1Ry2PbjnGOFZch9TNreurz6zvbEhqaDseery50avx 2AnHE3uaTJsqTuqeXH2KemrZqYHTBaf7z0jP9J7NOPu4eUbz3XNTzt04H32+9ULYhUs/Bv147iLn 4ulL3peaLntePv4T+6f6K25X6lpcW4797PrzsVa31rqr7lcbrnlca2yb1Haq3bf97PWA6z/e4N24 cjPiZltHfMftWym3Om8Lb3ffybnz8pf8Xz7cXXyPcK/4vub90geGDyp/tf31QKdb58mHAQ9bHsU+ uvtY8Pj5E/mTj13LntKelj4zeVbd7dzd1BPUc+23qb91PZc+/9Bb9LvW71te2Lw4+offHy19U/q6 XspeDvy58pX+qz1/ufzV3B/V/+B17usPb4rf6r+tesd+d/F94vtnH2Z/JH0s+2T7qfFz2Od7A7kD A1K+jD/4K4AB5dEmHYA/9wBASwKAAc+N1Kmq8+FgQVRn2kEE/hNWnSEHixsAtfCfProX/t3cAuDg LgCsoD49BYAoGgBxHgCdOHGkDp/lBs+dykKEZ4PvYz6l5aaBf1NUZ9Kv/B7dAqWqCxjd/gsgCIL+ sa4fZQAAAIplWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIA AIdpAAQAAAABAAAATgAAAAAAAACQAAAAAQAAAJAAAAABAAOShgAHAAAAEgAAAHigAgAEAAAAAQAA BBKgAwAEAAAAAQAAAK4AAAAAQVNDSUkAAABTY3JlZW5zaG90CoviGwAAAAlwSFlzAAAWJQAAFiUB SVIk8AAAAddpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRv YmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDYuMC4wIj4KICAgPHJkZjpSREYgeG1sbnM6 cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAg PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0 cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNp b24+MTc0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5z aW9uPjEwNDI8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpVc2VyQ29tbWVu dD5TY3JlZW5zaG90PC9leGlmOlVzZXJDb21tZW50PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4K ICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KpEOdJAAAABxpRE9UAAAAAgAAAAAAAABXAAAAKAAA AFcAAABXAAA4DNOh+GMAADfYSURBVHgB7J0FmB1F9vYLAktwtwAhuIbg/s8uQYK7ZnexRZagy6JB lgDB3SG4WwS3oAGCu2uQECRAEixofeetb09t3Z7uO23XZt56npnu21366+quqlOnTk1mxRk6EiAB EiABEiABEiABEiABEiABEiABEkhBYDIKElJQohcSIAESIAESIAESIAESIAESIAESIAFHgIIEVgQS IAESIAESIAESIAESIAESIAESIIHUBChISI2KHkmABEiABEiABEiABEiABEiABEiABChIYB0gARIg ARIgARIgARIgARIgARIgARJITYCChNSo6JEESIAESIAESIAESIAESIAESIAESICCBNYBEiABEiAB EiABEiABEiABEiABEiCB1AQoSEiNih5JgARIgARIgARIgARIgARIgARIgAQoSGAdIAESIAESIAES IAESIAESIAESIAESSE2AgoTUqOiRBEiABEiABEiABEiABEiABEiABEiAggTWARIgARIgARIgARIg ARIgARIgARIggdQEKEhIjYoeSYAESIAESIAESIAESIAESIAESIAEKEhgHSABEiABEiABEiABEiAB EiABEiABEkhNgIKE1KjokQRIgARIgARIgARIgARIgARIgARIgIIE1gESIAESIAESIAESIAESIAES IAESIIHUBDILEiZOnGjuuuuu1Akkedxoo43MDDPMkHSb1zsogdtvv92MGjXKjBs3znz99ddm/Pjx 5sYbbzRzzDFHBy0xi0UCJEACJEACJEACJEACJEACHYtAZkHC22+/bXr16mV+/vnnWBJTTjml6dKl i78Hf9Za/1tPHn30UdO7d2/9yWMnIdC/f39z/fXXmwkTJvgSv/fee2ahhRbyv3lCAiRAAiRAAiRA AiRAAiRAAiTQvAQyCxK0KL///rsZMWKEWX/99fWSGTp0qNliiy38b5xMmjTJfPzxx+aDDz4wJ598 snnkkUfc/auuusrsuOOO7pz/OhcBCJYGDhzo/lDyd9991yy88MKdCwJLSwIkQAIkQAIkQAIkQAIk QAItSiC3IEHLO8UUUxgIFeA+/PBD06NHD3ee9G/AgAHmxBNPNMcee6w56qijkrzxegcnACHUuuuu 60pJQUIHf9gsHgmQAAmQAAmQAAmQAAmQQIciUFiQgKUMv/32m4MyevRoM//881cF9MMPPzhhw6ab bmouu+yyqn55s+MSePjhh02fPn1cAbm0oeM+Z5aMBEiABEiABEiABEiABEig4xGouyABCA844ADz 6quvmgcffLDjEWWJUhGgICEVJnoiARIgARIgARIgARIgARIggaYj0BBBwuWXX24GDRpk3n///aYD wgzVhwAFCfXhzFRIgARIgARIgARIgARIgARIoGwCNRckDBkyxJx66qnmqaee8nl//vnn3fr4b775 xl/TE1z78ssvzYILLmj+9Kc/6eWGHrHDAAxGduvWzcw666x1yQt2u8BSkemnn96lW5dE65hIVkFC I55BHXEwKRIgARIgARIgARIgARIgARJoGQI1FyRceOGF5qKLLjIvv/xyIhQIDo444giDLSGhpaAG HFdccUVz+OGHG9hTmGyyyXz4Z555xhx55JFm3Lhx/g+7QKy88spu2cT9999vZpxxRrP33nu7eH3A DCe//PKLMwg5fPhwgy0vJ598cmdUcq211jL777+/2XjjjX1s55xzjnnhhRfMNNNM47a+/PXXX91u FcjD2Wef7fxBeHLWWWeZqaee2qhdiR9//NFsv/32ZqONNvJxPf744+boo492LKaddloDPzPNNJPZ fPPNzSmnnGJmmWUW71dPTjjhBHPfffd5FhDG/PTTT26njGOOOcaMHDnSjB071sw555xmvfXWc7sl dO/e3QW/4YYbzPnnn++WmqCMyyyzjNlwww3NQQcdVLGNJzxjSQrK8fXXX7u0Jk6c6PI3ePBgc8UV V5i33nrLbQu6yCKLOD7wP8ccc2g2K45pBAlZnoFG/sYbb7jyzD333Obggw82U001ld7ikQRIgARI gARIgARIgARIgARIoAwCshVfISeDfiv5cH8yg14R1x9//GHFMr+VwWnF9fCHDPrtXHPNZWVwbS+4 4AIrQgUrA0j72GOP2V69erl4Dz300DCIFUGC3Wyzzex8883n05bBrItHBuZWtqD0159++umKsGl+ yFaVVoQYLg7E98UXX1gxEmll0G1lIG9lwG2RnjoRFlgRLLh7ygLHVVZZRb3YUaNGWREM+HyJYMTK lodWDE56P2CB61tvvbWVHTDcdZmJt3vssYcLJ4IAK0IB719PZFtNx7lr164+foSfbbbZrGyxaZ98 8kn72muv2W233dbdl8G9K89hhx3m8nzxxRdbEQLYe+65x4VB3kUIoNH7owgX7Nprr21FU8Sns8km m7g49tlnH3v77bdbEeh4dkgf8ca5hx56yMchxhbbeMn6DDSCpZde2scru4PoZR5JgARIgARIgARI gARIgARIgARKImCKxhMKEmRm3g22r776aotBXO/evd2gLkmQ8NJLL1mEx8AUg9Cok5lvu+yyy7o4 zj333OhtO378eCeAwMBXlkI44YJsRWkxQNYB/d13390mXLULsgOFT3ONNdawiC901113nYu7S5cu FoPd0EEIgrJq2qLJEN62GIjj3qqrrmpF86LiHn6sttpq7j4EKKLVUHFfNCHcvXnmmccJWipu/veH aBb4tCHEkCUlFd4glICgAnno27evnX322e0nn3xS4Ue0G9x90a6wX331VcU9/SHbdvp0RFvCvvji i3rLHb/77ju75pprOj+i+WA//fTTivv4UU2QkPcZ4Fkh38pf7HC0SZcXSIAESIAESIAESIAESIAE SIAEihEoVZAgauQWs+KhcAGDujhBAgZ9shTBDfowA5/kIGBAHNACeOCBB9p4w2BYB45vvvmmuy9L Hiy0GE4//XQLrYgsTpYf+PhEjT82KDQJkOZ+++3X5j60MsSOgrsPIYgsMXB+xowZY6EJgLJGhQQa STgIll0t9LI73nTTTT5fsvyh4p7+uOuuu7wfaFREhSDw16NHD+9HliNoUH+84447/P0kIYwsV/F+ HnnkER82PIGgBM8MnHr27NkmL9UECUWeAYRZ0NyA4CUqJAnzx3MSIAESIAESIAESIAESIAESIIF8 BEoVJOjSBgzesRwAA1UxFhgrSBg2bJgfjF555ZWJucdAfLrppnN+N9hggzb+MGjEYBUD5zIcZtAR H5YhxA3Ekcbuu+/u/Cy33HKxSWKJgA6id911VyuGE522wUorrWTF5kFsGFzs16+fL0s0bQgWkC/8 DR06NDYOpKt+xJ5CrB+xkeD8QDPh+++/b+PnnXfe8XFgKUecCwUJSVoLCLfVVlv5uO69996KqKoJ Esp4BhWJ8QcJkAAJkAAJkAAJkAAJkAAJkEBpBGoiSAhzJ4YJYwUJAwYM8IPMV155JQzS5lw1FzA4 nzRpUsV9FSTAFkBRJ0YKfZ4WX3xxi7X7cX8oEwbsUOtPcmIw0ce1xBJLOG2EOBX/aHgsj1AHAQS0 IqBpcNppp/n4sHQkzoWChCRtAjHs6OJZaKGF4qKwsK2gwggs44hzaQUJsHmhcUW1N5IECWU+g7i8 8xoJkAAJkAAJkAAJkAAJkAAJkEAxAjUXJEDbIG5pA7QLdJAZZy8gLFafPn28X8yYh04FCbK7Q3g5 1znU9DVPOC6wwAKxfzDyiHuhMcVogtAogKFJjQ8GDdM4CEpggBEGI6HNgfDzzjuvXX755X1cMGgY 50JBwnPPPRfnxcqODC4e2GmIc7D7oHm+9tpr47zYtIIE2UnCxwWjjKFLEiSU+QzC9HhOAiRAAiRA AiRAAiRAAiRAAiRQDoGaCxJgiA8G/KIOav46YI2z2h/6DwUJ7777bnjLrYdHPMcdd1zF9Tw/woHv dtttlyeKijC33HKLL+Niiy1mZbvEivvRH9hhApoCKA+ECCeddJIzKAl/H330kY8rjUZCMwgSQqEA BBihSxIklP0MwjR5TgIkQAIkQAIkQAIkQAIkQAIkUJxAzQUJSVnccsst/cAYuzdUc7q0AcYcsTVk 6FQjoQxBArYqVOEGbAkUcVjGgLxh5wfdLnGbbbZJjBICkhlmmMGlDw2Ezz77rMJvKwoSoFmhPLGU JXRJgoQyn0GYHs9JgARIgARIgARIgARIgARIgATKIdAwQQKMAeog89JLL00sDYwtTj311M4vtBii rkxBAnZTmHvuuV1aMPBYzTAitigcMmRINDvuN2wbYOnA6quv7mw6nHfeeb6sZ5xxRmyYnXbayfu5 //772/h5/fXX/X3VSIAhx1tvvdX7bbalDbCLoM84aiAySZBQ1jPwUHhCAiRAAiRAAiRAAiRAAiRA AiRQKoGGCRI+//xzLyDYfPPNEwuFQbUORs8///w2/soUJCDyo446yqcXHfyGiWNrSWznGOf22GMP d2/s2LH+NpZKoBzYGnPkyJH+up7AuCPuQ2gS3bEBfmD4UDmojQQs+Rg8eLBGYRshSIjarNDMwGii aljMP//89rvvvtNb7pgkSMDNIs8A+TnwwAPtqaee2kZ7pSID/EECJEACJEACJEACJEACJEACJJCL QCFBAga82EZQB7hJg8qknN122222S5cuFksW4mbhv/32W7vUUku5+Ndaay2LbSWjDjsnIH3sklCG w9KJ9ddf38UJI5EYEEcdhCAzzjhjmzQxm96/f38XFoKG0ME+gto/gNbDxx9/HN52SyBQDggaJkyY UHEP5Q4NN1500UXu/rLLLmtvvvlm73f48OEubcTzxBNP+OvhyTrrrOP8JG1dGS4tuPzyy8Og/jw0 tojdMuKey7777uvSQf148MEHfVg9wXaQWm+gbRG6Is+gV69ePt6kLTDDtHhOAiRAAiRAAiRAAiRA AiRAAiSQjUBmQQIGxJipv+aaa+wuu+ziB20YFGKGHIPcG2+80Q4bNizVjLCuo+/ataubdf/+++/d jPyoUaNs7969XfywkfDJJ5/4ksF+AAwZhjPXmPXGEgIMrN9++23vN8/JDz/84JYloEwrrLCC0yDA UgYMmEeMGGG7d+/uBv5YwgAHA4EDBw50Ozno4HiHHXawCKPuySeftNgGUu/POuusFsscUA4s38Dy Dr237bbbWnCAA++99trL5Ud5Y4kHljdA6IBdFsAKGguhUcpNN93U3nDDDfaFF15w+YbQ5txzz7VY soF0YLcBW0piacT48ePt6NGj3XPr16+fzwcEH5dcckkbQUAoSICgAPlSjQMsB1EhAp4p0gwdDEpe f/31tm/fvj6d7bff3qX96quveq9ZnwECQrCly2BQxjLsZvgM8YQESIAESIAESIAESIAESIAESMAR yCxIwEw6BmuYkZ9tttmcCj+WF+Bv9tlntxggY8cB/Ongsj3Wd999t9tKEYO/Kaec0mko4BxxYseH cECOuB5++GGnyTDttNPamWee2eUD+UG+oOEwaNCg9pJs9z60IQ4++GC/BSPSQX5QLqz9D40+YgCP QTP8oPwYrE8++eQWg2F1ULdH2RAefsAOqv8og2o9QDigGhjwg+0lUS7YWxgzZozTYsB5KAhA/LCv AMEA4kO8CItzXNttt90sDD9C6DDNNNNYaHDgOSGv+A0/2DUDxhDj8gdtkejWjaEgAcs0INhAPD17 9nQcEA80SN544w0tvj/uueeebfIKJghz0EEHeX84yfIMNCC0EJQZhCN0JEACJEACJEACJEACJEAC JEAC5RKYDNHJwLQpnAyWjWgTGJnVNqK2b2T3gobnS7QFjKj7GxmUmgUWWMDIYNmIsKKm+ZIlIi49 cFh00UXNkksu6dMToYpj1K1bNyPCAH+9nieidWJES8Il+dVXXxkRXphx48YZ0YwwImwxsrzAiACi tCw14hmUlnlGRAIkQAIkQAIkQAIkQAIkQAIdjEBTCRI6GNsOW5w4QUKHLSwLRgIkQAIkQAIkQAIk QAIkQAIkUEGAgoQKHPyRhgAFCWko0Q8JkAAJkAAJkAAJkAAJkAAJdEwCFCR0zOda01KdffbZ5oAD DnBpiP0FM88889Q0PUZOAiRAAiRAAiRAAiRAAiRAAiTQPAQoSGieZ9H0OXnggQcMBAcQJLz88ssu v2Lo0cgODM6mhexK0fRlYAZJgARIgARIgARIgARIgARIgASKEaAgoRi/ThVatsJ0hidlhwojuyxg xw8ju1eYSZMmmdNPP93079+/U/FgYUmABEiABEiABEiABEiABEigMxKgIKEzPnWWmQRIgARIgARI gARIgARIgARIgARyEqAgISc4BiMBEiABEiABEiABEiABEiABEiCBzkiAgoTO+NRZZhIgARIgARIg ARIgARIgARIgARLISYCChJzgGIwESIAESIAESIAESIAESIAESIAEOiMBChI641NnmUmABEiABEiA BEiABEiABEiABEggJwEKEnKCYzASIAESIAESIAESIAESIAESIAES6IwEKEjojE+dZSYBEiABEiAB EiABEiABEiABEiCBnAQoSMgJjsFIgARIgARIgARIgARIgARIgARIoDMSoCChMz51lpkESIAESIAE SIAESIAESIAESIAEchKgICEnOAYjARIgARIgARIgARIgARIgARIggc5IgIKEzvjUWWYSIAESIAES IAESIAESIAESIAESyEmAgoSc4BiMBEiABEiABEiABEiABEiABEiABDojAQoSOuNTZ5lJgARIgARI gARIgARIgARIgARIICcBChJygmMwEiABEiABEiABEiABEiABEiABEuiMBChI6IxPnWUmARIgARIg ARIgARIgARIgARIggZwEKEjICY7BSIAESIAESIAESIAESIAESIAESKAzEqAgoTM+dZaZBEiABEiA BEiABEiABEiABEiABHISoCAhJzgGIwESIAESIAESIAESIAESIAESIIHOSICChCZ+6n/88Ye5+OKL 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 QDGtadeEGDBnXVTMARUUxJwDoiAGVBRzwNTv/OvtqVfTt2emu2vunbl3/vV99/ZMd8Vfne7pOnXq 1GyRBMNAAiRAAiRAAiRAAiRAAiRQ1wTuu+8+M2PGDHPZZZeZV155xbRv396cfPLJZt555zW77767 ad26dV3zYeNJgAT+n8BsVCT8Pwx+IgESIAESIAESIAESIIF6JPDcc8+Zrl27Fm36ddddZ/r27Vv0 Oi+QAAnUFwEqEuqrv9laEiABEiABEiABEiABEmhA4OOPPzZ77bWX+euvv8y3335bcH2BBRYwd911 l+nQoUPBeX4hARKoXwJUJNRv37PlJEACJEACJEACJEACJEACJEACJJCZABUJmZExAQmQAAmQAAmQ AAmQAAmQAAmQAAnULwEqEuq379lyEiABEiABEiABEiABEiABEiABEshMgIqEzMiYgARIgARIgARI gARIgARIgARIgATqlwAVCfXb92w5CZAACZAACZAACZAACZAACZAACWQmQEVCZmRMQAIkQAIkQAIk QAIkQAIkQAIkQAL1S4CKhPrte7acBEiABEiABEiABEiABEiABEiABDIToCIhMzImIAESIAESIAES IAESIAESIAESIIH6JUBFQgvv+8mTJ5tTTz3V/Prrr+bmm282rVu3ztTi0PSZCmNkEiABEiABEiAB EiCBZk/gzTffNEcffbTp0qWLGTJkiGnVqlWzbxMbQAIkUEiAioRCHi3q25gxY8yuu+5qfvzxRzPb bLOZKVOmmPbt26duY2j61AUxIgmQAAmQAAmQAAmQQIshcM0115j+/fvb9qy77rrm9ttvNx07dmwx 7WNDSIAEjKEioYVKwT333GN69+5tZs2aZeaaay5z4403mp49e6ZubZr006ZNM9OnT0+dJyIutNBC ZuWVV86Upljkr776ynz44YcmiiIXpW3btmaZZZax56AN//nnn901aMPXWmstM+ecc7pzjfXhzz// NK+88op5//33zS+//GJWW201s+GGG1qFTqXLfPfdd813333XINtll13WtGnTpsH5tCfA7p133jF/ /PGHTQKu4NtUoSkZNlWbWE5DAlB0vvfee07O9B5uGJNnSKA6BD766CP7W7rSSitVpwIslQRyEvj6 66/NiBEjzMILL2wGDBjg3kFGjx5txo8fb/r161dycB+S/rfffjODBg0yl19+ua09nu0oM+S9JCcG JiMBEmgsAjIIY2hhBMaNGxfNMcccGF1HCyywQPT4449namGa9GPHjrX5o4ysf5dddlmm+hSLvMIK KzQoe7755otEeRLddtttDa6hnrLMo1h2FTsvP9CRvHA2KH+TTTapWBma0dNPP92gHL8/nnvuOY2a +SgvGA3ylpeAzPnkSdCUDPPUj2kqR0AUnA3k7I033qhcAcyJBAIIXHfdddHss89uZVQGRAE5MSkJ ND2BwYMHu+frI488YivwxRdfRDLBZM9vtdVWJSsVmh6Zjxw50t1DMqkSzZw5s2SZvEgCJNB8CGDm lqEFEfj999+jNddc0/5AiAY6eumllzK1Lm36a6+91v04+QPXNJ+POeaYTHUqFnmdddZpUIf11lsv +uuvvyIMRON1EUuE6JZbbimWXUXOP/nkk5FYPriyF1tssQjlal1keUlFytFMnnnmmWjuued2+Ws5 eoRCJW84/PDDI1kSU5C3+NnIm13qdE3NMHXFmklEKA6vvPLK6Pvvv69KjfGSeMkll0RplU4HHHBA gYxBdu+7776q1J2FkkCcwM477+zkc5999olf5vcaJ1Dt52G18eyyyy5OfvG7gID3Bn1HkKUGJasY ml4zv+KKK1yZ2223nZ7mkQRIoJkToCKhmXdgvPoXXnihe1hfddVV8ctlv6dN7ysSZHlBJCZs9u/t t9925d9www3uPK7/7W9/s9cqpUhAY5Bv165dXZmvvfaaa+PZZ5/tzmMmSUzl3bXG+rDNNtvYMued d16rzEA5xx13nD0nyyqskqPSZUNxovxx9PsgRJGAesqyhkiWTjiOTaFIqAbDSvdJNfNbcsklbX+d eeaZVanG8OHDbflQcKW956DAfOGFF5ycUZFQla5joQkEMPjCoAszuHfddVdCDJ6qZQLVfh5Wm81+ ++3nnqv6PgCLL1UkiO+CklUMTe9nvueee7py7777bv8SP5MACTRTAlQkNNOOS6r2Z599Zpcy4Adi o402yjxozZL++uuvdz8ISKdBfAK48/qjpddgIYG6YWBdyeCb9++00042a1nfHy2xxBK2PHEwaQfa lSyzWF6qLNlrr70Konz88cd2UF5wspG+lOqDPEVCUaQvHU2hSKgFhnk41UoaKLHQXyeccEJVqvTP f/7TyYvsFpO6Dq+++qpLR0VCamyM2AQEPv3002jGjBlNUBKLqDSBaj8PK92erPnBslB/vx9++GGb /JNPPnHnunXrVjLL0PR+5niXUAtKWI8ykAAJNH8CVCQ0/z50LTjttNPcj0Nas2KXWD5kSS9O+OwS CvwY+LOOpQax//M//xOJw75IHDn6xVbk8/bbb+/a/uyzz0b/+te/3Hc156tIQWUy0R/soUOHlonZ eJdL9UGeUptakVALDPNwqpU01X5xpiKhViSB9SABEqj287DaPXDKKae4d6GJEyfa6oiDW3dujz32 KFnF0PTxzNVCE7/zzz//fPwyv5MACTQzAty1QZ5mLSWsv/765sUXX7Se9bGjQtYQmh7lTZ482ay4 4oq2aLFIML169UpdDZmFNA8++KARE2czdepUs/jiixtZn2oOOuggs+qqq5bMR5Y0GPGZAMWY3R1B LACMWEqYDh06WI/wjbF/MXZjOOqoo4ysCXd1u+OOO+znNdZYw+7UoBdEC29OPvlkx0bPx48y428e ffRRI04SzQ8//GC9KcsPvfWsPP/888ejJ37P2wdgju2ZULbmsfHGGxtR0pjVV1/dloX6yTrhxHLz nKwFhieeeKLd/UPrj61SN9tsMyOKL7uTwH/+8x8zYcIEe29hdwxx8mk9UcuSGtv/X375pd0Z5dBD DzWQYbGQsftl9+3b1xx44IEGO6DIMh+7/aqsDbVpINvxAJmV5TjWqzVkF7tliI8N065dO3sf7L// /tbzdjwd7rN7773XyBIXe0lMRg12vFhqqaVsO/z44jTOyJpXs/fee/ungz6DiSxXMuKTweaDXURe f/11+3n33XdvsHf4ggsuaM4999wGbcE93KlTJ5sOHBdZZBHz2GOPGVEMGjDGbi/wML7tttuWrS/i iwLRyIuqET8x9rmAe1L8MZgePXqY1q1bl8wD94IsDbP3gpgB22dR586djczOGTwnk0JeOYKsJYW0 z0NZFlJROUyqS55zWftAZkvt7kK6Swy8zENOsPtOGjnALj7HH3+83e5Y64s8ll9+eSODF3sKnupv vfVWe39oHOziM3DgQPu7gXPYoUGU6gU7/uD8PPPMY+Vv0003xdfEgGenOBM2ssTMXUcdjj76aPvs nzRpkr1X8TstS9AMnuni7M6cdNJJNn+X6L8fssphCMPGkqO0cowmow7w8i/WH5aAOI02eIZ0797d jBo1ysjafns/49mAXZBwz+F54odqPw/9utTC54suusg+H1AX7I6jO49gNy/wxjP16quvLlrV0PTx jHEP6M5duM/EAXY8Cr+TAAk0JwLNTPHB6hYh8M033zjHePJSVCRW8dOh6TXnPLPhKFsGNk5DLvdP wWd4zJb9iLWIokc4woqnlR/IovFDL8CyIl5eqe/yg1y0SHkJjnynXvF84EAzrafjPH0AfxbY4SNe Lr77ziMrvbSh2gzlxSqxzVgPLdt3RvAwncREBqLR/fffn3jNj4+lNv53fN5tt90ayAH8XMDpVTyu /x07gYiCsEFaUZaVTOfngc9dunRpkEfICX+ZU7ysYt/VxNYv11/asMoqqxRtU7ldX2Tg4pY1JZWP NcGypZlfdMFnUQZGMjgpWn6S75kQOYo7xcz6PBwzZkzRumr708phAYiAL3n6QJSWDdohCswG57RN cTmQLe4S48pg3bVElECJcY488kgX54wzzkiMg3LLzd4W+x2DhZoMeguepdoOHEWR4MrXD3nkMIRh peUoqxyj3aIwasAeS91ku8AG58ENzz7Mrvuh2s9Dvy618Bk7JqisYbcGDaLMtudFyaWnEo+h6ZMy FeW4LVuUqEmXeY4ESKAZEaBFgjxhW0LArI0MNm1TZGeCzDOOoemVoc5k43saiwTMnGJmAbOGCJjt Fec+RvwaGMxQYlZR/B3YvY8xI7HrrrvaeEn/xATfyADEatlxHTNR0MBjxqkxwrfffmvEjNvNxKIM zEYhrL322ka2e7Sf8U+2pbSzYosuuqg7px/AALOcMnC1p2SgY8QpkZ01xQwTLBQQZABoxAO1zcue KPIvax+Iczw7+47sMAOEGWvUH+xgYYH6aai0RUK1GWIW/6yzzjKff/65bSL6APtcI2AGEhYTCKJQ sHKKa+CCgHsG1gqQS+07yFr//v3NE088YUShY+PhH2YxxemXEWdt9pysUTXLLrusu464OlMkL852 323IPf5gbSA7Wdi4uC/EPNXmpYnRR5ipU4sE7BmOWV3Uecstt9Ro9oj+hYVLsVnwgsgpv2Dm+YIL LjA//fSTTeEzPPjggxvcf7gHYJ0Tvy99iwQtGpZIsCCQ31Rz6aWX2nttoYUWMuCHeyoeYP2BGUwE WF/A8gL3IWRYtvGzViW4JkuyrLUCrE/8gL5EeQiwIjpALBhgJYF7CumxpzryxbNN/KC4pCFyhLzx 3EPI8zyEjJ5//vkVkUPXoIAPefsAz7qHHnrIyGDHWkb5VUgjB9OnTzeYPcUs/p133mmTw5oNFiyy xaj9/sADDxjZAs8+p9FnsAZA/8L6CL8XCLKzjr0u/j3sd/yDlQ+eEbDOgtVcsYB7E7+/+szUe9GP LwpbA2umpZde2ogSzl7q06ePtcbQeHnlMIRhJeUojxyj7aIUsFYoooSwnNEXGvC86N27t32u4XkI KxWEYcOGWYsOjVft56HWo1aO+P0Q5bV9h4JMwxIBAVYBsA6I84vXOzR9PD98h3XdjTfemNt6NilP niMBEqgSgWak9GBVSxCQwabV8IoYRfIjWyJm8qXQ9Jpr1tlwMV119ZaXqQhOEv0gg4tIBnQ2jrzw +ZcSP4spucvv4osvTozjn5SlCZG8QEZt27Yt+wenjTJIKenEEvzxh1mttMHfKeOwww6LxNywIClm 3jTfcjNiSJilD+AEUp0bwrs1HFf6Ydy4cY4/6pBkkdCSGPrr+9FeOIbyfWyI6XKErav8/sUuJNo/ 2M0EQQYb7pwoEZyzT8gZ4sqAxsbTf9gdA1Yn2G4Ta1Lj4bzzznP5YRutUiHPmmB48RbT/bL3gN4n mCmGRUZS8BnmdbYIRoccckjBveA/K8Q0vEHRmAGVwZnlBOsa+EqJBzxjtK9gDeMHWAbozCfyiW+d i3tFt5yFlU78up+XzwDlpZEjpPfbmPV5WAk5DL2XQ/sADHzLlDxyAJlTixLM6sfDW2+95WRAlDjx y4nfdWcg+OLJEvReVJkTpVakzollsB1hNhgWSrIUyGVbCTkMYVgJOQqRYwUBLspNljIUMMLzEpYm uK4OljVd/Kh9UC3ns/H6NPV3UYBFkDtZwlBQNH5TZMKg5HMMCULTFxT63y+wzkHfwfKPgQRIoHkT oLPF5t1/rvYyA+N+dEu94LoEsQ+h6TW7LINYvPCpkgAv6LNmzdJsCo4ye+naljSA8CPrCx9+pLDU oVyQNegub31pKXf0zQPj+Wtaf6AZj+N/x8ukvvTiRx0vSElBZmJsPTHQlFmapCjuXJY+gOJC6xwf WGmGp59+uouTpEhoSQzjA0CZIVUMRY/64g1FE/oTQawVHDMoFTRgNxXwlhltPeWOMkMaiYWG+x7/ oKao8R1B4vHyvDjLbL+rr8pDuSMG+knBZ5hXkQClCrYy9YNveo3nVTz4cpo0gER8mEHrMyc+ABGr CscgKX+kR7/KzKiNB6VlseAzAMc0chT6PKyEHIbey6F9AJ7+IDiPHCAP8U9i+wjbzcWDrMm216A4 Sxv0dyVEkYDBXFxJnFR+JeQwhGGoHIXKsTLxFQlJz0uYxePeglKzVMjzPCyVH6+FE9DnBJ6lae6J 8BKZAwmQQGMRoCKhscg2cb6wQtAX/zQvrfHqhabX/LIMYqEU0DqLeXmELYmS/sQ5louXNJDVstFu zQ9HDLrxQlUqiHPBSMxfI+yVXO4PL6f//ve/S2Xnyk+rSBDTQpcGfgqKhZdfftnFKzcjnaUPZFmJ zXeDDTYoVnQkzi9d2Un8WxJDfwCYdtCgL96+tYjfB/56fFlqYFkmvRhrB2AAjbXC8G6NNdebb755 JA5MnQ8UDEhKhTwvzrI8IcJsdLl7QK+LY8lInMUlVsNnmFeRgBmrePjggw9KyqH6AZClE4nPEX22 wEcCng9g6gf1sQILpVJBlv7Y9OLMsmg0n0FaOQp9HlZCDkPv5dA+AFB/EJxHDpAHLH7Qx1AaidNa nHJB/W9g1jxtqIQiAdZMaUIl5DCEYagchcqxMlJFgizHamCpiDh4FiXdx5pej3meh5qWx8YhoFtK wnKMgQRIoHkToCKhefefqz1e6vGjir88DgZD02tF/AFUqcES4sNkXOuc9ihe7bWoBkcdFOPlESZz yDPtS3yDzHKe0HakVSRg5lTTYBlHsQBrDbxQIW45E820fQDrB33JgmVCsVCt7R+rwdAfAMo65WJI Cs7ri/cRRxzhzmsfQBb9UEqRID4GIgzQxQeAkwmVDf/YGIoEv46hn32GeRUJSc+OcnKIrWV9TuU+ Y7mBH9SxJpYvlQpDhgyx5UBRKevKE6P6DNLKUejzsFJymNiglCdD+wDF+IPgPHKAPKCMk90SbD+J zwKcsgHPWJWLcpZdmgbHUEUCrM3ShkrIYQjDUDkKlWPlpIoEKH6Sgqyzt30ZVwjG4+pvXLnfzXg6 fm88AnjG4j6EA2EGEiCB5k2AioTm3X+u9nihhSd5PJyhqc8aQtNreTqAQj2SXgI1Ho7iIMy91OnL XbljsVl7f006XuKx9lTziq/79+tQ6c9aZtpBMDzAaxpxUle0Ougf7F6BuBjIlApp+8DfS7pUnn5+ SRYJpeqS55ryqAZDfwAIT/xpgr54H3vssS66MoP/CT8UUyRgUCPbEzpZAANxhhUNGDAgOueccyJx 9Bdh6QTO14MiAV7/46GcIkHXTKv8lDuKg8OCIsT5peUrDl0Lzse/DB482MbD/VhsOVYeOQp9HlZC DuNtzfo9tA9Qnj8IziMHWmdYmkEGMCDVgN0RcK6UBZbG9Y+higRYFqUNlZDDEIahchQqx8pJFQmw IEoKVCQkUan9c1jKAJ8XuA932GGH2q8wa0gCJFCSABUJJfE0r4tbb721fThjzX2xF9xSLQpNj7x1 AIUfiXKKBH82Hmamn376acm/UuvHdVsvzELBWRVMtcWru+WBdelNFdBu/KUdBIsHcRsfaYopSVB3 +L3QvLHdXqmQpQ/0Bz1pLbGW4StpalGRUEmG/gCw2GyzctFj6Is38vF9VWC2JskJ3DbbbGNlIESR gCUyl1xyiXWgpfWv9NFnGLdIgNXFtdde28DZJOoQMvhBep3JhS8JLGMo9TyBw7u4PxIdLJZb2qDb tGKbuWLBZ5BWjkKfh5WQw2LtSXs+tA9QTqgcaF31uQAF+3fffWdPY/Yaz1EMdrMElY2sFm46G378 8cenLk7LCpHDEIahchQqxwqqKRQJTfE81Pbw+H8EZEcj9y4D3zwMJEACzZsAFQnNu/8Kau87TJNt 5gqupfkSmh5lZBnEwmkhvJ/jxQ7LEko53cHgA2u4kxwdwnu8DrLhmFEDTBn1vGxhpKcb9ajlpVUk QOGhDGRLuqI7QujsC/IvtQQCjcvSB6o8gtJFvYnHAckWeI5jLSoSKsnQHwDGB8FxLvo99MUb+ehu A6WUXmrNkFaRkDR4UYeNaeVT25jl6DOMD6J1BxIsPVLHlJp3yOAHeWBpid5/STPZWg52Xxg0aFDk m7zH048ePVqjFxxhpaLOFkstgfAZpJWj0OdhJeSwoLE5voT2AYoMlQOtNn5P1HmkbDUXqZ8ZLEn5 6KOPNFqqow7u8yoSspjV+wzzymEIw1A5CpVj7ZBKKxKq9TzU9uA4c+bMRCWxH6elf1ZHqLDoynof tnQ2bB8JNEcCVCQ0x14rUmc4ldL11ZjNwOxflhCaHmVlGcQifv/+/d3LP5ZkJCkT4AgSL38YJCTN JGEAjmuY/ZkxYwaytQFO7uDMB9dgNh4fuGi8Sh51IJNloAYv/JoOWzLFAxQluqyhS5cuZduRpQ9g NaJl9+jRo4GnfLBX3wyIV4uKBPCqFMM8A8DQF2/UH7Pb4IsBS5KcYltUOPdDHGwnWSpgSQTiYacP P/jb3l100UX+pYp+9p2jvvvuuwV5az/Bcgi7VPghZPCDfFCWWiFhSQmchMYDyuzWrZvlAzN8P2AL TH3OYOYaFg1+wFIgVeaAr78bhx8Pn/PIEdKFPA8rIYeoQ0gI7QOUHSoHfv3/8Y9/2L6GE0gMJPUe 8+Ok+dyUioRKyGEIw0rIUYgca39USpFQ7eehtgcTNbpjDH5r6zGMHz/ePWMPPvjgekTANpNAiyNA RUIL69Jhw4bZlyW8MPlrttM2M2967DU8btw4O8uHsvGHF7exY8dGpdaaY7YOXuk1DX70YX2AlynM IGErLFWOYObe328bn2GmrWnxsucrT7C8o2fPnu46Bk+YzY8PYNKySYqH/NBG/MEXg9Zl3333dedR T99zfzwfzKirJ3Gkx7ZyTz31VDRx4sQI67F1II/2g0s8+HVAPTDTqvXQPtA64ofc31YPg1afP7bU guIC/hqw3ET9bmh+sPhAPxezXojXLc13v/7VYIhlBMoHWxpqW7Fzgp7Htn8YSMYD0qKvkQbroDGQ AlPMiOMcBrbw1g45x0y47hgwdOhQa36v+eGlSsvFYBU7c8AnAMq9+OKL7RZneh1KB1gcQUa++uor zcIdBw4caPOCvOD+gCNVWOTA4ZvmUW4bVZdZjg+okyq+YD3x7LPPWnmC7OhA3d96EWbnkMuRI0e6 +sGpKuQMs5u4j59//nm7VErrj2dbkhxCdvV+geUAuEIZhn6CJ3/MKGsevXr1atA6/3kCx4GoE+45 bAfp84sraZBRiBxpRfI+Dyslh1qPkGPePsgjB+WeR48//ri7F9T5YjklGpbGQR713scRWwxCbiAD eh6D9fhvG35/JkyY4OLo8xM7upRKF+edVw5DGVZKjvLKMTjgeQVWeHaAORzyYWkfeCNMmzbNXt92 223t9TZt2tjveEYk/bZX+3loKy3/llxySVtfff7g96CeAiaJ1lprLcsAlkKl3onqiQvbSgLNnQAV Cc29B2P1x0u3vvDihfqmm26KxSj9NW96XXuqP5LxI9YsFwvffPNNhP3C42n87xgUjBgxwmWBQbZ/ XT/36dPHxYk7fdJBTLntE10GZT5ggKLlljqi3HLOvcBHZ6WT8sIMa5LPibR18PP0l3+giZh51R94 P55+1pdh/Y5jqa3vymAruJy2/o3FcPr06RG89/ttS/qM8n3ZQiMwyNcBs59Gt7byz2FLN2xL6J8D V1V84R7Q9eV+nHKfoTyLBwzck/pM84KypLGDbpGoZfpHDOjeeecdVwUMsvzr/mcoFqHQ8s/5nzHY jwd4jU/qFz8d5B3MkwK2ovXjxj9DGRF/CQ6Ro3gdsj4PKymH8brk/Z6nDyotB6g7/GAsscQSrj9x H5cbwOm2gvF+j39HXjgHCzAN/rKEeHz9npRO0/vHPHIYwhCcku6bPM8ztCOrHCMNlO7KR3nhqOeg 2FO/Pv51/Qy5i4daeB6iTupEE3XF8xnLHOol4L0Sylftpzw7i9ULK7aTBJobASoSmluPpagvBobL LbecfWjjBzhpOUCpbPKkx9pu/ZGIH+EdPWk2168DfmgwwMdgSmcUkQ801zvuuGMDvwCYMddlC1oe ZmD9pQHYEQHn9DqOmCHGbEclApQZ8Tr4ZelnvJzB+365gPWC/fr1c+aPSI817TCDxOx0UsDMWRZP 6Rg0Jykk0D/HHXec2zINZePFErPtkId27do5jpApDBQrEarNEC9z8Zki7Tf/GJcttB3WB/GXWjCD Cas/kEdaDIY7duzoGCLvzp07FyzlgWXKkUceGUFp5JeN7zDRhgUC+ggzcMgffgYw25YUYOXRqVMn 9wKO/NCHmOmMOxlMSh96DmVgJxBdaoDyoQyEU0/MOPoBZtBJAxjIGaw8hg8f7rZz9bngum/Z4OeJ ZRxIq9ZMWj6eL9gFw7fK8dPpZzg09XfRwDMJPGEdkjTrGSJHWqZ/zPI8rLQc+vUI+Zy1DxpDDlB/ KKBVbkptc6ttxT3l/wZp2qQjfmfVkSPSY0lbkizH0yJdKefBWpeschjCcIsttqjo8wxtyCLHiI9n g3/P+tzwOwfrrvhzVONgaSOslJJCtZ+HqBO2gUW/t23btmBSJKm+LekclsyqLyb0FSxJkp6hLanN bAsJ1BOB2dBYubkZWhiBSZMmGTENNOIzwLZM9qc3Mogw8vKdqqWh6VMVUiSSvOQb2Q7PyO4TRma+ i8RquaflR9aI+aZtoLx4NGlDUbZYRxgZCBrxs9GkZVeysGoyrEQ7ZKmQkVlvK/9iyZA7S7F4MFOn Tg3OJ28F8PMiM8AG9zRkWZQJebPKnU6WRxgZ6BtRaBpRvmTKR8zc7f2AustAJVPaSkVuCc/DkD6o BEcZtBsxrTaimK1Edk2eRy3IYWija0GOq/08DGXY3NLjvpeJICNLU2zVxe+FkYkMIxMaza0prC8J kEARAlQkFAHTEk7LLLYRc2wjazZtc8T8NtPAPDR9S2DINpAACZAACZAACZAACWQjINZ5RpbG2ERi bWnEOsiItU+2TBibBEigpglQkVDT3RNeOXH8ZmQ9mn14i9lj5gxD02cukAlIgARIgARIgARIgASa NQFYgkGZIEtfTffu3Zt1W1h5EiCBZAJUJCRz4VkSIAESIAESIAESIAESIAESIAESIIEEAlQkJEDh KRIgARIgARIgARIgARIgARIgARIggWQCVCQkc+FZEiABEiABEiABEiABEiABEiABEiCBBAJUJCRA 4SkSIAESIAESIAESIAESIAESIAESIIFkAlQkJHPhWRIgARIgARIgARIgARIgARIgARIggQQCVCQk QOEpEiABEiABEiABEiABEiABEiABEiCBZAJUJCRz4VkSIAESIAESIAESIAESIAESIAESIIEEAlQk JEDhKRIgARIgARIgARIgARIgARIgARIggWQCVCQkc+FZEiABEiABEiABEiABEiABEiABEiCBBAJU JCRA4SkSIAESIAESIAESIAESIAESIAESIIFkAlQkJHPhWRIgARIgARIgARIgARIgARIgARIggQQC VCQkQOEpEiABEiABEiABEiABEiABEiABEiCBZAJUJCRz4dn/Epg8ebI59dRTza+//mpuvvlm07p1 a7KpMwJ//fWXGTFihLn99tvN4YcfbvbYY486I8DmkkD9EDjllFPMCy+8YIYNG2Y6d+6cueGh6d98 801z9NFHmy5dupghQ4aYVq1aZapDaPpMhTEyCZAACZAACdQxASoS6rjzyzV9zJgxZtdddzU//vij mW222cyUKVNM+/btyyXj9RZEYNasWWbvvfc2o0aNsq066KCDzDXXXNOCWsimkAAJ+ATatm1rPvnk EzuAhzLhuOOO8y+X/RyaHs+X/v3723LWXXddq8Ds2LFj2XI1Qmh6zYdHEiABEiABEiCB0gSoSCjN p26v3nPPPaZ3794GA8m55prL3HjjjaZnz55FeTz88MPm6aefNn379jWrrLKKjffll1+aK6+80iy1 1FLuxbBoBrxgao0hFEi77babeeKJJ2zvbL755ubee+81Cy64YGJvff3119ZyYeGFFzYDBgywyidE HD16tBk/frzp16+fyTIgSCwkdhJ1fO+998wff/xhr2AQs8wyy8Ri8WtTEqi2HFMOTdCzZOLEiWbP Pfe0ygTIzdChQw2sDNKG0PS//fabGTRokLn88sttkbin8fxo06ZNqiqEpk9VCCORAAmQAAmQAAkY EzGQQIzAuHHjojnmmCOS+yNaYIEFoscffzwWo/DrN998E80777w2fteuXd3FI4880p5DPsiToTiB WmS47bbbuv7r0aNHJMtbijdArgwePNjFf+SRR2zcL774IhJFlD2/1VZblUyf56Iot1yZkDP8vfHG G3myYpoKEKgFOa53OaxEH+C+3XDDDd29dcUVV2SSjtD0KGzkyJHR7LPPbuuw2mqrRTNnzsxUh9D0 mQpjZBIgARIgARKoQwJUJNRhp5dq8u+//x6tueaa9uVNZpajl156qVR0e+3ll192L5wyG+zid+/e 3Z2/6aab3Pla/QCFiVhQRN9//32TV7HWGN52222u7w488MBIZvzLMtlll11cGnBEeOaZZ9w5sUYo m0fWPjjggANc/qpIuO+++8qWwwiNQ6AW5Lje5bBSfSCWHdHqq69u7y8M6J999tlMQhOaHoVBgaH3 9XbbbZep/Eqkz1wgE5AACZAACZBAHRGgIqGOOjtNUy+88EL34nbVVVelSRJ98MEHLo0sa3BpxCmf O98cBndLLrmkre+ZZ57p2tBUH2qJ4Q8//BAtu+yylsUKK6wQ/fLLL6kw7Lfffq6/oYhAgHWADgRk vXPZfPL0AZRf4hzOldMcZK0siGYaoRbkuN7lsJJ98NprrzmrgLXXXjsSx6uZJDM0PQqTZRbu3r77 7rszlV+J9JkLZAISIAESIAESqBMCVCTUSUenaeZnn31mlzJg4LfRRhulfmnEzJMOFsXTtitKHGa5 82PHjnXna/WDLs844YQTmryKtcRQPKa7fpP17qlZyI4ODdKJ0zZ3rlu3bmXzytsHr776qiuHioSy mBstQi3Icb3LYaX74O9//7u7t+6///7MshOa/sMPP4zmnntuW4f11lsvc/mh6TMXyAQkQAIkQAIk UCcEqEiok45O08zTTjvNvTCKc6s0SWwcmL3Lrg427fbbb+/SHXPMMS6/5rBuPe8g1jU44EOtMPz5 55+dv4ttttkmU4vEIZvrb3G4ZtOKM0R3DhYq5ULePqAioRzZprleC3Jc73JY6T6AvwP4yoGyeIcd dsgsSKHpUaDsHOGeI88//3zmOoSmz1wgE5AACZAACZBAHRDgrg3ydsTwfwTWX3998+KLLxp4yZ42 bVomLPDkL74F7FaBt9xyi00rSwTsPuD48vHHHxd43YZnd+wEIS+9Ni48/Z977rkGe4A/9thjRtbj Guz6sPLKK1tv/+L4z8Yr9e/mm282jz76qHnuueeMmOfbHQJk8GrTzz///A2Sivm93YVAzHXtNTGb NX/++afdZWKzzTYriC9rhI2svbbtK7jgfdFdKuRF14hvCSjpzBprrGFkHb8RZ4WmdevWXuyGH7My bJhD+JkHHnjA7LTTTjajq6++2rJLm+tFF11kjjrqKBsdOymstNJK9jN2/ZDlBzYv5OmHSvWBmFCb Tp062azFIsEsssgiueUI6R988EEjyyXM1KlTzeKLL2523nlng60vV111Vb/6iZ+zyiHk9bLLLjPw Nq8B94NYhpgVV1zRTJo0ycop7s23337bQJbFcaU56aSTzDzzzKNJ3DGLHKJf0GdIg3469NBDDdqP HVhatWpld2ERHxkGu7jccMMNdgtYWatu04BLUqi2HDc3OWwOfbDPPvuYW2+91cqbOD0s+yyLy0Vo etwD+C1AEIW3OfXUU+NFlPwemr5k5rxIAiRAAiRAAvVKoA6UJWxiCgLw9K1WBQMHDkyRojBKu3bt 7IzRIYcc4i7I4MjNImHdvR823nhjd03uPftZHXvpd/+IvIqFr776KpKBXoP8ND2cRyZ5/O7QoUPR NJrWP/rLNuJ1gTn9EkssUTQ/+AeAyXGpkJVhqbzyXtOdNrBrhwwuM2UDL+nKC7OQGmTAac9jyUQ8 VKoPfIsE+OnQesSPpeQI98Dee+9dNC0czske9fEmuO955bBYmbLtXnTiiSdGMqBPrJMoElzZ+iGr HI4ZMyYxb5+bKJYaxJFtQbXIBsdqy3Fzk8Pm0Ac+U9Q3awhNj/JUrkTJm7V4Gz80fa5CmYgESIAE SIAEWjABLm1owZ2bpWm+UzyxKMiS1MaV2WA72MDWaxqQDwYkGAjFw0MPPRRBYdGrV68GgxSZ9Y0w SEJef/vb3+z1hRZaKIKZfDzAjHedddZxeWDAftZZZ0VwGgnTfB0QQQkQT3/77bdHWE8ts7D2b845 57TxsdWYntMj6iqztPHi7fdRo0a5cjDY3HfffaPhw4dHl156aYQ1vVoHfC7lrCwrw8TKBJ5UB5li TZA5J5m1tm2FQmrWrFkuPfICg2HDhrlz+qFSfeArEpR3Vjnq3Lmz6ys4mcRSn2uvvTaCckWXXKBt aGc8hMihWCTYe0FlTeVQ24EjTMshz3379nV17NOnT0E18sghlrKcfvrpBfcQyh8wYEAk1hCuLNRh 0003LXB8B/8XSaHactzc5LA59IHvwLGUMi1JHnAuND3yUCeaYjGHr5lDaPrMBTIBCZAACZAACbRw AlQktPAOTts8WRLgBg1PPvlk2mQu3iWXXGK3jZwwYYI7J8sZoq5du9pBuTsZ+xAfAMKiAV74Nchy B1cvMe3W0+7o7zJx2GGHFaRFJN8qotwafR0sZnG2iFnspZde2tYRg72kLdIw4NNBYdIgVBuTl6Gm r8QRTjZR18033zxzdp9//nm0ySabRP369StIe95550Xw+J5mK9E8fYDCQuXIlzP0FwZ3foD3eVlG YNlgoBwPjSGHKjNgCkeoCLL0JoJlBywCXn/9dVeNUDn0/ZlAeYIgyzuc3EKJIEsv7HkM5FA3WQZj v8f/VVuOm6sc1nIf/Prrr04WoKjNGkLTozxY50DuZAlO1uJt/ND0uQplIhIgARIgARJowQSoSGjB nZulaXfeead7UUwz4MuSd6m4/gAQSxB0sKJpfLNf1NEPGFTJemxbbwxUMSucFHr37m3jYDZ5ypQp SVHsuTyDWMzm6oDvjjvuSMwblhA6CIWZeC0HXV6CpSLVCHn6APUMkSMMcrR/YN3iW1P4DE4++WTX 175Sq7HkEHIFJYKvWPPr438OlUMdxLZv394qK5C3+Ctx7YVSQYMqm3SLTz3fko7VkMNa7wMsd4JM wlInTwhNrzIOi5k090S8jqHp4/nxOwmQAAmQAAnUOwEqEupdAv7bflgh6IAYyw6aKvgDQMwYxYNv EitO7AouiwMtV2dxBFdwzf/y8ssvu3hXXHGFf6ngc57Bg64fX3TRRSOYehf7w5IL8IW5eC0HWCKg nhtuuGFVqpmnD1DREDmCUkBlH7OtxfpQnM25eL4sNpYcok5Y9pAmhMqhDmJ9q53333/ftdf377Hl llva81QkNOyZEDms5T7wt5S84IILGja8zJnQ9Mhet/WE5VeeEJo+T5lMQwIkQAIkQAItmQAVCS25 dzO0TbzBu0GDeNbPkDIsqv/inTQwwR7gOsjzB28oFRYAeg2m58UCZph1NqzUsoU8g9hlllnG1UHr UuqI/dBrOfTs2dO2p02bNlWpZp4+QEVD5OjKK6/M1Ifo37PPPtvxaSw5hJVN2hAqhzqIPeKII1yR qkiAtYYfqEjwaRR+DpHDWu4DPF/1uZbHh05oelDefffdbR3y+G+pRPrCnuY3EiABEiABEiABKhIo A5bAL7/8Esn2hPZFDU6pmir4L97wOB8PpRQJV111lXu5feWVV+JJ3Xe0DU4Q8SI8ZMgQdz7+Ic8g Vrbic3XQF+1SRzjxq+Ug26q59sAapKlDnj5AHUPk6Pzzz3dtLtV3/jXfAqax5BC7OaQNoXKog9hj jz3WFamKBDg89QMVCT6Nws8hcljLfeD7AJHtbQsbneJbaHosZZAtXe19usMOO6QosTBKaPrC3PiN BEiABEiABEgABKhIoBw4AltvvbV9UYPfgWLrxF3kCn0IefF+5JFH3ADQH9jFqwafDzoIvP766+OX 3fdSg1gsj4ATOThy8wN2eEDe2OIQJvGffvpp0T84zCvmx8HPs5qf4SxSWZ1zzjlNXpU8fYBKhsiR b1EAp4ul+hDXvv322wIujSWHxx9/fEE5pb6EymEtD2JLtbuxrlVDDmu5D+BsE88FbHELnyBZQ2j6 J554wj2XsBtO1hCaPmt5jE8CJEACJEAC9UCAioR66OWUbcQLmg4i77rrrpSpwqKFDAC//PJLu7Uk 6lxqa8X999/ftavUEggdPCQN4KAoQDlnnHFGQYNhCq7MkiwqNDJ2sBg0aFCUxyxY82iKI2bullpq KdumtdZaq+R2lY1Rnzx9gHqEyNEXX3zh5Ai+IUo5csOOBkcddVSENBoaSw5LLcPRsvUYKoe1PIjV NjblsRpyWKt9MHnyZGfRFd+RJU2fhKZHGbrtKSzLPvroozTFFsQJTV+QGb+QAAmQAAmQAAlYAlQk UBAcgR9++CFaaKGF7CBy+eWXj3766Sd3rbE+hAwAUae99trLDeSxzWA83H///e4luEuXLiVn01Ze eWWbF3Z58MNbb73lyrjooov8S9G7774bzTfffPY6TMBfeOGFguv48tdff0XdunWzcWCCXusByhJV jpRyTtkY7cjTB6hHqBz179/ftRlLe5KUCXBIip0/wAbLIfxQSTnUQWwWRUKoHNbqINZn3JSfqyGH tdoH2267rZV5LH3DUrOsITT9+PHj3X138MEHZy0+Ck2fuUAmIAESIAESIIE6IUBFQp10dNpmDhs2 zA2o/PXSadOnjffdd9/ZF7yRI0e68uDAbty4cXa2F0srsBYXDhh1UIvt93AdSwQ0YDZ4lVVWcXEO PPDA6KmnnoomTpwYDR482DlZbNWqVfTGG29ossTjwIEDbT6Ii2UMcEB57733RnB6p3Xwt/3TTKCs UGeO2JoML7sYdGIm7oEHHoi23357l75Xr16arGaPM2fOtEs10GYsc/F5N3als/ZBHjmCXMflCFtA 6o4VaDcGkrA+gMxgWQs81auSDfLx+uuvF6AIkUMo7CZMmBCNHTvW/qmvEuygoOegKHnvvfcKyox/ ySuHkNN9993Xyij8MkApAfN1WNiABRRl2D0CjGBZozuQDB061C7nidejJXxvajms1T7wl/1g+8Ss ITQ9FHqwjIIcLrbYYpG/e0iauoSmT1MG45AACZAACZBAvRKgIqFee75IuzGA14EzBsc33XRTkZhh pzFIwsth0h8GcVirnnQN5+Ch3g/wTdChQ4ei8WEpkLQjhJ8HPsM/gA7ikso+5JBD4kncd3j+V4eO SWlxDi/E33zzjUtTyx/8rQ67du0aQbnQFCFrH1RSjtA3a665ZlE5Qh9CUTRixIhEFHnl0F+WUEx2 1BICDhBLhaxy+OabbybKrW6V59dnn332ibDNqX8O90tTWC6VanNjXGtKOYTfgaRnR7X7AEosVZ51 7NjRKpKysA5Nj98iWIepvGXdTSg0fZa2Mi4JkAAJkAAJ1CMBKhLqsdfLtBkO5ZZbbjn7AocBTNyM u0zyVJdhSp708ozyMCs6fPjwaK655nIvkfoyies77bRTgzKwbhbrd7FVncaFX4MePXpkMseFD4VO nTo5U1rk1a5dO2uhUM5RIpZAoO768o20GHjCER4cF/72228N6l3LJ84880zHEm2YNm1ak1Q3Sx9U Wo4w+MByDrRXrUzQj5gN3XHHHaNSPjYAJ48cYilJ0r2gcqxH3JNxR49JHZJFDmF9oN7wtRwMbOEv xVeqwQoDyj0MKDUejp07d05cBpJUr+Z2rqnkcIsttqi5Phg1apTrf2xZO2bMmEzdF5oey+zU+S/k DMsjsEQsbQhNn7YcxiMBEiABEiCBeiYwGxovP9QMJFBAYNKkSWaTTTYxM2bMsOcPPfRQI+b+Rgby BfFq7Yu8bBoZ8NpqycArd/VkltVMnTrViONBI7OwmfMRZ3xGZvGNbPdoRCGSOX2tJJDZcnPxxRfb 6rRp08aIubtZZ511mqR6oX0QWklR/JgpU6YYWd5h5SBLfpWSwyxlJsVtKXKY1LamOldtOWyqdmo5 YnFj8LyX5S1GfLqYe+65x2y11VZ6uewxND1kVpR2RnbbsWXttttuRizKjCg0ypaNCKHpUxXCSCRA AiRAAiRAAoaKBApBUQLiWMv06dPHyPptG2f69OmZB1RFM+eFZkEAekYoEsTxn5E18kb8PxiZsW8W dWclSYAEshMQ6xsjvgiMWKaY0aNHmw022CBTJqHpxRrGyLIOW6ZYmRkoJsQ6KHUdQtOnLogRSYAE SIAESKDOCVCRUOcCUK75mJWStan2RU7MyMtF5/UWSkDM5c3dd99tZM2yWWmllVpoK9ksEiABKA9k yYvB837hhRfODCQ0PSy5oAzYaKONTPfu3TOXH5o+c4FMQAIkQAIkQAJ1SoCKhDrteDabBEiABEiA BEiABEiABEiABEiABPIQoCIhDzWmIQESIAESIAESIAESIAESIAESIIE6JUBFQp12PJtNAiRAAiRA AiRAAiRAAiRAAiRAAnkIUJGQhxrTkAAJkAAJkAAJkAAJkAAJkAAJkECdEqAioU47ns0mARIgARIg ARIgARIgARIgARIggTwEqEjIQ41pSIAESIAESIAESIAESIAESIAESKBOCVCRUKcdz2aTAAmQAAmQ AAmQAAmQAAmQAAmQQB4CVCTkocY0JEACJEACJEACJEACJEACJEACJFCnBKhIqNOOZ7NJgARIgARI gARIgARIgARIgARIIA8BKhLyUGMaEiABEiABEiABEiABEiABEiABEqhTAlQk1GnHs9kkQAIkQAIk QAIkQAIkQAIkQAIkkIcAFQl5qDENCZAACZAACZAACZAACZAACZAACdQpASoS6rTj2WwSIAESIAES IAESIAESIAESIAESyEOAioQ81JiGBEiABEiABEiABEiABEiABEiABOqUwP8Cr3xpf4MuDq0AAAAA SUVORK5CYII= --=-=-= Content-Type: text/plain It seems that the UTF-8 chars don't work well in the .pdf output. I suggest we change that example to use ASCII chars. Best, Arash --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 15 02:47:16 2024 Received: (at 73724) by debbugs.gnu.org; 15 Oct 2024 06:47:16 +0000 Received: from localhost ([127.0.0.1]:53550 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1t0bKu-0008QJ-4d for submit@debbugs.gnu.org; Tue, 15 Oct 2024 02:47:16 -0400 Received: from mail-io1-f52.google.com ([209.85.166.52]:48594) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1t0bKr-0008QA-KV for 73724@debbugs.gnu.org; Tue, 15 Oct 2024 02:47:14 -0400 Received: by mail-io1-f52.google.com with SMTP id ca18e2360f4ac-836d2437852so190670139f.1 for <73724@debbugs.gnu.org>; Mon, 14 Oct 2024 23:46:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1728974755; x=1729579555; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=VWRwd8l3yFDr6osJ8OB4sZnV7dZd1KebbuyA4Zr88c4=; b=Cy4HTvJHCXWnOzn4bVhjl8fSSk1nwqA0ZSE3CVqp1v1Pe+nQPA6A3Fbji1L6+GvGm2 B2CiUsrN/vgxJvJvW14nACGf2FyZVtiHMycAZZqujH0sLvUUbAd2rHsbmdKkX0wDQfF8 ymwXQmYKVtyHfeG/HMeQW9S5DOFwQBIuFd5ltL1p+gRrJGCI1BSisktRDk3yx0vKbELC jYSgNRVCTb/6iJf9bvrIsy6ijT4ewxA3EcRK4TV8w0Qvhr9bWF5VMyWN0k/YZP4xL2th EuAqq+JZ4z5Y5Wec71bgDFfHuvyvFlcQtNPKaYivoGX3J52H3LaLo0XG1brvJnmgKBAV W7GA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728974755; x=1729579555; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=VWRwd8l3yFDr6osJ8OB4sZnV7dZd1KebbuyA4Zr88c4=; b=qxjYWokyDMIvcbhMJfUT2Sc4jacoz8NQmVyIj7pLW0NetAsvr9xsq+u1EbgYXYNcV2 oGSDI9KmWvdtPAYhoPDMETKRxZfm0Q4zGQb2OejHpyQ1cKRV9+6kwL+kSL1/dE4vAyUY BSk2N/HI4xt+uvljT16UteMghFdcAI0Gqa9e9KbUmKck+li7lCmrTyVJMqSjLg3c6iT2 0AfeG8uDJfmKHnqXF5p43kI9XnHCer/HodjLBIxNL3eL+IjC8fO2uyARH+qGW1GRXiDM a0rvibmpGQC7B20v3FcGncgwgI2xDsuQz3EMvlPrmjnVLSRMidfS4YDnBEOfW9J57CpC M8gg== X-Gm-Message-State: AOJu0YxenYPyOreS8KBHzkL8pqR15E0MRNrmXLPrhCW/VuyTQmGxyyS4 slLyi6OSRxzqZ13MQ2q4Dfk9qyRCPQiEekIsyPwqIat8zqWjXenilnGNeAo5UN3tLBTu3gMKF8q I3hLafh3vh0Ngcu9KL2FlnaETA+E= X-Google-Smtp-Source: AGHT+IE2s3NDqXUu+IjDPrMMfdkuixzeyTwKKyXxvMOlUrZhcvd6dSqhUaRt2MdRTTUm3hij6Uz2cyEuUUpt+6I03wQ= X-Received: by 2002:a05:6602:60ca:b0:82c:fd13:271c with SMTP id ca18e2360f4ac-83792cf4b2cmr1255794239f.4.1728974754817; Mon, 14 Oct 2024 23:45:54 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Paul Nelson Date: Tue, 15 Oct 2024 08:45:42 +0200 Message-ID: Subject: Re: bug#73724: [PATCH] Add folding support for begin and end macros To: Arash Esbati Content-Type: multipart/mixed; boundary="000000000000164e9006247e4e07" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 73724 Cc: 73724@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --000000000000164e9006247e4e07 Content-Type: text/plain; charset="UTF-8" Hi Arash, thanks, please find attached the updated patch. Paul --000000000000164e9006247e4e07 Content-Type: application/octet-stream; name="0001-Add-folding-support-for-begin-and-end-macros.patch" Content-Disposition: attachment; filename="0001-Add-folding-support-for-begin-and-end-macros.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m2a2wyyl0 RnJvbSA5OGYzNWVlY2I4NDBlNjBmOWM1MmRkMjc0NDM2NzZhZDNlNjU1MDE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIE5lbHNvbiA8dWx0cm9ub0BnbWFpbC5jb20+CkRhdGU6 IFNhdCwgNSBPY3QgMjAyNCAxNDo1MTozMiArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBmb2xk aW5nIHN1cHBvcnQgZm9yIGJlZ2luIGFuZCBlbmQgbWFjcm9zCgoqIHRleC1mb2xkLmVsIChUZVgt Zm9sZC1tYWNyby1zcGVjLWxpc3QpOiBBZGQgYmVnaW4gYW5kIGVuZAplbnRyaWVzLgooVGVYLWZv bGQtYmVnaW4tZGlzcGxheSwgVGVYLWZvbGQtZW5kLWRpc3BsYXkpOiBOZXcgZnVuY3Rpb25zLAph ZGRlZCBhYm92ZSBhcyBlbnRyaWVzLgooVGVYLWZvbGQtLWhlbHBlci1kaXNwbGF5KTogTmV3IGhl bHBlciBmdW5jdGlvbi4KKFRlWC1mb2xkLWJlZ2luLWVuZC1zcGVjLWxpc3QpOiBOZXcgdXNlciBv cHRpb24sIHVzZWQgYnkKdGhlIGFib3ZlIGZ1bmN0aW9ucy4KKFRlWC1mb2xkLWZvcm1hdC10aXRs ZWQtYmxvY2ssClRlWC1mb2xkLWZvcm1hdC10aXRsZWQtYWxlcnRibG9jaywKVGVYLWZvbGQtZm9y bWF0LXRoZW9yZW0tZW52aXJvbm1lbnQpOiBOZXcgZnVuY3Rpb25zIHVzZWQgaW4gdGhlCmRlZmF1 bHQgdmFsdWUgb2YgdGhlIG5ldyB1c2VyIG9wdGlvbi4KCiogYXVjdGV4LnRleGkgKEZvbGRpbmcg TWFjcm9zIGFuZCBFbnZpcm9ubWVudHMpOiBEb2N1bWVudCB0aGUKbmV3IHVzZXIgb3B0aW9uLgot LS0KIGRvYy9hdWN0ZXgudGV4aSB8ICA3NSArKysrKysrKysrKysrKysrKysrKysrKwogdGV4LWZv bGQuZWwgICAgIHwgMTYwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAyMzUgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBh L2RvYy9hdWN0ZXgudGV4aSBiL2RvYy9hdWN0ZXgudGV4aQppbmRleCBkOGU5MmU4MC4uMTczNmFh NWMgMTAwNjQ0Ci0tLSBhL2RvYy9hdWN0ZXgudGV4aQorKysgYi9kb2MvYXVjdGV4LnRleGkKQEAg LTI4ODAsNiArMjg4MCw4MSBAQCByZXBsYWNlbWVudCBzcGVjaWZpZXIgZ2l2ZW4gYnkgdGhlIGRl ZmF1bHQgdmFsdWUgb2YKIEBjb2Rle1RlWC1mb2xkLW1hY3JvLXNwZWMtbGlzdH0pLgogQGVuZCBk ZWZvcHQKIAorQGRlZm9wdCBUZVgtZm9sZC1iZWdpbi1lbmQtc3BlYy1saXN0CitMaXN0IG9mIHJl cGxhY2VtZW50IHNwZWNpZmllcnMgZm9yIEBzYW1we1xiZWdpbkB7QHZhcntlbnZ9QH19IGFuZAor QHNhbXB7XGVuZEB7QHZhcntlbnZ9QH19IG1hY3Jvcy4gIFRoaXMgb3B0aW9uIGlzIHVzZWQgb25s eSB3aGVuIHRoZQorcmVwbGFjZW1lbnQgc3BlY2lmaWVycyBmb3IgQHNhbXB7YmVnaW59IGFuZCBA c2FtcHtlbmR9IG1hY3JvcyBpbgorQGNvZGV7VGVYLWZvbGQtbWFjcm8tc3BlYy1saXN0fSBhcmUg c2V0IHRvIHRoZWlyIGRlZmF1bHQgdmFsdWVzOgorQGNvZGV7VGVYLWZvbGQtYmVnaW4tZGlzcGxh eX0gYW5kIEBjb2Rle1RlWC1mb2xkLWVuZC1kaXNwbGF5fSwKK3Jlc3BlY3RpdmVseS4KKworRWFj aCBpdGVtIGluIHRoZSBsaXN0IGNvbnNpc3RzIG9mIHR3byBlbGVtZW50cy4gIFRoZSBmaXJzdCBl bGVtZW50IGlzIGEKK2NvbnMgY2VsbCBAY29kZXsoQHZhcntCRUdJTn0gLiBAdmFye0VORH0pfSwg d2hlcmUgQHZhcntCRUdJTn0gYW5kCitAdmFye0VORH0gYXJlIHRoZSBkaXNwbGF5IHNwZWNpZmlj YXRpb25zIGZvciBAc2FtcHtcYmVnaW5Aey4uLkB9fSBhbmQKK0BzYW1we1xlbmRAey4uLkB9fSBt YWNyb3MsIHJlc3BlY3RpdmVseS4gIEVhY2ggc3BlY2lmaWNhdGlvbiBjYW4gYmUKK2VpdGhlcjoK KworQGl0ZW1pemUgQGJ1bGxldAorQGl0ZW0KK0Egc3RyaW5nLCB3aGljaCB3aWxsIGJlIHVzZWQg ZGlyZWN0bHkgYXMgdGhlIGZvbGQgZGlzcGxheSBzdHJpbmcuCisKK0BpdGVtCitBIGZ1bmN0aW9u IHN5bWJvbCwgd2hpY2ggd2lsbCBiZSBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUKKyh1 bmFiYnJldmlhdGVkKSBlbnZpcm9ubWVudCBuYW1lIGFuZCBhIGxpc3Qgb2YgdGhlIHJlbWFpbmlu ZyBtYW5kYXRvcnkKK21hY3JvIGFyZ3VtZW50cy4gIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJu IGEgc3RyaW5nIHRvIGJlIHVzZWQgYXMgdGhlCitmb2xkIGRpc3BsYXkuCitAZW5kIGl0ZW1pemUK KworVGhlIHNlY29uZCBlbGVtZW50IGlzIGEgbGlzdCBvZiBlbnZpcm9ubWVudCB0eXBlcy4gIEVh Y2ggdHlwZSBjYW4gYmU6CisKK0BpdGVtaXplIEBidWxsZXQKK0BpdGVtCitBIHN0cmluZyByZXBy ZXNlbnRpbmcgdGhlIGVudmlyb25tZW50IG5hbWUgKGUuZy4sIEBjb2RleyJyZW1hcmsifSkuCisK K0BpdGVtCitBIGxpc3Qgd2l0aCB0aGUgZmlyc3QgZWxlbWVudCBiZWluZyB0aGUgZW52aXJvbm1l bnQgbmFtZSBhbmQgdGhlIHJlbWFpbmluZworZWxlbWVudHMgYmVpbmcgYW55IGFiYnJldmlhdGVk IGZvcm1zIG9mIHRoYXQgbmFtZSAoZS5nLiwgQGNvZGV7KCJyZW1hcmsiCisicmVtIiAicm1rIil9 KS4KK0BlbmQgaXRlbWl6ZQorCitGb3IgZXhhbXBsZToKKworQGxpc3AKKygoKCI+IiAuICI8Iikg KCJpdGVtaXplIiAiZW51bWVyYXRlIiAiZGVzY3JpcHRpb24iICJmcmFtZSIpKQorICgoVGVYLWZv bGQtZm9ybWF0LXRoZW9yZW0tZW52aXJvbm1lbnQgLiAiKiIpCisgICgibm90ZSIgKCJ0aGVvcmVt IiAidGhtIikpKSkKK0BlbmQgbGlzcAorCitJbiB0aGlzIGV4YW1wbGU6CisKK0BpdGVtaXplIEBi dWxsZXQKK0BpdGVtCitAc2FtcHtcYmVnaW5Ae2l0ZW1pemVAfX0sIEBzYW1we1xiZWdpbkB7ZW51 bWVyYXRlQH19LAorQHNhbXB7XGJlZ2luQHtkZXNjcmlwdGlvbkB9fSwgYW5kIEBzYW1we1xiZWdp bkB7ZnJhbWVAfX0gd2lsbCBmb2xkIHRvCitAc2FtcHs+fSwgd2hpbGUgdGhlaXIgY29ycmVzcG9u ZGluZyBAc2FtcHtcZW5kQHsuLi5AfX0gbWFjcm9zIHdpbGwgZm9sZCB0bworQHNhbXB7PH0uCisK K0BpdGVtCitAc2FtcHtcYmVnaW5Ae25vdGVAfX0gd2lsbCBmb2xkIHRvIEBzYW1we05vdGV9Lgor CitAaXRlbQorQHNhbXB7XGJlZ2luQHt0aGVvcmVtQH19IGFuZCBAc2FtcHtcYmVnaW5Ae3RobUB9 fSB3aWxsIGZvbGQgdG8gQHNhbXB7VGhlb3JlbX0uCisKK0BpdGVtCitJZiBhbiBvcHRpb25hbCBh cmd1bWVudCBpcyBwcm92aWRlZCwgZS5nLiwgQHNhbXB7XGJlZ2luQHt0aGVvcmVtQH1bRm9vXX0s CitpdCB3aWxsIGZvbGQgdG8gQHNhbXB7VGhlb3JlbSAoRm9vKX0uCisKK0BpdGVtCitBbGwgY29y cmVzcG9uZGluZyBAc2FtcHtcZW5kQHsuLi5AfX0gbWFjcm9zIGZvciBAc2FtcHtub3RlfSwKK0Bz YW1we3RoZW9yZW19LCBhbmQgQHNhbXB7dGhtfSB3aWxsIGZvbGQgdG8gQHNhbXB7Kn0uCitAZW5k IGl0ZW1pemUKKworVG8gZGlzYWJsZSBmb2xkaW5nIGZvciBAc2FtcHtcYmVnaW5Aey4uLkB9fSBh bmQgQHNhbXB7XGVuZEB7Li4uQH19IG1hY3JvcywKK3lvdSBjYW4gZWl0aGVyIHNldCB0aGlzIHZh cmlhYmxlIHRvIEBjb2Rle25pbH0sIG9yIHJlbW92ZSB0aGUgZGlzcGxheQorc3BlY2lmaWNhdGlv bnMgZm9yIEBzYW1we2JlZ2lufSBhbmQgQHNhbXB7ZW5kfSBmcm9tCitAY29kZXtUZVgtZm9sZC1t YWNyby1zcGVjLWxpc3R9LgorQGVuZCBkZWZvcHQKKwogQG5vZGUgT3V0bGluZQogQHNlY3Rpb24g T3V0bGluaW5nIHRoZSBEb2N1bWVudAogQGNpbmRleCBPdXRsaW5pbmcKZGlmZiAtLWdpdCBhL3Rl eC1mb2xkLmVsIGIvdGV4LWZvbGQuZWwKaW5kZXggYzlmNjViNTkuLmM2MWRlOThlIDEwMDY0NAot LS0gYS90ZXgtZm9sZC5lbAorKysgYi90ZXgtZm9sZC5lbApAQCAtODMsNiArODMsOCBAQCBtYWNy b3MsIGBtYXRoJyBmb3IgbWF0aCBtYWNyb3MgYW5kIGBjb21tZW50JyBmb3IgY29tbWVudHMuIgog ICAgICgiVE0iICAoInRleHR0cmFkZW1hcmsiKSkKICAgICAoVGVYLWZvbGQtYWxlcnQtZGlzcGxh eSAoImFsZXJ0IikpCiAgICAgKFRlWC1mb2xkLXRleHRjb2xvci1kaXNwbGF5ICgidGV4dGNvbG9y IikpCisgICAgKFRlWC1mb2xkLWJlZ2luLWRpc3BsYXkgKCJiZWdpbiIpKQorICAgIChUZVgtZm9s ZC1lbmQtZGlzcGxheSAoImVuZCIpKQogICAgICgxICgicGFydCIgImNoYXB0ZXIiICJzZWN0aW9u IiAic3Vic2VjdGlvbiIgInN1YnN1YnNlY3Rpb24iCiAgICAgICAgICJwYXJhZ3JhcGgiICJzdWJw YXJhZ3JhcGgiCiAgICAgICAgICJwYXJ0KiIgImNoYXB0ZXIqIiAic2VjdGlvbioiICJzdWJzZWN0 aW9uKiIgInN1YnN1YnNlY3Rpb24qIgpAQCAtNjE1LDYgKzYxNyw4IEBAIFJldHVybiBub24tbmls IGlmIGEgY29tbWVudCB3YXMgZm91bmQgYW5kIGZvbGRlZCwgbmlsIG90aGVyd2lzZS4iCiAKIDs7 OyBEaXNwbGF5IGZ1bmN0aW9ucwogCis7Ozs7IHRleHRjb2xvcgorCiAoZGVmdW4gVGVYLWZvbGQt dGV4dGNvbG9yLWRpc3BsYXkgKGNvbG9yIHRleHQgJnJlc3QgX2FyZ3MpCiAgICJGb2xkIGRpc3Bs YXkgZm9yIGEgXFx0ZXh0Y29sb3J7Q09MT1J9e1RFWFR9IG1hY3JvLiIKICAgKHdpdGgtdGVtcC1i dWZmZXIKQEAgLTYyNCw2ICs2MjgsOCBAQCBSZXR1cm4gbm9uLW5pbCBpZiBhIGNvbW1lbnQgd2Fz IGZvdW5kIGFuZCBmb2xkZWQsIG5pbCBvdGhlcndpc2UuIgogICAgICAgICAgICAgICAgICAgICAg ICAoY3VycmVudC1idWZmZXIpKQogICAgIChidWZmZXItc3RyaW5nKSkpCiAKKzs7OzsgYWxlcnQK KwogKGRlZmN1c3RvbSBUZVgtZm9sZC1hbGVydC1jb2xvciAicmVkIgogICAiQ29sb3IgZm9yIGFs ZXJ0IHRleHQuIgogICA6dHlwZSAnY29sb3IKQEAgLTYzOCw2ICs2NDQsMTYwIEBAIFJldHVybiBu b24tbmlsIGlmIGEgY29tbWVudCB3YXMgZm91bmQgYW5kIGZvbGRlZCwgbmlsIG90aGVyd2lzZS4i CiAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWJ1ZmZlcikpCiAgICAgKGJ1ZmZlci1z dHJpbmcpKSkKIAorOzs7OyBiZWdpbi9lbmQKKworKGRlZmN1c3RvbSBUZVgtZm9sZC1iZWdpbi1l bmQtc3BlYy1saXN0CisgICcoKCgi4oa0IiAuICLihrIiKQorICAgICAoIml0ZW1pemUiICJlbnVt ZXJhdGUiICJkZXNjcmlwdGlvbiIgImZyYW1lIikpCisgICAgKChUZVgtZm9sZC1mb3JtYXQtdGl0 bGVkLWJsb2NrIC4gIuKXvCIpCisgICAgICgiYmxvY2siKSkKKyAgICAoKFRlWC1mb2xkLWZvcm1h dC10aXRsZWQtYWxlcnRibG9jayAuICLil7wiKQorICAgICAoImFsZXJ0YmxvY2siKSkKKyAgICAo KFRlWC1mb2xkLWZvcm1hdC10aGVvcmVtLWVudmlyb25tZW50IC4gIuKWoSIpCisgICAgICgicHJv b2YiKSkKKyAgICAoKFRlWC1mb2xkLWZvcm1hdC10aGVvcmVtLWVudmlyb25tZW50IC4gIuKXvCIp CisgICAgICgiYWJzdHJhY3QiCisgICAgICAiYWNrbm93bGVkZ21lbnQiCisgICAgICAiYWxnb3Jp dGhtIgorICAgICAgImFzc3VtcHRpb25zIgorICAgICAgImNsYWltIgorICAgICAgImNvbW1lbnRh cnkiCisgICAgICAiZmFjdCIKKyAgICAgICJub3RlIgorICAgICAgInF1ZXN0aW9ucyIKKyAgICAg ICgiYW5zd2VyIiAiYW5zIikKKyAgICAgICgiY29uY2x1c2lvbiIgImNvbmMiKQorICAgICAgKCJj b25kaXRpb24iICJjb25kIikKKyAgICAgICgiY29uamVjdHVyZSIgImNvbmoiKQorICAgICAgKCJj b3JvbGxhcnkiICJjb3IiKQorICAgICAgKCJjcml0ZXJpb24iICJjcml0IikKKyAgICAgICgiZGVm aW5pdGlvbiIgImRlZiIgImRlZm4iKQorICAgICAgKCJleGFtcGxlIiAiZXgiKQorICAgICAgKCJl eGVyY2lzZSIgImV4ZXIiKQorICAgICAgKCJsZW1tYSIgImxlbSIpCisgICAgICAoIm5vdGF0aW9u IiAibm90IikKKyAgICAgICgicHJvYmxlbSIgInByb2IiKQorICAgICAgKCJwcm9wb3NpdGlvbiIg InByb3AiKQorICAgICAgKCJxdWVzdGlvbiIgInF1ZXMiKQorICAgICAgKCJyZW1hcmsiICJyZW0i ICJybWsiKQorICAgICAgKCJzdW1tYXJ5IiAic3VtIikKKyAgICAgICgidGVybWlub2xvZ3kiICJ0 ZXJtIikKKyAgICAgICgidGhlb3JlbSIgInRobSIpKSkpCisgICJSZXBsYWNlbWVudCBzcGVjaWZp ZXIgbGlzdCBmb3IgXFxiZWdpbntlbnZ9IGFuZCBcXGVuZHtlbnZ9IG1hY3Jvcy4KKworVGhpcyBv cHRpb24gaXMgcmVsZXZhbnQgb25seSBpZiB0aGUgcmVwbGFjZW1lbnQgc3BlY2lmaWVycyBpbgor YFRlWC1mb2xkLW1hY3JvLXNwZWMtbGlzdCcgZm9yIFwiYmVnaW5cIiBhbmQgXCJlbmRcIiBtYWNy b3MgYXJlIHRoZQorZGVmYXVsdHMsIG5hbWVseSBgVGVYLWZvbGQtYmVnaW4tZGlzcGxheScgYW5k IGBUZVgtZm9sZC1lbmQtZGlzcGxheScuCisKK0VhY2ggaXRlbSBpcyBhIGxpc3QgY29uc2lzdGlu ZyBvZiB0d28gZWxlbWVudHM6CisKK1RoZSBmaXJzdCBlbGVtZW50IGlzIGEgY29ucyBjZWxsLCB3 aXRoIGNhciBhbmQgY2RyIHRoZSBkaXNwbGF5CitzcGVjaWZpY2F0aW9ucyBmb3IgXFxiZWdpbnsu Li59IGFuZCBcXGVuZHsuLi59ICBtYWNyb3MsIHJlc3BlY3RpdmVseS4KK0VhY2ggc3BlY2lmaWNh dGlvbiBpcyBlaXRoZXIKKworICAtIGEgc3RyaW5nLCB1c2VkIGFzIHRoZSBmb2xkIGRpc3BsYXkg c3RyaW5nLCBvcgorCisgIC0gYSBmdW5jdGlvbiwgY2FsbGVkIHdpdGggdGhlICh1bmFiYnJldmlh dGVkKSBlbnZpcm9ubWVudCBuYW1lIGFuZCBhCisgICAgbGlzdCBjb25zaXN0aW5nIG9mIHRoZSBy ZW1haW5pbmcgbWFuZGF0b3J5IG1hY3JvIGFyZ3VtZW50cywgdGhhdAorICAgIHJldHVybnMgYSBz dHJpbmcuCisKK1RoZSBzZWNvbmQgZWxlbWVudCBpcyBhIGxpc3Qgb2YgZW52aXJvbm1lbnQgdHlw ZXMsIHdoaWNoIGFyZSBlaXRoZXIKKworLSB0aGUgZW52aXJvbm1lbnQgbmFtZSwgZS5nLiwgXCJy ZW1hcmtcIiwgb3IKKworLSBhIGxpc3Qgd2l0aCBmaXJzdCBlbGVtZW50IGFuIGVudmlyb25tZW50 IG5hbWUgYW5kIHJlbWFpbmluZyBlbGVtZW50cworICBhbnkgYWJicmV2aWF0ZWQgZW52aXJvbm1l bnQgbmFtZXMsIGUuZy4sIChcInJlbWFya1wiIFwicmVtXCIgXCJybWtcIikuIgorICA6dHlwZSAn KHJlcGVhdAorICAgICAgICAgIChncm91cAorICAgICAgICAgICAoY29ucyAoY2hvaWNlIChzdHJp bmcgOnRhZyAiRGlzcGxheSBTdHJpbmcgZm9yIFxcYmVnaW57Li4ufSIpCisgICAgICAgICAgICAg ICAgICAgICAgICAgKGZ1bmN0aW9uIDp0YWcgIkZ1bmN0aW9uIHRvIGV4ZWN1dGUgZm9yIFxcYmVn aW57Li4ufSIpKQorICAgICAgICAgICAgICAgICAoY2hvaWNlIChzdHJpbmcgOnRhZyAiRGlzcGxh eSBTdHJpbmcgZm9yIFxcZW5key4uLn0iKQorICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5j dGlvbiA6dGFnICJGdW5jdGlvbiB0byBleGVjdXRlIGZvciBcXGVuZHsuLi59IikpKQorICAgICAg ICAgICAocmVwZWF0IDp0YWcgIkVudmlyb25tZW50IFR5cGVzIgorICAgICAgICAgICAgICAgICAg IChjaG9pY2UgKHN0cmluZyA6dGFnICJFbnZpcm9ubWVudCIpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAoY29ucyA6dGFnICJFbnZpcm9ubWVudCBhbmQgQWJicmV2aWF0aW9ucyIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmcgOnRhZyAiRW52aXJvbm1lbnQiKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlcGVhdCA6dGFnICJBYmJyZXZpYXRp b25zIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nIDp0 YWcgIkFiYnJldmlhdGlvbiIpKSkpKSkpCisgIDpwYWNrYWdlLXZlcnNpb24gJyhhdWN0ZXggLiAi MTQuMC44IikpCisKKworKGRlZnVuIFRlWC1mb2xkLWJlZ2luLWRpc3BsYXkgKGVudiAmcmVzdCBh cmdzKQorICAiRm9sZCBkaXNwbGF5IGZvciBhIFxcYmVnaW57RU5WfS4KK0ludGVuZGVkIGZvciB1 c2UgaW4gYFRlWC1mb2xkLWJlZ2luLWVuZC1zcGVjLWxpc3QnLiAgQVJHUyBpcyBhIGxpc3QKK2Nv bnNpc3Rpbmcgb2YgdGhlIHJlbWFpbmluZyBtYW5kYXRvcnkgbWFjcm8gYXJndW1lbnRzLiIKKyAg KFRlWC1mb2xkLS1oZWxwZXItZGlzcGxheSBlbnYgYXJncyAjJ2NhcikpCisKKyhkZWZ1biBUZVgt Zm9sZC1lbmQtZGlzcGxheSAoZW52ICZyZXN0IGFyZ3MpCisgICJGb2xkIGRpc3BsYXkgZm9yIGEg XFxlbmR7RU5WfSBtYWNyby4KK0ludGVuZGVkIGZvciB1c2UgaW4gYFRlWC1mb2xkLWJlZ2luLWVu ZC1zcGVjLWxpc3QnLiAgQVJHUyBpcyBhIGxpc3QKK2NvbnNpc3Rpbmcgb2YgdGhlIHJlbWFpbmlu ZyBtYW5kYXRvcnkgbWFjcm8gYXJndW1lbnRzLiIKKyAgKFRlWC1mb2xkLS1oZWxwZXItZGlzcGxh eSBlbnYgYXJncyAjJ2NkcikpCisKKyhkZWZ1biBUZVgtZm9sZC0taGVscGVyLWRpc3BsYXkgKGVu diBhcmdzIHNwZWMtcmV0cmlldmVyKQorICAiR2VuZXJhdGUgZm9sZCBkaXNwbGF5IHN0cmluZyBm b3IgXFxiZWdpbntFTlZ9IG9yIFxcZW5ke0VOVn0gbWFjcm8uCitBUkdTIGFyZSB0aGUgcmVtYWlu aW5nIG1hbmRhdG9yeSBtYWNybyBhcmd1bWVudHMuICBSZXR1cm5zIHRoZSBzdHJpbmcgb3IKK2Z1 bmN0aW9uIGRldGVybWluZWQgYnkgYFRlWC1mb2xkLWJlZ2luLWVuZC1zcGVjLWxpc3QnIGlmIEVO ViBpcyBmb3VuZAordGhlcmUsIG90aGVyd2lzZSBgYWJvcnQnLiAgU1BFQy1SRVRSSUVWRVIsIHdo aWNoIHNob3VsZCBiZSBlaXRoZXIgYGNhcicKK29yIGBjZHInLCByZXRyaWV2ZXMgdGhlIGFwcHJv cHJpYXRlIHBhcnQgb2YgdGhlIGRpc3BsYXkgc3BlY2lmaWNhdGlvbi4iCisgIChjYXRjaCAncmVz dWx0CisgICAgKGRvbGlzdCAoaXRlbSBUZVgtZm9sZC1iZWdpbi1lbmQtc3BlYy1saXN0KQorICAg ICAgKGxldCogKChzcGVjIChmdW5jYWxsIHNwZWMtcmV0cmlldmVyIChjYXIgaXRlbSkpKQorICAg ICAgICAgICAgICh0eXBlcyAoY2FkciBpdGVtKSkpCisgICAgICAgIChkb2xpc3QgKHR5cGUgdHlw ZXMpCisgICAgICAgICAgKHdoZW4tbGV0ICgobmFtZSAoY29uZCAoKHN0cmluZ3AgdHlwZSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoc3RyaW5nPSBlbnYgdHlwZSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudikpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoKGNvbnNwIHR5cGUpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHdoZW4gKG1lbWJlciBlbnYgdHlwZSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChjYXIgdHlwZSkpKSkpKQorICAgICAgICAgICAgKHRocm93ICdyZXN1 bHQKKyAgICAgICAgICAgICAgICAgICAoaWYgKGZ1bmN0aW9ucCBzcGVjKQorICAgICAgICAgICAg ICAgICAgICAgICAoZnVuY2FsbCBzcGVjIG5hbWUgYXJncykKKyAgICAgICAgICAgICAgICAgICAg IHNwZWMpKSkpKSkKKyAgICAnYWJvcnQpKQorCis7Ozs7OyBibG9jayBlbnZpcm9ubWVudHMKKwor KGRlZnVuIFRlWC1mb2xkLWZvcm1hdC10aXRsZWQtYmxvY2sgKF9lbnYgYXJncykKKyAgIkZvcm1h dCBmb2xkIGRpc3BsYXkgZm9yIGJlYW1lciBibG9jayBlbnZpcm9ubWVudHMuCitJbnRlbmRlZCBm b3IgdXNlIGluIGBUZVgtZm9sZC1iZWdpbi1lbmQtc3BlYy1saXN0Jy4gIEVOViBpcyBpZ25vcmVk LgorQVJHUyBpcyBhIGxpc3Qgd2hvc2UgY2FyIHdpbGwgYmUgdGhlIGJsb2NrIHRpdGxlLgorCitF eGFtcGxlOiBcIlxcYmVnaW57YmxvY2t9e1RoZW9yZW0gMX1cIiBmb2xkcyB0byBcIlRoZW9yZW0g MVwiLiIKKyAgKGNhciBhcmdzKSkKKworKGRlZnVuIFRlWC1mb2xkLWZvcm1hdC10aXRsZWQtYWxl cnRibG9jayAoX2VudiBhcmdzKQorICAiRm9ybWF0IGZvbGQgZGlzcGxheSBmb3IgYmVhbWVyIGFs ZXJ0YmxvY2sgZW52aXJvbm1lbnRzLgorSW50ZW5kZWQgZm9yIHVzZSBpbiBgVGVYLWZvbGQtYmVn aW4tZW5kLXNwZWMtbGlzdCcuICBUaGUgYXJndW1lbnRzCitFTlYvQVJHUyBhbmQgdGhlIGJlaGF2 aW9yIGFyZSBhcyBpbiBgVGVYLWZvbGQtZm9ybWF0LXRpdGxlZC1ibG9jaycsIGJ1dAordGhlIGZv bGRlZCB0ZXh0IGlzIGNvbG9yZWQgdXNpbmcgYFRlWC1mb2xkLWFsZXJ0LWNvbG9yJy4iCisgIChs ZXQgKChjYXB0aW9uIChjYXIgYXJncykpKQorICAgIChhZGQtZmFjZS10ZXh0LXByb3BlcnR5IDAg KGxlbmd0aCBjYXB0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoOmZvcmVncm91 bmQgLFRlWC1mb2xkLWFsZXJ0LWNvbG9yKSBuaWwgY2FwdGlvbikKKyAgICAoZm9ybWF0ICIlcyIg Y2FwdGlvbikpKQorCis7Ozs7OyB0aGVvcmVtLWxpa2UgZW52aXJvbm1lbnRzCisKKyhkZWZ1biBU ZVgtZm9sZC1mb3JtYXQtdGhlb3JlbS1lbnZpcm9ubWVudCAoZW52IF9hcmdzKQorICAiRm9ybWF0 IGZvbGQgZGlzcGxheSBmb3IgdGhlb3JlbS1saWtlIExhVGVYIGVudmlyb25tZW50cy4KK0ludGVu ZGVkIGZvciB1c2UgaW4gYFRlWC1mb2xkLWJlZ2luLWVuZC1zcGVjLWxpc3QnLiAgRU5WIGlzIHRo ZQorZW52aXJvbm1lbnQgbmFtZSwgQVJHUyBhcmUgaWdub3JlZC4gIFJldHVybnMgYSBzdHJpbmcg b2YgdGhlIGZvcm0KK1wiRW52aXJvbm1lbnQgXCIgb3IgXCJFbnZpcm9ubWVudCAoRGVzY3JpcHRp b24pIFwiIgorICAobGV0KiAoKGVudiAod2l0aC10ZW1wLWJ1ZmZlcgorICAgICAgICAgICAgICAg IChpbnNlcnQgZW52KQorICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisg ICAgICAgICAgICAgICAgKGNhcGl0YWxpemUtd29yZCAxKQorICAgICAgICAgICAgICAgIChidWZm ZXItc3RyaW5nKSkpCisgICAgICAgICAoZGVzY3JpcHRpb24KKyAgICAgICAgICAoY2FyIChUZVgt Zm9sZC1tYWNyby1udGgtYXJnIDEgKHBvaW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKFRlWC1mb2xkLWl0ZW0tZW5kIChwb2ludCkgJ21hY3JvKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyg/XFsgLiA/XF0pKSkpKQorICAgIChjb25j YXQKKyAgICAgKGZvcm1hdCAiJXMgIiBlbnYpCisgICAgICh3aGVuIGRlc2NyaXB0aW9uCisgICAg ICAgKGZvcm1hdCAiKCVzKSAiIGRlc2NyaXB0aW9uKSkpKSkKKwogOzs7IFV0aWxpdGllcwogCiAo ZGVmdW4gVGVYLWZvbGQtbWFrZS1vdmVybGF5IChvdi1zdGFydCBvdi1lbmQgdHlwZSBkaXNwbGF5 LXN0cmluZy1zcGVjKQotLSAKMi4zOS4zIChBcHBsZSBHaXQtMTQ1KQoK --000000000000164e9006247e4e07-- From debbugs-submit-bounces@debbugs.gnu.org Wed Oct 16 12:57:06 2024 Received: (at 73724-done) by debbugs.gnu.org; 16 Oct 2024 16:57:06 +0000 Received: from localhost ([127.0.0.1]:60248 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1t17Kc-0002RB-2F for submit@debbugs.gnu.org; Wed, 16 Oct 2024 12:57:06 -0400 Received: from eggs.gnu.org ([209.51.188.92]:37660) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1t17Ka-0002Qb-6s for 73724-done@debbugs.gnu.org; Wed, 16 Oct 2024 12:57:04 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1t17KB-0002O3-48; Wed, 16 Oct 2024 12:56:39 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To: From; bh=4vSjISE89CneTNd1PGpwe3v4Gv7FYqlwUOxZcVjJwUE=; b=O5psUGbaKelt67NHMX+k 8x6I2ZZ1ETGDTtP+5x6nJl5BYrdaGUSF1Ni7AyQO5a0T4GvgTYKJ16te9N/Tcj83WA/S23K4dXbpE LB0fCKHkBQJmgm03pDj7QpUKRW03k3ejtPtsF+cJMUp0N0MyFVaoVcwN4GhQ92RyXQrBxdNr+me1n N7GpCZLFA3uy19oX4vfmPGZb9qdLVg+UGDyFY17nzyzh6zmhqOyE8y+M8LnpWcPxq3buklcS3r7NC ke+NVj+lIA5pFtFnAFG3StBJlOAoPhMhqRnDs7ywzUu3+fZQ6P1zJhut0E8cXeOnRU813oNhhin9y fBUBp4+MJSbC0g==; From: Arash Esbati To: Paul Nelson Subject: Re: bug#73724: [PATCH] Add folding support for begin and end macros In-Reply-To: (Paul Nelson's message of "Tue, 15 Oct 2024 08:45:42 +0200") References: Date: Wed, 16 Oct 2024 18:56:33 +0200 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 73724-done Cc: 73724-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Paul Nelson writes: > Hi Arash, thanks, please find attached the updated patch. Paul Hi Paul, many thanks for your contribution and your patience. I installed that patch under your name, and therefore closing this report. Best, Arash From unknown Wed Jun 18 00:26:52 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Thu, 14 Nov 2024 12:24:06 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator