Received: (at 80348) by debbugs.gnu.org; 14 Feb 2026 07:23:35 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 14 02:23:35 2026 Received: from localhost ([127.0.0.1]:38018 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vrA07-0004sU-Az for submit <at> debbugs.gnu.org; Sat, 14 Feb 2026 02:23:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37598) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vrA03-0004rx-Vq for 80348 <at> debbugs.gnu.org; Sat, 14 Feb 2026 02:23:33 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1vr9zw-0008VF-2w; Sat, 14 Feb 2026 02:23:24 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=s+AzGMxTRBnuU9V1XjJhmIqV8S67OFQ+U8uP3XRpbyw=; b=BIuKcC5Di/aq bm/x8MTsIJKB9IjKmry6Mk8vx75ZgrqTgiXFvX11KOYJNTgjYqYQm2mDc9y1X2jxM1P0gRNskvC95 pHBEAbMYqG/xGqKkAFQLwn3benWFWf8kOPmiDWL3taC1TmKJ9xlnBbu9kXYrEkbKQMsSNNZpykBOm g4/ubAQfnM9EjJ+Hpla8sgD/uoWSOcZbnNt6667ffxzeHR9TohdLRSYJnAWPNOUDUsZ8Kip3wUK2r C6NUlw5HmEiuGmI6J5U5B/zVOM5uhIuS2ixFv+KyM4TCG9V9rnXdnEAInv5QJvpz/52TmjBp/rbwr fxbymB9hmTkAx6ciDpJxmQ==; Date: Sat, 14 Feb 2026 09:23:20 +0200 Message-Id: <86bjhrrdp3.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Morgan Smith <morgan.j.smith@HIDDEN>, Stefan Monnier <monnier@HIDDEN> In-Reply-To: <CH3PR84MB342429295363699B5A68D836C56EA@HIDDEN> (message from Morgan Smith on Fri, 13 Feb 2026 20:44:09 -0500) Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake event package References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN> <CH3PR84MB3424F34DF6500C6704DC1B57C561A@HIDDEN> <CAN+1HboV9Rra2uRRxfs4c+U+Rhf5pWwrTREYtD=otzGTTeKipQ@HIDDEN> <CAN+1Hbpks=Rh1Y9wknWG9YAhJ7KdkgxQFPZBcWWKGLfc_GS2sA@HIDDEN> <CH3PR84MB342429295363699B5A68D836C56EA@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 80348 Cc: acohen@HIDDEN, eric@HIDDEN, mail@HIDDEN, michael.albinus@HIDDEN, shipmints@HIDDEN, 80348 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > Cc: 80348 <at> debbugs.gnu.org, Andrew Cohen <acohen@HIDDEN>, > eric@HIDDEN, Michael Albinus <michael.albinus@HIDDEN>, > Daniel Mendler <mail@HIDDEN> > From: Morgan Smith <morgan.j.smith@HIDDEN> > Date: Fri, 13 Feb 2026 20:44:09 -0500 > > > 1. Why no autoload cookie for `system-sleep-unblock-sleep'? I would > > like one > > added. Also we could consider adding a cookie for > > `system-sleep-unblock-all-sleep-blocks' but I'm not 100% sure that's > > needed. > > > > Because why would one ever call unblock sleep without having first blocked > > sleep? I don't mind adding more autoloads but this one is suspicious. > > Under what circumstances do you want to call unblock without having first > > called block? > > I was thinking of this from the standpoint of avoiding warnings in my > init.el. So you are correct from a load order perspective but it > doesn't help my warnings. So I decided to read the manual (specifically > "(elisp) When to Autoload") and to my surprise it actually has no > guidance on when to autoload a non-interactive function. Presumably > this means one should never do this. That doesn't sound quite right to > me so I'd be curious to know the truth. I think the first paragraph of that node could be amended to remove the "interactive" part. Entry points to a package are in most cases interactive commands, but they are not always commands. They could be non-interactive functions. So typically, the first function you'd use when you want the package to be available could be autoloaded. But there's nothing wrong with not autoloading any non-interactive functions of a package at all, even if that means users will have to 'require' the package before they can use any of its functions. A user-defined hook could very well load the package explicitly, there's nothing wrong about that. Stefan, WDYT?
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.
Received: (at 80348) by debbugs.gnu.org; 14 Feb 2026 01:59:46 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Feb 13 20:59:46 2026
Received: from localhost ([127.0.0.1]:60592 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vr4wj-00074t-Sq
for submit <at> debbugs.gnu.org; Fri, 13 Feb 2026 20:59:46 -0500
Received: from mail-vs1-xe2c.google.com ([2607:f8b0:4864:20::e2c]:47263)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <shipmints@HIDDEN>)
id 1vr4wh-00074k-Dx
for 80348 <at> debbugs.gnu.org; Fri, 13 Feb 2026 20:59:44 -0500
Received: by mail-vs1-xe2c.google.com with SMTP id
ada2fe7eead31-5fc414b9c99so905180137.2
for <80348 <at> debbugs.gnu.org>; Fri, 13 Feb 2026 17:59:43 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; t=1771034382; cv=none;
d=google.com; s=arc-20240605;
b=RSWuz0DrWMjL8DR3kc8JytumjAhY92fvFA761WumuPxflY4G7hJD9f2EM4OoCmmF4m
GN20sM7SzRbBmHeX3J82r70m8xMzxYHc64eT0nK4aCG86sth7KLV5oHks55rCV61bvS3
2KXsd5D4UyWduGKYLEmd8jqBMEzg/Oo1HOM3k05qA2vNwJMp/H1AJovW3B28r3Qn6I/+
MWsvV0Q1lXgMT7JBTvCZx6SfoReeUXk9mdf9x8BdoHO8BqcD/YLn/2oDjFN1840fpWAF
fJb60RDdyWiAgVxtbo4OlW9KGNYcuIN4PXJ7puEPdRy18EaFqI6uS6d82ULHA31H1X1i
y9oQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;
s=arc-20240605;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:dkim-signature;
bh=yq4mwcCj3IGBtUoQHsiIVqCrEKOta0f8xQWHAGfWsDw=;
fh=nikKlMsbQxLQiv1YJpN4/CJ8BjXaDMo4f4UwIbSOjGU=;
b=hzIMEetzR9bmRSjD17hhyB1f7939tQJSLHHcWhjhRHiwUsuncgjqliM8tbdVMtstam
99HtxHgRZjV9jkusv7b8MafmIwDkIVfrjcM1NegChcYSMrpxuSJ9NrQI5rBa4/+Gfxkz
Moz7Qr0O7iBJWvL5TKKmpfUwf7Z5mUuiXFeu1Ds7GNjHOnOpXSv+qPqDpsB7xophyB10
EOCPgoC4Dj4TRRq7qSVZ9afO10sg+GiQx+RCvsxR0BPYz0/BtrtODvE6yBJD2+/iEDrO
F0G3IeqD4tn+vSRqtpDAxUtnfzWo1R86Bvi1pWFJEykS5gERvYGbEqe8sNt/UVkLNcRD
/Uog==; darn=debbugs.gnu.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1771034382; x=1771639182; 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=yq4mwcCj3IGBtUoQHsiIVqCrEKOta0f8xQWHAGfWsDw=;
b=avydsz+Onxvn4feuDNz7mJUd0ocDxSDOvaOJdBi9A9MXo+p2RdVjx6cw0hmd1wl1bg
WlZF6tmtyM2vrHZ+tXVM6/QT0L/y/GZEqEzsI/owTOKpnPmiyyR3mWqIVEFUBrohua56
w/cycHb9agA2yzdrLkdLZAnQapnu7b8oUFHMGpzDfRw2CLMVCVQs3TdNx4FYbijg256j
KQ3tSQ5BkmBlHZvCO6JgTv9RCA/5uPmBr89Y4ODmer4ooixFR9AC1HiMoX5MtPxlYPel
LPO5cL2KFE6xCUcerjvGwXvYMQva0buM+crZpBfw3YIc4lXjXVLv139MR5B4FtDC2l+h
7kOQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1771034382; x=1771639182;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=yq4mwcCj3IGBtUoQHsiIVqCrEKOta0f8xQWHAGfWsDw=;
b=lm7I97nQ7Fbxf1maYrV65KxA/9AKeuSpQpC1zGJfcvnx6eX0D2bRswvJcfF5Z48mcS
RYKIYV+MQxFLHfZtxBK3qRKbmbhBvurRNQM7xuw6FJ4PZSO09NQgAsv1W9GoHvNNOqax
/lGK2rVXVYx/+brLrvbjCEpbz7cB4PG9OYDjv8sxzFrnZZoz42jf47upteKH49ZHDzmX
RD027KdNNEJmZrJvyigOLb0LUFJEdDzcznOIDV5E3qIsVuX8BuUJE2SlTLRfZzXL+sjp
mm/JZVVAQm4TiCyD5W2m1HFHEBXZBJ0Oo9zIzXpbnvNk8TRlFzo2IQLoBFTmGb1ANgxU
wIyg==
X-Gm-Message-State: AOJu0YzZz0S2EOuMexNx4/K4DFVJCYsTVbJyVaA/rcHsl+csEWbGm35g
tgn6ltTwRSmcS63gYUSFsSeagQ9esxRsdOGdm9P4YWXr7tq8W06UIjOwE/D6xrXkA45mmaYTR7B
daIqxY8ey8rwRHT7S6NLf34oZrc2CsXQ=
X-Gm-Gg: AZuq6aIDQG0Q4jMDZX0yBWklbDnHids97PXfCiIxKB2GHiG8PQNeD8079W/NyF0PG/e
4aEya6sqsiUU05cbWV1KC3yOQ9g1+l8LBQ3CSahykLj8KMR/RgXxz/xILsU6UMoTfFYnuf7g/N4
yhZeLzmXqPij1Hr65dkQv8UaL4hpTrIHAIsLjXxIyUIEsCiTRYSGdunB202RX3Kmehk5GL5dcaM
Tn06j/syTlDFWczjqw9eu9bZeUYrYv7ZFz1zFZsJ8awuvVT0amVseHw2ymL/zbH4kHSNF5V306x
A6ptHOXcRX5UQE/uftM/Jg3S4Kj/VKP7qNH5cXgQcvLCkmMdUj//1Re4Qfu3vSqNtr7xxlVLNg=
=
X-Received: by 2002:a05:6102:b06:b0:5f1:9641:4f4e with SMTP id
ada2fe7eead31-5fe1ac6d269mr1549418137.8.1771034382501; Fri, 13 Feb 2026
17:59:42 -0800 (PST)
MIME-Version: 1.0
References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN>
<CH3PR84MB3424F34DF6500C6704DC1B57C561A@HIDDEN>
<CAN+1HboV9Rra2uRRxfs4c+U+Rhf5pWwrTREYtD=otzGTTeKipQ@HIDDEN>
<CAN+1Hbpks=Rh1Y9wknWG9YAhJ7KdkgxQFPZBcWWKGLfc_GS2sA@HIDDEN>
<CH3PR84MB342429295363699B5A68D836C56EA@HIDDEN>
In-Reply-To: <CH3PR84MB342429295363699B5A68D836C56EA@HIDDEN>
From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>
Date: Fri, 13 Feb 2026 20:59:31 -0500
X-Gm-Features: AaiRm52GvcJwmKeA47awRJKnZPc9pdwm8zdrjcgr5ekTSALeyWkt36kfNK47TCE
Message-ID: <CAN+1HbpqA+AGPF-j34FjnD++uv1h5CiTLWHbkgY8iE1kbrQqWw@HIDDEN>
Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake
event package
To: Morgan Smith <morgan.j.smith@HIDDEN>
Content-Type: multipart/mixed; boundary="000000000000412953064abf13cb"
X-Spam-Score: 2.0 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: On Fri, Feb 13, 2026 at 8:44 PM Morgan Smith wrote: > Stéphane
Marks writes: > > > On Fri, Feb 13, 2026 at 5:58 PM Morgan Smith <Morgan.J.Smith@HIDDEN
> > > > wrote: > > > > Stéphane Marks writes: > > > > 1. Why no autoload
cookie for `sys [...]
Content analysis details: (2.0 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
-0.0 SPF_PASS SPF: sender matches SPF record
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (shipmints[at]gmail.com)
1.0 FORGED_GMAIL_RCVD 'From' gmail.com does not match 'Received'
headers
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust
[2607:f8b0:4864:20:0:0:0:e2c listed in]
[list.dnswl.org]
0.0 HTML_MESSAGE BODY: HTML included in message
1.0 FREEMAIL_REPLY From and body contain different freemails
X-Debbugs-Envelope-To: 80348
Cc: 80348 <at> debbugs.gnu.org, Andrew Cohen <acohen@HIDDEN>,
eric@HIDDEN, Michael Albinus <michael.albinus@HIDDEN>,
Daniel Mendler <mail@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 0.0 (/)
--000000000000412953064abf13cb
Content-Type: multipart/alternative; boundary="000000000000412951064abf13c9"
--000000000000412951064abf13c9
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
On Fri, Feb 13, 2026 at 8:44=E2=80=AFPM Morgan Smith <morgan.j.smith@outloo=
k.com>
wrote:
> St=C3=A9phane Marks <shipmints@HIDDEN> writes:
>
> > On Fri, Feb 13, 2026 at 5:58=E2=80=AFPM Morgan Smith <Morgan.J.Smith@ou=
tlook.com
> >
> > wrote:
> >
> > St=C3=A9phane Marks <shipmints@HIDDEN> writes:
> >
> > 1. Why no autoload cookie for `system-sleep-unblock-sleep'? I woul=
d
> > like one
> > added. Also we could consider adding a cookie for
> > `system-sleep-unblock-all-sleep-blocks' but I'm not 100% sure that'=
s
> > needed.
> >
> > Because why would one ever call unblock sleep without having first
> blocked
> > sleep? I don't mind adding more autoloads but this one is suspicious.
> > Under what circumstances do you want to call unblock without having fir=
st
> > called block?
>
> I was thinking of this from the standpoint of avoiding warnings in my
> init.el. So you are correct from a load order perspective but it
> doesn't help my warnings. So I decided to read the manual (specifically
> "(elisp) When to Autoload") and to my surprise it actually has no
> guidance on when to autoload a non-interactive function. Presumably
> this means one should never do this. That doesn't sound quite right to
> me so I'd be curious to know the truth.
>
> > 2. The backend is not dbus specific but rather has two more specifi=
c
> > dependencies. Systemd or elogind for delay/block, and a screensave=
r
> > program
> > for the screensaver. We do not actually check for these
> dependencies.
> >
> > How and where should these dependencies be tested and for what
> > configurations/systems are they valid vs. the standards that freedeskto=
p
> > provides for screen saver blocking that Michael implemented?
> >
> > I use
> > elogind so I'm not sure what will happen on a system missing the
> first
> > dependency but I do get errors because I don't have a screensaver
> > program
> > installed. This is the error I get from running
> > `(system-sleep-block-sleep)'.
> >
> > dbus-call-method: D-Bus error:
> > "org.freedesktop.DBus.Error.ServiceUnknown", "The name
> > org.freedesktop.ScreenSaver was not provided by any .service files"
> >
> > How about we condition-case around this and produce a warning if this
> will
> > be a common thing on GNU/Linux systems?
>
> The most obvious and likely the most robust way to do this would be to
> just ask dbus if it exists. Going through dbus.el, the docstring for
> `dbus-ping' mentions that we can do this:
>
> (member "org.freedesktop.login1" (dbus-list-known-names :system))
> (member "org.freedesktop.ScreenSaver" (dbus-list-known-names :session))
>
> However, calling `dbus-list-known-names' still involves a dbus call so
> it might be more efficient to just wrap everything in
> `dbus-ignore-errors'.
>
> Also I would really prefer if we did not produce a warning when there is
> no service providing a screen-saver. If you insist on a warning I would
> ask that there is a way to disable it.
>
> >
> > 3. It is interesting that you rely on
> > `system-sleep--dbus-prepare-for-sleep-function' being in
> > `system-sleep-event-functions' in order to maintain the delay lock.
> > `system-sleep-event-functions' is a user variable that can be
> modified.
> > I've
> > seen lots of users flat out setq hook variables (mostly in the EMMS
> > source
> > code). I'm not saying this is wrong, but you are letting users sho=
ot
> > themselves in the foot.
> >
> > This was a concern Eli raised. I could implement an internal hook that
> the
> > event handler can call to avoid this.
>
> I think that would be wise. Maybe you could just shove another function
> made with `cl-defgeneric' at the end of
> `system-sleep--sleep-event-handler'.
>
> > I was just putting this in and found a serious issue with the hooks as
> is. The
> > internal handler wasn't being called at all which means you weren't
> benefiting
> > from the race handler. When I submit an update based on your feedback
> and
> > testing, I'll circulate a patch with that corrected along with the
> internal
> > hook
>
> Sounds good! I'm looking forward to it.
>
Give the attached patch a try. I should address these issues except for
not doubling the number of public API hooks. If there is no dbus screen
saver support, it silently won't disable the screen saver--no warnings. I
did not have time to spin up the virtual machine I use to test dbus so let
me know if I screwed something up.
-St=C3=A9phane
--000000000000412951064abf13c9
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon=
t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">=
On Fri, Feb 13, 2026 at 8:44=E2=80=AFPM Morgan Smith <<a href=3D"mailto:=
morgan.j.smith@HIDDEN">morgan.j.smith@HIDDEN</a>> wrote:</span=
></div></div><div class=3D"gmail_quote gmail_quote_container"><blockquote c=
lass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px soli=
d rgb(204,204,204);padding-left:1ex">St=C3=A9phane Marks <<a href=3D"mai=
lto:shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>> writ=
es:<br>
<br>
> On Fri, Feb 13, 2026 at 5:58=E2=80=AFPM Morgan Smith <<a href=3D"ma=
ilto:Morgan.J.Smith@HIDDEN" target=3D"_blank">Morgan.J.Smith@HIDDEN=
om</a>><br>
> wrote:<br>
><br>
>=C2=A0 =C2=A0 =C2=A0St=C3=A9phane Marks <<a href=3D"mailto:shipmints=
@gmail.com" target=3D"_blank">shipmints@HIDDEN</a>> writes:<br>
><br>
>=C2=A0 =C2=A0 =C2=A01. Why no autoload cookie for `system-sleep-unblock=
-sleep'?=C2=A0 I would<br>
>=C2=A0 =C2=A0 =C2=A0like one<br>
>=C2=A0 =C2=A0 =C2=A0added.=C2=A0 Also we could consider adding a cookie=
for<br>
>=C2=A0 =C2=A0 =C2=A0`system-sleep-unblock-all-sleep-blocks' but I&#=
39;m not 100% sure that's<br>
>=C2=A0 =C2=A0 =C2=A0needed.<br>
><br>
> Because why would one ever call unblock sleep without having first blo=
cked<br>
> sleep?=C2=A0 I don't mind adding more autoloads but this one is su=
spicious. <br>
> Under what circumstances do you want to call unblock without having fi=
rst<br>
> called block?<br>
<br>
I was thinking of this from the standpoint of avoiding warnings in my<br>
init.el.=C2=A0 So you are correct from a load order perspective but it<br>
doesn't help my warnings.=C2=A0 So I decided to read the manual (specif=
ically<br>
"(elisp) When to Autoload") and to my surprise it actually has no=
<br>
guidance on when to autoload a non-interactive function.=C2=A0 Presumably<b=
r>
this means one should never do this.=C2=A0 That doesn't sound quite rig=
ht to<br>
me so I'd be curious to know the truth.<br>
<br>
>=C2=A0 =C2=A0 =C2=A02. The backend is not dbus specific but rather has =
two more specific<br>
>=C2=A0 =C2=A0 =C2=A0dependencies.=C2=A0 Systemd or elogind for delay/bl=
ock, and a screensaver<br>
>=C2=A0 =C2=A0 =C2=A0program<br>
>=C2=A0 =C2=A0 =C2=A0for the screensaver.=C2=A0 We do not actually check=
for these dependencies.<br>
><br>
> How and where should these dependencies be tested and for what<br>
> configurations/systems are they valid vs. the standards that freedeskt=
op<br>
> provides for screen saver blocking that Michael implemented?<br>
><br>
>=C2=A0 =C2=A0 =C2=A0I use<br>
>=C2=A0 =C2=A0 =C2=A0elogind so I'm not sure what will happen on a s=
ystem missing the first<br>
>=C2=A0 =C2=A0 =C2=A0dependency but I do get errors because I don't =
have a screensaver<br>
>=C2=A0 =C2=A0 =C2=A0program<br>
>=C2=A0 =C2=A0 =C2=A0installed. This is the error I get from running<br>
>=C2=A0 =C2=A0 =C2=A0`(system-sleep-block-sleep)'.<br>
><br>
>=C2=A0 =C2=A0 =C2=A0dbus-call-method: D-Bus error:<br>
>=C2=A0 =C2=A0 =C2=A0"org.freedesktop.DBus.Error.ServiceUnknown&quo=
t;, "The name<br>
>=C2=A0 =C2=A0 =C2=A0org.freedesktop.ScreenSaver was not provided by any=
.service files"<br>
><br>
> How about we condition-case around this and produce a warning if this =
will<br>
> be a common thing on GNU/Linux systems?<br>
<br>
The most obvious and likely the most robust way to do this would be to<br>
just ask dbus if it exists.=C2=A0 Going through dbus.el, the docstring for<=
br>
`dbus-ping' mentions that we can do this:<br>
<br>
(member "org.freedesktop.login1" (dbus-list-known-names :system))=
<br>
(member "org.freedesktop.ScreenSaver" (dbus-list-known-names :ses=
sion))<br>
<br>
However, calling `dbus-list-known-names' still involves a dbus call so<=
br>
it might be more efficient to just wrap everything in<br>
`dbus-ignore-errors'.<br>
<br>
Also I would really prefer if we did not produce a warning when there is<br=
>
no service providing a screen-saver.=C2=A0 If you insist on a warning I wou=
ld<br>
ask that there is a way to disable it.<br>
<br>
><br>
>=C2=A0 =C2=A0 =C2=A03. It is interesting that you rely on<br>
>=C2=A0 =C2=A0 =C2=A0`system-sleep--dbus-prepare-for-sleep-function'=
being in<br>
>=C2=A0 =C2=A0 =C2=A0`system-sleep-event-functions' in order to main=
tain the delay lock.<br>
>=C2=A0 =C2=A0 =C2=A0`system-sleep-event-functions' is a user variab=
le that can be modified.<br>
>=C2=A0 =C2=A0 =C2=A0 I've<br>
>=C2=A0 =C2=A0 =C2=A0seen lots of users flat out setq hook variables (mo=
stly in the EMMS<br>
>=C2=A0 =C2=A0 =C2=A0source<br>
>=C2=A0 =C2=A0 =C2=A0code).=C2=A0 I'm not saying this is wrong, but =
you are letting users shoot<br>
>=C2=A0 =C2=A0 =C2=A0themselves in the foot.<br>
><br>
> This was a concern Eli raised.=C2=A0 I could implement an internal hoo=
k that the<br>
> event handler can call to avoid this.<br>
<br>
I think that would be wise.=C2=A0 Maybe you could just shove another functi=
on<br>
made with `cl-defgeneric' at the end of<br>
`system-sleep--sleep-event-handler'.<br>
<br>
> I was just putting this in and found a serious issue with the hooks as=
is.=C2=A0 The<br>
> internal handler wasn't being called at all which means you weren&=
#39;t benefiting<br>
> from the race handler.=C2=A0 When I submit an update based on your fee=
dback and<br>
> testing, I'll circulate a patch with that corrected along with the=
internal<br>
> hook<br>
<br>
Sounds good!=C2=A0 I'm looking forward to it.<br></blockquote><div><br>=
</div><div class=3D"gmail_default" style=3D"font-family:monospace">Give the=
attached patch a try.=C2=A0 I should address these issues except for not d=
oubling the number of public API hooks.=C2=A0 If there is no dbus screen sa=
ver support, it silently won't disable the screen saver--no warnings.=
=C2=A0 I did not have time to spin up the virtual machine I use to test dbu=
s so let me know if I screwed something up.</div><div class=3D"gmail_defaul=
t" style=3D"font-family:monospace"><br></div><div class=3D"gmail_default" s=
tyle=3D"font-family:monospace">-St=C3=A9phane=C2=A0</div></div></div>
--000000000000412951064abf13c9--
--000000000000412953064abf13cb
Content-Type: application/octet-stream; name="system-sleep.el.diff"
Content-Disposition: attachment; filename="system-sleep.el.diff"
Content-Transfer-Encoding: base64
Content-ID: <f_mllo4x6f0>
X-Attachment-Id: f_mllo4x6f0
ZGlmZiAtLWdpdCBhL2xpc3Avc3lzdGVtLXNsZWVwLmVsIGIvbGlzcC9zeXN0ZW0tc2xlZXAuZWwK
aW5kZXggZTA5ZjJmZWRjZDEuLjg0YmU2YmM4MjAwIDEwMDY0NAotLS0gYS9saXNwL3N5c3RlbS1z
bGVlcC5lbAorKysgYi9saXNwL3N5c3RlbS1zbGVlcC5lbApAQCAtMTA4LDYgKzEwOCw3IEBAIHN5
c3RlbS1zbGVlcC0tc2xlZXAtYmxvY2stdG9rZW5zCiAgICJBIGxpc3Qgb2YgYWN0aXZlIHNsZWVw
LWJsb2NrIHRva2Vucy4KIElmIG5vbi1uaWwsIGlkbGUgc2xlZXAgaXMgaW5oaWJpdGVkIGJ5IGBz
eXN0ZW0tc2xlZXAnLiIpCiAKKzs7OyMjI2F1dG9sb2FkCiAoY2wtZGVmc3RydWN0CiAgICAgKHNs
ZWVwLWV2ZW50ICg6dHlwZSBsaXN0KSA6bmFtZWQKICAgICAgICAgICAgICAgICAgKDpjb25zdHJ1
Y3RvciBuaWwpCkBAIC0xNTksNiArMTYwLDcgQEAgc3lzdGVtLXNsZWVwLWJsb2NrLXNsZWVwCiAg
ICh3aGVuIHN5c3RlbS1zbGVlcC0tYmFjay1lbmQKICAgICAoc3lzdGVtLXNsZWVwLS1ibG9jay1z
bGVlcCAob3Igd2h5ICJFbWFjcyIpIGFsbG93LWRpc3BsYXktc2xlZXApKSkKIAorOzs7IyMjYXV0
b2xvYWQKIChkZWZ1biBzeXN0ZW0tc2xlZXAtdW5ibG9jay1zbGVlcCAodG9rZW4pCiAgICJVbmJs
b2NrIHRoZSBzeXN0ZW0gc2xlZXAgYmxvY2sgYXNzb2NpYXRlZCB3aXRoIFRPS0VOLgogUmV0dXJu
IG5vbi1uaWwgVE9LRU4gd2FzIHVuYmxvY2tlZCwgb3IgbmlsIGlmIG5vdC4KQEAgLTIwMywxNyAr
MjA1LDM0IEBAIHN5c3RlbS1zbGVlcC0tc2V0LWJhY2stZW5kCiAgICAgICAgIChjb25kICgoZmVh
dHVyZXAgJ25zKSAnbnMpCiAgICAgICAgICAgICAgICgoZmVhdHVyZXAgJ3czMikgJ3czMikKICAg
ICAgICAgICAgICAgKChhbmQgKHJlcXVpcmUgJ2RidXMpCi0gICAgICAgICAgICAgICAgICAgIChm
ZWF0dXJlcCAnZGJ1c2JpbmQpCi0gICAgICAgICAgICAgICAgICAgIChtZW1iZXIgIm9yZy5mcmVl
ZGVza3RvcC5sb2dpbjEiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRidXMtbGlzdC1h
Y3RpdmF0YWJsZS1uYW1lcyA6c3lzdGVtKSkpCisgICAgICAgICAgICAgICAgICAgIChmZWF0dXJl
cCAnZGJ1c2JpbmQpKQogICAgICAgICAgICAgICAgJ2RidXMpCiAgICAgICAgICAgICAgICh0IG5p
bCkpKSkKIAorKGRlZnZhciBzeXN0ZW0tc2xlZXAtLWV2ZW50LWFmdGVyLWhvb2stZnVuY3Rpb25z
IG5pbCkKKyhkZWZ2YXIgc3lzdGVtLXNsZWVwLS1ldmVudC1pbi1wcm9ncmVzcyBuaWwpCisoZGVm
dmFyIHN5c3RlbS1zbGVlcC0tZXZlbnQtcXVldWUgbmlsKQorCiAoZGVmdW4gc3lzdGVtLXNsZWVw
LS1zbGVlcC1ldmVudC1oYW5kbGVyIChldmVudCkKLSAgImBzbGVlcC1ldmVudCcgRVZFTlQgaGFu
ZGxlci4iCisgICJIYW5kbGUgPHNsZWVwLWV2ZW50PiBzcGVjaWFsIGV2ZW50cyBhbmQgYXZvaWQg
cmFjZXMuIgogICAoZGVjbGFyZSAoY29tcGxldGlvbiBpZ25vcmUpKQogICAoaW50ZXJhY3RpdmUg
ImUiKQotICAocnVuLWhvb2std2l0aC1hcmdzICdzeXN0ZW0tc2xlZXAtZXZlbnQtZnVuY3Rpb25z
IGV2ZW50KSkKKyAgOzsgUXVldWUgaW5jb21pbmcgZXZlbnQuCisgIChzZXRxIHN5c3RlbS1zbGVl
cC0tZXZlbnQtcXVldWUKKyAgICAgICAgKGFwcGVuZCBzeXN0ZW0tc2xlZXAtLWV2ZW50LXF1ZXVl
IChsaXN0IGV2ZW50KSkpCisgIDs7IElmIGFuIGV2ZW50IGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3Ms
IHJldHVybiByaWdodCBhd2F5LgorICA7OyBPdGhlcndpc2UsIHByb2Nlc3MgcXVldWVkIGV2ZW50
cy4KKyAgKHdoaWxlIChhbmQgKG5vdCBzeXN0ZW0tc2xlZXAtLWV2ZW50LWluLXByb2dyZXNzKQor
ICAgICAgICAgICAgICBzeXN0ZW0tc2xlZXAtLWV2ZW50LXF1ZXVlKQorICAgIChsZXQgKChjdXJy
ZW50LWV2ZW50IChwb3Agc3lzdGVtLXNsZWVwLS1ldmVudC1xdWV1ZSkpKQorICAgICAgKHNldHEg
c3lzdGVtLXNsZWVwLS1ldmVudC1pbi1wcm9ncmVzcyBjdXJyZW50LWV2ZW50KQorICAgICAgKHVu
d2luZC1wcm90ZWN0CisgICAgICAgICAgKHByb2duCisgICAgICAgICAgICAocnVuLWhvb2std2l0
aC1hcmdzICdzeXN0ZW0tc2xlZXAtZXZlbnQtZnVuY3Rpb25zCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGN1cnJlbnQtZXZlbnQpCisgICAgICAgICAgICAocnVuLWhvb2std2l0aC1h
cmdzICdzeXN0ZW0tc2xlZXAtLWV2ZW50LWFmdGVyLWhvb2stZnVuY3Rpb25zCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQtZXZlbnQpKQorICAgICAgICAoc2V0cSBzeXN0
ZW0tc2xlZXAtLWV2ZW50LWluLXByb2dyZXNzIG5pbCkpKSkpCiAKIChkZWZ1biBzeXN0ZW0tc2xl
ZXAtZW5hYmxlICgpCiAgICJFbmFibGUgYHN5c3RlbS1zbGVlcCcuIgpAQCAtMjUyLDI1ICsyNzEs
NiBAQCBzeXN0ZW0tc2xlZXAtLXVuYmxvY2stc2xlZXAKICAgIlVuYmxvY2sgdGhlIHN5c3RlbSBz
bGVlcCBibG9jayBhc3NvY2lhdGVkIHdpdGggVE9LRU4uCiBSZXR1cm4gbm9uLW5pbCBUT0tFTiB3
YXMgdW5ibG9ja2VkLCBvciBuaWwgaWYgbm90LiIpCiAKLShkZWZ2YXIgc3lzdGVtLXNsZWVwLS1l
dmVudC1pbi1wcm9ncmVzcyBuaWwpCi0oZGVmdmFyIHN5c3RlbS1zbGVlcC0tZXZlbnQtcXVldWUg
bmlsKQotCi0oZGVmdW4gc3lzdGVtLXNsZWVwLS1zbGVlcC1ldmVudC1mdW5jdGlvbiAoZXZlbnQp
Ci0gICJIYW5kbGUgPHNsZWVwLWV2ZW50PiBzcGVjaWFsIGV2ZW50cyBhbmQgYXZvaWQgcmFjZXMu
IgotICA7OyBRdWV1ZSBpbmNvbWluZyBldmVudC4KLSAgKHNldHEgc3lzdGVtLXNsZWVwLS1ldmVu
dC1xdWV1ZQotICAgICAgICAoYXBwZW5kIHN5c3RlbS1zbGVlcC0tZXZlbnQtcXVldWUgKGxpc3Qg
ZXZlbnQpKSkKLSAgOzsgSWYgYW4gZXZlbnQgaXMgYWxyZWFkeSBpbiBwcm9ncmVzcywgcmV0dXJu
IHJpZ2h0IGF3YXkuCi0gIDs7IE90aGVyd2lzZSwgcHJvY2VzcyBxdWV1ZWQgZXZlbnRzLgotICAo
d2hpbGUgKGFuZCAobm90IHN5c3RlbS1zbGVlcC0tZXZlbnQtaW4tcHJvZ3Jlc3MpCi0gICAgICAg
ICAgICAgIHN5c3RlbS1zbGVlcC0tZXZlbnQtcXVldWUpCi0gICAgKGxldCAoKGN1cnJlbnQtZXZl
bnQgKHBvcCBzeXN0ZW0tc2xlZXAtLWV2ZW50LXF1ZXVlKSkpCi0gICAgICAoc2V0cSBzeXN0ZW0t
c2xlZXAtLWV2ZW50LWluLXByb2dyZXNzIGN1cnJlbnQtZXZlbnQpCi0gICAgICAodW53aW5kLXBy
b3RlY3QKLSAgICAgICAgICAocnVuLWhvb2std2l0aC1hcmdzICdzeXN0ZW0tc2xlZXAtZXZlbnQt
ZnVuY3Rpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50LWV2ZW50KQot
ICAgICAgICAoc2V0cSBzeXN0ZW0tc2xlZXAtLWV2ZW50LWluLXByb2dyZXNzIG5pbCkpKSkpCi0K
IAwKIDs7IEQtQnVzIHN1cHBvcnQuCiAKQEAgLTI4Miw2ICsyODIsNyBAQCBzeXN0ZW0tc2xlZXAt
LWRidXMtc2xlZXAtaW5oaWJpdG9yLXR5cGVzCiAKIChkZWZ2YXIgc3lzdGVtLXNsZWVwLS1kYnVz
LWRlbGF5LWxvY2sgbmlsKQogKGRlZnZhciBzeXN0ZW0tc2xlZXAtLWRidXMtcHJlLXNsZWVwLXNp
Z25hbCBuaWwpCisoZGVmdmFyIHN5c3RlbS1zbGVlcC0tZGJ1cy1oYXMtc2NyZWVuc2F2ZXIgbmls
KQogCiAoZGVmdW4gc3lzdGVtLXNsZWVwLS1kYnVzLWRlbGF5LWxvY2sgKG1ha2Utb3ItY2xvc2Up
CiAgIChjb25kIChtYWtlLW9yLWNsb3NlCkBAIC0zMzUsMjAgKzMzNiwyMyBAQCBzeXN0ZW0tc2xl
ZXAtLWRidXMtcHJlcGFyZS1mb3Itc2xlZXAtZnVuY3Rpb24KIAogKGNsLWRlZm1ldGhvZCBzeXN0
ZW0tc2xlZXAtLWVuYWJsZSAoJmNvbnRleHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChzeXN0ZW0tc2xlZXAtLWJhY2stZW5kIChlcWwgJ2RidXMpKSkKLSAgOzsgT3JkZXIg
bWF0dGVycy4KLSAgKGFkZC1ob29rICdzeXN0ZW0tc2xlZXAtZXZlbnQtZnVuY3Rpb25zCi0gICAg
ICAgICAgIydzeXN0ZW0tc2xlZXAtLWRidXMtcHJlcGFyZS1mb3Itc2xlZXAtZnVuY3Rpb24KLSAg
ICAgICAgICA7OyBUaGlzIG11c3QgcnVuIGxhc3QuCi0gICAgICAgICAgOTkpCi0gIChzeXN0ZW0t
c2xlZXAtLWRidXMtZGVsYXktbG9jayB0KQotICAoc3lzdGVtLXNsZWVwLS1kYnVzLXByZXBhcmUt
Zm9yLXNsZWVwLXdhdGNoZXIgdCkKLSAgdCkKKyAgKGxldCAoKGRidXMtYWN0aXZhdGFibGUtbmFt
ZXMgKGRidXMtbGlzdC1hY3RpdmF0YWJsZS1uYW1lcyA6c3lzdGVtKSkpCisgICAgKGlmIChtZW1i
ZXIgIm9yZy5mcmVlZGVza3RvcC5sb2dpbjEiIGRidXMtYWN0aXZhdGFibGUtbmFtZXMpCisgICAg
ICAgIChwcm9nbgorICAgICAgICAgIChzZXRxIHN5c3RlbS1zbGVlcC0tZGJ1cy1oYXMtc2NyZWVu
c2F2ZXIKKyAgICAgICAgICAgICAgICAobWVtYmVyICJvcmcuZnJlZWRlc2t0b3AuU2NyZWVuU2F2
ZXIiIGRidXMtYWN0aXZhdGFibGUtbmFtZXMpKQorICAgICAgICAgIChhZGQtaG9vayAnc3lzdGVt
LXNsZWVwLS1ldmVudC1hZnRlci1ob29rLWZ1bmN0aW9ucworICAgICAgICAgICAgICAgICAgICAj
J3N5c3RlbS1zbGVlcC0tZGJ1cy1wcmVwYXJlLWZvci1zbGVlcC1mdW5jdGlvbikKKyAgICAgICAg
ICAoc3lzdGVtLXNsZWVwLS1kYnVzLWRlbGF5LWxvY2sgdCkKKyAgICAgICAgICAoc3lzdGVtLXNs
ZWVwLS1kYnVzLXByZXBhcmUtZm9yLXNsZWVwLXdhdGNoZXIgdCkKKyAgICAgICAgICB0KQorICAg
ICAgbmlsKSkpCiAKIChjbC1kZWZtZXRob2Qgc3lzdGVtLXNsZWVwLS1kaXNhYmxlICgmY29udGV4
dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tc2xlZXAtLWJh
Y2stZW5kIChlcWwgJ2RidXMpKSkKICAgKHN5c3RlbS1zbGVlcC0tZGJ1cy1wcmVwYXJlLWZvci1z
bGVlcC13YXRjaGVyIG5pbCkKICAgKHN5c3RlbS1zbGVlcC0tZGJ1cy1kZWxheS1sb2NrIG5pbCkK
LSAgKHJlbW92ZS1ob29rICdzeXN0ZW0tc2xlZXAtZXZlbnQtZnVuY3Rpb25zCisgIChyZW1vdmUt
aG9vayAnc3lzdGVtLXNsZWVwLS1ldmVudC1hZnRlci1ob29rLWZ1bmN0aW9ucwogICAgICAgICAg
ICAgICAgIydzeXN0ZW0tc2xlZXAtLWRidXMtcHJlcGFyZS1mb3Itc2xlZXAtZnVuY3Rpb24pKQog
CiAoY2wtZGVmbWV0aG9kIHN5c3RlbS1zbGVlcC0tYmxvY2stc2xlZXAgKHdoeQpAQCAtMzcwLDcg
KzM3NCw4IEBAIHN5c3RlbS1zbGVlcC0tYmxvY2stc2xlZXAKICAgICAgICAgKHByb2duCiAgICAg
ICAgICAgKGxldCAoKGluaGliaXQtcXVpdCB0KSkKICAgICAgICAgICAgIChwdXNoIChjb25zICdk
YnVzLWluaGliaXRvci1sb2NrIHNsZWVwLWNvb2tpZSkgc3VidG9rZW5zKSkKLSAgICAgICAgICAo
dW5sZXNzIGFsbG93LWRpc3BsYXktc2xlZXAKKyAgICAgICAgICAodW5sZXNzIChvciBhbGxvdy1k
aXNwbGF5LXNsZWVwCisgICAgICAgICAgICAgICAgICAgICAgKG5vdCBzeXN0ZW0tc2xlZXAtLWRi
dXMtaGFzLXNjcmVlbnNhdmVyKSkKICAgICAgICAgICAgIChpZi1sZXQqICgoc2NyZWVuLWNvb2tp
ZQogICAgICAgICAgICAgICAgICAgICAgICAoZGJ1cy1jYWxsLW1ldGhvZAogICAgICAgICAgICAg
ICAgICAgICAgICAgOnNlc3Npb24K
--000000000000412953064abf13cb--
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.Received: (at 80348) by debbugs.gnu.org; 14 Feb 2026 01:44:26 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Feb 13 20:44:25 2026 Received: from localhost ([127.0.0.1]:60248 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vr4hs-0005hO-8z for submit <at> debbugs.gnu.org; Fri, 13 Feb 2026 20:44:25 -0500 Received: from mail-northcentralusazolkn19012082.outbound.protection.outlook.com ([52.103.20.82]:27537 helo=CH5PR02CU005.outbound.protection.outlook.com) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <morgan.j.smith@HIDDEN>) id 1vr4ho-0005fw-Rh for 80348 <at> debbugs.gnu.org; Fri, 13 Feb 2026 20:44:22 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fGz/D7b3A1TomMhcNdVKedpfqRdwj5bJw1d5/0Q1RrMe0cHAVknRvXD++ynZ6OD5CWOUVoo52iZoHmsf7DHbnHP5D0jcgLz2WtRozkcyM3lPDdYzFQt8Sx+FzqDjexNLUvS68XQej2uYTkIoIiFL5PsH1Pm6c4dYMLvZZUSCFrgCpwIn6CK01XX/+OnGPNOu7+YCfLLWG9qjCfhYqpVEBzQBqh51mBK/ekr907HAptdwilhHAImHOPr74DVb3yzI9ToAhHttS0A0A/1D+gPUOBr4CT65wB7ZHGw0GmdNi/Rr+ZfqhqVV/A0CYOQE1U25LmgIM2i45xt5m1AX6uG/Og== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=9Z/SIWqFu2vO/JqacwV5aYPoblTyFjAx5gFweZz9/Qw=; b=hgHFoWuV76h7WVn9GzqwMBA5Iyw4voH4s5z/uwOZYy3Fa/DvC3m7RinXtCvjMdKmjEI3ul+Euu7c8pEcQ7AQVGfyp/sacA1innt2FgJLcddKGNkjb+KaVZJUisiNciqPc0Rrrz4oCGYBJ0ane0DCJ2ZMNZcFsQwQUG5tkIT7nApGUBEsAGBMdj7W1+urS30qDAJuI6BABZAeLEvM+pQGLATettToIn4G/S6AyTfsfR03X79xn4oprfzULOZTcfTnGhj9+BsMg1ol9d7s1iIDqA47KpPM7mLUdRAFXYdjI7NO2kQdbtCofearmmwbQ/U4JJdVpt3SELTGd+I0j9KGDQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9Z/SIWqFu2vO/JqacwV5aYPoblTyFjAx5gFweZz9/Qw=; b=XlySTQPxyugoAouvND05PYdzC6e93La7RjOw5EM8kzYDH31QFM2+Oq1RbZ7wV8ty8SpPjfi5CkrbtewlzavlMql4BwQdARMzMa3yEFYgTL9Ar1DJoVnTUPxpnJIK1iHtLix0MK1SvtuX8gsPDlnT8y/5v+c7zBZS8N9C9U7KfCHNdXwcLyEgySUTH977cFKh0ggmWqYUVvX/RkbOGQ3FFEyvCqplc/ovJGn42PTxiG+CpiuOo/oLIVr8QQhjWCuUTdSbk4rP+OueD4LDhF6uxX8ruqvLDJMfwY3yioYGmKELsiex4Axl3IjuPvJkYGaYqOxrErtIKndhApaOF3YUSQ== Received: from CH3PR84MB3424.NAMPRD84.PROD.OUTLOOK.COM (2603:10b6:610:1c4::17) by DS4PR84MB4066.NAMPRD84.PROD.OUTLOOK.COM (2603:10b6:8:2aa::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.14; Sat, 14 Feb 2026 01:44:14 +0000 Received: from CH3PR84MB3424.NAMPRD84.PROD.OUTLOOK.COM ([fe80::9aca:c7a4:3341:3307]) by CH3PR84MB3424.NAMPRD84.PROD.OUTLOOK.COM ([fe80::9aca:c7a4:3341:3307%4]) with mapi id 15.20.9611.012; Sat, 14 Feb 2026 01:44:13 +0000 From: Morgan Smith <morgan.j.smith@HIDDEN> To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN> Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake event package In-Reply-To: <CAN+1Hbpks=Rh1Y9wknWG9YAhJ7KdkgxQFPZBcWWKGLfc_GS2sA@HIDDEN> References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN> <CH3PR84MB3424F34DF6500C6704DC1B57C561A@HIDDEN> <CAN+1HboV9Rra2uRRxfs4c+U+Rhf5pWwrTREYtD=otzGTTeKipQ@HIDDEN> <CAN+1Hbpks=Rh1Y9wknWG9YAhJ7KdkgxQFPZBcWWKGLfc_GS2sA@HIDDEN> Date: Fri, 13 Feb 2026 20:44:09 -0500 Message-ID: <CH3PR84MB342429295363699B5A68D836C56EA@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: YT4P288CA0043.CANP288.PROD.OUTLOOK.COM (2603:10b6:b01:d3::29) To CH3PR84MB3424.NAMPRD84.PROD.OUTLOOK.COM (2603:10b6:610:1c4::17) X-Microsoft-Original-Message-ID: <87ms1cayl2.fsf@HIDDEN> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH3PR84MB3424:EE_|DS4PR84MB4066:EE_ X-MS-Office365-Filtering-Correlation-Id: d9964e80-9644-4694-7ea2-08de6b6a8e7b X-Microsoft-Antispam: BCL:0; ARA:14566002|12121999013|23021999003|15080799012|461199028|19110799012|8060799015|6090799003|5072599009|51005399006|440099028|3412199025|13041999003|40105399003; X-Microsoft-Antispam-Message-Info: =?utf-8?B?ekRDZzJqeXJiekxkV1I4b1J1c0NhYk1FbHoxNHRBQzI2QktGYllLcG1TdFgz?= =?utf-8?B?OGVsU1VPcDViRElnZWdPc0ozcjRBUng0RTNrbk0rYUlrSnRvaFowekZTU0tJ?= =?utf-8?B?N25BOUVrQm9ibUN2MXNWbkNaWnBFYVhjS2oxLy9BS0NiRUM3NzB5MlFYNW5x?= =?utf-8?B?c20xL2RSa3hWUE8wL21ad0NNUlN6SmZrN1gzK3BmWWdHYW5zZ0tMdHZGRThD?= =?utf-8?B?U0l5b3pLdC9hd3grMWlYanJRNGlFbmJDZ21vQ043TDhyVFdYRjRDTmNmc21a?= =?utf-8?B?TVB6NVgvRUVhdURFRlpNS2t6bzdDMnNIRndoUmoxck11TDJDRnJMNm5lcVV6?= =?utf-8?B?STRTOFBva1RXc0ZHUUJFd3hqVlpxQ1pERkw1Q28vb2x2UzZCQU9uRXZkdjFl?= =?utf-8?B?SXYydTEvaHBLWEtoVkxCVVQ3d0JncFliTEtpT1p4c1Q0VkU3elljS3lyUFBn?= =?utf-8?B?VDVSdUdBSHc5K29TS0JwaGE3QjQyVWxyZU5Veld0SHRZcGY1NmhwVGYwMllQ?= =?utf-8?B?TlJJQy9nZTd2SHdHODlHejcvOTVlQVpIblZ6UDN6V0FndFV0THhoTFlUQmN5?= =?utf-8?B?TjFma3hyU0xpMy9xODU3UXBUbVZLS3pVNlF1b0lhMWhjSFVBK0hmN0RwTVR2?= =?utf-8?B?MkJxKzRWeit5cS8xa1pqUXlUamFIdkdGOTJIQ0UvZy9uU1gyRzhZU1NOS1cy?= =?utf-8?B?RE54eEZyYjVyZnFhUXhlRHRZcWFWWmFxclIyRmE3THdmZDBjNXVjYWhYc2Ru?= =?utf-8?B?ZTkrdEI1d0ZabnhWdE8vbWNWMDl3TjFCcThmMlNhUThKc0tFVE1VbjUxNGp3?= =?utf-8?B?VkdOZHpQYkdheGJiTFF3cTNLLzZpeExhUUlpUmhxZjI5Y3hKVUpjamNlZ2xG?= =?utf-8?B?ZHZ1bmRYSE1XU0ZVbU9udlhRcEYzKy9oUUJqcUpKUzl3azZ6NVZUeG1mT2lL?= =?utf-8?B?OVVER2Mrcmg2aUFuWWFkMFJFZk1BSys4cTFkc0pJdVVHNzQ4cDBYQTJDRUds?= =?utf-8?B?anhTa3dCZTdDanZ0dzg4N3Y0cmE4VXZJQ09ZRm9RQUQwWGxWdlRHUThsSlU1?= =?utf-8?B?Wk5SYnZha2hiOWlKS2NCcUxwbk1YMkpDN2cvME9tSlBvMVpQbWVxaTZlSGFj?= =?utf-8?B?Y3ZPVEx3enZtT05IVzA4bTRlbFl5eC9wTGZVUG5RUUFISDY4ZHRreXFpd2No?= =?utf-8?B?d1RoNTNkS3VtYllwYkIwVWJRODdQNmtacGROaHFxUjVZd1pFV2RueTRnTlVX?= =?utf-8?B?T2dvWFVzYXkzODkxdENFSW04WEI0TW05OFhQb3dkeEc2eGx6eGhjSmljN2d4?= =?utf-8?B?WUtjTnpRSUJWQm5ya3BUR3Q2dllERDFHWHI0VGFLLzFyN0k0Q0FDNlBxTWt4?= =?utf-8?B?NktDZFJtSzY4WnhabitwOWREWGszcmd1cVFRMitlUUN5cHBaaVhUK3ZRSDJQ?= =?utf-8?B?a2JlYmNObkxuVjdxSlMyaEFaY2dwL1QxTnJodkttZEJLVThYRVJLMWwzU0ll?= =?utf-8?B?ZDdJZmJySEJ6UHZFTkZ5Y0JhRWZ1eG1XY3lhSEg0S1l4dDMrdEZldEZuMGZ5?= =?utf-8?B?MElCRnhDQ2poRjdEVXdrNjdYVmRXcER4Nk9yckhrTEFHQ0F2K0Mva1NTSjJC?= =?utf-8?B?QkhwL0hYRUNBbG5HN1J4eExUNVhWMXhYZHB2UVhRWWhsZ0d0eUxDQmNjVW05?= =?utf-8?B?aGloTEtQUy83ZUQ5YjZpL0ZYNDhTdGxNS2ZDWEEvZGQ3ekFtTXR1TnV3PT0=?= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Y1ZkdUVaUEFqT1NrbDdKLzNtd2RVYVFSaEk4b3A4MkNLdkVDMTBlUTQyOVpm?= =?utf-8?B?bnY4alRqN3BnQklUbVVvUlArQm4vckgxSkM1ZnNLTmFldnp1Zks0eDdSSE9S?= =?utf-8?B?UFZiUDF4VkxtRnp0UlNzY0IzR3ZIc1pTVGtFV3J3M1RJMkxNcmNIVTZEZjZo?= =?utf-8?B?M2VPMXRVclZyZTh5SVBLNG1UbWFRWjZlK3VpZUl5UWpJZHdjM1RJU29qY2s5?= =?utf-8?B?WlY4M2Ixbm80M20vVnNyVkdBTDhpa29nMGpqVGpxTUhSak1IZG8vSjBnd0hI?= =?utf-8?B?SjdQWnV2WUdycVZ6U3BRZExraCtEN25vZnpoOCt0Mnc2RGhBSUc1OVdMZWFY?= =?utf-8?B?WmxuZVluYVpocUg2WjRBZE5QY2tjYlVKNnZ4RUdGTjZ0bkwrZVNtZmhaTzZ6?= =?utf-8?B?bkdYMDZKemowa1A4dG5mM0hUQzFMcVUxRXhTUU9VNlF3aTJTY3JndGUvUFpq?= =?utf-8?B?NmZqTG1lL0pvVjI5SmFkQW5PU25GL3hVM2RSREpnSHhnNTRkNEhpZHBXTkZL?= =?utf-8?B?OFpGa1g0Q2dBeWVBOUthTGhBdnJTVXBRc0RIMEdoa2NXSEcvWVhUYXQ1N3dF?= =?utf-8?B?UFJTcXZqa2trMWVIR2lodGZsMDdPWmpxTWhwV1BSbWVvUitwbHRrKzBQVThH?= =?utf-8?B?RVRGVEpROGEvcHgvbFlIODRsd2JiZzFNTkE2WVdtWG84UG5ja1dqalBuRFIx?= =?utf-8?B?aW5KaUx1YzFYRVNJaGsyYmRQNllZdFJiem1yM3g0aTFFZzAwWmdMLzFDZ2hW?= =?utf-8?B?RzhoZFFHZzNpMW9aUVE3UDBXZ2VHM1k2Y3dTNFdzcHFLZlJ5L0grd2tnWGND?= =?utf-8?B?ZUs4bm9kZlhTdEVreUVBL0hYN1l4cVRCa0NRZ1lLUlRhUHR4QTZZQWQ4VzlG?= =?utf-8?B?aGV5bFdORlE4MXF4Z091SWJJRHRXYUZCdVgyLzd0WTl4L0ZBc0ZHb2JEZ2lr?= =?utf-8?B?MHE0WUpGcThKSzJPRVN4RkRqY01VdUluLzkyVE1jdm8wUHozTGNGYW90TDdK?= =?utf-8?B?V05Jakc5NTQranFtZTRLZmQ4NmZ5OVdnajdNbTUrRkllTW1QeHd6L0ZBR2hY?= =?utf-8?B?SmdvMG1LVUQvYm81WGdLbWo1azg2MXNSbnJLai9ORjdkVkhSYzlRUUFIT0Vw?= =?utf-8?B?NUpWT1VRcmRPR3JFek8zSVNLT0RvaDdMREVhaC9JYURUTkI5dTlwQmgwSHN0?= =?utf-8?B?S28rYUpnenpQR3lPVy9yMUE4cUw4d1laMkEzdTU4Mmo4K1g1bjYrQ2tnaGtM?= =?utf-8?B?Z3VMUG5aaVdWOXVSQlRQM3VXdWVOY1k5NUJHUUl5VHN4WVY4RVp5V29mZDBk?= =?utf-8?B?Q0FFZVlycnU3T0dNWUFmeVRsTG0yRUxoZE5RQXc3eGhkYm41M01kNkg4eDYv?= =?utf-8?B?M2JkTUlxOHJhaHdzKzVNYmhyeWwvcjI0V3M5K1YzckVxMGdTRWl6SnBxSXJN?= =?utf-8?B?SlZsWHJCbWVaaXhaNHJWV2xIWXpVdHZXeTRZVG9sWVd5a0dtZXhISURvRnhr?= =?utf-8?B?bklsMm53aXRwYThBN3JxcWQ5alUxMDJHTGMwOWFkVEk2dVY4V0xPNFZxYzNk?= =?utf-8?B?MVI3NkZmbWxKbmtYWXRZQ3NNd1RiWGRPdENTTDdYeTUvYTFCNWJoMm1XTlBw?= =?utf-8?B?Q0NHS1FOc0xzZGVkK0RNT1U3aWpvZVY3VnI5MzFLaW9qQlVjYjVqVTZzbE9L?= =?utf-8?B?bGh1RFFVNnhQTXFBT0NiTWZ1N3FuUmJwQkhkeXFNMmFpVFhxQ2M1TElTRW44?= =?utf-8?B?Z05MUC9xSkF3SXNEcXpwODB1QUVuU0h6NHNBd3o0czNKVU8yMEJ4WlZhdUc5?= =?utf-8?B?Qm5NcUJIclJTNFJsYUk0WC93bDRSWFJEMlFVQ1ZyZnRYWU85RlZGaTJxK2FY?= =?utf-8?B?TVRiSVV1VjFQYlBGRm5ZQ0NIYy9NaUZjSGovL0c2OThGb3ArUUU3eEZ1WkdB?= =?utf-8?Q?H9GfMRck5NQ=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d9964e80-9644-4694-7ea2-08de6b6a8e7b X-MS-Exchange-CrossTenant-AuthSource: CH3PR84MB3424.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Feb 2026 01:44:13.8425 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS4PR84MB4066 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 80348 Cc: 80348 <at> debbugs.gnu.org, Andrew Cohen <acohen@HIDDEN>, eric@HIDDEN, Michael Albinus <michael.albinus@HIDDEN>, Daniel Mendler <mail@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.0 (-) St=C3=A9phane Marks <shipmints@HIDDEN> writes: > On Fri, Feb 13, 2026 at 5:58=E2=80=AFPM Morgan Smith <Morgan.J.Smith@outl= ook.com> > wrote: > > St=C3=A9phane Marks <shipmints@HIDDEN> writes: > > 1. Why no autoload cookie for `system-sleep-unblock-sleep'? I would > like one > added. Also we could consider adding a cookie for > `system-sleep-unblock-all-sleep-blocks' but I'm not 100% sure that's > needed. > > Because why would one ever call unblock sleep without having first blocke= d > sleep? I don't mind adding more autoloads but this one is suspicious.=20 > Under what circumstances do you want to call unblock without having first > called block? I was thinking of this from the standpoint of avoiding warnings in my init.el. So you are correct from a load order perspective but it doesn't help my warnings. So I decided to read the manual (specifically "(elisp) When to Autoload") and to my surprise it actually has no guidance on when to autoload a non-interactive function. Presumably this means one should never do this. That doesn't sound quite right to me so I'd be curious to know the truth. > 2. The backend is not dbus specific but rather has two more specific > dependencies. Systemd or elogind for delay/block, and a screensaver > program > for the screensaver. We do not actually check for these dependencies= . > > How and where should these dependencies be tested and for what > configurations/systems are they valid vs. the standards that freedesktop > provides for screen saver blocking that Michael implemented? > > I use > elogind so I'm not sure what will happen on a system missing the firs= t > dependency but I do get errors because I don't have a screensaver > program > installed. This is the error I get from running > `(system-sleep-block-sleep)'. > > dbus-call-method: D-Bus error: > "org.freedesktop.DBus.Error.ServiceUnknown", "The name > org.freedesktop.ScreenSaver was not provided by any .service files" > > How about we condition-case around this and produce a warning if this wil= l > be a common thing on GNU/Linux systems? The most obvious and likely the most robust way to do this would be to just ask dbus if it exists. Going through dbus.el, the docstring for `dbus-ping' mentions that we can do this: (member "org.freedesktop.login1" (dbus-list-known-names :system)) (member "org.freedesktop.ScreenSaver" (dbus-list-known-names :session)) However, calling `dbus-list-known-names' still involves a dbus call so it might be more efficient to just wrap everything in `dbus-ignore-errors'. Also I would really prefer if we did not produce a warning when there is no service providing a screen-saver. If you insist on a warning I would ask that there is a way to disable it. > > 3. It is interesting that you rely on > `system-sleep--dbus-prepare-for-sleep-function' being in > `system-sleep-event-functions' in order to maintain the delay lock. > `system-sleep-event-functions' is a user variable that can be modifie= d. > I've > seen lots of users flat out setq hook variables (mostly in the EMMS > source > code). I'm not saying this is wrong, but you are letting users shoot > themselves in the foot. > > This was a concern Eli raised. I could implement an internal hook that t= he > event handler can call to avoid this. I think that would be wise. Maybe you could just shove another function made with `cl-defgeneric' at the end of `system-sleep--sleep-event-handler'. > I was just putting this in and found a serious issue with the hooks as is= . The > internal handler wasn't being called at all which means you weren't benef= iting > from the race handler. When I submit an update based on your feedback an= d > testing, I'll circulate a patch with that corrected along with the intern= al > hook Sounds good! I'm looking forward to it.
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.Received: (at 80348) by debbugs.gnu.org; 13 Feb 2026 23:53:43 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Feb 13 18:53:43 2026 Received: from localhost ([127.0.0.1]:57934 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vr2yk-0004Dk-Si for submit <at> debbugs.gnu.org; Fri, 13 Feb 2026 18:53:43 -0500 Received: from mail-vk1-xa33.google.com ([2607:f8b0:4864:20::a33]:42439) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vr2yi-0004DX-6o for 80348 <at> debbugs.gnu.org; Fri, 13 Feb 2026 18:53:40 -0500 Received: by mail-vk1-xa33.google.com with SMTP id 71dfb90a1353d-5688b9e4e80so100501e0c.1 for <80348 <at> debbugs.gnu.org>; Fri, 13 Feb 2026 15:53:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771026819; cv=none; d=google.com; s=arc-20240605; b=gUT3qz4foRfyCVIlgcZ9h3XtcaH4D2aavK7pL4iBJIMc4R7M3sPd+2AfA3yTBnh28u HqeZZ/32XddtfieTw3qkfgFumfp3UZAexnAfm3OWH1w8p81ssAoV7ywx8vv21mevbcnW D3eK8AhiKcgor+3ZcdfGBS1WBDm/eT+YFK7Ua5c6KtwQcK5WKiSugEejW2ZRyic62jux HvIJiEcfCYxZZac5mLotNrqR0Fb9hntt0OgY7cmr6x7wAQ3VA6Zq9YaJIEIxZIsC328W LhDxQ8RIbgH/JIgZtyKGytwngb5F69HLfuQlWzsN6gOr3+1EbFjZvVo5d2YH3DPyrV1b pUDw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=oioCPWvn1SHvrSSsynCn8XfuabkA6JVNE8PrBjXxMgo=; fh=j16YxiWPhMlhDBxShguIfQCyGYjBQmPIUozbmOEf63Q=; b=jUeirkiPWtqGn2hNJg1jxEUus91SxifFpKup4/YSaHYB8WKDBlVBNdqLVGHo+aE4ee +j4G/sfwsgId60DYfH7hACB2exSUO0jb9r4VrYlA6iGRTQAruZKL8v4xhub1ge5H/JRe v0X4GkbwbLYesntv3dkJ/47lmLsT0c+Rhacx8Bmi6cWt/e//y8sztQjd2dHN3zupmIha lr+7qzLLM01liAAi2barqpzKMTkISz3knZ4JAvrWawxWPZIDknqvj8U/cUrGUdMfDMGd pzXaVEC0tmyG1wmg6HJ7tjmjHVDN2horeNt0XL576l7a+O5giV+yg8UCnJNZF6BZtbSl 3uuQ==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771026819; x=1771631619; 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=oioCPWvn1SHvrSSsynCn8XfuabkA6JVNE8PrBjXxMgo=; b=GY8t9dXDA2kJAJoaP6CEq8Ql7By/OBVAr4YSLfaRZaGaQRTPXzHJh2ax/8uOaRJRyg BlXRXFOnuDSiBYZjveH+I73DQtt2qvroZt5b4az97SbtC/8XIA7wUF4t4Z1wPzw9DWHk iWDyU0H1GxtEHbwz0JY8/zHXf+AclbM6uZsoBfouqCJSdHN+FWaFJ8B0kkD66xMsLerO 3MOmjwtjBXhLDTxNeC04kw7ogLAz2UefCLkAhGIk7NMS45LQvxU9ViSipmzRyt0EkBfL 9griRN4xCWma5YcsfWibWoZFhjLUhXowkvHz+C6v+OViuMvBeXSPf5E4jj0rwwIeupyT x06A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771026819; x=1771631619; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=oioCPWvn1SHvrSSsynCn8XfuabkA6JVNE8PrBjXxMgo=; b=K8jHSvbchJuIep4eXG9PwPBq7UZ6G9+1ycAk65xfMA5P3/EIT9nMr2DIf+8J3jsp0w ygZrw+vFqAWbfp/SFjMO7KIMI3FJTRaiaLbvWUV/fDaEHN8UAdVEWriOotwgCvpRN2u4 6MjoNxA/UuoGdbFV+hBLsyXJRVc/1wZwSIOhuvpZ3XHqP9dnFfTbJT3KE1tZ0okqqKIP XgpMf9OSNd7MmSrER6cZ820Pl4n6Pm530mumybWOCp6RxBOBYqBT+mVGfbUOz82KIuRF 3ID+QF9pIfuSTlmDfLelq+pLVUoGfSnCW4TQzeBuvo8RgzApCxNwNh/4PdRe5uPxUWLS lsvg== X-Gm-Message-State: AOJu0YxAOwG/9IfZc/iHGFU/8dRZGTDfQLn1WSDG0I0JI+JkZKuQddpl MgY4PyzPdAebAwWrh/x68HQhK8AN1GfmrSttT5bssdvlmp/Zuv51iq+0pSIo7rP3KXapARDGQxS EnmapRLdOGGHG7GqFswyymYd2bCAbQ9M= X-Gm-Gg: AZuq6aIDJdW7pHb8L39kBAva8l/cIEzFnGy4dX3+tbN91gHVIfNi/q7Jwiy+dWDA1nd ZRRmDBOau4VyntctHcVLSH3yHSgP7NBFaImILMmf/WwZ/8kWCA9Tbbg+yrzGELRqFuz2EAalCSZ IN7kdns6xQuTxpQmvLnLAYf6653YeCU//DQo8IUnn6UeZ6nnAG+RTjLvaEA6sQrz5h29JbvRHYm Eur8FEj5KwRLb9WjdlXEAoyvPGSZihx9XA7C19TliTRSrVn2s83VI87FZROJMNe8IGSlCiVOJA1 XNzTrfbSBLa6+6GhhxnaLCr18G7esfIt7UXRNsCsQTGxXqPyZtkdEZ43nbMSrzM= X-Received: by 2002:a05:6122:1313:b0:567:2200:a6d6 with SMTP id 71dfb90a1353d-567cda4b676mr789263e0c.7.1771026819171; Fri, 13 Feb 2026 15:53:39 -0800 (PST) MIME-Version: 1.0 References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN> <CH3PR84MB3424F34DF6500C6704DC1B57C561A@HIDDEN> <CAN+1HboV9Rra2uRRxfs4c+U+Rhf5pWwrTREYtD=otzGTTeKipQ@HIDDEN> In-Reply-To: <CAN+1HboV9Rra2uRRxfs4c+U+Rhf5pWwrTREYtD=otzGTTeKipQ@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Fri, 13 Feb 2026 18:53:27 -0500 X-Gm-Features: AaiRm53DpqVJxv1ANTlhmsToHQk9IRvoHovN0bH0y7zeRSI83XT0MKSIdUvU6n4 Message-ID: <CAN+1Hbpks=Rh1Y9wknWG9YAhJ7KdkgxQFPZBcWWKGLfc_GS2sA@HIDDEN> Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake event package To: Morgan Smith <Morgan.J.Smith@HIDDEN> Content-Type: multipart/alternative; boundary="00000000000071c9f5064abd50e7" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80348 Cc: 80348 <at> debbugs.gnu.org, Andrew Cohen <acohen@HIDDEN>, eric@HIDDEN, Michael Albinus <michael.albinus@HIDDEN>, Daniel Mendler <mail@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) --00000000000071c9f5064abd50e7 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Feb 13, 2026 at 6:35=E2=80=AFPM St=C3=A9phane Marks <shipmints@gmai= l.com> wrote: > On Fri, Feb 13, 2026 at 5:58=E2=80=AFPM Morgan Smith <Morgan.J.Smith@outl= ook.com> > wrote: > >> St=C3=A9phane Marks <shipmints@HIDDEN> writes: >> >> > After some delay this year, I finally worked on this package inspired >> by recent >> > improvements Michael made to dbus. >> >> Hello! I've been asked to do a couple things with this package as part >> of bug#79963. >> >> I installed the latest Emacs and started playing with this package and >> I have a few notes. I have not read this bug thread so forgive me if I >> bring up old discussions again. >> >> First and most importantly, thank you so much for such a wonderful >> package! I >> can tell a lot of work went into this. The commentary at the top of the >> file >> was well written and clear enough to get me started without having to >> dive into >> the package code. I've rewritten all my of local sleep inhibit snippets >> to use >> this package and they are so much cleaner now! >> > > Glad. > > Now onto the few small warts I did find. >> > > Thank you for exercising this. > > 1. Why no autoload cookie for `system-sleep-unblock-sleep'? I would like >> one >> added. Also we could consider adding a cookie for >> `system-sleep-unblock-all-sleep-blocks' but I'm not 100% sure that's >> needed. >> > > Because why would one ever call unblock sleep without having first blocke= d > sleep? I don't mind adding more autoloads but this one is suspicious. > Under what circumstances do you want to call unblock without having first > called block? > > 2. The backend is not dbus specific but rather has two more specific >> dependencies. Systemd or elogind for delay/block, and a screensaver >> program >> for the screensaver. We do not actually check for these dependencies. > > > How and where should these dependencies be tested and for what > configurations/systems are they valid vs. the standards that freedesktop > provides for screen saver blocking that Michael implemented? > > I use >> elogind so I'm not sure what will happen on a system missing the first >> dependency but I do get errors because I don't have a screensaver progra= m >> installed. This is the error I get from running >> `(system-sleep-block-sleep)'. >> >> dbus-call-method: D-Bus error: >> "org.freedesktop.DBus.Error.ServiceUnknown", "The name >> org.freedesktop.ScreenSaver was not provided by any .service files" >> > > How about we condition-case around this and produce a warning if this wil= l > be a common thing on GNU/Linux systems? > > 3. It is interesting that you rely on >> `system-sleep--dbus-prepare-for-sleep-function' being in >> `system-sleep-event-functions' in order to maintain the delay lock. >> `system-sleep-event-functions' is a user variable that can be modified. >> I've >> seen lots of users flat out setq hook variables (mostly in the EMMS sour= ce >> code). I'm not saying this is wrong, but you are letting users shoot >> themselves in the foot. >> > > This was a concern Eli raised. I could implement an internal hook that > the event handler can call to avoid this. > I was just putting this in and found a serious issue with the hooks as is. The internal handler wasn't being called at all which means you weren't benefiting from the race handler. When I submit an update based on your feedback and testing, I'll circulate a patch with that corrected along with the internal hook --00000000000071c9f5064abd50e7 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Fri, Feb 13, 2026 at 6:35=E2=80=AFPM St=C3=A9phane Marks <<a href=3D"= mailto:shipmints@HIDDEN">shipmints@HIDDEN</a>> wrote:</span></div>= </div><div class=3D"gmail_quote gmail_quote_container"><blockquote class=3D= "gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(2= 04,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div style= =3D"font-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-= serif">On Fri, Feb 13, 2026 at 5:58=E2=80=AFPM Morgan Smith <<a href=3D"= mailto:Morgan.J.Smith@HIDDEN" target=3D"_blank">Morgan.J.Smith@outlook= .com</a>> wrote:</span></div></div><div class=3D"gmail_quote"><blockquot= e class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px s= olid rgb(204,204,204);padding-left:1ex">St=C3=A9phane Marks <<a href=3D"= mailto:shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>> w= rites:<br> <br> > After some delay this year, I finally worked on this package inspired = by recent<br> > improvements Michael made to dbus.<br> <br> Hello!=C2=A0 I've been asked to do a couple things with this package as= part<br> of bug#79963.<br> <br> I installed the latest Emacs and started playing with this package and<br> I have a few notes.=C2=A0 I have not read this bug thread so forgive me if = I<br> bring up old discussions again.<br> <br> First and most importantly, thank you so much for such a wonderful package!= =C2=A0 I<br> can tell a lot of work went into this.=C2=A0 The commentary at the top of t= he file<br> was well written and clear enough to get me started without having to dive = into<br> the package code.=C2=A0 I've rewritten all my of local sleep inhibit sn= ippets to use<br> this package and they are so much cleaner now!<br></blockquote><div><br></d= iv><div style=3D"font-family:monospace">Glad.</div><div style=3D"font-famil= y:monospace"><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0p= x 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> Now onto the few small warts I did find.<br></blockquote><div><br></div><di= v style=3D"font-family:monospace">Thank you for exercising this.</div><div = style=3D"font-family:monospace"><br></div><blockquote class=3D"gmail_quote"= style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);p= adding-left:1ex"> 1. Why no autoload cookie for `system-sleep-unblock-sleep'?=C2=A0 I wou= ld like one<br> added.=C2=A0 Also we could consider adding a cookie for<br> `system-sleep-unblock-all-sleep-blocks' but I'm not 100% sure that&= #39;s needed.<br></blockquote><div><br></div><div><div style=3D"font-family= :monospace">Because why would one ever call unblock sleep without having fi= rst blocked sleep?=C2=A0 I don't mind adding more autoloads but this on= e is suspicious.=C2=A0 Under what circumstances do you want to call unblock= without having first called block?</div></div><div style=3D"font-family:mo= nospace"><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0p= x 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> 2. The backend is not dbus specific but rather has two more specific<br> dependencies.=C2=A0 Systemd or elogind for delay/block, and a screensaver p= rogram<br> for the screensaver.=C2=A0 We do not actually check for these dependencies.= </blockquote><div><br></div><div><div style=3D"font-family:monospace">How a= nd where should these dependencies be tested and for what configurations/sy= stems are they valid vs. the standards that freedesktop provides for screen= saver blocking that Michael implemented?</div></div><div><br></div><blockq= uote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1p= x solid rgb(204,204,204);padding-left:1ex">I use<br> elogind so I'm not sure what will happen on a system missing the first<= br> dependency but I do get errors because I don't have a screensaver progr= am<br> installed. This is the error I get from running `(system-sleep-block-sleep)= '.<br> <br> dbus-call-method: D-Bus error: "org.freedesktop.DBus.Error.ServiceUnkn= own", "The name org.freedesktop.ScreenSaver was not provided by a= ny .service files"<br></blockquote><div><br></div><div><div style=3D"f= ont-family:monospace">How about we condition-case around this and produce a= warning if this will be a common=C2=A0thing on GNU/Linux systems?</div></d= iv><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px= 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> 3. It is interesting that you rely on<br> `system-sleep--dbus-prepare-for-sleep-function' being in<br> `system-sleep-event-functions' in order to maintain the delay lock.<br> `system-sleep-event-functions' is a user variable that can be modified.= =C2=A0 I've<br> seen lots of users flat out setq hook variables (mostly in the EMMS source<= br> code).=C2=A0 I'm not saying this is wrong, but you are letting users sh= oot<br> themselves in the foot.<br></blockquote><div><br></div><div><div style=3D"f= ont-family:monospace">This was a concern Eli raised.=C2=A0 I could implemen= t an internal hook that the event handler can call to avoid this.</div></di= v></div></div></blockquote><div><br></div><div><div class=3D"gmail_default"= style=3D"font-family:monospace">I was just putting this in and found a ser= ious issue with the hooks as is.=C2=A0 The internal handler wasn't bein= g called at all which means you weren't benefiting from the race handle= r.=C2=A0 When I submit an update based on your feedback and testing, I'= ll circulate a patch with that corrected along with the internal hook</div>= </div></div></div> --00000000000071c9f5064abd50e7--
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.Received: (at 80348) by debbugs.gnu.org; 13 Feb 2026 23:35:29 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Feb 13 18:35:29 2026 Received: from localhost ([127.0.0.1]:57495 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vr2h5-0002m5-VQ for submit <at> debbugs.gnu.org; Fri, 13 Feb 2026 18:35:29 -0500 Received: from mail-vs1-xe2d.google.com ([2607:f8b0:4864:20::e2d]:52466) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vr2h1-0002lm-Bj for 80348 <at> debbugs.gnu.org; Fri, 13 Feb 2026 18:35:26 -0500 Received: by mail-vs1-xe2d.google.com with SMTP id ada2fe7eead31-5fc4857e080so545363137.0 for <80348 <at> debbugs.gnu.org>; Fri, 13 Feb 2026 15:35:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771025722; cv=none; d=google.com; s=arc-20240605; b=U5ir+SPhM1nbYwRkMKmI4Qxq4AyIcykq1t7o0Hp8HXKvIMLSiS7beUyPbHYw/uBWco F9Wdrz6kd3g1co/ez6LpP7s5YYidiewRzeS3VbdD6NKa1DDoHn7Qd+ZCgk0AxhaE5TJZ xBMsFaXJVn0jRzZEPHnP5Civ8c+FANKMhtzCESH1TM1iYY7OohsHsmmdZcL5PAaR/RVU CorkCMoyLAHYmDahIQajl/Q2+rSqkoFBImjc/tX0buQbMyuYQ2AK3aV12HoeWNer90fv KTS4a/Qa9Gp72RAKGqKB9+og3BC5eiTVTvG32Jc/Q4UR5D7clgtaeQDJaSaJeoTyTWiM 3o5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=utzL1mYRwLkLWjfyng6A1JptWjg32KeB4Y/y3GPnu/c=; fh=j16YxiWPhMlhDBxShguIfQCyGYjBQmPIUozbmOEf63Q=; b=hrTHERgFezeKwPu4EoB2vP1G5QtnUW4SOkxH76M6UFCDYRe8n5jgnis1tYze4O4OTb tQgegYWJBl2DdNgU5l4fTv1NovTgUBoM91bQkPggv/vPH0PWYBvNb3siPh4Qh25posgC e5bWqsGwvBTTi3MY+WG68vqru6yNSlm5+T6ULDn4/Uxu5Lq785wJtRFdur9rUjKrMT47 Z2zMIYqw/S5bIM1CKTgXO2GHfZljo5nhYcOPC7jEUEtdxMydvl6gj3pxyv3vljRwSZa/ a2HL3fg8O6JUlxed+6tnAyi06HDPLd0w1lUxLldZdp0Bd71IvzmJ9n+7r9I6T4GY51Qs oduA==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771025722; x=1771630522; 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=utzL1mYRwLkLWjfyng6A1JptWjg32KeB4Y/y3GPnu/c=; b=Z1Prw/+Im36Y30C/VqmoI9iYUUQBP9X7npbcIDNk/RBuLs2WvfJrfsmC2ydZJSgvkD 0j+wVuOiVuQrtGHVELcXYN/cz/GEfOZnqMauGfd4AQwgK/4/4rB2fEahYGgE7V3zNbF3 XwuUK/LdaEYy9jGB0ksFET/lFPsgSiVp6GCmfZ9X7fDUsJIGP0K/dpTw2zLSw9MVBhrZ 6tsPDHbmHRQ0SwYmc9bgJ4KTsiVzeAIp3iJOnQAXSfvo9h9VoBvvg6xctjxcp6tB/yK+ E+CeyvjWbvRoi8juQ8rqShiIHfFm3S72GLXf3zFU2aoFcbQDzpn0gIT3N3KSw99AwIAP 3cxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771025722; x=1771630522; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=utzL1mYRwLkLWjfyng6A1JptWjg32KeB4Y/y3GPnu/c=; b=gf697Wo88j7x2dG09BNJTMoQmTNj+zbsf33xcYVG2ARIj3tXG1hkB1bLJUg5AbV8AI tqpvOb6eFLn+T2gWGsce6G18ajKKjUM+iBxOzRJqbrw/BsA1iM5fDgY/OOw+dk4xEW2U sSP4sH+j6Y+25QYUcEQjx7hOtG/9LSPu+qL6nuZhSij7EhEqP+1noz37TpIShnOiWMg7 Wn7klss0/8J1rpqEzMvYxsz4ixhhX4lQ/jhSXTDggt3UCkW1qlZKSQoLoMnlcFwMtwAF GzDMyWGhPieRm9t+2nOGvrGD4p1/eIPZb3xHHECdQfP/4j27RhPocS6EAOEzoIReKLxz FLLg== X-Gm-Message-State: AOJu0YwuZFA/sULlX2V0yNB3jBPLXaOzYFq3e+Uk1EWfmGvVL0rvLQTW O/S5IZqSO8nGY/ECRj7lTvAw2Hm4XuYBIr21J/LyTuQlSaslPSelvjMVRMwObctBfY7j0plMnRP BpbxF6yCjRG4vwrwBfLah162FA6945jNPzg== X-Gm-Gg: AZuq6aKGQmEr3WxjxbKJHHkcFJzVltSpwFnsPMUQnecBxqOreVfdEsqPsK1KsVnrmno MxBf6Qa59uCMjGsMxYjTe5EADMTIC+FeGcn1H6sW2N1BFSQgmjyPP4uM08d2yFz/3iwK0sWVmkM biP4KhShJMKbyz7AKrU5V2kVoMyOHukLGwHq0AbawXhRz2s51yXNV35ZSXqcXoI2lbQBVeRPC6s 6Bt4tMu6T5LDE72sP4QCuqpW3ET6pjoOgkjjE1e1XE1vwhKlRbUbFrvZK+9/RPvNkSJtO6HOaiO iia1m+0YS6mfUaLTyONYnOOSSrgSMNxOqZUztR5d/0T5H09Pb0eCSqyDxekROTUqHLJCF0KOGg= = X-Received: by 2002:a05:6102:3712:b0:5ef:a644:ca4 with SMTP id ada2fe7eead31-5fe2aed626dmr403026137.23.1771025722537; Fri, 13 Feb 2026 15:35:22 -0800 (PST) MIME-Version: 1.0 References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN> <CH3PR84MB3424F34DF6500C6704DC1B57C561A@HIDDEN> In-Reply-To: <CH3PR84MB3424F34DF6500C6704DC1B57C561A@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Fri, 13 Feb 2026 18:35:11 -0500 X-Gm-Features: AaiRm532wT8_nI7tHggI0CY6oYuZjk6ZPzlPIFWUPGvBXaBcIKchBhGVnF2cpIU Message-ID: <CAN+1HboV9Rra2uRRxfs4c+U+Rhf5pWwrTREYtD=otzGTTeKipQ@HIDDEN> Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake event package To: Morgan Smith <Morgan.J.Smith@HIDDEN> Content-Type: multipart/alternative; boundary="00000000000014788e064abd0f6a" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80348 Cc: 80348 <at> debbugs.gnu.org, Andrew Cohen <acohen@HIDDEN>, eric@HIDDEN, Michael Albinus <michael.albinus@HIDDEN>, Daniel Mendler <mail@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) --00000000000014788e064abd0f6a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Feb 13, 2026 at 5:58=E2=80=AFPM Morgan Smith <Morgan.J.Smith@outloo= k.com> wrote: > St=C3=A9phane Marks <shipmints@HIDDEN> writes: > > > After some delay this year, I finally worked on this package inspired b= y > recent > > improvements Michael made to dbus. > > Hello! I've been asked to do a couple things with this package as part > of bug#79963. > > I installed the latest Emacs and started playing with this package and > I have a few notes. I have not read this bug thread so forgive me if I > bring up old discussions again. > > First and most importantly, thank you so much for such a wonderful > package! I > can tell a lot of work went into this. The commentary at the top of the > file > was well written and clear enough to get me started without having to div= e > into > the package code. I've rewritten all my of local sleep inhibit snippets > to use > this package and they are so much cleaner now! > Glad. Now onto the few small warts I did find. > Thank you for exercising this. 1. Why no autoload cookie for `system-sleep-unblock-sleep'? I would like > one > added. Also we could consider adding a cookie for > `system-sleep-unblock-all-sleep-blocks' but I'm not 100% sure that's > needed. > Because why would one ever call unblock sleep without having first blocked sleep? I don't mind adding more autoloads but this one is suspicious. Under what circumstances do you want to call unblock without having first called block? 2. The backend is not dbus specific but rather has two more specific > dependencies. Systemd or elogind for delay/block, and a screensaver > program > for the screensaver. We do not actually check for these dependencies. How and where should these dependencies be tested and for what configurations/systems are they valid vs. the standards that freedesktop provides for screen saver blocking that Michael implemented? I use > elogind so I'm not sure what will happen on a system missing the first > dependency but I do get errors because I don't have a screensaver program > installed. This is the error I get from running > `(system-sleep-block-sleep)'. > > dbus-call-method: D-Bus error: > "org.freedesktop.DBus.Error.ServiceUnknown", "The name > org.freedesktop.ScreenSaver was not provided by any .service files" > How about we condition-case around this and produce a warning if this will be a common thing on GNU/Linux systems? 3. It is interesting that you rely on > `system-sleep--dbus-prepare-for-sleep-function' being in > `system-sleep-event-functions' in order to maintain the delay lock. > `system-sleep-event-functions' is a user variable that can be modified. > I've > seen lots of users flat out setq hook variables (mostly in the EMMS sourc= e > code). I'm not saying this is wrong, but you are letting users shoot > themselves in the foot. > This was a concern Eli raised. I could implement an internal hook that the event handler can call to avoid this. 4. I'm not a fan of the way `system-sleep-event-functions' is setup. Many > users will end up writing code similar to the code below. I think I woul= d > prefer either two separate hooks for 'pre-sleep and 'post-sleep, or simpl= y > passing the symbol directly to the function. You could also pacify my > complaints by autoloading `sleep-event-state'. > > #+begin_src lisp > ;; This also throws a spurious warning because `sleep-event-state' isn't > autoloaded > (add-hook 'system-sleep-event-functions > (lambda (sleep-event) > (when (eq 'pre-sleep (sleep-event-state sleep-event)) > (my-func)))) > #+end_src > We contemplated this and an abnormal hook seemed adequate. I tend to think that most users will co-locate their sleep/wake code in the same hook with a simple pcase or cond or if. Can you share your implementations of the two independent hooks you'd want to be called separately so we can think more on this? -St=C3=A9phane --00000000000014788e064abd0f6a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Fri, Feb 13, 2026 at 5:58=E2=80=AFPM Morgan Smith <<a href=3D"mailto:= Morgan.J.Smith@HIDDEN">Morgan.J.Smith@HIDDEN</a>> wrote:</span= ></div></div><div class=3D"gmail_quote gmail_quote_container"><blockquote c= lass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px soli= d rgb(204,204,204);padding-left:1ex">St=C3=A9phane Marks <<a href=3D"mai= lto:shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>> writ= es:<br> <br> > After some delay this year, I finally worked on this package inspired = by recent<br> > improvements Michael made to dbus.<br> <br> Hello!=C2=A0 I've been asked to do a couple things with this package as= part<br> of bug#79963.<br> <br> I installed the latest Emacs and started playing with this package and<br> I have a few notes.=C2=A0 I have not read this bug thread so forgive me if = I<br> bring up old discussions again.<br> <br> First and most importantly, thank you so much for such a wonderful package!= =C2=A0 I<br> can tell a lot of work went into this.=C2=A0 The commentary at the top of t= he file<br> was well written and clear enough to get me started without having to dive = into<br> the package code.=C2=A0 I've rewritten all my of local sleep inhibit sn= ippets to use<br> this package and they are so much cleaner now!<br></blockquote><div><br></d= iv><div class=3D"gmail_default" style=3D"font-family:monospace">Glad.</div>= <div class=3D"gmail_default" style=3D"font-family:monospace"><br></div><blo= ckquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left= :1px solid rgb(204,204,204);padding-left:1ex"> Now onto the few small warts I did find.<br></blockquote><div><br></div><di= v class=3D"gmail_default" style=3D"font-family:monospace">Thank you for exe= rcising this.</div><div class=3D"gmail_default" style=3D"font-family:monosp= ace"><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0p= x 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> 1. Why no autoload cookie for `system-sleep-unblock-sleep'?=C2=A0 I wou= ld like one<br> added.=C2=A0 Also we could consider adding a cookie for<br> `system-sleep-unblock-all-sleep-blocks' but I'm not 100% sure that&= #39;s needed.<br></blockquote><div><br></div><div><div class=3D"gmail_defau= lt" style=3D"font-family:monospace">Because why would one ever call unblock= sleep without having first blocked sleep?=C2=A0 I don't mind adding mo= re autoloads but this one is suspicious.=C2=A0 Under what circumstances do = you want to call unblock without having first called block?</div></div><div= class=3D"gmail_default" style=3D"font-family:monospace"><br></div><blockqu= ote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px= solid rgb(204,204,204);padding-left:1ex"> 2. The backend is not dbus specific but rather has two more specific<br> dependencies.=C2=A0 Systemd or elogind for delay/block, and a screensaver p= rogram<br> for the screensaver.=C2=A0 We do not actually check for these dependencies.= </blockquote><div><br></div><div><div class=3D"gmail_default" style=3D"font= -family:monospace">How and where should these dependencies be tested and fo= r what configurations/systems are they valid vs. the standards that freedes= ktop provides for screen saver blocking that Michael implemented?</div></di= v><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px = 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">I use<br= > elogind so I'm not sure what will happen on a system missing the first<= br> dependency but I do get errors because I don't have a screensaver progr= am<br> installed. This is the error I get from running `(system-sleep-block-sleep)= '.<br> <br> dbus-call-method: D-Bus error: "org.freedesktop.DBus.Error.ServiceUnkn= own", "The name org.freedesktop.ScreenSaver was not provided by a= ny .service files"<br></blockquote><div><br></div><div><div class=3D"g= mail_default" style=3D"font-family:monospace">How about we condition-case a= round this and produce a warning if this will be a common=C2=A0thing on GNU= /Linux systems?</div></div><div><br></div><blockquote class=3D"gmail_quote"= style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);p= adding-left:1ex"> 3. It is interesting that you rely on<br> `system-sleep--dbus-prepare-for-sleep-function' being in<br> `system-sleep-event-functions' in order to maintain the delay lock.<br> `system-sleep-event-functions' is a user variable that can be modified.= =C2=A0 I've<br> seen lots of users flat out setq hook variables (mostly in the EMMS source<= br> code).=C2=A0 I'm not saying this is wrong, but you are letting users sh= oot<br> themselves in the foot.<br></blockquote><div><br></div><div><div class=3D"g= mail_default" style=3D"font-family:monospace">This was a concern Eli raised= .=C2=A0 I could implement an internal hook that the event handler can call = to avoid this.</div></div><div><br></div><blockquote class=3D"gmail_quote" = style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);pa= dding-left:1ex"> 4. I'm not a fan of the way `system-sleep-event-functions' is setup= .=C2=A0 Many<br> users will end up writing code similar to the code below.=C2=A0 I think I w= ould<br> prefer either two separate hooks for 'pre-sleep and 'post-sleep, or= simply<br> passing the symbol directly to the function.=C2=A0 You could also pacify my= <br> complaints by autoloading `sleep-event-state'.<br> <br> #+begin_src lisp<br> ;; This also throws a spurious warning because `sleep-event-state' isn&= #39;t autoloaded<br> (add-hook 'system-sleep-event-functions<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (lambda (sleep-event)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (when (eq 'pre-sleep (sleep-e= vent-state sleep-event))<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (my-func))))<br> #+end_src<br></blockquote><div><br></div><div class=3D"gmail_default" style= =3D"font-family:monospace">We contemplated this and an abnormal hook seemed= adequate.=C2=A0 I tend to think that most users will co-locate their sleep= /wake code in the same hook with a simple pcase or cond or if.</div><div cl= ass=3D"gmail_default" style=3D"font-family:monospace"><br></div><div class= =3D"gmail_default" style=3D"font-family:monospace">Can you share your imple= mentations of the two independent hooks you'd want to be called separat= ely so we can think more on this?</div><div class=3D"gmail_default" style= =3D"font-family:monospace"><br></div><div class=3D"gmail_default" style=3D"= font-family:monospace">-St=C3=A9phane=C2=A0</div></div></div> --00000000000014788e064abd0f6a--
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.
Received: (at 80348) by debbugs.gnu.org; 13 Feb 2026 22:58:29 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Feb 13 17:58:29 2026
Received: from localhost ([127.0.0.1]:56741 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vr27I-0008I3-Rh
for submit <at> debbugs.gnu.org; Fri, 13 Feb 2026 17:58:29 -0500
Received: from
mail-westcentralusazolkn190100000.outbound.protection.outlook.com
([2a01:111:f403:d120::]:18545
helo=CY7PR03CU001.outbound.protection.outlook.com)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <Morgan.J.Smith@HIDDEN>)
id 1vr27F-0008Hg-In
for 80348 <at> debbugs.gnu.org; Fri, 13 Feb 2026 17:58:27 -0500
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=avbYa+Ls1woLzp6ffUdb5uBaxtlZyMZ5LKn7BSSGuLspjKgFAv3Z13MjAYHJRTHhE+xy970HjIC8kSm+UjPhEQO325AHYifSnjdiBiVzVCRCzwIlgFHiSB9kFfemrIjoOpPoeJ7sjziOXkQZqzYe/VqSfzGrQ5rOr7H3HIsoRM8918pO6v63XEyTaG5kt9ZxwVNj9NfdzQM3tXtnCiK9BFWZMgZmYhuJWh4CekVX/b+oFhHT4Cvx8baojw4J6ZMHRJ7mPbRd7vEO9SR7fzcs0P8rT7bgHHgR91NOJUStPFH3oeNVjpfgDFpdr0Gi2ZdruJNWcu4WE1TfLBDF9yUM9w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
s=arcselector10001;
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
bh=ZNmLITDpzw4eDc7FWotOwjX06OJKpBaY47BT4HjRLvI=;
b=ZlB2vcv/46O71NH0Ldd+mTSe3YVXLZzLAX3ziW/uRAZaNjsJrvdjBC/4Q3bAbtKvLC1sbdpSw3p6slzMphzRJiTEZtqWd4UV7x/+xuM8mzpyf/BZQNsT/OphMO1kqP58UjYMjPsrLYqRMOXC/wASkT4TB/qrH/64ZzUipM3CyBX3zt0d1oHY+R+YxhqeBWqeDZVKMKVPY1ij12x6MfBgcJ3iNqyHQ2dLVQRIkEM3sT9EDGxAT1Ntl1Wp7NPwKVVmjJiY5UOshmSbtmS/ggp1Z703z9Jg0nzGFPNkG19WSzj4tYYPcqrN2SjmwTS9R5V4MCG51rLFgeQqbsmhC4PJxQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none;
dkim=none; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com;
s=selector1;
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
bh=ZNmLITDpzw4eDc7FWotOwjX06OJKpBaY47BT4HjRLvI=;
b=gCGgFtAZ7Yu6dg1VYUUKBB0WczFjGqLGBeIf2p5mvcemdjfkHVEZEVBUoexHP8jB8Mnmzwnd3M/lr8PalSqfz2kftfqwshodOBneeMYQP3xxWb8Sho1yqf4SsSvXk2Ojd/oVwMJFdWRqr/Tt6xJ+QbSnWV/x2JnPBZEfTOWZKbXcwp2BWi3Z8O184lmPA3p9KUQEeq7z5KszYxXE7mkQKHYPoD73BtfxBttRKruYFC4dCsyCIyLz2B9yBG7X2iIzydUbfxoolui0hDumvTDa7mIOuaZXk5FvR6eJzcamsH+LCfggQq7aywkUeWb86h7rrP1o44Pg9kraScvwjNLceA==
Received: from CH3PR84MB3424.NAMPRD84.PROD.OUTLOOK.COM (2603:10b6:610:1c4::17)
by LV8PR84MB3607.NAMPRD84.PROD.OUTLOOK.COM (2603:10b6:408:1f9::20)
with Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.14; Fri, 13 Feb
2026 22:58:17 +0000
Received: from CH3PR84MB3424.NAMPRD84.PROD.OUTLOOK.COM
([fe80::9aca:c7a4:3341:3307]) by CH3PR84MB3424.NAMPRD84.PROD.OUTLOOK.COM
([fe80::9aca:c7a4:3341:3307%4]) with mapi id 15.20.9611.012; Fri, 13 Feb 2026
22:58:17 +0000
From: Morgan Smith <Morgan.J.Smith@HIDDEN>
To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN>
Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake
event package
In-Reply-To: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN>
References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN>
Date: Fri, 13 Feb 2026 17:58:13 -0500
Message-ID: <CH3PR84MB3424F34DF6500C6704DC1B57C561A@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-ClientProxiedBy: YT3PR01CA0082.CANPRD01.PROD.OUTLOOK.COM
(2603:10b6:b01:84::24) To CH3PR84MB3424.NAMPRD84.PROD.OUTLOOK.COM
(2603:10b6:610:1c4::17)
X-Microsoft-Original-Message-ID: <87zf5cb69m.fsf@HIDDEN>
MIME-Version: 1.0
X-MS-Exchange-MessageSentRepresentingType: 1
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH3PR84MB3424:EE_|LV8PR84MB3607:EE_
X-MS-Office365-Filtering-Correlation-Id: e5a00667-4cd7-4153-0087-08de6b536000
X-Microsoft-Antispam: BCL:0;
ARA:14566002|19110799012|8060799015|15080799012|41001999006|461199028|5072599009|23021999003|6090799003|51005399006|12121999013|440099028|3412199025|13041999003|40105399003;
X-Microsoft-Antispam-Message-Info: =?utf-8?B?amc3R0xJRXJKRS81WU1wZjlvc3pNSGxGTHkrbTkvZkFWMEdCZFBOQmpTbWF2?=
=?utf-8?B?eXZnZnNORXJBTUdJQks4UTRQMlVMcW5JUUIwTXBLc2NCM2dHampCM01TN1RU?=
=?utf-8?B?bnpIT3BWVDdiOVNCVStTNGJQNEkwMnNYRG41K0djRFJzMjZmRDl2S0I3VHU2?=
=?utf-8?B?SU9qTkcvWHV3UGxGajh5Tjc3MFR1YTJRRmExR2NGNDhuRExvMWN4VUlkSVlR?=
=?utf-8?B?cURtVnExRWRRS0hlQXZHSzQ5bjM3WTZRVmtienVtT2FOOHhBV25qTGlGYWZh?=
=?utf-8?B?WUdIVS8vNHpNcnFzeUlRc2VTVmZUakpnZlN2b2MvQUhOVk1ucEZEeFp2U3Fv?=
=?utf-8?B?cFdrL3BxekxTTkw3cmpla0ZEWTI1UXpqTmphTkpuMCtKTDFlQ1RhRW50Y3Zh?=
=?utf-8?B?MmdSa2NnQXpNVUh5L2lvbVJPTUN4ZVN4eUNXd0IyZGIvOXF1Rkh1YmRDS0ZZ?=
=?utf-8?B?MmN4OWpBTk1aY0N2SXB2cnRFU3lVUjR5dGRIZ1dkSzVSbzlEVXRWSk9qWDIr?=
=?utf-8?B?UmR1TkNMSTBzVmVSMkdaOVNVcnJhNGd0Vnh3amVDUUdBc0xCN3hjd1p5Y2NN?=
=?utf-8?B?bFZXMlVDZXNMQWFpUTg5V0FNQ2VMK0hicFlJcm40ZGdZUFhKUVBrQmxoSmMr?=
=?utf-8?B?eGJPQXoyZG4ybzB6UFNoWVhVZ25JMVgybEdvZHNBTzFLNHFTSGhwWnh5UWhs?=
=?utf-8?B?NFRwa1dFdEdhOFZKMldUeG5UTnBwNmdla09jYXNjcTZxOGQwblFtcGFPSU15?=
=?utf-8?B?QXp3czdGSFlKTnpnczNTUlhPWmgwYWRtUEoreU96cnFiQmhxTTZMOEwzdmwx?=
=?utf-8?B?djJua2VqQWFjUmdoTDhscWJzNUw1NHUzVEJLVlZERTBmU0M5ZFQxaDlvSmgv?=
=?utf-8?B?c0t1dU93MktRQ1cyRWFKdnNVNS80bVRtSmhsNXRsWE85eGlBTHFZcjRRQk9I?=
=?utf-8?B?eHBvSG1sa1crVll0aTFTNCs4QnpiQXIreDgzNVNVR3VYOTVKaFR6eWR5SmM4?=
=?utf-8?B?S1p3OGQ1VFA5RXJnbVZPNTBYZVg0VEhWaE1IbXhVUWhkbDQwMHY1eEdMSStr?=
=?utf-8?B?cFh1bm5wNGpnTkoxb21CVDhiSWZnaVVNcHptK1R5T0MrK2o1ZFFaR3JuMVc4?=
=?utf-8?B?R0c0Qm9veXNZYlkxV3ZpKzRpOFdpa0ZvdEFMbzBWSDdHM2I4ZFhjYVk4VXhK?=
=?utf-8?B?L1drZG5KLzF6bUxXdmJUN1ZmdUFxUUdsNi95UlphY01UZDVQZDc1bDNnRWk3?=
=?utf-8?B?WDl6SWtVRXBUcEZ3TnBqTkgyelZHYXdpTW43ZzZKM1FPa1AvTTlrcjM1Z25Y?=
=?utf-8?B?d0VELzFXSklNVTdZQTFCSnZ1NllWMUVwb29lbFRucVFVbXlKc1ptQTVHMWVx?=
=?utf-8?B?ZDVaUVp6OE1vM2dhYWVVdzBWUDZGeThmcHFRaE5hUFUvdXBxeTV3cHJqS29y?=
=?utf-8?B?R0ZIcU94MEpsQko1Q2J5ditwamN0ZG5rUk5mZ3ZsR2F2d0pWeFJxQzdNcUVL?=
=?utf-8?B?Q1FITWF2NVd4aE9sR3M2NmVVL0wxVjFWNWx6eVZuaUljOHB3cnNwUjExZ2sr?=
=?utf-8?B?aEN4cEJLOXZtYkd5YU4zaWV1OVNzUWxvUkpQZVJyRnVoZThJT01KV1Z3S0xJ?=
=?utf-8?B?TzRpWk4zeWlMU2hRcjBGUitybDNsV1NuUU1hSGxacFJJVEJGbk1FanNsaTdY?=
=?utf-8?B?RFRaSDh1cWlBUXBnSGtZUGF0dFJUUitZNUN4TTRMTmorTlVTZFFNMXlOS0Yr?=
=?utf-8?Q?KZRrSMlrngI1a3YjnU2ac25NAs+jY7qLb1IBGAq?=
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UVUyOWVqdkJXSkhnajhYLzBabUNXNmgvU3gvQ2F2ZHFiWTFLejRnckEyRytP?=
=?utf-8?B?ZUpxZWtXSXFzcGI2alNFYm4rV1lZdlZYSTFqZTl5Mm5NVWhEZy9yZnhSaTFa?=
=?utf-8?B?d2VMSnowb2dLU2NodStPT1h5a3RXTjRwYXBHRVBkSGhodnRQT21nazlmV2JQ?=
=?utf-8?B?K2VkWHcya0M2MlhJaHp4NEN4MEh1dzV3SlFiNS81MHVqUHNQbndENmcwT083?=
=?utf-8?B?TmxBc1I1VjdIeVhTK0JaNit1WVpDYk8vM3VHK0tVNVNBakNqR1g1OSttV0FC?=
=?utf-8?B?ekFzQjVvT0lkZmJ3bXZKZzBadXBNYlRQK3cxMmtVZm1sa0hKU29sMlFWV1hY?=
=?utf-8?B?WHM4cTJyY1ZaZ3g2SW55anpLeHpzTW5naCtWRFJmR1Y4MVlzRitLNStJQ253?=
=?utf-8?B?b2NGMDJEZ05nMS9ZMmQ4TEdMZ3hnaHkwT1FlY21IUUZlOTZxV3dQVjAyRWRV?=
=?utf-8?B?YWNSSWQxVmhxZWlNQlM1UGt5VTNVMXBzRWQwMXp6MHpDeUtXK29IOFNVaWMv?=
=?utf-8?B?ZFFaRXdQRXhxNDYzSnlNMXJucW02UWJieWJZOTErT0tmMm5nUDVXaGxyR1NS?=
=?utf-8?B?TDhoRU1XUTJZcXp2NVR3K3AyTkRNRllDeVIzN3lHbWxxbU9BeFgrS3lDTGMw?=
=?utf-8?B?MkFFODNuV1ErTytXY3RnOS9PeGJ1TDBzRWpqM0lpMEdFSlJtZnB0alFBeWw4?=
=?utf-8?B?Ykk0dndTTU9wS0gwYzFxMEM1TjJvWUR3YUh2QmduOVhlbHViNjUrY3c5T0xt?=
=?utf-8?B?cEJkRHMzVnVQMUwycDNPUllhaG9nek12QmlZd3FDRlBrYnFNRmpib2hPV0x3?=
=?utf-8?B?NWZYUVVRMnBNUG1hWHpiT0htaTEyVWJRZHFFamdYdUxWK3lpaWhGVjJFZjU0?=
=?utf-8?B?UFhwNENGYWF2YWI1QStzSVE4bENsMG1WcngvMThmcVpMdlBnay91ekVGYk5t?=
=?utf-8?B?MEhKTkd3ZHRidGw0aDlYNE1CVEpua2VteUtzZFBWeXVRV1FMSUNCUGc1cDdI?=
=?utf-8?B?Sks3dTMyWnNtUDJFeU94dDk1Z1Z1aE5wNFppNG9rTCtSQTFrSVNML3ZwYTlt?=
=?utf-8?B?bHJqYW8rM1RidVg2N3FKNnNuZDJOTU9TYjFDbzFLZ1d4OGVMY2pmcHF0MHBW?=
=?utf-8?B?MVRYRWxPWkYvZVZKVDJtZSthc2wrQkE4MUNWdEUxMXhyZkFaanRJYnA1ZzJF?=
=?utf-8?B?L0d0dWNSTDBzQTFHNkwxV2p1b3NzVHFhekhLNldyYmU2VzQySklqdkp2VkpQ?=
=?utf-8?B?QWdVUHpyTkFpRXdQUW9PdkpMb1FoaldSS0N4eGo4RFp3bmtvSUh2QWhIdFA2?=
=?utf-8?B?UEg3M3hCQ2tXVkdJcnFQbFhkb0U5OW9jUzJQcEFuUStiZWJtQUlrYnc4NmdV?=
=?utf-8?B?NkVUSlEwV2Z3ZFZGVG8yM0dOZDIrRFE0OVFuNi9obWZYcFlJQWFESjNXVzhR?=
=?utf-8?B?RTU2aXNDbnlSMGRCc1BGQWpCa2pTVmxyUlArWU9sK0NTRzlCcXFKcmFGVHls?=
=?utf-8?B?cGEvZ0hCOEtDaENERXR1SDl2VU4vY2pBOUkvbjNXTEpoQXkzMjBrYVY0ZC9U?=
=?utf-8?B?U1p2cU9zdFpBM2kwb0ZQZTlMVHNzdjZNOTVpVTJCK0JFeTQ4UDJPODJnMXRi?=
=?utf-8?B?NWhMUzFHU2dqdFU3ZHN3TFNRLzVlVGc5S0lOcWlwZGVEZ0dURVhvL2dBYmJY?=
=?utf-8?B?VmdzN2xpRU8vMXpUeTlZTEhiK2hLa3V4TUdyRGFTRXl1cjZpZTdIUExNbUlK?=
=?utf-8?B?QytNaXhsNVRSby84NVJoUWNWem9sU1dITVJ0VVJELzZXVzdDWVZDWmxudUJa?=
=?utf-8?B?dGN1NTNRUmJ6cGNHY2lqYlY5YlFYd3VvbUZ5VjdHYi9sZ1piY3JrVzlyY0VB?=
=?utf-8?B?TUY3SDEySnBpekNDTFhFWXoxUjJXMXhWbUVXTkVxRmJDek9HckF6VjhmTFcx?=
=?utf-8?Q?A9YJFAnqmk0=3D?=
X-OriginatorOrg: outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: e5a00667-4cd7-4153-0087-08de6b536000
X-MS-Exchange-CrossTenant-AuthSource: CH3PR84MB3424.NAMPRD84.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2026 22:58:17.4336 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa
X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR84MB3607
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 80348
Cc: 80348 <at> debbugs.gnu.org, Andrew Cohen <acohen@HIDDEN>,
eric@HIDDEN, Michael Albinus <michael.albinus@HIDDEN>,
Daniel Mendler <mail@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
St=C3=A9phane Marks <shipmints@HIDDEN> writes:
> After some delay this year, I finally worked on this package inspired by =
recent
> improvements Michael made to dbus.
Hello! I've been asked to do a couple things with this package as part
of bug#79963.
I installed the latest Emacs and started playing with this package and
I have a few notes. I have not read this bug thread so forgive me if I
bring up old discussions again.
First and most importantly, thank you so much for such a wonderful package!=
I
can tell a lot of work went into this. The commentary at the top of the fi=
le
was well written and clear enough to get me started without having to dive =
into
the package code. I've rewritten all my of local sleep inhibit snippets to=
use
this package and they are so much cleaner now!
Now onto the few small warts I did find.
1. Why no autoload cookie for `system-sleep-unblock-sleep'? I would like o=
ne
added. Also we could consider adding a cookie for
`system-sleep-unblock-all-sleep-blocks' but I'm not 100% sure that's needed=
.
2. The backend is not dbus specific but rather has two more specific
dependencies. Systemd or elogind for delay/block, and a screensaver progra=
m
for the screensaver. We do not actually check for these dependencies. I u=
se
elogind so I'm not sure what will happen on a system missing the first
dependency but I do get errors because I don't have a screensaver program
installed. This is the error I get from running `(system-sleep-block-sleep=
)'.
dbus-call-method: D-Bus error: "org.freedesktop.DBus.Error.ServiceUnknown",=
"The name org.freedesktop.ScreenSaver was not provided by any .service fil=
es"
3. It is interesting that you rely on
`system-sleep--dbus-prepare-for-sleep-function' being in
`system-sleep-event-functions' in order to maintain the delay lock.
`system-sleep-event-functions' is a user variable that can be modified. I'=
ve
seen lots of users flat out setq hook variables (mostly in the EMMS source
code). I'm not saying this is wrong, but you are letting users shoot
themselves in the foot.
4. I'm not a fan of the way `system-sleep-event-functions' is setup. Many
users will end up writing code similar to the code below. I think I would
prefer either two separate hooks for 'pre-sleep and 'post-sleep, or simply
passing the symbol directly to the function. You could also pacify my
complaints by autoloading `sleep-event-state'.
#+begin_src lisp
;; This also throws a spurious warning because `sleep-event-state' isn't au=
toloaded
(add-hook 'system-sleep-event-functions
(lambda (sleep-event)
(when (eq 'pre-sleep (sleep-event-state sleep-event))
(my-func))))
#+end_src
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.Received: (at 80348) by debbugs.gnu.org; 11 Feb 2026 13:34:39 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 11 08:34:39 2026 Received: from localhost ([127.0.0.1]:49518 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vqAMZ-0000sl-9s for submit <at> debbugs.gnu.org; Wed, 11 Feb 2026 08:34:39 -0500 Received: from mout.gmx.net ([212.227.15.15]:38289) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <michael.albinus@HIDDEN>) id 1vqAMW-0000ry-S3 for 80348 <at> debbugs.gnu.org; Wed, 11 Feb 2026 08:34:38 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1770816846; x=1771421646; i=michael.albinus@HIDDEN; bh=VXdlwyKChH4UFVVCilyD1EQwnOMCTEoOrY8rUrkWiMA=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date: Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=aSzW8HAZ/gcG1+86G2iTcbyehnSekF6Y000w/HkVS7bd9bd0kzHIm4ALFV/EFjM8 O2JNaDO6EKbkr7iKr3AIc5i4m3q063MxzpFcRKSX/TvJEux8/9clxqYC6o/97yGn/ 5KCg9t1LEKAwrmoRUNytNepCF9rNiA61ULIPyFtGsfXF9hdkkUyHlLIdRIFa2mlh8 2vMBoLD3VNntazUlHOf7iKc2ETClF0gF6ePshX2JJcxEge95cJ9wytW5uKn4Ltn0F wrzv1PUIFkCPSzwYBHITQnlYYw36TvvTgpjF3MzdCB14awaOEgFQ2AAcus0smgbSB 09/1NYYshilPmlmW3Q== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from gandalf.gmx.de ([185.89.39.12]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MWAOW-1wJRem2df0-00UGzT; Wed, 11 Feb 2026 14:34:06 +0100 From: Michael Albinus <michael.albinus@HIDDEN> To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN> Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake event package In-Reply-To: <CAN+1HbpqSXyP_7nbg5O=V_sZwTSZjpW7vptLOXyBE2d=RZ7+pg@HIDDEN> References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN> <CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN> <868qd4v36l.fsf@HIDDEN> <CAN+1HbqdV2oXQjXi07X8hSgX9A_nYOD+rAWHqfm2XCAfxkNtTQ@HIDDEN> <861pivvjxn.fsf@HIDDEN> <CAN+1HbotFM1WiJSaX+n9qEgDpv91Y0Eg59C0UFK2egLEFOAAxQ@HIDDEN> <CAN+1HbqnZNBHw_hzq4VQnedfw9QNhtbpWA5Yy_NGy=bHF9o8OA@HIDDEN> <87fr78ifc1.fsf@HIDDEN> <CAN+1HbrcHFNi=wPHgGdpi6bDJX=yDEhkuH-yDtoMnb6+CmokMQ@HIDDEN> <87zf5fhc78.fsf@HIDDEN> <CAN+1Hbr-D2OnLoPMiJ712BZ6v_htXRvSd7obVbzgcugu8DdVCg@HIDDEN> <87a4xfh197.fsf@HIDDEN> <CAN+1Hbp_LQRwCXEtfKc6-Q50E3K1m2-eMT0jouWi893_O2uX=A@HIDDEN> <CAN+1HbpqSXyP_7nbg5O=V_sZwTSZjpW7vptLOXyBE2d=RZ7+pg@HIDDEN> Date: Wed, 11 Feb 2026 14:34:02 +0100 Message-ID: <874innh0ad.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:JDT/ZixXQPewR4n+lTnQjlwhHL62BIWaccZIZq02Ry47KBS2oJw dNM53DHSvDAJELMZ7vbDNBdgNBJXsKw5AE0M7FjRbqFLBamLt2kLB/G3SC6Zgrmx31MS53X iTiRq2UCQcb3Zf1i27zhtsiyiJWSZpEVru4gCRsftD197VYuPJ0+syBTe7l/bCL3kOxXBXB c7W46RnzkAd9JH9ISDOjA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:TEqb8OtPPYI=;yd0u8CRVqT7oWDI0c/eJyYZekjE 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 yA76zWNQ= X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80348 Cc: acohen@HIDDEN, eric@HIDDEN, mail@HIDDEN, Morgan.J.Smith@HIDDEN, monnier@HIDDEN, 80348 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) St=C3=A9phane Marks <shipmints@HIDDEN> writes: Hi St=C3=A9phane, > Please try this one fresh from the oven. A fresh one tastes much better. Pushed. Best regards, Michael.
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.Received: (at 80348) by debbugs.gnu.org; 11 Feb 2026 13:26:33 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 11 08:26:32 2026 Received: from localhost ([127.0.0.1]:49388 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vqAEi-0000J8-FV for submit <at> debbugs.gnu.org; Wed, 11 Feb 2026 08:26:32 -0500 Received: from mail-vs1-xe35.google.com ([2607:f8b0:4864:20::e35]:44437) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vqAEf-0000Ix-Os for 80348 <at> debbugs.gnu.org; Wed, 11 Feb 2026 08:26:30 -0500 Received: by mail-vs1-xe35.google.com with SMTP id ada2fe7eead31-5fc456c3742so621539137.1 for <80348 <at> debbugs.gnu.org>; Wed, 11 Feb 2026 05:26:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770816389; cv=none; d=google.com; s=arc-20240605; b=UxAZboV1je8lfq1WGtW0o3cnWHK/gmMIJVOm4QdemgLW1fQVZMrXo9jIOJIz3XxXYy 4vjjNIE+g3qNP8uoKR2FJ/CtWWLEtwHxN9vf7DtkMc2HB6+M2gtNcnCNdXBaSZtKJir7 1vMnGrRK3YSB7bMOZwxOKmO2VQBKS1AuLudEjqNT9VmNj0bi5hk2VWDOXSGvc5fPaP8F 4+B8SUqSe35a0kPj/FxE+T1HUk5DgN5pzuVZu5OgrdFA451qJ1WzuQoWwA9+xLwumF5R B/gDl2fElEgMAmaOvCaVtpreJ5dqqd4hpvbSAWISzEUSRkZuAT2de555tbFVQmoSKgZ+ i/tw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=OPk+M0MZqlTUiycbH0IAqDMpeLugVKGy1gbJKeicb18=; fh=y86q+Vqgk00vUYBLhi+KyyTT+f84skB6FC/cGuI0wW8=; b=JetGXjxhZFZJoh5OEQgomIlcQdYfsl4Arbk8aOoD/50cgX8gkIfVYUl2T4R7Gs55vX jzhcF1LtCeSPuRhWvtvYwTqR1rFbMFcOuI1HmSv3v/7FJz8ENBExaPyHGfQUwtdobuDw GX7ghNpCaTd9rCPWr/kRS7IJb/f9Pj2BvxqC2r57HHwYKJXx6yvtS82Gs3M3efq0BSaC jwEfEXiHcmAjLdwIH5+gxOAdWaYBVTZ54TV6D4ZyvnBnW/bqc3/pUl0gC4GRbkvhzmWj NkGlYSwkZiF7D5dspgFZ/7tdrprukPoMDH9CqSKC1j6GpTZg8/35XAjE3xa3xAU3xdye cvWA==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770816389; x=1771421189; 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=OPk+M0MZqlTUiycbH0IAqDMpeLugVKGy1gbJKeicb18=; b=gvb/pARseh4mCdB2ImQTSuP5g18+VGLZjXD1b7nr7XE+4Di8HmhV5VmWtMonCggWTk lzClqD4WKypLoRtAla/qOqNmaC/id1lKGW4MaHI0D2JiKBr6aKZ01LEyqWA4rRr540de g2kg7mg83lmxWU6H5zLwTFh4z72osi1DD2dhREfJkm8fSrGILT6y4KQlDNAAbTqIUbEO S41BdvkHE0tT1Kl1Vd+4PA7Zj5NJq5Rlzkop1b0cLiaI66Mg1rlo2CP1t7c1eM5+agXd 4FGTIlMso06PtHzDrSKbrB2eYC40AcAMAskHe525bCeHi3SDqO260JxPCHnuoUKDFDiI Vy4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770816389; x=1771421189; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=OPk+M0MZqlTUiycbH0IAqDMpeLugVKGy1gbJKeicb18=; b=Sew3wnjvos9+FWHuVBkCKmW6r3+g7PrzcmgptslyZ++ivBxuoxYo+7JOORSGGW7vcp t5x0dgQ1TgXlFYggdIBbvXE36wDVAgFD78U4KMscLpkJG5Igxgel45AIZHbcyWNslHqu njAdin9/OE6peqxO2Ww9QOGki1VH21SpfxmCtf6y7GJndhOQt6uufiZ+InQVc1CZQonq q5hoJ+r/xDFxReDEAvdVQDSEYZoxdmabBDyPv8DjJ6i5rzgc1wsE2mCoA96dvybwQJuq kFfumU56n8G84NgED3Ayo7xGiupf2OqXOni6/x04rYDswOpqfzxDOf4lczw82LxTGBYf iS5A== X-Forwarded-Encrypted: i=1; AJvYcCXwEtyQVszQVZYMz5d4CURiKake5h5vTd5ESVirhhhFj09T0i4CpDHvsxtSNf/PfihI+g25TQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yy3V9xpz3qp3oEmkyj4dZtfhp5/OM/goPj1A698J/MTJJfPX2Ne pJhf+4LNe5xeYwnb44bnlORwfs8RmYrTQStd0X/Hb3pcVn6BADQAKWGoz9cIctTaOCFZdhLLlXu 7niVeGybla80xUpniFG3umZht92Yd+y4= X-Gm-Gg: AZuq6aLGJfV/XsCbDb/BA5WRAbRW12HjO5ykjI8cfMAk6UNTG8mnyQb+ctlOH5+wVeo gZWoOBCBJLhns2XnEgn6bzn1/LkVWRrO3FjSCh4Vn5fKZDPNFpfQNezfikhBJv/hlD5vmCya6+h fCKA9Trg95PtW3T6pfXRpen4hXc1cq0+piHjwcUv9ZmkB4UgpPpBSmmlZPlrFTUPb13YMguzBP0 wAKTL3P+tN84ysfveWwA3Lh4HNeQsAWiBk2vtYnqh76FyJ0PBWZ2tgVNecxRnhJFJGEN62frsMs kT+gprgEY2aHpJ/reDOWADRhEt+98qSIcan4ZFa3Xb4jZpbqVJ9twmB5HBEnJSg= X-Received: by 2002:a05:6102:26c2:b0:5f1:51b1:480 with SMTP id ada2fe7eead31-5fde906376fmr457322137.8.1770816389026; Wed, 11 Feb 2026 05:26:29 -0800 (PST) MIME-Version: 1.0 References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN> <CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN> <868qd4v36l.fsf@HIDDEN> <CAN+1HbqdV2oXQjXi07X8hSgX9A_nYOD+rAWHqfm2XCAfxkNtTQ@HIDDEN> <861pivvjxn.fsf@HIDDEN> <CAN+1HbotFM1WiJSaX+n9qEgDpv91Y0Eg59C0UFK2egLEFOAAxQ@HIDDEN> <CAN+1HbqnZNBHw_hzq4VQnedfw9QNhtbpWA5Yy_NGy=bHF9o8OA@HIDDEN> <87fr78ifc1.fsf@HIDDEN> <CAN+1HbrcHFNi=wPHgGdpi6bDJX=yDEhkuH-yDtoMnb6+CmokMQ@HIDDEN> <87zf5fhc78.fsf@HIDDEN> <CAN+1Hbr-D2OnLoPMiJ712BZ6v_htXRvSd7obVbzgcugu8DdVCg@HIDDEN> <87a4xfh197.fsf@HIDDEN> <CAN+1Hbp_LQRwCXEtfKc6-Q50E3K1m2-eMT0jouWi893_O2uX=A@HIDDEN> In-Reply-To: <CAN+1Hbp_LQRwCXEtfKc6-Q50E3K1m2-eMT0jouWi893_O2uX=A@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Wed, 11 Feb 2026 08:26:17 -0500 X-Gm-Features: AZwV_Qi2ycLws1VdK6R-b-QozUS-JPJQZpwfemMS1i6YY25PI52FkflGV1Y1-CE Message-ID: <CAN+1HbpqSXyP_7nbg5O=V_sZwTSZjpW7vptLOXyBE2d=RZ7+pg@HIDDEN> Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake event package To: Michael Albinus <michael.albinus@HIDDEN> Content-Type: multipart/mixed; boundary="000000000000d4b469064a8c5179" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80348 Cc: acohen@HIDDEN, eric@HIDDEN, mail@HIDDEN, Morgan.J.Smith@HIDDEN, monnier@HIDDEN, 80348 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) --000000000000d4b469064a8c5179 Content-Type: multipart/alternative; boundary="000000000000d4b467064a8c5177" --000000000000d4b467064a8c5177 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Feb 11, 2026 at 8:21=E2=80=AFAM St=C3=A9phane Marks <shipmints@gmai= l.com> wrote: > On Wed, Feb 11, 2026 at 8:14=E2=80=AFAM Michael Albinus <michael.albinus@= gmx.de> > wrote: > >> St=C3=A9phane Marks <shipmints@HIDDEN> writes: >> >> Hi St=C3=A9phane, >> >> > Attached is a quick follow-up patch to fix two texi markup issues. >> >> Could you, pls, rebase? It fails with >> >> --8<---------------cut here---------------start------------->8--- >> # git am ~/0001-system-sleep-texi-markup-fix-bug-80348.patch >> Applying: ; system-sleep texi markup fix (bug#80348) >> error: patch failed: doc/lispref/os.texi:3507 >> error: doc/lispref/os.texi: patch does not apply >> Patch failed at 0001 ; system-sleep texi markup fix (bug#80348) >> hint: Use 'git am --show-current-patch=3Ddiff' to see the failed patch >> hint: When you have resolved this problem, run "git am --continue". >> hint: If you prefer to skip this patch, run "git am --skip" instead. >> hint: To restore the original branch and stop patching, run "git am >> --abort". >> hint: Disable this message with "git config set advice.mergeConflict >> false" >> --8<---------------cut here---------------end--------------->8--- >> >> > -St=C3=A9phane >> >> Best regards, Michael. >> > > Huh that patch was produced from this morning's master as of 37891d1. > Please try this one fresh from the oven. --000000000000d4b467064a8c5177 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Wed, Feb 11, 2026 at 8:21=E2=80=AFAM St=C3=A9phane Marks <<a href=3D"= mailto:shipmints@HIDDEN">shipmints@HIDDEN</a>> wrote:</span></div>= </div><div class=3D"gmail_quote gmail_quote_container"><blockquote class=3D= "gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(2= 04,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div style= =3D"font-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-= serif">On Wed, Feb 11, 2026 at 8:14=E2=80=AFAM Michael Albinus <<a href= =3D"mailto:michael.albinus@HIDDEN" target=3D"_blank">michael.albinus@HIDDEN= </a>> wrote:</span></div></div><div class=3D"gmail_quote"><blockquote cl= ass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid= rgb(204,204,204);padding-left:1ex">St=C3=A9phane Marks <<a href=3D"mail= to:shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>> write= s:<br> <br> Hi St=C3=A9phane,<br> <br> > Attached is a quick follow-up patch to fix two texi markup issues.<br> <br> Could you, pls, rebase? It fails with<br> <br> --8<---------------cut here---------------start------------->8---<br> # git am ~/0001-system-sleep-texi-markup-fix-bug-80348.patch<br> Applying: ; system-sleep texi markup fix (bug#80348)<br> error: patch failed: doc/lispref/os.texi:3507<br> error: doc/lispref/os.texi: patch does not apply<br> Patch failed at 0001 ; system-sleep texi markup fix (bug#80348)<br> hint: Use 'git am --show-current-patch=3Ddiff' to see the failed pa= tch<br> hint: When you have resolved this problem, run "git am --continue"= ;.<br> hint: If you prefer to skip this patch, run "git am --skip" inste= ad.<br> hint: To restore the original branch and stop patching, run "git am --= abort".<br> hint: Disable this message with "git config set advice.mergeConflict f= alse"<br> --8<---------------cut here---------------end--------------->8---<br> <br> > -St=C3=A9phane <br> <br> Best regards, Michael.<br></blockquote><div><br></div><div style=3D"font-fa= mily:monospace">Huh that patch was produced from this morning's master = as of=C2=A037891d1.</div></div></div></blockquote><div><br></div><div class= =3D"gmail_default" style=3D"font-family:monospace">Please try this one fres= h from the oven.</div></div></div> --000000000000d4b467064a8c5177-- --000000000000d4b469064a8c5179 Content-Type: application/octet-stream; name="0001-system-sleep-texi-markup-fix-bug-80348.patch" Content-Disposition: attachment; filename="0001-system-sleep-texi-markup-fix-bug-80348.patch" Content-Transfer-Encoding: base64 Content-ID: <f_mli2c96g0> X-Attachment-Id: f_mli2c96g0 RnJvbSA1ZGRkNWY3YTZjODJlMzc2YmI0MWY0MDk2ZDdhNmQxNDhkZTdiY2MxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgMTEgRmViIDIwMjYgMDg6MjQ6NDMgLTA1MDAK U3ViamVjdDogW1BBVENIXSA7IHN5c3RlbS1zbGVlcCB0ZXhpIG1hcmt1cCBmaXggKGJ1ZyM4MDM0 OCkKCiogZG9jL2xpc3ByZWYvb3MudGV4aSAoU3lzdGVtIFNsZWVwKTogTWlub3IgbWFya3VwIGZp eGVzLgotLS0KIGRvYy9saXNwcmVmL29zLnRleGkgfCAxMCArKysrKy0tLS0tCiAxIGZpbGUgY2hh bmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9s aXNwcmVmL29zLnRleGkgYi9kb2MvbGlzcHJlZi9vcy50ZXhpCmluZGV4IDZjMTU1YzNiYTY1Li5j Y2MwZjY5YTEyZCAxMDA2NDQKLS0tIGEvZG9jL2xpc3ByZWYvb3MudGV4aQorKysgYi9kb2MvbGlz cHJlZi9vcy50ZXhpCkBAIC0zNTA3LDEyICszNTA3LDEyIEBAIFN5c3RlbSBTbGVlcAogc2xlZXAg YmxvY2tzIG1heSBiZSBzaW11bHRhbmVvdXNseSBpbiBmb3JjZSBmb3Igb3RoZXIgcHVycG9zZXMp LgogT3RoZXJ3aXNlLCBpdCByZXR1cm5zIEBjb2Rle25pbH0gaWYgdGhlIHNsZWVwIGJsb2NraW5n IGZhaWxzLgogCi1AdmFye3doeX0gaXMgYSBzdHJpbmcgYW5kLCB3aGVuIG5vbi1uaWwsIGlzIHVz ZWQgdG8gaWRlbnRpZnkgdGhlIHNsZWVwCi1ibG9jayBhcyBpdCBtYXkgYXBwZWFyIG9uIHRoZSBz eXN0ZW0ncyBpbnNwZWN0YWJsZSBibG9jayBsaXN0cy4gIEl0Ci1kZWZhdWx0cyB0byBAc2FtcHtF bWFjc30uCitAdmFye3doeX0gaXMgYSBzdHJpbmcgYW5kLCB3aGVuIG5vbi1AY29kZXtuaWx9LCBp cyB1c2VkIHRvIGlkZW50aWZ5IHRoZQorc2xlZXAgYmxvY2sgYXMgaXQgbWF5IGFwcGVhciBvbiB0 aGUgc3lzdGVtJ3MgaW5zcGVjdGFibGUgYmxvY2sgbGlzdHMuCitJdCBkZWZhdWx0cyB0byBAc2Ft cHtFbWFjc30uCiAKLUlmIEB2YXJ7YWxsb3ctZGlzcGxheS1zbGVlcH0gaXMgbm9uLW5pbCwgYWxs b3cgdGhlIGRpc3BsYXkgdG8gc2xlZXAuICBCeQotZGVmYXVsdCwgdGhlIGRpc3BsYXkgaXMga2Vw dCBhY3RpdmUuCitJZiBAdmFye2FsbG93LWRpc3BsYXktc2xlZXB9IGlzIG5vbi1AY29kZXtuaWx9 LCBhbGxvdyB0aGUgZGlzcGxheSB0bworc2xlZXAuICBCeSBkZWZhdWx0LCB0aGUgZGlzcGxheSBp cyBrZXB0IGFjdGl2ZS4KIAogTm90ZSB0aGF0IHdoZW4gdGhlIEVtYWNzIHByb2Nlc3MgdGVybWlu YXRlcywgYmxvY2tzIGFyZSByZWxlYXNlZCBvbiBhbGwKIHBsYXRmb3Jtcy4KLS0gCjIuNTIuMAoK --000000000000d4b469064a8c5179--
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.Received: (at 80348) by debbugs.gnu.org; 11 Feb 2026 13:22:01 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 11 08:22:01 2026 Received: from localhost ([127.0.0.1]:49278 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vqAAL-0008OU-Ar for submit <at> debbugs.gnu.org; Wed, 11 Feb 2026 08:22:01 -0500 Received: from mail-vk1-xa2e.google.com ([2607:f8b0:4864:20::a2e]:44386) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vqAAJ-0008OE-8q for 80348 <at> debbugs.gnu.org; Wed, 11 Feb 2026 08:21:59 -0500 Received: by mail-vk1-xa2e.google.com with SMTP id 71dfb90a1353d-5664634a27fso2130792e0c.1 for <80348 <at> debbugs.gnu.org>; Wed, 11 Feb 2026 05:21:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770816118; cv=none; d=google.com; s=arc-20240605; b=bD0gOFM0/HAnTAHxy+yyQ4ReoNOx98FL5WpMolCj4Eja302SaxRC/JPnzdT5zsdhHn PGLiOUGSxdGUD2Mqxdy5IkP8dgCtBrkZnSQYKvNU5OKyr0J+LsIrLkBDML1yWDCG3cFH MXPb1R87EEIIJNwzxN1ehslAUtsETwawSi3TAvLt6Ln0DuoGzkIp/XSKd3Y+cKbXvVvb gstbAM2tddiFZu+7HJLbx+rodjlL6tewzWWmy+HOZVH152R3y6wXfdxocoICFAiSlmyB Em1OXd+6WG2bwrOYcZRjqZ9UUzX0ujDmwSGoaapjER9rRym5jCMvC4uGDecmVlVQ9r2E u0RA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=JOnE+K4H1UflvCa+aGjkGevxK/H1rgPt7U9F3c8L/F0=; fh=2BJ7ZW+qdDiGY2N2MgH7BkhYF9UoJvFnq895QHfjBIo=; b=RRLVG8npa/FET5a1bzsplm7zBuM7aefiZ0dwsOukP3fkBw3JumSwQiMuNYHboIcEO9 WFIbWwQyXHCs2TiNnA0dqdZYrUHhRMFkXmiw1byLvGZJidNI0Hpuh58WuW5RHIDFUpC+ XOZPOXQdeYl7f0RFGU2FdqKtKL0l3JJ2tzaoCHwYck7Dd/KiTEa2Ly7UBodSPwzuu8Ai OTu1XrgjJ1+O8D+G4dq7EVYrGoaRPCyghZsckZtO3MIxIhxMPzUgZhLWA30hVdV2mnIL 9s/2Sv1jlZeqF2OZl2Tb+Q81l45fh/TnNgT2T5Kgtv4jRHgxehX3I1gkIXOx39827X7L 8Y8Q==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770816118; x=1771420918; 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=JOnE+K4H1UflvCa+aGjkGevxK/H1rgPt7U9F3c8L/F0=; b=dwJLD6ljJ7Hs6G9N7GKBX5eFrvGOxg76izD9Dsvt8gl7SiiMnpQWhxRsCl1pWjsKm5 dKTlcyqEMW6vY3BI7jNsRMs1Qhz2DlQK4SEHgGR/upcpihQ/cahja8tcGPbEuZDa55lQ GyuIGkHaPhCf2rAYXJvYEgCITnyomfrC3fzeWI6mQVi6ATw5AyenqxPwdVP3tFEJev6/ f+K35zwogQpBE5yMimJufolAs6r6/GVEXR+UmPl6URi6ZufSvNnwobhnlaIEzZF3liyg fl3lyDqKvDWJt9jZiLx2mlQxLBclHGZB3JJRN7Hwp9uRHWyKV16caX0FDo0Tjzd6god1 txjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770816118; x=1771420918; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=JOnE+K4H1UflvCa+aGjkGevxK/H1rgPt7U9F3c8L/F0=; b=QjBq2zeMcdOYLaXtFrMl9ckhX7rPeWTvvXkeIwOQNHgzMcQyIqZZeQE/alps3p0VbQ EEw/4wFno3/BXhBT8turaGDOb3GTk8ftfxgGmBKr2fFD7ZioJ8ny1Io7zpkxHyfK3Er7 NYIkDeGJwvro/iQiw03hEj8FkazKqP3UGNzmY1uNdkAjpIe9gWjKbL7kTY+vU2rMXZz2 eTNGsBowBgtlDRzrg+yoOfLB9WvWy+qPy2aiy0mlPOgH5LQ3EbEQYM5YKhpqZbCSO1l9 nbtFyEQNWpagzJM/f/LtQvafbW+5K8kzamPa6zY+QBdnNXFTMYK0uwxetsXrB5Bfcfu+ WrMg== X-Forwarded-Encrypted: i=1; AJvYcCWJbJljfoBhldJ4VcgYLhOVgHxXWluVfVct4m8IN5IQHS9szHTC1iICLGpQb1wyRnG9ppKBfA==@debbugs.gnu.org X-Gm-Message-State: AOJu0YzuGJg+5mo6cxzJ5S2aq/1HqV7bVGgKsJk+HcjcyEJGl/SEb3rA VOUToR3rQQYbU5Oup2exC9Bt1ubI8t62wN35/Ucv7VDI+amJW6LLbJNwMdOFXpNuZFcDcAl77Be Oo9eRy37ylgordT2Za5gXA+xjrBuCuaA= X-Gm-Gg: AZuq6aKOaP6JDzl3Fkwa1N689y7Z+iZJK9CASb/FmRiYBsgb7nZGOVcT0alqkYu6wvF Ta73RvW8KF68d4JOIG9GyTzDbT57SDmgQBIetYFcxYitS6M9DYQJ5ytTtS/9voOBNnC7d2ZVsJQ csP+8JtU3GBRTj54ELrUOqNHYw7JCZGk0bU33yC1IL1ncjqGVK/13sAAP7qY13XmcsHKZ9LyLcI WZaPT9IYXIA8tH45KzbkbIh1sOUGKI66bhSK3Dto91kL2RlfrLtSaSAPAV78aWEmH+pcIbiwG00 OdRsItPTIxkYvtLNjnJ/s04HO9RHEE8+r6tPJMQUYnDNcdLqEcXuWmvTZc66GdDkI1VrN7oGLQ= = X-Received: by 2002:a05:6102:50a1:b0:5f5:7791:c2cb with SMTP id ada2fe7eead31-5fde981beb1mr441999137.41.1770816118267; Wed, 11 Feb 2026 05:21:58 -0800 (PST) MIME-Version: 1.0 References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN> <CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN> <868qd4v36l.fsf@HIDDEN> <CAN+1HbqdV2oXQjXi07X8hSgX9A_nYOD+rAWHqfm2XCAfxkNtTQ@HIDDEN> <861pivvjxn.fsf@HIDDEN> <CAN+1HbotFM1WiJSaX+n9qEgDpv91Y0Eg59C0UFK2egLEFOAAxQ@HIDDEN> <CAN+1HbqnZNBHw_hzq4VQnedfw9QNhtbpWA5Yy_NGy=bHF9o8OA@HIDDEN> <87fr78ifc1.fsf@HIDDEN> <CAN+1HbrcHFNi=wPHgGdpi6bDJX=yDEhkuH-yDtoMnb6+CmokMQ@HIDDEN> <87zf5fhc78.fsf@HIDDEN> <CAN+1Hbr-D2OnLoPMiJ712BZ6v_htXRvSd7obVbzgcugu8DdVCg@HIDDEN> <87a4xfh197.fsf@HIDDEN> In-Reply-To: <87a4xfh197.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Wed, 11 Feb 2026 08:21:47 -0500 X-Gm-Features: AZwV_QhrHte3M6zxwr1Stu70GA2DfEbvcb-o9KsKiyziDB7-asgforGzrT2Vqps Message-ID: <CAN+1Hbp_LQRwCXEtfKc6-Q50E3K1m2-eMT0jouWi893_O2uX=A@HIDDEN> Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake event package To: Michael Albinus <michael.albinus@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000b12441064a8c41e1" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80348 Cc: acohen@HIDDEN, eric@HIDDEN, mail@HIDDEN, Morgan.J.Smith@HIDDEN, monnier@HIDDEN, 80348 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) --000000000000b12441064a8c41e1 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Feb 11, 2026 at 8:14=E2=80=AFAM Michael Albinus <michael.albinus@gm= x.de> wrote: > St=C3=A9phane Marks <shipmints@HIDDEN> writes: > > Hi St=C3=A9phane, > > > Attached is a quick follow-up patch to fix two texi markup issues. > > Could you, pls, rebase? It fails with > > --8<---------------cut here---------------start------------->8--- > # git am ~/0001-system-sleep-texi-markup-fix-bug-80348.patch > Applying: ; system-sleep texi markup fix (bug#80348) > error: patch failed: doc/lispref/os.texi:3507 > error: doc/lispref/os.texi: patch does not apply > Patch failed at 0001 ; system-sleep texi markup fix (bug#80348) > hint: Use 'git am --show-current-patch=3Ddiff' to see the failed patch > hint: When you have resolved this problem, run "git am --continue". > hint: If you prefer to skip this patch, run "git am --skip" instead. > hint: To restore the original branch and stop patching, run "git am > --abort". > hint: Disable this message with "git config set advice.mergeConflict fals= e" > --8<---------------cut here---------------end--------------->8--- > > > -St=C3=A9phane > > Best regards, Michael. > Huh that patch was produced from this morning's master as of 37891d1. --000000000000b12441064a8c41e1 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Wed, Feb 11, 2026 at 8:14=E2=80=AFAM Michael Albinus <<a href=3D"mail= to:michael.albinus@HIDDEN">michael.albinus@HIDDEN</a>> wrote:</span></di= v></div><div class=3D"gmail_quote gmail_quote_container"><blockquote class= =3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg= b(204,204,204);padding-left:1ex">St=C3=A9phane Marks <<a href=3D"mailto:= shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>> writes:<= br> <br> Hi St=C3=A9phane,<br> <br> > Attached is a quick follow-up patch to fix two texi markup issues.<br> <br> Could you, pls, rebase? It fails with<br> <br> --8<---------------cut here---------------start------------->8---<br> # git am ~/0001-system-sleep-texi-markup-fix-bug-80348.patch<br> Applying: ; system-sleep texi markup fix (bug#80348)<br> error: patch failed: doc/lispref/os.texi:3507<br> error: doc/lispref/os.texi: patch does not apply<br> Patch failed at 0001 ; system-sleep texi markup fix (bug#80348)<br> hint: Use 'git am --show-current-patch=3Ddiff' to see the failed pa= tch<br> hint: When you have resolved this problem, run "git am --continue"= ;.<br> hint: If you prefer to skip this patch, run "git am --skip" inste= ad.<br> hint: To restore the original branch and stop patching, run "git am --= abort".<br> hint: Disable this message with "git config set advice.mergeConflict f= alse"<br> --8<---------------cut here---------------end--------------->8---<br> <br> > -St=C3=A9phane <br> <br> Best regards, Michael.<br></blockquote><div><br></div><div class=3D"gmail_d= efault" style=3D"font-family:monospace">Huh that patch was produced from th= is morning's master as of=C2=A037891d1.</div></div></div> --000000000000b12441064a8c41e1--
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.Received: (at 80348) by debbugs.gnu.org; 11 Feb 2026 13:13:23 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 11 08:13:23 2026 Received: from localhost ([127.0.0.1]:49101 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vqA1z-0007gW-6O for submit <at> debbugs.gnu.org; Wed, 11 Feb 2026 08:13:23 -0500 Received: from mout.gmx.net ([212.227.17.21]:49181) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <michael.albinus@HIDDEN>) id 1vqA1w-0007gE-G7 for 80348 <at> debbugs.gnu.org; Wed, 11 Feb 2026 08:13:22 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1770815594; x=1771420394; i=michael.albinus@HIDDEN; bh=SWzQeWg9ZLdQGuQrhaAeZHpMWOhXAieyegmB/zgyH+c=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date: Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=a9HbwBtO0slJsxFaz3yky9LG8bNSyW+yDIzQxioddqwx6tG1EOvRBtq338je1Fml BkUrAgRKBSKIIgoQPY6fTHJVqVEdmUj2vsIhXsRxPF7bErlrHeCoYObnhKU0KOewt eR93CQPivNaP5juXNM1eT7R/ILCeKUynsX0uHgELnWk7JxBCevZWMXG7KHkcpb1R3 mlMGTVCODnklCS2DNxA6d9LyRQa9Wt9X9g15b0aXUHIbNJ6ejwoOHLboqiu7a/dca iGMnoKh7CHcxbbq8lcWZyyt4fthSCtJ1Pc/5uiCzGSTqh6KGGknwFefrDtNnOm/7a XFWdKOg8ED21hhazpw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from gandalf.gmx.de ([185.89.39.12]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MBm1U-1vvhvZ3t9w-008IHF; Wed, 11 Feb 2026 14:13:14 +0100 From: Michael Albinus <michael.albinus@HIDDEN> To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN> Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake event package In-Reply-To: <CAN+1Hbr-D2OnLoPMiJ712BZ6v_htXRvSd7obVbzgcugu8DdVCg@HIDDEN> References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN> <CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN> <868qd4v36l.fsf@HIDDEN> <CAN+1HbqdV2oXQjXi07X8hSgX9A_nYOD+rAWHqfm2XCAfxkNtTQ@HIDDEN> <861pivvjxn.fsf@HIDDEN> <CAN+1HbotFM1WiJSaX+n9qEgDpv91Y0Eg59C0UFK2egLEFOAAxQ@HIDDEN> <CAN+1HbqnZNBHw_hzq4VQnedfw9QNhtbpWA5Yy_NGy=bHF9o8OA@HIDDEN> <87fr78ifc1.fsf@HIDDEN> <CAN+1HbrcHFNi=wPHgGdpi6bDJX=yDEhkuH-yDtoMnb6+CmokMQ@HIDDEN> <87zf5fhc78.fsf@HIDDEN> <CAN+1Hbr-D2OnLoPMiJ712BZ6v_htXRvSd7obVbzgcugu8DdVCg@HIDDEN> Date: Wed, 11 Feb 2026 14:13:08 +0100 Message-ID: <87a4xfh197.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:Uqd3X66aHv1+B0FVKAtudkP2BCAcaD9ccljpNzwzIXTRJeXM0fU jaZ100QhbG61Jykpjnr0qGTHA/wxz7+N0LgAeVKkjvpph+zgQ4GIuiXtf1fpqdl/MFVnEYf g5KNq4uUECTdrr1nAtPSmsvuHHeLq90oZtYGntfNVImUr5Z+JFzbtUgN0QzP9KxX1/Qu78Y Wg2nDE3a1ZVlfExGBYeyw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:dC1DgO15Ibk=;HP4u2HR0VD6cPT5dJT+JBFCW9x3 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 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80348 Cc: acohen@HIDDEN, eric@HIDDEN, mail@HIDDEN, Morgan.J.Smith@HIDDEN, monnier@HIDDEN, 80348 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) St=C3=A9phane Marks <shipmints@HIDDEN> writes: Hi St=C3=A9phane, > Attached is a quick follow-up patch to fix two texi markup issues. Could you, pls, rebase? It fails with --8<---------------cut here---------------start------------->8--- # git am ~/0001-system-sleep-texi-markup-fix-bug-80348.patch Applying: ; system-sleep texi markup fix (bug#80348) error: patch failed: doc/lispref/os.texi:3507 error: doc/lispref/os.texi: patch does not apply Patch failed at 0001 ; system-sleep texi markup fix (bug#80348) hint: Use 'git am --show-current-patch=3Ddiff' to see the failed patch hint: When you have resolved this problem, run "git am --continue". hint: If you prefer to skip this patch, run "git am --skip" instead. hint: To restore the original branch and stop patching, run "git am --abort= ". hint: Disable this message with "git config set advice.mergeConflict false" --8<---------------cut here---------------end--------------->8--- > -St=C3=A9phane=20 Best regards, Michael.
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.Received: (at 80348) by debbugs.gnu.org; 11 Feb 2026 12:46:41 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 11 07:46:41 2026 Received: from localhost ([127.0.0.1]:48566 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vq9c8-0005Yj-Qc for submit <at> debbugs.gnu.org; Wed, 11 Feb 2026 07:46:41 -0500 Received: from mail-ua1-x936.google.com ([2607:f8b0:4864:20::936]:53296) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vq9c7-0005YV-01 for 80348 <at> debbugs.gnu.org; Wed, 11 Feb 2026 07:46:39 -0500 Received: by mail-ua1-x936.google.com with SMTP id a1e0cc1a2514c-948a378b9deso1257120241.2 for <80348 <at> debbugs.gnu.org>; Wed, 11 Feb 2026 04:46:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770813998; cv=none; d=google.com; s=arc-20240605; b=IU4WS7LfPlvImkvK7GhQPXYkNyexObsX80DnpGF1T8fwGzWCvQtkyXEBmfJ2Pgp/eP mlyJV5mNqfVg+GHZ5b1W8YRWFf1oopoIT70vcNejgyVuffbVCQG5WhjasF+hXfZ2SeJv rPh+ye0ydOZwbptvceM6Yk7aXREXTlH7o48E+CcX/Zto9HVIkDYGRUmNmCzH5aNT1bUs wOQMKmN744OgCA6ZRnj9GhMMg1zDLFiqpfXbqbVzysXRL5Yvlg4fYErnvHDd7zoG7sO0 4vL7zvXtnu8M8Run01I6CvZ5fDzUNNR8cXxgBt3FWtntco7pDXRdS+MlC03dVYwZ9pFl I4hQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=GThEKWulS22VGZJCdhN0WhgRAcdwG9+07B4s+VVP7rg=; fh=KqLPSITrhtGtwd9BbxECSbkWFNfr56rOo7XW6x4UBrc=; b=Z29siOtUebL2imsAkEDC3Ph18zvzLHdN1t+Np75rNHowBgd+k73yBQRSGAdz4pAlF1 3d73/YCRbPOwjKRaXGvMM+9Xp1ucHNWIslOV1RZhMn+kIY/BRGakgdOYEUg4gNzFQA6h WeWQDm/ckUzcgiA88dOec54A9zLpjuvyjCSQ1vbZx00+qdL9HNbs/uyyHj0J562WkUcf raihcP7uVL7Q7U0BaIXvsXsa7yf0prA1k8kvveC2w6h/X7ERYfI6y+flGg+RhlbVwwAe ft0RNZjspwcYwO/d10nOp9QnKT00ScR53Uz1tL8Jxje8ZHWa44BHFZldX4go8D8c4hhw PgOw==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770813998; x=1771418798; 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=GThEKWulS22VGZJCdhN0WhgRAcdwG9+07B4s+VVP7rg=; b=BoOEEohLflhgMp2b92Or62upH4+j2aYYas9g/jRUddiVrLhmsxqNWxxoHdseAxMu1m D0NtgsNpLvXfoeJ1ci+BIXxBIOBM/c9pKidwvI2sQw5VjfvqGSUbDL7i7CgYg1qcB65p 4hDfaQqLTS62iHMZYIiE1V1dyjcq46Opzpj/neCsXDJGUi5C+Utn4Zomop090rcZbIqp HRNnTjfIB3Jg9EmDVfeoslskVrQYQBG5a4kXDILt1T6UUoQzmP5pO/h8UyBnygiujGRf 6+IRIZ5kW4iKqA6QHhTmEQuWaN162ym2oWDltusGKZo4PMSw6p3/H3dx/fMKn3f8J1qd 76cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770813998; x=1771418798; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=GThEKWulS22VGZJCdhN0WhgRAcdwG9+07B4s+VVP7rg=; b=Ll0qZZl6c8O9SHKNnj6VOVJ9WoR6b5QaoAcinzcpUv/tBH7JHp/imiZlQHSaWSqp9p 1Qatcu23Gz8nVPc/+/HBwkol4dFSB2BIWWClWosXRrkCsErn6rXvIqH2kzorCJt8S2b/ EhackaQgZKToRxeiUqyqZWn8M2GdRkUPD+yx7+Y5vKMyKJLA+fFlX6hB/SxZCM21ULwu RxVpJkxqN2P64AKPHE5suC7xqGpJnWD0DwCQE7/8kqcKv3yD3H4kkU43DAeJw1y3zxX7 n2jmXxAR8xURaBYGzk8VkGJL0hTuj9QVlG4l5dLy5gkhm+RxgQyTKXigQQW9eB78bw7Y pJHQ== X-Forwarded-Encrypted: i=1; AJvYcCVjXAA1S/MlseAG5DD9u1rHNhsxM0LxrMOA1Hbq8MnlkN4v2EoSf3ahYwb5eHt/Pb7YfFdy9g==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yy1LsbkNpb3fmbx7pjSE1MVTU1wtcagT7TziU9OQqHPcdCbABRv FOTWXY39SG+/tDnsO+w1FJfzzaOjawC4rOs0vjgb9F4cI+Mh9am0onyu3l1NRPs0GwNxL9WSM18 pmW575n7wZfeZ+Z4qWzX8p2QP7N7sRjA= X-Gm-Gg: AZuq6aKUwE01nFQcBjTtyktWjUl06yr9xLNRy20d54KV7qFZjokZNYXRCvjGjQR6WJv 1wUBLJFmlrr7tpHFRHlC169tkbTi3vPsJey53H2zO5RiZoFMricYGfjx7ttjLfyqeF/YnJGWrc3 LApD7AJFMVCjdb3CMRxqQ710FAGyG2hFwIH+OqE33RAL3B+5/HhTdM9QallIcpkDtatdQJTr0Bn HfzUDmAoz2nFaCDiuFSde2RlgvaH0Hbn3MGwrd/6b3K+ESgzvlynPe1YC1d8YofmXElMyA8+a0r 2KxKqJr2ZJQcrt1FHHe/1CJzBebDiQH9AaS8aa8OXfDPUvm6xdu8dATv3egY8aU= X-Received: by 2002:a05:6102:c11:b0:5db:fe0d:7fd5 with SMTP id ada2fe7eead31-5fde41ded70mr604680137.10.1770813998094; Wed, 11 Feb 2026 04:46:38 -0800 (PST) MIME-Version: 1.0 References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN> <CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN> <868qd4v36l.fsf@HIDDEN> <CAN+1HbqdV2oXQjXi07X8hSgX9A_nYOD+rAWHqfm2XCAfxkNtTQ@HIDDEN> <861pivvjxn.fsf@HIDDEN> <CAN+1HbotFM1WiJSaX+n9qEgDpv91Y0Eg59C0UFK2egLEFOAAxQ@HIDDEN> <CAN+1HbqnZNBHw_hzq4VQnedfw9QNhtbpWA5Yy_NGy=bHF9o8OA@HIDDEN> <87fr78ifc1.fsf@HIDDEN> <CAN+1HbrcHFNi=wPHgGdpi6bDJX=yDEhkuH-yDtoMnb6+CmokMQ@HIDDEN> <87zf5fhc78.fsf@HIDDEN> In-Reply-To: <87zf5fhc78.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Wed, 11 Feb 2026 07:46:26 -0500 X-Gm-Features: AZwV_Qh357jv1NZxiyhL3NXyvSU2y0UnMCdTKfPP8CIrn6I_H8WukCVzlfceqmQ Message-ID: <CAN+1Hbr-D2OnLoPMiJ712BZ6v_htXRvSd7obVbzgcugu8DdVCg@HIDDEN> Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake event package To: Michael Albinus <michael.albinus@HIDDEN> Content-Type: multipart/mixed; boundary="000000000000521f55064a8bc368" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80348 Cc: acohen@HIDDEN, eric@HIDDEN, mail@HIDDEN, Morgan.J.Smith@HIDDEN, monnier@HIDDEN, 80348 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) --000000000000521f55064a8bc368 Content-Type: multipart/alternative; boundary="000000000000521f54064a8bc366" --000000000000521f54064a8bc366 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Feb 11, 2026 at 4:16=E2=80=AFAM Michael Albinus <michael.albinus@gm= x.de> wrote: > St=C3=A9phane Marks <shipmints@HIDDEN> writes: > > Hi St=C3=A9phane, > > > Revised patch attached. > > Thanks, I've pushed it to master. > Attached is a quick follow-up patch to fix two texi markup issues. -St=C3=A9phane --000000000000521f54064a8bc366 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Wed, Feb 11, 2026 at 4:16=E2=80=AFAM Michael Albinus <<a href=3D"mail= to:michael.albinus@HIDDEN">michael.albinus@HIDDEN</a>> wrote:</span></di= v></div><div class=3D"gmail_quote gmail_quote_container"><blockquote class= =3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg= b(204,204,204);padding-left:1ex">St=C3=A9phane Marks <<a href=3D"mailto:= shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>> writes:<= br> <br> Hi St=C3=A9phane,<br> <br> > Revised patch attached.<br> <br> Thanks, I've pushed it to master.<br></blockquote><div><br></div><div c= lass=3D"gmail_default" style=3D"font-family:monospace">Attached is a quick = follow-up patch to fix two texi markup issues.</div><div class=3D"gmail_def= ault" style=3D"font-family:monospace"><br></div><div class=3D"gmail_default= " style=3D"font-family:monospace">-St=C3=A9phane=C2=A0</div></div></div> --000000000000521f54064a8bc366-- --000000000000521f55064a8bc368 Content-Type: application/octet-stream; name="0001-system-sleep-texi-markup-fix-bug-80348.patch" Content-Disposition: attachment; filename="0001-system-sleep-texi-markup-fix-bug-80348.patch" Content-Transfer-Encoding: base64 Content-ID: <f_mli0x82o0> X-Attachment-Id: f_mli0x82o0 RnJvbSAzOGUyOWYwMTRlYmY2MTc2ZWJlMDM3NTYwNGJlOTE4YzM1MTQ5YmU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgMTEgRmViIDIwMjYgMDc6NDQ6MTcgLTA1MDAK U3ViamVjdDogW1BBVENIXSA7IHN5c3RlbS1zbGVlcCB0ZXhpIG1hcmt1cCBmaXggKGJ1ZyM4MDM0 OCkKCiogZG9jL2xpc3ByZWYvb3MudGV4aSAoU3lzdGVtIFNsZWVwKTogRml4IG1hcmt1cC4KLS0t CiBkb2MvbGlzcHJlZi9vcy50ZXhpIHwgMTAgKysrKystLS0tLQogMSBmaWxlIGNoYW5nZWQsIDUg aW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2MvbGlzcHJlZi9v cy50ZXhpIGIvZG9jL2xpc3ByZWYvb3MudGV4aQppbmRleCAwZTY2OWM3MDU5Mi4uNzM4NzFjNzhm ZDEgMTAwNjQ0Ci0tLSBhL2RvYy9saXNwcmVmL29zLnRleGkKKysrIGIvZG9jL2xpc3ByZWYvb3Mu dGV4aQpAQCAtMzUwNywxMiArMzUwNywxMiBAQCBTeXN0ZW0gU2xlZXAKIHNsZWVwIGJsb2NrcyBt YXkgYmUgc2ltdWx0YW5lb3VzbHkgaW4gZm9yY2UgZm9yIG90aGVyIHB1cnBvc2VzKS4KIE90aGVy d2lzZSwgaXQgcmV0dXJucyBAY29kZXtuaWx9IGlmIHRoZSBzbGVlcCBibG9ja2luZyBmYWlscy4K IAotQHZhcnt3aHl9IGlzIGEgc3RyaW5nIGFuZCwgd2hlbiBub24tbmlsLCBpcyB1c2VkIHRvIGlk ZW50aWZ5IHRoZSBzbGVlcAotYmxvY2sgYXMgaXQgbWF5IGFwcGVhciBvbiB0aGUgc3lzdGVtJ3Mg aW5zcGVjdGFibGUgYmxvY2sgbGlzdHMuICBJdAotZGVmYXVsdHMgdG8gYGBFbWFjcycnLgorQHZh cnt3aHl9IGlzIGEgc3RyaW5nIGFuZCwgd2hlbiBub24tQGNvZGV7bmlsfSwgaXMgdXNlZCB0byBp ZGVudGlmeSB0aGUKK3NsZWVwIGJsb2NrIGFzIGl0IG1heSBhcHBlYXIgb24gdGhlIHN5c3RlbSdz IGluc3BlY3RhYmxlIGJsb2NrIGxpc3RzLgorSXQgZGVmYXVsdHMgdG8gYGBFbWFjcycnLgogCi1J ZiBAdmFye2FsbG93LWRpc3BsYXktc2xlZXB9IGlzIG5vbi1uaWwsIGFsbG93IHRoZSBkaXNwbGF5 IHRvIHNsZWVwLiAgQnkKLWRlZmF1bHQsIHRoZSBkaXNwbGF5IGlzIGtlcHQgYWN0aXZlLgorSWYg QHZhcnthbGxvdy1kaXNwbGF5LXNsZWVwfSBpcyBub24tQGNvZGV7bmlsfSwgYWxsb3cgdGhlIGRp c3BsYXkgdG8KK3NsZWVwLiAgQnkgZGVmYXVsdCwgdGhlIGRpc3BsYXkgaXMga2VwdCBhY3RpdmUu CiAKIE5vdGU6IOKAi1doZW4gdGhlIEVtYWNzIHByb2Nlc3MgZGllcywgYmxvY2tzIGFyZSByZWxl YXNlZCBvbiBhbGwgcGxhdGZvcm1zLgogQGVuZCBkZWZ1bgotLSAKMi41Mi4wCgo= --000000000000521f55064a8bc368--
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.Received: (at 80348) by debbugs.gnu.org; 11 Feb 2026 09:16:59 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 11 04:16:59 2026 Received: from localhost ([127.0.0.1]:45199 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vq6LD-00012D-8C for submit <at> debbugs.gnu.org; Wed, 11 Feb 2026 04:16:59 -0500 Received: from mout.gmx.net ([212.227.15.15]:46945) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <michael.albinus@HIDDEN>) id 1vq6LA-00011f-JQ for 80348 <at> debbugs.gnu.org; Wed, 11 Feb 2026 04:16:57 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1770801407; x=1771406207; i=michael.albinus@HIDDEN; bh=n1HkJEwoPsNbVVLC2UKIlCHFvVjRQmu6VohTyZdnt1A=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date: Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=rJ5VfM4PkKQw1e5D9NxGtSVe8qBNjAgFWC/6j37gb1AgaUl0MzXL8PmTyxl1OYc5 ZUdreKpR0mVLJfwbt0omjmdZy226qpBmD+DbTgLkf2Cf34aS53odTa1p1TNA3zJKZ ReTgvZ62dyfs4oy2eepYrSJRZYiHLU4k/3ZCdl+35hbHr0ah97WWdOg1vt+ag2K4D uJN4R70qiqE3vw0CVjQyWitoFDmE6NLOmHhmnducdjNBl9Ry1AE0WfOWlA9HWuTzX UcPjqKhNTtSvPFrY8V99Fko9qH23+Yq3B0ehW8bXe+28ODYo6aiEgN4SWRJYVG8r8 /rioIECQ9XxkIo1O3Q== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from gandalf.gmx.de ([185.89.39.12]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MNbp3-1wAfS80hdz-00Lmh6; Wed, 11 Feb 2026 10:16:47 +0100 From: Michael Albinus <michael.albinus@HIDDEN> To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN> Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake event package In-Reply-To: <CAN+1HbrcHFNi=wPHgGdpi6bDJX=yDEhkuH-yDtoMnb6+CmokMQ@HIDDEN> References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN> <CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN> <868qd4v36l.fsf@HIDDEN> <CAN+1HbqdV2oXQjXi07X8hSgX9A_nYOD+rAWHqfm2XCAfxkNtTQ@HIDDEN> <861pivvjxn.fsf@HIDDEN> <CAN+1HbotFM1WiJSaX+n9qEgDpv91Y0Eg59C0UFK2egLEFOAAxQ@HIDDEN> <CAN+1HbqnZNBHw_hzq4VQnedfw9QNhtbpWA5Yy_NGy=bHF9o8OA@HIDDEN> <87fr78ifc1.fsf@HIDDEN> <CAN+1HbrcHFNi=wPHgGdpi6bDJX=yDEhkuH-yDtoMnb6+CmokMQ@HIDDEN> Date: Wed, 11 Feb 2026 10:16:43 +0100 Message-ID: <87zf5fhc78.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:Zso+frz0kijbvbT5A4R6s3cuJxiwJnfnGZir38MVAAdO2DVd+eq 0+M17EYY9We6irMHNdBmO7PDUyx1uWyc0HayX1gKiz52qMYNebg8YN5/joP9wr3/WwmbKNF wGz3bIedLis/HXo/0VUGXXnt8otxPoL3PcT+gtpa88kNKdILJEZve31unajof76AKOpTp6T vt4EfltsruyU/gblzNbuw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:nDLmHj43itM=;J4LlrdgxUte+54KaZEIaLhapW8E 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 EUf61oCZ7bl33KTxWmFhxesFcUMxz X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80348 Cc: acohen@HIDDEN, eric@HIDDEN, mail@HIDDEN, Morgan.J.Smith@HIDDEN, monnier@HIDDEN, 80348 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) St=C3=A9phane Marks <shipmints@HIDDEN> writes: Hi St=C3=A9phane, > Revised patch attached. Thanks, I've pushed it to master. > -St=C3=A9phane Best regards, Michael.
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.
Received: (at 80348) by debbugs.gnu.org; 10 Feb 2026 20:21:01 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Feb 10 15:21:01 2026
Received: from localhost ([127.0.0.1]:35344 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vpuEG-00086M-Ud
for submit <at> debbugs.gnu.org; Tue, 10 Feb 2026 15:21:01 -0500
Received: from mail-ua1-x933.google.com ([2607:f8b0:4864:20::933]:59692)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <shipmints@HIDDEN>)
id 1vpuED-00085m-BA
for 80348 <at> debbugs.gnu.org; Tue, 10 Feb 2026 15:20:58 -0500
Received: by mail-ua1-x933.google.com with SMTP id
a1e0cc1a2514c-94abd52b274so346901241.3
for <80348 <at> debbugs.gnu.org>; Tue, 10 Feb 2026 12:20:57 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; t=1770754856; cv=none;
d=google.com; s=arc-20240605;
b=dHqIQFTH/FZOy4gxYIaNQPPnPPw6pZH+5nPF6LHxKNDSIxHMKuv2E0tq/ZEbRrf91g
rNU9M/3r3pxff2WXIlsFftkEtxKaC5u7YnhXQF2c61XCbRfSK+zAXbQHNy2EzdWdwNTD
duaKsn1yAiBSbBS1PofeBR80Jj0VGtan5g8x8QyBo0q+oHnufWjtFt+Srp07n/WEH/CK
30f8SpN5otH8I1e4jnF3prumaUUrGgeoMHC8rob/63LFL4ZYYqjiwiv1v7TFe4f2chD9
Jii2aSTndqZCIgE/8fNiGAVXjFWf+D/V0DOoXZ3ycyg3oUsViP7Ex4uCugMfYgZOgefj
ny7A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;
s=arc-20240605;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:dkim-signature;
bh=foqeOBgCQqzUIuu8z6Fbpx4HFufUxUDKGu7Cj72tNjg=;
fh=r+wgR3pbXafsW+qAuAzDYZrCLEAyHDvMD3QGfA9QEOs=;
b=T5hH8dztBtXP7eJ77Pom1gBpsq2i8O/nTz/rutmEtQaibhWDpu7w9T/QAJZGwPRtej
l156fdndXxDGxUrSo3EfvTyY8DDCdT0t8pPX1qNO4VkvAnbWzPG5LL6tfzrF+1XRyVWH
OHOBIpl2Vifod2yx+taG/Pzyl5ZKTlFHpr89OQiuWOL00dI8MP2iFvuMakY8Y1SWZnD1
R5wKDCLJ3q4R2ksVP70Fguga91b/TxJeWIXqau1XCmXdq/Vwg17VMtVcrmPyaS+G0BZk
2lJmW7VscDbJxSl2hSM5hunqHsfe3BbA3d/G29NgetC3THYVDQYCFhOOnHskhP+5kbk9
ft5A==; darn=debbugs.gnu.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1770754856; x=1771359656; 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=foqeOBgCQqzUIuu8z6Fbpx4HFufUxUDKGu7Cj72tNjg=;
b=ZpLSTtoafj9lXRRde91UBF73jVMkS4O01PyyL34trc6X14/ytR/i3/uCO3Z/MdJ08P
Nc0hAKiJO0rOo8ixpxNt/hbDMrZwxqUt2JZaGjVtXyAFJPTHlFR46YDd7jdDKr/9fGtl
WV9t3DZhpgsHVt4DIBk/a+yNxoN9FpYVWjW5oExEaWGiDR37vCPi3C/5ZGwcKcIfL/w7
1dkTp05WxqISE4fS7CzXF6aKoi7TQzWgRWR/j9QutpIHhPqr0DN9arPLtUINd/NeTCdE
JAC8kY3neLCvR9vAE8VUPq40jAu2eqzkIlQixljcC9Rn4y7XpCqgT8gpZQuNGyTF4dps
z06Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1770754856; x=1771359656;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=foqeOBgCQqzUIuu8z6Fbpx4HFufUxUDKGu7Cj72tNjg=;
b=Wlx3mdjWhfZ6mcmMiABarDLkPA3RSiZMxEDpmF1Y9JV3HfLspcq9ywn9wux55hPvJ5
J2HxlIcvlsb2uCc+7btIIpSARdvSo1Vjshf1xYKbJtoQ5SQ6d34l0HKy/JB06NW3RTVN
K+MXro3OXpx0/NjjmQLcCnIoUnoP5IIuxNflW71LbN3kvGy0AHRYk/9+5fY8NRG1KLS3
EhOxO4AN/oaa2onFq66X4d2rdblZc2y1TriI67z5Lon53xidwGx3ddMK3PTRLi8uTqdK
SxVe9WWs3ZP0BwdKq/otgk0XxshhOpgyewZnbxdTjtY491NuwbB4FrqpXKbQkPASrloR
VYlA==
X-Forwarded-Encrypted: i=1;
AJvYcCVpzA6XNxs86b3H4unZpEytMfu7nrffX1z2j440wyKKcS7Wu+6hJNNOnM8sZXfQWGH4bRLBbw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YyMs1QFUzg6JIS39eCKvq1MuMCvjNswKlrcG0eMRX/TKmYFoPnF
+83E8qusrJ7llp8jX08iAD9jzTZ0qgwFNXi7IXhe0IxqzJlf0l/dUL866XWE//vWnfCH8z6Htps
fC8Js8+2gX2v0X/wD9gOgXUIsTiZgtpw=
X-Gm-Gg: AZuq6aKWkIhpHtkoDj1DTaTP/ABNVjqv/3Zy0SHkEa5ntvBYbVN+FTG7CAr0AmrAuy7
3KZyXCfMuB1gtFU3sgfVx3emxZl5U1lwSo3MlGFDef6QlIyBagQzHSwvNyXdZbkEmQ8JPcwFECl
75GdK1vonfW8Zkfq/o2GxYbI49FOFOggFpAZeiPeZrdUXyAr0N8ceNZJTPqAiFxwTPFCFTyspyZ
95g1znYb1j/EZ0A+i5nOMNXtLaiYGPPSErEHIIXbPfawBPUF0ZzwcitOxpxW+j91hemyaORJU0n
NS4KG/zbYDv3B3cMfQuaZbxubrLzIb7ORzXT5A02J/isU6VXKIF4DhpZp6bdUEI=
X-Received: by 2002:a05:6102:304e:b0:5ef:a8cb:857b with SMTP id
ada2fe7eead31-5fae8baf464mr4151872137.23.1770754856435; Tue, 10 Feb 2026
12:20:56 -0800 (PST)
MIME-Version: 1.0
References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN>
<CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN>
<868qd4v36l.fsf@HIDDEN>
<CAN+1HbqdV2oXQjXi07X8hSgX9A_nYOD+rAWHqfm2XCAfxkNtTQ@HIDDEN>
<861pivvjxn.fsf@HIDDEN>
<CAN+1HbotFM1WiJSaX+n9qEgDpv91Y0Eg59C0UFK2egLEFOAAxQ@HIDDEN>
<CAN+1HbqnZNBHw_hzq4VQnedfw9QNhtbpWA5Yy_NGy=bHF9o8OA@HIDDEN>
<87fr78ifc1.fsf@HIDDEN>
In-Reply-To: <87fr78ifc1.fsf@HIDDEN>
From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>
Date: Tue, 10 Feb 2026 15:20:45 -0500
X-Gm-Features: AZwV_QhZ_zFuhycgD4OIpWUVyJRTM6ca_s1DYCYJwG6eGUncSFGJ3yvj3vcJFVM
Message-ID: <CAN+1HbrcHFNi=wPHgGdpi6bDJX=yDEhkuH-yDtoMnb6+CmokMQ@HIDDEN>
Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake
event package
To: Michael Albinus <michael.albinus@HIDDEN>
Content-Type: multipart/mixed; boundary="000000000000340b38064a7dfe65"
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 80348
Cc: acohen@HIDDEN, eric@HIDDEN, mail@HIDDEN,
Morgan.J.Smith@HIDDEN, monnier@HIDDEN, 80348 <at> debbugs.gnu.org,
Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 0.0 (/)
--000000000000340b38064a7dfe65
Content-Type: multipart/alternative; boundary="000000000000340b37064a7dfe63"
--000000000000340b37064a7dfe63
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
On Tue, Feb 10, 2026 at 2:12=E2=80=AFPM Michael Albinus <michael.albinus@gm=
x.de>
wrote:
> St=C3=A9phane Marks <shipmints@HIDDEN> writes:
>
> Hi St=C3=A9phane,
>
> > I think I've incorporated everyone's feedback in the attached patch.
> > I've left the symbols in place for the event states. If we decide to
> > keep them, I'll centralize the native symbol definitions in fns.c or
> > data.c.
>
> I believe we all agree on this now. The only think left to do is the
> proper definition of the symbols for the event states at a central
> place. Please do, and then we might push it to master.
>
Done.
Nevertheless, I couldn't resist: just a final review of the patch. And
> surprise, I even have some further comments. Minor only, but you might
> take them into account.
>
Of course. Measure twice...
> * lisp/bindings.el (sleep-event-functions): New abnormal hook.
> > (sleep-event-handler): New defun.
> > (special-event-map): New event handler.
>
> This entry is obsolete now.
>
Done.
> diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi
>
> > +@defmac with-system-sleep-block (why allow-display-sleep) body@dots{}
>
> Shouldn't why allow-display-sleep be optional, like in
> system-sleep-block-sleep?
>
Done code and documentation.
> diff --git a/lisp/system-sleep.el b/lisp/system-sleep.el
>
> > +;;;###autoload
> > +(defmacro with-system-sleep-block (why allow-display-sleep &rest body)
>
> Make arguments optional.
>
> > +(defun system-sleep--dbus-prepare-for-sleep-function (event)
> > + (pcase (cadr event)
>
> (pcase (sleep-event-state event)
>
Now that we can...
> diff --git a/src/nsfns.m b/src/nsfns.m
>
> > + NSString *reason =3D @"Emacs";
> > + if (!NILP (why))
> > + {
> > + CHECK_STRING (why);
> > + reason =3D [NSString stringWithLispString: why];
> > + }
>
> Is it necessary, that you set the default value "Emacs" here? You set it
> already on Lisp level, when why is nil.
>
The NS call needs a string and if ever called outside of system-sleep, it
should work without barfing so I was being defensive. I think it's worthy.
Revised patch attached.
-St=C3=A9phane
--000000000000340b37064a7dfe63
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon=
t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">=
On Tue, Feb 10, 2026 at 2:12=E2=80=AFPM Michael Albinus <<a href=3D"mail=
to:michael.albinus@HIDDEN">michael.albinus@HIDDEN</a>> wrote:</span></di=
v></div><div class=3D"gmail_quote gmail_quote_container"><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg=
b(204,204,204);padding-left:1ex">St=C3=A9phane Marks <<a href=3D"mailto:=
shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>> writes:<=
br>
<br>
Hi St=C3=A9phane,<br>
<br>
> I think I've incorporated everyone's feedback in the attached =
patch. <br>
> I've left the symbols in place for the event states. If we decide =
to<br>
> keep them, I'll centralize the native symbol definitions in fns.c =
or<br>
> data.c.<br>
<br>
I believe we all agree on this now. The only think left to do is the<br>
proper definition of the symbols for the event states at a central<br>
place. Please do, and then we might push it to master.<br></blockquote><div=
><br></div><div><div class=3D"gmail_default" style=3D"font-family:monospace=
">Done.</div></div><div><br></div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex">
Nevertheless, I couldn't resist: just a final review of the patch. And<=
br>
surprise, I even have some further comments. Minor only, but you might<br>
take them into account.<br></blockquote><div><br></div><div><div class=3D"g=
mail_default" style=3D"font-family:monospace">Of course.=C2=A0 Measure twic=
e...</div></div><div><br></div><blockquote class=3D"gmail_quote" style=3D"m=
argin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left=
:1ex">
> * lisp/bindings.el (sleep-event-functions): New abnormal hook.<br>
> (sleep-event-handler): New defun.<br>
> (special-event-map): New event handler.<br>
<br>
This entry is obsolete now.<br></blockquote><div><br></div><div class=3D"gm=
ail_default" style=3D"font-family:monospace">Done.</div><div class=3D"gmail=
_default" style=3D"font-family:monospace"><br></div><blockquote class=3D"gm=
ail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,=
204,204);padding-left:1ex">
> diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi<br>
<br>
> +@defmac with-system-sleep-block (why allow-display-sleep) body@dots{}=
<br>
<br>
Shouldn't why allow-display-sleep be optional, like in system-sleep-blo=
ck-sleep?<br></blockquote><div><br></div><div><div class=3D"gmail_default" =
style=3D"font-family:monospace">Done code and documentation.</div></div><di=
v><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0=
.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> diff --git a/lisp/system-sleep.el b/lisp/system-sleep.el<br>
<br>
> +;;;###autoload<br>
> +(defmacro with-system-sleep-block (why allow-display-sleep &rest =
body)<br>
<br>
Make arguments optional.<br>
<br>
> +(defun system-sleep--dbus-prepare-for-sleep-function (event)<br>
> +=C2=A0 (pcase (cadr event)<br>
<br>
(pcase (sleep-event-state event)<br></blockquote><div><br></div><div><div c=
lass=3D"gmail_default" style=3D"font-family:monospace">Now that we can...</=
div></div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:=
0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> diff --git a/src/nsfns.m b/src/nsfns.m<br>
<br>
> +=C2=A0 NSString *reason =3D @"Emacs";<br>
> +=C2=A0 if (!NILP (why))<br>
> +=C2=A0 =C2=A0 {<br>
> +=C2=A0 =C2=A0 =C2=A0 CHECK_STRING (why);<br>
> +=C2=A0 =C2=A0 =C2=A0 reason =3D [NSString stringWithLispString: why];=
<br>
> +=C2=A0 =C2=A0 }<br>
<br>
Is it necessary, that you set the default value "Emacs" here? You=
set it<br>
already on Lisp level, when why is nil.<br></blockquote><div><br></div><div=
><div class=3D"gmail_default" style=3D"font-family:monospace">The NS call n=
eeds a string and if ever called outside of system-sleep, it should work wi=
thout barfing so I was being defensive.=C2=A0 I think it's worthy.</div=
></div><div class=3D"gmail_default" style=3D"font-family:monospace"><br></d=
iv><div class=3D"gmail_default" style=3D"font-family:monospace">Revised pat=
ch attached.</div><div class=3D"gmail_default" style=3D"font-family:monospa=
ce"><br></div><div class=3D"gmail_default" style=3D"font-family:monospace">=
-St=C3=A9phane</div></div></div>
--000000000000340b37064a7dfe63--
--000000000000340b38064a7dfe65
Content-Type: application/octet-stream;
name="0001-system-sleep-sleep-blocker-and-sleep-wake-event-pack.patch"
Content-Disposition: attachment;
filename="0001-system-sleep-sleep-blocker-and-sleep-wake-event-pack.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_mlh1ppaa0>
X-Attachment-Id: f_mlh1ppaa0
RnJvbSA5ZThiNjNlOWQ2ODExYmJkYTZkMWM2MmI3YTA5MjA2MGI5ZTY1ZDE1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo
aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgNCBGZWIgMjAyNiAxODoyMDo1NSAtMDUwMApT
dWJqZWN0OiBbUEFUQ0hdIHN5c3RlbS1zbGVlcCBzbGVlcCBibG9ja2VyIGFuZCBzbGVlcC93YWtl
IGV2ZW50IHBhY2thZ2UKIChidWcjODAzNDgpCgpUaGlzIHBhY2thZ2UgcHJvdmlkZXMgcGxhdGZv
cm0tbmV1dHJhbCBpbnRlcmZhY2VzIHRvIGJsb2NrIHlvdXIKc3lzdGVtIGZyb20gZW50ZXJpbmcg
aWRsZSBzbGVlcCBhbmQgYSBob29rIHRvIHByb2Nlc3MgcHJlLXNsZWVwCmFuZCBwb3N0LXdha2Ug
ZXZlbnRzLgoKSW1wbGVtZW50YXRpb25zIGFyZSBmb3IgRC1CdXMgb24gR05VL0xpbnV4LCBtYWNP
Uy9HTlVzdGVwLCBhbmQKTVMtV2luZG93cy4KCiogbGlzcC9zeXN0ZW0tc2xlZXAuZWw6IE5ldyBw
YWNrYWdlLgoqIHNyYy9mbnMuYzogUXByZV9zbGVlcCwgUXBvc3Rfd2FrZTogTmV3IERFRlNZTS4K
KiBzcmMvbnNmbnMubSAoRm5zX2Jsb2NrX3N5c3RlbV9zbGVlcCwgRm5zX3VuYmxvY2tfc3lzdGVt
X3NsZWVwKQooc3ltc19vZl9uc2Zucyk6IE5ldyBmdW5jdGlvbnMuCiogc3JjL25zdGVybS5tIChh
cHBsaWNhdGlvbkRpZEZpbmlzaExhdW5jaGluZyk6IFN1YnNjcmliZSB0bwpwcmUtc2xlZXAgYW5k
IHBvc3Qtd2FrZSBub3RpZmljYXRpb25zLgooc3lzdGVtV2lsbFNsZWVwLCBzeXN0ZW1EaWRXYWtl
KTogTmV3IGZ1bmN0aW9uLgoqIHNyYy93MzJmbnMuYyAoRnczMl9ibG9ja19zeXN0ZW1fc2xlZXAp
CihGdzMyX3VuYmxvY2tfc3lzdGVtX3NsZWVwLCBGdzMyX3N5c3RlbV9zbGVlcF9ibG9ja19jb3Vu
dCkKKHNsZWVwX25vdGlmaWNhdGlvbl9jYWxsYmFjaykKKHczMl9yZWdpc3Rlcl9mb3Jfc2xlZXBf
bm90aWZpY2F0aW9ucyk6IE5ldyBmdW5jdGlvbi4KKHN5bXNfb2ZfdzMyZm5zKTogU3czMl91bmJs
b2NrX3N5c3RlbV9zbGVlcApTdzMyX2Jsb2NrX3N5c3RlbV9zbGVlcCBTdzMyX3N5c3RlbV9zbGVl
cF9ibG9ja19jb3VudDogTmV3CmRlZnN1YnIuCiogc3JjL3czMnRlcm0uaCAoRnczMl9ibG9ja19z
eXN0ZW1fc2xlZXApOiBOZXcgZXh0ZXJuLgoqIHNyYy93MzJ0ZXJtLmMgKHczMl9pbml0aWFsaXpl
KTogQ2FsbAp3MzJfcmVnaXN0ZXJfZm9yX3NsZWVwX25vdGlmaWNhdGlvbnMuCiogZG9jL2xpc3By
ZWYvb3MudGV4aTogRG9jdW1lbnQgdGhlIHN5c3RlbS1zbGVlcCBwYWNrYWdlLgoqIGRvYy9saXNw
cmVmL2NvbW1hbmRzLnRleGk6IFVwZGF0ZSBzbGVlcC1ldmVudCBzcGVjaWFsCmRvY3VtZW50YXRp
b24uCiogZXRjL05FV1M6IEFubm91bmNlIHRoZSBuZXcgcGFja2FnZS4KLS0tCiBkb2MvbGlzcHJl
Zi9jb21tYW5kcy50ZXhpIHwgIDEwICstCiBkb2MvbGlzcHJlZi9vcy50ZXhpICAgICAgIHwgIDY4
ICsrKysrCiBldGMvTkVXUyAgICAgICAgICAgICAgICAgIHwgIDE2ICsrCiBsaXNwL3N5c3RlbS1z
bGVlcC5lbCAgICAgIHwgNTEzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
CiBzcmMvZm5zLmMgICAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9uc2Zucy5tICAgICAgICAg
ICAgICAgfCAgODQgKysrKysrKwogc3JjL25zdGVybS5tICAgICAgICAgICAgICB8ICA0OCArKyst
CiBzcmMvdzMyZm5zLmMgICAgICAgICAgICAgIHwgMTQ1ICsrKysrKysrKysrCiBzcmMvdzMydGVy
bS5jICAgICAgICAgICAgIHwgICAxICsKIHNyYy93MzJ0ZXJtLmggICAgICAgICAgICAgfCAgIDEg
KwogMTAgZmlsZXMgY2hhbmdlZCwgODc2IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQog
Y3JlYXRlIG1vZGUgMTAwNjQ0IGxpc3Avc3lzdGVtLXNsZWVwLmVsCgpkaWZmIC0tZ2l0IGEvZG9j
L2xpc3ByZWYvY29tbWFuZHMudGV4aSBiL2RvYy9saXNwcmVmL2NvbW1hbmRzLnRleGkKaW5kZXgg
YmQzMTc5OGQ0MzEuLjRhZWUyNjA5ZDY1IDEwMDY0NAotLS0gYS9kb2MvbGlzcHJlZi9jb21tYW5k
cy50ZXhpCisrKyBiL2RvYy9saXNwcmVmL2NvbW1hbmRzLnRleGkKQEAgLTI3NzgsMTIgKzI3Nzgs
MTIgQEAgTWlzYyBFdmVudHMKIEBlbmQgc21hbGxleGFtcGxlCiAKIEBjaW5kZXggQGNvZGV7c2xl
ZXAtZXZlbnR9IGV2ZW50Ci1AaXRlbSAoc2xlZXAtZXZlbnQgQHZhcntzbGVlcC13YWtlfSkKLVRo
aXMgZXZlbnQgaXMgaW5qZWN0ZWQgd2hlbiB0aGUgZGV2aWNlIEVtYWNzIGlzIHJ1bm5pbmcgb24g
ZW50ZXJzIG9yCi1sZWF2ZXMgdGhlIHNsZWVwIHN0YXRlLiAgQSBub24tQGNvZGV7bmlsfSBAdmFy
e3NsZWVwLXdha2V9IGluZGljYXRlcwotZW50ZXJpbmcgdGhlIHNsZWVwIHN0YXRlLgorQGl0ZW0g
KHNsZWVwLWV2ZW50IEB2YXJ7c3RhdGV9KQorVGhpcyBldmVudCBpcyBpbmplY3RlZCB3aGVuIHRo
ZSBkZXZpY2UgRW1hY3MgaXMgcnVubmluZyBvbiBpcyBhYm91dCB0bworZW50ZXIgYSBzbGVlcCBz
dGF0ZSwgb3IgaGFzIGp1c3QgYXdva2VuIGZyb20gb25lLiAgQHZhcntzdGF0ZX0gd2lsbCBiZQor
dGhlIHN5bWJvbCBAY29kZXtwcmUtc2xlZXB9IG9yIEBjb2Rle3Bvc3Qtd2FrZX0uCiAKLVRoaXMg
aXMgaW1wbGVtZW50ZWQgb25seSBvbiBHTlUvTGludXguCitUaGlzIGlzIGltcGxlbWVudGVkIG9u
IEdOVS9MaW51eCwgbWFjT1MsIGFuZCBNUy1XaW5kb3dzLgogCiBAY2luZGV4IEBjb2Rle2xhbmd1
YWdlLWNoYW5nZX0gZXZlbnQKIEBpdGVtIGxhbmd1YWdlLWNoYW5nZQpkaWZmIC0tZ2l0IGEvZG9j
L2xpc3ByZWYvb3MudGV4aSBiL2RvYy9saXNwcmVmL29zLnRleGkKaW5kZXggZjVjYTZlZmEyMWIu
LmE4ZjEyYjdlNjY4IDEwMDY0NAotLS0gYS9kb2MvbGlzcHJlZi9vcy50ZXhpCisrKyBiL2RvYy9s
aXNwcmVmL29zLnRleGkKQEAgLTM1LDYgKzM1LDcgQEAgU3lzdGVtIEludGVyZmFjZQogKiBTZXNz
aW9uIE1hbmFnZW1lbnQ6OiAgU2F2aW5nIGFuZCByZXN0b3Jpbmcgc3RhdGUgd2l0aCBYIFNlc3Np
b24gTWFuYWdlbWVudC4KICogRGVza3RvcCBOb3RpZmljYXRpb25zOjogRGVza3RvcCBub3RpZmlj
YXRpb25zLgogKiBTeXN0ZW0gVGFza2Jhcjo6ICAgICAgQ29udHJvbGxpbmcgc3lzdGVtIEdVSSB0
YXNrYmFyIGZlYXR1cmVzLgorKiBTeXN0ZW0gU2xlZXA6OiAgICAgICAgQmxvY2sgc3lzdGVtIHNs
ZWVwIGFuZCBwcm9jZXNzIHNsZWVwIGV2ZW50cy4KICogRmlsZSBOb3RpZmljYXRpb25zOjogIEZp
bGUgbm90aWZpY2F0aW9ucy4KICogRHluYW1pYyBMaWJyYXJpZXM6OiAgIE9uLWRlbWFuZCBsb2Fk
aW5nIG9mIHN1cHBvcnQgbGlicmFyaWVzLgogKiBTZWN1cml0eSBDb25zaWRlcmF0aW9uczo6IFJ1
bm5pbmcgRW1hY3MgaW4gYW4gdW5mcmllbmRseSBlbnZpcm9ubWVudC4KQEAgLTM0OTMsNiArMzQ5
NCw3MyBAQCBTeXN0ZW0gVGFza2JhcgogQGVuZCBncm91cAogQGVuZCBsaXNwCiAKK0Bub2RlIFN5
c3RlbSBTbGVlcAorQHNlY3Rpb24gQmxvY2sgU3lzdGVtIFNsZWVwIGFuZCBQcm9jZXNzIFNsZWVw
IEV2ZW50cworQGNpbmRleCBzeXN0ZW0gc2xlZXAKK0BjaW5kZXggbW9kZSwgc3lzdGVtIHNsZWVw
CisKK0BkZWZ1biBzeXN0ZW0tc2xlZXAtYmxvY2stc2xlZXAgJm9wdGlvbmFsIHdoeSBhbGxvdy1k
aXNwbGF5LXNsZWVwCitUaGlzIGZ1bmN0aW9uIGJsb2NrcyB0aGUgc3lzdGVtIGZyb20gZW50ZXJp
bmcgaXRzIGlkbGUgc2xlZXAgc3RhdGUuCisKK0l0IHJldHVybnMgYSB0b2tlbiB0aGF0IG11c3Qg
YmUgcGFzc2VkIHRvCitAY29kZXtzeXN0ZW0tc2xlZXAtdW5ibG9jay1zbGVlcH0gdG8gdW5ibG9j
ayB0aGlzIHNwZWNpZmljIGJsb2NrIChvdGhlcgorc2xlZXAgYmxvY2tzIG1heSBiZSBzaW11bHRh
bmVvdXNseSBpbiBmb3JjZSBmb3Igb3RoZXIgcHVycG9zZXMpLgorT3RoZXJ3aXNlLCBpdCByZXR1
cm5zIEBjb2Rle25pbH0gaWYgdGhlIHNsZWVwIGJsb2NraW5nIGZhaWxzLgorCitAdmFye3doeX0g
aXMgYSBzdHJpbmcgYW5kLCB3aGVuIG5vbi1uaWwsIGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHNs
ZWVwCitibG9jayBhcyBpdCBtYXkgYXBwZWFyIG9uIHRoZSBzeXN0ZW0ncyBpbnNwZWN0YWJsZSBi
bG9jayBsaXN0cy4gIEl0CitkZWZhdWx0cyB0byBgYEVtYWNzJycuCisKK0lmIEB2YXJ7YWxsb3ct
ZGlzcGxheS1zbGVlcH0gaXMgbm9uLW5pbCwgYWxsb3cgdGhlIGRpc3BsYXkgdG8gc2xlZXAuICBC
eQorZGVmYXVsdCwgdGhlIGRpc3BsYXkgaXMga2VwdCBhY3RpdmUuCisKK05vdGU6IOKAi1doZW4g
dGhlIEVtYWNzIHByb2Nlc3MgZGllcywgYmxvY2tzIGFyZSByZWxlYXNlZCBvbiBhbGwgcGxhdGZv
cm1zLgorQGVuZCBkZWZ1bgorCitAZGVmdW4gc3lzdGVtLXNsZWVwLXVuYmxvY2stc2xlZXAgdG9r
ZW4KK1RoaXMgZnVuY3Rpb24gdW5ibG9ja3MgdGhlIHNsZWVwIGJsb2NrIGFzc29jaWF0ZWQgd2l0
aCBAdmFye3Rva2VufS4gIEl0CityZXR1cm5zIG5vbi1AY29kZXtuaWx9IG9uIHN1Y2Nlc3MsIG90
aGVyd2lzZSByZXR1cm5zIEBjb2Rle25pbH0uCitAZW5kIGRlZnVuCisKK0BkZWZtYWMgd2l0aC1z
eXN0ZW0tc2xlZXAtYmxvY2sgKCZvcHRpb25hbCB3aHkgYWxsb3ctZGlzcGxheS1zbGVlcCkgYm9k
eUBkb3Rze30KK1RoaXMgaXMgYSBjb252ZW5pZW5jZSBtYWNybyB0aGF0IGxldHMgeW91IHdyYXAg
dGhlIGZvcm1zIGluIEB2YXJ7Ym9keX0KK3dpdGggYSBzbGVlcCBibG9jayB0aGF0IGlzIHVuYmxv
Y2tlZCBmb3IgeW91IHdoZW4gQHZhcntib2R5fSBjb21wbGV0ZXMuCitUaGUgYXJndW1lbnRzIGhh
dmUgdGhlIHNhbWUgbWVhbmluZyBhcyBpbgorQGNvZGV7c3lzdGVtLXNsZWVwLWJsb2NrLXNsZWVw
fSwgYWJvdmUuCitAZW5kIGRlZm1hYworCitAZGVmdW4gc3lzdGVtLXNsZWVwLXNsZWVwLWJsb2Nr
ZWQtcAorVGhpcyBwcmVkaWNhdGUgZnVuY3Rpb24gcmV0dXJucyBub24tQGNvZGV7bmlsfSBvbiBp
ZiB0aGVyZSBhcmUgYW55CithY3RpdmUgQGNvZGV7c3lzdGVtLXNsZWVwfSBibG9ja3MsIG90aGVy
d2lzZSByZXR1cm5zIEBjb2Rle25pbH0uCitAZW5kIGRlZnVuCisKK0BkZWZ1biBzeXN0ZW0tc2xl
ZXAtdW5ibG9jay1hbGwtc2xlZXAtYmxvY2tzCitUaGlzIGZ1bmN0aW9uIHVuYmxvY2tzIGFsbCBh
Y3RpdmUgc2xlZXAgYmxvY2tzLiAgSXQgaXMgdW5saWtlbHkgdGhhdCB5b3UKK3dpbGwgbmVlZCB0
byBjYWxsIHRoaXMgZnVuY3Rpb24uCitAZW5kIGRlZnVuCisKK0BkZWZvcHQgc3lzdGVtLXNsZWVw
LWV2ZW50LWZ1bmN0aW9ucworV2hlbiB0aGUgc3lzdGVtIGlzIGFib3V0IHRvIGVudGVyIGEgc2xl
ZXAgc3RhdGUgb3IgYWZ0ZXIgaXQgd2FrZXMgZnJvbQorb25lLCBlYWNoIGZ1bmN0aW9uIG9uIHRo
aXMgYWJub3JtYWwgaG9vayBpcyBjYWxsZWQgd2l0aCBvbmUgYXJndW1lbnQsCitAdmFye2V2ZW50
fSwgYSBzbGVlcCBldmVudC4gIEl0cyBzdGF0ZSBjYW4gYmUgcmV0cmlldmVkIHZpYQorQHNhbXB7
QGNvZGV7KHNsZWVwLWV2ZW50LXN0YXRlIGV2ZW50KX19LiAgU3RhdGUgd2lsbCBiZSBvbmUgb2Yg
dGhlCitzeW1ib2xzIEBjb2Rle3ByZS1zbGVlcH0gb3IgQGNvZGV7cG9zdC13YWtlfS4KKworSGFu
ZGxpbmcgQGNvZGV7cHJlLXNsZWVwfSBldmVudHMgc2hvdWxkIGJlIGRvbmUgYXMgZmFzdCBhcyBw
b3NzaWJsZSBhbmQKK2F2b2lkIHVzZXIgcHJvbXB0aW5nLiAgU3lzdGVtcyBvZnRlbiBncmFudCBh
IHZlcnkgc2hvcnQgcHJlLXNsZWVwCitwcm9jZXNzaW5nIGludGVydmFsLCB0eXBpY2FsbHkgcmFu
Z2luZyBiZXR3ZWVuIDIgYW5kIDUgc2Vjb25kcy4gIFRoZQorc3lzdGVtIG1heSBzbGVlcCBldmVu
IGlmIHlvdXIgcHJvY2Vzc2luZyBpcyBub3QgY29tcGxldGUsIHNvIGJlIHN1cmUgeW91CitkbyBh
cyBsaXR0bGUgYXMgcG9zc2libGUuICBGb3IgZXhhbXBsZSwgeW91ciBmdW5jdGlvbiBjb3VsZCBj
bG9zZSBhY3RpdmUKK2Nvbm5lY3Rpb25zIG9yIHNlcmlhbCBwb3J0cy4KKworSGFuZGxpbmcgQGNv
ZGV7cG9zdC13YWtlfSBldmVudHMgb2ZmZXJzIG1vcmUgbGVld2F5LiAgVXNlIHRoaXMsIGZvcgor
ZXhhbXBsZSwgdG8gcmVlc3RhYmxpc2ggY29ubmVjdGlvbnMuCisKK05vdGU6IFlvdXIgY29kZSwg
b3IgdGhlIGZ1bmN0aW9ucyBpdCBjYWxscywgc2hvdWxkIG5vdCByYWlzZSBhbnkgc2lnbmFscwor
b3IgYWxsIGhvb2tzIHdpbGwgYmUgaGFsdGVkLiAgWW91IGNhbiB3cmFwIHlvdXIgY29kZSBpbiBh
CitAY29kZXtjb25kaXRpb24tY2FzZX0gYmxvY2sgKEBweHJlZntFcnJvcnN9KS4KK0BlbmQgZGVm
b3B0CisKIEBub2RlIEZpbGUgTm90aWZpY2F0aW9ucwogQHNlY3Rpb24gTm90aWZpY2F0aW9ucyBv
biBGaWxlIENoYW5nZXMKIEBjaW5kZXggZmlsZSBub3RpZmljYXRpb25zCmRpZmYgLS1naXQgYS9l
dGMvTkVXUyBiL2V0Yy9ORVdTCmluZGV4IDllNWFjNzk2Njk3Li5lZTM0OTVhMTYyMiAxMDA2NDQK
LS0tIGEvZXRjL05FV1MKKysrIGIvZXRjL05FV1MKQEAgLTM1MzUsNiArMzUzNSwyMiBAQCBPbiBH
TlUvTGludXggc3lzdGVtcywgc2hlbGwgZXh0ZW5zaW9ucyBvciBzaW1pbGFyIGhlbHBlcnMgc3Vj
aCBhcwogPGh0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZXh0ZW5zaW9uLzMwNy9kYXNoLXRv
LWRvY2svPiBhbmQKIDxodHRwczovL3dpa2kudWJ1bnR1LmNvbS9Vbml0eS9MYXVuY2hlckFQST4u
CiAKKysrKworKiogTmV3IHBhY2thZ2UgJ3N5c3RlbS1zbGVlcCcuCitUaGlzIHBhY2thZ2UgcHJv
dmlkZXMgcGxhdGZvcm0tbmV1dHJhbCBpbnRlcmZhY2VzIHRvIGJsb2NrIHlvdXIgc3lzdGVtCitm
cm9tIGVudGVyaW5nIGlkbGUgc2xlZXAgYW5kIGEgaG9vayB0byBwcm9jZXNzIHByZS1zbGVlcCBh
bmQgcG9zdC13YWtlCitldmVudHMuICBZb3UgY2FuIHVzZSB0aGlzIHRvIGF2b2lkIHRoZSBzeXN0
ZW0gZW50ZXJpbmcgYW4gaWRsZSBzbGVlcAorc3RhdGUgYW5kIGludGVycnVwdGluZyBhIGxvbmct
cnVubmluZyBwcm9jZXNzIGR1ZSB0byBsYWNrIG9mIHVzZXIKK2FjdGl2aXR5LiAgVGhlIHNsZWVw
IGV2ZW50IGhvb2sgbGV0cyB5b3UsIGZvciBleGFtcGxlIGNsb3NlIGV4dGVybmFsCitjb25uZWN0
aW9ucyBvciBzZXJpYWwgcG9ydHMgYmVmb3JlIHNsZWVwaW5nLCBhbmQgcmVlc3RhYmxpc2ggdGhl
bSB3aGVuCit0aGUgc3lzdGVtIHdha2VzIHVwLgorCitTdXBwb3J0ZWQgY2FwYWJsZSBzeXN0ZW1z
IGFyZSBHTlUvTGludXggdmlhIEQtQnVzIChzbGVlcCBibG9ja2luZyBhbmQKK2V2ZW50cyByZXF1
aXJlIHRoZSBvcmcuZnJlZWRlc2t0b3AubG9naW4xIHNlcnZpY2UsIGRpc3BsYXkgc2xlZXAKK2Js
b2NraW5nIHJlcXVpcmVzIG9yZy5mcmVlZGVza3RvcC5TY3JlZW5zYXZlciBzZXJ2aWNlKSwgbWFj
T1MKKyhzbGVlcC9kaXNwbGF5IGJsb2NraW5nIHJlcXVpcmVzIDEwLjkrLCBzbGVlcCBldmVudHMg
YXJlIHN1cHBvcnRlZCBvbgorYWxsIHZlcnNpb25zKSwgTVMtV2luZG93cyAoc2xlZXAgYmxvY2tp
bmcgaXMgc3VwcG9ydGVkIG9uIGFsbCB2ZXJzaW9ucywKK3NsZWVwIGV2ZW50cyByZXF1aXJlIDgr
KS4KIAwKICogSW5jb21wYXRpYmxlIExpc3AgQ2hhbmdlcyBpbiBFbWFjcyAzMS4xCiAKZGlmZiAt
LWdpdCBhL2xpc3Avc3lzdGVtLXNsZWVwLmVsIGIvbGlzcC9zeXN0ZW0tc2xlZXAuZWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmJkMTRlOWQwZTUwCi0tLSAvZGV2L251
bGwKKysrIGIvbGlzcC9zeXN0ZW0tc2xlZXAuZWwKQEAgLTAsMCArMSw1MTMgQEAKKzs7OyBzeXN0
ZW0tc2xlZXAuZWwgLS0tIFN5c3RlbSBzbGVlcC93YWtlIGV2ZW50IG1hbmFnZW1lbnQgLSotIGxl
eGljYWwtYmluZGluZzogdCAtKi0KKworOzsgQ29weXJpZ2h0IChDKSAyMDI1LTIwMjYgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKzs7IEF1dGhvcjogU3RlcGhhbmUgTWFya3MgPHNo
aXBtaW50c0BnbWFpbC5jb20+Cis7OyBNYWludGFpbmVyOiBlbWFjcy1kZXZlbEBnbnUub3JnCis7
OyBLZXl3b3JkczogY29udmVuaWVuY2UKKzs7IFBhY2thZ2UtUmVxdWlyZXM6ICgoZW1hY3MgIjMx
LjEiKSkKKworOzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEVtYWNzLgorCis7OyBHTlUgRW1h
Y3MgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm
eQorOzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkKKzs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhl
ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCis7OyAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorCis7OyBHTlUgRW1hY3MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKzs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCis7OyBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCis7OyBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCis7OyBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorOzsgYWxv
bmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNl
bnNlcy8+LgorCis7OzsgQ29tbWVudGFyeToKKworOzsgQ2FsbCBgc3lzdGVtLXNsZWVwLWJsb2Nr
LXNsZWVwJyB0byBpbmhpYml0IHN5c3RlbS13aWRlIGlkbGUgc2xlZXAuCis7OyBJZGxlIHNsZWVw
IGlzIHR5cGljYWxseSB0cmlnZ2VyZWQgd2hlbiB0aGUgc3lzdGVtIGRvZXMgbm90IGRldGVjdAor
OzsgdXNlciBhY3Rpdml0eSBhbmQgaXMgaW5kZXBlbmRlbnQgb2YgYW55IHByb2Nlc3NpbmcgdGhh
dCBtYXkgYmUgb24KKzs7IGdvaW5nLiAgVGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgdG8gYmxvY2sg
aWRsZSBzbGVlcCBmb3IgbG9uZy1ydW5uaW5nCis7OyBvcGVyYXRpb25zLCBmb3IgZXhhbXBsZSwg
d2hlbiBhIGNvbXBpbGF0aW9uIGlzIHJ1bm5pbmcuICBZb3UgaGF2ZSB0aGUKKzs7IG9wdGlvbiBv
ZiBrZWVwaW5nIHRoZSBzeXN0ZW0gYWN0aXZlIHdoaWxlIGxldHRpbmcgdGhlIGRpc3BsYXkgc2xl
ZXAuCis7OyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSB0b2tlbiB3aGljaCB5b3UgbXVzdCB1c2Ug
dG8gdW5ibG9jayB0aGlzCis7OyByZXF1ZXN0LgorOzsKKzs7IENhbGwgYHN5c3RlbS1zbGVlcC11
bmJsb2NrLXNsZWVwJyB3aXRoIHRoZSB0b2tlbiBmcm9tCis7OyBgc3lzdGVtLXNsZWVwLWJsb2Nr
LXNsZWVwJyB0byB1bmJsb2NrIHN5c3RlbS13aWRlIGlkbGUgc2xlZXAgZm9yIHRoaXMKKzs7IHJl
cXVlc3QuICBUaGVyZSBtYXkgYmUgb3RoZXIgYWN0aXZlIHJlcXVlc3RzIHdoaWNoIHdpbGwgcHJl
dmVudCB0aGUKKzs7IHN5c3RlbSBmcm9tIHNsZWVwaW5nLgorOzsKKzs7IFRoZSBmdW5jdGlvbiBg
c3lzdGVtLXNsZWVwLXNsZWVwLWJsb2NrZWQtcCcgd2lsbCB0ZWxsIHlvdSBpZgorOzsgYHN5c3Rl
bS1zbGVlcCcgaGFzIGFueSBhY3RpdmUgc3lzdGVtIHNsZWVwIGJsb2Nrcy4KKzs7Cis7OyBOb3Rl
OiDigItXaGVuIHRoZSBFbWFjcyBwcm9jZXNzIGRpZXMsIGJsb2NrcyBhcmUgcmVsZWFzZWQgb24g
YWxsCis7OyBwbGF0Zm9ybXMuCis7OworOzsgWW91IGNhbiByZWdpc3RlciBmdW5jdGlvbnMgb24g
dGhlIGFibm9ybWFsIGhvb2sKKzs7IGBzeXN0ZW0tc2xlZXAtZXZlbnQtZnVuY3Rpb25zJy4gIEVh
Y2ggZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2hlbgorOzsgdGhlIHN5c3RlbSBpcyBwcmVwYXJp
bmcgZm9yIHNsZWVwIGFuZCB3aGVuIHRoZSBzeXN0ZW0gd2FrZXMgZnJvbQorOzsgc2xlZXAuICBU
aGVzZSBmdW5jdGlvbnMgYXJlIHVzZWZ1bCB3aGVuIHlvdSB3YW50IHRvIGNsb3NlIChhbmQKKzs7
IHBvdGVudGlhbGx5IHJlb3BlbikgZXh0ZXJuYWwgY29ubmVjdGlvbnMgb3Igc2VyaWFsIHBvcnRz
LgorOzsKKzs7IE9uIHN1cHBvcnRlZCBHTlUvTGludXggc3lzdGVtcywgdGhlIGltcGxlbWVudGF0
aW9uIGlzIHZpYSBELUJ1cyB0bworOzsgaW5oaWJpdCBpZGxlIHNsZWVwLCBrZWVwIHRoZSBkaXNw
bGF5IGFjdGl2ZSwgYW5kIGZvcndhcmQgZXZlbnRzIGZyb20KKzs7IGxvZ2luZCBmb3Igc3lzdGVt
IHNsZWVwIGV2ZW50cy4KKzs7Cis7OyBPbiBtYWNPUyBhbmQgTVMtV2luZG93cywgbmF0aXZlIEFQ
SXMgYXJlIHVzZWQgdG8gYmxvY2sgaWRsZSBzbGVlcCwKKzs7IGtlZXAgdGhlIGRpc3BsYXkgYWN0
aXZlLCBhbmQgcHJvdmlkZSBzbGVlcCBldmVudCBub3RpZmljYXRpb25zLgorOzsKKzs7IE9uIE1T
LVdpbmRvd3MsIGFuIGlkbGUgc2xlZXAgYmxvY2sgdGhhdCBrZWVwcyB0aGUgZGlzcGxheSBhY3Rp
dmUgbWF5Cis7OyBub3QgaW5oaWJpdCB0aGUgc2NyZWVuIHNhdmVyLgorOzsKKzs7IEV4dGVybmFs
bHkgdG8gRW1hY3MsIHRoZXJlIGFyZSBzeXN0ZW0gdXRpbGl0eSBmdW5jdGlvbnMgdGhhdCB5b3Ug
Y2FuCis7OyB1c2UgdG8gaW5zcGVjdCBhbGwgcHJvY2Vzc2VzIG9uIHlvdXIgc3lzdGVtIHRoYXQg
bWlnaHQgYmUgYmxvY2tpbmcgaXQKKzs7IGZyb20gc2xlZXBpbmcuCis7OworOzsgT24gRC1CdXMg
c3lzdGVtcywgeW91IGNhbiB1c2UgdGhlIGNvbW1hbmRzOgorOzsKKzs7ICAgc3lzdGVtZC1pbmhp
Yml0IC0tbGlzdAorOzsgb3IKKzs7ICAgZGJ1cy1zZW5kIC0tc3lzdGVtIC0tcHJpbnQtcmVwbHkg
LS1kZXN0PW9yZy5mcmVlZGVza3RvcC5sb2dpbjEgXAorOzsgICAvb3JnL2ZyZWVkZXNrdG9wL2xv
Z2luMSBcCis7OyAgIG9yZy5mcmVlZGVza3RvcC5sb2dpbjEuTWFuYWdlci5MaXN0SW5oaWJpdG9y
cworOzsKKzs7IE5vdGU6IFlvdSBjYW4gZmluZCB0aGUgc2xlZXAvc2h1dGRvd24gZGVsYXkgSW5o
aWJpdERlbGF5TWF4VVNlYyBpbgorOzsgdGhlIGZpbGUgbG9naW5kLmNvbmYoNSkgd2hpY2ggdHlw
aWNhbGx5IGRlZmF1bHRzIHRvIDUgc2Vjb25kcy4KKzs7Cis7OyBPbiBtYWNPUywgeW91IGNhbiB1
c2UgdGhlIGNvbW1hbmQ6Cis7OworOzsgICBwbXNldCAtZyBhc3NlcnRpb25zCis7OworOzsgT24g
TVMtV2luZG93cywgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIHdoaWNoIG1heSBu
ZWVkIHRvIGJlCis7OyBydW4gYXMgYW4gYWRtaW5pc3RyYXRvcjoKKzs7Cis7OyAgIHBvd2VyY2Zn
IC1yZXF1ZXN0cworCis7OzsgQ29kZToKKworKHJlcXVpcmUgJ2NsLWxpYikKKworOzsgUGFjaWZ5
IHRoZSBieXRlIGNvbXBpbGVyLgorKGRlY2xhcmUtZnVuY3Rpb24gZGJ1cy0tZmQtY2xvc2UgImRi
dXNiaW5kLmMiKQorKGRlY2xhcmUtZnVuY3Rpb24gZGJ1cy11bnJlZ2lzdGVyLW9iamVjdCAiZGJ1
cy5lbCIpCisoZGVjbGFyZS1mdW5jdGlvbiBkYnVzLXJlZ2lzdGVyLXNpZ25hbCAiZGJ1cy5lbCIp
CisoZGVjbGFyZS1mdW5jdGlvbiBkYnVzLWNhbGwtbWV0aG9kICJkYnVzLmVsIikKKyhkZWNsYXJl
LWZ1bmN0aW9uIGRidXMtbGlzdC1hY3RpdmF0YWJsZS1uYW1lcyAiZGJ1cy5lbCIpCisoZGVmdmFy
IGRidXMtc2VydmljZS1lbWFjcykKKworKGRlZmdyb3VwIHN5c3RlbS1zbGVlcCBuaWwKKyAgIlN5
c3RlbSBzbGVlcC93YWtlIGJsb2NraW5nIGFuZCBldmVudCBtYW5hZ2VtZW50LiIKKyAgOmdyb3Vw
ICdzeXN0ZW0taW50ZXJmYWNlCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZnZhciBzeXN0ZW0t
c2xlZXAtLWJhY2stZW5kIG5pbAorICAiR2VuZXJpYyBzbGVlcC13YWtlIG1ldGhvZCBzeXN0ZW0g
ZGlzcGF0Y2hlci4iKQorCisoZGVmdmFyIHN5c3RlbS1zbGVlcC0tc2xlZXAtYmxvY2stdG9rZW5z
IG5pbAorICAiQSBsaXN0IG9mIGFjdGl2ZSBzbGVlcC1ibG9jayB0b2tlbnMuCitJZiBub24tbmls
LCBpZGxlIHNsZWVwIGlzIGluaGliaXRlZCBieSBgc3lzdGVtLXNsZWVwJy4iKQorCisoY2wtZGVm
c3RydWN0CisgICAgKHNsZWVwLWV2ZW50ICg6dHlwZSBsaXN0KSA6bmFtZWQKKyAgICAgICAgICAg
ICAgICAgKDpjb25zdHJ1Y3RvciBuaWwpCisgICAgICAgICAgICAgICAgICg6Y29uc3RydWN0b3Ig
bWFrZS1zbGVlcC1ldmVudCAoc3RhdGUpKSkKKyAgc3RhdGUpCisKKzs7OyMjI2F1dG9sb2FkCiso
ZGVmY3VzdG9tIHN5c3RlbS1zbGVlcC1ldmVudC1mdW5jdGlvbnMgbmlsCisgICJBYm5vcm1hbCBo
b29rIGludm9rZWQgb24gc3lzdGVtIHNsZWVwIGV2ZW50cy4KK0VhY2ggZnVuY3Rpb24gaXMgY2Fs
bGVkIHdpdGggb25lIGFyZ3VtZW50IEVWRU5ULCBhIHNsZWVwIGV2ZW50LiAgRVZFTlQKK3N0YXRl
IGNhbiBiZSByZXRyaWV2ZWQgdmlhIFxcK2Aoc2xlZXAtZXZlbnQtc3RhdGUgRVZFTlQpJy4gIEl0
IHdpbGwgYmUKK29uZSBvZiB0aGUgc3ltYm9scyBcXCtgcHJlLXNsZWVwJyBvciBcXCtgcG9zdC13
YWtlJy4KKworSGFuZGxpbmcgXFwrYHByZS1zbGVlcCcgZXZlbnRzIHNob3VsZCBiZSBkb25lIGFz
IGZhc3QgYXMgcG9zc2libGUsIGRvIGFzCitsaXR0bGUgYXMgcG9zc2libGUgYW5kIGF2b2lkIHVz
ZXIgcHJvbXB0cy4gIFN5c3RlbXMgb2Z0ZW4gZ3JhbnQgYSB2ZXJ5CitzaG9ydCBwcmUtc2xlZXAg
cHJvY2Vzc2luZyBpbnRlcnZhbCwgdHlwaWNhbGx5IHJhbmdpbmcgYmV0d2VlbiAyIGFuZCA1Citz
ZWNvbmRzLiAgVGhlIHN5c3RlbSBtYXkgc2xlZXAgZXZlbiBpZiB5b3VyIHByb2Nlc3NpbmcgaXMg
bm90IGNvbXBsZXRlLgorRm9yIGV4YW1wbGUsIHlvdXIgZnVuY3Rpb24gY291bGQgY2xvc2UgYWN0
aXZlIGNvbm5lY3Rpb25zIG9yIHNlcmlhbAorcG9ydHMuCisKK0hhbmRsaW5nIFxcK2Bwb3N0LXdh
a2UnIGV2ZW50cyBvZmZlcnMgbW9yZSBsZWV3YXkuICBZb3VyIGZ1bmN0aW9uIGNvdWxkCityZWVz
dGFibGlzaCBjb25uZWN0aW9ucy4KKworTm90ZTogWW91ciBjb2RlLCBvciB0aGUgZnVuY3Rpb25z
IGl0IGNhbGxzLCBzaG91bGQgbm90IHJhaXNlIGFueSBzaWduYWxzCitvciBhbGwgaG9va3Mgd2ls
bCBiZSBoYWx0ZWQgcHJldmVudGluZyBvdGhlciBob29rIGZ1bmN0aW9ucyBmcm9tCitjbGVhbmlu
ZyB1cCBvciB3YWtpbmcgdXAuICBZb3UgY2FuIHdyYXAgeW91ciBjb2RlIGluIGEgYGNvbmRpdGlv
bi1jYXNlJworYmxvY2suIgorICA6dHlwZSAnaG9vaworICA6dmVyc2lvbiAiMzEuMSIpCisKKzs7
OyMjI2F1dG9sb2FkCisoZGVmdW4gc3lzdGVtLXNsZWVwLWJsb2NrLXNsZWVwICgmb3B0aW9uYWwg
d2h5IGFsbG93LWRpc3BsYXktc2xlZXApCisgICJJbmhpYml0IHN5c3RlbSBpZGxlIHNsZWVwLgor
T3B0aW9uYWwgV0hZIGlzIGEgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyBhIHNsZWVwIGJsb2NrIHRv
IHN5c3RlbSB1dGlsaXR5Citjb21tYW5kcyB0aGF0IGluc3BlY3Qgc3lzdGVtLXdpZGUgYmxvY2tz
LiAgV0hZIGRlZmF1bHRzIHRvIFwiRW1hY3NcIi4KKworT3B0aW9uYWwgQUxMT1ctRElTUExBWS1T
TEVFUCwgd2hlbiBub24tbmlsLCBhbGxvd3MgdGhlIGRpc3BsYXkgdG8gc2xlZXAKK29yIGEgc2Ny
ZWVuIHNhdmVyIHRvIHJ1biB3aGlsZSB0aGUgc3lzdGVtIGlkbGUgc2xlZXAgaXMgYmxvY2tlZC4g
IFRoZQorZGVmYXVsdCBpcyB0byBrZWVwIHRoZSBkaXNwbGF5IGFjdGl2ZS4KKworUmV0dXJuIGEg
c2xlZXAgYmxvY2tpbmcgdG9rZW4uICBZb3UgbXVzdCByZXRhaW4gdGhpcyB2YWx1ZSBhbmQgcHJv
dmlkZQoraXQgdG8gYHN5c3RlbS1zbGVlcC11bmJsb2NrLXNsZWVwJyB0byB1bmJsb2NrIGl0cyBh
c3NvY2lhdGVkIGJsb2NrLgorCitSZXR1cm4gbmlsIGlmIHN5c3RlbSBzbGVlcCBjYW5ub3QgYmUg
aW5oaWJpdGVkLgorCitOb3RlOiBBbGwgYWN0aXZlIGJsb2NrcyBhcmUgcmVsZWFzZWQgd2hlbiB0
aGUgRW1hY3MgcHJvY2VzcyBkaWVzLgorRGVzcGl0ZSB0aGlzLCB5b3Ugc2hvdWxkIHVuYmxvY2sg
eW91ciBibG9ja3Mgd2hlbiB5b3VyIHByb2Nlc3NpbmcgaXMKK2NvbXBsZXRlLiAgU2VlIGB3aXRo
LXN5c3RlbS1zbGVlcC1ibG9jaycgZm9yIGFuIGVhc3kgd2F5IHRvIGRvIHRoYXQuIgorICAod2hl
biBzeXN0ZW0tc2xlZXAtLWJhY2stZW5kCisgICAgKHN5c3RlbS1zbGVlcC0tYmxvY2stc2xlZXAg
KG9yIHdoeSAiRW1hY3MiKSBhbGxvdy1kaXNwbGF5LXNsZWVwKSkpCisKKyhkZWZ1biBzeXN0ZW0t
c2xlZXAtdW5ibG9jay1zbGVlcCAodG9rZW4pCisgICJVbmJsb2NrIHRoZSBzeXN0ZW0gc2xlZXAg
YmxvY2sgYXNzb2NpYXRlZCB3aXRoIFRPS0VOLgorUmV0dXJuIG5vbi1uaWwgVE9LRU4gd2FzIHVu
YmxvY2tlZCwgb3IgbmlsIGlmIG5vdC4KK0luIHRoZSB1bmxpa2VseSBldmVudCB0aGF0IHVuYmxv
Y2sgZmFpbHMsIHRoZSBibG9jayB3aWxsIGJlIHJlbGVhc2VkCit3aGVuIHRoZSBFbWFjcyBwcm9j
ZXNzIGRpZXMuIgorICAod2hlbiBzeXN0ZW0tc2xlZXAtLWJhY2stZW5kCisgICAgKHN5c3RlbS1z
bGVlcC0tdW5ibG9jay1zbGVlcCB0b2tlbikpKQorCis7OzsjIyNhdXRvbG9hZAorKGRlZm1hY3Jv
IHdpdGgtc3lzdGVtLXNsZWVwLWJsb2NrICgmb3B0aW9uYWwgd2h5IGFsbG93LWRpc3BsYXktc2xl
ZXAgJnJlc3QgYm9keSkKKyAgIkV4ZWN1dGUgdGhlIGZvcm1zIGluIEJPRFkgd2hpbGUgYmxvY2tp
bmcgc3lzdGVtIHNsZWVwLgorVGhlIG9wdGlvbmFsIGFyZ3VtZW50cyBXSFkgYW5kIEFMTE9XLURJ
U1BMQVktU0xFRVAgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nCithcyBpbiBgc3lzdGVtLXNsZWVwLWJs
b2NrLXNsZWVwJywgd2hpY2ggc2VlLgorVGhlIGJsb2NrIGlzIHVuYmxvY2tlZCB3aGVuIEJPRFkg
Y29tcGxldGVzLiIKKyAgKGRlY2xhcmUgKGluZGVudCAxKSAoZGVidWcgdCkpCisgIChsZXQgKCh0
b2tlbiAobWFrZS1zeW1ib2wgIi0tc2xlZXAtdG9rZW4tLSIpKSkKKyAgICBgKGxldCAoKCx0b2tl
biAoc3lzdGVtLXNsZWVwLWJsb2NrLXNsZWVwICx3aHkgLGFsbG93LWRpc3BsYXktc2xlZXApKSkK
KyAgICAgICAodW53aW5kLXByb3RlY3QKKyAgICAgICAgICAgKHByb2duCisgICAgICAgICAgICAg
LEBib2R5KQorICAgICAgICAgKHN5c3RlbS1zbGVlcC11bmJsb2NrLXNsZWVwICx0b2tlbikpKSkp
CisKKyhkZWZ1biBzeXN0ZW0tc2xlZXAtdW5ibG9jay1hbGwtc2xlZXAtYmxvY2tzICgpCisgICJV
bmJsb2NrIGFsbCBgc3lzdGVtLXNsZWVwJyBibG9ja3MuIgorICAod2hpbGUgc3lzdGVtLXNsZWVw
LS1zbGVlcC1ibG9jay10b2tlbnMKKyAgICAoc3lzdGVtLXNsZWVwLXVuYmxvY2stc2xlZXAgKGNh
ciBzeXN0ZW0tc2xlZXAtLXNsZWVwLWJsb2NrLXRva2VucykpKSkKKworOzs7IyMjYXV0b2xvYWQK
KyhkZWZ1biBzeXN0ZW0tc2xlZXAtc2xlZXAtYmxvY2tlZC1wICgpCisgICJSZXR1cm4gbm9uLW5p
bCBpZiB0aGVyZSBhcmUgYWN0aXZlIHNsZWVwIGJsb2Nrcy4iCisgIChhbmQgc3lzdGVtLXNsZWVw
LS1iYWNrLWVuZAorICAgICAgIHN5c3RlbS1zbGVlcC0tc2xlZXAtYmxvY2stdG9rZW5zKSkKKwor
DAorOzsgSW50ZXJuYWwgaW1wbGVtZW50YXRpb24uCisKKyhkZWZ1biBzeXN0ZW0tc2xlZXAtLXNl
dC1iYWNrLWVuZCAoKQorICAiRGV0ZXJtaW5lIHNsZWVwL3dha2UgaG9zdCBzeXN0ZW0gdHlwZS4i
CisgIDs7IE9yZGVyIG1hdHRlcnMgdG8gYWNjb21tb2RhdGUgdGhlIGNhc2VzIHdoZXJlIGFuIE5T
IG9yIE1TLVdpbmRvd3MKKyAgOzsgYnVpbGQgaGF2ZSB0aGUgZGJ1cyBmZWF0dXJlLgorICAoc2V0
cSBzeXN0ZW0tc2xlZXAtLWJhY2stZW5kCisgICAgICAgIChjb25kICgoZmVhdHVyZXAgJ25zKSAn
bnMpCisgICAgICAgICAgICAgICgoZmVhdHVyZXAgJ3czMikgJ3czMikKKyAgICAgICAgICAgICAg
KChhbmQgKHJlcXVpcmUgJ2RidXMpCisgICAgICAgICAgICAgICAgICAgIChmZWF0dXJlcCAnZGJ1
c2JpbmQpCisgICAgICAgICAgICAgICAgICAgIChtZW1iZXIgIm9yZy5mcmVlZGVza3RvcC5sb2dp
bjEiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRidXMtbGlzdC1hY3RpdmF0YWJsZS1u
YW1lcyA6c3lzdGVtKSkpCisgICAgICAgICAgICAgICAnZGJ1cykKKyAgICAgICAgICAgICAgKHQg
bmlsKSkpKQorCisoZGVmdW4gc3lzdGVtLXNsZWVwLS1zbGVlcC1ldmVudC1oYW5kbGVyIChldmVu
dCkKKyAgImBzbGVlcC1ldmVudCcgRVZFTlQgaGFuZGxlci4iCisgIChkZWNsYXJlIChjb21wbGV0
aW9uIGlnbm9yZSkpCisgIChpbnRlcmFjdGl2ZSAiZSIpCisgIChydW4taG9vay13aXRoLWFyZ3Mg
J3N5c3RlbS1zbGVlcC1ldmVudC1mdW5jdGlvbnMgZXZlbnQpKQorCisoZGVmdW4gc3lzdGVtLXNs
ZWVwLWVuYWJsZSAoKQorICAiRW5hYmxlIGBzeXN0ZW0tc2xlZXAnLiIKKyAgKHVubGVzcyBzeXN0
ZW0tc2xlZXAtLWJhY2stZW5kCisgICAgKGlmIChhbmQgKHN5c3RlbS1zbGVlcC0tc2V0LWJhY2st
ZW5kKQorICAgICAgICAgICAgIChzeXN0ZW0tc2xlZXAtLWVuYWJsZSkpCisgICAgICAgIChrZXlt
YXAtc2V0IHNwZWNpYWwtZXZlbnQtbWFwICI8c2xlZXAtZXZlbnQ+IgorICAgICAgICAgICAgICAg
ICAgICAjJ3N5c3RlbS1zbGVlcC0tc2xlZXAtZXZlbnQtaGFuZGxlcikKKyAgICAgICh3YXJuICJg
c3lzdGVtLXNsZWVwJyBjb3VsZCBub3QgYmUgaW5pdGlhbGl6ZWQiKSkpKQorCisoZGVmdW4gc3lz
dGVtLXNsZWVwLWRpc2FibGUgKCkKKyAgIkRpc2FibGUgYHN5c3RlbS1zbGVlcCcuIgorICAod2hl
biBzeXN0ZW0tc2xlZXAtLWJhY2stZW5kCisgICAgKGtleW1hcC1zZXQgc3BlY2lhbC1ldmVudC1t
YXAgIjxzbGVlcC1ldmVudD4iICMnaWdub3JlKQorICAgIChzeXN0ZW0tc2xlZXAtdW5ibG9jay1h
bGwtc2xlZXAtYmxvY2tzKQorICAgIChzeXN0ZW0tc2xlZXAtLWRpc2FibGUpCisgICAgKHNldHEg
c3lzdGVtLXNsZWVwLS1iYWNrLWVuZCBuaWwpKSkKKworKGNsLWRlZmdlbmVyaWMgc3lzdGVtLXNs
ZWVwLS1lbmFibGUgKCkKKyAgIkVuYWJsZSB0aGUgYHN5c3RlbS1zbGVlcCcgYmFjayBlbmQuCitS
ZXR1cm4gdCBpZiB0aGUgYmFjayBlbmQgaXMgaW5pdGlhbGl6ZWQsIG9yIG5pbC4iKQorCisoY2wt
ZGVmZ2VuZXJpYyBzeXN0ZW0tc2xlZXAtLWRpc2FibGUgKCkKKyAgIkRpc2FibGUgdGhlIHNsZWVw
L3dha2UgYmFjayBlbmQuIikKKworKGNsLWRlZmdlbmVyaWMgc3lzdGVtLXNsZWVwLS1ibG9jay1z
bGVlcCAod2h5IGFsbG93LWRpc3BsYXktc2xlZXApCisgICJJbmhpYml0IHN5c3RlbSBpZGxlIHNs
ZWVwLgorV0hZIGlzIGEgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyBhIHNsZWVwIGJsb2NrIHRvIHN5
c3RlbSB1dGlsaXR5IGNvbW1hbmRzCit0aGF0IGluc3BlY3Qgc3lzdGVtLXdpZGUgYmxvY2tzLgor
V2hlbiBub24tbmlsLCBBTExPVy1ESVNQTEFZLVNMRUVQIGFsbG93cyB0aGUgZGlzcGxheSB0byBz
bGVlcCBvciBhCitzY3JlZW4gc2F2ZXIgdG8gcnVuIHdoaWxlIHRoZSBzeXN0ZW0gaWRsZSBzbGVl
cCBpcyBibG9ja2VkLiAgVGhlIGRlZmF1bHQKK2lzIHRvIGtlZXAgdGhlIGRpc3BsYXkgYWN0aXZl
LgorUmV0dXJuIGEgc2xlZXAtYmxvY2sgdG9rZW4uIikKKworKGNsLWRlZmdlbmVyaWMgc3lzdGVt
LXNsZWVwLS11bmJsb2NrLXNsZWVwICh0b2tlbikKKyAgIlVuYmxvY2sgdGhlIHN5c3RlbSBzbGVl
cCBibG9jayBhc3NvY2lhdGVkIHdpdGggVE9LRU4uCitSZXR1cm4gbm9uLW5pbCBUT0tFTiB3YXMg
dW5ibG9ja2VkLCBvciBuaWwgaWYgbm90LiIpCisKKyhkZWZ2YXIgc3lzdGVtLXNsZWVwLS1ldmVu
dC1pbi1wcm9ncmVzcyBuaWwpCisoZGVmdmFyIHN5c3RlbS1zbGVlcC0tZXZlbnQtcXVldWUgbmls
KQorCisoZGVmdW4gc3lzdGVtLXNsZWVwLS1zbGVlcC1ldmVudC1mdW5jdGlvbiAoZXZlbnQpCisg
ICJIYW5kbGUgPHNsZWVwLWV2ZW50PiBzcGVjaWFsIGV2ZW50cyBhbmQgYXZvaWQgcmFjZXMuIgor
ICA7OyBRdWV1ZSBpbmNvbWluZyBldmVudC4KKyAgKHNldHEgc3lzdGVtLXNsZWVwLS1ldmVudC1x
dWV1ZQorICAgICAgICAoYXBwZW5kIHN5c3RlbS1zbGVlcC0tZXZlbnQtcXVldWUgKGxpc3QgZXZl
bnQpKSkKKyAgOzsgSWYgYW4gZXZlbnQgaXMgYWxyZWFkeSBpbiBwcm9ncmVzcywgcmV0dXJuIHJp
Z2h0IGF3YXkuCisgIDs7IE90aGVyd2lzZSwgcHJvY2VzcyBxdWV1ZWQgZXZlbnRzLgorICAod2hp
bGUgKGFuZCAobm90IHN5c3RlbS1zbGVlcC0tZXZlbnQtaW4tcHJvZ3Jlc3MpCisgICAgICAgICAg
ICAgIHN5c3RlbS1zbGVlcC0tZXZlbnQtcXVldWUpCisgICAgKGxldCAoKGN1cnJlbnQtZXZlbnQg
KHBvcCBzeXN0ZW0tc2xlZXAtLWV2ZW50LXF1ZXVlKSkpCisgICAgICAoc2V0cSBzeXN0ZW0tc2xl
ZXAtLWV2ZW50LWluLXByb2dyZXNzIGN1cnJlbnQtZXZlbnQpCisgICAgICAodW53aW5kLXByb3Rl
Y3QKKyAgICAgICAgICAocnVuLWhvb2std2l0aC1hcmdzICdzeXN0ZW0tc2xlZXAtZXZlbnQtZnVu
Y3Rpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50LWV2ZW50KQorICAg
ICAgICAoc2V0cSBzeXN0ZW0tc2xlZXAtLWV2ZW50LWluLXByb2dyZXNzIG5pbCkpKSkpCisKKwwK
Kzs7IEQtQnVzIHN1cHBvcnQuCisKKyhkZWZ2YXIgc3lzdGVtLXNsZWVwLS1kYnVzLXNsZWVwLWlu
aGliaXRvci10eXBlcyAic2xlZXAiCisgICJUaGlzIGlzIGEgY29sb24tc2VwYXJhdGVkIGxpc3Qg
b2Ygb3B0aW9ucy4KK1RoZSBkZWZhdWx0IGlzIFwic2xlZXBcIiB3aGljaCBpcyBjb21wYXRpYmxl
IHdpdGggdGhlIG90aGVyIHN1cHBvcnRlZAorYHN5c3RlbS1zbGVlcCcgcGxhdGZvcm1zLiAgVGhp
cyBjb3VsZCBhbHNvIGJlCitcInNsZWVwOnNodXRkb3duXCIuIFNodXRkb3duIGlzIGF2YWlsYWJs
ZSBvbmx5IG9uIEQtQnVzIHN5c3RlbXMuIikKKworKGRlZnZhciBzeXN0ZW0tc2xlZXAtLWRidXMt
ZGVsYXktbG9jayBuaWwpCisoZGVmdmFyIHN5c3RlbS1zbGVlcC0tZGJ1cy1wcmUtc2xlZXAtc2ln
bmFsIG5pbCkKKworKGRlZnVuIHN5c3RlbS1zbGVlcC0tZGJ1cy1kZWxheS1sb2NrIChtYWtlLW9y
LWNsb3NlKQorICAoY29uZCAobWFrZS1vci1jbG9zZQorICAgICAgICAgKGlmIHN5c3RlbS1zbGVl
cC0tZGJ1cy1kZWxheS1sb2NrCisgICAgICAgICAgICAgKGVycm9yICJEZWxheSBsb2NrIHNob3Vs
ZCBiZSBuaWwiKQorICAgICAgICAgICAoc2V0cSBzeXN0ZW0tc2xlZXAtLWRidXMtZGVsYXktbG9j
aworICAgICAgICAgICAgICAgICAoZGJ1cy1jYWxsLW1ldGhvZAorICAgICAgICAgICAgICAgICAg
OnN5c3RlbQorICAgICAgICAgICAgICAgICAgIm9yZy5mcmVlZGVza3RvcC5sb2dpbjEiCisgICAg
ICAgICAgICAgICAgICAiL29yZy9mcmVlZGVza3RvcC9sb2dpbjEiCisgICAgICAgICAgICAgICAg
ICAib3JnLmZyZWVkZXNrdG9wLmxvZ2luMS5NYW5hZ2VyIgorICAgICAgICAgICAgICAgICAgIklu
aGliaXQiCisgICAgICAgICAgICAgICAgICA6a2VlcC1mZAorICAgICAgICAgICAgICAgICAgc3lz
dGVtLXNsZWVwLS1kYnVzLXNsZWVwLWluaGliaXRvci10eXBlcworICAgICAgICAgICAgICAgICAg
ZGJ1cy1zZXJ2aWNlLWVtYWNzCisgICAgICAgICAgICAgICAgICAiRW1hY3Mgc2xlZXAgZXZlbnQg
d2F0Y2hlciIKKyAgICAgICAgICAgICAgICAgICJkZWxheSIpKSkpCisgICAgICAgICh0CisgICAg
ICAgICAod2hlbiBzeXN0ZW0tc2xlZXAtLWRidXMtZGVsYXktbG9jaworICAgICAgICAgICAoZGJ1
cy0tZmQtY2xvc2Ugc3lzdGVtLXNsZWVwLS1kYnVzLWRlbGF5LWxvY2spCisgICAgICAgICAgIChz
ZXRxIHN5c3RlbS1zbGVlcC0tZGJ1cy1kZWxheS1sb2NrIG5pbCkpKSkpCisKKyhkZWZ1biBzeXN0
ZW0tc2xlZXAtLWRidXMtcHJlcGFyZS1mb3Itc2xlZXAtY2FsbGJhY2sgKHNsZWVwLW9yLXdha2Up
CisgIChjb25kIChzbGVlcC1vci13YWtlCisgICAgICAgICAoaW5zZXJ0LXNwZWNpYWwtZXZlbnQg
KG1ha2Utc2xlZXAtZXZlbnQgJ3ByZS1zbGVlcCkpKQorICAgICAgICAodAorICAgICAgICAgKGlu
c2VydC1zcGVjaWFsLWV2ZW50IChtYWtlLXNsZWVwLWV2ZW50ICdwb3N0LXdha2UpKSkpKQorCiso
ZGVmdW4gc3lzdGVtLXNsZWVwLS1kYnVzLXByZXBhcmUtZm9yLXNsZWVwLXdhdGNoZXIgKG1ha2Ut
b3ItY2xvc2UpCisgIChjb25kIChtYWtlLW9yLWNsb3NlCisgICAgICAgICAoaWYgc3lzdGVtLXNs
ZWVwLS1kYnVzLXByZS1zbGVlcC1zaWduYWwKKyAgICAgICAgICAgICAoZXJyb3IgIlByZXBhcmVG
b3JTbGVlcCB3YXRjaGVyIHNob3VsZCBiZSBuaWwiKQorICAgICAgICAgICAoc2V0cSBzeXN0ZW0t
c2xlZXAtLWRidXMtcHJlLXNsZWVwLXNpZ25hbAorCSAgICAgICAgIChkYnVzLXJlZ2lzdGVyLXNp
Z25hbAorICAgICAgICAgICAgICAgICAgOnN5c3RlbQorCSAgICAgICAgICAib3JnLmZyZWVkZXNr
dG9wLmxvZ2luMSIKKwkgICAgICAgICAgIi9vcmcvZnJlZWRlc2t0b3AvbG9naW4xIgorCSAgICAg
ICAgICAib3JnLmZyZWVkZXNrdG9wLmxvZ2luMS5NYW5hZ2VyIgorCSAgICAgICAgICAiUHJlcGFy
ZUZvclNsZWVwIgorCSAgICAgICAgICAjJ3N5c3RlbS1zbGVlcC0tZGJ1cy1wcmVwYXJlLWZvci1z
bGVlcC1jYWxsYmFjaykpKSkKKyAgICAgICAgKHQKKyAgICAgICAgIChkYnVzLXVucmVnaXN0ZXIt
b2JqZWN0IHN5c3RlbS1zbGVlcC0tZGJ1cy1wcmUtc2xlZXAtc2lnbmFsKQorICAgICAgICAgKHNl
dHEgc3lzdGVtLXNsZWVwLS1kYnVzLXByZS1zbGVlcC1zaWduYWwgbmlsKSkpKQorCisoZGVmdW4g
c3lzdGVtLXNsZWVwLS1kYnVzLXByZXBhcmUtZm9yLXNsZWVwLWZ1bmN0aW9uIChldmVudCkKKyAg
KHBjYXNlIChzbGVlcC1ldmVudC1zdGF0ZSBldmVudCkKKyAgICAoJ3ByZS1zbGVlcAorICAgICAo
c3lzdGVtLXNsZWVwLS1kYnVzLWRlbGF5LWxvY2sgbmlsKSkKKyAgICAoJ3Bvc3Qtd2FrZQorICAg
ICAoc3lzdGVtLXNsZWVwLS1kYnVzLWRlbGF5LWxvY2sgdCkpKSkKKworKGNsLWRlZm1ldGhvZCBz
eXN0ZW0tc2xlZXAtLWVuYWJsZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChzeXN0ZW0tc2xlZXAtLWJhY2stZW5kIChlcWwgJ2RidXMpKSkKKyAgOzsgT3Jk
ZXIgbWF0dGVycy4KKyAgKGFkZC1ob29rICdzeXN0ZW0tc2xlZXAtZXZlbnQtZnVuY3Rpb25zCisg
ICAgICAgICAgIydzeXN0ZW0tc2xlZXAtLWRidXMtcHJlcGFyZS1mb3Itc2xlZXAtZnVuY3Rpb24K
KyAgICAgICAgICA7OyBUaGlzIG11c3QgcnVuIGxhc3QuCisgICAgICAgICAgOTkpCisgIChzeXN0
ZW0tc2xlZXAtLWRidXMtZGVsYXktbG9jayB0KQorICAoc3lzdGVtLXNsZWVwLS1kYnVzLXByZXBh
cmUtZm9yLXNsZWVwLXdhdGNoZXIgdCkKKyAgdCkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tc2xl
ZXAtLWRpc2FibGUgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHN5c3RlbS1zbGVlcC0tYmFjay1lbmQgKGVxbCAnZGJ1cykpKQorICAoc3lzdGVtLXNsZWVw
LS1kYnVzLXByZXBhcmUtZm9yLXNsZWVwLXdhdGNoZXIgbmlsKQorICAoc3lzdGVtLXNsZWVwLS1k
YnVzLWRlbGF5LWxvY2sgbmlsKQorICAocmVtb3ZlLWhvb2sgJ3N5c3RlbS1zbGVlcC1ldmVudC1m
dW5jdGlvbnMKKyAgICAgICAgICAgICAgICMnc3lzdGVtLXNsZWVwLS1kYnVzLXByZXBhcmUtZm9y
LXNsZWVwLWZ1bmN0aW9uKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tc2xlZXAtLWJsb2NrLXNs
ZWVwICh3aHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3ct
ZGlzcGxheS1zbGVlcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
Y29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVt
LXNsZWVwLS1iYWNrLWVuZCAoZXFsICdkYnVzKSkpCisgIChsZXQgKChzdWJ0b2tlbnMpKQorICAg
IChpZi1sZXQqICgoc2xlZXAtY29va2llIChkYnVzLWNhbGwtbWV0aG9kCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDpzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9y
Zy5mcmVlZGVza3RvcC5sb2dpbjEiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvb3Jn
L2ZyZWVkZXNrdG9wL2xvZ2luMSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZy5m
cmVlZGVza3RvcC5sb2dpbjEuTWFuYWdlciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkluaGliaXQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDprZWVwLWZkCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbS1zbGVlcC0tZGJ1cy1zbGVlcC1pbmhpYml0b3It
dHlwZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJ1cy1zZXJ2aWNlLWVtYWNzCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoeQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiYmxvY2siKSkpCisgICAgICAgIChwcm9nbgorICAgICAgICAgIChsZXQgKChpbmhpYml0
LXF1aXQgdCkpCisgICAgICAgICAgICAocHVzaCAoY29ucyAnZGJ1cy1pbmhpYml0b3ItbG9jayBz
bGVlcC1jb29raWUpIHN1YnRva2VucykpCisgICAgICAgICAgKHVubGVzcyBhbGxvdy1kaXNwbGF5
LXNsZWVwCisgICAgICAgICAgICAoaWYtbGV0KiAoKHNjcmVlbi1jb29raWUKKyAgICAgICAgICAg
ICAgICAgICAgICAgKGRidXMtY2FsbC1tZXRob2QKKyAgICAgICAgICAgICAgICAgICAgICAgIDpz
ZXNzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAib3JnLmZyZWVkZXNrdG9wLlNjcmVlblNh
dmVyIgorICAgICAgICAgICAgICAgICAgICAgICAgIi9vcmcvZnJlZWRlc2t0b3AvU2NyZWVuU2F2
ZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAib3JnLmZyZWVkZXNrdG9wLlNjcmVlblNhdmVy
IgorICAgICAgICAgICAgICAgICAgICAgICAgIkluaGliaXQiCisgICAgICAgICAgICAgICAgICAg
ICAgICBkYnVzLXNlcnZpY2UtZW1hY3MKKyAgICAgICAgICAgICAgICAgICAgICAgICJTY3JlZW4g
U2F2ZXIgQmxvY2siKSkpCisgICAgICAgICAgICAgICAgKGxldCAoKGluaGliaXQtcXVpdCB0KSkK
KyAgICAgICAgICAgICAgICAgIChwdXNoIChjb25zICdkYnVzLXNjcmVlbnNhdmVyLWxvY2sgc2Ny
ZWVuLWNvb2tpZSkgc3VidG9rZW5zKSkKKyAgICAgICAgICAgICAgKHdhcm4gIlVuYWJsZSB0byBi
bG9jayB0aGUgc2NyZWVuIHNhdmVyIikpKQorICAgICAgICAgIChsZXQgKChpbmhpYml0LXF1aXQg
dCkpCisgICAgICAgICAgICAobGV0ICgodG9rZW4gKGxpc3QgOnN5c3RlbSAnZGJ1cyA6d2h5IHdo
eSA6c3VidG9rZW5zIHN1YnRva2VucykpKQorICAgICAgICAgICAgICAocHVzaCB0b2tlbiBzeXN0
ZW0tc2xlZXAtLXNsZWVwLWJsb2NrLXRva2VucykKKyAgICAgICAgICAgICAgdG9rZW4pKSkKKyAg
ICAgICh3YXJuICJVbmFibGUgdG8gYmxvY2sgc3lzdGVtIHNsZWVwIikpKSkKKworKGNsLWRlZm1l
dGhvZCBzeXN0ZW0tc2xlZXAtLXVuYmxvY2stc2xlZXAgKHRva2VuCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXNsZWVwLS1iYWNrLWVuZCAoZXFsICdkYnVz
KSkpCisKKyAgKGlmIChtZW1xIHRva2VuIHN5c3RlbS1zbGVlcC0tc2xlZXAtYmxvY2stdG9rZW5z
KQorICAgICAgKHByb2duCisgICAgICAgIChsZXQgKChpbmhpYml0LXF1aXQgdCkpCisgICAgICAg
ICAgKHNldHEgc3lzdGVtLXNsZWVwLS1zbGVlcC1ibG9jay10b2tlbnMKKyAgICAgICAgICAgICAg
ICAocmVtcSB0b2tlbiBzeXN0ZW0tc2xlZXAtLXNsZWVwLWJsb2NrLXRva2VucykpKQorICAgICAg
ICAoZG9saXN0IChzdWJ0b2tlbiAocGxpc3QtZ2V0IHRva2VuIDpzdWJ0b2tlbnMpKQorICAgICAg
ICAgIChwY2FzZSAoY2FyIHN1YnRva2VuKQorICAgICAgICAgICAgKCdkYnVzLWluaGliaXRvci1s
b2NrCisgICAgICAgICAgICAgKGRidXMtLWZkLWNsb3NlIChjZHIgc3VidG9rZW4pKSkKKyAgICAg
ICAgICAgICgnZGJ1cy1zY3JlZW5zYXZlci1sb2NrCisgICAgICAgICAgICAgKGRidXMtY2FsbC1t
ZXRob2QKKyAgICAgICAgICAgICAgOnNlc3Npb24KKyAgICAgICAgICAgICAgIm9yZy5mcmVlZGVz
a3RvcC5TY3JlZW5TYXZlciIKKyAgICAgICAgICAgICAgIi9vcmcvZnJlZWRlc2t0b3AvU2NyZWVu
U2F2ZXIiCisgICAgICAgICAgICAgICJvcmcuZnJlZWRlc2t0b3AuU2NyZWVuU2F2ZXIiCisgICAg
ICAgICAgICAgICJVbkluaGliaXQiCisgICAgICAgICAgICAgIChjZHIgc3VidG9rZW4pKSkpKQor
ICAgICAgICB0KQorICAgICh3YXJuICJVbmtub3duIGBzeXN0ZW0tc2xlZXAnIHNsZWVwIHRva2Vu
IikKKyAgICBuaWwpKQorCisMCis7OyBtYWNPUy9HTlVzdGVwIE5TIHN1cHBvcnQuCisKKyhkZWNs
YXJlLWZ1bmN0aW9uIG5zLWJsb2NrLXN5c3RlbS1zbGVlcCAibnNmbnMubSIpCisoZGVjbGFyZS1m
dW5jdGlvbiBucy11bmJsb2NrLXN5c3RlbS1zbGVlcCAibnNmbnMubSIpCisKKyhjbC1kZWZtZXRo
b2Qgc3lzdGVtLXNsZWVwLS1lbmFibGUgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoc3lzdGVtLXNsZWVwLS1iYWNrLWVuZCAoZXFsICducykpKQorICB0KQor
CisoY2wtZGVmbWV0aG9kIHN5c3RlbS1zbGVlcC0tZGlzYWJsZSAoJmNvbnRleHQKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXNsZWVwLS1iYWNrLWVuZCAoZXFs
ICducykpKQorICAoaWdub3JlKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tc2xlZXAtLWJsb2Nr
LXNsZWVwICh3aHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxs
b3ctZGlzcGxheS1zbGVlcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lz
dGVtLXNsZWVwLS1iYWNrLWVuZCAoZXFsICducykpKQorICAoaWYtbGV0KiAoKGNvb2tpZSAobnMt
YmxvY2stc3lzdGVtLXNsZWVwIHdoeSBhbGxvdy1kaXNwbGF5LXNsZWVwKSkKKyAgICAgICAgICAg
ICh0b2tlbiAobGlzdCA6c3lzdGVtICducyA6d2h5IHdoeQorICAgICAgICAgICAgICAgICAgICAg
ICAgIDp0b2tlbiAoY29ucyAnbnMtc2xlZXAtYmxvY2sgY29va2llKSkpKQorICAgICAgKHByb2du
CisgICAgICAgIChsZXQgKChpbmhpYml0LXF1aXQgdCkpCisgICAgICAgICAgKHB1c2ggdG9rZW4g
c3lzdGVtLXNsZWVwLS1zbGVlcC1ibG9jay10b2tlbnMpKQorICAgICAgICB0b2tlbikKKyAgICAo
d2FybiAiVW5hYmxlIHRvIGJsb2NrIHN5c3RlbSBzbGVlcCIpKSkKKworKGNsLWRlZm1ldGhvZCBz
eXN0ZW0tc2xlZXAtLXVuYmxvY2stc2xlZXAgKHRva2VuCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoc3lzdGVtLXNsZWVwLS1iYWNrLWVuZCAoZXFsICducykpKQorICAo
aWYgKG1lbXEgdG9rZW4gc3lzdGVtLXNsZWVwLS1zbGVlcC1ibG9jay10b2tlbnMpCisgICAgICAo
cHJvZ24KKyAgICAgICAgKGxldCAoKGluaGliaXQtcXVpdCB0KSkKKyAgICAgICAgICAoc2V0cSBz
eXN0ZW0tc2xlZXAtLXNsZWVwLWJsb2NrLXRva2VucworICAgICAgICAgICAgICAgIChyZW1xIHRv
a2VuIHN5c3RlbS1zbGVlcC0tc2xlZXAtYmxvY2stdG9rZW5zKSkpCisgICAgICAgIChpZiAobnMt
dW5ibG9jay1zeXN0ZW0tc2xlZXAgKGNkciAocGxpc3QtZ2V0IHRva2VuIDp0b2tlbikpKQorICAg
ICAgICAgICAgdAorICAgICAgICAgICh3YXJuICJVbmFibGUgdG8gdW5ibG9jayBzeXN0ZW0gc2xl
ZXAgKGJsb2NrcyBhcmUgcmVsZWFzZWQgd2hlbiBFbWFjcyBkaWVzKSIpCisgICAgICAgICAgbmls
KSkKKyAgICAod2FybiAiVW5rbm93biBgc3lzdGVtLXNsZWVwJyBzbGVlcCB0b2tlbiIpCisgICAg
bmlsKSkKKworDAorOzsgTVMtV2luZG93cyBzdXBwb3J0LgorCisoZGVjbGFyZS1mdW5jdGlvbiB3
MzItYmxvY2stc3lzdGVtLXNsZWVwICJ3MzJmbnMuYyIpCisoZGVjbGFyZS1mdW5jdGlvbiB3MzIt
dW5ibG9jay1zeXN0ZW0tc2xlZXAgInczMmZucy5jIikKKyhkZWNsYXJlLWZ1bmN0aW9uIHczMi1z
eXN0ZW0tc2xlZXAtYmxvY2stY291bnQgInczMmZucy5jIikKKworKGRlZnZhciBzeXN0ZW0tc2xl
ZXAtLXczMi1zbGVlcC1ibG9jay1jb3VudCAwKQorCisoY2wtZGVmbWV0aG9kIHN5c3RlbS1zbGVl
cC0tZW5hYmxlICgmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHN5c3RlbS1zbGVlcC0tYmFjay1lbmQgKGVxbCAndzMyKSkpCisgIHQpCisKKyhjbC1kZWZtZXRo
b2Qgc3lzdGVtLXNsZWVwLS1kaXNhYmxlICgmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChzeXN0ZW0tc2xlZXAtLWJhY2stZW5kIChlcWwgJ3czMikpKQorICAo
aWdub3JlKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tc2xlZXAtLWJsb2NrLXNsZWVwICh3aHkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3ctZGlzcGxheS1z
bGVlcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udGV4dAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXNsZWVwLS1i
YWNrLWVuZCAoZXFsICd3MzIpKSkKKyAgKGlmLWxldCogKChjb29raWUgKHczMi1ibG9jay1zeXN0
ZW0tc2xlZXAgYWxsb3ctZGlzcGxheS1zbGVlcCkpCisgICAgICAgICAgICAodG9rZW4gKGxpc3Qg
OnN5c3RlbSAndzMyIDp3aHkgd2h5CisgICAgICAgICAgICAgICAgICAgICAgICAgOnRva2VuIChj
b25zICd3MzItc2xlZXAtYmxvY2sgY29va2llKSkpKQorICAgICAgKHByb2duCisgICAgICAgIChs
ZXQgKChpbmhpYml0LXF1aXQgdCkpCisgICAgICAgICAgKHB1c2ggdG9rZW4gc3lzdGVtLXNsZWVw
LS1zbGVlcC1ibG9jay10b2tlbnMpKQorICAgICAgICB0b2tlbikKKyAgICAod2FybiAiVW5hYmxl
IHRvIGJsb2NrIHN5c3RlbSBzbGVlcCIpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tc2xlZXAt
LXVuYmxvY2stc2xlZXAgKHRva2VuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoc3lzdGVtLXNsZWVwLS1iYWNrLWVuZCAoZXFsICd3MzIpKSkKKyAgKGlmIChtZW1xIHRv
a2VuIHN5c3RlbS1zbGVlcC0tc2xlZXAtYmxvY2stdG9rZW5zKQorICAgICAgKHByb2duCisgICAg
ICAgIChsZXQgKChpbmhpYml0LXF1aXQgdCkpCisgICAgICAgICAgKHNldHEgc3lzdGVtLXNsZWVw
LS1zbGVlcC1ibG9jay10b2tlbnMKKyAgICAgICAgICAgICAgICAocmVtcSB0b2tlbiBzeXN0ZW0t
c2xlZXAtLXNsZWVwLWJsb2NrLXRva2VucykpKQorICAgICAgICAoaWYgKGVxIDAgKHczMi1zeXN0
ZW0tc2xlZXAtYmxvY2stY291bnQpKQorICAgICAgICAgICAgKHdhcm4gIlVuYWJsZSB0byB1bmJs
b2NrIHN5c3RlbSBzbGVlcCAobm8gYWN0aXZlIHRva2VucykiKQorICAgICAgICAgIChpZiAodzMy
LXVuYmxvY2stc3lzdGVtLXNsZWVwKQorICAgICAgICAgICAgICB0CisgICAgICAgICAgICAod2Fy
biAiVW5hYmxlIHRvIHVuYmxvY2sgc3lzdGVtIHNsZWVwIChibG9ja3MgYXJlIHJlbGVhc2VkIHdo
ZW4gRW1hY3MgZGllcykiKQorICAgICAgICAgICAgbmlsKSkpCisgICAgKHdhcm4gIlVua25vd24g
YHN5c3RlbS1zbGVlcCcgc2xlZXAgdG9rZW4iKQorICAgIG5pbCkpCisKKwwKKzs7IEluaXRpYWxp
emUgc3lzdGVtLXNsZWVwLgorCisoc3lzdGVtLXNsZWVwLWVuYWJsZSkKKworKHByb3ZpZGUgJ3N5
c3RlbS1zbGVlcCkKKworOzs7IHN5c3RlbS1zbGVlcC5lbCBlbmRzIGhlcmUKZGlmZiAtLWdpdCBh
L3NyYy9mbnMuYyBiL3NyYy9mbnMuYwppbmRleCA1YzMwZDk1MGNmZi4uYzI5ZjlmYThjZDEgMTAw
NjQ0Ci0tLSBhL3NyYy9mbnMuYworKysgYi9zcmMvZm5zLmMKQEAgLTY4OTEsNCArNjg5MSw4IEBA
IHN5bXNfb2ZfZm5zICh2b2lkKQogICBERUZTWU0gKFFDaW5fcGxhY2UsICI6aW4tcGxhY2UiKTsK
ICAgREVGU1lNIChRQ3JldmVyc2UsICI6cmV2ZXJzZSIpOwogICBERUZTWU0gKFF2YWx1ZWx0LCAi
dmFsdWU8Iik7CisKKyAgLyogc2xlZXAtZXZlbnQgc3RhdGVzLiAgKi8KKyAgREVGU1lNIChRcHJl
X3NsZWVwLCAicHJlLXNsZWVwIik7CisgIERFRlNZTSAoUXBvc3Rfd2FrZSwgInBvc3Qtd2FrZSIp
OwogfQpkaWZmIC0tZ2l0IGEvc3JjL25zZm5zLm0gYi9zcmMvbnNmbnMubQppbmRleCBjZjY4NTYz
MGFiNy4uM2QzZDVlYzFiZGUgMTAwNjQ0Ci0tLSBhL3NyYy9uc2Zucy5tCisrKyBiL3NyYy9uc2Zu
cy5tCkBAIC0zODA1LDYgKzM4MDUsODggQEAgVGhlIHBvc2l0aW9uIGlzIHJldHVybmVkIGFzIGEg
Y29ucyBjZWxsIChYIC4gWSkgb2YgdGhlCiAgIHJldHVybiBRbmlsOwogfQogCisvKiBBIHVuaXF1
ZSBpbnRlZ2VyIHNsZWVwIGJsb2NrIGlkIGFuZCBhIGhhc2ggbWFwIG9mIGl0cyBpZCB0byBvcGFx
dWUKKyAgIE5TT2JqZWN0IHNsZWVwIGJsb2NrIGFjdGl2aXR5IHRva2Vucy4gICovCitzdGF0aWMg
dW5zaWduZWQgaW50IHNsZWVwX2Jsb2NrX2lkID0gMDsKK3N0YXRpYyBOU011dGFibGVEaWN0aW9u
YXJ5ICpzbGVlcF9ibG9ja19tYXAgPSBOVUxMOworCitERUZVTiAoIm5zLWJsb2NrLXN5c3RlbS1z
bGVlcCIsCisgICAgICAgRm5zX2Jsb2NrX3N5c3RlbV9zbGVlcCwKKyAgICAgICBTbnNfYmxvY2tf
c3lzdGVtX3NsZWVwLAorICAgICAgIDIsIDIsIDAsCisgICAgICAgZG9jOiAvKiBCbG9jayBzeXN0
ZW0gaWRsZSBzbGVlcC4KK1dIWSBpcyBhIHN0cmluZyByZWFzb24gZm9yIHRoZSBibG9jay4KK0lm
IEFMTE9XLURJU1BMQVktU0xFRVAgaXMgbm9uLW5pbCwgYmxvY2sgdGhlIHNjcmVlbiBmcm9tIHNs
ZWVwaW5nLgorUmV0dXJuIGEgdG9rZW4gdG8gdW5ibG9jayB0aGlzIGJsb2NrIHVzaW5nIGBucy11
bmJsb2NrLXN5c3RlbS1zbGVlcCcsCitvciBuaWwgaWYgdGhlIGJsb2NrIGZhaWxzLiAgKi8pCisg
IChMaXNwX09iamVjdCB3aHksIExpc3BfT2JqZWN0IGFsbG93X2Rpc3BsYXlfc2xlZXApCit7Cisg
IGJsb2NrX2lucHV0ICgpOworCisgIE5TU3RyaW5nICpyZWFzb24gPSBAIkVtYWNzIjsKKyAgaWYg
KCFOSUxQICh3aHkpKQorICAgIHsKKyAgICAgIENIRUNLX1NUUklORyAod2h5KTsKKyAgICAgIHJl
YXNvbiA9IFtOU1N0cmluZyBzdHJpbmdXaXRoTGlzcFN0cmluZzogd2h5XTsKKyAgICB9CisKKyAg
dW5zaWduZWQgbG9uZyBhY3Rpdml0eV9vcHRpb25zID0KKyAgICBOU0FjdGl2aXR5VXNlckluaXRp
YXRlZCB8IE5TQWN0aXZpdHlJZGxlU3lzdGVtU2xlZXBEaXNhYmxlZDsKKyAgaWYgKE5JTFAgKGFs
bG93X2Rpc3BsYXlfc2xlZXApKQorICAgIGFjdGl2aXR5X29wdGlvbnMgfD0gTlNBY3Rpdml0eUlk
bGVEaXNwbGF5U2xlZXBEaXNhYmxlZDsKKworICBOU1Byb2Nlc3NJbmZvICpwcm9jZXNzSW5mbyA9
IFtOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXTsKKyAgTlNPYmplY3QgKmFjdGl2aXR5X2lkID0g
bmlsOworICBpZiAoW3Byb2Nlc3NJbmZvIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYmVn
aW5BY3Rpdml0eVdpdGhPcHRpb25zOnJlYXNvbjopXSkKKyAgICBhY3Rpdml0eV9pZCA9IFtbTlNQ
cm9jZXNzSW5mbyBwcm9jZXNzSW5mb10KKwkJCSAgICAgYmVnaW5BY3Rpdml0eVdpdGhPcHRpb25z
OiBhY3Rpdml0eV9vcHRpb25zCisJCQkJCSAgICAgICByZWFzb246IHJlYXNvbl07CisgIHVuYmxv
Y2tfaW5wdXQgKCk7CisKKyAgaWYgKCFzbGVlcF9ibG9ja19tYXApCisgICAgc2xlZXBfYmxvY2tf
bWFwID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OiAyNV07
CisKKyAgaWYgKGFjdGl2aXR5X2lkKQorICAgIHsKKyAgICAgIFtzbGVlcF9ibG9ja19tYXAgc2V0
T2JqZWN0OiBhY3Rpdml0eV9pZAorCQkJICBmb3JLZXk6IFtOU051bWJlciBudW1iZXJXaXRoSW50
OiArK3NsZWVwX2Jsb2NrX2lkXV07CisgICAgICByZXR1cm4gbWFrZV9maXhudW0gKHNsZWVwX2Js
b2NrX2lkKTsKKyAgICB9CisgIGVsc2UKKyAgICByZXR1cm4gUW5pbDsKK30KKworREVGVU4gKCJu
cy11bmJsb2NrLXN5c3RlbS1zbGVlcCIsCisgICAgICAgRm5zX3VuYmxvY2tfc3lzdGVtX3NsZWVw
LAorICAgICAgIFNuc191bmJsb2NrX3N5c3RlbV9zbGVlcCwKKyAgICAgICAxLCAxLCAwLAorICAg
ICAgIGRvYzogLyogVW5ibG9jayBzeXN0ZW0gaWRsZSBzbGVlcC4KK1RPS0VOIGlzIGFuIG9iamVj
dCByZXR1cm5lZCBieSBgbnMtYmxvY2stc3lzdGVtLXNsZWVwJy4KK1JldHVybiBub24tbmlsIGlm
IHRoZSBUT0tFTiBibG9jayB3YXMgdW5ibG9ja2VkLiAgKi8pCisgIChMaXNwX09iamVjdCB0b2tl
bikKK3sKKyAgYmxvY2tfaW5wdXQgKCk7CisgIExpc3BfT2JqZWN0IHJlcyA9IFFuaWw7CisgIENI
RUNLX0ZJWE5BVCAodG9rZW4pOworICBpZiAoc2xlZXBfYmxvY2tfbWFwKQorICAgIHsKKyAgICAg
IE5TTnVtYmVyICprZXkgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDogWEZJWE5BVCAodG9rZW4p
XTsKKyAgICAgIE5TT2JqZWN0ICphY3Rpdml0eV9pZCA9IFtzbGVlcF9ibG9ja19tYXAgb2JqZWN0
Rm9yS2V5OiBrZXldOworICAgICAgaWYgKGFjdGl2aXR5X2lkKQorCXsKKwkgIE5TUHJvY2Vzc0lu
Zm8gKnByb2Nlc3NJbmZvID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dOworCSAgaWYgKFtw
cm9jZXNzSW5mbyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGVuZEFjdGl2aXR5OildKQor
CSAgICB7CisJICAgICAgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBlbmRBY3Rpdml0eTog
YWN0aXZpdHlfaWRdOworCSAgICAgIHJlcyA9IFF0OworCSAgICB9CisJICBbc2xlZXBfYmxvY2tf
bWFwIHJlbW92ZU9iamVjdEZvcktleToga2V5XTsKKwl9CisgICAgfQorICB1bmJsb2NrX2lucHV0
ICgpOworICByZXR1cm4gcmVzOworfQorCiAjaWZkZWYgTlNfSU1QTF9DT0NPQQogCiBERUZVTiAo
Im5zLXNlbmQtaXRlbXMiLApAQCAtNDA5MSw2ICs0MTczLDggQEAgLSAoTGlzcF9PYmplY3QpbGlz
cFN0cmluZwogICBkZWZzdWJyICgmU25zX2JhZGdlKTsKICAgZGVmc3ViciAoJlNuc19yZXF1ZXN0
X3VzZXJfYXR0ZW50aW9uKTsKICAgZGVmc3ViciAoJlNuc19wcm9ncmVzc19pbmRpY2F0b3IpOwor
ICBkZWZzdWJyICgmU25zX2Jsb2NrX3N5c3RlbV9zbGVlcCk7CisgIGRlZnN1YnIgKCZTbnNfdW5i
bG9ja19zeXN0ZW1fc2xlZXApOwogI2lmZGVmIE5TX0lNUExfQ09DT0EKICAgZGVmc3ViciAoJlNu
c19zZW5kX2l0ZW1zKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL25zdGVybS5tIGIvc3JjL25z
dGVybS5tCmluZGV4IGM4NTJiNzBiZTc0Li5kMGJiZDFiNDY2MCAxMDA2NDQKLS0tIGEvc3JjL25z
dGVybS5tCisrKyBiL3NyYy9uc3Rlcm0ubQpAQCAtNTgzOCwxNSArNTgzOCw2IEBAIHN0YXRpYyBM
aXNwX09iamVjdCBuc19uZXdfZm9udCAoc3RydWN0IGZyYW1lICpmLCBMaXNwX09iamVjdCBmb250
X29iamVjdCwKICAgbnNfcGVuZGluZ19zZXJ2aWNlX25hbWVzID0gW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF07CiAgIG5zX3BlbmRpbmdfc2VydmljZV9hcmdzID0gW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdF07CiAKLSNpZiBkZWZpbmVkIChOU19JTVBMX0NPQ09BKSAmJiBNQUNfT1Nf
WF9WRVJTSU9OX01BWF9BTExPV0VEID49IDI2MDAwMAotICAvKiBEaXNhYmxlIHByb2JsZW1hdGlj
IGV2ZW50IHByb2Nlc3Npbmcgb24gbWFjT1MgMjYgKFRhaG9lKSB0byBhdm9pZAotICAgICBzY3Jv
bGxpbmcgbGFnIGFuZCBpbnB1dCBoYW5kbGluZyBpc3N1ZXMuICBUaGVzZSBhcmUgdW5kb2N1bWVu
dGVkCi0gICAgIG9wdGlvbnMgYXMgb2YgbWFjT1MgMjYuMC4gICovCi0gIFtOU1VzZXJEZWZhdWx0
cy5zdGFuZGFyZFVzZXJEZWZhdWx0cwotICAgICAgcmVnaXN0ZXJEZWZhdWx0czpAe0AiTlNFdmVu
dENvbmN1cnJlbnRQcm9jZXNzaW5nRW5hYmxlZCIgOiBAIk5PIiwKLSAgICAgICAgQCJOU0FwcGxp
Y2F0aW9uVXBkYXRlQ3ljbGVFbmFibGVkIiA6IEAiTk8ifV07Ci0jZW5kaWYKLQogICAvKiBTdGFy
dCBhcHAgYW5kIGNyZWF0ZSB0aGUgbWFpbiBtZW51LCB3aW5kb3csIHZpZXcuCiAgICAgIE5lZWRz
IHRvIGJlIGhlcmUgYmVjYXVzZSBuc19pbml0aWFsaXplX2Rpc3BsYXlfaW5mbyAoKSB1c2VzIEFw
cEtpdCBjbGFzc2VzLgogICAgICBUaGUgdmlldyB3aWxsIHRoZW4gYXNrIHRoZSBOU0FwcCB0byBz
dG9wIGFuZCByZXR1cm4gdG8gRW1hY3MuICAqLwpAQCAtNjM4Myw2ICs2Mzc0LDIwIEBAIC0gKHZv
aWQpYXBwbGljYXRpb25EaWRGaW5pc2hMYXVuY2hpbmc6IChOU05vdGlmaWNhdGlvbiAqKW5vdGlm
aWNhdGlvbgogCSBvYmplY3Q6bmlsXTsKICNlbmRpZgogCisjaWZkZWYgTlNfSU1QTF9DT0NPQQor
ICAvKiBTbGVlcCBldmVudCBub3RpZmljYXRpb24uICAqLworICBbW1tOU1dvcmtzcGFjZSBzaGFy
ZWRXb3Jrc3BhY2VdIG5vdGlmaWNhdGlvbkNlbnRlcl0KKyAgICBhZGRPYnNlcnZlcjogc2VsZgor
ICAgICAgIHNlbGVjdG9yOkBzZWxlY3RvcihzeXN0ZW1XaWxsU2xlZXA6KQorCSAgIG5hbWU6IE5T
V29ya3NwYWNlV2lsbFNsZWVwTm90aWZpY2F0aW9uCisJIG9iamVjdDogbmlsXTsKKyAgW1tbTlNX
b3Jrc3BhY2Ugc2hhcmVkV29ya3NwYWNlXSBub3RpZmljYXRpb25DZW50ZXJdCisgICAgYWRkT2Jz
ZXJ2ZXI6IHNlbGYKKyAgICAgICBzZWxlY3RvcjogQHNlbGVjdG9yKHN5c3RlbURpZFdha2U6KQor
CSAgIG5hbWU6IE5TV29ya3NwYWNlRGlkV2FrZU5vdGlmaWNhdGlvbgorCSBvYmplY3Q6IG5pbF07
CisjZW5kaWYKKwogI2lmZGVmIE5TX0lNUExfQ09DT0EKICAgLyogU29tZSBmdW5jdGlvbnMvbWV0
aG9kcyBpbiBDb3JlRm91bmRhdGlvbi9Gb3VuZGF0aW9uIGluY3JlYXNlIHRoZQogICAgICBtYXhp
bXVtIG51bWJlciBvZiBvcGVuIGZpbGVzIGZvciB0aGUgcHJvY2VzcyBpbiB0aGVpciBmaXJzdCBj
YWxsLgpAQCAtNjQyMSw2ICs2NDI2LDMxIEBAIC0gKHZvaWQpYW50aWFsaWFzVGhyZXNob2xkRGlk
Q2hhbmdlOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgogI2VuZGlmCiB9CiAKKy8qIFNs
ZWVwIGV2ZW50IG5vdGlmaWNhdGlvbi4gICovCisKKy0gKHZvaWQpIHN5c3RlbVdpbGxTbGVlcDoo
TlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3sKKyNpZmRlZiBOU19JTVBMX0NPQ09BCisg
IE5TVFJBQ0UgKCJbRW1hY3NBcHAgc3lzdGVtV2lsbFNsZWVwOl0iKTsKKyAgc3RydWN0IGlucHV0
X2V2ZW50IGllOworICBFVkVOVF9JTklUIChpZSk7CisgIGllLmtpbmQgPSBTTEVFUF9FVkVOVDsK
KyAgaWUuYXJnID0gbGlzdDEgKFFwcmVfc2xlZXApOworICBrYmRfYnVmZmVyX3N0b3JlX2V2ZW50
ICgmaWUpOworI2VuZGlmCit9CisKKy0gKHZvaWQpIHN5c3RlbURpZFdha2U6KE5TTm90aWZpY2F0
aW9uICopbm90aWZpY2F0aW9uCit7CisjaWZkZWYgTlNfSU1QTF9DT0NPQQorICBOU1RSQUNFICgi
W0VtYWNzQXBwIHN5c3RlbURpZFdha2U6XSIpOworICBzdHJ1Y3QgaW5wdXRfZXZlbnQgaWU7Cisg
IEVWRU5UX0lOSVQgKGllKTsKKyAgaWUua2luZCA9IFNMRUVQX0VWRU5UOworICBpZS5hcmcgPSBs
aXN0MSAoUXBvc3Rfd2FrZSk7CisgIGtiZF9idWZmZXJfc3RvcmVfZXZlbnQgKCZpZSk7CisjZW5k
aWYKK30KIAogLyogVGVybWluYXRpb24gc2VxdWVuY2VzOgogICAgIEMteCBDLWM6CmRpZmYgLS1n
aXQgYS9zcmMvdzMyZm5zLmMgYi9zcmMvdzMyZm5zLmMKaW5kZXggYjc1YmNlOGQxYTIuLjNhMzJk
MDQ2MTMyIDEwMDY0NAotLS0gYS9zcmMvdzMyZm5zLmMKKysrIGIvc3JjL3czMmZucy5jCkBAIC0x
MTMyNSw2ICsxMTMyNSwxMzYgQEAgREVGVU4gKCJ3MzItcHJvZ3Jlc3MtaW5kaWNhdG9yIiwKIAog
I2VuZGlmIC8qIFdJTkRPV1NOVCAqLwogCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKwkJICAgICBTeXN0ZW0g
U2xlZXAgU3VwcG9ydAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCit0eXBlZGVmIFVMT05HIChXSU5BUEkg
KiBTZXRUaHJlYWRFeGVjdXRpb25TdGF0ZV9Qcm9jKQorICAoSU4gVUxPTkcpOworc3RhdGljIFNl
dFRocmVhZEV4ZWN1dGlvblN0YXRlX1Byb2MgU2V0VGhyZWFkRXhlY3V0aW9uU3RhdGVfZm4gPSBO
VUxMOworCitzdGF0aWMgdW5zaWduZWQgaW50IHNsZWVwX2Jsb2NrX2lkID0gMDsKK3N0YXRpYyB1
bnNpZ25lZCBpbnQgc2xlZXBfYmxvY2tfY291bnQgPSAwOworCitERUZVTiAoInczMi1ibG9jay1z
eXN0ZW0tc2xlZXAiLAorICAgICAgIEZ3MzJfYmxvY2tfc3lzdGVtX3NsZWVwLAorICAgICAgIFN3
MzJfYmxvY2tfc3lzdGVtX3NsZWVwLAorICAgICAgIDEsIDEsIDAsCisgICAgICAgZG9jOiAvKiBC
bG9jayBzeXN0ZW0gaWRsZSBzbGVlcC4KK0lmIEFMTE9XLURJU1BMQVktU0xFRVAgaXMgbm9uLW5p
bCwgYmxvY2sgdGhlIHNjcmVlbiBmcm9tIHNsZWVwaW5nLgorUmV0dXJuIGEgdG9rZW4gdG8gdW5i
bG9jayB0aGlzIGJsb2NrIHVzaW5nIGB3MzItdW5ibG9jay1zeXN0ZW0tc2xlZXAnLAorb3Igbmls
IGlmIHRoZSBibG9jayBmYWlscy4gICovKQorICAoTGlzcF9PYmplY3QgYWxsb3dfZGlzcGxheV9z
bGVlcCkKK3sKKyAgaWYgKFNldFRocmVhZEV4ZWN1dGlvblN0YXRlX2ZuID09IE5VTEwpCisgICAg
cmV0dXJuIFFuaWw7CisKKyAgLyogRVNfQ09OVElOVU9VUyBrZWVwcyB0aGUgc3RhdGUgdW50aWwg
Y2xlYXJlZC4gICovCisgIEVYRUNVVElPTl9TVEFURSBuZXdfc3RhdGUgPSBFU19TWVNURU1fUkVR
VUlSRUQgfCBFU19DT05USU5VT1VTOworICBpZiAoTklMUCAoYWxsb3dfZGlzcGxheV9zbGVlcCkp
CisgICAgbmV3X3N0YXRlIHw9IEVTX0RJU1BMQVlfUkVRVUlSRUQ7CisKKyAgaWYgKFNldFRocmVh
ZEV4ZWN1dGlvblN0YXRlIChuZXdfc3RhdGUpID09IDApCisgICAgcmV0dXJuIFFuaWw7CisgIGVs
c2UKKyAgICB7CisgICAgICAvKiBPbmUgbW9yZSBibG9jayBhbmQgbmV4dCBpZC4gICovCisgICAg
ICArK3NsZWVwX2Jsb2NrX2NvdW50OworICAgICAgKytzbGVlcF9ibG9ja19pZDsKKworICAgICAg
LyogU3ludGhlc2l6ZSBhIHRva2VuLiAgKi8KKyAgICAgIHJldHVybiBtYWtlX2ZpeG51bSAoc2xl
ZXBfYmxvY2tfaWQpOworICAgIH0KK30KKworREVGVU4gKCJ3MzItdW5ibG9jay1zeXN0ZW0tc2xl
ZXAiLAorICAgICAgIEZ3MzJfdW5ibG9ja19zeXN0ZW1fc2xlZXAsCisgICAgICAgU3czMl91bmJs
b2NrX3N5c3RlbV9zbGVlcCwKKyAgICAgICAwLCAwLCAwLAorICAgICAgIGRvYzogLyogVW5ibG9j
ayBzeXN0ZW0gaWRsZSBzbGVlcC4KK1JldHVybiBub24tbmlsIGlmIHRoZSBUT0tFTiBibG9jayB3
YXMgdW5ibG9ja2VkLiAgKi8pCisgICh2b2lkKQoreworICBpZiAoU2V0VGhyZWFkRXhlY3V0aW9u
U3RhdGVfZm4gPT0gTlVMTCkKKyAgICByZXR1cm4gUW5pbDsKKworICAvKiBObyBibG9ja3MgdG8g
dW5ibG9jay4gICovCisgIGlmIChzbGVlcF9ibG9ja19jb3VudCA9PSAwKQorICAgIHJldHVybiBR
bmlsOworCisgIC8qIE9uZSBmZXdlciBibG9jay4gICovCisgIGlmICgtLXNsZWVwX2Jsb2NrX2Nv
dW50ID09IDAKKyAgICAgICYmIFNldFRocmVhZEV4ZWN1dGlvblN0YXRlIChFU19DT05USU5VT1VT
KSA9PSAwKQorICAgICAgcmV0dXJuIFFuaWw7CisgIGVsc2UKKyAgICByZXR1cm4gUXQ7Cit9CisK
K0RFRlVOICgidzMyLXN5c3RlbS1zbGVlcC1ibG9jay1jb3VudCIsCisgICAgICAgRnczMl9zeXN0
ZW1fc2xlZXBfYmxvY2tfY291bnQsCisgICAgICAgU3czMl9zeXN0ZW1fc2xlZXBfYmxvY2tfY291
bnQsCisgICAgICAgMCwgMCwgMCwKKyAgICAgICBkb2M6IC8qIFJldHVybiB0aGUgdzMyIHNsZWVw
IGJsb2NrIGNvdW50LiAgKi8pCisgICh2b2lkKQoreworICByZXR1cm4gbWFrZV9maXhudW0gKHNs
ZWVwX2Jsb2NrX2NvdW50KTsKK30KKwordHlwZWRlZiBVTE9ORyAoQ0FMTEJBQ0sgKlBNWV9ERVZJ
Q0VfTk9USUZZX0NBTExCQUNLX1JPVVRJTkUpCisgIChQVk9JRCBDb250ZXh0LCAgVUxPTkcgVHlw
ZSwgIFBWT0lEIFNldHRpbmcpOworCitzdGF0aWMgVUxPTkcgQUxJR05fU1RBQ0sKK3NsZWVwX25v
dGlmaWNhdGlvbl9jYWxsYmFjayhQVk9JRCBfQ29udGV4dCwgVUxPTkcgVHlwZSwgUFZPSUQgX1Nl
dHRpbmcpCit7CisgIHN0cnVjdCBpbnB1dF9ldmVudCBpZTsKKyAgRVZFTlRfSU5JVCAoaWUpOwor
ICBpZS5raW5kID0gU0xFRVBfRVZFTlQ7CisKKyAgc3dpdGNoIChUeXBlKQorICAgIHsKKyAgICBj
YXNlIFBCVF9BUE1SRVNVTUVBVVRPTUFUSUM6CisgICAgICAvKiBJZ25vcmUgdGhpcyBldmVudC4g
IE5vIHVzZXIgaXMgcHJlc2VudC4gICovCisgICAgICBicmVhazsKKyAgICBjYXNlIFBCVF9BUE1T
VVNQRU5EOgorICAgICAgaWUuYXJnID0gbGlzdDEgKFFwcmVfc2xlZXApOworICAgICAga2JkX2J1
ZmZlcl9zdG9yZV9ldmVudCAoJmllKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUEJUX0FQTVJF
U1VNRVNVU1BFTkQ6CisgICAgICBpZS5hcmcgPSBsaXN0MSAoUXBvc3Rfd2FrZSk7CisgICAgICBr
YmRfYnVmZmVyX3N0b3JlX2V2ZW50ICgmaWUpOworICAgICAgYnJlYWs7CisgICAgfQorICByZXR1
cm4gMDsKK30KKwordHlwZWRlZiBIUE9XRVJOT1RJRlkgKFdJTkFQSSAqIFJlZ2lzdGVyU3VzcGVu
ZFJlc3VtZU5vdGlmaWNhdGlvbl9Qcm9jKQorICAoSU4gSEFORExFLCBJTiBEV09SRCk7CitzdGF0
aWMgUmVnaXN0ZXJTdXNwZW5kUmVzdW1lTm90aWZpY2F0aW9uX1Byb2MgUmVnaXN0ZXJTdXNwZW5k
UmVzdW1lTm90aWZpY2F0aW9uX2ZuID0gTlVMTDsKKworc3RhdGljIEhQT1dFUk5PVElGWSBzbGVl
cF9ub3RpZmljYXRpb25faGFuZGxlID0gMDsKKwordHlwZWRlZiBzdHJ1Y3QgX01ZX0RFVklDRV9O
T1RJRllfU1VCU0NSSUJFX1BBUkFNRVRFUlMgeworICBQTVlfREVWSUNFX05PVElGWV9DQUxMQkFD
S19ST1VUSU5FIENhbGxiYWNrOworICBQVk9JRCBDb250ZXh0OworfSBNWV9ERVZJQ0VfTk9USUZZ
X1NVQlNDUklCRV9QQVJBTUVURVJTLCAqUE1ZX0RFVklDRV9OT1RJRllfU1VCU0NSSUJFX1BBUkFN
RVRFUlM7CisKK3ZvaWQKK3czMl9yZWdpc3Rlcl9mb3Jfc2xlZXBfbm90aWZpY2F0aW9ucygpCit7
CisgIC8qIFBvd2VyUmVnaXN0ZXJTdXNwZW5kUmVzdW1lTm90aWZpY2F0aW9uIGlzIG5vdCBhIHVz
ZXItc3BhY2UgY2FsbCBzbworICAgICB3ZSB1c2UgUmVnaXN0ZXJTdXNwZW5kUmVzdW1lTm90aWZp
Y2F0aW9uLiAgKi8KKyAgaWYgKFJlZ2lzdGVyU3VzcGVuZFJlc3VtZU5vdGlmaWNhdGlvbl9mbikK
KyAgICB7CisgICAgICBNWV9ERVZJQ0VfTk9USUZZX1NVQlNDUklCRV9QQVJBTUVURVJTIHBhcmFt
czsKKyAgICAgIHBhcmFtcy5DYWxsYmFjayA9IHNsZWVwX25vdGlmaWNhdGlvbl9jYWxsYmFjazsK
KyAgICAgIHBhcmFtcy5Db250ZXh0ID0gTlVMTDsKKworICAgICAgLyogREVWSUNFX05PVElGWV9D
QUxMQkFDSyA9IDIgICovCisgICAgICBzbGVlcF9ub3RpZmljYXRpb25faGFuZGxlID0KKwlSZWdp
c3RlclN1c3BlbmRSZXN1bWVOb3RpZmljYXRpb25fZm4gKCZwYXJhbXMsIDIpOworICAgIH0KK30K
KwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqCiAJCQkgICAgSW5pdGlhbGl6YXRpb24KICAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ki8KQEAgLTExODM0LDYgKzExOTY0LDEwIEBAIHN5bXNfb2ZfdzMyZm5zICh2b2lkKQogICBkZWZz
dWJyICgmU3czMl9yZXF1ZXN0X3VzZXJfYXR0ZW50aW9uKTsKICAgREVGU1lNIChRaW5mb3JtYXRp
b25hbCwgImluZm9ybWF0aW9uYWwiKTsKICAgREVGU1lNIChRY3JpdGljYWwsICJjcml0aWNhbCIp
OworICAvKiBTeXN0ZW0gc2xlZXAgc3VwcG9ydC4gICovCisgIGRlZnN1YnIgKCZTdzMyX3VuYmxv
Y2tfc3lzdGVtX3NsZWVwKTsKKyAgZGVmc3ViciAoJlN3MzJfYmxvY2tfc3lzdGVtX3NsZWVwKTsK
KyAgZGVmc3ViciAoJlN3MzJfc3lzdGVtX3NsZWVwX2Jsb2NrX2NvdW50KTsKICNlbmRpZgogfQog
CkBAIC0xMjA5NCw2ICsxMjIyOCw3IEBAICNkZWZpbmUgX29wZW4gb3BlbgogZ2xvYmFsc19vZl93
MzJmbnMgKHZvaWQpCiB7CiAgIEhNT0RVTEUgdXNlcjMyX2xpYiA9IEdldE1vZHVsZUhhbmRsZSAo
InVzZXIzMi5kbGwiKTsKKyAgSE1PRFVMRSBrZXJuZWwzMl9saWIgPSBHZXRNb2R1bGVIYW5kbGUg
KCJrZXJuZWwzMi5kbGwiKTsKICAgLyoKICAgICBUcmFja01vdXNlRXZlbnQgbm90IGF2YWlsYWJs
ZSBpbiBhbGwgdmVyc2lvbnMgb2YgV2luZG93cywgc28gbXVzdCBsb2FkCiAgICAgaXQgZHluYW1p
Y2FsbHkuICBEbyBpdCBvbmNlLCBoZXJlLCBpbnN0ZWFkIG9mIGV2ZXJ5IHRpbWUgaXQgaXMgdXNl
ZC4KQEAgLTEyMTIwLDYgKzEyMjU1LDE2IEBAIGdsb2JhbHNfb2ZfdzMyZm5zICh2b2lkKQogICBS
ZWdpc3RlclRvdWNoV2luZG93X2ZuCiAgICAgPSAoUmVnaXN0ZXJUb3VjaFdpbmRvd19wcm9jKSBn
ZXRfcHJvY19hZGRyICh1c2VyMzJfbGliLAogCQkJCQkJIlJlZ2lzdGVyVG91Y2hXaW5kb3ciKTsK
KyAgLyogRm9yIHN5c3RlbSBzbGVlcCBzdXBwb3J0LiAgKi8KKyAgU2V0VGhyZWFkRXhlY3V0aW9u
U3RhdGVfZm4KKyAgICA9IChTZXRUaHJlYWRFeGVjdXRpb25TdGF0ZV9Qcm9jKQorICAgIGdldF9w
cm9jX2FkZHIgKGtlcm5lbDMyX2xpYiwKKwkJICAgIlNldFRocmVhZEV4ZWN1dGlvblN0YXRlIik7
CisgIFJlZ2lzdGVyU3VzcGVuZFJlc3VtZU5vdGlmaWNhdGlvbl9mbgorICAgID0gKFJlZ2lzdGVy
U3VzcGVuZFJlc3VtZU5vdGlmaWNhdGlvbl9Qcm9jKQorICAgIGdldF9wcm9jX2FkZHIgKHVzZXIz
Ml9saWIsCisJCSAgICJSZWdpc3RlclN1c3BlbmRSZXN1bWVOb3RpZmljYXRpb24iKTsKKwogICBT
ZXRHZXN0dXJlQ29uZmlnX2ZuCiAgICAgPSAoU2V0R2VzdHVyZUNvbmZpZ19wcm9jKSBnZXRfcHJv
Y19hZGRyICh1c2VyMzJfbGliLAogCQkJCQkgICAgICJTZXRHZXN0dXJlQ29uZmlnIik7CmRpZmYg
LS1naXQgYS9zcmMvdzMydGVybS5jIGIvc3JjL3czMnRlcm0uYwppbmRleCAwOTFhMWZiZDVmMS4u
NWI3ZDljNWYxN2QgMTAwNjQ0Ci0tLSBhL3NyYy93MzJ0ZXJtLmMKKysrIGIvc3JjL3czMnRlcm0u
YwpAQCAtODI0OSw2ICs4MjQ5LDcgQEAgI2RlZmluZSBMT0FEX1BST0MobGliLCBmbikgcGZuIyNm
biA9ICh2b2lkICopIEdldFByb2NBZGRyZXNzIChsaWIsICNmbikKICAgfQogCiAgIHczMl9nZXRf
bW91c2Vfd2hlZWxfdmVydGljYWxfZGVsdGEgKCk7CisgIHczMl9yZWdpc3Rlcl9mb3Jfc2xlZXBf
bm90aWZpY2F0aW9ucyAoKTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL3czMnRlcm0uaCBi
L3NyYy93MzJ0ZXJtLmgKaW5kZXggOTFkYjBiNmUyNDkuLmNiOWQ1OTM3MWE0IDEwMDY0NAotLS0g
YS9zcmMvdzMydGVybS5oCisrKyBiL3NyYy93MzJ0ZXJtLmgKQEAgLTI3NCw2ICsyNzQsNyBAQCAj
ZGVmaW5lIENQX0RFRkFVTFQgMTAwNAogZXh0ZXJuIGZyYW1lX3Bhcm1faGFuZGxlciB3MzJfZnJh
bWVfcGFybV9oYW5kbGVyc1tdOwogZXh0ZXJuIHZvaWQgdzMyX2RlZmF1bHRfZm9udF9wYXJhbWV0
ZXIgKHN0cnVjdCBmcmFtZSogZiwgTGlzcF9PYmplY3QgcGFybXMpOwogZXh0ZXJuIExpc3BfT2Jq
ZWN0IHczMl9wcm9jZXNzX2RuZF9kYXRhIChpbnQgZm9ybWF0LCB2b2lkICpwRGF0YU9iaik7Citl
eHRlcm4gdm9pZCB3MzJfcmVnaXN0ZXJfZm9yX3NsZWVwX25vdGlmaWNhdGlvbnMoKTsKIAogDAog
I2RlZmluZSBQSVhfVFlQRSBDT0xPUlJFRgotLSAKMi41Mi4wCgo=
--000000000000340b38064a7dfe65--
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.
Received: (at 80348) by debbugs.gnu.org; 10 Feb 2026 19:12:19 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Feb 10 14:12:19 2026
Received: from localhost ([127.0.0.1]:34417 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vpt9m-0001Oe-Rx
for submit <at> debbugs.gnu.org; Tue, 10 Feb 2026 14:12:19 -0500
Received: from mout.gmx.net ([212.227.15.19]:55475)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <michael.albinus@HIDDEN>)
id 1vpt9k-0001Nu-QL
for 80348 <at> debbugs.gnu.org; Tue, 10 Feb 2026 14:12:17 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de;
s=s31663417; t=1770750689; x=1771355489; i=michael.albinus@HIDDEN;
bh=0nuMwmc+101xJGhH67ntsJi3VU9wXreMOeM/HUi3WR8=;
h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date:
Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:cc:
content-transfer-encoding:content-type:date:from:message-id:
mime-version:reply-to:subject:to;
b=ILEg1Ib154QYyKmfJ/wNibt7N9xd2tGHlkGqzrhp/DRdZUplPkAEsNFTAOgPMgHh
1sabKCFxJMcXxyPPA9rLxod9pzGJ/4sx3lhT7MoasLGrUPUN5OQJr+DPuawbfT6JN
6HF7vMj+JRWii2u9edz4oEwtiS+atF/+EgLV1tMBJUYQMITn/PoiGjqDPZkuyWX+9
d0DpKDb2feB840ufKODzzhUE8A8l7BB/STmE1Ar1GYib0QAfjyRMO8lv+97bGYv/z
9Sw/QN4LgJtCAuMWeMFbwzKZ1dHfhOBDLvYqSu76VkeFmeTWech4Y4nRpJTfhXw+Z
CrclOna1/TJbpVgqmw==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from gandalf.gmx.de ([185.89.39.12]) by mail.gmx.net (mrgmx005
[212.227.17.190]) with ESMTPSA (Nemesis) id 1MOREi-1wAKkR25t8-00WxuC; Tue, 10
Feb 2026 20:11:29 +0100
From: Michael Albinus <michael.albinus@HIDDEN>
To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN>
Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake
event package
In-Reply-To: <CAN+1HbqnZNBHw_hzq4VQnedfw9QNhtbpWA5Yy_NGy=bHF9o8OA@HIDDEN>
References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN>
<CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN>
<868qd4v36l.fsf@HIDDEN>
<CAN+1HbqdV2oXQjXi07X8hSgX9A_nYOD+rAWHqfm2XCAfxkNtTQ@HIDDEN>
<861pivvjxn.fsf@HIDDEN>
<CAN+1HbotFM1WiJSaX+n9qEgDpv91Y0Eg59C0UFK2egLEFOAAxQ@HIDDEN>
<CAN+1HbqnZNBHw_hzq4VQnedfw9QNhtbpWA5Yy_NGy=bHF9o8OA@HIDDEN>
Date: Tue, 10 Feb 2026 20:11:26 +0100
Message-ID: <87fr78ifc1.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Provags-ID: V03:K1:z0fftT+SDuhm/LkBAsjZ8uGtt3FAI5GBlfSNi6At692l1eiHr1f
U5bulFhlUxNeTjoP2GfUi6mzg7nMJoPZvtDkv94K33StRx/mkeeQBthETa0ng1mgR3mnhC6
gpf0WbV9rOuwxx2HWDlG+2uFiWTqBi3q8FtdN8DjA4ldV8iQAiONME27TV6DjMn9rDfJCwd
/Z7OAVN244yfCW90UzPCg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:2q4YEb+RVm4=;5qlDVi+SiNqqugYREVIW/qI92a0
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
gZJaQbHU9unH8MijWzGmJWzi5Z6wo
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 80348
Cc: acohen@HIDDEN, eric@HIDDEN, mail@HIDDEN,
Morgan.J.Smith@HIDDEN, monnier@HIDDEN, 80348 <at> debbugs.gnu.org,
Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)
St=C3=A9phane Marks <shipmints@HIDDEN> writes:
Hi St=C3=A9phane,
> I think I've incorporated everyone's feedback in the attached patch.=20
> I've left the symbols in place for the event states. If we decide to
> keep them, I'll centralize the native symbol definitions in fns.c or
> data.c.
I believe we all agree on this now. The only think left to do is the
proper definition of the symbols for the event states at a central
place. Please do, and then we might push it to master.
Nevertheless, I couldn't resist: just a final review of the patch. And
surprise, I even have some further comments. Minor only, but you might
take them into account.
> * lisp/bindings.el (sleep-event-functions): New abnormal hook.
> (sleep-event-handler): New defun.
> (special-event-map): New event handler.
This entry is obsolete now.
> diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi
> +@defmac with-system-sleep-block (why allow-display-sleep) body@dots{}
Shouldn't why allow-display-sleep be optional, like in system-sleep-block-s=
leep?
> diff --git a/lisp/system-sleep.el b/lisp/system-sleep.el
> +;;;###autoload
> +(defmacro with-system-sleep-block (why allow-display-sleep &rest body)
Make arguments optional.
> +(defun system-sleep--dbus-prepare-for-sleep-function (event)
> + (pcase (cadr event)
(pcase (sleep-event-state event)
> diff --git a/src/nsfns.m b/src/nsfns.m
> + NSString *reason =3D @"Emacs";
> + if (!NILP (why))
> + {
> + CHECK_STRING (why);
> + reason =3D [NSString stringWithLispString: why];
> + }
Is it necessary, that you set the default value "Emacs" here? You set it
already on Lisp level, when why is nil.
(Avoid double default data)
> -St=C3=A9phane=20
Best regards, Michael.
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.Received: (at 80348) by debbugs.gnu.org; 8 Feb 2026 15:54:55 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 08 10:54:54 2026 Received: from localhost ([127.0.0.1]:52182 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vp77e-0005dR-K0 for submit <at> debbugs.gnu.org; Sun, 08 Feb 2026 10:54:54 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:8789) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <monnier@HIDDEN>) id 1vp77c-0005cW-GX for 80348 <at> debbugs.gnu.org; Sun, 08 Feb 2026 10:54:53 -0500 Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id E8ECF4414E4; Sun, 8 Feb 2026 10:54:46 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1770566085; bh=YdNOzpTKUU/R6Qtutw+dM3KdPA9WRAvyspSqt0ckWME=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=pXMyrP5bJartjqE0Rb76f5xp+flB45O6Of9JAwXmRiSpJm+gxnlDMNN05uLrR5DQS 5BKJljUATXmx/f+UqJSq1R951Sq1cq/YjjqwU0AHPQZkFaqTtGMYTSF32DrzAtwGLN 2YLxrpdoNI2Iv5oCHVQsI4rPyie+KlCkeJZ+LJa/XmNppPiTqH83VEwJ293svEoCPC S6LiQhXgKojR0boWt/cDGFaPYwWgYI52s6ECSdFKmXL17c52V4ogivLdbrv4g5GY9B YSU9UARsJW8iF02111wQwkonE24IRevnpauW2NHllCDpzxBjwTzEZ0ngN80vgeCOi7 BOU7DnRF4CK/Q== Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id D65D54414E0; Sun, 8 Feb 2026 10:54:45 -0500 (EST) Received: from pastel (104-195-243-38.cpe.teksavvy.com [104.195.243.38]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 86119120709; Sun, 8 Feb 2026 10:54:45 -0500 (EST) From: Stefan Monnier <monnier@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake event package In-Reply-To: <861pivvjxn.fsf@HIDDEN> Message-ID: <jwvpl6f44fd.fsf-monnier+emacs@HIDDEN> References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN> <CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN> <868qd4v36l.fsf@HIDDEN> <CAN+1HbqdV2oXQjXi07X8hSgX9A_nYOD+rAWHqfm2XCAfxkNtTQ@HIDDEN> <861pivvjxn.fsf@HIDDEN> Date: Sun, 08 Feb 2026 10:54:44 -0500 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.207 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 80348 Cc: acohen@HIDDEN, eric@HIDDEN, mail@HIDDEN, Morgan.J.Smith@HIDDEN, michael.albinus@HIDDEN, =?windows-1252?Q?St=E9phane?= Marks <shipmints@HIDDEN>, 80348 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -3.3 (---) > Btw, no one said that the set of values cannot include nil, t, and > some other non-nil values, when we decide to have more than just two. > By contrast, having just two non-nil values always raises a brow. FWIW, I much prefer the two specific values over nil/t in this case, because it makes it obvious which means what. === Stefan
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.
Received: (at 80348) by debbugs.gnu.org; 8 Feb 2026 14:49:45 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 08 09:49:45 2026
Received: from localhost ([127.0.0.1]:49943 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vp66X-0008B2-RX
for submit <at> debbugs.gnu.org; Sun, 08 Feb 2026 09:49:45 -0500
Received: from mail-ua1-x933.google.com ([2607:f8b0:4864:20::933]:43452)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <shipmints@HIDDEN>)
id 1vp66U-0008AX-5Z
for 80348 <at> debbugs.gnu.org; Sun, 08 Feb 2026 09:49:40 -0500
Received: by mail-ua1-x933.google.com with SMTP id
a1e0cc1a2514c-948ee050c4cso2244126241.1
for <80348 <at> debbugs.gnu.org>; Sun, 08 Feb 2026 06:49:38 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; t=1770562177; cv=none;
d=google.com; s=arc-20240605;
b=Q40Ne1rP0JRz57e/neuYQC3YyX7WBcjg7n8kKnYerNNzqfq0suZkWx3qHKIybS4Z24
6TKN9KI5CQaNGjmIpACxC5FgeRKiNYpGs7vSGduIcJm5PCxKaYYdAoxZ8NKUHoRb7Zmq
yf2FueSs5sfb5q5ZQ13sCKd6cQgHMksM5d0fpfsfrGWMWsA5RuwRXMrnvaYG1TtlzSFn
+tTBDwQvb+JdjZcGT0pOoWb0/nTkfWlHdnlqP0o3lzSXVJKXFVnxvc0kujdsjqxajHfo
b7loZKQjXDbcbIsudRPR6dDOSRDrRcKP4GYBgEQpW253Q5qssr8Sc9MiZj8uDjQX/m0K
ZyqA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;
s=arc-20240605;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:dkim-signature;
bh=DQkpcGHrv9jIvkfLczMZ3YGkQI+e/wEtr0BPqSfjAUs=;
fh=dRDhp3Lo2nlJjFoCjS5rzvu8B/zkxE9jxOgE8xgWX2Y=;
b=YoqyE+SGsumLdb6tF5BVYg/9AvuP7fM3fRg5D96ecoNdIUdO9K3rQ6G/7TZz6utCu7
54sZ7cXYwloZCMCQKwuW6a1VZ+CLiA2fHhLJogLF50/HwfVh81ZIDKMyxw/ejHR+zsZ4
9YSjUr5yHcjQJ68qF/pjZ94Cs6OjsDUqq8FSjKq9WOt0Ph/xEpqDFmhT1W9wmw/tBQDd
O2fY8Mj2Kvai4rqSLtgTW4BIAV+Ni2hUiuJDzzmELDHpfVgyI5Tl+QWLfXjnGkpimsHy
X9QJl50TmzySlHR+I4D1MwV2bzJstLb0CG/OWbaHGtUbyUIHuyPoPAZBCWn2UdqmDU2o
KuDA==; darn=debbugs.gnu.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1770562177; x=1771166977; 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=DQkpcGHrv9jIvkfLczMZ3YGkQI+e/wEtr0BPqSfjAUs=;
b=HB6gO8SqBKt0SJvKIxKKEGgm+nDc8AWSdKKfHtXbh0fOHZqm9vJ3yMpKVzHvrPS+Cj
7bpYC9cf6htad3lYxhDBPAug06CBwXW9bGzFVOoLjkjbmT7fK/K1YxlLKIcBB6du7Osv
wXvsrm6GafcIAqjbFhzTzw66t+tB8CLvOeDDI9WCDTyzbg52hkhWtB1laoXtzQV8dc3r
cBWRWqHtmlqsACjsbMycGwFMbYQrNqHWBFx6tKuwBUgAcBp6NOCzQvfMDU3BXCNVYVTs
AQ4bvg1rT7TpnhhAFShV5SYk+weuxWJUTykzp0re6hc2VcbNHFJt0YY/OtHJCEwgR6AA
Ckjw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1770562177; x=1771166977;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=DQkpcGHrv9jIvkfLczMZ3YGkQI+e/wEtr0BPqSfjAUs=;
b=sN5OIubzx7CcqIUUd/E+f6MYIUMavx4UVHrsCPxJKJvCmS5GScrH9uhChTiMqBiwXt
115ua7EsnZXMyrUvn+fgWWGOkC+bq7xdSX4DLrDOL79OVfc0Opn1E8UMePhQ0pQNyYtr
+5uEvOBl+tqtvQ6ufmVY92M7e7THOFO7JZDYgUlHQYDpmjKKeMBEEvMS4UVn+72ugiNb
LuhGb7ogJgjUGumG+zNTtwb7qRCJKSxLk1mN0fLlKfwenju3cq3075sweHpqsCbMQ9hH
qOvms7gwXnCIbbIIQsZR3sMLPDSGJMbFB4uadJVw3f5klB8l9kUGqHe3OKlXnBlDXVSN
8DwA==
X-Forwarded-Encrypted: i=1;
AJvYcCUGwgUjVa8Pz7JYmtPAyOLakNoL/Y71Az7jNs/fjFD/q6tvNf6ApzBRn+XIyg0EammI7wsEgw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yz8GekbWrkHAVUkwtLRf/iLWF1G4i8jBmavHsaAbDQQa6A9c2YY
/zewngprgWUU7w00GKAWjlz1PAYHy5oz0zywcgDhGMELLsrm6ETu5LbxRKpv3g/3Odi9PVAaN9X
3ac5aRH+ROlxPspRKz7rQfCzFErIIXaM=
X-Gm-Gg: AZuq6aL6M7rAbuzCeNjXu1/MOsxic4M7ImiLNsbrwIUlfl/Vy0vDT7OS8DGbvpVPEmV
8zFd2/8xOzFNBM8qjIplt/vzI7BBeekyS/UMDExJT2HksoX0kzB+HOoUfsja6wq6pu9iP3OoJgT
5Bkmp/WQaDxQVVQ/am+xDjbryBds+YSiKXqrd9XIPBoasvsZnCQd/Fojud9jarU/39Um8KuqGd1
WjD5f0h3GvH3nEYkQX2g0u7kDig5t2r6zaULrr2gGkq8hzoA7V2WEcpt0DCpnLY07hrkPnbbmZg
lc42luYOfpmL9cgpMv8MVqWoDI2UIbJKcSqT0c6P7FsJq85oO3U=
X-Received: by 2002:a05:6102:38cb:b0:5db:cf38:f4fd with SMTP id
ada2fe7eead31-5fae785dd0bmr2287319137.11.1770562177030; Sun, 08 Feb 2026
06:49:37 -0800 (PST)
MIME-Version: 1.0
References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN>
<CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN>
<868qd4v36l.fsf@HIDDEN>
<CAN+1HbqdV2oXQjXi07X8hSgX9A_nYOD+rAWHqfm2XCAfxkNtTQ@HIDDEN>
<861pivvjxn.fsf@HIDDEN>
<CAN+1HbotFM1WiJSaX+n9qEgDpv91Y0Eg59C0UFK2egLEFOAAxQ@HIDDEN>
In-Reply-To: <CAN+1HbotFM1WiJSaX+n9qEgDpv91Y0Eg59C0UFK2egLEFOAAxQ@HIDDEN>
From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>
Date: Sun, 8 Feb 2026 09:49:25 -0500
X-Gm-Features: AZwV_QismpHE2zY454AhmwzyciQ7MS95WeMy3UQUa8sP00QMP4-RO0dCx1zjPGk
Message-ID: <CAN+1HbqnZNBHw_hzq4VQnedfw9QNhtbpWA5Yy_NGy=bHF9o8OA@HIDDEN>
Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake
event package
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: multipart/mixed; boundary="0000000000009d9490064a51216a"
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 80348
Cc: acohen@HIDDEN, eric@HIDDEN, mail@HIDDEN,
Morgan.J.Smith@HIDDEN, michael.albinus@HIDDEN, monnier@HIDDEN,
80348 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 0.0 (/)
--0000000000009d9490064a51216a
Content-Type: multipart/alternative; boundary="0000000000009d948f064a512168"
--0000000000009d948f064a512168
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
On Sun, Feb 8, 2026 at 8:47=E2=80=AFAM St=C3=A9phane Marks <shipmints@gmail=
.com> wrote:
> On Sun, Feb 8, 2026 at 1:17=E2=80=AFAM Eli Zaretskii <eliz@HIDDEN> wrote=
:
>
>> > From: St=C3=A9phane Marks <shipmints@HIDDEN>
>> > Date: Sat, 7 Feb 2026 14:33:03 -0500
>> > Cc: Stefan Monnier <monnier@HIDDEN>, 80348 <at> debbugs.gnu.org,
>> acohen@HIDDEN,
>> > mail@HIDDEN, eric@HIDDEN,
>> michael.albinus@HIDDEN,
>> > Morgan.J.Smith@HIDDEN
>> >
>> > > @cindex @code{sleep-event} event
>> > > -@item (sleep-event @var{sleep-wake})
>> > > -This event is injected when the device Emacs is running on enters =
or
>> > > -leaves the sleep state. A non-@code{nil} @var{sleep-wake}
>> indicates
>> > > -entering the sleep state.
>> > > +@item (sleep-event @var{state})
>> > > +This event is injected when the device Emacs is running on is abou=
t
>> to
>> > > +enter a sleep state, or has just awoken from one. @var{state} wil=
l
>> be
>> > > +the symbol @code{pre-sleep} or @code{post-wake}.
>> >
>> > Why did you need to make this incompatible change? Was there a
>> > problem leaving the values and meaning of the parameter as they were
>> > before? AFAIU, there are still only two possible values, so nil and
>> > non-nil should still do the job, no?
>> >
>> > sleep-event was created by Michael specifically for this feature
>> (though we stopped working on it a while ago
>> > and I just picked it back up) so it is purely new and can't be
>> incompatible since it's never been published. When
>> > originally contemplated, it was D-Bus only which uses a somewhat opaqu=
e
>> true/false PrepareForSleep value. I
>> > prefer using symbols because it allows expansion into pre-shutdown and
>> perhaps other related states that
>> > might be of interest that won't fit into a boolean.
>>
>> It is impossible to discuss hypothetical future changes without
>> specifics. If you have plans or ideas for adding values, let's hear
>> them now, because it could be that there will be comments and
>> alternative suggestions for how to extend this in the future and which
>> values to have there for now. Alternatively (and from my POV
>> preferably) we could just leave the boolean value there for now, and
>> defer the changes for when (and if) we have the other possibilities.
>>
>> Btw, no one said that the set of values cannot include nil, t, and
>> some other non-nil values, when we decide to have more than just two.
>> By contrast, having just two non-nil values always raises a brow.
>>
>
> I feel the opposite and I'd prefer to keep the more expressive names.
> This makes grepping through the code base for event references easier and
> makes hook function implementations self documenting.
>
> > > +(defcustom sleep-event-functions nil
>> > ^^^^^^^^^^^^^^^^^^^^^
>> > The manual said "system-sleep-event-functions".
>> >
>> > I think you're referring to bindings.el which is a hook for the event
>> pump itself. We will discourage people from
>> > using it but as there can be only one callback per event handler,
>> Michael and I thought it was wise to add a
>> > hook.
>>
>> I asked below why do we need two hooks which are similarly named, but
>> use different functions. After re-reading the code, my understanding
>> is as follows:
>>
>> . the sleep event is by default bound to sleep-event-handler
>> . sleep-event-handler does nothing except running the
>> sleep-event-functions nook
>> . sleep-event-functions hook is nil by default, but can be
>> customized by users to add their functions
>> . loading system-sleep adds its own hook,
>> system-sleep--sleep-event-function, to sleep-event-functions
>> . system-sleep--sleep-event-function calls the
>> system-sleep-event-functions hook with each sleep event
>> . system-sleep-event-functions is a user option which by default
>> does nothing
>>
>> Is that correct? If so, isn't that too complicated? Why cannot we
>> have sleep-event-handler process the events directly and call a hook,
>> like other special-event handlers do? And why does loading
>> system-sleep have to add functions to hooks which are user options?
>>
>
> Now eliminated. All sleep-events will be pumped directly into
> system-sleep.
>
> > > +(require 'dbus)
>> >
>> > Shouldn't we load dbus only on systems where DBus is supported?
>> >
>> > We didn't in system-taskbar but I can try to amend both and make it a
>> compile-time only require up there and
>> > require it explicitly in the dbus implementation.
>>
>> I think loading dbus when it is not supported or needed should be
>> avoided.
>>
>
> I will submit a follow-up patch to system-taskbar doing the same thing.
>
> > > +(defgroup system-sleep nil
>> > > + "System sleep/wake blocking and event management."
>> > > + :group 'convenience
>> >
>> > Why "convenience"? Isn't there a better parent group to use? And if
>> > there isn't a better one, how about adding such a group?
>> > system-interface sounds good, for example.
>> >
>> > No idea. All ears for one of the keywords that makes more sense. I
>> thought there were discussions about the
>> > state of affairs of keywords and I thought it wise to reuse.
>>
>> I suggested a keyword above.
>>
>
> As I said, I was trying to avoid adding yet more keywords. In this case,
> it seems like one for the ages and a nice clean one.
>
> I will adopt system-interface. I will submit a follow-up patch to
> system-taskbar doing the same thing.
>
>
>> > > + (if (memq token system-sleep--sleep-block-tokens)
>> > > + (progn
>> > > + (setq system-sleep--sleep-block-tokens
>> > > + (remq token system-sleep--sleep-block-tokens))
>> > > + (if (w32-unblock-system-sleep)
>> > > + t
>> > > + (warn "Unable to unblock system sleep")
>> >
>> > If and when this warning is issued, AFAIU it means that the sleep is
>> > blocked, but the token of its blocker is lost forever, because it was
>> > already removed from the list.
>> >
>> > If the native APIs fail here (which on ns can only fail if it doesn't
>> know the token passed to it, and w32 can't fail),
>> > the token is useless anyway.
>>
>> Sorry, I don't follow. First, this is only about w32 (I'm not
>> familiar with NS APIs you use and on't know if they can fail). And
>> second, the documentation of SetThreadExecutionState definitely says
>> that it can fail: it returns zero if that happens.
>>
>
> Done in the most recent patch.
>
> > What then the user could do to fix
>> > this situation? Will, for example, killing Emacs do that?
>> >
>> > When the Emacs process dies, blocks are released on all platforms. I
>> mentioned this in the code and in the
>> > documentation.
>>
>> Maybe the warning message and/or the doc string should mention that?
>>
>
> Done.
>
> > We could instead mandate system-sleep as the only place to get
>> > and process sleep events, get rid of this hook and do this in
>> system-sleep (keymap-set special-event-map
>> > "<sleep-event>" #'system-sleep--sleep-event-handler)
>>
>> See above. Yes, I think the arrangement with two hooks that are user
>> options is too complicated.
>>
>
> Done.
>
> > > +/* We assume SetThreadExecutionState is always available, being
>> Windows
>> > > + XP+. RegisterSuspendResumeNotification is Windows 8+ so we loo=
k
>> this
>> > > + up. */
>> >
>> > We don't yet require Windows XP for the Windows builds of Emacs, so
>> > SetThreadExecutionState must also be loaded dynamically from its DLL.
>> >
>> > I'll do that. I actually do not know the minimum version of Windows
>> that Emacs supports and I assumed it was
>> > at least XP.
>>
>> No, we definitely support W2K, and hope that support for Windows 9X
>> (98 and Me) is not yet totally dead, although it's been a while since
>> anyone reported any experience from those systems.
>>
>
> Done in the most recent patch.
>
> > Also, shouldn't this return nil if the call to SetThreadExecutionState
>> > failed?
>> >
>> > Done. I could find no evidence of how SetThreadExecutionState can fai=
l
>> so I didn't bother. I will do this to be
>> > complete.
>>
>> See above: the MS documentation clearly describes what happens if it
>> fails.
>>
>
> Done in the most recent patch.
>
> > And I'm not sure I understand the effect of calling
>> > w32-block-system-sleep several times without calling
>> > w32-unblock-system-sleep. It isn't like the OS counts the number of
>> > callers and handles this as a reference count, which must be zero for
>> > the system to be able to sleep, right?
>> >
>> > The idea is that packages like gnus and compile and the user's own cod=
e
>> will all take blocks simultaneously so
>> > they each need to take and release their locks. Each unblock call
>> decrements the count and when 0 we
>> > unblock the system for real. We manually emulate what Windows could
>> have done for us and keep a count and
>> > assign an id to keep the platform implementations sufficiently alike t=
o
>> make the ELisp interface pleasant.
>>
>> OK, but then the condition for unblocking:
>>
>> > + /* One fewer block. */
>> > + if (--sleep_block_count =3D=3D 0
>> > + && sleep_block_execution_state)
>> > + sleep_block_execution_state =3D
>> > + SetThreadExecutionState (sleep_block_execution_state
>> > + & ~(ES_DISPLAY_REQUIRED |
>> ES_SYSTEM_REQUIRED));
>>
>> worries me, because it relies on the value of
>> sleep_block_execution_state, which is overwritten upon each call to
>> SetThreadExecutionState. Why do we need to depend on that value?
>>
>
> I'll take another look at this. If this is the only code and the only
> place this gets called, we have complete control over the values and can
> overwrite them.
>
> > > +DEFUN ("w32-unblock-system-sleep",
>> > > + Fw32_unblock_system_sleep,
>> > > + Sw32_unblock_system_sleep,
>> > > + 0, 0, 0,
>> > > + doc: /* Unblock system idle sleep.
>> > > +Return non-nil if the TOKEN block was unblocked. */)
>> > > + (void)
>> > > +{
>> > > + /* No blocks to unblock. */
>> > > + if (sleep_block_count =3D=3D 0)
>> > > + return Qnil;
>> >
>> > This seems wrong: why indicate failure in this trivial case?
>> >
>> > We can go either way on this. I thought it prudent to indicate failur=
e
>> for any debugging scenarios we might
>> > encounter in the wild.
>>
>> But it isn't a failure, is it? It is okay to call unblock when no one
>> called block, right?
>>
>
> Well, if one calls the function with a token and there are no tokens then
> technically the provided token was not unblocked.
>
> In Lisp, I will first query the counter and call the native unblock only
> if the counter is not zero. This will avoid interpreting no tokens to
> unblock as a failure and no harm otherwise. I can still change the nativ=
e
> code to return t if we really want to represent that it did something tha=
t
> it didn't do.
>
> > > + /* System sleep support. */
>> > > + DEFSYM (Qpre_sleep, "pre-sleep");
>> > > + DEFSYM (Qpost_wake, "post-wake");
>> >
>> > These symbols should be defined in one place and only once, not
>> > separately for each system. (And I hope we won't need them at all,
>> > see above.)
>> >
>> > Where would you like them to be defined?
>>
>> It doesn't matter. fns.c, perhaps, or data.c.
>>
>
> Alright, let's see where the debate between symbols and nil/t wind up.
>
> Thanks, again, for the thoughtful comments.
>
I think I've incorporated everyone's feedback in the attached patch. I've
left the symbols in place for the event states. If we decide to keep them,
I'll centralize the native symbol definitions in fns.c or data.c.
-St=C3=A9phane
--0000000000009d948f064a512168
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon=
t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">=
On Sun, Feb 8, 2026 at 8:47=E2=80=AFAM St=C3=A9phane Marks <<a href=3D"m=
ailto:shipmints@HIDDEN">shipmints@HIDDEN</a>> wrote:</span></div><=
/div><div class=3D"gmail_quote gmail_quote_container"><blockquote class=3D"=
gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(20=
4,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div style=
=3D"font-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-=
serif">On Sun, Feb 8, 2026 at 1:17=E2=80=AFAM Eli Zaretskii <<a href=3D"=
mailto:eliz@HIDDEN" target=3D"_blank">eliz@HIDDEN</a>> wrote:</span></=
div></div><div class=3D"gmail_quote"><blockquote class=3D"gmail_quote" styl=
e=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);paddin=
g-left:1ex">> From: St=C3=A9phane Marks <<a href=3D"mailto:shipmints@=
gmail.com" target=3D"_blank">shipmints@HIDDEN</a>><br>
> Date: Sat, 7 Feb 2026 14:33:03 -0500<br>
> Cc: Stefan Monnier <<a href=3D"mailto:monnier@HIDDEN" tar=
get=3D"_blank">monnier@HIDDEN</a>>, <a href=3D"mailto:80348@de=
bbugs.gnu.org" target=3D"_blank">80348 <at> debbugs.gnu.org</a>, <a href=3D"mail=
to:acohen@HIDDEN" target=3D"_blank">acohen@HIDDEN</a>, <br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0<a href=3D"mailto:mail@HIDDEN" ta=
rget=3D"_blank">mail@HIDDEN</a>, <a href=3D"mailto:eric@ericabra=
hamsen.net" target=3D"_blank">eric@HIDDEN</a>, <a href=3D"mailt=
o:michael.albinus@HIDDEN" target=3D"_blank">michael.albinus@HIDDEN</a>, <br=
>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0<a href=3D"mailto:Morgan.J.Smith@HIDDEN=
" target=3D"_blank">Morgan.J.Smith@HIDDEN</a><br>
> <br>
>=C2=A0 >=C2=A0 @cindex @code{sleep-event} event<br>
>=C2=A0 > -@item (sleep-event @var{sleep-wake})<br>
>=C2=A0 > -This event is injected when the device Emacs is running on=
enters or<br>
>=C2=A0 > -leaves the sleep state.=C2=A0 A non-@code{nil} @var{sleep-=
wake} indicates<br>
>=C2=A0 > -entering the sleep state.<br>
>=C2=A0 > +@item (sleep-event @var{state})<br>
>=C2=A0 > +This event is injected when the device Emacs is running on=
is about to<br>
>=C2=A0 > +enter a sleep state, or has just awoken from one.=C2=A0 @v=
ar{state} will be<br>
>=C2=A0 > +the symbol @code{pre-sleep} or @code{post-wake}.<br>
> <br>
>=C2=A0 Why did you need to make this incompatible change?=C2=A0 Was the=
re a<br>
>=C2=A0 problem leaving the values and meaning of the parameter as they =
were<br>
>=C2=A0 before?=C2=A0 AFAIU, there are still only two possible values, s=
o nil and<br>
>=C2=A0 non-nil should still do the job, no?<br>
> <br>
> sleep-event was created by Michael specifically for this feature (thou=
gh we stopped working on it a while ago<br>
> and I just picked it back up) so it is purely new and can't be inc=
ompatible since it's never been published.=C2=A0 When<br>
> originally contemplated, it was D-Bus only which uses a somewhat opaqu=
e true/false PrepareForSleep value.=C2=A0 I<br>
> prefer using symbols because it allows expansion into pre-shutdown and=
perhaps other related states that<br>
> might be of interest that won't fit into a boolean.<br>
<br>
It is impossible to discuss hypothetical future changes without<br>
specifics.=C2=A0 If you have plans or ideas for adding values, let's he=
ar<br>
them now, because it could be that there will be comments and<br>
alternative suggestions for how to extend this in the future and which<br>
values to have there for now.=C2=A0 Alternatively (and from my POV<br>
preferably) we could just leave the boolean value there for now, and<br>
defer the changes for when (and if) we have the other possibilities.<br>
<br>
Btw, no one said that the set of values cannot include nil, t, and<br>
some other non-nil values, when we decide to have more than just two.<br>
By contrast, having just two non-nil values always raises a brow.<br></bloc=
kquote><div><br></div><div><div style=3D"font-family:monospace">I feel the=
=C2=A0opposite and I'd prefer to keep the more expressive names.=C2=A0 =
This makes grepping through the code base for event references easier and m=
akes hook function implementations self documenting.</div></div><div style=
=3D"font-family:monospace"><br></div><blockquote class=3D"gmail_quote" styl=
e=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);paddin=
g-left:1ex">
>=C2=A0 > +(defcustom sleep-event-functions nil<br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ^^^^^^^^^^^^^^^=
^^^^^^<br>
>=C2=A0 The manual said "system-sleep-event-functions".<br>
> <br>
> I think you're referring to bindings.el which is a hook for the ev=
ent pump itself.=C2=A0 We will discourage people from<br>
> using it but as there can be only one callback per event handler, Mich=
ael and I thought it was wise to add a<br>
> hook. <br>
<br>
I asked below why do we need two hooks which are similarly named, but<br>
use different functions.=C2=A0 After re-reading the code, my understanding<=
br>
is as follows:<br>
<br>
=C2=A0 . the sleep event is by default bound to sleep-event-handler<br>
=C2=A0 . sleep-event-handler does nothing except running the<br>
=C2=A0 =C2=A0 sleep-event-functions nook<br>
=C2=A0 . sleep-event-functions hook is nil by default, but can be<br>
=C2=A0 =C2=A0 customized by users to add their functions<br>
=C2=A0 . loading system-sleep adds its own hook,<br>
=C2=A0 =C2=A0 system-sleep--sleep-event-function, to sleep-event-functions<=
br>
=C2=A0 . system-sleep--sleep-event-function calls the<br>
=C2=A0 =C2=A0 system-sleep-event-functions hook with each sleep event<br>
=C2=A0 . system-sleep-event-functions is a user option which by default<br>
=C2=A0 =C2=A0 does nothing<br>
<br>
Is that correct?=C2=A0 If so, isn't that too complicated?=C2=A0 Why can=
not we<br>
have sleep-event-handler process the events directly and call a hook,<br>
like other special-event handlers do?=C2=A0 And why does loading<br>
system-sleep have to add functions to hooks which are user options?<br></bl=
ockquote><div><br></div><div><div style=3D"font-family:monospace">Now elimi=
nated.=C2=A0 All sleep-events will be pumped directly into system-sleep.</d=
iv></div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0=
px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
>=C2=A0 > +(require 'dbus)<br>
> <br>
>=C2=A0 Shouldn't we load dbus only on systems where DBus is support=
ed?<br>
> <br>
> We didn't in system-taskbar but I can try to amend both and make i=
t a compile-time only require up there and<br>
> require it explicitly in the dbus implementation.<br>
<br>
I think loading dbus when it is not supported or needed should be<br>
avoided.<br></blockquote><div><br></div><div><div style=3D"font-family:mono=
space">I will submit a follow-up patch to system-taskbar doing the same thi=
ng.</div></div><div><br></div><blockquote class=3D"gmail_quote" style=3D"ma=
rgin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:=
1ex">
>=C2=A0 > +(defgroup system-sleep nil<br>
>=C2=A0 > +=C2=A0 "System sleep/wake blocking and event manageme=
nt."<br>
>=C2=A0 > +=C2=A0 :group 'convenience<br>
> <br>
>=C2=A0 Why "convenience"?=C2=A0 Isn't there a better pare=
nt group to use?=C2=A0 And if<br>
>=C2=A0 there isn't a better one, how about adding such a group?<br>
>=C2=A0 system-interface sounds good, for example.<br>
> <br>
> No idea. All ears for one of the keywords that makes more sense.=C2=A0=
I thought there were discussions about the<br>
> state of affairs of keywords and I thought it wise to reuse.<br>
<br>
I suggested a keyword above.<br></blockquote><div><br></div><div><span clas=
s=3D"gmail_default" style=3D"font-family:monospace">As I said, I was trying=
to avoid adding yet more keywords.=C2=A0 In this case, it seems like one f=
or the=C2=A0ages and a nice clean one.</span></div><div><span class=3D"gmai=
l_default" style=3D"font-family:monospace"><br></span></div><div><font face=
=3D"monospace"><span class=3D"gmail_default">I will adopt system-interface.=
=C2=A0=C2=A0</span>I will submit a follow-up patch to system-taskbar doing =
the same thing.<br></font></div><div>=C2=A0</div><blockquote class=3D"gmail=
_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204=
,204);padding-left:1ex">
>=C2=A0 > +=C2=A0 (if (memq token system-sleep--sleep-block-tokens)<b=
r>
>=C2=A0 > +=C2=A0 =C2=A0 =C2=A0 (progn<br>
>=C2=A0 > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq system-sleep--sleep-bloc=
k-tokens<br>
>=C2=A0 > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (remq tok=
en system-sleep--sleep-block-tokens))<br>
>=C2=A0 > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (if (w32-unblock-system-sleep)=
<br>
>=C2=A0 > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 t<br>
>=C2=A0 > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (warn "Unable to u=
nblock system sleep")<br>
> <br>
>=C2=A0 If and when this warning is issued, AFAIU it means that the slee=
p is<br>
>=C2=A0 blocked, but the token of its blocker is lost forever, because i=
t was<br>
>=C2=A0 already removed from the list.<br>
> <br>
> If the native APIs fail here (which on ns can only fail if it doesn=
9;t know the token passed to it, and w32 can't fail),<br>
> the token is useless anyway.<br>
<br>
Sorry, I don't follow.=C2=A0 First, this is only about w32 (I'm not=
<br>
familiar with NS APIs you use and on't know if they can fail).=C2=A0 An=
d<br>
second, the documentation of SetThreadExecutionState definitely says<br>
that it can fail: it returns zero if that happens.<br></blockquote><div><br=
></div><div><div style=3D"font-family:monospace">Done in the most recent pa=
tch.</div></div><div><br></div><blockquote class=3D"gmail_quote" style=3D"m=
argin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left=
:1ex">
>=C2=A0 What then the user could do to fix<br>
>=C2=A0 this situation?=C2=A0 Will, for example, killing Emacs do that?<=
br>
> <br>
> When the Emacs process dies, blocks are released on all platforms.=C2=
=A0 I mentioned this in the code and in the<br>
> documentation.<br>
<br>
Maybe the warning message and/or the doc string should mention that?<br></b=
lockquote><div><br></div><div style=3D"font-family:monospace">Done.</div><d=
iv style=3D"font-family:monospace"><br></div><blockquote class=3D"gmail_quo=
te" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204=
);padding-left:1ex">
> We could instead mandate system-sleep as the only place to get<br>
> and process sleep events, get rid of this hook and do this in system-s=
leep (keymap-set special-event-map<br>
> "<sleep-event>" #'system-sleep--sleep-event-handle=
r)<br>
<br>
See above.=C2=A0 Yes, I think the arrangement with two hooks that are user<=
br>
options is too complicated.<br></blockquote><div><br></div><div style=3D"fo=
nt-family:monospace">Done.</div><div style=3D"font-family:monospace"><br></=
div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bor=
der-left:1px solid rgb(204,204,204);padding-left:1ex">
>=C2=A0 > +/* We assume SetThreadExecutionState is always available, =
being Windows<br>
>=C2=A0 > +=C2=A0 =C2=A0XP+.=C2=A0 RegisterSuspendResumeNotification =
is Windows 8+ so we look this<br>
>=C2=A0 > +=C2=A0 =C2=A0up.=C2=A0 */<br>
> <br>
>=C2=A0 We don't yet require Windows XP for the Windows builds of Em=
acs, so<br>
>=C2=A0 SetThreadExecutionState must also be loaded dynamically from its=
DLL.<br>
> <br>
> I'll do that.=C2=A0 I actually do not know the minimum version of =
Windows that Emacs supports and I assumed it was<br>
> at least XP.<br>
<br>
No, we definitely support W2K, and hope that support for Windows 9X<br>
(98 and Me) is not yet totally dead, although it's been a while since<b=
r>
anyone reported any experience from those systems.<br></blockquote><div><br=
></div><div><div style=3D"font-family:monospace">Done in the most recent pa=
tch.</div></div><div><br></div><blockquote class=3D"gmail_quote" style=3D"m=
argin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left=
:1ex">
>=C2=A0 Also, shouldn't this return nil if the call to SetThreadExec=
utionState<br>
>=C2=A0 failed?<br>
> <br>
> Done.=C2=A0 I could find no evidence of how SetThreadExecutionState ca=
n fail so I didn't bother.=C2=A0 I will do this to be<br>
> complete.<br>
<br>
See above: the MS documentation clearly describes what happens if it<br>
fails.<br></blockquote><div><br></div><div><div><div style=3D"font-family:m=
onospace">Done in the most recent patch.</div></div><div><br></div></div><b=
lockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-le=
ft:1px solid rgb(204,204,204);padding-left:1ex">
>=C2=A0 And I'm not sure I understand the effect of calling<br>
>=C2=A0 w32-block-system-sleep several times without calling<br>
>=C2=A0 w32-unblock-system-sleep.=C2=A0 It isn't like the OS counts =
the number of<br>
>=C2=A0 callers and handles this as a reference count, which must be zer=
o for<br>
>=C2=A0 the system to be able to sleep, right?<br>
> <br>
> The idea is that packages like gnus and compile and the user's own=
code will all take blocks simultaneously so<br>
> they each need to take and release their locks.=C2=A0 Each unblock cal=
l decrements the count and when 0 we<br>
> unblock the system for real.=C2=A0 We manually emulate what Windows co=
uld have done for us and keep a count and<br>
> assign an id to keep the platform implementations sufficiently alike t=
o make the ELisp interface pleasant.<br>
<br>
OK, but then the condition for unblocking:<br>
<br>
> +=C2=A0 /* One fewer block.=C2=A0 */<br>
> +=C2=A0 if (--sleep_block_count =3D=3D 0<br>
> +=C2=A0 =C2=A0 =C2=A0 && sleep_block_execution_state)<br>
> +=C2=A0 =C2=A0 sleep_block_execution_state =3D<br>
> +=C2=A0 =C2=A0 =C2=A0 SetThreadExecutionState (sleep_block_execution_s=
tate<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 & ~(ES_DISPLAY_REQUIRED | ES_SYSTEM_REQUIR=
ED));<br>
<br>
worries me, because it relies on the value of<br>
sleep_block_execution_state, which is overwritten upon each call to<br>
SetThreadExecutionState.=C2=A0 Why do we need to depend on that value?<br><=
/blockquote><div><br></div><div><div style=3D"font-family:monospace">I'=
ll take another look at this.=C2=A0 If this is the only code and the only p=
lace this gets called, we have complete control over the values and can ove=
rwrite them.=C2=A0</div></div><div><br></div><blockquote class=3D"gmail_quo=
te" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204=
);padding-left:1ex">
>=C2=A0 > +DEFUN ("w32-unblock-system-sleep",<br>
>=C2=A0 > +=C2=A0 =C2=A0 =C2=A0 =C2=A0Fw32_unblock_system_sleep,<br>
>=C2=A0 > +=C2=A0 =C2=A0 =C2=A0 =C2=A0Sw32_unblock_system_sleep,<br>
>=C2=A0 > +=C2=A0 =C2=A0 =C2=A0 =C2=A00, 0, 0,<br>
>=C2=A0 > +=C2=A0 =C2=A0 =C2=A0 =C2=A0doc: /* Unblock system idle sle=
ep.<br>
>=C2=A0 > +Return non-nil if the TOKEN block was unblocked.=C2=A0 */)=
<br>
>=C2=A0 > +=C2=A0 (void)<br>
>=C2=A0 > +{<br>
>=C2=A0 > +=C2=A0 /* No blocks to unblock.=C2=A0 */<br>
>=C2=A0 > +=C2=A0 if (sleep_block_count =3D=3D 0)<br>
>=C2=A0 > +=C2=A0 =C2=A0 return Qnil;<br>
> <br>
>=C2=A0 This seems wrong: why indicate failure in this trivial case?<br>
> <br>
> We can go either way on this.=C2=A0 I thought it prudent to indicate f=
ailure for any debugging scenarios we might<br>
> encounter in the wild.<br>
<br>
But it isn't a failure, is it?=C2=A0 It is okay to call unblock when no=
one<br>
called block, right?<br></blockquote><div><br></div><div><div style=3D"font=
-family:monospace">Well, if one calls the function with a token and there a=
re no tokens then technically the provided token was not unblocked.</div></=
div><div><br></div><div><div><font face=3D"monospace">In Lisp, I will first=
query the counter and call the native unblock only if the counter is not z=
ero.=C2=A0 This will avoid interpreting no tokens to unblock as a failure a=
nd no harm otherwise.=C2=A0 I can still change the native code to return t =
if we really want to represent that it did something that it didn't do.=
</font></div><div><br></div></div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex">
>=C2=A0 > +=C2=A0 /* System sleep support.=C2=A0 */<br>
>=C2=A0 > +=C2=A0 DEFSYM (Qpre_sleep, "pre-sleep");<br>
>=C2=A0 > +=C2=A0 DEFSYM (Qpost_wake, "post-wake");<br>
> <br>
>=C2=A0 These symbols should be defined in one place and only once, not<=
br>
>=C2=A0 separately for each system.=C2=A0 (And I hope we won't need =
them at all,<br>
>=C2=A0 see above.)<br>
> <br>
> Where would you like them to be defined?<br>
<br>
It doesn't matter.=C2=A0 fns.c, perhaps, or data.c.<br></blockquote><di=
v><br></div><div><div style=3D"font-family:monospace">Alright, let's se=
e where the debate between symbols and nil/t wind up.</div><br></div><div><=
div style=3D"font-family:monospace">Thanks, again, for the thoughtful comme=
nts.</div></div></div></div></blockquote><div><br></div><div class=3D"gmail=
_default" style=3D"font-family:monospace">I think I've incorporated eve=
ryone's feedback in the attached patch.=C2=A0 I've left the symbols=
in place for the event states. If we decide to keep them, I'll central=
ize the native symbol definitions in fns.c or data.c.</div><div class=3D"gm=
ail_default" style=3D"font-family:monospace"><br></div><div class=3D"gmail_=
default" style=3D"font-family:monospace">-St=C3=A9phane=C2=A0</div></div></=
div>
--0000000000009d948f064a512168--
--0000000000009d9490064a51216a
Content-Type: application/octet-stream;
name="0001-system-sleep-sleep-blocker-and-sleep-wake-event-pack.patch"
Content-Disposition: attachment;
filename="0001-system-sleep-sleep-blocker-and-sleep-wake-event-pack.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_mlduzrk30>
X-Attachment-Id: f_mlduzrk30
RnJvbSBjYjg5NmI2MmViOGVkOWIwNDRjNTc2MTRmNWRhNTI5MjQ3MmI1MTU4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo
aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgNCBGZWIgMjAyNiAxODoyMDo1NSAtMDUwMApT
dWJqZWN0OiBbUEFUQ0hdIHN5c3RlbS1zbGVlcCBzbGVlcCBibG9ja2VyIGFuZCBzbGVlcC93YWtl
IGV2ZW50IHBhY2thZ2UKIChidWcjODAzNDgpCgpUaGlzIHBhY2thZ2UgcHJvdmlkZXMgcGxhdGZv
cm0tbmV1dHJhbCBpbnRlcmZhY2VzIHRvIGJsb2NrIHlvdXIKc3lzdGVtIGZyb20gZW50ZXJpbmcg
aWRsZSBzbGVlcCBhbmQgYSBob29rIHRvIHByb2Nlc3MgcHJlLXNsZWVwCmFuZCBwb3N0LXdha2Ug
ZXZlbnRzLgoKSW1wbGVtZW50YXRpb25zIGFyZSBmb3IgRC1CdXMgb24gR05VL0xpbnV4LCBtYWNP
Uy9HTlVzdGVwLCBhbmQKTVMtV2luZG93cy4KCiogbGlzcC9iaW5kaW5ncy5lbCAoc2xlZXAtZXZl
bnQtZnVuY3Rpb25zKTogTmV3IGFibm9ybWFsIGhvb2suCihzbGVlcC1ldmVudC1oYW5kbGVyKTog
TmV3IGRlZnVuLgooc3BlY2lhbC1ldmVudC1tYXApOiBOZXcgZXZlbnQgaGFuZGxlci4KKiBsaXNw
L3N5c3RlbS1zbGVlcC5lbDogTmV3IHBhY2thZ2UuCiogc3JjL25zZm5zLm0gKEZuc19ibG9ja19z
eXN0ZW1fc2xlZXAsIEZuc191bmJsb2NrX3N5c3RlbV9zbGVlcCkKKHN5bXNfb2ZfbnNmbnMpOiBO
ZXcgZnVuY3Rpb25zLgoqIHNyYy9uc3Rlcm0ubSAoYXBwbGljYXRpb25EaWRGaW5pc2hMYXVuY2hp
bmcpOiBTdWJzY3JpYmUgdG8KcHJlLXNsZWVwIGFuZCBwb3N0LXdha2Ugbm90aWZpY2F0aW9ucy4K
KHN5c3RlbVdpbGxTbGVlcCwgc3lzdGVtRGlkV2FrZSk6IE5ldyBmdW5jdGlvbi4KKHN5bXNfb2Zf
bnN0ZXJtKTogUXByZV9zbGVlcCBRcG9zdF93YWtlIG5ldyBzeW1ib2xzLgoqIHNyYy93MzJmbnMu
YyAoRnczMl9ibG9ja19zeXN0ZW1fc2xlZXApCihGdzMyX3VuYmxvY2tfc3lzdGVtX3NsZWVwLCBG
dzMyX3N5c3RlbV9zbGVlcF9ibG9ja19jb3VudCkKKHNsZWVwX25vdGlmaWNhdGlvbl9jYWxsYmFj
aykKKHczMl9yZWdpc3Rlcl9mb3Jfc2xlZXBfbm90aWZpY2F0aW9ucyk6IE5ldyBmdW5jdGlvbi4K
KHN5bXNfb2ZfdzMyZm5zKTogU3czMl91bmJsb2NrX3N5c3RlbV9zbGVlcApTdzMyX2Jsb2NrX3N5
c3RlbV9zbGVlcCBTdzMyX3N5c3RlbV9zbGVlcF9ibG9ja19jb3VudDogTmV3CmRlZnN1YnIuCihz
eW1zX29mX3czMmZucyk6IFFwcmVfc2xlZXAsIFFwb3N0X3dha2U6IE5ldyBERUZTWU0uCiogc3Jj
L3czMnRlcm0uaCAoRnczMl9ibG9ja19zeXN0ZW1fc2xlZXApOiBOZXcgZXh0ZXJuLgoqIHNyYy93
MzJ0ZXJtLmMgKHczMl9pbml0aWFsaXplKTogQ2FsbAp3MzJfcmVnaXN0ZXJfZm9yX3NsZWVwX25v
dGlmaWNhdGlvbnMuCiogZG9jL2xpc3ByZWYvb3MudGV4aTogRG9jdW1lbnQgdGhlIHN5c3RlbS1z
bGVlcCBwYWNrYWdlLgoqIGRvYy9saXNwcmVmL2NvbW1hbmRzLnRleGk6IFVwZGF0ZSBzbGVlcC1l
dmVudCBzcGVjaWFsCmRvY3VtZW50YXRpb24uCiogZXRjL05FV1M6IEFubm91bmNlIHRoZSBuZXcg
cGFja2FnZS4KLS0tCiBkb2MvbGlzcHJlZi9jb21tYW5kcy50ZXhpIHwgIDEwICstCiBkb2MvbGlz
cHJlZi9vcy50ZXhpICAgICAgIHwgIDY4ICsrKysrCiBldGMvTkVXUyAgICAgICAgICAgICAgICAg
IHwgIDE2ICsrCiBsaXNwL3N5c3RlbS1zbGVlcC5lbCAgICAgIHwgNTE0ICsrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvbnNmbnMubSAgICAgICAgICAgICAgIHwgIDg0
ICsrKysrKysKIHNyYy9uc3Rlcm0ubSAgICAgICAgICAgICAgfCAgNTIgKysrLQogc3JjL3czMmZu
cy5jICAgICAgICAgICAgICB8IDE0NyArKysrKysrKysrKwogc3JjL3czMnRlcm0uYyAgICAgICAg
ICAgICB8ICAgMSArCiBzcmMvdzMydGVybS5oICAgICAgICAgICAgIHwgICAxICsKIDkgZmlsZXMg
Y2hhbmdlZCwgODc5IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg
MTAwNjQ0IGxpc3Avc3lzdGVtLXNsZWVwLmVsCgpkaWZmIC0tZ2l0IGEvZG9jL2xpc3ByZWYvY29t
bWFuZHMudGV4aSBiL2RvYy9saXNwcmVmL2NvbW1hbmRzLnRleGkKaW5kZXggYmQzMTc5OGQ0MzEu
LjRhZWUyNjA5ZDY1IDEwMDY0NAotLS0gYS9kb2MvbGlzcHJlZi9jb21tYW5kcy50ZXhpCisrKyBi
L2RvYy9saXNwcmVmL2NvbW1hbmRzLnRleGkKQEAgLTI3NzgsMTIgKzI3NzgsMTIgQEAgTWlzYyBF
dmVudHMKIEBlbmQgc21hbGxleGFtcGxlCiAKIEBjaW5kZXggQGNvZGV7c2xlZXAtZXZlbnR9IGV2
ZW50Ci1AaXRlbSAoc2xlZXAtZXZlbnQgQHZhcntzbGVlcC13YWtlfSkKLVRoaXMgZXZlbnQgaXMg
aW5qZWN0ZWQgd2hlbiB0aGUgZGV2aWNlIEVtYWNzIGlzIHJ1bm5pbmcgb24gZW50ZXJzIG9yCi1s
ZWF2ZXMgdGhlIHNsZWVwIHN0YXRlLiAgQSBub24tQGNvZGV7bmlsfSBAdmFye3NsZWVwLXdha2V9
IGluZGljYXRlcwotZW50ZXJpbmcgdGhlIHNsZWVwIHN0YXRlLgorQGl0ZW0gKHNsZWVwLWV2ZW50
IEB2YXJ7c3RhdGV9KQorVGhpcyBldmVudCBpcyBpbmplY3RlZCB3aGVuIHRoZSBkZXZpY2UgRW1h
Y3MgaXMgcnVubmluZyBvbiBpcyBhYm91dCB0bworZW50ZXIgYSBzbGVlcCBzdGF0ZSwgb3IgaGFz
IGp1c3QgYXdva2VuIGZyb20gb25lLiAgQHZhcntzdGF0ZX0gd2lsbCBiZQordGhlIHN5bWJvbCBA
Y29kZXtwcmUtc2xlZXB9IG9yIEBjb2Rle3Bvc3Qtd2FrZX0uCiAKLVRoaXMgaXMgaW1wbGVtZW50
ZWQgb25seSBvbiBHTlUvTGludXguCitUaGlzIGlzIGltcGxlbWVudGVkIG9uIEdOVS9MaW51eCwg
bWFjT1MsIGFuZCBNUy1XaW5kb3dzLgogCiBAY2luZGV4IEBjb2Rle2xhbmd1YWdlLWNoYW5nZX0g
ZXZlbnQKIEBpdGVtIGxhbmd1YWdlLWNoYW5nZQpkaWZmIC0tZ2l0IGEvZG9jL2xpc3ByZWYvb3Mu
dGV4aSBiL2RvYy9saXNwcmVmL29zLnRleGkKaW5kZXggZjVjYTZlZmEyMWIuLmRjMmI2MWNjYWRl
IDEwMDY0NAotLS0gYS9kb2MvbGlzcHJlZi9vcy50ZXhpCisrKyBiL2RvYy9saXNwcmVmL29zLnRl
eGkKQEAgLTM1LDYgKzM1LDcgQEAgU3lzdGVtIEludGVyZmFjZQogKiBTZXNzaW9uIE1hbmFnZW1l
bnQ6OiAgU2F2aW5nIGFuZCByZXN0b3Jpbmcgc3RhdGUgd2l0aCBYIFNlc3Npb24gTWFuYWdlbWVu
dC4KICogRGVza3RvcCBOb3RpZmljYXRpb25zOjogRGVza3RvcCBub3RpZmljYXRpb25zLgogKiBT
eXN0ZW0gVGFza2Jhcjo6ICAgICAgQ29udHJvbGxpbmcgc3lzdGVtIEdVSSB0YXNrYmFyIGZlYXR1
cmVzLgorKiBTeXN0ZW0gU2xlZXA6OiAgICAgICAgQmxvY2sgc3lzdGVtIHNsZWVwIGFuZCBwcm9j
ZXNzIHNsZWVwIGV2ZW50cy4KICogRmlsZSBOb3RpZmljYXRpb25zOjogIEZpbGUgbm90aWZpY2F0
aW9ucy4KICogRHluYW1pYyBMaWJyYXJpZXM6OiAgIE9uLWRlbWFuZCBsb2FkaW5nIG9mIHN1cHBv
cnQgbGlicmFyaWVzLgogKiBTZWN1cml0eSBDb25zaWRlcmF0aW9uczo6IFJ1bm5pbmcgRW1hY3Mg
aW4gYW4gdW5mcmllbmRseSBlbnZpcm9ubWVudC4KQEAgLTM0OTMsNiArMzQ5NCw3MyBAQCBTeXN0
ZW0gVGFza2JhcgogQGVuZCBncm91cAogQGVuZCBsaXNwCiAKK0Bub2RlIFN5c3RlbSBTbGVlcAor
QHNlY3Rpb24gQmxvY2sgU3lzdGVtIFNsZWVwIGFuZCBQcm9jZXNzIFNsZWVwIEV2ZW50cworQGNp
bmRleCBzeXN0ZW0gc2xlZXAKK0BjaW5kZXggbW9kZSwgc3lzdGVtIHNsZWVwCisKK0BkZWZ1biBz
eXN0ZW0tc2xlZXAtYmxvY2stc2xlZXAgJm9wdGlvbmFsIHdoeSBhbGxvdy1kaXNwbGF5LXNsZWVw
CitUaGlzIGZ1bmN0aW9uIGJsb2NrcyB0aGUgc3lzdGVtIGZyb20gZW50ZXJpbmcgaXRzIGlkbGUg
c2xlZXAgc3RhdGUuCisKK0l0IHJldHVybnMgYSB0b2tlbiB0aGF0IG11c3QgYmUgcGFzc2VkIHRv
CitAY29kZXtzeXN0ZW0tc2xlZXAtdW5ibG9jay1zbGVlcH0gdG8gdW5ibG9jayB0aGlzIHNwZWNp
ZmljIGJsb2NrIChvdGhlcgorc2xlZXAgYmxvY2tzIG1heSBiZSBzaW11bHRhbmVvdXNseSBpbiBm
b3JjZSBmb3Igb3RoZXIgcHVycG9zZXMpLgorT3RoZXJ3aXNlLCBpdCByZXR1cm5zIEBjb2Rle25p
bH0gaWYgdGhlIHNsZWVwIGJsb2NraW5nIGZhaWxzLgorCitAdmFye3doeX0gaXMgYSBzdHJpbmcg
YW5kLCB3aGVuIG5vbi1uaWwsIGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHNsZWVwCitibG9jayBh
cyBpdCBtYXkgYXBwZWFyIG9uIHRoZSBzeXN0ZW0ncyBpbnNwZWN0YWJsZSBibG9jayBsaXN0cy4g
IEl0CitkZWZhdWx0cyB0byBgYEVtYWNzJycuCisKK0lmIEB2YXJ7YWxsb3ctZGlzcGxheS1zbGVl
cH0gaXMgbm9uLW5pbCwgYWxsb3cgdGhlIGRpc3BsYXkgdG8gc2xlZXAuICBCeQorZGVmYXVsdCwg
dGhlIGRpc3BsYXkgaXMga2VwdCBhY3RpdmUuCisKK05vdGU6IOKAi1doZW4gdGhlIEVtYWNzIHBy
b2Nlc3MgZGllcywgYmxvY2tzIGFyZSByZWxlYXNlZCBvbiBhbGwgcGxhdGZvcm1zLgorQGVuZCBk
ZWZ1bgorCitAZGVmdW4gc3lzdGVtLXNsZWVwLXVuYmxvY2stc2xlZXAgdG9rZW4KK1RoaXMgZnVu
Y3Rpb24gdW5ibG9ja3MgdGhlIHNsZWVwIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCBAdmFye3Rva2Vu
fS4gIEl0CityZXR1cm5zIG5vbi1AY29kZXtuaWx9IG9uIHN1Y2Nlc3MsIG90aGVyd2lzZSByZXR1
cm5zIEBjb2Rle25pbH0uCitAZW5kIGRlZnVuCisKK0BkZWZtYWMgd2l0aC1zeXN0ZW0tc2xlZXAt
YmxvY2sgKHdoeSBhbGxvdy1kaXNwbGF5LXNsZWVwKSBib2R5QGRvdHN7fQorVGhpcyBpcyBhIGNv
bnZlbmllbmNlIG1hY3JvIHRoYXQgbGV0cyB5b3Ugd3JhcCB0aGUgZm9ybXMgaW4gQHZhcntib2R5
fQord2l0aCBhIHNsZWVwIGJsb2NrIHRoYXQgaXMgdW5ibG9ja2VkIGZvciB5b3Ugd2hlbiBAdmFy
e2JvZHl9IGNvbXBsZXRlcy4KK1RoZSBhcmd1bWVudHMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFz
IGluCitAY29kZXtzeXN0ZW0tc2xlZXAtYmxvY2stc2xlZXB9LCBhYm92ZS4KK0BlbmQgZGVmbWFj
CisKK0BkZWZ1biBzeXN0ZW0tc2xlZXAtc2xlZXAtYmxvY2tlZC1wCitUaGlzIHByZWRpY2F0ZSBm
dW5jdGlvbiByZXR1cm5zIG5vbi1AY29kZXtuaWx9IG9uIGlmIHRoZXJlIGFyZSBhbnkKK2FjdGl2
ZSBAY29kZXtzeXN0ZW0tc2xlZXB9IGJsb2Nrcywgb3RoZXJ3aXNlIHJldHVybnMgQGNvZGV7bmls
fS4KK0BlbmQgZGVmdW4KKworQGRlZnVuIHN5c3RlbS1zbGVlcC11bmJsb2NrLWFsbC1zbGVlcC1i
bG9ja3MKK1RoaXMgZnVuY3Rpb24gdW5ibG9ja3MgYWxsIGFjdGl2ZSBzbGVlcCBibG9ja3MuICBJ
dCBpcyB1bmxpa2VseSB0aGF0IHlvdQord2lsbCBuZWVkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbi4K
K0BlbmQgZGVmdW4KKworQGRlZm9wdCBzeXN0ZW0tc2xlZXAtZXZlbnQtZnVuY3Rpb25zCitXaGVu
IHRoZSBzeXN0ZW0gaXMgYWJvdXQgdG8gZW50ZXIgYSBzbGVlcCBzdGF0ZSBvciBhZnRlciBpdCB3
YWtlcyBmcm9tCitvbmUsIGVhY2ggZnVuY3Rpb24gb24gdGhpcyBhYm5vcm1hbCBob29rIGlzIGNh
bGxlZCB3aXRoIG9uZSBhcmd1bWVudCwKK0B2YXJ7ZXZlbnR9LCBhIHNsZWVwIGV2ZW50LiAgSXRz
IHN0YXRlIGNhbiBiZSByZXRyaWV2ZWQgdmlhCitAc2FtcHtAY29kZXsoc2xlZXAtZXZlbnQtc3Rh
dGUgZXZlbnQpfX0uICBTdGF0ZSB3aWxsIGJlIG9uZSBvZiB0aGUKK3N5bWJvbHMgQGNvZGV7cHJl
LXNsZWVwfSBvciBAY29kZXtwb3N0LXdha2V9LgorCitIYW5kbGluZyBAY29kZXtwcmUtc2xlZXB9
IGV2ZW50cyBzaG91bGQgYmUgZG9uZSBhcyBmYXN0IGFzIHBvc3NpYmxlIGFuZAorYXZvaWQgdXNl
ciBwcm9tcHRpbmcuICBTeXN0ZW1zIG9mdGVuIGdyYW50IGEgdmVyeSBzaG9ydCBwcmUtc2xlZXAK
K3Byb2Nlc3NpbmcgaW50ZXJ2YWwsIHR5cGljYWxseSByYW5naW5nIGJldHdlZW4gMiBhbmQgNSBz
ZWNvbmRzLiAgVGhlCitzeXN0ZW0gbWF5IHNsZWVwIGV2ZW4gaWYgeW91ciBwcm9jZXNzaW5nIGlz
IG5vdCBjb21wbGV0ZSwgc28gYmUgc3VyZSB5b3UKK2RvIGFzIGxpdHRsZSBhcyBwb3NzaWJsZS4g
IEZvciBleGFtcGxlLCB5b3VyIGZ1bmN0aW9uIGNvdWxkIGNsb3NlIGFjdGl2ZQorY29ubmVjdGlv
bnMgb3Igc2VyaWFsIHBvcnRzLgorCitIYW5kbGluZyBAY29kZXtwb3N0LXdha2V9IGV2ZW50cyBv
ZmZlcnMgbW9yZSBsZWV3YXkuICBVc2UgdGhpcywgZm9yCitleGFtcGxlLCB0byByZWVzdGFibGlz
aCBjb25uZWN0aW9ucy4KKworTm90ZTogWW91ciBjb2RlLCBvciB0aGUgZnVuY3Rpb25zIGl0IGNh
bGxzLCBzaG91bGQgbm90IHJhaXNlIGFueSBzaWduYWxzCitvciBhbGwgaG9va3Mgd2lsbCBiZSBo
YWx0ZWQuICBZb3UgY2FuIHdyYXAgeW91ciBjb2RlIGluIGEKK0Bjb2Rle2NvbmRpdGlvbi1jYXNl
fSBibG9jayAoQHB4cmVme0Vycm9yc30pLgorQGVuZCBkZWZvcHQKKwogQG5vZGUgRmlsZSBOb3Rp
ZmljYXRpb25zCiBAc2VjdGlvbiBOb3RpZmljYXRpb25zIG9uIEZpbGUgQ2hhbmdlcwogQGNpbmRl
eCBmaWxlIG5vdGlmaWNhdGlvbnMKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MKaW5k
ZXggOWU1YWM3OTY2OTcuLmVlMzQ5NWExNjIyIDEwMDY0NAotLS0gYS9ldGMvTkVXUworKysgYi9l
dGMvTkVXUwpAQCAtMzUzNSw2ICszNTM1LDIyIEBAIE9uIEdOVS9MaW51eCBzeXN0ZW1zLCBzaGVs
bCBleHRlbnNpb25zIG9yIHNpbWlsYXIgaGVscGVycyBzdWNoIGFzCiA8aHR0cHM6Ly9leHRlbnNp
b25zLmdub21lLm9yZy9leHRlbnNpb24vMzA3L2Rhc2gtdG8tZG9jay8+IGFuZAogPGh0dHBzOi8v
d2lraS51YnVudHUuY29tL1VuaXR5L0xhdW5jaGVyQVBJPi4KIAorKysrCisqKiBOZXcgcGFja2Fn
ZSAnc3lzdGVtLXNsZWVwJy4KK1RoaXMgcGFja2FnZSBwcm92aWRlcyBwbGF0Zm9ybS1uZXV0cmFs
IGludGVyZmFjZXMgdG8gYmxvY2sgeW91ciBzeXN0ZW0KK2Zyb20gZW50ZXJpbmcgaWRsZSBzbGVl
cCBhbmQgYSBob29rIHRvIHByb2Nlc3MgcHJlLXNsZWVwIGFuZCBwb3N0LXdha2UKK2V2ZW50cy4g
IFlvdSBjYW4gdXNlIHRoaXMgdG8gYXZvaWQgdGhlIHN5c3RlbSBlbnRlcmluZyBhbiBpZGxlIHNs
ZWVwCitzdGF0ZSBhbmQgaW50ZXJydXB0aW5nIGEgbG9uZy1ydW5uaW5nIHByb2Nlc3MgZHVlIHRv
IGxhY2sgb2YgdXNlcgorYWN0aXZpdHkuICBUaGUgc2xlZXAgZXZlbnQgaG9vayBsZXRzIHlvdSwg
Zm9yIGV4YW1wbGUgY2xvc2UgZXh0ZXJuYWwKK2Nvbm5lY3Rpb25zIG9yIHNlcmlhbCBwb3J0cyBi
ZWZvcmUgc2xlZXBpbmcsIGFuZCByZWVzdGFibGlzaCB0aGVtIHdoZW4KK3RoZSBzeXN0ZW0gd2Fr
ZXMgdXAuCisKK1N1cHBvcnRlZCBjYXBhYmxlIHN5c3RlbXMgYXJlIEdOVS9MaW51eCB2aWEgRC1C
dXMgKHNsZWVwIGJsb2NraW5nIGFuZAorZXZlbnRzIHJlcXVpcmUgdGhlIG9yZy5mcmVlZGVza3Rv
cC5sb2dpbjEgc2VydmljZSwgZGlzcGxheSBzbGVlcAorYmxvY2tpbmcgcmVxdWlyZXMgb3JnLmZy
ZWVkZXNrdG9wLlNjcmVlbnNhdmVyIHNlcnZpY2UpLCBtYWNPUworKHNsZWVwL2Rpc3BsYXkgYmxv
Y2tpbmcgcmVxdWlyZXMgMTAuOSssIHNsZWVwIGV2ZW50cyBhcmUgc3VwcG9ydGVkIG9uCithbGwg
dmVyc2lvbnMpLCBNUy1XaW5kb3dzIChzbGVlcCBibG9ja2luZyBpcyBzdXBwb3J0ZWQgb24gYWxs
IHZlcnNpb25zLAorc2xlZXAgZXZlbnRzIHJlcXVpcmUgOCspLgogDAogKiBJbmNvbXBhdGlibGUg
TGlzcCBDaGFuZ2VzIGluIEVtYWNzIDMxLjEKIApkaWZmIC0tZ2l0IGEvbGlzcC9zeXN0ZW0tc2xl
ZXAuZWwgYi9saXNwL3N5c3RlbS1zbGVlcC5lbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uZjUzYzRkYWIxM2UKLS0tIC9kZXYvbnVsbAorKysgYi9saXNwL3N5c3RlbS1z
bGVlcC5lbApAQCAtMCwwICsxLDUxNCBAQAorOzs7IHN5c3RlbS1zbGVlcC5lbCAtLS0gU3lzdGVt
IHNsZWVwL3dha2UgZXZlbnQgbWFuYWdlbWVudCAtKi0gbGV4aWNhbC1iaW5kaW5nOiB0IC0qLQor
Cis7OyBDb3B5cmlnaHQgKEMpIDIwMjUtMjAyNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4KKworOzsgQXV0aG9yOiBTdGVwaGFuZSBNYXJrcyA8c2hpcG1pbnRzQGdtYWlsLmNvbT4KKzs7
IE1haW50YWluZXI6IGVtYWNzLWRldmVsQGdudS5vcmcKKzs7IEtleXdvcmRzOiBjb252ZW5pZW5j
ZQorOzsgUGFja2FnZS1SZXF1aXJlczogKChlbWFjcyAiMzEuMSIpKQorCis7OyBUaGlzIGZpbGUg
aXMgcGFydCBvZiBHTlUgRW1hY3MuCisKKzs7IEdOVSBFbWFjcyBpcyBmcmVlIHNvZnR3YXJlOiB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cis7OyBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorOzsg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj
ZW5zZSwgb3IKKzs7IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKzs7IEdO
VSBFbWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKzs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUKKzs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKzs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCis7OyBhbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElm
IG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKzs7OyBDb21tZW50
YXJ5OgorCis7OyBDYWxsIGBzeXN0ZW0tc2xlZXAtYmxvY2stc2xlZXAnIHRvIGluaGliaXQgc3lz
dGVtLXdpZGUgaWRsZSBzbGVlcC4KKzs7IElkbGUgc2xlZXAgaXMgdHlwaWNhbGx5IHRyaWdnZXJl
ZCB3aGVuIHRoZSBzeXN0ZW0gZG9lcyBub3QgZGV0ZWN0Cis7OyB1c2VyIGFjdGl2aXR5IGFuZCBp
cyBpbmRlcGVuZGVudCBvZiBhbnkgcHJvY2Vzc2luZyB0aGF0IG1heSBiZSBvbgorOzsgZ29pbmcu
ICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCB0byBibG9jayBpZGxlIHNsZWVwIGZvciBsb25nLXJ1
bm5pbmcKKzs7IG9wZXJhdGlvbnMsIGZvciBleGFtcGxlLCB3aGVuIGEgY29tcGlsYXRpb24gaXMg
cnVubmluZy4gIFlvdSBoYXZlIHRoZQorOzsgb3B0aW9uIG9mIGtlZXBpbmcgdGhlIHN5c3RlbSBh
Y3RpdmUgd2hpbGUgbGV0dGluZyB0aGUgZGlzcGxheSBzbGVlcC4KKzs7IFRoaXMgZnVuY3Rpb24g
cmV0dXJucyBhIHRva2VuIHdoaWNoIHlvdSBtdXN0IHVzZSB0byB1bmJsb2NrIHRoaXMKKzs7IHJl
cXVlc3QuCis7OworOzsgQ2FsbCBgc3lzdGVtLXNsZWVwLXVuYmxvY2stc2xlZXAnIHdpdGggdGhl
IHRva2VuIGZyb20KKzs7IGBzeXN0ZW0tc2xlZXAtYmxvY2stc2xlZXAnIHRvIHVuYmxvY2sgc3lz
dGVtLXdpZGUgaWRsZSBzbGVlcCBmb3IgdGhpcworOzsgcmVxdWVzdC4gIFRoZXJlIG1heSBiZSBv
dGhlciBhY3RpdmUgcmVxdWVzdHMgd2hpY2ggd2lsbCBwcmV2ZW50IHRoZQorOzsgc3lzdGVtIGZy
b20gc2xlZXBpbmcuCis7OworOzsgVGhlIGZ1bmN0aW9uIGBzeXN0ZW0tc2xlZXAtc2xlZXAtYmxv
Y2tlZC1wJyB3aWxsIHRlbGwgeW91IGlmCis7OyBgc3lzdGVtLXNsZWVwJyBoYXMgYW55IGFjdGl2
ZSBzeXN0ZW0gc2xlZXAgYmxvY2tzLgorOzsKKzs7IE5vdGU6IOKAi1doZW4gdGhlIEVtYWNzIHBy
b2Nlc3MgZGllcywgYmxvY2tzIGFyZSByZWxlYXNlZCBvbiBhbGwKKzs7IHBsYXRmb3Jtcy4KKzs7
Cis7OyBZb3UgY2FuIHJlZ2lzdGVyIGZ1bmN0aW9ucyBvbiB0aGUgYWJub3JtYWwgaG9vaworOzsg
YHN5c3RlbS1zbGVlcC1ldmVudC1mdW5jdGlvbnMnLiAgRWFjaCBmdW5jdGlvbiB3aWxsIGJlIGNh
bGxlZCB3aGVuCis7OyB0aGUgc3lzdGVtIGlzIHByZXBhcmluZyBmb3Igc2xlZXAgYW5kIHdoZW4g
dGhlIHN5c3RlbSB3YWtlcyBmcm9tCis7OyBzbGVlcC4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNl
ZnVsIHdoZW4geW91IHdhbnQgdG8gY2xvc2UgKGFuZAorOzsgcG90ZW50aWFsbHkgcmVvcGVuKSBl
eHRlcm5hbCBjb25uZWN0aW9ucyBvciBzZXJpYWwgcG9ydHMuCis7OworOzsgT24gc3VwcG9ydGVk
IEdOVS9MaW51eCBzeXN0ZW1zLCB0aGUgaW1wbGVtZW50YXRpb24gaXMgdmlhIEQtQnVzIHRvCis7
OyBpbmhpYml0IGlkbGUgc2xlZXAsIGtlZXAgdGhlIGRpc3BsYXkgYWN0aXZlLCBhbmQgZm9yd2Fy
ZCBldmVudHMgZnJvbQorOzsgbG9naW5kIGZvciBzeXN0ZW0gc2xlZXAgZXZlbnRzLgorOzsKKzs7
IE9uIG1hY09TIGFuZCBNUy1XaW5kb3dzLCBuYXRpdmUgQVBJcyBhcmUgdXNlZCB0byBibG9jayBp
ZGxlIHNsZWVwLAorOzsga2VlcCB0aGUgZGlzcGxheSBhY3RpdmUsIGFuZCBwcm92aWRlIHNsZWVw
IGV2ZW50IG5vdGlmaWNhdGlvbnMuCis7OworOzsgT24gTVMtV2luZG93cywgYW4gaWRsZSBzbGVl
cCBibG9jayB0aGF0IGtlZXBzIHRoZSBkaXNwbGF5IGFjdGl2ZSBtYXkKKzs7IG5vdCBpbmhpYml0
IHRoZSBzY3JlZW4gc2F2ZXIuCis7OworOzsgRXh0ZXJuYWxseSB0byBFbWFjcywgdGhlcmUgYXJl
IHN5c3RlbSB1dGlsaXR5IGZ1bmN0aW9ucyB0aGF0IHlvdSBjYW4KKzs7IHVzZSB0byBpbnNwZWN0
IGFsbCBwcm9jZXNzZXMgb24geW91ciBzeXN0ZW0gdGhhdCBtaWdodCBiZSBibG9ja2luZyBpdAor
OzsgZnJvbSBzbGVlcGluZy4KKzs7Cis7OyBPbiBELUJ1cyBzeXN0ZW1zLCB5b3UgY2FuIHVzZSB0
aGUgY29tbWFuZHM6Cis7OworOzsgICBzeXN0ZW1kLWluaGliaXQgLS1saXN0Cis7OyBvcgorOzsg
ICBkYnVzLXNlbmQgLS1zeXN0ZW0gLS1wcmludC1yZXBseSAtLWRlc3Q9b3JnLmZyZWVkZXNrdG9w
LmxvZ2luMSBcCis7OyAgIC9vcmcvZnJlZWRlc2t0b3AvbG9naW4xIFwKKzs7ICAgb3JnLmZyZWVk
ZXNrdG9wLmxvZ2luMS5NYW5hZ2VyLkxpc3RJbmhpYml0b3JzCis7OworOzsgTm90ZTogWW91IGNh
biBmaW5kIHRoZSBzbGVlcC9zaHV0ZG93biBkZWxheSBJbmhpYml0RGVsYXlNYXhVU2VjIGluCis7
OyB0aGUgZmlsZSBsb2dpbmQuY29uZig1KSB3aGljaCB0eXBpY2FsbHkgZGVmYXVsdHMgdG8gNSBz
ZWNvbmRzLgorOzsKKzs7IE9uIG1hY09TLCB5b3UgY2FuIHVzZSB0aGUgY29tbWFuZDoKKzs7Cis7
OyAgIHBtc2V0IC1nIGFzc2VydGlvbnMKKzs7Cis7OyBPbiBNUy1XaW5kb3dzLCB5b3UgY2FuIHVz
ZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgd2hpY2ggbWF5IG5lZWQgdG8gYmUKKzs7IHJ1biBhcyBh
biBhZG1pbmlzdHJhdG9yOgorOzsKKzs7ICAgcG93ZXJjZmcgLXJlcXVlc3RzCisKKzs7OyBDb2Rl
OgorCisocmVxdWlyZSAnY2wtbGliKQorCis7OyBQYWNpZnkgdGhlIGJ5dGUgY29tcGlsZXIuCiso
ZGVjbGFyZS1mdW5jdGlvbiBkYnVzLS1mZC1jbG9zZSAiZGJ1c2JpbmQuYyIpCisoZGVjbGFyZS1m
dW5jdGlvbiBkYnVzLXVucmVnaXN0ZXItb2JqZWN0ICJkYnVzLmVsIikKKyhkZWNsYXJlLWZ1bmN0
aW9uIGRidXMtcmVnaXN0ZXItc2lnbmFsICJkYnVzLmVsIikKKyhkZWNsYXJlLWZ1bmN0aW9uIGRi
dXMtY2FsbC1tZXRob2QgImRidXMuZWwiKQorKGRlY2xhcmUtZnVuY3Rpb24gZGJ1cy1saXN0LWFj
dGl2YXRhYmxlLW5hbWVzICJkYnVzLmVsIikKKyhkZWZ2YXIgZGJ1cy1zZXJ2aWNlLWVtYWNzKQor
CisoZGVmZ3JvdXAgc3lzdGVtLXNsZWVwIG5pbAorICAiU3lzdGVtIHNsZWVwL3dha2UgYmxvY2tp
bmcgYW5kIGV2ZW50IG1hbmFnZW1lbnQuIgorICA6Z3JvdXAgJ3N5c3RlbS1pbnRlcmZhY2UKKyAg
OnZlcnNpb24gIjMxLjEiKQorCisoZGVmdmFyIHN5c3RlbS1zbGVlcC0tYmFjay1lbmQgbmlsCisg
ICJHZW5lcmljIHNsZWVwLXdha2UgbWV0aG9kIHN5c3RlbSBkaXNwYXRjaGVyLiIpCisKKyhkZWZ2
YXIgc3lzdGVtLXNsZWVwLS1zbGVlcC1ibG9jay10b2tlbnMgbmlsCisgICJBIGxpc3Qgb2YgYWN0
aXZlIHNsZWVwLWJsb2NrIHRva2Vucy4KK0lmIG5vbi1uaWwsIGlkbGUgc2xlZXAgaXMgaW5oaWJp
dGVkIGJ5IGBzeXN0ZW0tc2xlZXAnLiIpCisKKyhjbC1kZWZzdHJ1Y3QKKyAgICAoc2xlZXAtZXZl
bnQgKDp0eXBlIGxpc3QpIDpuYW1lZAorICAgICAgICAgICAgICAgICAoOmNvbnN0cnVjdG9yIG5p
bCkKKyAgICAgICAgICAgICAgICAgKDpjb25zdHJ1Y3RvciBtYWtlLXNsZWVwLWV2ZW50IChzdGF0
ZSkpKQorICBzdGF0ZSkKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZjdXN0b20gc3lzdGVtLXNsZWVw
LWV2ZW50LWZ1bmN0aW9ucyBuaWwKKyAgIkFibm9ybWFsIGhvb2sgaW52b2tlZCBvbiBzeXN0ZW0g
c2xlZXAgZXZlbnRzLgorRWFjaCBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBvbmUgYXJndW1lbnQg
RVZFTlQsIGEgc2xlZXAgZXZlbnQuICBFVkVOVAorc3RhdGUgY2FuIGJlIHJldHJpZXZlZCB2aWEg
XFwrYChzbGVlcC1ldmVudC1zdGF0ZSBFVkVOVCknLiAgSXQgd2lsbCBiZQorb25lIG9mIHRoZSBz
eW1ib2xzIFxcK2BwcmUtc2xlZXAnIG9yIFxcK2Bwb3N0LXdha2UnLgorCitIYW5kbGluZyBcXCtg
cHJlLXNsZWVwJyBldmVudHMgc2hvdWxkIGJlIGRvbmUgYXMgZmFzdCBhcyBwb3NzaWJsZSwgZG8g
YXMKK2xpdHRsZSBhcyBwb3NzaWJsZSBhbmQgYXZvaWQgdXNlciBwcm9tcHRzLiAgU3lzdGVtcyBv
ZnRlbiBncmFudCBhIHZlcnkKK3Nob3J0IHByZS1zbGVlcCBwcm9jZXNzaW5nIGludGVydmFsLCB0
eXBpY2FsbHkgcmFuZ2luZyBiZXR3ZWVuIDIgYW5kIDUKK3NlY29uZHMuICBUaGUgc3lzdGVtIG1h
eSBzbGVlcCBldmVuIGlmIHlvdXIgcHJvY2Vzc2luZyBpcyBub3QgY29tcGxldGUuCitGb3IgZXhh
bXBsZSwgeW91ciBmdW5jdGlvbiBjb3VsZCBjbG9zZSBhY3RpdmUgY29ubmVjdGlvbnMgb3Igc2Vy
aWFsCitwb3J0cy4KKworSGFuZGxpbmcgXFwrYHBvc3Qtd2FrZScgZXZlbnRzIG9mZmVycyBtb3Jl
IGxlZXdheS4gIFlvdXIgZnVuY3Rpb24gY291bGQKK3JlZXN0YWJsaXNoIGNvbm5lY3Rpb25zLgor
CitOb3RlOiBZb3VyIGNvZGUsIG9yIHRoZSBmdW5jdGlvbnMgaXQgY2FsbHMsIHNob3VsZCBub3Qg
cmFpc2UgYW55IHNpZ25hbHMKK29yIGFsbCBob29rcyB3aWxsIGJlIGhhbHRlZCBwcmV2ZW50aW5n
IG90aGVyIGhvb2sgZnVuY3Rpb25zIGZyb20KK2NsZWFuaW5nIHVwIG9yIHdha2luZyB1cC4gIFlv
dSBjYW4gd3JhcCB5b3VyIGNvZGUgaW4gYSBgY29uZGl0aW9uLWNhc2UnCitibG9jay4iCisgIDp0
eXBlICdob29rCisgIDp2ZXJzaW9uICIzMS4xIikKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biBz
eXN0ZW0tc2xlZXAtYmxvY2stc2xlZXAgKCZvcHRpb25hbCB3aHkgYWxsb3ctZGlzcGxheS1zbGVl
cCkKKyAgIkluaGliaXQgc3lzdGVtIGlkbGUgc2xlZXAuCitPcHRpb25hbCBXSFkgaXMgYSBzdHJp
bmcgdGhhdCBpZGVudGlmaWVzIGEgc2xlZXAgYmxvY2sgdG8gc3lzdGVtIHV0aWxpdHkKK2NvbW1h
bmRzIHRoYXQgaW5zcGVjdCBzeXN0ZW0td2lkZSBibG9ja3MuICBXSFkgZGVmYXVsdHMgdG8gXCJF
bWFjc1wiLgorCitPcHRpb25hbCBBTExPVy1ESVNQTEFZLVNMRUVQLCB3aGVuIG5vbi1uaWwsIGFs
bG93cyB0aGUgZGlzcGxheSB0byBzbGVlcAorb3IgYSBzY3JlZW4gc2F2ZXIgdG8gcnVuIHdoaWxl
IHRoZSBzeXN0ZW0gaWRsZSBzbGVlcCBpcyBibG9ja2VkLiAgVGhlCitkZWZhdWx0IGlzIHRvIGtl
ZXAgdGhlIGRpc3BsYXkgYWN0aXZlLgorCitSZXR1cm4gYSBzbGVlcCBibG9ja2luZyB0b2tlbi4g
IFlvdSBtdXN0IHJldGFpbiB0aGlzIHZhbHVlIGFuZCBwcm92aWRlCitpdCB0byBgc3lzdGVtLXNs
ZWVwLXVuYmxvY2stc2xlZXAnIHRvIHVuYmxvY2sgaXRzIGFzc29jaWF0ZWQgYmxvY2suCisKK1Jl
dHVybiBuaWwgaWYgc3lzdGVtIHNsZWVwIGNhbm5vdCBiZSBpbmhpYml0ZWQuCisKK05vdGU6IEFs
bCBhY3RpdmUgYmxvY2tzIGFyZSByZWxlYXNlZCB3aGVuIHRoZSBFbWFjcyBwcm9jZXNzIGRpZXMu
CitEZXNwaXRlIHRoaXMsIHlvdSBzaG91bGQgdW5ibG9jayB5b3VyIGJsb2NrcyB3aGVuIHlvdXIg
cHJvY2Vzc2luZyBpcworY29tcGxldGUuICBTZWUgYHdpdGgtc3lzdGVtLXNsZWVwLWJsb2NrJyBm
b3IgYW4gZWFzeSB3YXkgdG8gZG8gdGhhdC4iCisgICh3aGVuIHN5c3RlbS1zbGVlcC0tYmFjay1l
bmQKKyAgICAoc3lzdGVtLXNsZWVwLS1ibG9jay1zbGVlcCAob3Igd2h5ICJFbWFjcyIpIGFsbG93
LWRpc3BsYXktc2xlZXApKSkKKworKGRlZnVuIHN5c3RlbS1zbGVlcC11bmJsb2NrLXNsZWVwICh0
b2tlbikKKyAgIlVuYmxvY2sgdGhlIHN5c3RlbSBzbGVlcCBibG9jayBhc3NvY2lhdGVkIHdpdGgg
VE9LRU4uCitSZXR1cm4gbm9uLW5pbCBUT0tFTiB3YXMgdW5ibG9ja2VkLCBvciBuaWwgaWYgbm90
LgorSW4gdGhlIHVubGlrZWx5IGV2ZW50IHRoYXQgdW5ibG9jayBmYWlscywgdGhlIGJsb2NrIHdp
bGwgYmUgcmVsZWFzZWQKK3doZW4gdGhlIEVtYWNzIHByb2Nlc3MgZGllcy4iCisgICh3aGVuIHN5
c3RlbS1zbGVlcC0tYmFjay1lbmQKKyAgICAoc3lzdGVtLXNsZWVwLS11bmJsb2NrLXNsZWVwIHRv
a2VuKSkpCisKKzs7OyMjI2F1dG9sb2FkCisoZGVmbWFjcm8gd2l0aC1zeXN0ZW0tc2xlZXAtYmxv
Y2sgKHdoeSBhbGxvdy1kaXNwbGF5LXNsZWVwICZyZXN0IGJvZHkpCisgICJFeGVjdXRlIHRoZSBm
b3JtcyBpbiBCT0RZIHdoaWxlIGJsb2NraW5nIHN5c3RlbSBzbGVlcC4KK1dIWSBpcyBhIHN0cmlu
ZyB0aGF0IGlkZW50aWZpZXMgYSBzbGVlcCBibG9jay4KK0FMTE9XLURJU1BMQVktU0xFRVAsIHdo
ZW4gbm9uLW5pbCwgYWxsb3dzIHRoZSBkaXNwbGF5IHRvIHNsZWVwCitvciBhIHNjcmVlbiBzYXZl
ciB0byBydW4gd2hpbGUgdGhlIHN5c3RlbSBpZGxlIHNsZWVwIGlzIGJsb2NrZWQuCitUaGUgYmxv
Y2sgaXMgdW5ibG9ja2VkIHdoZW4gQk9EWSBjb21wbGV0ZXMuIgorICAoZGVjbGFyZSAoaW5kZW50
IDEpIChkZWJ1ZyB0KSkKKyAgKGxldCAoKHRva2VuIChtYWtlLXN5bWJvbCAiLS1zbGVlcC10b2tl
bi0tIikpKQorICAgIGAobGV0ICgoLHRva2VuIChzeXN0ZW0tc2xlZXAtYmxvY2stc2xlZXAgLHdo
eSAsYWxsb3ctZGlzcGxheS1zbGVlcCkpKQorICAgICAgICh1bndpbmQtcHJvdGVjdAorICAgICAg
ICAgICAocHJvZ24KKyAgICAgICAgICAgICAsQGJvZHkpCisgICAgICAgICAoc3lzdGVtLXNsZWVw
LXVuYmxvY2stc2xlZXAgLHRva2VuKSkpKSkKKworKGRlZnVuIHN5c3RlbS1zbGVlcC11bmJsb2Nr
LWFsbC1zbGVlcC1ibG9ja3MgKCkKKyAgIlVuYmxvY2sgYWxsIGBzeXN0ZW0tc2xlZXAnIGJsb2Nr
cy4iCisgICh3aGlsZSBzeXN0ZW0tc2xlZXAtLXNsZWVwLWJsb2NrLXRva2VucworICAgIChzeXN0
ZW0tc2xlZXAtdW5ibG9jay1zbGVlcCAoY2FyIHN5c3RlbS1zbGVlcC0tc2xlZXAtYmxvY2stdG9r
ZW5zKSkpKQorCis7OzsjIyNhdXRvbG9hZAorKGRlZnVuIHN5c3RlbS1zbGVlcC1zbGVlcC1ibG9j
a2VkLXAgKCkKKyAgIlJldHVybiBub24tbmlsIGlmIHRoZXJlIGFyZSBhY3RpdmUgc2xlZXAgYmxv
Y2tzLiIKKyAgKGFuZCBzeXN0ZW0tc2xlZXAtLWJhY2stZW5kCisgICAgICAgc3lzdGVtLXNsZWVw
LS1zbGVlcC1ibG9jay10b2tlbnMpKQorCisMCis7OyBJbnRlcm5hbCBpbXBsZW1lbnRhdGlvbi4K
KworKGRlZnVuIHN5c3RlbS1zbGVlcC0tc2V0LWJhY2stZW5kICgpCisgICJEZXRlcm1pbmUgc2xl
ZXAvd2FrZSBob3N0IHN5c3RlbSB0eXBlLiIKKyAgOzsgT3JkZXIgbWF0dGVycyB0byBhY2NvbW1v
ZGF0ZSB0aGUgY2FzZXMgd2hlcmUgYW4gTlMgb3IgTVMtV2luZG93cworICA7OyBidWlsZCBoYXZl
IHRoZSBkYnVzIGZlYXR1cmUuCisgIChzZXRxIHN5c3RlbS1zbGVlcC0tYmFjay1lbmQKKyAgICAg
ICAgKGNvbmQgKChmZWF0dXJlcCAnbnMpICducykKKyAgICAgICAgICAgICAgKChmZWF0dXJlcCAn
dzMyKSAndzMyKQorICAgICAgICAgICAgICAoKGFuZCAocmVxdWlyZSAnZGJ1cykKKyAgICAgICAg
ICAgICAgICAgICAgKGZlYXR1cmVwICdkYnVzYmluZCkKKyAgICAgICAgICAgICAgICAgICAgKG1l
bWJlciAib3JnLmZyZWVkZXNrdG9wLmxvZ2luMSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoZGJ1cy1saXN0LWFjdGl2YXRhYmxlLW5hbWVzIDpzeXN0ZW0pKSkKKyAgICAgICAgICAgICAg
ICdkYnVzKQorICAgICAgICAgICAgICAodCBuaWwpKSkpCisKKyhkZWZ1biBzeXN0ZW0tc2xlZXAt
LXNsZWVwLWV2ZW50LWhhbmRsZXIgKGV2ZW50KQorICAiYHNsZWVwLWV2ZW50JyBFVkVOVCBoYW5k
bGVyLiIKKyAgKGRlY2xhcmUgKGNvbXBsZXRpb24gaWdub3JlKSkKKyAgKGludGVyYWN0aXZlICJl
IikKKyAgKHJ1bi1ob29rLXdpdGgtYXJncyAnc3lzdGVtLXNsZWVwLWV2ZW50LWZ1bmN0aW9ucyBl
dmVudCkpCisKKyhkZWZ1biBzeXN0ZW0tc2xlZXAtZW5hYmxlICgpCisgICJFbmFibGUgYHN5c3Rl
bS1zbGVlcCcuIgorICAodW5sZXNzIHN5c3RlbS1zbGVlcC0tYmFjay1lbmQKKyAgICAoaWYgKGFu
ZCAoc3lzdGVtLXNsZWVwLS1zZXQtYmFjay1lbmQpCisgICAgICAgICAgICAgKHN5c3RlbS1zbGVl
cC0tZW5hYmxlKSkKKyAgICAgICAgKGtleW1hcC1zZXQgc3BlY2lhbC1ldmVudC1tYXAgIjxzbGVl
cC1ldmVudD4iCisgICAgICAgICAgICAgICAgICAgICMnc3lzdGVtLXNsZWVwLS1zbGVlcC1ldmVu
dC1oYW5kbGVyKQorICAgICAgKHdhcm4gImBzeXN0ZW0tc2xlZXAnIGNvdWxkIG5vdCBiZSBpbml0
aWFsaXplZCIpKSkpCisKKyhkZWZ1biBzeXN0ZW0tc2xlZXAtZGlzYWJsZSAoKQorICAiRGlzYWJs
ZSBgc3lzdGVtLXNsZWVwJy4iCisgICh3aGVuIHN5c3RlbS1zbGVlcC0tYmFjay1lbmQKKyAgICAo
a2V5bWFwLXNldCBzcGVjaWFsLWV2ZW50LW1hcCAiPHNsZWVwLWV2ZW50PiIgIydpZ25vcmUpCisg
ICAgKHN5c3RlbS1zbGVlcC11bmJsb2NrLWFsbC1zbGVlcC1ibG9ja3MpCisgICAgKHN5c3RlbS1z
bGVlcC0tZGlzYWJsZSkKKyAgICAoc2V0cSBzeXN0ZW0tc2xlZXAtLWJhY2stZW5kIG5pbCkpKQor
CisoY2wtZGVmZ2VuZXJpYyBzeXN0ZW0tc2xlZXAtLWVuYWJsZSAoKQorICAiRW5hYmxlIHRoZSBg
c3lzdGVtLXNsZWVwJyBiYWNrIGVuZC4KK1JldHVybiB0IGlmIHRoZSBiYWNrIGVuZCBpcyBpbml0
aWFsaXplZCwgb3IgbmlsLiIpCisKKyhjbC1kZWZnZW5lcmljIHN5c3RlbS1zbGVlcC0tZGlzYWJs
ZSAoKQorICAiRGlzYWJsZSB0aGUgc2xlZXAvd2FrZSBiYWNrIGVuZC4iKQorCisoY2wtZGVmZ2Vu
ZXJpYyBzeXN0ZW0tc2xlZXAtLWJsb2NrLXNsZWVwICh3aHkgYWxsb3ctZGlzcGxheS1zbGVlcCkK
KyAgIkluaGliaXQgc3lzdGVtIGlkbGUgc2xlZXAuCitXSFkgaXMgYSBzdHJpbmcgdGhhdCBpZGVu
dGlmaWVzIGEgc2xlZXAgYmxvY2sgdG8gc3lzdGVtIHV0aWxpdHkgY29tbWFuZHMKK3RoYXQgaW5z
cGVjdCBzeXN0ZW0td2lkZSBibG9ja3MuCitXaGVuIG5vbi1uaWwsIEFMTE9XLURJU1BMQVktU0xF
RVAgYWxsb3dzIHRoZSBkaXNwbGF5IHRvIHNsZWVwIG9yIGEKK3NjcmVlbiBzYXZlciB0byBydW4g
d2hpbGUgdGhlIHN5c3RlbSBpZGxlIHNsZWVwIGlzIGJsb2NrZWQuICBUaGUgZGVmYXVsdAoraXMg
dG8ga2VlcCB0aGUgZGlzcGxheSBhY3RpdmUuCitSZXR1cm4gYSBzbGVlcC1ibG9jayB0b2tlbi4i
KQorCisoY2wtZGVmZ2VuZXJpYyBzeXN0ZW0tc2xlZXAtLXVuYmxvY2stc2xlZXAgKHRva2VuKQor
ICAiVW5ibG9jayB0aGUgc3lzdGVtIHNsZWVwIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCBUT0tFTi4K
K1JldHVybiBub24tbmlsIFRPS0VOIHdhcyB1bmJsb2NrZWQsIG9yIG5pbCBpZiBub3QuIikKKwor
KGRlZnZhciBzeXN0ZW0tc2xlZXAtLWV2ZW50LWluLXByb2dyZXNzIG5pbCkKKyhkZWZ2YXIgc3lz
dGVtLXNsZWVwLS1ldmVudC1xdWV1ZSBuaWwpCisKKyhkZWZ1biBzeXN0ZW0tc2xlZXAtLXNsZWVw
LWV2ZW50LWZ1bmN0aW9uIChldmVudCkKKyAgIkhhbmRsZSA8c2xlZXAtZXZlbnQ+IHNwZWNpYWwg
ZXZlbnRzIGFuZCBhdm9pZCByYWNlcy4iCisgIDs7IFF1ZXVlIGluY29taW5nIGV2ZW50LgorICAo
c2V0cSBzeXN0ZW0tc2xlZXAtLWV2ZW50LXF1ZXVlCisgICAgICAgIChhcHBlbmQgc3lzdGVtLXNs
ZWVwLS1ldmVudC1xdWV1ZSAobGlzdCBldmVudCkpKQorICA7OyBJZiBhbiBldmVudCBpcyBhbHJl
YWR5IGluIHByb2dyZXNzLCByZXR1cm4gcmlnaHQgYXdheS4KKyAgOzsgT3RoZXJ3aXNlLCBwcm9j
ZXNzIHF1ZXVlZCBldmVudHMuCisgICh3aGlsZSAoYW5kIChub3Qgc3lzdGVtLXNsZWVwLS1ldmVu
dC1pbi1wcm9ncmVzcykKKyAgICAgICAgICAgICAgc3lzdGVtLXNsZWVwLS1ldmVudC1xdWV1ZSkK
KyAgICAobGV0ICgoY3VycmVudC1ldmVudCAocG9wIHN5c3RlbS1zbGVlcC0tZXZlbnQtcXVldWUp
KSkKKyAgICAgIChzZXRxIHN5c3RlbS1zbGVlcC0tZXZlbnQtaW4tcHJvZ3Jlc3MgY3VycmVudC1l
dmVudCkKKyAgICAgICh1bndpbmQtcHJvdGVjdAorICAgICAgICAgIChydW4taG9vay13aXRoLWFy
Z3MgJ3N5c3RlbS1zbGVlcC1ldmVudC1mdW5jdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGN1cnJlbnQtZXZlbnQpCisgICAgICAgIChzZXRxIHN5c3RlbS1zbGVlcC0tZXZlbnQt
aW4tcHJvZ3Jlc3MgbmlsKSkpKSkKKworDAorOzsgRC1CdXMgc3VwcG9ydC4KKworKGRlZnZhciBz
eXN0ZW0tc2xlZXAtLWRidXMtc2xlZXAtaW5oaWJpdG9yLXR5cGVzICJzbGVlcCIKKyAgIlRoaXMg
aXMgYSBjb2xvbi1zZXBhcmF0ZWQgbGlzdCBvZiBvcHRpb25zLgorVGhlIGRlZmF1bHQgaXMgXCJz
bGVlcFwiIHdoaWNoIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgb3RoZXIgc3VwcG9ydGVkCitgc3lz
dGVtLXNsZWVwJyBwbGF0Zm9ybXMuICBUaGlzIGNvdWxkIGFsc28gYmUKK1wic2xlZXA6c2h1dGRv
d25cIi4gU2h1dGRvd24gaXMgYXZhaWxhYmxlIG9ubHkgb24gRC1CdXMgc3lzdGVtcy4iKQorCiso
ZGVmdmFyIHN5c3RlbS1zbGVlcC0tZGJ1cy1kZWxheS1sb2NrIG5pbCkKKyhkZWZ2YXIgc3lzdGVt
LXNsZWVwLS1kYnVzLXByZS1zbGVlcC1zaWduYWwgbmlsKQorCisoZGVmdW4gc3lzdGVtLXNsZWVw
LS1kYnVzLWRlbGF5LWxvY2sgKG1ha2Utb3ItY2xvc2UpCisgIChjb25kIChtYWtlLW9yLWNsb3Nl
CisgICAgICAgICAoaWYgc3lzdGVtLXNsZWVwLS1kYnVzLWRlbGF5LWxvY2sKKyAgICAgICAgICAg
ICAoZXJyb3IgIkRlbGF5IGxvY2sgc2hvdWxkIGJlIG5pbCIpCisgICAgICAgICAgIChzZXRxIHN5
c3RlbS1zbGVlcC0tZGJ1cy1kZWxheS1sb2NrCisgICAgICAgICAgICAgICAgIChkYnVzLWNhbGwt
bWV0aG9kCisgICAgICAgICAgICAgICAgICA6c3lzdGVtCisgICAgICAgICAgICAgICAgICAib3Jn
LmZyZWVkZXNrdG9wLmxvZ2luMSIKKyAgICAgICAgICAgICAgICAgICIvb3JnL2ZyZWVkZXNrdG9w
L2xvZ2luMSIKKyAgICAgICAgICAgICAgICAgICJvcmcuZnJlZWRlc2t0b3AubG9naW4xLk1hbmFn
ZXIiCisgICAgICAgICAgICAgICAgICAiSW5oaWJpdCIKKyAgICAgICAgICAgICAgICAgIDprZWVw
LWZkCisgICAgICAgICAgICAgICAgICBzeXN0ZW0tc2xlZXAtLWRidXMtc2xlZXAtaW5oaWJpdG9y
LXR5cGVzCisgICAgICAgICAgICAgICAgICBkYnVzLXNlcnZpY2UtZW1hY3MKKyAgICAgICAgICAg
ICAgICAgICJFbWFjcyBTbGVlcCBFdmVudCBXYXRjaGVyIgorICAgICAgICAgICAgICAgICAgImRl
bGF5IikpKSkKKyAgICAgICAgKHQKKyAgICAgICAgICh3aGVuIHN5c3RlbS1zbGVlcC0tZGJ1cy1k
ZWxheS1sb2NrCisgICAgICAgICAgIChkYnVzLS1mZC1jbG9zZSBzeXN0ZW0tc2xlZXAtLWRidXMt
ZGVsYXktbG9jaykKKyAgICAgICAgICAgKHNldHEgc3lzdGVtLXNsZWVwLS1kYnVzLWRlbGF5LWxv
Y2sgbmlsKSkpKSkKKworKGRlZnVuIHN5c3RlbS1zbGVlcC0tZGJ1cy1wcmVwYXJlLWZvci1zbGVl
cC1jYWxsYmFjayAoc2xlZXAtb3Itd2FrZSkKKyAgKGNvbmQgKHNsZWVwLW9yLXdha2UKKyAgICAg
ICAgIChpbnNlcnQtc3BlY2lhbC1ldmVudCAobWFrZS1zbGVlcC1ldmVudCAncHJlLXNsZWVwKSkp
CisgICAgICAgICh0CisgICAgICAgICAoaW5zZXJ0LXNwZWNpYWwtZXZlbnQgKG1ha2Utc2xlZXAt
ZXZlbnQgJ3Bvc3Qtd2FrZSkpKSkpCisKKyhkZWZ1biBzeXN0ZW0tc2xlZXAtLWRidXMtcHJlcGFy
ZS1mb3Itc2xlZXAtd2F0Y2hlciAobWFrZS1vci1jbG9zZSkKKyAgKGNvbmQgKG1ha2Utb3ItY2xv
c2UKKyAgICAgICAgIChpZiBzeXN0ZW0tc2xlZXAtLWRidXMtcHJlLXNsZWVwLXNpZ25hbAorICAg
ICAgICAgICAgIChlcnJvciAiUHJlcGFyZUZvclNsZWVwIHdhdGNoZXIgc2hvdWxkIGJlIG5pbCIp
CisgICAgICAgICAgIChzZXRxIHN5c3RlbS1zbGVlcC0tZGJ1cy1wcmUtc2xlZXAtc2lnbmFsCisJ
ICAgICAgICAgKGRidXMtcmVnaXN0ZXItc2lnbmFsCisgICAgICAgICAgICAgICAgICA6c3lzdGVt
CisJICAgICAgICAgICJvcmcuZnJlZWRlc2t0b3AubG9naW4xIgorCSAgICAgICAgICAiL29yZy9m
cmVlZGVza3RvcC9sb2dpbjEiCisJICAgICAgICAgICJvcmcuZnJlZWRlc2t0b3AubG9naW4xLk1h
bmFnZXIiCisJICAgICAgICAgICJQcmVwYXJlRm9yU2xlZXAiCisJICAgICAgICAgICMnc3lzdGVt
LXNsZWVwLS1kYnVzLXByZXBhcmUtZm9yLXNsZWVwLWNhbGxiYWNrKSkpKQorICAgICAgICAodAor
ICAgICAgICAgKGRidXMtdW5yZWdpc3Rlci1vYmplY3Qgc3lzdGVtLXNsZWVwLS1kYnVzLXByZS1z
bGVlcC1zaWduYWwpCisgICAgICAgICAoc2V0cSBzeXN0ZW0tc2xlZXAtLWRidXMtcHJlLXNsZWVw
LXNpZ25hbCBuaWwpKSkpCisKKyhkZWZ1biBzeXN0ZW0tc2xlZXAtLWRidXMtcHJlcGFyZS1mb3It
c2xlZXAtZnVuY3Rpb24gKGV2ZW50KQorICAocGNhc2UgKGNhZHIgZXZlbnQpCisgICAgKCdwcmUt
c2xlZXAKKyAgICAgKHN5c3RlbS1zbGVlcC0tZGJ1cy1kZWxheS1sb2NrIG5pbCkpCisgICAgKCdw
b3N0LXdha2UKKyAgICAgKHN5c3RlbS1zbGVlcC0tZGJ1cy1kZWxheS1sb2NrIHQpKSkpCisKKyhj
bC1kZWZtZXRob2Qgc3lzdGVtLXNsZWVwLS1lbmFibGUgKCZjb250ZXh0CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXNsZWVwLS1iYWNrLWVuZCAoZXFsICdkYnVz
KSkpCisgIDs7IE9yZGVyIG1hdHRlcnMuCisgIChhZGQtaG9vayAnc3lzdGVtLXNsZWVwLWV2ZW50
LWZ1bmN0aW9ucworICAgICAgICAgICMnc3lzdGVtLXNsZWVwLS1kYnVzLXByZXBhcmUtZm9yLXNs
ZWVwLWZ1bmN0aW9uCisgICAgICAgICAgOzsgVGhpcyBtdXN0IHJ1biBsYXN0LgorICAgICAgICAg
IDk5KQorICAoc3lzdGVtLXNsZWVwLS1kYnVzLWRlbGF5LWxvY2sgdCkKKyAgKHN5c3RlbS1zbGVl
cC0tZGJ1cy1wcmVwYXJlLWZvci1zbGVlcC13YXRjaGVyIHQpCisgIHQpCisKKyhjbC1kZWZtZXRo
b2Qgc3lzdGVtLXNsZWVwLS1kaXNhYmxlICgmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChzeXN0ZW0tc2xlZXAtLWJhY2stZW5kIChlcWwgJ2RidXMpKSkKKyAg
KHN5c3RlbS1zbGVlcC0tZGJ1cy1wcmVwYXJlLWZvci1zbGVlcC13YXRjaGVyIG5pbCkKKyAgKHN5
c3RlbS1zbGVlcC0tZGJ1cy1kZWxheS1sb2NrIG5pbCkKKyAgKHJlbW92ZS1ob29rICdzeXN0ZW0t
c2xlZXAtZXZlbnQtZnVuY3Rpb25zCisgICAgICAgICAgICAgICAjJ3N5c3RlbS1zbGVlcC0tZGJ1
cy1wcmVwYXJlLWZvci1zbGVlcC1mdW5jdGlvbikpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXNs
ZWVwLS1ibG9jay1zbGVlcCAod2h5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFsbG93LWRpc3BsYXktc2xlZXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHN5c3RlbS1zbGVlcC0tYmFjay1lbmQgKGVxbCAnZGJ1cykpKQorICAobGV0ICgoc3Vi
dG9rZW5zKSkKKyAgICAoaWYtbGV0KiAoKHNsZWVwLWNvb2tpZSAoZGJ1cy1jYWxsLW1ldGhvZAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c3lzdGVtCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJvcmcuZnJlZWRlc2t0b3AubG9naW4xIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiL29yZy9mcmVlZGVza3RvcC9sb2dpbjEiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJvcmcuZnJlZWRlc2t0b3AubG9naW4xLk1hbmFnZXIiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJJbmhpYml0IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6a2Vl
cC1mZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW0tc2xlZXAtLWRidXMtc2xl
ZXAtaW5oaWJpdG9yLXR5cGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRidXMtc2Vy
dmljZS1lbWFjcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aHkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImJsb2NrIikpKQorICAgICAgICAocHJvZ24KKyAgICAgICAgICAo
bGV0ICgoaW5oaWJpdC1xdWl0IHQpKQorICAgICAgICAgICAgKHB1c2ggKGNvbnMgJ2RidXMtaW5o
aWJpdG9yLWxvY2sgc2xlZXAtY29va2llKSBzdWJ0b2tlbnMpKQorICAgICAgICAgICh1bmxlc3Mg
YWxsb3ctZGlzcGxheS1zbGVlcAorICAgICAgICAgICAgKGlmLWxldCogKChzY3JlZW4tY29va2ll
CisgICAgICAgICAgICAgICAgICAgICAgIChkYnVzLWNhbGwtbWV0aG9kCisgICAgICAgICAgICAg
ICAgICAgICAgICA6c2Vzc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgIm9yZy5mcmVlZGVz
a3RvcC5TY3JlZW5TYXZlciIKKyAgICAgICAgICAgICAgICAgICAgICAgICIvb3JnL2ZyZWVkZXNr
dG9wL1NjcmVlblNhdmVyIgorICAgICAgICAgICAgICAgICAgICAgICAgIm9yZy5mcmVlZGVza3Rv
cC5TY3JlZW5TYXZlciIKKyAgICAgICAgICAgICAgICAgICAgICAgICJJbmhpYml0IgorICAgICAg
ICAgICAgICAgICAgICAgICAgZGJ1cy1zZXJ2aWNlLWVtYWNzCisgICAgICAgICAgICAgICAgICAg
ICAgICAiU2NyZWVuIFNhdmVyIEJsb2NrIikpKQorICAgICAgICAgICAgICAgIChsZXQgKChpbmhp
Yml0LXF1aXQgdCkpCisgICAgICAgICAgICAgICAgICAocHVzaCAoY29ucyAnZGJ1cy1zY3JlZW5z
YXZlci1sb2NrIHNjcmVlbi1jb29raWUpIHN1YnRva2VucykpCisgICAgICAgICAgICAgICh3YXJu
ICJVbmFibGUgdG8gYmxvY2sgdGhlIHNjcmVlbiBzYXZlciIpKSkKKyAgICAgICAgICAobGV0ICgo
aW5oaWJpdC1xdWl0IHQpKQorICAgICAgICAgICAgKGxldCAoKHRva2VuIChsaXN0IDpzeXN0ZW0g
J2RidXMgOndoeSB3aHkgOnN1YnRva2VucyBzdWJ0b2tlbnMpKSkKKyAgICAgICAgICAgICAgKHB1
c2ggdG9rZW4gc3lzdGVtLXNsZWVwLS1zbGVlcC1ibG9jay10b2tlbnMpCisgICAgICAgICAgICAg
IHRva2VuKSkpCisgICAgICAod2FybiAiVW5hYmxlIHRvIGJsb2NrIHN5c3RlbSBzbGVlcCIpKSkp
CisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXNsZWVwLS11bmJsb2NrLXNsZWVwICh0b2tlbgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb250ZXh0CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS1zbGVlcC0tYmFjay1l
bmQgKGVxbCAnZGJ1cykpKQorCisgIChpZiAobWVtcSB0b2tlbiBzeXN0ZW0tc2xlZXAtLXNsZWVw
LWJsb2NrLXRva2VucykKKyAgICAgIChwcm9nbgorICAgICAgICAobGV0ICgoaW5oaWJpdC1xdWl0
IHQpKQorICAgICAgICAgIChzZXRxIHN5c3RlbS1zbGVlcC0tc2xlZXAtYmxvY2stdG9rZW5zCisg
ICAgICAgICAgICAgICAgKHJlbXEgdG9rZW4gc3lzdGVtLXNsZWVwLS1zbGVlcC1ibG9jay10b2tl
bnMpKSkKKyAgICAgICAgKGRvbGlzdCAoc3VidG9rZW4gKHBsaXN0LWdldCB0b2tlbiA6c3VidG9r
ZW5zKSkKKyAgICAgICAgICAocGNhc2UgKGNhciBzdWJ0b2tlbikKKyAgICAgICAgICAgICgnZGJ1
cy1pbmhpYml0b3ItbG9jaworICAgICAgICAgICAgIChkYnVzLS1mZC1jbG9zZSAoY2RyIHN1YnRv
a2VuKSkpCisgICAgICAgICAgICAoJ2RidXMtc2NyZWVuc2F2ZXItbG9jaworICAgICAgICAgICAg
IChkYnVzLWNhbGwtbWV0aG9kCisgICAgICAgICAgICAgIDpzZXNzaW9uCisgICAgICAgICAgICAg
ICJvcmcuZnJlZWRlc2t0b3AuU2NyZWVuU2F2ZXIiCisgICAgICAgICAgICAgICIvb3JnL2ZyZWVk
ZXNrdG9wL1NjcmVlblNhdmVyIgorICAgICAgICAgICAgICAib3JnLmZyZWVkZXNrdG9wLlNjcmVl
blNhdmVyIgorICAgICAgICAgICAgICAiVW5JbmhpYml0IgorICAgICAgICAgICAgICAoY2RyIHN1
YnRva2VuKSkpKSkKKyAgICAgICAgdCkKKyAgICAod2FybiAiVW5rbm93biBgc3lzdGVtLXNsZWVw
JyBzbGVlcCB0b2tlbiIpCisgICAgbmlsKSkKKworDAorOzsgbWFjT1MvR05Vc3RlcCBOUyBzdXBw
b3J0LgorCisoZGVjbGFyZS1mdW5jdGlvbiBucy1ibG9jay1zeXN0ZW0tc2xlZXAgIm5zZm5zLm0i
KQorKGRlY2xhcmUtZnVuY3Rpb24gbnMtdW5ibG9jay1zeXN0ZW0tc2xlZXAgIm5zZm5zLm0iKQor
CisoY2wtZGVmbWV0aG9kIHN5c3RlbS1zbGVlcC0tZW5hYmxlICgmY29udGV4dAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS1zbGVlcC0tYmFjay1lbmQgKGVxbCAn
bnMpKSkKKyAgdCkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tc2xlZXAtLWRpc2FibGUgKCZjb250
ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS1zbGVlcC0t
YmFjay1lbmQgKGVxbCAnbnMpKSkKKyAgKGlnbm9yZSkpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVt
LXNsZWVwLS1ibG9jay1zbGVlcCAod2h5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFsbG93LWRpc3BsYXktc2xlZXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHN5c3RlbS1zbGVlcC0tYmFjay1lbmQgKGVxbCAnbnMpKSkKKyAgKGlmLWxldCog
KChjb29raWUgKG5zLWJsb2NrLXN5c3RlbS1zbGVlcCB3aHkgYWxsb3ctZGlzcGxheS1zbGVlcCkp
CisgICAgICAgICAgICAodG9rZW4gKGxpc3QgOnN5c3RlbSAnbnMgOndoeSB3aHkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICA6dG9rZW4gKGNvbnMgJ25zLXNsZWVwLWJsb2NrIGNvb2tpZSkpKSkK
KyAgICAgIChwcm9nbgorICAgICAgICAobGV0ICgoaW5oaWJpdC1xdWl0IHQpKQorICAgICAgICAg
IChwdXNoIHRva2VuIHN5c3RlbS1zbGVlcC0tc2xlZXAtYmxvY2stdG9rZW5zKSkKKyAgICAgICAg
dG9rZW4pCisgICAgKHdhcm4gIlVuYWJsZSB0byBibG9jayBzeXN0ZW0gc2xlZXAiKSkpCisKKyhj
bC1kZWZtZXRob2Qgc3lzdGVtLXNsZWVwLS11bmJsb2NrLXNsZWVwICh0b2tlbgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb250ZXh0CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS1zbGVlcC0tYmFjay1lbmQgKGVx
bCAnbnMpKSkKKyAgKGlmIChtZW1xIHRva2VuIHN5c3RlbS1zbGVlcC0tc2xlZXAtYmxvY2stdG9r
ZW5zKQorICAgICAgKHByb2duCisgICAgICAgIChsZXQgKChpbmhpYml0LXF1aXQgdCkpCisgICAg
ICAgICAgKHNldHEgc3lzdGVtLXNsZWVwLS1zbGVlcC1ibG9jay10b2tlbnMKKyAgICAgICAgICAg
ICAgICAocmVtcSB0b2tlbiBzeXN0ZW0tc2xlZXAtLXNsZWVwLWJsb2NrLXRva2VucykpKQorICAg
ICAgICAoaWYgKG5zLXVuYmxvY2stc3lzdGVtLXNsZWVwIChjZHIgKHBsaXN0LWdldCB0b2tlbiA6
dG9rZW4pKSkKKyAgICAgICAgICAgIHQKKyAgICAgICAgICAod2FybiAiVW5hYmxlIHRvIHVuYmxv
Y2sgc3lzdGVtIHNsZWVwIChibG9ja3MgYXJlIHJlbGVhc2VkIHdoZW4gRW1hY3MgZGllcykiKQor
ICAgICAgICAgIG5pbCkpCisgICAgKHdhcm4gIlVua25vd24gYHN5c3RlbS1zbGVlcCcgc2xlZXAg
dG9rZW4iKQorICAgIG5pbCkpCisKKwwKKzs7IE1TLVdpbmRvd3Mgc3VwcG9ydC4KKworKGRlY2xh
cmUtZnVuY3Rpb24gdzMyLWJsb2NrLXN5c3RlbS1zbGVlcCAidzMyZm5zLmMiKQorKGRlY2xhcmUt
ZnVuY3Rpb24gdzMyLXVuYmxvY2stc3lzdGVtLXNsZWVwICJ3MzJmbnMuYyIpCisoZGVjbGFyZS1m
dW5jdGlvbiB3MzItc3lzdGVtLXNsZWVwLWJsb2NrLWNvdW50ICJ3MzJmbnMuYyIpCisKKyhkZWZ2
YXIgc3lzdGVtLXNsZWVwLS13MzItc2xlZXAtYmxvY2stY291bnQgMCkKKworKGNsLWRlZm1ldGhv
ZCBzeXN0ZW0tc2xlZXAtLWVuYWJsZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChzeXN0ZW0tc2xlZXAtLWJhY2stZW5kIChlcWwgJ3czMikpKQorICB0KQor
CisoY2wtZGVmbWV0aG9kIHN5c3RlbS1zbGVlcC0tZGlzYWJsZSAoJmNvbnRleHQKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXNsZWVwLS1iYWNrLWVuZCAoZXFs
ICd3MzIpKSkKKyAgKGlnbm9yZSkpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXNsZWVwLS1ibG9j
ay1zbGVlcCAod2h5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFs
bG93LWRpc3BsYXktc2xlZXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5
c3RlbS1zbGVlcC0tYmFjay1lbmQgKGVxbCAndzMyKSkpCisgIChpZi1sZXQqICgoY29va2llICh3
MzItYmxvY2stc3lzdGVtLXNsZWVwIGFsbG93LWRpc3BsYXktc2xlZXApKQorICAgICAgICAgICAg
KHRva2VuIChsaXN0IDpzeXN0ZW0gJ3czMiA6d2h5IHdoeQorICAgICAgICAgICAgICAgICAgICAg
ICAgIDp0b2tlbiAoY29ucyAndzMyLXNsZWVwLWJsb2NrIGNvb2tpZSkpKSkKKyAgICAgIChwcm9n
bgorICAgICAgICAobGV0ICgoaW5oaWJpdC1xdWl0IHQpKQorICAgICAgICAgIChwdXNoIHRva2Vu
IHN5c3RlbS1zbGVlcC0tc2xlZXAtYmxvY2stdG9rZW5zKSkKKyAgICAgICAgdG9rZW4pCisgICAg
KHdhcm4gIlVuYWJsZSB0byBibG9jayBzeXN0ZW0gc2xlZXAiKSkpCisKKyhjbC1kZWZtZXRob2Qg
c3lzdGVtLXNsZWVwLS11bmJsb2NrLXNsZWVwICh0b2tlbgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHN5c3RlbS1zbGVlcC0tYmFjay1lbmQgKGVxbCAndzMyKSkpCisg
IChpZiAobWVtcSB0b2tlbiBzeXN0ZW0tc2xlZXAtLXNsZWVwLWJsb2NrLXRva2VucykKKyAgICAg
IChwcm9nbgorICAgICAgICAobGV0ICgoaW5oaWJpdC1xdWl0IHQpKQorICAgICAgICAgIChzZXRx
IHN5c3RlbS1zbGVlcC0tc2xlZXAtYmxvY2stdG9rZW5zCisgICAgICAgICAgICAgICAgKHJlbXEg
dG9rZW4gc3lzdGVtLXNsZWVwLS1zbGVlcC1ibG9jay10b2tlbnMpKSkKKyAgICAgICAgKGlmIChl
cSAwICh3MzItc3lzdGVtLXNsZWVwLWJsb2NrLWNvdW50KSkKKyAgICAgICAgICAgICh3YXJuICJV
bmFibGUgdG8gdW5ibG9jayBzeXN0ZW0gc2xlZXAgKG5vIGFjdGl2ZSB0b2tlbnMpIikKKyAgICAg
ICAgICAoaWYgKHczMi11bmJsb2NrLXN5c3RlbS1zbGVlcCkKKyAgICAgICAgICAgICAgdAorICAg
ICAgICAgICAgKHdhcm4gIlVuYWJsZSB0byB1bmJsb2NrIHN5c3RlbSBzbGVlcCAoYmxvY2tzIGFy
ZSByZWxlYXNlZCB3aGVuIEVtYWNzIGRpZXMpIikKKyAgICAgICAgICAgIG5pbCkpKQorICAgICh3
YXJuICJVbmtub3duIGBzeXN0ZW0tc2xlZXAnIHNsZWVwIHRva2VuIikKKyAgICBuaWwpKQorCisM
Cis7OyBJbml0aWFsaXplIHN5c3RlbS1zbGVlcC4KKworKHN5c3RlbS1zbGVlcC1lbmFibGUpCisK
Kyhwcm92aWRlICdzeXN0ZW0tc2xlZXApCisKKzs7OyBzeXN0ZW0tc2xlZXAuZWwgZW5kcyBoZXJl
CmRpZmYgLS1naXQgYS9zcmMvbnNmbnMubSBiL3NyYy9uc2Zucy5tCmluZGV4IGNmNjg1NjMwYWI3
Li4zZDNkNWVjMWJkZSAxMDA2NDQKLS0tIGEvc3JjL25zZm5zLm0KKysrIGIvc3JjL25zZm5zLm0K
QEAgLTM4MDUsNiArMzgwNSw4OCBAQCBUaGUgcG9zaXRpb24gaXMgcmV0dXJuZWQgYXMgYSBjb25z
IGNlbGwgKFggLiBZKSBvZiB0aGUKICAgcmV0dXJuIFFuaWw7CiB9CiAKKy8qIEEgdW5pcXVlIGlu
dGVnZXIgc2xlZXAgYmxvY2sgaWQgYW5kIGEgaGFzaCBtYXAgb2YgaXRzIGlkIHRvIG9wYXF1ZQor
ICAgTlNPYmplY3Qgc2xlZXAgYmxvY2sgYWN0aXZpdHkgdG9rZW5zLiAgKi8KK3N0YXRpYyB1bnNp
Z25lZCBpbnQgc2xlZXBfYmxvY2tfaWQgPSAwOworc3RhdGljIE5TTXV0YWJsZURpY3Rpb25hcnkg
KnNsZWVwX2Jsb2NrX21hcCA9IE5VTEw7CisKK0RFRlVOICgibnMtYmxvY2stc3lzdGVtLXNsZWVw
IiwKKyAgICAgICBGbnNfYmxvY2tfc3lzdGVtX3NsZWVwLAorICAgICAgIFNuc19ibG9ja19zeXN0
ZW1fc2xlZXAsCisgICAgICAgMiwgMiwgMCwKKyAgICAgICBkb2M6IC8qIEJsb2NrIHN5c3RlbSBp
ZGxlIHNsZWVwLgorV0hZIGlzIGEgc3RyaW5nIHJlYXNvbiBmb3IgdGhlIGJsb2NrLgorSWYgQUxM
T1ctRElTUExBWS1TTEVFUCBpcyBub24tbmlsLCBibG9jayB0aGUgc2NyZWVuIGZyb20gc2xlZXBp
bmcuCitSZXR1cm4gYSB0b2tlbiB0byB1bmJsb2NrIHRoaXMgYmxvY2sgdXNpbmcgYG5zLXVuYmxv
Y2stc3lzdGVtLXNsZWVwJywKK29yIG5pbCBpZiB0aGUgYmxvY2sgZmFpbHMuICAqLykKKyAgKExp
c3BfT2JqZWN0IHdoeSwgTGlzcF9PYmplY3QgYWxsb3dfZGlzcGxheV9zbGVlcCkKK3sKKyAgYmxv
Y2tfaW5wdXQgKCk7CisKKyAgTlNTdHJpbmcgKnJlYXNvbiA9IEAiRW1hY3MiOworICBpZiAoIU5J
TFAgKHdoeSkpCisgICAgeworICAgICAgQ0hFQ0tfU1RSSU5HICh3aHkpOworICAgICAgcmVhc29u
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhMaXNwU3RyaW5nOiB3aHldOworICAgIH0KKworICB1bnNp
Z25lZCBsb25nIGFjdGl2aXR5X29wdGlvbnMgPQorICAgIE5TQWN0aXZpdHlVc2VySW5pdGlhdGVk
IHwgTlNBY3Rpdml0eUlkbGVTeXN0ZW1TbGVlcERpc2FibGVkOworICBpZiAoTklMUCAoYWxsb3df
ZGlzcGxheV9zbGVlcCkpCisgICAgYWN0aXZpdHlfb3B0aW9ucyB8PSBOU0FjdGl2aXR5SWRsZURp
c3BsYXlTbGVlcERpc2FibGVkOworCisgIE5TUHJvY2Vzc0luZm8gKnByb2Nlc3NJbmZvID0gW05T
UHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dOworICBOU09iamVjdCAqYWN0aXZpdHlfaWQgPSBuaWw7
CisgIGlmIChbcHJvY2Vzc0luZm8gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihiZWdpbkFj
dGl2aXR5V2l0aE9wdGlvbnM6cmVhc29uOildKQorICAgIGFjdGl2aXR5X2lkID0gW1tOU1Byb2Nl
c3NJbmZvIHByb2Nlc3NJbmZvXQorCQkJICAgICBiZWdpbkFjdGl2aXR5V2l0aE9wdGlvbnM6IGFj
dGl2aXR5X29wdGlvbnMKKwkJCQkJICAgICAgIHJlYXNvbjogcmVhc29uXTsKKyAgdW5ibG9ja19p
bnB1dCAoKTsKKworICBpZiAoIXNsZWVwX2Jsb2NrX21hcCkKKyAgICBzbGVlcF9ibG9ja19tYXAg
PSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6IDI1XTsKKwor
ICBpZiAoYWN0aXZpdHlfaWQpCisgICAgeworICAgICAgW3NsZWVwX2Jsb2NrX21hcCBzZXRPYmpl
Y3Q6IGFjdGl2aXR5X2lkCisJCQkgIGZvcktleTogW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6ICsr
c2xlZXBfYmxvY2tfaWRdXTsKKyAgICAgIHJldHVybiBtYWtlX2ZpeG51bSAoc2xlZXBfYmxvY2tf
aWQpOworICAgIH0KKyAgZWxzZQorICAgIHJldHVybiBRbmlsOworfQorCitERUZVTiAoIm5zLXVu
YmxvY2stc3lzdGVtLXNsZWVwIiwKKyAgICAgICBGbnNfdW5ibG9ja19zeXN0ZW1fc2xlZXAsCisg
ICAgICAgU25zX3VuYmxvY2tfc3lzdGVtX3NsZWVwLAorICAgICAgIDEsIDEsIDAsCisgICAgICAg
ZG9jOiAvKiBVbmJsb2NrIHN5c3RlbSBpZGxlIHNsZWVwLgorVE9LRU4gaXMgYW4gb2JqZWN0IHJl
dHVybmVkIGJ5IGBucy1ibG9jay1zeXN0ZW0tc2xlZXAnLgorUmV0dXJuIG5vbi1uaWwgaWYgdGhl
IFRPS0VOIGJsb2NrIHdhcyB1bmJsb2NrZWQuICAqLykKKyAgKExpc3BfT2JqZWN0IHRva2VuKQor
eworICBibG9ja19pbnB1dCAoKTsKKyAgTGlzcF9PYmplY3QgcmVzID0gUW5pbDsKKyAgQ0hFQ0tf
RklYTkFUICh0b2tlbik7CisgIGlmIChzbGVlcF9ibG9ja19tYXApCisgICAgeworICAgICAgTlNO
dW1iZXIgKmtleSA9IFtOU051bWJlciBudW1iZXJXaXRoSW50OiBYRklYTkFUICh0b2tlbildOwor
ICAgICAgTlNPYmplY3QgKmFjdGl2aXR5X2lkID0gW3NsZWVwX2Jsb2NrX21hcCBvYmplY3RGb3JL
ZXk6IGtleV07CisgICAgICBpZiAoYWN0aXZpdHlfaWQpCisJeworCSAgTlNQcm9jZXNzSW5mbyAq
cHJvY2Vzc0luZm8gPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb107CisJICBpZiAoW3Byb2Nl
c3NJbmZvIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZW5kQWN0aXZpdHk6KV0pCisJICAg
IHsKKwkgICAgICBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGVuZEFjdGl2aXR5OiBhY3Rp
dml0eV9pZF07CisJICAgICAgcmVzID0gUXQ7CisJICAgIH0KKwkgIFtzbGVlcF9ibG9ja19tYXAg
cmVtb3ZlT2JqZWN0Rm9yS2V5OiBrZXldOworCX0KKyAgICB9CisgIHVuYmxvY2tfaW5wdXQgKCk7
CisgIHJldHVybiByZXM7Cit9CisKICNpZmRlZiBOU19JTVBMX0NPQ09BCiAKIERFRlVOICgibnMt
c2VuZC1pdGVtcyIsCkBAIC00MDkxLDYgKzQxNzMsOCBAQCAtIChMaXNwX09iamVjdClsaXNwU3Ry
aW5nCiAgIGRlZnN1YnIgKCZTbnNfYmFkZ2UpOwogICBkZWZzdWJyICgmU25zX3JlcXVlc3RfdXNl
cl9hdHRlbnRpb24pOwogICBkZWZzdWJyICgmU25zX3Byb2dyZXNzX2luZGljYXRvcik7CisgIGRl
ZnN1YnIgKCZTbnNfYmxvY2tfc3lzdGVtX3NsZWVwKTsKKyAgZGVmc3ViciAoJlNuc191bmJsb2Nr
X3N5c3RlbV9zbGVlcCk7CiAjaWZkZWYgTlNfSU1QTF9DT0NPQQogICBkZWZzdWJyICgmU25zX3Nl
bmRfaXRlbXMpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvbnN0ZXJtLm0gYi9zcmMvbnN0ZXJt
Lm0KaW5kZXggYzg1MmI3MGJlNzQuLmNmNzNjNzJhNmI0IDEwMDY0NAotLS0gYS9zcmMvbnN0ZXJt
Lm0KKysrIGIvc3JjL25zdGVybS5tCkBAIC01ODM4LDE1ICs1ODM4LDYgQEAgc3RhdGljIExpc3Bf
T2JqZWN0IG5zX25ld19mb250IChzdHJ1Y3QgZnJhbWUgKmYsIExpc3BfT2JqZWN0IGZvbnRfb2Jq
ZWN0LAogICBuc19wZW5kaW5nX3NlcnZpY2VfbmFtZXMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0XTsKICAgbnNfcGVuZGluZ19zZXJ2aWNlX2FyZ3MgPSBbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XTsKIAotI2lmIGRlZmluZWQgKE5TX0lNUExfQ09DT0EpICYmIE1BQ19PU19YX1ZF
UlNJT05fTUFYX0FMTE9XRUQgPj0gMjYwMDAwCi0gIC8qIERpc2FibGUgcHJvYmxlbWF0aWMgZXZl
bnQgcHJvY2Vzc2luZyBvbiBtYWNPUyAyNiAoVGFob2UpIHRvIGF2b2lkCi0gICAgIHNjcm9sbGlu
ZyBsYWcgYW5kIGlucHV0IGhhbmRsaW5nIGlzc3Vlcy4gIFRoZXNlIGFyZSB1bmRvY3VtZW50ZWQK
LSAgICAgb3B0aW9ucyBhcyBvZiBtYWNPUyAyNi4wLiAgKi8KLSAgW05TVXNlckRlZmF1bHRzLnN0
YW5kYXJkVXNlckRlZmF1bHRzCi0gICAgICByZWdpc3RlckRlZmF1bHRzOkB7QCJOU0V2ZW50Q29u
Y3VycmVudFByb2Nlc3NpbmdFbmFibGVkIiA6IEAiTk8iLAotICAgICAgICBAIk5TQXBwbGljYXRp
b25VcGRhdGVDeWNsZUVuYWJsZWQiIDogQCJOTyJ9XTsKLSNlbmRpZgotCiAgIC8qIFN0YXJ0IGFw
cCBhbmQgY3JlYXRlIHRoZSBtYWluIG1lbnUsIHdpbmRvdywgdmlldy4KICAgICAgTmVlZHMgdG8g
YmUgaGVyZSBiZWNhdXNlIG5zX2luaXRpYWxpemVfZGlzcGxheV9pbmZvICgpIHVzZXMgQXBwS2l0
IGNsYXNzZXMuCiAgICAgIFRoZSB2aWV3IHdpbGwgdGhlbiBhc2sgdGhlIE5TQXBwIHRvIHN0b3Ag
YW5kIHJldHVybiB0byBFbWFjcy4gICovCkBAIC02MzgzLDYgKzYzNzQsMjAgQEAgLSAodm9pZClh
cHBsaWNhdGlvbkRpZEZpbmlzaExhdW5jaGluZzogKE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0
aW9uCiAJIG9iamVjdDpuaWxdOwogI2VuZGlmCiAKKyNpZmRlZiBOU19JTVBMX0NPQ09BCisgIC8q
IFNsZWVwIGV2ZW50IG5vdGlmaWNhdGlvbi4gICovCisgIFtbW05TV29ya3NwYWNlIHNoYXJlZFdv
cmtzcGFjZV0gbm90aWZpY2F0aW9uQ2VudGVyXQorICAgIGFkZE9ic2VydmVyOiBzZWxmCisgICAg
ICAgc2VsZWN0b3I6QHNlbGVjdG9yKHN5c3RlbVdpbGxTbGVlcDopCisJICAgbmFtZTogTlNXb3Jr
c3BhY2VXaWxsU2xlZXBOb3RpZmljYXRpb24KKwkgb2JqZWN0OiBuaWxdOworICBbW1tOU1dvcmtz
cGFjZSBzaGFyZWRXb3Jrc3BhY2VdIG5vdGlmaWNhdGlvbkNlbnRlcl0KKyAgICBhZGRPYnNlcnZl
cjogc2VsZgorICAgICAgIHNlbGVjdG9yOiBAc2VsZWN0b3Ioc3lzdGVtRGlkV2FrZTopCisJICAg
bmFtZTogTlNXb3Jrc3BhY2VEaWRXYWtlTm90aWZpY2F0aW9uCisJIG9iamVjdDogbmlsXTsKKyNl
bmRpZgorCiAjaWZkZWYgTlNfSU1QTF9DT0NPQQogICAvKiBTb21lIGZ1bmN0aW9ucy9tZXRob2Rz
IGluIENvcmVGb3VuZGF0aW9uL0ZvdW5kYXRpb24gaW5jcmVhc2UgdGhlCiAgICAgIG1heGltdW0g
bnVtYmVyIG9mIG9wZW4gZmlsZXMgZm9yIHRoZSBwcm9jZXNzIGluIHRoZWlyIGZpcnN0IGNhbGwu
CkBAIC02NDIxLDYgKzY0MjYsMzEgQEAgLSAodm9pZClhbnRpYWxpYXNUaHJlc2hvbGREaWRDaGFu
Z2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCiAjZW5kaWYKIH0KIAorLyogU2xlZXAg
ZXZlbnQgbm90aWZpY2F0aW9uLiAgKi8KKworLSAodm9pZCkgc3lzdGVtV2lsbFNsZWVwOihOU05v
dGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgoreworI2lmZGVmIE5TX0lNUExfQ09DT0EKKyAgTlNU
UkFDRSAoIltFbWFjc0FwcCBzeXN0ZW1XaWxsU2xlZXA6XSIpOworICBzdHJ1Y3QgaW5wdXRfZXZl
bnQgaWU7CisgIEVWRU5UX0lOSVQgKGllKTsKKyAgaWUua2luZCA9IFNMRUVQX0VWRU5UOworICBp
ZS5hcmcgPSBsaXN0MSAoUXByZV9zbGVlcCk7CisgIGtiZF9idWZmZXJfc3RvcmVfZXZlbnQgKCZp
ZSk7CisjZW5kaWYKK30KKworLSAodm9pZCkgc3lzdGVtRGlkV2FrZTooTlNOb3RpZmljYXRpb24g
Kilub3RpZmljYXRpb24KK3sKKyNpZmRlZiBOU19JTVBMX0NPQ09BCisgIE5TVFJBQ0UgKCJbRW1h
Y3NBcHAgc3lzdGVtRGlkV2FrZTpdIik7CisgIHN0cnVjdCBpbnB1dF9ldmVudCBpZTsKKyAgRVZF
TlRfSU5JVCAoaWUpOworICBpZS5raW5kID0gU0xFRVBfRVZFTlQ7CisgIGllLmFyZyA9IGxpc3Qx
IChRcG9zdF93YWtlKTsKKyAga2JkX2J1ZmZlcl9zdG9yZV9ldmVudCAoJmllKTsKKyNlbmRpZgor
fQogCiAvKiBUZXJtaW5hdGlvbiBzZXF1ZW5jZXM6CiAgICAgQy14IEMtYzoKQEAgLTExNTQ4LDYg
KzExNTc4LDEwIEBAIE5pbCBtZWFucyB1c2UgZnVsbHNjcmVlbiB0aGUgb2xkICg8IDEwLjcpIHdh
eS4gIFRoZSBvbGQgd2F5IHdvcmtzIGJldHRlciB3aXRoCiAgIERFRlNZTSAoUWV4cGFuZGVkLCAi
ZXhwYW5kZWQiKTsKICAgREVGU1lNIChRbnNfaW5fZWNob19hcmVhLCAibnMtaW4tZWNoby1hcmVh
Iik7CiAKKyAgLyogU2xlZXAgZXZlbnRzLiAgKi8KKyAgREVGU1lNIChRcHJlX3NsZWVwLCAicHJl
LXNsZWVwIik7CisgIERFRlNZTSAoUXBvc3Rfd2FrZSwgInBvc3Qtd2FrZSIpOworCiAjaWZkZWYg
TlNfSU1QTF9DT0NPQQogICBGcHJvdmlkZSAoUWNvY29hLCBRbmlsKTsKICAgc3ltc19vZl9tYWNm
b250ICgpOwpkaWZmIC0tZ2l0IGEvc3JjL3czMmZucy5jIGIvc3JjL3czMmZucy5jCmluZGV4IGI3
NWJjZThkMWEyLi43YjZhM2E2MGMxNSAxMDA2NDQKLS0tIGEvc3JjL3czMmZucy5jCisrKyBiL3Ny
Yy93MzJmbnMuYwpAQCAtMTEzMjUsNiArMTEzMjUsMTM2IEBAIERFRlVOICgidzMyLXByb2dyZXNz
LWluZGljYXRvciIsCiAKICNlbmRpZiAvKiBXSU5ET1dTTlQgKi8KIAorLyoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
CisJCSAgICAgU3lzdGVtIFNsZWVwIFN1cHBvcnQKKyAqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwordHlwZWRl
ZiBVTE9ORyAoV0lOQVBJICogU2V0VGhyZWFkRXhlY3V0aW9uU3RhdGVfUHJvYykKKyAgKElOIFVM
T05HKTsKK3N0YXRpYyBTZXRUaHJlYWRFeGVjdXRpb25TdGF0ZV9Qcm9jIFNldFRocmVhZEV4ZWN1
dGlvblN0YXRlX2ZuID0gTlVMTDsKKworc3RhdGljIHVuc2lnbmVkIGludCBzbGVlcF9ibG9ja19p
ZCA9IDA7CitzdGF0aWMgdW5zaWduZWQgaW50IHNsZWVwX2Jsb2NrX2NvdW50ID0gMDsKKworREVG
VU4gKCJ3MzItYmxvY2stc3lzdGVtLXNsZWVwIiwKKyAgICAgICBGdzMyX2Jsb2NrX3N5c3RlbV9z
bGVlcCwKKyAgICAgICBTdzMyX2Jsb2NrX3N5c3RlbV9zbGVlcCwKKyAgICAgICAxLCAxLCAwLAor
ICAgICAgIGRvYzogLyogQmxvY2sgc3lzdGVtIGlkbGUgc2xlZXAuCitJZiBBTExPVy1ESVNQTEFZ
LVNMRUVQIGlzIG5vbi1uaWwsIGJsb2NrIHRoZSBzY3JlZW4gZnJvbSBzbGVlcGluZy4KK1JldHVy
biBhIHRva2VuIHRvIHVuYmxvY2sgdGhpcyBibG9jayB1c2luZyBgdzMyLXVuYmxvY2stc3lzdGVt
LXNsZWVwJywKK29yIG5pbCBpZiB0aGUgYmxvY2sgZmFpbHMuICAqLykKKyAgKExpc3BfT2JqZWN0
IGFsbG93X2Rpc3BsYXlfc2xlZXApCit7CisgIGlmIChTZXRUaHJlYWRFeGVjdXRpb25TdGF0ZV9m
biA9PSBOVUxMKQorICAgIHJldHVybiBRbmlsOworCisgIC8qIEVTX0NPTlRJTlVPVVMga2VlcHMg
dGhlIHN0YXRlIHVudGlsIGNsZWFyZWQuICAqLworICBFWEVDVVRJT05fU1RBVEUgbmV3X3N0YXRl
ID0gRVNfU1lTVEVNX1JFUVVJUkVEIHwgRVNfQ09OVElOVU9VUzsKKyAgaWYgKE5JTFAgKGFsbG93
X2Rpc3BsYXlfc2xlZXApKQorICAgIG5ld19zdGF0ZSB8PSBFU19ESVNQTEFZX1JFUVVJUkVEOwor
CisgIGlmIChTZXRUaHJlYWRFeGVjdXRpb25TdGF0ZSAobmV3X3N0YXRlKSA9PSAwKQorICAgIHJl
dHVybiBRbmlsOworICBlbHNlCisgICAgeworICAgICAgLyogT25lIG1vcmUgYmxvY2sgYW5kIG5l
eHQgaWQuICAqLworICAgICAgKytzbGVlcF9ibG9ja19jb3VudDsKKyAgICAgICsrc2xlZXBfYmxv
Y2tfaWQ7CisKKyAgICAgIC8qIFN5bnRoZXNpemUgYSB0b2tlbi4gICovCisgICAgICByZXR1cm4g
bWFrZV9maXhudW0gKHNsZWVwX2Jsb2NrX2lkKTsKKyAgICB9Cit9CisKK0RFRlVOICgidzMyLXVu
YmxvY2stc3lzdGVtLXNsZWVwIiwKKyAgICAgICBGdzMyX3VuYmxvY2tfc3lzdGVtX3NsZWVwLAor
ICAgICAgIFN3MzJfdW5ibG9ja19zeXN0ZW1fc2xlZXAsCisgICAgICAgMCwgMCwgMCwKKyAgICAg
ICBkb2M6IC8qIFVuYmxvY2sgc3lzdGVtIGlkbGUgc2xlZXAuCitSZXR1cm4gbm9uLW5pbCBpZiB0
aGUgVE9LRU4gYmxvY2sgd2FzIHVuYmxvY2tlZC4gICovKQorICAodm9pZCkKK3sKKyAgaWYgKFNl
dFRocmVhZEV4ZWN1dGlvblN0YXRlX2ZuID09IE5VTEwpCisgICAgcmV0dXJuIFFuaWw7CisKKyAg
LyogTm8gYmxvY2tzIHRvIHVuYmxvY2suICAqLworICBpZiAoc2xlZXBfYmxvY2tfY291bnQgPT0g
MCkKKyAgICByZXR1cm4gUW5pbDsKKworICAvKiBPbmUgZmV3ZXIgYmxvY2suICAqLworICBpZiAo
LS1zbGVlcF9ibG9ja19jb3VudCA9PSAwCisgICAgICAmJiBTZXRUaHJlYWRFeGVjdXRpb25TdGF0
ZSAoRVNfQ09OVElOVU9VUykgPT0gMCkKKyAgICAgIHJldHVybiBRbmlsOworICBlbHNlCisgICAg
cmV0dXJuIFF0OworfQorCitERUZVTiAoInczMi1zeXN0ZW0tc2xlZXAtYmxvY2stY291bnQiLAor
ICAgICAgIEZ3MzJfc3lzdGVtX3NsZWVwX2Jsb2NrX2NvdW50LAorICAgICAgIFN3MzJfc3lzdGVt
X3NsZWVwX2Jsb2NrX2NvdW50LAorICAgICAgIDAsIDAsIDAsCisgICAgICAgZG9jOiAvKiBSZXR1
cm4gdGhlIHczMiBzbGVlcCBibG9jayBjb3VudC4gICovKQorICAodm9pZCkKK3sKKyAgcmV0dXJu
IG1ha2VfZml4bnVtIChzbGVlcF9ibG9ja19jb3VudCk7Cit9CisKK3R5cGVkZWYgVUxPTkcgKENB
TExCQUNLICpQTVlfREVWSUNFX05PVElGWV9DQUxMQkFDS19ST1VUSU5FKQorICAoUFZPSUQgQ29u
dGV4dCwgIFVMT05HIFR5cGUsICBQVk9JRCBTZXR0aW5nKTsKKworc3RhdGljIFVMT05HIEFMSUdO
X1NUQUNLCitzbGVlcF9ub3RpZmljYXRpb25fY2FsbGJhY2soUFZPSUQgX0NvbnRleHQsIFVMT05H
IFR5cGUsIFBWT0lEIF9TZXR0aW5nKQoreworICBzdHJ1Y3QgaW5wdXRfZXZlbnQgaWU7CisgIEVW
RU5UX0lOSVQgKGllKTsKKyAgaWUua2luZCA9IFNMRUVQX0VWRU5UOworCisgIHN3aXRjaCAoVHlw
ZSkKKyAgICB7CisgICAgY2FzZSBQQlRfQVBNUkVTVU1FQVVUT01BVElDOgorICAgICAgLyogSWdu
b3JlIHRoaXMgZXZlbnQuICBObyB1c2VyIGlzIHByZXNlbnQuICAqLworICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQQlRfQVBNU1VTUEVORDoKKyAgICAgIGllLmFyZyA9IGxpc3QxIChRcHJlX3NsZWVw
KTsKKyAgICAgIGtiZF9idWZmZXJfc3RvcmVfZXZlbnQgKCZpZSk7CisgICAgICBicmVhazsKKyAg
ICBjYXNlIFBCVF9BUE1SRVNVTUVTVVNQRU5EOgorICAgICAgaWUuYXJnID0gbGlzdDEgKFFwb3N0
X3dha2UpOworICAgICAga2JkX2J1ZmZlcl9zdG9yZV9ldmVudCAoJmllKTsKKyAgICAgIGJyZWFr
OworICAgIH0KKyAgcmV0dXJuIDA7Cit9CisKK3R5cGVkZWYgSFBPV0VSTk9USUZZIChXSU5BUEkg
KiBSZWdpc3RlclN1c3BlbmRSZXN1bWVOb3RpZmljYXRpb25fUHJvYykKKyAgKElOIEhBTkRMRSwg
SU4gRFdPUkQpOworc3RhdGljIFJlZ2lzdGVyU3VzcGVuZFJlc3VtZU5vdGlmaWNhdGlvbl9Qcm9j
IFJlZ2lzdGVyU3VzcGVuZFJlc3VtZU5vdGlmaWNhdGlvbl9mbiA9IE5VTEw7CisKK3N0YXRpYyBI
UE9XRVJOT1RJRlkgc2xlZXBfbm90aWZpY2F0aW9uX2hhbmRsZSA9IDA7CisKK3R5cGVkZWYgc3Ry
dWN0IF9NWV9ERVZJQ0VfTk9USUZZX1NVQlNDUklCRV9QQVJBTUVURVJTIHsKKyAgUE1ZX0RFVklD
RV9OT1RJRllfQ0FMTEJBQ0tfUk9VVElORSBDYWxsYmFjazsKKyAgUFZPSUQgQ29udGV4dDsKK30g
TVlfREVWSUNFX05PVElGWV9TVUJTQ1JJQkVfUEFSQU1FVEVSUywgKlBNWV9ERVZJQ0VfTk9USUZZ
X1NVQlNDUklCRV9QQVJBTUVURVJTOworCit2b2lkCit3MzJfcmVnaXN0ZXJfZm9yX3NsZWVwX25v
dGlmaWNhdGlvbnMoKQoreworICAvKiBQb3dlclJlZ2lzdGVyU3VzcGVuZFJlc3VtZU5vdGlmaWNh
dGlvbiBpcyBub3QgYSB1c2VyLXNwYWNlIGNhbGwgc28KKyAgICAgd2UgdXNlIFJlZ2lzdGVyU3Vz
cGVuZFJlc3VtZU5vdGlmaWNhdGlvbi4gICovCisgIGlmIChSZWdpc3RlclN1c3BlbmRSZXN1bWVO
b3RpZmljYXRpb25fZm4pCisgICAgeworICAgICAgTVlfREVWSUNFX05PVElGWV9TVUJTQ1JJQkVf
UEFSQU1FVEVSUyBwYXJhbXM7CisgICAgICBwYXJhbXMuQ2FsbGJhY2sgPSBzbGVlcF9ub3RpZmlj
YXRpb25fY2FsbGJhY2s7CisgICAgICBwYXJhbXMuQ29udGV4dCA9IE5VTEw7CisKKyAgICAgIC8q
IERFVklDRV9OT1RJRllfQ0FMTEJBQ0sgPSAyICAqLworICAgICAgc2xlZXBfbm90aWZpY2F0aW9u
X2hhbmRsZSA9CisJUmVnaXN0ZXJTdXNwZW5kUmVzdW1lTm90aWZpY2F0aW9uX2ZuICgmcGFyYW1z
LCAyKTsKKyAgICB9Cit9CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCQkJICAgIEluaXRpYWxpemF0aW9u
CiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKiovCkBAIC0xMTgzNCw2ICsxMTk2NCwxMiBAQCBzeW1zX29mX3czMmZu
cyAodm9pZCkKICAgZGVmc3ViciAoJlN3MzJfcmVxdWVzdF91c2VyX2F0dGVudGlvbik7CiAgIERF
RlNZTSAoUWluZm9ybWF0aW9uYWwsICJpbmZvcm1hdGlvbmFsIik7CiAgIERFRlNZTSAoUWNyaXRp
Y2FsLCAiY3JpdGljYWwiKTsKKyAgLyogU3lzdGVtIHNsZWVwIHN1cHBvcnQuICAqLworICBERUZT
WU0gKFFwcmVfc2xlZXAsICJwcmUtc2xlZXAiKTsKKyAgREVGU1lNIChRcG9zdF93YWtlLCAicG9z
dC13YWtlIik7CisgIGRlZnN1YnIgKCZTdzMyX3VuYmxvY2tfc3lzdGVtX3NsZWVwKTsKKyAgZGVm
c3ViciAoJlN3MzJfYmxvY2tfc3lzdGVtX3NsZWVwKTsKKyAgZGVmc3ViciAoJlN3MzJfc3lzdGVt
X3NsZWVwX2Jsb2NrX2NvdW50KTsKICNlbmRpZgogfQogCkBAIC0xMjA5NCw2ICsxMjIzMCw3IEBA
ICNkZWZpbmUgX29wZW4gb3BlbgogZ2xvYmFsc19vZl93MzJmbnMgKHZvaWQpCiB7CiAgIEhNT0RV
TEUgdXNlcjMyX2xpYiA9IEdldE1vZHVsZUhhbmRsZSAoInVzZXIzMi5kbGwiKTsKKyAgSE1PRFVM
RSBrZXJuZWwzMl9saWIgPSBHZXRNb2R1bGVIYW5kbGUgKCJrZXJuZWwzMi5kbGwiKTsKICAgLyoK
ICAgICBUcmFja01vdXNlRXZlbnQgbm90IGF2YWlsYWJsZSBpbiBhbGwgdmVyc2lvbnMgb2YgV2lu
ZG93cywgc28gbXVzdCBsb2FkCiAgICAgaXQgZHluYW1pY2FsbHkuICBEbyBpdCBvbmNlLCBoZXJl
LCBpbnN0ZWFkIG9mIGV2ZXJ5IHRpbWUgaXQgaXMgdXNlZC4KQEAgLTEyMTIwLDYgKzEyMjU3LDE2
IEBAIGdsb2JhbHNfb2ZfdzMyZm5zICh2b2lkKQogICBSZWdpc3RlclRvdWNoV2luZG93X2ZuCiAg
ICAgPSAoUmVnaXN0ZXJUb3VjaFdpbmRvd19wcm9jKSBnZXRfcHJvY19hZGRyICh1c2VyMzJfbGli
LAogCQkJCQkJIlJlZ2lzdGVyVG91Y2hXaW5kb3ciKTsKKyAgLyogRm9yIHN5c3RlbSBzbGVlcCBz
dXBwb3J0LiAgKi8KKyAgU2V0VGhyZWFkRXhlY3V0aW9uU3RhdGVfZm4KKyAgICA9IChTZXRUaHJl
YWRFeGVjdXRpb25TdGF0ZV9Qcm9jKQorICAgIGdldF9wcm9jX2FkZHIgKGtlcm5lbDMyX2xpYiwK
KwkJICAgIlNldFRocmVhZEV4ZWN1dGlvblN0YXRlIik7CisgIFJlZ2lzdGVyU3VzcGVuZFJlc3Vt
ZU5vdGlmaWNhdGlvbl9mbgorICAgID0gKFJlZ2lzdGVyU3VzcGVuZFJlc3VtZU5vdGlmaWNhdGlv
bl9Qcm9jKQorICAgIGdldF9wcm9jX2FkZHIgKHVzZXIzMl9saWIsCisJCSAgICJSZWdpc3RlclN1
c3BlbmRSZXN1bWVOb3RpZmljYXRpb24iKTsKKwogICBTZXRHZXN0dXJlQ29uZmlnX2ZuCiAgICAg
PSAoU2V0R2VzdHVyZUNvbmZpZ19wcm9jKSBnZXRfcHJvY19hZGRyICh1c2VyMzJfbGliLAogCQkJ
CQkgICAgICJTZXRHZXN0dXJlQ29uZmlnIik7CmRpZmYgLS1naXQgYS9zcmMvdzMydGVybS5jIGIv
c3JjL3czMnRlcm0uYwppbmRleCAwOTFhMWZiZDVmMS4uNWI3ZDljNWYxN2QgMTAwNjQ0Ci0tLSBh
L3NyYy93MzJ0ZXJtLmMKKysrIGIvc3JjL3czMnRlcm0uYwpAQCAtODI0OSw2ICs4MjQ5LDcgQEAg
I2RlZmluZSBMT0FEX1BST0MobGliLCBmbikgcGZuIyNmbiA9ICh2b2lkICopIEdldFByb2NBZGRy
ZXNzIChsaWIsICNmbikKICAgfQogCiAgIHczMl9nZXRfbW91c2Vfd2hlZWxfdmVydGljYWxfZGVs
dGEgKCk7CisgIHczMl9yZWdpc3Rlcl9mb3Jfc2xlZXBfbm90aWZpY2F0aW9ucyAoKTsKIH0KIAog
dm9pZApkaWZmIC0tZ2l0IGEvc3JjL3czMnRlcm0uaCBiL3NyYy93MzJ0ZXJtLmgKaW5kZXggOTFk
YjBiNmUyNDkuLmNiOWQ1OTM3MWE0IDEwMDY0NAotLS0gYS9zcmMvdzMydGVybS5oCisrKyBiL3Ny
Yy93MzJ0ZXJtLmgKQEAgLTI3NCw2ICsyNzQsNyBAQCAjZGVmaW5lIENQX0RFRkFVTFQgMTAwNAog
ZXh0ZXJuIGZyYW1lX3Bhcm1faGFuZGxlciB3MzJfZnJhbWVfcGFybV9oYW5kbGVyc1tdOwogZXh0
ZXJuIHZvaWQgdzMyX2RlZmF1bHRfZm9udF9wYXJhbWV0ZXIgKHN0cnVjdCBmcmFtZSogZiwgTGlz
cF9PYmplY3QgcGFybXMpOwogZXh0ZXJuIExpc3BfT2JqZWN0IHczMl9wcm9jZXNzX2RuZF9kYXRh
IChpbnQgZm9ybWF0LCB2b2lkICpwRGF0YU9iaik7CitleHRlcm4gdm9pZCB3MzJfcmVnaXN0ZXJf
Zm9yX3NsZWVwX25vdGlmaWNhdGlvbnMoKTsKIAogDAogI2RlZmluZSBQSVhfVFlQRSBDT0xPUlJF
RgotLSAKMi41Mi4wCgo=
--0000000000009d9490064a51216a--
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.
Received: (at 80348) by debbugs.gnu.org; 8 Feb 2026 13:47:19 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 08 08:47:19 2026
Received: from localhost ([127.0.0.1]:49394 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vp588-000267-3B
for submit <at> debbugs.gnu.org; Sun, 08 Feb 2026 08:47:19 -0500
Received: from mail-vk1-xa2b.google.com ([2607:f8b0:4864:20::a2b]:61541)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <shipmints@HIDDEN>)
id 1vp584-00025f-CC
for 80348 <at> debbugs.gnu.org; Sun, 08 Feb 2026 08:47:14 -0500
Received: by mail-vk1-xa2b.google.com with SMTP id
71dfb90a1353d-5665171836cso2699472e0c.2
for <80348 <at> debbugs.gnu.org>; Sun, 08 Feb 2026 05:47:12 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; t=1770558431; cv=none;
d=google.com; s=arc-20240605;
b=dUPVEmjQUH7ySy2GcjMyNIzNz7uGvcr2dDTTu1/HeZ+H5BZCD9TycAklGjlQvN6ZGL
yNiNJ5mQUxGC1qqICyrPWuTSYubTIcti7SYpsiNDrjlREcYnfCnpp9XeiENrG3zVQ2Dy
f/o1QIGaRmT1mO7oT4fqE/0NJtLJ2WFqA20+GGzd5Dx5EL/DMIuBNwOp9abSFdo/gJ7x
LCVG159006IEErlGAYi/lBTpjGq+ucH7okDLjt4/aluiSP6PBZwVC3O9AEOTBfvHmvRA
JGpaE/eWAGTHkrKzm5/m0yqNjIMngQBl2Fx63sxpn8FdQfPly+ok5Eu3JCHw/XvEAxFF
sgig==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;
s=arc-20240605;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:dkim-signature;
bh=YLlLvywMS5KajKrATsBZCsKJFidajA6pHZOov5nRrqo=;
fh=bP0VyDsqA+zFy9X2Inx0Kbq28nJBzgIPGfdzDUR/TVQ=;
b=FPZizkahm6/kDppb8E7AdLhxMWO11AxgGtTaK6Y5uA0Wy8ZdjsXkgiMPComZbQku48
XJYJ8UzkWksG1mLVTI/UOfee6zcoRjXSbwc5P+3lmEVBa2CwKCpva6PBdRiv4WZYm/F/
UfDJs4utIzfbGJucxrCkeV+CFNadFznvbOmGTnXhjeYMkLcHG6SxUTJWSkXwqdHLCz2o
fECGeeb4HDfBh0m8ZUw5VTbPWBL2q6eoTFh6SIajm0yqs47DpF36QIZKPc/m/Kzs5B6P
FWervp0llZRFD3HUsirb9KuViHj8RHhT7uht9q6whVXpH3J3ezQuF4BnCu3Bi6fNKmQg
kQkQ==; darn=debbugs.gnu.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1770558431; x=1771163231; 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=YLlLvywMS5KajKrATsBZCsKJFidajA6pHZOov5nRrqo=;
b=ghxoToE3GbPqADGr0kRBb8NmiMeWaOBoOgrGX3wzXGDGOMfX4qKilkTsM1UrKX/nR5
wFk3ZpGnqJvwmmmTWi63KH4KQFX9Uc1icbs6abSn4+LxTWLjsUB7CitFnyk4rZLYUrx+
c4ZfnCl61LuMbRvhOBHKTOSHVMHJ6ryAps2d/4mmOwAFxS9k+kuwrKHv4auxx2wu4IIk
k8vvADpsN0glXrRgmX+eQpa8iWO5zUG595DhExnHBSUDzC5t/cIvmbF1F9dpFMg/Zfvd
kAD+O5mFVEcsf04Oyf9Y98hU70iQxOFL6n+0t85bpnnerG3XK8e3ZvznhpzrYKv66rZp
C08Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1770558431; x=1771163231;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=YLlLvywMS5KajKrATsBZCsKJFidajA6pHZOov5nRrqo=;
b=uUazmM7kHArPdgxEOpBXMKYpEUWFHN1X0YyfmNb1cCS+DrTlu34H90fRKWzQ97YTuM
W2MfGlUEL2SS6t4tz9u7QQHw+qIf7/4TC4e3mnNuQTYNHZ/LTXSpegvMurOHn6oJxKSk
iZhs42OgE2uTyp9IMkYgLUdGMdy+Oelyv1cofYTwre3aFHhFvyDMhtGFfNtigSxuLHdl
DuJSYoc6YCqv4OTAodmVUrkm8N+Ms7JWhCZ7aX5vqhmJkI2hs8Hmu8L1b8P5p2SkIYnA
kTx6+TOAexTuYjH/I4yPST2cQgbOhBeN3eKrfW39rFAGeu40yrTIR9l+789Lrihz27n4
6X0Q==
X-Forwarded-Encrypted: i=1;
AJvYcCU65SUJ3cwtirhK06mK71u0gQ7kGCBlmLEwGxjfbdhbmVwiA2oxpN53MHBtlAWEvmi+aqHCNQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yy4qQW0Nu0Yku2OFM6XHUhMM+Dd0SOyoeYTZk/LKzAPlJ351eqf
1RPBO42uj5JOWHetsZc3NGTN01Kk78KWyOh7G0iapbZKCktCjmYnPfJY8sPzjB6YGIvR0uaOYz7
iXvTrZRWFzPCa6ldDnJHeprnJpt5Gt1M=
X-Gm-Gg: AZuq6aJAK++egvUXWhgy1goeAKa8E9C8fyQhJAD6vpmTFQVdBRGZFAkVlnagySqArKd
+yrh8TPW4VU1sC/VUJBgAOO4S6q+niDzcYdahKxeNixYKR8EE6nSJ/uuE3z0Alb1EBadOZMznjj
DWqD5Fe3+twdK0KFa6KM2lljn36ykEwB68bDHE8YQ6RWECgC/QOU+NmgBSoIRvEsaRZbaGo7s56
NcpoeZ/F6igSxL63jhhOZhPO7uzF+vjQmUcAfs81h1ZDGMitLLFmg/5HZjhiMISd1lqnqVYRaVh
oqlRayAsO8uFXkMHKLpwArqzmzzbOIgZVHbmrWjTAoYJhxQPyhY=
X-Received: by 2002:a05:6102:3711:b0:5f5:4027:b6eb with SMTP id
ada2fe7eead31-5fae8cfa25fmr2393418137.45.1770558431492; Sun, 08 Feb 2026
05:47:11 -0800 (PST)
MIME-Version: 1.0
References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN>
<CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN>
<868qd4v36l.fsf@HIDDEN>
<CAN+1HbqdV2oXQjXi07X8hSgX9A_nYOD+rAWHqfm2XCAfxkNtTQ@HIDDEN>
<861pivvjxn.fsf@HIDDEN>
In-Reply-To: <861pivvjxn.fsf@HIDDEN>
From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>
Date: Sun, 8 Feb 2026 08:47:00 -0500
X-Gm-Features: AZwV_QjTem17zYr2ESZV-tGPfgCcSQNO3U1xuOquoGVDJy0utqsEGgR3RKwvToI
Message-ID: <CAN+1HbotFM1WiJSaX+n9qEgDpv91Y0Eg59C0UFK2egLEFOAAxQ@HIDDEN>
Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake
event package
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: multipart/alternative; boundary="0000000000005cfe20064a504219"
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 80348
Cc: acohen@HIDDEN, eric@HIDDEN, mail@HIDDEN,
Morgan.J.Smith@HIDDEN, michael.albinus@HIDDEN, monnier@HIDDEN,
80348 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 0.0 (/)
--0000000000005cfe20064a504219
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
On Sun, Feb 8, 2026 at 1:17=E2=80=AFAM Eli Zaretskii <eliz@HIDDEN> wrote:
> > From: St=C3=A9phane Marks <shipmints@HIDDEN>
> > Date: Sat, 7 Feb 2026 14:33:03 -0500
> > Cc: Stefan Monnier <monnier@HIDDEN>, 80348 <at> debbugs.gnu.org,
> acohen@HIDDEN,
> > mail@HIDDEN, eric@HIDDEN,
> michael.albinus@HIDDEN,
> > Morgan.J.Smith@HIDDEN
> >
> > > @cindex @code{sleep-event} event
> > > -@item (sleep-event @var{sleep-wake})
> > > -This event is injected when the device Emacs is running on enters o=
r
> > > -leaves the sleep state. A non-@code{nil} @var{sleep-wake} indicate=
s
> > > -entering the sleep state.
> > > +@item (sleep-event @var{state})
> > > +This event is injected when the device Emacs is running on is about
> to
> > > +enter a sleep state, or has just awoken from one. @var{state} will
> be
> > > +the symbol @code{pre-sleep} or @code{post-wake}.
> >
> > Why did you need to make this incompatible change? Was there a
> > problem leaving the values and meaning of the parameter as they were
> > before? AFAIU, there are still only two possible values, so nil and
> > non-nil should still do the job, no?
> >
> > sleep-event was created by Michael specifically for this feature (thoug=
h
> we stopped working on it a while ago
> > and I just picked it back up) so it is purely new and can't be
> incompatible since it's never been published. When
> > originally contemplated, it was D-Bus only which uses a somewhat opaque
> true/false PrepareForSleep value. I
> > prefer using symbols because it allows expansion into pre-shutdown and
> perhaps other related states that
> > might be of interest that won't fit into a boolean.
>
> It is impossible to discuss hypothetical future changes without
> specifics. If you have plans or ideas for adding values, let's hear
> them now, because it could be that there will be comments and
> alternative suggestions for how to extend this in the future and which
> values to have there for now. Alternatively (and from my POV
> preferably) we could just leave the boolean value there for now, and
> defer the changes for when (and if) we have the other possibilities.
>
> Btw, no one said that the set of values cannot include nil, t, and
> some other non-nil values, when we decide to have more than just two.
> By contrast, having just two non-nil values always raises a brow.
>
I feel the opposite and I'd prefer to keep the more expressive names. This
makes grepping through the code base for event references easier and makes
hook function implementations self documenting.
> > +(defcustom sleep-event-functions nil
> > ^^^^^^^^^^^^^^^^^^^^^
> > The manual said "system-sleep-event-functions".
> >
> > I think you're referring to bindings.el which is a hook for the event
> pump itself. We will discourage people from
> > using it but as there can be only one callback per event handler,
> Michael and I thought it was wise to add a
> > hook.
>
> I asked below why do we need two hooks which are similarly named, but
> use different functions. After re-reading the code, my understanding
> is as follows:
>
> . the sleep event is by default bound to sleep-event-handler
> . sleep-event-handler does nothing except running the
> sleep-event-functions nook
> . sleep-event-functions hook is nil by default, but can be
> customized by users to add their functions
> . loading system-sleep adds its own hook,
> system-sleep--sleep-event-function, to sleep-event-functions
> . system-sleep--sleep-event-function calls the
> system-sleep-event-functions hook with each sleep event
> . system-sleep-event-functions is a user option which by default
> does nothing
>
> Is that correct? If so, isn't that too complicated? Why cannot we
> have sleep-event-handler process the events directly and call a hook,
> like other special-event handlers do? And why does loading
> system-sleep have to add functions to hooks which are user options?
>
Now eliminated. All sleep-events will be pumped directly into system-sleep=
.
> > +(require 'dbus)
> >
> > Shouldn't we load dbus only on systems where DBus is supported?
> >
> > We didn't in system-taskbar but I can try to amend both and make it a
> compile-time only require up there and
> > require it explicitly in the dbus implementation.
>
> I think loading dbus when it is not supported or needed should be
> avoided.
>
I will submit a follow-up patch to system-taskbar doing the same thing.
> > +(defgroup system-sleep nil
> > > + "System sleep/wake blocking and event management."
> > > + :group 'convenience
> >
> > Why "convenience"? Isn't there a better parent group to use? And if
> > there isn't a better one, how about adding such a group?
> > system-interface sounds good, for example.
> >
> > No idea. All ears for one of the keywords that makes more sense. I
> thought there were discussions about the
> > state of affairs of keywords and I thought it wise to reuse.
>
> I suggested a keyword above.
>
As I said, I was trying to avoid adding yet more keywords. In this case,
it seems like one for the ages and a nice clean one.
I will adopt system-interface. I will submit a follow-up patch to
system-taskbar doing the same thing.
> > > + (if (memq token system-sleep--sleep-block-tokens)
> > > + (progn
> > > + (setq system-sleep--sleep-block-tokens
> > > + (remq token system-sleep--sleep-block-tokens))
> > > + (if (w32-unblock-system-sleep)
> > > + t
> > > + (warn "Unable to unblock system sleep")
> >
> > If and when this warning is issued, AFAIU it means that the sleep is
> > blocked, but the token of its blocker is lost forever, because it was
> > already removed from the list.
> >
> > If the native APIs fail here (which on ns can only fail if it doesn't
> know the token passed to it, and w32 can't fail),
> > the token is useless anyway.
>
> Sorry, I don't follow. First, this is only about w32 (I'm not
> familiar with NS APIs you use and on't know if they can fail). And
> second, the documentation of SetThreadExecutionState definitely says
> that it can fail: it returns zero if that happens.
>
Done in the most recent patch.
> What then the user could do to fix
> > this situation? Will, for example, killing Emacs do that?
> >
> > When the Emacs process dies, blocks are released on all platforms. I
> mentioned this in the code and in the
> > documentation.
>
> Maybe the warning message and/or the doc string should mention that?
>
Done.
> We could instead mandate system-sleep as the only place to get
> > and process sleep events, get rid of this hook and do this in
> system-sleep (keymap-set special-event-map
> > "<sleep-event>" #'system-sleep--sleep-event-handler)
>
> See above. Yes, I think the arrangement with two hooks that are user
> options is too complicated.
>
Done.
> > +/* We assume SetThreadExecutionState is always available, being
> Windows
> > > + XP+. RegisterSuspendResumeNotification is Windows 8+ so we look
> this
> > > + up. */
> >
> > We don't yet require Windows XP for the Windows builds of Emacs, so
> > SetThreadExecutionState must also be loaded dynamically from its DLL.
> >
> > I'll do that. I actually do not know the minimum version of Windows
> that Emacs supports and I assumed it was
> > at least XP.
>
> No, we definitely support W2K, and hope that support for Windows 9X
> (98 and Me) is not yet totally dead, although it's been a while since
> anyone reported any experience from those systems.
>
Done in the most recent patch.
> Also, shouldn't this return nil if the call to SetThreadExecutionState
> > failed?
> >
> > Done. I could find no evidence of how SetThreadExecutionState can fail
> so I didn't bother. I will do this to be
> > complete.
>
> See above: the MS documentation clearly describes what happens if it
> fails.
>
Done in the most recent patch.
> And I'm not sure I understand the effect of calling
> > w32-block-system-sleep several times without calling
> > w32-unblock-system-sleep. It isn't like the OS counts the number of
> > callers and handles this as a reference count, which must be zero for
> > the system to be able to sleep, right?
> >
> > The idea is that packages like gnus and compile and the user's own code
> will all take blocks simultaneously so
> > they each need to take and release their locks. Each unblock call
> decrements the count and when 0 we
> > unblock the system for real. We manually emulate what Windows could
> have done for us and keep a count and
> > assign an id to keep the platform implementations sufficiently alike to
> make the ELisp interface pleasant.
>
> OK, but then the condition for unblocking:
>
> > + /* One fewer block. */
> > + if (--sleep_block_count =3D=3D 0
> > + && sleep_block_execution_state)
> > + sleep_block_execution_state =3D
> > + SetThreadExecutionState (sleep_block_execution_state
> > + & ~(ES_DISPLAY_REQUIRED |
> ES_SYSTEM_REQUIRED));
>
> worries me, because it relies on the value of
> sleep_block_execution_state, which is overwritten upon each call to
> SetThreadExecutionState. Why do we need to depend on that value?
>
I'll take another look at this. If this is the only code and the only
place this gets called, we have complete control over the values and can
overwrite them.
> > +DEFUN ("w32-unblock-system-sleep",
> > > + Fw32_unblock_system_sleep,
> > > + Sw32_unblock_system_sleep,
> > > + 0, 0, 0,
> > > + doc: /* Unblock system idle sleep.
> > > +Return non-nil if the TOKEN block was unblocked. */)
> > > + (void)
> > > +{
> > > + /* No blocks to unblock. */
> > > + if (sleep_block_count =3D=3D 0)
> > > + return Qnil;
> >
> > This seems wrong: why indicate failure in this trivial case?
> >
> > We can go either way on this. I thought it prudent to indicate failure
> for any debugging scenarios we might
> > encounter in the wild.
>
> But it isn't a failure, is it? It is okay to call unblock when no one
> called block, right?
>
Well, if one calls the function with a token and there are no tokens then
technically the provided token was not unblocked.
In Lisp, I will first query the counter and call the native unblock only if
the counter is not zero. This will avoid interpreting no tokens to unblock
as a failure and no harm otherwise. I can still change the native code to
return t if we really want to represent that it did something that it
didn't do.
> > + /* System sleep support. */
> > > + DEFSYM (Qpre_sleep, "pre-sleep");
> > > + DEFSYM (Qpost_wake, "post-wake");
> >
> > These symbols should be defined in one place and only once, not
> > separately for each system. (And I hope we won't need them at all,
> > see above.)
> >
> > Where would you like them to be defined?
>
> It doesn't matter. fns.c, perhaps, or data.c.
>
Alright, let's see where the debate between symbols and nil/t wind up.
Thanks, again, for the thoughtful comments.
-St=C3=A9phane
--0000000000005cfe20064a504219
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon=
t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">=
On Sun, Feb 8, 2026 at 1:17=E2=80=AFAM Eli Zaretskii <<a href=3D"mailto:=
eliz@HIDDEN">eliz@HIDDEN</a>> wrote:</span></div></div><div class=3D"g=
mail_quote gmail_quote_container"><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex">> From: St=C3=A9phane Marks <<a href=3D"mailto:shipmints@g=
mail.com" target=3D"_blank">shipmints@HIDDEN</a>><br>
> Date: Sat, 7 Feb 2026 14:33:03 -0500<br>
> Cc: Stefan Monnier <<a href=3D"mailto:monnier@HIDDEN" tar=
get=3D"_blank">monnier@HIDDEN</a>>, <a href=3D"mailto:80348@de=
bbugs.gnu.org" target=3D"_blank">80348 <at> debbugs.gnu.org</a>, <a href=3D"mail=
to:acohen@HIDDEN" target=3D"_blank">acohen@HIDDEN</a>, <br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0<a href=3D"mailto:mail@HIDDEN" ta=
rget=3D"_blank">mail@HIDDEN</a>, <a href=3D"mailto:eric@ericabra=
hamsen.net" target=3D"_blank">eric@HIDDEN</a>, <a href=3D"mailt=
o:michael.albinus@HIDDEN" target=3D"_blank">michael.albinus@HIDDEN</a>, <br=
>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0<a href=3D"mailto:Morgan.J.Smith@HIDDEN=
" target=3D"_blank">Morgan.J.Smith@HIDDEN</a><br>
> <br>
>=C2=A0 >=C2=A0 @cindex @code{sleep-event} event<br>
>=C2=A0 > -@item (sleep-event @var{sleep-wake})<br>
>=C2=A0 > -This event is injected when the device Emacs is running on=
enters or<br>
>=C2=A0 > -leaves the sleep state.=C2=A0 A non-@code{nil} @var{sleep-=
wake} indicates<br>
>=C2=A0 > -entering the sleep state.<br>
>=C2=A0 > +@item (sleep-event @var{state})<br>
>=C2=A0 > +This event is injected when the device Emacs is running on=
is about to<br>
>=C2=A0 > +enter a sleep state, or has just awoken from one.=C2=A0 @v=
ar{state} will be<br>
>=C2=A0 > +the symbol @code{pre-sleep} or @code{post-wake}.<br>
> <br>
>=C2=A0 Why did you need to make this incompatible change?=C2=A0 Was the=
re a<br>
>=C2=A0 problem leaving the values and meaning of the parameter as they =
were<br>
>=C2=A0 before?=C2=A0 AFAIU, there are still only two possible values, s=
o nil and<br>
>=C2=A0 non-nil should still do the job, no?<br>
> <br>
> sleep-event was created by Michael specifically for this feature (thou=
gh we stopped working on it a while ago<br>
> and I just picked it back up) so it is purely new and can't be inc=
ompatible since it's never been published.=C2=A0 When<br>
> originally contemplated, it was D-Bus only which uses a somewhat opaqu=
e true/false PrepareForSleep value.=C2=A0 I<br>
> prefer using symbols because it allows expansion into pre-shutdown and=
perhaps other related states that<br>
> might be of interest that won't fit into a boolean.<br>
<br>
It is impossible to discuss hypothetical future changes without<br>
specifics.=C2=A0 If you have plans or ideas for adding values, let's he=
ar<br>
them now, because it could be that there will be comments and<br>
alternative suggestions for how to extend this in the future and which<br>
values to have there for now.=C2=A0 Alternatively (and from my POV<br>
preferably) we could just leave the boolean value there for now, and<br>
defer the changes for when (and if) we have the other possibilities.<br>
<br>
Btw, no one said that the set of values cannot include nil, t, and<br>
some other non-nil values, when we decide to have more than just two.<br>
By contrast, having just two non-nil values always raises a brow.<br></bloc=
kquote><div><br></div><div><div class=3D"gmail_default" style=3D"font-famil=
y:monospace">I feel the=C2=A0opposite and I'd prefer to keep the more e=
xpressive names.=C2=A0 This makes grepping through the code base for event =
references easier and makes hook function implementations self documenting.=
</div></div><div class=3D"gmail_default" style=3D"font-family:monospace"><b=
r></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex=
;border-left:1px solid rgb(204,204,204);padding-left:1ex">
>=C2=A0 > +(defcustom sleep-event-functions nil<br>
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ^^^^^^^^^^^^^^^=
^^^^^^<br>
>=C2=A0 The manual said "system-sleep-event-functions".<br>
> <br>
> I think you're referring to bindings.el which is a hook for the ev=
ent pump itself.=C2=A0 We will discourage people from<br>
> using it but as there can be only one callback per event handler, Mich=
ael and I thought it was wise to add a<br>
> hook. <br>
<br>
I asked below why do we need two hooks which are similarly named, but<br>
use different functions.=C2=A0 After re-reading the code, my understanding<=
br>
is as follows:<br>
<br>
=C2=A0 . the sleep event is by default bound to sleep-event-handler<br>
=C2=A0 . sleep-event-handler does nothing except running the<br>
=C2=A0 =C2=A0 sleep-event-functions nook<br>
=C2=A0 . sleep-event-functions hook is nil by default, but can be<br>
=C2=A0 =C2=A0 customized by users to add their functions<br>
=C2=A0 . loading system-sleep adds its own hook,<br>
=C2=A0 =C2=A0 system-sleep--sleep-event-function, to sleep-event-functions<=
br>
=C2=A0 . system-sleep--sleep-event-function calls the<br>
=C2=A0 =C2=A0 system-sleep-event-functions hook with each sleep event<br>
=C2=A0 . system-sleep-event-functions is a user option which by default<br>
=C2=A0 =C2=A0 does nothing<br>
<br>
Is that correct?=C2=A0 If so, isn't that too complicated?=C2=A0 Why can=
not we<br>
have sleep-event-handler process the events directly and call a hook,<br>
like other special-event handlers do?=C2=A0 And why does loading<br>
system-sleep have to add functions to hooks which are user options?<br></bl=
ockquote><div><br></div><div><div class=3D"gmail_default" style=3D"font-fam=
ily:monospace">Now eliminated.=C2=A0 All sleep-events will be pumped direct=
ly into system-sleep.</div></div><div><br></div><blockquote class=3D"gmail_=
quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,=
204);padding-left:1ex">
>=C2=A0 > +(require 'dbus)<br>
> <br>
>=C2=A0 Shouldn't we load dbus only on systems where DBus is support=
ed?<br>
> <br>
> We didn't in system-taskbar but I can try to amend both and make i=
t a compile-time only require up there and<br>
> require it explicitly in the dbus implementation.<br>
<br>
I think loading dbus when it is not supported or needed should be<br>
avoided.<br></blockquote><div><br></div><div><div class=3D"gmail_default" s=
tyle=3D"font-family:monospace">I will submit a follow-up patch to system-ta=
skbar doing the same thing.</div></div><div><br></div><blockquote class=3D"=
gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(20=
4,204,204);padding-left:1ex">
>=C2=A0 > +(defgroup system-sleep nil<br>
>=C2=A0 > +=C2=A0 "System sleep/wake blocking and event manageme=
nt."<br>
>=C2=A0 > +=C2=A0 :group 'convenience<br>
> <br>
>=C2=A0 Why "convenience"?=C2=A0 Isn't there a better pare=
nt group to use?=C2=A0 And if<br>
>=C2=A0 there isn't a better one, how about adding such a group?<br>
>=C2=A0 system-interface sounds good, for example.<br>
> <br>
> No idea. All ears for one of the keywords that makes more sense.=C2=A0=
I thought there were discussions about the<br>
> state of affairs of keywords and I thought it wise to reuse.<br>
<br>
I suggested a keyword above.<br></blockquote><div><br></div><div><span clas=
s=3D"gmail_default" style=3D"font-family:monospace">As I said, I was trying=
to avoid adding yet more keywords.=C2=A0 In this case, it seems like one f=
or the=C2=A0ages and a nice clean one.</span></div><div><span class=3D"gmai=
l_default" style=3D"font-family:monospace"><br></span></div><div><font face=
=3D"monospace"><span class=3D"gmail_default" style=3D"">I will adopt system=
-interface.=C2=A0=C2=A0</span>I will submit a follow-up patch to system-tas=
kbar doing the same thing.<br></font></div><div>=C2=A0</div><blockquote cla=
ss=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid =
rgb(204,204,204);padding-left:1ex">
>=C2=A0 > +=C2=A0 (if (memq token system-sleep--sleep-block-tokens)<b=
r>
>=C2=A0 > +=C2=A0 =C2=A0 =C2=A0 (progn<br>
>=C2=A0 > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq system-sleep--sleep-bloc=
k-tokens<br>
>=C2=A0 > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (remq tok=
en system-sleep--sleep-block-tokens))<br>
>=C2=A0 > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (if (w32-unblock-system-sleep)=
<br>
>=C2=A0 > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 t<br>
>=C2=A0 > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (warn "Unable to u=
nblock system sleep")<br>
> <br>
>=C2=A0 If and when this warning is issued, AFAIU it means that the slee=
p is<br>
>=C2=A0 blocked, but the token of its blocker is lost forever, because i=
t was<br>
>=C2=A0 already removed from the list.<br>
> <br>
> If the native APIs fail here (which on ns can only fail if it doesn=
9;t know the token passed to it, and w32 can't fail),<br>
> the token is useless anyway.<br>
<br>
Sorry, I don't follow.=C2=A0 First, this is only about w32 (I'm not=
<br>
familiar with NS APIs you use and on't know if they can fail).=C2=A0 An=
d<br>
second, the documentation of SetThreadExecutionState definitely says<br>
that it can fail: it returns zero if that happens.<br></blockquote><div><br=
></div><div><div class=3D"gmail_default" style=3D"font-family:monospace">Do=
ne in the most recent patch.</div></div><div><br></div><blockquote class=3D=
"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(2=
04,204,204);padding-left:1ex">
>=C2=A0 What then the user could do to fix<br>
>=C2=A0 this situation?=C2=A0 Will, for example, killing Emacs do that?<=
br>
> <br>
> When the Emacs process dies, blocks are released on all platforms.=C2=
=A0 I mentioned this in the code and in the<br>
> documentation.<br>
<br>
Maybe the warning message and/or the doc string should mention that?<br></b=
lockquote><div><br></div><div class=3D"gmail_default" style=3D"font-family:=
monospace">Done.</div><div class=3D"gmail_default" style=3D"font-family:mon=
ospace"><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px=
0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> We could instead mandate system-sleep as the only place to get<br>
> and process sleep events, get rid of this hook and do this in system-s=
leep (keymap-set special-event-map<br>
> "<sleep-event>" #'system-sleep--sleep-event-handle=
r)<br>
<br>
See above.=C2=A0 Yes, I think the arrangement with two hooks that are user<=
br>
options is too complicated.<br></blockquote><div><br></div><div class=3D"gm=
ail_default" style=3D"font-family:monospace">Done.</div><div class=3D"gmail=
_default" style=3D"font-family:monospace"><br></div><blockquote class=3D"gm=
ail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,=
204,204);padding-left:1ex">
>=C2=A0 > +/* We assume SetThreadExecutionState is always available, =
being Windows<br>
>=C2=A0 > +=C2=A0 =C2=A0XP+.=C2=A0 RegisterSuspendResumeNotification =
is Windows 8+ so we look this<br>
>=C2=A0 > +=C2=A0 =C2=A0up.=C2=A0 */<br>
> <br>
>=C2=A0 We don't yet require Windows XP for the Windows builds of Em=
acs, so<br>
>=C2=A0 SetThreadExecutionState must also be loaded dynamically from its=
DLL.<br>
> <br>
> I'll do that.=C2=A0 I actually do not know the minimum version of =
Windows that Emacs supports and I assumed it was<br>
> at least XP.<br>
<br>
No, we definitely support W2K, and hope that support for Windows 9X<br>
(98 and Me) is not yet totally dead, although it's been a while since<b=
r>
anyone reported any experience from those systems.<br></blockquote><div><br=
></div><div><div class=3D"gmail_default" style=3D"font-family:monospace">Do=
ne in the most recent patch.</div></div><div><br></div><blockquote class=3D=
"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(2=
04,204,204);padding-left:1ex">
>=C2=A0 Also, shouldn't this return nil if the call to SetThreadExec=
utionState<br>
>=C2=A0 failed?<br>
> <br>
> Done.=C2=A0 I could find no evidence of how SetThreadExecutionState ca=
n fail so I didn't bother.=C2=A0 I will do this to be<br>
> complete.<br>
<br>
See above: the MS documentation clearly describes what happens if it<br>
fails.<br></blockquote><div><br></div><div><div><div class=3D"gmail_default=
" style=3D"font-family:monospace">Done in the most recent patch.</div></div=
><div><br></div></div><blockquote class=3D"gmail_quote" style=3D"margin:0px=
0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
>=C2=A0 And I'm not sure I understand the effect of calling<br>
>=C2=A0 w32-block-system-sleep several times without calling<br>
>=C2=A0 w32-unblock-system-sleep.=C2=A0 It isn't like the OS counts =
the number of<br>
>=C2=A0 callers and handles this as a reference count, which must be zer=
o for<br>
>=C2=A0 the system to be able to sleep, right?<br>
> <br>
> The idea is that packages like gnus and compile and the user's own=
code will all take blocks simultaneously so<br>
> they each need to take and release their locks.=C2=A0 Each unblock cal=
l decrements the count and when 0 we<br>
> unblock the system for real.=C2=A0 We manually emulate what Windows co=
uld have done for us and keep a count and<br>
> assign an id to keep the platform implementations sufficiently alike t=
o make the ELisp interface pleasant.<br>
<br>
OK, but then the condition for unblocking:<br>
<br>
> +=C2=A0 /* One fewer block.=C2=A0 */<br>
> +=C2=A0 if (--sleep_block_count =3D=3D 0<br>
> +=C2=A0 =C2=A0 =C2=A0 && sleep_block_execution_state)<br>
> +=C2=A0 =C2=A0 sleep_block_execution_state =3D<br>
> +=C2=A0 =C2=A0 =C2=A0 SetThreadExecutionState (sleep_block_execution_s=
tate<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 & ~(ES_DISPLAY_REQUIRED | ES_SYSTEM_REQUIR=
ED));<br>
<br>
worries me, because it relies on the value of<br>
sleep_block_execution_state, which is overwritten upon each call to<br>
SetThreadExecutionState.=C2=A0 Why do we need to depend on that value?<br><=
/blockquote><div><br></div><div><div class=3D"gmail_default" style=3D"font-=
family:monospace">I'll take another look at this.=C2=A0 If this is the =
only code and the only place this gets called, we have complete control ove=
r the values and can overwrite them.=C2=A0</div></div><div><br></div><block=
quote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1=
px solid rgb(204,204,204);padding-left:1ex">
>=C2=A0 > +DEFUN ("w32-unblock-system-sleep",<br>
>=C2=A0 > +=C2=A0 =C2=A0 =C2=A0 =C2=A0Fw32_unblock_system_sleep,<br>
>=C2=A0 > +=C2=A0 =C2=A0 =C2=A0 =C2=A0Sw32_unblock_system_sleep,<br>
>=C2=A0 > +=C2=A0 =C2=A0 =C2=A0 =C2=A00, 0, 0,<br>
>=C2=A0 > +=C2=A0 =C2=A0 =C2=A0 =C2=A0doc: /* Unblock system idle sle=
ep.<br>
>=C2=A0 > +Return non-nil if the TOKEN block was unblocked.=C2=A0 */)=
<br>
>=C2=A0 > +=C2=A0 (void)<br>
>=C2=A0 > +{<br>
>=C2=A0 > +=C2=A0 /* No blocks to unblock.=C2=A0 */<br>
>=C2=A0 > +=C2=A0 if (sleep_block_count =3D=3D 0)<br>
>=C2=A0 > +=C2=A0 =C2=A0 return Qnil;<br>
> <br>
>=C2=A0 This seems wrong: why indicate failure in this trivial case?<br>
> <br>
> We can go either way on this.=C2=A0 I thought it prudent to indicate f=
ailure for any debugging scenarios we might<br>
> encounter in the wild.<br>
<br>
But it isn't a failure, is it?=C2=A0 It is okay to call unblock when no=
one<br>
called block, right?<br></blockquote><div><br></div><div><div class=3D"gmai=
l_default" style=3D"font-family:monospace">Well, if one calls the function =
with a token and there are no tokens then technically the provided token wa=
s not unblocked.</div></div><div><br></div><div><div class=3D"gmail_default=
" style=3D""><font face=3D"monospace">In Lisp, I will first query the count=
er and call the native unblock only if the counter is not zero.=C2=A0 This =
will avoid interpreting no tokens to unblock as a failure and no harm other=
wise.=C2=A0 I can still change the native code to return t if we really wan=
t to represent that it did something that it didn't do.</font></div><di=
v class=3D"gmail_default" style=3D""><br></div></div><blockquote class=3D"g=
mail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204=
,204,204);padding-left:1ex">
>=C2=A0 > +=C2=A0 /* System sleep support.=C2=A0 */<br>
>=C2=A0 > +=C2=A0 DEFSYM (Qpre_sleep, "pre-sleep");<br>
>=C2=A0 > +=C2=A0 DEFSYM (Qpost_wake, "post-wake");<br>
> <br>
>=C2=A0 These symbols should be defined in one place and only once, not<=
br>
>=C2=A0 separately for each system.=C2=A0 (And I hope we won't need =
them at all,<br>
>=C2=A0 see above.)<br>
> <br>
> Where would you like them to be defined?<br>
<br>
It doesn't matter.=C2=A0 fns.c, perhaps, or data.c.<br></blockquote><di=
v><br></div><div><div class=3D"gmail_default" style=3D"font-family:monospac=
e">Alright, let's see where the debate between symbols and nil/t wind u=
p.</div><br></div><div><div class=3D"gmail_default" style=3D"font-family:mo=
nospace">Thanks, again, for the thoughtful comments.</div></div><div><br></=
div><div><div class=3D"gmail_default" style=3D"font-family:monospace">-St=
=C3=A9phane</div></div></div></div>
--0000000000005cfe20064a504219--
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.Received: (at 80348) by debbugs.gnu.org; 8 Feb 2026 13:25:24 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 08 08:25:24 2026 Received: from localhost ([127.0.0.1]:49177 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vp4mx-0000C2-7y for submit <at> debbugs.gnu.org; Sun, 08 Feb 2026 08:25:24 -0500 Received: from mout.gmx.net ([212.227.17.21]:59563) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <michael.albinus@HIDDEN>) id 1vp4mt-0000Aa-L4 for 80348 <at> debbugs.gnu.org; Sun, 08 Feb 2026 08:25:21 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1770557080; x=1771161880; i=michael.albinus@HIDDEN; bh=Q9Xxg0Kdt/hIpts3/NP4/gtKW3Ju9YQ9tozSE1LB0j8=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date: Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=D3uKKs+yyk+XcmevEEhCt1OkkqynHpiabTbLDr6/h61azTuEJERndPh8cBa1Qfq2 0KZtYENjxApy+Ly9ltoj18L+eqifySmfe2ehPnf5hQ89wYZO+/0xf1tdAe5tJHND+ XgVmI0nw2gHzn1vvt+lSq1sKrax/TFerrdljYZkVEv9RTP6ZKx6HcK52RiAhyprZl vKz3pASCb6pYAq+ODSYsuqYrSWaA6KyOux+iZ4V89nVU45zRkdKEr7+DCvfY7O3H0 8Xl8dzaWop0VhDbpmOiGKiBuhMtjJMF/FXViCUqtj2f3tEKugpW7mjN7t3shK5BKV PeglBXx/YBXCoWvzIQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from gandalf.gmx.de ([185.89.39.12]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MUosT-1wFr0T2vpp-00MwDG; Sun, 08 Feb 2026 14:24:40 +0100 From: Michael Albinus <michael.albinus@HIDDEN> To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN> Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake event package In-Reply-To: <CAN+1HbpRKSnAx60Kai8rZDUof+3EybtKU4kLR-umGumbeeWZeg@HIDDEN> References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN> <CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN> <87tsvscsmj.fsf@HIDDEN> <CAN+1Hbr-2-StXvCR_5BH++gZWch7Pgx97HNK-n7rG_d3aDUaNw@HIDDEN> <87jywnd2uj.fsf@HIDDEN> <CAN+1HbpRKSnAx60Kai8rZDUof+3EybtKU4kLR-umGumbeeWZeg@HIDDEN> Date: Sun, 08 Feb 2026 14:24:39 +0100 Message-ID: <87y0l3mkq0.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:1nLQaL7ptaB/Q1EhSQ9sPXWSpIDh9JSnm72CYAxAn2ahy6NMThr LXMdXj+euPBYPE9mKukM0BVue4g6wCv3r6+7EuqbBUem22BT3fgwgQQSGuQIRh0urS4hikp iPQwmhex13WCyzr8JPBGma5uK+alpYl1ElQUvMyHnqIm2NGCbbsa+YdZ+qmWMy/y5mLlVsy u9i5dwCk9LlcWG32biooA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:XK1gACR81NM=;wsE9s72e1fEmBN/al3O1sQLG6mq 1NT3lLR1Q9gc1MaKGoQue4c3cXqK3s/CI1wo4K47WtfT2z/A2DjQ57Gz98x8ZTdDd6OLzCKSl IcjdXW3NpL/WUYLZFjbwGjmNh2JZckhXALrO2sGUMUioEZD5bJpJX3Lt/rM6AqQ3emal2C2Lt MnMpFUUofX6Cjqb1Hiw7oRwlPvHfkTfSFF7Q0rsZXTV1WRikliXcROp/CdNuQ3UVuh+dVXrom DXvt81USjnMBpVFGVCuv6aaLOM3ZVJFrmPPjYVTb7BQe0FcL2yk7A5MTNnvAWLmxTqgpCKpMy ADeWnyyP7LkY3yYLDIgUsG2IvUHVJorUUBuaCiorXcHv0e2XzCkUB9sNPbIKUMK74HQQooimg LkVIPJHdmJKkRID5mmfU9fiMhU3++bASYNOBJFiuMGLSvkJNrP9tb0sBVCwWssY1XwlTvBRM2 43XmgaaeZ19+Xug++phbBluHdVGl8z1j3Er+rybkBv09i5E0jgZWaRM1GIdxZByXuh7lq8FdE Qg64UZ8ie06kA1diAMYTN2GKAaFQKXVmxGyB9a+b5CGLEcWkpVGvcITeHyr7vUdY9/BxMzM5n JleFAwPOAo5GRqDpshKOWlKXglocbypnog5fTJDV2AM9iVWp8voYxa1PepyQyOOLFphcIaAfT urL1ItdrtJUaHreM+P9CnQ5BE9ZnO1NzyszhKKGC0uqd+KZi/otkzRmL/z7mcQMjw5BuYYoWg KhyTPA7B5QkX0IYHqHzZ7zxzqvmwJrjOL8rA06nVfy6Ia3H7//K/atc0f0IuQXJdxt1K0tWWI K97xM54OU0f7EV+hnO7kfVjJHsaOwNj4FBN8oWYJOp25fkjqCmUNIukyec3NO17ZUmoDsfEkO aHj3u5hyRdGZBKNyagy4kfLkvNP+lzwhykAjL9RhLehdcnPkxlCvY+Q5NsN5bGgP4JXRDry3Q VD3cwK3N/ym7qFkST0sGSK3rDClnCjBzb3h62XMNzChobJxxasqMpfqD1leWuXprb3hwe4YQz VK4P1Kv1ddLBfTDOPhodzjuLst33Gf638QoOVKDwai6fUHIUF9jCkO2tjG/twQDFrb/nmKY67 98kwGTjOYJgXT7u4IGY2Qw7MAu1EF397yGGxTpZmzNPo/B+3JtZDFXZzKzQ7RI9uO/3h6ZXhF Ee7RlDwFfhk6uOjyLTBX2y+KXGqN7FVXV6hnjw1DHM2c8hv3JWrKYDCUvqRjcU/EiN5iZkjYi Pq4k9JMRvlM6lYZELPvIjp3kSduP26c58YRFSiQPXu4NCcVsigcdrXtJ1ACDnZnrUpYiixdz0 +uVBHOVOyy1GusU9CLK1xYtqVqfy/0MqmPJ9iFDbDCmi8JqUmIM5S20IPrCmqmRLhe3NMcZPC VZSge5NRXddQyuXsG01dDUeVrHvMvvIWgNmI+mym2aGIEbXalDT5veL77rtWFALKwT3LhBKHB K054/2MUrrqU7VYwELUIstS6Wj27800WzLDPKjUNGy3szJY/qHesuxgMW1hsLkQ0LBMuVgyZv lfe+oE41vcyj2qjxOo8ows/KBVv15QYJfL1rh7qr8WAMuNP2v52qqRbfdm1wLF64QZj6zHKs8 fooYsYLRTyXFDNVlPn0LUAsjuvtT4E6FBdcQ+//bLRBcpXgtix7qE8SqE1HHoxTH5TuO1TLAk SPpPpc6Q4lTXcvK+gGTHq94DOqUDOtEKimiDajYfpW/N/57yQMLs79x7odQYEGCFMwW1Ju4wG 232mQeVAg/7rpI86+Tjzz+CxgoJqigMirJ4qDr5kEEiEos3BuOy1RUKY2viJuH4GG/oaRP/jy qFH0ETWPhc2tRHcrNldefGjvPftmC2ctBoNG6BUq7opoUsT4Ie9HfR+PgOwcLAgwZbeztvLYH cxKLX+Cpjktgd128n1pRyoKsdEYIiHN3fsWczaZfBY13AgwGEVPJ+asv9oIka6H/7n2PKm9kG EIM+4u9MqmCwmX92Gw+PRi7khMIveeegRaZmibQs3oQ2U9Y3V8TZf41ImDYpDT3I4dcSKeyW7 4l0BHS4wbTNLCBonvTJzRrXhlYi32PK1/LsY9zl48RN9VJvkOHw29ZnYcCDK3vbbXTSPaLbVH F5r4koNb+k4rkuW7w0wK3y4rcJbQcV+46Zjq6b7C2WX15lZ7TVhVmG+aPE38QCAEJ2OYGofJL 2kwlDbB+2/GyixZP/ttVy4Bkv8nT8Aqq5rprGyCpJWJ5X/QV2ntWctCMerNSgWEAOl9T9US+j +knj6nRgkkmel3iG3SLaO2ZmEZ6hkq9xxGMw76eFUiP9xosplLkuzq3iD2v4j1ow30Ir46ZVr fNQsqSspH4cysPA8qjZzjXhvz2WAhHqGVmuxy5PSebzmEX4EXT/ik84t+a1GYM/mEfqaugXnk v9GDGWZwaJjfF14wx0pdffh25fO4yVcw5SRXLwX4sbwsfX2UIMR4VMCgwODdrqQzaK1Q99YdS WCR1x7jq2jM6qUs9cvQlcfuOuoZw+8yEPrq4Q2JvZcwYIdfFxc7haQvr3jRTlQXEmqyKDP1jV 3TnfQ9zZLI3x7FlExL0GnznPgnR4fy9nNvYkMf7OT5qrwGpGzVu1AsOzWoOkse7sdU+fcDWVN 5nYdF+t6IuotwjvTH8gnliSO/uCW3mOcEi3TT9HlXBrBUHDaiGUkJRthFFLUVushvMvyE/7rf k3qkH1np2OLO9GEhykPZF8GF0cYVjBdJMJwtGSny+WOWDMphu6GOnpZbOPOWVVkrqM66ycHbF Cbe0zUQqFH8x/mpnyadoUaA6Wnj3sY0axYH5em49F/vD1hWWyAL8g4upz5c5+plklbGiDCYNB vdobx15sit8LRLXGD4IOytj50p4UtLEckXuEwTHoCPAb7Wk2+EowBCWLti5m5BDRThKs2YTqe VxSwy0dWjBMyQbpPtNB+nT/HAQUB/K56V4hPOmP36oTr8qRBrNrY7uoIN6oIHnGUxeVeW9OWU v7OVtt28ZmWfsVGjJ6C1WX5e8cYJ2+kE5aDuvb8ibHr1CqVqY9wLeIf7pohiESIIxF/GxRi/a UBlpzssvIb9klrJEMScY59WxvBoAXvvotuDrg97I0ihIdzjHiPxaG5gTWbuoPddIyg/frA023 RkSlS72/NhIFcz0nvjc+5Gq9XVKsqy9Wl4qeuc4BmzbWXxKJDGKcWnj+cGXwzax+7hA6lz79a m8noBEUZi/UB1fCiyMszd7iiknjzIH/pl0BkK5fk3BeYrnW6w56OhT97pq/wNbsF6K+uXULtA P1XJ9sqYZaqa/JYn15hFuArNKHr6N//A2WFeI53DzsryZbIpLPK6PzibfV4Th2gJdsDZKs2Sm gTMCLiTKkyJyQ1afH37dziH/JbzctxBBPmKtO/RMHQBa0ZjOcS72HMvVMJQHF/6X3CMBpsnfp HfuFxex/pyn6z8VS2WdVcVuRkuMvQCAhHoX9xIdSvy9+zvJnl0lt7bsDC/UXBCEGHf6UBWKXV uy4fDEsVoPJXvLpUf/1m26sXe5jL4AMCV8fcG+vqJkDruq9fOqvk3rAXiufxai14JkY2OebDW /u2uHmqM1P7XX5RFngG4Tejh/k1kJbbMp4v8OEUP4/NtzYT5S96wFxTDOk+EVxi+fZYN762hD HLTYYG2wR/xtAJFWU4w277PyezLQMrem4MIfu/is4PpfuiqXoJ9dgoh0+vpW402CWnMSLteZC 8cIjGLvej9Q+CuPIGGxfxAiR7Z9QQEtMtyrxA186CphWIMrnbopixyupNksDqDULqDW9dRNGt eXJHztuvfzONB5vNAqxyGl01sVak8+SZ57BlFhwQ0woyAGaAO0SKjrPWsQUqqdm2OO/i+3NrE Rx84RohrPVxR8frjUTdFQJwgp1wnHsywomL+CkxMiUIBEDTKanPqSU6UfIE/dP2xinsvWW4e0 PKI0M+meEfvqBy/5srUWZUSLSMG3lroaBp+OBjApgW5zRw774HoGqWCvU9jlysBOl2rPVOmwG QkqUUwE6kHgil2sx14fetnUMkYnC9aKx4elf/fGC2Rri6s3F2pMZQjX1z28T37taEvg4SY++a zlm8Nhe3G4Wu3rSThKtNBLAeNnPKXHfpSROEgnZ1EVBRgXFXqin3cgGTY7bYXTcy33WfwkmJc 3BnTohGNZAlstfppbQyP3LAPgOJr9n5fyyhHfN6CX2mhEESUFnogQJSRW4AbaWyYwt710Rq17 YPuYQy6s39tuTy3UPC0ndqV+PlJ0ovCnDnvdFYeP3sGzBrsdlzG2UnRH+F6pN7HtVCHO+VVJV q8zBiWqrdHsFFMeMU9A6AKtyvY8T+02a58bGx6CT24M5T2UeQxg7mR21B1f3acXnIxbHFwLzF HCVxlEhgpyUsqts7QQEGhGy6tHCuBndgNHKOLMBhbZraB4EVzAOACdjMJ+71DZz4UhNNjjRuI DDWD9jRBvxie+pAeTnqSGjz2kj7Y91OQIri/Kri+SdHQkLFJkz36IyqPUeCP/vq6m7G8gGQfX RLJsr0cZIHZ9h7ycpgRFm1Lv+6OyK8Lb2t0chVkj7q3sM4EmkuN83oD7SWHiRevuyUoMKseya PODRS//o/qw34NCfaZzk8dZK9Am30Bg5hff5cciN40DDoSsd1eVmHAv5HwOo3pT7GnRShJFaK agHCsJyLT0XNBSPxN4XHGRzDEEnqU2CoAbdr7viLXr7MxntrYDpGVcGozKwkkkxb0Jt1mv9bi fPaNhdg6h2sgkSkSXgfmN/AVI2oGFoAC+lQWrMO2gf5ZGHMPERyOkU4E1yIvWC9OaiVzi4K2b PDxnrQnEj3E1DVR91nYxDZn8Nd1QKZeVv3NeXk4+LGcb7daizky3YZetoFubDB5mVbsZCSEFC O8swwOz51BP/Dk5RlI4E206n1S1mL0tnx+jaw6Kvwpzq3fF+eHRFMtIqA7B4AyVlhViNSnmr4 y9g2gcSvPwdAyqbHJ6LFUkewsz7nhMfXd+bRP5Wvll8P/W5uQfojO3l9qZeTkKlOh69UPugAK rJq63q6WqblkyRX7sG95m0hMewrnJerDPpk71eZuov2jR5K0JH4ypQt2MQTtZ7Dc77XG6IP1W BJ1UFFP56K7VHvlnsLnh+cpWh7s3b0H60iXHP3FbTVfUFxDOPNywBJvSxVzb+r95/bSX20NfD Ws6U7q5CowRx+8h8gniqmM29/3yWd6fTCJmBJo63SttO6C/TEMGXp+zCPj/wmDapnK+0cRRgM sVp6vSYI= X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80348 Cc: 80348 <at> debbugs.gnu.org, Andrew Cohen <acohen@HIDDEN>, eric@HIDDEN, Morgan Smith <Morgan.J.Smith@HIDDEN>, Daniel Mendler <mail@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) St=C3=A9phane Marks <shipmints@HIDDEN> writes: Hi St=C3=A9phane, > So then as a policy, we are making system-sleep the only potential > direct subcriber to raw sleep-events. It's okay with me because of > the platform neutrality we gain and the bugs we avoid like the handled > event race condition. Yes. Of course, users could bind sleep-event in special-event-map to another function, but this would be as foolish as replacing any other handler there. Nobody does it. Best regards, Michael.
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.Received: (at 80348) by debbugs.gnu.org; 8 Feb 2026 13:16:28 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 08 08:16:28 2026 Received: from localhost ([127.0.0.1]:49077 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vp4eK-0007th-2a for submit <at> debbugs.gnu.org; Sun, 08 Feb 2026 08:16:28 -0500 Received: from mail-vk1-xa33.google.com ([2607:f8b0:4864:20::a33]:49238) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vp4eI-0007tV-AV for 80348 <at> debbugs.gnu.org; Sun, 08 Feb 2026 08:16:26 -0500 Received: by mail-vk1-xa33.google.com with SMTP id 71dfb90a1353d-56379cb870bso950828e0c.2 for <80348 <at> debbugs.gnu.org>; Sun, 08 Feb 2026 05:16:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770556585; cv=none; d=google.com; s=arc-20240605; b=jB9hLxAS9Uk8zpGGjGBTlX6M8llQa7uD2sKDipoiv3/3Bso0QBW05R+JONyZuwGw7K xwZTu1ljpPH4cLKx/oEKeE0i/DezW9xZqzeLzGCcm+vPGp3sAKpeRqwMfGneOLohc7za 4oIRmRRmLM2fh0LFz7QxW4vJ98oExkXZcenYsx20+e5FohnJwGGmuLhMwr1KiGwKXDBw HwK9qRC8z8mTbl3QsJ5xXP1iNf4odDgNr/psDCdHTZKV350fXYhNZfqnjYXgYc3NJA9U LRmz04bgTTUIYyGCi37b2e7TnQV4ayv0gg/oozjDSOx+EXl3gzt6rmon5JNl5raWiNSH fi2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=Y4fMhSM1Xahr3MeugWEU/FdP8N20P0Y/1DEkl61pvsI=; fh=zUafj4qEQGduxiGT1G9W26LQ51Uk6RA+XVYr05Fymxg=; b=kGQxI/S+TmZr16wFIZimEqLs9SgKDWYzljYoc8F5haVnIO58xckCIWihHaDdVLknxb jVz1D8uk99HaYMpwWe216Sdq/n6ww0fUVczv7QH9Hp8FkhzMItyYui4ASD6OCYbw1Mha okPjc4F92fsVerolZzNPLCMrv5gsD2bLFknMiW9bhdFykWRZLP/oYyuiF16tbMFlM7sN SLPtxKDdNau3rI4bXYxBxCsSvSUzWD2xbsF91ndFPOOAl4ULV2bef/vdLEXreP9FOkbE QzQonbzr31nqiRyEYGnUUyQitvQY75oR79jwsG183smIil/1w0EO+b8fFNnnQtt00yO2 i1/w==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770556585; x=1771161385; 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=Y4fMhSM1Xahr3MeugWEU/FdP8N20P0Y/1DEkl61pvsI=; b=YrObV5tVzxxeRIoFBqGFI8KeUOz/fRW4cty9rxZPCcNJcDQcwF50x9ykELEIulC9lw OKveiK+SqI43T+xDo2VJvTwaFJAgQoMWqfPzFIQpE9DidfSC7jh/UXtoLVbXNgaWI2/D 5how/ooxnJ2YFilI/K/0eycnHmMpUhu81W5mmnqB4n5iUaHB5M8g7jDJD7koWHnt7noF 1wPK+LbCQXrhq2GAye01D+xjMssMoPldr1PXBzGr3tEQrW1rYorhu7iGArzIFdr9iKLP uT+JQv00ZV9WQue/oQrx+6CdN6VABrU9OaAA1CB2W5n8qQWgvX0CzUvdcJ6jjWZAPNh5 XukA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770556585; x=1771161385; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Y4fMhSM1Xahr3MeugWEU/FdP8N20P0Y/1DEkl61pvsI=; b=OoPONifLwtFLRtpL/SLOB40iLfZfznoSwDGBwXlgH/EHOX0AjmyDAs7aQPbAVpqpcq H2G6HQnC5X74rbcxZTJBAvVWgSQhJPSLuCxvSlLzUZIniwC+b1ZVDF235KlLZ5CgsbCW wh0a3Kxj2E9yOZEY20yYTattSsFsY7tg4EYVE7p5fvmJ4u5xysAihjd2AzSN7tBegtKt hfD3DJHH0MKRCM0z6+uAyN6h0k9NG5AF19kdd3tqpR9l5FgdmORlE56tkqsDP5BkADmD 7hFf4Zc/MDm6y37SZ09PuOwIPNXGKaGrRSZqEBqeVdSYjvRDqxM12MfsXIihwupCKgM6 P3ZA== X-Forwarded-Encrypted: i=1; AJvYcCUlyj7tQqpZn0pbEZk9UAMFMMm+b0y4hEhKjtVTB5R8TSFzWuIS8Bufb0Ujpm+/O+A+ThK4hA==@debbugs.gnu.org X-Gm-Message-State: AOJu0YwzBBkAucJ+BT1yfYU3sEsSp9/kZStiSvWHyJpjf02g29HdVuRA w2M0yuGqf22/RlVM8KdWS38BQRKxjiC0P8GiE7QM9nCUymZPLhuL8z6TXOn3xQsffGzmtavCQ8K i8OSsDrLy5O5rSiuNl2N50kAcY5DIuYs= X-Gm-Gg: AZuq6aLsYJdihT8eVS+nfM78uCdSlN6Xh9JFxxhoIw53Wb1HdaV3WUVZTwFpy04S4lF eo5CTuJ81Gljrxinp2LKrbCfPrGDnpAdBmADlI6u4fduV2Ml6pjDdKsxbq5qe64RTsgIyme3Jdj 4ZMf9oSNdJ+8559EHgQTCDaR2jpcsLFUO9tG/72GPE94Im26dtfXI3hyvdbkOeDaJHercSubQPc VmrXgqnwQaZYo7Dxlpy8Rjz0NSZLRnsMkgBH7gzoYAm9cQBxlJO0k6yOKmWMAbeMY7mucWypY2a WfgBUbQ9y/oKJm4pMnDw++AfDHyh/QuWVK95lzdj4/FStzSsTLs= X-Received: by 2002:a05:6122:3310:b0:566:7d83:dfdc with SMTP id 71dfb90a1353d-56705f0431fmr1740757e0c.9.1770556585549; Sun, 08 Feb 2026 05:16:25 -0800 (PST) MIME-Version: 1.0 References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN> <CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN> <868qd4v36l.fsf@HIDDEN> <CAN+1HbqDpnA1dex3A00D3uvYf4C-WRAQ3g5-BxxGJimj949+tA@HIDDEN> <CAN+1HbpCbgM=Pj5wssFc6AF_C4bbPM4R4jTMcdkqe5qTBcXBLQ@HIDDEN> <CAN+1Hbpj081PV=OZi-FYPbvJLB8S_v+xdmPAwKmA52iKKsHG-A@HIDDEN> <87fr7bd25z.fsf@HIDDEN> <CAN+1HbqvfB0RrD1XegeVdxbEWjDsgHAVt7zKA_GLHoxNWwRXjw@HIDDEN> <87343bnzxy.fsf@HIDDEN> <CAN+1HbrhUjKVM1aYU_q5V6tb2NQ4Lp3V_A1NNj2z_ERtut+CfQ@HIDDEN> In-Reply-To: <CAN+1HbrhUjKVM1aYU_q5V6tb2NQ4Lp3V_A1NNj2z_ERtut+CfQ@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sun, 8 Feb 2026 08:16:14 -0500 X-Gm-Features: AZwV_QjgIFVhXV7QUiJqqxEhEUCLd0bXUua0pBIJ4x112s2Fwby8i3cQ9K41mUc Message-ID: <CAN+1HbqUa=SyO2P0fmU0N0Ov=GFdvBOiLaSmBYjMZawFvqoP6g@HIDDEN> Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake event package To: Michael Albinus <michael.albinus@HIDDEN> Content-Type: multipart/alternative; boundary="0000000000005622e5064a4fd42e" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80348 Cc: acohen@HIDDEN, eric@HIDDEN, mail@HIDDEN, Morgan.J.Smith@HIDDEN, Stefan Monnier <monnier@HIDDEN>, 80348 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) --0000000000005622e5064a4fd42e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Feb 8, 2026 at 8:15=E2=80=AFAM St=C3=A9phane Marks <shipmints@gmail= .com> wrote: > On Sun, Feb 8, 2026 at 8:10=E2=80=AFAM Michael Albinus <michael.albinus@g= mx.de> > wrote: > >> St=C3=A9phane Marks <shipmints@HIDDEN> writes: >> >> > On Sun, Feb 8, 2026 at 4:18=E2=80=AFAM Michael Albinus >> > <michael.albinus@HIDDEN> wrote: >> > >> > St=C3=A9phane Marks <shipmints@HIDDEN> writes: >> > >> > Hi St=C3=A9phane, >> > >> > > Done. And I fixed a few typos and added inline example code to >> > > process a sleep-event to the manual. >> > >> > Still a minor remark. >> > >> > > diff --git a/lisp/system-sleep.el b/lisp/system-sleep.el >> > >> > > +;;; Code: >> > > + >> > > +(eval-when-compile (require 'dbus)) >> > >> > Is this needed? You have (require 'dbus) in >> > system-sleep--set-back-end. >> > I haven't tested, 'though. >> > >> > It's the old pacify the byte compiler dance. >> >> If you declare-function all used dbus-* functions, it should be >> ok. Perhaps that's too much, so you can avoid the hassle, yes. >> > > We only call a few, so I can unify all dbus forward declarations since we > already have some for the native code. > It seems I got them already. I'll see if I can get rid of the eval-when-compile. --0000000000005622e5064a4fd42e Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Sun, Feb 8, 2026 at 8:15=E2=80=AFAM St=C3=A9phane Marks <<a href=3D"m= ailto:shipmints@HIDDEN">shipmints@HIDDEN</a>> wrote:</span></div><= /div><div class=3D"gmail_quote gmail_quote_container"><blockquote class=3D"= gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(20= 4,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div style= =3D"font-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-= serif">On Sun, Feb 8, 2026 at 8:10=E2=80=AFAM Michael Albinus <<a href= =3D"mailto:michael.albinus@HIDDEN" target=3D"_blank">michael.albinus@HIDDEN= </a>> wrote:</span></div></div><div class=3D"gmail_quote"><blockquote cl= ass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid= rgb(204,204,204);padding-left:1ex">St=C3=A9phane Marks <<a href=3D"mail= to:shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>> write= s:<br> <br> > On Sun, Feb 8, 2026 at 4:18=E2=80=AFAM Michael Albinus<br> > <<a href=3D"mailto:michael.albinus@HIDDEN" target=3D"_blank">michae= l.albinus@HIDDEN</a>> wrote:<br> ><br> >=C2=A0 =C2=A0 =C2=A0St=C3=A9phane Marks <<a href=3D"mailto:shipmints= @gmail.com" target=3D"_blank">shipmints@HIDDEN</a>> writes:<br> ><br> >=C2=A0 =C2=A0 =C2=A0Hi St=C3=A9phane,<br> ><br> >=C2=A0 =C2=A0 =C2=A0> Done.=C2=A0 And I fixed a few typos and added = inline example code to<br> >=C2=A0 =C2=A0 =C2=A0> process a sleep-event to the manual.<br> ><br> >=C2=A0 =C2=A0 =C2=A0Still a minor remark.<br> ><br> >=C2=A0 =C2=A0 =C2=A0> diff --git a/lisp/system-sleep.el b/lisp/syste= m-sleep.el<br> ><br> >=C2=A0 =C2=A0 =C2=A0> +;;; Code:<br> >=C2=A0 =C2=A0 =C2=A0> +<br> >=C2=A0 =C2=A0 =C2=A0> +(eval-when-compile (require 'dbus))<br> ><br> >=C2=A0 =C2=A0 =C2=A0Is this needed? You have (require 'dbus) in<br> >=C2=A0 =C2=A0 =C2=A0system-sleep--set-back-end.<br> >=C2=A0 =C2=A0 =C2=A0I haven't tested, 'though.<br> ><br> > It's the old pacify the byte compiler dance.<br> <br> If you declare-function all used dbus-* functions, it should be<br> ok. Perhaps that's too much, so you can avoid the hassle, yes.<br></blo= ckquote><div><br></div><div style=3D"font-family:monospace">We only call a = few, so I can unify all dbus forward declarations since we already have som= e for the native code.</div></div></div></blockquote><div><br></div><div cl= ass=3D"gmail_default" style=3D"font-family:monospace">It seems I got them a= lready.=C2=A0 I'll see if I can get rid of the eval-when-compile.</div>= </div></div> --0000000000005622e5064a4fd42e--
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.Received: (at 80348) by debbugs.gnu.org; 8 Feb 2026 13:15:22 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 08 08:15:21 2026 Received: from localhost ([127.0.0.1]:49063 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vp4dF-0007jO-2l for submit <at> debbugs.gnu.org; Sun, 08 Feb 2026 08:15:21 -0500 Received: from mail-vk1-xa30.google.com ([2607:f8b0:4864:20::a30]:49473) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vp4dC-0007iF-PG for 80348 <at> debbugs.gnu.org; Sun, 08 Feb 2026 08:15:19 -0500 Received: by mail-vk1-xa30.google.com with SMTP id 71dfb90a1353d-5664848545fso1328974e0c.3 for <80348 <at> debbugs.gnu.org>; Sun, 08 Feb 2026 05:15:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770556518; cv=none; d=google.com; s=arc-20240605; b=j8G76wa/U0arpBlU0RMh2BHKfQA5R3Jk0RopsgOZclbfgfL5OeYPhVZpzn4mYoAlHK x8ggjuEc7VZZIESjooJOEV2dmkG/Qp0937bhkht/D9eOmIgm4CM9RFHRMdzJrKTcExmK kX5RkZ6eOWHysQfMpAyZ1GfSxW2ot9bHPsQjkN6A11SVMwnjRyvRworcqaDU+ArLiWj2 /ok1J3pjmH0B5oQjIBRKT2MINOsn0jumY9XIpgEEmYLWSnPnRSYJj9IZv4MHx8YKjcQU ziBpxvDP73/pvpN7i2dAOETiG9fq34eHl52i96tLjjFxsGoiCrXvggCNdgsVOd3pHlG8 dIgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=3QC5q4Yt9iYi4zSlszBpLQcPM9+xbCYdqMl6KvoHlzw=; fh=hc1PIDA04697eORYUZvWtk+OIAR2fYwWvZ4i1ieubdY=; b=RO8r7ZevPscqp1TWFCGaK/HX4FxeOZpEJU1k7hFB/TUuhG8ZgZsSNnyTzS+ZHcVPm1 dpabBQXtEWHdEqP0npUyWLywryoHj7H8q2/HXKzvqwzjRWKtaR3ZKmXIkT4R2LmRcLB9 oBynLQj4KKIjLQQ3UKp4+JfDqkh4Dv0f6GO+pWXhbJi3zNELhD7SysPjo3MrArKdKN0I CDYpvinS4LeJUTxF7HYbGTmkgEiXD1ZYgc+yn0WkkgbZEmlYST1+T0lnCXTQw1tmqG+U BMh7mHhxG0A7X7M88h28JCQdygW6bjIcXTS3/D9nWZUy9tjR6qIMan2Bdc+OphpJb152 hXmg==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770556518; x=1771161318; 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=3QC5q4Yt9iYi4zSlszBpLQcPM9+xbCYdqMl6KvoHlzw=; b=E/s/NGrybkVqaMVpWSyrePzgX1nl0/qzagfWMu5uEt4aV8S50/i9nhAOdxXM3RCYFb UlQmOSFW1Vs2UIiPd4crmzfdDSbUqBkc4xWlerP7DLIanuYHKvuRkAn3squdXsOgRlzV deYQAx53xTPP4o1QuR22f7YCELFm2deUXHr0ScU6OoNt9ODfEQDEYtjS9fFwW4GBFkQu vbKwty5Fs2N1peB46fG0u5Y02uC7stCtg9X52dkqYRjcrltqwdWUOYpOPMoNS6MDIPR1 HAuvnSMzPoqfS44RkrZB1tNNb4STg/UFr3MwG0HQM2+5CV5r7Azup3c55FnEHOAEDQWO J7mg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770556518; x=1771161318; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=3QC5q4Yt9iYi4zSlszBpLQcPM9+xbCYdqMl6KvoHlzw=; b=Sh0j8wINeC2PRXY3WiBWYL4grUSTYvdv5E+/dqgkn1imbyXZckEnVA0FYM6T5vJPqK 492ZBkxb4b2RWchquGihxhl/FW1kiheGOj+rmUsqwf243k1g/byjQVzAvMTHXilChTAP 49JXN424B8h7whBgk1zwJoGtXTAD7ARVY09xM/AZL8APkzz36Ebv9K3LKMC2pNZT5jGW QzSb4cRzlaEtgN8r0RZywE70NJmbO7TWImFn0H0n+aXMirYYzksuPr4SWNUPZn/CQpen hRpTgauhNLGeat63EaotaRWYe1U+7czB16EoRFokX9YTxjxbiOOMKlB3zXV1yTldvg9/ 1G3A== X-Forwarded-Encrypted: i=1; AJvYcCVISSp0TfC1YZGXoFQ3mCSeR+WgATodSnbKDMDofcgyt1N5xUqLppOhSkUHhvZP74dXN6ptGA==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yw4lR+FtiGwDnC2QGPDlN+3lxDDKACqaXcf2ha6KEUQYpnve07r y1u5CZF8+2DT5Vq1YvCU/gdmmWdckum58qWSoN1zz+Al+wQJkOT0IGhqhd+jm4NBGZK7YGlxrpz rd/aIScp1mE+YXBpNI/rC4ookj6UOFQI= X-Gm-Gg: AZuq6aLkTbYNFY9CB7lzEBGtpArHZmurVUnYpZuxkin7l/xcPlaGSb9uAj04Iz5p3Z7 LS7mRHAYbXCZR40HSWsv7gunpIOZaYI1+wOnvMJuEjF6NqRj/KjXmeiWpDq/6cqbJ2neQ2rwaPd VgNbVrNXRUtbGv1HOH2jC/9lEyaS1Jl6YS0wpw1/i0jM3An+O4cJLQ2VpFck3A/5QEEiK836Yuk UgW+KFW+Uaxhk6ngKS3rEaWBWGnceEkAq/ZMJA89CUvnQyXKA43saThkpBByrJrL0bGW7hIQ2Ne obxzEywlILEc1wh0dI1syq7XnCvfzlvr6Jum1KUI6YI+820MK1U= X-Received: by 2002:a05:6102:2924:b0:5fa:603:1d62 with SMTP id ada2fe7eead31-5fae8a87305mr1900240137.14.1770556517962; Sun, 08 Feb 2026 05:15:17 -0800 (PST) MIME-Version: 1.0 References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN> <CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN> <868qd4v36l.fsf@HIDDEN> <CAN+1HbqDpnA1dex3A00D3uvYf4C-WRAQ3g5-BxxGJimj949+tA@HIDDEN> <CAN+1HbpCbgM=Pj5wssFc6AF_C4bbPM4R4jTMcdkqe5qTBcXBLQ@HIDDEN> <CAN+1Hbpj081PV=OZi-FYPbvJLB8S_v+xdmPAwKmA52iKKsHG-A@HIDDEN> <87fr7bd25z.fsf@HIDDEN> <CAN+1HbqvfB0RrD1XegeVdxbEWjDsgHAVt7zKA_GLHoxNWwRXjw@HIDDEN> <87343bnzxy.fsf@HIDDEN> In-Reply-To: <87343bnzxy.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sun, 8 Feb 2026 08:15:06 -0500 X-Gm-Features: AZwV_Qh87nTgHiVAaF3heNu310xLARkuQQfsZP3TlOP8AJGduOa8nCKANTV30Bw Message-ID: <CAN+1HbrhUjKVM1aYU_q5V6tb2NQ4Lp3V_A1NNj2z_ERtut+CfQ@HIDDEN> Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake event package To: Michael Albinus <michael.albinus@HIDDEN> Content-Type: multipart/alternative; boundary="0000000000004ed7bf064a4fd0ad" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80348 Cc: acohen@HIDDEN, eric@HIDDEN, mail@HIDDEN, Morgan.J.Smith@HIDDEN, Stefan Monnier <monnier@HIDDEN>, 80348 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) --0000000000004ed7bf064a4fd0ad Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Feb 8, 2026 at 8:10=E2=80=AFAM Michael Albinus <michael.albinus@gmx= .de> wrote: > St=C3=A9phane Marks <shipmints@HIDDEN> writes: > > > On Sun, Feb 8, 2026 at 4:18=E2=80=AFAM Michael Albinus > > <michael.albinus@HIDDEN> wrote: > > > > St=C3=A9phane Marks <shipmints@HIDDEN> writes: > > > > Hi St=C3=A9phane, > > > > > Done. And I fixed a few typos and added inline example code to > > > process a sleep-event to the manual. > > > > Still a minor remark. > > > > > diff --git a/lisp/system-sleep.el b/lisp/system-sleep.el > > > > > +;;; Code: > > > + > > > +(eval-when-compile (require 'dbus)) > > > > Is this needed? You have (require 'dbus) in > > system-sleep--set-back-end. > > I haven't tested, 'though. > > > > It's the old pacify the byte compiler dance. > > If you declare-function all used dbus-* functions, it should be > ok. Perhaps that's too much, so you can avoid the hassle, yes. > We only call a few, so I can unify all dbus forward declarations since we already have some for the native code. --0000000000004ed7bf064a4fd0ad Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Sun, Feb 8, 2026 at 8:10=E2=80=AFAM Michael Albinus <<a href=3D"mailt= o:michael.albinus@HIDDEN">michael.albinus@HIDDEN</a>> wrote:</span></div= ></div><div class=3D"gmail_quote gmail_quote_container"><blockquote class= =3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg= b(204,204,204);padding-left:1ex">St=C3=A9phane Marks <<a href=3D"mailto:= shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>> writes:<= br> <br> > On Sun, Feb 8, 2026 at 4:18=E2=80=AFAM Michael Albinus<br> > <<a href=3D"mailto:michael.albinus@HIDDEN" target=3D"_blank">michae= l.albinus@HIDDEN</a>> wrote:<br> ><br> >=C2=A0 =C2=A0 =C2=A0St=C3=A9phane Marks <<a href=3D"mailto:shipmints= @gmail.com" target=3D"_blank">shipmints@HIDDEN</a>> writes:<br> ><br> >=C2=A0 =C2=A0 =C2=A0Hi St=C3=A9phane,<br> ><br> >=C2=A0 =C2=A0 =C2=A0> Done.=C2=A0 And I fixed a few typos and added = inline example code to<br> >=C2=A0 =C2=A0 =C2=A0> process a sleep-event to the manual.<br> ><br> >=C2=A0 =C2=A0 =C2=A0Still a minor remark.<br> ><br> >=C2=A0 =C2=A0 =C2=A0> diff --git a/lisp/system-sleep.el b/lisp/syste= m-sleep.el<br> ><br> >=C2=A0 =C2=A0 =C2=A0> +;;; Code:<br> >=C2=A0 =C2=A0 =C2=A0> +<br> >=C2=A0 =C2=A0 =C2=A0> +(eval-when-compile (require 'dbus))<br> ><br> >=C2=A0 =C2=A0 =C2=A0Is this needed? You have (require 'dbus) in<br> >=C2=A0 =C2=A0 =C2=A0system-sleep--set-back-end.<br> >=C2=A0 =C2=A0 =C2=A0I haven't tested, 'though.<br> ><br> > It's the old pacify the byte compiler dance.<br> <br> If you declare-function all used dbus-* functions, it should be<br> ok. Perhaps that's too much, so you can avoid the hassle, yes.<br></blo= ckquote><div><br></div><div class=3D"gmail_default" style=3D"font-family:mo= nospace">We only call a few, so I can unify all dbus forward declarations s= ince we already have some for the native code.</div></div></div> --0000000000004ed7bf064a4fd0ad--
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.Received: (at 80348) by debbugs.gnu.org; 8 Feb 2026 13:14:09 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 08 08:14:09 2026 Received: from localhost ([127.0.0.1]:49049 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vp4c5-0007c3-AD for submit <at> debbugs.gnu.org; Sun, 08 Feb 2026 08:14:09 -0500 Received: from mail-vk1-xa35.google.com ([2607:f8b0:4864:20::a35]:44510) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vp4c2-0007br-Pw for 80348 <at> debbugs.gnu.org; Sun, 08 Feb 2026 08:14:07 -0500 Received: by mail-vk1-xa35.google.com with SMTP id 71dfb90a1353d-5664634a27fso1110117e0c.1 for <80348 <at> debbugs.gnu.org>; Sun, 08 Feb 2026 05:14:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770556446; cv=none; d=google.com; s=arc-20240605; b=bxC2LUuYZ9XwBxMOvaCg3gpwPDCLMyaQe15QMdjHp88GjJCjejKljVWT3+wo0uTt82 6jU1KjYTsK3iZu4TO9HiXS4MsKGicsK/i4x91iOQ2QkXNbsxeUyXWhTRPzPoop18CNNn iSnqeaWnR0Fr904Bsb232IQOxGlFfTiV28k5Gu9hbxtx9HWvL/dqrlgrtvVv1WA/mAPD EAWVbTg+UeKJMFfDPvPV0n1A+55WS+GXpcboJ6WDK51I/dC/9JWwqKsN0dXN8K/YB0gH BsL2U55jP53QM4NRzZGIzxFunoZ6d3hObdkIBMJb3nSB9zcCEJeXS6s1dTw8RRtMtyBv bsUA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=1JVqTFqBtrThc68hLwWvoSLAI5RRrB/8fYr2sP0f04I=; fh=XFyLLj5IJEfbj6P0pjHENBVJIjajvq2jpzMaJgzrTSQ=; b=FoyHWvqq6PI94yl8s3MWOPxp0a6smN+8TCCCbfVhCDCuZm0D7C6RPgagL6B01+Gs0Q nxu4I0ICW5Zf7UQCxPgXE7pdEJMT5Ob6vdYYyUuy7iqFeNsMxmMJW/FkTRriU9Vk3E5x LiivR4O8CLKYGKue2YTnVsIabFNpxce4/rA5p4MoW9+wGQwOjNw98bzo7lOy2D8dyufD UhQ3nJ+iRM89dvhztGmGrT0QxlEPcbzEXPibPe27LxtrKLhB3xvHq9lvMyYSAZLDqe0+ 7AH1IkSIEcQpwDM1JtCR0G8haheNG6pgOCnUF5AbHqxAjggKWTDGU4O9fW+XKRJkiPJM KpIg==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770556446; x=1771161246; 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=1JVqTFqBtrThc68hLwWvoSLAI5RRrB/8fYr2sP0f04I=; b=FfbQGaUtV12ZIRG68OfmVwJHg82bVxJgy2Fvm/cUBSsMvuDCRLy3sqpLw8OMKXIw4d InFfyqRQVB8qIKH4TwJszwcq7LNYeLTWAIoHTORyrpwXtUQE4Bh/dolycM1GwUIei2rS WEYV5I/6wKcIC2gXFKYH7shhUpA/HZ+NuqF4Qj0T8MQzYrzaRLBsL+XdsOzD8kPT/Gk9 u/KnaZwZfOS7BXepkDkgeEYIn/HvqWOmUjLULsQxBXkFaKJ1cBF2LrkcJLhSOxgBkux0 oSbpysDCiGWN/7AiaPp4KYefv3N1IlN9+SzIaOW/FRJiuwabuAmbBRtKy7g/WVaceyDK kXdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770556446; x=1771161246; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=1JVqTFqBtrThc68hLwWvoSLAI5RRrB/8fYr2sP0f04I=; b=QL+VQPeLD1y1Xbs9LQrqeoMbkMHkG5CtwS2OM8Fya8o6RFqn4x/X+PXKCEzDbVuOAr VxPagufXWDSg7v0EFQBHppxoX3h1myXuGk4wrddc3pggWplT8qj4hKQHAjVeX2L1jX9A jlo+ZmHFtIHfw6YHHRCSXUsVjbX5nHEA7epQjhfVlwjbV3k9RQNVzz1lTfIwNaG7uGoi Z0TVO1iPJdQNRO02YutDMYkpUhCfS5MaiXxq1wq7ATZFGrfcNiXXFf09InWCjgxUww7T JUG31qNmdzyOlUQNHmgK1/RL2/GJkWfOe0kW3pBeCEO7aiFjxMySNs6WwgizT1Pa7qbf VkJg== X-Gm-Message-State: AOJu0Yw43gHw9Q61xe5tKbC9TrH3MOMj/mexqwQwkJoWIZmZiHyyfDpx JMjXUNZiH+3gF7CMw27xGZyEq0Jyc3zuVYUtQUuQYy5mi0iglEnHvUCrBnK25wcjmmo5ldb4zM/ BF11KYDiK9phVUP0jXMJxVCKHOC4Dl80= X-Gm-Gg: AZuq6aL8UckxW1GFAo3m7di9IQCI8x+1gJS4M0wWAKc1BAaJTtsPx4GIzBnYz0uTH+p 96dF1jec/SvATF7VEN6pTzgYWx7Czyanz/fuh/eQH8oxQmniPteIOB763NHPYK+xUye1yIm8E7I /phqGtVYk8Wk1mGWddFPR9omUptuHOK+gThY0DF88BhyIUTjBEcNd/HqdbRBSMdVsda3iaedoOL DLwWX4n1u4Ngx56SvjnawUhzZnaeF1/HqizzNPhPRRCbhb6vfqum6IJuECxorh1djD9ln+QoUMM NyqfOgWaR5nOzmBOBchEAiWPoFg7C4KWuKk37QGzj0Fy1re8Gi0= X-Received: by 2002:a05:6102:3f02:b0:5f5:25a4:c6a9 with SMTP id ada2fe7eead31-5fae8bdfc7amr2018741137.20.1770556445954; Sun, 08 Feb 2026 05:14:05 -0800 (PST) MIME-Version: 1.0 References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN> <CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN> <87tsvscsmj.fsf@HIDDEN> <CAN+1Hbr-2-StXvCR_5BH++gZWch7Pgx97HNK-n7rG_d3aDUaNw@HIDDEN> <87jywnd2uj.fsf@HIDDEN> In-Reply-To: <87jywnd2uj.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sun, 8 Feb 2026 08:13:54 -0500 X-Gm-Features: AZwV_Qi90YuxYD18AUUSmomYLCxonkqHuzuWXydlpSh5RTMCfV168hYTGIYQB5w Message-ID: <CAN+1HbpRKSnAx60Kai8rZDUof+3EybtKU4kLR-umGumbeeWZeg@HIDDEN> Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake event package To: Michael Albinus <michael.albinus@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000041624064a4fcc52" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80348 Cc: 80348 <at> debbugs.gnu.org, Andrew Cohen <acohen@HIDDEN>, eric@HIDDEN, Morgan Smith <Morgan.J.Smith@HIDDEN>, Daniel Mendler <mail@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) --000000000000041624064a4fcc52 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Feb 8, 2026 at 4:03=E2=80=AFAM Michael Albinus <michael.albinus@gmx= .de> wrote: > St=C3=A9phane Marks <shipmints@HIDDEN> writes: > > Hi St=C3=A9phane, > > > A sleep event has the form '(sleep-event STATE)'. So we can add a > > 'sleep-event' defstruct for convenience: > > > > --8<---------------cut here---------------start------------->8--- > > (cl-defstruct (sleep-event (:type list) :named) state) > > --8<---------------cut here---------------end--------------->8--- > > > > Is it okay to put cl- functions in bindings.el? I did it anyway but > > we can undo it. > > As Eli said, we likely don't need this in bindings.el. Let's assume there > is only one canonical implementation of sleep-event-handler, provided by > system-sleep.el. The code of sleep-event-handler and > system-sleep--sleep-event-function could be merged, and we would need > only one of the sleep-event-functions and system-sleep-event-functions > user options. Everything in bindings.el could be movved to > system-sleep.el. > I like this approach. > So then as a policy, we are making system-sleep the only potential direct subcriber to raw sleep-events. It's okay with me because of the platform neutrality we gain and the bugs we avoid like the handled event race condition. Btw, a better approach for the defstruct would be > > --8<---------------cut here---------------start------------->8--- > (cl-defstruct > (sleep-event (:type list) :named > (:constructor nil) > (:constructor make-sleep-event (state))) > state) > --8<---------------cut here---------------end--------------->8--- > > > --8<---------------cut here---------------start------------->8--- > > (insert-special-event (make-sleep-event :state 'pre-sleep))) > > --8<---------------cut here---------------end--------------->8--- > > This is then > > --8<---------------cut here---------------start------------->8--- > (insert-special-event (make-sleep-event 'pre-sleep)) > --8<---------------cut here---------------end--------------->8--- > Okay I'll try this out. --000000000000041624064a4fcc52 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Sun, Feb 8, 2026 at 4:03=E2=80=AFAM Michael Albinus <<a href=3D"mailt= o:michael.albinus@HIDDEN">michael.albinus@HIDDEN</a>> wrote:</span></div= ></div><div class=3D"gmail_quote gmail_quote_container"><blockquote class= =3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg= b(204,204,204);padding-left:1ex">St=C3=A9phane Marks <<a href=3D"mailto:= shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>> writes:<= br> <br> Hi St=C3=A9phane,<br> <br> >=C2=A0 =C2=A0 =C2=A0A sleep event has the form '(sleep-event STATE)= '. So we can add a<br> >=C2=A0 =C2=A0 =C2=A0'sleep-event' defstruct for convenience:<br= > ><br> >=C2=A0 =C2=A0 =C2=A0--8<---------------cut here---------------start-= ------------>8---<br> >=C2=A0 =C2=A0 =C2=A0(cl-defstruct (sleep-event (:type list) :named) sta= te)<br> >=C2=A0 =C2=A0 =C2=A0--8<---------------cut here---------------end---= ------------>8---<br> ><br> > Is it okay to put cl- functions in bindings.el?=C2=A0 I did it anyway = but<br> > we can undo it.<br> <br> As Eli said, we likely don't need this in bindings.el. Let's assume= there<br> is only one canonical implementation of sleep-event-handler, provided by <b= r> system-sleep.el. The code of sleep-event-handler and<br> system-sleep--sleep-event-function could be merged, and we would need<br> only one of the sleep-event-functions and system-sleep-event-functions<br> user options. Everything in bindings.el could be movved to system-sleep.el.= =C2=A0</blockquote><blockquote class=3D"gmail_quote" style=3D"margin:0px 0p= x 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <br> I like this approach.<br></blockquote><div><br></div><div><div class=3D"gma= il_default" style=3D"font-family:monospace">So then as a policy, we are mak= ing system-sleep the only potential direct subcriber=C2=A0to raw sleep-even= ts.=C2=A0 It's okay with me because of the platform neutrality we gain = and the bugs we avoid like the handled=C2=A0event=C2=A0race condition.</div= ></div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px= 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> Btw, a better approach for the defstruct would be<br> <br> --8<---------------cut here---------------start------------->8---<br> (cl-defstruct<br> =C2=A0 =C2=A0 (sleep-event (:type list) :named<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(:constructor= nil)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(:constructor= make-sleep-event (state)))<br> =C2=A0 state)<br> --8<---------------cut here---------------end--------------->8---<br> <br> >=C2=A0 =C2=A0 =C2=A0--8<---------------cut here---------------start-= ------------>8---<br> >=C2=A0 =C2=A0 =C2=A0(insert-special-event (make-sleep-event :state '= ;pre-sleep)))<br> >=C2=A0 =C2=A0 =C2=A0--8<---------------cut here---------------end---= ------------>8---<br> <br> This is then<br> <br> --8<---------------cut here---------------start------------->8---<br> (insert-special-event (make-sleep-event 'pre-sleep))<br> --8<---------------cut here---------------end--------------->8---<br>= </blockquote><div><br></div><div class=3D"gmail_default" style=3D"font-fami= ly:monospace">Okay I'll try this out.</div></div></div> --000000000000041624064a4fcc52--
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.Received: (at 80348) by debbugs.gnu.org; 8 Feb 2026 13:10:45 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 08 08:10:45 2026 Received: from localhost ([127.0.0.1]:49014 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vp4Ym-0007LV-PX for submit <at> debbugs.gnu.org; Sun, 08 Feb 2026 08:10:45 -0500 Received: from mout.gmx.net ([212.227.15.15]:44549) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <michael.albinus@HIDDEN>) id 1vp4Yj-0007Ku-Sg for 80348 <at> debbugs.gnu.org; Sun, 08 Feb 2026 08:10:42 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1770556235; x=1771161035; i=michael.albinus@HIDDEN; bh=Km4xGIDfRLX15O4v6V04XRef760dIAA7PTH1xHXQtSw=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date: Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=g8pyKtRmcz/rL0SNwxS45nfmUgDmfKFykdxLXT+1vT8P+Ek+stoP9OXZLvIIgOGC k+YfFm75SKPH0JLKkmA96AnIQndDZGa8HfB17wmVfYmyI/bExoR7La31zHwJoug3+ uQ9qZHUjakqToVtv0Am+hsaRDMinIh/+wMxFKwE6+NS9CqRqZ7SXH9AWEevAtG4lZ vuLlp9m38YhGuK6Cc/icFkzK/NZd9DYgtrhKUaW6CaxZ9aNhxLKAV98W1zDUg95fk UJJOhpD1/Dg0IIrKmMZ9wfltYTlk4bMHf1lhNScVFIM7K5aQh2kpqf4AixI0Up86B kKW85/SzFL6DM3lX0g== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from gandalf.gmx.de ([185.89.39.12]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MbzuH-1vFSI00LTr-00jhky; Sun, 08 Feb 2026 14:10:35 +0100 From: Michael Albinus <michael.albinus@HIDDEN> To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN> Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake event package In-Reply-To: <CAN+1HbqvfB0RrD1XegeVdxbEWjDsgHAVt7zKA_GLHoxNWwRXjw@HIDDEN> References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN> <CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN> <868qd4v36l.fsf@HIDDEN> <CAN+1HbqDpnA1dex3A00D3uvYf4C-WRAQ3g5-BxxGJimj949+tA@HIDDEN> <CAN+1HbpCbgM=Pj5wssFc6AF_C4bbPM4R4jTMcdkqe5qTBcXBLQ@HIDDEN> <CAN+1Hbpj081PV=OZi-FYPbvJLB8S_v+xdmPAwKmA52iKKsHG-A@HIDDEN> <87fr7bd25z.fsf@HIDDEN> <CAN+1HbqvfB0RrD1XegeVdxbEWjDsgHAVt7zKA_GLHoxNWwRXjw@HIDDEN> Date: Sun, 08 Feb 2026 14:10:33 +0100 Message-ID: <87343bnzxy.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:IctZlGPJD3hRL35k5w64U4bOpZc+YTeJl2B7ETnmKwaKSz+AGDj I487wSY6fldN1j3RAZ+fmuGoE0oP1MgZpnPdFNq7HP34Dd8KTYu0uSSEmjqIP5RTHZ75xjH nPz052JEDZ9gzNvSVbVA4MGQPcbgTqTSwd+ko0v6q+pAaM+7CJBFPbqPN7uOn/6hs46ZiT0 BFs1mG8nEwh6HmY5ZRNuQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:tzer475eqC4=;z2Vo3ecw1h7ElgEJYpGA/zJwQXn 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 ZKeuU06SgbVdfua04TSx9Taq5l1SA X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80348 Cc: acohen@HIDDEN, eric@HIDDEN, mail@HIDDEN, Morgan.J.Smith@HIDDEN, Stefan Monnier <monnier@HIDDEN>, 80348 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) St=C3=A9phane Marks <shipmints@HIDDEN> writes: > On Sun, Feb 8, 2026 at 4:18=E2=80=AFAM Michael Albinus > <michael.albinus@HIDDEN> wrote: > > St=C3=A9phane Marks <shipmints@HIDDEN> writes: > > Hi St=C3=A9phane, > > > Done. And I fixed a few typos and added inline example code to > > process a sleep-event to the manual. > > Still a minor remark. > > > diff --git a/lisp/system-sleep.el b/lisp/system-sleep.el > > > +;;; Code: > > + > > +(eval-when-compile (require 'dbus)) > > Is this needed? You have (require 'dbus) in > system-sleep--set-back-end. > I haven't tested, 'though. > > It's the old pacify the byte compiler dance. If you declare-function all used dbus-* functions, it should be ok. Perhaps that's too much, so you can avoid the hassle, yes. Best regards, Michael.
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.Received: (at 80348) by debbugs.gnu.org; 8 Feb 2026 13:06:10 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 08 08:06:10 2026 Received: from localhost ([127.0.0.1]:48947 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vp4UL-0006uX-3V for submit <at> debbugs.gnu.org; Sun, 08 Feb 2026 08:06:09 -0500 Received: from mail-vk1-xa29.google.com ([2607:f8b0:4864:20::a29]:55647) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vp4UI-0006u0-Ea for 80348 <at> debbugs.gnu.org; Sun, 08 Feb 2026 08:06:07 -0500 Received: by mail-vk1-xa29.google.com with SMTP id 71dfb90a1353d-566360cab07so984149e0c.3 for <80348 <at> debbugs.gnu.org>; Sun, 08 Feb 2026 05:06:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770555965; cv=none; d=google.com; s=arc-20240605; b=AwNNN0FqnTAiAwRjcDfzVc/EQtQLc41TamdaAf3Eg1Nn9jvZBpj3gtn+JaX43IRf5g 3UHOUf70Q8ZMdkRNx33TzyPZVod9MM4kpo/oO2G9Va5dTPCccN757PaJEcegy3K0oTPy Ss8G8BRmimO9dTzxmy+EGKbsuQobdNdJEtw7L/C31L7yF3+nUqtmLGocF0XO4Y0My4Vb fJoyAqK8OcTf9p7AAG6+k/7evujMg4TQzcKu7T8su6rewRIz0nhfwc9wVmFqFHBR1Oof mBvv19oTMTkah9xAuwgIrm+jj5APaCl8clYPyAF99CF5EXy1Y0x1j86cFK1rUFo8qro0 OUjQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=WBhh4xlvTzRtXr7iwxC1tCO8dD+Jax5DINy9Aoz4t00=; fh=uHxB5lak/hvmEvCn+R3l0VOTyb0e3qXSGZsGlpROqbw=; b=iz5SlJUNBk5dkXGX91bkrX7Nu3P6yj79LZpI+EhOyxkeb7AFkIEeNNQNzbG5BG5v2k OABcfH9p8R/+y9Fo9KMYAjbwCNghjtIVpzNZ9Gg22pU6r4bB9bwBIJMvNEH+c4qzo3m2 pmWDbIc5AKnF6is4Jn0zjtlqLU5oNoQA1kFZLMZ0aUosQ3CR9JXNIP5mZc+SNjoKEE6q 82rX3nADARoo8wUavyimieCOLDLRVSn8HI5dYkiOGmO6ncNDsYqU9pAJ6kq2RL5w1JZL TRZd+ThpCgQE49QfJyFkef60NO8MU1IkV6M33m8mwp3CKJVZqFg8mCmyhK6jhokTxnaI CjHw==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770555965; x=1771160765; 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=WBhh4xlvTzRtXr7iwxC1tCO8dD+Jax5DINy9Aoz4t00=; b=Rkds6Y8QFhrz1Dh75g8Jp6iKf9ZouQA81GQzeXVwXmgOOOOP5t95HWAnGqIPmi6Uj1 LyO4sZobt8wyUFagmMbeQPJ7y8YgCn60KpsDGVCmy0AnaIqo8S6IdNEJHroUtFTT4FuO 206N+cFqkvNrsRCHPYDXSFwKfWnfZlCBTdMZr6vYz//XrP9L36+dpMnxWZ4133bYKbvY m8C0Igc8UoUALlPAC5JJhohrWe5F9pWLgtu/ghl+hKB+U96NAm1iGSnha4BVSzEqKOyB q0Wm5YJ1O6ajv9Nnec38dehXtSJWbtlj4sK6oxZhCPFx5BLI5ZWkHyX36PtBepEhkOt4 258A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770555965; x=1771160765; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=WBhh4xlvTzRtXr7iwxC1tCO8dD+Jax5DINy9Aoz4t00=; b=oY2G5a4ovYRX9EFdiZ0O68Gs+jrE/fTq6NWXF8lKbQY9u2k0naxrPwap848V9jS25V w17qKRr6OgdUYTRtE+hO4BHhihXEVJkKZXrOPB5bPI/8qRn7QpAvJSgbB5BhNH5uRyDm O1lYQEcaTTgOsh5cwRFteGLBZDDg859N4KiC1bW04noWRuKCfU3XaiPavYeavKyVDT3U vAfVz6L1v6RcTIJZBX0Bd+sAHoPonqkM4zhF5Yt0K/MjhUMhIGGjg7nNTLDpZ+IysPKm AKBXPUDvy1irLeU8BCBz8LD8STqjlEOHYeh8XPMzo6mymdrWrGdkcCH3xxNjiD4AZQHX 8nuw== X-Forwarded-Encrypted: i=1; AJvYcCXDRiwU/uoKbDqTqfQyGKdoLJx/d3AeLGfyxDtn5KtSXF02JC1wz3UiNyj8jd+M148yphxk2w==@debbugs.gnu.org X-Gm-Message-State: AOJu0YwSgSX/gWiFPVmtlQOMNSCvILn0Gc5uSfZr+z/a5aNDUwFzeetU BOI8jjFc3R6zDFbk+XhS3EyP/KoknDlCeQCG1+J3EroYEUr8+cwsKzyqM9SgQ1fk6NNFpSDaKDw R/D/bD9LObXHYtOJY5GYXIOjC+7FfR9Q= X-Gm-Gg: AZuq6aIf0ygTAC/FCvnRxJbkhZnL/8FFILbcwUC0bPzujRrdSm4nNEHtgRsCmPR5fPC BG5csKQgLHqfoTcoM5ciRdbfRK4HIzmVrDk77s7ul37Vzl9Q6YB2uv8P7+/0wgvAtm/4LjD8D2L jJTrN86JkweUim/WODuFJG9zghB7M5tNGHkI72195uqgZFELv7MaMFKxkibTymlzMo7GbRvVcpl yc3bYAHL5GUyF5LBJnfGtJd9HYOS8hMVDoNROq9DC4BWzNxHSlVxqbKeh0DdHUZbZNSQMgQSwQM w1C9LiF0MhqcvIiBIikxOkfY4PuxG9Emxzt0MOMledpDtAy9USU= X-Received: by 2002:a05:6123:146:b0:55b:9c1c:85f2 with SMTP id 71dfb90a1353d-56705e82c3emr2046815e0c.1.1770555965177; Sun, 08 Feb 2026 05:06:05 -0800 (PST) MIME-Version: 1.0 References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN> <CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN> <868qd4v36l.fsf@HIDDEN> <CAN+1HbqDpnA1dex3A00D3uvYf4C-WRAQ3g5-BxxGJimj949+tA@HIDDEN> <CAN+1HbpCbgM=Pj5wssFc6AF_C4bbPM4R4jTMcdkqe5qTBcXBLQ@HIDDEN> <CAN+1Hbpj081PV=OZi-FYPbvJLB8S_v+xdmPAwKmA52iKKsHG-A@HIDDEN> <87fr7bd25z.fsf@HIDDEN> In-Reply-To: <87fr7bd25z.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sun, 8 Feb 2026 08:05:53 -0500 X-Gm-Features: AZwV_QgXHpVBZ1HcnOdhXVVqvkN1kVY_-JjHW2UyZbwJshh6SFoiiu9rLLEjMpI Message-ID: <CAN+1HbqvfB0RrD1XegeVdxbEWjDsgHAVt7zKA_GLHoxNWwRXjw@HIDDEN> Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake event package To: Michael Albinus <michael.albinus@HIDDEN> Content-Type: multipart/alternative; boundary="0000000000005c043b064a4fafed" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80348 Cc: acohen@HIDDEN, eric@HIDDEN, mail@HIDDEN, Morgan.J.Smith@HIDDEN, Stefan Monnier <monnier@HIDDEN>, 80348 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) --0000000000005c043b064a4fafed Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Feb 8, 2026 at 4:18=E2=80=AFAM Michael Albinus <michael.albinus@gmx= .de> wrote: > St=C3=A9phane Marks <shipmints@HIDDEN> writes: > > Hi St=C3=A9phane, > > > Done. And I fixed a few typos and added inline example code to > > process a sleep-event to the manual. > > Still a minor remark. > > > diff --git a/lisp/system-sleep.el b/lisp/system-sleep.el > > > +;;; Code: > > + > > +(eval-when-compile (require 'dbus)) > > Is this needed? You have (require 'dbus) in system-sleep--set-back-end. > I haven't tested, 'though. > It's the old pacify the byte compiler dance. --0000000000005c043b064a4fafed Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Sun, Feb 8, 2026 at 4:18=E2=80=AFAM Michael Albinus <<a href=3D"mailt= o:michael.albinus@HIDDEN">michael.albinus@HIDDEN</a>> wrote:</span></div= ></div><div class=3D"gmail_quote gmail_quote_container"><blockquote class= =3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg= b(204,204,204);padding-left:1ex">St=C3=A9phane Marks <<a href=3D"mailto:= shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>> writes:<= br> <br> Hi St=C3=A9phane,<br> <br> > Done.=C2=A0 And I fixed a few typos and added inline example code to<b= r> > process a sleep-event to the manual.<br> <br> Still a minor remark.<br> <br> > diff --git a/lisp/system-sleep.el b/lisp/system-sleep.el<br> <br> > +;;; Code:<br> > +<br> > +(eval-when-compile (require 'dbus))<br> <br> Is this needed? You have (require 'dbus) in system-sleep--set-back-end.= <br> I haven't tested, 'though.<br></blockquote><div><br></div><div><div= class=3D"gmail_default" style=3D"font-family:monospace">It's the old p= acify=C2=A0the byte compiler dance.</div></div></div></div> --0000000000005c043b064a4fafed--
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.Received: (at 80348) by debbugs.gnu.org; 8 Feb 2026 09:18:22 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 08 04:18:22 2026 Received: from localhost ([127.0.0.1]:45920 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vp0vt-00056q-Hv for submit <at> debbugs.gnu.org; Sun, 08 Feb 2026 04:18:21 -0500 Received: from mout.gmx.net ([212.227.15.19]:49169) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <michael.albinus@HIDDEN>) id 1vp0vq-000567-8Z for 80348 <at> debbugs.gnu.org; Sun, 08 Feb 2026 04:18:20 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1770542283; x=1771147083; i=michael.albinus@HIDDEN; bh=29CVRy6N6aDmmYkGI5ElLqBjMF/VKTkZfwYUU9zc6AE=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date: Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=WGfXkA9ifR3QmS0qU7QaUf67Y+ysuVQbkL3IMI5u7ppCKagJgxEtLfq+C88/jMMP VkXOlACDVcq+nt7f4jHNGiiO1JCXKSnsgg+Z6yvwrqXvh3vX5GJa/VIBbMrrt569h Na3hc65LBxvsMLW5lEf8istnSl2cqYAEKa2f28KpTj7ZhvXARXtbO3AOzUULLI/ho NEgrLfTIeZ9D29nf39gdgqYx+Z5twpmDDS0PdQj5Moqikwnlt/Np5jz23jhmxfaI+ XjC6UdQM77JZiyx43vN0EPEX2zslG6ucufT7BodxTdSfSSwPwCdWpg8v5uRwACsKX WI6u7ea7STu27pKb6Q== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from gandalf.gmx.de ([185.89.39.12]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MIx3I-1w4u9J1hVa-00RTwN; Sun, 08 Feb 2026 10:18:03 +0100 From: Michael Albinus <michael.albinus@HIDDEN> To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN> Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake event package In-Reply-To: <CAN+1Hbpj081PV=OZi-FYPbvJLB8S_v+xdmPAwKmA52iKKsHG-A@HIDDEN> References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN> <CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN> <868qd4v36l.fsf@HIDDEN> <CAN+1HbqDpnA1dex3A00D3uvYf4C-WRAQ3g5-BxxGJimj949+tA@HIDDEN> <CAN+1HbpCbgM=Pj5wssFc6AF_C4bbPM4R4jTMcdkqe5qTBcXBLQ@HIDDEN> <CAN+1Hbpj081PV=OZi-FYPbvJLB8S_v+xdmPAwKmA52iKKsHG-A@HIDDEN> Date: Sun, 08 Feb 2026 10:18:00 +0100 Message-ID: <87fr7bd25z.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:fKISbM+n1PScxJElu4VVrXrMSHxMorQ4SGxTVkPQ8LjS+qv7FPK r+7xbLbEAb6yJtyveAwV1wP7dhuUhheel+bmaqLCMg/bbmE+gQLYrPMVIlaXqbdPWTXxReR UYDwZAawQN7mQmuEDQL6SodrRWog13MCJnM1DXcO19NTTi30TWGq+BTD3e62p0I+eRxQDB5 vJO/PUY9nSPYreKDL7tTw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:kYBXetTgVw8=;dwZa0nLcXbNSQq5x1Dg6G8JtZWG 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 cNJz4DjT7iuNcK7mHhiJ0g+vo0vOhsfGLalQMG X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80348 Cc: acohen@HIDDEN, eric@HIDDEN, mail@HIDDEN, Morgan.J.Smith@HIDDEN, Stefan Monnier <monnier@HIDDEN>, 80348 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) St=C3=A9phane Marks <shipmints@HIDDEN> writes: Hi St=C3=A9phane, > Done. And I fixed a few typos and added inline example code to > process a sleep-event to the manual. Still a minor remark. > diff --git a/lisp/system-sleep.el b/lisp/system-sleep.el > +;;; Code: > + > +(eval-when-compile (require 'dbus)) Is this needed? You have (require 'dbus) in system-sleep--set-back-end. I haven't tested, 'though. Best regards, Michael.
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.
Received: (at 80348) by debbugs.gnu.org; 8 Feb 2026 09:04:03 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 08 04:04:03 2026
Received: from localhost ([127.0.0.1]:45725 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vp0i2-0003l3-FF
for submit <at> debbugs.gnu.org; Sun, 08 Feb 2026 04:04:02 -0500
Received: from mout.gmx.net ([212.227.17.20]:57789)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <michael.albinus@HIDDEN>)
id 1vp0hz-0003jw-SG
for 80348 <at> debbugs.gnu.org; Sun, 08 Feb 2026 04:04:01 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de;
s=s31663417; t=1770541398; x=1771146198; i=michael.albinus@HIDDEN;
bh=6Nh0cjproQ5xheM6LRGU6SwPN5pezjFV8PJJOBDP9X0=;
h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date:
Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:cc:
content-transfer-encoding:content-type:date:from:message-id:
mime-version:reply-to:subject:to;
b=b4WRWbNYZl0/61x38J6AjQ6qFMNAtvN13uU/3e7i4G7tguL2CddAWLOtSMuwlYpC
djTSEF7tUXV7yYgPRwRWfViXE1yvpArH+OibipHS637yvLLbtO0EoWfD07X/YEcoY
wECnIyLaLoqrpllIOzdqInyZB+cYBxcdtnlhkHAu3172hRvtfgj3B3KQM8tvmGfD2
DC3tqM1DQOdnfK2JyNtaUnnev3FLqjv2qLXcsQIZS0kdL1EJVSr5oskyHSVM/jJv9
XhPN8H9zqiqQ2ggMKWF1DL5ZzyypLozXEQhp/tnpgdfic8wmyVZVnbfSbUz0+kLK5
Di4NiAWQA/ZzskO6YQ==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from gandalf.gmx.de ([185.89.39.12]) by mail.gmx.net (mrgmx104
[212.227.17.168]) with ESMTPSA (Nemesis) id 1MowGU-1vSdFQ0s7q-00eCzB; Sun, 08
Feb 2026 10:03:18 +0100
From: Michael Albinus <michael.albinus@HIDDEN>
To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN>
Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake
event package
In-Reply-To: <CAN+1Hbr-2-StXvCR_5BH++gZWch7Pgx97HNK-n7rG_d3aDUaNw@HIDDEN>
References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN>
<CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN>
<87tsvscsmj.fsf@HIDDEN>
<CAN+1Hbr-2-StXvCR_5BH++gZWch7Pgx97HNK-n7rG_d3aDUaNw@HIDDEN>
Date: Sun, 08 Feb 2026 10:03:16 +0100
Message-ID: <87jywnd2uj.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Provags-ID: V03:K1:cMsRBgMUK5duonPnUA+s25Z6q9EhKINi9eywRc/p5U0ZmFRmDxX
6EZUyWRy466Xzs7QpVwtv/wSoDWMaH2b/eVT/R8cNmvcCnS0DlWlZXFEej8zTjsIUoT+YET
bWkU3r6b4ZgrRYRVhGJ+mdhPQUn914AjgvcZCwM7IQS0XP/ldabGZZJsE9IBbRNRuh0miTn
NsxR93N4BnFiuOolVdcUg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:1N32a+YlIXY=;VbsnwDQF7k2z6vEkwo4pFyY77lu
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
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 80348
Cc: 80348 <at> debbugs.gnu.org, Andrew Cohen <acohen@HIDDEN>,
eric@HIDDEN, Morgan Smith <Morgan.J.Smith@HIDDEN>,
Daniel Mendler <mail@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)
St=C3=A9phane Marks <shipmints@HIDDEN> writes:
Hi St=C3=A9phane,
> A sleep event has the form '(sleep-event STATE)'. So we can add a
> 'sleep-event' defstruct for convenience:
>
> --8<---------------cut here---------------start------------->8---
> (cl-defstruct (sleep-event (:type list) :named) state)
> --8<---------------cut here---------------end--------------->8---
>
> Is it okay to put cl- functions in bindings.el? I did it anyway but
> we can undo it.
As Eli said, we likely don't need this in bindings.el. Let's assume there
is only one canonical implementation of sleep-event-handler, provided by=20
system-sleep.el. The code of sleep-event-handler and
system-sleep--sleep-event-function could be merged, and we would need
only one of the sleep-event-functions and system-sleep-event-functions
user options. Everything in bindings.el could be movved to system-sleep.el.
I like this approach.
Btw, a better approach for the defstruct would be
--8<---------------cut here---------------start------------->8---
(cl-defstruct
(sleep-event (:type list) :named
(:constructor nil)
(:constructor make-sleep-event (state)))
state)
--8<---------------cut here---------------end--------------->8---
> --8<---------------cut here---------------start------------->8---
> (insert-special-event (make-sleep-event :state 'pre-sleep)))
> --8<---------------cut here---------------end--------------->8---
This is then
--8<---------------cut here---------------start------------->8---
(insert-special-event (make-sleep-event 'pre-sleep))
--8<---------------cut here---------------end--------------->8---
Best regards, Michael.
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.
Received: (at 80348) by debbugs.gnu.org; 8 Feb 2026 06:17:17 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 08 01:17:17 2026
Received: from localhost ([127.0.0.1]:43516 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1voy6a-00073H-E5
for submit <at> debbugs.gnu.org; Sun, 08 Feb 2026 01:17:17 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:42108)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1voy6U-00071L-OH
for 80348 <at> debbugs.gnu.org; Sun, 08 Feb 2026 01:17:10 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
id 1voy6J-00027K-Gi; Sun, 08 Feb 2026 01:16:55 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
Date; bh=4v+akmf8bD9frM7Lofya/SLV/OFu/yB7I9YpN3p9CyI=; b=oPkj7w1/lsvjulanbVt/
Vtr7Ug81YXF4viya4Xh9jdR/1GV7qMNIwnJcmscUz6IxfoH73BNlENLzlH5b+i2eR5ao6yzna2v2b
Jl0H5bLvQhWO+3LUqf/BEYQDCBqeE3q8+tWdfGw65OeyoJgAetNXypUDZitU11O/ntA7Ux+U35lVa
3HaRxYsVQNh0eTb02chU7k7r1lUzNMdhkz8FBZEUbXng6i4JiEe1YAcVIkFlt4K7Bb4PglO98Pfnd
6oBKPl3OEfPY6EVtioIsemuAAJMTAlp0kHHgS5TPaTltcrRObO/JWlK1Lyof9rCw8EkQPvaObUj6J
8T1zjCvypXSCqQ==;
Date: Sun, 08 Feb 2026 08:16:52 +0200
Message-Id: <861pivvjxn.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN>
In-Reply-To: <CAN+1HbqdV2oXQjXi07X8hSgX9A_nYOD+rAWHqfm2XCAfxkNtTQ@HIDDEN>
(message from =?utf-8?Q?St=C3=A9phane?= Marks on Sat, 7 Feb 2026 14:33:03
-0500)
Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake
event package
References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN>
<CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN>
<868qd4v36l.fsf@HIDDEN>
<CAN+1HbqdV2oXQjXi07X8hSgX9A_nYOD+rAWHqfm2XCAfxkNtTQ@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 80348
Cc: acohen@HIDDEN, eric@HIDDEN, mail@HIDDEN,
Morgan.J.Smith@HIDDEN, michael.albinus@HIDDEN, monnier@HIDDEN,
80348 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
> From: Stéphane Marks <shipmints@HIDDEN>
> Date: Sat, 7 Feb 2026 14:33:03 -0500
> Cc: Stefan Monnier <monnier@HIDDEN>, 80348 <at> debbugs.gnu.org, acohen@HIDDEN,
> mail@HIDDEN, eric@HIDDEN, michael.albinus@HIDDEN,
> Morgan.J.Smith@HIDDEN
>
> > @cindex @code{sleep-event} event
> > -@item (sleep-event @var{sleep-wake})
> > -This event is injected when the device Emacs is running on enters or
> > -leaves the sleep state. A non-@code{nil} @var{sleep-wake} indicates
> > -entering the sleep state.
> > +@item (sleep-event @var{state})
> > +This event is injected when the device Emacs is running on is about to
> > +enter a sleep state, or has just awoken from one. @var{state} will be
> > +the symbol @code{pre-sleep} or @code{post-wake}.
>
> Why did you need to make this incompatible change? Was there a
> problem leaving the values and meaning of the parameter as they were
> before? AFAIU, there are still only two possible values, so nil and
> non-nil should still do the job, no?
>
> sleep-event was created by Michael specifically for this feature (though we stopped working on it a while ago
> and I just picked it back up) so it is purely new and can't be incompatible since it's never been published. When
> originally contemplated, it was D-Bus only which uses a somewhat opaque true/false PrepareForSleep value. I
> prefer using symbols because it allows expansion into pre-shutdown and perhaps other related states that
> might be of interest that won't fit into a boolean.
It is impossible to discuss hypothetical future changes without
specifics. If you have plans or ideas for adding values, let's hear
them now, because it could be that there will be comments and
alternative suggestions for how to extend this in the future and which
values to have there for now. Alternatively (and from my POV
preferably) we could just leave the boolean value there for now, and
defer the changes for when (and if) we have the other possibilities.
Btw, no one said that the set of values cannot include nil, t, and
some other non-nil values, when we decide to have more than just two.
By contrast, having just two non-nil values always raises a brow.
> > +(defcustom sleep-event-functions nil
> ^^^^^^^^^^^^^^^^^^^^^
> The manual said "system-sleep-event-functions".
>
> I think you're referring to bindings.el which is a hook for the event pump itself. We will discourage people from
> using it but as there can be only one callback per event handler, Michael and I thought it was wise to add a
> hook.
I asked below why do we need two hooks which are similarly named, but
use different functions. After re-reading the code, my understanding
is as follows:
. the sleep event is by default bound to sleep-event-handler
. sleep-event-handler does nothing except running the
sleep-event-functions nook
. sleep-event-functions hook is nil by default, but can be
customized by users to add their functions
. loading system-sleep adds its own hook,
system-sleep--sleep-event-function, to sleep-event-functions
. system-sleep--sleep-event-function calls the
system-sleep-event-functions hook with each sleep event
. system-sleep-event-functions is a user option which by default
does nothing
Is that correct? If so, isn't that too complicated? Why cannot we
have sleep-event-handler process the events directly and call a hook,
like other special-event handlers do? And why does loading
system-sleep have to add functions to hooks which are user options?
> > +(require 'dbus)
>
> Shouldn't we load dbus only on systems where DBus is supported?
>
> We didn't in system-taskbar but I can try to amend both and make it a compile-time only require up there and
> require it explicitly in the dbus implementation.
I think loading dbus when it is not supported or needed should be
avoided.
> > +(defgroup system-sleep nil
> > + "System sleep/wake blocking and event management."
> > + :group 'convenience
>
> Why "convenience"? Isn't there a better parent group to use? And if
> there isn't a better one, how about adding such a group?
> system-interface sounds good, for example.
>
> No idea. All ears for one of the keywords that makes more sense. I thought there were discussions about the
> state of affairs of keywords and I thought it wise to reuse.
I suggested a keyword above.
> > + (if (memq token system-sleep--sleep-block-tokens)
> > + (progn
> > + (setq system-sleep--sleep-block-tokens
> > + (remq token system-sleep--sleep-block-tokens))
> > + (if (w32-unblock-system-sleep)
> > + t
> > + (warn "Unable to unblock system sleep")
>
> If and when this warning is issued, AFAIU it means that the sleep is
> blocked, but the token of its blocker is lost forever, because it was
> already removed from the list.
>
> If the native APIs fail here (which on ns can only fail if it doesn't know the token passed to it, and w32 can't fail),
> the token is useless anyway.
Sorry, I don't follow. First, this is only about w32 (I'm not
familiar with NS APIs you use and on't know if they can fail). And
second, the documentation of SetThreadExecutionState definitely says
that it can fail: it returns zero if that happens.
> What then the user could do to fix
> this situation? Will, for example, killing Emacs do that?
>
> When the Emacs process dies, blocks are released on all platforms. I mentioned this in the code and in the
> documentation.
Maybe the warning message and/or the doc string should mention that?
> We could instead mandate system-sleep as the only place to get
> and process sleep events, get rid of this hook and do this in system-sleep (keymap-set special-event-map
> "<sleep-event>" #'system-sleep--sleep-event-handler)
See above. Yes, I think the arrangement with two hooks that are user
options is too complicated.
> > +/* We assume SetThreadExecutionState is always available, being Windows
> > + XP+. RegisterSuspendResumeNotification is Windows 8+ so we look this
> > + up. */
>
> We don't yet require Windows XP for the Windows builds of Emacs, so
> SetThreadExecutionState must also be loaded dynamically from its DLL.
>
> I'll do that. I actually do not know the minimum version of Windows that Emacs supports and I assumed it was
> at least XP.
No, we definitely support W2K, and hope that support for Windows 9X
(98 and Me) is not yet totally dead, although it's been a while since
anyone reported any experience from those systems.
> Also, shouldn't this return nil if the call to SetThreadExecutionState
> failed?
>
> Done. I could find no evidence of how SetThreadExecutionState can fail so I didn't bother. I will do this to be
> complete.
See above: the MS documentation clearly describes what happens if it
fails.
> And I'm not sure I understand the effect of calling
> w32-block-system-sleep several times without calling
> w32-unblock-system-sleep. It isn't like the OS counts the number of
> callers and handles this as a reference count, which must be zero for
> the system to be able to sleep, right?
>
> The idea is that packages like gnus and compile and the user's own code will all take blocks simultaneously so
> they each need to take and release their locks. Each unblock call decrements the count and when 0 we
> unblock the system for real. We manually emulate what Windows could have done for us and keep a count and
> assign an id to keep the platform implementations sufficiently alike to make the ELisp interface pleasant.
OK, but then the condition for unblocking:
> + /* One fewer block. */
> + if (--sleep_block_count == 0
> + && sleep_block_execution_state)
> + sleep_block_execution_state =
> + SetThreadExecutionState (sleep_block_execution_state
> + & ~(ES_DISPLAY_REQUIRED | ES_SYSTEM_REQUIRED));
worries me, because it relies on the value of
sleep_block_execution_state, which is overwritten upon each call to
SetThreadExecutionState. Why do we need to depend on that value?
> > +DEFUN ("w32-unblock-system-sleep",
> > + Fw32_unblock_system_sleep,
> > + Sw32_unblock_system_sleep,
> > + 0, 0, 0,
> > + doc: /* Unblock system idle sleep.
> > +Return non-nil if the TOKEN block was unblocked. */)
> > + (void)
> > +{
> > + /* No blocks to unblock. */
> > + if (sleep_block_count == 0)
> > + return Qnil;
>
> This seems wrong: why indicate failure in this trivial case?
>
> We can go either way on this. I thought it prudent to indicate failure for any debugging scenarios we might
> encounter in the wild.
But it isn't a failure, is it? It is okay to call unblock when no one
called block, right?
> > + /* System sleep support. */
> > + DEFSYM (Qpre_sleep, "pre-sleep");
> > + DEFSYM (Qpost_wake, "post-wake");
>
> These symbols should be defined in one place and only once, not
> separately for each system. (And I hope we won't need them at all,
> see above.)
>
> Where would you like them to be defined?
It doesn't matter. fns.c, perhaps, or data.c.
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.
Received: (at 80348) by debbugs.gnu.org; 7 Feb 2026 23:50:01 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 07 18:50:01 2026
Received: from localhost ([127.0.0.1]:40749 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vos3r-0001VL-Tl
for submit <at> debbugs.gnu.org; Sat, 07 Feb 2026 18:50:01 -0500
Received: from mail-vk1-xa34.google.com ([2607:f8b0:4864:20::a34]:45386)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <shipmints@HIDDEN>)
id 1vos3o-0001VC-OF
for 80348 <at> debbugs.gnu.org; Sat, 07 Feb 2026 18:49:58 -0500
Received: by mail-vk1-xa34.google.com with SMTP id
71dfb90a1353d-566fe6a4ceeso977773e0c.3
for <80348 <at> debbugs.gnu.org>; Sat, 07 Feb 2026 15:49:56 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; t=1770508196; cv=none;
d=google.com; s=arc-20240605;
b=ZwD7vrv7HUX6N/5JdIG4R1LsR+Wm6ESrdLyhJJiYGfaAjs0NZvk7xjR8V026HEw9SR
7hUrn1ac77rUnBJhupOc5gvgDvGs3BjFYHhTua+SHJKPWDks7QjW31+pjxwGKtpZQBia
f8mGkee4kzvL/g27QD2078TLMOhkBTf1D6oXb0IH0TQzyPzzsjBf0bMd1G1jf+yLGmhd
/Rz6jYDLJ1xxwoKhOWPIJCfglJE9Mh3nWLXGCGrKhoWH3lpYAOxdu7mjZtwE09wkInwJ
q3TuHo7Dbjhs153dIpz3Dn7872OxbPf5VPDD1nS5ck29LYcS3cZFjwRa7EFYc+LHe7RK
l0SA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;
s=arc-20240605;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:dkim-signature;
bh=UBVhs6KqV+Vzha90fZqtkUi3h7V80LEEbWeWWv93Y9s=;
fh=0YXx3M2jcfXXyyEbtcM0yHus1qXquyIYcssxIy1P6Bs=;
b=XI3BAsRKpS3oAOHpEoBV9eD83n6USMcrVsDZK3B95sMQ47X8lEufbSxkPpuxh0Xhhz
8blWBYk+wM8a7cdErUlxN6NxTehLAt4sGHNc4/t+/fVZHik+cEfMSGHme/cDbSzxAKBh
pwZxL+xL/qZ2UAKtitIG/gsbUEwDCOFm5xKs1KmUEJwCXuPKb32yAnO5/u8tH+5R757t
J3fqlpfc4nzwUJv5QMzY72QrsUL9e1yM+b0cILbISvoRflNKBOA6kEMeiU08l5PAWHRq
SN9GEi8h9tvt8xPoG7pW7tFHbuHdQXgwfZKu27DSbjw/0TJkkk+fkngOEIENZd33hUYi
ApsA==; darn=debbugs.gnu.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1770508196; x=1771112996; 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=UBVhs6KqV+Vzha90fZqtkUi3h7V80LEEbWeWWv93Y9s=;
b=D/PdHfXecZ07lhprw7FYgu+9IcJuaDKCSAavVFeY0zneJ64nrSDdRDpGivN1iWEtze
JVbQhq/3KEo/7OHfVbkpz59JgIHXjwYZGXuENMIO1cRjV2azLEK0tlYbYsswpwEeXnxG
UAsg9vrXPiEeGVIsQcQcDzIn+5BttiqlMyklWH4V74NVa67cbPtGw29XM7kVEKTEcXQb
3nCdcEhjAcxpX6zKtvwLYlVAs0+dOQyyvhmmbQm9cOxVM5m4p6ZaBzboKc8uea/f6qol
Qw4klDoVTOb6Rxx+MB7AFQdytpi9ZpLlDleibfhbL/4JXTSGPu7F7GlGIZJpxKUPmyu3
bvng==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1770508196; x=1771112996;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=UBVhs6KqV+Vzha90fZqtkUi3h7V80LEEbWeWWv93Y9s=;
b=YkNQ5NdoOqbJcqaKA/a0/3IilXzyq+6MS2OBJwhueZFhyYHFKy+iKOx0G3Ll0k4s3y
w6FC8HuYilV299uetQ37Zv7VFhzhzSxSVrsEyGkCtY+B1rYbR0tBDDtSvmKioRq0QOs8
hwXaUE+fsOtSbtSRqIHecXLfnLno74jPbsQ2/1dzXaNszWCPpAkWbkiszeUY5JJCj04Y
bvEc4ssAMadXHhJE5ptZeDYRyBFwR1kFVpHogK+VRVHfKzvXOaW2tSxSaYBBDfroPgjg
znsTOSkLaHWyz829YLue8BFAKqzExY+C3bolJeezec4qGOgFrNOmD9GPrOdA72382nj7
URiQ==
X-Forwarded-Encrypted: i=1;
AJvYcCWwmymYXJyrB0h+tX3CZdbvYkaQXgilvw9NfGTAsNPGiX7NwJcSraIOmAFI25hKVA68xJuPMQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YyKj1YhlCjevGKOuJP88fitODzT09vUiHR04rYJIJAw7bq+18lB
C5lLzuJS5xQq+BZZmaK4m5HWQkHkcIuSmw69wlDdSOu3sNshnqq/j5JEnJlkAxwSp+q80jQT976
3zm5QJ/ZWruzr2xryyoojT+PNTvwX180=
X-Gm-Gg: AZuq6aKly3E9gP557OtbJD5uXSOA6vEqiaJ144+85jL43FZNbBXf0bzsVOn3/3CVYmg
/GMb9IigUx4l2zvenTTtG0Zoe0z2zdQpP8vQisajPw6sYvviXti4rrcpC8v+Hn8wxyL5+30J8mY
0DYXAoQtSxJ8LdArj8JG3EuXkOsT8kknyuvTE/WxRAEofIP3k7hYjvrEjH+g2Qza2+KrdUkcH9D
JAPxsfH71aWaNCK//qZ35q/yHMPn1UqoDZHcSudRrRfHfFSLMugoy4ybu+vUojO87qHnRNh3EC9
H9NEKi6KzoZ9kinKYGQotn9Nw5ULwCXd7CbzOcQHQFctoqmU/Nw=
X-Received: by 2002:a05:6102:3a0f:b0:5f5:7791:c2cb with SMTP id
ada2fe7eead31-5fae8c85680mr1727522137.41.1770508195656; Sat, 07 Feb 2026
15:49:55 -0800 (PST)
MIME-Version: 1.0
References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN>
<CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN>
<868qd4v36l.fsf@HIDDEN>
<CAN+1HbqDpnA1dex3A00D3uvYf4C-WRAQ3g5-BxxGJimj949+tA@HIDDEN>
<CAN+1HbpCbgM=Pj5wssFc6AF_C4bbPM4R4jTMcdkqe5qTBcXBLQ@HIDDEN>
In-Reply-To: <CAN+1HbpCbgM=Pj5wssFc6AF_C4bbPM4R4jTMcdkqe5qTBcXBLQ@HIDDEN>
From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>
Date: Sat, 7 Feb 2026 18:49:44 -0500
X-Gm-Features: AZwV_QibWNjnmpZNASmu9gjnObIy5tQ6WJnwyS5Fs0cUiA8hM0xlXq03fVo1t7s
Message-ID: <CAN+1Hbpj081PV=OZi-FYPbvJLB8S_v+xdmPAwKmA52iKKsHG-A@HIDDEN>
Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake
event package
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: multipart/mixed; boundary="0000000000001311a3064a44901c"
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 80348
Cc: acohen@HIDDEN, eric@HIDDEN, mail@HIDDEN,
Morgan.J.Smith@HIDDEN, michael.albinus@HIDDEN,
Stefan Monnier <monnier@HIDDEN>, 80348 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 0.0 (/)
--0000000000001311a3064a44901c
Content-Type: multipart/alternative; boundary="0000000000001311a1064a44901a"
--0000000000001311a1064a44901a
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
On Sat, Feb 7, 2026 at 6:10=E2=80=AFPM St=C3=A9phane Marks <shipmints@gmail=
.com> wrote:
> On Sat, Feb 7, 2026 at 5:42=E2=80=AFPM St=C3=A9phane Marks <shipmints@gma=
il.com> wrote:
>
>> On Sat, Feb 7, 2026 at 1:06=E2=80=AFPM Eli Zaretskii <eliz@HIDDEN> wrot=
e:
>>
>>> > Cc: Andrew Cohen <acohen@HIDDEN>, Daniel Mendler <
>>> mail@HIDDEN>,
>>> > eric@HIDDEN, Michael Albinus <michael.albinus@HIDDEN>,
>>> > Morgan Smith <Morgan.J.Smith@HIDDEN>
>>> > From: St=C3=A9phane Marks <shipmints@HIDDEN>
>>> > Date: Sat, 7 Feb 2026 10:34:58 -0500
>>> >
>>> > On Sat, Feb 7, 2026 at 10:32=E2=80=AFAM St=C3=A9phane Marks <shipmint=
s@HIDDEN>
>>> wrote:
>>> >
>>> > After some delay this year, I finally worked on this package inspire=
d
>>> by recent improvements Michael
>>> > made to dbus.
>>> >
>>> > This package provides platform-neutral interfaces to block your
>>> system from entering idle sleep with
>>> > control over whether the display remains active, and a hook to
>>> process pre-sleep and post-wake events.
>>> >
>>> > Implementations are for D-Bus on GNU/Linux, and for macOS/GNUstep an=
d
>>> MS-Windows using native
>>> > APIs.
>>> >
>>> > Michael suggests that the gnus sleep API be based on `system-sleep`
>>> so that it works across other
>>> > platforms and also consolidates system sleep logic in one place.
>>> >
>>> > And just as we introduced an optional `progress-report` to
>>> compile.el, we can now introduce an optional
>>> > platform-neutral idle sleep block.
>>> >
>>> > Patch incoming when the bug number is assigned.
>>> >
>>> > Attached. You'll need recent master or at least this commit
>>> 89209a83b60c87d97f0c05dbf6cb29ff3cdf3d5a to
>>> > get the dbus improvements.
>>>
>>> Thanks, please see some comments below.
>>>
>>> > @cindex @code{sleep-event} event
>>> > -@item (sleep-event @var{sleep-wake})
>>> > -This event is injected when the device Emacs is running on enters or
>>> > -leaves the sleep state. A non-@code{nil} @var{sleep-wake} indicates
>>> > -entering the sleep state.
>>> > +@item (sleep-event @var{state})
>>> > +This event is injected when the device Emacs is running on is about =
to
>>> > +enter a sleep state, or has just awoken from one. @var{state} will =
be
>>> > +the symbol @code{pre-sleep} or @code{post-wake}.
>>>
>>> Why did you need to make this incompatible change? Was there a
>>> problem leaving the values and meaning of the parameter as they were
>>> before? AFAIU, there are still only two possible values, so nil and
>>> non-nil should still do the job, no?
>>>
>>> > +@noindent
>>> > +Examples of system sleep functions:
>>>
>>> I think this feature is too minor to justify examples in the manual,
>>> let alone such elaborate examples. We are trying not to make the
>>> ELisp Reference manual too large (it already prints in two volumes).
>>>
>>> > +(defcustom sleep-event-functions nil
>>> ^^^^^^^^^^^^^^^^^^^^^
>>> The manual said "system-sleep-event-functions".
>>>
>>> > + "Abnormal hook invoked on sleep events.
>>> > +Each function is called with the event."
>>>
>>> The manual described the argument differently.
>>>
>>> > +(defun sleep-event-handler (event)
>>> > + "`sleep-event' EVENT handler."
>>> > + (declare (completion ignore))
>>> > + (interactive "e")
>>> > + (run-hook-with-args 'sleep-event-functions event))
>>>
>>> And this function calls the hook not as the ELisp manual said they
>>> will be called.
>>>
>>> > +(require 'dbus)
>>>
>>> Shouldn't we load dbus only on systems where DBus is supported?
>>>
>>> > +(defgroup system-sleep nil
>>> > + "System sleep/wake blocking and event management."
>>> > + :group 'convenience
>>>
>>> Why "convenience"? Isn't there a better parent group to use? And if
>>> there isn't a better one, how about adding such a group?
>>> system-interface sounds good, for example.
>>>
>>> > +;;;###autoload
>>> > +(defcustom system-sleep-event-functions nil
>>> > + "Abnormal hook invoked on system sleep events.
>>> > +Each function is called with one argument which will be one of these
>>> > +symbols `pre-sleep' or `post-wake'.
>>>
>>> ??? Another user option? Do we need both?
>>>
>>> > +Handling `pre-sleep' events should be done as fast as possible.
>>> Systems
>>> > +often grant a very short pre-sleep processing interval, typically
>>> > +ranging between 2 and 5 seconds. The system may sleep even if your
>>> > +processing is not complete, so be sure you do as little as possible.
>>> > +For example, your function could close active connections or serial
>>> > +ports.
>>> > +
>>> > +Handling `post-wake' events offers more leeway. Your function could
>>> > +reestablish connections.
>>>
>>> Please use \\+` to make sure `pre-sleep' and `post-wake' will not be
>>> shown as links.
>>>
>>> > + (progn
>>> > + (push token system-sleep--sleep-block-tokens)
>>> > + token)
>>>
>>> Since this list of tokens seems to be a data structure that must be
>>> kept consistent with the system APIs, I think all these push and remq
>>> calls which manipulate it should run with quit inhibited, and should
>>> perhaps also handle any errors that could happen, so that the list of
>>> tokens is always correct.
>>>
>>> > + (if (memq token system-sleep--sleep-block-tokens)
>>> > + (progn
>>> > + (setq system-sleep--sleep-block-tokens
>>> > + (remq token system-sleep--sleep-block-tokens))
>>> > + (if (w32-unblock-system-sleep)
>>> > + t
>>> > + (warn "Unable to unblock system sleep")
>>>
>>> If and when this warning is issued, AFAIU it means that the sleep is
>>> blocked, but the token of its blocker is lost forever, because it was
>>> already removed from the list. What then the user could do to fix
>>> this situation? Will, for example, killing Emacs do that?
>>>
>>> > +(if (and (system-sleep--set-back-end)
>>> > + (system-sleep--enable))
>>> > + (add-hook 'sleep-event-functions
>>> #'system-sleep--sleep-event-function)
>>>
>>> If sleep-event-functions is a user option, Emacs should not set its
>>> value.
>>>
>>> > --- a/src/w32fns.c
>>> > +++ b/src/w32fns.c
>>> > @@ -44,6 +44,7 @@ #define COBJMACROS /* Ask for C definitions for
>>> COM. */
>>> > #include <oleidl.h>
>>> > #include <objidl.h>
>>> > #include <ole2.h>
>>> > +#include <powrprof.h> /* For system sleep support. */
>>>
>>> Why do we need this header? In my MinGW headers it is absent.
>>>
>>> > +/* We assume SetThreadExecutionState is always available, being
>>> Windows
>>> > + XP+. RegisterSuspendResumeNotification is Windows 8+ so we look
>>> this
>>> > + up. */
>>>
>>> We don't yet require Windows XP for the Windows builds of Emacs, so
>>> SetThreadExecutionState must also be loaded dynamically from its DLL.
>>>
>>> > +DEFUN ("w32-block-system-sleep",
>>> > + Fw32_block_system_sleep,
>>> > + Sw32_block_system_sleep,
>>> > + 1, 1, 0,
>>> > + doc: /* Block system idle sleep.
>>> > +If ALLOW-DISPLAY-SLEEP is non-nil, block the screen from sleeping.
>>> > +Return a token to unblock this block using `w32-unblock-system-sleep=
',
>>> > +or nil if the block fails. */)
>>> > + (Lisp_Object allow_display_sleep)
>>> > +{
>>> > + /* ES_CONTINUOUS keeps the state until cleared. */
>>> > + EXECUTION_STATE new_state =3D ES_SYSTEM_REQUIRED | ES_CONTINUOUS;
>>> > + if (NILP (allow_display_sleep))
>>> > + new_state |=3D ES_DISPLAY_REQUIRED;
>>> > +
>>> > + sleep_block_execution_state =3D SetThreadExecutionState (new_state=
);
>>> > +
>>> > + /* One more block. */
>>> > + ++sleep_block_count;
>>> > +
>>> > + /* Synthesize a token. */
>>> > + return make_fixnum (sleep_block_id);
>>>
>>> Shouldn't sleep_block_id be incremented? If not, all the cookies in
>>> the list of tokens will be identical, no?
>>>
>>> Also, shouldn't this return nil if the call to SetThreadExecutionState
>>> failed?
>>>
>>> And I'm not sure I understand the effect of calling
>>> w32-block-system-sleep several times without calling
>>> w32-unblock-system-sleep. It isn't like the OS counts the number of
>>> callers and handles this as a reference count, which must be zero for
>>> the system to be able to sleep, right?
>>>
>>> > +DEFUN ("w32-unblock-system-sleep",
>>> > + Fw32_unblock_system_sleep,
>>> > + Sw32_unblock_system_sleep,
>>> > + 0, 0, 0,
>>> > + doc: /* Unblock system idle sleep.
>>> > +Return non-nil if the TOKEN block was unblocked. */)
>>> > + (void)
>>> > +{
>>> > + /* No blocks to unblock. */
>>> > + if (sleep_block_count =3D=3D 0)
>>> > + return Qnil;
>>>
>>> This seems wrong: why indicate failure in this trivial case?
>>>
>>> > + /* One fewer block. */
>>> > + if (--sleep_block_count =3D=3D 0
>>> > + && sleep_block_execution_state)
>>> > + sleep_block_execution_state =3D
>>> > + SetThreadExecutionState (sleep_block_execution_state
>>> > + & ~(ES_DISPLAY_REQUIRED |
>>> ES_SYSTEM_REQUIRED));
>>> > + return Qt;
>>>
>>> And here you return t regardless of whether SetThreadExecutionState
>>> succeeded or failed. Why?
>>>
>>> > +DEFUN ("w32-system-sleep-block-count",
>>> > + Fw32_system_sleep_block_count,
>>> > + Sw32_system_sleep_block_count,
>>> > + 0, 0, 0,
>>> > + doc: /* Return the w32 sleep block count. */)
>>> > + (void)
>>> > +{
>>> > + return make_fixnum (sleep_block_count);
>>> > +}
>>>
>>> What is the meaning of the return value in the w32 case? See my
>>> questions above regarding the number of callers.
>>>
>>> > +typedef ULONG (CALLBACK *PMY_DEVICE_NOTIFY_CALLBACK_ROUTINE)
>>> > + (PVOID Context, ULONG Type, PVOID Setting);
>>> > +
>>> > +static ULONG
>>> > +sleep_notification_callback(PVOID _Context, ULONG Type, PVOID
>>> _Setting)
>>>
>>> I think this should use ALIGN_STACK, see w32term.h for the reasons.
>>>
>>> > + /* System sleep support. */
>>> > + DEFSYM (Qpre_sleep, "pre-sleep");
>>> > + DEFSYM (Qpost_wake, "post-wake");
>>>
>>> These symbols should be defined in one place and only once, not
>>> separately for each system. (And I hope we won't need them at all,
>>> see above.)
>>>
>>
>> See attached revised patch. I addressed everyone's comments, so far.
>> Except for using `cl-defstruct` in bindings.el which I skipped. I retes=
ted
>> on Linux, macOS, MS-Windows.
>>
>
> I forgot one thing. To avoid loading dbus unless needed. I'll do that
> next.
>
Done. And I fixed a few typos and added inline example code to process a
sleep-event to the manual.
--0000000000001311a1064a44901a
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon=
t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">=
On Sat, Feb 7, 2026 at 6:10=E2=80=AFPM St=C3=A9phane Marks <<a href=3D"m=
ailto:shipmints@HIDDEN">shipmints@HIDDEN</a>> wrote:</span></div><=
/div><div class=3D"gmail_quote gmail_quote_container"><blockquote class=3D"=
gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(20=
4,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div style=
=3D"font-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-=
serif">On Sat, Feb 7, 2026 at 5:42=E2=80=AFPM St=C3=A9phane Marks <<a hr=
ef=3D"mailto:shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>=
> wrote:</span></div></div><div class=3D"gmail_quote"><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg=
b(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div sty=
le=3D"font-family:monospace"><span style=3D"font-family:Arial,Helvetica,san=
s-serif">On Sat, Feb 7, 2026 at 1:06=E2=80=AFPM Eli Zaretskii <<a href=
=3D"mailto:eliz@HIDDEN" target=3D"_blank">eliz@HIDDEN</a>> wrote:</spa=
n></div></div><div class=3D"gmail_quote"><blockquote class=3D"gmail_quote" =
style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);pa=
dding-left:1ex">> Cc: Andrew Cohen <<a href=3D"mailto:acohen@HIDDEN" =
target=3D"_blank">acohen@HIDDEN</a>>, Daniel Mendler <<a href=3D"mail=
to:mail@HIDDEN" target=3D"_blank">mail@HIDDEN</a>>=
,<br>
>=C2=A0 <a href=3D"mailto:eric@HIDDEN" target=3D"_blank">eri=
c@HIDDEN</a>, Michael Albinus <<a href=3D"mailto:michael.alb=
inus@HIDDEN" target=3D"_blank">michael.albinus@HIDDEN</a>>,<br>
>=C2=A0 Morgan Smith <<a href=3D"mailto:Morgan.J.Smith@HIDDEN" t=
arget=3D"_blank">Morgan.J.Smith@HIDDEN</a>><br>
> From: St=C3=A9phane Marks <<a href=3D"mailto:shipmints@HIDDEN" t=
arget=3D"_blank">shipmints@HIDDEN</a>><br>
> Date: Sat, 7 Feb 2026 10:34:58 -0500<br>
> <br>
> On Sat, Feb 7, 2026 at 10:32=E2=80=AFAM St=C3=A9phane Marks <<a hre=
f=3D"mailto:shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>&=
gt; wrote:<br>
> <br>
>=C2=A0 After some delay this year, I finally worked on this package ins=
pired by recent improvements Michael<br>
>=C2=A0 made to dbus.<br>
> <br>
>=C2=A0 This package provides platform-neutral interfaces to block your =
system from entering idle sleep with<br>
>=C2=A0 control over whether the display remains active, and a hook to p=
rocess pre-sleep and post-wake events.<br>
> <br>
>=C2=A0 Implementations are for D-Bus on GNU/Linux, and for macOS/GNUste=
p and MS-Windows using native<br>
>=C2=A0 APIs.<br>
> <br>
>=C2=A0 Michael suggests that the gnus sleep API be based on `system-sle=
ep` so that it works across other<br>
>=C2=A0 platforms and also consolidates system sleep logic in one place.=
<br>
> <br>
>=C2=A0 And just as we introduced an optional `progress-report` to compi=
le.el, we can now introduce an optional<br>
>=C2=A0 platform-neutral idle sleep block.<br>
> <br>
>=C2=A0 Patch incoming when the bug number is assigned.<br>
> <br>
> Attached.=C2=A0 You'll need recent master or at least this commit =
89209a83b60c87d97f0c05dbf6cb29ff3cdf3d5a to<br>
> get the dbus improvements.<br>
<br>
Thanks, please see some comments below.<br>
<br>
>=C2=A0 @cindex @code{sleep-event} event<br>
> -@item (sleep-event @var{sleep-wake})<br>
> -This event is injected when the device Emacs is running on enters or<=
br>
> -leaves the sleep state.=C2=A0 A non-@code{nil} @var{sleep-wake} indic=
ates<br>
> -entering the sleep state.<br>
> +@item (sleep-event @var{state})<br>
> +This event is injected when the device Emacs is running on is about t=
o<br>
> +enter a sleep state, or has just awoken from one.=C2=A0 @var{state} w=
ill be<br>
> +the symbol @code{pre-sleep} or @code{post-wake}.<br>
<br>
Why did you need to make this incompatible change?=C2=A0 Was there a<br>
problem leaving the values and meaning of the parameter as they were<br>
before?=C2=A0 AFAIU, there are still only two possible values, so nil and<b=
r>
non-nil should still do the job, no?<br>
<br>
> +@noindent<br>
> +Examples of system sleep functions:<br>
<br>
I think this feature is too minor to justify examples in the manual,<br>
let alone such elaborate examples.=C2=A0 We are trying not to make the<br>
ELisp Reference manual too large (it already prints in two volumes).<br>
<br>
> +(defcustom sleep-event-functions nil<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ^^^^^^^^^^^^^^^^^^^^^<br>
The manual said "system-sleep-event-functions".<br>
<br>
> +=C2=A0 "Abnormal hook invoked on sleep events.<br>
> +Each function is called with the event."<br>
<br>
The manual described the argument differently.<br>
<br>
> +(defun sleep-event-handler (event)<br>
> +=C2=A0 "`sleep-event' EVENT handler."<br>
> +=C2=A0 (declare (completion ignore))<br>
> +=C2=A0 (interactive "e")<br>
> +=C2=A0 (run-hook-with-args 'sleep-event-functions event))<br>
<br>
And this function calls the hook not as the ELisp manual said they<br>
will be called.<br>
<br>
> +(require 'dbus)<br>
<br>
Shouldn't we load dbus only on systems where DBus is supported?<br>
<br>
> +(defgroup system-sleep nil<br>
> +=C2=A0 "System sleep/wake blocking and event management."<b=
r>
> +=C2=A0 :group 'convenience<br>
<br>
Why "convenience"?=C2=A0 Isn't there a better parent group to=
use?=C2=A0 And if<br>
there isn't a better one, how about adding such a group?<br>
system-interface sounds good, for example.<br>
<br>
> +;;;###autoload<br>
> +(defcustom system-sleep-event-functions nil<br>
> +=C2=A0 "Abnormal hook invoked on system sleep events.<br>
> +Each function is called with one argument which will be one of these<=
br>
> +symbols `pre-sleep' or `post-wake'.<br>
<br>
??? Another user option?=C2=A0 Do we need both?<br>
<br>
> +Handling `pre-sleep' events should be done as fast as possible.=
=C2=A0 Systems<br>
> +often grant a very short pre-sleep processing interval, typically<br>
> +ranging between 2 and 5 seconds.=C2=A0 The system may sleep even if y=
our<br>
> +processing is not complete, so be sure you do as little as possible.<=
br>
> +For example, your function could close active connections or serial<b=
r>
> +ports.<br>
> +<br>
> +Handling `post-wake' events offers more leeway.=C2=A0 Your functi=
on could<br>
> +reestablish connections.<br>
<br>
Please use \\+` to make sure `pre-sleep' and `post-wake' will not b=
e<br>
shown as links.<br>
<br>
> +=C2=A0 =C2=A0 =C2=A0 (progn<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (push token system-sleep--sleep-block-tok=
ens)<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 token)<br>
<br>
Since this list of tokens seems to be a data structure that must be<br>
kept consistent with the system APIs, I think all these push and remq<br>
calls which manipulate it should run with quit inhibited, and should<br>
perhaps also handle any errors that could happen, so that the list of<br>
tokens is always correct.<br>
<br>
> +=C2=A0 (if (memq token system-sleep--sleep-block-tokens)<br>
> +=C2=A0 =C2=A0 =C2=A0 (progn<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq system-sleep--sleep-block-tokens<br=
>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (remq token system-s=
leep--sleep-block-tokens))<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (if (w32-unblock-system-sleep)<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 t<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (warn "Unable to unblock syst=
em sleep")<br>
<br>
If and when this warning is issued, AFAIU it means that the sleep is<br>
blocked, but the token of its blocker is lost forever, because it was<br>
already removed from the list.=C2=A0 What then the user could do to fix<br>
this situation?=C2=A0 Will, for example, killing Emacs do that?<br>
<br>
> +(if (and (system-sleep--set-back-end)<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(system-sleep--enable))<br>
> +=C2=A0 =C2=A0 (add-hook 'sleep-event-functions #'system-sleep=
--sleep-event-function)<br>
<br>
If sleep-event-functions is a user option, Emacs should not set its<br>
value.<br>
<br>
> --- a/src/w32fns.c<br>
> +++ b/src/w32fns.c<br>
> @@ -44,6 +44,7 @@ #define COBJMACROS /* Ask for C definitions for COM.=
=C2=A0 */<br>
>=C2=A0 #include <oleidl.h><br>
>=C2=A0 #include <objidl.h><br>
>=C2=A0 #include <ole2.h><br>
> +#include <powrprof.h> /* For system sleep support.=C2=A0 */<br>
<br>
Why do we need this header?=C2=A0 In my MinGW headers it is absent.<br>
<br>
> +/* We assume SetThreadExecutionState is always available, being Windo=
ws<br>
> +=C2=A0 =C2=A0XP+.=C2=A0 RegisterSuspendResumeNotification is Windows =
8+ so we look this<br>
> +=C2=A0 =C2=A0up.=C2=A0 */<br>
<br>
We don't yet require Windows XP for the Windows builds of Emacs, so<br>
SetThreadExecutionState must also be loaded dynamically from its DLL.<br>
<br>
> +DEFUN ("w32-block-system-sleep",<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Fw32_block_system_sleep,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Sw32_block_system_sleep,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A01, 1, 0,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0doc: /* Block system idle sleep.<br>
> +If ALLOW-DISPLAY-SLEEP is non-nil, block the screen from sleeping.<br=
>
> +Return a token to unblock this block using `w32-unblock-system-sleep&=
#39;,<br>
> +or nil if the block fails.=C2=A0 */)<br>
> +=C2=A0 (Lisp_Object allow_display_sleep)<br>
> +{<br>
> +=C2=A0 /* ES_CONTINUOUS keeps the state until cleared.=C2=A0 */<br>
> +=C2=A0 EXECUTION_STATE new_state =3D ES_SYSTEM_REQUIRED | ES_CONTINUO=
US;<br>
> +=C2=A0 if (NILP (allow_display_sleep))<br>
> +=C2=A0 =C2=A0 new_state |=3D ES_DISPLAY_REQUIRED;<br>
> +<br>
> +=C2=A0 sleep_block_execution_state =3D SetThreadExecutionState (new_s=
tate);<br>
> +<br>
> +=C2=A0 /* One more block.=C2=A0 */<br>
> +=C2=A0 ++sleep_block_count;<br>
> +<br>
> +=C2=A0 /* Synthesize a token.=C2=A0 */<br>
> +=C2=A0 return make_fixnum (sleep_block_id);<br>
<br>
Shouldn't sleep_block_id be incremented?=C2=A0 If not, all the cookies =
in<br>
the list of tokens will be identical, no?<br>
<br>
Also, shouldn't this return nil if the call to SetThreadExecutionState<=
br>
failed?<br>
<br>
And I'm not sure I understand the effect of calling<br>
w32-block-system-sleep several times without calling<br>
w32-unblock-system-sleep.=C2=A0 It isn't like the OS counts the number =
of<br>
callers and handles this as a reference count, which must be zero for<br>
the system to be able to sleep, right?<br>
<br>
> +DEFUN ("w32-unblock-system-sleep",<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Fw32_unblock_system_sleep,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Sw32_unblock_system_sleep,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A00, 0, 0,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0doc: /* Unblock system idle sleep.<br>
> +Return non-nil if the TOKEN block was unblocked.=C2=A0 */)<br>
> +=C2=A0 (void)<br>
> +{<br>
> +=C2=A0 /* No blocks to unblock.=C2=A0 */<br>
> +=C2=A0 if (sleep_block_count =3D=3D 0)<br>
> +=C2=A0 =C2=A0 return Qnil;<br>
<br>
This seems wrong: why indicate failure in this trivial case?<br>
<br>
> +=C2=A0 /* One fewer block.=C2=A0 */<br>
> +=C2=A0 if (--sleep_block_count =3D=3D 0<br>
> +=C2=A0 =C2=A0 =C2=A0 && sleep_block_execution_state)<br>
> +=C2=A0 =C2=A0 sleep_block_execution_state =3D<br>
> +=C2=A0 =C2=A0 =C2=A0 SetThreadExecutionState (sleep_block_execution_s=
tate<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 & ~(ES_DISPLAY_REQUIRED | ES_SYSTEM_REQUIR=
ED));<br>
> +=C2=A0 return Qt;<br>
<br>
And here you return t regardless of whether SetThreadExecutionState<br>
succeeded or failed.=C2=A0 Why?<br>
<br>
> +DEFUN ("w32-system-sleep-block-count",<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Fw32_system_sleep_block_count,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Sw32_system_sleep_block_count,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A00, 0, 0,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0doc: /* Return the w32 sleep block count.=
=C2=A0 */)<br>
> +=C2=A0 (void)<br>
> +{<br>
> +=C2=A0 return make_fixnum (sleep_block_count);<br>
> +}<br>
<br>
What is the meaning of the return value in the w32 case?=C2=A0 See my<br>
questions above regarding the number of callers.<br>
<br>
> +typedef ULONG (CALLBACK *PMY_DEVICE_NOTIFY_CALLBACK_ROUTINE)<br>
> +=C2=A0 (PVOID Context,=C2=A0 ULONG Type,=C2=A0 PVOID Setting);<br>
> +<br>
> +static ULONG<br>
> +sleep_notification_callback(PVOID _Context, ULONG Type, PVOID _Settin=
g)<br>
<br>
I think this should use ALIGN_STACK, see w32term.h for the reasons.<br>
<br>
> +=C2=A0 /* System sleep support.=C2=A0 */<br>
> +=C2=A0 DEFSYM (Qpre_sleep, "pre-sleep");<br>
> +=C2=A0 DEFSYM (Qpost_wake, "post-wake");<br>
<br>
These symbols should be defined in one place and only once, not<br>
separately for each system.=C2=A0 (And I hope we won't need them at all=
,<br>
see above.)<br></blockquote><div><br></div><div><div><font face=3D"monospac=
e">See attached revised patch.=C2=A0 I addressed everyone's comments, s=
o far.=C2=A0 Except for using `cl-defstruct` in bindings.el which I skipped=
.=C2=A0 I retested on Linux, macOS, MS-Windows.</font></div></div></div></d=
iv></blockquote><div><br></div><div style=3D"font-family:monospace">I forgo=
t one thing.=C2=A0 To avoid loading dbus unless needed.=C2=A0 I'll do t=
hat next.</div></div></div></blockquote><div><br></div><div class=3D"gmail_=
default" style=3D"font-family:monospace">Done.=C2=A0 And I fixed a few typo=
s and added inline example code to process a sleep-event to the manual.</di=
v></div></div>
--0000000000001311a1064a44901a--
--0000000000001311a3064a44901c
Content-Type: application/octet-stream;
name="0001-system-sleep-sleep-blocker-and-sleep-wake-event-pack.patch"
Content-Disposition: attachment;
filename="0001-system-sleep-sleep-blocker-and-sleep-wake-event-pack.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_mlcyuwhn0>
X-Attachment-Id: f_mlcyuwhn0
RnJvbSAwNzc1MTM3NWUzNWQ4OTA3NWFiNTczZDIwMzA4NWRlMjkzMTRiY2E5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo
aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgNCBGZWIgMjAyNiAxODoyMDo1NSAtMDUwMApT
dWJqZWN0OiBbUEFUQ0hdIHN5c3RlbS1zbGVlcCBzbGVlcCBibG9ja2VyIGFuZCBzbGVlcC93YWtl
IGV2ZW50IHBhY2thZ2UKIChidWcjODAzNDgpCgpUaGlzIHBhY2thZ2UgcHJvdmlkZXMgcGxhdGZv
cm0tbmV1dHJhbCBpbnRlcmZhY2VzIHRvIGJsb2NrIHlvdXIKc3lzdGVtIGZyb20gZW50ZXJpbmcg
aWRsZSBzbGVlcCBhbmQgYSBob29rIHRvIHByb2Nlc3MgcHJlLXNsZWVwCmFuZCBwb3N0LXdha2Ug
ZXZlbnRzLgoKSW1wbGVtZW50YXRpb25zIGFyZSBmb3IgRC1CdXMgb24gR05VL0xpbnV4LCBtYWNP
Uy9HTlVzdGVwLCBhbmQKTVMtV2luZG93cy4KCiogbGlzcC9iaW5kaW5ncy5lbCAoc2xlZXAtZXZl
bnQtZnVuY3Rpb25zKTogTmV3IGFibm9ybWFsIGhvb2suCihzbGVlcC1ldmVudC1oYW5kbGVyKTog
TmV3IGRlZnVuLgooc3BlY2lhbC1ldmVudC1tYXApOiBOZXcgZXZlbnQgaGFuZGxlci4KKiBsaXNw
L3N5c3RlbS1zbGVlcC5lbDogTmV3IHBhY2thZ2UuCiogc3JjL25zZm5zLm0gKEZuc19ibG9ja19z
eXN0ZW1fc2xlZXAsIEZuc191bmJsb2NrX3N5c3RlbV9zbGVlcCkKKHN5bXNfb2ZfbnNmbnMpOiBO
ZXcgZnVuY3Rpb25zLgoqIHNyYy9uc3Rlcm0ubSAoYXBwbGljYXRpb25EaWRGaW5pc2hMYXVuY2hp
bmcpOiBTdWJzY3JpYmUgdG8KcHJlLXNsZWVwIGFuZCBwb3N0LXdha2Ugbm90aWZpY2F0aW9ucy4K
KHN5c3RlbVdpbGxTbGVlcCwgc3lzdGVtRGlkV2FrZSk6IE5ldyBmdW5jdGlvbi4KKHN5bXNfb2Zf
bnN0ZXJtKTogUXByZV9zbGVlcCBRcG9zdF93YWtlIG5ldyBzeW1ib2xzLgoqIHNyYy93MzJmbnMu
YyAoRnczMl9ibG9ja19zeXN0ZW1fc2xlZXApCihGdzMyX3VuYmxvY2tfc3lzdGVtX3NsZWVwLCBG
dzMyX3N5c3RlbV9zbGVlcF9ibG9ja19jb3VudCkKKHNsZWVwX25vdGlmaWNhdGlvbl9jYWxsYmFj
aykKKHczMl9yZWdpc3Rlcl9mb3Jfc2xlZXBfbm90aWZpY2F0aW9ucyk6IE5ldyBmdW5jdGlvbi4K
KHN5bXNfb2ZfdzMyZm5zKTogU3czMl91bmJsb2NrX3N5c3RlbV9zbGVlcApTdzMyX2Jsb2NrX3N5
c3RlbV9zbGVlcCBTdzMyX3N5c3RlbV9zbGVlcF9ibG9ja19jb3VudDogTmV3CmRlZnN1YnIuCihz
eW1zX29mX3czMmZucyk6IFFwcmVfc2xlZXAsIFFwb3N0X3dha2U6IE5ldyBERUZTWU0uCiogc3Jj
L3czMnRlcm0uaCAoRnczMl9ibG9ja19zeXN0ZW1fc2xlZXApOiBOZXcgZXh0ZXJuLgoqIHNyYy93
MzJ0ZXJtLmMgKHczMl9pbml0aWFsaXplKTogQ2FsbAp3MzJfcmVnaXN0ZXJfZm9yX3NsZWVwX25v
dGlmaWNhdGlvbnMuCiogZG9jL2xpc3ByZWYvb3MudGV4aTogRG9jdW1lbnQgdGhlIHN5c3RlbS1z
bGVlcCBwYWNrYWdlLgoqIGRvYy9saXNwcmVmL2NvbW1hbmRzLnRleGk6IFVwZGF0ZSBzbGVlcC1l
dmVudCBzcGVjaWFsCmRvY3VtZW50YXRpb24uCiogZXRjL05FV1M6IEFubm91bmNlIHRoZSBuZXcg
cGFja2FnZS4KLS0tCiBkb2MvbGlzcHJlZi9jb21tYW5kcy50ZXhpIHwgIDEwICstCiBkb2MvbGlz
cHJlZi9vcy50ZXhpICAgICAgIHwgIDY4ICsrKysrKwogZXRjL05FV1MgICAgICAgICAgICAgICAg
ICB8ICAxNiArKwogbGlzcC9iaW5kaW5ncy5lbCAgICAgICAgICB8ICAxNiArKwogbGlzcC9zeXN0
ZW0tc2xlZXAuZWwgICAgICB8IDQ4NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKwogc3JjL25zZm5zLm0gICAgICAgICAgICAgICB8ICA4NCArKysrKysrCiBzcmMvbnN0ZXJt
Lm0gICAgICAgICAgICAgIHwgIDUyICsrKy0KIHNyYy93MzJmbnMuYyAgICAgICAgICAgICAgfCAx
NTQgKysrKysrKysrKysrCiBzcmMvdzMydGVybS5jICAgICAgICAgICAgIHwgICAxICsKIHNyYy93
MzJ0ZXJtLmggICAgICAgICAgICAgfCAgIDEgKwogMTAgZmlsZXMgY2hhbmdlZCwgODcyIGluc2Vy
dGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpc3Avc3lzdGVt
LXNsZWVwLmVsCgpkaWZmIC0tZ2l0IGEvZG9jL2xpc3ByZWYvY29tbWFuZHMudGV4aSBiL2RvYy9s
aXNwcmVmL2NvbW1hbmRzLnRleGkKaW5kZXggYmQzMTc5OGQ0MzEuLjRhZWUyNjA5ZDY1IDEwMDY0
NAotLS0gYS9kb2MvbGlzcHJlZi9jb21tYW5kcy50ZXhpCisrKyBiL2RvYy9saXNwcmVmL2NvbW1h
bmRzLnRleGkKQEAgLTI3NzgsMTIgKzI3NzgsMTIgQEAgTWlzYyBFdmVudHMKIEBlbmQgc21hbGxl
eGFtcGxlCiAKIEBjaW5kZXggQGNvZGV7c2xlZXAtZXZlbnR9IGV2ZW50Ci1AaXRlbSAoc2xlZXAt
ZXZlbnQgQHZhcntzbGVlcC13YWtlfSkKLVRoaXMgZXZlbnQgaXMgaW5qZWN0ZWQgd2hlbiB0aGUg
ZGV2aWNlIEVtYWNzIGlzIHJ1bm5pbmcgb24gZW50ZXJzIG9yCi1sZWF2ZXMgdGhlIHNsZWVwIHN0
YXRlLiAgQSBub24tQGNvZGV7bmlsfSBAdmFye3NsZWVwLXdha2V9IGluZGljYXRlcwotZW50ZXJp
bmcgdGhlIHNsZWVwIHN0YXRlLgorQGl0ZW0gKHNsZWVwLWV2ZW50IEB2YXJ7c3RhdGV9KQorVGhp
cyBldmVudCBpcyBpbmplY3RlZCB3aGVuIHRoZSBkZXZpY2UgRW1hY3MgaXMgcnVubmluZyBvbiBp
cyBhYm91dCB0bworZW50ZXIgYSBzbGVlcCBzdGF0ZSwgb3IgaGFzIGp1c3QgYXdva2VuIGZyb20g
b25lLiAgQHZhcntzdGF0ZX0gd2lsbCBiZQordGhlIHN5bWJvbCBAY29kZXtwcmUtc2xlZXB9IG9y
IEBjb2Rle3Bvc3Qtd2FrZX0uCiAKLVRoaXMgaXMgaW1wbGVtZW50ZWQgb25seSBvbiBHTlUvTGlu
dXguCitUaGlzIGlzIGltcGxlbWVudGVkIG9uIEdOVS9MaW51eCwgbWFjT1MsIGFuZCBNUy1XaW5k
b3dzLgogCiBAY2luZGV4IEBjb2Rle2xhbmd1YWdlLWNoYW5nZX0gZXZlbnQKIEBpdGVtIGxhbmd1
YWdlLWNoYW5nZQpkaWZmIC0tZ2l0IGEvZG9jL2xpc3ByZWYvb3MudGV4aSBiL2RvYy9saXNwcmVm
L29zLnRleGkKaW5kZXggZjVjYTZlZmEyMWIuLjU1ODVlMGE0Yzk3IDEwMDY0NAotLS0gYS9kb2Mv
bGlzcHJlZi9vcy50ZXhpCisrKyBiL2RvYy9saXNwcmVmL29zLnRleGkKQEAgLTM1LDYgKzM1LDcg
QEAgU3lzdGVtIEludGVyZmFjZQogKiBTZXNzaW9uIE1hbmFnZW1lbnQ6OiAgU2F2aW5nIGFuZCBy
ZXN0b3Jpbmcgc3RhdGUgd2l0aCBYIFNlc3Npb24gTWFuYWdlbWVudC4KICogRGVza3RvcCBOb3Rp
ZmljYXRpb25zOjogRGVza3RvcCBub3RpZmljYXRpb25zLgogKiBTeXN0ZW0gVGFza2Jhcjo6ICAg
ICAgQ29udHJvbGxpbmcgc3lzdGVtIEdVSSB0YXNrYmFyIGZlYXR1cmVzLgorKiBTeXN0ZW0gU2xl
ZXA6OiAgICAgICAgQmxvY2sgc3lzdGVtIHNsZWVwIGFuZCBwcm9jZXNzIHNsZWVwIGV2ZW50cy4K
ICogRmlsZSBOb3RpZmljYXRpb25zOjogIEZpbGUgbm90aWZpY2F0aW9ucy4KICogRHluYW1pYyBM
aWJyYXJpZXM6OiAgIE9uLWRlbWFuZCBsb2FkaW5nIG9mIHN1cHBvcnQgbGlicmFyaWVzLgogKiBT
ZWN1cml0eSBDb25zaWRlcmF0aW9uczo6IFJ1bm5pbmcgRW1hY3MgaW4gYW4gdW5mcmllbmRseSBl
bnZpcm9ubWVudC4KQEAgLTM0OTMsNiArMzQ5NCw3MyBAQCBTeXN0ZW0gVGFza2JhcgogQGVuZCBn
cm91cAogQGVuZCBsaXNwCiAKK0Bub2RlIFN5c3RlbSBTbGVlcAorQHNlY3Rpb24gQmxvY2sgU3lz
dGVtIFNsZWVwIGFuZCBQcm9jZXNzIFNsZWVwIEV2ZW50cworQGNpbmRleCBzeXN0ZW0gc2xlZXAK
K0BjaW5kZXggbW9kZSwgc3lzdGVtIHNsZWVwCisKK0BkZWZ1biBzeXN0ZW0tc2xlZXAtYmxvY2st
c2xlZXAgJm9wdGlvbmFsIHdoeSBhbGxvdy1kaXNwbGF5LXNsZWVwCitUaGlzIGZ1bmN0aW9uIGJs
b2NrcyB0aGUgc3lzdGVtIGZyb20gZW50ZXJpbmcgaXRzIGlkbGUgc2xlZXAgc3RhdGUuCisKK0l0
IHJldHVybnMgYSB0b2tlbiB0aGF0IG11c3QgYmUgcGFzc2VkIHRvCitAY29kZXtzeXN0ZW0tc2xl
ZXAtdW5ibG9jay1zbGVlcH0gdG8gdW5ibG9jayB0aGlzIHNwZWNpZmljIGJsb2NrIChvdGhlcgor
c2xlZXAgYmxvY2tzIG1heSBiZSBzaW11bHRhbmVvdXNseSBpbiBmb3JjZSBmb3Igb3RoZXIgcHVy
cG9zZXMpLgorT3RoZXJ3aXNlLCBpdCByZXR1cm5zIEBjb2Rle25pbH0gaWYgdGhlIHNsZWVwIGJs
b2NraW5nIGZhaWxzLgorCitAdmFye3doeX0gaXMgYSBzdHJpbmcgYW5kLCB3aGVuIG5vbi1uaWws
IGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHNsZWVwCitibG9jayBhcyBpdCBtYXkgYXBwZWFyIG9u
IHRoZSBzeXN0ZW0ncyBpbnNwZWN0YWJsZSBibG9jayBsaXN0cy4gIEl0CitkZWZhdWx0cyB0byBg
YEVtYWNzJycuCisKK0lmIEB2YXJ7YWxsb3ctZGlzcGxheS1zbGVlcH0gaXMgbm9uLW5pbCwgYWxs
b3cgdGhlIGRpc3BsYXkgdG8gc2xlZXAuICBCeQorZGVmYXVsdCwgdGhlIGRpc3BsYXkgaXMga2Vw
dCBhY3RpdmUuCisKK05vdGU6IOKAi1doZW4gdGhlIEVtYWNzIHByb2Nlc3MgZGllcywgYmxvY2tz
IGFyZSByZWxlYXNlZCBvbiBhbGwgcGxhdGZvcm1zLgorQGVuZCBkZWZ1bgorCitAZGVmdW4gc3lz
dGVtLXNsZWVwLXVuYmxvY2stc2xlZXAgdG9rZW4KK1RoaXMgZnVuY3Rpb24gdW5ibG9ja3MgdGhl
IHNsZWVwIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCBAdmFye3Rva2VufS4gIEl0CityZXR1cm5zIG5v
bi1AY29kZXtuaWx9IG9uIHN1Y2Nlc3MsIG90aGVyd2lzZSByZXR1cm5zIEBjb2Rle25pbH0uCitA
ZW5kIGRlZnVuCisKK0BkZWZtYWMgd2l0aC1zeXN0ZW0tc2xlZXAtYmxvY2sgKHdoeSBhbGxvdy1k
aXNwbGF5LXNsZWVwKSBib2R5QGRvdHN7fQorVGhpcyBpcyBhIGNvbnZlbmllbmNlIG1hY3JvIHRo
YXQgbGV0cyB5b3Ugd3JhcCB0aGUgZm9ybXMgaW4gQHZhcntib2R5fQord2l0aCBhIHNsZWVwIGJs
b2NrIHRoYXQgaXMgdW5ibG9ja2VkIGZvciB5b3Ugd2hlbiBAdmFye2JvZHl9IGNvbXBsZXRlcy4K
K1RoZSBhcmd1bWVudHMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGluCitAY29kZXtzeXN0ZW0t
c2xlZXAtYmxvY2stc2xlZXB9LCBhYm92ZS4KK0BlbmQgZGVmbWFjCisKK0BkZWZ1biBzeXN0ZW0t
c2xlZXAtc2xlZXAtYmxvY2tlZC1wCitUaGlzIHByZWRpY2F0ZSBmdW5jdGlvbiByZXR1cm5zIG5v
bi1AY29kZXtuaWx9IG9uIGlmIHRoZXJlIGFyZSBhbnkKK2FjdGl2ZSBAY29kZXtzeXN0ZW0tc2xl
ZXB9IGJsb2Nrcywgb3RoZXJ3aXNlIHJldHVybnMgQGNvZGV7bmlsfS4KK0BlbmQgZGVmdW4KKwor
QGRlZnVuIHN5c3RlbS1zbGVlcC11bmJsb2NrLWFsbC1zbGVlcC1ibG9ja3MKK1RoaXMgZnVuY3Rp
b24gdW5ibG9ja3MgYWxsIGFjdGl2ZSBzbGVlcCBibG9ja3MuICBJdCBpcyB1bmxpa2VseSB0aGF0
IHlvdQord2lsbCBuZWVkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbi4KK0BlbmQgZGVmdW4KKworQGRl
Zm9wdCBzeXN0ZW0tc2xlZXAtZXZlbnQtZnVuY3Rpb25zCitXaGVuIHRoZSBzeXN0ZW0gaXMgYWJv
dXQgdG8gZW50ZXIgYSBzbGVlcCBzdGF0ZSBvciBhZnRlciBpdCB3YWtlcyBmcm9tCitvbmUsIGVh
Y2ggZnVuY3Rpb24gb24gdGhpcyBhYm5vcm1hbCBob29rIGlzIGNhbGxlZCB3aXRoIG9uZSBhcmd1
bWVudCwKK0B2YXJ7ZXZlbnR9LCBhIHNsZWVwIGV2ZW50LiAgSXRzIHN0YXRlIGNhbiBiZSByZXRy
aWV2ZWQgdmlhCitAc2FtcHtAY29kZXsoY2FkciBldmVudCl9fS4gIEl0IHdpbGwgYmUgb25lIG9m
IHRoZSBzeW1ib2xzCitAY29kZXtwcmUtc2xlZXB9IG9yIEBjb2Rle3Bvc3Qtd2FrZX0uCisKK0hh
bmRsaW5nIEBjb2Rle3ByZS1zbGVlcH0gZXZlbnRzIHNob3VsZCBiZSBkb25lIGFzIGZhc3QgYXMg
cG9zc2libGUuCitTeXN0ZW1zIG9mdGVuIGdyYW50IGEgdmVyeSBzaG9ydCBwcmUtc2xlZXAgcHJv
Y2Vzc2luZyBpbnRlcnZhbCwKK3R5cGljYWxseSByYW5naW5nIGJldHdlZW4gMiBhbmQgNSBzZWNv
bmRzLiAgVGhlIHN5c3RlbSBtYXkgc2xlZXAgZXZlbiBpZgoreW91ciBwcm9jZXNzaW5nIGlzIG5v
dCBjb21wbGV0ZSwgc28gYmUgc3VyZSB5b3UgZG8gYXMgbGl0dGxlIGFzCitwb3NzaWJsZS4gIEZv
ciBleGFtcGxlLCB5b3VyIGZ1bmN0aW9uIGNvdWxkIGNsb3NlIGFjdGl2ZSBjb25uZWN0aW9ucyBv
cgorc2VyaWFsIHBvcnRzLgorCitIYW5kbGluZyBAY29kZXtwb3N0LXdha2V9IGV2ZW50cyBvZmZl
cnMgbW9yZSBsZWV3YXkuICBVc2UgdGhpcywgZm9yCitleGFtcGxlLCB0byByZWVzdGFibGlzaCBj
b25uZWN0aW9ucy4KKworTm90ZTogWW91ciBjb2RlLCBvciB0aGUgZnVuY3Rpb25zIGl0IGNhbGxz
LCBzaG91bGQgbm90IHJhaXNlIGFueSBzaWduYWxzCitvciBhbGwgaG9va3Mgd2lsbCBiZSBoYWx0
ZWQuICBZb3UgY2FuIHdyYXAgeW91ciBjb2RlIGluIGEKK0Bjb2Rle2NvbmRpdGlvbi1jYXNlfSBi
bG9jayAoQHB4cmVme0Vycm9yc30pLgorQGVuZCBkZWZvcHQKKwogQG5vZGUgRmlsZSBOb3RpZmlj
YXRpb25zCiBAc2VjdGlvbiBOb3RpZmljYXRpb25zIG9uIEZpbGUgQ2hhbmdlcwogQGNpbmRleCBm
aWxlIG5vdGlmaWNhdGlvbnMKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MKaW5kZXgg
OWU1YWM3OTY2OTcuLmVlMzQ5NWExNjIyIDEwMDY0NAotLS0gYS9ldGMvTkVXUworKysgYi9ldGMv
TkVXUwpAQCAtMzUzNSw2ICszNTM1LDIyIEBAIE9uIEdOVS9MaW51eCBzeXN0ZW1zLCBzaGVsbCBl
eHRlbnNpb25zIG9yIHNpbWlsYXIgaGVscGVycyBzdWNoIGFzCiA8aHR0cHM6Ly9leHRlbnNpb25z
Lmdub21lLm9yZy9leHRlbnNpb24vMzA3L2Rhc2gtdG8tZG9jay8+IGFuZAogPGh0dHBzOi8vd2lr
aS51YnVudHUuY29tL1VuaXR5L0xhdW5jaGVyQVBJPi4KIAorKysrCisqKiBOZXcgcGFja2FnZSAn
c3lzdGVtLXNsZWVwJy4KK1RoaXMgcGFja2FnZSBwcm92aWRlcyBwbGF0Zm9ybS1uZXV0cmFsIGlu
dGVyZmFjZXMgdG8gYmxvY2sgeW91ciBzeXN0ZW0KK2Zyb20gZW50ZXJpbmcgaWRsZSBzbGVlcCBh
bmQgYSBob29rIHRvIHByb2Nlc3MgcHJlLXNsZWVwIGFuZCBwb3N0LXdha2UKK2V2ZW50cy4gIFlv
dSBjYW4gdXNlIHRoaXMgdG8gYXZvaWQgdGhlIHN5c3RlbSBlbnRlcmluZyBhbiBpZGxlIHNsZWVw
CitzdGF0ZSBhbmQgaW50ZXJydXB0aW5nIGEgbG9uZy1ydW5uaW5nIHByb2Nlc3MgZHVlIHRvIGxh
Y2sgb2YgdXNlcgorYWN0aXZpdHkuICBUaGUgc2xlZXAgZXZlbnQgaG9vayBsZXRzIHlvdSwgZm9y
IGV4YW1wbGUgY2xvc2UgZXh0ZXJuYWwKK2Nvbm5lY3Rpb25zIG9yIHNlcmlhbCBwb3J0cyBiZWZv
cmUgc2xlZXBpbmcsIGFuZCByZWVzdGFibGlzaCB0aGVtIHdoZW4KK3RoZSBzeXN0ZW0gd2FrZXMg
dXAuCisKK1N1cHBvcnRlZCBjYXBhYmxlIHN5c3RlbXMgYXJlIEdOVS9MaW51eCB2aWEgRC1CdXMg
KHNsZWVwIGJsb2NraW5nIGFuZAorZXZlbnRzIHJlcXVpcmUgdGhlIG9yZy5mcmVlZGVza3RvcC5s
b2dpbjEgc2VydmljZSwgZGlzcGxheSBzbGVlcAorYmxvY2tpbmcgcmVxdWlyZXMgb3JnLmZyZWVk
ZXNrdG9wLlNjcmVlbnNhdmVyIHNlcnZpY2UpLCBtYWNPUworKHNsZWVwL2Rpc3BsYXkgYmxvY2tp
bmcgcmVxdWlyZXMgMTAuOSssIHNsZWVwIGV2ZW50cyBhcmUgc3VwcG9ydGVkIG9uCithbGwgdmVy
c2lvbnMpLCBNUy1XaW5kb3dzIChzbGVlcCBibG9ja2luZyBpcyBzdXBwb3J0ZWQgb24gYWxsIHZl
cnNpb25zLAorc2xlZXAgZXZlbnRzIHJlcXVpcmUgOCspLgogDAogKiBJbmNvbXBhdGlibGUgTGlz
cCBDaGFuZ2VzIGluIEVtYWNzIDMxLjEKIApkaWZmIC0tZ2l0IGEvbGlzcC9iaW5kaW5ncy5lbCBi
L2xpc3AvYmluZGluZ3MuZWwKaW5kZXggYzBjMmNmMTA5OTYuLjdjZDY3OTZlOGNiIDEwMDY0NAot
LS0gYS9saXNwL2JpbmRpbmdzLmVsCisrKyBiL2xpc3AvYmluZGluZ3MuZWwKQEAgLTE3NTEsNiAr
MTc1MSwyMiBAQCBjdGwteC00LW1hcAogKGRlZmluZS1rZXkgc3BlY2lhbC1ldmVudC1tYXAgW3Np
Z3VzcjFdICdpZ25vcmUpCiAoZGVmaW5lLWtleSBzcGVjaWFsLWV2ZW50LW1hcCBbc2lndXNyMl0g
J2lnbm9yZSkKIAorOzsgU3lzdGVtIHNsZWVwIGV2ZW50cworKGRlZmN1c3RvbSBzbGVlcC1ldmVu
dC1mdW5jdGlvbnMgbmlsCisgICJBYm5vcm1hbCBob29rIGludm9rZWQgb24gc2xlZXAgZXZlbnRz
LgorRWFjaCBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0aGUgZXZlbnQuIgorICA6dHlwZSAnaG9v
aworICA6Z3JvdXAgJ2Rpc3BsYXkKKyAgOnZlcnNpb24gIjMxLjEiKQorCisoZGVmdW4gc2xlZXAt
ZXZlbnQtaGFuZGxlciAoZXZlbnQpCisgICJgc2xlZXAtZXZlbnQnIEVWRU5UIGhhbmRsZXIuIgor
ICAoZGVjbGFyZSAoY29tcGxldGlvbiBpZ25vcmUpKQorICAoaW50ZXJhY3RpdmUgImUiKQorICAo
cnVuLWhvb2std2l0aC1hcmdzICdzbGVlcC1ldmVudC1mdW5jdGlvbnMgZXZlbnQpKQorCisoa2V5
bWFwLXNldCBzcGVjaWFsLWV2ZW50LW1hcCAiPHNsZWVwLWV2ZW50PiIgIydzbGVlcC1ldmVudC1o
YW5kbGVyKQorCiA7OyBUZXh0IGNvbnZlcnNpb24KIChkZWZpbmUta2V5IGdsb2JhbC1tYXAgW3Rl
eHQtY29udmVyc2lvbl0gJ2FuYWx5emUtdGV4dC1jb252ZXJzaW9uKQogCmRpZmYgLS1naXQgYS9s
aXNwL3N5c3RlbS1zbGVlcC5lbCBiL2xpc3Avc3lzdGVtLXNsZWVwLmVsCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44MjY2MTNhYmE0OQotLS0gL2Rldi9udWxsCisrKyBi
L2xpc3Avc3lzdGVtLXNsZWVwLmVsCkBAIC0wLDAgKzEsNDg0IEBACis7Ozsgc3lzdGVtLXNsZWVw
LmVsIC0tLSBTeXN0ZW0gc2xlZXAvd2FrZSBldmVudCBtYW5hZ2VtZW50IC0qLSBsZXhpY2FsLWJp
bmRpbmc6IHQgLSotCisKKzs7IENvcHlyaWdodCAoQykgMjAyNS0yMDI2IEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLgorCis7OyBBdXRob3I6IFN0ZXBoYW5lIE1hcmtzIDxzaGlwbWludHNA
Z21haWwuY29tPgorOzsgTWFpbnRhaW5lcjogZW1hY3MtZGV2ZWxAZ251Lm9yZworOzsgS2V5d29y
ZHM6IGNvbnZlbmllbmNlCis7OyBQYWNrYWdlLVJlcXVpcmVzOiAoKGVtYWNzICIzMS4xIikpCisK
Kzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBFbWFjcy4KKworOzsgR05VIEVtYWNzIGlzIGZy
ZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKzs7IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5Cis7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lv
biAzIG9mIHRoZSBMaWNlbnNlLCBvcgorOzsgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworOzsgR05VIEVtYWNzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCis7OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorOzsgR05VIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKzs7IGFsb25nIHdpdGgg
R05VIEVtYWNzLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K
KworOzs7IENvbW1lbnRhcnk6CisKKzs7IENhbGwgYHN5c3RlbS1zbGVlcC1ibG9jay1zbGVlcCcg
dG8gaW5oaWJpdCBzeXN0ZW0td2lkZSBpZGxlIHNsZWVwLgorOzsgSWRsZSBzbGVlcCBpcyB0eXBp
Y2FsbHkgdHJpZ2dlcmVkIHdoZW4gdGhlIHN5c3RlbSBkb2VzIG5vdCBkZXRlY3QKKzs7IHVzZXIg
YWN0aXZpdHkgYW5kIGlzIGluZGVwZW5kZW50IG9mIGFueSBwcm9jZXNzaW5nIHRoYXQgbWF5IGJl
IG9uCis7OyBnb2luZy4gIFRoaXMgZnVuY3Rpb24gaXMgdXNlZnVsIHRvIGJsb2NrIGlkbGUgc2xl
ZXAgZm9yIGxvbmctcnVubmluZworOzsgb3BlcmF0aW9ucywgZm9yIGV4YW1wbGUsIHdoZW4gYSBj
b21waWxhdGlvbiBpcyBydW5uaW5nLiAgVGhpcworOzsgZnVuY3Rpb24gcmV0dXJucyBhIHRva2Vu
IHdoaWNoIHlvdSBtdXN0IHVzZSB0byB1bmJsb2NrIHRoaXMgcmVxdWVzdC4KKzs7Cis7OyBDYWxs
IGBzeXN0ZW0tc2xlZXAtdW5ibG9jay1zbGVlcCcgd2l0aCB0aGUgdG9rZW4gZnJvbQorOzsgYHN5
c3RlbS1zbGVlcC1ibG9jay1zbGVlcCcgdG8gdW5ibG9jayBzeXN0ZW0td2lkZSBpZGxlIHNsZWVw
IGZvciB0aGlzCis7OyByZXF1ZXN0LiAgVGhlcmUgbWF5IGJlIG90aGVyIGFjdGl2ZSByZXF1ZXN0
cyB3aGljaCB3aWxsIHByZXZlbnQgdGhlCis7OyBzeXN0ZW0gZnJvbSBzbGVlcGluZy4KKzs7Cis7
OyBUaGUgZnVuY3Rpb24gYHN5c3RlbS1zbGVlcC1zbGVlcC1ibG9ja2VkLXAnIHdpbGwgdGVsbCB5
b3UgaWYKKzs7IGBzeXN0ZW0tc2xlZXAnIGhhcyBhbnkgYWN0aXZlIHN5c3RlbSBzbGVlcCBibG9j
a3MuCis7OworOzsgTm90ZTog4oCLV2hlbiB0aGUgRW1hY3MgcHJvY2VzcyBkaWVzLCBibG9ja3Mg
YXJlIHJlbGVhc2VkIG9uIGFsbAorOzsgcGxhdGZvcm1zLgorOzsKKzs7IFlvdSBjYW4gcmVnaXN0
ZXIgZnVuY3Rpb25zIG9uIHRoZSBhYm5vcm1hbCBob29rCis7OyBgc3lzdGVtLXNsZWVwLWV2ZW50
LWZ1bmN0aW9ucycuICBFYWNoIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdoZW4KKzs7IHRoZSBz
eXN0ZW0gaXMgcHJlcGFyaW5nIGZvciBzbGVlcCBhbmQgd2hlbiB0aGUgc3lzdGVtIHdha2VzIGZy
b20KKzs7IHNsZWVwLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VmdWwgd2hlbiB5b3Ugd2FudCB0
byBjbG9zZSAoYW5kCis7OyBwb3RlbnRpYWxseSByZW9wZW4pIGV4dGVybmFsIGNvbm5lY3Rpb25z
IG9yIHNlcmlhbCBwb3J0cy4KKzs7Cis7OyBPbiBzdXBwb3J0ZWQgR05VL0xpbnV4IHN5c3RlbXMs
IHRoZSBpbXBsZW1lbnRhdGlvbiBpcyB2aWEgRC1CdXMgdG8KKzs7IGluaGliaXQgaWRsZSBzbGVl
cCwga2VlcCB0aGUgZGlzcGxheSBhY3RpdmUsIGFuZCBmb3J3YXJkIGV2ZW50cyBmcm9tCis7OyBs
b2dpbmQgZm9yIHN5c3RlbSBzbGVlcCBldmVudHMuCis7OworOzsgT24gbWFjT1MgYW5kIE1TLVdp
bmRvd3MsIG5hdGl2ZSBBUElzIGFyZSB1c2VkIHRvIGJsb2NrIGlkbGUgc2xlZXAsCis7OyBrZWVw
IHRoZSBkaXNwbGF5IGFjdGl2ZSwgYW5kIHByb3ZpZGUgc2xlZXAgZXZlbnQgbm90aWZpY2F0aW9u
cy4KKzs7Cis7OyBFeHRlcm5hbGx5IHRvIEVtYWNzLCB0aGVyZSBhcmUgc3lzdGVtIHV0aWxpdHkg
ZnVuY3Rpb25zIHRoYXQgeW91IGNhbgorOzsgdXNlIHRvIGluc3BlY3QgYWxsIHByb2Nlc3NlcyBv
biB5b3VyIHN5c3RlbSB0aGF0IG1pZ2h0IGJlIGJsb2NraW5nIGl0Cis7OyBmcm9tIHNsZWVwaW5n
LgorOzsKKzs7IE9uIEQtQnVzIHN5c3RlbXMsIHlvdSBjYW4gdXNlIHRoZSBjb21tYW5kczoKKzs7
Cis7OyAgIHN5c3RlbWQtaW5oaWJpdCAtLWxpc3QKKzs7IG9yCis7OyAgIGRidXMtc2VuZCAtLXN5
c3RlbSAtLXByaW50LXJlcGx5IC0tZGVzdD1vcmcuZnJlZWRlc2t0b3AubG9naW4xIFwKKzs7ICAg
L29yZy9mcmVlZGVza3RvcC9sb2dpbjEgXAorOzsgICBvcmcuZnJlZWRlc2t0b3AubG9naW4xLk1h
bmFnZXIuTGlzdEluaGliaXRvcnMKKzs7Cis7OyBOb3RlOiBZb3UgY2FuIGZpbmQgdGhlIHNsZWVw
L3NodXRkb3duIGRlbGF5IEluaGliaXREZWxheU1heFVTZWMgaW4KKzs7IHRoZSBmaWxlIGxvZ2lu
ZC5jb25mKDUpIHdoaWNoIHR5cGljYWxseSBkZWZhdWx0cyB0byA1IHNlY29uZHMuCis7OworOzsg
T24gbWFjT1MsIHlvdSBjYW4gdXNlIHRoZSBjb21tYW5kOgorOzsKKzs7ICAgcG1zZXQgLWcgYXNz
ZXJ0aW9ucworOzsKKzs7IE9uIE1TLVdpbmRvd3MsIHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcg
Y29tbWFuZCB3aGljaCBtYXkgbmVlZCB0byBiZQorOzsgcnVuIGFzIGFuIGFkbWluaXN0cmF0b3I6
Cis7OworOzsgICBwb3dlcmNmZyAtcmVxdWVzdHMKKworOzs7IENvZGU6CisKKyhldmFsLXdoZW4t
Y29tcGlsZSAocmVxdWlyZSAnZGJ1cykpCisoZGVjbGFyZS1mdW5jdGlvbiBkYnVzLS1mZC1jbG9z
ZSAiZGJ1c2JpbmQuYyIpCisoZGVjbGFyZS1mdW5jdGlvbiBkYnVzLXVucmVnaXN0ZXItb2JqZWN0
ICJkYnVzLmVsIikKKyhkZWNsYXJlLWZ1bmN0aW9uIGRidXMtcmVnaXN0ZXItc2lnbmFsICJkYnVz
LmVsIikKKyhkZWNsYXJlLWZ1bmN0aW9uIGRidXMtY2FsbC1tZXRob2QgImRidXMuZWwiKQorKGRl
Y2xhcmUtZnVuY3Rpb24gZGJ1cy1saXN0LWFjdGl2YXRhYmxlLW5hbWVzICJkYnVzLmVsIikKKwor
KGRlZmdyb3VwIHN5c3RlbS1zbGVlcCBuaWwKKyAgIlN5c3RlbSBzbGVlcC93YWtlIGJsb2NraW5n
IGFuZCBldmVudCBtYW5hZ2VtZW50LiIKKyAgOmdyb3VwICdjb252ZW5pZW5jZQorICA6dmVyc2lv
biAiMzEuMSIpCisKKyhkZWZ2YXIgc3lzdGVtLXNsZWVwLS1iYWNrLWVuZCBuaWwKKyAgIkdlbmVy
aWMgc2xlZXAtd2FrZSBtZXRob2Qgc3lzdGVtIGRpc3BhdGNoZXIuIikKKworKGRlZnZhciBzeXN0
ZW0tc2xlZXAtLXNsZWVwLWJsb2NrLXRva2VucyBuaWwKKyAgIkEgbGlzdCBvZiBhY3RpdmUgc2xl
ZXAtYmxvY2sgdG9rZW5zLgorSWYgbm9uLW5pbCwgaWRsZSBzbGVlcCBpcyBpbmhpYml0ZWQgYnkg
YHN5c3RlbS1zbGVlcCcuIikKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZjdXN0b20gc3lzdGVtLXNs
ZWVwLWV2ZW50LWZ1bmN0aW9ucyBuaWwKKyAgIkFibm9ybWFsIGhvb2sgaW52b2tlZCBvbiBzeXN0
ZW0gc2xlZXAgZXZlbnRzLgorRWFjaCBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBvbmUgYXJndW1l
bnQgRVZFTlQsIGEgc2xlZXAgZXZlbnQuICBFVkVOVAorc3RhdGUgY2FuIGJlIHJldHJpZXZlZCB2
aWEgXFwrYChjYWRyIEVWRU5UKScuICBJdCB3aWxsIGJlIG9uZSBvZiB0aGUKK3N5bWJvbHMgXFwr
YHByZS1zbGVlcCcgb3IgXFwrYHBvc3Qtd2FrZScuCisKK0hhbmRsaW5nIFxcK2BwcmUtc2xlZXAn
IGV2ZW50cyBzaG91bGQgYmUgZG9uZSBhcyBmYXN0IGFzIHBvc3NpYmxlLiAgU3lzdGVtcworb2Z0
ZW4gZ3JhbnQgYSB2ZXJ5IHNob3J0IHByZS1zbGVlcCBwcm9jZXNzaW5nIGludGVydmFsLCB0eXBp
Y2FsbHkKK3JhbmdpbmcgYmV0d2VlbiAyIGFuZCA1IHNlY29uZHMuICBUaGUgc3lzdGVtIG1heSBz
bGVlcCBldmVuIGlmIHlvdXIKK3Byb2Nlc3NpbmcgaXMgbm90IGNvbXBsZXRlLCBzbyBiZSBzdXJl
IHlvdSBkbyBhcyBsaXR0bGUgYXMgcG9zc2libGUuCitGb3IgZXhhbXBsZSwgeW91ciBmdW5jdGlv
biBjb3VsZCBjbG9zZSBhY3RpdmUgY29ubmVjdGlvbnMgb3Igc2VyaWFsCitwb3J0cy4KKworSGFu
ZGxpbmcgXFwrYHBvc3Qtd2FrZScgZXZlbnRzIG9mZmVycyBtb3JlIGxlZXdheS4gIFlvdXIgZnVu
Y3Rpb24gY291bGQKK3JlZXN0YWJsaXNoIGNvbm5lY3Rpb25zLgorCitOb3RlOiBZb3VyIGNvZGUs
IG9yIHRoZSBmdW5jdGlvbnMgaXQgY2FsbHMsIHNob3VsZCBub3QgcmFpc2UgYW55IHNpZ25hbHMK
K29yIGFsbCBob29rcyB3aWxsIGJlIGhhbHRlZCBwcmV2ZW50aW5nIG90aGVyIGhvb2sgZnVuY3Rp
b25zIGZyb20KK2NsZWFuaW5nIHVwIG9yIHdha2luZyB1cC4gIFlvdSBjYW4gd3JhcCB5b3VyIGNv
ZGUgaW4gYSBgY29uZGl0aW9uLWNhc2UnCitibG9jay4iCisgIDp0eXBlICdob29rCisgIDp2ZXJz
aW9uICIzMS4xIikKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biBzeXN0ZW0tc2xlZXAtYmxvY2st
c2xlZXAgKCZvcHRpb25hbCB3aHkgYWxsb3ctZGlzcGxheS1zbGVlcCkKKyAgIkluaGliaXQgc3lz
dGVtIGlkbGUgc2xlZXAuCitPcHRpb25hbCBXSFkgaXMgYSBzdHJpbmcgdGhhdCBpZGVudGlmaWVz
IGEgc2xlZXAgYmxvY2sgdG8gc3lzdGVtIHV0aWxpdHkKK2NvbW1hbmRzIHRoYXQgaW5zcGVjdCBz
eXN0ZW0td2lkZSBibG9ja3MuICBXSFkgZGVmYXVsdHMgdG8gXCJFbWFjc1wiLgorCitPcHRpb25h
bCBBTExPVy1ESVNQTEFZLVNMRUVQLCB3aGVuIG5vbi1uaWwsIGFsbG93cyB0aGUgZGlzcGxheSB0
byBzbGVlcAorb3IgYSBzY3JlZW4gc2F2ZXIgdG8gcnVuIHdoaWxlIHRoZSBzeXN0ZW0gaWRsZSBz
bGVlcCBpcyBibG9ja2VkLiAgVGhlCitkZWZhdWx0IGlzIHRvIGtlZXAgdGhlIGRpc3BsYXkgYWN0
aXZlLgorCitSZXR1cm4gYSBzbGVlcCBibG9ja2luZyB0b2tlbi4gIFlvdSBtdXN0IHJldGFpbiB0
aGlzIHZhbHVlIGFuZCBwcm92aWRlCitpdCB0byBgc3lzdGVtLXNsZWVwLXVuYmxvY2stc2xlZXAn
IHRvIHVuYmxvY2sgaXRzIGFzc29jaWF0ZWQgYmxvY2suCisKK1JldHVybiBuaWwgaWYgc3lzdGVt
IHNsZWVwIGNhbm5vdCBiZSBpbmhpYml0ZWQuIgorICAod2hlbiBzeXN0ZW0tc2xlZXAtLWJhY2st
ZW5kCisgICAgKHN5c3RlbS1zbGVlcC0tYmxvY2stc2xlZXAgKG9yIHdoeSAiRW1hY3MiKSBhbGxv
dy1kaXNwbGF5LXNsZWVwKSkpCisKKyhkZWZ1biBzeXN0ZW0tc2xlZXAtdW5ibG9jay1zbGVlcCAo
dG9rZW4pCisgICJVbmJsb2NrIHRoZSBzeXN0ZW0gc2xlZXAgYmxvY2sgYXNzb2NpYXRlZCB3aXRo
IFRPS0VOLgorUmV0dXJuIG5vbi1uaWwgVE9LRU4gd2FzIHVuYmxvY2tlZCwgb3IgbmlsIGlmIG5v
dC4iCisgICh3aGVuIHN5c3RlbS1zbGVlcC0tYmFjay1lbmQKKyAgICAoc3lzdGVtLXNsZWVwLS11
bmJsb2NrLXNsZWVwIHRva2VuKSkpCisKKzs7OyMjI2F1dG9sb2FkCisoZGVmbWFjcm8gd2l0aC1z
eXN0ZW0tc2xlZXAtYmxvY2sgKHdoeSBhbGxvdy1kaXNwbGF5LXNsZWVwICZyZXN0IGJvZHkpCisg
ICJFeGVjdXRlIHRoZSBmb3JtcyBpbiBCT0RZIHdoaWxlIGJsb2NraW5nIHN5c3RlbSBzbGVlcC4K
K1dIWSBpcyBhIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgYSBzbGVlcCBibG9jay4KK0FMTE9XLURJ
U1BMQVktU0xFRVAsIHdoZW4gbm9uLW5pbCwgYWxsb3dzIHRoZSBkaXNwbGF5IHRvIHNsZWVwCitv
ciBhIHNjcmVlbiBzYXZlciB0byBydW4gd2hpbGUgdGhlIHN5c3RlbSBpZGxlIHNsZWVwIGlzIGJs
b2NrZWQuCitUaGUgYmxvY2sgaXMgdW5ibG9ja2VkIHdoZW4gQk9EWSBjb21wbGV0ZXMuIgorICAo
ZGVjbGFyZSAoaW5kZW50IDEpIChkZWJ1ZyB0KSkKKyAgKGxldCAoKHRva2VuIChtYWtlLXN5bWJv
bCAiLS1zbGVlcC10b2tlbi0tIikpKQorICAgIGAobGV0ICgoLHRva2VuIChzeXN0ZW0tc2xlZXAt
YmxvY2stc2xlZXAgLHdoeSAsYWxsb3ctZGlzcGxheS1zbGVlcCkpKQorICAgICAgICh1bndpbmQt
cHJvdGVjdAorICAgICAgICAgICAocHJvZ24KKyAgICAgICAgICAgICAsQGJvZHkpCisgICAgICAg
ICAoc3lzdGVtLXNsZWVwLXVuYmxvY2stc2xlZXAgLHRva2VuKSkpKSkKKworKGRlZnVuIHN5c3Rl
bS1zbGVlcC11bmJsb2NrLWFsbC1zbGVlcC1ibG9ja3MgKCkKKyAgIlVuYmxvY2sgYWxsIGBzeXN0
ZW0tc2xlZXAnIGJsb2Nrcy4iCisgICh3aGlsZSBzeXN0ZW0tc2xlZXAtLXNsZWVwLWJsb2NrLXRv
a2VucworICAgIChzeXN0ZW0tc2xlZXAtdW5ibG9jay1zbGVlcCAoY2FyIHN5c3RlbS1zbGVlcC0t
c2xlZXAtYmxvY2stdG9rZW5zKSkpKQorCis7OzsjIyNhdXRvbG9hZAorKGRlZnVuIHN5c3RlbS1z
bGVlcC1zbGVlcC1ibG9ja2VkLXAgKCkKKyAgIlJldHVybiBub24tbmlsIGlmIHRoZXJlIGFyZSBh
Y3RpdmUgc2xlZXAgYmxvY2tzLiIKKyAgKGFuZCBzeXN0ZW0tc2xlZXAtLWJhY2stZW5kCisgICAg
ICAgc3lzdGVtLXNsZWVwLS1zbGVlcC1ibG9jay10b2tlbnMpKQorCisMCis7OyBJbnRlcm5hbCBp
bXBsZW1lbnRhdGlvbi4KKworKGRlZnVuIHN5c3RlbS1zbGVlcC0tc2V0LWJhY2stZW5kICgpCisg
ICJEZXRlcm1pbmUgc2xlZXAvd2FrZSBob3N0IHN5c3RlbSB0eXBlLiIKKyAgOzsgT3JkZXIgbWF0
dGVycyB0byBhY2NvbW1vZGF0ZSB0aGUgY2FzZXMgd2hlcmUgYW4gTlMgb3IgTVMtV2luZG93cwor
ICA7OyBidWlsZCBoYXZlIHRoZSBkYnVzIGZlYXR1cmUuCisgIChzZXRxIHN5c3RlbS1zbGVlcC0t
YmFjay1lbmQKKyAgICAgICAgKGNvbmQgKChmZWF0dXJlcCAnbnMpICducykKKyAgICAgICAgICAg
ICAgKChmZWF0dXJlcCAndzMyKSAndzMyKQorICAgICAgICAgICAgICAoKGFuZCAocmVxdWlyZSAn
ZGJ1cykKKyAgICAgICAgICAgICAgICAgICAgKGZlYXR1cmVwICdkYnVzYmluZCkKKyAgICAgICAg
ICAgICAgICAgICAgKG1lbWJlciAib3JnLmZyZWVkZXNrdG9wLmxvZ2luMSIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoZGJ1cy1saXN0LWFjdGl2YXRhYmxlLW5hbWVzIDpzeXN0ZW0pKSkK
KyAgICAgICAgICAgICAgICdkYnVzKQorICAgICAgICAgICAgICAodCBuaWwpKSkpCisKKyhkZWZ1
biBzeXN0ZW0tc2xlZXAtZW5hYmxlICgpCisgICJFbmFibGUgYHN5c3RlbS1zbGVlcCcuIgorICAo
dW5sZXNzIHN5c3RlbS1zbGVlcC0tYmFjay1lbmQKKyAgICAoaWYgKGFuZCAoc3lzdGVtLXNsZWVw
LS1zZXQtYmFjay1lbmQpCisgICAgICAgICAgICAgKHN5c3RlbS1zbGVlcC0tZW5hYmxlKSkKKyAg
ICAgICAgKGFkZC1ob29rICdzbGVlcC1ldmVudC1mdW5jdGlvbnMgIydzeXN0ZW0tc2xlZXAtLXNs
ZWVwLWV2ZW50LWZ1bmN0aW9uKQorICAgICAgKHdhcm4gImBzeXN0ZW0tc2xlZXAnIGNvdWxkIG5v
dCBiZSBpbml0aWFsaXplZCIpKSkpCisKKyhkZWZ1biBzeXN0ZW0tc2xlZXAtZGlzYWJsZSAoKQor
ICAiRGlzYWJsZSBgc3lzdGVtLXNsZWVwJy4iCisgICh3aGVuIHN5c3RlbS1zbGVlcC0tYmFjay1l
bmQKKyAgICAoc3lzdGVtLXNsZWVwLXVuYmxvY2stYWxsLXNsZWVwLWJsb2NrcykKKyAgICAoc3lz
dGVtLXNsZWVwLS1kaXNhYmxlKQorICAgIChzZXRxIHN5c3RlbS1zbGVlcC0tYmFjay1lbmQgbmls
KSkpCisKKyhjbC1kZWZnZW5lcmljIHN5c3RlbS1zbGVlcC0tZW5hYmxlICgpCisgICJFbmFibGUg
dGhlIGBzeXN0ZW0tc2xlZXAnIGJhY2sgZW5kLgorUmV0dXJuIHQgaWYgdGhlIGJhY2sgZW5kIGlz
IGluaXRpYWxpemVkLCBvciBuaWwuIikKKworKGNsLWRlZmdlbmVyaWMgc3lzdGVtLXNsZWVwLS1k
aXNhYmxlICgpCisgICJEaXNhYmxlIHRoZSBzbGVlcC93YWtlIGJhY2sgZW5kLiIpCisKKyhjbC1k
ZWZnZW5lcmljIHN5c3RlbS1zbGVlcC0tYmxvY2stc2xlZXAgKHdoeSBhbGxvdy1kaXNwbGF5LXNs
ZWVwKQorICAiSW5oaWJpdCBzeXN0ZW0gaWRsZSBzbGVlcC4KK1dIWSBpcyBhIHN0cmluZyB0aGF0
IGlkZW50aWZpZXMgYSBzbGVlcCBibG9jayB0byBzeXN0ZW0gdXRpbGl0eSBjb21tYW5kcwordGhh
dCBpbnNwZWN0IHN5c3RlbS13aWRlIGJsb2Nrcy4KK1doZW4gbm9uLW5pbCwgQUxMT1ctRElTUExB
WS1TTEVFUCBhbGxvd3MgdGhlIGRpc3BsYXkgdG8gc2xlZXAgb3IgYQorc2NyZWVuIHNhdmVyIHRv
IHJ1biB3aGlsZSB0aGUgc3lzdGVtIGlkbGUgc2xlZXAgaXMgYmxvY2tlZC4gIFRoZSBkZWZhdWx0
CitpcyB0byBrZWVwIHRoZSBkaXNwbGF5IGFjdGl2ZS4KK1JldHVybiBhIHNsZWVwLWJsb2NrIHRv
a2VuLiIpCisKKyhjbC1kZWZnZW5lcmljIHN5c3RlbS1zbGVlcC0tdW5ibG9jay1zbGVlcCAodG9r
ZW4pCisgICJVbmJsb2NrIHRoZSBzeXN0ZW0gc2xlZXAgYmxvY2sgYXNzb2NpYXRlZCB3aXRoIFRP
S0VOLgorUmV0dXJuIG5vbi1uaWwgVE9LRU4gd2FzIHVuYmxvY2tlZCwgb3IgbmlsIGlmIG5vdC4i
KQorCisoZGVmdmFyIHN5c3RlbS1zbGVlcC0tZXZlbnQtaW4tcHJvZ3Jlc3MgbmlsKQorKGRlZnZh
ciBzeXN0ZW0tc2xlZXAtLWV2ZW50LXF1ZXVlIG5pbCkKKworKGRlZnVuIHN5c3RlbS1zbGVlcC0t
c2xlZXAtZXZlbnQtZnVuY3Rpb24gKGV2ZW50KQorICAiSGFuZGxlIDxzbGVlcC1ldmVudD4gc3Bl
Y2lhbCBldmVudHMgYW5kIGF2b2lkIHJhY2VzLiIKKyAgOzsgUXVldWUgaW5jb21pbmcgZXZlbnQu
CisgIChzZXRxIHN5c3RlbS1zbGVlcC0tZXZlbnQtcXVldWUKKyAgICAgICAgKGFwcGVuZCBzeXN0
ZW0tc2xlZXAtLWV2ZW50LXF1ZXVlIChsaXN0IGV2ZW50KSkpCisgIDs7IElmIGFuIGV2ZW50IGlz
IGFscmVhZHkgaW4gcHJvZ3Jlc3MsIHJldHVybiByaWdodCBhd2F5LgorICA7OyBPdGhlcndpc2Us
IHByb2Nlc3MgcXVldWVkIGV2ZW50cy4KKyAgKHdoaWxlIChhbmQgKG5vdCBzeXN0ZW0tc2xlZXAt
LWV2ZW50LWluLXByb2dyZXNzKQorICAgICAgICAgICAgICBzeXN0ZW0tc2xlZXAtLWV2ZW50LXF1
ZXVlKQorICAgIChsZXQgKChjdXJyZW50LWV2ZW50IChwb3Agc3lzdGVtLXNsZWVwLS1ldmVudC1x
dWV1ZSkpKQorICAgICAgKHNldHEgc3lzdGVtLXNsZWVwLS1ldmVudC1pbi1wcm9ncmVzcyBjdXJy
ZW50LWV2ZW50KQorICAgICAgKHVud2luZC1wcm90ZWN0CisgICAgICAgICAgKHJ1bi1ob29rLXdp
dGgtYXJncyAnc3lzdGVtLXNsZWVwLWV2ZW50LWZ1bmN0aW9ucworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3VycmVudC1ldmVudCkKKyAgICAgICAgKHNldHEgc3lzdGVtLXNsZWVwLS1l
dmVudC1pbi1wcm9ncmVzcyBuaWwpKSkpKQorCisMCis7OyBELUJ1cyBzdXBwb3J0LgorCisoZGVm
dmFyIHN5c3RlbS1zbGVlcC0tZGJ1cy1zbGVlcC1pbmhpYml0b3ItdHlwZXMgInNsZWVwIgorICAi
VGhpcyBpcyBhIGNvbG9uLXNlcGFyYXRlZCBsaXN0IG9mIG9wdGlvbnMuCitUaGUgZGVmYXVsdCBp
cyBcInNsZWVwXCIgd2hpY2ggaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBvdGhlciBzdXBwb3J0ZWQK
K2BzeXN0ZW0tc2xlZXAnIHBsYXRmb3Jtcy4gIFRoaXMgY291bGQgYWxzbyBiZQorXCJzbGVlcDpz
aHV0ZG93blwiLiBTaHV0ZG93biBpcyBhdmFpbGFibGUgb25seSBvbiBELUJ1cyBzeXN0ZW1zLiIp
CisKKyhkZWZ2YXIgc3lzdGVtLXNsZWVwLS1kYnVzLWRlbGF5LWxvY2sgbmlsKQorKGRlZnZhciBz
eXN0ZW0tc2xlZXAtLWRidXMtcHJlLXNsZWVwLXNpZ25hbCBuaWwpCisKKyhkZWZ1biBzeXN0ZW0t
c2xlZXAtLWRidXMtZGVsYXktbG9jayAobWFrZS1vci1jbG9zZSkKKyAgKGNvbmQgKG1ha2Utb3It
Y2xvc2UKKyAgICAgICAgIChpZiBzeXN0ZW0tc2xlZXAtLWRidXMtZGVsYXktbG9jaworICAgICAg
ICAgICAgIChlcnJvciAiRGVsYXkgbG9jayBzaG91bGQgYmUgbmlsIikKKyAgICAgICAgICAgKHNl
dHEgc3lzdGVtLXNsZWVwLS1kYnVzLWRlbGF5LWxvY2sKKyAgICAgICAgICAgICAgICAgKGRidXMt
Y2FsbC1tZXRob2QKKyAgICAgICAgICAgICAgICAgIDpzeXN0ZW0KKyAgICAgICAgICAgICAgICAg
ICJvcmcuZnJlZWRlc2t0b3AubG9naW4xIgorICAgICAgICAgICAgICAgICAgIi9vcmcvZnJlZWRl
c2t0b3AvbG9naW4xIgorICAgICAgICAgICAgICAgICAgIm9yZy5mcmVlZGVza3RvcC5sb2dpbjEu
TWFuYWdlciIKKyAgICAgICAgICAgICAgICAgICJJbmhpYml0IgorICAgICAgICAgICAgICAgICAg
OmtlZXAtZmQKKyAgICAgICAgICAgICAgICAgIHN5c3RlbS1zbGVlcC0tZGJ1cy1zbGVlcC1pbmhp
Yml0b3ItdHlwZXMKKyAgICAgICAgICAgICAgICAgIGRidXMtc2VydmljZS1lbWFjcworICAgICAg
ICAgICAgICAgICAgIkVtYWNzIFNsZWVwIEV2ZW50IFdhdGNoZXIiCisgICAgICAgICAgICAgICAg
ICAiZGVsYXkiKSkpKQorICAgICAgICAodAorICAgICAgICAgKHdoZW4gc3lzdGVtLXNsZWVwLS1k
YnVzLWRlbGF5LWxvY2sKKyAgICAgICAgICAgKGRidXMtLWZkLWNsb3NlIHN5c3RlbS1zbGVlcC0t
ZGJ1cy1kZWxheS1sb2NrKQorICAgICAgICAgICAoc2V0cSBzeXN0ZW0tc2xlZXAtLWRidXMtZGVs
YXktbG9jayBuaWwpKSkpKQorCisoZGVmdW4gc3lzdGVtLXNsZWVwLS1kYnVzLXByZXBhcmUtZm9y
LXNsZWVwLWNhbGxiYWNrIChzbGVlcC1vci13YWtlKQorICAoY29uZCAoc2xlZXAtb3Itd2FrZQor
ICAgICAgICAgKGluc2VydC1zcGVjaWFsLWV2ZW50ICcoc2xlZXAtZXZlbnQgcHJlLXNsZWVwKSkp
CisgICAgICAgICh0CisgICAgICAgICAoaW5zZXJ0LXNwZWNpYWwtZXZlbnQgJyhzbGVlcC1ldmVu
dCBwb3N0LXdha2UpKSkpKQorCisoZGVmdW4gc3lzdGVtLXNsZWVwLS1kYnVzLXByZXBhcmUtZm9y
LXNsZWVwLXdhdGNoZXIgKG1ha2Utb3ItY2xvc2UpCisgIChjb25kIChtYWtlLW9yLWNsb3NlCisg
ICAgICAgICAoaWYgc3lzdGVtLXNsZWVwLS1kYnVzLXByZS1zbGVlcC1zaWduYWwKKyAgICAgICAg
ICAgICAoZXJyb3IgIlByZXBhcmVGb3JTbGVlcCB3YXRjaGVyIHNob3VsZCBiZSBuaWwiKQorICAg
ICAgICAgICAoc2V0cSBzeXN0ZW0tc2xlZXAtLWRidXMtcHJlLXNsZWVwLXNpZ25hbAorCSAgICAg
ICAgIChkYnVzLXJlZ2lzdGVyLXNpZ25hbAorICAgICAgICAgICAgICAgICAgOnN5c3RlbQorCSAg
ICAgICAgICAib3JnLmZyZWVkZXNrdG9wLmxvZ2luMSIKKwkgICAgICAgICAgIi9vcmcvZnJlZWRl
c2t0b3AvbG9naW4xIgorCSAgICAgICAgICAib3JnLmZyZWVkZXNrdG9wLmxvZ2luMS5NYW5hZ2Vy
IgorCSAgICAgICAgICAiUHJlcGFyZUZvclNsZWVwIgorCSAgICAgICAgICAjJ3N5c3RlbS1zbGVl
cC0tZGJ1cy1wcmVwYXJlLWZvci1zbGVlcC1jYWxsYmFjaykpKSkKKyAgICAgICAgKHQKKyAgICAg
ICAgIChkYnVzLXVucmVnaXN0ZXItb2JqZWN0IHN5c3RlbS1zbGVlcC0tZGJ1cy1wcmUtc2xlZXAt
c2lnbmFsKQorICAgICAgICAgKHNldHEgc3lzdGVtLXNsZWVwLS1kYnVzLXByZS1zbGVlcC1zaWdu
YWwgbmlsKSkpKQorCisoZGVmdW4gc3lzdGVtLXNsZWVwLS1kYnVzLXByZXBhcmUtZm9yLXNsZWVw
LWZ1bmN0aW9uIChldmVudCkKKyAgKHBjYXNlIChjYWRyIGV2ZW50KQorICAgICgncHJlLXNsZWVw
CisgICAgIChzeXN0ZW0tc2xlZXAtLWRidXMtZGVsYXktbG9jayBuaWwpKQorICAgICgncG9zdC13
YWtlCisgICAgIChzeXN0ZW0tc2xlZXAtLWRidXMtZGVsYXktbG9jayB0KSkpKQorCisoY2wtZGVm
bWV0aG9kIHN5c3RlbS1zbGVlcC0tZW5hYmxlICgmY29udGV4dAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHN5c3RlbS1zbGVlcC0tYmFjay1lbmQgKGVxbCAnZGJ1cykpKQor
ICA7OyBPcmRlciBtYXR0ZXJzLgorICAoYWRkLWhvb2sgJ3N5c3RlbS1zbGVlcC1ldmVudC1mdW5j
dGlvbnMKKyAgICAgICAgICAjJ3N5c3RlbS1zbGVlcC0tZGJ1cy1wcmVwYXJlLWZvci1zbGVlcC1m
dW5jdGlvbgorICAgICAgICAgIDs7IFRoaXMgbXVzdCBydW4gbGFzdC4KKyAgICAgICAgICA5OSkK
KyAgKHN5c3RlbS1zbGVlcC0tZGJ1cy1kZWxheS1sb2NrIHQpCisgIChzeXN0ZW0tc2xlZXAtLWRi
dXMtcHJlcGFyZS1mb3Itc2xlZXAtd2F0Y2hlciB0KQorICB0KQorCisoY2wtZGVmbWV0aG9kIHN5
c3RlbS1zbGVlcC0tZGlzYWJsZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoc3lzdGVtLXNsZWVwLS1iYWNrLWVuZCAoZXFsICdkYnVzKSkpCisgIChzeXN0
ZW0tc2xlZXAtLWRidXMtcHJlcGFyZS1mb3Itc2xlZXAtd2F0Y2hlciBuaWwpCisgIChzeXN0ZW0t
c2xlZXAtLWRidXMtZGVsYXktbG9jayBuaWwpCisgIChyZW1vdmUtaG9vayAnc3lzdGVtLXNsZWVw
LWV2ZW50LWZ1bmN0aW9ucworICAgICAgICAgICAgICAgIydzeXN0ZW0tc2xlZXAtLWRidXMtcHJl
cGFyZS1mb3Itc2xlZXAtZnVuY3Rpb24pKQorCisoY2wtZGVmbWV0aG9kIHN5c3RlbS1zbGVlcC0t
YmxvY2stc2xlZXAgKHdoeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbGxvdy1kaXNwbGF5LXNsZWVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChzeXN0ZW0tc2xlZXAtLWJhY2stZW5kIChlcWwgJ2RidXMpKSkKKyAgKGxldCAoKHN1YnRva2Vu
cykpCisgICAgKGlmLWxldCogKChzbGVlcC1jb29raWUgKGRidXMtY2FsbC1tZXRob2QKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOnN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAib3JnLmZyZWVkZXNrdG9wLmxvZ2luMSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIi9vcmcvZnJlZWRlc2t0b3AvbG9naW4xIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAib3JnLmZyZWVkZXNrdG9wLmxvZ2luMS5NYW5hZ2VyIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiSW5oaWJpdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmtlZXAtZmQK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtLXNsZWVwLS1kYnVzLXNsZWVwLWlu
aGliaXRvci10eXBlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYnVzLXNlcnZpY2Ut
ZW1hY3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2h5CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJibG9jayIpKSkKKyAgICAgICAgKHByb2duCisgICAgICAgICAgKGxldCAo
KGluaGliaXQtcXVpdCB0KSkKKyAgICAgICAgICAgIChwdXNoIChjb25zICdkYnVzLWluaGliaXRv
ci1sb2NrIHNsZWVwLWNvb2tpZSkgc3VidG9rZW5zKSkKKyAgICAgICAgICAodW5sZXNzIGFsbG93
LWRpc3BsYXktc2xlZXAKKyAgICAgICAgICAgIChpZi1sZXQqICgoc2NyZWVuLWNvb2tpZQorICAg
ICAgICAgICAgICAgICAgICAgICAoZGJ1cy1jYWxsLW1ldGhvZAorICAgICAgICAgICAgICAgICAg
ICAgICAgOnNlc3Npb24KKyAgICAgICAgICAgICAgICAgICAgICAgICJvcmcuZnJlZWRlc2t0b3Au
U2NyZWVuU2F2ZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAiL29yZy9mcmVlZGVza3RvcC9T
Y3JlZW5TYXZlciIKKyAgICAgICAgICAgICAgICAgICAgICAgICJvcmcuZnJlZWRlc2t0b3AuU2Ny
ZWVuU2F2ZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAiSW5oaWJpdCIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRidXMtc2VydmljZS1lbWFjcworICAgICAgICAgICAgICAgICAgICAgICAg
IlNjcmVlbiBTYXZlciBCbG9jayIpKSkKKyAgICAgICAgICAgICAgICAobGV0ICgoaW5oaWJpdC1x
dWl0IHQpKQorICAgICAgICAgICAgICAgICAgKHB1c2ggKGNvbnMgJ2RidXMtc2NyZWVuc2F2ZXIt
bG9jayBzY3JlZW4tY29va2llKSBzdWJ0b2tlbnMpKQorICAgICAgICAgICAgICAod2FybiAiVW5h
YmxlIHRvIGJsb2NrIHRoZSBzY3JlZW4gc2F2ZXIiKSkpCisgICAgICAgICAgKGxldCAoKGluaGli
aXQtcXVpdCB0KSkKKyAgICAgICAgICAgIChsZXQgKCh0b2tlbiAobGlzdCA6c3lzdGVtICdkYnVz
IDp3aHkgd2h5IDpzdWJ0b2tlbnMgc3VidG9rZW5zKSkpCisgICAgICAgICAgICAgIChwdXNoIHRv
a2VuIHN5c3RlbS1zbGVlcC0tc2xlZXAtYmxvY2stdG9rZW5zKQorICAgICAgICAgICAgICB0b2tl
bikpKQorICAgICAgKHdhcm4gIlVuYWJsZSB0byBibG9jayBzeXN0ZW0gc2xlZXAiKSkpKQorCiso
Y2wtZGVmbWV0aG9kIHN5c3RlbS1zbGVlcC0tdW5ibG9jay1zbGVlcCAodG9rZW4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udGV4dAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tc2xlZXAtLWJhY2stZW5kIChl
cWwgJ2RidXMpKSkKKworICAoaWYgKG1lbXEgdG9rZW4gc3lzdGVtLXNsZWVwLS1zbGVlcC1ibG9j
ay10b2tlbnMpCisgICAgICAocHJvZ24KKyAgICAgICAgKGxldCAoKGluaGliaXQtcXVpdCB0KSkK
KyAgICAgICAgICAoc2V0cSBzeXN0ZW0tc2xlZXAtLXNsZWVwLWJsb2NrLXRva2VucworICAgICAg
ICAgICAgICAgIChyZW1xIHRva2VuIHN5c3RlbS1zbGVlcC0tc2xlZXAtYmxvY2stdG9rZW5zKSkp
CisgICAgICAgIChkb2xpc3QgKHN1YnRva2VuIChwbGlzdC1nZXQgdG9rZW4gOnN1YnRva2Vucykp
CisgICAgICAgICAgKHBjYXNlIChjYXIgc3VidG9rZW4pCisgICAgICAgICAgICAoJ2RidXMtaW5o
aWJpdG9yLWxvY2sKKyAgICAgICAgICAgICAoZGJ1cy0tZmQtY2xvc2UgKGNkciBzdWJ0b2tlbikp
KQorICAgICAgICAgICAgKCdkYnVzLXNjcmVlbnNhdmVyLWxvY2sKKyAgICAgICAgICAgICAoZGJ1
cy1jYWxsLW1ldGhvZAorICAgICAgICAgICAgICA6c2Vzc2lvbgorICAgICAgICAgICAgICAib3Jn
LmZyZWVkZXNrdG9wLlNjcmVlblNhdmVyIgorICAgICAgICAgICAgICAiL29yZy9mcmVlZGVza3Rv
cC9TY3JlZW5TYXZlciIKKyAgICAgICAgICAgICAgIm9yZy5mcmVlZGVza3RvcC5TY3JlZW5TYXZl
ciIKKyAgICAgICAgICAgICAgIlVuSW5oaWJpdCIKKyAgICAgICAgICAgICAgKGNkciBzdWJ0b2tl
bikpKSkpCisgICAgICAgIHQpCisgICAgKHdhcm4gIlVua25vd24gYHN5c3RlbS1zbGVlcCcgc2xl
ZXAgdG9rZW4iKQorICAgIG5pbCkpCisKKwwKKzs7IG1hY09TL0dOVXN0ZXAgTlMgc3VwcG9ydC4K
KworKGRlY2xhcmUtZnVuY3Rpb24gbnMtYmxvY2stc3lzdGVtLXNsZWVwICJuc2Zucy5tIikKKyhk
ZWNsYXJlLWZ1bmN0aW9uIG5zLXVuYmxvY2stc3lzdGVtLXNsZWVwICJuc2Zucy5tIikKKworKGNs
LWRlZm1ldGhvZCBzeXN0ZW0tc2xlZXAtLWVuYWJsZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tc2xlZXAtLWJhY2stZW5kIChlcWwgJ25zKSkp
CisgIHQpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXNsZWVwLS1kaXNhYmxlICgmY29udGV4dAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tc2xlZXAtLWJhY2st
ZW5kIChlcWwgJ25zKSkpCisgIChpZ25vcmUpKQorCisoY2wtZGVmbWV0aG9kIHN5c3RlbS1zbGVl
cC0tYmxvY2stc2xlZXAgKHdoeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbGxvdy1kaXNwbGF5LXNsZWVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChzeXN0ZW0tc2xlZXAtLWJhY2stZW5kIChlcWwgJ25zKSkpCisgIChpZi1sZXQqICgoY29v
a2llIChucy1ibG9jay1zeXN0ZW0tc2xlZXAgd2h5IGFsbG93LWRpc3BsYXktc2xlZXApKQorICAg
ICAgICAgICAgKHRva2VuIChsaXN0IDpzeXN0ZW0gJ25zIDp3aHkgd2h5CisgICAgICAgICAgICAg
ICAgICAgICAgICAgOnRva2VuIChjb25zICducy1zbGVlcC1ibG9jayBjb29raWUpKSkpCisgICAg
ICAocHJvZ24KKyAgICAgICAgKGxldCAoKGluaGliaXQtcXVpdCB0KSkKKyAgICAgICAgICAocHVz
aCB0b2tlbiBzeXN0ZW0tc2xlZXAtLXNsZWVwLWJsb2NrLXRva2VucykpCisgICAgICAgIHRva2Vu
KQorICAgICh3YXJuICJVbmFibGUgdG8gYmxvY2sgc3lzdGVtIHNsZWVwIikpKQorCisoY2wtZGVm
bWV0aG9kIHN5c3RlbS1zbGVlcC0tdW5ibG9jay1zbGVlcCAodG9rZW4KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udGV4dAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tc2xlZXAtLWJhY2stZW5kIChlcWwgJ25z
KSkpCisgIChpZiAobWVtcSB0b2tlbiBzeXN0ZW0tc2xlZXAtLXNsZWVwLWJsb2NrLXRva2VucykK
KyAgICAgIChwcm9nbgorICAgICAgICAobGV0ICgoaW5oaWJpdC1xdWl0IHQpKQorICAgICAgICAg
IChzZXRxIHN5c3RlbS1zbGVlcC0tc2xlZXAtYmxvY2stdG9rZW5zCisgICAgICAgICAgICAgICAg
KHJlbXEgdG9rZW4gc3lzdGVtLXNsZWVwLS1zbGVlcC1ibG9jay10b2tlbnMpKSkKKyAgICAgICAg
KGlmIChucy11bmJsb2NrLXN5c3RlbS1zbGVlcCAoY2RyIChwbGlzdC1nZXQgdG9rZW4gOnRva2Vu
KSkpCisgICAgICAgICAgICB0CisgICAgICAgICAgKHdhcm4gIlVuYWJsZSB0byB1bmJsb2NrIHN5
c3RlbSBzbGVlcCIpCisgICAgICAgICAgbmlsKSkKKyAgICAod2FybiAiVW5rbm93biBgc3lzdGVt
LXNsZWVwJyBzbGVlcCB0b2tlbiIpCisgICAgbmlsKSkKKworDAorOzsgTVMtV2luZG93cyBzdXBw
b3J0LgorCisoZGVjbGFyZS1mdW5jdGlvbiB3MzItYmxvY2stc3lzdGVtLXNsZWVwICJ3MzJmbnMu
YyIpCisoZGVjbGFyZS1mdW5jdGlvbiB3MzItdW5ibG9jay1zeXN0ZW0tc2xlZXAgInczMmZucy5j
IikKKyhkZWNsYXJlLWZ1bmN0aW9uIHczMi1zeXN0ZW0tc2xlZXAtYmxvY2stY291bnQgInczMmZu
cy5jIikKKworKGRlZnZhciBzeXN0ZW0tc2xlZXAtLXczMi1zbGVlcC1ibG9jay1jb3VudCAwKQor
CisoY2wtZGVmbWV0aG9kIHN5c3RlbS1zbGVlcC0tZW5hYmxlICgmY29udGV4dAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS1zbGVlcC0tYmFjay1lbmQgKGVxbCAn
dzMyKSkpCisgIHQpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXNsZWVwLS1kaXNhYmxlICgmY29u
dGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tc2xlZXAt
LWJhY2stZW5kIChlcWwgJ3czMikpKQorICAoaWdub3JlKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0
ZW0tc2xlZXAtLWJsb2NrLXNsZWVwICh3aHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWxsb3ctZGlzcGxheS1zbGVlcAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoc3lzdGVtLXNsZWVwLS1iYWNrLWVuZCAoZXFsICd3MzIpKSkKKyAgKGlmLWxl
dCogKChjb29raWUgKHczMi1ibG9jay1zeXN0ZW0tc2xlZXAgYWxsb3ctZGlzcGxheS1zbGVlcCkp
CisgICAgICAgICAgICAodG9rZW4gKGxpc3QgOnN5c3RlbSAndzMyIDp3aHkgd2h5CisgICAgICAg
ICAgICAgICAgICAgICAgICAgOnRva2VuIChjb25zICd3MzItc2xlZXAtYmxvY2sgY29va2llKSkp
KQorICAgICAgKHByb2duCisgICAgICAgIChsZXQgKChpbmhpYml0LXF1aXQgdCkpCisgICAgICAg
ICAgKHB1c2ggdG9rZW4gc3lzdGVtLXNsZWVwLS1zbGVlcC1ibG9jay10b2tlbnMpKQorICAgICAg
ICB0b2tlbikKKyAgICAod2FybiAiVW5hYmxlIHRvIGJsb2NrIHN5c3RlbSBzbGVlcCIpKSkKKwor
KGNsLWRlZm1ldGhvZCBzeXN0ZW0tc2xlZXAtLXVuYmxvY2stc2xlZXAgKHRva2VuCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbnRleHQKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXNsZWVwLS1iYWNrLWVuZCAo
ZXFsICd3MzIpKSkKKyAgKGlmIChtZW1xIHRva2VuIHN5c3RlbS1zbGVlcC0tc2xlZXAtYmxvY2st
dG9rZW5zKQorICAgICAgKHByb2duCisgICAgICAgIChsZXQgKChpbmhpYml0LXF1aXQgdCkpCisg
ICAgICAgICAgKHNldHEgc3lzdGVtLXNsZWVwLS1zbGVlcC1ibG9jay10b2tlbnMKKyAgICAgICAg
ICAgICAgICAocmVtcSB0b2tlbiBzeXN0ZW0tc2xlZXAtLXNsZWVwLWJsb2NrLXRva2VucykpKQor
ICAgICAgICAoaWYgKHczMi11bmJsb2NrLXN5c3RlbS1zbGVlcCkKKyAgICAgICAgICAgIHQKKyAg
ICAgICAgICAod2FybiAiVW5hYmxlIHRvIHVuYmxvY2sgc3lzdGVtIHNsZWVwIikKKyAgICAgICAg
ICBuaWwpKQorICAgICh3YXJuICJVbmtub3duIGBzeXN0ZW0tc2xlZXAnIHNsZWVwIHRva2VuIikK
KyAgICBuaWwpKQorCisMCis7OyBJbml0aWFsaXplIHN5c3RlbS1zbGVlcC4KKworKHN5c3RlbS1z
bGVlcC1lbmFibGUpCisKKyhwcm92aWRlICdzeXN0ZW0tc2xlZXApCisKKzs7OyBzeXN0ZW0tc2xl
ZXAuZWwgZW5kcyBoZXJlCmRpZmYgLS1naXQgYS9zcmMvbnNmbnMubSBiL3NyYy9uc2Zucy5tCmlu
ZGV4IGNmNjg1NjMwYWI3Li4zZDNkNWVjMWJkZSAxMDA2NDQKLS0tIGEvc3JjL25zZm5zLm0KKysr
IGIvc3JjL25zZm5zLm0KQEAgLTM4MDUsNiArMzgwNSw4OCBAQCBUaGUgcG9zaXRpb24gaXMgcmV0
dXJuZWQgYXMgYSBjb25zIGNlbGwgKFggLiBZKSBvZiB0aGUKICAgcmV0dXJuIFFuaWw7CiB9CiAK
Ky8qIEEgdW5pcXVlIGludGVnZXIgc2xlZXAgYmxvY2sgaWQgYW5kIGEgaGFzaCBtYXAgb2YgaXRz
IGlkIHRvIG9wYXF1ZQorICAgTlNPYmplY3Qgc2xlZXAgYmxvY2sgYWN0aXZpdHkgdG9rZW5zLiAg
Ki8KK3N0YXRpYyB1bnNpZ25lZCBpbnQgc2xlZXBfYmxvY2tfaWQgPSAwOworc3RhdGljIE5TTXV0
YWJsZURpY3Rpb25hcnkgKnNsZWVwX2Jsb2NrX21hcCA9IE5VTEw7CisKK0RFRlVOICgibnMtYmxv
Y2stc3lzdGVtLXNsZWVwIiwKKyAgICAgICBGbnNfYmxvY2tfc3lzdGVtX3NsZWVwLAorICAgICAg
IFNuc19ibG9ja19zeXN0ZW1fc2xlZXAsCisgICAgICAgMiwgMiwgMCwKKyAgICAgICBkb2M6IC8q
IEJsb2NrIHN5c3RlbSBpZGxlIHNsZWVwLgorV0hZIGlzIGEgc3RyaW5nIHJlYXNvbiBmb3IgdGhl
IGJsb2NrLgorSWYgQUxMT1ctRElTUExBWS1TTEVFUCBpcyBub24tbmlsLCBibG9jayB0aGUgc2Ny
ZWVuIGZyb20gc2xlZXBpbmcuCitSZXR1cm4gYSB0b2tlbiB0byB1bmJsb2NrIHRoaXMgYmxvY2sg
dXNpbmcgYG5zLXVuYmxvY2stc3lzdGVtLXNsZWVwJywKK29yIG5pbCBpZiB0aGUgYmxvY2sgZmFp
bHMuICAqLykKKyAgKExpc3BfT2JqZWN0IHdoeSwgTGlzcF9PYmplY3QgYWxsb3dfZGlzcGxheV9z
bGVlcCkKK3sKKyAgYmxvY2tfaW5wdXQgKCk7CisKKyAgTlNTdHJpbmcgKnJlYXNvbiA9IEAiRW1h
Y3MiOworICBpZiAoIU5JTFAgKHdoeSkpCisgICAgeworICAgICAgQ0hFQ0tfU1RSSU5HICh3aHkp
OworICAgICAgcmVhc29uID0gW05TU3RyaW5nIHN0cmluZ1dpdGhMaXNwU3RyaW5nOiB3aHldOwor
ICAgIH0KKworICB1bnNpZ25lZCBsb25nIGFjdGl2aXR5X29wdGlvbnMgPQorICAgIE5TQWN0aXZp
dHlVc2VySW5pdGlhdGVkIHwgTlNBY3Rpdml0eUlkbGVTeXN0ZW1TbGVlcERpc2FibGVkOworICBp
ZiAoTklMUCAoYWxsb3dfZGlzcGxheV9zbGVlcCkpCisgICAgYWN0aXZpdHlfb3B0aW9ucyB8PSBO
U0FjdGl2aXR5SWRsZURpc3BsYXlTbGVlcERpc2FibGVkOworCisgIE5TUHJvY2Vzc0luZm8gKnBy
b2Nlc3NJbmZvID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dOworICBOU09iamVjdCAqYWN0
aXZpdHlfaWQgPSBuaWw7CisgIGlmIChbcHJvY2Vzc0luZm8gcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihiZWdpbkFjdGl2aXR5V2l0aE9wdGlvbnM6cmVhc29uOildKQorICAgIGFjdGl2aXR5
X2lkID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXQorCQkJICAgICBiZWdpbkFjdGl2aXR5
V2l0aE9wdGlvbnM6IGFjdGl2aXR5X29wdGlvbnMKKwkJCQkJICAgICAgIHJlYXNvbjogcmVhc29u
XTsKKyAgdW5ibG9ja19pbnB1dCAoKTsKKworICBpZiAoIXNsZWVwX2Jsb2NrX21hcCkKKyAgICBz
bGVlcF9ibG9ja19tYXAgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2Fw
YWNpdHk6IDI1XTsKKworICBpZiAoYWN0aXZpdHlfaWQpCisgICAgeworICAgICAgW3NsZWVwX2Js
b2NrX21hcCBzZXRPYmplY3Q6IGFjdGl2aXR5X2lkCisJCQkgIGZvcktleTogW05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6ICsrc2xlZXBfYmxvY2tfaWRdXTsKKyAgICAgIHJldHVybiBtYWtlX2ZpeG51
bSAoc2xlZXBfYmxvY2tfaWQpOworICAgIH0KKyAgZWxzZQorICAgIHJldHVybiBRbmlsOworfQor
CitERUZVTiAoIm5zLXVuYmxvY2stc3lzdGVtLXNsZWVwIiwKKyAgICAgICBGbnNfdW5ibG9ja19z
eXN0ZW1fc2xlZXAsCisgICAgICAgU25zX3VuYmxvY2tfc3lzdGVtX3NsZWVwLAorICAgICAgIDEs
IDEsIDAsCisgICAgICAgZG9jOiAvKiBVbmJsb2NrIHN5c3RlbSBpZGxlIHNsZWVwLgorVE9LRU4g
aXMgYW4gb2JqZWN0IHJldHVybmVkIGJ5IGBucy1ibG9jay1zeXN0ZW0tc2xlZXAnLgorUmV0dXJu
IG5vbi1uaWwgaWYgdGhlIFRPS0VOIGJsb2NrIHdhcyB1bmJsb2NrZWQuICAqLykKKyAgKExpc3Bf
T2JqZWN0IHRva2VuKQoreworICBibG9ja19pbnB1dCAoKTsKKyAgTGlzcF9PYmplY3QgcmVzID0g
UW5pbDsKKyAgQ0hFQ0tfRklYTkFUICh0b2tlbik7CisgIGlmIChzbGVlcF9ibG9ja19tYXApCisg
ICAgeworICAgICAgTlNOdW1iZXIgKmtleSA9IFtOU051bWJlciBudW1iZXJXaXRoSW50OiBYRklY
TkFUICh0b2tlbildOworICAgICAgTlNPYmplY3QgKmFjdGl2aXR5X2lkID0gW3NsZWVwX2Jsb2Nr
X21hcCBvYmplY3RGb3JLZXk6IGtleV07CisgICAgICBpZiAoYWN0aXZpdHlfaWQpCisJeworCSAg
TlNQcm9jZXNzSW5mbyAqcHJvY2Vzc0luZm8gPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb107
CisJICBpZiAoW3Byb2Nlc3NJbmZvIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZW5kQWN0
aXZpdHk6KV0pCisJICAgIHsKKwkgICAgICBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGVu
ZEFjdGl2aXR5OiBhY3Rpdml0eV9pZF07CisJICAgICAgcmVzID0gUXQ7CisJICAgIH0KKwkgIFtz
bGVlcF9ibG9ja19tYXAgcmVtb3ZlT2JqZWN0Rm9yS2V5OiBrZXldOworCX0KKyAgICB9CisgIHVu
YmxvY2tfaW5wdXQgKCk7CisgIHJldHVybiByZXM7Cit9CisKICNpZmRlZiBOU19JTVBMX0NPQ09B
CiAKIERFRlVOICgibnMtc2VuZC1pdGVtcyIsCkBAIC00MDkxLDYgKzQxNzMsOCBAQCAtIChMaXNw
X09iamVjdClsaXNwU3RyaW5nCiAgIGRlZnN1YnIgKCZTbnNfYmFkZ2UpOwogICBkZWZzdWJyICgm
U25zX3JlcXVlc3RfdXNlcl9hdHRlbnRpb24pOwogICBkZWZzdWJyICgmU25zX3Byb2dyZXNzX2lu
ZGljYXRvcik7CisgIGRlZnN1YnIgKCZTbnNfYmxvY2tfc3lzdGVtX3NsZWVwKTsKKyAgZGVmc3Vi
ciAoJlNuc191bmJsb2NrX3N5c3RlbV9zbGVlcCk7CiAjaWZkZWYgTlNfSU1QTF9DT0NPQQogICBk
ZWZzdWJyICgmU25zX3NlbmRfaXRlbXMpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvbnN0ZXJt
Lm0gYi9zcmMvbnN0ZXJtLm0KaW5kZXggYzg1MmI3MGJlNzQuLmNmNzNjNzJhNmI0IDEwMDY0NAot
LS0gYS9zcmMvbnN0ZXJtLm0KKysrIGIvc3JjL25zdGVybS5tCkBAIC01ODM4LDE1ICs1ODM4LDYg
QEAgc3RhdGljIExpc3BfT2JqZWN0IG5zX25ld19mb250IChzdHJ1Y3QgZnJhbWUgKmYsIExpc3Bf
T2JqZWN0IGZvbnRfb2JqZWN0LAogICBuc19wZW5kaW5nX3NlcnZpY2VfbmFtZXMgPSBbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKICAgbnNfcGVuZGluZ19zZXJ2aWNlX2FyZ3MgPSBbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKIAotI2lmIGRlZmluZWQgKE5TX0lNUExfQ09DT0Ep
ICYmIE1BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMjYwMDAwCi0gIC8qIERpc2FibGUg
cHJvYmxlbWF0aWMgZXZlbnQgcHJvY2Vzc2luZyBvbiBtYWNPUyAyNiAoVGFob2UpIHRvIGF2b2lk
Ci0gICAgIHNjcm9sbGluZyBsYWcgYW5kIGlucHV0IGhhbmRsaW5nIGlzc3Vlcy4gIFRoZXNlIGFy
ZSB1bmRvY3VtZW50ZWQKLSAgICAgb3B0aW9ucyBhcyBvZiBtYWNPUyAyNi4wLiAgKi8KLSAgW05T
VXNlckRlZmF1bHRzLnN0YW5kYXJkVXNlckRlZmF1bHRzCi0gICAgICByZWdpc3RlckRlZmF1bHRz
OkB7QCJOU0V2ZW50Q29uY3VycmVudFByb2Nlc3NpbmdFbmFibGVkIiA6IEAiTk8iLAotICAgICAg
ICBAIk5TQXBwbGljYXRpb25VcGRhdGVDeWNsZUVuYWJsZWQiIDogQCJOTyJ9XTsKLSNlbmRpZgot
CiAgIC8qIFN0YXJ0IGFwcCBhbmQgY3JlYXRlIHRoZSBtYWluIG1lbnUsIHdpbmRvdywgdmlldy4K
ICAgICAgTmVlZHMgdG8gYmUgaGVyZSBiZWNhdXNlIG5zX2luaXRpYWxpemVfZGlzcGxheV9pbmZv
ICgpIHVzZXMgQXBwS2l0IGNsYXNzZXMuCiAgICAgIFRoZSB2aWV3IHdpbGwgdGhlbiBhc2sgdGhl
IE5TQXBwIHRvIHN0b3AgYW5kIHJldHVybiB0byBFbWFjcy4gICovCkBAIC02MzgzLDYgKzYzNzQs
MjAgQEAgLSAodm9pZClhcHBsaWNhdGlvbkRpZEZpbmlzaExhdW5jaGluZzogKE5TTm90aWZpY2F0
aW9uICopbm90aWZpY2F0aW9uCiAJIG9iamVjdDpuaWxdOwogI2VuZGlmCiAKKyNpZmRlZiBOU19J
TVBMX0NPQ09BCisgIC8qIFNsZWVwIGV2ZW50IG5vdGlmaWNhdGlvbi4gICovCisgIFtbW05TV29y
a3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gbm90aWZpY2F0aW9uQ2VudGVyXQorICAgIGFkZE9ic2Vy
dmVyOiBzZWxmCisgICAgICAgc2VsZWN0b3I6QHNlbGVjdG9yKHN5c3RlbVdpbGxTbGVlcDopCisJ
ICAgbmFtZTogTlNXb3Jrc3BhY2VXaWxsU2xlZXBOb3RpZmljYXRpb24KKwkgb2JqZWN0OiBuaWxd
OworICBbW1tOU1dvcmtzcGFjZSBzaGFyZWRXb3Jrc3BhY2VdIG5vdGlmaWNhdGlvbkNlbnRlcl0K
KyAgICBhZGRPYnNlcnZlcjogc2VsZgorICAgICAgIHNlbGVjdG9yOiBAc2VsZWN0b3Ioc3lzdGVt
RGlkV2FrZTopCisJICAgbmFtZTogTlNXb3Jrc3BhY2VEaWRXYWtlTm90aWZpY2F0aW9uCisJIG9i
amVjdDogbmlsXTsKKyNlbmRpZgorCiAjaWZkZWYgTlNfSU1QTF9DT0NPQQogICAvKiBTb21lIGZ1
bmN0aW9ucy9tZXRob2RzIGluIENvcmVGb3VuZGF0aW9uL0ZvdW5kYXRpb24gaW5jcmVhc2UgdGhl
CiAgICAgIG1heGltdW0gbnVtYmVyIG9mIG9wZW4gZmlsZXMgZm9yIHRoZSBwcm9jZXNzIGluIHRo
ZWlyIGZpcnN0IGNhbGwuCkBAIC02NDIxLDYgKzY0MjYsMzEgQEAgLSAodm9pZClhbnRpYWxpYXNU
aHJlc2hvbGREaWRDaGFuZ2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCiAjZW5kaWYK
IH0KIAorLyogU2xlZXAgZXZlbnQgbm90aWZpY2F0aW9uLiAgKi8KKworLSAodm9pZCkgc3lzdGVt
V2lsbFNsZWVwOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgoreworI2lmZGVmIE5TX0lN
UExfQ09DT0EKKyAgTlNUUkFDRSAoIltFbWFjc0FwcCBzeXN0ZW1XaWxsU2xlZXA6XSIpOworICBz
dHJ1Y3QgaW5wdXRfZXZlbnQgaWU7CisgIEVWRU5UX0lOSVQgKGllKTsKKyAgaWUua2luZCA9IFNM
RUVQX0VWRU5UOworICBpZS5hcmcgPSBsaXN0MSAoUXByZV9zbGVlcCk7CisgIGtiZF9idWZmZXJf
c3RvcmVfZXZlbnQgKCZpZSk7CisjZW5kaWYKK30KKworLSAodm9pZCkgc3lzdGVtRGlkV2FrZToo
TlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3sKKyNpZmRlZiBOU19JTVBMX0NPQ09BCisg
IE5TVFJBQ0UgKCJbRW1hY3NBcHAgc3lzdGVtRGlkV2FrZTpdIik7CisgIHN0cnVjdCBpbnB1dF9l
dmVudCBpZTsKKyAgRVZFTlRfSU5JVCAoaWUpOworICBpZS5raW5kID0gU0xFRVBfRVZFTlQ7Cisg
IGllLmFyZyA9IGxpc3QxIChRcG9zdF93YWtlKTsKKyAga2JkX2J1ZmZlcl9zdG9yZV9ldmVudCAo
JmllKTsKKyNlbmRpZgorfQogCiAvKiBUZXJtaW5hdGlvbiBzZXF1ZW5jZXM6CiAgICAgQy14IEMt
YzoKQEAgLTExNTQ4LDYgKzExNTc4LDEwIEBAIE5pbCBtZWFucyB1c2UgZnVsbHNjcmVlbiB0aGUg
b2xkICg8IDEwLjcpIHdheS4gIFRoZSBvbGQgd2F5IHdvcmtzIGJldHRlciB3aXRoCiAgIERFRlNZ
TSAoUWV4cGFuZGVkLCAiZXhwYW5kZWQiKTsKICAgREVGU1lNIChRbnNfaW5fZWNob19hcmVhLCAi
bnMtaW4tZWNoby1hcmVhIik7CiAKKyAgLyogU2xlZXAgZXZlbnRzLiAgKi8KKyAgREVGU1lNIChR
cHJlX3NsZWVwLCAicHJlLXNsZWVwIik7CisgIERFRlNZTSAoUXBvc3Rfd2FrZSwgInBvc3Qtd2Fr
ZSIpOworCiAjaWZkZWYgTlNfSU1QTF9DT0NPQQogICBGcHJvdmlkZSAoUWNvY29hLCBRbmlsKTsK
ICAgc3ltc19vZl9tYWNmb250ICgpOwpkaWZmIC0tZ2l0IGEvc3JjL3czMmZucy5jIGIvc3JjL3cz
MmZucy5jCmluZGV4IGI3NWJjZThkMWEyLi45OWY3ZDhkYWI0OCAxMDA2NDQKLS0tIGEvc3JjL3cz
MmZucy5jCisrKyBiL3NyYy93MzJmbnMuYwpAQCAtMTEzMjUsNiArMTEzMjUsMTQzIEBAIERFRlVO
ICgidzMyLXByb2dyZXNzLWluZGljYXRvciIsCiAKICNlbmRpZiAvKiBXSU5ET1dTTlQgKi8KIAor
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCisJCSAgICAgU3lzdGVtIFNsZWVwIFN1cHBvcnQKKyAqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKi8KKwordHlwZWRlZiBVTE9ORyAoV0lOQVBJICogU2V0VGhyZWFkRXhlY3V0aW9uU3RhdGVf
UHJvYykKKyAgKElOIFVMT05HKTsKK3N0YXRpYyBTZXRUaHJlYWRFeGVjdXRpb25TdGF0ZV9Qcm9j
IFNldFRocmVhZEV4ZWN1dGlvblN0YXRlX2ZuID0gTlVMTDsKKworc3RhdGljIHVuc2lnbmVkIGlu
dCBzbGVlcF9ibG9ja19pZCA9IDA7CitzdGF0aWMgdW5zaWduZWQgaW50IHNsZWVwX2Jsb2NrX2Nv
dW50ID0gMDsKK3N0YXRpYyBFWEVDVVRJT05fU1RBVEUgc2xlZXBfYmxvY2tfZXhlY3V0aW9uX3N0
YXRlID0gMDsKKworREVGVU4gKCJ3MzItYmxvY2stc3lzdGVtLXNsZWVwIiwKKyAgICAgICBGdzMy
X2Jsb2NrX3N5c3RlbV9zbGVlcCwKKyAgICAgICBTdzMyX2Jsb2NrX3N5c3RlbV9zbGVlcCwKKyAg
ICAgICAxLCAxLCAwLAorICAgICAgIGRvYzogLyogQmxvY2sgc3lzdGVtIGlkbGUgc2xlZXAuCitJ
ZiBBTExPVy1ESVNQTEFZLVNMRUVQIGlzIG5vbi1uaWwsIGJsb2NrIHRoZSBzY3JlZW4gZnJvbSBz
bGVlcGluZy4KK1JldHVybiBhIHRva2VuIHRvIHVuYmxvY2sgdGhpcyBibG9jayB1c2luZyBgdzMy
LXVuYmxvY2stc3lzdGVtLXNsZWVwJywKK29yIG5pbCBpZiB0aGUgYmxvY2sgZmFpbHMuICAqLykK
KyAgKExpc3BfT2JqZWN0IGFsbG93X2Rpc3BsYXlfc2xlZXApCit7CisgIGlmIChTZXRUaHJlYWRF
eGVjdXRpb25TdGF0ZV9mbiA9PSBOVUxMKQorICAgIHJldHVybiBRbmlsOworCisgIC8qIEVTX0NP
TlRJTlVPVVMga2VlcHMgdGhlIHN0YXRlIHVudGlsIGNsZWFyZWQuICAqLworICBFWEVDVVRJT05f
U1RBVEUgbmV3X3N0YXRlID0gRVNfU1lTVEVNX1JFUVVJUkVEIHwgRVNfQ09OVElOVU9VUzsKKyAg
aWYgKE5JTFAgKGFsbG93X2Rpc3BsYXlfc2xlZXApKQorICAgIG5ld19zdGF0ZSB8PSBFU19ESVNQ
TEFZX1JFUVVJUkVEOworCisgIHNsZWVwX2Jsb2NrX2V4ZWN1dGlvbl9zdGF0ZSA9IFNldFRocmVh
ZEV4ZWN1dGlvblN0YXRlIChuZXdfc3RhdGUpOworCisgIGlmIChzbGVlcF9ibG9ja19leGVjdXRp
b25fc3RhdGUgPT0gMCkKKyAgICByZXR1cm4gUW5pbDsKKyAgZWxzZQorICAgIHsKKyAgICAgIC8q
IE9uZSBtb3JlIGJsb2NrIGFuZCBuZXh0IGlkLiAgKi8KKyAgICAgICsrc2xlZXBfYmxvY2tfY291
bnQ7CisgICAgICArK3NsZWVwX2Jsb2NrX2lkOworCisgICAgICAvKiBTeW50aGVzaXplIGEgdG9r
ZW4uICAqLworICAgICAgcmV0dXJuIG1ha2VfZml4bnVtIChzbGVlcF9ibG9ja19pZCk7CisgICAg
fQorfQorCitERUZVTiAoInczMi11bmJsb2NrLXN5c3RlbS1zbGVlcCIsCisgICAgICAgRnczMl91
bmJsb2NrX3N5c3RlbV9zbGVlcCwKKyAgICAgICBTdzMyX3VuYmxvY2tfc3lzdGVtX3NsZWVwLAor
ICAgICAgIDAsIDAsIDAsCisgICAgICAgZG9jOiAvKiBVbmJsb2NrIHN5c3RlbSBpZGxlIHNsZWVw
LgorUmV0dXJuIG5vbi1uaWwgaWYgdGhlIFRPS0VOIGJsb2NrIHdhcyB1bmJsb2NrZWQuICAqLykK
KyAgKHZvaWQpCit7CisgIGlmIChTZXRUaHJlYWRFeGVjdXRpb25TdGF0ZV9mbiA9PSBOVUxMKQor
ICAgIHJldHVybiBRbmlsOworCisgIC8qIE5vIGJsb2NrcyB0byB1bmJsb2NrLiAgKi8KKyAgaWYg
KHNsZWVwX2Jsb2NrX2NvdW50ID09IDApCisgICAgcmV0dXJuIFFuaWw7CisKKyAgLyogT25lIGZl
d2VyIGJsb2NrLiAgKi8KKyAgaWYgKC0tc2xlZXBfYmxvY2tfY291bnQgPT0gMAorICAgICAgJiYg
c2xlZXBfYmxvY2tfZXhlY3V0aW9uX3N0YXRlKQorICAgIHNsZWVwX2Jsb2NrX2V4ZWN1dGlvbl9z
dGF0ZSA9CisgICAgICBTZXRUaHJlYWRFeGVjdXRpb25TdGF0ZSAoc2xlZXBfYmxvY2tfZXhlY3V0
aW9uX3N0YXRlCisJCQkgICAgICAgJiB+KEVTX0RJU1BMQVlfUkVRVUlSRUQgfCBFU19TWVNURU1f
UkVRVUlSRUQpKTsKKyAgaWYgKHNsZWVwX2Jsb2NrX2V4ZWN1dGlvbl9zdGF0ZSA9PSAwKQorICAg
IHJldHVybiBRbmlsOworICBlbHNlCisgICAgcmV0dXJuIFF0OworfQorCitERUZVTiAoInczMi1z
eXN0ZW0tc2xlZXAtYmxvY2stY291bnQiLAorICAgICAgIEZ3MzJfc3lzdGVtX3NsZWVwX2Jsb2Nr
X2NvdW50LAorICAgICAgIFN3MzJfc3lzdGVtX3NsZWVwX2Jsb2NrX2NvdW50LAorICAgICAgIDAs
IDAsIDAsCisgICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIHczMiBzbGVlcCBibG9jayBjb3VudC4g
ICovKQorICAodm9pZCkKK3sKKyAgcmV0dXJuIG1ha2VfZml4bnVtIChzbGVlcF9ibG9ja19jb3Vu
dCk7Cit9CisKK3R5cGVkZWYgVUxPTkcgKENBTExCQUNLICpQTVlfREVWSUNFX05PVElGWV9DQUxM
QkFDS19ST1VUSU5FKQorICAoUFZPSUQgQ29udGV4dCwgIFVMT05HIFR5cGUsICBQVk9JRCBTZXR0
aW5nKTsKKworc3RhdGljIFVMT05HIEFMSUdOX1NUQUNLCitzbGVlcF9ub3RpZmljYXRpb25fY2Fs
bGJhY2soUFZPSUQgX0NvbnRleHQsIFVMT05HIFR5cGUsIFBWT0lEIF9TZXR0aW5nKQoreworICBz
dHJ1Y3QgaW5wdXRfZXZlbnQgaWU7CisgIEVWRU5UX0lOSVQgKGllKTsKKyAgaWUua2luZCA9IFNM
RUVQX0VWRU5UOworCisgIHN3aXRjaCAoVHlwZSkKKyAgICB7CisgICAgY2FzZSBQQlRfQVBNUkVT
VU1FQVVUT01BVElDOgorICAgICAgLyogSWdub3JlIHRoaXMgZXZlbnQuICBObyB1c2VyIGlzIHBy
ZXNlbnQuICAqLworICAgICAgYnJlYWs7CisgICAgY2FzZSBQQlRfQVBNU1VTUEVORDoKKyAgICAg
IGllLmFyZyA9IGxpc3QxIChRcHJlX3NsZWVwKTsKKyAgICAgIGtiZF9idWZmZXJfc3RvcmVfZXZl
bnQgKCZpZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBCVF9BUE1SRVNVTUVTVVNQRU5EOgor
ICAgICAgaWUuYXJnID0gbGlzdDEgKFFwb3N0X3dha2UpOworICAgICAga2JkX2J1ZmZlcl9zdG9y
ZV9ldmVudCAoJmllKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgcmV0dXJuIDA7Cit9CisKK3R5
cGVkZWYgSFBPV0VSTk9USUZZIChXSU5BUEkgKiBSZWdpc3RlclN1c3BlbmRSZXN1bWVOb3RpZmlj
YXRpb25fUHJvYykKKyAgKElOIEhBTkRMRSwgSU4gRFdPUkQpOworc3RhdGljIFJlZ2lzdGVyU3Vz
cGVuZFJlc3VtZU5vdGlmaWNhdGlvbl9Qcm9jIFJlZ2lzdGVyU3VzcGVuZFJlc3VtZU5vdGlmaWNh
dGlvbl9mbiA9IE5VTEw7CisKK3N0YXRpYyBIUE9XRVJOT1RJRlkgc2xlZXBfbm90aWZpY2F0aW9u
X2hhbmRsZSA9IDA7CisKK3R5cGVkZWYgc3RydWN0IF9NWV9ERVZJQ0VfTk9USUZZX1NVQlNDUklC
RV9QQVJBTUVURVJTIHsKKyAgUE1ZX0RFVklDRV9OT1RJRllfQ0FMTEJBQ0tfUk9VVElORSBDYWxs
YmFjazsKKyAgUFZPSUQgQ29udGV4dDsKK30gTVlfREVWSUNFX05PVElGWV9TVUJTQ1JJQkVfUEFS
QU1FVEVSUywgKlBNWV9ERVZJQ0VfTk9USUZZX1NVQlNDUklCRV9QQVJBTUVURVJTOworCit2b2lk
Cit3MzJfcmVnaXN0ZXJfZm9yX3NsZWVwX25vdGlmaWNhdGlvbnMoKQoreworICAvKiBQb3dlclJl
Z2lzdGVyU3VzcGVuZFJlc3VtZU5vdGlmaWNhdGlvbiBpcyBub3QgYSB1c2VyLXNwYWNlIGNhbGwg
c28KKyAgICAgd2UgdXNlIFJlZ2lzdGVyU3VzcGVuZFJlc3VtZU5vdGlmaWNhdGlvbi4gICovCisg
IGlmIChSZWdpc3RlclN1c3BlbmRSZXN1bWVOb3RpZmljYXRpb25fZm4pCisgICAgeworICAgICAg
TVlfREVWSUNFX05PVElGWV9TVUJTQ1JJQkVfUEFSQU1FVEVSUyBwYXJhbXM7CisgICAgICBwYXJh
bXMuQ2FsbGJhY2sgPSBzbGVlcF9ub3RpZmljYXRpb25fY2FsbGJhY2s7CisgICAgICBwYXJhbXMu
Q29udGV4dCA9IE5VTEw7CisKKyAgICAgIC8qIERFVklDRV9OT1RJRllfQ0FMTEJBQ0sgPSAyICAq
LworICAgICAgc2xlZXBfbm90aWZpY2F0aW9uX2hhbmRsZSA9CisJUmVnaXN0ZXJTdXNwZW5kUmVz
dW1lTm90aWZpY2F0aW9uX2ZuICgmcGFyYW1zLCAyKTsKKyAgICB9Cit9CisKIC8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKgogCQkJICAgIEluaXRpYWxpemF0aW9uCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC0xMTgzNCw2
ICsxMTk3MSwxMiBAQCBzeW1zX29mX3czMmZucyAodm9pZCkKICAgZGVmc3ViciAoJlN3MzJfcmVx
dWVzdF91c2VyX2F0dGVudGlvbik7CiAgIERFRlNZTSAoUWluZm9ybWF0aW9uYWwsICJpbmZvcm1h
dGlvbmFsIik7CiAgIERFRlNZTSAoUWNyaXRpY2FsLCAiY3JpdGljYWwiKTsKKyAgLyogU3lzdGVt
IHNsZWVwIHN1cHBvcnQuICAqLworICBERUZTWU0gKFFwcmVfc2xlZXAsICJwcmUtc2xlZXAiKTsK
KyAgREVGU1lNIChRcG9zdF93YWtlLCAicG9zdC13YWtlIik7CisgIGRlZnN1YnIgKCZTdzMyX3Vu
YmxvY2tfc3lzdGVtX3NsZWVwKTsKKyAgZGVmc3ViciAoJlN3MzJfYmxvY2tfc3lzdGVtX3NsZWVw
KTsKKyAgZGVmc3ViciAoJlN3MzJfc3lzdGVtX3NsZWVwX2Jsb2NrX2NvdW50KTsKICNlbmRpZgog
fQogCkBAIC0xMjA5NCw2ICsxMjIzNyw3IEBAICNkZWZpbmUgX29wZW4gb3BlbgogZ2xvYmFsc19v
Zl93MzJmbnMgKHZvaWQpCiB7CiAgIEhNT0RVTEUgdXNlcjMyX2xpYiA9IEdldE1vZHVsZUhhbmRs
ZSAoInVzZXIzMi5kbGwiKTsKKyAgSE1PRFVMRSBrZXJuZWwzMl9saWIgPSBHZXRNb2R1bGVIYW5k
bGUgKCJrZXJuZWwzMi5kbGwiKTsKICAgLyoKICAgICBUcmFja01vdXNlRXZlbnQgbm90IGF2YWls
YWJsZSBpbiBhbGwgdmVyc2lvbnMgb2YgV2luZG93cywgc28gbXVzdCBsb2FkCiAgICAgaXQgZHlu
YW1pY2FsbHkuICBEbyBpdCBvbmNlLCBoZXJlLCBpbnN0ZWFkIG9mIGV2ZXJ5IHRpbWUgaXQgaXMg
dXNlZC4KQEAgLTEyMTIwLDYgKzEyMjY0LDE2IEBAIGdsb2JhbHNfb2ZfdzMyZm5zICh2b2lkKQog
ICBSZWdpc3RlclRvdWNoV2luZG93X2ZuCiAgICAgPSAoUmVnaXN0ZXJUb3VjaFdpbmRvd19wcm9j
KSBnZXRfcHJvY19hZGRyICh1c2VyMzJfbGliLAogCQkJCQkJIlJlZ2lzdGVyVG91Y2hXaW5kb3ci
KTsKKyAgLyogRm9yIHN5c3RlbSBzbGVlcCBzdXBwb3J0LiAgKi8KKyAgU2V0VGhyZWFkRXhlY3V0
aW9uU3RhdGVfZm4KKyAgICA9IChTZXRUaHJlYWRFeGVjdXRpb25TdGF0ZV9Qcm9jKQorICAgIGdl
dF9wcm9jX2FkZHIgKGtlcm5lbDMyX2xpYiwKKwkJICAgIlNldFRocmVhZEV4ZWN1dGlvblN0YXRl
Iik7CisgIFJlZ2lzdGVyU3VzcGVuZFJlc3VtZU5vdGlmaWNhdGlvbl9mbgorICAgID0gKFJlZ2lz
dGVyU3VzcGVuZFJlc3VtZU5vdGlmaWNhdGlvbl9Qcm9jKQorICAgIGdldF9wcm9jX2FkZHIgKHVz
ZXIzMl9saWIsCisJCSAgICJSZWdpc3RlclN1c3BlbmRSZXN1bWVOb3RpZmljYXRpb24iKTsKKwog
ICBTZXRHZXN0dXJlQ29uZmlnX2ZuCiAgICAgPSAoU2V0R2VzdHVyZUNvbmZpZ19wcm9jKSBnZXRf
cHJvY19hZGRyICh1c2VyMzJfbGliLAogCQkJCQkgICAgICJTZXRHZXN0dXJlQ29uZmlnIik7CmRp
ZmYgLS1naXQgYS9zcmMvdzMydGVybS5jIGIvc3JjL3czMnRlcm0uYwppbmRleCAwOTFhMWZiZDVm
MS4uNWI3ZDljNWYxN2QgMTAwNjQ0Ci0tLSBhL3NyYy93MzJ0ZXJtLmMKKysrIGIvc3JjL3czMnRl
cm0uYwpAQCAtODI0OSw2ICs4MjQ5LDcgQEAgI2RlZmluZSBMT0FEX1BST0MobGliLCBmbikgcGZu
IyNmbiA9ICh2b2lkICopIEdldFByb2NBZGRyZXNzIChsaWIsICNmbikKICAgfQogCiAgIHczMl9n
ZXRfbW91c2Vfd2hlZWxfdmVydGljYWxfZGVsdGEgKCk7CisgIHczMl9yZWdpc3Rlcl9mb3Jfc2xl
ZXBfbm90aWZpY2F0aW9ucyAoKTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL3czMnRlcm0u
aCBiL3NyYy93MzJ0ZXJtLmgKaW5kZXggOTFkYjBiNmUyNDkuLmNiOWQ1OTM3MWE0IDEwMDY0NAot
LS0gYS9zcmMvdzMydGVybS5oCisrKyBiL3NyYy93MzJ0ZXJtLmgKQEAgLTI3NCw2ICsyNzQsNyBA
QCAjZGVmaW5lIENQX0RFRkFVTFQgMTAwNAogZXh0ZXJuIGZyYW1lX3Bhcm1faGFuZGxlciB3MzJf
ZnJhbWVfcGFybV9oYW5kbGVyc1tdOwogZXh0ZXJuIHZvaWQgdzMyX2RlZmF1bHRfZm9udF9wYXJh
bWV0ZXIgKHN0cnVjdCBmcmFtZSogZiwgTGlzcF9PYmplY3QgcGFybXMpOwogZXh0ZXJuIExpc3Bf
T2JqZWN0IHczMl9wcm9jZXNzX2RuZF9kYXRhIChpbnQgZm9ybWF0LCB2b2lkICpwRGF0YU9iaik7
CitleHRlcm4gdm9pZCB3MzJfcmVnaXN0ZXJfZm9yX3NsZWVwX25vdGlmaWNhdGlvbnMoKTsKIAog
DAogI2RlZmluZSBQSVhfVFlQRSBDT0xPUlJFRgotLSAKMi41Mi4wCgo=
--0000000000001311a3064a44901c--
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.
Received: (at 80348) by debbugs.gnu.org; 7 Feb 2026 23:10:52 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 07 18:10:52 2026
Received: from localhost ([127.0.0.1]:40459 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vorRy-0007eB-N9
for submit <at> debbugs.gnu.org; Sat, 07 Feb 2026 18:10:52 -0500
Received: from mail-vk1-xa2a.google.com ([2607:f8b0:4864:20::a2a]:45548)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <shipmints@HIDDEN>)
id 1vorRv-0007e1-GX
for 80348 <at> debbugs.gnu.org; Sat, 07 Feb 2026 18:10:49 -0500
Received: by mail-vk1-xa2a.google.com with SMTP id
71dfb90a1353d-566fe6a4ceeso970105e0c.3
for <80348 <at> debbugs.gnu.org>; Sat, 07 Feb 2026 15:10:47 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; t=1770505847; cv=none;
d=google.com; s=arc-20240605;
b=L2ob//tP8Df/ttRR5e0+0E7+nu3xNbPV6jDn+Zvusbcl7YjjQ7TDzmXN5u/I2fo5qH
rHlhPDL2dthugVIIYbMZvPhxQpi2uMhJ5CT/cyTRGDZRIareF8dmMIJ1O24Scl4Zh8S/
2m6h0HrQewj8NGCHp3kiW/3S553v4PWSbfWcrw1RqZnimbw7amhTE1ABrWmoRXNs0OQS
mwTfUnxH9XLt43+UzxnNA8rmDLzscZPtyh8viIG4Qj0rPCFXwsqHwdCXj9wbihQiDAc9
v3Ic8rVWc2hgkX2GcUsm1XvCqpLH28Xb0k8Ea0Z08X+4xMcx5gIbolayL/0s+vazBPJ7
FziA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;
s=arc-20240605;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:dkim-signature;
bh=+3z1Q1GJstsPxYT6yfrAfaDfFpZZw0PWqEXNlNjVVVE=;
fh=N6jsBcf4BbBR2hC6uNrzqv1Y+eSjhcXG11JD1VFSXhI=;
b=f1MVX0YtfffJHzP5WBnZOngHloBoeQXfMamcMcNAtjX4QBBNRyZEhxEDNg65OXgQWF
jRhK6BFXvr0jy3BHyesq6zd2YVqkfPw8tvBVuq96NnYxws5A8lM/OpIuo66IrsXOOw1A
3TntR7nmWIlS+OAkJ3hEVbOCZfzXf5Ez1PrKQ4DwYcgtHLsDfhX6fthhLKlnNntCk7FW
tv6cKA6tofBsJXpjJBD8JTRwEj2PKo6q+cGq5CqAt9oIfWChm8cvJgsPdfVbwOmOET4v
NvSz1KvSwvmTCV40OvcNL/wluBlYD7iVE4uJtJdj7vopRz6xqvtfYyx5ydCHQ4tsrTaf
1Chw==; darn=debbugs.gnu.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1770505847; x=1771110647; 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=+3z1Q1GJstsPxYT6yfrAfaDfFpZZw0PWqEXNlNjVVVE=;
b=AO7+k8xMjVTREcaZcJ972h3Wg46nWJQBF6j6Aprcp4rYGKzLNao3ll+45TbZhAmev9
TlNR4gNFnt4MX1nPxvUgTt0Z2UQioBwx1Us4IA/T8I9KshWCDUg1wrBZaywekiv6mkPP
5HJinjqYGLjiVuFdvDOilT5PAbFtE268le9MdE41ZkMrp6UydghHJSHRoC+T0HCxsxUJ
Q90LFC8VpiIhMXEuML82SUD76qY00XFTasQm3W+VMxJBXgNteaf3QRrl1iKBufuZtqzM
h4qGYd+VW5H8z5MM0Ab/9k6QoBIi4iBIj8OWvo4ueiaC64YKYdv513LGiZS+82m77je/
Wc6A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1770505847; x=1771110647;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=+3z1Q1GJstsPxYT6yfrAfaDfFpZZw0PWqEXNlNjVVVE=;
b=VNg+3YUjrS7dwd9499mONGaD1dBCCOAfKzV+F5GM+9KSont/TgdaEUcVjVwNE2cEfO
XhQMZo2QJXkSlo8iDqqtRRJjyqj02lMxDwQXnV6/FwfFy7PGRZO1OYcDrXMvDShkvmVc
07KMT8atfIwPaaqdLrnp5vvkdWsjRZA3hVJHdpcnCIYLROxj9Z68aWeduZ521yrllwth
as3jP+AQRBCkp7r4ZV9A1wb8bPtS95vO1vu7fjrUAtvzDBsCrjpAXrxgt6+M1yHQIsdq
ooq6XK39LSpx2Pp8MGLaWQEw+/4fly40yk6VwH6qDkdtSTOdpHPBQP+ejSsuE4jmyfpp
uD6A==
X-Forwarded-Encrypted: i=1;
AJvYcCXVGoT2Fgn78gXuaQz8pxDSc1PeBmhmjEk6zZ/vKD1qENjYRlAmMPhWIacKQAKreh10X01t+w==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxigZdiyKw62AK5fxaVdGBl81XGmn2fBjUfuzKjxAYDCKzLgVqc
J71rBtA2rvGqUmjpz2AKzBPW8EFP0H6P/TPsq7Pr4dNPXtE2drfV/P6ntV+2OzW+bx2hBWXPjfM
e5sKXwx1R0C+DjV6tMmYUZxya/KFvRM0=
X-Gm-Gg: AZuq6aLlu+ozL5bCNqzK63OcbC44HY6XZ17PNTRZBWSIwh6rA13XkFxGy6sOFTk9sty
0XgVr9Vxfd0jyjata+XQBnG/zxqBUckgHTs9ri5F+uycQvIFUXySlxpmT8lP7Ws9xktZ1CPoWvK
Z+ltCK6U2Ybn56gIKO6DkR49e/3uvKs+r0u38W8jHwcQHG9B4R4jvQ0m4hWZidYOQcQXgif0dQ+
Q1FzNcY3ELG6/AKDa9zq7kaEYLSvKq+HHuaKL1O/Uf4agpcL4XSayH6IOfCfZAGx/+7Wd1jypjF
jLNJUOb0dti7pzWVZCJZM0mtXvUufOzoLbb1v63CKyWF4y6//I8=
X-Received: by 2002:a05:6102:3f0a:b0:5f1:51b1:480 with SMTP id
ada2fe7eead31-5fae8a1ea4amr1759470137.8.1770505846581; Sat, 07 Feb 2026
15:10:46 -0800 (PST)
MIME-Version: 1.0
References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN>
<CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN>
<868qd4v36l.fsf@HIDDEN>
<CAN+1HbqDpnA1dex3A00D3uvYf4C-WRAQ3g5-BxxGJimj949+tA@HIDDEN>
In-Reply-To: <CAN+1HbqDpnA1dex3A00D3uvYf4C-WRAQ3g5-BxxGJimj949+tA@HIDDEN>
From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>
Date: Sat, 7 Feb 2026 18:10:34 -0500
X-Gm-Features: AZwV_QjZ1_8N8fvMe_Vfe6L3wld_6ded5EnPpCI5WRH7Qq_8GqK5-f6PMy6lWtM
Message-ID: <CAN+1HbpCbgM=Pj5wssFc6AF_C4bbPM4R4jTMcdkqe5qTBcXBLQ@HIDDEN>
Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake
event package
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: multipart/alternative; boundary="0000000000000eefb2064a44044c"
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 80348
Cc: acohen@HIDDEN, eric@HIDDEN, mail@HIDDEN,
Morgan.J.Smith@HIDDEN, michael.albinus@HIDDEN,
Stefan Monnier <monnier@HIDDEN>, 80348 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 0.0 (/)
--0000000000000eefb2064a44044c
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
On Sat, Feb 7, 2026 at 5:42=E2=80=AFPM St=C3=A9phane Marks <shipmints@gmail=
.com> wrote:
> On Sat, Feb 7, 2026 at 1:06=E2=80=AFPM Eli Zaretskii <eliz@HIDDEN> wrote=
:
>
>> > Cc: Andrew Cohen <acohen@HIDDEN>, Daniel Mendler <
>> mail@HIDDEN>,
>> > eric@HIDDEN, Michael Albinus <michael.albinus@HIDDEN>,
>> > Morgan Smith <Morgan.J.Smith@HIDDEN>
>> > From: St=C3=A9phane Marks <shipmints@HIDDEN>
>> > Date: Sat, 7 Feb 2026 10:34:58 -0500
>> >
>> > On Sat, Feb 7, 2026 at 10:32=E2=80=AFAM St=C3=A9phane Marks <shipmints=
@gmail.com>
>> wrote:
>> >
>> > After some delay this year, I finally worked on this package inspired
>> by recent improvements Michael
>> > made to dbus.
>> >
>> > This package provides platform-neutral interfaces to block your syste=
m
>> from entering idle sleep with
>> > control over whether the display remains active, and a hook to proces=
s
>> pre-sleep and post-wake events.
>> >
>> > Implementations are for D-Bus on GNU/Linux, and for macOS/GNUstep and
>> MS-Windows using native
>> > APIs.
>> >
>> > Michael suggests that the gnus sleep API be based on `system-sleep` s=
o
>> that it works across other
>> > platforms and also consolidates system sleep logic in one place.
>> >
>> > And just as we introduced an optional `progress-report` to compile.el=
,
>> we can now introduce an optional
>> > platform-neutral idle sleep block.
>> >
>> > Patch incoming when the bug number is assigned.
>> >
>> > Attached. You'll need recent master or at least this commit
>> 89209a83b60c87d97f0c05dbf6cb29ff3cdf3d5a to
>> > get the dbus improvements.
>>
>> Thanks, please see some comments below.
>>
>> > @cindex @code{sleep-event} event
>> > -@item (sleep-event @var{sleep-wake})
>> > -This event is injected when the device Emacs is running on enters or
>> > -leaves the sleep state. A non-@code{nil} @var{sleep-wake} indicates
>> > -entering the sleep state.
>> > +@item (sleep-event @var{state})
>> > +This event is injected when the device Emacs is running on is about t=
o
>> > +enter a sleep state, or has just awoken from one. @var{state} will b=
e
>> > +the symbol @code{pre-sleep} or @code{post-wake}.
>>
>> Why did you need to make this incompatible change? Was there a
>> problem leaving the values and meaning of the parameter as they were
>> before? AFAIU, there are still only two possible values, so nil and
>> non-nil should still do the job, no?
>>
>> > +@noindent
>> > +Examples of system sleep functions:
>>
>> I think this feature is too minor to justify examples in the manual,
>> let alone such elaborate examples. We are trying not to make the
>> ELisp Reference manual too large (it already prints in two volumes).
>>
>> > +(defcustom sleep-event-functions nil
>> ^^^^^^^^^^^^^^^^^^^^^
>> The manual said "system-sleep-event-functions".
>>
>> > + "Abnormal hook invoked on sleep events.
>> > +Each function is called with the event."
>>
>> The manual described the argument differently.
>>
>> > +(defun sleep-event-handler (event)
>> > + "`sleep-event' EVENT handler."
>> > + (declare (completion ignore))
>> > + (interactive "e")
>> > + (run-hook-with-args 'sleep-event-functions event))
>>
>> And this function calls the hook not as the ELisp manual said they
>> will be called.
>>
>> > +(require 'dbus)
>>
>> Shouldn't we load dbus only on systems where DBus is supported?
>>
>> > +(defgroup system-sleep nil
>> > + "System sleep/wake blocking and event management."
>> > + :group 'convenience
>>
>> Why "convenience"? Isn't there a better parent group to use? And if
>> there isn't a better one, how about adding such a group?
>> system-interface sounds good, for example.
>>
>> > +;;;###autoload
>> > +(defcustom system-sleep-event-functions nil
>> > + "Abnormal hook invoked on system sleep events.
>> > +Each function is called with one argument which will be one of these
>> > +symbols `pre-sleep' or `post-wake'.
>>
>> ??? Another user option? Do we need both?
>>
>> > +Handling `pre-sleep' events should be done as fast as possible.
>> Systems
>> > +often grant a very short pre-sleep processing interval, typically
>> > +ranging between 2 and 5 seconds. The system may sleep even if your
>> > +processing is not complete, so be sure you do as little as possible.
>> > +For example, your function could close active connections or serial
>> > +ports.
>> > +
>> > +Handling `post-wake' events offers more leeway. Your function could
>> > +reestablish connections.
>>
>> Please use \\+` to make sure `pre-sleep' and `post-wake' will not be
>> shown as links.
>>
>> > + (progn
>> > + (push token system-sleep--sleep-block-tokens)
>> > + token)
>>
>> Since this list of tokens seems to be a data structure that must be
>> kept consistent with the system APIs, I think all these push and remq
>> calls which manipulate it should run with quit inhibited, and should
>> perhaps also handle any errors that could happen, so that the list of
>> tokens is always correct.
>>
>> > + (if (memq token system-sleep--sleep-block-tokens)
>> > + (progn
>> > + (setq system-sleep--sleep-block-tokens
>> > + (remq token system-sleep--sleep-block-tokens))
>> > + (if (w32-unblock-system-sleep)
>> > + t
>> > + (warn "Unable to unblock system sleep")
>>
>> If and when this warning is issued, AFAIU it means that the sleep is
>> blocked, but the token of its blocker is lost forever, because it was
>> already removed from the list. What then the user could do to fix
>> this situation? Will, for example, killing Emacs do that?
>>
>> > +(if (and (system-sleep--set-back-end)
>> > + (system-sleep--enable))
>> > + (add-hook 'sleep-event-functions
>> #'system-sleep--sleep-event-function)
>>
>> If sleep-event-functions is a user option, Emacs should not set its
>> value.
>>
>> > --- a/src/w32fns.c
>> > +++ b/src/w32fns.c
>> > @@ -44,6 +44,7 @@ #define COBJMACROS /* Ask for C definitions for COM.
>> */
>> > #include <oleidl.h>
>> > #include <objidl.h>
>> > #include <ole2.h>
>> > +#include <powrprof.h> /* For system sleep support. */
>>
>> Why do we need this header? In my MinGW headers it is absent.
>>
>> > +/* We assume SetThreadExecutionState is always available, being Windo=
ws
>> > + XP+. RegisterSuspendResumeNotification is Windows 8+ so we look
>> this
>> > + up. */
>>
>> We don't yet require Windows XP for the Windows builds of Emacs, so
>> SetThreadExecutionState must also be loaded dynamically from its DLL.
>>
>> > +DEFUN ("w32-block-system-sleep",
>> > + Fw32_block_system_sleep,
>> > + Sw32_block_system_sleep,
>> > + 1, 1, 0,
>> > + doc: /* Block system idle sleep.
>> > +If ALLOW-DISPLAY-SLEEP is non-nil, block the screen from sleeping.
>> > +Return a token to unblock this block using `w32-unblock-system-sleep'=
,
>> > +or nil if the block fails. */)
>> > + (Lisp_Object allow_display_sleep)
>> > +{
>> > + /* ES_CONTINUOUS keeps the state until cleared. */
>> > + EXECUTION_STATE new_state =3D ES_SYSTEM_REQUIRED | ES_CONTINUOUS;
>> > + if (NILP (allow_display_sleep))
>> > + new_state |=3D ES_DISPLAY_REQUIRED;
>> > +
>> > + sleep_block_execution_state =3D SetThreadExecutionState (new_state)=
;
>> > +
>> > + /* One more block. */
>> > + ++sleep_block_count;
>> > +
>> > + /* Synthesize a token. */
>> > + return make_fixnum (sleep_block_id);
>>
>> Shouldn't sleep_block_id be incremented? If not, all the cookies in
>> the list of tokens will be identical, no?
>>
>> Also, shouldn't this return nil if the call to SetThreadExecutionState
>> failed?
>>
>> And I'm not sure I understand the effect of calling
>> w32-block-system-sleep several times without calling
>> w32-unblock-system-sleep. It isn't like the OS counts the number of
>> callers and handles this as a reference count, which must be zero for
>> the system to be able to sleep, right?
>>
>> > +DEFUN ("w32-unblock-system-sleep",
>> > + Fw32_unblock_system_sleep,
>> > + Sw32_unblock_system_sleep,
>> > + 0, 0, 0,
>> > + doc: /* Unblock system idle sleep.
>> > +Return non-nil if the TOKEN block was unblocked. */)
>> > + (void)
>> > +{
>> > + /* No blocks to unblock. */
>> > + if (sleep_block_count =3D=3D 0)
>> > + return Qnil;
>>
>> This seems wrong: why indicate failure in this trivial case?
>>
>> > + /* One fewer block. */
>> > + if (--sleep_block_count =3D=3D 0
>> > + && sleep_block_execution_state)
>> > + sleep_block_execution_state =3D
>> > + SetThreadExecutionState (sleep_block_execution_state
>> > + & ~(ES_DISPLAY_REQUIRED |
>> ES_SYSTEM_REQUIRED));
>> > + return Qt;
>>
>> And here you return t regardless of whether SetThreadExecutionState
>> succeeded or failed. Why?
>>
>> > +DEFUN ("w32-system-sleep-block-count",
>> > + Fw32_system_sleep_block_count,
>> > + Sw32_system_sleep_block_count,
>> > + 0, 0, 0,
>> > + doc: /* Return the w32 sleep block count. */)
>> > + (void)
>> > +{
>> > + return make_fixnum (sleep_block_count);
>> > +}
>>
>> What is the meaning of the return value in the w32 case? See my
>> questions above regarding the number of callers.
>>
>> > +typedef ULONG (CALLBACK *PMY_DEVICE_NOTIFY_CALLBACK_ROUTINE)
>> > + (PVOID Context, ULONG Type, PVOID Setting);
>> > +
>> > +static ULONG
>> > +sleep_notification_callback(PVOID _Context, ULONG Type, PVOID _Settin=
g)
>>
>> I think this should use ALIGN_STACK, see w32term.h for the reasons.
>>
>> > + /* System sleep support. */
>> > + DEFSYM (Qpre_sleep, "pre-sleep");
>> > + DEFSYM (Qpost_wake, "post-wake");
>>
>> These symbols should be defined in one place and only once, not
>> separately for each system. (And I hope we won't need them at all,
>> see above.)
>>
>
> See attached revised patch. I addressed everyone's comments, so far.
> Except for using `cl-defstruct` in bindings.el which I skipped. I retest=
ed
> on Linux, macOS, MS-Windows.
>
I forgot one thing. To avoid loading dbus unless needed. I'll do that
next.
--0000000000000eefb2064a44044c
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon=
t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">=
On Sat, Feb 7, 2026 at 5:42=E2=80=AFPM St=C3=A9phane Marks <<a href=3D"m=
ailto:shipmints@HIDDEN">shipmints@HIDDEN</a>> wrote:</span></div><=
/div><div class=3D"gmail_quote gmail_quote_container"><blockquote class=3D"=
gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(20=
4,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div style=
=3D"font-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-=
serif">On Sat, Feb 7, 2026 at 1:06=E2=80=AFPM Eli Zaretskii <<a href=3D"=
mailto:eliz@HIDDEN" target=3D"_blank">eliz@HIDDEN</a>> wrote:</span></=
div></div><div class=3D"gmail_quote"><blockquote class=3D"gmail_quote" styl=
e=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);paddin=
g-left:1ex">> Cc: Andrew Cohen <<a href=3D"mailto:acohen@HIDDEN" targ=
et=3D"_blank">acohen@HIDDEN</a>>, Daniel Mendler <<a href=3D"mailto:m=
ail@HIDDEN" target=3D"_blank">mail@HIDDEN</a>>,<br=
>
>=C2=A0 <a href=3D"mailto:eric@HIDDEN" target=3D"_blank">eri=
c@HIDDEN</a>, Michael Albinus <<a href=3D"mailto:michael.alb=
inus@HIDDEN" target=3D"_blank">michael.albinus@HIDDEN</a>>,<br>
>=C2=A0 Morgan Smith <<a href=3D"mailto:Morgan.J.Smith@HIDDEN" t=
arget=3D"_blank">Morgan.J.Smith@HIDDEN</a>><br>
> From: St=C3=A9phane Marks <<a href=3D"mailto:shipmints@HIDDEN" t=
arget=3D"_blank">shipmints@HIDDEN</a>><br>
> Date: Sat, 7 Feb 2026 10:34:58 -0500<br>
> <br>
> On Sat, Feb 7, 2026 at 10:32=E2=80=AFAM St=C3=A9phane Marks <<a hre=
f=3D"mailto:shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>&=
gt; wrote:<br>
> <br>
>=C2=A0 After some delay this year, I finally worked on this package ins=
pired by recent improvements Michael<br>
>=C2=A0 made to dbus.<br>
> <br>
>=C2=A0 This package provides platform-neutral interfaces to block your =
system from entering idle sleep with<br>
>=C2=A0 control over whether the display remains active, and a hook to p=
rocess pre-sleep and post-wake events.<br>
> <br>
>=C2=A0 Implementations are for D-Bus on GNU/Linux, and for macOS/GNUste=
p and MS-Windows using native<br>
>=C2=A0 APIs.<br>
> <br>
>=C2=A0 Michael suggests that the gnus sleep API be based on `system-sle=
ep` so that it works across other<br>
>=C2=A0 platforms and also consolidates system sleep logic in one place.=
<br>
> <br>
>=C2=A0 And just as we introduced an optional `progress-report` to compi=
le.el, we can now introduce an optional<br>
>=C2=A0 platform-neutral idle sleep block.<br>
> <br>
>=C2=A0 Patch incoming when the bug number is assigned.<br>
> <br>
> Attached.=C2=A0 You'll need recent master or at least this commit =
89209a83b60c87d97f0c05dbf6cb29ff3cdf3d5a to<br>
> get the dbus improvements.<br>
<br>
Thanks, please see some comments below.<br>
<br>
>=C2=A0 @cindex @code{sleep-event} event<br>
> -@item (sleep-event @var{sleep-wake})<br>
> -This event is injected when the device Emacs is running on enters or<=
br>
> -leaves the sleep state.=C2=A0 A non-@code{nil} @var{sleep-wake} indic=
ates<br>
> -entering the sleep state.<br>
> +@item (sleep-event @var{state})<br>
> +This event is injected when the device Emacs is running on is about t=
o<br>
> +enter a sleep state, or has just awoken from one.=C2=A0 @var{state} w=
ill be<br>
> +the symbol @code{pre-sleep} or @code{post-wake}.<br>
<br>
Why did you need to make this incompatible change?=C2=A0 Was there a<br>
problem leaving the values and meaning of the parameter as they were<br>
before?=C2=A0 AFAIU, there are still only two possible values, so nil and<b=
r>
non-nil should still do the job, no?<br>
<br>
> +@noindent<br>
> +Examples of system sleep functions:<br>
<br>
I think this feature is too minor to justify examples in the manual,<br>
let alone such elaborate examples.=C2=A0 We are trying not to make the<br>
ELisp Reference manual too large (it already prints in two volumes).<br>
<br>
> +(defcustom sleep-event-functions nil<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ^^^^^^^^^^^^^^^^^^^^^<br>
The manual said "system-sleep-event-functions".<br>
<br>
> +=C2=A0 "Abnormal hook invoked on sleep events.<br>
> +Each function is called with the event."<br>
<br>
The manual described the argument differently.<br>
<br>
> +(defun sleep-event-handler (event)<br>
> +=C2=A0 "`sleep-event' EVENT handler."<br>
> +=C2=A0 (declare (completion ignore))<br>
> +=C2=A0 (interactive "e")<br>
> +=C2=A0 (run-hook-with-args 'sleep-event-functions event))<br>
<br>
And this function calls the hook not as the ELisp manual said they<br>
will be called.<br>
<br>
> +(require 'dbus)<br>
<br>
Shouldn't we load dbus only on systems where DBus is supported?<br>
<br>
> +(defgroup system-sleep nil<br>
> +=C2=A0 "System sleep/wake blocking and event management."<b=
r>
> +=C2=A0 :group 'convenience<br>
<br>
Why "convenience"?=C2=A0 Isn't there a better parent group to=
use?=C2=A0 And if<br>
there isn't a better one, how about adding such a group?<br>
system-interface sounds good, for example.<br>
<br>
> +;;;###autoload<br>
> +(defcustom system-sleep-event-functions nil<br>
> +=C2=A0 "Abnormal hook invoked on system sleep events.<br>
> +Each function is called with one argument which will be one of these<=
br>
> +symbols `pre-sleep' or `post-wake'.<br>
<br>
??? Another user option?=C2=A0 Do we need both?<br>
<br>
> +Handling `pre-sleep' events should be done as fast as possible.=
=C2=A0 Systems<br>
> +often grant a very short pre-sleep processing interval, typically<br>
> +ranging between 2 and 5 seconds.=C2=A0 The system may sleep even if y=
our<br>
> +processing is not complete, so be sure you do as little as possible.<=
br>
> +For example, your function could close active connections or serial<b=
r>
> +ports.<br>
> +<br>
> +Handling `post-wake' events offers more leeway.=C2=A0 Your functi=
on could<br>
> +reestablish connections.<br>
<br>
Please use \\+` to make sure `pre-sleep' and `post-wake' will not b=
e<br>
shown as links.<br>
<br>
> +=C2=A0 =C2=A0 =C2=A0 (progn<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (push token system-sleep--sleep-block-tok=
ens)<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 token)<br>
<br>
Since this list of tokens seems to be a data structure that must be<br>
kept consistent with the system APIs, I think all these push and remq<br>
calls which manipulate it should run with quit inhibited, and should<br>
perhaps also handle any errors that could happen, so that the list of<br>
tokens is always correct.<br>
<br>
> +=C2=A0 (if (memq token system-sleep--sleep-block-tokens)<br>
> +=C2=A0 =C2=A0 =C2=A0 (progn<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq system-sleep--sleep-block-tokens<br=
>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (remq token system-s=
leep--sleep-block-tokens))<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (if (w32-unblock-system-sleep)<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 t<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (warn "Unable to unblock syst=
em sleep")<br>
<br>
If and when this warning is issued, AFAIU it means that the sleep is<br>
blocked, but the token of its blocker is lost forever, because it was<br>
already removed from the list.=C2=A0 What then the user could do to fix<br>
this situation?=C2=A0 Will, for example, killing Emacs do that?<br>
<br>
> +(if (and (system-sleep--set-back-end)<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(system-sleep--enable))<br>
> +=C2=A0 =C2=A0 (add-hook 'sleep-event-functions #'system-sleep=
--sleep-event-function)<br>
<br>
If sleep-event-functions is a user option, Emacs should not set its<br>
value.<br>
<br>
> --- a/src/w32fns.c<br>
> +++ b/src/w32fns.c<br>
> @@ -44,6 +44,7 @@ #define COBJMACROS /* Ask for C definitions for COM.=
=C2=A0 */<br>
>=C2=A0 #include <oleidl.h><br>
>=C2=A0 #include <objidl.h><br>
>=C2=A0 #include <ole2.h><br>
> +#include <powrprof.h> /* For system sleep support.=C2=A0 */<br>
<br>
Why do we need this header?=C2=A0 In my MinGW headers it is absent.<br>
<br>
> +/* We assume SetThreadExecutionState is always available, being Windo=
ws<br>
> +=C2=A0 =C2=A0XP+.=C2=A0 RegisterSuspendResumeNotification is Windows =
8+ so we look this<br>
> +=C2=A0 =C2=A0up.=C2=A0 */<br>
<br>
We don't yet require Windows XP for the Windows builds of Emacs, so<br>
SetThreadExecutionState must also be loaded dynamically from its DLL.<br>
<br>
> +DEFUN ("w32-block-system-sleep",<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Fw32_block_system_sleep,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Sw32_block_system_sleep,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A01, 1, 0,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0doc: /* Block system idle sleep.<br>
> +If ALLOW-DISPLAY-SLEEP is non-nil, block the screen from sleeping.<br=
>
> +Return a token to unblock this block using `w32-unblock-system-sleep&=
#39;,<br>
> +or nil if the block fails.=C2=A0 */)<br>
> +=C2=A0 (Lisp_Object allow_display_sleep)<br>
> +{<br>
> +=C2=A0 /* ES_CONTINUOUS keeps the state until cleared.=C2=A0 */<br>
> +=C2=A0 EXECUTION_STATE new_state =3D ES_SYSTEM_REQUIRED | ES_CONTINUO=
US;<br>
> +=C2=A0 if (NILP (allow_display_sleep))<br>
> +=C2=A0 =C2=A0 new_state |=3D ES_DISPLAY_REQUIRED;<br>
> +<br>
> +=C2=A0 sleep_block_execution_state =3D SetThreadExecutionState (new_s=
tate);<br>
> +<br>
> +=C2=A0 /* One more block.=C2=A0 */<br>
> +=C2=A0 ++sleep_block_count;<br>
> +<br>
> +=C2=A0 /* Synthesize a token.=C2=A0 */<br>
> +=C2=A0 return make_fixnum (sleep_block_id);<br>
<br>
Shouldn't sleep_block_id be incremented?=C2=A0 If not, all the cookies =
in<br>
the list of tokens will be identical, no?<br>
<br>
Also, shouldn't this return nil if the call to SetThreadExecutionState<=
br>
failed?<br>
<br>
And I'm not sure I understand the effect of calling<br>
w32-block-system-sleep several times without calling<br>
w32-unblock-system-sleep.=C2=A0 It isn't like the OS counts the number =
of<br>
callers and handles this as a reference count, which must be zero for<br>
the system to be able to sleep, right?<br>
<br>
> +DEFUN ("w32-unblock-system-sleep",<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Fw32_unblock_system_sleep,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Sw32_unblock_system_sleep,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A00, 0, 0,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0doc: /* Unblock system idle sleep.<br>
> +Return non-nil if the TOKEN block was unblocked.=C2=A0 */)<br>
> +=C2=A0 (void)<br>
> +{<br>
> +=C2=A0 /* No blocks to unblock.=C2=A0 */<br>
> +=C2=A0 if (sleep_block_count =3D=3D 0)<br>
> +=C2=A0 =C2=A0 return Qnil;<br>
<br>
This seems wrong: why indicate failure in this trivial case?<br>
<br>
> +=C2=A0 /* One fewer block.=C2=A0 */<br>
> +=C2=A0 if (--sleep_block_count =3D=3D 0<br>
> +=C2=A0 =C2=A0 =C2=A0 && sleep_block_execution_state)<br>
> +=C2=A0 =C2=A0 sleep_block_execution_state =3D<br>
> +=C2=A0 =C2=A0 =C2=A0 SetThreadExecutionState (sleep_block_execution_s=
tate<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 & ~(ES_DISPLAY_REQUIRED | ES_SYSTEM_REQUIR=
ED));<br>
> +=C2=A0 return Qt;<br>
<br>
And here you return t regardless of whether SetThreadExecutionState<br>
succeeded or failed.=C2=A0 Why?<br>
<br>
> +DEFUN ("w32-system-sleep-block-count",<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Fw32_system_sleep_block_count,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Sw32_system_sleep_block_count,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A00, 0, 0,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0doc: /* Return the w32 sleep block count.=
=C2=A0 */)<br>
> +=C2=A0 (void)<br>
> +{<br>
> +=C2=A0 return make_fixnum (sleep_block_count);<br>
> +}<br>
<br>
What is the meaning of the return value in the w32 case?=C2=A0 See my<br>
questions above regarding the number of callers.<br>
<br>
> +typedef ULONG (CALLBACK *PMY_DEVICE_NOTIFY_CALLBACK_ROUTINE)<br>
> +=C2=A0 (PVOID Context,=C2=A0 ULONG Type,=C2=A0 PVOID Setting);<br>
> +<br>
> +static ULONG<br>
> +sleep_notification_callback(PVOID _Context, ULONG Type, PVOID _Settin=
g)<br>
<br>
I think this should use ALIGN_STACK, see w32term.h for the reasons.<br>
<br>
> +=C2=A0 /* System sleep support.=C2=A0 */<br>
> +=C2=A0 DEFSYM (Qpre_sleep, "pre-sleep");<br>
> +=C2=A0 DEFSYM (Qpost_wake, "post-wake");<br>
<br>
These symbols should be defined in one place and only once, not<br>
separately for each system.=C2=A0 (And I hope we won't need them at all=
,<br>
see above.)<br></blockquote><div><br></div><div><div><font face=3D"monospac=
e">See attached revised patch.=C2=A0 I addressed everyone's comments, s=
o far.=C2=A0 Except for using `cl-defstruct` in bindings.el which I skipped=
.=C2=A0 I retested on Linux, macOS, MS-Windows.</font></div></div></div></d=
iv></blockquote><div><br></div><div class=3D"gmail_default" style=3D"font-f=
amily:monospace">I forgot one thing.=C2=A0 To avoid loading dbus unless nee=
ded.=C2=A0 I'll do that next.</div></div></div>
--0000000000000eefb2064a44044c--
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.
Received: (at 80348) by debbugs.gnu.org; 7 Feb 2026 22:42:57 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 07 17:42:57 2026
Received: from localhost ([127.0.0.1]:40262 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vor0x-0005za-KA
for submit <at> debbugs.gnu.org; Sat, 07 Feb 2026 17:42:57 -0500
Received: from mail-vs1-xe29.google.com ([2607:f8b0:4864:20::e29]:56507)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <shipmints@HIDDEN>)
id 1vor0u-0005zN-2v
for 80348 <at> debbugs.gnu.org; Sat, 07 Feb 2026 17:42:53 -0500
Received: by mail-vs1-xe29.google.com with SMTP id
ada2fe7eead31-5fae34a2163so1718279137.0
for <80348 <at> debbugs.gnu.org>; Sat, 07 Feb 2026 14:42:52 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; t=1770504171; cv=none;
d=google.com; s=arc-20240605;
b=IJTM2+CYEjissSbLPj56NqVAks0Rde/5Z0fFEXWrGzTYiSHaB0bFNzy7BEgdTksfsC
VulMWnlEM275JqCwUbzDdFLx+UwGkP8g5hFvGg+zfjReCdSCGS3nQKjbnq7uBis/EDKC
hjXLwr8HPywEHlXN531ghZ0Lz3MGgDgEZewVODX22Wp89tinI5hUR3W9O/fIlzYpKPPk
zgTUjWYGWjGpzz4Bcm+u3JfEY5ReKIEqkGA5nhAIr9V7wQyz2OwRVtkaLgZFBWCxcM+2
5JSSkRmMpTnaaL5c7kWnseVGgSAb/p1aXZb9+XvWoz4nQarphNQc+pfyyC9D3Oc9FC/A
IWSw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;
s=arc-20240605;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:dkim-signature;
bh=JHlOX2UBkDYiiXR8fus3g03fFbx1dYJmE4wICOkZfcg=;
fh=KUI2Tu2t+BKJh6tRm0GAiHKOZoFZil26TLDuq1uNmFM=;
b=cODr2t90qOZQy+VU8SvMG/1ru4Drq6kN1h3OOGH7dlGJw+pM09P/Jjd6SDM0qVET57
waVed1bm8vZyRU8HCoQiuHwcwkauykXgArEWxS5L0zFKgNVZ2zfI9SAg4Z0m/XYKjIo2
fk5xNfhiPFF8MrSF+MPvCu7KCYMlHqcy4BmjrHprorNhGYEdfuLxx7bgGv/w5DiulRYJ
X0cCntpZbJlqvdvM+bZvAgo6x4f9QUg0OvDe4saMANnfVUzF8wU0tPAqXTMVDvBnRanF
2KF9T7CtMSXsq653Qx/ZTagUJLypQYBbqiIBttZHGZSRCUJmysqNz5NzhSgWHK2YHE+H
+BLw==; darn=debbugs.gnu.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1770504171; x=1771108971; 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=JHlOX2UBkDYiiXR8fus3g03fFbx1dYJmE4wICOkZfcg=;
b=Jea+27YM1tZoK1xLUvFJlMKcijVWWNZwHg/VmgF9pOc0u9cdHDeslHPD+tqnBGEhbz
t1TxIApKTwlHnfc2PiJANTKrKqlBD4GiE4o/rEHdc8jxy3uZTH+lFI4Uw7CBL/gpCSbT
7gP/2gg8QXXYFrZ3rTLawEqRY5LhGR8dPcq4Fv1rbjC4iIcdIGyScd5AAnmPkIe9/ePL
eKuDZqyhsgAH5kCJzWyikkaUgT4iJtKMDbIkwUZmI1PYOmTycbC3nHLsMY76kc1BVSlX
T+NUXmo+TIbKVxLZUsta0/UNAF931y+LgKEAd1rBA8ak2v+PT4hYpEmYpZy/WJqcqjuQ
T0fw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1770504171; x=1771108971;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=JHlOX2UBkDYiiXR8fus3g03fFbx1dYJmE4wICOkZfcg=;
b=W7+m+X+0rr0vI/7qXWVR71AjcyZjKvKsef+QqsS0Np5F5za9ISYpnspiFbSbRTvpzf
mq4Yn3cB9K0hiJG903eEn7kJPkl3+JXUfW5io1VIg2jZy5xiMTqssj/oUXh9KszJcfbb
WHOWL1iMp43jIVss/iwAO86447erFoa0au4goK5bvd7uenuCk5MZyxBU/CVZmPugPIqV
4aZadm3QpO+iNGUp3knx7h6p0Mnm0yORISQUJOYp9LTi6UIYu8BcJOqZI18IgftDeiSw
lV4MjOu0yVvdH709SOJ9JAG7hzbDFCGBekoBhwxbhWJ91J/ObCWXZl6Qsyr9BlBgSsw3
8qlA==
X-Forwarded-Encrypted: i=1;
AJvYcCUDeLjRcg3LOeUTfd4JaV+mQm4k88DBDfkBZSq2Zy2b3+hZ96h34e50Zt6kOWon9W+CLKQsbQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yx2o4Hm8gvN4iqlvQFZ7wbNFu37NLAQjLffiy37G+p6i275mS49
TDdSb8W/u+nmDYxsSdXyXpLKW4iL54xHjulc4gTEsHFV7YHLYwZ3H76MZhV9dWjH2POlOEzeLyG
YOGKXpsl0fGrvbZ9I8JykwDlwNy5mPpQ=
X-Gm-Gg: AZuq6aIqaMo5uMlxgDsh11XAD/zhh+377mgt0N4nJttVN7l67acG6nJj+fft8E0BYX8
6jvUQUZ4iApTZEGC9BViS1DN6hLrc+vjKJynRnASZ6CypIB+/80aqp7usPQ+eGxlBR737jgRist
1FYjSRfCDZlKaxGSlOK1rnl6sVCa/aN2JYTXToRSXaDLPt8C4GOM94dEXttiiGaZUZUqTAYe2Yy
P0PlK4Krp4o7b3Tjc1EjjKDOdWGgLO+QBE9Bl2q8yE9k4bFV2FOS4GiTkMWDfaRX1sT3mUTAkgC
BOxybmxAvCJwJE+17z6DvPBswKo8t2wYC/EqWDo5qyi444XFEho=
X-Received: by 2002:a05:6102:3f12:b0:5f5:773e:a555 with SMTP id
ada2fe7eead31-5fae8be2039mr2253566137.20.1770504171188; Sat, 07 Feb 2026
14:42:51 -0800 (PST)
MIME-Version: 1.0
References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN>
<CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN>
<868qd4v36l.fsf@HIDDEN>
In-Reply-To: <868qd4v36l.fsf@HIDDEN>
From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>
Date: Sat, 7 Feb 2026 17:42:40 -0500
X-Gm-Features: AZwV_Qjjd2hWqqsjKjYAvuZvoUoIEK4RGo-XcRIWMbPYkr5UJb38N9AmMzC2Xf4
Message-ID: <CAN+1HbqDpnA1dex3A00D3uvYf4C-WRAQ3g5-BxxGJimj949+tA@HIDDEN>
Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake
event package
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: multipart/mixed; boundary="00000000000032a598064a43a07a"
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 80348
Cc: acohen@HIDDEN, eric@HIDDEN, mail@HIDDEN,
Morgan.J.Smith@HIDDEN, michael.albinus@HIDDEN,
Stefan Monnier <monnier@HIDDEN>, 80348 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 0.0 (/)
--00000000000032a598064a43a07a
Content-Type: multipart/alternative; boundary="00000000000032a596064a43a078"
--00000000000032a596064a43a078
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
On Sat, Feb 7, 2026 at 1:06=E2=80=AFPM Eli Zaretskii <eliz@HIDDEN> wrote:
> > Cc: Andrew Cohen <acohen@HIDDEN>, Daniel Mendler <mail@HIDDEN=
e
> >,
> > eric@HIDDEN, Michael Albinus <michael.albinus@HIDDEN>,
> > Morgan Smith <Morgan.J.Smith@HIDDEN>
> > From: St=C3=A9phane Marks <shipmints@HIDDEN>
> > Date: Sat, 7 Feb 2026 10:34:58 -0500
> >
> > On Sat, Feb 7, 2026 at 10:32=E2=80=AFAM St=C3=A9phane Marks <shipmints@=
gmail.com>
> wrote:
> >
> > After some delay this year, I finally worked on this package inspired
> by recent improvements Michael
> > made to dbus.
> >
> > This package provides platform-neutral interfaces to block your system
> from entering idle sleep with
> > control over whether the display remains active, and a hook to process
> pre-sleep and post-wake events.
> >
> > Implementations are for D-Bus on GNU/Linux, and for macOS/GNUstep and
> MS-Windows using native
> > APIs.
> >
> > Michael suggests that the gnus sleep API be based on `system-sleep` so
> that it works across other
> > platforms and also consolidates system sleep logic in one place.
> >
> > And just as we introduced an optional `progress-report` to compile.el,
> we can now introduce an optional
> > platform-neutral idle sleep block.
> >
> > Patch incoming when the bug number is assigned.
> >
> > Attached. You'll need recent master or at least this commit
> 89209a83b60c87d97f0c05dbf6cb29ff3cdf3d5a to
> > get the dbus improvements.
>
> Thanks, please see some comments below.
>
> > @cindex @code{sleep-event} event
> > -@item (sleep-event @var{sleep-wake})
> > -This event is injected when the device Emacs is running on enters or
> > -leaves the sleep state. A non-@code{nil} @var{sleep-wake} indicates
> > -entering the sleep state.
> > +@item (sleep-event @var{state})
> > +This event is injected when the device Emacs is running on is about to
> > +enter a sleep state, or has just awoken from one. @var{state} will be
> > +the symbol @code{pre-sleep} or @code{post-wake}.
>
> Why did you need to make this incompatible change? Was there a
> problem leaving the values and meaning of the parameter as they were
> before? AFAIU, there are still only two possible values, so nil and
> non-nil should still do the job, no?
>
> > +@noindent
> > +Examples of system sleep functions:
>
> I think this feature is too minor to justify examples in the manual,
> let alone such elaborate examples. We are trying not to make the
> ELisp Reference manual too large (it already prints in two volumes).
>
> > +(defcustom sleep-event-functions nil
> ^^^^^^^^^^^^^^^^^^^^^
> The manual said "system-sleep-event-functions".
>
> > + "Abnormal hook invoked on sleep events.
> > +Each function is called with the event."
>
> The manual described the argument differently.
>
> > +(defun sleep-event-handler (event)
> > + "`sleep-event' EVENT handler."
> > + (declare (completion ignore))
> > + (interactive "e")
> > + (run-hook-with-args 'sleep-event-functions event))
>
> And this function calls the hook not as the ELisp manual said they
> will be called.
>
> > +(require 'dbus)
>
> Shouldn't we load dbus only on systems where DBus is supported?
>
> > +(defgroup system-sleep nil
> > + "System sleep/wake blocking and event management."
> > + :group 'convenience
>
> Why "convenience"? Isn't there a better parent group to use? And if
> there isn't a better one, how about adding such a group?
> system-interface sounds good, for example.
>
> > +;;;###autoload
> > +(defcustom system-sleep-event-functions nil
> > + "Abnormal hook invoked on system sleep events.
> > +Each function is called with one argument which will be one of these
> > +symbols `pre-sleep' or `post-wake'.
>
> ??? Another user option? Do we need both?
>
> > +Handling `pre-sleep' events should be done as fast as possible. Syste=
ms
> > +often grant a very short pre-sleep processing interval, typically
> > +ranging between 2 and 5 seconds. The system may sleep even if your
> > +processing is not complete, so be sure you do as little as possible.
> > +For example, your function could close active connections or serial
> > +ports.
> > +
> > +Handling `post-wake' events offers more leeway. Your function could
> > +reestablish connections.
>
> Please use \\+` to make sure `pre-sleep' and `post-wake' will not be
> shown as links.
>
> > + (progn
> > + (push token system-sleep--sleep-block-tokens)
> > + token)
>
> Since this list of tokens seems to be a data structure that must be
> kept consistent with the system APIs, I think all these push and remq
> calls which manipulate it should run with quit inhibited, and should
> perhaps also handle any errors that could happen, so that the list of
> tokens is always correct.
>
> > + (if (memq token system-sleep--sleep-block-tokens)
> > + (progn
> > + (setq system-sleep--sleep-block-tokens
> > + (remq token system-sleep--sleep-block-tokens))
> > + (if (w32-unblock-system-sleep)
> > + t
> > + (warn "Unable to unblock system sleep")
>
> If and when this warning is issued, AFAIU it means that the sleep is
> blocked, but the token of its blocker is lost forever, because it was
> already removed from the list. What then the user could do to fix
> this situation? Will, for example, killing Emacs do that?
>
> > +(if (and (system-sleep--set-back-end)
> > + (system-sleep--enable))
> > + (add-hook 'sleep-event-functions
> #'system-sleep--sleep-event-function)
>
> If sleep-event-functions is a user option, Emacs should not set its
> value.
>
> > --- a/src/w32fns.c
> > +++ b/src/w32fns.c
> > @@ -44,6 +44,7 @@ #define COBJMACROS /* Ask for C definitions for COM.
> */
> > #include <oleidl.h>
> > #include <objidl.h>
> > #include <ole2.h>
> > +#include <powrprof.h> /* For system sleep support. */
>
> Why do we need this header? In my MinGW headers it is absent.
>
> > +/* We assume SetThreadExecutionState is always available, being Window=
s
> > + XP+. RegisterSuspendResumeNotification is Windows 8+ so we look th=
is
> > + up. */
>
> We don't yet require Windows XP for the Windows builds of Emacs, so
> SetThreadExecutionState must also be loaded dynamically from its DLL.
>
> > +DEFUN ("w32-block-system-sleep",
> > + Fw32_block_system_sleep,
> > + Sw32_block_system_sleep,
> > + 1, 1, 0,
> > + doc: /* Block system idle sleep.
> > +If ALLOW-DISPLAY-SLEEP is non-nil, block the screen from sleeping.
> > +Return a token to unblock this block using `w32-unblock-system-sleep',
> > +or nil if the block fails. */)
> > + (Lisp_Object allow_display_sleep)
> > +{
> > + /* ES_CONTINUOUS keeps the state until cleared. */
> > + EXECUTION_STATE new_state =3D ES_SYSTEM_REQUIRED | ES_CONTINUOUS;
> > + if (NILP (allow_display_sleep))
> > + new_state |=3D ES_DISPLAY_REQUIRED;
> > +
> > + sleep_block_execution_state =3D SetThreadExecutionState (new_state);
> > +
> > + /* One more block. */
> > + ++sleep_block_count;
> > +
> > + /* Synthesize a token. */
> > + return make_fixnum (sleep_block_id);
>
> Shouldn't sleep_block_id be incremented? If not, all the cookies in
> the list of tokens will be identical, no?
>
> Also, shouldn't this return nil if the call to SetThreadExecutionState
> failed?
>
> And I'm not sure I understand the effect of calling
> w32-block-system-sleep several times without calling
> w32-unblock-system-sleep. It isn't like the OS counts the number of
> callers and handles this as a reference count, which must be zero for
> the system to be able to sleep, right?
>
> > +DEFUN ("w32-unblock-system-sleep",
> > + Fw32_unblock_system_sleep,
> > + Sw32_unblock_system_sleep,
> > + 0, 0, 0,
> > + doc: /* Unblock system idle sleep.
> > +Return non-nil if the TOKEN block was unblocked. */)
> > + (void)
> > +{
> > + /* No blocks to unblock. */
> > + if (sleep_block_count =3D=3D 0)
> > + return Qnil;
>
> This seems wrong: why indicate failure in this trivial case?
>
> > + /* One fewer block. */
> > + if (--sleep_block_count =3D=3D 0
> > + && sleep_block_execution_state)
> > + sleep_block_execution_state =3D
> > + SetThreadExecutionState (sleep_block_execution_state
> > + & ~(ES_DISPLAY_REQUIRED |
> ES_SYSTEM_REQUIRED));
> > + return Qt;
>
> And here you return t regardless of whether SetThreadExecutionState
> succeeded or failed. Why?
>
> > +DEFUN ("w32-system-sleep-block-count",
> > + Fw32_system_sleep_block_count,
> > + Sw32_system_sleep_block_count,
> > + 0, 0, 0,
> > + doc: /* Return the w32 sleep block count. */)
> > + (void)
> > +{
> > + return make_fixnum (sleep_block_count);
> > +}
>
> What is the meaning of the return value in the w32 case? See my
> questions above regarding the number of callers.
>
> > +typedef ULONG (CALLBACK *PMY_DEVICE_NOTIFY_CALLBACK_ROUTINE)
> > + (PVOID Context, ULONG Type, PVOID Setting);
> > +
> > +static ULONG
> > +sleep_notification_callback(PVOID _Context, ULONG Type, PVOID _Setting=
)
>
> I think this should use ALIGN_STACK, see w32term.h for the reasons.
>
> > + /* System sleep support. */
> > + DEFSYM (Qpre_sleep, "pre-sleep");
> > + DEFSYM (Qpost_wake, "post-wake");
>
> These symbols should be defined in one place and only once, not
> separately for each system. (And I hope we won't need them at all,
> see above.)
>
See attached revised patch. I addressed everyone's comments, so far.
Except for using `cl-defstruct` in bindings.el which I skipped. I retested
on Linux, macOS, MS-Windows.
-St=C3=A9phane
--00000000000032a596064a43a078
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon=
t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">=
On Sat, Feb 7, 2026 at 1:06=E2=80=AFPM Eli Zaretskii <<a href=3D"mailto:=
eliz@HIDDEN">eliz@HIDDEN</a>> wrote:</span></div></div><div class=3D"g=
mail_quote gmail_quote_container"><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex">> Cc: Andrew Cohen <<a href=3D"mailto:acohen@HIDDEN" targe=
t=3D"_blank">acohen@HIDDEN</a>>, Daniel Mendler <<a href=3D"mailto:ma=
il@HIDDEN" target=3D"_blank">mail@HIDDEN</a>>,<br>
>=C2=A0 <a href=3D"mailto:eric@HIDDEN" target=3D"_blank">eri=
c@HIDDEN</a>, Michael Albinus <<a href=3D"mailto:michael.alb=
inus@HIDDEN" target=3D"_blank">michael.albinus@HIDDEN</a>>,<br>
>=C2=A0 Morgan Smith <<a href=3D"mailto:Morgan.J.Smith@HIDDEN" t=
arget=3D"_blank">Morgan.J.Smith@HIDDEN</a>><br>
> From: St=C3=A9phane Marks <<a href=3D"mailto:shipmints@HIDDEN" t=
arget=3D"_blank">shipmints@HIDDEN</a>><br>
> Date: Sat, 7 Feb 2026 10:34:58 -0500<br>
> <br>
> On Sat, Feb 7, 2026 at 10:32=E2=80=AFAM St=C3=A9phane Marks <<a hre=
f=3D"mailto:shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>&=
gt; wrote:<br>
> <br>
>=C2=A0 After some delay this year, I finally worked on this package ins=
pired by recent improvements Michael<br>
>=C2=A0 made to dbus.<br>
> <br>
>=C2=A0 This package provides platform-neutral interfaces to block your =
system from entering idle sleep with<br>
>=C2=A0 control over whether the display remains active, and a hook to p=
rocess pre-sleep and post-wake events.<br>
> <br>
>=C2=A0 Implementations are for D-Bus on GNU/Linux, and for macOS/GNUste=
p and MS-Windows using native<br>
>=C2=A0 APIs.<br>
> <br>
>=C2=A0 Michael suggests that the gnus sleep API be based on `system-sle=
ep` so that it works across other<br>
>=C2=A0 platforms and also consolidates system sleep logic in one place.=
<br>
> <br>
>=C2=A0 And just as we introduced an optional `progress-report` to compi=
le.el, we can now introduce an optional<br>
>=C2=A0 platform-neutral idle sleep block.<br>
> <br>
>=C2=A0 Patch incoming when the bug number is assigned.<br>
> <br>
> Attached.=C2=A0 You'll need recent master or at least this commit =
89209a83b60c87d97f0c05dbf6cb29ff3cdf3d5a to<br>
> get the dbus improvements.<br>
<br>
Thanks, please see some comments below.<br>
<br>
>=C2=A0 @cindex @code{sleep-event} event<br>
> -@item (sleep-event @var{sleep-wake})<br>
> -This event is injected when the device Emacs is running on enters or<=
br>
> -leaves the sleep state.=C2=A0 A non-@code{nil} @var{sleep-wake} indic=
ates<br>
> -entering the sleep state.<br>
> +@item (sleep-event @var{state})<br>
> +This event is injected when the device Emacs is running on is about t=
o<br>
> +enter a sleep state, or has just awoken from one.=C2=A0 @var{state} w=
ill be<br>
> +the symbol @code{pre-sleep} or @code{post-wake}.<br>
<br>
Why did you need to make this incompatible change?=C2=A0 Was there a<br>
problem leaving the values and meaning of the parameter as they were<br>
before?=C2=A0 AFAIU, there are still only two possible values, so nil and<b=
r>
non-nil should still do the job, no?<br>
<br>
> +@noindent<br>
> +Examples of system sleep functions:<br>
<br>
I think this feature is too minor to justify examples in the manual,<br>
let alone such elaborate examples.=C2=A0 We are trying not to make the<br>
ELisp Reference manual too large (it already prints in two volumes).<br>
<br>
> +(defcustom sleep-event-functions nil<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ^^^^^^^^^^^^^^^^^^^^^<br>
The manual said "system-sleep-event-functions".<br>
<br>
> +=C2=A0 "Abnormal hook invoked on sleep events.<br>
> +Each function is called with the event."<br>
<br>
The manual described the argument differently.<br>
<br>
> +(defun sleep-event-handler (event)<br>
> +=C2=A0 "`sleep-event' EVENT handler."<br>
> +=C2=A0 (declare (completion ignore))<br>
> +=C2=A0 (interactive "e")<br>
> +=C2=A0 (run-hook-with-args 'sleep-event-functions event))<br>
<br>
And this function calls the hook not as the ELisp manual said they<br>
will be called.<br>
<br>
> +(require 'dbus)<br>
<br>
Shouldn't we load dbus only on systems where DBus is supported?<br>
<br>
> +(defgroup system-sleep nil<br>
> +=C2=A0 "System sleep/wake blocking and event management."<b=
r>
> +=C2=A0 :group 'convenience<br>
<br>
Why "convenience"?=C2=A0 Isn't there a better parent group to=
use?=C2=A0 And if<br>
there isn't a better one, how about adding such a group?<br>
system-interface sounds good, for example.<br>
<br>
> +;;;###autoload<br>
> +(defcustom system-sleep-event-functions nil<br>
> +=C2=A0 "Abnormal hook invoked on system sleep events.<br>
> +Each function is called with one argument which will be one of these<=
br>
> +symbols `pre-sleep' or `post-wake'.<br>
<br>
??? Another user option?=C2=A0 Do we need both?<br>
<br>
> +Handling `pre-sleep' events should be done as fast as possible.=
=C2=A0 Systems<br>
> +often grant a very short pre-sleep processing interval, typically<br>
> +ranging between 2 and 5 seconds.=C2=A0 The system may sleep even if y=
our<br>
> +processing is not complete, so be sure you do as little as possible.<=
br>
> +For example, your function could close active connections or serial<b=
r>
> +ports.<br>
> +<br>
> +Handling `post-wake' events offers more leeway.=C2=A0 Your functi=
on could<br>
> +reestablish connections.<br>
<br>
Please use \\+` to make sure `pre-sleep' and `post-wake' will not b=
e<br>
shown as links.<br>
<br>
> +=C2=A0 =C2=A0 =C2=A0 (progn<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (push token system-sleep--sleep-block-tok=
ens)<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 token)<br>
<br>
Since this list of tokens seems to be a data structure that must be<br>
kept consistent with the system APIs, I think all these push and remq<br>
calls which manipulate it should run with quit inhibited, and should<br>
perhaps also handle any errors that could happen, so that the list of<br>
tokens is always correct.<br>
<br>
> +=C2=A0 (if (memq token system-sleep--sleep-block-tokens)<br>
> +=C2=A0 =C2=A0 =C2=A0 (progn<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq system-sleep--sleep-block-tokens<br=
>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (remq token system-s=
leep--sleep-block-tokens))<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (if (w32-unblock-system-sleep)<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 t<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (warn "Unable to unblock syst=
em sleep")<br>
<br>
If and when this warning is issued, AFAIU it means that the sleep is<br>
blocked, but the token of its blocker is lost forever, because it was<br>
already removed from the list.=C2=A0 What then the user could do to fix<br>
this situation?=C2=A0 Will, for example, killing Emacs do that?<br>
<br>
> +(if (and (system-sleep--set-back-end)<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(system-sleep--enable))<br>
> +=C2=A0 =C2=A0 (add-hook 'sleep-event-functions #'system-sleep=
--sleep-event-function)<br>
<br>
If sleep-event-functions is a user option, Emacs should not set its<br>
value.<br>
<br>
> --- a/src/w32fns.c<br>
> +++ b/src/w32fns.c<br>
> @@ -44,6 +44,7 @@ #define COBJMACROS /* Ask for C definitions for COM.=
=C2=A0 */<br>
>=C2=A0 #include <oleidl.h><br>
>=C2=A0 #include <objidl.h><br>
>=C2=A0 #include <ole2.h><br>
> +#include <powrprof.h> /* For system sleep support.=C2=A0 */<br>
<br>
Why do we need this header?=C2=A0 In my MinGW headers it is absent.<br>
<br>
> +/* We assume SetThreadExecutionState is always available, being Windo=
ws<br>
> +=C2=A0 =C2=A0XP+.=C2=A0 RegisterSuspendResumeNotification is Windows =
8+ so we look this<br>
> +=C2=A0 =C2=A0up.=C2=A0 */<br>
<br>
We don't yet require Windows XP for the Windows builds of Emacs, so<br>
SetThreadExecutionState must also be loaded dynamically from its DLL.<br>
<br>
> +DEFUN ("w32-block-system-sleep",<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Fw32_block_system_sleep,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Sw32_block_system_sleep,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A01, 1, 0,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0doc: /* Block system idle sleep.<br>
> +If ALLOW-DISPLAY-SLEEP is non-nil, block the screen from sleeping.<br=
>
> +Return a token to unblock this block using `w32-unblock-system-sleep&=
#39;,<br>
> +or nil if the block fails.=C2=A0 */)<br>
> +=C2=A0 (Lisp_Object allow_display_sleep)<br>
> +{<br>
> +=C2=A0 /* ES_CONTINUOUS keeps the state until cleared.=C2=A0 */<br>
> +=C2=A0 EXECUTION_STATE new_state =3D ES_SYSTEM_REQUIRED | ES_CONTINUO=
US;<br>
> +=C2=A0 if (NILP (allow_display_sleep))<br>
> +=C2=A0 =C2=A0 new_state |=3D ES_DISPLAY_REQUIRED;<br>
> +<br>
> +=C2=A0 sleep_block_execution_state =3D SetThreadExecutionState (new_s=
tate);<br>
> +<br>
> +=C2=A0 /* One more block.=C2=A0 */<br>
> +=C2=A0 ++sleep_block_count;<br>
> +<br>
> +=C2=A0 /* Synthesize a token.=C2=A0 */<br>
> +=C2=A0 return make_fixnum (sleep_block_id);<br>
<br>
Shouldn't sleep_block_id be incremented?=C2=A0 If not, all the cookies =
in<br>
the list of tokens will be identical, no?<br>
<br>
Also, shouldn't this return nil if the call to SetThreadExecutionState<=
br>
failed?<br>
<br>
And I'm not sure I understand the effect of calling<br>
w32-block-system-sleep several times without calling<br>
w32-unblock-system-sleep.=C2=A0 It isn't like the OS counts the number =
of<br>
callers and handles this as a reference count, which must be zero for<br>
the system to be able to sleep, right?<br>
<br>
> +DEFUN ("w32-unblock-system-sleep",<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Fw32_unblock_system_sleep,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Sw32_unblock_system_sleep,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A00, 0, 0,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0doc: /* Unblock system idle sleep.<br>
> +Return non-nil if the TOKEN block was unblocked.=C2=A0 */)<br>
> +=C2=A0 (void)<br>
> +{<br>
> +=C2=A0 /* No blocks to unblock.=C2=A0 */<br>
> +=C2=A0 if (sleep_block_count =3D=3D 0)<br>
> +=C2=A0 =C2=A0 return Qnil;<br>
<br>
This seems wrong: why indicate failure in this trivial case?<br>
<br>
> +=C2=A0 /* One fewer block.=C2=A0 */<br>
> +=C2=A0 if (--sleep_block_count =3D=3D 0<br>
> +=C2=A0 =C2=A0 =C2=A0 && sleep_block_execution_state)<br>
> +=C2=A0 =C2=A0 sleep_block_execution_state =3D<br>
> +=C2=A0 =C2=A0 =C2=A0 SetThreadExecutionState (sleep_block_execution_s=
tate<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 & ~(ES_DISPLAY_REQUIRED | ES_SYSTEM_REQUIR=
ED));<br>
> +=C2=A0 return Qt;<br>
<br>
And here you return t regardless of whether SetThreadExecutionState<br>
succeeded or failed.=C2=A0 Why?<br>
<br>
> +DEFUN ("w32-system-sleep-block-count",<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Fw32_system_sleep_block_count,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Sw32_system_sleep_block_count,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A00, 0, 0,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0doc: /* Return the w32 sleep block count.=
=C2=A0 */)<br>
> +=C2=A0 (void)<br>
> +{<br>
> +=C2=A0 return make_fixnum (sleep_block_count);<br>
> +}<br>
<br>
What is the meaning of the return value in the w32 case?=C2=A0 See my<br>
questions above regarding the number of callers.<br>
<br>
> +typedef ULONG (CALLBACK *PMY_DEVICE_NOTIFY_CALLBACK_ROUTINE)<br>
> +=C2=A0 (PVOID Context,=C2=A0 ULONG Type,=C2=A0 PVOID Setting);<br>
> +<br>
> +static ULONG<br>
> +sleep_notification_callback(PVOID _Context, ULONG Type, PVOID _Settin=
g)<br>
<br>
I think this should use ALIGN_STACK, see w32term.h for the reasons.<br>
<br>
> +=C2=A0 /* System sleep support.=C2=A0 */<br>
> +=C2=A0 DEFSYM (Qpre_sleep, "pre-sleep");<br>
> +=C2=A0 DEFSYM (Qpost_wake, "post-wake");<br>
<br>
These symbols should be defined in one place and only once, not<br>
separately for each system.=C2=A0 (And I hope we won't need them at all=
,<br>
see above.)<br></blockquote><div><br></div><div><div class=3D"gmail_default=
" style=3D""><font face=3D"monospace">See attached revised patch.=C2=A0 I a=
ddressed everyone's comments, so far.=C2=A0 Except for using `cl-defstr=
uct` in bindings.el which I skipped.=C2=A0 I retested on Linux, macOS, MS-W=
indows.</font></div></div><div class=3D"gmail_default" style=3D""><font fac=
e=3D"monospace"><br></font></div><div class=3D"gmail_default" style=3D""><f=
ont face=3D"monospace">-St=C3=A9phane=C2=A0</font></div></div></div>
--00000000000032a596064a43a078--
--00000000000032a598064a43a07a
Content-Type: application/octet-stream;
name="0001-system-sleep-sleep-blocker-and-sleep-wake-event-pack.patch"
Content-Disposition: attachment;
filename="0001-system-sleep-sleep-blocker-and-sleep-wake-event-pack.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_mlcwglxx0>
X-Attachment-Id: f_mlcwglxx0
RnJvbSBjNTM1YWJhMzNkOTZhNDBmNDA1YmVmNzgwMzNkNGU0ODg5ZDZiOGFlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo
aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgNCBGZWIgMjAyNiAxODoyMDo1NSAtMDUwMApT
dWJqZWN0OiBbUEFUQ0hdIHN5c3RlbS1zbGVlcCBzbGVlcCBibG9ja2VyIGFuZCBzbGVlcC93YWtl
IGV2ZW50IHBhY2thZ2UKIChidWcjODAzNDgpCgpUaGlzIHBhY2thZ2UgcHJvdmlkZXMgcGxhdGZv
cm0tbmV1dHJhbCBpbnRlcmZhY2VzIHRvIGJsb2NrIHlvdXIKc3lzdGVtIGZyb20gZW50ZXJpbmcg
aWRsZSBzbGVlcCBhbmQgYSBob29rIHRvIHByb2Nlc3MgcHJlLXNsZWVwCmFuZCBwb3N0LXdha2Ug
ZXZlbnRzLgoKSW1wbGVtZW50YXRpb25zIGFyZSBmb3IgRC1CdXMgb24gR05VL0xpbnV4LCBtYWNP
Uy9HTlVzdGVwLCBhbmQKTVMtV2luZG93cy4KCiogbGlzcC9iaW5kaW5ncy5lbCAoc2xlZXAtZXZl
bnQtZnVuY3Rpb25zKTogTmV3IGFibm9ybWFsIGhvb2suCihzbGVlcC1ldmVudC1oYW5kbGVyKTog
TmV3IGRlZnVuLgooc3BlY2lhbC1ldmVudC1tYXApOiBOZXcgZXZlbnQgaGFuZGxlci4KKiBsaXNw
L3N5c3RlbS1zbGVlcC5lbDogTmV3IHBhY2thZ2UuCiogc3JjL25zZm5zLm0gKEZuc19ibG9ja19z
eXN0ZW1fc2xlZXAsIEZuc191bmJsb2NrX3N5c3RlbV9zbGVlcCkKKHN5bXNfb2ZfbnNmbnMpOiBO
ZXcgZnVuY3Rpb25zLgoqIHNyYy9uc3Rlcm0ubSAoYXBwbGljYXRpb25EaWRGaW5pc2hMYXVuY2hp
bmcpOiBTdWJzY3JpYmUgdG8KcHJlLXNsZWVwIGFuZCBwb3N0LXdha2Ugbm90aWZpY2F0aW9ucy4K
KHN5c3RlbVdpbGxTbGVlcCwgc3lzdGVtRGlkV2FrZSk6IE5ldyBmdW5jdGlvbi4KKHN5bXNfb2Zf
bnN0ZXJtKTogUXByZV9zbGVlcCBRcG9zdF93YWtlIG5ldyBzeW1ib2xzLgoqIHNyYy93MzJmbnMu
YyAoRnczMl9ibG9ja19zeXN0ZW1fc2xlZXApCihGdzMyX3VuYmxvY2tfc3lzdGVtX3NsZWVwLCBG
dzMyX3N5c3RlbV9zbGVlcF9ibG9ja19jb3VudCkKKHNsZWVwX25vdGlmaWNhdGlvbl9jYWxsYmFj
aykKKHczMl9yZWdpc3Rlcl9mb3Jfc2xlZXBfbm90aWZpY2F0aW9ucyk6IE5ldyBmdW5jdGlvbi4K
KHN5bXNfb2ZfdzMyZm5zKTogU3czMl91bmJsb2NrX3N5c3RlbV9zbGVlcApTdzMyX2Jsb2NrX3N5
c3RlbV9zbGVlcCBTdzMyX3N5c3RlbV9zbGVlcF9ibG9ja19jb3VudDogTmV3CmRlZnN1YnIuCihz
eW1zX29mX3czMmZucyk6IFFwcmVfc2xlZXAsIFFwb3N0X3dha2U6IE5ldyBERUZTWU0uCiogc3Jj
L3czMnRlcm0uaCAoRnczMl9ibG9ja19zeXN0ZW1fc2xlZXApOiBOZXcgZXh0ZXJuLgoqIHNyYy93
MzJ0ZXJtLmMgKHczMl9pbml0aWFsaXplKTogQ2FsbAp3MzJfcmVnaXN0ZXJfZm9yX3NsZWVwX25v
dGlmaWNhdGlvbnMuCiogZG9jL2xpc3ByZWYvb3MudGV4aTogRG9jdW1lbnQgdGhlIHN5c3RlbS1z
bGVlcCBwYWNrYWdlLgoqIGRvYy9saXNwcmVmL2NvbW1hbmRzLnRleGk6IFVwZGF0ZSBzbGVlcC1l
dmVudCBzcGVjaWFsCmRvY3VtZW50YXRpb24uCiogZXRjL05FV1M6IEFubm91bmNlIHRoZSBuZXcg
cGFja2FnZS4KLS0tCiBkb2MvbGlzcHJlZi9jb21tYW5kcy50ZXhpIHwgIDEwICstCiBkb2MvbGlz
cHJlZi9vcy50ZXhpICAgICAgIHwgIDY2ICsrKysrKwogZXRjL05FV1MgICAgICAgICAgICAgICAg
ICB8ICAxNiArKwogbGlzcC9iaW5kaW5ncy5lbCAgICAgICAgICB8ICAxNiArKwogbGlzcC9zeXN0
ZW0tc2xlZXAuZWwgICAgICB8IDQ3NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKwogc3JjL25zZm5zLm0gICAgICAgICAgICAgICB8ICA4NCArKysrKysrCiBzcmMvbnN0ZXJt
Lm0gICAgICAgICAgICAgIHwgIDUyICsrKystCiBzcmMvdzMyZm5zLmMgICAgICAgICAgICAgIHwg
MTU0ICsrKysrKysrKysrKysKIHNyYy93MzJ0ZXJtLmMgICAgICAgICAgICAgfCAgIDEgKwogc3Jj
L3czMnRlcm0uaCAgICAgICAgICAgICB8ICAgMSArCiAxMCBmaWxlcyBjaGFuZ2VkLCA4NjAgaW5z
ZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGlzcC9zeXN0
ZW0tc2xlZXAuZWwKCmRpZmYgLS1naXQgYS9kb2MvbGlzcHJlZi9jb21tYW5kcy50ZXhpIGIvZG9j
L2xpc3ByZWYvY29tbWFuZHMudGV4aQppbmRleCBiZDMxNzk4ZDQzMS4uNGFlZTI2MDlkNjUgMTAw
NjQ0Ci0tLSBhL2RvYy9saXNwcmVmL2NvbW1hbmRzLnRleGkKKysrIGIvZG9jL2xpc3ByZWYvY29t
bWFuZHMudGV4aQpAQCAtMjc3OCwxMiArMjc3OCwxMiBAQCBNaXNjIEV2ZW50cwogQGVuZCBzbWFs
bGV4YW1wbGUKIAogQGNpbmRleCBAY29kZXtzbGVlcC1ldmVudH0gZXZlbnQKLUBpdGVtIChzbGVl
cC1ldmVudCBAdmFye3NsZWVwLXdha2V9KQotVGhpcyBldmVudCBpcyBpbmplY3RlZCB3aGVuIHRo
ZSBkZXZpY2UgRW1hY3MgaXMgcnVubmluZyBvbiBlbnRlcnMgb3IKLWxlYXZlcyB0aGUgc2xlZXAg
c3RhdGUuICBBIG5vbi1AY29kZXtuaWx9IEB2YXJ7c2xlZXAtd2FrZX0gaW5kaWNhdGVzCi1lbnRl
cmluZyB0aGUgc2xlZXAgc3RhdGUuCitAaXRlbSAoc2xlZXAtZXZlbnQgQHZhcntzdGF0ZX0pCitU
aGlzIGV2ZW50IGlzIGluamVjdGVkIHdoZW4gdGhlIGRldmljZSBFbWFjcyBpcyBydW5uaW5nIG9u
IGlzIGFib3V0IHRvCitlbnRlciBhIHNsZWVwIHN0YXRlLCBvciBoYXMganVzdCBhd29rZW4gZnJv
bSBvbmUuICBAdmFye3N0YXRlfSB3aWxsIGJlCit0aGUgc3ltYm9sIEBjb2Rle3ByZS1zbGVlcH0g
b3IgQGNvZGV7cG9zdC13YWtlfS4KIAotVGhpcyBpcyBpbXBsZW1lbnRlZCBvbmx5IG9uIEdOVS9M
aW51eC4KK1RoaXMgaXMgaW1wbGVtZW50ZWQgb24gR05VL0xpbnV4LCBtYWNPUywgYW5kIE1TLVdp
bmRvd3MuCiAKIEBjaW5kZXggQGNvZGV7bGFuZ3VhZ2UtY2hhbmdlfSBldmVudAogQGl0ZW0gbGFu
Z3VhZ2UtY2hhbmdlCmRpZmYgLS1naXQgYS9kb2MvbGlzcHJlZi9vcy50ZXhpIGIvZG9jL2xpc3By
ZWYvb3MudGV4aQppbmRleCBmNWNhNmVmYTIxYi4uZjk5YmEzZGE4NzIgMTAwNjQ0Ci0tLSBhL2Rv
Yy9saXNwcmVmL29zLnRleGkKKysrIGIvZG9jL2xpc3ByZWYvb3MudGV4aQpAQCAtMzUsNiArMzUs
NyBAQCBTeXN0ZW0gSW50ZXJmYWNlCiAqIFNlc3Npb24gTWFuYWdlbWVudDo6ICBTYXZpbmcgYW5k
IHJlc3RvcmluZyBzdGF0ZSB3aXRoIFggU2Vzc2lvbiBNYW5hZ2VtZW50LgogKiBEZXNrdG9wIE5v
dGlmaWNhdGlvbnM6OiBEZXNrdG9wIG5vdGlmaWNhdGlvbnMuCiAqIFN5c3RlbSBUYXNrYmFyOjog
ICAgICBDb250cm9sbGluZyBzeXN0ZW0gR1VJIHRhc2tiYXIgZmVhdHVyZXMuCisqIFN5c3RlbSBT
bGVlcDo6ICAgICAgICBCbG9jayBzeXN0ZW0gc2xlZXAgYW5kIHByb2Nlc3Mgc2xlZXAgZXZlbnRz
LgogKiBGaWxlIE5vdGlmaWNhdGlvbnM6OiAgRmlsZSBub3RpZmljYXRpb25zLgogKiBEeW5hbWlj
IExpYnJhcmllczo6ICAgT24tZGVtYW5kIGxvYWRpbmcgb2Ygc3VwcG9ydCBsaWJyYXJpZXMuCiAq
IFNlY3VyaXR5IENvbnNpZGVyYXRpb25zOjogUnVubmluZyBFbWFjcyBpbiBhbiB1bmZyaWVuZGx5
IGVudmlyb25tZW50LgpAQCAtMzQ5Myw2ICszNDk0LDcxIEBAIFN5c3RlbSBUYXNrYmFyCiBAZW5k
IGdyb3VwCiBAZW5kIGxpc3AKIAorQG5vZGUgU3lzdGVtIFNsZWVwCitAc2VjdGlvbiBCbG9jayBT
eXN0ZW0gU2xlZXAgYW5kIFByb2Nlc3MgU2xlZXAgRXZlbnRzCitAY2luZGV4IHN5c3RlbSBzbGVl
cAorQGNpbmRleCBtb2RlLCBzeXN0ZW0gc2xlZXAKKworQGRlZnVuIHN5c3RlbS1zbGVlcC1ibG9j
ay1zbGVlcCAmb3B0aW9uYWwgd2h5IGFsbG93LWRpc3BsYXktc2xlZXAKK1RoaXMgZnVuY3Rpb24g
YmxvY2tzIHRoZSBzeXN0ZW0gZnJvbSBlbnRlcmluZyBpdHMgaWRsZSBzbGVlcCBzdGF0ZS4KKwor
SXQgcmV0dXJucyBhIHRva2VuIHRoYXQgbXVzdCBiZSBwYXNzZWQgdG8KK0Bjb2Rle3N5c3RlbS1z
bGVlcC11bmJsb2NrLXNsZWVwfSB0byB1bmJsb2NrIHRoaXMgc3BlY2lmaWMgYmxvY2sgKG90aGVy
CitzbGVlcCBibG9ja3MgbWF5IGJlIHNpbXVsdGFuZW91c2x5IGluIGZvcmNlIGZvciBvdGhlciBw
dXJwb3NlcykuCitPdGhlcndpc2UsIGl0IHJldHVybnMgQGNvZGV7bmlsfSBpZiB0aGUgc2xlZXAg
YmxvY2tpbmcgZmFpbHMuCisKK0B2YXJ7d2h5fSBpcyBhIHN0cmluZyBhbmQsIHdoZW4gbm9uLW5p
bCwgaXMgdXNlZCB0byBpZGVudGlmeSB0aGUgc2xlZXAKK2Jsb2NrIGFzIGl0IG1heSBhcHBlYXIg
b24gdGhlIHN5c3RlbSdzIGluc3BlY3RhYmxlIGJsb2NrIGxpc3RzLiAgSXQKK2RlZmF1bHRzIHRv
IGBgRW1hY3MnJy4KKworSWYgQHZhcnthbGxvdy1kaXNwbGF5LXNsZWVwfSBpcyBub24tbmlsLCBh
bGxvdyB0aGUgZGlzcGxheSB0byBzbGVlcC4gIEJ5CitkZWZhdWx0LCB0aGUgZGlzcGxheSBpcyBr
ZXB0IGFjdGl2ZS4KK0BlbmQgZGVmdW4KKworQGRlZnVuIHN5c3RlbS1zbGVlcC11bmJsb2NrLXNs
ZWVwIHRva2VuCitUaGlzIGZ1bmN0aW9uIHVuYmxvY2tzIHRoZSBzbGVlcCBibG9jayBhc3NvY2lh
dGVkIHdpdGggQHZhcnt0b2tlbn0uICBJdAorcmV0dXJucyBub24tQGNvZGV7bmlsfSBvbiBzdWNj
ZXNzLCBvdGhlcndpc2UgcmV0dXJucyBAY29kZXtuaWx9LgorCitOb3RlOiDigItXaGVuIHRoZSBF
bWFjcyBwcm9jZXNzIGRpZXMsIGJsb2NrcyBhcmUgcmVsZWFzZWQgb24gYWxsIHBsYXRmb3Jtcy4K
K0BlbmQgZGVmdW4KKworQGRlZm1hYyB3aXRoLXN5c3RlbS1zbGVlcC1ibG9jayAod2h5IGFsbG93
LWRpc3BsYXktc2xlZXApIGJvZHlAZG90c3t9CitUaGlzIGlzIGEgY29udmVuaWVuY2UgbWFjcm8g
dGhhdCBsZXRzIHlvdSB3cmFwIHRoZSBmb3JtcyBpbiBAdmFye2JvZHl9Cit3aXRoIGEgc2xlZXAg
YmxvY2sgdGhhdCBpcyB1bmJsb2NrZWQgZm9yIHlvdSB3aGVuIEB2YXJ7Ym9keX0gY29tcGxldGVz
LgorVGhlIGFyZ3VtZW50cyBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgaW4KK0Bjb2Rle3N5c3Rl
bS1zbGVlcC1ibG9jay1zbGVlcH0sIGFib3ZlLgorQGVuZCBkZWZtYWMKKworQGRlZnVuIHN5c3Rl
bS1zbGVlcC1zbGVlcC1ibG9ja2VkLXAKK1RoaXMgcHJlZGljYXRlIGZ1bmN0aW9uIHJldHVybnMg
bm9uLUBjb2Rle25pbH0gb24gaWYgdGhlcmUgYXJlIGFueQorYWN0aXZlIEBjb2Rle3N5c3RlbS1z
bGVlcH0gYmxvY2tzLCBvdGhlcndpc2UgcmV0dXJucyBAY29kZXtuaWx9LgorQGVuZCBkZWZ1bgor
CitAZGVmdW4gc3lzdGVtLXNsZWVwLXVuYmxvY2stYWxsLXNsZWVwLWJsb2NrcworVGhpcyBmdW5j
dGlvbiB1bmJsb2NrcyBhbGwgYWN0aXZlIHNsZWVwIGJsb2Nrcy4gIEl0IGlzIHVubGlrZWx5IHRo
YXQgeW91Cit3aWxsIG5lZWQgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uLgorQGVuZCBkZWZ1bgorCitA
ZGVmb3B0IHN5c3RlbS1zbGVlcC1ldmVudC1mdW5jdGlvbnMKK1doZW4gdGhlIHN5c3RlbSBpcyBh
Ym91dCB0byBlbnRlciBhIHNsZWVwIHN0YXRlIG9yIGFmdGVyIGl0IHdha2VzIGZyb20KK29uZSwg
ZWFjaCBmdW5jdGlvbiBvbiB0aGlzIGFibm9ybWFsIGhvb2sgaXMgY2FsbGVkIHdpdGggb25lIGFy
Z3VtZW50Cit3aGljaCB3aWxsIGJlIG9uZSBvZiB0aGUgc3ltYm9scyBAY29kZXtwcmUtc2xlZXB9
IG9yIEBjb2Rle3Bvc3Qtd2FrZX0uCisKK0hhbmRsaW5nIEBjb2Rle3ByZS1zbGVlcH0gZXZlbnRz
IHNob3VsZCBiZSBkb25lIGFzIGZhc3QgYXMgcG9zc2libGUuCitTeXN0ZW1zIG9mdGVuIGdyYW50
IGEgdmVyeSBzaG9ydCBwcmUtc2xlZXAgcHJvY2Vzc2luZyBpbnRlcnZhbCwKK3R5cGljYWxseSBy
YW5naW5nIGJldHdlZW4gMiBhbmQgNSBzZWNvbmRzLiAgVGhlIHN5c3RlbSBtYXkgc2xlZXAgZXZl
biBpZgoreW91ciBwcm9jZXNzaW5nIGlzIG5vdCBjb21wbGV0ZSwgc28gYmUgc3VyZSB5b3UgZG8g
YXMgbGl0dGxlIGFzCitwb3NzaWJsZS4gIEZvciBleGFtcGxlLCB5b3VyIGZ1bmN0aW9uIGNvdWxk
IGNsb3NlIGFjdGl2ZSBjb25uZWN0aW9ucyBvcgorc2VyaWFsIHBvcnRzLgorCitIYW5kbGluZyBA
Y29kZXtwb3N0LXdha2V9IGV2ZW50cyBvZmZlcnMgbW9yZSBsZWV3YXkuICBVc2UgdGhpcywgZm9y
CitleGFtcGxlLCB0byByZWVzdGFibGlzaCBjb25uZWN0aW9ucy4KKworTm90ZTogWW91ciBjb2Rl
LCBvciB0aGUgZnVuY3Rpb25zIGl0IGNhbGxzLCBzaG91bGQgbm90IHJhaXNlIGFueSBzaWduYWxz
CitvciBhbGwgaG9va3Mgd2lsbCBiZSBoYWx0ZWQuICBZb3UgY2FuIHdyYXAgeW91ciBjb2RlIGlu
IGEKK0Bjb2Rle2NvbmRpdGlvbi1jYXNlfSBibG9jayAoQHB4cmVme0Vycm9yc30pLgorQGVuZCBk
ZWZvcHQKKwogQG5vZGUgRmlsZSBOb3RpZmljYXRpb25zCiBAc2VjdGlvbiBOb3RpZmljYXRpb25z
IG9uIEZpbGUgQ2hhbmdlcwogQGNpbmRleCBmaWxlIG5vdGlmaWNhdGlvbnMKZGlmZiAtLWdpdCBh
L2V0Yy9ORVdTIGIvZXRjL05FV1MKaW5kZXggOWU1YWM3OTY2OTcuLmVlMzQ5NWExNjIyIDEwMDY0
NAotLS0gYS9ldGMvTkVXUworKysgYi9ldGMvTkVXUwpAQCAtMzUzNSw2ICszNTM1LDIyIEBAIE9u
IEdOVS9MaW51eCBzeXN0ZW1zLCBzaGVsbCBleHRlbnNpb25zIG9yIHNpbWlsYXIgaGVscGVycyBz
dWNoIGFzCiA8aHR0cHM6Ly9leHRlbnNpb25zLmdub21lLm9yZy9leHRlbnNpb24vMzA3L2Rhc2gt
dG8tZG9jay8+IGFuZAogPGh0dHBzOi8vd2lraS51YnVudHUuY29tL1VuaXR5L0xhdW5jaGVyQVBJ
Pi4KIAorKysrCisqKiBOZXcgcGFja2FnZSAnc3lzdGVtLXNsZWVwJy4KK1RoaXMgcGFja2FnZSBw
cm92aWRlcyBwbGF0Zm9ybS1uZXV0cmFsIGludGVyZmFjZXMgdG8gYmxvY2sgeW91ciBzeXN0ZW0K
K2Zyb20gZW50ZXJpbmcgaWRsZSBzbGVlcCBhbmQgYSBob29rIHRvIHByb2Nlc3MgcHJlLXNsZWVw
IGFuZCBwb3N0LXdha2UKK2V2ZW50cy4gIFlvdSBjYW4gdXNlIHRoaXMgdG8gYXZvaWQgdGhlIHN5
c3RlbSBlbnRlcmluZyBhbiBpZGxlIHNsZWVwCitzdGF0ZSBhbmQgaW50ZXJydXB0aW5nIGEgbG9u
Zy1ydW5uaW5nIHByb2Nlc3MgZHVlIHRvIGxhY2sgb2YgdXNlcgorYWN0aXZpdHkuICBUaGUgc2xl
ZXAgZXZlbnQgaG9vayBsZXRzIHlvdSwgZm9yIGV4YW1wbGUgY2xvc2UgZXh0ZXJuYWwKK2Nvbm5l
Y3Rpb25zIG9yIHNlcmlhbCBwb3J0cyBiZWZvcmUgc2xlZXBpbmcsIGFuZCByZWVzdGFibGlzaCB0
aGVtIHdoZW4KK3RoZSBzeXN0ZW0gd2FrZXMgdXAuCisKK1N1cHBvcnRlZCBjYXBhYmxlIHN5c3Rl
bXMgYXJlIEdOVS9MaW51eCB2aWEgRC1CdXMgKHNsZWVwIGJsb2NraW5nIGFuZAorZXZlbnRzIHJl
cXVpcmUgdGhlIG9yZy5mcmVlZGVza3RvcC5sb2dpbjEgc2VydmljZSwgZGlzcGxheSBzbGVlcAor
YmxvY2tpbmcgcmVxdWlyZXMgb3JnLmZyZWVkZXNrdG9wLlNjcmVlbnNhdmVyIHNlcnZpY2UpLCBt
YWNPUworKHNsZWVwL2Rpc3BsYXkgYmxvY2tpbmcgcmVxdWlyZXMgMTAuOSssIHNsZWVwIGV2ZW50
cyBhcmUgc3VwcG9ydGVkIG9uCithbGwgdmVyc2lvbnMpLCBNUy1XaW5kb3dzIChzbGVlcCBibG9j
a2luZyBpcyBzdXBwb3J0ZWQgb24gYWxsIHZlcnNpb25zLAorc2xlZXAgZXZlbnRzIHJlcXVpcmUg
OCspLgogDAogKiBJbmNvbXBhdGlibGUgTGlzcCBDaGFuZ2VzIGluIEVtYWNzIDMxLjEKIApkaWZm
IC0tZ2l0IGEvbGlzcC9iaW5kaW5ncy5lbCBiL2xpc3AvYmluZGluZ3MuZWwKaW5kZXggYzBjMmNm
MTA5OTYuLjdjZDY3OTZlOGNiIDEwMDY0NAotLS0gYS9saXNwL2JpbmRpbmdzLmVsCisrKyBiL2xp
c3AvYmluZGluZ3MuZWwKQEAgLTE3NTEsNiArMTc1MSwyMiBAQCBjdGwteC00LW1hcAogKGRlZmlu
ZS1rZXkgc3BlY2lhbC1ldmVudC1tYXAgW3NpZ3VzcjFdICdpZ25vcmUpCiAoZGVmaW5lLWtleSBz
cGVjaWFsLWV2ZW50LW1hcCBbc2lndXNyMl0gJ2lnbm9yZSkKIAorOzsgU3lzdGVtIHNsZWVwIGV2
ZW50cworKGRlZmN1c3RvbSBzbGVlcC1ldmVudC1mdW5jdGlvbnMgbmlsCisgICJBYm5vcm1hbCBo
b29rIGludm9rZWQgb24gc2xlZXAgZXZlbnRzLgorRWFjaCBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0
aCB0aGUgZXZlbnQuIgorICA6dHlwZSAnaG9vaworICA6Z3JvdXAgJ2Rpc3BsYXkKKyAgOnZlcnNp
b24gIjMxLjEiKQorCisoZGVmdW4gc2xlZXAtZXZlbnQtaGFuZGxlciAoZXZlbnQpCisgICJgc2xl
ZXAtZXZlbnQnIEVWRU5UIGhhbmRsZXIuIgorICAoZGVjbGFyZSAoY29tcGxldGlvbiBpZ25vcmUp
KQorICAoaW50ZXJhY3RpdmUgImUiKQorICAocnVuLWhvb2std2l0aC1hcmdzICdzbGVlcC1ldmVu
dC1mdW5jdGlvbnMgZXZlbnQpKQorCisoa2V5bWFwLXNldCBzcGVjaWFsLWV2ZW50LW1hcCAiPHNs
ZWVwLWV2ZW50PiIgIydzbGVlcC1ldmVudC1oYW5kbGVyKQorCiA7OyBUZXh0IGNvbnZlcnNpb24K
IChkZWZpbmUta2V5IGdsb2JhbC1tYXAgW3RleHQtY29udmVyc2lvbl0gJ2FuYWx5emUtdGV4dC1j
b252ZXJzaW9uKQogCmRpZmYgLS1naXQgYS9saXNwL3N5c3RlbS1zbGVlcC5lbCBiL2xpc3Avc3lz
dGVtLXNsZWVwLmVsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jYjhj
NTk5MTRkZgotLS0gL2Rldi9udWxsCisrKyBiL2xpc3Avc3lzdGVtLXNsZWVwLmVsCkBAIC0wLDAg
KzEsNDc0IEBACis7Ozsgc3lzdGVtLXNsZWVwLmVsIC0tLSBTeXN0ZW0gc2xlZXAvd2FrZSBldmVu
dCBtYW5hZ2VtZW50IC0qLSBsZXhpY2FsLWJpbmRpbmc6IHQgLSotCisKKzs7IENvcHlyaWdodCAo
QykgMjAyNS0yMDI2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCis7OyBBdXRob3I6
IFN0ZXBoYW5lIE1hcmtzIDxzaGlwbWludHNAZ21haWwuY29tPgorOzsgTWFpbnRhaW5lcjogZW1h
Y3MtZGV2ZWxAZ251Lm9yZworOzsgS2V5d29yZHM6IGNvbnZlbmllbmNlCis7OyBQYWNrYWdlLVJl
cXVpcmVzOiAoKGVtYWNzICIzMS4xIikpCisKKzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBF
bWFjcy4KKworOzsgR05VIEVtYWNzIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vciBtb2RpZnkKKzs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7OyB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorOzsgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworOzsgR05VIEVtYWNzIGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7OyBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorOzsg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZQorOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor
OzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKzs7IGFsb25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUgPGh0dHBz
Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworOzs7IENvbW1lbnRhcnk6CisKKzs7IENhbGwg
YHN5c3RlbS1zbGVlcC1ibG9jay1zbGVlcCcgdG8gaW5oaWJpdCBzeXN0ZW0td2lkZSBpZGxlIHNs
ZWVwLgorOzsgSWRsZSBzbGVlcCBpcyB0eXBpY2FsbHkgdHJpZ2dlcmVkIHdoZW4gdGhlIHN5c3Rl
bSBkb2VzIG5vdCBkZXRlY3QKKzs7IHVzZXIgYWN0aXZpdHkgYW5kIGlzIGluZGVwZW5kZW50IG9m
IGFueSBwcm9jZXNzaW5nIHRoYXQgbWF5IGJlIG9uCis7OyBnb2luZy4gIFRoaXMgZnVuY3Rpb24g
aXMgdXNlZnVsIHRvIGJsb2NrIGlkbGUgc2xlZXAgZm9yIGxvbmctcnVubmluZworOzsgb3BlcmF0
aW9ucywgZm9yIGV4YW1wbGUsIHdoZW4gYSBjb21waWxhdGlvbiBpcyBydW5uaW5nLiAgVGhpcwor
OzsgZnVuY3Rpb24gcmV0dXJucyBhIHRva2VuIHdoaWNoIHlvdSBtdXN0IHVzZSB0byB1bmJsb2Nr
IHRoaXMgcmVxdWVzdC4KKzs7Cis7OyBDYWxsIGBzeXN0ZW0tc2xlZXAtdW5ibG9jay1zbGVlcCcg
d2l0aCB0aGUgdG9rZW4gZnJvbQorOzsgYHN5c3RlbS1zbGVlcC1ibG9jay1zbGVlcCcgdG8gdW5i
bG9jayBzeXN0ZW0td2lkZSBpZGxlIHNsZWVwIGZvciB0aGlzCis7OyByZXF1ZXN0LiAgVGhlcmUg
bWF5IGJlIG90aGVyIGFjdGl2ZSByZXF1ZXN0cyB3aGljaCB3aWxsIHByZXZlbnQgdGhlCis7OyBz
eXN0ZW0gZnJvbSBzbGVlcGluZy4KKzs7Cis7OyBUaGUgZnVuY3Rpb24gYHN5c3RlbS1zbGVlcC1z
bGVlcC1ibG9ja2VkLXAnIHdpbGwgdGVsbCB5b3UgaWYKKzs7IGBzeXN0ZW0tc2xlZXAnIGhhcyBh
bnkgYWN0aXZlIHN5c3RlbSBzbGVlcCBibG9ja3MuCis7OworOzsgTm90ZTog4oCLV2hlbiB0aGUg
RW1hY3MgcHJvY2VzcyBkaWVzLCBibG9ja3MgYXJlIHJlbGVhc2VkIG9uIGFsbAorOzsgcGxhdGZv
cm1zLgorOzsKKzs7IFlvdSBjYW4gcmVnaXN0ZXIgZnVuY3Rpb25zIG9uIHRoZSBhYm5vcm1hbCBo
b29rCis7OyBgc3lzdGVtLXNsZWVwLWV2ZW50LWZ1bmN0aW9ucycuICBFYWNoIGZ1bmN0aW9uIHdp
bGwgYmUgY2FsbGVkIHdoZW4KKzs7IHRoZSBzeXN0ZW0gaXMgcHJlcGFyaW5nIGZvciBzbGVlcCBh
bmQgd2hlbiB0aGUgc3lzdGVtIHdha2VzIGZyb20KKzs7IHNsZWVwLiAgVGhlc2UgZnVuY3Rpb25z
IGFyZSB1c2VmdWwgd2hlbiB5b3Ugd2FudCB0byBjbG9zZSAoYW5kCis7OyBwb3RlbnRpYWxseSBy
ZW9wZW4pIGV4dGVybmFsIGNvbm5lY3Rpb25zIG9yIHNlcmlhbCBwb3J0cy4KKzs7Cis7OyBPbiBz
dXBwb3J0ZWQgR05VL0xpbnV4IHN5c3RlbXMsIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyB2aWEgRC1C
dXMgdG8KKzs7IGluaGliaXQgaWRsZSBzbGVlcCwga2VlcCB0aGUgZGlzcGxheSBhY3RpdmUsIGFu
ZCBmb3J3YXJkIGV2ZW50cyBmcm9tCis7OyBsb2dpbmQgZm9yIHN5c3RlbSBzbGVlcCBldmVudHMu
Cis7OworOzsgT24gbWFjT1MgYW5kIE1TLVdpbmRvd3MsIG5hdGl2ZSBBUElzIGFyZSB1c2VkIHRv
IGJsb2NrIGlkbGUgc2xlZXAsCis7OyBrZWVwIHRoZSBkaXNwbGF5IGFjdGl2ZSwgYW5kIHByb3Zp
ZGUgc2xlZXAgZXZlbnQgbm90aWZpY2F0aW9ucy4KKzs7Cis7OyBFeHRlcm5hbGx5IHRvIEVtYWNz
LCB0aGVyZSBhcmUgc3lzdGVtIHV0aWxpdHkgZnVuY3Rpb25zIHRoYXQgeW91IGNhbgorOzsgdXNl
IHRvIGluc3BlY3QgYWxsIHByb2Nlc3NlcyBvbiB5b3VyIHN5c3RlbSB0aGF0IG1pZ2h0IGJlIGJs
b2NraW5nIGl0Cis7OyBmcm9tIHNsZWVwaW5nLgorOzsKKzs7IE9uIEQtQnVzIHN5c3RlbXMsIHlv
dSBjYW4gdXNlIHRoZSBjb21tYW5kczoKKzs7Cis7OyAgIHN5c3RlbWQtaW5oaWJpdCAtLWxpc3QK
Kzs7IG9yCis7OyAgIGRidXMtc2VuZCAtLXN5c3RlbSAtLXByaW50LXJlcGx5IC0tZGVzdD1vcmcu
ZnJlZWRlc2t0b3AubG9naW4xIFwKKzs7ICAgL29yZy9mcmVlZGVza3RvcC9sb2dpbjEgXAorOzsg
ICBvcmcuZnJlZWRlc2t0b3AubG9naW4xLk1hbmFnZXIuTGlzdEluaGliaXRvcnMKKzs7Cis7OyBO
b3RlOiBZb3UgY2FuIGZpbmQgdGhlIHNsZWVwL3NodXRkb3duIGRlbGF5IEluaGliaXREZWxheU1h
eFVTZWMgaW4KKzs7IHRoZSBmaWxlIGxvZ2luZC5jb25mKDUpIHdoaWNoIHR5cGljYWxseSBkZWZh
dWx0cyB0byA1IHNlY29uZHMuCis7OworOzsgT24gbWFjT1MsIHlvdSBjYW4gdXNlIHRoZSBjb21t
YW5kOgorOzsKKzs7ICAgcG1zZXQgLWcgYXNzZXJ0aW9ucworOzsKKzs7IE9uIE1TLVdpbmRvd3Ms
IHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB3aGljaCBtYXkgbmVlZCB0byBiZQor
OzsgcnVuIGFzIGFuIGFkbWluaXN0cmF0b3I6Cis7OworOzsgICBwb3dlcmNmZyAtcmVxdWVzdHMK
KworOzs7IENvZGU6CisKKyhyZXF1aXJlICdkYnVzKQorCisoZGVmZ3JvdXAgc3lzdGVtLXNsZWVw
IG5pbAorICAiU3lzdGVtIHNsZWVwL3dha2UgYmxvY2tpbmcgYW5kIGV2ZW50IG1hbmFnZW1lbnQu
IgorICA6Z3JvdXAgJ2NvbnZlbmllbmNlCisgIDp2ZXJzaW9uICIzMS4xIikKKworKGRlZnZhciBz
eXN0ZW0tc2xlZXAtLWJhY2stZW5kIG5pbAorICAiR2VuZXJpYyBzbGVlcC13YWtlIG1ldGhvZCBz
eXN0ZW0gZGlzcGF0Y2hlci4iKQorCisoZGVmdmFyIHN5c3RlbS1zbGVlcC0tc2xlZXAtYmxvY2st
dG9rZW5zIG5pbAorICAiQSBsaXN0IG9mIGFjdGl2ZSBzbGVlcC1ibG9jayB0b2tlbnMuCitJZiBu
b24tbmlsLCBpZGxlIHNsZWVwIGlzIGluaGliaXRlZCBieSBgc3lzdGVtLXNsZWVwJy4iKQorCis7
OzsjIyNhdXRvbG9hZAorKGRlZmN1c3RvbSBzeXN0ZW0tc2xlZXAtZXZlbnQtZnVuY3Rpb25zIG5p
bAorICAiQWJub3JtYWwgaG9vayBpbnZva2VkIG9uIHN5c3RlbSBzbGVlcCBldmVudHMuCitFYWNo
IGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIG9uZSBhcmd1bWVudCBFVkVOVCwgYSBzbGVlcCBldmVu
dC4gIEVWRU5UCitzdGF0ZSBjYW4gYmUgcmV0cmlldmVkIHZpYSBcXCtgKHNsZWVwLWV2ZW50LXN0
YXRlIEVWRU5UKScuICBJdCB3aWxsIGJlCitvbmUgb2YgdGhlIHN5bWJvbHMgXFwrYHByZS1zbGVl
cCcgb3IgXFwrYHBvc3Qtd2FrZScuCisKK0hhbmRsaW5nIFxcK2BwcmUtc2xlZXAnIGV2ZW50cyBz
aG91bGQgYmUgZG9uZSBhcyBmYXN0IGFzIHBvc3NpYmxlLiAgU3lzdGVtcworb2Z0ZW4gZ3JhbnQg
YSB2ZXJ5IHNob3J0IHByZS1zbGVlcCBwcm9jZXNzaW5nIGludGVydmFsLCB0eXBpY2FsbHkKK3Jh
bmdpbmcgYmV0d2VlbiAyIGFuZCA1IHNlY29uZHMuICBUaGUgc3lzdGVtIG1heSBzbGVlcCBldmVu
IGlmIHlvdXIKK3Byb2Nlc3NpbmcgaXMgbm90IGNvbXBsZXRlLCBzbyBiZSBzdXJlIHlvdSBkbyBh
cyBsaXR0bGUgYXMgcG9zc2libGUuCitGb3IgZXhhbXBsZSwgeW91ciBmdW5jdGlvbiBjb3VsZCBj
bG9zZSBhY3RpdmUgY29ubmVjdGlvbnMgb3Igc2VyaWFsCitwb3J0cy4KKworSGFuZGxpbmcgXFwr
YHBvc3Qtd2FrZScgZXZlbnRzIG9mZmVycyBtb3JlIGxlZXdheS4gIFlvdXIgZnVuY3Rpb24gY291
bGQKK3JlZXN0YWJsaXNoIGNvbm5lY3Rpb25zLgorCitOb3RlOiBZb3VyIGNvZGUsIG9yIHRoZSBm
dW5jdGlvbnMgaXQgY2FsbHMsIHNob3VsZCBub3QgcmFpc2UgYW55IHNpZ25hbHMKK29yIGFsbCBo
b29rcyB3aWxsIGJlIGhhbHRlZCBwcmV2ZW50aW5nIG90aGVyIGhvb2sgZnVuY3Rpb25zIGZyb20K
K2NsZWFuaW5nIHVwIG9yIHdha2luZyB1cC4gIFlvdSBjYW4gd3JhcCB5b3VyIGNvZGUgaW4gYSBg
Y29uZGl0aW9uLWNhc2UnCitibG9jay4iCisgIDp0eXBlICdob29rCisgIDp2ZXJzaW9uICIzMS4x
IikKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biBzeXN0ZW0tc2xlZXAtYmxvY2stc2xlZXAgKCZv
cHRpb25hbCB3aHkgYWxsb3ctZGlzcGxheS1zbGVlcCkKKyAgIkluaGliaXQgc3lzdGVtIGlkbGUg
c2xlZXAuCitPcHRpb25hbCBXSFkgaXMgYSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIGEgc2xlZXAg
YmxvY2sgdG8gc3lzdGVtIHV0aWxpdHkKK2NvbW1hbmRzIHRoYXQgaW5zcGVjdCBzeXN0ZW0td2lk
ZSBibG9ja3MuICBXSFkgZGVmYXVsdHMgdG8gXCJFbWFjc1wiLgorCitPcHRpb25hbCBBTExPVy1E
SVNQTEFZLVNMRUVQLCB3aGVuIG5vbi1uaWwsIGFsbG93cyB0aGUgZGlzcGxheSB0byBzbGVlcAor
b3IgYSBzY3JlZW4gc2F2ZXIgdG8gcnVuIHdoaWxlIHRoZSBzeXN0ZW0gaWRsZSBzbGVlcCBpcyBi
bG9ja2VkLiAgVGhlCitkZWZhdWx0IGlzIHRvIGtlZXAgdGhlIGRpc3BsYXkgYWN0aXZlLgorCitS
ZXR1cm4gYSBzbGVlcCBibG9ja2luZyB0b2tlbi4gIFlvdSBtdXN0IHJldGFpbiB0aGlzIHZhbHVl
IGFuZCBwcm92aWRlCitpdCB0byBgc3lzdGVtLXNsZWVwLXVuYmxvY2stc2xlZXAnIHRvIHVuYmxv
Y2sgaXRzIGFzc29jaWF0ZWQgYmxvY2suCisKK1JldHVybiBuaWwgaWYgc3lzdGVtIHNsZWVwIGNh
bm5vdCBiZSBpbmhpYml0ZWQuIgorICAod2hlbiBzeXN0ZW0tc2xlZXAtLWJhY2stZW5kCisgICAg
KHN5c3RlbS1zbGVlcC0tYmxvY2stc2xlZXAgKG9yIHdoeSAiRW1hY3MiKSBhbGxvdy1kaXNwbGF5
LXNsZWVwKSkpCisKKyhkZWZ1biBzeXN0ZW0tc2xlZXAtdW5ibG9jay1zbGVlcCAodG9rZW4pCisg
ICJVbmJsb2NrIHRoZSBzeXN0ZW0gc2xlZXAgYmxvY2sgYXNzb2NpYXRlZCB3aXRoIFRPS0VOLgor
UmV0dXJuIG5vbi1uaWwgVE9LRU4gd2FzIHVuYmxvY2tlZCwgb3IgbmlsIGlmIG5vdC4iCisgICh3
aGVuIHN5c3RlbS1zbGVlcC0tYmFjay1lbmQKKyAgICAoc3lzdGVtLXNsZWVwLS11bmJsb2NrLXNs
ZWVwIHRva2VuKSkpCisKKzs7OyMjI2F1dG9sb2FkCisoZGVmbWFjcm8gd2l0aC1zeXN0ZW0tc2xl
ZXAtYmxvY2sgKHdoeSBhbGxvdy1kaXNwbGF5LXNsZWVwICZyZXN0IGJvZHkpCisgICJFeGVjdXRl
IHRoZSBmb3JtcyBpbiBCT0RZIHdoaWxlIGJsb2NraW5nIHN5c3RlbSBzbGVlcC4KK1dIWSBpcyBh
IHN0cmluZyB0aGF0IGlkZW50aWZpZXMgYSBzbGVlcCBibG9jay4KK0FMTE9XLURJU1BMQVktU0xF
RVAsIHdoZW4gbm9uLW5pbCwgYWxsb3dzIHRoZSBkaXNwbGF5IHRvIHNsZWVwCitvciBhIHNjcmVl
biBzYXZlciB0byBydW4gd2hpbGUgdGhlIHN5c3RlbSBpZGxlIHNsZWVwIGlzIGJsb2NrZWQuCitU
aGUgYmxvY2sgaXMgdW5ibG9ja2VkIHdoZW4gQk9EWSBjb21wbGV0ZXMuIgorICAoZGVjbGFyZSAo
aW5kZW50IDEpIChkZWJ1ZyB0KSkKKyAgKGxldCAoKHRva2VuIChtYWtlLXN5bWJvbCAiLS1zbGVl
cC10b2tlbi0tIikpKQorICAgIGAobGV0ICgoLHRva2VuIChzeXN0ZW0tc2xlZXAtYmxvY2stc2xl
ZXAgLHdoeSAsYWxsb3ctZGlzcGxheS1zbGVlcCkpKQorICAgICAgICh1bndpbmQtcHJvdGVjdAor
ICAgICAgICAgICAocHJvZ24KKyAgICAgICAgICAgICAsQGJvZHkpCisgICAgICAgICAoc3lzdGVt
LXNsZWVwLXVuYmxvY2stc2xlZXAgLHRva2VuKSkpKSkKKworKGRlZnVuIHN5c3RlbS1zbGVlcC11
bmJsb2NrLWFsbC1zbGVlcC1ibG9ja3MgKCkKKyAgIlVuYmxvY2sgYWxsIGBzeXN0ZW0tc2xlZXAn
IGJsb2Nrcy4iCisgICh3aGlsZSBzeXN0ZW0tc2xlZXAtLXNsZWVwLWJsb2NrLXRva2VucworICAg
IChzeXN0ZW0tc2xlZXAtdW5ibG9jay1zbGVlcCAoY2FyIHN5c3RlbS1zbGVlcC0tc2xlZXAtYmxv
Y2stdG9rZW5zKSkpKQorCis7OzsjIyNhdXRvbG9hZAorKGRlZnVuIHN5c3RlbS1zbGVlcC1zbGVl
cC1ibG9ja2VkLXAgKCkKKyAgIlJldHVybiBub24tbmlsIGlmIHRoZXJlIGFyZSBhY3RpdmUgc2xl
ZXAgYmxvY2tzLiIKKyAgKGFuZCBzeXN0ZW0tc2xlZXAtLWJhY2stZW5kCisgICAgICAgc3lzdGVt
LXNsZWVwLS1zbGVlcC1ibG9jay10b2tlbnMpKQorCisMCis7OyBJbnRlcm5hbCBpbXBsZW1lbnRh
dGlvbi4KKworKGRlZnVuIHN5c3RlbS1zbGVlcC1kaXNhYmxlICgpCisgICJVbmJsb2NrIGFsbCBg
c3lzdGVtLXNsZWVwJyBibG9ja3MuIgorICAod2hlbiBzeXN0ZW0tc2xlZXAtLWJhY2stZW5kCisg
ICAgKHN5c3RlbS1zbGVlcC11bmJsb2NrLWFsbC1zbGVlcC1ibG9ja3MpCisgICAgKHN5c3RlbS1z
bGVlcC0tZGlzYWJsZSkKKyAgICAoc2V0cSBzeXN0ZW0tc2xlZXAtLWJhY2stZW5kIG5pbCkpKQor
CisoZGVmdW4gc3lzdGVtLXNsZWVwLS1zZXQtYmFjay1lbmQgKCkKKyAgIkRldGVybWluZSBzbGVl
cC93YWtlIGhvc3Qgc3lzdGVtIHR5cGUuIgorICA7OyBPcmRlciBtYXR0ZXJzIHRvIGFjY29tbW9k
YXRlIHRoZSBjYXNlcyB3aGVyZSBhbiBOUyBvciBNUy1XaW5kb3dzCisgIDs7IGJ1aWxkIGhhdmUg
dGhlIGRidXMgZmVhdHVyZS4KKyAgKHNldHEgc3lzdGVtLXNsZWVwLS1iYWNrLWVuZAorICAgICAg
ICAoY29uZCAoKGZlYXR1cmVwICducykgJ25zKQorICAgICAgICAgICAgICAoKGZlYXR1cmVwICd3
MzIpICd3MzIpCisgICAgICAgICAgICAgICgoYW5kIChmZWF0dXJlcCAnZGJ1c2JpbmQpCisgICAg
ICAgICAgICAgICAgICAgIChtZW1iZXIgIm9yZy5mcmVlZGVza3RvcC5sb2dpbjEiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGRidXMtbGlzdC1hY3RpdmF0YWJsZS1uYW1lcyA6c3lzdGVt
KSkpCisgICAgICAgICAgICAgICAnZGJ1cykKKyAgICAgICAgICAgICAgKHQgbmlsKSkpKQorCiso
Y2wtZGVmZ2VuZXJpYyBzeXN0ZW0tc2xlZXAtLWVuYWJsZSAoKQorICAiRW5hYmxlIHRoZSBgc3lz
dGVtLXNsZWVwJyBiYWNrIGVuZC4KK1JldHVybiB0IGlmIHRoZSBiYWNrIGVuZCBpcyBpbml0aWFs
aXplZCwgb3IgbmlsLiIpCisKKyhjbC1kZWZnZW5lcmljIHN5c3RlbS1zbGVlcC0tZGlzYWJsZSAo
KQorICAiRGlzYWJsZSB0aGUgc2xlZXAvd2FrZSBiYWNrIGVuZC4iKQorCisoY2wtZGVmZ2VuZXJp
YyBzeXN0ZW0tc2xlZXAtLWJsb2NrLXNsZWVwICh3aHkgYWxsb3ctZGlzcGxheS1zbGVlcCkKKyAg
IkluaGliaXQgc3lzdGVtIGlkbGUgc2xlZXAuCitXSFkgaXMgYSBzdHJpbmcgdGhhdCBpZGVudGlm
aWVzIGEgc2xlZXAgYmxvY2sgdG8gc3lzdGVtIHV0aWxpdHkgY29tbWFuZHMKK3RoYXQgaW5zcGVj
dCBzeXN0ZW0td2lkZSBibG9ja3MuCitXaGVuIG5vbi1uaWwsIEFMTE9XLURJU1BMQVktU0xFRVAg
YWxsb3dzIHRoZSBkaXNwbGF5IHRvIHNsZWVwIG9yIGEKK3NjcmVlbiBzYXZlciB0byBydW4gd2hp
bGUgdGhlIHN5c3RlbSBpZGxlIHNsZWVwIGlzIGJsb2NrZWQuICBUaGUgZGVmYXVsdAoraXMgdG8g
a2VlcCB0aGUgZGlzcGxheSBhY3RpdmUuCitSZXR1cm4gYSBzbGVlcC1ibG9jayB0b2tlbi4iKQor
CisoY2wtZGVmZ2VuZXJpYyBzeXN0ZW0tc2xlZXAtLXVuYmxvY2stc2xlZXAgKHRva2VuKQorICAi
VW5ibG9jayB0aGUgc3lzdGVtIHNsZWVwIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCBUT0tFTi4KK1Jl
dHVybiBub24tbmlsIFRPS0VOIHdhcyB1bmJsb2NrZWQsIG9yIG5pbCBpZiBub3QuIikKKworKGRl
ZnZhciBzeXN0ZW0tc2xlZXAtLWV2ZW50LWluLXByb2dyZXNzIG5pbCkKKyhkZWZ2YXIgc3lzdGVt
LXNsZWVwLS1ldmVudC1xdWV1ZSBuaWwpCisKKyhkZWZ1biBzeXN0ZW0tc2xlZXAtLXNsZWVwLWV2
ZW50LWZ1bmN0aW9uIChldmVudCkKKyAgIkhhbmRsZSA8c2xlZXAtZXZlbnQ+IHNwZWNpYWwgZXZl
bnRzIGFuZCBhdm9pZCByYWNlcy4iCisgIDs7IFF1ZXVlIGluY29taW5nIGV2ZW50LgorICAoc2V0
cSBzeXN0ZW0tc2xlZXAtLWV2ZW50LXF1ZXVlCisgICAgICAgIChhcHBlbmQgc3lzdGVtLXNsZWVw
LS1ldmVudC1xdWV1ZSAobGlzdCBldmVudCkpKQorICA7OyBJZiBhbiBldmVudCBpcyBhbHJlYWR5
IGluIHByb2dyZXNzLCByZXR1cm4gcmlnaHQgYXdheS4KKyAgOzsgT3RoZXJ3aXNlLCBwcm9jZXNz
IHF1ZXVlZCBldmVudHMuCisgICh3aGlsZSAoYW5kIChub3Qgc3lzdGVtLXNsZWVwLS1ldmVudC1p
bi1wcm9ncmVzcykKKyAgICAgICAgICAgICAgc3lzdGVtLXNsZWVwLS1ldmVudC1xdWV1ZSkKKyAg
ICAobGV0ICgoY3VycmVudC1ldmVudCAocG9wIHN5c3RlbS1zbGVlcC0tZXZlbnQtcXVldWUpKSkK
KyAgICAgIChzZXRxIHN5c3RlbS1zbGVlcC0tZXZlbnQtaW4tcHJvZ3Jlc3MgY3VycmVudC1ldmVu
dCkKKyAgICAgICh1bndpbmQtcHJvdGVjdAorICAgICAgICAgIChydW4taG9vay13aXRoLWFyZ3Mg
J3N5c3RlbS1zbGVlcC1ldmVudC1mdW5jdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGN1cnJlbnQtZXZlbnQpCisgICAgICAgIChzZXRxIHN5c3RlbS1zbGVlcC0tZXZlbnQtaW4t
cHJvZ3Jlc3MgbmlsKSkpKSkKKworDAorOzsgRC1CdXMgc3VwcG9ydC4KKworKGRlZnZhciBzeXN0
ZW0tc2xlZXAtLWRidXMtc2xlZXAtaW5oaWJpdG9yLXR5cGVzICJzbGVlcCIKKyAgIlRoaXMgaXMg
YSBjb2xvbi1zZXBhcmF0ZWQgbGlzdCBvZiBvcHRpb25zLgorVGhlIGRlZmF1bHQgaXMgXCJzbGVl
cFwiIHdoaWNoIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgb3RoZXIgc3VwcG9ydGVkCitgc3lzdGVt
LXNsZWVwJyBwbGF0Zm9ybXMuICBUaGlzIGNvdWxkIGFsc28gYmUKK1wic2xlZXA6c2h1dGRvd25c
Ii4gU2h1dGRvd24gaXMgYXZhaWxhYmxlIG9ubHkgb24gRC1CdXMgc3lzdGVtcy4iKQorCisoZGVj
bGFyZS1mdW5jdGlvbiBkYnVzLS1mZC1jbG9zZSAiZGJ1c2JpbmQuYyIpCisoZGVmdmFyIHN5c3Rl
bS1zbGVlcC0tZGJ1cy1kZWxheS1sb2NrIG5pbCkKKyhkZWZ2YXIgc3lzdGVtLXNsZWVwLS1kYnVz
LXByZS1zbGVlcC1zaWduYWwgbmlsKQorCisoZGVmdW4gc3lzdGVtLXNsZWVwLS1kYnVzLWRlbGF5
LWxvY2sgKG1ha2Utb3ItY2xvc2UpCisgIChjb25kIChtYWtlLW9yLWNsb3NlCisgICAgICAgICAo
aWYgc3lzdGVtLXNsZWVwLS1kYnVzLWRlbGF5LWxvY2sKKyAgICAgICAgICAgICAoZXJyb3IgIkRl
bGF5IGxvY2sgc2hvdWxkIGJlIG5pbCIpCisgICAgICAgICAgIChzZXRxIHN5c3RlbS1zbGVlcC0t
ZGJ1cy1kZWxheS1sb2NrCisgICAgICAgICAgICAgICAgIChkYnVzLWNhbGwtbWV0aG9kCisgICAg
ICAgICAgICAgICAgICA6c3lzdGVtCisgICAgICAgICAgICAgICAgICAib3JnLmZyZWVkZXNrdG9w
LmxvZ2luMSIKKyAgICAgICAgICAgICAgICAgICIvb3JnL2ZyZWVkZXNrdG9wL2xvZ2luMSIKKyAg
ICAgICAgICAgICAgICAgICJvcmcuZnJlZWRlc2t0b3AubG9naW4xLk1hbmFnZXIiCisgICAgICAg
ICAgICAgICAgICAiSW5oaWJpdCIKKyAgICAgICAgICAgICAgICAgIDprZWVwLWZkCisgICAgICAg
ICAgICAgICAgICBzeXN0ZW0tc2xlZXAtLWRidXMtc2xlZXAtaW5oaWJpdG9yLXR5cGVzCisgICAg
ICAgICAgICAgICAgICBkYnVzLXNlcnZpY2UtZW1hY3MKKyAgICAgICAgICAgICAgICAgICJFbWFj
cyBTbGVlcCBFdmVudCBXYXRjaGVyIgorICAgICAgICAgICAgICAgICAgImRlbGF5IikpKSkKKyAg
ICAgICAgKHQKKyAgICAgICAgICh3aGVuIHN5c3RlbS1zbGVlcC0tZGJ1cy1kZWxheS1sb2NrCisg
ICAgICAgICAgIChkYnVzLS1mZC1jbG9zZSBzeXN0ZW0tc2xlZXAtLWRidXMtZGVsYXktbG9jaykK
KyAgICAgICAgICAgKHNldHEgc3lzdGVtLXNsZWVwLS1kYnVzLWRlbGF5LWxvY2sgbmlsKSkpKSkK
KworKGRlZnVuIHN5c3RlbS1zbGVlcC0tZGJ1cy1wcmVwYXJlLWZvci1zbGVlcC1jYWxsYmFjayAo
c2xlZXAtb3Itd2FrZSkKKyAgKGNvbmQgKHNsZWVwLW9yLXdha2UKKyAgICAgICAgIChpbnNlcnQt
c3BlY2lhbC1ldmVudCAnKHNsZWVwLWV2ZW50IHByZS1zbGVlcCkpKQorICAgICAgICAodAorICAg
ICAgICAgKGluc2VydC1zcGVjaWFsLWV2ZW50ICcoc2xlZXAtZXZlbnQgcG9zdC13YWtlKSkpKSkK
KworKGRlZnVuIHN5c3RlbS1zbGVlcC0tZGJ1cy1wcmVwYXJlLWZvci1zbGVlcC13YXRjaGVyICht
YWtlLW9yLWNsb3NlKQorICAoY29uZCAobWFrZS1vci1jbG9zZQorICAgICAgICAgKGlmIHN5c3Rl
bS1zbGVlcC0tZGJ1cy1wcmUtc2xlZXAtc2lnbmFsCisgICAgICAgICAgICAgKGVycm9yICJQcmVw
YXJlRm9yU2xlZXAgd2F0Y2hlciBzaG91bGQgYmUgbmlsIikKKyAgICAgICAgICAgKHNldHEgc3lz
dGVtLXNsZWVwLS1kYnVzLXByZS1zbGVlcC1zaWduYWwKKwkgICAgICAgICAoZGJ1cy1yZWdpc3Rl
ci1zaWduYWwKKyAgICAgICAgICAgICAgICAgIDpzeXN0ZW0KKwkgICAgICAgICAgIm9yZy5mcmVl
ZGVza3RvcC5sb2dpbjEiCisJICAgICAgICAgICIvb3JnL2ZyZWVkZXNrdG9wL2xvZ2luMSIKKwkg
ICAgICAgICAgIm9yZy5mcmVlZGVza3RvcC5sb2dpbjEuTWFuYWdlciIKKwkgICAgICAgICAgIlBy
ZXBhcmVGb3JTbGVlcCIKKwkgICAgICAgICAgIydzeXN0ZW0tc2xlZXAtLWRidXMtcHJlcGFyZS1m
b3Itc2xlZXAtY2FsbGJhY2spKSkpCisgICAgICAgICh0CisgICAgICAgICAoZGJ1cy11bnJlZ2lz
dGVyLW9iamVjdCBzeXN0ZW0tc2xlZXAtLWRidXMtcHJlLXNsZWVwLXNpZ25hbCkKKyAgICAgICAg
IChzZXRxIHN5c3RlbS1zbGVlcC0tZGJ1cy1wcmUtc2xlZXAtc2lnbmFsIG5pbCkpKSkKKworKGRl
ZnVuIHN5c3RlbS1zbGVlcC0tZGJ1cy1wcmVwYXJlLWZvci1zbGVlcC1mdW5jdGlvbiAoZXZlbnQp
CisgIChwY2FzZSAoY2FkciBldmVudCkKKyAgICAoJ3ByZS1zbGVlcAorICAgICAoc3lzdGVtLXNs
ZWVwLS1kYnVzLWRlbGF5LWxvY2sgbmlsKSkKKyAgICAoJ3Bvc3Qtd2FrZQorICAgICAoc3lzdGVt
LXNsZWVwLS1kYnVzLWRlbGF5LWxvY2sgdCkpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tc2xl
ZXAtLWVuYWJsZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChzeXN0ZW0tc2xlZXAtLWJhY2stZW5kIChlcWwgJ2RidXMpKSkKKyAgOzsgT3JkZXIgbWF0dGVy
cy4KKyAgKGFkZC1ob29rICdzeXN0ZW0tc2xlZXAtZXZlbnQtZnVuY3Rpb25zCisgICAgICAgICAg
IydzeXN0ZW0tc2xlZXAtLWRidXMtcHJlcGFyZS1mb3Itc2xlZXAtZnVuY3Rpb24KKyAgICAgICAg
ICA7OyBUaGlzIG11c3QgcnVuIGxhc3QuCisgICAgICAgICAgOTkpCisgIChzeXN0ZW0tc2xlZXAt
LWRidXMtZGVsYXktbG9jayB0KQorICAoc3lzdGVtLXNsZWVwLS1kYnVzLXByZXBhcmUtZm9yLXNs
ZWVwLXdhdGNoZXIgdCkKKyAgdCkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tc2xlZXAtLWRpc2Fi
bGUgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3Rl
bS1zbGVlcC0tYmFjay1lbmQgKGVxbCAnZGJ1cykpKQorICAoc3lzdGVtLXNsZWVwLS1kYnVzLXBy
ZXBhcmUtZm9yLXNsZWVwLXdhdGNoZXIgbmlsKQorICAoc3lzdGVtLXNsZWVwLS1kYnVzLWRlbGF5
LWxvY2sgbmlsKQorICAocmVtb3ZlLWhvb2sgJ3N5c3RlbS1zbGVlcC1ldmVudC1mdW5jdGlvbnMK
KyAgICAgICAgICAgICAgICMnc3lzdGVtLXNsZWVwLS1kYnVzLXByZXBhcmUtZm9yLXNsZWVwLWZ1
bmN0aW9uKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tc2xlZXAtLWJsb2NrLXNsZWVwICh3aHkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3ctZGlzcGxheS1z
bGVlcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udGV4dAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXNsZWVwLS1i
YWNrLWVuZCAoZXFsICdkYnVzKSkpCisgIChsZXQgKChzdWJ0b2tlbnMpKQorICAgIChpZi1sZXQq
ICgoc2xlZXAtY29va2llIChkYnVzLWNhbGwtbWV0aG9kCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDpzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZy5mcmVlZGVz
a3RvcC5sb2dpbjEiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvb3JnL2ZyZWVkZXNr
dG9wL2xvZ2luMSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZy5mcmVlZGVza3Rv
cC5sb2dpbjEuTWFuYWdlciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluaGliaXQi
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDprZWVwLWZkCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN5c3RlbS1zbGVlcC0tZGJ1cy1zbGVlcC1pbmhpYml0b3ItdHlwZXMKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJ1cy1zZXJ2aWNlLWVtYWNzCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdoeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmxv
Y2siKSkpCisgICAgICAgIChwcm9nbgorICAgICAgICAgIChsZXQgKChpbmhpYml0LXF1aXQgdCkp
CisgICAgICAgICAgICAocHVzaCAoY29ucyAnZGJ1cy1pbmhpYml0b3ItbG9jayBzbGVlcC1jb29r
aWUpIHN1YnRva2VucykpCisgICAgICAgICAgKHVubGVzcyBhbGxvdy1kaXNwbGF5LXNsZWVwCisg
ICAgICAgICAgICAoaWYtbGV0KiAoKHNjcmVlbi1jb29raWUKKyAgICAgICAgICAgICAgICAgICAg
ICAgKGRidXMtY2FsbC1tZXRob2QKKyAgICAgICAgICAgICAgICAgICAgICAgIDpzZXNzaW9uCisg
ICAgICAgICAgICAgICAgICAgICAgICAib3JnLmZyZWVkZXNrdG9wLlNjcmVlblNhdmVyIgorICAg
ICAgICAgICAgICAgICAgICAgICAgIi9vcmcvZnJlZWRlc2t0b3AvU2NyZWVuU2F2ZXIiCisgICAg
ICAgICAgICAgICAgICAgICAgICAib3JnLmZyZWVkZXNrdG9wLlNjcmVlblNhdmVyIgorICAgICAg
ICAgICAgICAgICAgICAgICAgIkluaGliaXQiCisgICAgICAgICAgICAgICAgICAgICAgICBkYnVz
LXNlcnZpY2UtZW1hY3MKKyAgICAgICAgICAgICAgICAgICAgICAgICJTY3JlZW4gU2F2ZXIgQmxv
Y2siKSkpCisgICAgICAgICAgICAgICAgKGxldCAoKGluaGliaXQtcXVpdCB0KSkKKyAgICAgICAg
ICAgICAgICAgIChwdXNoIChjb25zICdkYnVzLXNjcmVlbnNhdmVyLWxvY2sgc2NyZWVuLWNvb2tp
ZSkgc3VidG9rZW5zKSkKKyAgICAgICAgICAgICAgKHdhcm4gIlVuYWJsZSB0byBibG9jayB0aGUg
c2NyZWVuIHNhdmVyIikpKQorICAgICAgICAgIChsZXQgKChpbmhpYml0LXF1aXQgdCkpCisgICAg
ICAgICAgICAobGV0ICgodG9rZW4gKGxpc3QgOnN5c3RlbSAnZGJ1cyA6d2h5IHdoeSA6c3VidG9r
ZW5zIHN1YnRva2VucykpKQorICAgICAgICAgICAgICAocHVzaCB0b2tlbiBzeXN0ZW0tc2xlZXAt
LXNsZWVwLWJsb2NrLXRva2VucykKKyAgICAgICAgICAgICAgdG9rZW4pKSkKKyAgICAgICh3YXJu
ICJVbmFibGUgdG8gYmxvY2sgc3lzdGVtIHNsZWVwIikpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0
ZW0tc2xlZXAtLXVuYmxvY2stc2xlZXAgKHRva2VuCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoc3lzdGVtLXNsZWVwLS1iYWNrLWVuZCAoZXFsICdkYnVzKSkpCisKKyAg
KGlmIChtZW1xIHRva2VuIHN5c3RlbS1zbGVlcC0tc2xlZXAtYmxvY2stdG9rZW5zKQorICAgICAg
KHByb2duCisgICAgICAgIChsZXQgKChpbmhpYml0LXF1aXQgdCkpCisgICAgICAgICAgKHNldHEg
c3lzdGVtLXNsZWVwLS1zbGVlcC1ibG9jay10b2tlbnMKKyAgICAgICAgICAgICAgICAocmVtcSB0
b2tlbiBzeXN0ZW0tc2xlZXAtLXNsZWVwLWJsb2NrLXRva2VucykpKQorICAgICAgICAoZG9saXN0
IChzdWJ0b2tlbiAocGxpc3QtZ2V0IHRva2VuIDpzdWJ0b2tlbnMpKQorICAgICAgICAgIChwY2Fz
ZSAoY2FyIHN1YnRva2VuKQorICAgICAgICAgICAgKCdkYnVzLWluaGliaXRvci1sb2NrCisgICAg
ICAgICAgICAgKGRidXMtLWZkLWNsb3NlIChjZHIgc3VidG9rZW4pKSkKKyAgICAgICAgICAgICgn
ZGJ1cy1zY3JlZW5zYXZlci1sb2NrCisgICAgICAgICAgICAgKGRidXMtY2FsbC1tZXRob2QKKyAg
ICAgICAgICAgICAgOnNlc3Npb24KKyAgICAgICAgICAgICAgIm9yZy5mcmVlZGVza3RvcC5TY3Jl
ZW5TYXZlciIKKyAgICAgICAgICAgICAgIi9vcmcvZnJlZWRlc2t0b3AvU2NyZWVuU2F2ZXIiCisg
ICAgICAgICAgICAgICJvcmcuZnJlZWRlc2t0b3AuU2NyZWVuU2F2ZXIiCisgICAgICAgICAgICAg
ICJVbkluaGliaXQiCisgICAgICAgICAgICAgIChjZHIgc3VidG9rZW4pKSkpKQorICAgICAgICB0
KQorICAgICh3YXJuICJVbmtub3duIGBzeXN0ZW0tc2xlZXAnIHNsZWVwIHRva2VuIikKKyAgICBu
aWwpKQorCisMCis7OyBtYWNPUy9HTlVzdGVwIE5TIHN1cHBvcnQuCisKKyhkZWNsYXJlLWZ1bmN0
aW9uIG5zLWJsb2NrLXN5c3RlbS1zbGVlcCAibnNmbnMubSIpCisoZGVjbGFyZS1mdW5jdGlvbiBu
cy11bmJsb2NrLXN5c3RlbS1zbGVlcCAibnNmbnMubSIpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVt
LXNsZWVwLS1lbmFibGUgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoc3lzdGVtLXNsZWVwLS1iYWNrLWVuZCAoZXFsICducykpKQorICB0KQorCisoY2wtZGVm
bWV0aG9kIHN5c3RlbS1zbGVlcC0tZGlzYWJsZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXNsZWVwLS1iYWNrLWVuZCAoZXFsICducykpKQor
ICAoaWdub3JlKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tc2xlZXAtLWJsb2NrLXNsZWVwICh3
aHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3ctZGlzcGxh
eS1zbGVlcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udGV4
dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXNsZWVw
LS1iYWNrLWVuZCAoZXFsICducykpKQorICAoaWYtbGV0KiAoKGNvb2tpZSAobnMtYmxvY2stc3lz
dGVtLXNsZWVwIHdoeSBhbGxvdy1kaXNwbGF5LXNsZWVwKSkKKyAgICAgICAgICAgICh0b2tlbiAo
bGlzdCA6c3lzdGVtICducyA6d2h5IHdoeQorICAgICAgICAgICAgICAgICAgICAgICAgIDp0b2tl
biAoY29ucyAnbnMtc2xlZXAtYmxvY2sgY29va2llKSkpKQorICAgICAgKHByb2duCisgICAgICAg
IChsZXQgKChpbmhpYml0LXF1aXQgdCkpCisgICAgICAgICAgKHB1c2ggdG9rZW4gc3lzdGVtLXNs
ZWVwLS1zbGVlcC1ibG9jay10b2tlbnMpKQorICAgICAgICB0b2tlbikKKyAgICAod2FybiAiVW5h
YmxlIHRvIGJsb2NrIHN5c3RlbSBzbGVlcCIpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tc2xl
ZXAtLXVuYmxvY2stc2xlZXAgKHRva2VuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoc3lzdGVtLXNsZWVwLS1iYWNrLWVuZCAoZXFsICducykpKQorICAoaWYgKG1lbXEg
dG9rZW4gc3lzdGVtLXNsZWVwLS1zbGVlcC1ibG9jay10b2tlbnMpCisgICAgICAocHJvZ24KKyAg
ICAgICAgKGxldCAoKGluaGliaXQtcXVpdCB0KSkKKyAgICAgICAgICAoc2V0cSBzeXN0ZW0tc2xl
ZXAtLXNsZWVwLWJsb2NrLXRva2VucworICAgICAgICAgICAgICAgIChyZW1xIHRva2VuIHN5c3Rl
bS1zbGVlcC0tc2xlZXAtYmxvY2stdG9rZW5zKSkpCisgICAgICAgIChpZiAobnMtdW5ibG9jay1z
eXN0ZW0tc2xlZXAgKGNkciAocGxpc3QtZ2V0IHRva2VuIDp0b2tlbikpKQorICAgICAgICAgICAg
dAorICAgICAgICAgICh3YXJuICJVbmFibGUgdG8gdW5ibG9jayBzeXN0ZW0gc2xlZXAiKQorICAg
ICAgICAgIG5pbCkpCisgICAgKHdhcm4gIlVua25vd24gYHN5c3RlbS1zbGVlcCcgc2xlZXAgdG9r
ZW4iKQorICAgIG5pbCkpCisKKwwKKzs7IE1TLVdpbmRvd3Mgc3VwcG9ydC4KKworKGRlY2xhcmUt
ZnVuY3Rpb24gdzMyLWJsb2NrLXN5c3RlbS1zbGVlcCAidzMyZm5zLmMiKQorKGRlY2xhcmUtZnVu
Y3Rpb24gdzMyLXVuYmxvY2stc3lzdGVtLXNsZWVwICJ3MzJmbnMuYyIpCisoZGVjbGFyZS1mdW5j
dGlvbiB3MzItc3lzdGVtLXNsZWVwLWJsb2NrLWNvdW50ICJ3MzJmbnMuYyIpCisKKyhkZWZ2YXIg
c3lzdGVtLXNsZWVwLS13MzItc2xlZXAtYmxvY2stY291bnQgMCkKKworKGNsLWRlZm1ldGhvZCBz
eXN0ZW0tc2xlZXAtLWVuYWJsZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChzeXN0ZW0tc2xlZXAtLWJhY2stZW5kIChlcWwgJ3czMikpKQorICB0KQorCiso
Y2wtZGVmbWV0aG9kIHN5c3RlbS1zbGVlcC0tZGlzYWJsZSAoJmNvbnRleHQKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXNsZWVwLS1iYWNrLWVuZCAoZXFsICd3
MzIpKSkKKyAgKGlnbm9yZSkpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXNsZWVwLS1ibG9jay1z
bGVlcCAod2h5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93
LWRpc3BsYXktc2xlZXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3Rl
bS1zbGVlcC0tYmFjay1lbmQgKGVxbCAndzMyKSkpCisgIChpZi1sZXQqICgoY29va2llICh3MzIt
YmxvY2stc3lzdGVtLXNsZWVwIGFsbG93LWRpc3BsYXktc2xlZXApKQorICAgICAgICAgICAgKHRv
a2VuIChsaXN0IDpzeXN0ZW0gJ3czMiA6d2h5IHdoeQorICAgICAgICAgICAgICAgICAgICAgICAg
IDp0b2tlbiAoY29ucyAndzMyLXNsZWVwLWJsb2NrIGNvb2tpZSkpKSkKKyAgICAgIChwcm9nbgor
ICAgICAgICAobGV0ICgoaW5oaWJpdC1xdWl0IHQpKQorICAgICAgICAgIChwdXNoIHRva2VuIHN5
c3RlbS1zbGVlcC0tc2xlZXAtYmxvY2stdG9rZW5zKSkKKyAgICAgICAgdG9rZW4pCisgICAgKHdh
cm4gIlVuYWJsZSB0byBibG9jayBzeXN0ZW0gc2xlZXAiKSkpCisKKyhjbC1kZWZtZXRob2Qgc3lz
dGVtLXNsZWVwLS11bmJsb2NrLXNsZWVwICh0b2tlbgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHN5c3RlbS1zbGVlcC0tYmFjay1lbmQgKGVxbCAndzMyKSkpCisgIChp
ZiAobWVtcSB0b2tlbiBzeXN0ZW0tc2xlZXAtLXNsZWVwLWJsb2NrLXRva2VucykKKyAgICAgIChw
cm9nbgorICAgICAgICAobGV0ICgoaW5oaWJpdC1xdWl0IHQpKQorICAgICAgICAgIChzZXRxIHN5
c3RlbS1zbGVlcC0tc2xlZXAtYmxvY2stdG9rZW5zCisgICAgICAgICAgICAgICAgKHJlbXEgdG9r
ZW4gc3lzdGVtLXNsZWVwLS1zbGVlcC1ibG9jay10b2tlbnMpKSkKKyAgICAgICAgKGlmICh3MzIt
dW5ibG9jay1zeXN0ZW0tc2xlZXApCisgICAgICAgICAgICB0CisgICAgICAgICAgKHdhcm4gIlVu
YWJsZSB0byB1bmJsb2NrIHN5c3RlbSBzbGVlcCIpCisgICAgICAgICAgbmlsKSkKKyAgICAod2Fy
biAiVW5rbm93biBgc3lzdGVtLXNsZWVwJyBzbGVlcCB0b2tlbiIpCisgICAgbmlsKSkKKworDAor
OzsgSW5pdGlhbGl6ZSBzeXN0ZW0tc2xlZXAuCisKKyhpZiAoYW5kIChzeXN0ZW0tc2xlZXAtLXNl
dC1iYWNrLWVuZCkKKyAgICAgICAgIChzeXN0ZW0tc2xlZXAtLWVuYWJsZSkpCisgICAgKGFkZC1o
b29rICdzbGVlcC1ldmVudC1mdW5jdGlvbnMgIydzeXN0ZW0tc2xlZXAtLXNsZWVwLWV2ZW50LWZ1
bmN0aW9uKQorICAod2FybiAiYHN5c3RlbS1zbGVlcCcgY291bGQgbm90IGJlIGluaXRpYWxpemVk
IikpCisKKyhwcm92aWRlICdzeXN0ZW0tc2xlZXApCisKKzs7OyBzeXN0ZW0tc2xlZXAuZWwgZW5k
cyBoZXJlCmRpZmYgLS1naXQgYS9zcmMvbnNmbnMubSBiL3NyYy9uc2Zucy5tCmluZGV4IGNmNjg1
NjMwYWI3Li4zZDNkNWVjMWJkZSAxMDA2NDQKLS0tIGEvc3JjL25zZm5zLm0KKysrIGIvc3JjL25z
Zm5zLm0KQEAgLTM4MDUsNiArMzgwNSw4OCBAQCBUaGUgcG9zaXRpb24gaXMgcmV0dXJuZWQgYXMg
YSBjb25zIGNlbGwgKFggLiBZKSBvZiB0aGUKICAgcmV0dXJuIFFuaWw7CiB9CiAKKy8qIEEgdW5p
cXVlIGludGVnZXIgc2xlZXAgYmxvY2sgaWQgYW5kIGEgaGFzaCBtYXAgb2YgaXRzIGlkIHRvIG9w
YXF1ZQorICAgTlNPYmplY3Qgc2xlZXAgYmxvY2sgYWN0aXZpdHkgdG9rZW5zLiAgKi8KK3N0YXRp
YyB1bnNpZ25lZCBpbnQgc2xlZXBfYmxvY2tfaWQgPSAwOworc3RhdGljIE5TTXV0YWJsZURpY3Rp
b25hcnkgKnNsZWVwX2Jsb2NrX21hcCA9IE5VTEw7CisKK0RFRlVOICgibnMtYmxvY2stc3lzdGVt
LXNsZWVwIiwKKyAgICAgICBGbnNfYmxvY2tfc3lzdGVtX3NsZWVwLAorICAgICAgIFNuc19ibG9j
a19zeXN0ZW1fc2xlZXAsCisgICAgICAgMiwgMiwgMCwKKyAgICAgICBkb2M6IC8qIEJsb2NrIHN5
c3RlbSBpZGxlIHNsZWVwLgorV0hZIGlzIGEgc3RyaW5nIHJlYXNvbiBmb3IgdGhlIGJsb2NrLgor
SWYgQUxMT1ctRElTUExBWS1TTEVFUCBpcyBub24tbmlsLCBibG9jayB0aGUgc2NyZWVuIGZyb20g
c2xlZXBpbmcuCitSZXR1cm4gYSB0b2tlbiB0byB1bmJsb2NrIHRoaXMgYmxvY2sgdXNpbmcgYG5z
LXVuYmxvY2stc3lzdGVtLXNsZWVwJywKK29yIG5pbCBpZiB0aGUgYmxvY2sgZmFpbHMuICAqLykK
KyAgKExpc3BfT2JqZWN0IHdoeSwgTGlzcF9PYmplY3QgYWxsb3dfZGlzcGxheV9zbGVlcCkKK3sK
KyAgYmxvY2tfaW5wdXQgKCk7CisKKyAgTlNTdHJpbmcgKnJlYXNvbiA9IEAiRW1hY3MiOworICBp
ZiAoIU5JTFAgKHdoeSkpCisgICAgeworICAgICAgQ0hFQ0tfU1RSSU5HICh3aHkpOworICAgICAg
cmVhc29uID0gW05TU3RyaW5nIHN0cmluZ1dpdGhMaXNwU3RyaW5nOiB3aHldOworICAgIH0KKwor
ICB1bnNpZ25lZCBsb25nIGFjdGl2aXR5X29wdGlvbnMgPQorICAgIE5TQWN0aXZpdHlVc2VySW5p
dGlhdGVkIHwgTlNBY3Rpdml0eUlkbGVTeXN0ZW1TbGVlcERpc2FibGVkOworICBpZiAoTklMUCAo
YWxsb3dfZGlzcGxheV9zbGVlcCkpCisgICAgYWN0aXZpdHlfb3B0aW9ucyB8PSBOU0FjdGl2aXR5
SWRsZURpc3BsYXlTbGVlcERpc2FibGVkOworCisgIE5TUHJvY2Vzc0luZm8gKnByb2Nlc3NJbmZv
ID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dOworICBOU09iamVjdCAqYWN0aXZpdHlfaWQg
PSBuaWw7CisgIGlmIChbcHJvY2Vzc0luZm8gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihi
ZWdpbkFjdGl2aXR5V2l0aE9wdGlvbnM6cmVhc29uOildKQorICAgIGFjdGl2aXR5X2lkID0gW1tO
U1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXQorCQkJICAgICBiZWdpbkFjdGl2aXR5V2l0aE9wdGlv
bnM6IGFjdGl2aXR5X29wdGlvbnMKKwkJCQkJICAgICAgIHJlYXNvbjogcmVhc29uXTsKKyAgdW5i
bG9ja19pbnB1dCAoKTsKKworICBpZiAoIXNsZWVwX2Jsb2NrX21hcCkKKyAgICBzbGVlcF9ibG9j
a19tYXAgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6IDI1
XTsKKworICBpZiAoYWN0aXZpdHlfaWQpCisgICAgeworICAgICAgW3NsZWVwX2Jsb2NrX21hcCBz
ZXRPYmplY3Q6IGFjdGl2aXR5X2lkCisJCQkgIGZvcktleTogW05TTnVtYmVyIG51bWJlcldpdGhJ
bnQ6ICsrc2xlZXBfYmxvY2tfaWRdXTsKKyAgICAgIHJldHVybiBtYWtlX2ZpeG51bSAoc2xlZXBf
YmxvY2tfaWQpOworICAgIH0KKyAgZWxzZQorICAgIHJldHVybiBRbmlsOworfQorCitERUZVTiAo
Im5zLXVuYmxvY2stc3lzdGVtLXNsZWVwIiwKKyAgICAgICBGbnNfdW5ibG9ja19zeXN0ZW1fc2xl
ZXAsCisgICAgICAgU25zX3VuYmxvY2tfc3lzdGVtX3NsZWVwLAorICAgICAgIDEsIDEsIDAsCisg
ICAgICAgZG9jOiAvKiBVbmJsb2NrIHN5c3RlbSBpZGxlIHNsZWVwLgorVE9LRU4gaXMgYW4gb2Jq
ZWN0IHJldHVybmVkIGJ5IGBucy1ibG9jay1zeXN0ZW0tc2xlZXAnLgorUmV0dXJuIG5vbi1uaWwg
aWYgdGhlIFRPS0VOIGJsb2NrIHdhcyB1bmJsb2NrZWQuICAqLykKKyAgKExpc3BfT2JqZWN0IHRv
a2VuKQoreworICBibG9ja19pbnB1dCAoKTsKKyAgTGlzcF9PYmplY3QgcmVzID0gUW5pbDsKKyAg
Q0hFQ0tfRklYTkFUICh0b2tlbik7CisgIGlmIChzbGVlcF9ibG9ja19tYXApCisgICAgeworICAg
ICAgTlNOdW1iZXIgKmtleSA9IFtOU051bWJlciBudW1iZXJXaXRoSW50OiBYRklYTkFUICh0b2tl
bildOworICAgICAgTlNPYmplY3QgKmFjdGl2aXR5X2lkID0gW3NsZWVwX2Jsb2NrX21hcCBvYmpl
Y3RGb3JLZXk6IGtleV07CisgICAgICBpZiAoYWN0aXZpdHlfaWQpCisJeworCSAgTlNQcm9jZXNz
SW5mbyAqcHJvY2Vzc0luZm8gPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb107CisJICBpZiAo
W3Byb2Nlc3NJbmZvIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZW5kQWN0aXZpdHk6KV0p
CisJICAgIHsKKwkgICAgICBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGVuZEFjdGl2aXR5
OiBhY3Rpdml0eV9pZF07CisJICAgICAgcmVzID0gUXQ7CisJICAgIH0KKwkgIFtzbGVlcF9ibG9j
a19tYXAgcmVtb3ZlT2JqZWN0Rm9yS2V5OiBrZXldOworCX0KKyAgICB9CisgIHVuYmxvY2tfaW5w
dXQgKCk7CisgIHJldHVybiByZXM7Cit9CisKICNpZmRlZiBOU19JTVBMX0NPQ09BCiAKIERFRlVO
ICgibnMtc2VuZC1pdGVtcyIsCkBAIC00MDkxLDYgKzQxNzMsOCBAQCAtIChMaXNwX09iamVjdCls
aXNwU3RyaW5nCiAgIGRlZnN1YnIgKCZTbnNfYmFkZ2UpOwogICBkZWZzdWJyICgmU25zX3JlcXVl
c3RfdXNlcl9hdHRlbnRpb24pOwogICBkZWZzdWJyICgmU25zX3Byb2dyZXNzX2luZGljYXRvcik7
CisgIGRlZnN1YnIgKCZTbnNfYmxvY2tfc3lzdGVtX3NsZWVwKTsKKyAgZGVmc3ViciAoJlNuc191
bmJsb2NrX3N5c3RlbV9zbGVlcCk7CiAjaWZkZWYgTlNfSU1QTF9DT0NPQQogICBkZWZzdWJyICgm
U25zX3NlbmRfaXRlbXMpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvbnN0ZXJtLm0gYi9zcmMv
bnN0ZXJtLm0KaW5kZXggYzg1MmI3MGJlNzQuLmNmNzNjNzJhNmI0IDEwMDY0NAotLS0gYS9zcmMv
bnN0ZXJtLm0KKysrIGIvc3JjL25zdGVybS5tCkBAIC01ODM4LDE1ICs1ODM4LDYgQEAgc3RhdGlj
IExpc3BfT2JqZWN0IG5zX25ld19mb250IChzdHJ1Y3QgZnJhbWUgKmYsIExpc3BfT2JqZWN0IGZv
bnRfb2JqZWN0LAogICBuc19wZW5kaW5nX3NlcnZpY2VfbmFtZXMgPSBbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XTsKICAgbnNfcGVuZGluZ19zZXJ2aWNlX2FyZ3MgPSBbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XTsKIAotI2lmIGRlZmluZWQgKE5TX0lNUExfQ09DT0EpICYmIE1BQ19P
U19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMjYwMDAwCi0gIC8qIERpc2FibGUgcHJvYmxlbWF0
aWMgZXZlbnQgcHJvY2Vzc2luZyBvbiBtYWNPUyAyNiAoVGFob2UpIHRvIGF2b2lkCi0gICAgIHNj
cm9sbGluZyBsYWcgYW5kIGlucHV0IGhhbmRsaW5nIGlzc3Vlcy4gIFRoZXNlIGFyZSB1bmRvY3Vt
ZW50ZWQKLSAgICAgb3B0aW9ucyBhcyBvZiBtYWNPUyAyNi4wLiAgKi8KLSAgW05TVXNlckRlZmF1
bHRzLnN0YW5kYXJkVXNlckRlZmF1bHRzCi0gICAgICByZWdpc3RlckRlZmF1bHRzOkB7QCJOU0V2
ZW50Q29uY3VycmVudFByb2Nlc3NpbmdFbmFibGVkIiA6IEAiTk8iLAotICAgICAgICBAIk5TQXBw
bGljYXRpb25VcGRhdGVDeWNsZUVuYWJsZWQiIDogQCJOTyJ9XTsKLSNlbmRpZgotCiAgIC8qIFN0
YXJ0IGFwcCBhbmQgY3JlYXRlIHRoZSBtYWluIG1lbnUsIHdpbmRvdywgdmlldy4KICAgICAgTmVl
ZHMgdG8gYmUgaGVyZSBiZWNhdXNlIG5zX2luaXRpYWxpemVfZGlzcGxheV9pbmZvICgpIHVzZXMg
QXBwS2l0IGNsYXNzZXMuCiAgICAgIFRoZSB2aWV3IHdpbGwgdGhlbiBhc2sgdGhlIE5TQXBwIHRv
IHN0b3AgYW5kIHJldHVybiB0byBFbWFjcy4gICovCkBAIC02MzgzLDYgKzYzNzQsMjAgQEAgLSAo
dm9pZClhcHBsaWNhdGlvbkRpZEZpbmlzaExhdW5jaGluZzogKE5TTm90aWZpY2F0aW9uICopbm90
aWZpY2F0aW9uCiAJIG9iamVjdDpuaWxdOwogI2VuZGlmCiAKKyNpZmRlZiBOU19JTVBMX0NPQ09B
CisgIC8qIFNsZWVwIGV2ZW50IG5vdGlmaWNhdGlvbi4gICovCisgIFtbW05TV29ya3NwYWNlIHNo
YXJlZFdvcmtzcGFjZV0gbm90aWZpY2F0aW9uQ2VudGVyXQorICAgIGFkZE9ic2VydmVyOiBzZWxm
CisgICAgICAgc2VsZWN0b3I6QHNlbGVjdG9yKHN5c3RlbVdpbGxTbGVlcDopCisJICAgbmFtZTog
TlNXb3Jrc3BhY2VXaWxsU2xlZXBOb3RpZmljYXRpb24KKwkgb2JqZWN0OiBuaWxdOworICBbW1tO
U1dvcmtzcGFjZSBzaGFyZWRXb3Jrc3BhY2VdIG5vdGlmaWNhdGlvbkNlbnRlcl0KKyAgICBhZGRP
YnNlcnZlcjogc2VsZgorICAgICAgIHNlbGVjdG9yOiBAc2VsZWN0b3Ioc3lzdGVtRGlkV2FrZTop
CisJICAgbmFtZTogTlNXb3Jrc3BhY2VEaWRXYWtlTm90aWZpY2F0aW9uCisJIG9iamVjdDogbmls
XTsKKyNlbmRpZgorCiAjaWZkZWYgTlNfSU1QTF9DT0NPQQogICAvKiBTb21lIGZ1bmN0aW9ucy9t
ZXRob2RzIGluIENvcmVGb3VuZGF0aW9uL0ZvdW5kYXRpb24gaW5jcmVhc2UgdGhlCiAgICAgIG1h
eGltdW0gbnVtYmVyIG9mIG9wZW4gZmlsZXMgZm9yIHRoZSBwcm9jZXNzIGluIHRoZWlyIGZpcnN0
IGNhbGwuCkBAIC02NDIxLDYgKzY0MjYsMzEgQEAgLSAodm9pZClhbnRpYWxpYXNUaHJlc2hvbGRE
aWRDaGFuZ2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCiAjZW5kaWYKIH0KIAorLyog
U2xlZXAgZXZlbnQgbm90aWZpY2F0aW9uLiAgKi8KKworLSAodm9pZCkgc3lzdGVtV2lsbFNsZWVw
OihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgoreworI2lmZGVmIE5TX0lNUExfQ09DT0EK
KyAgTlNUUkFDRSAoIltFbWFjc0FwcCBzeXN0ZW1XaWxsU2xlZXA6XSIpOworICBzdHJ1Y3QgaW5w
dXRfZXZlbnQgaWU7CisgIEVWRU5UX0lOSVQgKGllKTsKKyAgaWUua2luZCA9IFNMRUVQX0VWRU5U
OworICBpZS5hcmcgPSBsaXN0MSAoUXByZV9zbGVlcCk7CisgIGtiZF9idWZmZXJfc3RvcmVfZXZl
bnQgKCZpZSk7CisjZW5kaWYKK30KKworLSAodm9pZCkgc3lzdGVtRGlkV2FrZTooTlNOb3RpZmlj
YXRpb24gKilub3RpZmljYXRpb24KK3sKKyNpZmRlZiBOU19JTVBMX0NPQ09BCisgIE5TVFJBQ0Ug
KCJbRW1hY3NBcHAgc3lzdGVtRGlkV2FrZTpdIik7CisgIHN0cnVjdCBpbnB1dF9ldmVudCBpZTsK
KyAgRVZFTlRfSU5JVCAoaWUpOworICBpZS5raW5kID0gU0xFRVBfRVZFTlQ7CisgIGllLmFyZyA9
IGxpc3QxIChRcG9zdF93YWtlKTsKKyAga2JkX2J1ZmZlcl9zdG9yZV9ldmVudCAoJmllKTsKKyNl
bmRpZgorfQogCiAvKiBUZXJtaW5hdGlvbiBzZXF1ZW5jZXM6CiAgICAgQy14IEMtYzoKQEAgLTEx
NTQ4LDYgKzExNTc4LDEwIEBAIE5pbCBtZWFucyB1c2UgZnVsbHNjcmVlbiB0aGUgb2xkICg8IDEw
LjcpIHdheS4gIFRoZSBvbGQgd2F5IHdvcmtzIGJldHRlciB3aXRoCiAgIERFRlNZTSAoUWV4cGFu
ZGVkLCAiZXhwYW5kZWQiKTsKICAgREVGU1lNIChRbnNfaW5fZWNob19hcmVhLCAibnMtaW4tZWNo
by1hcmVhIik7CiAKKyAgLyogU2xlZXAgZXZlbnRzLiAgKi8KKyAgREVGU1lNIChRcHJlX3NsZWVw
LCAicHJlLXNsZWVwIik7CisgIERFRlNZTSAoUXBvc3Rfd2FrZSwgInBvc3Qtd2FrZSIpOworCiAj
aWZkZWYgTlNfSU1QTF9DT0NPQQogICBGcHJvdmlkZSAoUWNvY29hLCBRbmlsKTsKICAgc3ltc19v
Zl9tYWNmb250ICgpOwpkaWZmIC0tZ2l0IGEvc3JjL3czMmZucy5jIGIvc3JjL3czMmZucy5jCmlu
ZGV4IGI3NWJjZThkMWEyLi45OWY3ZDhkYWI0OCAxMDA2NDQKLS0tIGEvc3JjL3czMmZucy5jCisr
KyBiL3NyYy93MzJmbnMuYwpAQCAtMTEzMjUsNiArMTEzMjUsMTQzIEBAIERFRlVOICgidzMyLXBy
b2dyZXNzLWluZGljYXRvciIsCiAKICNlbmRpZiAvKiBXSU5ET1dTTlQgKi8KIAorLyoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCisJCSAgICAgU3lzdGVtIFNsZWVwIFN1cHBvcnQKKyAqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwor
dHlwZWRlZiBVTE9ORyAoV0lOQVBJICogU2V0VGhyZWFkRXhlY3V0aW9uU3RhdGVfUHJvYykKKyAg
KElOIFVMT05HKTsKK3N0YXRpYyBTZXRUaHJlYWRFeGVjdXRpb25TdGF0ZV9Qcm9jIFNldFRocmVh
ZEV4ZWN1dGlvblN0YXRlX2ZuID0gTlVMTDsKKworc3RhdGljIHVuc2lnbmVkIGludCBzbGVlcF9i
bG9ja19pZCA9IDA7CitzdGF0aWMgdW5zaWduZWQgaW50IHNsZWVwX2Jsb2NrX2NvdW50ID0gMDsK
K3N0YXRpYyBFWEVDVVRJT05fU1RBVEUgc2xlZXBfYmxvY2tfZXhlY3V0aW9uX3N0YXRlID0gMDsK
KworREVGVU4gKCJ3MzItYmxvY2stc3lzdGVtLXNsZWVwIiwKKyAgICAgICBGdzMyX2Jsb2NrX3N5
c3RlbV9zbGVlcCwKKyAgICAgICBTdzMyX2Jsb2NrX3N5c3RlbV9zbGVlcCwKKyAgICAgICAxLCAx
LCAwLAorICAgICAgIGRvYzogLyogQmxvY2sgc3lzdGVtIGlkbGUgc2xlZXAuCitJZiBBTExPVy1E
SVNQTEFZLVNMRUVQIGlzIG5vbi1uaWwsIGJsb2NrIHRoZSBzY3JlZW4gZnJvbSBzbGVlcGluZy4K
K1JldHVybiBhIHRva2VuIHRvIHVuYmxvY2sgdGhpcyBibG9jayB1c2luZyBgdzMyLXVuYmxvY2st
c3lzdGVtLXNsZWVwJywKK29yIG5pbCBpZiB0aGUgYmxvY2sgZmFpbHMuICAqLykKKyAgKExpc3Bf
T2JqZWN0IGFsbG93X2Rpc3BsYXlfc2xlZXApCit7CisgIGlmIChTZXRUaHJlYWRFeGVjdXRpb25T
dGF0ZV9mbiA9PSBOVUxMKQorICAgIHJldHVybiBRbmlsOworCisgIC8qIEVTX0NPTlRJTlVPVVMg
a2VlcHMgdGhlIHN0YXRlIHVudGlsIGNsZWFyZWQuICAqLworICBFWEVDVVRJT05fU1RBVEUgbmV3
X3N0YXRlID0gRVNfU1lTVEVNX1JFUVVJUkVEIHwgRVNfQ09OVElOVU9VUzsKKyAgaWYgKE5JTFAg
KGFsbG93X2Rpc3BsYXlfc2xlZXApKQorICAgIG5ld19zdGF0ZSB8PSBFU19ESVNQTEFZX1JFUVVJ
UkVEOworCisgIHNsZWVwX2Jsb2NrX2V4ZWN1dGlvbl9zdGF0ZSA9IFNldFRocmVhZEV4ZWN1dGlv
blN0YXRlIChuZXdfc3RhdGUpOworCisgIGlmIChzbGVlcF9ibG9ja19leGVjdXRpb25fc3RhdGUg
PT0gMCkKKyAgICByZXR1cm4gUW5pbDsKKyAgZWxzZQorICAgIHsKKyAgICAgIC8qIE9uZSBtb3Jl
IGJsb2NrIGFuZCBuZXh0IGlkLiAgKi8KKyAgICAgICsrc2xlZXBfYmxvY2tfY291bnQ7CisgICAg
ICArK3NsZWVwX2Jsb2NrX2lkOworCisgICAgICAvKiBTeW50aGVzaXplIGEgdG9rZW4uICAqLwor
ICAgICAgcmV0dXJuIG1ha2VfZml4bnVtIChzbGVlcF9ibG9ja19pZCk7CisgICAgfQorfQorCitE
RUZVTiAoInczMi11bmJsb2NrLXN5c3RlbS1zbGVlcCIsCisgICAgICAgRnczMl91bmJsb2NrX3N5
c3RlbV9zbGVlcCwKKyAgICAgICBTdzMyX3VuYmxvY2tfc3lzdGVtX3NsZWVwLAorICAgICAgIDAs
IDAsIDAsCisgICAgICAgZG9jOiAvKiBVbmJsb2NrIHN5c3RlbSBpZGxlIHNsZWVwLgorUmV0dXJu
IG5vbi1uaWwgaWYgdGhlIFRPS0VOIGJsb2NrIHdhcyB1bmJsb2NrZWQuICAqLykKKyAgKHZvaWQp
Cit7CisgIGlmIChTZXRUaHJlYWRFeGVjdXRpb25TdGF0ZV9mbiA9PSBOVUxMKQorICAgIHJldHVy
biBRbmlsOworCisgIC8qIE5vIGJsb2NrcyB0byB1bmJsb2NrLiAgKi8KKyAgaWYgKHNsZWVwX2Js
b2NrX2NvdW50ID09IDApCisgICAgcmV0dXJuIFFuaWw7CisKKyAgLyogT25lIGZld2VyIGJsb2Nr
LiAgKi8KKyAgaWYgKC0tc2xlZXBfYmxvY2tfY291bnQgPT0gMAorICAgICAgJiYgc2xlZXBfYmxv
Y2tfZXhlY3V0aW9uX3N0YXRlKQorICAgIHNsZWVwX2Jsb2NrX2V4ZWN1dGlvbl9zdGF0ZSA9Cisg
ICAgICBTZXRUaHJlYWRFeGVjdXRpb25TdGF0ZSAoc2xlZXBfYmxvY2tfZXhlY3V0aW9uX3N0YXRl
CisJCQkgICAgICAgJiB+KEVTX0RJU1BMQVlfUkVRVUlSRUQgfCBFU19TWVNURU1fUkVRVUlSRUQp
KTsKKyAgaWYgKHNsZWVwX2Jsb2NrX2V4ZWN1dGlvbl9zdGF0ZSA9PSAwKQorICAgIHJldHVybiBR
bmlsOworICBlbHNlCisgICAgcmV0dXJuIFF0OworfQorCitERUZVTiAoInczMi1zeXN0ZW0tc2xl
ZXAtYmxvY2stY291bnQiLAorICAgICAgIEZ3MzJfc3lzdGVtX3NsZWVwX2Jsb2NrX2NvdW50LAor
ICAgICAgIFN3MzJfc3lzdGVtX3NsZWVwX2Jsb2NrX2NvdW50LAorICAgICAgIDAsIDAsIDAsCisg
ICAgICAgZG9jOiAvKiBSZXR1cm4gdGhlIHczMiBzbGVlcCBibG9jayBjb3VudC4gICovKQorICAo
dm9pZCkKK3sKKyAgcmV0dXJuIG1ha2VfZml4bnVtIChzbGVlcF9ibG9ja19jb3VudCk7Cit9CisK
K3R5cGVkZWYgVUxPTkcgKENBTExCQUNLICpQTVlfREVWSUNFX05PVElGWV9DQUxMQkFDS19ST1VU
SU5FKQorICAoUFZPSUQgQ29udGV4dCwgIFVMT05HIFR5cGUsICBQVk9JRCBTZXR0aW5nKTsKKwor
c3RhdGljIFVMT05HIEFMSUdOX1NUQUNLCitzbGVlcF9ub3RpZmljYXRpb25fY2FsbGJhY2soUFZP
SUQgX0NvbnRleHQsIFVMT05HIFR5cGUsIFBWT0lEIF9TZXR0aW5nKQoreworICBzdHJ1Y3QgaW5w
dXRfZXZlbnQgaWU7CisgIEVWRU5UX0lOSVQgKGllKTsKKyAgaWUua2luZCA9IFNMRUVQX0VWRU5U
OworCisgIHN3aXRjaCAoVHlwZSkKKyAgICB7CisgICAgY2FzZSBQQlRfQVBNUkVTVU1FQVVUT01B
VElDOgorICAgICAgLyogSWdub3JlIHRoaXMgZXZlbnQuICBObyB1c2VyIGlzIHByZXNlbnQuICAq
LworICAgICAgYnJlYWs7CisgICAgY2FzZSBQQlRfQVBNU1VTUEVORDoKKyAgICAgIGllLmFyZyA9
IGxpc3QxIChRcHJlX3NsZWVwKTsKKyAgICAgIGtiZF9idWZmZXJfc3RvcmVfZXZlbnQgKCZpZSk7
CisgICAgICBicmVhazsKKyAgICBjYXNlIFBCVF9BUE1SRVNVTUVTVVNQRU5EOgorICAgICAgaWUu
YXJnID0gbGlzdDEgKFFwb3N0X3dha2UpOworICAgICAga2JkX2J1ZmZlcl9zdG9yZV9ldmVudCAo
JmllKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgcmV0dXJuIDA7Cit9CisKK3R5cGVkZWYgSFBP
V0VSTk9USUZZIChXSU5BUEkgKiBSZWdpc3RlclN1c3BlbmRSZXN1bWVOb3RpZmljYXRpb25fUHJv
YykKKyAgKElOIEhBTkRMRSwgSU4gRFdPUkQpOworc3RhdGljIFJlZ2lzdGVyU3VzcGVuZFJlc3Vt
ZU5vdGlmaWNhdGlvbl9Qcm9jIFJlZ2lzdGVyU3VzcGVuZFJlc3VtZU5vdGlmaWNhdGlvbl9mbiA9
IE5VTEw7CisKK3N0YXRpYyBIUE9XRVJOT1RJRlkgc2xlZXBfbm90aWZpY2F0aW9uX2hhbmRsZSA9
IDA7CisKK3R5cGVkZWYgc3RydWN0IF9NWV9ERVZJQ0VfTk9USUZZX1NVQlNDUklCRV9QQVJBTUVU
RVJTIHsKKyAgUE1ZX0RFVklDRV9OT1RJRllfQ0FMTEJBQ0tfUk9VVElORSBDYWxsYmFjazsKKyAg
UFZPSUQgQ29udGV4dDsKK30gTVlfREVWSUNFX05PVElGWV9TVUJTQ1JJQkVfUEFSQU1FVEVSUywg
KlBNWV9ERVZJQ0VfTk9USUZZX1NVQlNDUklCRV9QQVJBTUVURVJTOworCit2b2lkCit3MzJfcmVn
aXN0ZXJfZm9yX3NsZWVwX25vdGlmaWNhdGlvbnMoKQoreworICAvKiBQb3dlclJlZ2lzdGVyU3Vz
cGVuZFJlc3VtZU5vdGlmaWNhdGlvbiBpcyBub3QgYSB1c2VyLXNwYWNlIGNhbGwgc28KKyAgICAg
d2UgdXNlIFJlZ2lzdGVyU3VzcGVuZFJlc3VtZU5vdGlmaWNhdGlvbi4gICovCisgIGlmIChSZWdp
c3RlclN1c3BlbmRSZXN1bWVOb3RpZmljYXRpb25fZm4pCisgICAgeworICAgICAgTVlfREVWSUNF
X05PVElGWV9TVUJTQ1JJQkVfUEFSQU1FVEVSUyBwYXJhbXM7CisgICAgICBwYXJhbXMuQ2FsbGJh
Y2sgPSBzbGVlcF9ub3RpZmljYXRpb25fY2FsbGJhY2s7CisgICAgICBwYXJhbXMuQ29udGV4dCA9
IE5VTEw7CisKKyAgICAgIC8qIERFVklDRV9OT1RJRllfQ0FMTEJBQ0sgPSAyICAqLworICAgICAg
c2xlZXBfbm90aWZpY2F0aW9uX2hhbmRsZSA9CisJUmVnaXN0ZXJTdXNwZW5kUmVzdW1lTm90aWZp
Y2F0aW9uX2ZuICgmcGFyYW1zLCAyKTsKKyAgICB9Cit9CisKIC8qKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCQkJ
ICAgIEluaXRpYWxpemF0aW9uCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC0xMTgzNCw2ICsxMTk3MSwx
MiBAQCBzeW1zX29mX3czMmZucyAodm9pZCkKICAgZGVmc3ViciAoJlN3MzJfcmVxdWVzdF91c2Vy
X2F0dGVudGlvbik7CiAgIERFRlNZTSAoUWluZm9ybWF0aW9uYWwsICJpbmZvcm1hdGlvbmFsIik7
CiAgIERFRlNZTSAoUWNyaXRpY2FsLCAiY3JpdGljYWwiKTsKKyAgLyogU3lzdGVtIHNsZWVwIHN1
cHBvcnQuICAqLworICBERUZTWU0gKFFwcmVfc2xlZXAsICJwcmUtc2xlZXAiKTsKKyAgREVGU1lN
IChRcG9zdF93YWtlLCAicG9zdC13YWtlIik7CisgIGRlZnN1YnIgKCZTdzMyX3VuYmxvY2tfc3lz
dGVtX3NsZWVwKTsKKyAgZGVmc3ViciAoJlN3MzJfYmxvY2tfc3lzdGVtX3NsZWVwKTsKKyAgZGVm
c3ViciAoJlN3MzJfc3lzdGVtX3NsZWVwX2Jsb2NrX2NvdW50KTsKICNlbmRpZgogfQogCkBAIC0x
MjA5NCw2ICsxMjIzNyw3IEBAICNkZWZpbmUgX29wZW4gb3BlbgogZ2xvYmFsc19vZl93MzJmbnMg
KHZvaWQpCiB7CiAgIEhNT0RVTEUgdXNlcjMyX2xpYiA9IEdldE1vZHVsZUhhbmRsZSAoInVzZXIz
Mi5kbGwiKTsKKyAgSE1PRFVMRSBrZXJuZWwzMl9saWIgPSBHZXRNb2R1bGVIYW5kbGUgKCJrZXJu
ZWwzMi5kbGwiKTsKICAgLyoKICAgICBUcmFja01vdXNlRXZlbnQgbm90IGF2YWlsYWJsZSBpbiBh
bGwgdmVyc2lvbnMgb2YgV2luZG93cywgc28gbXVzdCBsb2FkCiAgICAgaXQgZHluYW1pY2FsbHku
ICBEbyBpdCBvbmNlLCBoZXJlLCBpbnN0ZWFkIG9mIGV2ZXJ5IHRpbWUgaXQgaXMgdXNlZC4KQEAg
LTEyMTIwLDYgKzEyMjY0LDE2IEBAIGdsb2JhbHNfb2ZfdzMyZm5zICh2b2lkKQogICBSZWdpc3Rl
clRvdWNoV2luZG93X2ZuCiAgICAgPSAoUmVnaXN0ZXJUb3VjaFdpbmRvd19wcm9jKSBnZXRfcHJv
Y19hZGRyICh1c2VyMzJfbGliLAogCQkJCQkJIlJlZ2lzdGVyVG91Y2hXaW5kb3ciKTsKKyAgLyog
Rm9yIHN5c3RlbSBzbGVlcCBzdXBwb3J0LiAgKi8KKyAgU2V0VGhyZWFkRXhlY3V0aW9uU3RhdGVf
Zm4KKyAgICA9IChTZXRUaHJlYWRFeGVjdXRpb25TdGF0ZV9Qcm9jKQorICAgIGdldF9wcm9jX2Fk
ZHIgKGtlcm5lbDMyX2xpYiwKKwkJICAgIlNldFRocmVhZEV4ZWN1dGlvblN0YXRlIik7CisgIFJl
Z2lzdGVyU3VzcGVuZFJlc3VtZU5vdGlmaWNhdGlvbl9mbgorICAgID0gKFJlZ2lzdGVyU3VzcGVu
ZFJlc3VtZU5vdGlmaWNhdGlvbl9Qcm9jKQorICAgIGdldF9wcm9jX2FkZHIgKHVzZXIzMl9saWIs
CisJCSAgICJSZWdpc3RlclN1c3BlbmRSZXN1bWVOb3RpZmljYXRpb24iKTsKKwogICBTZXRHZXN0
dXJlQ29uZmlnX2ZuCiAgICAgPSAoU2V0R2VzdHVyZUNvbmZpZ19wcm9jKSBnZXRfcHJvY19hZGRy
ICh1c2VyMzJfbGliLAogCQkJCQkgICAgICJTZXRHZXN0dXJlQ29uZmlnIik7CmRpZmYgLS1naXQg
YS9zcmMvdzMydGVybS5jIGIvc3JjL3czMnRlcm0uYwppbmRleCAwOTFhMWZiZDVmMS4uNWI3ZDlj
NWYxN2QgMTAwNjQ0Ci0tLSBhL3NyYy93MzJ0ZXJtLmMKKysrIGIvc3JjL3czMnRlcm0uYwpAQCAt
ODI0OSw2ICs4MjQ5LDcgQEAgI2RlZmluZSBMT0FEX1BST0MobGliLCBmbikgcGZuIyNmbiA9ICh2
b2lkICopIEdldFByb2NBZGRyZXNzIChsaWIsICNmbikKICAgfQogCiAgIHczMl9nZXRfbW91c2Vf
d2hlZWxfdmVydGljYWxfZGVsdGEgKCk7CisgIHczMl9yZWdpc3Rlcl9mb3Jfc2xlZXBfbm90aWZp
Y2F0aW9ucyAoKTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL3czMnRlcm0uaCBiL3NyYy93
MzJ0ZXJtLmgKaW5kZXggOTFkYjBiNmUyNDkuLmNiOWQ1OTM3MWE0IDEwMDY0NAotLS0gYS9zcmMv
dzMydGVybS5oCisrKyBiL3NyYy93MzJ0ZXJtLmgKQEAgLTI3NCw2ICsyNzQsNyBAQCAjZGVmaW5l
IENQX0RFRkFVTFQgMTAwNAogZXh0ZXJuIGZyYW1lX3Bhcm1faGFuZGxlciB3MzJfZnJhbWVfcGFy
bV9oYW5kbGVyc1tdOwogZXh0ZXJuIHZvaWQgdzMyX2RlZmF1bHRfZm9udF9wYXJhbWV0ZXIgKHN0
cnVjdCBmcmFtZSogZiwgTGlzcF9PYmplY3QgcGFybXMpOwogZXh0ZXJuIExpc3BfT2JqZWN0IHcz
Ml9wcm9jZXNzX2RuZF9kYXRhIChpbnQgZm9ybWF0LCB2b2lkICpwRGF0YU9iaik7CitleHRlcm4g
dm9pZCB3MzJfcmVnaXN0ZXJfZm9yX3NsZWVwX25vdGlmaWNhdGlvbnMoKTsKIAogDAogI2RlZmlu
ZSBQSVhfVFlQRSBDT0xPUlJFRgotLSAKMi41Mi4wCgo=
--00000000000032a598064a43a07a--
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.Received: (at 80348) by debbugs.gnu.org; 7 Feb 2026 19:50:43 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 07 14:50:42 2026 Received: from localhost ([127.0.0.1]:38989 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vooKI-0001O7-Jp for submit <at> debbugs.gnu.org; Sat, 07 Feb 2026 14:50:42 -0500 Received: from mail-vk1-xa33.google.com ([2607:f8b0:4864:20::a33]:44495) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vooKF-0001Nt-KJ for 80348 <at> debbugs.gnu.org; Sat, 07 Feb 2026 14:50:40 -0500 Received: by mail-vk1-xa33.google.com with SMTP id 71dfb90a1353d-5664634a27fso953106e0c.1 for <80348 <at> debbugs.gnu.org>; Sat, 07 Feb 2026 11:50:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770493839; cv=none; d=google.com; s=arc-20240605; b=F247velY7FA2LBlwI8AP1hRvOUCk0c0A3f3ntaRifsHHvYEvBIzz47RmE4qBAaJ3mJ kE/HJxHp80o+EpI10NHC1b0Bf3U2bbaB880D6viMEGXRC9tvcComlg8lBtX1lpEjCpKi Ui4orjL0D0IEEOD/OGHF2QokLFLaWjgMzCwTnJzdwg7I+mUmdwtses3FzSciu4hjNehX SroJho4/RYIcD7TtajuWCS3T02X5VyhOIwKDmQY/YfZEI40k7EoHB+Sq+fnDhz5rP9SE ouI64Eg/Kv0FJVGUAeX/VgqbWUV2lE5rTocjpvOGpEgaqHYRbw/Yi3B+GSQW9AHbnGcR EZjw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=Bfd7HZRxV75aC1Zwh7tL8wOOpqMsujDJr2pDCuJM+xk=; fh=XFyLLj5IJEfbj6P0pjHENBVJIjajvq2jpzMaJgzrTSQ=; b=DdpwZIwlNTOlWR5AcOc65MQ4WYh6CvA3VDNNEXyuQUTM2RSN8rMV6wBkcIVTvwPcb8 yNU99oZdsEgHysHFnM+hWMXLto2xq5RTQfMdWAgHwNfyTxe2WWPiTbYdzQwi48/QTNSR ANnZ8PsSMrSv7ObaOxDUg2jjx7+59bWdAmUoZbnG4TzXyoJxYFwam4w3D89VKIaa/npt 3M3l6PJzizfi4nTF/3hWJPGfQFojqIPSRc9JXVISFqz2tp48t729lTsl+N3SpUab8uLM 5Q5y9G7O5cunFoC/xscE7uKpHAXaUsiAqLLjbwm4dhYS1I7/fF/em7c7u6Veb/DmN4be ez9w==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770493839; x=1771098639; 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=Bfd7HZRxV75aC1Zwh7tL8wOOpqMsujDJr2pDCuJM+xk=; b=ATOJuqMrVTx1zaN1OuH2AY5nQFoYBQeoYpIPrf5kF3MfER1sQoA1zYpQuNLEGnAtG1 D/dDwq/2uKESHwGPR8+JauyQBJU/JeQ7/x9y3YfJ99F4j3kCFIbTikp3dLBoVf9STaNU cb2wopwI5rLAFWgcKypzDJ3Klxxoiq33ft05hocUgi254iAz9qA7XN0RrvfwTwvuGg7I b2gnMLZtkzxNS/zYbrNU9vqrPLX3oWmDJj7oug0rjjvDecugFw6zcIf37xMca3O85fS9 nh/NeQwQnAKaaQjYibgL5LIniM8EaIE+DNu1hVMqrkL1Pp6GQYA5wchrtvdBLcD8rO7L 0x3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770493839; x=1771098639; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Bfd7HZRxV75aC1Zwh7tL8wOOpqMsujDJr2pDCuJM+xk=; b=EgN0kBN8fkesqP40yyx9laSuuJJ1azayVW5Ot5rUz0A5eetAOPfsoMdw/83ySWQuTJ aWkDEC1s+imntHTiCPuttd/Nye3PkttM5pmdRy7s+g30lIUZWzLFJsc33VSmNoA2u6G1 mYp7scRFkqBCyMB7vArM7vlui2VGfDaYV82GhF4Ti/NrW3Of+ztB91dBYt35cXvEJcdX Gh3ca3DnUDdDRNH445iA0TDr3QzilIIEfP7flEG8O8vcjRdR+ofOnsAv5ywKsY8dmkWF yWAMc7xNy65FW3ZmsRpOR4eqn6oDrLbqB7GVBGzlKOIjlAi62gYtuZ2YKsQM0gvW/s63 Zdfw== X-Gm-Message-State: AOJu0YysqCpJzPnN8mkZlH5rGqz4sdRcwfk6NMAZG+C4rhN0Zjpcsusg /T5FOb2+jMjirQPdsvwJaQeEVUt7erQPpUT21t9b4O+FM9Ls+jgXh5+VUiXoS4W8hWnSFhIit3w YH7DKBdfz6zKu4HgmkQl7Z8i36Dehbrk= X-Gm-Gg: AZuq6aL6NHBu7Lwh6+TD7PDh8psBECjs7kLQ7unxIpXqIRu5oKFklVBDGiW64UfnR6n muVUE+XoxDw6ZligeXSciMIFB7oSCeZOnK7XLUi1kZUVQNLVSnn5OMRauGSLkhJqHMO6+zaTl6F qOSWqwaa4ZRyCGSyR1qWz2zVlGtk7iZgYfjO8fFor3iY7K/DzGhZWjFqJNEI8ZaykyEJCL2ebd4 13T93AofmZ2OP3X8TXGOM+oerj80TvBnEvb+WD5aGJs8LR9ARpfJrP3zWfX6OcwtwohSNUu6wUe 2k3BP519FZfLuvK0bbWYttuHcDBHB4XhZVbWA8TBa63tgg3BaYc= X-Received: by 2002:a05:6102:32cf:b0:5f5:774d:b6a2 with SMTP id ada2fe7eead31-5fae8caa04emr1703649137.45.1770493838678; Sat, 07 Feb 2026 11:50:38 -0800 (PST) MIME-Version: 1.0 References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN> <CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN> <87tsvscsmj.fsf@HIDDEN> <CAN+1Hbr-2-StXvCR_5BH++gZWch7Pgx97HNK-n7rG_d3aDUaNw@HIDDEN> In-Reply-To: <CAN+1Hbr-2-StXvCR_5BH++gZWch7Pgx97HNK-n7rG_d3aDUaNw@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sat, 7 Feb 2026 14:50:27 -0500 X-Gm-Features: AZwV_Qg9LbR96eO7C6XCOdmeDrj3Sx8lglZvslVwNRG3dkrXddjcwR4oI-hxAXA Message-ID: <CAN+1Hbroi30i0+=4dPRZJZqkbUdZnPWxE_X_7NnR9OcD1t2m7w@HIDDEN> Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake event package To: Michael Albinus <michael.albinus@HIDDEN> Content-Type: multipart/alternative; boundary="00000000000054e0af064a41387a" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80348 Cc: 80348 <at> debbugs.gnu.org, Andrew Cohen <acohen@HIDDEN>, eric@HIDDEN, Morgan Smith <Morgan.J.Smith@HIDDEN>, Daniel Mendler <mail@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) --00000000000054e0af064a41387a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Feb 7, 2026 at 2:46=E2=80=AFPM St=C3=A9phane Marks <shipmints@gmail= .com> wrote: > --8<---------------cut here---------------start------------->8--- >> (cl-defstruct (sleep-event (:type list) :named) state) >> --8<---------------cut here---------------end--------------->8--- >> > > Is it okay to put cl- functions in bindings.el? I did it anyway but we > can undo it. > Merely adding (require 'cl-lib) seems insufficient: Error: void-function (cl--struct-name-p) cl--struct-name-p(sleep-event) I think it's probably not right to introduce cl there. --00000000000054e0af064a41387a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Sat, Feb 7, 2026 at 2:46=E2=80=AFPM St=C3=A9phane Marks <<a href=3D"m= ailto:shipmints@HIDDEN">shipmints@HIDDEN</a>> wrote:</span></div><= /div><div class=3D"gmail_quote gmail_quote_container"><blockquote class=3D"= gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(20= 4,204,204);padding-left:1ex"><div dir=3D"ltr"><div class=3D"gmail_quote"><b= lockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-le= ft:1px solid rgb(204,204,204);padding-left:1ex">--8<---------------cut h= ere---------------start------------->8---<br> (cl-defstruct (sleep-event (:type list) :named) state)<br> --8<---------------cut here---------------end--------------->8---<br>= </blockquote><div><br></div><div><div style=3D"font-family:monospace">Is it= okay to put cl- functions in bindings.el?=C2=A0 I did it anyway but we can= undo it.</div></div></div></div></blockquote><div><br></div><div><div clas= s=3D"gmail_default" style=3D"font-family:monospace">Merely adding (require = 'cl-lib) seems insufficient:</div><div class=3D"gmail_default" style=3D= "font-family:monospace"><br></div><div class=3D"gmail_default" style=3D"fon= t-family:monospace">Error: void-function (cl--struct-name-p)<br>=C2=A0 cl--= struct-name-p(sleep-event)<br></div></div><div><br></div><div><div class=3D= "gmail_default" style=3D"font-family:monospace">I think it's probably n= ot right to introduce cl there.</div></div></div></div> --00000000000054e0af064a41387a--
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.
Received: (at 80348) by debbugs.gnu.org; 7 Feb 2026 19:46:50 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 07 14:46:49 2026
Received: from localhost ([127.0.0.1]:38956 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vooGX-00015t-1i
for submit <at> debbugs.gnu.org; Sat, 07 Feb 2026 14:46:49 -0500
Received: from mail-vs1-xe2f.google.com ([2607:f8b0:4864:20::e2f]:48518)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <shipmints@HIDDEN>)
id 1vooGT-00015h-S2
for 80348 <at> debbugs.gnu.org; Sat, 07 Feb 2026 14:46:46 -0500
Received: by mail-vs1-xe2f.google.com with SMTP id
ada2fe7eead31-5eeaae02888so772761137.1
for <80348 <at> debbugs.gnu.org>; Sat, 07 Feb 2026 11:46:45 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; t=1770493605; cv=none;
d=google.com; s=arc-20240605;
b=FGEuvUKspBcPmw0ONjq5EeF6gl21dBVKPTmS9TVBPptdtmoD1OGMyPdTuaOmn9KIp+
wRN+1rlwx52j7XJtU0krPwg7FhmQbqWmZchcym+RtYOO+DfKj+uYSVPIYkEDkkvoaxKj
stImIm04RBeMcyIxe/aeyJWh4k1cBpQvxMcCmAgshiJ+uix3mQqLs7Vg+rDPIDlQXfHm
c8zGSNNY4kJ96gyPhDqHtta/Uv3kV5hcKkqmcjMHflIKTNBSvZs+QG14CyZUr+7LLMO6
wunU/K7C00olR0TPZPGoTnZyO2bErDWTRmpdWJUTskQEXyJ9WPblWKSIH3YkWNNj2h5q
Fhww==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;
s=arc-20240605;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:dkim-signature;
bh=RIY/kgzUe0goN7sgsw9pU71pcF1ANvxPNgIv4fhjE/0=;
fh=XFyLLj5IJEfbj6P0pjHENBVJIjajvq2jpzMaJgzrTSQ=;
b=c77roudOr7Gbt91nTwHJiQgBfWbqkUCCuiYd2ZxDjd/UTv5mLEfQ/Tp0DJZjKaeslO
d9gyp5V2+iUU3x0664VmLjih3QPTDJY4rMpviF6bdGgBqvAmLtyD9nDangY0BMDGvEPr
2mQnueUb2UBkjjaParC5KkSQKKTWLJ7vSPGjBUgTnF8CkaZnxxgzxVlGL0qAzQYcdWsP
xZOlu+8mvi1CiO9v/JmiFIr0MNqq2q493dsChqNU48eiuqH7EjPTBqRAEHgV6BzNZJJs
U+LqASktFRlhC93qKAnC/a+s7XT4SGAnUZk5gZs1tsefHO9UqHvT7IdH/S305vb5ukP0
Q/NQ==; darn=debbugs.gnu.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1770493605; x=1771098405; 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=RIY/kgzUe0goN7sgsw9pU71pcF1ANvxPNgIv4fhjE/0=;
b=haroFKHhpWvYOenhbOAlE3xNj5a6qwyj8IyAE8V2hyM6Y17V6yiRcHDGjsOUn37j/F
e4qjRVB0oLBZR34WhH27HwsT7GnJaMrPTZPV6oXi6gkVbk75kGrMs+CEGBZgQx3MVq2C
qMNdvmY2qUkHNmwxfvtd5ZdShqpYtJaIGNJXhmbwf1fF3tcQCxxP3oit84qKImw4nAdP
E9E94/2kVdiKHT/esbgM90gqkW5hrq05tGm3cs4CU7NdJte2S3YYQcWaeRIRBqtb+rK9
u9pE/XbWiWhmb2WCmERmsujjDGAUAZCsD82HbcnoKr4Nya5okzVqiKZkUE8N0Zjj912D
z/nQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1770493605; x=1771098405;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=RIY/kgzUe0goN7sgsw9pU71pcF1ANvxPNgIv4fhjE/0=;
b=i/qbNxDI5x35Jlrv6pVfuxBWoeyhyh6UfZZTmyZG41GhHhAhCvXv8Jxj0tpAaHqeFx
6OFygXvb4xG/aB9HKvw658chMtAWz06/kZ5Lj4O9quN7ffBGf8RsIl/VlcBprMceENPq
+5nok75QRuaT/gjf1m7a1Pqm/M/brtiiVM6lQdNY3wBHcY4lkna6iqityl1zXZ6SujSA
ExsPH3mFyP7Ks7Ktzi1mAoEVGef8DA02fwR3Ost6NUEOikncyB44mdMdwrs9clIyJP0V
R0l43e2+iyrQDwm3QHjPW0v46GMII48QhG8m+R+KZcdiW/nSE3dyygm1/sOwjl8aR4kZ
pMzA==
X-Gm-Message-State: AOJu0Yw0EOFkhGWHX7tlbB9DGVz01DWJ/QMKgn4rhOO150iqbW/6oX0y
8+A4VR79SGoa9p4PfBCGdJSB5Ydo4//s5y5MSqzlifKflUu70NrXqige4iOFhXh9DkpwejHK0q8
07jlWyCsjie6Y0Va2d1t4cVhwNGvZndo=
X-Gm-Gg: AZuq6aIFk9IrTkql6dFB6qJh+iZWJXFIFOkE8NiQXnTu0nBeimvum4IMJ/6mD7diUnb
IpJ7A5mXe8ZIdd4t3AvTC2nGDJ+TqP8TgE7cQ8fi7YH1QL2uuqO9Z8B5j/lBt5ImpfWi0xfLv3K
JLUaNSsaWIZSYEkHu54/IuNEid42DBsbtbt8YNxBKRsRnUeZBtmFzTvzB5K512fC3lLSlPehqMa
aT6ljRtB5O7gjCYe3M1iqSzU3brC7HmCaFOF0tBsQEAnV3PQjN8ASpxRwxpOdUTDBSLot4uAMdO
lJcXO1OQ7rc8PToKlnNOaP6iNbGp53JrxUlHMYyzUs74u3v+ljo=
X-Received: by 2002:a05:6102:c4f:b0:5f7:293f:c3ae with SMTP id
ada2fe7eead31-5fae8c5839bmr1729433137.34.1770493605009; Sat, 07 Feb 2026
11:46:45 -0800 (PST)
MIME-Version: 1.0
References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN>
<CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN>
<87tsvscsmj.fsf@HIDDEN>
In-Reply-To: <87tsvscsmj.fsf@HIDDEN>
From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>
Date: Sat, 7 Feb 2026 14:46:33 -0500
X-Gm-Features: AZwV_QjCFTTRxhoSA-VI7Nnpm3QbrRGpv4h6O9AyyG-gQUMO8iHl3DTV5Qpf_AY
Message-ID: <CAN+1Hbr-2-StXvCR_5BH++gZWch7Pgx97HNK-n7rG_d3aDUaNw@HIDDEN>
Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake
event package
To: Michael Albinus <michael.albinus@HIDDEN>
Content-Type: multipart/alternative; boundary="000000000000675b94064a412ac3"
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 80348
Cc: 80348 <at> debbugs.gnu.org, Andrew Cohen <acohen@HIDDEN>,
eric@HIDDEN, Morgan Smith <Morgan.J.Smith@HIDDEN>,
Daniel Mendler <mail@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 0.0 (/)
--000000000000675b94064a412ac3
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Thank you for the detailed review. Comments interspersed below.
On Sat, Feb 7, 2026 at 1:32=E2=80=AFPM Michael Albinus <michael.albinus@gmx=
.de>
wrote:
> St=C3=A9phane Marks <shipmints@HIDDEN> writes:
>
> Hi St=C3=A9phane,
>
> Some remarks on the code:
>
> > diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
> >
> > +@group
> > +(defun my/system-sleep-sleep-event-function (event)
> > + (pcase event
> > + ('pre-sleep
> > + (message "BEDTIME"))
> > + ('post-wake
> > + (message "WAKE UP"))))
> > +
> > +(add-hook 'system-sleep-event-functions
> > + #'my/system-sleep-sleep-event-function)
> > +@end group
> > +@end lisp
>
> An event has the form '(sleep-event STATE)'. So you must do
>
> --8<---------------cut here---------------start------------->8---
> (pcase (cadr event)
> --8<---------------cut here---------------end--------------->8---
>
Done. I did not realize when I started this the sleep-event was intended
to be a list. Many other simple events are coded to be just symbols so I
followed along with the convention.
> If you offer the defstruct sleep-event (see below), you could recommend
> instead
>
> --8<---------------cut here---------------start------------->8---
> (pcase (sleep-event-state event)
> --8<---------------cut here---------------end--------------->8---
>
> > diff --git a/lisp/system-sleep.el b/lisp/system-sleep.el
>
> A sleep event has the form '(sleep-event STATE)'. So we can add a
> 'sleep-event' defstruct for convenience:
>
> --8<---------------cut here---------------start------------->8---
> (cl-defstruct (sleep-event (:type list) :named) state)
> --8<---------------cut here---------------end--------------->8---
>
Is it okay to put cl- functions in bindings.el? I did it anyway but we can
undo it.
This gives us for free three functions: make-sleep-event, sleep-event-p,
> and sleep-event-state. This makes it ease to create, check, and access
> sleep events. And we don't need to think about the list form, even if
> the sleep-event will be extended later.
>
> > +(defcustom system-sleep-event-functions nil
> > + "Abnormal hook invoked on system sleep events.
> > +Each function is called with one argument which will be one of these
> > +symbols `pre-sleep' or `post-wake'.
>
> "Each function is called with one argument EVENT, a sleep event. The
> state of such sleep event can be retrieved via `(sleep-event-state
> EVENT)'. It will be one of these symbols `pre-sleep' or `post-wake'."
>
Done.
> +(defconst system-sleep--dbus-sleep-inhibitor-types "sleep"
> > + "This is a colon-separated list of options.
> > +The default is \"sleep\" which is compatible with the other supported
> > +`system-sleep' platforms. This could also be
> > +\"sleep:shutdown\". Shutdown is available only on D-Bus systems.")
>
> I still don't understand the docstring. Do you encourage users to change
> system-sleep--dbus-sleep-inhibitor-types to another string? In this
> case, this must be a defvar.
>
I changed it to a defvar. I really don't think anyone should be changing
these. I implemented it because I saw Morgan wanting to inhibit shutdown
which we cannot do on the other platforms.
> +(defun system-sleep--dbus-prepare-for-sleep-callback (sleep-or-wake)
> > + (cond (sleep-or-wake
> > + (insert-special-event '(sleep-event pre-sleep)))
>
> --8<---------------cut here---------------start------------->8---
> (insert-special-event (make-sleep-event :state 'pre-sleep)))
> --8<---------------cut here---------------end--------------->8---
>
> > + (t
> > + (insert-special-event '(sleep-event post-wake)))))
>
> --8<---------------cut here---------------start------------->8---
> (insert-special-event (make-sleep-event :state 'post-wake)))
> --8<---------------cut here---------------end--------------->8---
>
> > +(defun system-sleep--dbus-prepare-for-sleep-function (event)
> > + (pcase event
>
> (pcase (sleep-event-state event)
>
> > diff --git a/src/nsfns.m b/src/nsfns.m
>
> > +#ifdef NS_IMPL_COCOA
> > + NSTRACE ("[EmacsApp systemWillSleep:]");
> > + struct input_event ie;
> > + EVENT_INIT (ie);
> > + ie.kind =3D SLEEP_EVENT;
> > + ie.arg =3D Qpre_sleep;
> > + kbd_buffer_store_event (&ie);
> > +#endif
>
> A sleep event is a list, so I guess we need
>
> ie.arg =3D (list1 Qpre_sleep);
>
Done.
> +#ifdef NS_IMPL_COCOA
> > + NSTRACE ("[EmacsApp systemDidWake:]");
> > + struct input_event ie;
> > + EVENT_INIT (ie);
> > + ie.kind =3D SLEEP_EVENT;
> > + ie.arg =3D Qpost_wake;
> > + kbd_buffer_store_event (&ie);
> > +#endif
>
> ditto.
>
Done.
> diff --git a/src/w32fns.c b/src/w32fns.c
>
> > + switch (Type)
> > + {
> > + case PBT_APMRESUMEAUTOMATIC:
> > + /* Ignore this event. No user is present. */
> > + break;
> > + case PBT_APMSUSPEND:
> > + ie.arg =3D Qpre_sleep;
> > + kbd_buffer_store_event (&ie);
> > + break;
> > + case PBT_APMRESUMESUSPEND:
> > + ie.arg =3D Qpost_wake;
> > + kbd_buffer_store_event (&ie);
> > + break;
> > + }
> > + return 0;
>
> ditto.
>
Done.
--000000000000675b94064a412ac3
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon=
t-family:monospace">Thank you for the detailed review.=C2=A0 Comments inter=
spersed below.</div></div><br><div class=3D"gmail_quote gmail_quote_contain=
er"><div dir=3D"ltr" class=3D"gmail_attr">On Sat, Feb 7, 2026 at 1:32=E2=80=
=AFPM Michael Albinus <<a href=3D"mailto:michael.albinus@HIDDEN">michael=
.albinus@HIDDEN</a>> wrote:<br></div><blockquote class=3D"gmail_quote" s=
tyle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);pad=
ding-left:1ex">St=C3=A9phane Marks <<a href=3D"mailto:shipmints@HIDDEN=
m" target=3D"_blank">shipmints@HIDDEN</a>> writes:<br>
<br>
Hi St=C3=A9phane,<br>
<br>
Some remarks on the code:<br>
<br>
> diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi<br>
><br>
> +@group<br>
> +(defun my/system-sleep-sleep-event-function (event)<br>
> +=C2=A0 (pcase event<br>
> +=C2=A0 =C2=A0 ('pre-sleep<br>
> +=C2=A0 =C2=A0 =C2=A0(message "BEDTIME"))<br>
> +=C2=A0 =C2=A0 ('post-wake<br>
> +=C2=A0 =C2=A0 =C2=A0(message "WAKE UP"))))<br>
> +<br>
> +(add-hook 'system-sleep-event-functions<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #'my/system-sleep-sleep-event-=
function)<br>
> +@end group<br>
> +@end lisp<br>
<br>
An event has the form '(sleep-event STATE)'. So you must do<br>
<br>
--8<---------------cut here---------------start------------->8---<br>
(pcase (cadr event)<br>
--8<---------------cut here---------------end--------------->8---<br>=
</blockquote><div><br></div><div class=3D"gmail_default" style=3D"font-fami=
ly:monospace">Done.=C2=A0 I did not realize when I started this the sleep-e=
vent was intended to be a list.=C2=A0 Many other simple events are coded to=
be just symbols so I followed along with the convention.</div><div>=C2=A0<=
/div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bo=
rder-left:1px solid rgb(204,204,204);padding-left:1ex">
If you offer the defstruct sleep-event (see below), you could recommend<br>
instead<br>
<br>
--8<---------------cut here---------------start------------->8---<br>
(pcase (sleep-event-state event)<br>
--8<---------------cut here---------------end--------------->8---<br>
<br>
> diff --git a/lisp/system-sleep.el b/lisp/system-sleep.el<br>
<br>
A sleep event has the form '(sleep-event STATE)'. So we can add a<b=
r>
'sleep-event' defstruct for convenience:<br>
<br>
--8<---------------cut here---------------start------------->8---<br>
(cl-defstruct (sleep-event (:type list) :named) state)<br>
--8<---------------cut here---------------end--------------->8---<br>=
</blockquote><div><br></div><div><div class=3D"gmail_default" style=3D"font=
-family:monospace">Is it okay to put cl- functions in bindings.el?=C2=A0 I =
did it anyway but we can undo it.</div></div><div><br></div><blockquote cla=
ss=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid =
rgb(204,204,204);padding-left:1ex">
This gives us for free three functions: make-sleep-event, sleep-event-p,<br=
>
and sleep-event-state. This makes it ease to create, check, and access<br>
sleep events. And we don't need to think about the list form, even if<b=
r>
the sleep-event will be extended later.<br>
<br>
> +(defcustom system-sleep-event-functions nil<br>
> +=C2=A0 "Abnormal hook invoked on system sleep events.<br>
> +Each function is called with one argument which will be one of these<=
br>
> +symbols `pre-sleep' or `post-wake'.<br>
<br>
"Each function is called with one argument EVENT, a sleep event. The<b=
r>
state of such sleep event can be retrieved via `(sleep-event-state<br>
EVENT)'.=C2=A0 It will be one of these symbols `pre-sleep' or `post=
-wake'."<br></blockquote><div><br></div><div><div class=3D"gmail_d=
efault" style=3D"font-family:monospace">Done.</div></div><div><br></div><bl=
ockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-lef=
t:1px solid rgb(204,204,204);padding-left:1ex">
> +(defconst system-sleep--dbus-sleep-inhibitor-types "sleep"<=
br>
> +=C2=A0 "This is a colon-separated list of options.<br>
> +The default is \"sleep\" which is compatible with the other=
supported<br>
> +`system-sleep' platforms.=C2=A0 This could also be<br>
> +\"sleep:shutdown\". Shutdown is available only on D-Bus sys=
tems.")<br>
<br>
I still don't understand the docstring. Do you encourage users to chang=
e<br>
system-sleep--dbus-sleep-inhibitor-types to another string? In this<br>
case, this must be a defvar.<br></blockquote><div><br></div><div><div class=
=3D"gmail_default" style=3D"font-family:monospace">I changed it to a defvar=
.=C2=A0 I really don't think anyone should be changing these.=C2=A0 I i=
mplemented it because I saw Morgan wanting to inhibit shutdown which we can=
not do on the other platforms.</div></div><div><br></div><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg=
b(204,204,204);padding-left:1ex">
> +(defun system-sleep--dbus-prepare-for-sleep-callback (sleep-or-wake)<=
br>
> +=C2=A0 (cond (sleep-or-wake<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(insert-special-event '(sleep-e=
vent pre-sleep)))<br>
<br>
--8<---------------cut here---------------start------------->8---<br>
(insert-special-event (make-sleep-event :state 'pre-sleep)))<br>
--8<---------------cut here---------------end--------------->8---<br>
<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (t<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(insert-special-event '(sleep-e=
vent post-wake)))))<br>
<br>
--8<---------------cut here---------------start------------->8---<br>
(insert-special-event (make-sleep-event :state 'post-wake)))<br>
--8<---------------cut here---------------end--------------->8---<br>
<br>
> +(defun system-sleep--dbus-prepare-for-sleep-function (event)<br>
> +=C2=A0 (pcase event<br>
<br>
(pcase (sleep-event-state event)<br>
<br>
> diff --git a/src/nsfns.m b/src/nsfns.m<br>
<br>
> +#ifdef NS_IMPL_COCOA<br>
> +=C2=A0 NSTRACE ("[EmacsApp systemWillSleep:]");<br>
> +=C2=A0 struct input_event ie;<br>
> +=C2=A0 EVENT_INIT (ie);<br>
> +=C2=A0 ie.kind =3D SLEEP_EVENT;<br>
> +=C2=A0 ie.arg =3D Qpre_sleep;<br>
> +=C2=A0 kbd_buffer_store_event (&ie);<br>
> +#endif<br>
<br>
A sleep event is a list, so I guess we need<br>
<br>
ie.arg =3D (list1 Qpre_sleep);<br></blockquote><div><br></div><div class=3D=
"gmail_default" style=3D"font-family:monospace">Done.</div><div class=3D"gm=
ail_default" style=3D"font-family:monospace"><br></div><blockquote class=3D=
"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(2=
04,204,204);padding-left:1ex">
> +#ifdef NS_IMPL_COCOA<br>
> +=C2=A0 NSTRACE ("[EmacsApp systemDidWake:]");<br>
> +=C2=A0 struct input_event ie;<br>
> +=C2=A0 EVENT_INIT (ie);<br>
> +=C2=A0 ie.kind =3D SLEEP_EVENT;<br>
> +=C2=A0 ie.arg =3D Qpost_wake;<br>
> +=C2=A0 kbd_buffer_store_event (&ie);<br>
> +#endif<br>
<br>
ditto.<br></blockquote><div><br></div><div><div class=3D"gmail_default" sty=
le=3D"font-family:monospace">Done.</div></div><div><br></div><blockquote cl=
ass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid=
rgb(204,204,204);padding-left:1ex">
> diff --git a/src/w32fns.c b/src/w32fns.c<br>
<br>
> +=C2=A0 switch (Type)<br>
> +=C2=A0 =C2=A0 {<br>
> +=C2=A0 =C2=A0 case PBT_APMRESUMEAUTOMATIC:<br>
> +=C2=A0 =C2=A0 =C2=A0 /* Ignore this event.=C2=A0 No user is present.=
=C2=A0 */<br>
> +=C2=A0 =C2=A0 =C2=A0 break;<br>
> +=C2=A0 =C2=A0 case PBT_APMSUSPEND:<br>
> +=C2=A0 =C2=A0 =C2=A0 ie.arg =3D Qpre_sleep;<br>
> +=C2=A0 =C2=A0 =C2=A0 kbd_buffer_store_event (&ie);<br>
> +=C2=A0 =C2=A0 =C2=A0 break;<br>
> +=C2=A0 =C2=A0 case PBT_APMRESUMESUSPEND:<br>
> +=C2=A0 =C2=A0 =C2=A0 ie.arg =3D Qpost_wake;<br>
> +=C2=A0 =C2=A0 =C2=A0 kbd_buffer_store_event (&ie);<br>
> +=C2=A0 =C2=A0 =C2=A0 break;<br>
> +=C2=A0 =C2=A0 }<br>
> +=C2=A0 return 0;<br>
<br>
ditto.<br></blockquote><div><br></div><div class=3D"gmail_default" style=3D=
"font-family:monospace">Done.</div></div></div>
--000000000000675b94064a412ac3--
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.
Received: (at 80348) by debbugs.gnu.org; 7 Feb 2026 19:33:20 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 07 14:33:20 2026
Received: from localhost ([127.0.0.1]:38826 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1voo3T-0000Ft-0j
for submit <at> debbugs.gnu.org; Sat, 07 Feb 2026 14:33:20 -0500
Received: from mail-ua1-x930.google.com ([2607:f8b0:4864:20::930]:53645)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <shipmints@HIDDEN>)
id 1voo3P-0000Fg-Je
for 80348 <at> debbugs.gnu.org; Sat, 07 Feb 2026 14:33:17 -0500
Received: by mail-ua1-x930.google.com with SMTP id
a1e0cc1a2514c-94ac7f22d23so71243241.3
for <80348 <at> debbugs.gnu.org>; Sat, 07 Feb 2026 11:33:15 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; t=1770492795; cv=none;
d=google.com; s=arc-20240605;
b=R+isW8yCPR+EC/t7fOpYg2pDeUyXexIGznEkqf4OHag1JjkRHrjV+J2Ic7ThJzS8zD
5DcwcOb3PjajZXvFxKPUtPeTgQpNArbryC/wiGnADAT+VhOvvR26C0aXAzuscJ7XrI/7
2FLk1CnQ/PVe/Q0X0UxcZ7qwpUPlunxdWBXlw7XW0UNVAyzGBe2OKc+to5ZUHwNaFubs
ubBOiGkqezGz08nBgpC4a0TNPNm9gy2Bk/su6k0YRxcZUSFSzk0j/kubu+hJUptDY2AZ
FNIrKyWOECOYI0W4hIuSKiPNOpzB/zFY0vf1Sods2GfLZhhjCMo6Xoe+9ReImdhp+hIj
h3ew==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;
s=arc-20240605;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:dkim-signature;
bh=df8ijbRfioeT8CZoGe3N4QJw20gkAKAkn3jT6C2m2W8=;
fh=RwJrN5tAKSZFn/F8n7dJLhpYKRbBXlv3lXU67/XRaGw=;
b=gguR7uHaSzLhm1MeJnez4GYnmqct+WO7jJ5i3F/3M1hSJqDqG/5vg0ix5ZovlrIE/B
wdKYCivEssvmgiqLhtxpcK6qziLqZH1LfgkenxoABe+pW0lhDSMqOQBucYEEQIMDOmLB
OX1uE0aCa72OkmyooM9+07xu16hKShOwFeaRNE5shHPeFwCbqjUcEaEiq3mh6iDkjXCW
9Kmbxsg8VaW6K4U2l5wSNXXuP2PZXbJSIxqi08NxwqVYnpeug7oPRLjLPQOJ5rY4jZwF
0NJhvFHWEqrhyEqIcGu4gDbkyad2ReKROGH6KrAbECzTsNKge4ecm/4qKO3VkVCGx+yX
ez6Q==; darn=debbugs.gnu.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1770492795; x=1771097595; 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=df8ijbRfioeT8CZoGe3N4QJw20gkAKAkn3jT6C2m2W8=;
b=JEY4hczmvW5R2VY/aqNpjTCykAfxyUs1lLnj+ejzCXtNT967VUGb7xKAmpOAJHB0Rb
qBRfz31Y5RzrVrjNjmUh2SIMxxBO6wg8lsWfNktWN9tlMQO2I9KPrvYrHKHSY2BdFeJx
PllIp5HH6FEzfzO2HwR13diHzxglhYx57cWT7oErDr+tmQPC06SmVetQRKsTVHdsoHyj
0mYSXjpsvYaPWyhFCuFQ7yPjj80zPuSwS1Pd+oopopgbLEm1cOtVNP2c74JJYoQpS84T
loc9ytR0JtWxrPh6AEIbeI0rFPD63apoR8EK4kf21notlvC0Am5qZ/5d7Y8E3Nbvr9S9
1OHw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1770492795; x=1771097595;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=df8ijbRfioeT8CZoGe3N4QJw20gkAKAkn3jT6C2m2W8=;
b=m409aRNu65TAMwoRcSfO9xWa9VFCqaXq8Z63WAzU4uVBt3KgOADaGmXnhNEpVCzM5U
tLqd4fq826ocKO5gEuNI95Eirio+AZTB4D3dd4TthVd+OxMGj554DNDK5t3xpsT9E8bn
X+aGisveOxnP+b+49eO5kFlFPQQ/4koT31I0pfMMCr1kBSlr/l7XQyzUr+l1YrHPxbqS
9AUSyBxnadKVqNDmXU0T5AWXCxNzkTrgj6H1R3ynGMY2NwEUCEucMRrCz10GT2dLu68r
g0gKaILzjduIsbcXpxSmqlBDSYu8Z7OrnB9og/VqVw8NXuO9WdGj3/QrKD8vz6U3KfV8
/o7g==
X-Forwarded-Encrypted: i=1;
AJvYcCW2H2vXpTXQ7l3SEwty2le67bhy0AVJmFZ1a2DrMcpXailNhGoWA8XKNkl2tKuGcQ/XmcFQTA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxKBj+EAOqcfnhLM6KvKH4ypPM8JlSaicLvR5UbC2z7krtYKiAj
1bi3bFGLXyv1gEiFCMFL7Dd6Eq0Gn3aEeDR2NWOPYZY5DbHWUA3220UG6msO305TjYITFTvtVwr
gN6FwJL+vx+rpv5nqjRcm7lyvKA/6MXs=
X-Gm-Gg: AZuq6aLk2QW+dUfCFlYJrr3T9/k0RB6ze93CrdxyUw19TJLnq1UgloWyOFpdMS1buEQ
RfFI84znIk9D5HoYxNlQk5h8gJHBK11sRJkjT718G/xTWq3O1iItmWaxy4QWtZh7IWAhoXO92EO
nvJ+7D5MGUeNGQGevKtPh3evWN4WK2EbUu1KV8LS03YWWZYcJHmlwmtFT7IKJY1zhHk0ha5gMGk
ds0zp3wRNsP0W7FZSqRP9vXOHP/FbDdlLD0fe9rkp9ud8yTbNbre1lfD0u555Ha2rYAOvm6ap4M
xiujgLJZ+4B0wmk1ldXy/i1SvkMHnEU1d8MHGeJcV+btIv6XuFs=
X-Received: by 2002:a05:6102:1621:b0:5ef:a644:ca4 with SMTP id
ada2fe7eead31-5fae8ba7d44mr1540620137.23.1770492794625; Sat, 07 Feb 2026
11:33:14 -0800 (PST)
MIME-Version: 1.0
References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN>
<CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN>
<868qd4v36l.fsf@HIDDEN>
In-Reply-To: <868qd4v36l.fsf@HIDDEN>
From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>
Date: Sat, 7 Feb 2026 14:33:03 -0500
X-Gm-Features: AZwV_QgFIw5WyeIIjATLHU_17VqV4uGIjjXILdFnoYBwWCacVN4h25Mn3OfQ-yk
Message-ID: <CAN+1HbqdV2oXQjXi07X8hSgX9A_nYOD+rAWHqfm2XCAfxkNtTQ@HIDDEN>
Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake
event package
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: multipart/alternative; boundary="00000000000019e447064a40fa5a"
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 80348
Cc: acohen@HIDDEN, eric@HIDDEN, mail@HIDDEN,
Morgan.J.Smith@HIDDEN, michael.albinus@HIDDEN,
Stefan Monnier <monnier@HIDDEN>, 80348 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 0.0 (/)
--00000000000019e447064a40fa5a
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Thank you for the fast review. Comments interspersed below.
On Sat, Feb 7, 2026 at 1:06=E2=80=AFPM Eli Zaretskii <eliz@HIDDEN> wrote:
> > Cc: Andrew Cohen <acohen@HIDDEN>, Daniel Mendler <mail@HIDDEN=
e
> >,
> > eric@HIDDEN, Michael Albinus <michael.albinus@HIDDEN>,
> > Morgan Smith <Morgan.J.Smith@HIDDEN>
> > From: St=C3=A9phane Marks <shipmints@HIDDEN>
> > Date: Sat, 7 Feb 2026 10:34:58 -0500
> >
> > On Sat, Feb 7, 2026 at 10:32=E2=80=AFAM St=C3=A9phane Marks <shipmints@=
gmail.com>
> wrote:
> >
> > After some delay this year, I finally worked on this package inspired
> by recent improvements Michael
> > made to dbus.
> >
> > This package provides platform-neutral interfaces to block your system
> from entering idle sleep with
> > control over whether the display remains active, and a hook to process
> pre-sleep and post-wake events.
> >
> > Implementations are for D-Bus on GNU/Linux, and for macOS/GNUstep and
> MS-Windows using native
> > APIs.
> >
> > Michael suggests that the gnus sleep API be based on `system-sleep` so
> that it works across other
> > platforms and also consolidates system sleep logic in one place.
> >
> > And just as we introduced an optional `progress-report` to compile.el,
> we can now introduce an optional
> > platform-neutral idle sleep block.
> >
> > Patch incoming when the bug number is assigned.
> >
> > Attached. You'll need recent master or at least this commit
> 89209a83b60c87d97f0c05dbf6cb29ff3cdf3d5a to
> > get the dbus improvements.
>
> Thanks, please see some comments below.
>
> > @cindex @code{sleep-event} event
> > -@item (sleep-event @var{sleep-wake})
> > -This event is injected when the device Emacs is running on enters or
> > -leaves the sleep state. A non-@code{nil} @var{sleep-wake} indicates
> > -entering the sleep state.
> > +@item (sleep-event @var{state})
> > +This event is injected when the device Emacs is running on is about to
> > +enter a sleep state, or has just awoken from one. @var{state} will be
> > +the symbol @code{pre-sleep} or @code{post-wake}.
>
> Why did you need to make this incompatible change? Was there a
> problem leaving the values and meaning of the parameter as they were
> before? AFAIU, there are still only two possible values, so nil and
> non-nil should still do the job, no?
>
sleep-event was created by Michael specifically for this feature (though we
stopped working on it a while ago and I just picked it back up) so it is
purely new and can't be incompatible since it's never been published. When
originally contemplated, it was D-Bus only which uses a somewhat opaque
true/false PrepareForSleep value. I prefer using symbols because it allows
expansion into pre-shutdown and perhaps other related states that might be
of interest that won't fit into a boolean.
> +@noindent
> > +Examples of system sleep functions:
>
> I think this feature is too minor to justify examples in the manual,
> let alone such elaborate examples. We are trying not to make the
> ELisp Reference manual too large (it already prints in two volumes).
>
Fine.
> +(defcustom sleep-event-functions nil
> ^^^^^^^^^^^^^^^^^^^^^
> The manual said "system-sleep-event-functions".
>
I think you're referring to bindings.el which is a hook for the event pump
itself. We will discourage people from using it but as there can be only
one callback per event handler, Michael and I thought it was wise to add a
hook.
> + "Abnormal hook invoked on sleep events.
> > +Each function is called with the event."
>
> The manual described the argument differently.
>
The manual is describing system-sleep not the generic event handler from
bindings.el.
> > +(defun sleep-event-handler (event)
> > + "`sleep-event' EVENT handler."
> > + (declare (completion ignore))
> > + (interactive "e")
> > + (run-hook-with-args 'sleep-event-functions event))
>
> And this function calls the hook not as the ELisp manual said they
> will be called.
>
Ditto. We can trivially get rid of the extra hook if you think
system-sleep should ever be the only subscriber.
> +(require 'dbus)
>
> Shouldn't we load dbus only on systems where DBus is supported?
>
We didn't in system-taskbar but I can try to amend both and make it a
compile-time only require up there and require it explicitly in the dbus
implementation.
> +(defgroup system-sleep nil
> > + "System sleep/wake blocking and event management."
> > + :group 'convenience
>
> Why "convenience"? Isn't there a better parent group to use? And if
> there isn't a better one, how about adding such a group?
> system-interface sounds good, for example.
>
No idea. All ears for one of the keywords that makes more sense. I thought
there were discussions about the state of affairs of keywords and I thought
it wise to reuse.
> +;;;###autoload
> > +(defcustom system-sleep-event-functions nil
> > + "Abnormal hook invoked on system sleep events.
> > +Each function is called with one argument which will be one of these
> > +symbols `pre-sleep' or `post-wake'.
>
> ??? Another user option? Do we need both?
>
See above this is different than in bindings. This hook specifically
addresses a race condition that anyone using the raw events will have to
contend with. Another reason to funnel people into system-sleep (and
convert gnus).
> +Handling `pre-sleep' events should be done as fast as possible. Systems
> > +often grant a very short pre-sleep processing interval, typically
> > +ranging between 2 and 5 seconds. The system may sleep even if your
> > +processing is not complete, so be sure you do as little as possible.
> > +For example, your function could close active connections or serial
> > +ports.
> > +
> > +Handling `post-wake' events offers more leeway. Your function could
> > +reestablish connections.
>
> Please use \\+` to make sure `pre-sleep' and `post-wake' will not be
> shown as links.
>
Done.
> + (progn
> > + (push token system-sleep--sleep-block-tokens)
> > + token)
>
> Since this list of tokens seems to be a data structure that must be
> kept consistent with the system APIs, I think all these push and remq
> calls which manipulate it should run with quit inhibited, and should
> perhaps also handle any errors that could happen, so that the list of
> tokens is always correct.
>
Lemme think about this.
> + (if (memq token system-sleep--sleep-block-tokens)
> > + (progn
> > + (setq system-sleep--sleep-block-tokens
> > + (remq token system-sleep--sleep-block-tokens))
> > + (if (w32-unblock-system-sleep)
> > + t
> > + (warn "Unable to unblock system sleep")
>
> If and when this warning is issued, AFAIU it means that the sleep is
> blocked, but the token of its blocker is lost forever, because it was
> already removed from the list.
If the native APIs fail here (which on ns can only fail if it doesn't know
the token passed to it, and w32 can't fail), the token is useless anyway.
What then the user could do to fix
> this situation? Will, for example, killing Emacs do that?
>
When the Emacs process dies, blocks are released on all platforms. I
mentioned this in the code and in the documentation.
> +(if (and (system-sleep--set-back-end)
> > + (system-sleep--enable))
> > + (add-hook 'sleep-event-functions
> #'system-sleep--sleep-event-function)
>
> If sleep-event-functions is a user option, Emacs should not set its
> value.
>
Definitely not intended to be an advertised user option. We need to get
the sleep events from the native API event pump so that's what we're doing
here. We could instead mandate system-sleep as the only place to get and
process sleep events, get rid of this hook and do this in
system-sleep (keymap-set special-event-map "<sleep-event>"
#'system-sleep--sleep-event-handler)
> --- a/src/w32fns.c
> > +++ b/src/w32fns.c
> > @@ -44,6 +44,7 @@ #define COBJMACROS /* Ask for C definitions for COM.
> */
> > #include <oleidl.h>
> > #include <objidl.h>
> > #include <ole2.h>
> > +#include <powrprof.h> /* For system sleep support. */
>
> Why do we need this header? In my MinGW headers it is absent.
>
I can check to see what it defines and copy whatever is there manually.
I'll do that later when I can get back to my Windows virtual machine.
> +/* We assume SetThreadExecutionState is always available, being Windows
> > + XP+. RegisterSuspendResumeNotification is Windows 8+ so we look th=
is
> > + up. */
>
> We don't yet require Windows XP for the Windows builds of Emacs, so
> SetThreadExecutionState must also be loaded dynamically from its DLL.
>
I'll do that. I actually do not know the minimum version of Windows that
Emacs supports and I assumed it was at least XP.
> +DEFUN ("w32-block-system-sleep",
> > + Fw32_block_system_sleep,
> > + Sw32_block_system_sleep,
> > + 1, 1, 0,
> > + doc: /* Block system idle sleep.
> > +If ALLOW-DISPLAY-SLEEP is non-nil, block the screen from sleeping.
> > +Return a token to unblock this block using `w32-unblock-system-sleep',
> > +or nil if the block fails. */)
> > + (Lisp_Object allow_display_sleep)
> > +{
> > + /* ES_CONTINUOUS keeps the state until cleared. */
> > + EXECUTION_STATE new_state =3D ES_SYSTEM_REQUIRED | ES_CONTINUOUS;
> > + if (NILP (allow_display_sleep))
> > + new_state |=3D ES_DISPLAY_REQUIRED;
> > +
> > + sleep_block_execution_state =3D SetThreadExecutionState (new_state);
> > +
> > + /* One more block. */
> > + ++sleep_block_count;
> > +
> > + /* Synthesize a token. */
> > + return make_fixnum (sleep_block_id);
>
> Shouldn't sleep_block_id be incremented? If not, all the cookies in
> the list of tokens will be identical, no?
>
Yes, thank you. Fixed.
Also, shouldn't this return nil if the call to SetThreadExecutionState
> failed?
>
Done. I could find no evidence of how SetThreadExecutionState can fail so
I didn't bother. I will do this to be complete.
And I'm not sure I understand the effect of calling
> w32-block-system-sleep several times without calling
> w32-unblock-system-sleep. It isn't like the OS counts the number of
> callers and handles this as a reference count, which must be zero for
> the system to be able to sleep, right?
>
The idea is that packages like gnus and compile and the user's own code
will all take blocks simultaneously so they each need to take and release
their locks. Each unblock call decrements the count and when 0 we unblock
the system for real. We manually emulate what Windows could have done for
us and keep a count and assign an id to keep the platform implementations
sufficiently alike to make the ELisp interface pleasant.
> +DEFUN ("w32-unblock-system-sleep",
> > + Fw32_unblock_system_sleep,
> > + Sw32_unblock_system_sleep,
> > + 0, 0, 0,
> > + doc: /* Unblock system idle sleep.
> > +Return non-nil if the TOKEN block was unblocked. */)
> > + (void)
> > +{
> > + /* No blocks to unblock. */
> > + if (sleep_block_count =3D=3D 0)
> > + return Qnil;
>
> This seems wrong: why indicate failure in this trivial case?
>
We can go either way on this. I thought it prudent to indicate failure for
any debugging scenarios we might encounter in the wild.
> + /* One fewer block. */
> > + if (--sleep_block_count =3D=3D 0
> > + && sleep_block_execution_state)
> > + sleep_block_execution_state =3D
> > + SetThreadExecutionState (sleep_block_execution_state
> > + & ~(ES_DISPLAY_REQUIRED |
> ES_SYSTEM_REQUIRED));
> > + return Qt;
>
> And here you return t regardless of whether SetThreadExecutionState
> succeeded or failed. Why?
>
I will do as above and check the return value. Its twin will have
succeeded by definition so this one is likely to succeed.
> +DEFUN ("w32-system-sleep-block-count",
> > + Fw32_system_sleep_block_count,
> > + Sw32_system_sleep_block_count,
> > + 0, 0, 0,
> > + doc: /* Return the w32 sleep block count. */)
> > + (void)
> > +{
> > + return make_fixnum (sleep_block_count);
> > +}
>
> What is the meaning of the return value in the w32 case? See my
> questions above regarding the number of callers.
>
Since we now fixed the counter, it now makes unique tokens.
> +typedef ULONG (CALLBACK *PMY_DEVICE_NOTIFY_CALLBACK_ROUTINE)
> > + (PVOID Context, ULONG Type, PVOID Setting);
> > +
> > +static ULONG
> > +sleep_notification_callback(PVOID _Context, ULONG Type, PVOID _Setting=
)
>
> I think this should use ALIGN_STACK, see w32term.h for the reasons.
>
Done.
> + /* System sleep support. */
> > + DEFSYM (Qpre_sleep, "pre-sleep");
> > + DEFSYM (Qpost_wake, "post-wake");
>
> These symbols should be defined in one place and only once, not
> separately for each system. (And I hope we won't need them at all,
> see above.)
>
Where would you like them to be defined?
-St=C3=A9phane
--00000000000019e447064a40fa5a
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon=
t-family:monospace">Thank you for the fast review.=C2=A0 Comments intersper=
sed below.<br></div></div><br><div class=3D"gmail_quote gmail_quote_contain=
er"><div dir=3D"ltr" class=3D"gmail_attr">On Sat, Feb 7, 2026 at 1:06=E2=80=
=AFPM Eli Zaretskii <<a href=3D"mailto:eliz@HIDDEN">eliz@HIDDEN</a>>=
; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px=
0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">> Cc=
: Andrew Cohen <<a href=3D"mailto:acohen@HIDDEN" target=3D"_blank">acohe=
n@HIDDEN</a>>, Daniel Mendler <<a href=3D"mailto:mail@daniel-mendler.=
de" target=3D"_blank">mail@HIDDEN</a>>,<br>
>=C2=A0 <a href=3D"mailto:eric@HIDDEN" target=3D"_blank">eri=
c@HIDDEN</a>, Michael Albinus <<a href=3D"mailto:michael.alb=
inus@HIDDEN" target=3D"_blank">michael.albinus@HIDDEN</a>>,<br>
>=C2=A0 Morgan Smith <<a href=3D"mailto:Morgan.J.Smith@HIDDEN" t=
arget=3D"_blank">Morgan.J.Smith@HIDDEN</a>><br>
> From: St=C3=A9phane Marks <<a href=3D"mailto:shipmints@HIDDEN" t=
arget=3D"_blank">shipmints@HIDDEN</a>><br>
> Date: Sat, 7 Feb 2026 10:34:58 -0500<br>
> <br>
> On Sat, Feb 7, 2026 at 10:32=E2=80=AFAM St=C3=A9phane Marks <<a hre=
f=3D"mailto:shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a>&=
gt; wrote:<br>
> <br>
>=C2=A0 After some delay this year, I finally worked on this package ins=
pired by recent improvements Michael<br>
>=C2=A0 made to dbus.<br>
> <br>
>=C2=A0 This package provides platform-neutral interfaces to block your =
system from entering idle sleep with<br>
>=C2=A0 control over whether the display remains active, and a hook to p=
rocess pre-sleep and post-wake events.<br>
> <br>
>=C2=A0 Implementations are for D-Bus on GNU/Linux, and for macOS/GNUste=
p and MS-Windows using native<br>
>=C2=A0 APIs.<br>
> <br>
>=C2=A0 Michael suggests that the gnus sleep API be based on `system-sle=
ep` so that it works across other<br>
>=C2=A0 platforms and also consolidates system sleep logic in one place.=
<br>
> <br>
>=C2=A0 And just as we introduced an optional `progress-report` to compi=
le.el, we can now introduce an optional<br>
>=C2=A0 platform-neutral idle sleep block.<br>
> <br>
>=C2=A0 Patch incoming when the bug number is assigned.<br>
> <br>
> Attached.=C2=A0 You'll need recent master or at least this commit =
89209a83b60c87d97f0c05dbf6cb29ff3cdf3d5a to<br>
> get the dbus improvements.<br>
<br>
Thanks, please see some comments below.<br>
<br>
>=C2=A0 @cindex @code{sleep-event} event<br>
> -@item (sleep-event @var{sleep-wake})<br>
> -This event is injected when the device Emacs is running on enters or<=
br>
> -leaves the sleep state.=C2=A0 A non-@code{nil} @var{sleep-wake} indic=
ates<br>
> -entering the sleep state.<br>
> +@item (sleep-event @var{state})<br>
> +This event is injected when the device Emacs is running on is about t=
o<br>
> +enter a sleep state, or has just awoken from one.=C2=A0 @var{state} w=
ill be<br>
> +the symbol @code{pre-sleep} or @code{post-wake}.<br>
<br>
Why did you need to make this incompatible change?=C2=A0 Was there a<br>
problem leaving the values and meaning of the parameter as they were<br>
before?=C2=A0 AFAIU, there are still only two possible values, so nil and<b=
r>
non-nil should still do the job, no?<br></blockquote><div><br></div><div><d=
iv class=3D"gmail_default" style=3D"font-family:monospace">sleep-event was =
created by Michael specifically for this feature (though we stopped working=
on it a while ago and I just picked it back up) so it is purely new and ca=
n't be incompatible since it's never been published.=C2=A0 When ori=
ginally contemplated, it was D-Bus only which=C2=A0uses a somewhat opaque t=
rue/false PrepareForSleep value.=C2=A0 I prefer using symbols because it al=
lows expansion into pre-shutdown and perhaps other related states that migh=
t be of interest that won't fit into a boolean.</div></div><div class=
=3D"gmail_default" style=3D"font-family:monospace"><br></div><blockquote cl=
ass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid=
rgb(204,204,204);padding-left:1ex">
> +@noindent<br>
> +Examples of system sleep functions:<br>
<br>
I think this feature is too minor to justify examples in the manual,<br>
let alone such elaborate examples.=C2=A0 We are trying not to make the<br>
ELisp Reference manual too large (it already prints in two volumes).<br></b=
lockquote><div><br></div><div><div class=3D"gmail_default" style=3D"font-fa=
mily:monospace">Fine.</div></div><div><br></div><blockquote class=3D"gmail_=
quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,=
204);padding-left:1ex">
> +(defcustom sleep-event-functions nil<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ^^^^^^^^^^^^^^^^^^^^^<br>
The manual said "system-sleep-event-functions".<br></blockquote><=
div><br></div><div><div class=3D"gmail_default" style=3D"font-family:monosp=
ace">I think you're referring to bindings.el which is a hook for the ev=
ent pump itself.=C2=A0 We will discourage people from using it but as there=
can be only one callback per event handler, Michael and I thought it was w=
ise to add a hook.<span style=3D"font-family:Arial,Helvetica,sans-serif">=
=C2=A0</span></div></div><div class=3D"gmail_default" style=3D"font-family:=
monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif"><br></spa=
n></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex=
;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> +=C2=A0 "Abnormal hook invoked on sleep events.<br>
> +Each function is called with the event."<br>
<br>
The manual described the argument differently.<br></blockquote><div><br></d=
iv><div><div class=3D"gmail_default" style=3D"font-family:monospace">The ma=
nual is describing system-sleep not the generic event handler from bindings=
.el.</div></div><div class=3D"gmail_default" style=3D"font-family:monospace=
"></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex=
;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> +(defun sleep-event-handler (event)<br>
> +=C2=A0 "`sleep-event' EVENT handler."<br>
> +=C2=A0 (declare (completion ignore))<br>
> +=C2=A0 (interactive "e")<br>
> +=C2=A0 (run-hook-with-args 'sleep-event-functions event))<br>
<br>
And this function calls the hook not as the ELisp manual said they<br>
will be called.<br></blockquote><div><br></div><div class=3D"gmail_default"=
style=3D"font-family:monospace">Ditto.=C2=A0 We can trivially get rid of t=
he extra hook if you think system-sleep should ever be the only subscriber.=
</div><div class=3D"gmail_default" style=3D"font-family:monospace"><br></di=
v><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;borde=
r-left:1px solid rgb(204,204,204);padding-left:1ex">
> +(require 'dbus)<br>
<br>
Shouldn't we load dbus only on systems where DBus is supported?<br></bl=
ockquote><div><br></div><div><div class=3D"gmail_default" style=3D"font-fam=
ily:monospace">We didn't in system-taskbar but I can try to amend both =
and make it a compile-time only require up there and require it explicitly =
in the dbus implementation.</div></div><div><br></div><blockquote class=3D"=
gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(20=
4,204,204);padding-left:1ex">
> +(defgroup system-sleep nil<br>
> +=C2=A0 "System sleep/wake blocking and event management."<b=
r>
> +=C2=A0 :group 'convenience<br>
<br>
Why "convenience"?=C2=A0 Isn't there a better parent group to=
use?=C2=A0 And if<br>
there isn't a better one, how about adding such a group?<br>
system-interface sounds good, for example.<br></blockquote><div><br></div><=
div><div class=3D"gmail_default" style=3D"font-family:monospace">No idea. A=
ll ears for one of the keywords that makes more sense.=C2=A0 I thought ther=
e were discussions about the state of affairs of keywords and I thought it =
wise to reuse.</div></div><div><br></div><blockquote class=3D"gmail_quote" =
style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);pa=
dding-left:1ex">
> +;;;###autoload<br>
> +(defcustom system-sleep-event-functions nil<br>
> +=C2=A0 "Abnormal hook invoked on system sleep events.<br>
> +Each function is called with one argument which will be one of these<=
br>
> +symbols `pre-sleep' or `post-wake'.<br>
<br>
??? Another user option?=C2=A0 Do we need both?<br></blockquote><div><br></=
div><div><div class=3D"gmail_default" style=3D"font-family:monospace">See a=
bove this is different than=C2=A0in bindings.=C2=A0 This hook specifically =
addresses a race condition that anyone using the raw events will have to co=
ntend with.=C2=A0 Another reason to funnel people into system-sleep (and co=
nvert gnus).</div></div><div><br></div><blockquote class=3D"gmail_quote" st=
yle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padd=
ing-left:1ex">
> +Handling `pre-sleep' events should be done as fast as possible.=
=C2=A0 Systems<br>
> +often grant a very short pre-sleep processing interval, typically<br>
> +ranging between 2 and 5 seconds.=C2=A0 The system may sleep even if y=
our<br>
> +processing is not complete, so be sure you do as little as possible.<=
br>
> +For example, your function could close active connections or serial<b=
r>
> +ports.<br>
> +<br>
> +Handling `post-wake' events offers more leeway.=C2=A0 Your functi=
on could<br>
> +reestablish connections.<br>
<br>
Please use \\+` to make sure `pre-sleep' and `post-wake' will not b=
e<br>
shown as links.<br></blockquote><div><br></div><div class=3D"gmail_default"=
style=3D"font-family:monospace">Done.</div><div class=3D"gmail_default" st=
yle=3D"font-family:monospace"><br></div><blockquote class=3D"gmail_quote" s=
tyle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);pad=
ding-left:1ex">
> +=C2=A0 =C2=A0 =C2=A0 (progn<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (push token system-sleep--sleep-block-tok=
ens)<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 token)<br>
<br>
Since this list of tokens seems to be a data structure that must be<br>
kept consistent with the system APIs, I think all these push and remq<br>
calls which manipulate it should run with quit inhibited, and should<br>
perhaps also handle any errors that could happen, so that the list of<br>
tokens is always correct.<br></blockquote><div><br></div><div><div class=3D=
"gmail_default" style=3D"font-family:monospace">Lemme think about this.</di=
v></div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0p=
x 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> +=C2=A0 (if (memq token system-sleep--sleep-block-tokens)<br>
> +=C2=A0 =C2=A0 =C2=A0 (progn<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq system-sleep--sleep-block-tokens<br=
>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (remq token system-s=
leep--sleep-block-tokens))<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (if (w32-unblock-system-sleep)<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 t<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (warn "Unable to unblock syst=
em sleep")<br>
<br>
If and when this warning is issued, AFAIU it means that the sleep is<br>
blocked, but the token of its blocker is lost forever, because it was<br>
already removed from the list.</blockquote><div><br></div><div><div class=
=3D"gmail_default" style=3D"font-family:monospace">If the native APIs fail =
here (which on ns can only fail if it doesn't know the token passed to =
it, and w32 can't fail), the token is useless anyway.</div></div><div><=
br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8e=
x;border-left:1px solid rgb(204,204,204);padding-left:1ex">What then the us=
er could do to fix<br>
this situation?=C2=A0 Will, for example, killing Emacs do that?<br></blockq=
uote><div><br></div><div><div class=3D"gmail_default" style=3D"font-family:=
monospace">When the Emacs process dies, blocks are released on all platform=
s.=C2=A0 I mentioned this in the code and in the documentation.</div></div>=
<div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0p=
x 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> +(if (and (system-sleep--set-back-end)<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(system-sleep--enable))<br>
> +=C2=A0 =C2=A0 (add-hook 'sleep-event-functions #'system-sleep=
--sleep-event-function)<br>
<br>
If sleep-event-functions is a user option, Emacs should not set its<br>
value.<br></blockquote><div><br></div><div><div class=3D"gmail_default" sty=
le=3D"font-family:monospace">Definitely not intended to be an advertised us=
er option.=C2=A0 We need to get the sleep events from the native API event =
pump so that's what we're doing here.=C2=A0 We could instead mandat=
e system-sleep as the only place to get and process sleep events, get rid o=
f this hook and do this in system-sleep=C2=A0(keymap-set special-event-map =
"<sleep-event>" #'system-sleep--sleep-event-handler)</d=
iv></div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0=
px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> --- a/src/w32fns.c<br>
> +++ b/src/w32fns.c<br>
> @@ -44,6 +44,7 @@ #define COBJMACROS /* Ask for C definitions for COM.=
=C2=A0 */<br>
>=C2=A0 #include <oleidl.h><br>
>=C2=A0 #include <objidl.h><br>
>=C2=A0 #include <ole2.h><br>
> +#include <powrprof.h> /* For system sleep support.=C2=A0 */<br>
<br>
Why do we need this header?=C2=A0 In my MinGW headers it is absent.<br></bl=
ockquote><div><br></div><div><div class=3D"gmail_default" style=3D"font-fam=
ily:monospace">I can check to see what it defines and copy whatever is ther=
e manually.=C2=A0 I'll do that later when I can get back to my Windows =
virtual machine.</div></div><div><br></div><blockquote class=3D"gmail_quote=
" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);=
padding-left:1ex">
> +/* We assume SetThreadExecutionState is always available, being Windo=
ws<br>
> +=C2=A0 =C2=A0XP+.=C2=A0 RegisterSuspendResumeNotification is Windows =
8+ so we look this<br>
> +=C2=A0 =C2=A0up.=C2=A0 */<br>
<br>
We don't yet require Windows XP for the Windows builds of Emacs, so<br>
SetThreadExecutionState must also be loaded dynamically from its DLL.<br></=
blockquote><div><br></div><div><div class=3D"gmail_default" style=3D"font-f=
amily:monospace">I'll do that.=C2=A0 I actually do not know the minimum=
version of Windows that Emacs supports and I assumed it was at least XP.</=
div></div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:=
0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> +DEFUN ("w32-block-system-sleep",<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Fw32_block_system_sleep,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Sw32_block_system_sleep,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A01, 1, 0,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0doc: /* Block system idle sleep.<br>
> +If ALLOW-DISPLAY-SLEEP is non-nil, block the screen from sleeping.<br=
>
> +Return a token to unblock this block using `w32-unblock-system-sleep&=
#39;,<br>
> +or nil if the block fails.=C2=A0 */)<br>
> +=C2=A0 (Lisp_Object allow_display_sleep)<br>
> +{<br>
> +=C2=A0 /* ES_CONTINUOUS keeps the state until cleared.=C2=A0 */<br>
> +=C2=A0 EXECUTION_STATE new_state =3D ES_SYSTEM_REQUIRED | ES_CONTINUO=
US;<br>
> +=C2=A0 if (NILP (allow_display_sleep))<br>
> +=C2=A0 =C2=A0 new_state |=3D ES_DISPLAY_REQUIRED;<br>
> +<br>
> +=C2=A0 sleep_block_execution_state =3D SetThreadExecutionState (new_s=
tate);<br>
> +<br>
> +=C2=A0 /* One more block.=C2=A0 */<br>
> +=C2=A0 ++sleep_block_count;<br>
> +<br>
> +=C2=A0 /* Synthesize a token.=C2=A0 */<br>
> +=C2=A0 return make_fixnum (sleep_block_id);<br>
<br>
Shouldn't sleep_block_id be incremented?=C2=A0 If not, all the cookies =
in<br>
the list of tokens will be identical, no?<br></blockquote><div><br></div><d=
iv><div class=3D"gmail_default" style=3D"font-family:monospace">Yes, thank =
you.=C2=A0 Fixed.</div></div><div><br></div><blockquote class=3D"gmail_quot=
e" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204)=
;padding-left:1ex">
Also, shouldn't this return nil if the call to SetThreadExecutionState<=
br>
failed?<br></blockquote><div><br></div><div><div class=3D"gmail_default" st=
yle=3D""><font face=3D"monospace">Done.=C2=A0 I could find no evidence of h=
ow=C2=A0SetThreadExecutionState can fail so I didn't bother.=C2=A0 I wi=
ll do this to be complete.</font></div></div><div><br></div><blockquote cla=
ss=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid =
rgb(204,204,204);padding-left:1ex">
And I'm not sure I understand the effect of calling<br>
w32-block-system-sleep several times without calling<br>
w32-unblock-system-sleep.=C2=A0 It isn't like the OS counts the number =
of<br>
callers and handles this as a reference count, which must be zero for<br>
the system to be able to sleep, right?<br></blockquote><div><br></div><div>=
<div class=3D"gmail_default" style=3D"font-family:monospace">The idea is th=
at packages like gnus and compile and the user's own code will all take=
blocks simultaneously so they each need to take and release their locks.=
=C2=A0 Each unblock call decrements the count and when 0 we unblock the sys=
tem for real.=C2=A0 We manually emulate what Windows could have done for us=
and keep a count and assign an id to keep the platform implementations suf=
ficiently alike to make the ELisp interface pleasant.</div></div><div class=
=3D"gmail_default" style=3D"font-family:monospace"><br></div><blockquote cl=
ass=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid=
rgb(204,204,204);padding-left:1ex">
> +DEFUN ("w32-unblock-system-sleep",<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Fw32_unblock_system_sleep,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Sw32_unblock_system_sleep,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A00, 0, 0,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0doc: /* Unblock system idle sleep.<br>
> +Return non-nil if the TOKEN block was unblocked.=C2=A0 */)<br>
> +=C2=A0 (void)<br>
> +{<br>
> +=C2=A0 /* No blocks to unblock.=C2=A0 */<br>
> +=C2=A0 if (sleep_block_count =3D=3D 0)<br>
> +=C2=A0 =C2=A0 return Qnil;<br>
<br>
This seems wrong: why indicate failure in this trivial case?<br></blockquot=
e><div><br></div><div><div class=3D"gmail_default" style=3D"font-family:mon=
ospace">We can go either way on this.=C2=A0 I thought it prudent to indicat=
e failure for any debugging scenarios we might encounter in the wild.</div>=
</div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px =
0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> +=C2=A0 /* One fewer block.=C2=A0 */<br>
> +=C2=A0 if (--sleep_block_count =3D=3D 0<br>
> +=C2=A0 =C2=A0 =C2=A0 && sleep_block_execution_state)<br>
> +=C2=A0 =C2=A0 sleep_block_execution_state =3D<br>
> +=C2=A0 =C2=A0 =C2=A0 SetThreadExecutionState (sleep_block_execution_s=
tate<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 & ~(ES_DISPLAY_REQUIRED | ES_SYSTEM_REQUIR=
ED));<br>
> +=C2=A0 return Qt;<br>
<br>
And here you return t regardless of whether SetThreadExecutionState<br>
succeeded or failed.=C2=A0 Why?<br></blockquote><div><br></div><div><div cl=
ass=3D"gmail_default" style=3D"font-family:monospace">I will do as above an=
d check the return value.=C2=A0 Its twin will have succeeded by definition =
so this one is likely to succeed.</div></div><div><br></div><blockquote cla=
ss=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid =
rgb(204,204,204);padding-left:1ex">
> +DEFUN ("w32-system-sleep-block-count",<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Fw32_system_sleep_block_count,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0Sw32_system_sleep_block_count,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A00, 0, 0,<br>
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0doc: /* Return the w32 sleep block count.=
=C2=A0 */)<br>
> +=C2=A0 (void)<br>
> +{<br>
> +=C2=A0 return make_fixnum (sleep_block_count);<br>
> +}<br>
<br>
What is the meaning of the return value in the w32 case?=C2=A0 See my<br>
questions above regarding the number of callers.<br></blockquote><div><br><=
/div><div><div class=3D"gmail_default" style=3D"font-family:monospace">Sinc=
e we now fixed the counter, it now makes unique tokens.</div></div><div><br=
></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;=
border-left:1px solid rgb(204,204,204);padding-left:1ex">
> +typedef ULONG (CALLBACK *PMY_DEVICE_NOTIFY_CALLBACK_ROUTINE)<br>
> +=C2=A0 (PVOID Context,=C2=A0 ULONG Type,=C2=A0 PVOID Setting);<br>
> +<br>
> +static ULONG<br>
> +sleep_notification_callback(PVOID _Context, ULONG Type, PVOID _Settin=
g)<br>
<br>
I think this should use ALIGN_STACK, see w32term.h for the reasons.<br></bl=
ockquote><div><br></div><div><div class=3D"gmail_default" style=3D"font-fam=
ily:monospace">Done.</div></div><div><br></div><blockquote class=3D"gmail_q=
uote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,2=
04);padding-left:1ex">
> +=C2=A0 /* System sleep support.=C2=A0 */<br>
> +=C2=A0 DEFSYM (Qpre_sleep, "pre-sleep");<br>
> +=C2=A0 DEFSYM (Qpost_wake, "post-wake");<br>
<br>
These symbols should be defined in one place and only once, not<br>
separately for each system.=C2=A0 (And I hope we won't need them at all=
,<br>
see above.)<br></blockquote><div><br></div><div class=3D"gmail_default" sty=
le=3D"font-family:monospace">Where would you like them to be defined?</div>=
<div class=3D"gmail_default" style=3D"font-family:monospace"><br></div><div=
class=3D"gmail_default" style=3D"font-family:monospace">-St=C3=A9phane</di=
v></div></div>
--00000000000019e447064a40fa5a--
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.
Received: (at 80348) by debbugs.gnu.org; 7 Feb 2026 18:45:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 07 13:45:12 2026
Received: from localhost ([127.0.0.1]:38567 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vonIt-0006Mn-RX
for submit <at> debbugs.gnu.org; Sat, 07 Feb 2026 13:45:12 -0500
Received: from mout.gmx.net ([212.227.17.22]:58113)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <michael.albinus@HIDDEN>)
id 1vonIr-0006MY-FP
for 80348 <at> debbugs.gnu.org; Sat, 07 Feb 2026 13:45:10 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de;
s=s31663417; t=1770489870; x=1771094670; i=michael.albinus@HIDDEN;
bh=a5q+EfrYfUjHF4cIqkWkY2Yese+7xI/A29zXf/DoffA=;
h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date:
Message-ID:MIME-Version:Content-Type:cc:content-transfer-encoding:
content-type:date:from:message-id:mime-version:reply-to:subject:
to;
b=MgrrEkXi3CjpczWLfrcVQ/YpxeQB0pq+SDOZo17LIAjE1wQ9JuxlKOtslJUVdkdw
gwtFHsjqzpFqm43jVl01wKxn6eptOJuiMPsWyIiM7IqP0xOfj2Yu01xze/eB2/hLi
dNH8y26j7NA1JMl+0XsP4ZTIa429dS4Z8EpCTM9JMEQE+2c6UCNPGY6xCkt41UoFH
eCgVG40WCMYQvjcO1VlJc0e9SJ49e5e2uM/TYJzM0h3FEhsbODCz+3Fjw0Q9wWD08
VZyf7VZ24FxbNbVl0Z/7a/SAGH1hPyteq27bO+JvMKrEtJdyJiYkd9haLUfURWGEH
3I20jY9UhP9iH/TODw==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from gandalf.gmx.de ([185.89.39.12]) by mail.gmx.net (mrgmx105
[212.227.17.168]) with ESMTPSA (Nemesis) id 1MBm1U-1vyivK0edQ-008IB4; Sat, 07
Feb 2026 19:44:30 +0100
From: Michael Albinus <michael.albinus@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake
event package
In-Reply-To: <868qd4v36l.fsf@HIDDEN>
References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN>
<CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN>
<868qd4v36l.fsf@HIDDEN>
Date: Sat, 07 Feb 2026 19:44:27 +0100
Message-ID: <87pl6gcs1g.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Provags-ID: V03:K1:XcO347dw2sDBn0JzZJOeHiJn5+tpnPRMSNAKjScwy98+9Me+MOr
m3iFj5IAh3j4BaMwnCI8erfvMBFtPfwqYRIdvJLveLzhxY1bdYts8E6tIZr7DenbY4ctyEk
SUeRCAnFcM35jldIhYk9YUjCStOQYHjuoqTHgoAJxP0HpPaOfIjmvjFFqALdA8eeLtXnACA
mOZqUQhd+1yDnH2mXKRVA==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:4MJjOf2oaeI=;9JH3p5EijtuuViK1JRpDBU0PPBv
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
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 80348
Cc: acohen@HIDDEN, eric@HIDDEN, mail@HIDDEN,
Morgan.J.Smith@HIDDEN,
=?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN>, 80348 <at> debbugs.gnu.org,
Stefan Monnier <monnier@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)
Eli Zaretskii <eliz@HIDDEN> writes:
Hi Eli,
>> @cindex @code{sleep-event} event
>> -@item (sleep-event @var{sleep-wake})
>> -This event is injected when the device Emacs is running on enters or
>> -leaves the sleep state. A non-@code{nil} @var{sleep-wake} indicates
>> -entering the sleep state.
>> +@item (sleep-event @var{state})
>> +This event is injected when the device Emacs is running on is about to
>> +enter a sleep state, or has just awoken from one. @var{state} will be
>> +the symbol @code{pre-sleep} or @code{post-wake}.
>
> Why did you need to make this incompatible change? Was there a
> problem leaving the values and meaning of the parameter as they were
> before? AFAIU, there are still only two possible values, so nil and
> non-nil should still do the job, no?
Yes, it is an incompatible change. But OTOH, sleep-event hasn't been
used since it was introduced a while ago. I've checked all GNU ELPA and
NonGNU ELPA packages.
Best regards, Michael.
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.
Received: (at 80348) by debbugs.gnu.org; 7 Feb 2026 18:32:29 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 07 13:32:28 2026
Received: from localhost ([127.0.0.1]:38483 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1von6a-0005mI-EG
for submit <at> debbugs.gnu.org; Sat, 07 Feb 2026 13:32:28 -0500
Received: from mout.gmx.net ([212.227.17.22]:38725)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <michael.albinus@HIDDEN>)
id 1von6X-0005lo-OY
for 80348 <at> debbugs.gnu.org; Sat, 07 Feb 2026 13:32:26 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de;
s=s31663417; t=1770489112; x=1771093912; i=michael.albinus@HIDDEN;
bh=9jOcdzYMFSRg9XZ4NPStoiT/XMJfKlBn2ZT/4zeeaa0=;
h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date:
Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:cc:
content-transfer-encoding:content-type:date:from:message-id:
mime-version:reply-to:subject:to;
b=f1gWFmxXfuRRPKpMkuI2U5CLzlRgQuBnWK97hay6MPFmQ5wN+r3rU3qFEwo8ab5b
t4rDu1xwjI24dN6rozgKOaB2582Tq6Xhgy8KcADLDfuPITuiboldDOkJ7WnAuAlgb
63TGMiKTIgnOHHy/YdPoiym+DfnQvMLFask+FF6AOvB4QTavXMIT7VnjkF/6vGEaZ
XGFTOusQwYKwS2kYSj632xjgEmGXuhl5tGuz1UAIoC/YE2a7S2rmGBlZbq2t06Gv9
WIlZmk3g8LPAiLKLV6xnq2VkDRSyQ4KEIFtaNRkjr7FtF0VVLlKpYEXZhQaTR9+hc
TaAkeL0Kz96pp1Qegw==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from gandalf.gmx.de ([185.89.39.12]) by mail.gmx.net (mrgmx104
[212.227.17.168]) with ESMTPSA (Nemesis) id 1MdvmY-1vDnv40dWg-00kkfR; Sat, 07
Feb 2026 19:31:52 +0100
From: Michael Albinus <michael.albinus@HIDDEN>
To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN>
Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake
event package
In-Reply-To: <CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN>
References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN>
<CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN>
Date: Sat, 07 Feb 2026 19:31:48 +0100
Message-ID: <87tsvscsmj.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Provags-ID: V03:K1:pKpQNciTyETSmUjB7kbQmJqf4GcmQo0h9ChtgAPCD6BoaLRWMZe
FalpHTc8xTYZgrlJUitVKwNQoHUS8FANcMwQSflrLi/bVZzi1kxYDLtyWfl4mlGPVMDfQYG
251TaeVw/7EYPiXcfI3iryl3qSyabfh4+tG3HmnMbUwlOhxeVmnHDJqoGHL+daGup4cRV6O
YkjqLhqXe/wZanpvOpGkg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:XIAbDBwAHCc=;5GrZBogQ9/hvYrZtH55Y4YyYqEI
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
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 80348
Cc: 80348 <at> debbugs.gnu.org, Andrew Cohen <acohen@HIDDEN>,
eric@HIDDEN, Morgan Smith <Morgan.J.Smith@HIDDEN>,
Daniel Mendler <mail@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)
St=C3=A9phane Marks <shipmints@HIDDEN> writes:
Hi St=C3=A9phane,
Some remarks on the code:
> diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
>
> +@group
> +(defun my/system-sleep-sleep-event-function (event)
> + (pcase event
> + ('pre-sleep
> + (message "BEDTIME"))
> + ('post-wake
> + (message "WAKE UP"))))
> +
> +(add-hook 'system-sleep-event-functions
> + #'my/system-sleep-sleep-event-function)
> +@end group
> +@end lisp
An event has the form '(sleep-event STATE)'. So you must do
--8<---------------cut here---------------start------------->8---
(pcase (cadr event)
--8<---------------cut here---------------end--------------->8---
If you offer the defstruct sleep-event (see below), you could recommend
instead
--8<---------------cut here---------------start------------->8---
(pcase (sleep-event-state event)
--8<---------------cut here---------------end--------------->8---
> diff --git a/lisp/system-sleep.el b/lisp/system-sleep.el
A sleep event has the form '(sleep-event STATE)'. So we can add a
'sleep-event' defstruct for convenience:
--8<---------------cut here---------------start------------->8---
(cl-defstruct (sleep-event (:type list) :named) state)
--8<---------------cut here---------------end--------------->8---
This gives us for free three functions: make-sleep-event, sleep-event-p,
and sleep-event-state. This makes it ease to create, check, and access
sleep events. And we don't need to think about the list form, even if
the sleep-event will be extended later.
> +(defcustom system-sleep-event-functions nil
> + "Abnormal hook invoked on system sleep events.
> +Each function is called with one argument which will be one of these
> +symbols `pre-sleep' or `post-wake'.
"Each function is called with one argument EVENT, a sleep event. The
state of such sleep event can be retrieved via `(sleep-event-state
EVENT)'. It will be one of these symbols `pre-sleep' or `post-wake'."
> +(defconst system-sleep--dbus-sleep-inhibitor-types "sleep"
> + "This is a colon-separated list of options.
> +The default is \"sleep\" which is compatible with the other supported
> +`system-sleep' platforms. This could also be
> +\"sleep:shutdown\". Shutdown is available only on D-Bus systems.")
I still don't understand the docstring. Do you encourage users to change
system-sleep--dbus-sleep-inhibitor-types to another string? In this
case, this must be a defvar.
> +(defun system-sleep--dbus-prepare-for-sleep-callback (sleep-or-wake)
> + (cond (sleep-or-wake
> + (insert-special-event '(sleep-event pre-sleep)))
--8<---------------cut here---------------start------------->8---
(insert-special-event (make-sleep-event :state 'pre-sleep)))
--8<---------------cut here---------------end--------------->8---
> + (t
> + (insert-special-event '(sleep-event post-wake)))))
--8<---------------cut here---------------start------------->8---
(insert-special-event (make-sleep-event :state 'post-wake)))
--8<---------------cut here---------------end--------------->8---
> +(defun system-sleep--dbus-prepare-for-sleep-function (event)
> + (pcase event
(pcase (sleep-event-state event)
> diff --git a/src/nsfns.m b/src/nsfns.m
> +#ifdef NS_IMPL_COCOA
> + NSTRACE ("[EmacsApp systemWillSleep:]");
> + struct input_event ie;
> + EVENT_INIT (ie);
> + ie.kind =3D SLEEP_EVENT;
> + ie.arg =3D Qpre_sleep;
> + kbd_buffer_store_event (&ie);
> +#endif
A sleep event is a list, so I guess we need
ie.arg =3D (list1 Qpre_sleep);
> +#ifdef NS_IMPL_COCOA
> + NSTRACE ("[EmacsApp systemDidWake:]");
> + struct input_event ie;
> + EVENT_INIT (ie);
> + ie.kind =3D SLEEP_EVENT;
> + ie.arg =3D Qpost_wake;
> + kbd_buffer_store_event (&ie);
> +#endif
ditto.
> diff --git a/src/w32fns.c b/src/w32fns.c
> + switch (Type)
> + {
> + case PBT_APMRESUMEAUTOMATIC:
> + /* Ignore this event. No user is present. */
> + break;
> + case PBT_APMSUSPEND:
> + ie.arg =3D Qpre_sleep;
> + kbd_buffer_store_event (&ie);
> + break;
> + case PBT_APMRESUMESUSPEND:
> + ie.arg =3D Qpost_wake;
> + kbd_buffer_store_event (&ie);
> + break;
> + }
> + return 0;
ditto.
Best regards, Michael.
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.
Received: (at 80348) by debbugs.gnu.org; 7 Feb 2026 18:07:04 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 07 13:07:04 2026
Received: from localhost ([127.0.0.1]:38179 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vomhz-0004Ja-M4
for submit <at> debbugs.gnu.org; Sat, 07 Feb 2026 13:07:04 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:44050)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vomhx-0004J4-4A
for 80348 <at> debbugs.gnu.org; Sat, 07 Feb 2026 13:07:02 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
id 1vomhk-0005KR-Pi; Sat, 07 Feb 2026 13:06:49 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
Date; bh=qQrU1+ex9I1OrRJdOeLqTv8c89BzJ0Nprst+oDCw3+g=; b=P957Tl1DJCK6sd+bkCdL
vPIHx2K94LK6AROquourA9nmnJDMYS2HrcGROS+S3nZfYyTyyrAeHU46p/YX+o7QdPrrZIOvvlQ53
gKwGnEKDsF8lTrbBYOsYaOglCTFB+zY+6aq7BRk1i1w/IMDyWZT60xUMOTwV38+QGIpVLmWyXArV1
5gEXxtey80sB+g7/eFI8l2U7ElVsOw1AShz1yXrb12T3qNXgxRtQyFvEDV1FfACdLhNAStJyAM5Or
36Dma5NyviwMJYPpGPMNU0t4DzdxyhB6SQtXYrTShvG4KxH4A8LTELZWThSWHUrnrmM+vJnawSP9T
VPZhpr0dblFlaA==;
Date: Sat, 07 Feb 2026 20:06:26 +0200
Message-Id: <868qd4v36l.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN>,
Stefan Monnier <monnier@HIDDEN>
In-Reply-To: <CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN>
(message from =?utf-8?Q?St=C3=A9phane?= Marks on Sat, 7 Feb 2026 10:34:58
-0500)
Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake event
package
References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN>
<CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 80348
Cc: acohen@HIDDEN, eric@HIDDEN, mail@HIDDEN,
Morgan.J.Smith@HIDDEN, michael.albinus@HIDDEN, 80348 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)
> Cc: Andrew Cohen <acohen@HIDDEN>, Daniel Mendler <mail@HIDDEN>,
> eric@HIDDEN, Michael Albinus <michael.albinus@HIDDEN>,
> Morgan Smith <Morgan.J.Smith@HIDDEN>
> From: Stéphane Marks <shipmints@HIDDEN>
> Date: Sat, 7 Feb 2026 10:34:58 -0500
>
> On Sat, Feb 7, 2026 at 10:32 AM Stéphane Marks <shipmints@HIDDEN> wrote:
>
> After some delay this year, I finally worked on this package inspired by recent improvements Michael
> made to dbus.
>
> This package provides platform-neutral interfaces to block your system from entering idle sleep with
> control over whether the display remains active, and a hook to process pre-sleep and post-wake events.
>
> Implementations are for D-Bus on GNU/Linux, and for macOS/GNUstep and MS-Windows using native
> APIs.
>
> Michael suggests that the gnus sleep API be based on `system-sleep` so that it works across other
> platforms and also consolidates system sleep logic in one place.
>
> And just as we introduced an optional `progress-report` to compile.el, we can now introduce an optional
> platform-neutral idle sleep block.
>
> Patch incoming when the bug number is assigned.
>
> Attached. You'll need recent master or at least this commit 89209a83b60c87d97f0c05dbf6cb29ff3cdf3d5a to
> get the dbus improvements.
Thanks, please see some comments below.
> @cindex @code{sleep-event} event
> -@item (sleep-event @var{sleep-wake})
> -This event is injected when the device Emacs is running on enters or
> -leaves the sleep state. A non-@code{nil} @var{sleep-wake} indicates
> -entering the sleep state.
> +@item (sleep-event @var{state})
> +This event is injected when the device Emacs is running on is about to
> +enter a sleep state, or has just awoken from one. @var{state} will be
> +the symbol @code{pre-sleep} or @code{post-wake}.
Why did you need to make this incompatible change? Was there a
problem leaving the values and meaning of the parameter as they were
before? AFAIU, there are still only two possible values, so nil and
non-nil should still do the job, no?
> +@noindent
> +Examples of system sleep functions:
I think this feature is too minor to justify examples in the manual,
let alone such elaborate examples. We are trying not to make the
ELisp Reference manual too large (it already prints in two volumes).
> +(defcustom sleep-event-functions nil
^^^^^^^^^^^^^^^^^^^^^
The manual said "system-sleep-event-functions".
> + "Abnormal hook invoked on sleep events.
> +Each function is called with the event."
The manual described the argument differently.
> +(defun sleep-event-handler (event)
> + "`sleep-event' EVENT handler."
> + (declare (completion ignore))
> + (interactive "e")
> + (run-hook-with-args 'sleep-event-functions event))
And this function calls the hook not as the ELisp manual said they
will be called.
> +(require 'dbus)
Shouldn't we load dbus only on systems where DBus is supported?
> +(defgroup system-sleep nil
> + "System sleep/wake blocking and event management."
> + :group 'convenience
Why "convenience"? Isn't there a better parent group to use? And if
there isn't a better one, how about adding such a group?
system-interface sounds good, for example.
> +;;;###autoload
> +(defcustom system-sleep-event-functions nil
> + "Abnormal hook invoked on system sleep events.
> +Each function is called with one argument which will be one of these
> +symbols `pre-sleep' or `post-wake'.
??? Another user option? Do we need both?
> +Handling `pre-sleep' events should be done as fast as possible. Systems
> +often grant a very short pre-sleep processing interval, typically
> +ranging between 2 and 5 seconds. The system may sleep even if your
> +processing is not complete, so be sure you do as little as possible.
> +For example, your function could close active connections or serial
> +ports.
> +
> +Handling `post-wake' events offers more leeway. Your function could
> +reestablish connections.
Please use \\+` to make sure `pre-sleep' and `post-wake' will not be
shown as links.
> + (progn
> + (push token system-sleep--sleep-block-tokens)
> + token)
Since this list of tokens seems to be a data structure that must be
kept consistent with the system APIs, I think all these push and remq
calls which manipulate it should run with quit inhibited, and should
perhaps also handle any errors that could happen, so that the list of
tokens is always correct.
> + (if (memq token system-sleep--sleep-block-tokens)
> + (progn
> + (setq system-sleep--sleep-block-tokens
> + (remq token system-sleep--sleep-block-tokens))
> + (if (w32-unblock-system-sleep)
> + t
> + (warn "Unable to unblock system sleep")
If and when this warning is issued, AFAIU it means that the sleep is
blocked, but the token of its blocker is lost forever, because it was
already removed from the list. What then the user could do to fix
this situation? Will, for example, killing Emacs do that?
> +(if (and (system-sleep--set-back-end)
> + (system-sleep--enable))
> + (add-hook 'sleep-event-functions #'system-sleep--sleep-event-function)
If sleep-event-functions is a user option, Emacs should not set its
value.
> --- a/src/w32fns.c
> +++ b/src/w32fns.c
> @@ -44,6 +44,7 @@ #define COBJMACROS /* Ask for C definitions for COM. */
> #include <oleidl.h>
> #include <objidl.h>
> #include <ole2.h>
> +#include <powrprof.h> /* For system sleep support. */
Why do we need this header? In my MinGW headers it is absent.
> +/* We assume SetThreadExecutionState is always available, being Windows
> + XP+. RegisterSuspendResumeNotification is Windows 8+ so we look this
> + up. */
We don't yet require Windows XP for the Windows builds of Emacs, so
SetThreadExecutionState must also be loaded dynamically from its DLL.
> +DEFUN ("w32-block-system-sleep",
> + Fw32_block_system_sleep,
> + Sw32_block_system_sleep,
> + 1, 1, 0,
> + doc: /* Block system idle sleep.
> +If ALLOW-DISPLAY-SLEEP is non-nil, block the screen from sleeping.
> +Return a token to unblock this block using `w32-unblock-system-sleep',
> +or nil if the block fails. */)
> + (Lisp_Object allow_display_sleep)
> +{
> + /* ES_CONTINUOUS keeps the state until cleared. */
> + EXECUTION_STATE new_state = ES_SYSTEM_REQUIRED | ES_CONTINUOUS;
> + if (NILP (allow_display_sleep))
> + new_state |= ES_DISPLAY_REQUIRED;
> +
> + sleep_block_execution_state = SetThreadExecutionState (new_state);
> +
> + /* One more block. */
> + ++sleep_block_count;
> +
> + /* Synthesize a token. */
> + return make_fixnum (sleep_block_id);
Shouldn't sleep_block_id be incremented? If not, all the cookies in
the list of tokens will be identical, no?
Also, shouldn't this return nil if the call to SetThreadExecutionState
failed?
And I'm not sure I understand the effect of calling
w32-block-system-sleep several times without calling
w32-unblock-system-sleep. It isn't like the OS counts the number of
callers and handles this as a reference count, which must be zero for
the system to be able to sleep, right?
> +DEFUN ("w32-unblock-system-sleep",
> + Fw32_unblock_system_sleep,
> + Sw32_unblock_system_sleep,
> + 0, 0, 0,
> + doc: /* Unblock system idle sleep.
> +Return non-nil if the TOKEN block was unblocked. */)
> + (void)
> +{
> + /* No blocks to unblock. */
> + if (sleep_block_count == 0)
> + return Qnil;
This seems wrong: why indicate failure in this trivial case?
> + /* One fewer block. */
> + if (--sleep_block_count == 0
> + && sleep_block_execution_state)
> + sleep_block_execution_state =
> + SetThreadExecutionState (sleep_block_execution_state
> + & ~(ES_DISPLAY_REQUIRED | ES_SYSTEM_REQUIRED));
> + return Qt;
And here you return t regardless of whether SetThreadExecutionState
succeeded or failed. Why?
> +DEFUN ("w32-system-sleep-block-count",
> + Fw32_system_sleep_block_count,
> + Sw32_system_sleep_block_count,
> + 0, 0, 0,
> + doc: /* Return the w32 sleep block count. */)
> + (void)
> +{
> + return make_fixnum (sleep_block_count);
> +}
What is the meaning of the return value in the w32 case? See my
questions above regarding the number of callers.
> +typedef ULONG (CALLBACK *PMY_DEVICE_NOTIFY_CALLBACK_ROUTINE)
> + (PVOID Context, ULONG Type, PVOID Setting);
> +
> +static ULONG
> +sleep_notification_callback(PVOID _Context, ULONG Type, PVOID _Setting)
I think this should use ALIGN_STACK, see w32term.h for the reasons.
> + /* System sleep support. */
> + DEFSYM (Qpre_sleep, "pre-sleep");
> + DEFSYM (Qpost_wake, "post-wake");
These symbols should be defined in one place and only once, not
separately for each system. (And I hope we won't need them at all,
see above.)
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.Received: (at 80348) by debbugs.gnu.org; 7 Feb 2026 15:35:13 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 07 10:35:13 2026 Received: from localhost ([127.0.0.1]:37028 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vokL2-00054o-U2 for submit <at> debbugs.gnu.org; Sat, 07 Feb 2026 10:35:13 -0500 Received: from mail-ua1-x929.google.com ([2607:f8b0:4864:20::929]:43223) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vokL0-00054f-7L for 80348 <at> debbugs.gnu.org; Sat, 07 Feb 2026 10:35:10 -0500 Received: by mail-ua1-x929.google.com with SMTP id a1e0cc1a2514c-94ab69af6c8so689753241.0 for <80348 <at> debbugs.gnu.org>; Sat, 07 Feb 2026 07:35:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770478509; cv=none; d=google.com; s=arc-20240605; b=Kqalg5mDVG+yqUzjZKoHBWz4ThfHi58P8670h6OrZsOIc9yoyUUyi34RNcGS6P/dgm SBijFRawl+vmiNkQYo7QsSaf5SwQZtsfzD7JQccH4Q78dswV891ZaLbdjUB7Bmq9u6kE FAqD54CWHS5iUrTt9xzUJqYdrQMVq/RnWCpisA5Z7qQ+YitgPDtSKIi58BAQYa9BrF8+ N0OKjgIFM+gLDwS1ySmssx8u0cxQ5jB3Q0pkAHvqEzcSE4KWxV/D/1bpo0+aghkAuoek 1gfwBdurwYrLPgZ8Wuy+Ow4bFcoGRt1+nwkU1HRmKEstEfsi2YfuPsYkR9i2QdN6jvTv mmLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=kOqOmJgRcoNsAlmgTtomWkD/cdyYFff8KfkrSVGvEz0=; fh=BmV6whBhR0IsQqE1D2oAtPielyw6iCR57Klft3tCNEE=; b=UGov92ltIWRLTQym0MhpYqm/xq2h3ZoOaZD3f0btuy4ZnD9cerDsfXPlNe7Wur8da2 +zBbjs4hsbJ5qHXp/t5II0yvLeheHnuz1jJku+pcf1vtQzm8v8riTghHITOTWEv8CT4j AIfKfZ9h5ZaoH7okOpz+OonDvz+zzEQlCe0GQcKRTIKW1O+NkLvfyJjYwwnW4sVVLkxe X65wXc9PgKYiiGC0uFCadjHWz3A8WhL2zK2y6Ryohg2rDHImlmwW/fMMpoZKl0Lx/9wH NlxZwGXVAqDFKIvPbjzeLbp86odDAx0RMVZD0E553tNUEe/VFvFau2lF/lPyftJGaqjK zTYA==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770478509; x=1771083309; 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=kOqOmJgRcoNsAlmgTtomWkD/cdyYFff8KfkrSVGvEz0=; b=V7HBUSJgnOryceim2ZuZQQK6WA9kbtIlWp9pNp5g3tHgutEOlzzS/SIKuhMwdmA7eW BzWnMGdDksVxYfGXviOuiRCTt5AN2H5rBDGDtJIzhLUhXzdBbm9K0agV5kxToDdQuWnX m67dA16TakN1nj6guofzQ57S7hN6RDmrSu2e29N0dMC+L9aPCZIKup1sSB3Mlt+Mis1w OXXJtK5UwcWoo5uVA4ppE5GJ+Pjd1eTKF7Oh8NaCYZfEqBp+J60XXqY5FFf7y/gHW0f/ 0xqwdKmfHndCyx7pVLekltfztbO9fy+0b2FIFTGxAjCkFskJeDvs0XXWbSEuHWn3Rw8g 9QdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770478509; x=1771083309; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=kOqOmJgRcoNsAlmgTtomWkD/cdyYFff8KfkrSVGvEz0=; b=ZOMfr1aPqOg75vabxkT2MAQgsIKALmOYQgON5Y7vvDxS22h2nF/Q6Gr6N4VAk4cRg9 d0vZ1o9EyAR3M4yzgb2lHMDC1jsFFQoXDFfPVYsHG93AVl9bkcjlg9oFHxAv/miLMiQB QxC90+KVcsw/OjOD9xCTEMZ+cjCkorBx4TXKExYpAKJDzOVUwytS9/hOyS5rrt9lchF5 hmwuOl49Zq9LdNABoJ1ZlM1zv1T0P3tY3BtLqsbPZbLIYELK3H0AqyV6ur7qzLRgQLcK jDhIku64Hnd/wQ4uwNXOGmp48ykPvEDap2rl81pFJo6uw0giaQ39tq/xov5PYOW1mWbh IHHw== X-Gm-Message-State: AOJu0YyI0T8iX2wJY8Rg44IXWbFGtFaUpk0MtDYunKD7Kn7jHe1jznxR MojwrsbH+W9TPjokK/y1+kUYjA78lM+BODdzjRFAdCOgpA4g1cIMO/NlJuktnByn9gfuYYzHKXT 5Tm7eZvOiinOQwtWt8VHtHbdAv9I0IN9+hsUt X-Gm-Gg: AZuq6aLNwIoBPuAFzjwiJ0KxL2Bh2Y3LjsIjG1x2cCll+KSLjuZHqg+cQHzc2xObWPJ ag/pABiYdYeckizJEK113ZOOXhYPDKdAo/woZWCf7BkjA6BOyhPx3GmpfYnMmJNXoCWG9CtUhi6 aL9V3BPxYSvCRQzwfpopc8s+w87O2ZdJZXMefqERtO929DUK+uxjztFxYQV7PuItrdUmiw10a4D ScR30v6jarp/n5m9I542Scq90lsvcj5lw4Wdrk91DTpvLxNEG6TbkohutTfP1wrq/JQ15PQUMtI rQgRSs4v0EPrTZ7JTaBl4zfLGm/F/QJS1OUV8uB10VYja+Zsuto= X-Received: by 2002:a05:6102:3f44:b0:5ef:a312:e70c with SMTP id ada2fe7eead31-5fae78fd7bcmr2130095137.20.1770478509182; Sat, 07 Feb 2026 07:35:09 -0800 (PST) MIME-Version: 1.0 References: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN> In-Reply-To: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sat, 7 Feb 2026 10:34:58 -0500 X-Gm-Features: AZwV_Qij8BGVdwfEwEBl1_CKDbtj-qMFmLaFG9aJoRpjSdEIfbl5GWXy8LoMZVc Message-ID: <CAN+1HbpCkgXw37s3K6aedJZiGiuKDgox3E_+vzPJL+EtOExhVw@HIDDEN> Subject: Re: bug#80348: [PATCH] system-sleep sleep blocker and sleep/wake event package To: 80348 <at> debbugs.gnu.org Content-Type: multipart/mixed; boundary="0000000000009f73b8064a3da601" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80348 Cc: Andrew Cohen <acohen@HIDDEN>, Daniel Mendler <mail@HIDDEN>, eric@HIDDEN, Michael Albinus <michael.albinus@HIDDEN>, Morgan Smith <Morgan.J.Smith@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 0.0 (/) --0000000000009f73b8064a3da601 Content-Type: multipart/alternative; boundary="0000000000009f73b7064a3da6ff" --0000000000009f73b7064a3da6ff Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Feb 7, 2026 at 10:32=E2=80=AFAM St=C3=A9phane Marks <shipmints@gmai= l.com> wrote: > After some delay this year, I finally worked on this package inspired by > recent improvements Michael made to dbus. > > This package provides platform-neutral interfaces to block your system > from entering idle sleep with control over whether the display remains > active, and a hook to process pre-sleep and post-wake events. > > Implementations are for D-Bus on GNU/Linux, and for macOS/GNUstep and > MS-Windows using native APIs. > > Michael suggests that the gnus sleep API be based on `system-sleep` so > that it works across other platforms and also consolidates system sleep > logic in one place. > > And just as we introduced an optional `progress-report` to compile.el, we > can now introduce an optional platform-neutral idle sleep block. > > Patch incoming when the bug number is assigned. > Attached. You'll need recent master or at least this commit 89209a83b60c87d97f0c05dbf6cb29ff3cdf3d5a to get the dbus improvements. --0000000000009f73b7064a3da6ff Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Sat, Feb 7, 2026 at 10:32=E2=80=AFAM St=C3=A9phane Marks <<a href=3D"= mailto:shipmints@HIDDEN">shipmints@HIDDEN</a>> wrote:</span></div>= </div><div class=3D"gmail_quote gmail_quote_container"><blockquote class=3D= "gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(2= 04,204,204);padding-left:1ex"><div dir=3D"ltr"><div style=3D"font-family:mo= nospace">After some delay this year, I finally worked on this package inspi= red by recent improvements Michael made to dbus.<br><br>This package provid= es platform-neutral interfaces to block your system from entering idle slee= p with control over whether the display remains active, and a hook to proce= ss pre-sleep and post-wake events.<br><br>Implementations are for D-Bus on = GNU/Linux, and for macOS/GNUstep and MS-Windows using native APIs.<br><br>M= ichael suggests that the gnus sleep API be based on `system-sleep` so that = it works across other platforms and also consolidates system sleep logic in= one place.<br><br>And just as we introduced an optional `progress-report` = to compile.el, we can now introduce an optional platform-neutral idle sleep= block.<br><br>Patch incoming when the bug number is assigned.</div></div><= /blockquote><div><br></div><div class=3D"gmail_default" style=3D"font-famil= y:monospace">Attached.=C2=A0 You'll need recent master or at least this= commit=C2=A089209a83b60c87d97f0c05dbf6cb29ff3cdf3d5a to get the dbus impro= vements.</div></div></div> --0000000000009f73b7064a3da6ff-- --0000000000009f73b8064a3da601 Content-Type: application/octet-stream; name="0001-system-sleep-sleep-blocker-and-sleep-wake-event-pack.patch" Content-Disposition: attachment; filename="0001-system-sleep-sleep-blocker-and-sleep-wake-event-pack.patch" Content-Transfer-Encoding: base64 Content-ID: <f_mlch6lw20> X-Attachment-Id: f_mlch6lw20 RnJvbSAwMWNkNmJjZDRjZTVkMDgyMThiOGQ2MjY2OTc2MjMxMmVmNTliM2JkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgNCBGZWIgMjAyNiAxODoyMDo1NSAtMDUwMApT dWJqZWN0OiBbUEFUQ0hdIHN5c3RlbS1zbGVlcCBzbGVlcCBibG9ja2VyIGFuZCBzbGVlcC93YWtl IGV2ZW50IHBhY2thZ2UKIChidWcjODAzNDgpCgpUaGlzIHBhY2thZ2UgcHJvdmlkZXMgcGxhdGZv cm0tbmV1dHJhbCBpbnRlcmZhY2VzIHRvIGJsb2NrIHlvdXIKc3lzdGVtIGZyb20gZW50ZXJpbmcg aWRsZSBzbGVlcCBhbmQgYSBob29rIHRvIHByb2Nlc3MgcHJlLXNsZWVwCmFuZCBwb3N0LXdha2Ug ZXZlbnRzLgoKSW1wbGVtZW50YXRpb25zIGFyZSBmb3IgRC1CdXMgb24gR05VL0xpbnV4LCBtYWNP Uy9HTlVzdGVwLCBhbmQKTVMtV2luZG93cy4KCiogbGlzcC9iaW5kaW5ncy5lbCAoc2xlZXAtZXZl bnQtZnVuY3Rpb25zKTogTmV3IGFibm9ybWFsIGhvb2suCihzbGVlcC1ldmVudC1oYW5kbGVyKTog TmV3IGRlZnVuLgooc3BlY2lhbC1ldmVudC1tYXApOiBOZXcgZXZlbnQgaGFuZGxlci4KKiBsaXNw L3N5c3RlbS1zbGVlcC5lbDogTmV3IHBhY2thZ2UuCiogc3JjL25zZm5zLm0gKEZuc19ibG9ja19z eXN0ZW1fc2xlZXAsIEZuc191bmJsb2NrX3N5c3RlbV9zbGVlcCkKKHN5bXNfb2ZfbnNmbnMpOiBO ZXcgZnVuY3Rpb25zLgoqIHNyYy9uc3Rlcm0ubSAoYXBwbGljYXRpb25EaWRGaW5pc2hMYXVuY2hp bmcpOiBTdWJzY3JpYmUgdG8KcHJlLXNsZWVwIGFuZCBwb3N0LXdha2Ugbm90aWZpY2F0aW9ucy4K KHN5c3RlbVdpbGxTbGVlcCwgc3lzdGVtRGlkV2FrZSk6IE5ldyBmdW5jdGlvbi4KKHN5bXNfb2Zf bnN0ZXJtKTogUXByZV9zbGVlcCBRcG9zdF93YWtlIG5ldyBzeW1ib2xzLgoqIHNyYy93MzJmbnMu YyAoRnczMl9ibG9ja19zeXN0ZW1fc2xlZXApCihGdzMyX3VuYmxvY2tfc3lzdGVtX3NsZWVwLCBG dzMyX3N5c3RlbV9zbGVlcF9ibG9ja19jb3VudCkKKHNsZWVwX25vdGlmaWNhdGlvbl9jYWxsYmFj aykKKHczMl9yZWdpc3Rlcl9mb3Jfc2xlZXBfbm90aWZpY2F0aW9ucyk6IE5ldyBmdW5jdGlvbi4K KHN5bXNfb2ZfdzMyZm5zKTogU3czMl91bmJsb2NrX3N5c3RlbV9zbGVlcApTdzMyX2Jsb2NrX3N5 c3RlbV9zbGVlcCBTdzMyX3N5c3RlbV9zbGVlcF9ibG9ja19jb3VudDogTmV3CmRlZnN1YnIuCihz eW1zX29mX3czMmZucyk6IFFwcmVfc2xlZXAsIFFwb3N0X3dha2U6IE5ldyBERUZTWU0uCiogc3Jj L3czMnRlcm0uaCAoRnczMl9ibG9ja19zeXN0ZW1fc2xlZXApOiBOZXcgZXh0ZXJuLgoqIHNyYy93 MzJ0ZXJtLmMgKHczMl9pbml0aWFsaXplKTogQ2FsbAp3MzJfcmVnaXN0ZXJfZm9yX3NsZWVwX25v dGlmaWNhdGlvbnMuCiogZG9jL2xpc3ByZWYvb3MudGV4aTogRG9jdW1lbnQgdGhlIHN5c3RlbS1z bGVlcCBwYWNrYWdlLgoqIGRvYy9saXNwcmVmL2NvbW1hbmRzLnRleGk6IFVwZGF0ZSBzbGVlcC1l dmVudCBzcGVjaWFsCmRvY3VtZW50YXRpb24uCiogZXRjL05FV1M6IEFubm91bmNlIHRoZSBuZXcg cGFja2FnZS4KLS0tCiBkb2MvbGlzcHJlZi9jb21tYW5kcy50ZXhpIHwgIDEwICstCiBkb2MvbGlz cHJlZi9vcy50ZXhpICAgICAgIHwgMTAzICsrKysrKysrKwogZXRjL05FV1MgICAgICAgICAgICAg ICAgICB8ICAxNiArKwogbGlzcC9iaW5kaW5ncy5lbCAgICAgICAgICB8ICAxNiArKwogbGlzcC9z eXN0ZW0tc2xlZXAuZWwgICAgICB8IDQ1NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogc3JjL25zZm5zLm0gICAgICAgICAgICAgICB8ICA4NCArKysrKysrCiBzcmMvbnN0 ZXJtLm0gICAgICAgICAgICAgIHwgIDUyICsrKystCiBzcmMvdzMyZm5zLmMgICAgICAgICAgICAg IHwgMTM1ICsrKysrKysrKysrCiBzcmMvdzMydGVybS5jICAgICAgICAgICAgIHwgICAxICsKIHNy Yy93MzJ0ZXJtLmggICAgICAgICAgICAgfCAgIDEgKwogMTAgZmlsZXMgY2hhbmdlZCwgODU5IGlu c2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpc3Avc3lz dGVtLXNsZWVwLmVsCgpkaWZmIC0tZ2l0IGEvZG9jL2xpc3ByZWYvY29tbWFuZHMudGV4aSBiL2Rv Yy9saXNwcmVmL2NvbW1hbmRzLnRleGkKaW5kZXggYmQzMTc5OGQ0MzEuLjRhZWUyNjA5ZDY1IDEw MDY0NAotLS0gYS9kb2MvbGlzcHJlZi9jb21tYW5kcy50ZXhpCisrKyBiL2RvYy9saXNwcmVmL2Nv bW1hbmRzLnRleGkKQEAgLTI3NzgsMTIgKzI3NzgsMTIgQEAgTWlzYyBFdmVudHMKIEBlbmQgc21h bGxleGFtcGxlCiAKIEBjaW5kZXggQGNvZGV7c2xlZXAtZXZlbnR9IGV2ZW50Ci1AaXRlbSAoc2xl ZXAtZXZlbnQgQHZhcntzbGVlcC13YWtlfSkKLVRoaXMgZXZlbnQgaXMgaW5qZWN0ZWQgd2hlbiB0 aGUgZGV2aWNlIEVtYWNzIGlzIHJ1bm5pbmcgb24gZW50ZXJzIG9yCi1sZWF2ZXMgdGhlIHNsZWVw IHN0YXRlLiAgQSBub24tQGNvZGV7bmlsfSBAdmFye3NsZWVwLXdha2V9IGluZGljYXRlcwotZW50 ZXJpbmcgdGhlIHNsZWVwIHN0YXRlLgorQGl0ZW0gKHNsZWVwLWV2ZW50IEB2YXJ7c3RhdGV9KQor VGhpcyBldmVudCBpcyBpbmplY3RlZCB3aGVuIHRoZSBkZXZpY2UgRW1hY3MgaXMgcnVubmluZyBv biBpcyBhYm91dCB0bworZW50ZXIgYSBzbGVlcCBzdGF0ZSwgb3IgaGFzIGp1c3QgYXdva2VuIGZy b20gb25lLiAgQHZhcntzdGF0ZX0gd2lsbCBiZQordGhlIHN5bWJvbCBAY29kZXtwcmUtc2xlZXB9 IG9yIEBjb2Rle3Bvc3Qtd2FrZX0uCiAKLVRoaXMgaXMgaW1wbGVtZW50ZWQgb25seSBvbiBHTlUv TGludXguCitUaGlzIGlzIGltcGxlbWVudGVkIG9uIEdOVS9MaW51eCwgbWFjT1MsIGFuZCBNUy1X aW5kb3dzLgogCiBAY2luZGV4IEBjb2Rle2xhbmd1YWdlLWNoYW5nZX0gZXZlbnQKIEBpdGVtIGxh bmd1YWdlLWNoYW5nZQpkaWZmIC0tZ2l0IGEvZG9jL2xpc3ByZWYvb3MudGV4aSBiL2RvYy9saXNw cmVmL29zLnRleGkKaW5kZXggZjVjYTZlZmEyMWIuLmRkNjc2MDM3OGVmIDEwMDY0NAotLS0gYS9k b2MvbGlzcHJlZi9vcy50ZXhpCisrKyBiL2RvYy9saXNwcmVmL29zLnRleGkKQEAgLTM1LDYgKzM1 LDcgQEAgU3lzdGVtIEludGVyZmFjZQogKiBTZXNzaW9uIE1hbmFnZW1lbnQ6OiAgU2F2aW5nIGFu ZCByZXN0b3Jpbmcgc3RhdGUgd2l0aCBYIFNlc3Npb24gTWFuYWdlbWVudC4KICogRGVza3RvcCBO b3RpZmljYXRpb25zOjogRGVza3RvcCBub3RpZmljYXRpb25zLgogKiBTeXN0ZW0gVGFza2Jhcjo6 ICAgICAgQ29udHJvbGxpbmcgc3lzdGVtIEdVSSB0YXNrYmFyIGZlYXR1cmVzLgorKiBTeXN0ZW0g U2xlZXA6OiAgICAgICAgQmxvY2sgc3lzdGVtIHNsZWVwIGFuZCBwcm9jZXNzIHNsZWVwIGV2ZW50 cy4KICogRmlsZSBOb3RpZmljYXRpb25zOjogIEZpbGUgbm90aWZpY2F0aW9ucy4KICogRHluYW1p YyBMaWJyYXJpZXM6OiAgIE9uLWRlbWFuZCBsb2FkaW5nIG9mIHN1cHBvcnQgbGlicmFyaWVzLgog KiBTZWN1cml0eSBDb25zaWRlcmF0aW9uczo6IFJ1bm5pbmcgRW1hY3MgaW4gYW4gdW5mcmllbmRs eSBlbnZpcm9ubWVudC4KQEAgLTM0OTMsNiArMzQ5NCwxMDggQEAgU3lzdGVtIFRhc2tiYXIKIEBl bmQgZ3JvdXAKIEBlbmQgbGlzcAogCitAbm9kZSBTeXN0ZW0gU2xlZXAKK0BzZWN0aW9uIEJsb2Nr IFN5c3RlbSBTbGVlcCBhbmQgUHJvY2VzcyBTbGVlcCBFdmVudHMKK0BjaW5kZXggc3lzdGVtIHNs ZWVwCitAY2luZGV4IG1vZGUsIHN5c3RlbSBzbGVlcAorCitAZGVmdW4gc3lzdGVtLXNsZWVwLWJs b2NrLXNsZWVwICZvcHRpb25hbCB3aHkgYWxsb3ctZGlzcGxheS1zbGVlcAorVGhpcyBmdW5jdGlv biBibG9ja3MgdGhlIHN5c3RlbSBmcm9tIGVudGVyaW5nIGl0cyBpZGxlIHNsZWVwIHN0YXRlLgor CitJdCByZXR1cm5zIGEgdG9rZW4gdGhhdCBtdXN0IGJlIHBhc3NlZCB0bworQGNvZGV7c3lzdGVt LXNsZWVwLXVuYmxvY2stc2xlZXB9IHRvIHVuYmxvY2sgdGhpcyBzcGVjaWZpYyBibG9jayAob3Ro ZXIKK3NsZWVwIGJsb2NrcyBtYXkgYmUgc2ltdWx0YW5lb3VzbHkgaW4gZm9yY2UgZm9yIG90aGVy IHB1cnBvc2VzKS4KK090aGVyd2lzZSwgaXQgcmV0dXJucyBAY29kZXtuaWx9IGlmIHRoZSBzbGVl cCBibG9ja2luZyBmYWlscy4KKworQHZhcnt3aHl9IGlzIGEgc3RyaW5nIGFuZCwgd2hlbiBub24t bmlsLCBpcyB1c2VkIHRvIGlkZW50aWZ5IHRoZSBzbGVlcAorYmxvY2sgYXMgaXQgbWF5IGFwcGVh ciBvbiB0aGUgc3lzdGVtJ3MgaW5zcGVjdGFibGUgYmxvY2sgbGlzdHMuICBJdAorZGVmYXVsdHMg dG8gYGBFbWFjcycnLgorCitJZiBAdmFye2FsbG93LWRpc3BsYXktc2xlZXB9IGlzIG5vbi1uaWws IGFsbG93IHRoZSBkaXNwbGF5IHRvIHNsZWVwLiAgQnkKK2RlZmF1bHQsIHRoZSBkaXNwbGF5IGlz IGtlcHQgYWN0aXZlLgorQGVuZCBkZWZ1bgorCitAZGVmdW4gc3lzdGVtLXNsZWVwLXVuYmxvY2st c2xlZXAgdG9rZW4KK1RoaXMgZnVuY3Rpb24gdW5ibG9ja3MgdGhlIHNsZWVwIGJsb2NrIGFzc29j aWF0ZWQgd2l0aCBAdmFye3Rva2VufS4gIEl0CityZXR1cm5zIG5vbi1AY29kZXtuaWx9IG9uIHN1 Y2Nlc3MsIG90aGVyd2lzZSByZXR1cm5zIEBjb2Rle25pbH0uCitAZW5kIGRlZnVuCisKK0BkZWZt YWMgd2l0aC1zeXN0ZW0tc2xlZXAtYmxvY2sgKHdoeSBhbGxvdy1kaXNwbGF5LXNsZWVwKSBib2R5 QGRvdHN7fQorVGhpcyBpcyBhIGNvbnZlbmllbmNlIG1hY3JvIHRoYXQgbGV0cyB5b3Ugd3JhcCB0 aGUgZm9ybXMgaW4gQHZhcntib2R5fQord2l0aCBhIHNsZWVwIGJsb2NrIHRoYXQgaXMgdW5ibG9j a2VkIGZvciB5b3Ugd2hlbiBAdmFye2JvZHl9IGNvbXBsZXRlcy4KK1RoZSBhcmd1bWVudHMgaGF2 ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGluCitAY29kZXtzeXN0ZW0tc2xlZXAtYmxvY2stc2xlZXB9 LCBhYm92ZS4KK0BlbmQgZGVmbWFjCisKK0BkZWZ1biBzeXN0ZW0tc2xlZXAtc2xlZXAtYmxvY2tl ZC1wCitUaGlzIHByZWRpY2F0ZSBmdW5jdGlvbiByZXR1cm5zIG5vbi1AY29kZXtuaWx9IG9uIGlm IHRoZXJlIGFyZSBhbnkKK2FjdGl2ZSBAY29kZXtzeXN0ZW0tc2xlZXB9IGJsb2Nrcywgb3RoZXJ3 aXNlIHJldHVybnMgQGNvZGV7bmlsfS4KK0BlbmQgZGVmdW4KKworQGRlZnVuIHN5c3RlbS1zbGVl cC11bmJsb2NrLWFsbC1zbGVlcC1ibG9ja3MKK1RoaXMgZnVuY3Rpb24gdW5ibG9ja3MgYWxsIGFj dGl2ZSBzbGVlcCBibG9ja3MuICBJdCBpcyB1bmxpa2VseSB0aGF0IHlvdQord2lsbCBuZWVkIHRv IGNhbGwgdGhpcyBmdW5jdGlvbi4KK0BlbmQgZGVmdW4KKworQGRlZm9wdCBzeXN0ZW0tc2xlZXAt ZXZlbnQtZnVuY3Rpb25zCitXaGVuIHRoZSBzeXN0ZW0gaXMgYWJvdXQgdG8gZW50ZXIgYSBzbGVl cCBzdGF0ZSBvciBhZnRlciBpdCB3YWtlcyBmcm9tCitvbmUsIGVhY2ggZnVuY3Rpb24gb24gdGhp cyBhYm5vcm1hbCBob29rIGlzIGNhbGxlZCB3aXRoIG9uZSBhcmd1bWVudAord2hpY2ggd2lsbCBi ZSBvbmUgb2YgdGhlIHN5bWJvbHMgQGNvZGV7cHJlLXNsZWVwfSBvciBAY29kZXtwb3N0LXdha2V9 LgorCitIYW5kbGluZyBAY29kZXtwcmUtc2xlZXB9IGV2ZW50cyBzaG91bGQgYmUgZG9uZSBhcyBm YXN0IGFzIHBvc3NpYmxlLgorU3lzdGVtcyBvZnRlbiBncmFudCBhIHZlcnkgc2hvcnQgcHJlLXNs ZWVwIHByb2Nlc3NpbmcgaW50ZXJ2YWwsCit0eXBpY2FsbHkgcmFuZ2luZyBiZXR3ZWVuIDIgYW5k IDUgc2Vjb25kcy4gIFRoZSBzeXN0ZW0gbWF5IHNsZWVwIGV2ZW4gaWYKK3lvdXIgcHJvY2Vzc2lu ZyBpcyBub3QgY29tcGxldGUsIHNvIGJlIHN1cmUgeW91IGRvIGFzIGxpdHRsZSBhcworcG9zc2li bGUuICBGb3IgZXhhbXBsZSwgeW91ciBmdW5jdGlvbiBjb3VsZCBjbG9zZSBhY3RpdmUgY29ubmVj dGlvbnMgb3IKK3NlcmlhbCBwb3J0cy4KKworSGFuZGxpbmcgQGNvZGV7cG9zdC13YWtlfSBldmVu dHMgb2ZmZXJzIG1vcmUgbGVld2F5LiAgVXNlIHRoaXMsIGZvcgorZXhhbXBsZSwgdG8gcmVlc3Rh Ymxpc2ggY29ubmVjdGlvbnMuCisKK05vdGU6IFlvdXIgY29kZSwgb3IgdGhlIGZ1bmN0aW9ucyBp dCBjYWxscywgc2hvdWxkIG5vdCByYWlzZSBhbnkgc2lnbmFscworb3IgYWxsIGhvb2tzIHdpbGwg YmUgaGFsdGVkLiAgWW91IGNhbiB3cmFwIHlvdXIgY29kZSBpbiBhCitAY29kZXtjb25kaXRpb24t Y2FzZX0gYmxvY2sgKEBweHJlZntFcnJvcnN9KS4KK0BlbmQgZGVmb3B0CisKK0Bub2luZGVudAor RXhhbXBsZXMgb2Ygc3lzdGVtIHNsZWVwIGZ1bmN0aW9uczoKKworQGxpc3AKK0Bncm91cAorOzsg TG9hZCBhbmQgaW5pdGlhbGl6ZSBzeXN0ZW0tc2xlZXAuCisocmVxdWlyZSAnc3lzdGVtLXNsZWVw KQorCis7OyBQcmV2ZW50IGlkbGUgc2xlZXAgZHVyaW5nIGEgbG9uZy1ydW5uaW5nIHByb2Nlc3Mg YW5kIGtlZXAKKzs7IHRoZSBkaXNwbGF5IGFjdGl2ZS4KKyhsZXQgKChzbGVlcC10b2tlbiAoc3lz dGVtLXNsZWVwLWJsb2NrLXNsZWVwCisgICAgICAgICAgICAgICAgICAgICJNeSBwcm9jZXNzaW5n IikpKQorICA7OyBVc2UgdW53aW5kLXByb3RlY3QgdG8gZW5zdXJlIHlvdSB1bmJsb2NrIHNsZWVw IGV2ZW4gaWYgeW91cgorICA7OyBjb2RlIHNpZ25hbHMgYW4gZXJyb3IuCisgICh1bndpbmQtcHJv dGVjdAorICAgICAgKHByb2duCisgICAgICAgIDs7IC4uLnlvdXIgY29kZS4uLgorICAgICAgICAp CisgICAgKHN5c3RlbS1zbGVlcC11bmJsb2NrLXNsZWVwIHNsZWVwLXRva2VuKSkpCisKKzs7IEJs b2NrIHNsZWVwIHVzaW5nIHRoZSBjb252ZW5pZW5jZSBtYWNyby4KKyh3aXRoLXN5c3RlbS1zbGVl cC1ibG9jayAiTXkgcHJvY2Vzc2luZyIKKyAgOzsgLi4ueW91ciBjb2RlLi4uCisgICkKK0BlbmQg Z3JvdXAKKworQGdyb3VwCisoZGVmdW4gbXkvc3lzdGVtLXNsZWVwLXNsZWVwLWV2ZW50LWZ1bmN0 aW9uIChldmVudCkKKyAgKHBjYXNlIGV2ZW50CisgICAgKCdwcmUtc2xlZXAKKyAgICAgKG1lc3Nh Z2UgIkJFRFRJTUUiKSkKKyAgICAoJ3Bvc3Qtd2FrZQorICAgICAobWVzc2FnZSAiV0FLRSBVUCIp KSkpCisKKyhhZGQtaG9vayAnc3lzdGVtLXNsZWVwLWV2ZW50LWZ1bmN0aW9ucworICAgICAgICAg ICMnbXkvc3lzdGVtLXNsZWVwLXNsZWVwLWV2ZW50LWZ1bmN0aW9uKQorQGVuZCBncm91cAorQGVu ZCBsaXNwCisKIEBub2RlIEZpbGUgTm90aWZpY2F0aW9ucwogQHNlY3Rpb24gTm90aWZpY2F0aW9u cyBvbiBGaWxlIENoYW5nZXMKIEBjaW5kZXggZmlsZSBub3RpZmljYXRpb25zCmRpZmYgLS1naXQg YS9ldGMvTkVXUyBiL2V0Yy9ORVdTCmluZGV4IDllNWFjNzk2Njk3Li5lZTM0OTVhMTYyMiAxMDA2 NDQKLS0tIGEvZXRjL05FV1MKKysrIGIvZXRjL05FV1MKQEAgLTM1MzUsNiArMzUzNSwyMiBAQCBP biBHTlUvTGludXggc3lzdGVtcywgc2hlbGwgZXh0ZW5zaW9ucyBvciBzaW1pbGFyIGhlbHBlcnMg c3VjaCBhcwogPGh0dHBzOi8vZXh0ZW5zaW9ucy5nbm9tZS5vcmcvZXh0ZW5zaW9uLzMwNy9kYXNo LXRvLWRvY2svPiBhbmQKIDxodHRwczovL3dpa2kudWJ1bnR1LmNvbS9Vbml0eS9MYXVuY2hlckFQ ST4uCiAKKysrKworKiogTmV3IHBhY2thZ2UgJ3N5c3RlbS1zbGVlcCcuCitUaGlzIHBhY2thZ2Ug cHJvdmlkZXMgcGxhdGZvcm0tbmV1dHJhbCBpbnRlcmZhY2VzIHRvIGJsb2NrIHlvdXIgc3lzdGVt Citmcm9tIGVudGVyaW5nIGlkbGUgc2xlZXAgYW5kIGEgaG9vayB0byBwcm9jZXNzIHByZS1zbGVl cCBhbmQgcG9zdC13YWtlCitldmVudHMuICBZb3UgY2FuIHVzZSB0aGlzIHRvIGF2b2lkIHRoZSBz eXN0ZW0gZW50ZXJpbmcgYW4gaWRsZSBzbGVlcAorc3RhdGUgYW5kIGludGVycnVwdGluZyBhIGxv bmctcnVubmluZyBwcm9jZXNzIGR1ZSB0byBsYWNrIG9mIHVzZXIKK2FjdGl2aXR5LiAgVGhlIHNs ZWVwIGV2ZW50IGhvb2sgbGV0cyB5b3UsIGZvciBleGFtcGxlIGNsb3NlIGV4dGVybmFsCitjb25u ZWN0aW9ucyBvciBzZXJpYWwgcG9ydHMgYmVmb3JlIHNsZWVwaW5nLCBhbmQgcmVlc3RhYmxpc2gg dGhlbSB3aGVuCit0aGUgc3lzdGVtIHdha2VzIHVwLgorCitTdXBwb3J0ZWQgY2FwYWJsZSBzeXN0 ZW1zIGFyZSBHTlUvTGludXggdmlhIEQtQnVzIChzbGVlcCBibG9ja2luZyBhbmQKK2V2ZW50cyBy ZXF1aXJlIHRoZSBvcmcuZnJlZWRlc2t0b3AubG9naW4xIHNlcnZpY2UsIGRpc3BsYXkgc2xlZXAK K2Jsb2NraW5nIHJlcXVpcmVzIG9yZy5mcmVlZGVza3RvcC5TY3JlZW5zYXZlciBzZXJ2aWNlKSwg bWFjT1MKKyhzbGVlcC9kaXNwbGF5IGJsb2NraW5nIHJlcXVpcmVzIDEwLjkrLCBzbGVlcCBldmVu dHMgYXJlIHN1cHBvcnRlZCBvbgorYWxsIHZlcnNpb25zKSwgTVMtV2luZG93cyAoc2xlZXAgYmxv Y2tpbmcgaXMgc3VwcG9ydGVkIG9uIGFsbCB2ZXJzaW9ucywKK3NsZWVwIGV2ZW50cyByZXF1aXJl IDgrKS4KIAwKICogSW5jb21wYXRpYmxlIExpc3AgQ2hhbmdlcyBpbiBFbWFjcyAzMS4xCiAKZGlm ZiAtLWdpdCBhL2xpc3AvYmluZGluZ3MuZWwgYi9saXNwL2JpbmRpbmdzLmVsCmluZGV4IGMwYzJj ZjEwOTk2Li43Y2Q2Nzk2ZThjYiAxMDA2NDQKLS0tIGEvbGlzcC9iaW5kaW5ncy5lbAorKysgYi9s aXNwL2JpbmRpbmdzLmVsCkBAIC0xNzUxLDYgKzE3NTEsMjIgQEAgY3RsLXgtNC1tYXAKIChkZWZp bmUta2V5IHNwZWNpYWwtZXZlbnQtbWFwIFtzaWd1c3IxXSAnaWdub3JlKQogKGRlZmluZS1rZXkg c3BlY2lhbC1ldmVudC1tYXAgW3NpZ3VzcjJdICdpZ25vcmUpCiAKKzs7IFN5c3RlbSBzbGVlcCBl dmVudHMKKyhkZWZjdXN0b20gc2xlZXAtZXZlbnQtZnVuY3Rpb25zIG5pbAorICAiQWJub3JtYWwg aG9vayBpbnZva2VkIG9uIHNsZWVwIGV2ZW50cy4KK0VhY2ggZnVuY3Rpb24gaXMgY2FsbGVkIHdp dGggdGhlIGV2ZW50LiIKKyAgOnR5cGUgJ2hvb2sKKyAgOmdyb3VwICdkaXNwbGF5CisgIDp2ZXJz aW9uICIzMS4xIikKKworKGRlZnVuIHNsZWVwLWV2ZW50LWhhbmRsZXIgKGV2ZW50KQorICAiYHNs ZWVwLWV2ZW50JyBFVkVOVCBoYW5kbGVyLiIKKyAgKGRlY2xhcmUgKGNvbXBsZXRpb24gaWdub3Jl KSkKKyAgKGludGVyYWN0aXZlICJlIikKKyAgKHJ1bi1ob29rLXdpdGgtYXJncyAnc2xlZXAtZXZl bnQtZnVuY3Rpb25zIGV2ZW50KSkKKworKGtleW1hcC1zZXQgc3BlY2lhbC1ldmVudC1tYXAgIjxz bGVlcC1ldmVudD4iICMnc2xlZXAtZXZlbnQtaGFuZGxlcikKKwogOzsgVGV4dCBjb252ZXJzaW9u CiAoZGVmaW5lLWtleSBnbG9iYWwtbWFwIFt0ZXh0LWNvbnZlcnNpb25dICdhbmFseXplLXRleHQt Y29udmVyc2lvbikKIApkaWZmIC0tZ2l0IGEvbGlzcC9zeXN0ZW0tc2xlZXAuZWwgYi9saXNwL3N5 c3RlbS1zbGVlcC5lbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOGM2 YTBmNTUxMWMKLS0tIC9kZXYvbnVsbAorKysgYi9saXNwL3N5c3RlbS1zbGVlcC5lbApAQCAtMCww ICsxLDQ1NSBAQAorOzs7IHN5c3RlbS1zbGVlcC5lbCAtLS0gU3lzdGVtIHNsZWVwL3dha2UgZXZl bnQgbWFuYWdlbWVudCAtKi0gbGV4aWNhbC1iaW5kaW5nOiB0IC0qLQorCis7OyBDb3B5cmlnaHQg KEMpIDIwMjUtMjAyNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworOzsgQXV0aG9y OiBTdGVwaGFuZSBNYXJrcyA8c2hpcG1pbnRzQGdtYWlsLmNvbT4KKzs7IE1haW50YWluZXI6IGVt YWNzLWRldmVsQGdudS5vcmcKKzs7IEtleXdvcmRzOiBjb252ZW5pZW5jZQorOzsgUGFja2FnZS1S ZXF1aXJlczogKChlbWFjcyAiMzEuMSIpKQorCis7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUg RW1hY3MuCisKKzs7IEdOVSBFbWFjcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cis7OyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorOzsgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKzs7IChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKzs7IEdOVSBFbWFjcyBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorOzsgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7 IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKzs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK Kzs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCis7OyBhbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxodHRw czovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKzs7OyBDb21tZW50YXJ5OgorCis7OyBDYWxs IGBzeXN0ZW0tc2xlZXAtYmxvY2stc2xlZXAnIHRvIGluaGliaXQgc3lzdGVtLXdpZGUgaWRsZSBz bGVlcC4KKzs7IElkbGUgc2xlZXAgaXMgdHlwaWNhbGx5IHRyaWdnZXJlZCB3aGVuIHRoZSBzeXN0 ZW0gZG9lcyBub3QgZGV0ZWN0Cis7OyB1c2VyIGFjdGl2aXR5IGFuZCBpcyBpbmRlcGVuZGVudCBv ZiBhbnkgcHJvY2Vzc2luZyB0aGF0IG1heSBiZSBvbgorOzsgZ29pbmcuICBUaGlzIGZ1bmN0aW9u IGlzIHVzZWZ1bCB0byBibG9jayBpZGxlIHNsZWVwIGZvciBsb25nLXJ1bm5pbmcKKzs7IG9wZXJh dGlvbnMsIGZvciBleGFtcGxlLCB3aGVuIGEgY29tcGlsYXRpb24gaXMgcnVubmluZy4gIFRoaXMK Kzs7IGZ1bmN0aW9uIHJldHVybnMgYSB0b2tlbiB3aGljaCB5b3UgbXVzdCB1c2UgdG8gdW5ibG9j ayB0aGlzIHJlcXVlc3QuCis7OworOzsgQ2FsbCBgc3lzdGVtLXNsZWVwLXVuYmxvY2stc2xlZXAn IHdpdGggdGhlIHRva2VuIGZyb20KKzs7IGBzeXN0ZW0tc2xlZXAtYmxvY2stc2xlZXAnIHRvIHVu YmxvY2sgc3lzdGVtLXdpZGUgaWRsZSBzbGVlcCBmb3IgdGhpcworOzsgcmVxdWVzdC4gIFRoZXJl IG1heSBiZSBvdGhlciBhY3RpdmUgcmVxdWVzdHMgd2hpY2ggd2lsbCBwcmV2ZW50IHRoZQorOzsg c3lzdGVtIGZyb20gc2xlZXBpbmcuCis7OworOzsgVGhlIGZ1bmN0aW9uIGBzeXN0ZW0tc2xlZXAt c2xlZXAtYmxvY2tlZC1wJyB3aWxsIHRlbGwgeW91IGlmCis7OyBgc3lzdGVtLXNsZWVwJyBoYXMg YW55IGFjdGl2ZSBzeXN0ZW0gc2xlZXAgYmxvY2tzLgorOzsKKzs7IFlvdSBjYW4gcmVnaXN0ZXIg ZnVuY3Rpb25zIG9uIHRoZSBhYm5vcm1hbCBob29rCis7OyBgc3lzdGVtLXNsZWVwLWV2ZW50LWZ1 bmN0aW9ucycuICBFYWNoIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdoZW4KKzs7IHRoZSBzeXN0 ZW0gaXMgcHJlcGFyaW5nIGZvciBzbGVlcCBhbmQgd2hlbiB0aGUgc3lzdGVtIHdha2VzIGZyb20K Kzs7IHNsZWVwLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VmdWwgd2hlbiB5b3Ugd2FudCB0byBj bG9zZSAoYW5kCis7OyBwb3RlbnRpYWxseSByZW9wZW4pIGV4dGVybmFsIGNvbm5lY3Rpb25zIG9y IHNlcmlhbCBwb3J0cy4KKzs7Cis7OyBPbiBzdXBwb3J0ZWQgR05VL0xpbnV4IHN5c3RlbXMsIHRo ZSBpbXBsZW1lbnRhdGlvbiBpcyB2aWEgRC1CdXMgdG8KKzs7IGluaGliaXQgaWRsZSBzbGVlcCwg a2VlcCB0aGUgZGlzcGxheSBhY3RpdmUsIGFuZCBmb3J3YXJkIGV2ZW50cyBmcm9tCis7OyBsb2dp bmQgZm9yIHN5c3RlbSBzbGVlcCBldmVudHMuCis7OworOzsgT24gbWFjT1MgYW5kIE1TLVdpbmRv d3MsIG5hdGl2ZSBBUElzIGFyZSB1c2VkIHRvIGJsb2NrIGlkbGUgc2xlZXAsCis7OyBrZWVwIHRo ZSBkaXNwbGF5IGFjdGl2ZSwgYW5kIHByb3ZpZGUgc2xlZXAgZXZlbnQgbm90aWZpY2F0aW9ucy4K Kzs7Cis7OyBFeHRlcm5hbGx5IHRvIEVtYWNzLCB0aGVyZSBhcmUgc3lzdGVtIHV0aWxpdHkgZnVu Y3Rpb25zIHRoYXQgeW91IGNhbgorOzsgdXNlIHRvIGluc3BlY3QgYWxsIHByb2Nlc3NlcyBvbiB5 b3VyIHN5c3RlbSB0aGF0IG1pZ2h0IGJlIGJsb2NraW5nIGl0Cis7OyBmcm9tIHNsZWVwaW5nLgor OzsKKzs7IE9uIEQtQnVzIHN5c3RlbXMsIHlvdSBjYW4gdXNlIHRoZSBjb21tYW5kczoKKzs7Cis7 OyAgIHN5c3RlbWQtaW5oaWJpdCAtLWxpc3QKKzs7IG9yCis7OyAgIGRidXMtc2VuZCAtLXN5c3Rl bSAtLXByaW50LXJlcGx5IC0tZGVzdD1vcmcuZnJlZWRlc2t0b3AubG9naW4xIFwKKzs7ICAgL29y Zy9mcmVlZGVza3RvcC9sb2dpbjEgXAorOzsgICBvcmcuZnJlZWRlc2t0b3AubG9naW4xLk1hbmFn ZXIuTGlzdEluaGliaXRvcnMKKzs7Cis7OyBOb3RlOiBZb3UgY2FuIGZpbmQgdGhlIHNsZWVwL3No dXRkb3duIGRlbGF5IEluaGliaXREZWxheU1heFVTZWMgaW4KKzs7IHRoZSBmaWxlIGxvZ2luZC5j b25mKDUpIHdoaWNoIHR5cGljYWxseSBkZWZhdWx0cyB0byA1IHNlY29uZHMuCis7OworOzsgT24g bWFjT1MsIHlvdSBjYW4gdXNlIHRoZSBjb21tYW5kOgorOzsKKzs7ICAgcG1zZXQgLWcgYXNzZXJ0 aW9ucworOzsKKzs7IE9uIE1TLVdpbmRvd3MsIHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgY29t bWFuZCB3aGljaCBtYXkgbmVlZCB0byBiZQorOzsgcnVuIGFzIGFuIGFkbWluaXN0cmF0b3I6Cis7 OworOzsgICBwb3dlcmNmZyAtcmVxdWVzdHMKKworOzs7IENvZGU6CisKKyhyZXF1aXJlICdkYnVz KQorCisoZGVmZ3JvdXAgc3lzdGVtLXNsZWVwIG5pbAorICAiU3lzdGVtIHNsZWVwL3dha2UgYmxv Y2tpbmcgYW5kIGV2ZW50IG1hbmFnZW1lbnQuIgorICA6Z3JvdXAgJ2NvbnZlbmllbmNlCisgIDp2 ZXJzaW9uICIzMS4xIikKKworKGRlZnZhciBzeXN0ZW0tc2xlZXAtLWJhY2stZW5kIG5pbAorICAi R2VuZXJpYyBzbGVlcC13YWtlIG1ldGhvZCBzeXN0ZW0gZGlzcGF0Y2hlci4iKQorCisoZGVmdmFy IHN5c3RlbS1zbGVlcC0tc2xlZXAtYmxvY2stdG9rZW5zIG5pbAorICAiQSBsaXN0IG9mIGFjdGl2 ZSBzbGVlcC1ibG9jayB0b2tlbnMuCitJZiBub24tbmlsLCBpZGxlIHNsZWVwIGlzIGluaGliaXRl ZCBieSBgc3lzdGVtLXNsZWVwJy4iKQorCis7OzsjIyNhdXRvbG9hZAorKGRlZmN1c3RvbSBzeXN0 ZW0tc2xlZXAtZXZlbnQtZnVuY3Rpb25zIG5pbAorICAiQWJub3JtYWwgaG9vayBpbnZva2VkIG9u IHN5c3RlbSBzbGVlcCBldmVudHMuCitFYWNoIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIG9uZSBh cmd1bWVudCB3aGljaCB3aWxsIGJlIG9uZSBvZiB0aGVzZQorc3ltYm9scyBgcHJlLXNsZWVwJyBv ciBgcG9zdC13YWtlJy4KKworSGFuZGxpbmcgYHByZS1zbGVlcCcgZXZlbnRzIHNob3VsZCBiZSBk b25lIGFzIGZhc3QgYXMgcG9zc2libGUuICBTeXN0ZW1zCitvZnRlbiBncmFudCBhIHZlcnkgc2hv cnQgcHJlLXNsZWVwIHByb2Nlc3NpbmcgaW50ZXJ2YWwsIHR5cGljYWxseQorcmFuZ2luZyBiZXR3 ZWVuIDIgYW5kIDUgc2Vjb25kcy4gIFRoZSBzeXN0ZW0gbWF5IHNsZWVwIGV2ZW4gaWYgeW91cgor cHJvY2Vzc2luZyBpcyBub3QgY29tcGxldGUsIHNvIGJlIHN1cmUgeW91IGRvIGFzIGxpdHRsZSBh cyBwb3NzaWJsZS4KK0ZvciBleGFtcGxlLCB5b3VyIGZ1bmN0aW9uIGNvdWxkIGNsb3NlIGFjdGl2 ZSBjb25uZWN0aW9ucyBvciBzZXJpYWwKK3BvcnRzLgorCitIYW5kbGluZyBgcG9zdC13YWtlJyBl dmVudHMgb2ZmZXJzIG1vcmUgbGVld2F5LiAgWW91ciBmdW5jdGlvbiBjb3VsZAorcmVlc3RhYmxp c2ggY29ubmVjdGlvbnMuCisKK05vdGU6IFlvdXIgY29kZSwgb3IgdGhlIGZ1bmN0aW9ucyBpdCBj YWxscywgc2hvdWxkIG5vdCByYWlzZSBhbnkgc2lnbmFscworb3IgYWxsIGhvb2tzIHdpbGwgYmUg aGFsdGVkIHByZXZlbnRpbmcgb3RoZXIgaG9vayBmdW5jdGlvbnMgZnJvbQorY2xlYW5pbmcgdXAg b3Igd2FraW5nIHVwLiAgWW91IGNhbiB3cmFwIHlvdXIgY29kZSBpbiBhIGBjb25kaXRpb24tY2Fz ZScKK2Jsb2NrLiIKKyAgOnR5cGUgJ2hvb2sKKyAgOnZlcnNpb24gIjMxLjEiKQorCis7OzsjIyNh dXRvbG9hZAorKGRlZnVuIHN5c3RlbS1zbGVlcC1ibG9jay1zbGVlcCAoJm9wdGlvbmFsIHdoeSBh bGxvdy1kaXNwbGF5LXNsZWVwKQorICAiSW5oaWJpdCBzeXN0ZW0gaWRsZSBzbGVlcC4KK09wdGlv bmFsIFdIWSBpcyBhIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgYSBzbGVlcCBibG9jayB0byBzeXN0 ZW0gdXRpbGl0eQorY29tbWFuZHMgdGhhdCBpbnNwZWN0IHN5c3RlbS13aWRlIGJsb2Nrcy4gIFdI WSBkZWZhdWx0cyB0byBcIkVtYWNzXCIuCisKK09wdGlvbmFsIEFMTE9XLURJU1BMQVktU0xFRVAs IHdoZW4gbm9uLW5pbCwgYWxsb3dzIHRoZSBkaXNwbGF5IHRvIHNsZWVwCitvciBhIHNjcmVlbiBz YXZlciB0byBydW4gd2hpbGUgdGhlIHN5c3RlbSBpZGxlIHNsZWVwIGlzIGJsb2NrZWQuICBUaGUK K2RlZmF1bHQgaXMgdG8ga2VlcCB0aGUgZGlzcGxheSBhY3RpdmUuCisKK1JldHVybiBhIHNsZWVw IGJsb2NraW5nIHRva2VuLiAgWW91IG11c3QgcmV0YWluIHRoaXMgdmFsdWUgYW5kIHByb3ZpZGUK K2l0IHRvIGBzeXN0ZW0tc2xlZXAtdW5ibG9jay1zbGVlcCcgdG8gdW5ibG9jayBpdHMgYXNzb2Np YXRlZCBibG9jay4KKworUmV0dXJuIG5pbCBpZiBzeXN0ZW0gc2xlZXAgY2Fubm90IGJlIGluaGli aXRlZC4iCisgICh3aGVuIHN5c3RlbS1zbGVlcC0tYmFjay1lbmQKKyAgICAoc3lzdGVtLXNsZWVw LS1ibG9jay1zbGVlcCAob3Igd2h5ICJFbWFjcyIpIGFsbG93LWRpc3BsYXktc2xlZXApKSkKKwor KGRlZnVuIHN5c3RlbS1zbGVlcC11bmJsb2NrLXNsZWVwICh0b2tlbikKKyAgIlVuYmxvY2sgdGhl IHN5c3RlbSBzbGVlcCBibG9jayBhc3NvY2lhdGVkIHdpdGggVE9LRU4uCitSZXR1cm4gbm9uLW5p bCBUT0tFTiB3YXMgdW5ibG9ja2VkLCBvciBuaWwgaWYgbm90LiIKKyAgKHdoZW4gc3lzdGVtLXNs ZWVwLS1iYWNrLWVuZAorICAgIChzeXN0ZW0tc2xlZXAtLXVuYmxvY2stc2xlZXAgdG9rZW4pKSkK KworOzs7IyMjYXV0b2xvYWQKKyhkZWZtYWNybyB3aXRoLXN5c3RlbS1zbGVlcC1ibG9jayAod2h5 IGFsbG93LWRpc3BsYXktc2xlZXAgJnJlc3QgYm9keSkKKyAgIkV4ZWN1dGUgdGhlIGZvcm1zIGlu IEJPRFkgd2hpbGUgYmxvY2tpbmcgc3lzdGVtIHNsZWVwLgorV0hZIGlzIGEgc3RyaW5nIHRoYXQg aWRlbnRpZmllcyBhIHNsZWVwIGJsb2NrLgorQUxMT1ctRElTUExBWS1TTEVFUCwgd2hlbiBub24t bmlsLCBhbGxvd3MgdGhlIGRpc3BsYXkgdG8gc2xlZXAKK29yIGEgc2NyZWVuIHNhdmVyIHRvIHJ1 biB3aGlsZSB0aGUgc3lzdGVtIGlkbGUgc2xlZXAgaXMgYmxvY2tlZC4KK1RoZSBibG9jayBpcyB1 bmJsb2NrZWQgd2hlbiBCT0RZIGNvbXBsZXRlcy4iCisgIChkZWNsYXJlIChpbmRlbnQgMSkgKGRl YnVnIHQpKQorICAobGV0ICgodG9rZW4gKG1ha2Utc3ltYm9sICItLXNsZWVwLXRva2VuLS0iKSkp CisgICAgYChsZXQgKCgsdG9rZW4gKHN5c3RlbS1zbGVlcC1ibG9jay1zbGVlcCAsd2h5ICxhbGxv dy1kaXNwbGF5LXNsZWVwKSkpCisgICAgICAgKHVud2luZC1wcm90ZWN0CisgICAgICAgICAgIChw cm9nbgorICAgICAgICAgICAgICxAYm9keSkKKyAgICAgICAgIChzeXN0ZW0tc2xlZXAtdW5ibG9j ay1zbGVlcCAsdG9rZW4pKSkpKQorCisoZGVmdW4gc3lzdGVtLXNsZWVwLXVuYmxvY2stYWxsLXNs ZWVwLWJsb2NrcyAoKQorICAiVW5ibG9jayBhbGwgYHN5c3RlbS1zbGVlcCcgYmxvY2tzLiIKKyAg KHdoaWxlIHN5c3RlbS1zbGVlcC0tc2xlZXAtYmxvY2stdG9rZW5zCisgICAgKHN5c3RlbS1zbGVl cC11bmJsb2NrLXNsZWVwIChjYXIgc3lzdGVtLXNsZWVwLS1zbGVlcC1ibG9jay10b2tlbnMpKSkp CisKKzs7OyMjI2F1dG9sb2FkCisoZGVmdW4gc3lzdGVtLXNsZWVwLXNsZWVwLWJsb2NrZWQtcCAo KQorICAiUmV0dXJuIG5vbi1uaWwgaWYgdGhlcmUgYXJlIGFjdGl2ZSBzbGVlcCBibG9ja3MuIgor ICAoYW5kIHN5c3RlbS1zbGVlcC0tYmFjay1lbmQKKyAgICAgICBzeXN0ZW0tc2xlZXAtLXNsZWVw LWJsb2NrLXRva2VucykpCisKKwwKKzs7IEludGVybmFsIGltcGxlbWVudGF0aW9uLgorCisoZGVm dW4gc3lzdGVtLXNsZWVwLS1zZXQtYmFjay1lbmQgKCkKKyAgIkRldGVybWluZSBzbGVlcC93YWtl IGhvc3Qgc3lzdGVtIHR5cGUuIgorICA7OyBPcmRlciBtYXR0ZXJzIHRvIGFjY29tbW9kYXRlIHRo ZSBjYXNlcyB3aGVyZSBhbiBOUyBvciBNUy1XaW5kb3dzCisgIDs7IGJ1aWxkIGhhdmUgdGhlIGRi dXMgZmVhdHVyZS4KKyAgKHNldHEgc3lzdGVtLXNsZWVwLS1iYWNrLWVuZAorICAgICAgICAoY29u ZCAoKGZlYXR1cmVwICducykgJ25zKQorICAgICAgICAgICAgICAoKGZlYXR1cmVwICd3MzIpICd3 MzIpCisgICAgICAgICAgICAgICgoYW5kIChmZWF0dXJlcCAnZGJ1c2JpbmQpCisgICAgICAgICAg ICAgICAgICAgIChtZW1iZXIgIm9yZy5mcmVlZGVza3RvcC5sb2dpbjEiCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGRidXMtbGlzdC1hY3RpdmF0YWJsZS1uYW1lcyA6c3lzdGVtKSkpCisg ICAgICAgICAgICAgICAnZGJ1cykKKyAgICAgICAgICAgICAgKHQgbmlsKSkpKQorCisoY2wtZGVm Z2VuZXJpYyBzeXN0ZW0tc2xlZXAtLWVuYWJsZSAoKQorICAiRW5hYmxlIHRoZSBgc3lzdGVtLXNs ZWVwJyBiYWNrIGVuZC4KK1JldHVybiB0IGlmIHRoZSBiYWNrIGVuZCBpcyBpbml0aWFsaXplZCwg b3IgbmlsLiIpCisKKyhjbC1kZWZnZW5lcmljIHN5c3RlbS1zbGVlcC0tZGlzYWJsZSAoKQorICAi RGlzYWJsZSB0aGUgc2xlZXAvd2FrZSBiYWNrIGVuZC4iKQorCisoY2wtZGVmZ2VuZXJpYyBzeXN0 ZW0tc2xlZXAtLWJsb2NrLXNsZWVwICh3aHkgYWxsb3ctZGlzcGxheS1zbGVlcCkKKyAgIkluaGli aXQgc3lzdGVtIGlkbGUgc2xlZXAuCitXSFkgaXMgYSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIGEg c2xlZXAgYmxvY2sgdG8gc3lzdGVtIHV0aWxpdHkgY29tbWFuZHMKK3RoYXQgaW5zcGVjdCBzeXN0 ZW0td2lkZSBibG9ja3MuCitXaGVuIG5vbi1uaWwsIEFMTE9XLURJU1BMQVktU0xFRVAgYWxsb3dz IHRoZSBkaXNwbGF5IHRvIHNsZWVwIG9yIGEKK3NjcmVlbiBzYXZlciB0byBydW4gd2hpbGUgdGhl IHN5c3RlbSBpZGxlIHNsZWVwIGlzIGJsb2NrZWQuICBUaGUgZGVmYXVsdAoraXMgdG8ga2VlcCB0 aGUgZGlzcGxheSBhY3RpdmUuCitSZXR1cm4gYSBzbGVlcC1ibG9jayB0b2tlbi4iKQorCisoY2wt ZGVmZ2VuZXJpYyBzeXN0ZW0tc2xlZXAtLXVuYmxvY2stc2xlZXAgKHRva2VuKQorICAiVW5ibG9j ayB0aGUgc3lzdGVtIHNsZWVwIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCBUT0tFTi4KK1JldHVybiBu b24tbmlsIFRPS0VOIHdhcyB1bmJsb2NrZWQsIG9yIG5pbCBpZiBub3QuIikKKworKGRlZnZhciBz eXN0ZW0tc2xlZXAtLWV2ZW50LWluLXByb2dyZXNzIG5pbCkKKyhkZWZ2YXIgc3lzdGVtLXNsZWVw LS1ldmVudC1xdWV1ZSBuaWwpCisKKyhkZWZ1biBzeXN0ZW0tc2xlZXAtLXNsZWVwLWV2ZW50LWZ1 bmN0aW9uIChldmVudCkKKyAgIkhhbmRsZSA8c2xlZXAtZXZlbnQ+IHNwZWNpYWwgZXZlbnRzIGFu ZCBhdm9pZCByYWNlcy4iCisgIDs7IFF1ZXVlIGluY29taW5nIGV2ZW50LgorICAoc2V0cSBzeXN0 ZW0tc2xlZXAtLWV2ZW50LXF1ZXVlCisgICAgICAgIChhcHBlbmQgc3lzdGVtLXNsZWVwLS1ldmVu dC1xdWV1ZSBldmVudCkpCisgIDs7IElmIGFuIGV2ZW50IGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3Ms IHJldHVybiByaWdodCBhd2F5LgorICA7OyBPdGhlcndpc2UsIHByb2Nlc3MgcXVldWVkIGV2ZW50 cy4KKyAgKHdoaWxlIChhbmQgKG5vdCBzeXN0ZW0tc2xlZXAtLWV2ZW50LWluLXByb2dyZXNzKQor ICAgICAgICAgICAgICBzeXN0ZW0tc2xlZXAtLWV2ZW50LXF1ZXVlKQorICAgIChsZXQgKChjdXJy ZW50LWV2ZW50IChwb3Agc3lzdGVtLXNsZWVwLS1ldmVudC1xdWV1ZSkpKQorICAgICAgKHNldHEg c3lzdGVtLXNsZWVwLS1ldmVudC1pbi1wcm9ncmVzcyBjdXJyZW50LWV2ZW50KQorICAgICAgKHVu d2luZC1wcm90ZWN0CisgICAgICAgICAgKHJ1bi1ob29rLXdpdGgtYXJncyAnc3lzdGVtLXNsZWVw LWV2ZW50LWZ1bmN0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudC1l dmVudCkKKyAgICAgICAgKHNldHEgc3lzdGVtLXNsZWVwLS1ldmVudC1pbi1wcm9ncmVzcyBuaWwp KSkpKQorCisMCis7OyBELUJ1cyBzdXBwb3J0LgorCisoZGVmY29uc3Qgc3lzdGVtLXNsZWVwLS1k YnVzLXNsZWVwLWluaGliaXRvci10eXBlcyAic2xlZXAiCisgICJUaGlzIGlzIGEgY29sb24tc2Vw YXJhdGVkIGxpc3Qgb2Ygb3B0aW9ucy4KK1RoZSBkZWZhdWx0IGlzIFwic2xlZXBcIiB3aGljaCBp cyBjb21wYXRpYmxlIHdpdGggdGhlIG90aGVyIHN1cHBvcnRlZAorYHN5c3RlbS1zbGVlcCcgcGxh dGZvcm1zLiAgVGhpcyBjb3VsZCBhbHNvIGJlCitcInNsZWVwOnNodXRkb3duXCIuIFNodXRkb3du IGlzIGF2YWlsYWJsZSBvbmx5IG9uIEQtQnVzIHN5c3RlbXMuIikKKworKGRlY2xhcmUtZnVuY3Rp b24gZGJ1cy0tZmQtY2xvc2UgImRidXNiaW5kLmMiKQorKGRlZnZhciBzeXN0ZW0tc2xlZXAtLWRi dXMtZGVsYXktbG9jayBuaWwpCisoZGVmdmFyIHN5c3RlbS1zbGVlcC0tZGJ1cy1wcmUtc2xlZXAt c2lnbmFsIG5pbCkKKworKGRlZnVuIHN5c3RlbS1zbGVlcC0tZGJ1cy1kZWxheS1sb2NrIChtYWtl LW9yLWNsb3NlKQorICAoY29uZCAobWFrZS1vci1jbG9zZQorICAgICAgICAgKGlmIHN5c3RlbS1z bGVlcC0tZGJ1cy1kZWxheS1sb2NrCisgICAgICAgICAgICAgKGVycm9yICJEZWxheSBsb2NrIHNo b3VsZCBiZSBuaWwiKQorICAgICAgICAgICAoc2V0cSBzeXN0ZW0tc2xlZXAtLWRidXMtZGVsYXkt bG9jaworICAgICAgICAgICAgICAgICAoZGJ1cy1jYWxsLW1ldGhvZAorICAgICAgICAgICAgICAg ICAgOnN5c3RlbQorICAgICAgICAgICAgICAgICAgIm9yZy5mcmVlZGVza3RvcC5sb2dpbjEiCisg ICAgICAgICAgICAgICAgICAiL29yZy9mcmVlZGVza3RvcC9sb2dpbjEiCisgICAgICAgICAgICAg ICAgICAib3JnLmZyZWVkZXNrdG9wLmxvZ2luMS5NYW5hZ2VyIgorICAgICAgICAgICAgICAgICAg IkluaGliaXQiCisgICAgICAgICAgICAgICAgICA6a2VlcC1mZAorICAgICAgICAgICAgICAgICAg c3lzdGVtLXNsZWVwLS1kYnVzLXNsZWVwLWluaGliaXRvci10eXBlcworICAgICAgICAgICAgICAg ICAgZGJ1cy1zZXJ2aWNlLWVtYWNzCisgICAgICAgICAgICAgICAgICAiRW1hY3MgU2xlZXAgRXZl bnQgV2F0Y2hlciIKKyAgICAgICAgICAgICAgICAgICJkZWxheSIpKSkpCisgICAgICAgICh0Cisg ICAgICAgICAod2hlbiBzeXN0ZW0tc2xlZXAtLWRidXMtZGVsYXktbG9jaworICAgICAgICAgICAo ZGJ1cy0tZmQtY2xvc2Ugc3lzdGVtLXNsZWVwLS1kYnVzLWRlbGF5LWxvY2spCisgICAgICAgICAg IChzZXRxIHN5c3RlbS1zbGVlcC0tZGJ1cy1kZWxheS1sb2NrIG5pbCkpKSkpCisKKyhkZWZ1biBz eXN0ZW0tc2xlZXAtLWRidXMtcHJlcGFyZS1mb3Itc2xlZXAtY2FsbGJhY2sgKHNsZWVwLW9yLXdh a2UpCisgIChjb25kIChzbGVlcC1vci13YWtlCisgICAgICAgICAoaW5zZXJ0LXNwZWNpYWwtZXZl bnQgJyhzbGVlcC1ldmVudCBwcmUtc2xlZXApKSkKKyAgICAgICAgKHQKKyAgICAgICAgIChpbnNl cnQtc3BlY2lhbC1ldmVudCAnKHNsZWVwLWV2ZW50IHBvc3Qtd2FrZSkpKSkpCisKKyhkZWZ1biBz eXN0ZW0tc2xlZXAtLWRidXMtcHJlcGFyZS1mb3Itc2xlZXAtd2F0Y2hlciAobWFrZS1vci1jbG9z ZSkKKyAgKGNvbmQgKG1ha2Utb3ItY2xvc2UKKyAgICAgICAgIChpZiBzeXN0ZW0tc2xlZXAtLWRi dXMtcHJlLXNsZWVwLXNpZ25hbAorICAgICAgICAgICAgIChlcnJvciAiUHJlcGFyZUZvclNsZWVw IHdhdGNoZXIgc2hvdWxkIGJlIG5pbCIpCisgICAgICAgICAgIChzZXRxIHN5c3RlbS1zbGVlcC0t ZGJ1cy1wcmUtc2xlZXAtc2lnbmFsCisJICAgICAgICAgKGRidXMtcmVnaXN0ZXItc2lnbmFsCisg ICAgICAgICAgICAgICAgICA6c3lzdGVtCisJICAgICAgICAgICJvcmcuZnJlZWRlc2t0b3AubG9n aW4xIgorCSAgICAgICAgICAiL29yZy9mcmVlZGVza3RvcC9sb2dpbjEiCisJICAgICAgICAgICJv cmcuZnJlZWRlc2t0b3AubG9naW4xLk1hbmFnZXIiCisJICAgICAgICAgICJQcmVwYXJlRm9yU2xl ZXAiCisJICAgICAgICAgICMnc3lzdGVtLXNsZWVwLS1kYnVzLXByZXBhcmUtZm9yLXNsZWVwLWNh bGxiYWNrKSkpKQorICAgICAgICAodAorICAgICAgICAgKGRidXMtdW5yZWdpc3Rlci1vYmplY3Qg c3lzdGVtLXNsZWVwLS1kYnVzLXByZS1zbGVlcC1zaWduYWwpCisgICAgICAgICAoc2V0cSBzeXN0 ZW0tc2xlZXAtLWRidXMtcHJlLXNsZWVwLXNpZ25hbCBuaWwpKSkpCisKKyhkZWZ1biBzeXN0ZW0t c2xlZXAtLWRidXMtcHJlcGFyZS1mb3Itc2xlZXAtZnVuY3Rpb24gKGV2ZW50KQorICAocGNhc2Ug ZXZlbnQKKyAgICAoJ3ByZS1zbGVlcAorICAgICAoc3lzdGVtLXNsZWVwLS1kYnVzLWRlbGF5LWxv Y2sgbmlsKSkKKyAgICAoJ3Bvc3Qtd2FrZQorICAgICAoc3lzdGVtLXNsZWVwLS1kYnVzLWRlbGF5 LWxvY2sgdCkpKSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tc2xlZXAtLWVuYWJsZSAoJmNvbnRl eHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tc2xlZXAtLWJh Y2stZW5kIChlcWwgJ2RidXMpKSkKKyAgOzsgT3JkZXIgbWF0dGVycy4KKyAgKGFkZC1ob29rICdz eXN0ZW0tc2xlZXAtZXZlbnQtZnVuY3Rpb25zCisgICAgICAgICAgIydzeXN0ZW0tc2xlZXAtLWRi dXMtcHJlcGFyZS1mb3Itc2xlZXAtZnVuY3Rpb24KKyAgICAgICAgICA7OyBUaGlzIG11c3QgcnVu IGxhc3QuCisgICAgICAgICAgOTkpCisgIChzeXN0ZW0tc2xlZXAtLWRidXMtZGVsYXktbG9jayB0 KQorICAoc3lzdGVtLXNsZWVwLS1kYnVzLXByZXBhcmUtZm9yLXNsZWVwLXdhdGNoZXIgdCkKKyAg dCkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tc2xlZXAtLWRpc2FibGUgKCZjb250ZXh0CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5c3RlbS1zbGVlcC0tYmFjay1lbmQg KGVxbCAnZGJ1cykpKQorICAoc3lzdGVtLXNsZWVwLS1kYnVzLXByZXBhcmUtZm9yLXNsZWVwLXdh dGNoZXIgbmlsKQorICAoc3lzdGVtLXNsZWVwLS1kYnVzLWRlbGF5LWxvY2sgbmlsKQorICAocmVt b3ZlLWhvb2sgJ3N5c3RlbS1zbGVlcC1ldmVudC1mdW5jdGlvbnMKKyAgICAgICAgICAgICAgICMn c3lzdGVtLXNsZWVwLS1kYnVzLXByZXBhcmUtZm9yLXNsZWVwLWZ1bmN0aW9uKSkKKworKGNsLWRl Zm1ldGhvZCBzeXN0ZW0tc2xlZXAtLWJsb2NrLXNsZWVwICh3aHkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3ctZGlzcGxheS1zbGVlcAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udGV4dAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXNsZWVwLS1iYWNrLWVuZCAoZXFsICdkYnVz KSkpCisgIChsZXQgKChzdWJ0b2tlbnMpKQorICAgIChpZi1sZXQqICgoc2xlZXAtY29va2llIChk YnVzLWNhbGwtbWV0aG9kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzeXN0ZW0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yZy5mcmVlZGVza3RvcC5sb2dpbjEiCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICIvb3JnL2ZyZWVkZXNrdG9wL2xvZ2luMSIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIm9yZy5mcmVlZGVza3RvcC5sb2dpbjEuTWFuYWdlciIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluaGliaXQiCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDprZWVwLWZkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3Rl bS1zbGVlcC0tZGJ1cy1zbGVlcC1pbmhpYml0b3ItdHlwZXMKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGJ1cy1zZXJ2aWNlLWVtYWNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHdoeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmxvY2siKSkpCisgICAgICAgIChw cm9nbgorICAgICAgICAgIChwdXNoIChjb25zICdkYnVzLWluaGliaXRvci1sb2NrIHNsZWVwLWNv b2tpZSkgc3VidG9rZW5zKQorICAgICAgICAgICh1bmxlc3MgYWxsb3ctZGlzcGxheS1zbGVlcAor ICAgICAgICAgICAgKGlmLWxldCogKChzY3JlZW4tY29va2llCisgICAgICAgICAgICAgICAgICAg ICAgIChkYnVzLWNhbGwtbWV0aG9kCisgICAgICAgICAgICAgICAgICAgICAgICA6c2Vzc2lvbgor ICAgICAgICAgICAgICAgICAgICAgICAgIm9yZy5mcmVlZGVza3RvcC5TY3JlZW5TYXZlciIKKyAg ICAgICAgICAgICAgICAgICAgICAgICIvb3JnL2ZyZWVkZXNrdG9wL1NjcmVlblNhdmVyIgorICAg ICAgICAgICAgICAgICAgICAgICAgIm9yZy5mcmVlZGVza3RvcC5TY3JlZW5TYXZlciIKKyAgICAg ICAgICAgICAgICAgICAgICAgICJJbmhpYml0IgorICAgICAgICAgICAgICAgICAgICAgICAgZGJ1 cy1zZXJ2aWNlLWVtYWNzCisgICAgICAgICAgICAgICAgICAgICAgICAiU2NyZWVuIFNhdmVyIEJs b2NrIikpKQorICAgICAgICAgICAgICAgIChwdXNoIChjb25zICdkYnVzLXNjcmVlbnNhdmVyLWxv Y2sgc2NyZWVuLWNvb2tpZSkgc3VidG9rZW5zKQorICAgICAgICAgICAgICAod2FybiAiVW5hYmxl IHRvIGJsb2NrIHRoZSBzY3JlZW4gc2F2ZXIiKSkpCisgICAgICAgICAgKGxldCAoKHRva2VuIChs aXN0IDpzeXN0ZW0gJ2RidXMgOndoeSB3aHkgOnN1YnRva2VucyBzdWJ0b2tlbnMpKSkKKyAgICAg ICAgICAgIChwdXNoIHRva2VuIHN5c3RlbS1zbGVlcC0tc2xlZXAtYmxvY2stdG9rZW5zKQorICAg ICAgICAgICAgdG9rZW4pKQorICAgICAgKHdhcm4gIlVuYWJsZSB0byBibG9jayBzeXN0ZW0gc2xl ZXAiKSkpKQorCisoY2wtZGVmbWV0aG9kIHN5c3RlbS1zbGVlcC0tdW5ibG9jay1zbGVlcCAodG9r ZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udGV4dAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tc2xlZXAt LWJhY2stZW5kIChlcWwgJ2RidXMpKSkKKworICAoaWYgKG1lbXEgdG9rZW4gc3lzdGVtLXNsZWVw LS1zbGVlcC1ibG9jay10b2tlbnMpCisgICAgICAocHJvZ24KKyAgICAgICAgKHNldHEgc3lzdGVt LXNsZWVwLS1zbGVlcC1ibG9jay10b2tlbnMKKyAgICAgICAgICAgICAgKHJlbXEgdG9rZW4gc3lz dGVtLXNsZWVwLS1zbGVlcC1ibG9jay10b2tlbnMpKQorICAgICAgICAoZG9saXN0IChzdWJ0b2tl biAocGxpc3QtZ2V0IHRva2VuIDpzdWJ0b2tlbnMpKQorICAgICAgICAgIChwY2FzZSAoY2FyIHN1 YnRva2VuKQorICAgICAgICAgICAgKCdkYnVzLWluaGliaXRvci1sb2NrCisgICAgICAgICAgICAg KGRidXMtLWZkLWNsb3NlIChjZHIgc3VidG9rZW4pKSkKKyAgICAgICAgICAgICgnZGJ1cy1zY3Jl ZW5zYXZlci1sb2NrCisgICAgICAgICAgICAgKGRidXMtY2FsbC1tZXRob2QKKyAgICAgICAgICAg ICAgOnNlc3Npb24KKyAgICAgICAgICAgICAgIm9yZy5mcmVlZGVza3RvcC5TY3JlZW5TYXZlciIK KyAgICAgICAgICAgICAgIi9vcmcvZnJlZWRlc2t0b3AvU2NyZWVuU2F2ZXIiCisgICAgICAgICAg ICAgICJvcmcuZnJlZWRlc2t0b3AuU2NyZWVuU2F2ZXIiCisgICAgICAgICAgICAgICJVbkluaGli aXQiCisgICAgICAgICAgICAgIChjZHIgc3VidG9rZW4pKSkpKQorICAgICAgICB0KQorICAgICh3 YXJuICJVbmtub3duIGBzeXN0ZW0tc2xlZXAnIHNsZWVwIHRva2VuIikKKyAgICBuaWwpKQorCisM Cis7OyBtYWNPUy9HTlVzdGVwIE5TIHN1cHBvcnQuCisKKyhkZWNsYXJlLWZ1bmN0aW9uIG5zLWJs b2NrLXN5c3RlbS1zbGVlcCAibnNmbnMubSIpCisoZGVjbGFyZS1mdW5jdGlvbiBucy11bmJsb2Nr LXN5c3RlbS1zbGVlcCAibnNmbnMubSIpCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXNsZWVwLS1l bmFibGUgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lz dGVtLXNsZWVwLS1iYWNrLWVuZCAoZXFsICducykpKQorICB0KQorCisoY2wtZGVmbWV0aG9kIHN5 c3RlbS1zbGVlcC0tZGlzYWJsZSAoJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc3lzdGVtLXNsZWVwLS1iYWNrLWVuZCAoZXFsICducykpKQorICAoaWdub3Jl KSkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tc2xlZXAtLWJsb2NrLXNsZWVwICh3aHkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3ctZGlzcGxheS1zbGVlcAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udGV4dAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXNsZWVwLS1iYWNrLWVu ZCAoZXFsICducykpKQorICAoaWYtbGV0KiAoKGNvb2tpZSAobnMtYmxvY2stc3lzdGVtLXNsZWVw IHdoeSBhbGxvdy1kaXNwbGF5LXNsZWVwKSkKKyAgICAgICAgICAgICh0b2tlbiAobGlzdCA6c3lz dGVtICducyA6d2h5IHdoeQorICAgICAgICAgICAgICAgICAgICAgICAgIDp0b2tlbiAoY29ucyAn bnMtc2xlZXAtYmxvY2sgY29va2llKSkpKQorICAgICAgKHByb2duCisgICAgICAgIChwdXNoIHRv a2VuIHN5c3RlbS1zbGVlcC0tc2xlZXAtYmxvY2stdG9rZW5zKQorICAgICAgICB0b2tlbikKKyAg ICAod2FybiAiVW5hYmxlIHRvIGJsb2NrIHN5c3RlbSBzbGVlcCIpKSkKKworKGNsLWRlZm1ldGhv ZCBzeXN0ZW0tc2xlZXAtLXVuYmxvY2stc2xlZXAgKHRva2VuCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJmNvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXNsZWVwLS1iYWNrLWVuZCAoZXFsICducykpKQor ICAoaWYgKG1lbXEgdG9rZW4gc3lzdGVtLXNsZWVwLS1zbGVlcC1ibG9jay10b2tlbnMpCisgICAg ICAocHJvZ24KKyAgICAgICAgKHNldHEgc3lzdGVtLXNsZWVwLS1zbGVlcC1ibG9jay10b2tlbnMK KyAgICAgICAgICAgICAgKHJlbXEgdG9rZW4gc3lzdGVtLXNsZWVwLS1zbGVlcC1ibG9jay10b2tl bnMpKQorICAgICAgICAoaWYgKG5zLXVuYmxvY2stc3lzdGVtLXNsZWVwIChjZHIgKHBsaXN0LWdl dCB0b2tlbiA6dG9rZW4pKSkKKyAgICAgICAgICAgIHQKKyAgICAgICAgICAod2FybiAiVW5hYmxl IHRvIHVuYmxvY2sgc3lzdGVtIHNsZWVwIikKKyAgICAgICAgICBuaWwpKQorICAgICh3YXJuICJV bmtub3duIGBzeXN0ZW0tc2xlZXAnIHNsZWVwIHRva2VuIikKKyAgICBuaWwpKQorCisMCis7OyBN Uy1XaW5kb3dzIHN1cHBvcnQuCisKKyhkZWNsYXJlLWZ1bmN0aW9uIHczMi1ibG9jay1zeXN0ZW0t c2xlZXAgInczMmZucy5jIikKKyhkZWNsYXJlLWZ1bmN0aW9uIHczMi11bmJsb2NrLXN5c3RlbS1z bGVlcCAidzMyZm5zLmMiKQorKGRlY2xhcmUtZnVuY3Rpb24gdzMyLXN5c3RlbS1zbGVlcC1ibG9j ay1jb3VudCAidzMyZm5zLmMiKQorCisoZGVmdmFyIHN5c3RlbS1zbGVlcC0tdzMyLXNsZWVwLWJs b2NrLWNvdW50IDApCisKKyhjbC1kZWZtZXRob2Qgc3lzdGVtLXNsZWVwLS1lbmFibGUgKCZjb250 ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtLXNsZWVwLS1i YWNrLWVuZCAoZXFsICd3MzIpKSkKKyAgdCkKKworKGNsLWRlZm1ldGhvZCBzeXN0ZW0tc2xlZXAt LWRpc2FibGUgKCZjb250ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHN5c3RlbS1zbGVlcC0tYmFjay1lbmQgKGVxbCAndzMyKSkpCisgIChpZ25vcmUpKQorCisoY2wt ZGVmbWV0aG9kIHN5c3RlbS1zbGVlcC0tYmxvY2stc2xlZXAgKHdoeQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvdy1kaXNwbGF5LXNsZWVwCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb250ZXh0CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChzeXN0ZW0tc2xlZXAtLWJhY2stZW5kIChlcWwgJ3cz MikpKQorICAoaWYtbGV0KiAoKGNvb2tpZSAodzMyLWJsb2NrLXN5c3RlbS1zbGVlcCBhbGxvdy1k aXNwbGF5LXNsZWVwKSkKKyAgICAgICAgICAgICh0b2tlbiAobGlzdCA6c3lzdGVtICd3MzIgOndo eSB3aHkKKyAgICAgICAgICAgICAgICAgICAgICAgICA6dG9rZW4gKGNvbnMgJ3czMi1zbGVlcC1i bG9jayBjb29raWUpKSkpCisgICAgICAocHJvZ24KKyAgICAgICAgKHB1c2ggdG9rZW4gc3lzdGVt LXNsZWVwLS1zbGVlcC1ibG9jay10b2tlbnMpCisgICAgICAgIHRva2VuKQorICAgICh3YXJuICJV bmFibGUgdG8gYmxvY2sgc3lzdGVtIHNsZWVwIikpKQorCisoY2wtZGVmbWV0aG9kIHN5c3RlbS1z bGVlcC0tdW5ibG9jay1zbGVlcCAodG9rZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChzeXN0ZW0tc2xlZXAtLWJhY2stZW5kIChlcWwgJ3czMikpKQorICAoaWYgKG1l bXEgdG9rZW4gc3lzdGVtLXNsZWVwLS1zbGVlcC1ibG9jay10b2tlbnMpCisgICAgICAocHJvZ24K KyAgICAgICAgKHNldHEgc3lzdGVtLXNsZWVwLS1zbGVlcC1ibG9jay10b2tlbnMKKyAgICAgICAg ICAgICAgKHJlbXEgdG9rZW4gc3lzdGVtLXNsZWVwLS1zbGVlcC1ibG9jay10b2tlbnMpKQorICAg ICAgICAoaWYgKHczMi11bmJsb2NrLXN5c3RlbS1zbGVlcCkKKyAgICAgICAgICAgIHQKKyAgICAg ICAgICAod2FybiAiVW5hYmxlIHRvIHVuYmxvY2sgc3lzdGVtIHNsZWVwIikKKyAgICAgICAgICBu aWwpKQorICAgICh3YXJuICJVbmtub3duIGBzeXN0ZW0tc2xlZXAnIHNsZWVwIHRva2VuIikKKyAg ICBuaWwpKQorCisMCis7OyBJbml0aWFsaXplIHN5c3RlbS1zbGVlcC4KKworKGlmIChhbmQgKHN5 c3RlbS1zbGVlcC0tc2V0LWJhY2stZW5kKQorICAgICAgICAgKHN5c3RlbS1zbGVlcC0tZW5hYmxl KSkKKyAgICAoYWRkLWhvb2sgJ3NsZWVwLWV2ZW50LWZ1bmN0aW9ucyAjJ3N5c3RlbS1zbGVlcC0t c2xlZXAtZXZlbnQtZnVuY3Rpb24pCisgICh3YXJuICJgc3lzdGVtLXNsZWVwJyBjb3VsZCBub3Qg YmUgaW5pdGlhbGl6ZWQiKSkKKworKHByb3ZpZGUgJ3N5c3RlbS1zbGVlcCkKKworOzs7IHN5c3Rl bS1zbGVlcC5lbCBlbmRzIGhlcmUKZGlmZiAtLWdpdCBhL3NyYy9uc2Zucy5tIGIvc3JjL25zZm5z Lm0KaW5kZXggY2Y2ODU2MzBhYjcuLjNkM2Q1ZWMxYmRlIDEwMDY0NAotLS0gYS9zcmMvbnNmbnMu bQorKysgYi9zcmMvbnNmbnMubQpAQCAtMzgwNSw2ICszODA1LDg4IEBAIFRoZSBwb3NpdGlvbiBp cyByZXR1cm5lZCBhcyBhIGNvbnMgY2VsbCAoWCAuIFkpIG9mIHRoZQogICByZXR1cm4gUW5pbDsK IH0KIAorLyogQSB1bmlxdWUgaW50ZWdlciBzbGVlcCBibG9jayBpZCBhbmQgYSBoYXNoIG1hcCBv ZiBpdHMgaWQgdG8gb3BhcXVlCisgICBOU09iamVjdCBzbGVlcCBibG9jayBhY3Rpdml0eSB0b2tl bnMuICAqLworc3RhdGljIHVuc2lnbmVkIGludCBzbGVlcF9ibG9ja19pZCA9IDA7CitzdGF0aWMg TlNNdXRhYmxlRGljdGlvbmFyeSAqc2xlZXBfYmxvY2tfbWFwID0gTlVMTDsKKworREVGVU4gKCJu cy1ibG9jay1zeXN0ZW0tc2xlZXAiLAorICAgICAgIEZuc19ibG9ja19zeXN0ZW1fc2xlZXAsCisg ICAgICAgU25zX2Jsb2NrX3N5c3RlbV9zbGVlcCwKKyAgICAgICAyLCAyLCAwLAorICAgICAgIGRv YzogLyogQmxvY2sgc3lzdGVtIGlkbGUgc2xlZXAuCitXSFkgaXMgYSBzdHJpbmcgcmVhc29uIGZv ciB0aGUgYmxvY2suCitJZiBBTExPVy1ESVNQTEFZLVNMRUVQIGlzIG5vbi1uaWwsIGJsb2NrIHRo ZSBzY3JlZW4gZnJvbSBzbGVlcGluZy4KK1JldHVybiBhIHRva2VuIHRvIHVuYmxvY2sgdGhpcyBi bG9jayB1c2luZyBgbnMtdW5ibG9jay1zeXN0ZW0tc2xlZXAnLAorb3IgbmlsIGlmIHRoZSBibG9j ayBmYWlscy4gICovKQorICAoTGlzcF9PYmplY3Qgd2h5LCBMaXNwX09iamVjdCBhbGxvd19kaXNw bGF5X3NsZWVwKQoreworICBibG9ja19pbnB1dCAoKTsKKworICBOU1N0cmluZyAqcmVhc29uID0g QCJFbWFjcyI7CisgIGlmICghTklMUCAod2h5KSkKKyAgICB7CisgICAgICBDSEVDS19TVFJJTkcg KHdoeSk7CisgICAgICByZWFzb24gPSBbTlNTdHJpbmcgc3RyaW5nV2l0aExpc3BTdHJpbmc6IHdo eV07CisgICAgfQorCisgIHVuc2lnbmVkIGxvbmcgYWN0aXZpdHlfb3B0aW9ucyA9CisgICAgTlNB Y3Rpdml0eVVzZXJJbml0aWF0ZWQgfCBOU0FjdGl2aXR5SWRsZVN5c3RlbVNsZWVwRGlzYWJsZWQ7 CisgIGlmIChOSUxQIChhbGxvd19kaXNwbGF5X3NsZWVwKSkKKyAgICBhY3Rpdml0eV9vcHRpb25z IHw9IE5TQWN0aXZpdHlJZGxlRGlzcGxheVNsZWVwRGlzYWJsZWQ7CisKKyAgTlNQcm9jZXNzSW5m byAqcHJvY2Vzc0luZm8gPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb107CisgIE5TT2JqZWN0 ICphY3Rpdml0eV9pZCA9IG5pbDsKKyAgaWYgKFtwcm9jZXNzSW5mbyByZXNwb25kc1RvU2VsZWN0 b3I6QHNlbGVjdG9yKGJlZ2luQWN0aXZpdHlXaXRoT3B0aW9uczpyZWFzb246KV0pCisgICAgYWN0 aXZpdHlfaWQgPSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dCisJCQkgICAgIGJlZ2luQWN0 aXZpdHlXaXRoT3B0aW9uczogYWN0aXZpdHlfb3B0aW9ucworCQkJCQkgICAgICAgcmVhc29uOiBy ZWFzb25dOworICB1bmJsb2NrX2lucHV0ICgpOworCisgIGlmICghc2xlZXBfYmxvY2tfbWFwKQor ICAgIHNsZWVwX2Jsb2NrX21hcCA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdp dGhDYXBhY2l0eTogMjVdOworCisgIGlmIChhY3Rpdml0eV9pZCkKKyAgICB7CisgICAgICBbc2xl ZXBfYmxvY2tfbWFwIHNldE9iamVjdDogYWN0aXZpdHlfaWQKKwkJCSAgZm9yS2V5OiBbTlNOdW1i ZXIgbnVtYmVyV2l0aEludDogKytzbGVlcF9ibG9ja19pZF1dOworICAgICAgcmV0dXJuIG1ha2Vf Zml4bnVtIChzbGVlcF9ibG9ja19pZCk7CisgICAgfQorICBlbHNlCisgICAgcmV0dXJuIFFuaWw7 Cit9CisKK0RFRlVOICgibnMtdW5ibG9jay1zeXN0ZW0tc2xlZXAiLAorICAgICAgIEZuc191bmJs b2NrX3N5c3RlbV9zbGVlcCwKKyAgICAgICBTbnNfdW5ibG9ja19zeXN0ZW1fc2xlZXAsCisgICAg ICAgMSwgMSwgMCwKKyAgICAgICBkb2M6IC8qIFVuYmxvY2sgc3lzdGVtIGlkbGUgc2xlZXAuCitU T0tFTiBpcyBhbiBvYmplY3QgcmV0dXJuZWQgYnkgYG5zLWJsb2NrLXN5c3RlbS1zbGVlcCcuCitS ZXR1cm4gbm9uLW5pbCBpZiB0aGUgVE9LRU4gYmxvY2sgd2FzIHVuYmxvY2tlZC4gICovKQorICAo TGlzcF9PYmplY3QgdG9rZW4pCit7CisgIGJsb2NrX2lucHV0ICgpOworICBMaXNwX09iamVjdCBy ZXMgPSBRbmlsOworICBDSEVDS19GSVhOQVQgKHRva2VuKTsKKyAgaWYgKHNsZWVwX2Jsb2NrX21h cCkKKyAgICB7CisgICAgICBOU051bWJlciAqa2V5ID0gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6 IFhGSVhOQVQgKHRva2VuKV07CisgICAgICBOU09iamVjdCAqYWN0aXZpdHlfaWQgPSBbc2xlZXBf YmxvY2tfbWFwIG9iamVjdEZvcktleToga2V5XTsKKyAgICAgIGlmIChhY3Rpdml0eV9pZCkKKwl7 CisJICBOU1Byb2Nlc3NJbmZvICpwcm9jZXNzSW5mbyA9IFtOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJ bmZvXTsKKwkgIGlmIChbcHJvY2Vzc0luZm8gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihl bmRBY3Rpdml0eTopXSkKKwkgICAgeworCSAgICAgIFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5m b10gZW5kQWN0aXZpdHk6IGFjdGl2aXR5X2lkXTsKKwkgICAgICByZXMgPSBRdDsKKwkgICAgfQor CSAgW3NsZWVwX2Jsb2NrX21hcCByZW1vdmVPYmplY3RGb3JLZXk6IGtleV07CisJfQorICAgIH0K KyAgdW5ibG9ja19pbnB1dCAoKTsKKyAgcmV0dXJuIHJlczsKK30KKwogI2lmZGVmIE5TX0lNUExf Q09DT0EKIAogREVGVU4gKCJucy1zZW5kLWl0ZW1zIiwKQEAgLTQwOTEsNiArNDE3Myw4IEBAIC0g KExpc3BfT2JqZWN0KWxpc3BTdHJpbmcKICAgZGVmc3ViciAoJlNuc19iYWRnZSk7CiAgIGRlZnN1 YnIgKCZTbnNfcmVxdWVzdF91c2VyX2F0dGVudGlvbik7CiAgIGRlZnN1YnIgKCZTbnNfcHJvZ3Jl c3NfaW5kaWNhdG9yKTsKKyAgZGVmc3ViciAoJlNuc19ibG9ja19zeXN0ZW1fc2xlZXApOworICBk ZWZzdWJyICgmU25zX3VuYmxvY2tfc3lzdGVtX3NsZWVwKTsKICNpZmRlZiBOU19JTVBMX0NPQ09B CiAgIGRlZnN1YnIgKCZTbnNfc2VuZF9pdGVtcyk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9u c3Rlcm0ubSBiL3NyYy9uc3Rlcm0ubQppbmRleCBjODUyYjcwYmU3NC4uMTIzNWQ2M2U2MjkgMTAw NjQ0Ci0tLSBhL3NyYy9uc3Rlcm0ubQorKysgYi9zcmMvbnN0ZXJtLm0KQEAgLTU4MzgsMTUgKzU4 MzgsNiBAQCBzdGF0aWMgTGlzcF9PYmplY3QgbnNfbmV3X2ZvbnQgKHN0cnVjdCBmcmFtZSAqZiwg TGlzcF9PYmplY3QgZm9udF9vYmplY3QsCiAgIG5zX3BlbmRpbmdfc2VydmljZV9uYW1lcyA9IFtb TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwogICBuc19wZW5kaW5nX3NlcnZpY2VfYXJncyA9 IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOwogCi0jaWYgZGVmaW5lZCAoTlNfSU1QTF9D T0NPQSkgJiYgTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAyNjAwMDAKLSAgLyogRGlz YWJsZSBwcm9ibGVtYXRpYyBldmVudCBwcm9jZXNzaW5nIG9uIG1hY09TIDI2IChUYWhvZSkgdG8g YXZvaWQKLSAgICAgc2Nyb2xsaW5nIGxhZyBhbmQgaW5wdXQgaGFuZGxpbmcgaXNzdWVzLiAgVGhl c2UgYXJlIHVuZG9jdW1lbnRlZAotICAgICBvcHRpb25zIGFzIG9mIG1hY09TIDI2LjAuICAqLwot ICBbTlNVc2VyRGVmYXVsdHMuc3RhbmRhcmRVc2VyRGVmYXVsdHMKLSAgICAgIHJlZ2lzdGVyRGVm YXVsdHM6QHtAIk5TRXZlbnRDb25jdXJyZW50UHJvY2Vzc2luZ0VuYWJsZWQiIDogQCJOTyIsCi0g ICAgICAgIEAiTlNBcHBsaWNhdGlvblVwZGF0ZUN5Y2xlRW5hYmxlZCIgOiBAIk5PIn1dOwotI2Vu ZGlmCi0KICAgLyogU3RhcnQgYXBwIGFuZCBjcmVhdGUgdGhlIG1haW4gbWVudSwgd2luZG93LCB2 aWV3LgogICAgICBOZWVkcyB0byBiZSBoZXJlIGJlY2F1c2UgbnNfaW5pdGlhbGl6ZV9kaXNwbGF5 X2luZm8gKCkgdXNlcyBBcHBLaXQgY2xhc3Nlcy4KICAgICAgVGhlIHZpZXcgd2lsbCB0aGVuIGFz ayB0aGUgTlNBcHAgdG8gc3RvcCBhbmQgcmV0dXJuIHRvIEVtYWNzLiAgKi8KQEAgLTYzODMsNiAr NjM3NCwyMCBAQCAtICh2b2lkKWFwcGxpY2F0aW9uRGlkRmluaXNoTGF1bmNoaW5nOiAoTlNOb3Rp ZmljYXRpb24gKilub3RpZmljYXRpb24KIAkgb2JqZWN0Om5pbF07CiAjZW5kaWYKIAorI2lmZGVm IE5TX0lNUExfQ09DT0EKKyAgLyogU2xlZXAgZXZlbnQgbm90aWZpY2F0aW9uLiAgKi8KKyAgW1tb TlNXb3Jrc3BhY2Ugc2hhcmVkV29ya3NwYWNlXSBub3RpZmljYXRpb25DZW50ZXJdCisgICAgYWRk T2JzZXJ2ZXI6IHNlbGYKKyAgICAgICBzZWxlY3RvcjpAc2VsZWN0b3Ioc3lzdGVtV2lsbFNsZWVw OikKKwkgICBuYW1lOiBOU1dvcmtzcGFjZVdpbGxTbGVlcE5vdGlmaWNhdGlvbgorCSBvYmplY3Q6 IG5pbF07CisgIFtbW05TV29ya3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gbm90aWZpY2F0aW9uQ2Vu dGVyXQorICAgIGFkZE9ic2VydmVyOiBzZWxmCisgICAgICAgc2VsZWN0b3I6IEBzZWxlY3Rvcihz eXN0ZW1EaWRXYWtlOikKKwkgICBuYW1lOiBOU1dvcmtzcGFjZURpZFdha2VOb3RpZmljYXRpb24K Kwkgb2JqZWN0OiBuaWxdOworI2VuZGlmCisKICNpZmRlZiBOU19JTVBMX0NPQ09BCiAgIC8qIFNv bWUgZnVuY3Rpb25zL21ldGhvZHMgaW4gQ29yZUZvdW5kYXRpb24vRm91bmRhdGlvbiBpbmNyZWFz ZSB0aGUKICAgICAgbWF4aW11bSBudW1iZXIgb2Ygb3BlbiBmaWxlcyBmb3IgdGhlIHByb2Nlc3Mg aW4gdGhlaXIgZmlyc3QgY2FsbC4KQEAgLTY0MjEsNiArNjQyNiwzMSBAQCAtICh2b2lkKWFudGlh bGlhc1RocmVzaG9sZERpZENoYW5nZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KICNl bmRpZgogfQogCisvKiBTbGVlcCBldmVudCBub3RpZmljYXRpb24uICAqLworCistICh2b2lkKSBz eXN0ZW1XaWxsU2xlZXA6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCit7CisjaWZkZWYg TlNfSU1QTF9DT0NPQQorICBOU1RSQUNFICgiW0VtYWNzQXBwIHN5c3RlbVdpbGxTbGVlcDpdIik7 CisgIHN0cnVjdCBpbnB1dF9ldmVudCBpZTsKKyAgRVZFTlRfSU5JVCAoaWUpOworICBpZS5raW5k ID0gU0xFRVBfRVZFTlQ7CisgIGllLmFyZyA9IFFwcmVfc2xlZXA7CisgIGtiZF9idWZmZXJfc3Rv cmVfZXZlbnQgKCZpZSk7CisjZW5kaWYKK30KKworLSAodm9pZCkgc3lzdGVtRGlkV2FrZTooTlNO b3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3sKKyNpZmRlZiBOU19JTVBMX0NPQ09BCisgIE5T VFJBQ0UgKCJbRW1hY3NBcHAgc3lzdGVtRGlkV2FrZTpdIik7CisgIHN0cnVjdCBpbnB1dF9ldmVu dCBpZTsKKyAgRVZFTlRfSU5JVCAoaWUpOworICBpZS5raW5kID0gU0xFRVBfRVZFTlQ7CisgIGll LmFyZyA9IFFwb3N0X3dha2U7CisgIGtiZF9idWZmZXJfc3RvcmVfZXZlbnQgKCZpZSk7CisjZW5k aWYKK30KIAogLyogVGVybWluYXRpb24gc2VxdWVuY2VzOgogICAgIEMteCBDLWM6CkBAIC0xMTU0 OCw2ICsxMTU3OCwxMCBAQCBOaWwgbWVhbnMgdXNlIGZ1bGxzY3JlZW4gdGhlIG9sZCAoPCAxMC43 KSB3YXkuICBUaGUgb2xkIHdheSB3b3JrcyBiZXR0ZXIgd2l0aAogICBERUZTWU0gKFFleHBhbmRl ZCwgImV4cGFuZGVkIik7CiAgIERFRlNZTSAoUW5zX2luX2VjaG9fYXJlYSwgIm5zLWluLWVjaG8t YXJlYSIpOwogCisgIC8qIFNsZWVwIGV2ZW50cy4gICovCisgIERFRlNZTSAoUXByZV9zbGVlcCwg InByZS1zbGVlcCIpOworICBERUZTWU0gKFFwb3N0X3dha2UsICJwb3N0LXdha2UiKTsKKwogI2lm ZGVmIE5TX0lNUExfQ09DT0EKICAgRnByb3ZpZGUgKFFjb2NvYSwgUW5pbCk7CiAgIHN5bXNfb2Zf bWFjZm9udCAoKTsKZGlmZiAtLWdpdCBhL3NyYy93MzJmbnMuYyBiL3NyYy93MzJmbnMuYwppbmRl eCBiNzViY2U4ZDFhMi4uNzZjNzBmMGU0MWUgMTAwNjQ0Ci0tLSBhL3NyYy93MzJmbnMuYworKysg Yi9zcmMvdzMyZm5zLmMKQEAgLTQ0LDYgKzQ0LDcgQEAgI2RlZmluZSBDT0JKTUFDUk9TIC8qIEFz ayBmb3IgQyBkZWZpbml0aW9ucyBmb3IgQ09NLiAgKi8KICNpbmNsdWRlIDxvbGVpZGwuaD4KICNp bmNsdWRlIDxvYmppZGwuaD4KICNpbmNsdWRlIDxvbGUyLmg+CisjaW5jbHVkZSA8cG93cnByb2Yu aD4gLyogRm9yIHN5c3RlbSBzbGVlcCBzdXBwb3J0LiAgKi8KIAogI2luY2x1ZGUgImxpc3AuaCIK ICNpbmNsdWRlICJ3MzJ0ZXJtLmgiCkBAIC0xMTMyNSw2ICsxMTMyNiwxMjggQEAgREVGVU4gKCJ3 MzItcHJvZ3Jlc3MtaW5kaWNhdG9yIiwKIAogI2VuZGlmIC8qIFdJTkRPV1NOVCAqLwogCisvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKKwkJICAgICBTeXN0ZW0gU2xlZXAgU3VwcG9ydAorICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LworCisvKiBXZSBhc3N1bWUgU2V0VGhyZWFkRXhlY3V0aW9uU3RhdGUgaXMgYWx3YXlzIGF2YWls YWJsZSwgYmVpbmcgV2luZG93cworICAgWFArLiAgUmVnaXN0ZXJTdXNwZW5kUmVzdW1lTm90aWZp Y2F0aW9uIGlzIFdpbmRvd3MgOCsgc28gd2UgbG9vayB0aGlzCisgICB1cC4gICovCisKK3N0YXRp YyB1bnNpZ25lZCBpbnQgc2xlZXBfYmxvY2tfaWQgPSAwOworc3RhdGljIHVuc2lnbmVkIGludCBz bGVlcF9ibG9ja19jb3VudCA9IDA7CitzdGF0aWMgRVhFQ1VUSU9OX1NUQVRFIHNsZWVwX2Jsb2Nr X2V4ZWN1dGlvbl9zdGF0ZSA9IDA7CisKK0RFRlVOICgidzMyLWJsb2NrLXN5c3RlbS1zbGVlcCIs CisgICAgICAgRnczMl9ibG9ja19zeXN0ZW1fc2xlZXAsCisgICAgICAgU3czMl9ibG9ja19zeXN0 ZW1fc2xlZXAsCisgICAgICAgMSwgMSwgMCwKKyAgICAgICBkb2M6IC8qIEJsb2NrIHN5c3RlbSBp ZGxlIHNsZWVwLgorSWYgQUxMT1ctRElTUExBWS1TTEVFUCBpcyBub24tbmlsLCBibG9jayB0aGUg c2NyZWVuIGZyb20gc2xlZXBpbmcuCitSZXR1cm4gYSB0b2tlbiB0byB1bmJsb2NrIHRoaXMgYmxv Y2sgdXNpbmcgYHczMi11bmJsb2NrLXN5c3RlbS1zbGVlcCcsCitvciBuaWwgaWYgdGhlIGJsb2Nr IGZhaWxzLiAgKi8pCisgIChMaXNwX09iamVjdCBhbGxvd19kaXNwbGF5X3NsZWVwKQoreworICAv KiBFU19DT05USU5VT1VTIGtlZXBzIHRoZSBzdGF0ZSB1bnRpbCBjbGVhcmVkLiAgKi8KKyAgRVhF Q1VUSU9OX1NUQVRFIG5ld19zdGF0ZSA9IEVTX1NZU1RFTV9SRVFVSVJFRCB8IEVTX0NPTlRJTlVP VVM7CisgIGlmIChOSUxQIChhbGxvd19kaXNwbGF5X3NsZWVwKSkKKyAgICBuZXdfc3RhdGUgfD0g RVNfRElTUExBWV9SRVFVSVJFRDsKKworICBzbGVlcF9ibG9ja19leGVjdXRpb25fc3RhdGUgPSBT ZXRUaHJlYWRFeGVjdXRpb25TdGF0ZSAobmV3X3N0YXRlKTsKKworICAvKiBPbmUgbW9yZSBibG9j ay4gICovCisgICsrc2xlZXBfYmxvY2tfY291bnQ7CisKKyAgLyogU3ludGhlc2l6ZSBhIHRva2Vu LiAgKi8KKyAgcmV0dXJuIG1ha2VfZml4bnVtIChzbGVlcF9ibG9ja19pZCk7Cit9CisKK0RFRlVO ICgidzMyLXVuYmxvY2stc3lzdGVtLXNsZWVwIiwKKyAgICAgICBGdzMyX3VuYmxvY2tfc3lzdGVt X3NsZWVwLAorICAgICAgIFN3MzJfdW5ibG9ja19zeXN0ZW1fc2xlZXAsCisgICAgICAgMCwgMCwg MCwKKyAgICAgICBkb2M6IC8qIFVuYmxvY2sgc3lzdGVtIGlkbGUgc2xlZXAuCitSZXR1cm4gbm9u LW5pbCBpZiB0aGUgVE9LRU4gYmxvY2sgd2FzIHVuYmxvY2tlZC4gICovKQorICAodm9pZCkKK3sK KyAgLyogTm8gYmxvY2tzIHRvIHVuYmxvY2suICAqLworICBpZiAoc2xlZXBfYmxvY2tfY291bnQg PT0gMCkKKyAgICByZXR1cm4gUW5pbDsKKworICAvKiBPbmUgZmV3ZXIgYmxvY2suICAqLworICBp ZiAoLS1zbGVlcF9ibG9ja19jb3VudCA9PSAwCisgICAgICAmJiBzbGVlcF9ibG9ja19leGVjdXRp b25fc3RhdGUpCisgICAgc2xlZXBfYmxvY2tfZXhlY3V0aW9uX3N0YXRlID0KKyAgICAgIFNldFRo cmVhZEV4ZWN1dGlvblN0YXRlIChzbGVlcF9ibG9ja19leGVjdXRpb25fc3RhdGUKKwkJCSAgICAg ICAmIH4oRVNfRElTUExBWV9SRVFVSVJFRCB8IEVTX1NZU1RFTV9SRVFVSVJFRCkpOworICByZXR1 cm4gUXQ7Cit9CisKK0RFRlVOICgidzMyLXN5c3RlbS1zbGVlcC1ibG9jay1jb3VudCIsCisgICAg ICAgRnczMl9zeXN0ZW1fc2xlZXBfYmxvY2tfY291bnQsCisgICAgICAgU3czMl9zeXN0ZW1fc2xl ZXBfYmxvY2tfY291bnQsCisgICAgICAgMCwgMCwgMCwKKyAgICAgICBkb2M6IC8qIFJldHVybiB0 aGUgdzMyIHNsZWVwIGJsb2NrIGNvdW50LiAgKi8pCisgICh2b2lkKQoreworICByZXR1cm4gbWFr ZV9maXhudW0gKHNsZWVwX2Jsb2NrX2NvdW50KTsKK30KKwordHlwZWRlZiBVTE9ORyAoQ0FMTEJB Q0sgKlBNWV9ERVZJQ0VfTk9USUZZX0NBTExCQUNLX1JPVVRJTkUpCisgIChQVk9JRCBDb250ZXh0 LCAgVUxPTkcgVHlwZSwgIFBWT0lEIFNldHRpbmcpOworCitzdGF0aWMgVUxPTkcKK3NsZWVwX25v dGlmaWNhdGlvbl9jYWxsYmFjayhQVk9JRCBfQ29udGV4dCwgVUxPTkcgVHlwZSwgUFZPSUQgX1Nl dHRpbmcpCit7CisgIHN0cnVjdCBpbnB1dF9ldmVudCBpZTsKKyAgRVZFTlRfSU5JVCAoaWUpOwor ICBpZS5raW5kID0gU0xFRVBfRVZFTlQ7CisKKyAgc3dpdGNoIChUeXBlKQorICAgIHsKKyAgICBj YXNlIFBCVF9BUE1SRVNVTUVBVVRPTUFUSUM6CisgICAgICAvKiBJZ25vcmUgdGhpcyBldmVudC4g IE5vIHVzZXIgaXMgcHJlc2VudC4gICovCisgICAgICBicmVhazsKKyAgICBjYXNlIFBCVF9BUE1T VVNQRU5EOgorICAgICAgaWUuYXJnID0gUXByZV9zbGVlcDsKKyAgICAgIGtiZF9idWZmZXJfc3Rv cmVfZXZlbnQgKCZpZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBCVF9BUE1SRVNVTUVTVVNQ RU5EOgorICAgICAgaWUuYXJnID0gUXBvc3Rfd2FrZTsKKyAgICAgIGtiZF9idWZmZXJfc3RvcmVf ZXZlbnQgKCZpZSk7CisgICAgICBicmVhazsKKyAgICB9CisgIHJldHVybiAwOworfQorCit0eXBl ZGVmIEhQT1dFUk5PVElGWSAoV0lOQVBJICogUmVnaXN0ZXJTdXNwZW5kUmVzdW1lTm90aWZpY2F0 aW9uX1Byb2MpCisgIChJTiBIQU5ETEUsIElOIERXT1JEKTsKK3N0YXRpYyBSZWdpc3RlclN1c3Bl bmRSZXN1bWVOb3RpZmljYXRpb25fUHJvYyBSZWdpc3RlclN1c3BlbmRSZXN1bWVOb3RpZmljYXRp b25fZm4gPSBOVUxMOworCitzdGF0aWMgSFBPV0VSTk9USUZZIHNsZWVwX25vdGlmaWNhdGlvbl9o YW5kbGUgPSAwOworCit0eXBlZGVmIHN0cnVjdCBfTVlfREVWSUNFX05PVElGWV9TVUJTQ1JJQkVf UEFSQU1FVEVSUyB7CisgIFBNWV9ERVZJQ0VfTk9USUZZX0NBTExCQUNLX1JPVVRJTkUgQ2FsbGJh Y2s7CisgIFBWT0lEIENvbnRleHQ7Cit9IE1ZX0RFVklDRV9OT1RJRllfU1VCU0NSSUJFX1BBUkFN RVRFUlMsICpQTVlfREVWSUNFX05PVElGWV9TVUJTQ1JJQkVfUEFSQU1FVEVSUzsKKwordm9pZAor dzMyX3JlZ2lzdGVyX2Zvcl9zbGVlcF9ub3RpZmljYXRpb25zKCkKK3sKKyAgLyogUG93ZXJSZWdp c3RlclN1c3BlbmRSZXN1bWVOb3RpZmljYXRpb24gaXMgbm90IGEgdXNlci1zcGFjZSBjYWxsIHNv CisgICAgIHdlIHVzZSBSZWdpc3RlclN1c3BlbmRSZXN1bWVOb3RpZmljYXRpb24uICAqLworICBp ZiAoUmVnaXN0ZXJTdXNwZW5kUmVzdW1lTm90aWZpY2F0aW9uX2ZuKQorICAgIHsKKyAgICAgIE1Z X0RFVklDRV9OT1RJRllfU1VCU0NSSUJFX1BBUkFNRVRFUlMgcGFyYW1zOworICAgICAgcGFyYW1z LkNhbGxiYWNrID0gc2xlZXBfbm90aWZpY2F0aW9uX2NhbGxiYWNrOworICAgICAgcGFyYW1zLkNv bnRleHQgPSBOVUxMOworCisgICAgICAvKiBERVZJQ0VfTk9USUZZX0NBTExCQUNLID0gMiAgKi8K KyAgICAgIHNsZWVwX25vdGlmaWNhdGlvbl9oYW5kbGUgPQorCVJlZ2lzdGVyU3VzcGVuZFJlc3Vt ZU5vdGlmaWNhdGlvbl9mbiAoJnBhcmFtcywgMik7CisgICAgfQorfQorCiAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKIAkJCSAgICBJbml0aWFsaXphdGlvbgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtMTE4MzQsNiAr MTE5NTcsMTIgQEAgc3ltc19vZl93MzJmbnMgKHZvaWQpCiAgIGRlZnN1YnIgKCZTdzMyX3JlcXVl c3RfdXNlcl9hdHRlbnRpb24pOwogICBERUZTWU0gKFFpbmZvcm1hdGlvbmFsLCAiaW5mb3JtYXRp b25hbCIpOwogICBERUZTWU0gKFFjcml0aWNhbCwgImNyaXRpY2FsIik7CisgIC8qIFN5c3RlbSBz bGVlcCBzdXBwb3J0LiAgKi8KKyAgREVGU1lNIChRcHJlX3NsZWVwLCAicHJlLXNsZWVwIik7Cisg IERFRlNZTSAoUXBvc3Rfd2FrZSwgInBvc3Qtd2FrZSIpOworICBkZWZzdWJyICgmU3czMl91bmJs b2NrX3N5c3RlbV9zbGVlcCk7CisgIGRlZnN1YnIgKCZTdzMyX2Jsb2NrX3N5c3RlbV9zbGVlcCk7 CisgIGRlZnN1YnIgKCZTdzMyX3N5c3RlbV9zbGVlcF9ibG9ja19jb3VudCk7CiAjZW5kaWYKIH0K IApAQCAtMTIxMjAsNiArMTIyNDksMTIgQEAgZ2xvYmFsc19vZl93MzJmbnMgKHZvaWQpCiAgIFJl Z2lzdGVyVG91Y2hXaW5kb3dfZm4KICAgICA9IChSZWdpc3RlclRvdWNoV2luZG93X3Byb2MpIGdl dF9wcm9jX2FkZHIgKHVzZXIzMl9saWIsCiAJCQkJCQkiUmVnaXN0ZXJUb3VjaFdpbmRvdyIpOwor ICAvKiBGb3Igc3lzdGVtIHNsZWVwIHN1cHBvcnQuICAqLworICBSZWdpc3RlclN1c3BlbmRSZXN1 bWVOb3RpZmljYXRpb25fZm4KKyAgICA9IChSZWdpc3RlclN1c3BlbmRSZXN1bWVOb3RpZmljYXRp b25fUHJvYykKKyAgICBnZXRfcHJvY19hZGRyICh1c2VyMzJfbGliLAorCQkgICAiUmVnaXN0ZXJT dXNwZW5kUmVzdW1lTm90aWZpY2F0aW9uIik7CisKICAgU2V0R2VzdHVyZUNvbmZpZ19mbgogICAg ID0gKFNldEdlc3R1cmVDb25maWdfcHJvYykgZ2V0X3Byb2NfYWRkciAodXNlcjMyX2xpYiwKIAkJ CQkJICAgICAiU2V0R2VzdHVyZUNvbmZpZyIpOwpkaWZmIC0tZ2l0IGEvc3JjL3czMnRlcm0uYyBi L3NyYy93MzJ0ZXJtLmMKaW5kZXggMDkxYTFmYmQ1ZjEuLjViN2Q5YzVmMTdkIDEwMDY0NAotLS0g YS9zcmMvdzMydGVybS5jCisrKyBiL3NyYy93MzJ0ZXJtLmMKQEAgLTgyNDksNiArODI0OSw3IEBA ICNkZWZpbmUgTE9BRF9QUk9DKGxpYiwgZm4pIHBmbiMjZm4gPSAodm9pZCAqKSBHZXRQcm9jQWRk cmVzcyAobGliLCAjZm4pCiAgIH0KIAogICB3MzJfZ2V0X21vdXNlX3doZWVsX3ZlcnRpY2FsX2Rl bHRhICgpOworICB3MzJfcmVnaXN0ZXJfZm9yX3NsZWVwX25vdGlmaWNhdGlvbnMgKCk7CiB9CiAK IHZvaWQKZGlmZiAtLWdpdCBhL3NyYy93MzJ0ZXJtLmggYi9zcmMvdzMydGVybS5oCmluZGV4IDkx ZGIwYjZlMjQ5Li5jYjlkNTkzNzFhNCAxMDA2NDQKLS0tIGEvc3JjL3czMnRlcm0uaAorKysgYi9z cmMvdzMydGVybS5oCkBAIC0yNzQsNiArMjc0LDcgQEAgI2RlZmluZSBDUF9ERUZBVUxUIDEwMDQK IGV4dGVybiBmcmFtZV9wYXJtX2hhbmRsZXIgdzMyX2ZyYW1lX3Bhcm1faGFuZGxlcnNbXTsKIGV4 dGVybiB2b2lkIHczMl9kZWZhdWx0X2ZvbnRfcGFyYW1ldGVyIChzdHJ1Y3QgZnJhbWUqIGYsIExp c3BfT2JqZWN0IHBhcm1zKTsKIGV4dGVybiBMaXNwX09iamVjdCB3MzJfcHJvY2Vzc19kbmRfZGF0 YSAoaW50IGZvcm1hdCwgdm9pZCAqcERhdGFPYmopOworZXh0ZXJuIHZvaWQgdzMyX3JlZ2lzdGVy X2Zvcl9zbGVlcF9ub3RpZmljYXRpb25zKCk7CiAKIAwKICNkZWZpbmUgUElYX1RZUEUgQ09MT1JS RUYKLS0gCjIuNTIuMAoK --0000000000009f73b8064a3da601--
bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.Received: (at submit) by debbugs.gnu.org; 7 Feb 2026 15:31:22 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 07 10:31:22 2026 Received: from localhost ([127.0.0.1]:36965 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vokHJ-0004sn-Lt for submit <at> debbugs.gnu.org; Sat, 07 Feb 2026 10:31:22 -0500 Received: from lists.gnu.org ([2001:470:142::17]:49540) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vokHG-0004sM-BD for submit <at> debbugs.gnu.org; Sat, 07 Feb 2026 10:31:19 -0500 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 <shipmints@HIDDEN>) id 1vokHA-0003s7-QJ for bug-gnu-emacs@HIDDEN; Sat, 07 Feb 2026 10:31:12 -0500 Received: from mail-vk1-xa2e.google.com ([2607:f8b0:4864:20::a2e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <shipmints@HIDDEN>) id 1vokH9-0003XE-5W for bug-gnu-emacs@HIDDEN; Sat, 07 Feb 2026 10:31:12 -0500 Received: by mail-vk1-xa2e.google.com with SMTP id 71dfb90a1353d-56624fea96fso2780472e0c.0 for <bug-gnu-emacs@HIDDEN>; Sat, 07 Feb 2026 07:31:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770478270; cv=none; d=google.com; s=arc-20240605; b=Ei4tb2Y6xWFWcmHHKasE0Dz82LiisnPPE/vabN/xUl1+n/dk40PiGSfKvbs/TU9RoY d+UE3DWaNUUd6uLXwrE2Y3IIQUvSHJNr4arJiNkzY+2OADhPPU5rBXeeSWVn/FaVwvyt /dUjZv0+jV9h9Qdwuds30yJW0YCSSBTvpsm5XaRQKAnmuUAUil2gO7JK7RNppdClMt7e 0UGm7sHUsJHvc/UmttsnHAMbtyvLZfVTs0/oSE2s4+Yx2GcXDhJ5qnhx/7nEFZ+BHdwh xXxF2MpaR1PGHvvK8AdyjsIAPjTaO2NM1Gin7APsDZtMutsGbIfgxaF2g2P2lIIpVO9x qQtw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:mime-version:dkim-signature; bh=XUcV4whhtUr88Icnmbr8IVATT00u+k17FyLWHPw6i9k=; fh=N0QNW6p6iGdbQ21kyDR+0AAKkd2qN4/vvVNZAuuGLOY=; b=D9z6toPQBYjAVU+NI2821SfQmeatrI9L0KYvi+fjyWm+eMi1F6VjuFdeLVjVl+p09V km03ng9N7jL1YO5+7kOrKwjNAITQzWOB52gD8bzyYh1otiAZV9FBb6a/K3QloykL3tZ3 nez6Qg/RAllqOQ4kVlXD2PqPceEHX6XQNv1YAdxUI5uiKuCHs4lhdStUtgyk8XO1QtLV INiKSCmQ0Wba+m4fUUDmd7GlkCtug8+pmdyHNRysARJOxKeJsVmxHYvTdb3eSkL+pnKA RkBG5Gv+JerrOBUP9TQxJrcq9fY08Dbyb9J58Rmc/3WpeFh4mhZaMMpb6mJB43QBf/vL McQA==; darn=gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770478269; x=1771083069; darn=gnu.org; h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=XUcV4whhtUr88Icnmbr8IVATT00u+k17FyLWHPw6i9k=; b=RIjLHCe5D7KjH6y/8EYUwzSqjNfYTEVit/v2YGqUt3ZN7g/oYvck6zozgUUT28CPWB zIgsE8dP1JereoQw6niAasvLBamTiepieN0zMNYQ3ClECX1zwVCX5Ljaq2+3w6xnvzMO CBUtjeITslvvYbVyAaed1PHkYSdasJi/fVH8imFPOdQbJAeYaSgKD95tvyxW9hX4QyPI P4yJXeG5GpF2EyN/+KAZvkgea495chdXlgP2zkERE19zlDToftvF71s1WaH0XDZL4KHc x3Dy3DdtfMdEUTWqC9B2AZZw5CeDSaCsFZEJcFI+xA3rHMTItohnIMsJbzhnS0G0Qqpd Db1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770478269; x=1771083069; h=cc:to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=XUcV4whhtUr88Icnmbr8IVATT00u+k17FyLWHPw6i9k=; b=BX3OJqocI3JM1lyqukATPS9e7oEfwf6lUZMEMP6B8LVLkCMrltKFLmp/GOgFMOs5qI 92dKi8eZY3ihaS4cD1eGGquPBGT7Way219Qdz795p1Xk6ebaLRuEoKgGv+MyN9pVeHdk hWVf1PhfIzcXqY1KO9Z8EWuV9QiaoFP0u7/WlKKxhZqpYN04lQbZkeMuBYXiKD0mxp6V 1xiQh5peEQC89de9PT/+iGnsW3UPt7BEhdvQr37rW8nKnnkZph/4/apSE+tSEUB15tD4 Pt7Yc4spOo2gbKgWFdQ1yWruGDsSpdhZw1UqTEHxzWX2pUqbUPhwB61WuNWTm2S1mzSu lGMQ== X-Gm-Message-State: AOJu0YxmEO4V94xYG70wHxTuuoJxu4G7MBU8BE42DZYcvo7x2ThJEKwg nG/o5OUoLqg0QNiQdr+69IMVIbYjTzoIchbMP6N5JWrTThBMzDLavAStXFy07Z4bv9lPyFnb37M 8SBqeGLEfpxzsgYgBlKF6RUNLznY7ewPFKBaR X-Gm-Gg: AZuq6aIkauJ7OhSlCI4Uu0m6gTeJWvYOPY3dJZzZnMU6Ob5ID/ksRNDGHrm7KZX9QmT HDOUGah0IB8C53nJ2Ak0g8EHAS3GIHNtwK/+ZnmJOhKTJWngg00ZRV4SiNWZc6mF9z3lhVvI8ik BgmsCVJSiB6XztoGG0UlYm6rSt2Z5u13eNbLUHhavn9dcudgByfpXKRIIfDb0JSyr7HDI69Jt7g vO12KmDM+XA5tzR+ib13lQo9qh4Vxy71pXzYtLlyuwDJ4GBCwijQa69PbOvE4Ee9FcJoWM10n4i Jl5sN0mF+kRvPR+0No8c8YaISdGS5C2t+pAS5SIZ/wMY7PcJ1Og= X-Received: by 2002:a05:6122:2c2e:b0:566:eb71:73c9 with SMTP id 71dfb90a1353d-566f5e88dbcmr2111728e0c.5.1770478269655; Sat, 07 Feb 2026 07:31:09 -0800 (PST) MIME-Version: 1.0 From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sat, 7 Feb 2026 10:30:58 -0500 X-Gm-Features: AZwV_QjxoH_kWOLZ3xqhZEHpCGKcyom002mHSejr9g2vqBP9XhsM3KQOlKrtg4Q Message-ID: <CAN+1HbpO7K-H0UKpvUmQ+AfZAeq4v7j6vJ--MzREfDFLBBgR5Q@HIDDEN> Subject: [PATCH] system-sleep sleep blocker and sleep/wake event package To: bug-gnu-emacs@HIDDEN Content-Type: multipart/alternative; boundary="000000000000586d00064a3d9873" Received-SPF: pass client-ip=2607:f8b0:4864:20::a2e; envelope-from=shipmints@HIDDEN; helo=mail-vk1-xa2e.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-Spam-Score: 2.0 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: After some delay this year, I finally worked on this package inspired by recent improvements Michael made to dbus. This package provides platform-neutral interfaces to block your system from entering idle sleep with control over whether the display remains active, and a hook to process pre-sleep and post-wake even [...] Content analysis details: (2.0 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (shipmints[at]gmail.com) 1.0 FORGED_GMAIL_RCVD 'From' gmail.com does not match 'Received' headers 0.0 HTML_MESSAGE BODY: HTML included in message -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2001:470:142:0:0:0:0:17 listed in] [list.dnswl.org] X-Debbugs-Envelope-To: submit Cc: Andrew Cohen <acohen@HIDDEN>, Daniel Mendler <mail@HIDDEN>, eric@HIDDEN, Michael Albinus <michael.albinus@HIDDEN>, Morgan Smith <Morgan.J.Smith@HIDDEN> X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: 1.0 (+) --000000000000586d00064a3d9873 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable After some delay this year, I finally worked on this package inspired by recent improvements Michael made to dbus. This package provides platform-neutral interfaces to block your system from entering idle sleep with control over whether the display remains active, and a hook to process pre-sleep and post-wake events. Implementations are for D-Bus on GNU/Linux, and for macOS/GNUstep and MS-Windows using native APIs. Michael suggests that the gnus sleep API be based on `system-sleep` so that it works across other platforms and also consolidates system sleep logic in one place. And just as we introduced an optional `progress-report` to compile.el, we can now introduce an optional platform-neutral idle sleep block. Patch incoming when the bug number is assigned. -St=C3=A9phane --000000000000586d00064a3d9873 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div class=3D"gmail_default" style=3D"font-family:monospac= e">After some delay this year, I finally worked on this package inspired by= recent improvements Michael made to dbus.<br><br>This package provides pla= tform-neutral interfaces to block your system from entering idle sleep with= control over whether the display remains active, and a hook to process pre= -sleep and post-wake events.<br><br>Implementations are for D-Bus on GNU/Li= nux, and for macOS/GNUstep and MS-Windows using native APIs.<br><br>Michael= suggests that the gnus sleep API be based on `system-sleep` so that it wor= ks across other platforms and also consolidates system sleep logic in one p= lace.<br><br>And just as we introduced an optional `progress-report` to com= pile.el, we can now introduce an optional platform-neutral idle sleep block= .<br><br>Patch incoming when the bug number is assigned.<br><br>-St=C3=A9ph= ane</div></div> --000000000000586d00064a3d9873--
Stéphane Marks <shipmints@HIDDEN>:bug-gnu-emacs@HIDDEN.
Full text available.bug-gnu-emacs@HIDDEN:bug#80348; Package emacs.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.