From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jim Porter Newsgroups: gmane.emacs.bugs Subject: bug#54227: 29.0.50; [PATCH] Inconsistencies with Eshell variable interpolation Date: Thu, 3 Mar 2022 09:56:14 -0800 Message-ID: References: <831qzjj7dd.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------4D2A7DF5CF159FAD0CD50FA6" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="10133"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 54227@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Thu Mar 03 18:57:23 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nPpha-0002UJ-71 for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 03 Mar 2022 18:57:22 +0100 Original-Received: from localhost ([::1]:44214 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPphY-0004L5-TW for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 03 Mar 2022 12:57:20 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:59758) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPphG-0004Ke-JR for bug-gnu-emacs@gnu.org; Thu, 03 Mar 2022 12:57:02 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:49722) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nPphG-0001BA-BH for bug-gnu-emacs@gnu.org; Thu, 03 Mar 2022 12:57:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1nPphG-0005Uj-2e for bug-gnu-emacs@gnu.org; Thu, 03 Mar 2022 12:57:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Jim Porter Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 03 Mar 2022 17:57:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 54227 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 54227-submit@debbugs.gnu.org id=B54227.164633018221071 (code B ref 54227); Thu, 03 Mar 2022 17:57:02 +0000 Original-Received: (at 54227) by debbugs.gnu.org; 3 Mar 2022 17:56:22 +0000 Original-Received: from localhost ([127.0.0.1]:43619 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nPpgc-0005Tn-9s for submit@debbugs.gnu.org; Thu, 03 Mar 2022 12:56:22 -0500 Original-Received: from mail-pf1-f175.google.com ([209.85.210.175]:34456) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nPpga-0005TY-51 for 54227@debbugs.gnu.org; Thu, 03 Mar 2022 12:56:20 -0500 Original-Received: by mail-pf1-f175.google.com with SMTP id g1so5350123pfv.1 for <54227@debbugs.gnu.org>; Thu, 03 Mar 2022 09:56:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:to:cc:references:from:message-id:date:mime-version :in-reply-to:content-language; bh=hkWGFv3jReC2WJm+A4I1WW1HmE6O7g0Wf1V3WHfDV0c=; b=b4bCQaFgA/644ftkAXXbH2/FMunPnNN4YTdXcPGgfCfzK9NE/iHo4ylqLCsrRU5O3D VowUN2Vte/IQTT+rZMs1JhT/nfo45PuPv7rLxu9hKsoFdkV8q9nR/1lQspFcUassaF8m y5f/O0pRHUWoYqS9kGvlee+D2xxv7E9DwBPQkS09jDI3P5bcIADmJJRZvrRORJcE4tOB lmlNRd/pNfkfy7fw1q5Lghr9T44lngcY1umjn1kuc4sZYyBQD3/Ae2tX4vkZaI82Yicn ZzR7FSJhU/8GlAXZnO2O3gsJD3f7SgJG9m9v4OV1rldEgkR44ODV1Mrv88lL/kKEFBrj CHDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :mime-version:in-reply-to:content-language; bh=hkWGFv3jReC2WJm+A4I1WW1HmE6O7g0Wf1V3WHfDV0c=; b=ik9f0jz81n2mT0BpEmut51+S32EA0SW9fcdiA8TzjvGr3LI/jYTjCycIRKt7kAlhmU YNQRyvZvVcRWDok8uK4CKT3WEYwUQ7DCXnzijis6ZPT1aZwjrDVWeWUiaoUi8hk1adMF K5E8nPNOHCTT7cDU7/IIafX5Uk7rysl/CQMdroG92eDaKqihgbQhJ4Nb1eyQVztIFeT8 84qx58FUj+FAsPcp8S3DSUYwvjC2lNvXRwX4vBxLLuSQEznsMkmas/tjUJW+c0Sh5ESd VQwvV8jgOUQh139YXKcLz6Np9KyioF/4dd1meTHTziY8gAoX25N4h/HNcD8IO8WpoHsJ 17rA== X-Gm-Message-State: AOAM533mjKxIWX1FLk00cUSSqxA27dWrzl4v6GkyY5sqt0JAPfI20/pO BF/P0P5fSGCVVQeelz7mC6hklHjezbg= X-Google-Smtp-Source: ABdhPJxBoGpp1xoQO2BdREnyKeFx3IQDbbjJHmKvXwn/a3TKgu09PXXJRtCEPJ3xXTuBW0i3XyQ7aQ== X-Received: by 2002:a05:6a00:a23:b0:4f6:72a8:20c7 with SMTP id p35-20020a056a000a2300b004f672a820c7mr3476021pfh.12.1646330174006; Thu, 03 Mar 2022 09:56:14 -0800 (PST) Original-Received: from [192.168.1.2] (cpe-76-168-148-233.socal.res.rr.com. [76.168.148.233]) by smtp.googlemail.com with ESMTPSA id e30-20020a056a0000de00b004ef299a4f89sm3382664pfj.180.2022.03.03.09.56.12 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 03 Mar 2022 09:56:13 -0800 (PST) In-Reply-To: <831qzjj7dd.fsf@gnu.org> Content-Language: en-US X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:227966 Archived-At: This is a multi-part message in MIME format. --------------4D2A7DF5CF159FAD0CD50FA6 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 3/3/2022 9:03 AM, Eli Zaretskii wrote: >> From: Jim Porter >> Date: Wed, 2 Mar 2022 22:35:22 -0800 >> >> +(defmacro eshell-with-temp-command (command &rest body) >> + "Narrow the buffer to COMMAND and execute the forms in BODY. > > What does it mean to "narrow the buffer to COMMAND"? > > Imagine that the user only sees this one line of the doc string -- > that actually happens in apropos commands. How can such a user > understand what this macro does? The macro's job is to take an Eshell command (or some fragment thereof) and narrow the buffer so that it's just looking at that part. This is to make sure that whatever is called in the body knows where to start and stop looking. I agree that this isn't very clear, but I had trouble coming up with a concise explanation. It's essentially a workaround for how Eshell expects things; a lot of the Eshell command parsing functions operate on a range of text in the buffer. Normally, if you wanted to use those functions with a temporary string, you'd use `with-temp-buffer' and insert the string there. That doesn't work here though, since Eshell uses lots of buffer-local state. This function tries to abstract that out in a way that's useful for a few different places in Eshell. If you have any ideas about how to improve the wording, I'm happy to update it though. I'll try to keep thinking as well. > >> +COMMAND can either be a string, or a cons cell demarcating a >> +buffer region. If COMMAND is a string, temporarily insert it >> +into the buffer before narrowing. Point will be set to the >> +beginning of the narrowed region. > > After reading this several time and looking at the implementation, I'm > beginning to think that COMMAND is not a good name for this argument. Perhaps not. That comes from `eshell-parse-command' below, which takes a COMMAND argument of the same possible forms. There's probably a better name to use... >> +(defun eshell-parse-inner-double-quote (bound) [snip] > > This seems to just unescape characters in the string? If so, "parse" > is not the best name for it, and the first line of the doc string > should say "unescape", not "parse". Fixed. I also reworded the manual entries. Hopefully they're a bit better. Finally, I made a very small tweak to how quoted variable expansions (like $"foo") are detected. The old code wasn't reporting the right error if you typed: echo $\"foo\" That's not correct and it should be considered invalid syntax (which it is now). --------------4D2A7DF5CF159FAD0CD50FA6 Content-Type: text/plain; charset=UTF-8; name="0001-Improve-wording-of-Eshell-variable-interpolation-cod.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-Improve-wording-of-Eshell-variable-interpolation-cod.pa"; filename*1="tch" RnJvbSBjYmY0M2JiM2Q5ZmJiMDVmNmE2N2Q3ODBjYjgwNTNmZjVlMGQ3MDBiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j b20+CkRhdGU6IFRodSwgMyBNYXIgMjAyMiAwOTozNzoyNSAtMDgwMApTdWJqZWN0OiBbUEFU Q0hdIEltcHJvdmUgd29yZGluZyBvZiBFc2hlbGwgdmFyaWFibGUgaW50ZXJwb2xhdGlvbgog Y29kZS9kb2N1bWVudGF0aW9uCgoqIGxpc3AvZXNoZWxsL2VzaC1hcmcuZWwgKGVzaGVsbC11 bmVzY2FwZS1pbm5lci1kb3VibGUtcXVvdGUpOiBSZW5hbWUKZnJvbSAnZXNoZWxsLXBhcnNl LWlubmVyLWRvdWJsZS1xdW90ZScuCgoqIGxpc3AvZXNoZWxsL2VzaC12YXIuZWwgKGVzaGVs bC1wYXJzZS12YXJpYWJsZS1yZWYpOiBVc2UKJ2VzaGVsbC11bmVzY2FwZS1pbm5lci1kb3Vi bGUtcXVvdGUnIGFuZCBpbXByb3ZlIHJvYnVzdG5lc3Mgb2YgcXVvdGVkCnZhcmlhYmxlIG5h bWUgbWF0Y2hpbmcuCihlc2hlbGwtcGFyc2UtaW5kaWNlcyk6IFVzZSAnZXNoZWxsLXVuZXNj YXBlLWlubmVyLWRvdWJsZS1xdW90ZScuCgoqIGRvYy9taXNjL2VzaGVsbC50ZXhpIChEb2xs YXJzIEV4cGFuc2lvbik6IEltcHJvdmUgd29yZGluZyBvZgpzdWJzY3JpcHQgbm90YXRpb24u Ci0tLQogZG9jL21pc2MvZXNoZWxsLnRleGkgICB8IDE5ICsrKysrKysrKystLS0tLS0tLS0K IGxpc3AvZXNoZWxsL2VzaC1hcmcuZWwgfCAgNCArKy0tCiBsaXNwL2VzaGVsbC9lc2gtdmFy LmVsIHwgMTQgKysrKysrKystLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMjAgaW5zZXJ0aW9u cygrKSwgMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL21pc2MvZXNoZWxsLnRl eGkgYi9kb2MvbWlzYy9lc2hlbGwudGV4aQppbmRleCA1NTgxZTVjZDllLi40N2Y4OTAyZDVh IDEwMDY0NAotLS0gYS9kb2MvbWlzYy9lc2hlbGwudGV4aQorKysgYi9kb2MvbWlzYy9lc2hl bGwudGV4aQpAQCAtMTA0MywxNSArMTA0MywxNiBAQCBEb2xsYXJzIEV4cGFuc2lvbgogaW5k ZXguICBJZiBAdmFye2V4cHJ9J3MgdmFsdWUgaXMgYSBzdHJpbmcsIGl0IHdpbGwgZmlyc3Qg YmUgc3BsaXQgYXQKIHdoaXRlc3BhY2UgdG8gbWFrZSBpdCBhIGxpc3QuICBJZiBAdmFye2V4 cHJ9J3MgdmFsdWUgaXMgYW4gYWxpc3QKIChAcHhyZWZ7QXNzb2NpYXRpb24gTGlzdCBUeXBl LCBBc3NvY2lhdGlvbiBMaXN0cywgLCBlbGlzcCwgVGhlIEVtYWNzCi1MaXNwIFJlZmVyZW5j ZSBNYW51YWx9KSwgdGhpcyB3aWxsIGNhbGwgQGNvZGV7YXNzb2N9IG9uIHRoZSByZXN1bHQg b2YKLUB2YXJ7ZXhwcn0sIHJldHVybmluZyB0aGUgQGNvZGV7Y2RyfSBvZiB0aGUgZWxlbWVu dCBvZiB0aGUgcmVzdWx0Ci13aG9zZSBjYXIgaXMgZXF1YWwgdG8gQGNvZGV7ImkifS4gIFJh aXNlcyBhbiBlcnJvciBpZiB0aGUgdmFsdWUgaXMgbm90Ci1hIHNlcXVlbmNlIChAcHhyZWZ7 U2VxdWVuY2VzIEFycmF5cyBWZWN0b3JzLCBTZXF1ZW5jZXMsICwgZWxpc3AsIFRoZQotRW1h Y3MgTGlzcCBSZWZlcmVuY2UgTWFudWFsfSkuCitMaXNwIFJlZmVyZW5jZSBNYW51YWx9KSwg dGhpcyB3aWxsIHJldHVybiB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoCit0aGUga2V5IEBj b2RleyJpIn0uCiAKLU11bHRpcGxlIHNldHMgb2YgaW5kaWNlcyBjYW4gYWxzbyBiZSBzcGVj aWZpZWQuIEZvciBleGFtcGxlLCBpZgotQHZhcnt2YXJ9IGlzIGEgbGlzdCBvZiBsaXN0cywg QHNhbXB7JEB2YXJ7dmFyfVswXVswXX0gaXMgZXF1aXZhbGVudCB0bwotQHNhbXB7KGNhYXIg QHZhcnt2YXJ9KX0uCitNdWx0aXBsZSBzZXRzIG9mIGluZGljZXMgY2FuIGFsc28gYmUgc3Bl Y2lmaWVkLiAgRm9yIGV4YW1wbGUsIGlmCitAdmFye3Zhcn0gaXMgQHNhbXB7KCgxIDIpICgz IDQpKX0sIHRoZW4gQHNhbXB7JEB2YXJ7dmFyfVswXVsxXX0gd2lsbAorZXhwYW5kIHRvIEBj b2RlezJ9LgorCitSYWlzZXMgYW4gZXJyb3IgaWYgdGhlIHJlc3VsdCBvZiBAdmFye2V4cHJ9 IGlzIG5vdCBhIHN0cmluZyBvciBhCitzZXF1ZW5jZSAoQHB4cmVme1NlcXVlbmNlcyBBcnJh eXMgVmVjdG9ycywgU2VxdWVuY2VzLCAsIGVsaXNwLCBUaGUKK0VtYWNzIExpc3AgUmVmZXJl bmNlIE1hbnVhbH0uKQogCiBAaXRlbSAkQHZhcntleHByfVtAdmFye3JlZ2V4cH0gQHZhcntp Li4ufV0KIEFzIGFib3ZlICh3aGVuIEB2YXJ7ZXhwcn0gZXhwYW5kcyB0byBhIHN0cmluZyks IGJ1dCB1c2UgQHZhcntyZWdleHB9CkBAIC0xMDY0LDcgKzEwNjUsNyBAQCBEb2xsYXJzIEV4 cGFuc2lvbgogb25lIG9mIHRoZSBhYm92ZSBmb3Jtcy4gIEZvciBleGFtcGxlLCBAc2FtcHsk I0B2YXJ7dmFyfX0gcmV0dXJucyB0aGUKIGxlbmd0aCBvZiB0aGUgdmFyaWFibGUgQHZhcnt2 YXJ9IGFuZCBAc2FtcHskI0B2YXJ7dmFyfVswXX0gcmV0dXJucyB0aGUKIGxlbmd0aCBvZiB0 aGUgZmlyc3QgZWxlbWVudCBvZiBAdmFye3Zhcn0uICBBZ2FpbiwgcmFpc2VzIGFuIGVycm9y IGlmCi10aGUgcmVzdWx0IG9mIEB2YXJ7ZXhwcn0gaXMgbm90IGEgc2VxdWVuY2UuCit0aGUg cmVzdWx0IG9mIEB2YXJ7ZXhwcn0gaXMgbm90IGEgc3RyaW5nIG9yIGEgc2VxdWVuY2UuCiAK IEBlbmQgdGFibGUKIApkaWZmIC0tZ2l0IGEvbGlzcC9lc2hlbGwvZXNoLWFyZy5lbCBiL2xp c3AvZXNoZWxsL2VzaC1hcmcuZWwKaW5kZXggZTE5NDgxYzRiYS4uYTNjOTYxZjU0NiAxMDA2 NDQKLS0tIGEvbGlzcC9lc2hlbGwvZXNoLWFyZy5lbAorKysgYi9saXNwL2VzaGVsbC9lc2gt YXJnLmVsCkBAIC0zNTQsOCArMzU0LDggQEAgZXNoZWxsLXBhcnNlLWRvdWJsZS1xdW90ZQog CQkgIChsaXN0ICdlc2hlbGwtZXNjYXBlLWFyZyBhcmcpKSkpCiAJICAoZ290by1jaGFyICgx KyBlbmQpKSkpKSkpCiAKLShkZWZ1biBlc2hlbGwtcGFyc2UtaW5uZXItZG91YmxlLXF1b3Rl IChib3VuZCkKLSAgIlBhcnNlIHRoZSBpbm5lciBwYXJ0IG9mIGEgZG91YmxlIHF1b3RlZCBz dHJpbmcuCisoZGVmdW4gZXNoZWxsLXVuZXNjYXBlLWlubmVyLWRvdWJsZS1xdW90ZSAoYm91 bmQpCisgICJVbmVzY2FwZSB0aGUgaW5uZXIgcGFydCBvZiBhIGRvdWJsZSBxdW90ZWQgc3Ry aW5nLgogVGhlIHN0cmluZyB0byBwYXJzZSBzdGFydHMgYXQgcG9pbnQgYW5kIGVuZHMgYXQg Qk9VTkQuCiAKIElmIEVzaGVsbCBpcyBjdXJyZW50bHkgcGFyc2luZyBhIHF1b3RlZCBzdHJp bmcgYW5kIHRoZXJlIGFyZSBhbnkKZGlmZiAtLWdpdCBhL2xpc3AvZXNoZWxsL2VzaC12YXIu ZWwgYi9saXNwL2VzaGVsbC9lc2gtdmFyLmVsCmluZGV4IGFmODllMzVmNTUuLjg3NDZmMmJi OTMgMTAwNjQ0Ci0tLSBhL2xpc3AvZXNoZWxsL2VzaC12YXIuZWwKKysrIGIvbGlzcC9lc2hl bGwvZXNoLXZhci5lbApAQCAtNDM3LDcgKzQzNyw3IEBAIGVzaGVsbC1wYXJzZS12YXJpYWJs ZS1yZWYKICAgICAgICAgICAgIGAoZXNoZWxsLWNvbnZlcnQKICAgICAgICAgICAgICAgKGVz aGVsbC1jb21tYW5kLXRvLXZhbHVlCiAgICAgICAgICAgICAgICAoZXNoZWxsLWFzLXN1YmNv bW1hbmQKLSAgICAgICAgICAgICAgICAsKGxldCAoKHN1YmNtZCAob3IgKGVzaGVsbC1wYXJz ZS1pbm5lci1kb3VibGUtcXVvdGUgZW5kKQorICAgICAgICAgICAgICAgICwobGV0ICgoc3Vi Y21kIChvciAoZXNoZWxsLXVuZXNjYXBlLWlubmVyLWRvdWJsZS1xdW90ZSBlbmQpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zIChwb2ludCkgZW5kKSkpCiAg ICAgICAgICAgICAgICAgICAgICAgIChlc2hlbGwtY3VycmVudC1xdW90ZWQgbmlsKSkKICAg ICAgICAgICAgICAgICAgICAoZXNoZWxsLXBhcnNlLWNvbW1hbmQgc3ViY21kKSkpKSkKQEAg LTQ3MCwxMyArNDcwLDE1IEBAIGVzaGVsbC1wYXJzZS12YXJpYWJsZS1yZWYKICAgICAoY29u ZGl0aW9uLWNhc2UgbmlsCiAgICAgICAgIGAoZXNoZWxsLWNvbW1hbmQtdG8tdmFsdWUKICAg ICAgICAgICAoZXNoZWxsLWxpc3AtY29tbWFuZAotICAgICAgICAgICAnLChyZWFkIChvciAo ZXNoZWxsLXBhcnNlLWlubmVyLWRvdWJsZS1xdW90ZSAocG9pbnQtbWF4KSkKKyAgICAgICAg ICAgJywocmVhZCAob3IgKGVzaGVsbC11bmVzY2FwZS1pbm5lci1kb3VibGUtcXVvdGUgKHBv aW50LW1heCkpCiAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWJ1ZmZlcikpKSkp CiAgICAgICAoZW5kLW9mLWZpbGUKICAgICAgICAodGhyb3cgJ2VzaGVsbC1pbmNvbXBsZXRl ID9cKCkpKSkKLSAgICgobG9va2luZy1hdCAocnggKG9yICInIiAiXCIiICJcXFwiIikpKQot ICAgIChlc2hlbGwtd2l0aC10ZW1wLWNvbW1hbmQgKG9yIChlc2hlbGwtcGFyc2UtaW5uZXIt ZG91YmxlLXF1b3RlIChwb2ludC1tYXgpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjb25zIChwb2ludCkgKHBvaW50LW1heCkpKQorICAgKChsb29raW5nLWF0IChy eC10by1zdHJpbmcKKyAgICAgICAgICAgICAgICAgYChvciAiJyIgLChpZiBlc2hlbGwtY3Vy cmVudC1xdW90ZWQgIlxcXCIiICJcIiIpKSkpCisgICAgKGVzaGVsbC13aXRoLXRlbXAtY29t bWFuZAorICAgICAgICAob3IgKGVzaGVsbC11bmVzY2FwZS1pbm5lci1kb3VibGUtcXVvdGUg KHBvaW50LW1heCkpCisgICAgICAgICAgICAoY29ucyAocG9pbnQpIChwb2ludC1tYXgpKSkK ICAgICAgIChsZXQgKChuYW1lIChpZiAoZXEgKGNoYXItYWZ0ZXIpID9cJykKICAgICAgICAg ICAgICAgICAgICAgICAoZXNoZWxsLXBhcnNlLWxpdGVyYWwtcXVvdGUpCiAgICAgICAgICAg ICAgICAgICAgIChlc2hlbGwtcGFyc2UtZG91YmxlLXF1b3RlKSkpKQpAQCAtNTA2LDcgKzUw OCw3IEBAIGVzaGVsbC1wYXJzZS1pbmRpY2VzCiAJKGlmIChub3QgZW5kKQogCSAgICAodGhy b3cgJ2VzaGVsbC1pbmNvbXBsZXRlID9cWykKIAkgIChmb3J3YXJkLWNoYXIpCi0gICAgICAg ICAgKGVzaGVsbC13aXRoLXRlbXAtY29tbWFuZCAob3IgKGVzaGVsbC1wYXJzZS1pbm5lci1k b3VibGUtcXVvdGUgZW5kKQorICAgICAgICAgIChlc2hlbGwtd2l0aC10ZW1wLWNvbW1hbmQg KG9yIChlc2hlbGwtdW5lc2NhcGUtaW5uZXItZG91YmxlLXF1b3RlIGVuZCkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29ucyAocG9pbnQpIGVuZCkpCiAJ ICAgIChsZXQgKGVzaGVsbC1nbG9iLWZ1bmN0aW9uIChlc2hlbGwtY3VycmVudC1xdW90ZWQg bmlsKSkKIAkgICAgICAoc2V0cSBpbmRpY2VzIChjb25zIChlc2hlbGwtcGFyc2UtYXJndW1l bnRzCi0tIAoyLjI1LjEKCg== --------------4D2A7DF5CF159FAD0CD50FA6--