From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 30652 invoked from network); 25 Apr 2021 21:57:02 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 25 Apr 2021 21:57:02 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20200801; t=1619387822; b=mhF1Qe9EhQcNRZPWCl22/IYG43Hv5h/8VwVhezewYTEawiRoDa5gFtlbNef53L3MdRtj7sT6Df ASLdG1FgIC1M5iSJJCSJv3Hammhm6cjoWdPCVHafeQ/TSpoo6mtuFX78KcBaYsZUjL2vKMbfJ/ T61dcCURU31dZMCbU8khEmHP1juI8gqYHL2Tz2ZZOGNp72/Q8pSMUydYwsZxNCCKjW0yT6GsSL PYMYer6Jl+Js8Z9Vc7TCoJ12UpjWhkpuohtlWB4fwO8F0LR4b/vEcHHa5ZjAJz53nplAsll5Hy XZKE5kYeI0lUgLZeGt4XsYC13l5plLI30J3Tf2UVX/B8XQ==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-ot1-f49.google.com) smtp.remote-ip=209.85.210.49; dkim=pass header.d=brasslantern-com.20150623.gappssmtp.com header.s=20150623 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20200801; t=1619387822; bh=vLeycQvwn+vSqPgZLqfvyUq7UYlNuExHGndAFfDsV1I=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:DKIM-Signature:DKIM-Signature; b=poWy/Vcc/hhAPZ9YDcTZW0pcMQrz5+GpRvBenB7oCBjtiItleSp5TFzsrfrD+AnZmrPIRXFNgd SsNCd2YjWtA3k926A1/+4j6RArQmCQ+KzZiWw45tUtEcIE2qoNUN3wQis0Zvbv2f8y7QS5o5hM nKfb+qJ1sJrOaWaRpbnLLJXDtMW9i8wkUdl88BUnoF8f1t/hVTPs4OI9St09PJYYkwJUyem62t sACOd4DzwCTqHnqPHTSDQpFHRnQdwp5GdE4/69NC4eaG0ztc1FFA6GnZx3ctzGHfB2gjR3eyVv wYT+Ud2admQcpVvLyQht7tYEVGcDiqUFD1jEyA+DlG530w==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20200801; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:To:Subject:Message-ID: Date:From:In-Reply-To:References:MIME-Version:Reply-To:Cc: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=G0yf/IhGWGCAXNqxlB9RP65V+4Ch5cr2rUJjbacsxfE=; b=f9KDXgY/kMCB6SL3FZRplfbWqF fnxTd+jAiO5FCmsaztXsBEWmvKLX4PClMtlBvQSBy1cN9oYSbXv0zRnBghUtwySuU1t555itBw6cf Gz0HQbMkT2dQVS5pqCmn4cKRf3KVOKq4T9mE+YbZEc2QfKdmxp94Eh50pKr6N/LJORqSRfGL1dIzT WfY8ZnLSj765INKVA6kqDWeWvghv68lnbv+J955nmv+C/F4Sm4+DJHkHuXfp9dKaogTeBF0hNARYj AHyD3hOx1tjVMoUJBADLSaTcDx+HDKd+ldfwRItzL4Y1wYLrnWsMHd60qvxbj3RMVDWfEyLwrRFke a41MN8hg==; Received: from authenticated user by zero.zsh.org with local id 1lamkP-000PfL-5O; Sun, 25 Apr 2021 21:57:01 +0000 Authentication-Results: zsh.org; iprev=pass (mail-ot1-f49.google.com) smtp.remote-ip=209.85.210.49; dkim=pass header.d=brasslantern-com.20150623.gappssmtp.com header.s=20150623 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none Received: from mail-ot1-f49.google.com ([209.85.210.49]:45049) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1lamjq-000PPx-Tz; Sun, 25 Apr 2021 21:56:27 +0000 Received: by mail-ot1-f49.google.com with SMTP id 5-20020a9d09050000b029029432d8d8c5so24357679otp.11 for ; Sun, 25 Apr 2021 14:56:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=G0yf/IhGWGCAXNqxlB9RP65V+4Ch5cr2rUJjbacsxfE=; b=eL60C2VI+XygQjuLk+vqPBVweQ3Ts9eiXGoni2VR+wDPyyNP0NmepJDF5IpRI0W5cx zUokN7VFedd1ljvwxyq6Vq0gqr7y9L6GEI2J0pm1j0sX4UDE4AKHoj7tnq5zYEsIah/A HGiBGbRMESnpCYJGUjCsOwipeFrjuc3q/8ItCRMjpwg3J3otfgyIa5kwCZ2mID3H8h1X R4oNg8ecjHsEkpsaRa1SQeHZuKa/2Jd8lMnps98uAzKmpr6hep+hh/f7dKikIAB+Yk9k BpGAQpUbguLBtCWy76QVZ3ZFkxiKzogWuEY3xnGtHkMnSXjXpO2TjtdnQ6WQwpmRtfMo SXAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=G0yf/IhGWGCAXNqxlB9RP65V+4Ch5cr2rUJjbacsxfE=; b=XxxfWcT05cXGqt3RpJam5mHbyWBJEbpnSo1+ZmZE1ndzPUz/hmvLYe2nmWNoh17da2 XEheXR2hJFzCRg/YEKRptxLdYgj/tqSl95otnjgl9JtghiuHB+lhCHoMvUeyeryfbMjG O3t/EX3SuZpLKnlUuXIdS2plmDAV0rB2doQJduY8rh26eLgBl2OS+ZTMw5QMYFwYAMyM oOVet6GydLOp38hJyO7g4T5jfYgPPkRs4oXlU07//sEf+AdUe1UJV8uc/G3OldL1oRtx L/bmC9yIyfs6ECYzj6QCRcj2oiBvjSwkBE2RHeiY6QoK8teWwfUhVl8gZYxleiKta/IV akvA== X-Gm-Message-State: AOAM533GpC6CQ/YfU0/BPfbw4klzxSiq6cjl8+XTjwluuh4m8vEYqr+K 6JyL0mrLguS93soFG+0TirGZdiB1LDTEDzyk1pFMsoQTEY8= X-Google-Smtp-Source: ABdhPJwnSfOjpzXC0Q8zwjQUyuuiJt7D66ydb1tKjfYLtGCrHa4Vfcf7D9H0nGonfiw/nJ/CcoUAiDlskbNE54kUFoo= X-Received: by 2002:a9d:a4e:: with SMTP id 72mr11942726otg.229.1619387785249; Sun, 25 Apr 2021 14:56:25 -0700 (PDT) MIME-Version: 1.0 References: <20200523022807.08f3ba45@tarpaulin.shahaf.local2> <20200525023515.7855610a@tarpaulin.shahaf.local2> In-Reply-To: From: Bart Schaefer Date: Sun, 25 Apr 2021 14:56:14 -0700 Message-ID: Subject: [PATCH] Re: Editing the history in the shell To: Zsh hackers list Content-Type: multipart/mixed; boundary="000000000000b1b06905c0d31916" X-Seq: 48710 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: --000000000000b1b06905c0d31916 Content-Type: text/plain; charset="UTF-8" Another one from last May. On Fri, May 22, 2020 at 3:24 PM Bart Schaefer wrote: > > The patch implements "zed -h" which loads the history into vared and > arranges to replace the existing history with that before it exits. > This does NOT solve Markus' complaint about the history numbers, they > increase by the number of entries output by the editor. It makes no > attempt to account for various history options, so those may change > the final result if they affect "print -s". > > It also handles "zed -h filename" which loads that file and saves it > back again rather than alter the current shell history. On Tue, May 26, 2020 at 8:32 PM Bart Schaefer wrote: > > I think zed has a long-standing problem with SH_WORD_SPLIT and > probably some other SH_ options? > > % setopt shwordsplit > % zed "/tmp/one two" > Where does this go? > % cat "/tmp/one two" > cat: '/tmp/one two': No such file or directory > % cat /tmp/one > Where does this go? > % > > So ... how far do we go to make "zed" compatible with nonstandard > options, and how do we approach doing it? Try to use entirely > portable syntax, or invoke "emulate -L", or something in between? > Look at the handling of function names, too -- it creates the empty > function definition with ${(q-)1} but makes no attempt to quote $1 > when calling "functions" or "autoload". The attached patch both implements zed -h and fixes issues with SH_WORD_SPLIT and NO_SHORT_LOOPS, but does not attempt a comprehensive repair, so the "how far do we go?" question remains. Completion is updated per Oliver's advice in the "_arguments optspecs" thread (starts at workers/45909, messages from Oliver seem to have been doubled up in the archives) but could use a once-over. Doc also updated. A minor head-scratcher for me (insufficient note-taking to return to this a year later) is that at one time the code for zed -h was using var=( "${(@Oav)history:gs/\\/\\\\}" ) before invoking vared. Now I can't figure out when or why I thought that was necessary; I'm able to edit my existing 500 commands / 734 lines of history without seeing any garbled backslashes, using only var=( "${(@Oav)history}" ) as in the patch. Can anyone jog my memory? Do backslashes ever need double-escaping? --000000000000b1b06905c0d31916 Content-Type: text/plain; charset="US-ASCII"; name="histed-patch.txt" Content-Disposition: attachment; filename="histed-patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_knxpn91c0 ZGlmZiAtLWdpdCBhL0NvbXBsZXRpb24vWnNoL0NvbW1hbmQvX3plZCBiL0NvbXBsZXRpb24vWnNo L0NvbW1hbmQvX3plZAppbmRleCA2YjY4ZmFkZjAuLmY4NDk5M2Q3MyAxMDA2NDQKLS0tIGEvQ29t cGxldGlvbi9ac2gvQ29tbWFuZC9femVkCisrKyBiL0NvbXBsZXRpb24vWnNoL0NvbW1hbmQvX3pl ZApAQCAtMSwxMCArMSwxNiBAQAotI2NvbXBkZWYgemVkIGZuZWQKKyNjb21wZGVmIHplZCBmbmVk IGhpc3RlZAogCiBjYXNlICRzZXJ2aWNlIGluCiAoZm5lZCkgX2FyZ3VtZW50cyAtUyA6ICc6c2hl bGwgZnVuY3Rpb246X2Z1bmN0aW9ucyc7OworKGhpc3RlZCkgX2FyZ3VtZW50cyAtUyA6IFwKKwkn MTpoaXN0b3J5IGZpbGU6X2ZpbGVzJyBcCisJJzI6aGlzdG9yeSBzaXplOiAnOzsKICh6ZWQpIF9h cmd1bWVudHMgLVMgOiBcCi0JJygtIDIpOmZpbGU6X2ZpbGVzJyBcCi0JJygxKTpzaGVsbCBmdW5j dGlvbjpfZnVuY3Rpb25zJyBcCi0JJygxKS14K1tzcGVjaWZ5IHNwYWNlcyB0byB1c2UgZm9yIGlu ZGVudGF0aW9uIGluIGZ1bmN0aW9uIGV4cGFuc2lvbl06c3BhY2VzJyBcCi0JJygxKS1mW2VkaXQg ZnVuY3Rpb25dJzs7CisgICAgICAgICcoLWggMSAzIDQpLWZbZWRpdCBmdW5jdGlvbl0nIFwKKyAg ICAgICAgJygtaCAxIDMgNCkteCtbc3BlY2lmeSBzcGFjZXMgdG8gdXNlIGZvciBpbmRlbnRhdGlv biBpbiBmdW5jdGlvbiBleHBhbnNpb25dOnNwYWNlcycgXAorICAgICAgICAnKC1mIC14IDEgMikt aFtlZGl0IGhpc3RvcnldJyBcCisgICAgICAgICcoLSAyIDMgNCkxOmZpbGU6X2ZpbGVzJyBcCisg ICAgICAgICcoMyA0KTI6c2hlbGwgZnVuY3Rpb246X2Z1bmN0aW9ucycgXAorICAgICAgICAnMzpo aXN0b3J5IGZpbGU6X2ZpbGVzIC1nICIqKEQpIicgXAorICAgICAgICAnNDpoaXN0b3J5IHNpemUn OzsKIGVzYWMKZGlmZiAtLWdpdCBhL0RvYy9ac2gvY29udHJpYi55byBiL0RvYy9ac2gvY29udHJp Yi55bwppbmRleCA4YmYxYTIwOGUuLjBmMmQwNjY0ZCAxMDA2NDQKLS0tIGEvRG9jL1pzaC9jb250 cmliLnlvCisrKyBiL0RvYy9ac2gvY29udHJpYi55bwpAQCAtNDI5NSw2ICs0Mjk1LDEyIEBAIFNh bWUgYXMgdHQoemVkIC1mKS4gIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgYXBwZWFyIGluIHRoZSB6 c2gKIGRpc3RyaWJ1dGlvbiwgYnV0IGNhbiBiZSBjcmVhdGVkIGJ5IGxpbmtpbmcgdHQoemVkKSB0 byB0aGUgbmFtZSB0dChmbmVkKQogaW4gc29tZSBkaXJlY3RvcnkgaW4geW91ciB0dChmcGF0aCku CiApCitmaW5kZXgoaGlzdGVkKQoraXRlbSh0dChoaXN0ZWQpIFsgWyB2YXIobmFtZSkgXSB2YXIo c2l6ZSkgXSkoCitTYW1lIGFzIHR0KHplZCAtaCkuICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGFw cGVhciBpbiB0aGUgenNoCitkaXN0cmlidXRpb24sIGJ1dCBjYW4gYmUgY3JlYXRlZCBieSBsaW5r aW5nIHR0KHplZCkgdG8gdGhlIG5hbWUgdHQoaGlzdGVkKQoraW4gc29tZSBkaXJlY3RvcnkgaW4g eW91ciB0dChmcGF0aCkuCispCiBmaW5kZXgoaXMtYXQtbGVhc3QpCiBpdGVtKHR0KGlzLWF0LWxl YXN0KSB2YXIobmVlZGVkKSBbIHZhcihwcmVzZW50KSBdKSgKIFBlcmZvcm0gYSBncmVhdGVyLXRo YW4tb3ItZXF1YWwtdG8gY29tcGFyaXNvbiBvZiB0d28gc3RyaW5ncyBoYXZpbmcgdGhlCkBAIC00 NTA0LDYgKzQ1MTAsNyBAQCB0dCh6YXJncykgd2l0aCB0aGUgdHQoLSl0dCgtaGVscCkgb3B0aW9u LgogKQogZmluZGV4KHplZCkKIHhpdGVtKHR0KHplZCkgWyB0dCgtZikgWyB0dCgteCkgdmFyKG51 bSkgXSBdIHZhcihuYW1lKSkKK3hpdGVtKHR0KHplZCkgWyB0dCgtaCkgWyB2YXIobmFtZSkgXSB2 YXIoc2l6ZSkgXSkKIGl0ZW0odHQoemVkIC1iKSkoCiBUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIFpM RSBlZGl0b3IgdG8gZWRpdCBhIGZpbGUgb3IgZnVuY3Rpb24uCiAKQEAgLTQ1MTgsNyArNDUyNSwx NCBAQCB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHNwYWNlczsgYHR0KC14IDIpJyBpcyBjb25zaXN0ZW50 IHdpdGggdGhlIGxheW91dAogb2YgZnVuY3Rpb25zIGRpc3RyaWJ1dGVkIHdpdGggdGhlIHNoZWxs LgogCiBXaXRob3V0IHR0KC1mKSwgdmFyKG5hbWUpIGlzIHRoZSBwYXRoIG5hbWUgb2YgdGhlIGZp bGUgdG8gZWRpdCwgd2hpY2ggbmVlZAotbm90IGV4aXN0OyBpdCBpcyBjcmVhdGVkIG9uIHdyaXRl LCBpZiBuZWNlc3NhcnkuCitub3QgZXhpc3Q7IGl0IGlzIGNyZWF0ZWQgb24gd3JpdGUsIGlmIG5l Y2Vzc2FyeS4gIFdpdGggdHQoLWgpLCB0aGUgZmlsZSBpcworcHJlc3VtZWQgdG8gY29udGFpbiBo aXN0b3J5IGV2ZW50cy4KKworV2hlbiBubyBmaWxlIG5hbWUgaXMgcHJvdmlkZWQgZm9yIHR0KC1o KSB0aGUgY3VycmVudCBzaGVsbCBoaXN0b3J5IGlzIGVkaXRlZAoraW4gcGxhY2UuICBUaGUgaGlz dG9yeSBpcyByZW51bWJlcmVkIHdoZW4gemVkIGV4aXRzIHN1Y2Nlc3NmdWxseS4KKworV2hlbiBl ZGl0aW5nIGhpc3RvcnksIG11bHRpLWxpbmUgZXZlbnRzIG11c3QgaGF2ZSBhIHRyYWlsaW5nIGJh Y2tzbGFzaCBvbgorZXZlcnkgbGluZSBiZWZvcmUgdGhlIGxhc3QuCiAKIFdoaWxlIGVkaXRpbmcs IHRoZSBmdW5jdGlvbiBzZXRzIHRoZSBtYWluIGtleW1hcCB0byB0dCh6ZWQpIGFuZCB0aGUKIHZp IGNvbW1hbmQga2V5bWFwIHRvIHR0KHplZC12aWNtZCkuICBUaGVzZSB3aWxsIGJlIGNvcGllZCBm cm9tIHRoZSBleGlzdGluZwpAQCAtNDU0Myw3ICs0NTU3LDExIEBAIG9mIHRoZSByZXR1cm4ga2V5 KSwgb3IgY2FuIGJlIGJvdW5kIHRvIGEga2V5IGluIGVpdGhlciBvZiB0aGUgdHQoemVkKSBvcgog dHQoemVkLXZpY21kKSBrZXltYXBzIGFmdGVyIGB0dCh6ZWQgLWIpJyBoYXMgYmVlbiBydW4uICBX aGVuIHRoZSB3aWRnZXQgaXMKIGNhbGxlZCwgaXQgcHJvbXB0cyBmb3IgYSBuZXcgbmFtZSBmb3Ig dGhlIGZpbGUgYmVpbmcgZWRpdGVkLiAgV2hlbiB6ZWQKIGV4aXRzIHRoZSBmaWxlIHdpbGwgYmUg d3JpdHRlbiB1bmRlciB0aGF0IG5hbWUgYW5kIHRoZSBvcmlnaW5hbCBmaWxlIHdpbGwKLWJlIGxl ZnQgYWxvbmUuICBUaGUgd2lkZ2V0IGhhcyBubyBlZmZlY3Qgd2l0aCBgdHQoemVkIC1mKScuCiti ZSBsZWZ0IGFsb25lLiAgVGhlIHdpZGdldCBoYXMgbm8gZWZmZWN0IHdpdGggYHR0KHplZCAtZikn LiAgV2hlbiBlZGl0aW5nCit0aGUgY3VycmVudCBoaXN0b3J5IHdpdGggYHR0KHplZCAtaCknLCB0 aGUgaGlzdG9yeSBpcyBmaXJzdCB1cGRhdGVkIGFuZAordGhlbiB0aGUgZmlsZSBpcyB3cml0dGVu LCBidXQgdGhlIGdsb2JhbCBzZXR0aW5nIG9mIHR0KEhJU1RGSUxFKSBpcyBub3QKK2FsdGVyZWQu CisKIAogV2hpbGUgdHQoemVkLXNldC1maWxlLW5hbWUpIGlzIHJ1bm5pbmcsIHplZCB1c2VzIHRo ZSBrZXltYXAKIHR0KHplZC1ub3JtYWwta2V5bWFwKSwgd2hpY2ggaXMgbGlua2VkIGZyb20gdGhl IG1haW4ga2V5bWFwIGluIGVmZmVjdApkaWZmIC0tZ2l0IGEvRnVuY3Rpb25zL01pc2MvemVkIGIv RnVuY3Rpb25zL01pc2MvemVkCmluZGV4IDllYjRiMmQ5My4uN2QwZDU5MGRiIDEwMDY0NAotLS0g YS9GdW5jdGlvbnMvTWlzYy96ZWQKKysrIGIvRnVuY3Rpb25zL01pc2MvemVkCkBAIC01LDE2ICs1 LDE4IEBACiAjIEVkaXQgc21hbGwgZmlsZXMgd2l0aCB0aGUgY29tbWFuZCBsaW5lIGVkaXRvci4K ICMgVXNlIF5YXlcgdG8gc2F2ZSAob3IgWlogaW4gdmljbWQgbW9kZSksIF5DIHRvIGFib3J0Lgog IyBPcHRpb24gLWY6IGVkaXQgc2hlbGwgZnVuY3Rpb25zLiAgKEFsc28gaWYgY2FsbGVkIGFzIGZu ZWQuKQorIyBPcHRpb24gLWg6IGVkaXQgc2hlbGwgaGlzdG9yeS4gIChBbHNvIGlmIGNhbGxlZCBh cyBoaXN0ZWQuKQogCiBzZXRvcHQgbG9jYWxvcHRpb25zIG5va3NoYXJyYXlzCiAKIGxvY2FsIHZh ciBvcHRzIHplZF9maWxlX25hbWUKICMgV2UgZG8gbm90IHdhbnQgdGltZW91dCB3aGlsZSB3ZSBh cmUgZWRpdGluZyBhIGZpbGUKLWludGVnZXIgVE1PVVQ9MCBva2FyZ3M9MSBmdW4gYmluZAoraW50 ZWdlciBUTU9VVD0wIG9rYXJncz0xIGZ1biBoaXN0IGJpbmQKIGxvY2FsIC1hIGV4cGFuZAogCi16 cGFyc2VvcHRzIC1EIC1BIG9wdHMgZiBiIHg6Cit6cGFyc2VvcHRzIC1EIC1BIG9wdHMgZiBoIGIg eDoKIGZ1bj0kK29wdHNbLWZdCitoaXN0PSQrb3B0c1staF0KIGJpbmQ9JCtvcHRzWy1iXQogaWYg W1sgJG9wdHNbLXhdID09IDwtPiBdXTsgdGhlbgogICBleHBhbmQ9KC14ICRvcHRzWy14XSkKQEAg LTI0LDIzICsyNiwyOCBAQCBlbGlmICgoICQrb3B0c1steF0gKSk7IHRoZW4KIGZpCiAKIFtbICQw ID0gZm5lZCBdXSAmJiBmdW49MQorW1sgJDAgPSBoaXN0ZWQgXV0gJiYgaGlzdD0xCisoKCBoaXN0 ICYmICQjIDw9IDIgKSkgJiYgb2thcmdzPSQjCiAoKCBiaW5kICkpICYmIG9rYXJncz0wCiAKLWlm ICgoICQjICE9IG9rYXJncyApKTsgdGhlbgoraWYgKCggJCMgIT0gb2thcmdzIHx8IGJpbmQgKyBm dW4gKyBoaXN0ID4gMSApKTsgdGhlbgogICAgIGVjaG8gJ1VzYWdlOgogemVkIGZpbGVuYW1lCiB6 ZWQgLWYgWyAteCBOIF0gZnVuY3Rpb24KK3plZCAtaCBbIGZpbGVuYW1lIFsgc2l6ZSBdIF0KIHpl ZCAtYicgPiYyCiAgICAgcmV0dXJuIDEKIGZpCiAKIGxvY2FsIGN1cmNvbnRleHQ9emVkOjo6CiAK LSMgTWF0Y2hpbmcgdXNlZCBpbiB6c3R5bGUgLW06IGhpZGUgcmVzdWx0IGZyb20gY2FsbGVyLgot IyBWYXJpYWJsZXMgbm90IHVzZWQgZGlyZWN0bHkgaGVyZS4KLWxvY2FsIC1hIG1hdGNoIG1iZWdp biBtZW5kCi16c3R5bGUgLW0gIjpjb21wbGV0aW9uOnplZDoqIiBpbnNlcnQtdGFiICcqJyB8fAot ICAgIHpzdHlsZSAiOmNvbXBsZXRpb246emVkOioiIGluc2VydC10YWIgeWVzCisoKSB7CisgICAg IyBNYXRjaGluZyB1c2VkIGluIHpzdHlsZSAtbTogaGlkZSByZXN1bHQgZnJvbSBjYWxsZXIuCisg ICAgIyBWYXJpYWJsZXMgbm90IHVzZWQgZGlyZWN0bHkgaGVyZS4KKyAgICBsb2NhbCAtYSBtYXRj aCBtYmVnaW4gbWVuZAorICAgIHpzdHlsZSAtbSAiOmNvbXBsZXRpb246emVkOioiIGluc2VydC10 YWIgJyonIHx8CisJenN0eWxlICI6Y29tcGxldGlvbjp6ZWQ6KiIgaW5zZXJ0LXRhYiB5ZXMKK30K IAogem1vZGxvYWQgenNoL3Rlcm1pbmZvIDI+L2Rldi9udWxsCiAKQEAgLTEyNCwyMiArMTMxLDUx IEBAIGZpCiBzZXRvcHQgbG9jYWxvcHRpb25zIG5vYmFuZ2hpc3QKIAogaWYgKChmdW4pKSB0aGVu Ci0gIHZhcj0iJChmdW5jdGlvbnMgJGV4cGFuZCAtLSAkMSkiCisgIHZhcj0iJChmdW5jdGlvbnMg JGV4cGFuZCAtLSAiJDEiKSIKICAgIyBJZiBmdW5jdGlvbiBpcyB1bmRlZmluZWQgYnV0IGF1dG9s b2FkYWJsZSwgbG9hZCBpdAogICBpZiBbWyAkdmFyID0gKlwjXCB1bmRlZmluZWQqIF1dIHRoZW4K LSAgICB2YXI9IiQoYXV0b2xvYWQgK1ggJDE7IGZ1bmN0aW9ucyAtLSAkMSkiCisgICAgdmFyPSIk KGF1dG9sb2FkICtYICIkMSI7IGZ1bmN0aW9ucyAtLSAiJDEiKSIKICAgZWxpZiBbWyAteiAkdmFy IF1dIHRoZW4KICAgICB2YXI9IiR7KHEtKTF9ICgpIHsKIH0iCiAgIGZpCiAgIHZhcmVkIC1NIHpl ZCAtbSB6ZWQtdmljbWQgLWkgX196ZWRfaW5pdCB2YXIgJiYgZXZhbCBmdW5jdGlvbiAiJHZhciIK K2VsaWYgKChoaXN0KSkgdGhlbgorICBpZiBbWyAtbiAkMSBdXTsgdGhlbgorICAgIHsgZmMgLXAg LWEgIiQxIiAkezI6LSQoeyB3YyAtbCA8IiQxIiB9IDI+L2Rldi9udWxsKX0gfHwgcmV0dXJuIH0K KyAgICBsZXQgSElTVFNJWkUrKyAgCisgICAgcHJpbnQgLXMgIiIJCSMgV29yayBhcm91bmQgZmMg LXAgbGltaXRhdGlvbgorICBmaQorICAjIFdoZW4gZWRpdGluZyB0aGUgY3VycmVudCBzaGVsbCBo aXN0b3J5LCB0aGUgInplZCAtaCIgY29tbWFuZCBpcyBub3QKKyAgIyBpdHNlbGYgaW5jbHVkZWQg YmVjYXVzZSB0aGUgY3VycmVudCBldmVudCBpcyBub3QgYWRkZWQgdG8gdGhlIHJpbmcKKyAgIyB1 bnRpbCB0aGUgbmV4dCBwcm9tcHQgaXMgcHJpbnRlZC4gIFRoaXMgbWVhbnMgInplZCAtaCIgaXMg cHJlcGVuZGVkCisgICMgdG8gdGhlIHJlc3VsdCBvZiB0aGUgZWRpdCwgYmVjYXVzZSBvZiB0aGUg d2F5ICJwcmludCAtcyIgaXMgZGVmaW5lZC4KKyAgdmFyPSggIiR7KEBPYXYpaGlzdG9yeX0iICkK KyAgSUZTPSQnXG4nIHZhcmVkIC1NIHplZCAtbSB6ZWQtdmljbWQgLWkgX196ZWRfaW5pdCB2YXIK KyAgaWYgKCggPyApKTsgdGhlbgorICAgIFtbIC1uICQxIF1dICYmIHVuc2V0IEhJU1RGSUxFCisg IGVsc2UKKyAgICBsb2NhbCBISVNUU0laRT0wIHNhdmVoaXN0PSQjdmFyCisgICAgZmMgLVIgL2Rl di9udWxsCSMgUmVtb3ZlIGVudHJpZXMgb3RoZXIgdGhhbiB0aG9zZSBhZGRlZCBoZXJlCisgICAg SElTVFNJWkU9JHNhdmVoaXN0CSMgUmVzZXRzIG9uIGZ1bmN0aW9uIGV4aXQgYmVjYXVzZSBsb2Nh bAorICAgIFtbIC1uICQxIF1dICYmIFNBVkVISVNUPSRzYXZlaGlzdAkjIFJlc2V0cyB2aWEgZm9y ZWdvaW5nIGZjIC1hCisgICAgZm9yICgoIGhpc3Q9MTsgaGlzdCA8PSBzYXZlaGlzdDsgaGlzdCsr ICkpCisgICAgZG8gcHJpbnQgLXJzIC0tICIkdmFyW2hpc3RdIgorICAgIGRvbmUKKyAgICBpZiBb WyAtbiAkemVkX2ZpbGVfbmFtZSBdXTsgdGhlbgorICAgICAgZmMgLVcgIiR6ZWRfZmlsZV9uYW1l IgorICAgICAgW1sgLW4gJDEgXV0gJiYgdW5zZXQgSElTVEZJTEUKKyAgICBmaQorICAgICMgTm90 ZSBwcmVwZW5kIGVmZmVjdCB3aGVuIGdsb2JhbCBISVNUU0laRSBncmVhdGVyIHRoYW4gJHNhdmVo aXN0LgorICAgICMgVGhpcyBkb2VzIG5vdCBhZmZlY3QgZmlsZSBlZGl0aW5nLgorICBmaQogZWxz ZQotICB6ZWRfZmlsZV9uYW1lPSQxCi0gIFtbIC1mICQxIF1dICYmIHZhcj0iJCg8JDEpIgorICB6 ZWRfZmlsZV9uYW1lPSIkMSIKKyAgW1sgLWYgJDEgXV0gJiYgdmFyPSIkKDwiJDEiKSIKICAgd2hp bGUgdmFyZWQgLU0gemVkIC1tIHplZC12aWNtZCAtaSBfX3plZF9pbml0IHZhcgogICBkbwogICAg IHsKLSAgICAgIHByaW50IC1yIC0tICIkdmFyIiA+fCAkemVkX2ZpbGVfbmFtZQorICAgICAgcHJp bnQgLXIgLS0gIiR2YXIiID58ICIkemVkX2ZpbGVfbmFtZSIKICAgICB9IGFsd2F5cyB7CiAgICAg ICAoKCBUUllfQkxPQ0tfRVJST1IgPSAwICkpCiAgICAgfSAmJiBicmVhawo= --000000000000b1b06905c0d31916--