From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id GBepLETYFmA0RgAA0tVLHw (envelope-from ) for ; Sun, 31 Jan 2021 16:18:12 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0 with LMTPS id oNikKETYFmBrFQAA1q6Kng (envelope-from ) for ; Sun, 31 Jan 2021 16:18:12 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 6219F9403A9 for ; Sun, 31 Jan 2021 16:18:11 +0000 (UTC) Received: from localhost ([::1]:36528 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l6FQQ-0000rk-CD for larch@yhetil.org; Sun, 31 Jan 2021 11:18:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:36522) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l6FQI-0000rF-P8 for guix-patches@gnu.org; Sun, 31 Jan 2021 11:18:02 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:46251) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1l6FQI-00015U-He for guix-patches@gnu.org; Sun, 31 Jan 2021 11:18:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1l6FQI-0007er-DG for guix-patches@gnu.org; Sun, 31 Jan 2021 11:18:02 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#46214] [PATCH] DRAFT: narinfo hooks for =?UTF-8?Q?=E2=80=98guix_?= =?UTF-8?Q?publish=E2=80=99?= Resent-From: Maxime Devos Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sun, 31 Jan 2021 16:18:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 46214 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 46214@debbugs.gnu.org X-Debbugs-Original-To: guix-patches@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.161210985229397 (code B ref -1); Sun, 31 Jan 2021 16:18:02 +0000 Received: (at submit) by debbugs.gnu.org; 31 Jan 2021 16:17:32 +0000 Received: from localhost ([127.0.0.1]:57797 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l6FPl-0007e2-47 for submit@debbugs.gnu.org; Sun, 31 Jan 2021 11:17:32 -0500 Received: from lists.gnu.org ([209.51.188.17]:58874) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l6FPg-0007ds-Dy for submit@debbugs.gnu.org; Sun, 31 Jan 2021 11:17:27 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:36502) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l6FPd-0000jH-As for guix-patches@gnu.org; Sun, 31 Jan 2021 11:17:24 -0500 Received: from andre.telenet-ops.be ([2a02:1800:120:4::f00:15]:51592) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1l6FPZ-0000uE-Os for guix-patches@gnu.org; Sun, 31 Jan 2021 11:17:21 -0500 Received: from ptr-bvsjgyjmffd7q9timvx.18120a2.ip6.access.telenet.be ([IPv6:2a02:1811:8c09:9d00:aaf1:9810:a0b8:a55d]) by andre.telenet-ops.be with bizsmtp id PUHD2400a0mfAB401UHD76; Sun, 31 Jan 2021 17:17:13 +0100 Message-ID: <20432b68d12d95a23ae3713e8a904bf9dfc003e1.camel@telenet.be> From: Maxime Devos Content-Type: multipart/signed; micalg="pgp-sha256"; protocol="application/pgp-signature"; boundary="=-1HWk7ZwBvvXotGhxCZ13" Date: Sun, 31 Jan 2021 12:11:25 +0100 MIME-Version: 1.0 User-Agent: Evolution 3.34.2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telenet.be; s=r21; t=1612109833; bh=/iyGDFPao4bvHjvMQd3UKbpB7CkBWp6+FPu22z/xZ6c=; h=Subject:From:To:Date; b=RfXNoi/TlOrTsujgwutHUUTtE+HOZufHcx18NEUElTRtyKPg8esGBGqkkPOS3l6+E 4WIo8nKW8y1mlWtcCAj9M97wtAJoe36nnn6biHg4eD2Tk7konTxoxdj/A4/67fsfeP CThVkk6ucTZXf3bvo+ymflPxQWIuVEklSlg3TTYSXiLqgNvRIYKtcBjg0Z3+CeaHDM EyAqfcz7m2go90+hrbyGJJ4JyZpJe6taCCYfv8loOC9mi0F751leB+3lcK9U5Pxvv+ XO2onOns3JPSBZxhKLrgd/kIavv0mjILB405/jGpzO0F0Gs41656bG3hniIuk4xIFo nbsndLM9/Hbsg== Received-SPF: pass client-ip=2a02:1800:120:4::f00:15; envelope-from=maximedevos@telenet.be; helo=andre.telenet-ops.be X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_03_06=1.592, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: "Guix-patches" X-Migadu-Flow: FLOW_IN X-Migadu-Spam-Score: -3.26 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=telenet.be header.s=r21 header.b="RfXNoi/T"; dmarc=fail reason="SPF not aligned (relaxed)" header.from=telenet.be (policy=none); spf=pass (aspmx1.migadu.com: domain of guix-patches-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-patches-bounces@gnu.org X-Migadu-Queue-Id: 6219F9403A9 X-Spam-Score: -3.26 X-Migadu-Scanner: scn1.migadu.com X-TUID: z81OEm2yGj7H --=-1HWk7ZwBvvXotGhxCZ13 Content-Type: multipart/mixed; boundary="=-oag5wlauIxXLLMm5uOXW" --=-oag5wlauIxXLLMm5uOXW Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hello Guix! I've a proposal to make =E2=80=98guix publish=E2=80=99 somewhat extensible. The draft patch allows for passing a list of =E2=80=98hooks=E2=80=99 to gui= x publish, with "guix publish --hooks=3DFILE-WITH-HOOKS.scm --hooks=3DMORE-HOOKS.go". "guix publish" then will consult this list of hooks at some points. I've defined a =E2=80=98narinfo-hook=E2=80=99, which allows adding extra key value pairs to the generated narinfos. See the last patch that adds a =E2=80=98hook.scm=E2=80=99 file for a silly example that includes a random number and some arbitrary strings. A TODO for a future revision of the patch, is modifying =E2=80=98guix-publish-service-type=E2=80=99 to allow passing a list of hooks (as gexps). The use case I had in mind: this could be used for Guix+IPFS and Guix+GNUnet integration (at least on the "guix publish" side), by implementing a hook that inserts the store item into IPFS and GNUnet respectively, and add an appropriate IPFS and GNUnet URI. (I'll look into appropriate "guix substitute" hooks later.) Guix+IPFS and Guix+GNUnet integrations could of course use a forked guix (until the integration is merged upstream when it is in a good state), but a hook system seems more practical for experimentation to me. (Also, if hypothetically, in the future "guix publish" supports, say, IPFS, GNUnet, BitTorrent and Dat, then using the approach of wip-ipfs-substitutes, there would be four keyword arguments that need to be passed everywhere. This patch only passes a single #:hooks argument.) Also a question for guix-devel: the wip-ipfs-substitutes patch adds the "IPFS: etcetera" line *after* the signed part, while this patch only allows for addings key-value pairs that will be signed. Would it be problematic for the "IPFS: etcetera" or "GNUnet: etcetera" line to be signed? If this proposal seems OK to guix-devel, I'll write up some documentation, tests and changes to guix-publish-service-type. (Patch can also be found as signed tag wip-publish-narinfo-hook0 at https://notabug.org/mdevos/guix-gnunet.) Greetings, Maxime --=20 Maxime Devos PGP Key: C1F3 3EE2 0C52 8FDB 7DD7 011F 49E3 EE22 1917 25EE Freenode handle: mdevos --=-oag5wlauIxXLLMm5uOXW Content-Disposition: attachment; filename*0=0001-DRAFT-Support-hooks-for-adding-extra-entries-to-the-.pat; filename*1=ch Content-Type: text/x-patch; name="0001-DRAFT-Support-hooks-for-adding-extra-entries-to-the-.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA5YWRhNzkxZjFlZWNiNjhhODUwZDU1MjZjYTUxMWIxYWQwYzIwZTg3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFN1biwgMzEgSmFuIDIwMjEgMTA6NTc6MjMgKzAxMDAKU3ViamVjdDogW1BBVENIIDEv Ml0gRFJBRlQ6IFN1cHBvcnQgaG9va3MgZm9yIGFkZGluZyBleHRyYSBlbnRyaWVzIHRvIHRoZQog bmFyaW5mbwoKVE9ETzogZG9jdW1lbnRhdGlvbiwgcGVyaGFwcyBhIG5ld3MgY2hhbm5lbCBlbnRy eSwKYSBzZXJ2aWNlIGV4dGVuc2lvbiBmb3IgZ3VpeC1wdWJsaXNoIGFuZCB0ZXN0cy4KCiogZ3Vp eC9zY3JpcHRzL3B1Ymxpc2guc2NtCiAgKHNob3ctaGVscCwgJW9wdGlvbnMpOiBBZGQgJy0taG9v a3MnIG9wdGlvbi4KICAobmFyaW5mby1zdHJpbmcsIHJlbmRlci1uYXJpbmZvLCBtYWtlLXJlcXVl c3QtaGFuZGxlcikKICAocmVuZGVyLW5hcmluZm8vY2FjaGVkLCBiYWtlLW5hcmluZm8rbmFyKQog IChydW4tcHVibGlzaC1zZXJ2ZXIpOiBBZGQgJyM6aG9va3MnIGFyZ3VtZW50LgogIChyZW5kZXIt bmFyaW5mbyk6IEFzayAnaG9va3MtaW5mbycgZm9yIGV4dHJhIG5hcmluZm8KICBrZXktdmFsdWUg cGFpcnMuCiAgKGd1aXgtcHVibGlzaCk6IExvYWRpbmcgbmFyaW5mbyBob29rcyB3aXRoICdsb2Fk LWhvb2tzJy4KICAoPG5hcmluZm8taG9vaz4pOiBOZXcgcmVjb3JkIHR5cGUgZm9yIG5hcmluZm8g aG9va3MuCiAgKGxvYWQtaG9va3MpOiBOZXcgcHJvY2VkdXJlIGxvYWRpbmcgaG9va3MgZnJvbSBz b3VyY2UsCiAgb3IgZnJvbSBjb21waWxlZCAuZ28uCiAgKGhvb2tzLWluZm8pOiBOZXcgcHJvY2Vk dXJlLCBhc2tpbmcgZWFjaCBob29rIGZvciBleHRyYQogIGtleS12YXVlIHBhaXJzLgotLS0KIGd1 aXgvc2NyaXB0cy9wdWJsaXNoLnNjbSB8IDEwNiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5NCBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9ndWl4L3NjcmlwdHMvcHVibGlzaC5zY20gYi9ndWl4L3Njcmlw dHMvcHVibGlzaC5zY20KaW5kZXggZmE4NTA4OGVkMC4uYTkwMThkM2ZkZSAxMDA2NDQKLS0tIGEv Z3VpeC9zY3JpcHRzL3B1Ymxpc2guc2NtCisrKyBiL2d1aXgvc2NyaXB0cy9wdWJsaXNoLnNjbQpA QCAtMyw2ICszLDcgQEAKIDs7OyBDb3B5cmlnaHQgwqkgMjAyMCBieSBBbWFyIE0uIFNpbmdoIDxu bHlAZGlzcm9vdC5vcmc+CiA7OzsgQ29weXJpZ2h0IMKpIDIwMTUsIDIwMTYsIDIwMTcsIDIwMTgs IDIwMTksIDIwMjAgTHVkb3ZpYyBDb3VydMOocyA8bHVkb0BnbnUub3JnPgogOzs7IENvcHlyaWdo dCDCqSAyMDIwIE1heGltIENvdXJub3llciA8bWF4aW0uY291cm5veWVyQGdtYWlsLmNvbT4KKzs7 OyBDb3B5cmlnaHQgwqkgMjAyMSBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CiA7OzsKIDs7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgR3VpeC4KIDs7OwpAQCAtNDcsNiAr NDgsNyBAQAogICAjOnVzZS1tb2R1bGUgKGd1aXggYmFzZTY0KQogICAjOnVzZS1tb2R1bGUgKGd1 aXggY29uZmlnKQogICAjOnVzZS1tb2R1bGUgKGd1aXggZGVyaXZhdGlvbnMpCisgICM6dXNlLW1v ZHVsZSAoZ3VpeCByZWNvcmRzKQogICAjOnVzZS1tb2R1bGUgKGdjcnlwdCBoYXNoKQogICAjOnVz ZS1tb2R1bGUgKGd1aXggcGtpKQogICAjOnVzZS1tb2R1bGUgKGdjcnlwdCBway1jcnlwdG8pCkBA IC03NSw3ICs3NywxMSBAQAogICAgICAgICAgICAgb3Blbi1zZXJ2ZXItc29ja2V0CiAgICAgICAg ICAgICBwdWJsaXNoLXNlcnZpY2UtdHlwZQogICAgICAgICAgICAgcnVuLXB1Ymxpc2gtc2VydmVy Ci0gICAgICAgICAgICBndWl4LXB1Ymxpc2gpKQorICAgICAgICAgICAgZ3VpeC1wdWJsaXNoCisK KyAgICAgICAgICAgIG5hcmluZm8taG9vaworICAgICAgICAgICAgbmFyaW5mby1ob29rPworICAg ICAgICAgICAgbmFyaW5mby1ob29rLWV4dHJhLWluZm8pKQogCiAoZGVmaW5lIChzaG93LWhlbHAp CiAgIChmb3JtYXQgI3QgKEdfICJVc2FnZTogZ3VpeCBwdWJsaXNoIFtPUFRJT05dLi4uCkBAIC0x MDgsNiArMTE0LDggQEAgUHVibGlzaCB+YSBvdmVyIEhUVFAuXG4iKSAlc3RvcmUtZGlyZWN0b3J5 KQogICAgICAgLS1wcml2YXRlLWtleT1GSUxFIHVzZSBGSUxFIGFzIHRoZSBwcml2YXRlIGtleSBm b3Igc2lnbmF0dXJlcyIpKQogICAoZGlzcGxheSAoR18gIgogICAtciwgLS1yZXBsWz1QT1JUXSAg ICAgIHNwYXduIFJFUEwgc2VydmVyIG9uIFBPUlQiKSkKKyAgKGRpc3BsYXkgKEdfIgorICAgICAg LS1ob29rcz1GSUxFLmdvICAgIGxvYWQgaG9va3MgZnJvbSBGSUxFLmdvIikpCiAgIChuZXdsaW5l KQogICAoZGlzcGxheSAoR18gIgogICAtaCwgLS1oZWxwICAgICAgICAgICAgIGRpc3BsYXkgdGhp cyBoZWxwIGFuZCBleGl0IikpCkBAIC0yMzYsNyArMjQ0LDEwIEBAIHVzYWdlLiIKICAgICAgICAg ICAgICAgICAobGFtYmRhIChvcHQgbmFtZSBhcmcgcmVzdWx0KQogICAgICAgICAgICAgICAgICAg OzsgSWYgcG9ydCB1bnNwZWNpZmllZCwgdXNlIGRlZmF1bHQgR3VpbGUgUkVQTCBwb3J0LgogICAg ICAgICAgICAgICAgICAgKGxldCAoKHBvcnQgKGFuZCBhcmcgKHN0cmluZy0+bnVtYmVyKiBhcmcp KSkpCi0gICAgICAgICAgICAgICAgICAgIChhbGlzdC1jb25zICdyZXBsIChvciBwb3J0IDM3MTQ2 KSByZXN1bHQpKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgKGFsaXN0LWNvbnMgJ3JlcGwgKG9y IHBvcnQgMzcxNDYpIHJlc3VsdCkpKSkKKyAgICAgICAgKG9wdGlvbiAnKCJob29rcyIpICNmICN0 CisgICAgICAgICAgICAgICAgKGxhbWJkYSAob3B0IG5hbWUgYXJnIHJlc3VsdCkKKyAgICAgICAg ICAgICAgICAgIChhbGlzdC1jb25zICdob29rIGFyZyByZXN1bHQpKSkpKQogCiAoZGVmaW5lICVk ZWZhdWx0LW9wdGlvbnMKICAgYCgocG9ydCAuIDgwODApCkBAIC0zMDksNyArMzIwLDkgQEAgd2l0 aCBDT01QUkVTU0lPTiwgc3RhcnRpbmcgYXQgTkFSLVBBVEguIgogICAgICAgICAgICAgdXJsIChj b21wcmVzc2lvbi10eXBlIGNvbXByZXNzaW9uKSBmaWxlLXNpemUpKSkKIAogKGRlZmluZSogKG5h cmluZm8tc3RyaW5nIHN0b3JlIHN0b3JlLXBhdGgga2V5Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgIzprZXkgKGNvbXByZXNzaW9ucyAobGlzdCAlbm8tY29tcHJlc3Npb24pKQorICAgICAgICAg ICAgICAgICAgICAgICAgICM6a2V5CisgICAgICAgICAgICAgICAgICAgICAgICAgKGhvb2tzICco KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoY29tcHJlc3Npb25zIChsaXN0ICVuby1jb21w cmVzc2lvbikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hci1wYXRoICJuYXIiKSAoZmls ZS1zaXplcyAnKCkpKQogICAiR2VuZXJhdGUgYSBuYXJpbmZvIGtleS92YWx1ZSBzdHJpbmcgZm9y IFNUT1JFLVBBVEg7IGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQKIGlmIFNUT1JFLVBBVEggaXMgaW52 YWxpZC4gIFByb2R1Y2UgYSBVUkwgdGhhdCBjb3JyZXNwb25kcyB0byBDT01QUkVTU0lPTi4gIFRo ZQpAQCAtMzE3LDcgKzMzMCwxMCBAQCBuYXJpbmZvIGlzIHNpZ25lZCB3aXRoIEtFWS4gIE5BUi1Q QVRIIHNwZWNpZmllcyB0aGUgcHJlZml4IGZvciBuYXIgVVJMcy4KIAogT3B0aW9uYWxseSwgRklM RS1TSVpFUyBpcyBhIGxpc3Qgb2YgY29tcHJlc3Npb24vaW50ZWdlciBwYWlycywgd2hlcmUgdGhl CiBpbnRlZ2VyIGlzIHNpemUgaW4gYnl0ZXMgb2YgdGhlIGNvbXByZXNzZWQgTkFSOyBpdCBpbmZv cm1zIHRoZSBjbGllbnQgb2YgaG93Ci1tdWNoIG5lZWRzIHRvIGJlIGRvd25sb2FkZWQuIgorbXVj aCBuZWVkcyB0byBiZSBkb3dubG9hZGVkLgorCitJZiBwcmVzZW50LCBlYWNoIG5hcmluZm8gaG9v a3MgaW4gSE9PS1MgaXMgY2FsbGVkIGFuZCB0aGUgcmVzdWx0aW5nCitrZXkvdmFsdWUgcGFpcnMg YXJlIGFkZGVkIHRvIHRoZSBuYXJpbmZvLiIKICAgKGxldCogKChwYXRoLWluZm8gIChxdWVyeS1w YXRoLWluZm8gc3RvcmUgc3RvcmUtcGF0aCkpCiAgICAgICAgICAoY29tcHJlc3Npb25zIChhY3R1 YWwtY29tcHJlc3Npb25zIHN0b3JlLXBhdGggY29tcHJlc3Npb25zKSkKICAgICAgICAgIChoYXNo ICAgICAgIChieXRldmVjdG9yLT5uaXgtYmFzZTMyLXN0cmluZwpAQCAtMzQ2LDIyICszNjIsMjQg QEAgUmVmZXJlbmNlczogfmF+JSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzaW9uKSkpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29tcHJlc3Npb25zKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBoYXNoIHNpemUgcmVmZXJlbmNlcykpCisgICAgICAgICAoZXh0cmEtaW5mbyAoaG9va3Mt aW5mbyBob29rcyBwYXRoLWluZm8pKQogICAgICAgICAgOzsgRG8gbm90IHJlbmRlciBhICJEZXJp dmVyIiBvciAiU3lzdGVtIiBsaW5lIGlmIHdlIGFyZSByZW5kZXJpbmcKICAgICAgICAgIDs7IGlu Zm8gZm9yIGEgZGVyaXZhdGlvbi4KICAgICAgICAgIChpbmZvICAgICAgIChpZiAobm90IGRlcml2 ZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgYmFzZS1pbmZvCisgICAgICAgICAgICAgICAg ICAgICAgICAgKGZvcm1hdCAjZiAifmF+YSIgYmFzZS1pbmZvIGV4dHJhLWluZm8pCiAgICAgICAg ICAgICAgICAgICAgICAgICAgKGNhdGNoICdzeXN0ZW0tZXJyb3IKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChsYW1iZGEgKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAo KGRydiAocmVhZC1kZXJpdmF0aW9uLWZyb20tZmlsZSBkZXJpdmVyKSkpCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGZvcm1hdCAjZiAifmFTeXN0ZW06IH5hfiVEZXJpdmVyOiB+YX4l IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZS1pbmZvIChkZXJp dmF0aW9uLXN5c3RlbSBkcnYpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1h dCAjZiAifmF+YVN5c3RlbTogfmF+JURlcml2ZXI6IH5hfiUiCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBiYXNlLWluZm8gZXh0cmEtaW5mbworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGRlcml2YXRpb24tc3lzdGVtIGRydikKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYXNlbmFtZSBkZXJpdmVyKSkpKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSBhcmdzCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDs7IERFUklWRVIgbWlnaHQgYmUgbWlzc2luZywgYnV0IHRoYXQncyBmaW5lOgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBpdCdzIG9ubHkgdXNlZCBmb3IgPHN1YnN0 aXR1dGFibGU+IHdoZXJlIGl0J3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgb3B0 aW9uYWwuICAnU3lzdGVtJyBpcyBjdXJyZW50bHkgdW51c2VkLgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoaWYgKD0gRU5PRU5UIChzeXN0ZW0tZXJyb3ItZXJybm8gYXJncykpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlLWluZm8KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChmb3JtYXQgI2YgIn5hfmEiIGJhc2UtaW5mbyBleHRyYS1pbmZvKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGx5IHRocm93IGFyZ3MpKSkpKSkK ICAgICAgICAgIChzaWduYXR1cmUgIChiYXNlNjQtZW5jb2RlLXN0cmluZwogICAgICAgICAgICAg ICAgICAgICAgIChjYW5vbmljYWwtc2V4cC0+c3RyaW5nIChzaWduZWQtc3RyaW5nIGluZm8pKSkp KQpAQCAtMzg4LDcgKzQwNiw5IEBAIFJlZmVyZW5jZXM6IH5hfiUiCiAgICAgICAgICAgICAgICAg ICAgICAgJW5peC1jYWNoZS1pbmZvKSkpKQogCiAoZGVmaW5lKiAocmVuZGVyLW5hcmluZm8gc3Rv cmUgcmVxdWVzdCBoYXNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgIzprZXkgdHRsIChjb21w cmVzc2lvbnMgKGxpc3QgJW5vLWNvbXByZXNzaW9uKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAjOmtleQorICAgICAgICAgICAgICAgICAgICAgICAgIChob29rcyAnKCkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgdHRsIChjb21wcmVzc2lvbnMgKGxpc3QgJW5vLWNvbXByZXNzaW9uKSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAobmFyLXBhdGggIm5hciIpKQogICAiUmVuZGVyIG1l dGFkYXRhIGZvciB0aGUgc3RvcmUgcGF0aCBjb3JyZXNwb25kaW5nIHRvIEhBU0guICBJZiBUVEwg aXMgdHJ1ZSwKIGFkdmVydGlzZSBpdCBhcyB0aGUgbWF4aW11bSB2YWxpZGl0eSBwZXJpb2QgKGlu IHNlY29uZHMpIHZpYSB0aGUKQEAgLTQwMyw2ICs0MjMsNyBAQCBhcHByb3ByaWF0ZSBkdXJhdGlv bi4gIE5BUi1QQVRIIHNwZWNpZmllcyB0aGUgcHJlZml4IGZvciBuYXIgVVJMcy4iCiAgICAgICAg ICAgICAgICAgICAgICAgICAnKCkpKQogICAgICAgICAgICAgICAgIChjdXQgZGlzcGxheQogICAg ICAgICAgICAgICAgICAgKG5hcmluZm8tc3RyaW5nIHN0b3JlIHN0b3JlLXBhdGggKCVwcml2YXRl LWtleSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOmhvb2tzIGhvb2tzCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzpuYXItcGF0aCBuYXItcGF0aAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6Y29tcHJlc3Npb25zIGNvbXByZXNzaW9u cykKICAgICAgICAgICAgICAgICAgIDw+KSkpKSkKQEAgLTUxMCw3ICs1MzEsOSBAQCBpbnRlcnBy ZXRlZCBhcyB0aGUgYmFzZW5hbWUgb2YgYSBzdG9yZSBpdGVtLiIKICAgICAgICAoY2FjaGUtYnlw YXNzLXRocmVzaG9sZCkpKSkKIAogKGRlZmluZSogKHJlbmRlci1uYXJpbmZvL2NhY2hlZCBzdG9y ZSByZXF1ZXN0IGhhc2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzprZXkgdHRs IChjb21wcmVzc2lvbnMgKGxpc3QgJW5vLWNvbXByZXNzaW9uKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIzprZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhv b2tzICcoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHRsIChjb21wcmVzc2lv bnMgKGxpc3QgJW5vLWNvbXByZXNzaW9uKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKG5hci1wYXRoICJuYXIiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNo ZSBwb29sKQogICAiUmVzcG9uZCB0byB0aGUgbmFyaW5mbyByZXF1ZXN0IGZvciBSRVFVRVNULiAg SWYgdGhlIG5hcmluZm8gaXMgYXZhaWxhYmxlIGluCkBAIC01NTYsNiArNTc5LDcgQEAgcmVxdWVz dGVkIHVzaW5nIFBPT0wuIgogICAgICAgICAgICAgICAgKHVubGVzcyAoZmlsZS1leGlzdHM/IGNh Y2hlZCkKICAgICAgICAgICAgICAgICAgOzsgKGZvcm1hdCAjdCAiYmFraW5nIH5zfiUiIGl0ZW0p CiAgICAgICAgICAgICAgICAgIChiYWtlLW5hcmluZm8rbmFyIGNhY2hlIGl0ZW0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIzpob29rcyBob29rcwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjOnR0bCB0dGwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIzpjb21wcmVzc2lvbnMgY29tcHJlc3Npb25zCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICM6bmFyLXBhdGggbmFyLXBhdGgpKSkKQEAgLTU3Niw2ICs2MDAsNyBA QCByZXF1ZXN0ZWQgdXNpbmcgUE9PTC4iCiAgICAgICAgICAgIDs7IGNsaWVudCBhc2tzIGZvciBp dC4KICAgICAgICAgICAgKGlmIChieXBhc3MtY2FjaGU/IHN0b3JlIGl0ZW0pCiAgICAgICAgICAg ICAgICAocmVuZGVyLW5hcmluZm8gc3RvcmUgcmVxdWVzdCBoYXNoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIzpob29rcyBob29rcwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICM6dHRsIDMwMCAgICAgICAgICA7dGVtcG9yYXJ5CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIzpuYXItcGF0aCBuYXItcGF0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICM6Y29tcHJlc3Npb25zIGNvbXByZXNzaW9ucykKQEAgLTYxNyw3ICs2NDIsOSBAQCByZXF1 ZXN0ZWQgdXNpbmcgUE9PTC4iCiAgICAgICAgICAoY2htb2QgcG9ydCAobG9nYW5kICNvNjQ0IChs b2dub3QgKHVtYXNrKSkpKSkpKSkpCiAKIChkZWZpbmUqIChiYWtlLW5hcmluZm8rbmFyIGNhY2hl IGl0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICM6a2V5IHR0bCAoY29tcHJlc3Npb25z IChsaXN0ICVuby1jb21wcmVzc2lvbikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAjOmtl eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhvb2tzICcoKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIHR0bCAoY29tcHJlc3Npb25zIChsaXN0ICVuby1jb21wcmVzc2lvbikpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobmFyLXBhdGggIi9uYXIiKSkKICAgIldyaXRlIHRo ZSBuYXJpbmZvIGFuZCBuYXIgZm9yIElURU0gdG8gQ0FDSEUuIgogICAoZGVmaW5lIChjb21wcmVz c2VkLW5hci1zaXplIGNvbXByZXNzaW9uKQpAQCAtNjQzLDYgKzY3MCw3IEBAIHJlcXVlc3RlZCB1 c2luZyBQT09MLiIKICAgICAgICAgICAgICAgIChsZXQgKChzaXplcyAoZmlsdGVyLW1hcCBjb21w cmVzc2VkLW5hci1zaXplIGNvbXByZXNzaW9uKSkpCiAgICAgICAgICAgICAgICAgIChkaXNwbGF5 IChuYXJpbmZvLXN0cmluZyBzdG9yZSBpdGVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoJXByaXZhdGUta2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIzpob29rcyBob29rcwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIzpuYXItcGF0aCBuYXItcGF0aAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIzpjb21wcmVzc2lvbnMgY29tcHJlc3Npb25zCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOmZpbGUtc2l6ZXMgc2l6ZXMpCkBA IC05NzIsNiArMTAwMCw3IEBAIG1ldGhvZHMsIHJldHVybiB0aGUgYXBwbGljYWJsZSBjb21wcmVz c2lvbi4iCiAKIChkZWZpbmUqIChtYWtlLXJlcXVlc3QtaGFuZGxlciBzdG9yZQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICM6a2V5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGhvb2tzICcoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZSBwb29s CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFyaW5mby10dGwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobmFyLXBhdGggIm5hciIpCkBAIC0xMDAyLDEyICsxMDMxLDE0 IEBAIG1ldGhvZHMsIHJldHVybiB0aGUgYXBwbGljYWJsZSBjb21wcmVzc2lvbi4iCiAgICAgICAg ICAgKCgoPSBleHRyYWN0LW5hcmluZm8taGFzaCAoPyBzdHJpbmc/IGhhc2gpKSkKICAgICAgICAg ICAgKGlmIGNhY2hlCiAgICAgICAgICAgICAgICAocmVuZGVyLW5hcmluZm8vY2FjaGVkIHN0b3Jl IHJlcXVlc3QgaGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOmhv b2tzIGhvb2tzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6Y2FjaGUg Y2FjaGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzpwb29sIHBvb2wK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzp0dGwgbmFyaW5mby10dGwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzpuYXItcGF0aCBuYXItcGF0 aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOmNvbXByZXNzaW9ucyBj b21wcmVzc2lvbnMpCiAgICAgICAgICAgICAgICAocmVuZGVyLW5hcmluZm8gc3RvcmUgcmVxdWVz dCBoYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzpob29rcyBob29rcwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6dHRsIG5hcmluZm8tdHRsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIzpuYXItcGF0aCBuYXItcGF0aAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICM6Y29tcHJlc3Npb25zIGNvbXByZXNzaW9ucykpKQpAQCAtMTA2NSw2 ICsxMDk2LDcgQEAgbWV0aG9kcywgcmV0dXJuIHRoZSBhcHBsaWNhYmxlIGNvbXByZXNzaW9uLiIK IAogKGRlZmluZSogKHJ1bi1wdWJsaXNoLXNlcnZlciBzb2NrZXQgc3RvcmUKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIzprZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhv b2tzICcoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWR2ZXJ0aXNlPyBwb3J0CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb21wcmVzc2lvbnMgKGxpc3QgJW5vLWNvbXBy ZXNzaW9uKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hci1wYXRoICJuYXIiKSBu YXJpbmZvLXR0bApAQCAtMTA3OSw2ICsxMTExLDcgQEAgbWV0aG9kcywgcmV0dXJuIHRoZSBhcHBs aWNhYmxlIGNvbXByZXNzaW9uLiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICM6cG9ydCBwb3J0KSkpCiAKICAgKHJ1bi1zZXJ2ZXIgKG1ha2UtcmVxdWVzdC1oYW5kbGVyIHN0 b3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOmhvb2tzIGhvb2tzCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOmNhY2hlIGNhY2hlCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOnBvb2wgcG9vbAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIzpuYXItcGF0aCBuYXItcGF0aApAQCAtMTEwNiw2ICsxMTM5 LDQ5IEBAIG1ldGhvZHMsIHJldHVybiB0aGUgYXBwbGljYWJsZSBjb21wcmVzc2lvbi4iCiAgICAg KGxhbWJkYSAoa2V5IHByb2MgbWVzc2FnZSBhcmdzIC4gcmVzdCkKICAgICAgIChsZWF2ZSAoR18g InVzZXIgJ35hJyBub3QgZm91bmQ6IH5hfiUiKQogICAgICAgICAgICAgIHVzZXIgKGFwcGx5IGZv cm1hdCAjZiBtZXNzYWdlIGFyZ3MpKSkpKQorDAorOzs7Cis7OzsgSG9va3MuCis7OzsKKworOzsg SG9vayBmb3IgYWRkaW5nIGV4dHJhIGtleS12YWx1ZSBwYWlycyB0bworOzsgdGhlIGdlbmVyYXRl ZCBuYXJpbmZvLgorKGRlZmluZS1yZWNvcmQtdHlwZSA8bmFyaW5mby1ob29rPgorICAobmFyaW5m by1ob29rIGV4dHJhLWluZm8pCisgIG5hcmluZm8taG9vaz8KKyAgOzsgcGF0aGluZm8gLT4gYWxp c3QuICBTaG91bGQgYWNjZXB0CisgIDs7IHJlc3QgYXJndW1lbnRzIGZvciBmdXR1cmUgZXh0ZW5z aWJpbGl0eS4KKyAgKGV4dHJhLWluZm8gbmFyaW5mby1ob29rLWV4dHJhLWluZm8pKQorCisoZGVm aW5lIChsb2FkLWhvb2tzIGhvb2stZmlsZSkKKyAgIkxvYWQgaG9va3MgZnJvbSBIT09LLUZJTEUu ICBUaGUgY29kZSBpbiBIT09LLUZJTEUKK211c3QgZXZhbHVhdGUgdG8gYSBsaXN0IG9mIGhvb2tz LiIKKyAgKGxldCAoKGhvb2tzCisgICAgICAgICAoY29uZCAoKHN0cmluZy1zdWZmaXg/ICIuZ28i IGhvb2stZmlsZSkgOyBjb21waWxlZAorICAgICAgICAgICAgICAgIChsb2FkLWNvbXBpbGVkIGhv b2stZmlsZSkpCisgICAgICAgICAgICAgICAoKHN0cmluZy1zdWZmaXg/ICIuc2NtIiBob29rLWZp bGUpIDsgc291cmNlIGNvZGUKKyAgICAgICAgICAgICAgICAobG9hZCBob29rLWZpbGUpKQorICAg ICAgICAgICAgICAgKCN0IChsZWF2ZSAoR18gImZpbGUgJ35hJyBpcyBub3QgYSBTY2hlbWUgZmls ZX4lIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaG9vay1maWxlKSkpKSkKKyAgICA7OyBW YWxpZGF0ZSB3aGV0aGVyIEB2YXJ7aG9va3N9IGFyZSwgaW4gZmFjdCwgaG9va3MuCisgICAgKGZv ci1lYWNoIChsYW1iZGEgKGhvb2spCisgICAgICAgICAgICAgICAgKHVubGVzcyAobmFyaW5mby1o b29rPyBob29rKQorICAgICAgICAgICAgICAgICAgKGxlYXZlIChHXyAiJ35hJyBpcyBub3QgYSBo b29rfiUiKQorICAgICAgICAgICAgICAgICAgICAgICAgIGhvb2spKSkKKyAgICAgICAgICAgICAg aG9va3MpCisgICAgaG9va3MpKQorCisoZGVmaW5lIChob29rcy1pbmZvIGhvb2tzIHBhdGhpbmZv KQorICAiQXNrIEhPT0tTIGZvciBleHRyYSBuYXJpbmZvIGtleS92YWx1ZSBwYWlycy4iCisgIChs ZXQgKChhbGlzdAorICAgICAgICAgKGFwcGVuZC1tYXAgKGxhbWJkYSAoaG9vaykgKChuYXJpbmZv LWhvb2stZXh0cmEtaW5mbyBob29rKSBwYXRoaW5mbykpCisgICAgICAgICAgICAgICAgICAgICBo b29rcykpKQorICAgIChjYWxsLXdpdGgtb3V0cHV0LXN0cmluZworICAgICAgKGxhbWJkYSAocG9y dCkKKyAgICAgICAgKGZvci1lYWNoIChsYW1iZGEgKGtleSt2YWx1ZSkKKyAgICAgICAgICAgICAg ICAgICAgKGZvcm1hdCBwb3J0ICJ+YTogfmF+JSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoY2FyIGtleSt2YWx1ZSkgKGNkciBrZXkrdmFsdWUpKSkKKyAgICAgICAgICAgICAgICAgIGFs aXN0KSkpKSkKIAogDAogOzs7CkBAIC0xMTQ5LDggKzEyMjUsMTMgQEAgbWV0aG9kcywgcmV0dXJu IHRoZSBhcHBsaWNhYmxlIGNvbXByZXNzaW9uLiIKICAgICAgICAgICAgOzsgUmVhZCB0aGUga2V5 IHJpZ2h0IGF3YXkgc28gdGhhdCAoMSkgd2UgZmFpbCBlYXJseSBvbiBpZiB3ZSBjYW4ndAogICAg ICAgICAgICA7OyBhY2Nlc3MgdGhlbSwgYW5kICgyKSB3ZSBjYW4gdGhlbiBkcm9wIHByaXZpbGVn ZXMuCiAgICAgICAgICAgIChwdWJsaWMta2V5ICAocmVhZC1maWxlLXNleHAgKGFzc29jLXJlZiBv cHRzICdwdWJsaWMta2V5LWZpbGUpKSkKLSAgICAgICAgICAgKHByaXZhdGUta2V5IChyZWFkLWZp bGUtc2V4cCAoYXNzb2MtcmVmIG9wdHMgJ3ByaXZhdGUta2V5LWZpbGUpKSkpCisgICAgICAgICAg IChwcml2YXRlLWtleSAocmVhZC1maWxlLXNleHAgKGFzc29jLXJlZiBvcHRzICdwcml2YXRlLWtl eS1maWxlKSkpCiAKKyAgICAgICAgICAgKGhvb2tzIChjb25jYXRlbmF0ZSAoZmlsdGVyLW1hcCAo bWF0Y2gtbGFtYmRhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoKCdob29rIC4gaG9vay1maWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChsb2FkLWhvb2tzIGhvb2stZmlsZSkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoXyAjZikpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb3B0cykpKSkKICAgICAgICh3aGVuIHVzZXIKICAgICAgICAg OzsgTm93IHRoYXQgd2UndmUgcmVhZCB0aGUga2V5IG1hdGVyaWFsIGFuZCBvcGVuZWQgdGhlIHNv Y2tldCwgd2UgY2FuCiAgICAgICAgIDs7IGRyb3AgcHJpdmlsZWdlcy4KQEAgLTExODUsNiArMTI2 Niw3IEBAIGNvbnNpZGVyIHVzaW5nIHRoZSAnLS11c2VyJyBvcHRpb24hfiUiKSkpCiAgICAgICAg ICh3aXRoLXN0b3JlIHN0b3JlCiAgICAgICAgICAgKHJ1bi1wdWJsaXNoLXNlcnZlciBzb2NrZXQg c3RvcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6YWR2ZXJ0aXNlPyBhZHZlcnRp c2U/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOmhvb2tzIGhvb2tzCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjOnBvcnQgcG9ydAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIzpjYWNoZSBjYWNoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzpw b29sIChhbmQgY2FjaGUgKG1ha2UtcG9vbCB3b3JrZXJzCi0tIAoyLjMwLjAKCg== --=-oag5wlauIxXLLMm5uOXW Content-Disposition: attachment; filename="0002-DRAFT-add-hook-example.patch" Content-Type: text/x-patch; name="0002-DRAFT-add-hook-example.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA2MWM2ODFjYmUwYjI5YjMxNTg3ZTcxYTkwNWYzNGYwZjEyNzU3YTEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbWUgRGV2b3MgPG1heGltZWRldm9zQHRlbGVuZXQuYmU+ CkRhdGU6IFN1biwgMzEgSmFuIDIwMjEgMTE6MDY6NDYgKzAxMDAKU3ViamVjdDogW1BBVENIIDIv Ml0gRFJBRlQ6IGFkZCBob29rIGV4YW1wbGUKClRPRE86IHNob3VsZCBiZSBsb2NhdGVkIGVsc2V3 ZXJlLgotLS0KIGhvb2suc2NtIHwgMjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZp bGUgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGhvb2suc2Nt CgpkaWZmIC0tZ2l0IGEvaG9vay5zY20gYi9ob29rLnNjbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi43YjgxYzhkNzYxCi0tLSAvZGV2L251bGwKKysrIGIvaG9vay5zY20K QEAgLTAsMCArMSwyNyBAQAorOzs7IEdOVSBHdWl4IC0tLSBGdW5jdGlvbmFsIHBhY2thZ2UgbWFu YWdlbWVudCBmb3IgR05VCis7OzsgQ29weXJpZ2h0IMKpIDIwMjEgTWF4aW1lIERldm9zIDxtYXhp bWVkZXZvc0B0ZWxlbmV0LmJlPgorOzs7Cis7OzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEd1 aXguCis7OzsKKzs7OyBHTlUgR3VpeCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Cis7OzsgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKzs7OyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQK Kzs7OyB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCis7OzsKKzs7OyBHTlUgR3VpeCBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKzs7 OyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCis7OzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorOzs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCis7OzsKKzs7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorOzs7IGFsb25nIHdpdGggR05VIEd1aXguICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisodXNlLW1vZHVsZXMgKGd1 aXggc2NyaXB0cyBwdWJsaXNoKSkKKworKGxpc3QKKyAobmFyaW5mby1ob29rCisgIChsYW1iZGEg KHBhdGhpbmZvIC4gcmVzdCkKKyAgICBgKCgiTHVja3lOdW1iZXIiIC4gLChyYW5kb20gMTAwMCkp CisgICAgICAoIlN0dWZmIiAuICwob2JqZWN0LT5zdHJpbmcgcGF0aGluZm8pKSkpKQorIChuYXJp bmZvLWhvb2sKKyAgKGxhbWJkYSAocGF0aGluZm8gLiByZXN0KQorICAgIGAoKCJDb29sIiAuICJC ZWFucyIpKSkpKQotLSAKMi4zMC4wCgo= --=-oag5wlauIxXLLMm5uOXW-- --=-1HWk7ZwBvvXotGhxCZ13 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- iI0EABYIADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYBaQNhccbWF4aW1lZGV2 b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7o2nAP9/vG9swo5z3kE4uetw5arQ3yZO Y/fx01hvWYsWulySIQD/e5Ax3nRWa1YOJcIKc7J1Q/C6bVCABxev0US/NutNhAA= =zpgF -----END PGP SIGNATURE----- --=-1HWk7ZwBvvXotGhxCZ13--