From mboxrd@z Thu Jan  1 00:00:00 1970
Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail
From: =?UTF-8?Q?Nicolas_Despr=C3=A8s?= <nicolas.despres@gmail.com>
Newsgroups: gmane.emacs.devel
Subject: Prefer to split along the longest edge
Date: Sat, 14 Dec 2024 11:05:30 +0100
Message-ID: <CAPqtr1KBPhZSLPcJEvx1UW36hLesmzvduvHekNaat=MeVw+h1Q@mail.gmail.com>
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="00000000000089c5700629381883"
Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214";
	logging-data="14124"; mail-complaints-to="usenet@ciao.gmane.io"
To: emacs-devel@gnu.org
Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat Dec 14 11:07:02 2024
Return-path: <emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org>
Envelope-to: ged-emacs-devel@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 <emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org>)
	id 1tMP37-0003Yv-Gm
	for ged-emacs-devel@m.gmane-mx.org; Sat, 14 Dec 2024 11:07:01 +0100
Original-Received: from localhost ([::1] helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <emacs-devel-bounces@gnu.org>)
	id 1tMP2U-0005Gj-BB; Sat, 14 Dec 2024 05:06:22 -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 <nicolas.despres@gmail.com>)
 id 1tMP2M-0004i2-Rh
 for emacs-devel@gnu.org; Sat, 14 Dec 2024 05:06:15 -0500
Original-Received: from mail-wr1-x434.google.com ([2a00:1450:4864:20::434])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <nicolas.despres@gmail.com>)
 id 1tMP2H-0001VD-KQ
 for emacs-devel@gnu.org; Sat, 14 Dec 2024 05:06:13 -0500
Original-Received: by mail-wr1-x434.google.com with SMTP id
 ffacd0b85a97d-385eed29d17so1317108f8f.0
 for <emacs-devel@gnu.org>; Sat, 14 Dec 2024 02:06:08 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1734170767; x=1734775567; darn=gnu.org;
 h=to:subject:message-id:date:from:mime-version:from:to:cc:subject
 :date:message-id:reply-to;
 bh=b7kSpVe75DgvMYelmmHH0u47rjqJfkoFTGAd2cGrnBw=;
 b=jP1jx/URT9+cXnJCoNJCmrMDAwQc9FJWWGEnCe+9FhBQPCcPZS/5r5vNN7YTpRTiaq
 4HAvWrIxt+SUUv6+SDcq99JFti6/lCQ899FJ9IRayxi4aDH8uObwNCgnbOXQiXYXtBIU
 tDlvZ53uSflqBxYa2XpuahdrvmUsxHp5xYQe6XFqdjIsQsZd2ud6+cm06L2EZk2IcaWd
 ABJF04xdMVxS+aNCbB4/uysrpeUE9L+8wH53d8B+CMQyEOpNAZsxO3Tqot8LA0gWlJmr
 ww3KdoY+RArMCui4DZKDNewnqYTF3JDb0MqCXJvjKlnm/Fda0C2tn7VS7ACDllCC2GRc
 cc0Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1734170767; x=1734775567;
 h=to:subject:message-id:date:from:mime-version:x-gm-message-state
 :from:to:cc:subject:date:message-id:reply-to;
 bh=b7kSpVe75DgvMYelmmHH0u47rjqJfkoFTGAd2cGrnBw=;
 b=ipXKpE1+enFGmDZW7DM/AJqxQ2ZyXeHpMRlI5bxXNBJT8vTLkxDWXZSrdr31QI9q+4
 0K5T/YLr2tw0WP6Fd9BG6Fe8ICAVhV2fzpKG3Nmr5TipMO6mzZEG5rTOyfJhPhEC8q+K
 HHJZ0ZrUk9+si1qtDoqjTtSwg6o7IjzQdV+qNjplfEvlg1NGHCSpL9q355wM4unBl13c
 dU2ImeYWrx2TCfQiDjg0/AgW4NFO6cvOi5ew13ee35ZVRaTLWRDNtvRig+JdTa0EywGX
 AFvCbVtGHpjkClMloC91Nq/vBM7fU9R8Iae6v+ovxLkG794tSIk1tPOMDVvT+GekeJUo
 yxxQ==
