From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Laurence Warne Newsgroups: gmane.emacs.bugs Subject: bug#60381: [PATCH] Preserve Window Position with Proced Date: Thu, 5 Jan 2023 15:59:57 +0000 Message-ID: References: <83v8lv8n7u.fsf@gnu.org> <83pmc291xe.fsf@gnu.org> <83bknm8fol.fsf@gnu.org> <83358y8626.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0000000000002db30605f1866524" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="22778"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 60381@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Thu Jan 05 17:01:24 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 1pDSgF-0005lH-Dn for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 05 Jan 2023 17:01:23 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pDSfz-0004UA-0J; Thu, 05 Jan 2023 11:01:07 -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 1pDSfv-0004TW-4z for bug-gnu-emacs@gnu.org; Thu, 05 Jan 2023 11:01:04 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pDSfu-0003Bs-Kp for bug-gnu-emacs@gnu.org; Thu, 05 Jan 2023 11:01:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pDSfu-0005Ew-53 for bug-gnu-emacs@gnu.org; Thu, 05 Jan 2023 11:01:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Laurence Warne Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 05 Jan 2023 16:01:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 60381 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 60381-submit@debbugs.gnu.org id=B60381.167293441820088 (code B ref 60381); Thu, 05 Jan 2023 16:01:02 +0000 Original-Received: (at 60381) by debbugs.gnu.org; 5 Jan 2023 16:00:18 +0000 Original-Received: from localhost ([127.0.0.1]:52662 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pDSfB-0005Dt-G6 for submit@debbugs.gnu.org; Thu, 05 Jan 2023 11:00:18 -0500 Original-Received: from mail-vs1-f44.google.com ([209.85.217.44]:42969) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pDSf8-0005DZ-Uh for 60381@debbugs.gnu.org; Thu, 05 Jan 2023 11:00:15 -0500 Original-Received: by mail-vs1-f44.google.com with SMTP id m2so38466875vsv.9 for <60381@debbugs.gnu.org>; Thu, 05 Jan 2023 08:00:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=7t3Z3VyuWGfVmKitIyB6btPaDpjZpdK8nQolCAPo7B4=; b=D201mJCY1gT8Z2KdEqXhazI3fu7G/2lgHoW7NpNm6e1K3Sn0KnMJjbu3ZSR7I1YTbU y+Gdq4EN7XcE/uaYeaTZr2GdSNJpmwlJjuGVroersg83rTKtUNslTh/C4+CKkUbFccW0 zWxBdY4VlRJ7E2RUfez60LkW0CIguJGFZnYKkXJ25/CZZV9IXMez2DCvOKAxRhbM2Sir VpomGazVLA5HycTLPtf5p8OmUzoTyWRAZcWI2zpHQrAbgLIyKAC6I0tyOnHZcW2ALTp7 zZURlOkxcQC1p3zyhPITtJOFNEststBFOj499sks+vJI5D9d91Jod/o9DLkMvd/glISj g90Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=7t3Z3VyuWGfVmKitIyB6btPaDpjZpdK8nQolCAPo7B4=; b=Km7LMaf5fvhju2OwOiGqDDFo8I88Ey39UvzT/0DfRAD+NG6VTTvbq+aPXCBDJDn9Jq mJVRC9YCZlslwHARokOeozAVDPWnjndopsg/t8QfNMKColGPzGUCv7ZwK8gr//2HW0v5 jPJ5NSQ5iDONd6+l+0XT8JPVl8+itjVtoF3CIkvk49Hu/w9h16LsqiL9Yo9qQyqdTHM8 bW84QQ/wMsRPWJISihm023NWr5Q1TfyvSuin9yfGHXxJTovbXfTdz9DRLcqcu//xWjjm uBzHASJI5vkA8/W/FbfjYvCfI5bOUMhipuj5tIepEn9mz05jyXapF5D9Og8swEp0oX0V agGQ== X-Gm-Message-State: AFqh2koKZgUjGcXTzC9onJIYmuGWjfhzoV35mcibHPHxhY/NbnMOed0Q +wLMp79QJOAsyULUKVLfv76KkBGI8UEsj966VA3MSo0OuwE= X-Google-Smtp-Source: AMrXdXtOngKZIH8HKjMbXjUq/Mh2bX5EehAIgLURwb7aXDOpr2g74BIbkGvHqtZvb05zegv6gk52Uc42yKFTqb6YDH8= X-Received: by 2002:a67:d482:0:b0:3cb:e00c:48a2 with SMTP id g2-20020a67d482000000b003cbe00c48a2mr2835776vsj.67.1672934408953; Thu, 05 Jan 2023 08:00:08 -0800 (PST) In-Reply-To: <83358y8626.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:252609 Archived-At: --0000000000002db30605f1866524 Content-Type: multipart/alternative; boundary="0000000000002db30305f1866522" --0000000000002db30305f1866522 Content-Type: text/plain; charset="UTF-8" Hi, Minor update, whilst working on the first case, I've come across some strange behaviour which causes the window position to be reset to (point-min) in some circumstances. To reproduce this with a more minimal setup than proced-update (I've also asked here: https://emacs.stackexchange.com/questions/75165/window-point-reset-after-update ): (defun example () (interactive) (let* ((buf (get-buffer-create "*Example*")) (w-points (mapcar (lambda (win) `(,win . ,(window-point win))) (get-buffer-window-list buf)))) (with-current-buffer buf (let ((buf-point (point))) (erase-buffer) (insert "line1\nline2\nline3\nline4\nline5") (goto-char buf-point) (mapc (lambda (wp) (set-window-point (car wp) (cdr wp))) w-points))) (message "Ran update"))) (setq example-timer (run-at-time t 5 #'example)) Now with a configuration of two windows, switch to the example buffer in one of them, and move down a few lines. Switch to the other window, you should see the window point stay the same after every update. If you then invoke M-x, wait for an update to occur, and then cancel the invocation using C-g, then you should see the point in the window displaying the example buffer go back to the start of the window. I've created a video here: https://user-images.githubusercontent.com/17688577/210167335-f7a4d50f-dbaf-4ffc-b1e0-38c5612ed2e3.mp4. I'm a bit confused by this, any pointers would be greatly appreciated. On the upside, I've managed to put together a test which won't pass without the patch. In terms of the difference between this patch and the original, the new patch maintains the window point for all windows which display a proced buffer. The original just set the window point for one, as a consequence all windows displaying the proced buffer in question would have their point set to the most recently visited window displaying the buffer. I've had to extract out some logic from proced-update to separate functions, and so this patch is a bit more invasive. Thanks, Laurence --0000000000002db30305f1866522 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

