From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Liu Hui Newsgroups: gmane.emacs.bugs Subject: bug#67161: 30.0.50; [PATCH] Add option `dired-filename-display-length' Date: Sat, 18 Nov 2023 17:23:26 +0800 Message-ID: References: <8334x8tqi9.fsf@gnu.org> <83a5rfrych.fsf@gnu.org> <83sf55q4nc.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000cc4070060a69ce7b" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="16799"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 67161@debbugs.gnu.org, stefankangas@gmail.com, monnier@iro.umontreal.ca To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat Nov 18 10:24:26 2023 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 1r4HYw-0004AG-1D for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 18 Nov 2023 10:24:26 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1r4HYY-0005vJ-LH; Sat, 18 Nov 2023 04:24:02 -0500 Original-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 1r4HYX-0005vB-QS for bug-gnu-emacs@gnu.org; Sat, 18 Nov 2023 04:24:01 -0500 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1r4HYX-0000qf-IA for bug-gnu-emacs@gnu.org; Sat, 18 Nov 2023 04:24:01 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1r4HYY-0007b3-0O for bug-gnu-emacs@gnu.org; Sat, 18 Nov 2023 04:24:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Liu Hui Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 18 Nov 2023 09:24:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 67161 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 67161-submit@debbugs.gnu.org id=B67161.170029942829180 (code B ref 67161); Sat, 18 Nov 2023 09:24:01 +0000 Original-Received: (at 67161) by debbugs.gnu.org; 18 Nov 2023 09:23:48 +0000 Original-Received: from localhost ([127.0.0.1]:47801 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1r4HYJ-0007aZ-Cf for submit@debbugs.gnu.org; Sat, 18 Nov 2023 04:23:48 -0500 Original-Received: from mail-ua1-x933.google.com ([2607:f8b0:4864:20::933]:50429) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1r4HYG-0007aJ-7Q for 67161@debbugs.gnu.org; Sat, 18 Nov 2023 04:23:45 -0500 Original-Received: by mail-ua1-x933.google.com with SMTP id a1e0cc1a2514c-7c1c0a75ee4so448853241.0 for <67161@debbugs.gnu.org>; Sat, 18 Nov 2023 01:23:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700299417; x=1700904217; 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=QRPvSmeOPAm/HwzpGfp4LEnks2UxWRTdvGiBJ/GuROA=; b=npYHblATTZ9WIpm1PZGZL7yrFVa4oqW7L1Of4Qioo1K5NTKJpIQmHDeJBRd0MHnz0i pNj6V964A9tEG/fvI9TjMIsnl1Xl2PpQCY29WpTbSVA/H/IHSlsw7+d71K3uGUkkpju3 Pn2PV9bAdGq9kcx/hoJzOGDhON2UH34XAtm4eg/vypepg7pWA5ZHr5bX3WgKkUG9dp7k K6maDOfixRn1HAd3T9nDKkDcyv6Pj/1ZGs1NHM0e/Q/C83qq/fRowhQRPMq8eCV5qEZz FLg/aiP6ogtBonJpqJqaehh/LVWXD4JSDcumoF5vhSX+2X0po5aqf3MO9gchGLlaEeqn YFXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700299417; x=1700904217; 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=QRPvSmeOPAm/HwzpGfp4LEnks2UxWRTdvGiBJ/GuROA=; b=VVauXABJVB+GPI7jm+g9FvIvkuzWgX5nw/8ddFC1TPiZyMAVd7ePoQGd69LI4qGN/p 6zZZQkRTLOzUNnf0Tzt6JRxxyJA6q1bfx6Vdcy9bpAbGpby/4zTfkdNG94vAhS+7sA2q H4jZS75aTFb+7Abv2GZan54NEhMgCth95IuXa93U18jjy5xQfjjOUYYsWeqhuSJn4Yde HkWuBPjACBBHl92z6SqCDdObNMWLb2a7D8RZU+PasvuZoXmY015xbaaLHsuR7qWU3E+1 7QFcXdTFPLWVEVhHn1Rzvu3rn+LH3hXW2JD3g/0ehBguq2x3jVJb5wpnbxls7NI2IFYh LM9A== X-Gm-Message-State: AOJu0YyD285gYM3UoMpArsdjRObVpShrZw4zQ1CthrlB+VwQPQzEUTWn IRihnhUVoRDQs42iym6d85RK0L7q5RSflveGHEc= X-Google-Smtp-Source: AGHT+IHPq4AoTeyrd6d7Fak/ghXyvUO6ueBgjvmPeVPtq0JnLNsmr3r6NhfTmKEECFwsT+oPomoi3AKE7RijlgF6b2k= X-Received: by 2002:a05:6102:3f52:b0:462:797b:2b62 with SMTP id l18-20020a0561023f5200b00462797b2b62mr2297109vsv.32.1700299417549; Sat, 18 Nov 2023 01:23:37 -0800 (PST) In-Reply-To: <83sf55q4nc.fsf@gnu.org> 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-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:274540 Archived-At: --000000000000cc4070060a69ce7b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Eli Zaretskii =E4=BA=8E2023=E5=B9=B411=E6=9C=8816=E6=97=A5= =E5=91=A8=E5=9B=9B 20:11=E5=86=99=E9=81=93=EF=BC=9A > > > From: Liu Hui > > Date: Thu, 16 Nov 2023 18:07:04 +0800 > > Cc: Stefan Kangas , Stefan Monnier , > > 67161@debbugs.gnu.org > > > > From 991ea588df6799331a7feea9e83493ef0d724096 Mon Sep 17 00:00:00 2001 > > From: Liu Hui > > Date: Tue, 14 Nov 2023 16:14:12 +0800 > > Subject: [PATCH] Add option `dired-filename-display-length' > > > > * lisp/dired.el (dired-filename-display-length): New option. > > (dired-insert-set-properties): Set invisibility spec for long > > filenames. > > (dired--get-ellipsis-length) > > (dired--get-filename-display-length) > > (dired-filename-update-invisibility-spec): New functions. > > (dired-mode): Add filename invisibility spec. > > (dired-make-directory-clickable): > > (dired-kill-when-opening-new-dired-buffer): > > (dired-hide-details-preserved-columns): Add missing group. > > * lisp/wdired.el (wdired-change-to-wdired-mode) > > (wdired-change-to-dired-mode): Update filename invisibility spec. > > These changes need a NEWS entry to describe the new option and its > effect in short. Added. > > diff --git a/lisp/dired.el b/lisp/dired.el > > index 8919d2c223f..aad77a3dfc0 100644 > > --- a/lisp/dired.el > > +++ b/lisp/dired.el > > @@ -350,6 +350,7 @@ dired-after-readin-hook > > (defcustom dired-make-directory-clickable t > > "When non-nil, make the directory at the start of the dired buffer c= lickable." > > :version "29.1" > > + :group 'dired > > :type 'boolean) > > > > (defcustom dired-initial-position-hook nil > > @@ -429,6 +430,7 @@ dired-mark-region > > (defcustom dired-kill-when-opening-new-dired-buffer nil > > "If non-nil, kill the current buffer when selecting a new directory.= " > > :type 'boolean > > + :group 'dired > > :version "28.1") > > > > (defcustom dired-guess-shell-case-fold-search t > > @@ -515,6 +517,18 @@ dired-movement-style > > (defcustom dired-hide-details-preserved-columns nil > > "List of columns which are not hidden in `dired-hide-details-mode'." > > :type '(repeat integer) > > + :group 'dired > > + :version "30.1") > > Why do we need an explicit :group tag here? Options whose group is > not 'dired' indeed need it, but those whose group is 'dired' get it > implicitly, AFAIU. I find these options are implicitly assigned to the dired-guess group rather than dired group, since dired-guess is the last group. > > +(defcustom dired-filename-display-length nil > > + "If non-nil, hide middle part of long filenames in Dired buffers. > > +If the value is the symbol `window', then filenames are shortened > > +to not exceed the right edge of current window. Otherwise, it > > +should be an integer representing the maximum filename length." > > This should tell more about the effect: that portions of longer file > names are hidden by using the 'invisible' property and that the > ellipsis is displayed in their stead. Done. > > +(defun dired--get-ellipsis-length () > > + "Return length of ellipsis." > > + (let* ((dt (or (window-display-table) > > + buffer-display-table > > + standard-display-table)) > > + (glyphs (and dt (display-table-slot dt 'selective-display)))) > > + (if glyphs (length glyphs) (eval-when-compile (length "..."))))) > > Why do you use 'length' here and not 'string-width' or similar? You > seem to assume that each character takes just one column on display? Fixed. > > +(defun dired--get-filename-display-length () > > + "Return maximum display length of filename." > > This doc string is inaccurate. The function actually returns the > number of columns available for displaying the file names in a Dired > buffer, and it should be called with point at the first character of > the file name. Why is it inaccurate? When `dired-filename-display-length' is window, the function does return the number of columns available, and it is used as the maximum display length. Moreover, it could be an integer, which also means the maximum display length. > > +(defun dired-filename-update-invisibility-spec () > > This function should have a doc string. Added. > > diff --git a/lisp/wdired.el b/lisp/wdired.el > > index 079d93d6011..5d50a574290 100644 > > --- a/lisp/wdired.el > > +++ b/lisp/wdired.el > > @@ -261,6 +261,7 @@ wdired-change-to-wdired-mode > > (add-function :override (local 'revert-buffer-function) #'wdired-rev= ert) > > (set-buffer-modified-p nil) > > (setq buffer-undo-list nil) > > + (dired-filename-update-invisibility-spec) > > (run-mode-hooks 'wdired-mode-hook) > > (message "%s" (substitute-command-keys > > "Press \\[wdired-finish-edit] when finished \ > > @@ -456,6 +457,7 @@ wdired-change-to-dired-mode > > (dired-sort-set-mode-line) > > (dired-advertise) > > (dired-hide-details-update-invisibility-spec) > > + (dired-filename-update-invisibility-spec) > > Please add comments in these two places explaining why you call > dired-filename-update-invisibility-spec here, so that the reader won't > need to look at that function to understand the reason. Added. > Thanks. BTW, I just find isearch doesn't handle hidden filenames based on 'invisible' text property, which needs to be fixed. So maybe an overlay-based approach is better? though I don't know if there is any possible problem with using overlays for this feature. WDYT? --000000000000cc4070060a69ce7b Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Add-option-dired-filename-display-length.patch" Content-Disposition: attachment; filename="0001-Add-option-dired-filename-display-length.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lp3ucyvh0 RnJvbSA5ZjQyZDc1NTY2ZTk4MGMzMjY3ODNlNGY1NWMxNjFhNjdjZGY1YWU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMaXUgSHVpIDxsaXVodWkxNjEwQGdtYWlsLmNvbT4KRGF0ZTog VHVlLCAxNCBOb3YgMjAyMyAxNjoxNDoxMiArMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBvcHRp b24gYGRpcmVkLWZpbGVuYW1lLWRpc3BsYXktbGVuZ3RoJwoKKiBsaXNwL2RpcmVkLmVsIChkaXJl ZC1maWxlbmFtZS1kaXNwbGF5LWxlbmd0aCk6IE5ldyBvcHRpb24uCihkaXJlZC1pbnNlcnQtc2V0 LXByb3BlcnRpZXMpOiBTZXQgaW52aXNpYmlsaXR5IHNwZWMgZm9yIGxvbmcKZmlsZW5hbWVzLgoo ZGlyZWQtLWdldC1lbGxpcHNpcy1sZW5ndGgpCihkaXJlZC0tZ2V0LWZpbGVuYW1lLWRpc3BsYXkt bGVuZ3RoKQooZGlyZWQtZmlsZW5hbWUtdXBkYXRlLWludmlzaWJpbGl0eS1zcGVjKTogTmV3IGZ1 bmN0aW9ucy4KKGRpcmVkLW1vZGUpOiBBZGQgZmlsZW5hbWUgaW52aXNpYmlsaXR5IHNwZWMuCihk aXJlZC1tYWtlLWRpcmVjdG9yeS1jbGlja2FibGUpOgooZGlyZWQta2lsbC13aGVuLW9wZW5pbmct bmV3LWRpcmVkLWJ1ZmZlcik6CihkaXJlZC1oaWRlLWRldGFpbHMtcHJlc2VydmVkLWNvbHVtbnMp OiBBZGQgbWlzc2luZyBncm91cC4KKiBsaXNwL3dkaXJlZC5lbCAod2RpcmVkLWNoYW5nZS10by13 ZGlyZWQtbW9kZSkKKHdkaXJlZC1jaGFuZ2UtdG8tZGlyZWQtbW9kZSk6IFVwZGF0ZSBmaWxlbmFt ZSBpbnZpc2liaWxpdHkgc3BlYy4KKiBldGMvTkVXUzogQW5ub3VuY2UgdGhlIGNoYW5nZS4KLS0t CiBldGMvTkVXUyAgICAgICB8ICAgNyArKysKIGxpc3AvZGlyZWQuZWwgIHwgMTM4ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIGxpc3Avd2RpcmVkLmVs IHwgICA2ICsrKwogMyBmaWxlcyBjaGFuZ2VkLCAxMTAgaW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZXRjL05FV1MgYi9ldGMvTkVXUwppbmRleCAyM2Y0YThiNTMx MS4uZTlhODRjYjkxODMgMTAwNjQ0Ci0tLSBhL2V0Yy9ORVdTCisrKyBiL2V0Yy9ORVdTCkBAIC00 NzIsNiArNDcyLDEzIEBAIGVtcHR5IGxpbmVzLiAgSXQgYWxzbyBjb250cm9scyBob3cgdG8gbW92 ZSBwb2ludCB3aGVuIGVuY291bnRlcmluZyBhCiBib3VuZGFyeSAoZS5nLiwgaWYgZXZlcnkgbGlu ZSBpcyB2aXNpYmxlLCBpbnZva2luZyAnZGlyZWQtbmV4dC1saW5lJwogYXQgdGhlIGxhc3QgbGlu ZSB3aWxsIG1vdmUgdG8gdGhlIGZpcnN0IGxpbmUpLiAgVGhlIGRlZmF1bHQgaXMgbmlsLgogCisq KiogTmV3IHVzZXIgb3B0aW9uICdkaXJlZC1maWxlbmFtZS1kaXNwbGF5LWxlbmd0aCcuCitJdCBp cyBhbiBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgbWF4aW11bSBkaXNwbGF5IGxlbmd0aCBvZiBm aWxlbmFtZXMuCitUaGUgbWlkZGxlIHBhcnQgb2YgZmlsZW5hbWUgd2hvc2UgbGVuZ3RoIGV4Y2Vl ZHMgdGhlIHJlc3RyaWN0aW9uIGlzCitoaWRkZW4gYW5kIGEgZWxsaXBzaXMgaXMgZGlzcGxheWVk IGluc3RlYWQuICBBIHZhbHVlIG9mICd3aW5kb3cnIG1lYW5zCit1c2luZyB0aGUgcmlnaHQgZWRn ZSBvZiB3aW5kb3cgYXMgdGhlIGRpc3BsYXkgcmVzdHJpY3Rpb24uICBUaGUKK2RlZmF1bHQgaXMg bmlsLgorCiAqKiBFZGlmZgogCiAtLS0KZGlmZiAtLWdpdCBhL2xpc3AvZGlyZWQuZWwgYi9saXNw L2RpcmVkLmVsCmluZGV4IDg5MTlkMmMyMjNmLi43ZWVhYjg2ZDg1MSAxMDA2NDQKLS0tIGEvbGlz cC9kaXJlZC5lbAorKysgYi9saXNwL2RpcmVkLmVsCkBAIC0zNTAsNiArMzUwLDcgQEAgZGlyZWQt YWZ0ZXItcmVhZGluLWhvb2sKIChkZWZjdXN0b20gZGlyZWQtbWFrZS1kaXJlY3RvcnktY2xpY2th YmxlIHQKICAgIldoZW4gbm9uLW5pbCwgbWFrZSB0aGUgZGlyZWN0b3J5IGF0IHRoZSBzdGFydCBv ZiB0aGUgZGlyZWQgYnVmZmVyIGNsaWNrYWJsZS4iCiAgIDp2ZXJzaW9uICIyOS4xIgorICA6Z3Jv dXAgJ2RpcmVkCiAgIDp0eXBlICdib29sZWFuKQogCiAoZGVmY3VzdG9tIGRpcmVkLWluaXRpYWwt cG9zaXRpb24taG9vayBuaWwKQEAgLTQyOSw2ICs0MzAsNyBAQCBkaXJlZC1tYXJrLXJlZ2lvbgog KGRlZmN1c3RvbSBkaXJlZC1raWxsLXdoZW4tb3BlbmluZy1uZXctZGlyZWQtYnVmZmVyIG5pbAog ICAiSWYgbm9uLW5pbCwga2lsbCB0aGUgY3VycmVudCBidWZmZXIgd2hlbiBzZWxlY3RpbmcgYSBu ZXcgZGlyZWN0b3J5LiIKICAgOnR5cGUgJ2Jvb2xlYW4KKyAgOmdyb3VwICdkaXJlZAogICA6dmVy c2lvbiAiMjguMSIpCiAKIChkZWZjdXN0b20gZGlyZWQtZ3Vlc3Mtc2hlbGwtY2FzZS1mb2xkLXNl YXJjaCB0CkBAIC01MTUsNiArNTE3LDIyIEBAIGRpcmVkLW1vdmVtZW50LXN0eWxlCiAoZGVmY3Vz dG9tIGRpcmVkLWhpZGUtZGV0YWlscy1wcmVzZXJ2ZWQtY29sdW1ucyBuaWwKICAgIkxpc3Qgb2Yg Y29sdW1ucyB3aGljaCBhcmUgbm90IGhpZGRlbiBpbiBgZGlyZWQtaGlkZS1kZXRhaWxzLW1vZGUn LiIKICAgOnR5cGUgJyhyZXBlYXQgaW50ZWdlcikKKyAgOmdyb3VwICdkaXJlZAorICA6dmVyc2lv biAiMzAuMSIpCisKKyhkZWZjdXN0b20gZGlyZWQtZmlsZW5hbWUtZGlzcGxheS1sZW5ndGggbmls CisgICJJZiBub24tbmlsLCByZXN0cmljdCB0aGUgZGlzcGxheSBsZW5ndGggb2YgZmlsZW5hbWVz LgorSWYgdGhlIHZhbHVlIGlzIHRoZSBzeW1ib2wgYHdpbmRvdycsIHRoZSByaWdodCBlZGdlIG9m IGN1cnJlbnQKK3dpbmRvdyBpcyB1c2VkIGFzIHRoZSByZXN0cmljdGlvbi4gIE90aGVyd2lzZSwg aXQgc2hvdWxkIGJlIGFuCitpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgbWF4aW11bSBmaWxlbmFt ZSBsZW5ndGguCisKK1RoZSBtaWRkbGUgcGFydCBvZiBmaWxlbmFtZSB3aG9zZSBsZW5ndGggZXhj ZWVkcyB0aGUgcmVzdHJpY3Rpb24KK2lzIGhpZGRlbiBieSB1c2luZyB0aGUgYGludmlzaWJsZScg cHJvcGVydHkgYW5kIGEgZWxsaXBzaXMgaXMKK2Rpc3BsYXllZCBpbnN0ZWFkLiIKKyAgOnR5cGUg JyhjaG9pY2UgKGNvbnN0ICAgOnRhZyAiTm8gcmVzdHJpY3Rpb24iIG5pbCkKKyAgICAgICAgICAg ICAgICAgKGNvbnN0ICAgOnRhZyAiV2luZG93IiB3aW5kb3cpCisgICAgICAgICAgICAgICAgIChp bnRlZ2VyIDp0YWcgIkludGVnZXIiKSkKKyAgOmdyb3VwICdkaXJlZAogICA6dmVyc2lvbiAiMzAu MSIpCiAKIAwKQEAgLTE5MDMsNDggKzE5MjEsNjEgQEAgZGlyZWQtaW5zZXJ0LXNldC1wcm9wZXJ0 aWVzCiAgICJBZGQgdmFyaW91cyB0ZXh0IHByb3BlcnRpZXMgdG8gdGhlIGxpbmVzIGluIHRoZSBy ZWdpb24sIGZyb20gQkVHIHRvIEVORC4iCiAgIChzYXZlLWV4Y3Vyc2lvbgogICAgIChnb3RvLWNo YXIgYmVnKQotICAgICh3aGlsZSAoPCAocG9pbnQpIGVuZCkKLSAgICAgIChpZ25vcmUtZXJyb3Jz Ci0JKGlmIChub3QgKGRpcmVkLW1vdmUtdG8tZmlsZW5hbWUpKQotCSAgICAodW5sZXNzIChvciAo bG9va2luZy1hdC1wICJeJCIpCi0JCQkobG9va2luZy1hdC1wIGRpcmVkLXN1YmRpci1yZWdleHAp KQotCSAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pCi0J CQkJICgxKyAobGluZS1lbmQtcG9zaXRpb24pKQotCQkJCSAnaW52aXNpYmxlICdkaXJlZC1oaWRl LWRldGFpbHMtaW5mb3JtYXRpb24pKQotCSAgKHNhdmUtZXhjdXJzaW9uCi0gICAgICAgICAgICAo bGV0ICgoZW5kICgxLSAocG9pbnQpKSkKLSAgICAgICAgICAgICAgICAgIChvcG9pbnQgKGdvdG8t Y2hhciAoMSsgKHBvcy1ib2wpKSkpCi0gICAgICAgICAgICAgICAgICAoaSAwKSkKLSAgICAgICAg ICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IG9wb2ludCBlbmQgJ2ludmlzaWJsZSAnZGlyZWQtaGlk ZS1kZXRhaWxzLWRldGFpbCkKLSAgICAgICAgICAgICAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2Fy ZCAiW14gXSsiIGVuZCB0KQotICAgICAgICAgICAgICAgICh3aGVuIChtZW1iZXIgKGNsLWluY2Yg aSkgZGlyZWQtaGlkZS1kZXRhaWxzLXByZXNlcnZlZC1jb2x1bW5zKQotICAgICAgICAgICAgICAg ICAgKHB1dC10ZXh0LXByb3BlcnR5IG9wb2ludCAocG9pbnQpICdpbnZpc2libGUgbmlsKSkKLSAg ICAgICAgICAgICAgICAoc2V0cSBvcG9pbnQgKHBvaW50KSkpKSkKLSAgICAgICAgICAobGV0ICgo YmVnIChwb2ludCkpIChlbmQgKHNhdmUtZXhjdXJzaW9uCi0JICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZGlyZWQtbW92ZS10by1lbmQtb2YtZmlsZW5hbWUpCi0JICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoMS0gKHBvaW50KSkpKSkKLSAgICAgICAgICAgIChpZiBkaXJlZC1jbGlj ay10by1zZWxlY3QtbW9kZQotICAgICAgICAgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBiZWcg ZW5kICdrZXltYXAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWQtY2xp Y2stdG8tc2VsZWN0LW1hcCkKLSAgICAgICAgICAgICAgKHdoZW4gKGFuZCBkaXJlZC1tb3VzZS1k cmFnLWZpbGVzIChmYm91bmRwICd4LWJlZ2luLWRyYWcpKQotICAgICAgICAgICAgICAgIChwdXQt dGV4dC1wcm9wZXJ0eSBiZWcgZW5kICdrZXltYXAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGlyZWQtbW91c2UtZHJhZy1maWxlcy1tYXApKSkKLQkgICAgKGFkZC10ZXh0LXBy b3BlcnRpZXMKLQkgICAgIGJlZyAoMSsgZW5kKQotCSAgICAgYChtb3VzZS1mYWNlCi0JICAgICAg IGhpZ2hsaWdodAotCSAgICAgICBkaXJlZC1maWxlbmFtZSB0Ci0JICAgICAgIGhlbHAtZWNobyAs KGlmIGRpcmVkLWNsaWNrLXRvLXNlbGVjdC1tb2RlCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAibW91c2UtMjogbWFyayBvciB1bm1hcmsgdGhpcyBmaWxlIgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChpZiAoYW5kIGRpcmVkLW1vdXNlLWRyYWctZmlsZXMKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoZmJvdW5kcCAneC1iZWdpbi1kcmFnKSkKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvd24tbW91c2UtMTogZHJhZyB0aGlzIGZpbGUg dG8gYW5vdGhlciBwcm9ncmFtCisgICAgKGxldCAoKGVsbC1sZW4gKGRpcmVkLS1nZXQtZWxsaXBz aXMtbGVuZ3RoKSkgbWF4bGVuIGZpbGVuYW1lLWNvbCkKKyAgICAgICh3aGlsZSAoPCAocG9pbnQp IGVuZCkKKyAgICAgICAgKGlnbm9yZS1lcnJvcnMKKwkgIChpZiAobm90IChkaXJlZC1tb3ZlLXRv LWZpbGVuYW1lKSkKKwkgICAgICAodW5sZXNzIChvciAobG9va2luZy1hdC1wICJeJCIpCisJCQkg IChsb29raW5nLWF0LXAgZGlyZWQtc3ViZGlyLXJlZ2V4cCkpCisJICAgICAgICAocHV0LXRleHQt cHJvcGVydHkgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKQorCQkJCSAgICgxKyAobGluZS1lbmQt cG9zaXRpb24pKQorCQkJCSAgICdpbnZpc2libGUgJ2RpcmVkLWhpZGUtZGV0YWlscy1pbmZvcm1h dGlvbikpCisJICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAgICAgICAobGV0ICgoZW5kICgx LSAocG9pbnQpKSkKKyAgICAgICAgICAgICAgICAgICAgKG9wb2ludCAoZ290by1jaGFyICgxKyAo cG9zLWJvbCkpKSkKKyAgICAgICAgICAgICAgICAgICAgKGkgMCkpCisgICAgICAgICAgICAgICAg KHB1dC10ZXh0LXByb3BlcnR5IG9wb2ludCBlbmQgJ2ludmlzaWJsZSAnZGlyZWQtaGlkZS1kZXRh aWxzLWRldGFpbCkKKyAgICAgICAgICAgICAgICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkICJb XiBdKyIgZW5kIHQpCisgICAgICAgICAgICAgICAgICAod2hlbiAobWVtYmVyIChjbC1pbmNmIGkp IGRpcmVkLWhpZGUtZGV0YWlscy1wcmVzZXJ2ZWQtY29sdW1ucykKKyAgICAgICAgICAgICAgICAg ICAgKHB1dC10ZXh0LXByb3BlcnR5IG9wb2ludCAocG9pbnQpICdpbnZpc2libGUgbmlsKSkKKyAg ICAgICAgICAgICAgICAgIChzZXRxIG9wb2ludCAocG9pbnQpKSkpKQorICAgICAgICAgICAgKGxl dCAoKGJlZyAocG9pbnQpKSAoZW5kIChzYXZlLWV4Y3Vyc2lvbgorCSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZGlyZWQtbW92ZS10by1lbmQtb2YtZmlsZW5hbWUpCisJICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICgxLSAocG9pbnQpKSkpKQorICAgICAgICAgICAgICAoaWYg ZGlyZWQtY2xpY2stdG8tc2VsZWN0LW1vZGUKKyAgICAgICAgICAgICAgICAgIChwdXQtdGV4dC1w cm9wZXJ0eSBiZWcgZW5kICdrZXltYXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkaXJlZC1jbGljay10by1zZWxlY3QtbWFwKQorICAgICAgICAgICAgICAgICh3aGVuIChh bmQgZGlyZWQtbW91c2UtZHJhZy1maWxlcyAoZmJvdW5kcCAneC1iZWdpbi1kcmFnKSkKKyAgICAg ICAgICAgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eSBiZWcgZW5kICdrZXltYXAKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlZC1tb3VzZS1kcmFnLWZpbGVzLW1hcCkp KQorICAgICAgICAgICAgICAod2hlbiBkaXJlZC1maWxlbmFtZS1kaXNwbGF5LWxlbmd0aAorICAg ICAgICAgICAgICAgIChsZXQgKChsZW4gKHN0cmluZy13aWR0aCAoYnVmZmVyLXN1YnN0cmluZyBi ZWcgKDErIGVuZCkpKSkKKyAgICAgICAgICAgICAgICAgICAgICBlbGwtYmVnKQorICAgICAgICAg ICAgICAgICAgKG9yIG1heGxlbiAoc2V0cSBtYXhsZW4gKGRpcmVkLS1nZXQtZmlsZW5hbWUtZGlz cGxheS1sZW5ndGgpKSkKKyAgICAgICAgICAgICAgICAgICh3aGVuIChhbmQgKGludGVnZXJwIG1h eGxlbikgKD4gbGVuIG1heGxlbiAoKyBlbGwtbGVuIDIpKSkKKyAgICAgICAgICAgICAgICAgICAg KG9yIGZpbGVuYW1lLWNvbCAoc2V0cSBmaWxlbmFtZS1jb2wgKGN1cnJlbnQtY29sdW1uKSkpCisg ICAgICAgICAgICAgICAgICAgIChtb3ZlLXRvLWNvbHVtbiAoKyBmaWxlbmFtZS1jb2wgKC8gbWF4 bGVuIDIpKSkKKyAgICAgICAgICAgICAgICAgICAgKHNldHEgZWxsLWJlZyAocG9pbnQpKQorICAg ICAgICAgICAgICAgICAgICAobW92ZS10by1jb2x1bW4gKCsgZmlsZW5hbWUtY29sICgvIG1heGxl biAyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0gbGVuIG1heGxl bikgZWxsLWxlbikpCisgICAgICAgICAgICAgICAgICAgIChwdXQtdGV4dC1wcm9wZXJ0eQorICAg ICAgICAgICAgICAgICAgICAgZWxsLWJlZyAocG9pbnQpICdpbnZpc2libGUgJ2RpcmVkLWZpbGVu YW1lLWhpZGUpKSkpCisJICAgICAgKGFkZC10ZXh0LXByb3BlcnRpZXMKKwkgICAgICAgYmVnICgx KyBlbmQpCisJICAgICAgIGAobW91c2UtZmFjZQorCSAgICAgICAgIGhpZ2hsaWdodAorCSAgICAg ICAgIGRpcmVkLWZpbGVuYW1lIHQKKwkgICAgICAgICBoZWxwLWVjaG8gLChpZiBkaXJlZC1jbGlj ay10by1zZWxlY3QtbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW91c2Ut MjogbWFyayBvciB1bm1hcmsgdGhpcyBmaWxlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGlmIChhbmQgZGlyZWQtbW91c2UtZHJhZy1maWxlcworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGZib3VuZHAgJ3gtYmVnaW4tZHJhZykpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImRvd24tbW91c2UtMTogZHJhZyB0aGlzIGZpbGUgdG8gYW5v dGhlciBwcm9ncmFtCiBtb3VzZS0yOiB2aXNpdCB0aGlzIGZpbGUgaW4gb3RoZXIgd2luZG93Igot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vdXNlLTI6IHZpc2l0IHRoaXMgZmlsZSBp biBvdGhlciB3aW5kb3ciKSkpKQotCSAgICAod2hlbiAoPCAoKyBlbmQgNSkgKGxpbmUtZW5kLXBv c2l0aW9uKSkKLQkgICAgICAocHV0LXRleHQtcHJvcGVydHkgKCsgZW5kIDUpIChsaW5lLWVuZC1w b3NpdGlvbikKLQkJCSAgICAgICAgICdpbnZpc2libGUgJ2RpcmVkLWhpZGUtZGV0YWlscy1saW5r KSkpKSkKLSAgICAgIChmb3J3YXJkLWxpbmUgMSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIm1vdXNlLTI6IHZpc2l0IHRoaXMgZmlsZSBpbiBvdGhlciB3aW5kb3ciKSkpKQor CSAgICAgICh3aGVuICg8ICgrIGVuZCA1KSAobGluZS1lbmQtcG9zaXRpb24pKQorCSAgICAgICAg KHB1dC10ZXh0LXByb3BlcnR5ICgrIGVuZCA1KSAobGluZS1lbmQtcG9zaXRpb24pCisJCQkgICAg ICAgICAgICdpbnZpc2libGUgJ2RpcmVkLWhpZGUtZGV0YWlscy1saW5rKSkpKSkKKyAgICAgICAg KGZvcndhcmQtbGluZSAxKSkpKSkKIAogKGRlZnVuIGRpcmVkLS1tYWtlLWRpcmVjdG9yeS1jbGlj a2FibGUgKCkKICAgKHNhdmUtZXhjdXJzaW9uCkBAIC0xOTc2LDYgKzIwMDcsMjEgQEAgZGlyZWQt LW1ha2UtZGlyZWN0b3J5LWNsaWNrYWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAiUkVU IiBjbGljaykpKSkKICAgICAgICAgICAoc2V0cSBzZWdtZW50LXN0YXJ0IChwb2ludCkpKSkpKSkK IAorKGRlZnVuIGRpcmVkLS1nZXQtZWxsaXBzaXMtbGVuZ3RoICgpCisgICJSZXR1cm4gbGVuZ3Ro IG9mIGVsbGlwc2lzLiIKKyAgKGxldCogKChkdCAob3IgKHdpbmRvdy1kaXNwbGF5LXRhYmxlKQor ICAgICAgICAgICAgICAgICBidWZmZXItZGlzcGxheS10YWJsZQorICAgICAgICAgICAgICAgICBz dGFuZGFyZC1kaXNwbGF5LXRhYmxlKSkKKyAgICAgICAgIChnbHlwaHMgKGFuZCBkdCAoZGlzcGxh eS10YWJsZS1zbG90IGR0ICdzZWxlY3RpdmUtZGlzcGxheSkpKSkKKyAgICAoc3RyaW5nLXdpZHRo IChpZiBnbHlwaHMgKGNvbmNhdCBnbHlwaHMpICIuLi4iKSkpKQorCisoZGVmdW4gZGlyZWQtLWdl dC1maWxlbmFtZS1kaXNwbGF5LWxlbmd0aCAoKQorICAiUmV0dXJuIG1heGltdW0gZGlzcGxheSBs ZW5ndGggb2YgZmlsZW5hbWUuCitJdCBpcyBjYWxsZWQgYXQgdGhlIGZpcnN0IGNoYXJhY3RlciBv ZiB0aGUgZmlsZSBuYW1lLiIKKyAgKGlmIChpbnRlZ2VycCBkaXJlZC1maWxlbmFtZS1kaXNwbGF5 LWxlbmd0aCkKKyAgICAgIGRpcmVkLWZpbGVuYW1lLWRpc3BsYXktbGVuZ3RoCisgICAgKC0gKHdp bmRvdy1tYXgtY2hhcnMtcGVyLWxpbmUpIDEgKGN1cnJlbnQtY29sdW1uKSkpKQorCiAMCiA7Ozsg UmV2ZXJ0aW5nIGEgZGlyZWQgYnVmZmVyCiAKQEAgLTI2MTcsNiArMjY2Myw3IEBAIGRpcmVkLW1v ZGUKIAltb2RlLWxpbmUtYnVmZmVyLWlkZW50aWZpY2F0aW9uCiAJKHByb3BlcnRpemVkLWJ1ZmZl ci1pZGVudGlmaWNhdGlvbiAiJTE3YiIpKQogICAoYWRkLXRvLWludmlzaWJpbGl0eS1zcGVjICco ZGlyZWQgLiB0KSkKKyAgKGRpcmVkLWZpbGVuYW1lLXVwZGF0ZS1pbnZpc2liaWxpdHktc3BlYykK ICAgOzsgSWdub3JlIGRpcmVkLWhpZGUtZGV0YWlscy0qIHZhbHVlIG9mIGludmlzaWJsZSB0ZXh0 IHByb3BlcnR5IGJ5IGRlZmF1bHQuCiAgICh3aGVuIChlcSBidWZmZXItaW52aXNpYmlsaXR5LXNw ZWMgdCkKICAgICAoc2V0cSBidWZmZXItaW52aXNpYmlsaXR5LXNwZWMgKGxpc3QgdCkpKQpAQCAt MzEwNiw2ICszMTUzLDE1IEBAIGRpcmVkLWhpZGUtZGV0YWlscy11cGRhdGUtaW52aXNpYmlsaXR5 LXNwZWMKIAwKIDs7OyBGdW5jdGlvbnMgdG8gaGlkZS91bmhpZGUgdGV4dAogCisoZGVmdW4gZGly ZWQtZmlsZW5hbWUtdXBkYXRlLWludmlzaWJpbGl0eS1zcGVjICgpCisgICJVcGRhdGUgYGJ1ZmZl ci1pbnZpc2liaWxpdHktc3BlYycgZm9yIGZpbGVuYW1lcy4KK1NwZWNpZmljYWxseSwgdGhlIGZp bGVuYW1lIGludmlzaWJpbGl0eSBzcGVjIGlzIGFkZGVkIGluIERpcmVkCitidWZmZXJzIGFuZCBy ZW1vdmVkIGluIFdEaXJlZCBidWZmZXJzLiIKKyAgKGZ1bmNhbGwgKGlmIChkZXJpdmVkLW1vZGUt cCAnZGlyZWQtbW9kZSkKKyAgICAgICAgICAgICAgICdhZGQtdG8taW52aXNpYmlsaXR5LXNwZWMK KyAgICAgICAgICAgICAncmVtb3ZlLWZyb20taW52aXNpYmlsaXR5LXNwZWMpCisgICAgICAgICAg ICcoZGlyZWQtZmlsZW5hbWUtaGlkZSAuIHQpKSkKKwogKGRlZnVuIGRpcmVkLS1maW5kLWhpZGRl bi1wb3MgKHN0YXJ0IGVuZCkKICAgKHRleHQtcHJvcGVydHktYW55IHN0YXJ0IGVuZCAnaW52aXNp YmxlICdkaXJlZCkpCiAKZGlmZiAtLWdpdCBhL2xpc3Avd2RpcmVkLmVsIGIvbGlzcC93ZGlyZWQu ZWwKaW5kZXggMDc5ZDkzZDYwMTEuLmI5OTZiZTliYWE5IDEwMDY0NAotLS0gYS9saXNwL3dkaXJl ZC5lbAorKysgYi9saXNwL3dkaXJlZC5lbApAQCAtMjYxLDYgKzI2MSw5IEBAIHdkaXJlZC1jaGFu Z2UtdG8td2RpcmVkLW1vZGUKICAgKGFkZC1mdW5jdGlvbiA6b3ZlcnJpZGUgKGxvY2FsICdyZXZl cnQtYnVmZmVyLWZ1bmN0aW9uKSAjJ3dkaXJlZC1yZXZlcnQpCiAgIChzZXQtYnVmZmVyLW1vZGlm aWVkLXAgbmlsKQogICAoc2V0cSBidWZmZXItdW5kby1saXN0IG5pbCkKKyAgOzsgcmVtb3ZlIGZp bGVuYW1lIGludmlzaWJpbGl0eSBzcGVjIHRvIGVuc3VyZSBmaWxlbmFtZXMgYXJlIHZpc2libGUK KyAgOzsgZm9yIGVkaXRpbmcKKyAgKGRpcmVkLWZpbGVuYW1lLXVwZGF0ZS1pbnZpc2liaWxpdHkt c3BlYykKICAgKHJ1bi1tb2RlLWhvb2tzICd3ZGlyZWQtbW9kZS1ob29rKQogICAobWVzc2FnZSAi JXMiIChzdWJzdGl0dXRlLWNvbW1hbmQta2V5cwogCQkgIlByZXNzIFxcW3dkaXJlZC1maW5pc2gt ZWRpdF0gd2hlbiBmaW5pc2hlZCBcCkBAIC00NTYsNiArNDU5LDkgQEAgd2RpcmVkLWNoYW5nZS10 by1kaXJlZC1tb2RlCiAgIChkaXJlZC1zb3J0LXNldC1tb2RlLWxpbmUpCiAgIChkaXJlZC1hZHZl cnRpc2UpCiAgIChkaXJlZC1oaWRlLWRldGFpbHMtdXBkYXRlLWludmlzaWJpbGl0eS1zcGVjKQor ICA7OyByZS1hZGQgZmlsZW5hbWUgaW52aXNpYmlsaXR5IHNwZWMgdGhhdCBpcyByZW1vdmVkIGlu CisgIDs7IGB3ZGlyZWQtY2hhbmdlLXRvLXdkaXJlZC1tb2RlJworICAoZGlyZWQtZmlsZW5hbWUt dXBkYXRlLWludmlzaWJpbGl0eS1zcGVjKQogICAocmVtb3ZlLWhvb2sgJ2tpbGwtYnVmZmVyLWhv b2sgIyd3ZGlyZWQtY2hlY2sta2lsbC1idWZmZXIgdCkKICAgKHJlbW92ZS1ob29rICdiZWZvcmUt Y2hhbmdlLWZ1bmN0aW9ucyAjJ3dkaXJlZC0tYmVmb3JlLWNoYW5nZS1mbiB0KQogICAocmVtb3Zl LWhvb2sgJ2FmdGVyLWNoYW5nZS1mdW5jdGlvbnMgIyd3ZGlyZWQtLXJlc3RvcmUtcHJvcGVydGll cyB0KQotLSAKMi4yNS4xCgo= --000000000000cc4070060a69ce7b--