X-Gm-Message-State: AOJu0Yyqwzz2l07OgXQP3sBvGR2LbsPjup1Xl4JR/F5ywJF8oW4zzJkK
 TWkiHE8WbktbxQq7qhrDqQ36vw17wOjtdA+wjb24vY1JHmqgO69hGtO+lcCeKnjyjDLUZJOKOp4
 ZmuuPpBjPK2uwXPgC1IruidpA6ceY97Ig
X-Gm-Gg: ASbGncssE2F0IGOMzUlwQOioeGcI/DwtkNhjTrxYJD6JXiP3n9KsMFh/YfJsv7gmwMB
 UDGPJR3yL8wZESAiJCiovt04pa684XB9uAGcy7sk=
X-Google-Smtp-Source: AGHT+IGjbNLWAWta6WZT1QCKeENt5/85lWZL/InDr9K66ZuhduKrs1UF4oO0Nwf8Sg2q4J9q5rNHiX4yOcbeb6VgxoI=
X-Received: by 2002:a05:6000:1567:b0:385:f7d2:7e9b with SMTP id
 ffacd0b85a97d-38880adaaa2mr4121977f8f.30.1734170766829; Sat, 14 Dec 2024
 02:06:06 -0800 (PST)
Received-SPF: pass client-ip=2a00:1450:4864:20::434;
 envelope-from=nicolas.despres@gmail.com; helo=mail-wr1-x434.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,
 HTML_MESSAGE=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-BeenThere: emacs-devel@gnu.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Emacs development discussions." <emacs-devel.gnu.org>
List-Unsubscribe: <https://lists.gnu.org/mailman/options/emacs-devel>,
 <mailto:emacs-devel-request@gnu.org?subject=unsubscribe>
List-Archive: <https://lists.gnu.org/archive/html/emacs-devel>
List-Post: <mailto:emacs-devel@gnu.org>
List-Help: <mailto:emacs-devel-request@gnu.org?subject=help>
List-Subscribe: <https://lists.gnu.org/mailman/listinfo/emacs-devel>,
 <mailto:emacs-devel-request@gnu.org?subject=subscribe>
Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org
Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org
Xref: news.gmane.io gmane.emacs.devel:326472
Archived-At: <http://permalink.gmane.org/gmane.emacs.devel/326472>

--00000000000089c5700629381883
Content-Type: multipart/alternative; boundary="00000000000089c56c0629381881"

--00000000000089c56c0629381881
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi,

I have been enjoying using Emacs since more than 20 years now.  So,
thank you all guys for this impressive work.

It is the first time I send a patch to this list.  I am not a very
fluent lisp coder so please do apologies if the style is not very
good and feel free to tell me how to improve it.