Minor u= pdate, whilst working on the first case, I've come across some strange = behaviour which causes the window position to be reset to (point-min) in so= me circumstances.=C2=A0 To reproduce this with a more minimal setup than pr= oced-update (I've also asked here: https://emacs.stack= exchange.com/questions/75165/window-point-reset-after-update):

(defun example ()
  (interactive)
  (let* ((buf (get-buffer-create =
"*Example*"))
         (w-points (mapcar (lambda (win)
                             `(,win . ,(window-point win)))
                           (get-buffer-wind=
ow-list buf))))
    (with-current-buffer buf
      (let ((buf-point (point)))
        (erase-buffer)
        (insert "line1\nline2\nline3\nline4\nline5")
        (goto-char buf-point)
        (mapc (lambda (wp) (set-window-point (car wp) (cdr wp))) w=
-points)))
    (message "Ran update")))

(setq example-timer (run-at-time t 5 #'example))

Now with a configuration of two windows, switch to the example buffer in one of them, and move down a few lines. Switch to the other window, you should see the window point stay the same after every update.

If you then invoke M-x, wait for an update to occur, and th= en cancel the invocation using C-g, then you should see the po= int in the window displaying the example buffer go back to the start of the= window. I've created a video here: https://= user-images.githubusercontent.com/17688577/210167335-f7a4d50f-dbaf-4ffc-b1e= 0-38c5612ed2e3.mp4.=C2=A0 I'm a bit confused by this, any pointers = would be greatly appreciated.

On the upside, I've man= aged to put together a test which won't pass without the patch.

In terms of the difference between this patch and the ori= ginal, the new patch maintains the window point for all windows which displ= ay a proced buffer.=C2=A0 The original just set the window point for one, a= s a consequence all windows displaying the proced buffer in question would = have their point set to the most recently visited window displaying the buf= fer.=C2=A0=C2=A0 I've had to extract out some logic from proced-update = to separate functions, and so this patch is a bit more invasive.
<= div>
Thanks, Laurence
--0000000000002db30305f1866522-- --0000000000002db30605f1866524 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Preserve-the-window-position-with-proced.patch" Content-Disposition: attachment; filename="0001-Preserve-the-window-position-with-proced.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lcj9v30q0 RnJvbSBkMjEzNTIxMWNmNWFkY2MyYTUxMGY3ZDI1MGQ1MjBlOGZiNThhM2Q5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMYXVyZW5jZSBXYXJuZSA8bGF1cmVuY2V3YXJuZUBnbWFpbC5j b20+CkRhdGU6IFRodSwgMjIgRGVjIDIwMjIgMTc6MTY6MDggKzAwMDAKU3ViamVjdDogW1BBVENI XSBQcmVzZXJ2ZSB0aGUgd2luZG93IHBvc2l0aW9uIHdpdGggcHJvY2VkCgpQcmVzZXJ2ZSB0aGUg d2luZG93IHBvc2l0aW9uIGZvciB3aW5kb3dzIHdoaWNoIGRpc3BsYXkgYSBwcm9jZWQgYnVmZmVy LApidXQgYXJlIG5vdCB0aGUgc2VsZWN0ZWQgd2luZG93IHdoZW4gYSBwcm9jZWQgYnVmZmVyIGlz IHVwZGF0ZWQuICBQcmV2aW91c2x5LAp0aGUgd2luZG93IHBvc2l0aW9uIHdvdWxkIGJlIHNldCB0 byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciB3aGVuIGEKcHJvY2VkIGJ1ZmZlciB3YXMgdXBkYXRl ZCBhbmQgaXQgd2FzIG5vdCBkaXNwbGF5ZWQgaW4gdGhlIHNlbGVjdGVkIHdpbmRvdy4KCiogbGlz cC9wcm9jZWQuZWwgKHByb2NlZC1hdXRvLXVwZGF0ZS10aW1lcik6IE9ubHkgdXBkYXRlIGEgZ2l2 ZW4KcHJvY2VkIGJ1ZmZlciBpZiBpdCBpcyBkaXNwbGF5ZWQgaW4gYSB3aW5kb3cuCihwcm9jZWQt dXBkYXRlKTogU2V0IHRoZSB3aW5kb3cgcG9zaXRpb24gaWYgdGhlIHByb2NlZCBidWZmZXIgaXMK ZGlzcGxheWVkIGluIGEgd2luZG93LgoqIHRlc3QvbGlzcC9wcm9jZWQtdGVzdHMuZWwKKHByb2Nl ZC11cGRhdGUtcHJlc2VydmVzLXBpZC1hdC1wb2ludC10ZXN0KTogTmV3IHRlc3QuCi0tLQogbGlz cC9wcm9jZWQuZWwgICAgICAgICAgICB8IDEwMyArKysrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLQogdGVzdC9saXNwL3Byb2NlZC10ZXN0cy5lbCB8ICAxNyArKysrKysrCiAyIGZp bGVzIGNoYW5nZWQsIDg3IGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2xpc3AvcHJvY2VkLmVsIGIvbGlzcC9wcm9jZWQuZWwKaW5kZXggYzA5ZWUxOGE4Yi4uODU4 NTQwZDU0MCAxMDA2NDQKLS0tIGEvbGlzcC9wcm9jZWQuZWwKKysrIGIvbGlzcC9wcm9jZWQuZWwK QEAgLTc5Miw2ICs3OTIsNTIgQEAgcHJvY2VkLXBpZC1hdC1wb2ludAogICAgIChpZiAobG9va2lu Zy1hdCAiXi4gLiIpCiAgICAgICAgIChnZXQtdGV4dC1wcm9wZXJ0eSAobWF0Y2gtZW5kIDApICdw cm9jZWQtcGlkKSkpKQogCisoZGVmdW4gcHJvY2VkLS1wb3NpdGlvbi1pbmZvIChwb3MpCisgICJS ZXR1cm4gaW5mb3JtYXRpb24gb2YgdGhlIHByb2Nlc3MgYXQgUE9TLgorCitUaGUgcmV0dXJuZWQg aW5mb3JtYXRpb24gd2lsbCBoYXZlIHRoZSBmb3JtIGAoUElEIEtFWSBDT0xVTU4pJyB3aGVyZQor UElEIGlzIHRoZSBwcm9jZXNzIElEIG9mIHRoZSBwcm9jZXNzIGF0IHBvaW50LCBLRVkgaXMgdGhl IHZhbHVlIG9mIHRoZQorcHJvY2VkLWtleSB0ZXh0IHByb3BlcnR5IGF0IHBvaW50LCBhbmQgQ09M VU1OIGlzIHRoZSBjb2x1bW4gZm9yIHdoaWNoIHRoZQorY3VycmVudCB2YWx1ZSBvZiB0aGUgcHJv Y2VkLWtleSB0ZXh0IHByb3BlcnR5IHN0YXJ0cywgb3IgMCBpZiBLRVkgaXMgbmlsLiIKKyAgOzsg SWYgcG9pbnQgaXMgb24gYSBmaWVsZCwgd2UgdHJ5IHRvIHJldHVybiBwb2ludCB0byB0aGF0IGZp ZWxkLgorICA7OyBPdGhlcndpc2Ugd2UgdHJ5IHRvIHJldHVybiB0byB0aGUgc2FtZSBjb2x1bW4K KyAgKHNhdmUtZXhjdXJzaW9uCisgICAgKGdvdG8tY2hhciBwb3MpCisgICAgKGxldCAoKHBpZCAo cHJvY2VkLXBpZC1hdC1wb2ludCkpCisgICAgICAgICAgKGtleSAoZ2V0LXRleHQtcHJvcGVydHkg KHBvaW50KSAncHJvY2VkLWtleSkpKQorICAgICAgKGxpc3QgcGlkIGtleSA7IGNhbiBib3RoIGJl IG5pbAorICAgICAgICAgICAgKGlmIGtleQorICAgICAgICAgICAgICAgIChpZiAoZ2V0LXRleHQt cHJvcGVydHkgKDEtIChwb2ludCkpICdwcm9jZWQta2V5KQorICAgICAgICAgICAgICAgICAgICAo LSAocG9pbnQpIChwcmV2aW91cy1zaW5nbGUtcHJvcGVydHktY2hhbmdlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChwb2ludCkgJ3Byb2NlZC1rZXkpKQorICAgICAgICAgICAgICAg ICAgMCkKKyAgICAgICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkpKSkpCisKKyhkZWZ1biBwcm9j ZWQtLWRldGVybWluZS1wb3MgKGtleSBjb2x1bW4pCisgICJSZXR1cm4gdGhlIHBvaW50IGluIHRo ZSBjdXJyZW50IGxpbmUgdXNpbmcgS0VZIGFuZCBDT0xVTU4uCisKK0F0dGVtcHQgdG8gZmluZCB0 aGUgZmlyc3QgcG9zaXRpb24gb24gdGhlIGN1cnJlbnQgbGluZSB3aGVyZSB0aGUKK3RleHQgcHJv cGVydHkgcHJvY2VkLWtleSBpcyBlcXVhbCB0byBLRVkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJs ZSwgcmV0dXJuCit0aGUgcG9pbnQgb2YgY29sdW1uIENPTFVNTiBvbiB0aGUgY3VycmVudCBsaW5l LiIKKyAgKHNhdmUtZXhjdXJzaW9uCisgICAgKGxldCAobmV3LXBvcykKKyAgICAgIChpZiBrZXkK KyAgICAgICAgICAobGV0ICgobGltaXQgKGxpbmUtZW5kLXBvc2l0aW9uKSkgcG9zKQorICAgICAg ICAgICAgKHdoaWxlIChhbmQgKG5vdCBuZXctcG9zKQorICAgICAgICAgICAgICAgICAgICAgICAg KHNldHEgcG9zIChuZXh0LXByb3BlcnR5LWNoYW5nZSAocG9pbnQpIG5pbCBsaW1pdCkpKQorICAg ICAgICAgICAgICAoZ290by1jaGFyIHBvcykKKyAgICAgICAgICAgICAgKHdoZW4gKGVxIGtleSAo Z2V0LXRleHQtcHJvcGVydHkgKHBvaW50KSAncHJvY2VkLWtleSkpCisgICAgICAgICAgICAgICAg KGZvcndhcmQtY2hhciAobWluIGNvbHVtbiAoLSAobmV4dC1wcm9wZXJ0eS1jaGFuZ2UgKHBvaW50 KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludCkp KSkKKyAgICAgICAgICAgICAgICAoc2V0cSBuZXctcG9zIChwb2ludCkpKSkKKyAgICAgICAgICAg ICh1bmxlc3MgbmV3LXBvcworICAgICAgICAgICAgICA7OyB3ZSBmb3VuZCB0aGUgcHJvY2Vzcywg YnV0IHRoZSBmaWVsZCBvZiBwb2ludAorICAgICAgICAgICAgICA7OyBpcyBub3QgbGlzdGVkIGFu eW1vcmUKKyAgICAgICAgICAgICAgKHNldHEgbmV3LXBvcyAocHJvY2VkLW1vdmUtdG8tZ29hbC1j b2x1bW4pKSkpCisgICAgICAgIChzZXRxIG5ldy1wb3MgKG1pbiAoKyAobGluZS1iZWdpbm5pbmct cG9zaXRpb24pIGNvbHVtbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5lLWVuZC1w b3NpdGlvbikpKSkKKyAgICAgIG5ldy1wb3MpKSkKKwogOzsgcHJvY2VkIG1vZGUKIAogKGRlZmlu ZS1kZXJpdmVkLW1vZGUgcHJvY2VkLW1vZGUgc3BlY2lhbC1tb2RlICJQcm9jZWQiCkBAIC0xODg5 LDE3ICsxOTM1LDEwIEBAIHByb2NlZC11cGRhdGUKICAgKGlmIChjb25zcCBidWZmZXItdW5kby1s aXN0KQogICAgICAgKHNldHEgYnVmZmVyLXVuZG8tbGlzdCBuaWwpKQogICAobGV0ICgoYnVmZmVy LXVuZG8tbGlzdCB0KQotICAgICAgICA7OyBJZiBwb2ludCBpcyBvbiBhIGZpZWxkLCB3ZSB0cnkg dG8gcmV0dXJuIHBvaW50IHRvIHRoYXQgZmllbGQuCi0gICAgICAgIDs7IE90aGVyd2lzZSB3ZSB0 cnkgdG8gcmV0dXJuIHRvIHRoZSBzYW1lIGNvbHVtbgotICAgICAgICAob2xkLXBvcyAobGV0ICgo cGlkIChwcm9jZWQtcGlkLWF0LXBvaW50KSkKLSAgICAgICAgICAgICAgICAgICAgICAgKGtleSAo Z2V0LXRleHQtcHJvcGVydHkgKHBvaW50KSAncHJvY2VkLWtleSkpKQotICAgICAgICAgICAgICAg ICAgIChsaXN0IHBpZCBrZXkgOyBjYW4gYm90aCBiZSBuaWwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAoaWYga2V5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoZ2V0LXRleHQt cHJvcGVydHkgKDEtIChwb2ludCkpICdwcm9jZWQta2V5KQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKC0gKHBvaW50KSAocHJldmlvdXMtc2luZ2xlLXByb3BlcnR5LWNoYW5nZQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSAncHJv Y2VkLWtleSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCkKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgIChjdXJyZW50LWNvbHVtbikpKSkpCisgICAgICAgICh3aW5kb3ctcG9z LWluZm9zCisgICAgICAgICAobWFwY2FyIChsYW1iZGEgKHcpIGAoLHcgLiAsKHByb2NlZC0tcG9z aXRpb24taW5mbyAod2luZG93LXBvaW50IHcpKSkpCisgICAgICAgICAgICAgICAgIChnZXQtYnVm ZmVyLXdpbmRvdy1saXN0IChjdXJyZW50LWJ1ZmZlcikgbmlsIHQpKSkKKyAgICAgICAgKG9sZC1w b3MgKHByb2NlZC0tcG9zaXRpb24taW5mbyAocG9pbnQpKSkKICAgICAgICAgYnVmZmVyLXJlYWQt b25seSBtcC1saXN0KQogICAgIDs7IHJlbWVtYmVyIG1hcmtlZCBwcm9jZXNzZXMgKHdoYXRldmVy IHRoZSBtYXJrIHdhcykKICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQpAQCAtMTkzMiw3ICsx OTcxLDggQEAgcHJvY2VkLXVwZGF0ZQogICAgIDs7IFNvbWV0aW1lcyB0aGlzIHB1dHMgcG9pbnQg aW4gdGhlIG1pZGRsZSBvZiB0aGUgcHJvY2VkIGJ1ZmZlcgogICAgIDs7IHdoZXJlIGl0IGlzIG5v dCBpbnRlcmVzdGluZy4gIElzIHRoZXJlIGEgYmV0dGVyIC8gbW9yZSBmbGV4aWJsZSBzb2x1dGlv bj8KICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQotICAgIChsZXQgKHBpZCBtYXJrIG5ldy1w b3MpCisKKyAgICAobGV0IChwaWQgbWFyayBuZXctcG9zIHdpbi1wb2ludHMpCiAgICAgICAoaWYg KG9yIG1wLWxpc3QgKGNhciBvbGQtcG9zKSkKICAgICAgICAgICAod2hpbGUgKG5vdCAoZW9icCkp CiAgICAgICAgICAgICAoc2V0cSBwaWQgKHByb2NlZC1waWQtYXQtcG9pbnQpKQpAQCAtMTk0MSwy OCArMTk4MSwyNSBAQCBwcm9jZWQtdXBkYXRlCiAgICAgICAgICAgICAgIChkZWxldGUtY2hhciAx KQogICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpKQogICAgICAgICAgICAgKHdoZW4g KGVxIChjYXIgb2xkLXBvcykgcGlkKQotICAgICAgICAgICAgICAoaWYgKG50aCAxIG9sZC1wb3Mp Ci0gICAgICAgICAgICAgICAgICAobGV0ICgobGltaXQgKGxpbmUtZW5kLXBvc2l0aW9uKSkgcG9z KQotICAgICAgICAgICAgICAgICAgICAod2hpbGUgKGFuZCAobm90IG5ldy1wb3MpCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHBvcyAobmV4dC1wcm9wZXJ0eS1jaGFuZ2Ug KHBvaW50KSBuaWwgbGltaXQpKSkKLSAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIHBv cykKLSAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoZXEgKG50aCAxIG9sZC1wb3MpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZXQtdGV4dC1wcm9wZXJ0eSAocG9pbnQpICdw cm9jZWQta2V5KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIChmb3J3YXJkLWNoYXIgKG1pbiAo bnRoIDIgb2xkLXBvcykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoLSAobmV4dC1wcm9wZXJ0eS1jaGFuZ2UgKHBvaW50KSkKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKSkpCi0gICAgICAgICAgICAgICAgICAg ICAgICAoc2V0cSBuZXctcG9zIChwb2ludCkpKSkKLSAgICAgICAgICAgICAgICAgICAgKHVubGVz cyBuZXctcG9zCi0gICAgICAgICAgICAgICAgICAgICAgOzsgd2UgZm91bmQgdGhlIHByb2Nlc3Ms IGJ1dCB0aGUgZmllbGQgb2YgcG9pbnQKLSAgICAgICAgICAgICAgICAgICAgICA7OyBpcyBub3Qg bGlzdGVkIGFueW1vcmUKLSAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBuZXctcG9zIChwcm9j ZWQtbW92ZS10by1nb2FsLWNvbHVtbikpKSkKLSAgICAgICAgICAgICAgICAoc2V0cSBuZXctcG9z IChtaW4gKCsgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSAobnRoIDIgb2xkLXBvcykpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5lLWVuZC1wb3NpdGlvbikpKSkpCisg ICAgICAgICAgICAgIChzZXRxIG5ldy1wb3MgKHByb2NlZC0tZGV0ZXJtaW5lLXBvcyAobnRoIDEg b2xkLXBvcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChudGggMiBvbGQtcG9zKSkpKQorICAgICAgICAgICAgKG1hcGMgKGxhbWJkYSAody1wb3Mp CisgICAgICAgICAgICAgICAgICAgICh3aGVuIChlcSAoY2FkciB3LXBvcykgcGlkKQorICAgICAg ICAgICAgICAgICAgICAgIChwdXNoIGAoLChjYXIgdy1wb3MpIC4gLChwcm9jZWQtLWRldGVybWlu ZS1wb3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG50 aCAxIChjZHIgdy1wb3MpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAobnRoIDIgKGNkciB3LXBvcykpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB3aW4tcG9pbnRzKSkpCisgICAgICAgICAgICAgICAgICB3aW5kb3ctcG9zLWluZm9zKQogICAg ICAgICAgICAgKGZvcndhcmQtbGluZSkpKQotICAgICAgKGlmIG5ldy1wb3MKLSAgICAgICAgICAo Z290by1jaGFyIG5ldy1wb3MpCi0gICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCi0gICAg ICAgIChwcm9jZWQtbW92ZS10by1nb2FsLWNvbHVtbikpKQorICAgICAgKGxldCAoKGZhbGxiYWNr IChzYXZlLWV4Y3Vyc2lvbiAoZ290by1jaGFyIChwb2ludC1taW4pKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAocHJvY2VkLW1vdmUtdG8tZ29hbC1jb2x1bW4pCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludCkpKSkKKyAgICAgICAgKGdv dG8tY2hhciAob3IgbmV3LXBvcyBmYWxsYmFjaykpCisgICAgICAgIDs7IFVwZGF0ZSB3aW5kb3cg cG9pbnRzCisgICAgICAgIChtYXBjIChsYW1iZGEgKHctcG9zKQorICAgICAgICAgICAgICAgIChz ZXQtd2luZG93LXBvaW50IChjYXIgdy1wb3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGFsaXN0LWdldCAoY2FyIHctcG9zKSB3aW4tcG9pbnRzIGZhbGxiYWNrKSkpCisgICAg ICAgICAgICAgIHdpbmRvdy1wb3MtaW5mb3MpKSkKICAgICA7OyB1cGRhdGUgbW9kZSBsaW5lCiAg ICAgOzsgRG9lcyB0aGUgbG9uZyBgbW9kZS1uYW1lJyBjbHV0dGVyIHRoZSBtb2RlIGxpbmU/ICBJ dCB3b3VsZCBiZSBuaWNlCiAgICAgOzsgdG8gaGF2ZSBzb21lIG90aGVyIGxvY2F0aW9uIGZvciBk aXNwbGF5aW5nIHRoZSB2YWx1ZXMgb2YgdGhlIHZhcmlvdXMKZGlmZiAtLWdpdCBhL3Rlc3QvbGlz cC9wcm9jZWQtdGVzdHMuZWwgYi90ZXN0L2xpc3AvcHJvY2VkLXRlc3RzLmVsCmluZGV4IDNjMWY1 NDkzZTcuLjFmNDc1NjY1MjkgMTAwNjQ0Ci0tLSBhL3Rlc3QvbGlzcC9wcm9jZWQtdGVzdHMuZWwK KysrIGIvdGVzdC9saXNwL3Byb2NlZC10ZXN0cy5lbApAQCAtMTAxLDUgKzEwMSwyMiBAQCBwcm9j ZWQtcmVmaW5lLXdpdGgtdXBkYXRlLXRlc3QKICAgICAgICAoc2hvdWxkIChzdHJpbmc9IHBpZCAo d29yZC1hdC1wb2ludCkpKQogICAgICAgIChmb3J3YXJkLWxpbmUpKSkpKQogCisoZXJ0LWRlZnRl c3QgcHJvY2VkLXVwZGF0ZS1wcmVzZXJ2ZXMtcGlkLWF0LXBvaW50LXRlc3QgKCkKKyAgKHByb2Nl ZC0td2l0aGluLWJ1ZmZlcgorICAgJ21lZGl1bQorICAgJ3VzZXIKKyAgIChnb3RvLWNoYXIgKHBv aW50LW1pbikpCisgICAoc2VhcmNoLWZvcndhcmQgKG51bWJlci10by1zdHJpbmcgKGVtYWNzLXBp ZCkpKQorICAgKHByb2NlZC0tbW92ZS10by1jb2x1bW4gIlBJRCIpCisgICAoc2F2ZS13aW5kb3ct ZXhjdXJzaW9uCisgICAgIChsZXQgKChwaWQgKHByb2NlZC1waWQtYXQtcG9pbnQpKQorICAgICAg ICAgICAobmV3LXdpbmRvdyAoc3BsaXQtd2luZG93KSkKKyAgICAgICAgICAgKG9sZC13aW5kb3cg KGdldC1idWZmZXItd2luZG93KSkpCisgICAgICAgKHNlbGVjdC13aW5kb3cgbmV3LXdpbmRvdykK KyAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAiKlByb2NlZCoiCisgICAgICAgICAocHJvY2Vk LXVwZGF0ZSB0IHQpKQorICAgICAgIChzZWxlY3Qtd2luZG93IG9sZC13aW5kb3cpCisgICAgICAg KHNob3VsZCAoPSBwaWQgKHByb2NlZC1waWQtYXQtcG9pbnQpKSkpKSkpCisKIChwcm92aWRlICdw cm9jZWQtdGVzdHMpCiA7OzsgcHJvY2VkLXRlc3RzLmVsIGVuZHMgaGVyZQotLSAKMi4zMC4yCgo= --0000000000002db30605f1866524--