From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2.migadu.com ([2001:41d0:303:e224::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms13.migadu.com with LMTPS id wKUcIyON3WYODwAAe85BDQ:P1 (envelope-from ) for ; Sun, 08 Sep 2024 11:40:19 +0000 Received: from aspmx1.migadu.com ([2001:41d0:303:e224::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2.migadu.com with LMTPS id wKUcIyON3WYODwAAe85BDQ (envelope-from ) for ; Sun, 08 Sep 2024 13:40:19 +0200 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=tethera.net header.s=2024 header.b=jXgtGyKQ; dmarc=none; spf=pass (aspmx1.migadu.com: domain of notmuch-bounces@notmuchmail.org designates 2a01:4f9:c011:7a79::1 as permitted sender) smtp.mailfrom=notmuch-bounces@notmuchmail.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1725795619; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-owner:list-unsubscribe:list-subscribe:list-post:dkim-signature; bh=As85Z8y+zBitLd0FZUNzlh9tevIkcx+SxTij8H+msUw=; b=l0yrXrBtjvHl5FOhlaU0rmvEAAO4189eYkmiOgKWLYkVxdJi0AwZSXFim7UUX8MsZkMpxr tBadwqD4GJZ+tEHTZS/S1mUcprWEYJUTbl3vQ65Je6V0X2VnZM6PJ1ssvmmHEYvUKC1ztv ZBRS5/nDZXBg8GN3xv+nBG9nQ12r5DCLb+Yaj6qpWtkut+rdAkzlVzjM10RICL9TUIpTpN cF/ogI+fRcUL4HTVVIlG2P09xqFU1LRmAKguaXEmhmY988fevNNSHRMGB5raRCASz51HBp 1C7ZrhEsg4zRc+Sl5+LhmGaaRTJD1/1OlLrbXyOnmyqPDokHl28g+zGrW8xDxQ== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1725795619; a=rsa-sha256; cv=none; b=sIcTRyz3cRSUz4XmxHfBWwebOofQINierIyw31yuxQOL3lyrPH8XH3E9icH2zuOTUaLWRS Xhtft7sURyOshMX4L+DVR6lbIbicGybEpvBjqbcwlttDMO1DcjU81xVRdhnN5J5ZOaqHIs IO2j6V8e4WvtadpXCzKRYhp5/wecALGxG1w6ZMqLhsYeV3csjHxMVc/Xh4hyWUsA5EZCMa O0/GG5CUj3r/KIq1h3n9OrBT78yzBi7zb+a8r03LaLSVvBcI7dd+2sb8lkwRz5g89dxJ/n j1F0L1f47F2V4nEf5pWVhtOB3uSWZcF4hBYysrBqVQbSwHhQswXr2pJm8pP/mA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=tethera.net header.s=2024 header.b=jXgtGyKQ; dmarc=none; spf=pass (aspmx1.migadu.com: domain of notmuch-bounces@notmuchmail.org designates 2a01:4f9:c011:7a79::1 as permitted sender) smtp.mailfrom=notmuch-bounces@notmuchmail.org Received: from mail.notmuchmail.org (yantan.tethera.net [IPv6:2a01:4f9:c011:7a79::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 72E051EED7 for ; Sun, 8 Sep 2024 13:40:19 +0200 (CEST) Received: from yantan.tethera.net (localhost [127.0.0.1]) by mail.notmuchmail.org (Postfix) with ESMTP id 340F05E522; Sun, 8 Sep 2024 11:39:56 +0000 (UTC) Received: from phubs.tethera.net (phubs.tethera.net [IPv6:2607:5300:60:3a9d::1]) by mail.notmuchmail.org (Postfix) with ESMTPS id 830965E29F for ; Sun, 8 Sep 2024 11:39:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tethera.net; i=@tethera.net; q=dns/txt; s=2024; t=1725795590; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type : content-transfer-encoding : from; bh=eIAxWNAegmK7Or6W4yuRhmfvC7OcUVrwZcQGs8IEj2M=; b=jXgtGyKQuZuo8obye4G7GwmkMx7Pt/++NPXDpWG1XeOcNjbiD1jCvW35bpAVeaxqEnf5P 9lmyEz6QOt/2KHW2Xgo1VF6ivhJ0QmC4MciI6URp2p6HMuJC7B2EdEUtmXooI6bWeV1AV5y j35zHcqBvnEmEPjvHL0rhX3akIIrRHV6bLvKPnxV1DC6RumEgvke2UwF5XmwlRKf5vngP0x 1cYd54jnxBchms/XsdAShy2UjJxqRQavN8jkQkj7TxpEomGd5ecKthaNkrDR8IGW4dJAU5I m8hPOG3WO78olug51SXPLzYCB3gZAyrcUYEPuMwppHW9nWgxeeHoQTls2Cig== Received: from tethera.net (fctnnbsc51w-159-2-211-58.dhcp-dynamic.fibreop.nb.bellaliant.net [159.2.211.58]) by phubs.tethera.net (Postfix) with ESMTPS id E2320180181; Sun, 8 Sep 2024 08:39:49 -0300 (ADT) Received: (nullmailer pid 286546 invoked by uid 1000); Sun, 08 Sep 2024 11:39:45 -0000 From: David Bremner To: notmuch@notmuchmail.org Subject: [PATCH v2 2/4] cli: start remote helper for git. Date: Sun, 8 Sep 2024 08:27:30 -0300 Message-ID: <20240908113937.286108-3-david@tethera.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240908113937.286108-1-david@tethera.net> References: <20240908113937.286108-1-david@tethera.net> MIME-Version: 1.0 Message-ID-Hash: SR7RYDA6REWIM7KMOXZQF4QO5LKKTYHR X-Message-ID-Hash: SR7RYDA6REWIM7KMOXZQF4QO5LKKTYHR X-MailFrom: bremner@tethera.net X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-notmuch.notmuchmail.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.3 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Migadu-Flow: FLOW_IN X-Migadu-Country: DE X-Migadu-Queue-Id: 72E051EED7 X-Migadu-Scanner: mx12.migadu.com X-Migadu-Spam-Score: -1.42 X-Spam-Score: -1.42 X-TUID: nN0V4Og8+Ool VGhpcyBpcyBjbG9zZWx5IGJhc2VkIG9uIGdpdC1yZW1vdGUtbm0gKGluIHJ1YnkpIGJ5IEZlbGlw ZSBDb250cmVyYXMuDQpJbml0aWFsbHkganVzdCBpbXBsZW1lbnQgdGhlIGNvbW1hbmRzICdjYXBh YmlsaXRlcycgYW5kICdsaXN0Jy4gIFRoaXMNCmlzbid0IGVub3VnaCB0byBkbyBhbnl0aGluZyB1 c2VmdWwgc28gc3RhcnQgc29tZSB1bml0IHRlc3RzLiBUZXN0aW5nDQpvZiBVUkwgcGFzc2luZyB3 aWxsIGJlIGRvbmUgYWZ0ZXIgY2xvbmUgKGltcG9ydCBjb21tYW5kKSBzdXBwb3J0IGlzDQphZGRl ZC4NCi0tLQ0KIE1ha2VmaWxlLmxvY2FsICAgICAgICAgIHwgICA3ICstDQogZ2l0LXJlbW90ZS1u b3RtdWNoLmMgICAgfCAzMTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Kw0KIHRlc3QvVDg2MC1naXQtcmVtb3RlLnNoIHwgIDQ2ICsrKysrKw0KIDMgZmlsZXMgY2hhbmdl ZCwgMzY2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkNCiBjcmVhdGUgbW9kZSAxMDA2NDQg Z2l0LXJlbW90ZS1ub3RtdWNoLmMNCiBjcmVhdGUgbW9kZSAxMDA3NTUgdGVzdC9UODYwLWdpdC1y ZW1vdGUuc2gNCg0KZGlmZiAtLWdpdCBhL01ha2VmaWxlLmxvY2FsIGIvTWFrZWZpbGUubG9jYWwN CmluZGV4IDc2OTljMjA4Li5mZmViMGQwMCAxMDA2NDQNCi0tLSBhL01ha2VmaWxlLmxvY2FsDQor KysgYi9NYWtlZmlsZS5sb2NhbA0KQEAgLTEsNyArMSw4IEBADQogIyAtKi0gbWFrZWZpbGUtZ21h a2UgLSotDQogDQogLlBIT05ZOiBhbGwNCi1hbGw6IG5vdG11Y2ggbm90bXVjaC1zaGFyZWQgYnVp bGQtbWFuIGJ1aWxkLWluZm8gcnVieS1iaW5kaW5ncyBweXRob24tY2ZmaS1iaW5kaW5ncyBub3Rt dWNoLWdpdCBubWJ1Zw0KK2FsbDogbm90bXVjaCBub3RtdWNoLXNoYXJlZCBnaXQtcmVtb3RlLW5v dG11Y2ggXA0KKwlidWlsZC1tYW4gYnVpbGQtaW5mbyBydWJ5LWJpbmRpbmdzIHB5dGhvbi1jZmZp LWJpbmRpbmdzIG5vdG11Y2gtZ2l0IG5tYnVnDQogaWZlcSAoJChNQUtFQ01ER09BTFMpLCkNCiBp ZmVxICgkKHNoZWxsIGNhdCAuZmlyc3QtYnVpbGQtbWVzc2FnZSAyPi9kZXYvbnVsbCksKQ0KIAlA Tk9UTVVDSF9GSVJTVF9CVUlMRD0xICQoTUFLRSkgLS1uby1wcmludC1kaXJlY3RvcnkgYWxsDQpA QCAtMjc0LDYgKzI3NSw5IEBAIG5vdG11Y2g6ICQobm90bXVjaF9jbGllbnRfbW9kdWxlcykgbGli L2xpYm5vdG11Y2guYSB1dGlsL2xpYm5vdG11Y2hfdXRpbC5hIHBhcnNlDQogbm90bXVjaC1zaGFy ZWQ6ICQobm90bXVjaF9jbGllbnRfbW9kdWxlcykgbGliLyQoTElOS0VSX05BTUUpDQogCSQoY2Fs bCBxdWlldCwkKEZJTkFMX05PVE1VQ0hfTElOS0VSKSAkKENGTEFHUykpICQobm90bXVjaF9jbGll bnRfbW9kdWxlcykgJChGSU5BTF9OT1RNVUNIX0xERkxBR1MpIC1vICRADQogDQorZ2l0LXJlbW90 ZS1ub3RtdWNoOiBnaXQtcmVtb3RlLW5vdG11Y2gubyBzdGF0dXMubyB0YWctdXRpbC5vIHF1ZXJ5 LXN0cmluZy5vDQorCSQoY2FsbCBxdWlldCwkKEZJTkFMX05PVE1VQ0hfTElOS0VSKSAkKENGTEFH UykpICReICQoRklOQUxfTk9UTVVDSF9MREZMQUdTKSAtbyAkQA0KKw0KIC5QSE9OWTogaW5zdGFs bA0KIGluc3RhbGw6IGFsbCBpbnN0YWxsLW1hbiBpbnN0YWxsLWluZm8NCiAJbWtkaXIgLXAgIiQo REVTVERJUikkKHByZWZpeCkvYmluLyINCkBAIC0zMDIsNiArMzA2LDcgQEAgZW5kaWYNCiANCiBT UkNTICA6PSAkKFNSQ1MpICQobm90bXVjaF9jbGllbnRfc3JjcykNCiBDTEVBTiA6PSAkKENMRUFO KSBub3RtdWNoIG5vdG11Y2gtc2hhcmVkICQobm90bXVjaF9jbGllbnRfbW9kdWxlcykNCitDTEVB TiA6PSAkKENMRUFOKSBnaXQtcmVtb3RlLW5vdG11Y2ggZ2l0LXJlbW90ZS1ub3RtdWNoLm8NCiBD TEVBTiA6PSAkKENMRUFOKSB2ZXJzaW9uLnN0YW1wIG5vdG11Y2gtKi50YXIuZ3oudG1wDQogQ0xF QU4gOj0gJChDTEVBTikgLmRlcHMNCiANCmRpZmYgLS1naXQgYS9naXQtcmVtb3RlLW5vdG11Y2gu YyBiL2dpdC1yZW1vdGUtbm90bXVjaC5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAw MDAwMDAuLjRhZmQxOThjDQotLS0gL2Rldi9udWxsDQorKysgYi9naXQtcmVtb3RlLW5vdG11Y2gu Yw0KQEAgLTAsMCArMSwzMTQgQEANCisvKiBub3RtdWNoIC0gTm90IG11Y2ggb2YgYW4gZW1haWwg cHJvZ3JhbSwgKGp1c3QgaW5kZXggYW5kIHNlYXJjaCkNCisgKg0KKyAqIENvcHlyaWdodCDCqSAy MDIzIEZlbGlwZSBDb250cmVyYXMNCisgKiBDb3B5cmlnaHQgwqkgMjAyNCBEYXZpZCBCcmVtbmVy DQorICoNCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQorICogdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3INCisg KiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KKyAqDQorICogVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQor ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YNCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlDQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4NCisgKg0KKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLyAuDQorICoNCisg KiBBdXRob3JzOiBGZWxpcGUgQ29udHJlcmFzDQorICoJICAgIERhdmlkIEJyZW1uZXIgPGRhdmlk QHRldGhlcmEubmV0Pg0KKyAqLw0KKw0KKyNpbmNsdWRlIDxhc3NlcnQuaD4NCisjaW5jbHVkZSA8 c3RkbGliLmg+DQorI2luY2x1ZGUgPHN0ZGlvLmg+DQorI2luY2x1ZGUgPHN0cmluZy5oPg0KKyNp bmNsdWRlIDxub3RtdWNoLmg+DQorI2luY2x1ZGUgIm5vdG11Y2gtY2xpZW50LmgiDQorI2luY2x1 ZGUgInBhdGgtdXRpbC5oIg0KKyNpbmNsdWRlICJoZXgtZXNjYXBlLmgiDQorI2luY2x1ZGUgInN0 cmluZy11dGlsLmgiDQorI2luY2x1ZGUgInRhZy11dGlsLmgiDQorDQorI2RlZmluZSBBU1NFUlQo eCkgYXNzZXJ0ICgoeCkpDQorDQorLyogRmlsZSBzY29wZSBnbG9iYWxzICovDQorY29uc3QgY2hh ciAqZGVidWdfZmxhZ3MgPSBOVUxMOw0KK0ZJTEUgKmxvZ19maWxlID0gTlVMTDsNCisNCisvKiBG b3IgdXNlIHdpdGggZ2V0bGluZS4gKi8NCitjaGFyICpidWZmZXIgPSBOVUxMOw0KK3NpemVfdCBi dWZmZXJfbGVuID0gMDsNCisNCitzdGF0aWMgaW5saW5lIGJvb2wNCitlcXVhbF9sYXN0bW9kIChj b25zdCBjaGFyICp1dWlkMSwgdW5zaWduZWQgbG9uZyBjb3VudGVyMSwNCisJICAgICAgIGNvbnN0 IGNoYXIgKnV1aWQyLCB1bnNpZ25lZCBsb25nIGNvdW50ZXIyKQ0KK3sNCisgICAgcmV0dXJuIChz dHJjbXBfbnVsbCAodXVpZDEsIHV1aWQyKSA9PSAwKSAmJiAoY291bnRlcjEgPT0gY291bnRlcjIp Ow0KK30NCisNCisvKiBFcnJvciBoYW5kbGluZyAqLw0KK3N0YXRpYyB2b2lkDQorZW5zdXJlIChi b29sIGNvbmRpdGlvbiwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pDQorew0KKyAgICB2YV9saXN0 IHZhX2FyZ3M7DQorDQorICAgIGlmICghIGNvbmRpdGlvbikgew0KKwl2YV9zdGFydCAodmFfYXJn cywgZm9ybWF0KTsNCisJdmZwcmludGYgKHN0ZGVyciwgZm9ybWF0LCB2YV9hcmdzKTsNCisJdmFf ZW5kICh2YV9hcmdzKTsNCisJZnByaW50ZiAoc3RkZXJyLCAiXG4iKTsNCisJZXhpdCAoRVhJVF9G QUlMVVJFKTsNCisgICAgfQ0KK30NCisNCisvKiBJdCBpcyBhIChwcm90b2NvbCkgZXJyb3IgdG8g Y2FsbCB0aGlzIGF0L2FmdGVyIEVPRiAqLw0KK3N0YXRpYyB2b2lkDQorYnVmZmVyX2xpbmUgKEZJ TEUgKnN0cmVhbSkNCit7DQorICAgIHNzaXplX3QgbnJlYWQ7DQorDQorICAgIG5yZWFkID0gZ2V0 bGluZSAoJmJ1ZmZlciwgJmJ1ZmZlcl9sZW4sIHN0cmVhbSk7DQorICAgIGVuc3VyZSAobnJlYWQg Pj0gMCwgImdldGxpbmUgJXMiLCBzdHJlcnJvciAoZXJybm8pKTsNCisgICAgY2hvbXBfbmV3bGlu ZSAoYnVmZmVyKTsNCit9DQorDQorc3RhdGljIEdTdHJ2DQordG9rZW5pemVfYnVmZmVyICgpDQor ew0KKyAgICBjaGFyICp0b2sgPSBidWZmZXI7DQorICAgIHNpemVfdCB0b2tfbGVuID0gMDsNCisN CisgICAgZ19hdXRvcHRyIChHU3RydkJ1aWxkZXIpIGJ1aWxkZXIgPSBnX3N0cnZfYnVpbGRlcl9u ZXcgKCk7DQorDQorICAgIHdoaWxlICgodG9rID0gc3RydG9rX2xlbiAodG9rICsgdG9rX2xlbiwg IiBcdFxuIiwgJnRva19sZW4pKSkgew0KKwlnX3N0cnZfYnVpbGRlcl90YWtlIChidWlsZGVyLCBn X3N0cm5kdXAgKHRvaywgdG9rX2xlbikpOw0KKyAgICB9DQorDQorICAgIHJldHVybiBnX3N0cnZf YnVpbGRlcl9lbmQgKGJ1aWxkZXIpOw0KK30NCisNCitzdGF0aWMgdm9pZA0KK2Zsb2cgKGNvbnN0 IGNoYXIgKmZvcm1hdCwgLi4uKQ0KK3sNCisgICAgdmFfbGlzdCB2YV9hcmdzOw0KKw0KKyAgICBp ZiAobG9nX2ZpbGUpIHsNCisJdmFfc3RhcnQgKHZhX2FyZ3MsIGZvcm1hdCk7DQorCXZmcHJpbnRm IChsb2dfZmlsZSwgZm9ybWF0LCB2YV9hcmdzKTsNCisJZmZsdXNoIChsb2dfZmlsZSk7DQorCXZh X2VuZCAodmFfYXJncyk7DQorICAgIH0NCit9DQorDQorc3RhdGljIGNvbnN0IGNoYXIgKg0KK2dt ZXNzYWdlIChHRXJyb3IgKmVycikNCit7DQorICAgIGlmIChlcnIpDQorCXJldHVybiBlcnItPm1l c3NhZ2U7DQorICAgIGVsc2UNCisJcmV0dXJuIE5VTEw7DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQor c3RyMnVsIChjb25zdCBjaGFyICpzdHIsIHVuc2lnbmVkIGxvbmcgaW50ICpudW1fcCkNCit7DQor ICAgIGdib29sZWFuIHJldDsNCisNCisgICAgZ19hdXRvcHRyIChHRXJyb3IpIGdlcnJvciA9IE5V TEw7DQorDQorICAgIHJldCA9IGdfYXNjaWlfc3RyaW5nX3RvX3Vuc2lnbmVkIChzdHIsIDEwLCAw LCBHX01BWFVJTlQ2NCwgbnVtX3AsICZnZXJyb3IpOw0KKyAgICBlbnN1cmUgKHJldCwgImNvbnZl cnRpbmcgJXMgdG8gdW5zaWduZWQgbG9uZzogJXMiLCBzdHIsIGdtZXNzYWdlIChnZXJyb3IpKTsN Cit9DQorDQorc3RhdGljIHZvaWQNCityZWFkX2xhc3Rtb2QgKGNvbnN0IGNoYXIgKmRpciwgY2hh ciAqKnV1aWRfb3V0LCB1bnNpZ25lZCBsb25nICpjb3VudGVyX291dCkNCit7DQorICAgIGdfYXV0 b3B0ciAoR1N0cmluZykgZmlsZW5hbWUgPSBnX3N0cmluZ19uZXcgKGRpcik7DQorICAgIHVuc2ln bmVkIGxvbmcgbnVtID0gMDsNCisgICAgRklMRSAqaW47DQorDQorICAgIGFzc2VydCAodXVpZF9v dXQpOw0KKyAgICBhc3NlcnQgKGNvdW50ZXJfb3V0KTsNCisNCisgICAgZ19zdHJpbmdfYXBwZW5k IChmaWxlbmFtZSwgIi9sYXN0bW9kIik7DQorDQorICAgIGluID0gZm9wZW4gKGZpbGVuYW1lLT5z dHIsICJyIik7DQorICAgIGlmICghIGluKSB7DQorCWVuc3VyZSAoZXJybm8gPT0gRU5PRU5ULCAi ZXJyb3Igb3BlbmluZyBsYXN0bW9kIGZpbGUiKTsNCisJKnV1aWRfb3V0ID0gTlVMTDsNCisJKmNv dW50ZXJfb3V0ID0gMDsNCisgICAgfSBlbHNlIHsNCisJZ19hdXRvIChHU3RydikgdG9rZW5zID0g TlVMTDsNCisJYnVmZmVyX2xpbmUgKGluKTsNCisNCisJdG9rZW5zID0gdG9rZW5pemVfYnVmZmVy ICgpOw0KKw0KKwkqdXVpZF9vdXQgPSB0b2tlbnNbMF07DQorCXN0cjJ1bCAodG9rZW5zWzFdLCAm bnVtKTsNCisNCisJZmxvZyAoImxvYWRlZCB1dWlkID0gJXNcdGxhc3Rtb2QgPSAlenVcbiIsIHRv a2Vuc1swXSwgbnVtKTsNCisgICAgfQ0KKw0KKyAgICAqY291bnRlcl9vdXQgPSBudW07DQorDQor fQ0KKw0KK3N0YXRpYyB2b2lkDQorY21kX2NhcGFiaWxpdGllcyAoKQ0KK3sNCisgICAgZnB1dHMg KCJpbXBvcnRcbmV4cG9ydFxucmVmc3BlYyByZWZzL2hlYWRzLyo6cmVmcy9ub3RtdWNoLypcblxu Iiwgc3Rkb3V0KTsNCisgICAgZmZsdXNoIChzdGRvdXQpOw0KK30NCisNCitzdGF0aWMgdm9pZA0K K2NtZF9saXN0IChub3RtdWNoX2RhdGFiYXNlX3QgKmRiLCBjb25zdCBjaGFyICp1dWlkLCB1bnNp Z25lZCBsb25nIGxhc3Rtb2QpDQorew0KKyAgICB1bnNpZ25lZCBsb25nIGRiX2xhc3Rtb2Q7DQor ICAgIGNvbnN0IGNoYXIgKmRiX3V1aWQ7DQorDQorICAgIGRiX2xhc3Rtb2QgPSBub3RtdWNoX2Rh dGFiYXNlX2dldF9yZXZpc2lvbiAoZGIsICZkYl91dWlkKTsNCisNCisgICAgcHJpbnRmICgiPyBy ZWZzL2hlYWRzL21hc3RlciVzXG5cbiIsDQorCSAgICBlcXVhbF9sYXN0bW9kICh1dWlkLCBsYXN0 bW9kLCBkYl91dWlkLCBkYl9sYXN0bW9kKSA/ICIgdW5jaGFuZ2VkIiA6ICIiKTsNCit9DQorDQor Lyogc3R1YnMgc2luY2Ugd2UgY2Fubm90IGxpbmsgd2l0aCBub3RtdWNoLm8gKi8NCitjb25zdCBu b3RtdWNoX29wdF9kZXNjX3Qgbm90bXVjaF9zaGFyZWRfb3B0aW9uc1tdID0gew0KKyAgICB7IH0N Cit9Ow0KKw0KK2NvbnN0IGNoYXIgKm5vdG11Y2hfcmVxdWVzdGVkX2RiX3V1aWQgPSBOVUxMOw0K Kw0KK3ZvaWQNCitub3RtdWNoX3Byb2Nlc3Nfc2hhcmVkX29wdGlvbnMgKHVudXNlZCAobm90bXVj aF9kYXRhYmFzZV90ICpub3RtdWNoKSwNCisJCQkJdW51c2VkIChjb25zdCBjaGFyICpkdW1teSkp DQorew0KK30NCisNCitpbnQNCitub3RtdWNoX21pbmltYWxfb3B0aW9ucyAodW51c2VkIChjb25z dCBjaGFyICpzdWJjb21tYW5kKSwNCisJCQkgdW51c2VkIChpbnQgYXJnYyksDQorCQkJIHVudXNl ZCAoY2hhciAqKmFyZ3YpKQ0KK3sNCisgICAgcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBub3Rt dWNoX2RhdGFiYXNlX3QgKg0KK29wZW5fZGF0YWJhc2UgKGNvbnN0IGNoYXIgKmFyZykNCit7DQor ICAgIG5vdG11Y2hfc3RhdHVzX3Qgc3RhdHVzOw0KKyAgICBub3RtdWNoX2RhdGFiYXNlX3QgKm5v dG11Y2g7DQorICAgIGNvbnN0IGNoYXIgKnBhdGggPSBOVUxMOw0KKyAgICBjb25zdCBjaGFyICpj b25maWcgPSBOVUxMOw0KKyAgICBjb25zdCBjaGFyICpwcm9maWxlID0gTlVMTDsNCisgICAgY29u c3QgY2hhciAqc2NoZW1lID0gTlVMTDsNCisgICAgY29uc3QgY2hhciAqdXJpcXVlcnkgPSBOVUxM Ow0KKyAgICBnX2F1dG9mcmVlIGNoYXIgKnN0YXR1c19zdHJpbmcgPSBOVUxMOw0KKw0KKyAgICBn X2F1dG9wdHIgKEdVcmkpIHVyaSA9IE5VTEw7DQorICAgIGdfYXV0b3B0ciAoR0hhc2hUYWJsZSkg cGFyYW1zID0gTlVMTDsNCisgICAgZ19hdXRvcHRyIChHRXJyb3IpIGdlcnJvciA9IE5VTEw7DQor ICAgIGdfYXV0b3B0ciAoR1N0cmluZykgYWRkcmVzcyA9IE5VTEw7DQorDQorICAgIGFkZHJlc3Mg PSBnX3N0cmluZ19uZXcgKGFyZyk7DQorDQorICAgIHNjaGVtZSA9IGdfdXJpX3BlZWtfc2NoZW1l IChhZGRyZXNzLT5zdHIpOw0KKyAgICBpZiAoISBzY2hlbWUgfHwgKHN0cmNtcCAoc2NoZW1lLCAi bm90bXVjaCIpICE9IDApKSB7DQorCUFTU0VSVCAoZ19zdHJpbmdfcHJlcGVuZCAoYWRkcmVzcywg Im5vdG11Y2g6Ly8iKSk7DQorICAgIH0NCisNCisgICAgdXJpID0gZ191cmlfcGFyc2UgKGFkZHJl c3MtPnN0ciwgR19VUklfRkxBR1NfRU5DT0RFRF9RVUVSWSwgJmdlcnJvcik7DQorICAgIGVuc3Vy ZSAodXJpLCAidW5hYmxlIHRvIHBhcnNlIFVSTC9hZGRyZXNzICVzOiAlc1xuIiwgYWRkcmVzcy0+ c3RyLCBnbWVzc2FnZSAoZ2Vycm9yKSk7DQorDQorICAgIHVyaXF1ZXJ5ID0gZ191cmlfZ2V0X3F1 ZXJ5ICh1cmkpOw0KKyAgICBpZiAodXJpcXVlcnkpIHsNCisJZmxvZyAoInVyaXF1ZXJ5ID0gJXNc biIsIHVyaXF1ZXJ5KTsNCisJcGFyYW1zID0gZ191cmlfcGFyc2VfcGFyYW1zICh1cmlxdWVyeSwg LTEsICImIiwgR19VUklfUEFSQU1TX05PTkUsICZnZXJyb3IpOw0KKwllbnN1cmUgKHBhcmFtcywg ICJ1bmFibGUgdG8gcGFyc2UgcGFyYW1ldGVycyAlczogJXNcbiIsIHVyaXF1ZXJ5LCBnbWVzc2Fn ZSAoZ2Vycm9yKSk7DQorICAgIH0NCisNCisgICAgaWYgKHN0cmxlbiAoZ191cmlfZ2V0X3BhdGgg KHVyaSkpID4gMCkgew0KKwlwYXRoID0gZ191cmlfZ2V0X3BhdGggKHVyaSk7DQorCWNvbmZpZyA9 ICIiOw0KKyAgICB9DQorDQorICAgIGlmIChwYXJhbXMpIHsNCisJaWYgKCEgcGF0aCkNCisJICAg IHBhdGggPSBnX2hhc2hfdGFibGVfbG9va3VwIChwYXJhbXMsICJwYXRoIik7DQorCWNvbmZpZyA9 IGdfaGFzaF90YWJsZV9sb29rdXAgKHBhcmFtcywgImNvbmZpZyIpOw0KKwlwcm9maWxlID0gZ19o YXNoX3RhYmxlX2xvb2t1cCAocGFyYW1zLCAicHJvZmlsZSIpOw0KKyAgICB9DQorDQorICAgIGZs b2cgKCJ1cmwgPSAlc1xucGF0aCA9ICVzXG5jb25maWcgPSAlc1xucHJvZmlsZSA9ICVzXG4iLA0K KwkgIGFkZHJlc3MtPnN0ciwgcGF0aCwgY29uZmlnLCBwcm9maWxlKTsNCisNCisgICAgc3RhdHVz ID0gbm90bXVjaF9kYXRhYmFzZV9vcGVuX3dpdGhfY29uZmlnIChwYXRoLA0KKwkJCQkJCU5PVE1V Q0hfREFUQUJBU0VfTU9ERV9SRUFEX1dSSVRFLA0KKwkJCQkJCWNvbmZpZywNCisJCQkJCQlwcm9m aWxlLA0KKwkJCQkJCSZub3RtdWNoLA0KKwkJCQkJCSZzdGF0dXNfc3RyaW5nKTsNCisNCisgICAg ZW5zdXJlIChzdGF0dXMgPT0gMCwgIm9wZW4gZGF0YWJhc2U6ICVzIiwgc3RhdHVzX3N0cmluZyk7 DQorDQorICAgIHJldHVybiBub3RtdWNoOw0KK30NCisNCitpbnQNCittYWluIChpbnQgYXJnYywg Y2hhciAqYXJndltdKQ0KK3sNCisgICAgbm90bXVjaF9zdGF0dXNfdCBzdGF0dXM7DQorICAgIG5v dG11Y2hfZGF0YWJhc2VfdCAqZGI7DQorICAgIHVuc2lnbmVkIGxvbmcgbGFzdG1vZCA9IDA7DQor ICAgIGNoYXIgKnV1aWQgPSBOVUxMOw0KKyAgICBjb25zdCBjaGFyICpubV9kaXIgPSBOVUxMOw0K KyAgICBnX2F1dG9mcmVlIGNoYXIgKnN0YXR1c19zdHJpbmcgPSBOVUxMOw0KKyAgICBjb25zdCBj aGFyICpnaXRfZGlyOw0KKyAgICBzc2l6ZV90IG5yZWFkOw0KKyAgICBjb25zdCBjaGFyICpsb2df ZmlsZV9uYW1lOw0KKw0KKyAgICBkZWJ1Z19mbGFncyA9IGdldGVudiAoIkdJVF9SRU1PVEVfTk1f REVCVUciKTsNCisgICAgbG9nX2ZpbGVfbmFtZSA9IGdldGVudiAoIkdJVF9SRU1PVEVfTk1fTE9H Iik7DQorDQorICAgIGlmIChsb2dfZmlsZV9uYW1lKQ0KKwlsb2dfZmlsZSA9IGZvcGVuIChsb2df ZmlsZV9uYW1lLCAidyIpOw0KKw0KKyAgICBlbnN1cmUgKGFyZ2MgPj0gMywgInVzYWdlOiAlcyBB TElBUyBVUkxcbiIsIGFyZ3ZbMF0pOw0KKw0KKyAgICBkYiA9IG9wZW5fZGF0YWJhc2UgKGFyZ3Zb Ml0pOw0KKw0KKyAgICBnaXRfZGlyID0gZ2V0ZW52ICgiR0lUX0RJUiIpOw0KKyAgICBlbnN1cmUg KGdpdF9kaXIsICJHSVRfRElSIG5vdCBzZXQiKTsNCisgICAgZmxvZyAoIkdJVF9ESVI9JXNcbiIs IGdpdF9kaXIpOw0KKw0KKyAgICBBU1NFUlQgKG5tX2RpciA9IHRhbGxvY19hc3ByaW50ZiAoZGIs ICIlcy8lcyIsIGdpdF9kaXIsICJub3RtdWNoIikpOw0KKw0KKyAgICBzdGF0dXMgPSBta2Rpcl9y ZWN1cnNpdmUgKGRiLCBubV9kaXIsIDA3MDAsICZzdGF0dXNfc3RyaW5nKTsNCisgICAgZW5zdXJl IChzdGF0dXMgPT0gMCwgIm1rZGlyOiAlcyIsIHN0YXR1c19zdHJpbmcpOw0KKw0KKyAgICByZWFk X2xhc3Rtb2QgKG5tX2RpciwgJnV1aWQsICZsYXN0bW9kKTsNCisNCisgICAgd2hpbGUgKChucmVh ZCA9IGdldGxpbmUgKCZidWZmZXIsICZidWZmZXJfbGVuLCBzdGRpbikpICE9IC0xKSB7DQorCWNo YXIgKnMgPSBidWZmZXI7DQorCWZsb2cgKCJjb21tYW5kID0gJXNcbiIsIGJ1ZmZlcik7DQorDQor CS8qIHNraXAgbGVhZGluZyBzcGFjZSAqLw0KKwl3aGlsZSAoKnMgJiYgaXNzcGFjZSAoKnMpKSBz Kys7DQorDQorCWlmICghICpzKQ0KKwkgICAgYnJlYWs7DQorDQorCWlmIChTVFJOQ01QX0xJVEVS QUwgKHMsICJjYXBhYmlsaXRpZXMiKSA9PSAwKQ0KKwkgICAgY21kX2NhcGFiaWxpdGllcyAoKTsN CisJZWxzZSBpZiAoU1RSTkNNUF9MSVRFUkFMIChzLCAibGlzdCIpID09IDApDQorCSAgICBjbWRf bGlzdCAoZGIsIHV1aWQsIGxhc3Rtb2QpOw0KKw0KKwlmZmx1c2ggKHN0ZG91dCk7DQorCWZsb2cg KCJmaW5pc2hlZCBjb21tYW5kID0gJXNcbiIsIHMpOw0KKyAgICB9DQorICAgIGZsb2cgKCJmaW5p c2hlZCBsb29wXG4iKTsNCisNCisgICAgbm90bXVjaF9kYXRhYmFzZV9kZXN0cm95IChkYik7DQor fQ0KZGlmZiAtLWdpdCBhL3Rlc3QvVDg2MC1naXQtcmVtb3RlLnNoIGIvdGVzdC9UODYwLWdpdC1y ZW1vdGUuc2gNCm5ldyBmaWxlIG1vZGUgMTAwNzU1DQppbmRleCAwMDAwMDAwMC4uMWEwODc2MTEN Ci0tLSAvZGV2L251bGwNCisrKyBiL3Rlc3QvVDg2MC1naXQtcmVtb3RlLnNoDQpAQCAtMCwwICsx LDQ2IEBADQorIyEvdXNyL2Jpbi9lbnYgYmFzaA0KK3Rlc3RfZGVzY3JpcHRpb249J2dpdC1yZW1v dGUtbm90bXVjaCcNCisuICQoZGlybmFtZSAiJDAiKS90ZXN0LWxpYi5zaCB8fCBleGl0IDENCisN Citub3RtdWNoX3Nhbml0aXplX2dpdCgpIHsNCisgICAgc2VkICdzL15jb21taXR0ZXIgXCguKlwp IFwoPFtePl0qPlwpIFsxLTldWzAtOV0qIFstK11bMC05XSovY29tbWl0dGVyIFwxIFwyIFRJTUVT VEFNUCBUSU1FWk9ORS8nDQorfQ0KKw0KK2FkZF9lbWFpbF9jb3JwdXMNCisNCitta2RpciByZXBv DQorDQorZ2l0X3RtcD0kKG1rdGVtcCAtZCBnaXRYWFhYWFhYWCkNCisNCitydW5faGVscGVyICgp IHsNCisgICAgZW52IC11IE5PVE1VQ0hfQ09ORklHIEdJVF9ESVI9JHtnaXRfdG1wfSBnaXQtcmVt b3RlLW5vdG11Y2ggZHVtbXktYWxpYXMgIj9jb25maWc9JHtOT1RNVUNIX0NPTkZJR30iDQorfQ0K Kw0KK2V4cG9ydCBHSVRfQ09NTUlUVEVSX05BTUU9Ik5vdG11Y2ggVGVzdCBTdWl0ZSINCitleHBv cnQgR0lUX0NPTU1JVFRFUl9FTUFJTD0ibm90bXVjaEBleGFtcGxlLmNvbSINCitleHBvcnQgR0lU X1JFTU9URV9OTV9ERUJVRz0icyINCitleHBvcnQgR0lUX1JFTU9URV9OTV9MT0c9Z3JuLWxvZy50 eHQNCitFWFBFQ1RFRD0kTk9UTVVDSF9TUkNESVIvdGVzdC9naXQtcmVtb3RlLmV4cGVjdGVkLW91 dHB1dA0KK01BS0VfRVhQT1JUX1BZPSROT1RNVUNIX1NSQ0RJUi90ZXN0L21ha2UtZXhwb3J0LnB5 DQorDQorVEFHX0ZJTEU9Ijg3L2IxLzRFRkM3NDNBLjMwNjA2MDlAYXByaWwub3JnL3RhZ3MiDQor DQordGVzdF9iZWdpbl9zdWJ0ZXN0ICdjYXBhYmlsaXRpZXMnDQorZWNobyBjYXBhYmlsaXRpZXMg fCBydW5faGVscGVyID4gT1VUUFVUDQorY2F0IDw8RU9GID4gRVhQRUNURUQNCitpbXBvcnQNCitl eHBvcnQNCityZWZzcGVjIHJlZnMvaGVhZHMvKjpyZWZzL25vdG11Y2gvKg0KKw0KK0VPRg0KK3Rl c3RfZXhwZWN0X2VxdWFsX2ZpbGUgRVhQRUNURUQgT1VUUFVUDQorDQordGVzdF9iZWdpbl9zdWJ0 ZXN0ICdsaXN0Jw0KK2VjaG8gbGlzdCB8IHJ1bl9oZWxwZXIgPiBPVVRQVVQNCitjYXQgPDxFT0Yg PiBFWFBFQ1RFRA0KKz8gcmVmcy9oZWFkcy9tYXN0ZXINCisNCitFT0YNCit0ZXN0X2V4cGVjdF9l cXVhbF9maWxlIEVYUEVDVEVEIE9VVFBVVA0KKw0KK3Rlc3RfZG9uZQ0KLS0gDQoyLjQzLjANCg0=