Currently, `split-window-sensibly' prefers to split vertically,
disregarding the shape of the frame.  This is a good default when
Emacs is taller than wider.  However, when Emacs is in fullscreen
(landscape screen layout), splitting vertically is generally not the
thing to do because there is plenty of space on the right.

Typical scenario: Emacs is in fullscreen; one buffer is open in a window
covering the entire frame.  Another buffer is opened in a second
window (C-x 4 f). In this case, the split should generally be horizontal.
The attached patch changes `split-window-sensibly' to just try
spliting the longest edge first. It works well when implemented in my
init.el
and installed by setting `split-window-preferred-function'.

However, when the same logic is implemented by directly modifying
`split-window-sensibly' in window.el, it does not work for one very specifi=
c
case: when the frame is 80x30 and C-x 4 f is pressed, the window is not
split and the buffer is opened in another frame. The problem seems to
come from the last eval expression at the bottom of `split-window-sensibly'=
,
but I failed to find a solution. I though better elisp coder than me will
find a
solution quickly that's why I am posting here.

Apart from that, I have been using this alternate approach for a couple of
weeks now, and it works well, that's why I am submitting it for inclusion
in Emacs.

I have tested on 8d94a9ec613470b7e8e4ee0e86b643f34f8a724c with emacs built
with --with-imagemagick --with-native-compilation=3Dyes
--with-compress-install --with-mailutils --with-gnutls --with-tree-sitter
--with-xwidgets --disable-gc-mark-trace --no-create --no-recursion on macOS
15.2.

Best regards,
Nico

--=20
Nicolas Despr=C3=A8s

--00000000000089c56c0629381881
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><div>Hi<span class=3D"gmail_default" styl=
e=3D"font-size:small"></span>,<br><br>I have been enjoying using Emacs sinc=
e more than 20 years now.=C2=A0 So,<br>thank you all guys for this impressi=
ve work.<br><br>It is the first time I send a patch to this list.=C2=A0 I a=
m not a very<br>fluent lisp coder so please do apologies if the style is no=
t very<br>good and feel free to tell me how to improve it.<br></div><div><b=
r></div><div>Currently, `split-window-sensibly&#39; prefers to split vertic=
ally,<br>disregarding the=C2=A0<span class=3D"gmail_default" style=3D"font-=
size:small"></span>shape of the frame.=C2=A0 This is a good default when<br=
>Emacs is taller than wider.=C2=A0 However, when Emacs is in fullscreen<br>=
(landscape screen layout), splitting vertically is generally not the<br>thi=
ng to do because there is plenty <span class=3D"gmail_default" style=3D"fon=
t-size:small">of</span> space on the right.<br><br>Typical scenario: Emacs =
is in fullscreen; one buffer is open in <span class=3D"gmail_default" style=
=3D"font-size:small">a </span>window<br>covering the entire frame.=C2=A0 An=
other buffer is open<span class=3D"gmail_default" style=3D"font-size:small"=
>ed</span> in a second<br>window (C-x 4 f). In this case, the split should =
<span class=3D"gmail_default" style=3D"font-size:small">generally be </span=
>horizontal.<br></div><div><div style=3D"font-size:small" class=3D"gmail_de=
fault"></div><div style=3D"font-size:small" class=3D"gmail_default">The att=
ached patch changes `split-window-sensibly&#39; to just try</div><div style=
=3D"font-size:small" class=3D"gmail_default">spliting the longest edge firs=
t. It works well when implemented in my init.el</div><div style=3D"font-siz=
e:small" class=3D"gmail_default">and installed by setting `split-window-pre=
ferred-function&#39;.</div><div style=3D"font-size:small" class=3D"gmail_de=
fault"><br></div><div style=3D"font-size:small" class=3D"gmail_default">How=
ever, when the same logic is implemented by directly modifying</div><div st=
yle=3D"font-size:small" class=3D"gmail_default">`split-window-sensibly&#39;=
 in window.el, it does not work for one very specific</div><div style=3D"fo=
nt-size:small" class=3D"gmail_default">case: when the frame is 80x30 and C-=
x 4 f is pressed, the window is not</div><div style=3D"font-size:small" cla=
ss=3D"gmail_default">split and the buffer is opened in another frame. The p=
roblem seems to <br></div><div style=3D"font-size:small" class=3D"gmail_def=
ault">come from the last eval expression at the bottom of `split-window-sen=
sibly&#39;,</div><div style=3D"font-size:small" class=3D"gmail_default">but=
 I failed to find a solution. I though better elisp coder than me will find=
 a</div><div style=3D"font-size:small" class=3D"gmail_default">solution qui=
ckly that&#39;s why I am posting here.<br></div><div style=3D"font-size:sma=
ll" class=3D"gmail_default"><br></div><div style=3D"font-size:small" class=
=3D"gmail_default">Apart from that, I have been using this alternate approa=
ch for a couple of<br></div><div style=3D"font-size:small" class=3D"gmail_d=
efault">weeks now, and it works well, that&#39;s why I am submitting it for=
 inclusion</div><div style=3D"font-size:small" class=3D"gmail_default">in E=
