From mboxrd@z Thu Jan 1 00:00:00 1970
Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail
From: Philipp Stephani
Newsgroups: gmane.emacs.bugs
Subject: bug#45198: 28.0.50; Sandbox mode
Date: Sat, 19 Dec 2020 19:18:48 +0100
Message-ID:
References:
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="0000000000004c40a805b6d54284"
Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214";
logging-data="2318"; mail-complaints-to="usenet@ciao.gmane.io"
Cc: Bastien , 45198@debbugs.gnu.org,
=?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?=
To: Stefan Monnier
Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat Dec 19 19:20:21 2020
Return-path:
Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org
Original-Received: from lists.gnu.org ([209.51.188.17])
by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.92)
(envelope-from )
id 1kqgq4-0000Qz-IH
for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 19 Dec 2020 19:20:20 +0100
Original-Received: from localhost ([::1]:33030 helo=lists1p.gnu.org)
by lists.gnu.org with esmtp (Exim 4.90_1)
(envelope-from )
id 1kqgq3-00026y-LC
for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 19 Dec 2020 13:20:19 -0500
Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:58118)
by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from )
id 1kqgpm-00026o-Hl
for bug-gnu-emacs@gnu.org; Sat, 19 Dec 2020 13:20:02 -0500
Original-Received: from debbugs.gnu.org ([209.51.188.43]:59816)
by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.90_1) (envelope-from )
id 1kqgpm-0000Qf-9t
for bug-gnu-emacs@gnu.org; Sat, 19 Dec 2020 13:20:02 -0500
Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2)
(envelope-from ) id 1kqgpm-0001A3-4N
for bug-gnu-emacs@gnu.org; Sat, 19 Dec 2020 13:20:02 -0500
X-Loop: help-debbugs@gnu.org
Resent-From: Philipp Stephani
Original-Sender: "Debbugs-submit"
Resent-CC: bug-gnu-emacs@gnu.org
Resent-Date: Sat, 19 Dec 2020 18:20:02 +0000
Resent-Message-ID:
Resent-Sender: help-debbugs@gnu.org
X-GNU-PR-Message: followup 45198
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
Original-Received: via spool by 45198-submit@debbugs.gnu.org id=B45198.16084019504394
(code B ref 45198); Sat, 19 Dec 2020 18:20:02 +0000
Original-Received: (at 45198) by debbugs.gnu.org; 19 Dec 2020 18:19:10 +0000
Original-Received: from localhost ([127.0.0.1]:43129 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from )
id 1kqgov-00018n-Ed
for submit@debbugs.gnu.org; Sat, 19 Dec 2020 13:19:10 -0500
Original-Received: from mail-ot1-f53.google.com ([209.85.210.53]:43260)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from ) id 1kqgos-00018F-39
for 45198@debbugs.gnu.org; Sat, 19 Dec 2020 13:19:08 -0500
Original-Received: by mail-ot1-f53.google.com with SMTP id q25so5144883otn.10
for <45198@debbugs.gnu.org>; Sat, 19 Dec 2020 10:19:06 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
h=mime-version:references:in-reply-to:from:date:message-id:subject:to
:cc; bh=UO+uHMzdtVCuhaWgbdTCxeeCbKdJ5CVPUAN0TpANr3s=;
b=M1MAyUrmQbiN8cXCw49fsR9sb3st7nRvSQUNDkELVt5a9d+umt9LrJxwmXU+qWZl+Z
iJONl/EUE35P64Cj5kfAH25VRKQILSG8DfF5w+3M8ANS7QFXElzLIy0LGlNViUk8xIei
zPqHGCPSMjM//5R1nspj5fNVGklxFTwbSw28Sh1Uoro13aeVSQppaZXmg7zWxgiWYZhg
mJaxWZW2pKHdyXzfUuDOO+iVmDKF9OviwXLDo7ox0whQn70syREQdpFNKcVBsFdIhrzB
hnuCwQ4xZ3dinhvPLzHbjW5/Rt2gXI5tZwOtTe5OiPqm/yUcQNHwNyBgJcEbFC95TXkJ
xrZA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20161025;
h=x-gm-message-state:mime-version:references:in-reply-to:from:date
:message-id:subject:to:cc;
bh=UO+uHMzdtVCuhaWgbdTCxeeCbKdJ5CVPUAN0TpANr3s=;
b=OUVgBJatZB0n61KiWgatYCe2SWhC82/RMuz8BgUBluRLddgFRi6sKppFHxzmXgFYGc
z6sQSPhukCnFzHts8FW3/90FW9YcO/bkZ2KOv73DBiZXN5Ks14hLWebs69YLc/sES1JV
5bMRxUt7xMiwkFs5VglclT7gcbTK/iCdbBm1IWkddw1kRaLu2L2UXiAI5ZyKKpPz8ino
F9I9bBBitQN784fKudyfJ073dQy5UnZP/xo/1A+bDNc8LjxZLwjcgVoDpr+jbAZ4KrtY
XXgJVfMw6yGP73LnqHMAwc3zQapq4AyK/lSR5EO8Qi6rYw03CEaTEumoPL6nYSlzkcQv
gA+w==
X-Gm-Message-State: AOAM530/2Ow0BukvPO0v9uJJMLYfC8FC3Lxm3Y9QnCWtjazxgOKi0c3S
3rG5LrsTjYpM068nqgbD7Grpm++WAer9kl8cn+0=
X-Google-Smtp-Source: ABdhPJxThOUH47ZplwyOAd2EaCQalVqgGe/91SaetkFO6b+aCawHG1VCsn9JbOcoMct39a7/MeFHQnqeGgXS1cLeP3w=
X-Received: by 2002:a9d:72c4:: with SMTP id d4mr7076971otk.149.1608401940105;
Sat, 19 Dec 2020 10:19:00 -0800 (PST)
In-Reply-To:
X-BeenThere: debbugs-submit@debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
X-BeenThere: bug-gnu-emacs@gnu.org
List-Id: "Bug reports for GNU Emacs,
the Swiss army knife of text editors"
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org
Original-Sender: "bug-gnu-emacs"
Xref: news.gmane.io gmane.emacs.bugs:196410
Archived-At:
--0000000000004c40a805b6d54284
Content-Type: text/plain; charset="UTF-8"
Am Mo., 14. Dez. 2020 um 12:05 Uhr schrieb Philipp Stephani
:
>
> > >> - This will need someone else doing the implementation.
> > > Looks like we already have a volunteer for macOS.
> > > For Linux, this shouldn't be that difficult either. The sandbox needs
> > > to install a mount namespace that only allows read access to Emacs's
> > > installation directory plus any input file and write access to known
> > > output files, and enable syscall filters that forbid everything except
> > > a list of known-safe syscalls (especially exec). I can take a stab at
> > > that, but I can't promise anything ;-)
> >
> > Looking forward to it.
> >
>
> I've looked into this, and what I'd suggest for now is:
> 1. Add a --seccomp=FILE command-line option that loads seccomp filters
> from FILE and applies them directly after startup (first thing in
> main). Why do this in Emacs? Because that's the easiest way to prevent
> execve. When installing a seccomp filter in a separate process, execve
> needs to be allowed because otherwise there'd be no way to execute the
> Emacs binary. While there are workarounds (ptrace, LD_PRELOAD), it's
> easiest to install the seccomp filter directly in the Emacs process.
I've attached a patch for this.
--0000000000004c40a805b6d54284
Content-Type: text/x-patch; charset="US-ASCII";
name="0001-Add-support-for-seccomp-command-line-option.patch"
Content-Disposition: attachment;
filename="0001-Add-support-for-seccomp-command-line-option.patch"
Content-Transfer-Encoding: base64
Content-ID:
X-Attachment-Id: f_kiw0xspy0
RnJvbSA4MGZjMGFiOTJlMWYwMjVhOGE0MTA0N2Q3OTA5YmU2YTk3ZjViMDlhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwIFN0ZXBoYW5pIDxwaHN0QGdvb2dsZS5jb20+CkRh
dGU6IE1vbiwgMTQgRGVjIDIwMjAgMjE6MjU6MTEgKzAxMDAKU3ViamVjdDogW1BBVENIXSBBZGQg
c3VwcG9ydCBmb3IgLS1zZWNjb21wIGNvbW1hbmQtbGluZSBvcHRpb24uCgpXaGVuIHBhc3Npbmcg
dGhpcyBvcHRpb24gb24gR05VL0xpbnV4LCBFbWFjcyBpbnN0YWxscyBhIFNlY3VyZQpDb21wdXRp
bmcga2VybmVsIHN5c3RlbSBjYWxsIGZpbHRlci4gIFNlZSBCdWcjNDUxOTguCgoqIGNvbmZpZ3Vy
ZS5hYzogQ2hlY2sgZm9yIHNlY2NvbXAgaGVhZGVyLgoKKiBzcmMvZW1hY3MuYyAodXNhZ2VfbWVz
c2FnZSk6IERvY3VtZW50IC0tc2VjY29tcCBvcHRpb24uCihlbWFjc19zZWNjb21wKTogTmV3IHdy
YXBwZXIgZm9yICdzZWNjb21wJyBzeXNjYWxsLgoobG9hZF9zZWNjb21wLCBtYXliZV9sb2FkX3Nl
Y2NvbXAsIHJlYWRfZnVsbCk6IE5ldyBoZWxwZXIgZnVuY3Rpb25zLgoobWFpbik6IFBvdGVudGlh
bGx5IGxvYWQgc2VjY29tcCBmaWx0ZXJzIGR1cmluZyBzdGFydHVwLgooc3RhbmRhcmRfYXJncyk6
IEFkZCAtLXNlY2NvbXAgb3B0aW9uLgoKKiBsaXNwL3N0YXJ0dXAuZWwgKGNvbW1hbmQtbGluZSk6
IERldGVjdCBhbmQgaWdub3JlIC0tc2VjY29tcCBvcHRpb24uCgoqIHRlc3Qvc3JjL2VtYWNzLXRl
c3RzLmVsIChlbWFjcy10ZXN0cy9zZWNjb21wL2Fic2VudC1maWxlKQooZW1hY3MtdGVzdHMvc2Vj
Y29tcC9lbXB0eS1maWxlKQooZW1hY3MtdGVzdHMvc2VjY29tcC9pbnZhbGlkLWZpbGUtc2l6ZSk6
IE5ldyB1bml0IHRlc3RzLgooZW1hY3MtdGVzdHMtLXdpdGgtdGVtcC1maWxlKTogTmV3IGhlbHBl
ciBtYWNyby4KCiogZXRjL05FV1M6IERvY3VtZW50IG5ldyAtLXNlY2NvbXAgb3B0aW9uLgotLS0K
IGNvbmZpZ3VyZS5hYyAgICAgICAgICAgIHwgICAyICsKIGV0Yy9ORVdTICAgICAgICAgICAgICAg
IHwgIDEwICsrKwogbGlzcC9zdGFydHVwLmVsICAgICAgICAgfCAgIDQgKy0KIHNyYy9lbWFjcy5j
ICAgICAgICAgICAgIHwgMTY4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
Ky0KIHRlc3Qvc3JjL2VtYWNzLXRlc3RzLmVsIHwgIDg2ICsrKysrKysrKysrKysrKysrKysrCiA1
IGZpbGVzIGNoYW5nZWQsIDI2NyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRl
IG1vZGUgMTAwNjQ0IHRlc3Qvc3JjL2VtYWNzLXRlc3RzLmVsCgpkaWZmIC0tZ2l0IGEvY29uZmln
dXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDg4OGI0MTUxNDguLjA4N2RkNjdlMTggMTAwNjQ0
Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTQxODQsNiArNDE4NCw4
IEBAIEFDX0RFRlVOCiBBQ19TVUJTVChbQkxFU1NNQUlMX1RBUkdFVF0pCiBBQ19TVUJTVChbTElC
U19NQUlMXSkKIAorQUNfQ0hFQ0tfSEVBREVSUyhbbGludXgvc2VjY29tcC5oXSkKKwogT0xEX0xJ
QlM9JExJQlMKIExJQlM9IiRMSUJfUFRIUkVBRCAkTElCX01BVEggJExJQlMiCiBBQ19DSEVDS19G
VU5DUyhhY2NlcHQ0IGZjaGRpciBnZXRob3N0bmFtZSBcCmRpZmYgLS1naXQgYS9ldGMvTkVXUyBi
L2V0Yy9ORVdTCmluZGV4IDRhOGU3MGU2YTYuLmJkMjU1ZmFjYTQgMTAwNjQ0Ci0tLSBhL2V0Yy9O
RVdTCisrKyBiL2V0Yy9ORVdTCkBAIC04Miw2ICs4MiwxNiBAQCBsYWNrcyB0aGUgdGVybWluZm8g
ZGF0YWJhc2UsIHlvdSBjYW4gaW5zdHJ1Y3QgRW1hY3MgdG8gc3VwcG9ydCAyNC1iaXQKIHRydWUg
Y29sb3IgYnkgc2V0dGluZyAnQ09MT1JURVJNPXRydWVjb2xvcicgaW4gdGhlIGVudmlyb25tZW50
LiAgVGhpcyBpcwogdXNlZnVsIG9uIHN5c3RlbXMgc3VjaCBhcyBGcmVlQlNEIHdoaWNoIHNoaXBz
IG9ubHkgd2l0aCAiZXRjL3Rlcm1jYXAiLgogCisqKiBPbiBHTlUvTGludXggc3lzdGVtcywgRW1h
Y3Mgbm93IHN1cHBvcnRzIGxvYWRpbmcgYSBTZWN1cmUgQ29tcHV0aW5nCitmaWx0ZXIuICBUbyB1
c2UgdGhpcywgeW91IGNhbiBwYXNzIGEgLS1zZWNjb21wPUZJTEUgY29tbWFuZC1saW5lCitvcHRp
b24gdG8gRW1hY3MuICBGSUxFIG11c3QgbmFtZSBhIGJpbmFyeSBmaWxlIGNvbnRhaW5pbmcgYW4g
YXJyYXkgb2YKKydzdHJ1Y3Qgc29ja19maWx0ZXInIHN0cnVjdHVyZXMuICBFbWFjcyB3aWxsIHRo
ZW4gaW5zdGFsbCB0aGF0IGxpc3Qgb2YKK1NlY3VyZSBDb21wdXRpbmcgZmlsdGVycyBpbnRvIGl0
cyBvd24gcHJvY2VzcyBlYXJseSBkdXJpbmcgdGhlIHN0YXJ0dXAKK3Byb2Nlc3MuICBZb3UgY2Fu
IHVzZSB0aGlzIGZ1bmN0aW9uYWxpdHkgdG8gcHV0IGFuIEVtYWNzIHByb2Nlc3MgaW4gYQorc2Fu
ZGJveCB0byBhdm9pZCBzZWN1cml0eSBpc3N1ZXMgd2hlbiBleGVjdXRpbmcgdW50cnVzdGVkIGNv
ZGUuICBTZWUKK3RoZSBtYW51YWwgcGFnZSBmb3IgJ3NlY2NvbXAnIGZvciBkZXRhaWxzIGFib3V0
IFNlY3VyZSBDb21wdXRpbmcKK2ZpbHRlcnMuCisKIAwKICogQ2hhbmdlcyBpbiBFbWFjcyAyOC4x
CiAKZGlmZiAtLWdpdCBhL2xpc3Avc3RhcnR1cC5lbCBiL2xpc3Avc3RhcnR1cC5lbAppbmRleCBi
MTEyOGY2ZDAyLi45YjEzNDZlNDQ4IDEwMDY0NAotLS0gYS9saXNwL3N0YXJ0dXAuZWwKKysrIGIv
bGlzcC9zdGFydHVwLmVsCkBAIC0xMDk0LDcgKzEwOTQsNyBAQCBjb21tYW5kLWxpbmUKICAgICAg
ICAgICAgICAgICAgICAgICAgICAoIi0tbm8teC1yZXNvdXJjZXMiKSAoIi0tZGVidWctaW5pdCIp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgKCItLXVzZXIiKSAoIi0taWNvbmljIikgKCItLWlj
b24tdHlwZSIpICgiLS1xdWljayIpCiAJCQkgKCItLW5vLWJsaW5raW5nLWN1cnNvciIpICgiLS1i
YXNpYy1kaXNwbGF5IikKLSAgICAgICAgICAgICAgICAgICAgICAgICAoIi0tZHVtcC1maWxlIikg
KCItLXRlbWFjcyIpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoIi0tZHVtcC1maWxlIikg
KCItLXRlbWFjcyIpICgiLS1zZWNjb21wIikpKQogICAgICAgICAgICAgIChhcmdpIChwb3AgYXJn
cykpCiAgICAgICAgICAgICAgKG9yaWctYXJnaSBhcmdpKQogICAgICAgICAgICAgIGFyZ3ZhbCkK
QEAgLTExNDYsNyArMTE0Niw3IEBAIGNvbW1hbmQtbGluZQogCSAgKHB1c2ggJyh2aXNpYmlsaXR5
IC4gaWNvbikgaW5pdGlhbC1mcmFtZS1hbGlzdCkpCiAJICgobWVtYmVyIGFyZ2kgJygiLW5iYyIg
Ii1uby1ibGlua2luZy1jdXJzb3IiKSkKIAkgIChzZXRxIG5vLWJsaW5raW5nLWN1cnNvciB0KSkK
LSAgICAgICAgICgobWVtYmVyIGFyZ2kgJygiLWR1bXAtZmlsZSIgIi10ZW1hY3MiKSkgIDsgSGFu
ZGxlZCBpbiBDCisgICAgICAgICAoKG1lbWJlciBhcmdpICcoIi1kdW1wLWZpbGUiICItdGVtYWNz
IiAiLXNlY2NvbXAiKSkgIDsgSGFuZGxlZCBpbiBDCiAgICAgICAgICAgKG9yIGFyZ3ZhbCAocG9w
IGFyZ3MpKQogICAgICAgICAgIChzZXRxIGFyZ3ZhbCBuaWwpKQogCSA7OyBQdXNoIHRoZSBwb3Bw
ZWQgYXJnIGJhY2sgb24gdGhlIGxpc3Qgb2YgYXJndW1lbnRzLgpkaWZmIC0tZ2l0IGEvc3JjL2Vt
YWNzLmMgYi9zcmMvZW1hY3MuYwppbmRleCAyYTMyMDgzYmExLi4wYTkzOWZjOTAxIDEwMDY0NAot
LS0gYS9zcmMvZW1hY3MuYworKysgYi9zcmMvZW1hY3MuYwpAQCAtNjEsNiArNjEsMTMgQEAgI2Rl
ZmluZSBNQUlOX1BST0dSQU0KICMgaW5jbHVkZSA8c3lzL3NvY2tldC5oPgogI2VuZGlmCiAKKyNp
ZmRlZiBIQVZFX0xJTlVYX1NFQ0NPTVBfSAorIyBpbmNsdWRlIDxsaW51eC9zZWNjb21wLmg+Cisj
IGluY2x1ZGUgPGxpbnV4L2ZpbHRlci5oPgorIyBpbmNsdWRlIDxzeXMvcHJjdGwuaD4KKyMgaW5j
bHVkZSA8c3lzL3N5c2NhbGwuaD4KKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVN
CiAjaW5jbHVkZSBURVJNX0hFQURFUgogI2VuZGlmIC8qIEhBVkVfV0lORE9XX1NZU1RFTSAqLwpA
QCAtMjM5LDYgKzI0NiwxMSBAQCAjZGVmaW5lIE1BSU5fUFJPR1JBTQogICAgICJcCiAtLWR1bXAt
ZmlsZSBGSUxFICAgICAgICAgICAgcmVhZCBkdW1wZWQgc3RhdGUgZnJvbSBGSUxFXG5cCiAiLAor
I2VuZGlmCisjaWZkZWYgSEFWRV9MSU5VWF9TRUNDT01QX0gKKyAgICAiXAorLS1zYW5kYm94PUZJ
TEUgICAgICAgICAgICAgIHJlYWQgU2VjY29tcCBCUEYgZmlsdGVyIGZyb20gRklMRVxuXAorIgog
I2VuZGlmCiAgICAgIlwKIC0tbm8tYnVpbGQtZGV0YWlscyAgICAgICAgICBkbyBub3QgYWRkIGJ1
aWxkIGRldGFpbHMgc3VjaCBhcyB0aW1lIHN0YW1wc1xuXApAQCAtOTM3LDYgKzk0OSwxNTAgQEAg
bG9hZF9wZHVtcCAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogfQogI2VuZGlmIC8qIEhBVkVfUERV
TVBFUiAqLwogCisjaWZkZWYgSEFWRV9MSU5VWF9TRUNDT01QX0gKKworLyogV3JhcHBlciBmdW5j
dGlvbiBmb3IgdGhlIGBzZWNjb21wJyBzeXN0ZW0gY2FsbCBvbiBHTlUvTGludXguICBUaGlzIHN5
c3RlbQorICAgY2FsbCB1c3VhbGx5IGRvZXNuJ3QgaGF2ZSBhIHdyYXBwZXIgZnVuY3Rpb24uICBT
ZWUgdGhlIG1hbnVhbCBwYWdlIG9mCisgICBgc2VjY29tcCcgZm9yIHRoZSBzaWduYXR1cmUuICAq
LworCitzdGF0aWMgaW50CitlbWFjc19zZWNjb21wICh1bnNpZ25lZCBpbnQgb3BlcmF0aW9uLCB1
bnNpZ25lZCBpbnQgZmxhZ3MsIHZvaWQgKmFyZ3MpCit7CisjaWZkZWYgU1lTX3NlY2NvbXAKKyAg
cmV0dXJuIHN5c2NhbGwgKFNZU19zZWNjb21wLCBvcGVyYXRpb24sIGZsYWdzLCBhcmdzKTsKKyNl
bHNlCisgIGVycm5vID0gRU5PU1lTOworICByZXR1cm4gLTE7CisjZW5kaWYKK30KKworLyogUmVh
ZCBleGFjdGx5IFNJWkUgYnl0ZXMgaW50byBCVUZGRVIuICBSZXR1cm4gZmFsc2Ugb24gc2hvcnQg
cmVhZC4gICovCisKK3N0YXRpYyBib29sCityZWFkX2Z1bGwgKGludCBmZCwgdm9pZCAqYnVmZmVy
LCBzaXplX3Qgc2l6ZSkKK3sKKyAgaWYgKFNTSVpFX01BWCA8IHNpemUpCisgICAgeworICAgICAg
ZXJybm8gPSBFRkJJRzsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgIGNoYXIgKnB0ciA9
IGJ1ZmZlcjsKKyAgd2hpbGUgKHNpemUgIT0gMCkKKyAgICB7CisgICAgICAvKiBXZSBjYW4ndCB1
c2UgYGVtYWNzX3JlYWQnIHlldCBiZWNhdXNlIHF1aXR0aW5nIGRvZXNuJ3Qgd29yayBoZXJlCisg
ICAgICAgICB5ZXQuICAqLworICAgICAgc3NpemVfdCByZXQgPSBURU1QX0ZBSUxVUkVfUkVUUlkg
KHJlYWQgKGZkLCBwdHIsIHNpemUpKTsKKyAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICBpZiAocmV0ID09IDApCisgICAgICAgIGJyZWFrOyAgLyogQXZvaWQg
aW5maW5pdGUgbG9vcCBvbiBlbmNvdW50ZXJpbmcgRU9GLiAgKi8KKyAgICAgIGVhc3NlcnQgKHJl
dCA8PSBzaXplKTsKKyAgICAgIHNpemUgLT0gcmV0OworICAgICAgcHRyICs9IHJldDsKKyAgICB9
CisgIGlmIChzaXplICE9IDApCisgICAgZXJybm8gPSBFTk9EQVRBOworICByZXR1cm4gc2l6ZSA9
PSAwOworfQorCisvKiBBdHRlbXB0IHRvIGxvYWQgU2VjdXJlIENvbXB1dGluZyBmaWx0ZXJzIGZy
b20gRklMRS4gIFJldHVybiBmYWxzZSBpZiB0aGF0CisgICBkb2Vzbid0IHdvcmsgZm9yIHNvbWUg
cmVhc29uLiAgKi8KKworc3RhdGljIGJvb2wKK2xvYWRfc2VjY29tcCAoY29uc3QgY2hhciAqZmls
ZSkKK3sKKyAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CisgIHN0cnVjdCBzb2NrX2Zwcm9nIHByb2dy
YW0gPSB7MCwgTlVMTH07CisgIC8qIFdlIGNhbid0IHVzZSBgZW1hY3Nfb3BlbicgeWV0IGJlY2F1
c2UgcXVpdHRpbmcgZG9lc24ndCB3b3JrIGhlcmUgeWV0LiAgKi8KKyAgaW50IGZkID0gVEVNUF9G
QUlMVVJFX1JFVFJZIChvcGVuIChmaWxlLCBPX1JET05MWSB8IE9fQklOQVJZIHwgT19DTE9FWEVD
KSk7CisgIGlmIChmZCA8IDApCisgICAgeworICAgICAgZW1hY3NfcGVycm9yICgib3BlbiIpOwor
ICAgICAgZ290byBvdXQ7CisgICAgfQorICBzdHJ1Y3Qgc3RhdCBzdGF0OworICBpZiAoZnN0YXQg
KGZkLCAmc3RhdCkgPCAwKQorICAgIHsKKyAgICAgIGVtYWNzX3BlcnJvciAoImZzdGF0Iik7Cisg
ICAgICBnb3RvIG91dDsKKyAgICB9CisgIGlmIChzdGF0LnN0X3NpemUgPD0gMCB8fCBTSVpFX01B
WCA8IHN0YXQuc3Rfc2l6ZQorICAgICAgfHwgKHNpemVfdCkgc3RhdC5zdF9zaXplICUgc2l6ZW9m
ICpwcm9ncmFtLmZpbHRlciAhPSAwKQorICAgIHsKKyAgICAgIGZwcmludGYgKHN0ZGVyciwgInNl
Y2NvbXAgZmlsdGVyICVzIGhhcyBpbnZhbGlkIHNpemUgJWpkXG4iLCBmaWxlLAorICAgICAgICAg
ICAgICAgKGludG1heF90KSBzdGF0LnN0X3NpemUpOworICAgICAgZ290byBvdXQ7CisgICAgfQor
ICBzaXplX3Qgc2l6ZSA9IHN0YXQuc3Rfc2l6ZTsKKyAgc2l6ZV90IGNvdW50ID0gc2l6ZSAvIHNp
emVvZiAqcHJvZ3JhbS5maWx0ZXI7CisgIGVhc3NlcnQgKDAgPCBzaXplICYmIDAgPCBjb3VudCk7
CisgIGlmIChVU0hSVF9NQVggPCBjb3VudCkKKyAgICB7CisgICAgICBmcHJpbnRmIChzdGRlcnIs
ICJzZWNjb21wIGZpbHRlciAlcyBpcyB0b28gYmlnIiwgZmlsZSk7CisgICAgICBnb3RvIG91dDsK
KyAgICB9CisgIHByb2dyYW0ubGVuID0gY291bnQ7CisgIHByb2dyYW0uZmlsdGVyID0gbWFsbG9j
IChzaXplKTsKKyAgaWYgKHByb2dyYW0uZmlsdGVyID09IE5VTEwpCisgICAgeworICAgICAgZW1h
Y3NfcGVycm9yICgibWFsbG9jIik7CisgICAgICBnb3RvIG91dDsKKyAgICB9CisgIGlmICghcmVh
ZF9mdWxsIChmZCwgcHJvZ3JhbS5maWx0ZXIsIHNpemUpKQorICAgIHsKKyAgICAgIGVtYWNzX3Bl
cnJvciAoInJlYWQiKTsKKyAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgaWYgKGNsb3NlIChmZCkg
IT0gMCkKKyAgICBlbWFjc19wZXJyb3IgKCJjbG9zZSIpOyAgLyogbm90IGNyaXRpY2FsICovCisg
IGZkID0gLTE7CisKKyAgLyogU2VlIG1hbiBwYWdlIG9mIGBzZWNjb21wJyB3aHkgdGhpcyBpcyBu
ZWNlc3NhcnkuICBOb3RlIHRoYXQgd2UKKyAgICAgaW50ZW50aW9uYWxseSBkb24ndCBjaGVjayB0
aGUgcmV0dXJuIHZhbHVlOiBhIHBhcmVudCBwcm9jZXNzIG1pZ2h0IGhhdmUKKyAgICAgbWFkZSB0
aGlzIGNhbGwgYmVmb3JlLCBpbiB3aGljaCBjYXNlIGl0IHdvdWxkIGZhaWw7IG9yLCBpZiBlbmFi
bGluZworICAgICBwcml2aWxlZ2UtcmVzdHJpY3RpbmcgbW9kZSBmYWlscywgdGhlIGBzZWNjb21w
JyBzeXNjYWxsIHdpbGwgZmFpbAorICAgICBhbnl3YXkuICAqLworICBwcmN0bCAoUFJfU0VUX05P
X05FV19QUklWUywgMSwgMCwgMCwgMCk7CisgIC8qIEluc3RhbGwgdGhlIGZpbHRlci4gIE1ha2Ug
c3VyZSB0aGF0IHBvdGVudGlhbCBvdGhlciB0aHJlYWRzIGNhbid0IGVzY2FwZQorICAgICBpdC4g
ICovCisgIGlmIChlbWFjc19zZWNjb21wIChTRUNDT01QX1NFVF9NT0RFX0ZJTFRFUiwgU0VDQ09N
UF9GSUxURVJfRkxBR19UU1lOQywKKyAgICAgICAgICAgICAgICAgICAgICZwcm9ncmFtKQorICAg
ICAgIT0gMCkKKyAgICB7CisgICAgICBlbWFjc19wZXJyb3IgKCJzZWNjb21wIik7CisgICAgICBn
b3RvIG91dDsKKyAgICB9CisgIHN1Y2Nlc3MgPSB0cnVlOworCisgb3V0OgorICBmcmVlIChwcm9n
cmFtLmZpbHRlcik7CisgIGNsb3NlIChmZCk7CisgIHJldHVybiBzdWNjZXNzOworfQorCisvKiBM
b2FkIFNlY3VyZSBDb21wdXRpbmcgZmlsdGVyIGZyb20gZmlsZSBzcGVjaWZpZWQgd2l0aCB0aGUg
LS1zZWNjb21wIG9wdGlvbi4KKyAgIEV4aXQgaWYgdGhhdCBmYWlscy4gICovCisKK3N0YXRpYyB2
b2lkCittYXliZV9sb2FkX3NlY2NvbXAgKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgaW50
IHNraXBfYXJncyA9IDA7CisgIGNoYXIgKmZpbGUgPSBOVUxMOworICB3aGlsZSAoc2tpcF9hcmdz
IDwgYXJnYyAtIDEpCisgICAgeworICAgICAgaWYgKGFyZ21hdGNoIChhcmd2LCBhcmdjLCAiLXNl
Y2NvbXAiLCAiLS1zZWNjb21wIiwgOSwgJmZpbGUsICZza2lwX2FyZ3MpCisgICAgICAgICAgfHwg
YXJnbWF0Y2ggKGFyZ3YsIGFyZ2MsICItLSIsIE5VTEwsIDIsIE5VTEwsICZza2lwX2FyZ3MpKQor
ICAgICAgICBicmVhazsKKyAgICAgICsrc2tpcF9hcmdzOworICAgIH0KKyAgaWYgKGZpbGUgPT0g
TlVMTCkKKyAgICByZXR1cm47CisgIGlmICghbG9hZF9zZWNjb21wIChmaWxlKSkKKyAgICBmYXRh
bCAoImNhbm5vdCBlbmFibGUgc2VjY29tcCBmaWx0ZXIgZnJvbSAlcyIsIGZpbGUpOworfQorCisj
ZW5kaWYgIC8qIEhBVkVfTElOVVhfU0VDQ09NUF9IICovCisKIGludAogbWFpbiAoaW50IGFyZ2Ms
IGNoYXIgKiphcmd2KQogewpAQCAtOTQ0LDYgKzExMDAsMTMgQEAgbWFpbiAoaW50IGFyZ2MsIGNo
YXIgKiphcmd2KQogICAgICBmb3IgcG9pbnRlcnMuICAqLwogICB2b2lkICpzdGFja19ib3R0b21f
dmFyaWFibGU7CiAKKyAgLyogRmlyc3QsIGNoZWNrIHdoZXRoZXIgd2Ugc2hvdWxkIGFwcGx5IGEg
c2VjY29tcCBmaWx0ZXIuICBUaGlzIHNob3VsZCBjb21lIGF0CisgICAgIHRoZSB2ZXJ5IGJlZ2lu
bmluZyB0byBhbGxvdyB0aGUgZmlsdGVyIHRvIHByb3RlY3QgdGhlIGluaXRpYWxpemF0aW9uCisg
ICAgIHBoYXNlLiAgKi8KKyNpZmRlZiBIQVZFX0xJTlVYX1NFQ0NPTVBfSAorICBtYXliZV9sb2Fk
X3NlY2NvbXAgKGFyZ2MsIGFyZ3YpOworI2VuZGlmCisKICAgYm9vbCBub19sb2FkdXAgPSBmYWxz
ZTsKICAgY2hhciAqanVuayA9IDA7CiAgIGNoYXIgKmRuYW1lX2FyZyA9IDA7CkBAIC0yMTM3LDEy
ICsyMzAwLDE1IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgeyAiLWNvbG9yIiwg
Ii0tY29sb3IiLCA1LCAwfSwKICAgeyAiLW5vLXNwbGFzaCIsICItLW5vLXNwbGFzaCIsIDMsIDAg
fSwKICAgeyAiLW5vLWRlc2t0b3AiLCAiLS1uby1kZXNrdG9wIiwgMywgMCB9LAotICAvKiBUaGUg
Zm9sbG93aW5nIHR3byBtdXN0IGJlIGp1c3QgYWJvdmUgdGhlIGZpbGUtbmFtZSBhcmdzLCB0byBn
ZXQKKyAgLyogVGhlIGZvbGxvd2luZyB0aHJlZSBtdXN0IGJlIGp1c3QgYWJvdmUgdGhlIGZpbGUt
bmFtZSBhcmdzLCB0byBnZXQKICAgICAgdGhlbSBvdXQgb2Ygb3VyIHdheSwgYnV0IHdpdGhvdXQg
bWl4aW5nIHRoZW0gd2l0aCBmaWxlIG5hbWVzLiAgKi8KICAgeyAiLXRlbWFjcyIsICItLXRlbWFj
cyIsIDEsIDEgfSwKICNpZmRlZiBIQVZFX1BEVU1QRVIKICAgeyAiLWR1bXAtZmlsZSIsICItLWR1
bXAtZmlsZSIsIDEsIDEgfSwKICNlbmRpZgorI2lmZGVmIEhBVkVfTElOVVhfU0VDQ09NUF9ICisg
IHsgIi1zZWNjb21wIiwgIi0tc2VjY29tcCIsIDEsIDEgfSwKKyNlbmRpZgogI2lmZGVmIEhBVkVf
TlMKICAgeyAiLU5TQXV0b0xhdW5jaCIsIDAsIDUsIDEgfSwKICAgeyAiLU5YQXV0b0xhdW5jaCIs
IDAsIDUsIDEgfSwKZGlmZiAtLWdpdCBhL3Rlc3Qvc3JjL2VtYWNzLXRlc3RzLmVsIGIvdGVzdC9z
cmMvZW1hY3MtdGVzdHMuZWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u
Mjc5ZWNiMjEwYwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3Qvc3JjL2VtYWNzLXRlc3RzLmVsCkBA
IC0wLDAgKzEsODYgQEAKKzs7OyBlbWFjcy10ZXN0cy5lbCAtLS0gdW5pdCB0ZXN0cyBmb3IgZW1h
Y3MuYyAtKi0gbGV4aWNhbC1iaW5kaW5nOiB0OyAtKi0KKworOzsgQ29weXJpZ2h0IChDKSAyMDIw
ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworOzsgVGhpcyBmaWxlIGlzIHBhcnQg
b2YgR05VIEVtYWNzLgorCis7OyBHTlUgRW1hY3MgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorOzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKzs7IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y
Cis7OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCis7OyBHTlUgRW1hY3Mg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKzs7IGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCis7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlCis7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorCis7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNl
ZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCis7OzsgQ29tbWVudGFyeToKKwor
OzsgVW5pdCB0ZXN0cyBmb3Igc3JjL2VtYWNzLmMuCisKKzs7OyBDb2RlOgorCisocmVxdWlyZSAn
Y2wtbGliKQorKHJlcXVpcmUgJ2VydCkKKworKGVydC1kZWZ0ZXN0IGVtYWNzLXRlc3RzL3NlY2Nv
bXAvYWJzZW50LWZpbGUgKCkKKyAgKGxldCAoKGVtYWNzIChleHBhbmQtZmlsZS1uYW1lIGludm9j
YXRpb24tbmFtZSBpbnZvY2F0aW9uLWRpcmVjdG9yeSkpCisgICAgICAgIChwcm9jZXNzLWVudmly
b25tZW50IG5pbCkpCisgICAgKHNraXAtdW5sZXNzIChmaWxlLWV4ZWN1dGFibGUtcCBlbWFjcykp
CisgICAgKHNob3VsZC1ub3QgKGZpbGUtZXhpc3RzLXAgIi9kb2VzLW5vdC1leGlzdC5icGYiKSkK
KyAgICAoc2hvdWxkLW5vdAorICAgICAoZXFsIChjYWxsLXByb2Nlc3MgZW1hY3MgbmlsIG5pbCBu
aWwKKyAgICAgICAgICAgICAgICAgICAgICAgICItLXF1aWNrIiAiLS1iYXRjaCIgIi0tc2VjY29t
cD0vZG9lcy1ub3QtZXhpc3QuYnBmIikKKyAgICAgICAgICAwKSkpKQorCisoY2wtZGVmbWFjcm8g
ZW1hY3MtdGVzdHMtLXdpdGgtdGVtcC1maWxlCisgICAgKHZhciAocHJlZml4ICZvcHRpb25hbCBz
dWZmaXggdGV4dCkgJnJlc3QgYm9keSkKKyAgIkV2YWx1YXRlIEJPRFkgd2hpbGUgYSBuZXcgdGVt
cG9yYXJ5IGZpbGUgZXhpc3RzLgorQmluZCBWQVIgdG8gdGhlIG5hbWUgb2YgdGhlIGZpbGUuICBQ
YXNzIFBSRUZJWCwgU1VGRklYLCBhbmQgVEVYVAordG8gYG1ha2UtdGVtcC1maWxlJywgd2hpY2gg
c2VlLiIKKyAgKGRlY2xhcmUgKGluZGVudCAyKSAoZGVidWcgKHN5bWJvbHAgKGZvcm0gZm9ybSBm
b3JtKSBib2R5KSkpCisgIChjbC1jaGVjay10eXBlIHZhciBzeW1ib2wpCisgIDs7IFVzZSBhbiB1
bmludGVybmVkIHN5bWJvbCBzbyB0aGF0IHRoZSBjb2RlIHN0aWxsIHdvcmtzIGlmIEJPRFkgY2hh
bmdlcyBWQVIuCisgIChsZXQgKChmaWxlbmFtZSAobWFrZS1zeW1ib2wgImZpbGVuYW1lIikpKQor
ICAgIGAobGV0ICgoLGZpbGVuYW1lIChtYWtlLXRlbXAtZmlsZSAscHJlZml4IG5pbCAsc3VmZml4
ICx0ZXh0KSkpCisgICAgICAgKHVud2luZC1wcm90ZWN0CisgICAgICAgICAgIChsZXQgKCgsdmFy
ICxmaWxlbmFtZSkpCisgICAgICAgICAgICAgLEBib2R5KQorICAgICAgICAgKGRlbGV0ZS1maWxl
ICxmaWxlbmFtZSkpKSkpCisKKyhlcnQtZGVmdGVzdCBlbWFjcy10ZXN0cy9zZWNjb21wL2VtcHR5
LWZpbGUgKCkKKyAgKGxldCAoKGVtYWNzIChleHBhbmQtZmlsZS1uYW1lIGludm9jYXRpb24tbmFt
ZSBpbnZvY2F0aW9uLWRpcmVjdG9yeSkpCisgICAgICAgIChwcm9jZXNzLWVudmlyb25tZW50IG5p
bCkpCisgICAgKHNraXAtdW5sZXNzIChmaWxlLWV4ZWN1dGFibGUtcCBlbWFjcykpCisgICAgKGVt
YWNzLXRlc3RzLS13aXRoLXRlbXAtZmlsZSBmaWx0ZXIgKCJzZWNjb21wLWludmFsaWQtIiAiLmJw
ZiIpCisgICAgICA7OyBUaGUgLS1zZWNjb21wIG9wdGlvbiBpcyBwcm9jZXNzZWQgZWFybHksIHdp
dGhvdXQgZmlsZW5hbWUgaGFuZGxlcnMuCisgICAgICA7OyBUaGVyZWZvcmUgcmVtb3RlIG9yIHF1
b3RlZCBmaWxlbmFtZXMgd291bGRuJ3Qgd29yay4KKyAgICAgIChzaG91bGQtbm90IChmaWxlLXJl
bW90ZS1wIGZpbHRlcikpCisgICAgICAoY2wtY2FsbGYgZmlsZS1uYW1lLXVucXVvdGUgZmlsdGVy
KQorICAgICAgOzsgQWNjb3JkaW5nIHRvIHRoZSBTZWNjb21wIG1hbiBwYWdlLCBhIGZpbHRlciBt
dXN0IGhhdmUgYXQgbGVhc3Qgb25lCisgICAgICA7OyBlbGVtZW50LCBzbyBFbWFjcyBzaG91bGQg
cmVqZWN0IGFuIGVtcHR5IGZpbGUuCisgICAgICAoc2hvdWxkLW5vdAorICAgICAgIChlcWwgKGNh
bGwtcHJvY2VzcyBlbWFjcyBuaWwgbmlsIG5pbAorICAgICAgICAgICAgICAgICAgICAgICAgICAi
LS1xdWljayIgIi0tYmF0Y2giIChjb25jYXQgIi0tc2VjY29tcD0iIGZpbHRlcikpCisgICAgICAg
ICAgICAwKSkpKSkKKworKGVydC1kZWZ0ZXN0IGVtYWNzLXRlc3RzL3NlY2NvbXAvaW52YWxpZC1m
aWxlLXNpemUgKCkKKyAgKGxldCAoKGVtYWNzIChleHBhbmQtZmlsZS1uYW1lIGludm9jYXRpb24t
bmFtZSBpbnZvY2F0aW9uLWRpcmVjdG9yeSkpCisgICAgICAgIChwcm9jZXNzLWVudmlyb25tZW50
IG5pbCkpCisgICAgKHNraXAtdW5sZXNzIChmaWxlLWV4ZWN1dGFibGUtcCBlbWFjcykpCisgICAg
KGVtYWNzLXRlc3RzLS13aXRoLXRlbXAtZmlsZSBmaWx0ZXIgKCJzZWNjb21wLWludmFsaWQtIiAi
LmJwZiIgIjEyMzQ1NiIpCisgICAgICA7OyBUaGUgLS1zZWNjb21wIG9wdGlvbiBpcyBwcm9jZXNz
ZWQgZWFybHksIHdpdGhvdXQgZmlsZW5hbWUgaGFuZGxlcnMuCisgICAgICA7OyBUaGVyZWZvcmUg
cmVtb3RlIG9yIHF1b3RlZCBmaWxlbmFtZXMgd291bGRuJ3Qgd29yay4KKyAgICAgIChzaG91bGQt
bm90IChmaWxlLXJlbW90ZS1wIGZpbHRlcikpCisgICAgICAoY2wtY2FsbGYgZmlsZS1uYW1lLXVu
cXVvdGUgZmlsdGVyKQorICAgICAgOzsgVGhlIFNlY2NvbXAgZmlsdGVyIGZpbGUgbXVzdCBoYXZl
IGEgZmlsZSBzaXplIHRoYXQncyBhIG11bHRpcGxlIG9mIHRoZQorICAgICAgOzsgc2l6ZSBvZiBz
dHJ1Y3Qgc29ja19maWx0ZXIsIHdoaWNoIGlzIDggb3IgMTYsIGJ1dCBuZXZlciA2LgorICAgICAg
KHNob3VsZC1ub3QKKyAgICAgICAoZXFsIChjYWxsLXByb2Nlc3MgZW1hY3MgbmlsIG5pbCBuaWwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tcXVpY2siICItLWJhdGNoIiAoY29uY2F0ICIt
LXNlY2NvbXA9IiBmaWx0ZXIpKQorICAgICAgICAgICAgMCkpKSkpCisKKzs7OyBlbWFjcy10ZXN0
cy5lbCBlbmRzIGhlcmUKLS0gCjIuMjkuMi43MjkuZzQ1ZGFmODc3N2QtZ29vZwoK
--0000000000004c40a805b6d54284--