[From nobody Tue Oct 20 08:41:05 2026
Received: (at submit) by bugs.debian.org; 17 Oct 2026 17:21:37 +0000
X-Spam-Checker-Version: SpamAssassin 4.0.1-bugs.debian.org_2005_01_02
 (2024-03-25) on buxtehude.debian.org
X-Spam-Level: 
X-Spam-Status: No, score=-15.1 required=4.0 tests=BAYES_00,
 BODY_INCLUDES_PACKAGE,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,
 DKIM_VALID_EF,FOURLA,FREEMAIL_FROM,HAS_PACKAGE,MD5_SHA1_SUM,
 MONOTONE_WORDS_2_15,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS
 autolearn=ham autolearn_force=no
 version=4.0.1-bugs.debian.org_2005_01_02
X-Spam-Bayes: score:0.0000 Tokens: new, 200; hammy, 150; neutral, 610; spammy,
 0. spammytokens: hammytokens:0.000-+--python3, 0.000-+--forky,
 0.000-+--cutf8, 0.000-+--CUTF8, 0.000-+--c.utf-8
Return-path: &lt;marciotex@gmail.com&gt;
Received: from mail-yw1-x112c.google.com ([2607:f8b0:4864:20::112c]:48497)
 by buxtehude.debian.org with esmtps
 (TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_128_GCM:128)
 (Exim 4.96) (envelope-from &lt;marciotex@gmail.com&gt;) id 1xI86D-000ege-1q
 for submit@bugs.debian.org; Sat, 17 Oct 2026 17:21:37 +0000
Received: by mail-yw1-x112c.google.com with SMTP id
 00721157ae682-8b0db268bd8so4816787b3.1
 for &lt;submit@bugs.debian.org&gt;; Sat, 17 Oct 2026 10:21:37 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1792257695; cv=none;
 d=google.com; s=arc-20260327;
 b=dKOJ39NhzxrPxKHtXPxL8V1jSg5HOAXsIQphBY9jq+Y4lzlI0jW52AnWT8ooRem0Fs
 xfsAGS1oLIhPWZhztZk0GGiPzwpfgIPZNqHy2dcA6yPM3PKGWjFxFfwKYV5RKCbaI8c3
 9EhfKQAQ1VzZOJPzVcqpsXnnCHf3DvcKKKpkbuVwSL60j2v8K6DjlS+m99YdHvuYgIll
 jelGJ0FYy3J9MLjn3Gb/poMfC+2L+xnaEVFh/Cfs6jFNO7UIwR5Pq3N+xsEijiuROxRb
 6nGQvLAJbsz3T6JOVorvCxi5tYOHfWmD4TJc24FQATxpuiaT25lNj0lCYzN+OreoE8Ni
 KBAA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;
 s=arc-20260327; 
 h=to:subject:message-id:date:from:mime-version:dkim-signature;
 bh=wBUwVUoUerXq8cQnhC3cmfL7gG5fRGHKbX8J5uGpXSE=;
 fh=lIR/7veID2U00tj1D35G+ANF85YwqTAbTuNH/WGncTs=;
 b=Rarxeb0KYT2yVGiE8vSM7Yq0cVBuQBHWEDUIC26xW9NLr3C8tp73nqoCUWruJ/VdWZ
 rg/KFgRSuQBg4yoqQRLpsadUfJo1mncF3DHGskmknU55BjZ00NgOcAbxc8GsqpPpYcb9
 HhEm3it8KNgxODxBdfXH5ECWMy6SmfHUs5c6QAMARlvQjMTfJzgYqRtT87/M1s8pM/L0
 QTk1EUI4Urj4bH7iFqdwD+jpf7E2OnN2E8CKmc6A5d7Ek1LI+pxDOzUpNu/wYynA4ULl
 NVkXAqkBe2RJ+8JqlQNcTUdJqVJLn4lnmvbeQfuhTGoveg85zmtW/bkSnYTi+BURFIyy
 oAGw==; darn=bugs.debian.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=20251104; t=1792257695; x=1792862495; darn=bugs.debian.org;
 h=content-type:to:subject:message-id:date:from:mime-version:from:to
 :cc:subject:date:message-id:reply-to:content-type;
 bh=wBUwVUoUerXq8cQnhC3cmfL7gG5fRGHKbX8J5uGpXSE=;
 b=ccnhEDVQ6vUNU9yxK20S9C+rltgWHQ6vHsURpbtMg8aALjb3/X7JVWLLYsebtDSlGk
 68EL/uuZHLDkGmR8Fx85YrZI+QiadqXkpu891H4I2XQjI1LNZFvur2ZNk1QmblRXv3eh
 swC9Wzv/cYS2Ts2+B1Dndyxsm/lSKsEqNIc+dbkHMB30QDPD/Y5eXa0syW388R22KNJu
 I+cJW0djcBK+5dVMjbZDjiR1vcyauFvGJ6L8qG39567FtIEJlxCUJURgi6JBLkai+Kmm
 HwsfwOjkHO6ElUGcPEtXnnoYB01is//XTcZTbMGnCr7TB1dhpFupw9lpIIMqwqjNDm5P
 oFyg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20260707; t=1792257695; x=1792862495;
 h=content-type:to:subject:message-id:date:from:mime-version:x-gm-gg
 :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to
 :content-type;
 bh=wBUwVUoUerXq8cQnhC3cmfL7gG5fRGHKbX8J5uGpXSE=;
 b=frouTcvXjuv3PRFHRz+cBnQOR7tec79dbeNpHie7tQ57F7hLx/20SNQ1im/BMZY3bR
 bPa9nOtRqOmmVVDxYxnd8eceOXxgi8f9UxYdj8fZWxOxwYn3BLvt53Ya8ldVD5dryYm2
 lacDWkm5ZKnPZH4I0DsvLC5h4Qxu76z6aF9GG8ezciQ1ZllBfsomBNf2t4XiNXWtoCZj
 IY7ZwuEZYy5J9pMfI+427fPt1AWLqgNYst9TjBTztAi2CJVFb30m8bDkIe6qlm8CfkMP
 xsWz9kwDhjM0hMgRTa7FaQEWqp1EnboKEzelA1MQc/OFapO+VlWvJ/4sBbKJVoMK1Mfr
 4R1g==
X-Gm-Message-State: AFq9FYI8iH4XZird/M7bV2eJ+KT4xr1oFFlEK435svCl1tWbGcY5PnO7
 wUFYoi8gmokzSeB4fGDM4ZYWZM11jX5sgJCznz4MtHEYRhINku18DlmpH6hyLTO+DV31KK57r1+
 TgdFeMyn/YjIjmb/dMbhSf8iGYWg4KzcSxQ1N1Ro=
X-Gm-Gg: AYBFou0kh+xgOBD/RnTWf0sqlm0A+ZaVEnrHDBp/mZf+D8w9pleGcjCUrVoKfIOIdDE
 /bsYOVKphTvNEbxxUhPa26hL4HXLEY+YEnghzY3MOoALhTdrdp/Q3eycd0eA2l3fkc3YRrONp6W
 rq1LTnXfDadrKORcyE1H8PmcdudTeAEVnqhAP89aDZUxv5stln80wud1LYb+D9vS5o8p59ziEZq
 UDNKOKUUWiX4FnQdTsj51cvJz3ZZEIXknIs+tYQLh9qEfdo7XT8ZKDLUiFzfbTmTyC50842MU4K
 HDR05pSa2Mg1yZopzeWP17ksSttEm21hRO/Bvkqn3g7TThN0LkPz9UxLoylZ/yN3A2jzExS6Duk
 p6DpQ2ZFR31m1SA==
X-Received: by 2002:a05:690c:e3e7:b0:8b0:e6f7:90dc with SMTP id
 00721157ae682-8b0f21c526cmr11812367b3.57.1792257694932; Sat, 17 Oct 2026
 10:21:34 -0700 (PDT)
MIME-Version: 1.0
From: Marcio Teixeira &lt;marciotex@gmail.com&gt;
Date: Sat, 17 Oct 2026 14:21:21 -0300
X-Gm-Features: AclHuK9hwqxDvD6Pvn9u72AZuVLIAhKT3Utf2u51RulmQHFYSbbsjtU7_wcbqIk
Message-ID: &lt;CAJmsMOjjcVCBN5_DvaLGQhHud-zt6SET7KrkbC0vLEgQBMxtPA@mail.gmail.com&gt;
Subject: gnome-keyring: disconnected Secret Service property reader can abort
 entire daemon
To: submit@bugs.debian.org
Content-Type: multipart/mixed; boundary=&quot;00000000000040dc81065e0c8366&quot;
Delivered-To: submit@bugs.debian.org

--00000000000040dc81065e0c8366
Content-Type: text/plain; charset=&quot;UTF-8&quot;

Package: gnome-keyring
Version: 48.0-1
Severity: normal
Tags: patch

DISCLOSURE OF AUTHORSHIP AND REVIEW STATUS

I am the user of the affected system and the contact for follow-up.

This report, the attached reproducer and the candidate patch were generated
by an AI assistant using Copilot SDK in VS Code. They have NOT been reviewed
by a human. Tests described below were executed by the agent. Authorization
to investigate or submit is not a claim of human technical review. Please
treat the explanation and patch as unreviewed candidates, not an endorsed
upstream fix. The submitter should retain this disclosure when forwarding.

Summary
-------

gnome-keyring-daemon can abort while handling a pending
org.freedesktop.DBus.Properties.Get request from a client which has already
disconnected. A missing per-client record propagates a NULL return without
the GError expected by GDBus, which asserts and terminates the daemon.

This was observed in one real private headless Secret Service instance,
and reproduced with the distribution /usr/bin/gnome-keyring-daemon using
only fictitious data and an isolated D-Bus. The exact client that triggered
the real incident is unknown. Normal polling tests did not reproduce the
failure; the attached test deliberately widens the race window.

Environment actually tested
---------------------------

Debian GNU/Linux forky/sid userspace with mixed testing/unstable
repositories, amd64, WSL2 kernel 6.18.54.1-microsoft-standard-WSL2.
This is not a claim of reproduction on a clean stable Debian installation.
gnome-keyring 48.0-1 (distribution binary)
libglib2.0-0t64 2.90.1-2
libgck-1-0 3.41.2-6+b1
libgcr-base-3-1 3.41.2-6+b1
libgcrypt20 1.12.4-2
dbus 1.16.2-8
systemd 262-1
python3-gi 3.58.0-1, gir1.2-glib-2.0 2.90.1-2

Observed failure
----------------

gkd_secret_service_get_pkcs11_session: assertion 'client' failed
secret_objects_lookup_gck_object_for_path: assertion 'session' failed
GLib-GIO:ERROR:../../../gio/gdbusconnection.c:4765:
invoke_get_property_in_idle_cb: assertion failed: (error != NULL)

The user service exited with signal 6/SIGABRT. Clients lost access to
credentials until the private daemon was started and unlocked again.
No credential disclosure or storage corruption was demonstrated. No real
keyring core dump was inspected or included. This is a service-availability
report, not a claim of remote code execution or a CVE assignment.

Reproduction (attach reproduce-disconnect.py)
-------------------------------------------

Requires /usr/bin/python3 with PyGObject/Gio, dbus-daemon, busctl and the
distribution gnome-keyring-daemon. No root privileges are required.

  /usr/bin/python3 -I -B reproduce-disconnect.py queued --count 3000 \
      --repeat 5 --expect-crash --daemon /usr/bin/gnome-keyring-daemon

The script creates a disposable HOME, storage, control directory and private
bus with no service activation. Core dumps are disabled. It pauses only
its own disposable foreground daemon, sends property reads through clients
which disconnect, resumes it and checks for the exact assertion signature.
All credentials are fictitious. It never uses the user's session bus.

The --expect-crash mode succeeds if at least one repetition observes the
specific SIGABRT signature. The race is nondeterministic: one run without
failure does not establish absence of the bug.

Controls:
  /usr/bin/python3 -I -B reproduce-disconnect.py persistent --count 1000 \
      --daemon /usr/bin/gnome-keyring-daemon
  /usr/bin/python3 -I -B reproduce-disconnect.py busctl --count 500 \
      --daemon /usr/bin/gnome-keyring-daemon

Expected: a disconnected client's pending request should fail or be
discarded without killing the Secret Service.
Actual: the complete daemon can abort.

Source-level explanation (AI analysis, not independently reviewed)
----------------------------------------------------------------

In upstream 48.0 daemon/dbus/gkd-secret-service.c,
service_name_owner_changed removes the disconnected client from the clients
table. A later gkd_secret_service_get_pkcs11_session lookup returns NULL.
In daemon/dbus/gkd-secret-objects.c,
secret_objects_lookup_gck_object_for_path returns early on the missing
session without populating error_out. A collection property getter passes
that NULL result to GLib, which requires an accompanying GError.

Candidate patch (attach 01-disconnected-client.patch)
----------------------------------------------------

The patch treats the missing client as a possible disconnect rather than
a critical assertion and explicitly returns a D-Bus error if the object
lookup cannot get a session, freeing the temporary path identifiers.
It prevents the reproduced daemon abort; it does not redesign client
lifetime handling or claim to solve all Secret Service races.

It applies to the official upstream 48.0 and 51.1 source tarballs.
Upstream archive SHA-256:
48.0: f20518c920e9ea3f9c9b8b44be8c50d8d7feecd0dd5624960f77bd2ca4fbeb9d
51.1: dfe7adc5876ef0670e7eba2907799bdbb8875ce58bb4208e1a52169bd16a47ca

The base 48.0 source was built with Meson 1.12.1, GCC 16.2, using:
  -Dssh-agent=false -Dpam=false -Dsystemd=disabled -Dselinux=disabled
  -Dmanpage=false -Ddebug-mode=false
Only daemon/gnome-keyring-daemon was built for use in isolated tests.
The unpatched rebuilt 48.0 also reproduced the failure.

Patched private build evidence, on the same host:
- 48.0: 10 x 5000 queued reads, no abort; a functional property read and
  collection Lock were checked after every repetition.
- 51.1: 5 x 5000 queued reads, same result. This was an upstream private
  build, not Debian 51.1-3 package testing.
- Eight upstream daemon/D-Bus suites and the secure-memory test executable
  passed in an isolated bus on the patched 48.0 test build, with
  debug-mode=true required for the upstream test hooks.

These are bounded regression results, not exhaustive assurance or an
estimate of daily crash frequency. The private build was subsequently
removed from active use in favour of the distribution binary to avoid
maintaining a downstream daemon. Its patch is supplied for maintainer review.

Related public report (not proof of identical local trigger):
https://github.com/jkoestinger/omarchy-vpn/issues/42

No identical Debian BTS entry was identified in a limited title/web search.
That search is not exhaustive; please merge or redirect if this is a duplicate.
Suggested severity is normal, subject to maintainer triage.


-- 
Marcio Teixeira

--00000000000040dc81065e0c8366
Content-Type: application/octet-stream; name=&quot;01-disconnected-client.patch&quot;
Content-Disposition: attachment; filename=&quot;01-disconnected-client.patch&quot;
Content-Transfer-Encoding: base64
Content-ID: &lt;f_mvcnxrmi0&gt;
X-Attachment-Id: f_mvcnxrmi0

LS0tIGEvZGFlbW9uL2RidXMvZ2tkLXNlY3JldC1zZXJ2aWNlLmMKKysrIGIvZGFlbW9uL2RidXMv
Z2tkLXNlY3JldC1zZXJ2aWNlLmMKQEAgLTEyNDksNyArMTI0OSw4IEBACiAJZ19yZXR1cm5fdmFs
X2lmX2ZhaWwgKGNhbGxlciwgTlVMTCk7CiAKIAljbGllbnQgPSBnX2hhc2hfdGFibGVfbG9va3Vw
IChzZWxmLT5jbGllbnRzLCBjYWxsZXIpOwotCWdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjbGllbnQs
IE5VTEwpOworCWlmIChjbGllbnQgPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKiBPcGVu
IGEgbmV3IHNlc3Npb24gaWYgbmVjZXNzYXJ5ICovCiAJaWYgKCFjbGllbnQtPnBrY3MxMV9zZXNz
aW9uKSB7Ci0tLSBhL2RhZW1vbi9kYnVzL2drZC1zZWNyZXQtb2JqZWN0cy5jCisrKyBiL2RhZW1v
bi9kYnVzL2drZC1zZWNyZXQtb2JqZWN0cy5jCkBAIC00MzEsNyArNDMxLDE0IEBACiAKIAkvKiBU
aGUgc2Vzc2lvbiB3ZSdyZSB1c2luZyB0byBhY2Nlc3MgdGhlIG9iamVjdCAqLwogCXNlc3Npb24g
PSBna2Rfc2VjcmV0X3NlcnZpY2VfZ2V0X3BrY3MxMV9zZXNzaW9uIChzZWxmLT5zZXJ2aWNlLCBz
ZW5kZXIpOwotCWdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzZXNzaW9uLCBGQUxTRSk7CisJaWYgKHNl
c3Npb24gPT0gTlVMTCkgeworCQlnX2ZyZWUgKGNfaWRlbnQpOworCQlnX2ZyZWUgKGlfaWRlbnQp
OworCQlnX3NldF9lcnJvcl9saXRlcmFsIChlcnJvcl9vdXQsIEdfREJVU19FUlJPUiwKKwkJICAg
ICAgICAgICAgICAgICAgICAgR19EQlVTX0VSUk9SX0ZBSUxFRCwKKwkJICAgICAgICAgICAgICAg
ICAgICAgIlNlY3JldCBTZXJ2aWNlIGNsaWVudCBzZXNzaW9uIGlzIHVuYXZhaWxhYmxlIik7CisJ
CXJldHVybiBOVUxMOworCX0KIAogCWlmIChpX2lkZW50KSB7CiAJCWdja19idWlsZGVyX2FkZF91
bG9uZyAoJmJ1aWxkZXIsIENLQV9DTEFTUywgQ0tPX1NFQ1JFVF9LRVkpOwo=
--00000000000040dc81065e0c8366
Content-Type: text/x-python; charset=&quot;US-ASCII&quot;; name=&quot;reproduce-disconnect.py&quot;
Content-Disposition: attachment; filename=&quot;reproduce-disconnect.py&quot;
Content-Transfer-Encoding: base64
Content-ID: &lt;f_mvcnxrn11&gt;
X-Attachment-Id: f_mvcnxrn11

IiIiQUktZ2VuZXJhdGVkLCBub3QgaHVtYW4tcmV2aWV3ZWQuIERpc3Bvc2FibGUgU2VjcmV0IFNl
cnZpY2UgcmFjZSByZXByb2R1Y2VyLgoKVXNlcyBvbmx5IGZpY3RpdGlvdXMgY3JlZGVudGlhbHMu
IE5ldmVyIGNvbm5lY3RzIHRvIHRoZSB1c2VyJ3Mgc2Vzc2lvbiBidXMuCk5vIGNsYWltIG9mIGFu
IG9mZmljaWFsbHkgcmV2aWV3ZWQgZml4IG9yIGV4aGF1c3RpdmUgcmVncmVzc2lvbiBjb3ZlcmFn
ZS4KIiIiCgppbXBvcnQgYXJncGFyc2UKaW1wb3J0IGpzb24KaW1wb3J0IHJlc291cmNlCmltcG9y
dCBzaWduYWwKaW1wb3J0IHN1YnByb2Nlc3MKaW1wb3J0IHRlbXBmaWxlCmltcG9ydCB0aW1lCmZy
b20gcGF0aGxpYiBpbXBvcnQgUGF0aAoKaW1wb3J0IGdpCgpnaS5yZXF1aXJlX3ZlcnNpb24oIkdp
byIsICIyLjAiKQpmcm9tIGdpLnJlcG9zaXRvcnkgaW1wb3J0IEdpbywgR0xpYgoKClNFUlZJQ0Ug
PSAib3JnLmZyZWVkZXNrdG9wLnNlY3JldHMiCkNPTExFQ1RJT04gPSAiL29yZy9mcmVlZGVza3Rv
cC9zZWNyZXRzL2NvbGxlY3Rpb24vbG9naW4iCkZMQUdTID0gKAogICAgR2lvLkRCdXNDb25uZWN0
aW9uRmxhZ3MuQVVUSEVOVElDQVRJT05fQ0xJRU5UCiAgICB8IEdpby5EQnVzQ29ubmVjdGlvbkZs
YWdzLk1FU1NBR0VfQlVTX0NPTk5FQ1RJT04KKQoKCmRlZiBjb25uZWN0KGFkZHJlc3MpOgogICAg
cmV0dXJuIEdpby5EQnVzQ29ubmVjdGlvbi5uZXdfZm9yX2FkZHJlc3Nfc3luYyhhZGRyZXNzLCBG
TEFHUywgTm9uZSwgTm9uZSkKCgpkZWYgcnVuKG1vZGUsIGNvdW50LCBiaW5hcnkpOgogICAgcmVz
b3VyY2Uuc2V0cmxpbWl0KHJlc291cmNlLlJMSU1JVF9DT1JFLCAoMCwgMCkpCiAgICB3aXRoIHRl
bXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeShwcmVmaXg9ImNvZnJlLXJlcHJvLSIpIGFzIHRlbXBv
cmFyeToKICAgICAgICByb290ID0gUGF0aCh0ZW1wb3JhcnkpCiAgICAgICAgZm9yIGRpcmVjdG9y
eSBpbiAoImhvbWUiLCAiZGF0YSIsICJydW50aW1lIiwgImNvbnRyb2wiKToKICAgICAgICAgICAg
KHJvb3QgLyBkaXJlY3RvcnkpLm1rZGlyKG1vZGU9MG83MDApCiAgICAgICAgYWRkcmVzcyA9IGYi
dW5peDpwYXRoPXtyb290fS9idXMiCiAgICAgICAgY29uZmlnID0gcm9vdCAvICJidXMuY29uZiIK
ICAgICAgICBjb25maWcud3JpdGVfdGV4dCgKICAgICAgICAgICAgIjxidXNjb25maWc+PHR5cGU+
c2Vzc2lvbjwvdHlwZT4iCiAgICAgICAgICAgIGYiPGxpc3Rlbj57YWRkcmVzc308L2xpc3Rlbj4i
CiAgICAgICAgICAgICc8YXV0aD5FWFRFUk5BTDwvYXV0aD48cG9saWN5IGNvbnRleHQ9ImRlZmF1
bHQiPicKICAgICAgICAgICAgJzxhbGxvdyBzZW5kX2Rlc3RpbmF0aW9uPSIqIi8+PGFsbG93IHJl
Y2VpdmVfc2VuZGVyPSIqIi8+JwogICAgICAgICAgICAnPGFsbG93IG93bj0iKiIvPjwvcG9saWN5
PjwvYnVzY29uZmlnPicKICAgICAgICApCiAgICAgICAgZW52ID0gewogICAgICAgICAgICAiUEFU
SCI6ICIvdXNyL2JpbjovYmluIiwKICAgICAgICAgICAgIkhPTUUiOiBzdHIocm9vdCAvICJob21l
IiksCiAgICAgICAgICAgICJYREdfREFUQV9IT01FIjogc3RyKHJvb3QgLyAiZGF0YSIpLAogICAg
ICAgICAgICAiWERHX1JVTlRJTUVfRElSIjogc3RyKHJvb3QgLyAicnVudGltZSIpLAogICAgICAg
ICAgICAiREJVU19TRVNTSU9OX0JVU19BRERSRVNTIjogYWRkcmVzcywKICAgICAgICAgICAgIkxB
TkciOiAiQy5VVEYtOCIsCiAgICAgICAgfQogICAgICAgIGJ1cyA9IE5vbmUKICAgICAgICBkYWVt
b24gPSBOb25lCiAgICAgICAgb2JzZXJ2ZXIgPSBOb25lCiAgICAgICAgd2l0aCAocm9vdCAvICJk
YWVtb24ubG9nIikub3BlbigidysiKSBhcyBsb2c6CiAgICAgICAgICAgIHRyeToKICAgICAgICAg
ICAgICAgIGJ1cyA9IHN1YnByb2Nlc3MuUG9wZW4oCiAgICAgICAgICAgICAgICAgICAgWyIvdXNy
L2Jpbi9kYnVzLWRhZW1vbiIsICItLW5vZm9yayIsICItLW5vcGlkZmlsZSIsIGYiLS1jb25maWct
ZmlsZT17Y29uZmlnfSJdLAogICAgICAgICAgICAgICAgICAgIGVudj1lbnYsIHN0ZG91dD1zdWJw
cm9jZXNzLkRFVk5VTEwsIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwsCiAgICAgICAgICAgICAg
ICApCiAgICAgICAgICAgICAgICBmb3IgXyBpbiByYW5nZSgxMDApOgogICAgICAgICAgICAgICAg
ICAgIGlmIChyb290IC8gImJ1cyIpLmV4aXN0cygpOgogICAgICAgICAgICAgICAgICAgICAgICBi
cmVhawogICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMikKICAgICAgICAgICAgICAg
IGRhZW1vbiA9IHN1YnByb2Nlc3MuUG9wZW4oCiAgICAgICAgICAgICAgICAgICAgWwogICAgICAg
ICAgICAgICAgICAgICAgICBiaW5hcnksICItLWZvcmVncm91bmQiLCAiLS11bmxvY2siLAogICAg
ICAgICAgICAgICAgICAgICAgICAiLS1jb21wb25lbnRzPXNlY3JldHMiLCBmIi0tY29udHJvbC1k
aXJlY3Rvcnk9e3Jvb3R9L2NvbnRyb2wiLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAg
ICAgICAgICAgICAgZW52PWVudiwgc3RkaW49c3VicHJvY2Vzcy5QSVBFLCBzdGRvdXQ9bG9nLCBz
dGRlcnI9bG9nLAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgZGFlbW9uLnN0ZGlu
LndyaXRlKGIic2VuaGEtZmljdGljaWEtZGVzY2FydGF2ZWwtMDQ2XG4iKQogICAgICAgICAgICAg
ICAgZGFlbW9uLnN0ZGluLmNsb3NlKCkKICAgICAgICAgICAgICAgIG9ic2VydmVyID0gY29ubmVj
dChhZGRyZXNzKQogICAgICAgICAgICAgICAgZm9yIF8gaW4gcmFuZ2UoMTAwKToKICAgICAgICAg
ICAgICAgICAgICByZXN1bHQgPSBvYnNlcnZlci5jYWxsX3N5bmMoCiAgICAgICAgICAgICAgICAg
ICAgICAgICJvcmcuZnJlZWRlc2t0b3AuREJ1cyIsICIvb3JnL2ZyZWVkZXNrdG9wL0RCdXMiLAog
ICAgICAgICAgICAgICAgICAgICAgICAib3JnLmZyZWVkZXNrdG9wLkRCdXMiLCAiTmFtZUhhc093
bmVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgR0xpYi5WYXJpYW50KCIocykiLCAoU0VSVklD
RSwpKSwgTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgR2lvLkRCdXNDYWxsRmxhZ3MuTk9O
RSwgMTAwMCwgTm9uZSwKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAg
aWYgcmVzdWx0LnVucGFjaygpWzBdOgogICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAg
ICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMikKICAgICAgICAgICAgICAgIGFsaWFzID0g
b2JzZXJ2ZXIuY2FsbF9zeW5jKAogICAgICAgICAgICAgICAgICAgIFNFUlZJQ0UsICIvb3JnL2Zy
ZWVkZXNrdG9wL3NlY3JldHMiLAogICAgICAgICAgICAgICAgICAgICJvcmcuZnJlZWRlc2t0b3Au
U2VjcmV0LlNlcnZpY2UiLCAiUmVhZEFsaWFzIiwKICAgICAgICAgICAgICAgICAgICBHTGliLlZh
cmlhbnQoIihzKSIsICgibG9naW4iLCkpLCBOb25lLAogICAgICAgICAgICAgICAgICAgIEdpby5E
QnVzQ2FsbEZsYWdzLk5PTkUsIDEwMDAsIE5vbmUsCiAgICAgICAgICAgICAgICApLnVucGFjaygp
WzBdCiAgICAgICAgICAgICAgICBpZiBhbGlhcyAhPSBDT0xMRUNUSU9OOgogICAgICAgICAgICAg
ICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihmIlVuZXhwZWN0ZWQgZGlzcG9zYWJsZSBhbGlhczog
e2FsaWFzfSIpCiAgICAgICAgICAgICAgICBlcnJvcnMgPSAwCiAgICAgICAgICAgICAgICBhdHRl
bXB0cyA9IDAKICAgICAgICAgICAgICAgIHBhdXNlZCA9IEZhbHNlCiAgICAgICAgICAgICAgICBm
b3IgaW5kZXggaW4gcmFuZ2UoY291bnQpOgogICAgICAgICAgICAgICAgICAgIGlmIGRhZW1vbi5w
b2xsKCkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAg
ICAgICAgICAgICAgYXR0ZW1wdHMgKz0gMQogICAgICAgICAgICAgICAgICAgIGlmIG1vZGUgPT0g
InF1ZXVlZCIgYW5kIGluZGV4ICUgNTAgPT0gMDoKICAgICAgICAgICAgICAgICAgICAgICAgZGFl
bW9uLnNlbmRfc2lnbmFsKHNpZ25hbC5TSUdTVE9QKQogICAgICAgICAgICAgICAgICAgICAgICBw
YXVzZWQgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgaWYgbW9kZSA9PSAiYnVzY3RsIjoKICAg
ICAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkID0gc3VicHJvY2Vzcy5ydW4oCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi91
c3IvYmluL2J1c2N0bCIsICItLXVzZXIiLCAiLS1hdXRvLXN0YXJ0PW5vIiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZ2V0LXByb3BlcnR5IiwgU0VSVklDRSwgQ09MTEVDVElPTiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3JnLmZyZWVkZXNrdG9wLlNlY3JldC5D
b2xsZWN0aW9uIiwgIkxvY2tlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudiwgc3Rkb3V0PXN1YnByb2Nlc3MuREVWTlVM
TCwgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRpbWVvdXQ9MywKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAg
ICAgICBlcnJvcnMgKz0gY29tcGxldGVkLnJldHVybmNvZGUgIT0gMAogICAgICAgICAgICAgICAg
ICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24gPSBjb25uZWN0KGFk
ZHJlc3MpIGlmIG1vZGUgIT0gInBlcnNpc3RlbnQiIGVsc2Ugb2JzZXJ2ZXIKICAgICAgICAgICAg
ICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbW9kZSBpbiAo
ImRpc2Nvbm5lY3QiLCAicXVldWVkIik6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWVzc2FnZSA9IEdpby5EQnVzTWVzc2FnZS5uZXdfbWV0aG9kX2NhbGwoCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNFUlZJQ0UsIENPTExFQ1RJT04sICJvcmcuZnJlZWRlc2t0
b3AuREJ1cy5Qcm9wZXJ0aWVzIiwgIkdldCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS5zZXRfYm9keShHTGli
LlZhcmlhbnQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoc3MpIiwgKCJv
cmcuZnJlZWRlc2t0b3AuU2VjcmV0LkNvbGxlY3Rpb24iLCAiTG9ja2VkIikKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bm5lY3Rpb24uc2VuZF9tZXNzYWdlKG1lc3NhZ2UsIEdpby5EQnVzU2VuZE1lc3NhZ2VGbGFncy5O
T05FKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uZmx1c2hfc3lu
YyhOb25lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLmNhbGxfc3luYygKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU0VSVklDRSwgQ09MTEVDVElPTiwgIm9yZy5mcmVlZGVza3RvcC5E
QnVzLlByb3BlcnRpZXMiLCAiR2V0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpYi5WYXJpYW50KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IihzcykiLCAoIm9yZy5mcmVlZGVza3RvcC5TZWNyZXQuQ29sbGVjdGlvbiIsICJMb2NrZWQiKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOb25lLCBHaW8uREJ1c0NhbGxGbGFncy5OT05FLCAxMDAwLCBOb25l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0IEdMaWIuRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMg
Kz0gMQogICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgY29ubmVjdGlvbiBpcyBub3Qgb2JzZXJ2ZXI6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29ubmVjdGlvbi5jbG9zZV9zeW5jKE5vbmUpCiAgICAgICAgICAgICAg
ICAgICAgaWYgbW9kZSA9PSAicXVldWVkIiBhbmQgaW5kZXggJSA1MCA9PSA0OToKICAgICAgICAg
ICAgICAgICAgICAgICAgZGFlbW9uLnNlbmRfc2lnbmFsKHNpZ25hbC5TSUdDT05UKQogICAgICAg
ICAgICAgICAgICAgICAgICBwYXVzZWQgPSBGYWxzZQogICAgICAgICAgICAgICAgICAgICAgICB0
aW1lLnNsZWVwKDAuMDIpCiAgICAgICAgICAgICAgICAgICAgaWYgaW5kZXggJSA1MCA9PSAwOgog
ICAgICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDAxKQogICAgICAgICAgICAgICAg
aWYgcGF1c2VkIGFuZCBkYWVtb24ucG9sbCgpIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAg
ZGFlbW9uLnNlbmRfc2lnbmFsKHNpZ25hbC5TSUdDT05UKQogICAgICAgICAgICAgICAgdGltZS5z
bGVlcCgwLjIpCiAgICAgICAgICAgICAgICBsb2cuZmx1c2goKQogICAgICAgICAgICAgICAgbG9n
LnNlZWsoMCkKICAgICAgICAgICAgICAgIHRleHQgPSBsb2cucmVhZCgpCiAgICAgICAgICAgICAg
ICBoZWFsdGh5ID0gRmFsc2UKICAgICAgICAgICAgICAgIGxvY2tlZF9hZnRlciA9IEZhbHNlCiAg
ICAgICAgICAgICAgICBpZiBkYWVtb24ucG9sbCgpIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAg
ICAgaGVhbHRoeSA9IG9ic2VydmVyLmNhbGxfc3luYygKICAgICAgICAgICAgICAgICAgICAgICAg
U0VSVklDRSwgQ09MTEVDVElPTiwgIm9yZy5mcmVlZGVza3RvcC5EQnVzLlByb3BlcnRpZXMiLCAi
R2V0IiwKICAgICAgICAgICAgICAgICAgICAgICAgR0xpYi5WYXJpYW50KCIoc3MpIiwgKCJvcmcu
ZnJlZWRlc2t0b3AuU2VjcmV0LkNvbGxlY3Rpb24iLCAiTG9ja2VkIikpLAogICAgICAgICAgICAg
ICAgICAgICAgICBOb25lLCBHaW8uREJ1c0NhbGxGbGFncy5OT05FLCAxMDAwLCBOb25lLAogICAg
ICAgICAgICAgICAgICAgICkudW5wYWNrKClbMF0gaXMgRmFsc2UKICAgICAgICAgICAgICAgICAg
ICBvYnNlcnZlci5jYWxsX3N5bmMoCiAgICAgICAgICAgICAgICAgICAgICAgIFNFUlZJQ0UsICIv
b3JnL2ZyZWVkZXNrdG9wL3NlY3JldHMiLCAib3JnLmZyZWVkZXNrdG9wLlNlY3JldC5TZXJ2aWNl
IiwKICAgICAgICAgICAgICAgICAgICAgICAgIkxvY2siLCBHTGliLlZhcmlhbnQoIihhbykiLCAo
W0NPTExFQ1RJT05dLCkpLAogICAgICAgICAgICAgICAgICAgICAgICBOb25lLCBHaW8uREJ1c0Nh
bGxGbGFncy5OT05FLCAxMDAwLCBOb25lLAogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAg
ICAgICAgICAgICBsb2NrZWRfYWZ0ZXIgPSBvYnNlcnZlci5jYWxsX3N5bmMoCiAgICAgICAgICAg
ICAgICAgICAgICAgIFNFUlZJQ0UsIENPTExFQ1RJT04sICJvcmcuZnJlZWRlc2t0b3AuREJ1cy5Q
cm9wZXJ0aWVzIiwgIkdldCIsCiAgICAgICAgICAgICAgICAgICAgICAgIEdMaWIuVmFyaWFudCgi
KHNzKSIsICgib3JnLmZyZWVkZXNrdG9wLlNlY3JldC5Db2xsZWN0aW9uIiwgIkxvY2tlZCIpKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgR2lvLkRCdXNDYWxsRmxhZ3MuTk9ORSwgMTAw
MCwgTm9uZSwKICAgICAgICAgICAgICAgICAgICApLnVucGFjaygpWzBdIGlzIFRydWUKICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IHsKICAgICAgICAgICAgICAgICAgICAibW9kZSI6IG1vZGUsICJh
dHRlbXB0cyI6IGF0dGVtcHRzLCAiZXJyb3JzIjogZXJyb3JzLAogICAgICAgICAgICAgICAgICAg
ICJkYWVtb25fZXhpdCI6IGRhZW1vbi5wb2xsKCksCiAgICAgICAgICAgICAgICAgICAgIm1pc3Np
bmdfY2xpZW50IjogImFzc2VydGlvbiAnY2xpZW50JyBmYWlsZWQiIGluIHRleHQsCiAgICAgICAg
ICAgICAgICAgICAgIm1pc3Npbmdfc2Vzc2lvbiI6ICJhc3NlcnRpb24gJ3Nlc3Npb24nIGZhaWxl
ZCIgaW4gdGV4dCwKICAgICAgICAgICAgICAgICAgICAiZ2xpYl9hc3NlcnRpb24iOiAiZXJyb3Ig
IT0gTlVMTCIgaW4gdGV4dCwKICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb25hbF9hZnRlciI6
IGhlYWx0aHksCiAgICAgICAgICAgICAgICAgICAgImxvY2tlZF9hZnRlciI6IGxvY2tlZF9hZnRl
ciwKICAgICAgICAgICAgICAgICAgICAibG9nX3RhaWwiOiB0ZXh0Wy0yMjAwOl0gaWYgZGFlbW9u
LnBvbGwoKSBpcyBub3QgTm9uZSBlbHNlICIiLAogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgcHJpbnQoanNvbi5kdW1wcyhyZXN1bHQpLCBmbHVzaD1UcnVlKQogICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdAogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgaWYg
b2JzZXJ2ZXIgaXMgbm90IE5vbmUgYW5kIG5vdCBvYnNlcnZlci5pc19jbG9zZWQoKToKICAgICAg
ICAgICAgICAgICAgICBvYnNlcnZlci5jbG9zZV9zeW5jKE5vbmUpCiAgICAgICAgICAgICAgICBm
b3IgcHJvY2VzcyBpbiAoZGFlbW9uLCBidXMpOgogICAgICAgICAgICAgICAgICAgIGlmIHByb2Nl
c3MgaXMgbm90IE5vbmUgYW5kIHByb2Nlc3MucG9sbCgpIGlzIE5vbmU6CiAgICAgICAgICAgICAg
ICAgICAgICAgIHByb2Nlc3Muc2VuZF9zaWduYWwoc2lnbmFsLlNJR0NPTlQpCiAgICAgICAgICAg
ICAgICAgICAgICAgIHByb2Nlc3Muc2VuZF9zaWduYWwoc2lnbmFsLlNJR1RFUk0pCiAgICAgICAg
ICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Mu
d2FpdCh0aW1lb3V0PTMpCiAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNz
LlRpbWVvdXRFeHBpcmVkOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5raWxs
KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Mud2FpdCh0aW1lb3V0PTMpCgoK
aWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50
UGFyc2VyKCkKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIm1vZGUiLCBjaG9pY2VzPSgicGVyc2lz
dGVudCIsICJzeW5jIiwgImJ1c2N0bCIsICJkaXNjb25uZWN0IiwgInF1ZXVlZCIpKQogICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgiLS1jb3VudCIsIHR5cGU9aW50LCBkZWZhdWx0PTUwMCkKICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoIi0tZGFlbW9uIiwgZGVmYXVsdD0iL3Vzci9iaW4vZ25vbWUta2V5
cmluZy1kYWVtb24iKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1yZXBlYXQiLCB0eXBlPWlu
dCwgZGVmYXVsdD0xKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1leHBlY3QtY3Jhc2giLCBh
Y3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJDb250cm9s
ZSBuZWdhdGl2bzogZXhpZ2UgcGVsbyBtZW5vcyB1bSBhYm9ydG8gY29tIGEgYXNzaW5hdHVyYSBj
b25oZWNpZGEiKQogICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKICAgIGlmIGFyZ3MuY291
bnQgPCAxIG9yIGFyZ3MucmVwZWF0IDwgMSBvciBub3QgUGF0aChhcmdzLmRhZW1vbikuaXNfYWJz
b2x1dGUoKToKICAgICAgICBwYXJzZXIuZXJyb3IoImNvdW50L3JlcGVhdCBkZXZlbSBzZXIgcG9z
aXRpdm9zIGUgZGFlbW9uIGRldmUgc2VyIGFic29sdXRvIikKICAgIHJlc3VsdHMgPSBbcnVuKGFy
Z3MubW9kZSwgYXJncy5jb3VudCwgYXJncy5kYWVtb24pIGZvciBfIGluIHJhbmdlKGFyZ3MucmVw
ZWF0KV0KICAgIGlmIGFyZ3MuZXhwZWN0X2NyYXNoOgogICAgICAgIHBhc3NlZCA9IGFueShyZXN1
bHRbImRhZW1vbl9leGl0Il0gPT0gLXNpZ25hbC5TSUdBQlJUIGFuZCByZXN1bHRbIm1pc3Npbmdf
Y2xpZW50Il0KICAgICAgICAgICAgICAgICAgICAgYW5kIHJlc3VsdFsibWlzc2luZ19zZXNzaW9u
Il0gYW5kIHJlc3VsdFsiZ2xpYl9hc3NlcnRpb24iXSBmb3IgcmVzdWx0IGluIHJlc3VsdHMpCiAg
ICBlbHNlOgogICAgICAgIHBhc3NlZCA9IGFsbChyZXN1bHRbImRhZW1vbl9leGl0Il0gaXMgTm9u
ZSBhbmQgcmVzdWx0WyJmdW5jdGlvbmFsX2FmdGVyIl0KICAgICAgICAgICAgICAgICAgICAgYW5k
IHJlc3VsdFsibG9ja2VkX2FmdGVyIl0gYW5kIHJlc3VsdFsiZXJyb3JzIl0gPT0gMAogICAgICAg
ICAgICAgICAgICAgICBhbmQgbm90IHJlc3VsdFsiZ2xpYl9hc3NlcnRpb24iXSBhbmQgbm90IHJl
c3VsdFsibWlzc2luZ19zZXNzaW9uIl0KICAgICAgICAgICAgICAgICAgICAgYW5kIG5vdCByZXN1
bHRbIm1pc3NpbmdfY2xpZW50Il0gZm9yIHJlc3VsdCBpbiByZXN1bHRzKQogICAgcmFpc2UgU3lz
dGVtRXhpdCgwIGlmIHBhc3NlZCBlbHNlIDEpCg==
--00000000000040dc81065e0c8366--
]