macs.</div><div style=3D"font-size:small" class=3D"gmail_default"><br></div=
><div style=3D"font-size:small" class=3D"gmail_default">I have tested on 8d=
94a9ec613470b7e8e4ee0e86b643f34f8a724c with emacs built</div><div style=3D"=
font-size:small" class=3D"gmail_default">with --with-imagemagick --with-nat=
ive-compilation=3Dyes --with-compress-install --with-mailutils --with-gnutl=
s --with-tree-sitter --with-xwidgets --disable-gc-mark-trace --no-create --=
no-recursion on macOS 15.2.<br></div><div style=3D"font-size:small" class=
=3D"gmail_default"><br></div>Best regards,<br>Nico<br></div><br><span class=
=3D"gmail_signature_prefix">-- </span><br><div dir=3D"ltr" class=3D"gmail_s=
ignature" data-smartmail=3D"gmail_signature"><div dir=3D"ltr"><div><div dir=
=3D"ltr"><div><font size=3D"2">Nicolas Despr=C3=A8s</font><br></div></div><=
/div></div></div></div>
</div>

--00000000000089c56c0629381881--

--00000000000089c5700629381883
Content-Type: application/octet-stream; 
	name="0001-Split-along-the-longest-edge-by-default.patch"
Content-Disposition: attachment; 
	filename="0001-Split-along-the-longest-edge-by-default.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_m4o0chbb0>
X-Attachment-Id: f_m4o0chbb0

RnJvbSA4ZDk0YTllYzYxMzQ3MGI3ZThlNGVlMGU4NmI2NDNmMzRmOGE3MjRjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBOaWNvbGFzIERlc3ByZXMgPG5pY29sYXMuZGVzcHJlc0BnbWFp
bC5jb20+CkRhdGU6IEZyaSwgMTMgRGVjIDIwMjQgMTk6NTg6MTMgKzAxMDAKU3ViamVjdDogW1BB
VENIXSBTcGxpdCBhbG9uZyB0aGUgbG9uZ2VzdCBlZGdlIGJ5IGRlZmF1bHQuCgpDdXJyZW50bHks
IGBzcGxpdC13aW5kb3ctc2Vuc2libHknIHByZWZlciB0byBzcGxpdCB2ZXJ0aWNhbGx5CmRpc3Jl
Z2FyZGluZyB0aGUgYWN0dWFsIHNoYXBlIG9mIHRoZSBmcmFtZS4gIFRoaXMgaXMgYSBnb29kIGRl
ZmF1bHQgd2hlbgpFbWFjcyBpcyB0YWxsZXIgdGhhbiB3aWRlci4gIEhvd2V2ZXIsIHdoZW4gRW1h
Y3MgaXMgaW4gZnVsbHNjcmVlbgoobGFuZHNjYXBlIHNjcmVlbiBsYXlvdXQpIHNwbGl0dGluZyB2
ZXJ0aWNhbGx5IGlzIGdlbmVyYWxseSBub3QgdGhlCnRoaW5ncyB0byBkbyBiZWNhdXNlIHRoZXJl
IGlzIHBsZW50eSBtb3JlIHNwYWNlIG9uIHRoZSByaWdodC4KClR5cGljYWwgc2NlbmFyaW86IEVt
YWNzIGlzIGluIGZ1bGxzY3JlZW4sIG9uZSBidWZmZXIgaXMgb3BlbiBpbiB3aW5kb3cKY292ZXJp
bmcgdGhlIGVudGlyZSBmcmFtZS4gIEFub3RoZXIgYnVmZmVyIGlzIG9wZW5lZCBpbiBhIHNlY29u
ZAp3aW5kb3cgKEMteCA0IGYpLiBJbiB0aGlzIGNhc2UsIHRoZSBzcGxpdCBzaG91bGQgaGFwcGVu
IGhvcml6b250YWxseS4KCkkgaGF2ZSB0ZXN0ZWQgdGhpcyBhcHByb2FjaCBzaW5jZSBhIGNvdXBs
ZSBvZiB3ZWVrcyBub3cgYW5kIGl0IHdvcmtzIHdlbGwKaWYgYHNwbGl0LWhlaWdodC10aHJlc2hv
bGQnIGFuZCBgc3BsaXQtd2lkdGgtdGhyZXNob2xkJyBhcmUgc2V0CnByb3Blcmx5LgoKKiBsaXNw
L3dpbmRvdy5lbCAoc3BsaXQtd2luZG93LXNlbnNpYmx5KTogQWx3YXlzIHByZWZlciB0aGUgbG9u
Z2VzdCBlZGdlCmluc3RlYWQgb2YgYmxpbmRseSBzcGxpdHRpbmcgdmVydGljYWxseSwgdW5sZXNz
IHdpZHRoIGlzIGxlc3MgdGhhbiA4MCBjb2x1bW5zLgoKQSBwYXJ0IGZyb20gdGhhdCwgdGhlIHBh
dGNoIGNhcmVmdWxseSBwcmVzZXJ2ZXMgdGhlIGN1cnJlbnQgc3BsaXQgbG9naWMuCi0tLQogbGlz
cC93aW5kb3cuZWwgfCA2OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t
LS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQxIGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL2xpc3Avd2luZG93LmVsIGIvbGlzcC93aW5kb3cuZWwKaW5kZXgg
ZTlkNTc2NTJlYzYuLjU4Y2E2Yzg2NzlkIDEwMDY0NAotLS0gYS9saXNwL3dpbmRvdy5lbAorKysg
Yi9saXNwL3dpbmRvdy5lbApAQCAtNzM0NywyMCArNzM0NywzMCBAQCB3aW5kb3ctc3BsaXR0YWJs
ZS1wCiAJCSAgICAgICgqIDIgKG1heCB3aW5kb3ctbWluLWhlaWdodAogCQkJCShpZiBtb2RlLWxp
bmUtZm9ybWF0IDIgMSkpKSkpKSkpKSkKIAorKGRlZnVuIHdpbmRvdy0tdHJ5LXNwbGl0LXdpbmRv
dy12ZXJ0aWNhbGx5ICh3aW5kb3cpCisgICJIZWxwZXIgZnVuY3Rpb24gZm9yIGBzcGxpdC13aW5k
b3ctc2Vuc2libHknIgorICAod2hlbiAod2luZG93LXNwbGl0dGFibGUtcCB3aW5kb3cpCisgICAg
KHdpdGgtc2VsZWN0ZWQtd2luZG93IHdpbmRvdworICAgICAgKHNwbGl0LXdpbmRvdy1iZWxvdykp
KSkKKworKGRlZnVuIHdpbmRvdy0tdHJ5LXNwbGl0LXdpbmRvdy1ob3Jpem9udGFsbHkgKHdpbmRv
dykKKyAgIkhlbHBlciBmdW5jdGlvbiBmb3IgYHNwbGl0LXdpbmRvdy1zZW5zaWJseSciCisgICh3
aGVuICh3aW5kb3ctc3BsaXR0YWJsZS1wIHdpbmRvdyB0KQorICAgICh3aXRoLXNlbGVjdGVkLXdp
bmRvdyB3aW5kb3cKKyAgICAgIChzcGxpdC13aW5kb3ctcmlnaHQpKSkpCisKIChkZWZ1biBzcGxp
dC13aW5kb3ctc2Vuc2libHkgKCZvcHRpb25hbCB3aW5kb3cpCiAgICJTcGxpdCBXSU5ET1cgaW4g
YSB3YXkgc3VpdGFibGUgZm9yIGBkaXNwbGF5LWJ1ZmZlcicuCi1XSU5ET1cgZGVmYXVsdHMgdG8g
dGhlIGN1cnJlbnRseSBzZWxlY3RlZCB3aW5kb3cuCi1JZiBgc3BsaXQtaGVpZ2h0LXRocmVzaG9s
ZCcgc3BlY2lmaWVzIGFuIGludGVnZXIsIFdJTkRPVyBpcyBhdAotbGVhc3QgYHNwbGl0LWhlaWdo
dC10aHJlc2hvbGQnIGxpbmVzIHRhbGwgYW5kIGNhbiBiZSBzcGxpdAotdmVydGljYWxseSwgc3Bs
aXQgV0lORE9XIGludG8gdHdvIHdpbmRvd3Mgb25lIGFib3ZlIHRoZSBvdGhlciBhbmQKLXJldHVy
biB0aGUgbG93ZXIgd2luZG93LiAgT3RoZXJ3aXNlLCBpZiBgc3BsaXQtd2lkdGgtdGhyZXNob2xk
Jwotc3BlY2lmaWVzIGFuIGludGVnZXIsIFdJTkRPVyBpcyBhdCBsZWFzdCBgc3BsaXQtd2lkdGgt
dGhyZXNob2xkJwotY29sdW1ucyB3aWRlIGFuZCBjYW4gYmUgc3BsaXQgaG9yaXpvbnRhbGx5LCBz
cGxpdCBXSU5ET1cgaW50byB0d28KLXdpbmRvd3Mgc2lkZSBieSBzaWRlIGFuZCByZXR1cm4gdGhl
IHdpbmRvdyBvbiB0aGUgcmlnaHQuICBJZiB0aGlzCi1jYW4ndCBiZSBkb25lIGVpdGhlciBhbmQg
V0lORE9XIGlzIHRoZSBvbmx5IHdpbmRvdyBvbiBpdHMgZnJhbWUsCi10cnkgdG8gc3BsaXQgV0lO
RE9XIHZlcnRpY2FsbHkgZGlzcmVnYXJkaW5nIGFueSB2YWx1ZSBzcGVjaWZpZWQKLWJ5IGBzcGxp
dC1oZWlnaHQtdGhyZXNob2xkJy4gIElmIHRoYXQgc3VjY2VlZHMsIHJldHVybiB0aGUgbG93ZXIK
LXdpbmRvdy4gIFJldHVybiBuaWwgb3RoZXJ3aXNlLgorV0lORE9XIGRlZmF1bHRzIHRvIHRoZSBj
dXJyZW50bHkgc2VsZWN0ZWQgd2luZG93LiAgRmlyc3QsIHRyeSB0byBzcGxpdAorYWxvbmcgdGhl
IGxvbmdlc3QgZWRnZSBvZiB0aGUgd2luZG93LiAgSWYgdGhlIHRocmVzaG9sZAorKGBzcGxpdC1o
ZWlnaHQtdGhyZXNob2xkJyByZXNwZWN0aXZlbHkgYHNwbGl0LXdpZHRoLXRocmVzaG9sZCcpCitz
cGVjaWZpZXMgYW4gaW50ZWdlciwgV0lORE9XIGlzIGF0IGxlYXN0IHRoYXQgdGhyZXNob2xkIGxp
bmVzIHRhbGwKKyhyZXNwLiB3aWRlKSBhbmQgY2FuIGJlIHNwbGl0ICh2ZXJ0aWNhbGx5IHJlc3Bl
Y3RpdmVseSBob3Jpem9udGFsbHkpLgorSWYgdGhhdCBmYWlscywgdHJ5IHRvIHNwbGl0IGFsb25n
IHRoZSBzaG9ydGVzdCBlZGdlLiAgSWYgdGhpcyBjYW4ndCBiZQorZG9uZSBlaXRoZXIgYW5kIFdJ
TkRPVyBpcyB0aGUgb25seSB3aW5kb3cgb24gaXRzIGZyYW1lLCB0cnkgdG8gc3BsaXQKK1dJTkRP
VyBhbG9uZyB0aGUgbG9uZ2VzdCBlZGdlIGRpc3JlZ2FyZGluZyBhbnkgdmFsdWUgc3BlY2lmaWVk
IGJ5Citgc3BsaXQtaGVpZ2h0LXRocmVzaG9sZCcgcmVzcGVjdGl2ZWx5IGBzcGxpdC13aWR0aC10
aHJlc2hvbGQnLiBJZiB0aGF0CitzdWNjZWVkcywgcmV0dXJuIHRoZSBsb3dlciB3aW5kb3cuICBS
ZXR1cm4gbmlsIG90aGVyd2lzZS4KIAogQnkgZGVmYXVsdCBgZGlzcGxheS1idWZmZXInIHJvdXRp
bmVzIGNhbGwgdGhpcyBmdW5jdGlvbiB0byBzcGxpdAogdGhlIGxhcmdlc3Qgb3IgbGVhc3QgcmVj
ZW50bHkgdXNlZCB3aW5kb3cuICBUbyBjaGFuZ2UgdGhlIGRlZmF1bHQKQEAgLTczNzksMjEgKzcz
ODksMjcgQEAgc3BsaXQtd2luZG93LXNlbnNpYmx5CiBIYXZlIGEgbG9vayBhdCB0aGUgZnVuY3Rp
b24gYHdpbmRvdy1zcGxpdHRhYmxlLXAnIGlmIHlvdSB3YW50IHRvCiBrbm93IGhvdyBgc3BsaXQt
d2luZG93LXNlbnNpYmx5JyBkZXRlcm1pbmVzIHdoZXRoZXIgV0lORE9XIGNhbiBiZQogc3BsaXQu
IgotICAobGV0ICgod2luZG93IChvciB3aW5kb3cgKHNlbGVjdGVkLXdpbmRvdykpKSkKLSAgICAo
b3IgKGFuZCAod2luZG93LXNwbGl0dGFibGUtcCB3aW5kb3cpCi0JICAgICA7OyBTcGxpdCB3aW5k
b3cgdmVydGljYWxseS4KLQkgICAgICh3aXRoLXNlbGVjdGVkLXdpbmRvdyB3aW5kb3cKLQkgICAg
ICAgKHNwbGl0LXdpbmRvdy1iZWxvdykpKQotCShhbmQgKHdpbmRvdy1zcGxpdHRhYmxlLXAgd2lu
ZG93IHQpCi0JICAgICA7OyBTcGxpdCB3aW5kb3cgaG9yaXpvbnRhbGx5LgotCSAgICAgKHdpdGgt
c2VsZWN0ZWQtd2luZG93IHdpbmRvdwotCSAgICAgICAoc3BsaXQtd2luZG93LXJpZ2h0KSkpCisg
IChsZXQgKCh3aW5kb3cgKG9yIHdpbmRvdyAoc2VsZWN0ZWQtd2luZG93KSkpCisgICAgICAgIChm
aXJzdC1zcGxpdCBuaWwpCisgICAgICAgIChzZWNvbmQtc3BsaXQgbmlsKQorICAgICAgICAoZmly
c3QtdGhyZXNob2xkLXZhcmlhYmxlIG5pbCkpCisgICAgOzsgQ2hvb3NlIHByZWZlcnJlZCBzcGxp
dHRpbmcgZWRnZS4KKyAgICAoaWYgKGFuZCAoPiAoZnJhbWUtd2lkdGgpIChmcmFtZS1oZWlnaHQp
KSAoPiAoZnJhbWUtd2lkdGgpIDgwKSkKKyAgICAgICAgKHNldHEgZmlyc3Qtc3BsaXQgJ3dpbmRv
dy0tdHJ5LXNwbGl0LXdpbmRvdy1ob3Jpem9udGFsbHkKKyAgICAgICAgICAgICAgc2Vjb25kLXNw
bGl0ICd3aW5kb3ctLXRyeS1zcGxpdC13aW5kb3ctdmVydGljYWxseQorICAgICAgICAgICAgICBm
aXJzdC10aHJlc2hvbGQtdmFyaWFibGUgJ3NwbGl0LXdpZHRoLXRocmVzaG9sZCkKKyAgICAgIChz
ZXRxIGZpcnN0LXNwbGl0ICd3aW5kb3ctLXRyeS1zcGxpdC13aW5kb3ctdmVydGljYWxseQorICAg
ICAgICAgICAgc2Vjb25kLXNwbGl0ICd3aW5kb3ctLXRyeS1zcGxpdC13aW5kb3ctaG9yaXpvbnRh
bGx5CisgICAgICAgICAgICBmaXJzdC10aHJlc2hvbGQtdmFyaWFibGUgJ3NwbGl0LWhlaWdodC10
aHJlc2hvbGQpKQorICAgIChvciAoZnVuY2FsbCBmaXJzdC1zcGxpdCB3aW5kb3cpCisJKGZ1bmNh
bGwgc2Vjb25kLXNwbGl0IHdpbmRvdykKIAkoYW5kCiAgICAgICAgICA7OyBJZiBXSU5ET1cgaXMg
dGhlIG9ubHkgdXNhYmxlIHdpbmRvdyBvbiBpdHMgZnJhbWUgKGl0IGlzCiAgICAgICAgICA7OyB0
aGUgb25seSBvbmUgb3IsIG5vdCBiZWluZyB0aGUgb25seSBvbmUsIGFsbCB0aGUgb3RoZXIKICAg
ICAgICAgIDs7IG9uZXMgYXJlIGRlZGljYXRlZCkgYW5kIGlzIG5vdCB0aGUgbWluaWJ1ZmZlciB3
aW5kb3csIHRyeQotICAgICAgICAgOzsgdG8gc3BsaXQgaXQgdmVydGljYWxseSBkaXNyZWdhcmRp
bmcgdGhlIHZhbHVlIG9mCi0gICAgICAgICA7OyBgc3BsaXQtaGVpZ2h0LXRocmVzaG9sZCcuCisg
ICAgICAgICA7OyB0byBzcGxpdCBpdCBhbG9uZyB0aGUgbG9uZ2VzdCBlZGdlIGRpc3JlZ2FyZGlu
ZyB0aGUgdmFsdWUgb2YKKyAgICAgICAgIDs7IHRoZSBtYXRjaGluZyB0aHJlc2hvbGQgKGBzcGxp
dC1oZWlnaHQtdGhyZXNob2xkJworICAgICAgICAgOzsgb3IgYHNwbGl0LXdpZHRoLXRocmVzaG9s
ZCcpLgogICAgICAgICAgKGxldCAoKGZyYW1lICh3aW5kb3ctZnJhbWUgd2luZG93KSkpCiAgICAg
ICAgICAgIChvcgogICAgICAgICAgICAgKGVxIHdpbmRvdyAoZnJhbWUtcm9vdC13aW5kb3cgZnJh
bWUpKQpAQCAtNzQwNSwxMCArNzQyMSw4IEBAIHNwbGl0LXdpbmRvdy1zZW5zaWJseQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZSBuaWwgJ25vbWluaSkKICAgICAgICAgICAg
ICAgdCkpKQogCSAobm90ICh3aW5kb3ctbWluaWJ1ZmZlci1wIHdpbmRvdykpCi0JIChsZXQgKChz
cGxpdC1oZWlnaHQtdGhyZXNob2xkIDApKQotCSAgICh3aGVuICh3aW5kb3ctc3BsaXR0YWJsZS1w
IHdpbmRvdykKLQkgICAgICh3aXRoLXNlbGVjdGVkLXdpbmRvdyB3aW5kb3cKLQkgICAgICAgKHNw
bGl0LXdpbmRvdy1iZWxvdykpKSkpKSkpCisJIChldmFsIGAobGV0ICgoLGZpcnN0LXRocmVzaG9s
ZC12YXJpYWJsZSAwKSkKKyAgICAgICAgICAgICAgICAgIChmdW5jYWxsIGZpcnN0LXNwbGl0IHdp
bmRvdykpKSkpKSkKIAogKGRlZnVuIHdpbmRvdy0tdHJ5LXRvLXNwbGl0LXdpbmRvdyAod2luZG93
ICZvcHRpb25hbCBhbGlzdCkKICAgIlRyeSB0byBzcGxpdCBXSU5ET1cuCi0tIAoyLjQ3LjEKCg==
--00000000000089c5700629381883--