From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id 0ETaFUHkUWJ4SgAAgWs5BA (envelope-from ) for ; Sat, 09 Apr 2022 21:53:37 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id QJ9nDkHkUWJm2QAAG6o9tA (envelope-from ) for ; Sat, 09 Apr 2022 21:53:37 +0200 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 B1AA839F41 for ; Sat, 9 Apr 2022 21:53:36 +0200 (CEST) Received: from yantan.tethera.net (localhost [127.0.0.1]) by mail.notmuchmail.org (Postfix) with ESMTP id 0B4625F741; Sat, 9 Apr 2022 19:46:13 +0000 (UTC) Received: from fethera.tethera.net (fethera.tethera.net [198.245.60.197]) by mail.notmuchmail.org (Postfix) with ESMTP id E5E7C5F73F for ; Sat, 9 Apr 2022 19:46:08 +0000 (UTC) Received: by fethera.tethera.net (Postfix, from userid 1001) id 630455FBD7; Sat, 9 Apr 2022 15:46:08 -0400 (EDT) Received: (nullmailer pid 807460 invoked by uid 1000); Sat, 09 Apr 2022 19:46:07 -0000 From: David Bremner To: notmuch@notmuchmail.org Subject: [PATCH v2 2/2] lib: add sexp: prefix to Xapian (infix) query parser. Date: Sat, 9 Apr 2022 16:45:48 -0300 Message-Id: <20220409194548.806763-3-david@tethera.net> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220409194548.806763-1-david@tethera.net> References: <20220409194548.806763-1-david@tethera.net> MIME-Version: 1.0 Message-ID-Hash: FP3USQMXO5FALRKX7MOEBNN6HVDHWPH5 X-Message-ID-Hash: FP3USQMXO5FALRKX7MOEBNN6HVDHWPH5 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-To: larch@yhetil.org X-Migadu-Country: DE ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1649534016; 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; bh=dKufJalCt2QWS3NO9DeQ2iZ1v5OufUbPqW/Wn04y3yw=; b=BD8YZzuQgZFlfzUcbhH1jCD9Nl28kiuMC2//Ua4eE2+fs6MyQ8l6btI1768rlgt+3Qwayo WnQ9rW6x6QsDSQD5r++jDhDewtR1SxnYHjuwcxQME1CrSeD53PBtfWNpncthqOn4Qzfgfs aNTZXwREvQeGQwTJTGWoy6RJkTYHSzH3esEbh3Ym5d09XSTracfQkey1sZrAqh4cojJsmK 9Z7+M44k3J4SpKoBs6+rFIZRT9jpzURUKR4HAiCIsirmcbcJ73N572CxS2RIwDT/YS+wBp RhD6xzLQTiPlEo9ngAzyLLMTmC5a8DBeoeuMRCgj3+CRipB/CGl+k719dUVuww== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1649534016; a=rsa-sha256; cv=none; b=i4IYdkythgwR+OxqIjT2FnsTNpk2PWLtWow9LoCmpvRaGcPvjvd+Nte0tbKs+I3dYjByUb zopWzNiNKs/Z/tnnDPQDuVKOtbX/qxBhDdEFaXAw2bJGhGSfaNCtY0hX+w1ahkHEKRlenZ 26TdYQESJpCVWAZJ7+ATfjrF3160te219AGmgzoJRQ0rTDavfZwggd9rSXBW6yuRfiSwod JJAhH0EeaUHEeeEl+waGDkm+SLxAMk7pFJ82x17KDSDBufM3jYLJyyHJjgYmwnqv/x1N6/ WJ6ranQ7MMU/z/sjzdlCiEbBsyT3ejWAiX+jBRfbNmOZbFJe0s2mwuO6VsfncQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; 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 X-Migadu-Spam-Score: 5.10 Authentication-Results: aspmx1.migadu.com; dkim=none; 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 X-Migadu-Queue-Id: B1AA839F41 X-Spam-Score: 5.10 X-Migadu-Scanner: scn0.migadu.com X-TUID: bIRCYUOTSlLG VGhpcyBpcyBhbmFsb2dvdXMgdG8gdGhlICJpbmZpeCIgcHJlZml4IHByb3ZpZGVkIGJ5IHRoZSBz LWV4cHJlc3Npb24NCmJhc2VkIHF1ZXJ5IHBhcnNlci4NCi0tLQ0KIGRvYy9tYW43L25vdG11Y2gt c2VhcmNoLXRlcm1zLnJzdCB8IDE3ICsrKysrKysrKysrKy0NCiBsaWIvTWFrZWZpbGUubG9jYWwg ICAgICAgICAgICAgICAgfCAgMyArKy0NCiBsaWIvcHJlZml4LmNjICAgICAgICAgICAgICAgICAg ICAgfCAgNSArKysrDQogbGliL3NleHAtZnAuY2MgICAgICAgICAgICAgICAgICAgIHwgNDAgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrDQogbGliL3NleHAtZnAuaCAgICAgICAgICAgICAg ICAgICAgIHwgNDEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KIHRlc3QvVDA4MS1z ZXhwci1zZWFyY2guc2ggICAgICAgICB8IDI1ICsrKysrKysrKysrKysrKysrKysNCiA2IGZpbGVz IGNoYW5nZWQsIDEyOSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0KIGNyZWF0ZSBtb2Rl IDEwMDY0NCBsaWIvc2V4cC1mcC5jYw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvc2V4cC1mcC5o DQoNCmRpZmYgLS1naXQgYS9kb2MvbWFuNy9ub3RtdWNoLXNlYXJjaC10ZXJtcy5yc3QgYi9kb2Mv bWFuNy9ub3RtdWNoLXNlYXJjaC10ZXJtcy5yc3QNCmluZGV4IGY4YWQxZWRiLi40ZjYxNmI3ZSAx MDA2NDQNCi0tLSBhL2RvYy9tYW43L25vdG11Y2gtc2VhcmNoLXRlcm1zLnJzdA0KKysrIGIvZG9j L21hbjcvbm90bXVjaC1zZWFyY2gtdGVybXMucnN0DQpAQCAtMTY5LDYgKzE2OSwxMiBAQCBwcm9w ZXJ0eTo8a2V5Pj08dmFsdWU+DQogICAgIGNhbiBiZSBwcmVzZW50IG9uIGEgZ2l2ZW4gbWVzc2Fn ZSB3aXRoIHNldmVyYWwgZGlmZmVyZW50IHZhbHVlcy4NCiAgICAgU2VlIDphbnk6YG5vdG11Y2gt cHJvcGVydGllcyg3KWAgZm9yIG1vcmUgZGV0YWlscy4NCiANCitzZXhwOjxzdWJxdWVyeT4NCisg ICAgVGhlICoqc2V4cDoqKiBwcmVmaXggYWxsb3dzIHN1YnF1ZXJpZXMgaW4gdGhlIGZvcm1hdA0K KyAgICBkb2N1bWVudGVkIGluIDphbnk6YG5vdG11Y2gtc2V4cC1xdWVyaWVzKDcpYC4gTm90ZSB0 aGF0IHN1YnF1ZXJpZXMgY29udGFpbmluZw0KKyAgICBzcGFjZXMgbXVzdCBiZSBxdW90ZWQsIGFu ZCBhbnkgZW1iZWRkZWQgZG91YmxlIHF1b3RlcyBtdXN0IGJlIGVzY2FwZWQNCisgICAgKHNlZSA6 YW55OmBxdW90aW5nYCkuDQorDQogVXNlciBkZWZpbmVkIHByZWZpeGVzIGFyZSBhbHNvIHN1cHBv cnRlZCwgc2VlIDphbnk6YG5vdG11Y2gtY29uZmlnKDEpYCBmb3INCiBkZXRhaWxzLg0KIA0KQEAg LTI1Nyw3ICsyNjMsNyBAQCBCb29sZWFuDQogUHJvYmFiaWxpc3RpYw0KICAgKipib2R5OioqLCAq KnRvOioqLCAqKmF0dGFjaG1lbnQ6KiosICoqbWltZXR5cGU6KioNCiBTcGVjaWFsDQotICAgKipm cm9tOioqLCAqKnF1ZXJ5OioqLCAqKnN1YmplY3Q6KioNCisgICAqKmZyb206KiosICoqcXVlcnk6 KiosICoqc3ViamVjdDoqKiwgKipzZXhwOioqDQogDQogVGVybXMgYW5kIHBocmFzZXMNCiAtLS0t LS0tLS0tLS0tLS0tLQ0KQEAgLTI5Nyw2ICszMDMsOCBAQCBCb3RoIG9mIHRoZXNlIHdpbGwgbWF0 Y2ggYSBzdWJqZWN0ICJGcmVlIERlbGljaW91cyBQaXp6YSIgd2hpbGUNCiANCiB3aWxsIG5vdC4N CiANCisuLiBfcXVvdGluZzoNCisNCiBRdW90aW5nDQogLS0tLS0tLQ0KIA0KQEAgLTMyNCw2ICsz MzIsMTMgQEAgZS5nLg0KICAgICUgbm90bXVjaCBzZWFyY2ggJ2ZvbGRlcjoiL14uKi8oSnVua3xT cGFtKSQvIicNCiAgICAlIG5vdG11Y2ggc2VhcmNoICd0aHJlYWQ6Intmcm9tOm1hbGxvcnkgYW5k IGRhdGU6MjAwOX0iIGFuZCB0aHJlYWQ6e3RvOm1hbGxvcnl9Jw0KIA0KK0RvdWJsZSBxdW90ZXMg d2l0aGluIHF1ZXJ5IHN0cmluZ3MgbmVlZCB0byBiZSBkb3VibGVkIHRvIGVzY2FwZSB0aGVtLg0K Kw0KKzo6DQorDQorICAgJSBub3RtdWNoIHNlYXJjaCAndGFnOiIiInF1b3RlZCB0YWciIiInDQor ICAgJSBub3RtdWNoIHNlYXJjaCAnc2V4cDoiKG9yICIid2l6YXJkIiIgIiJwaHAiIikiJw0KKw0K IERBVEUgQU5EIFRJTUUgU0VBUkNIDQogPT09PT09PT09PT09PT09PT09PT0NCiANCmRpZmYgLS1n aXQgYS9saWIvTWFrZWZpbGUubG9jYWwgYi9saWIvTWFrZWZpbGUubG9jYWwNCmluZGV4IDEzNzhh NzRiLi42ZDY3YTJhNCAxMDA2NDQNCi0tLSBhL2xpYi9NYWtlZmlsZS5sb2NhbA0KKysrIGIvbGli L01ha2VmaWxlLmxvY2FsDQpAQCAtNjQsNyArNjQsOCBAQCBsaWJub3RtdWNoX2N4eF9zcmNzID0J CVwNCiAJJChkaXIpL3ByZWZpeC5jYwlcDQogCSQoZGlyKS9vcGVuLmNjCQlcDQogCSQoZGlyKS9p bml0LmNjCQlcDQotCSQoZGlyKS9wYXJzZS1zZXhwLmNjDQorCSQoZGlyKS9wYXJzZS1zZXhwLmNj CVwNCisJJChkaXIpL3NleHAtZnAuY2MNCiANCiBsaWJub3RtdWNoX21vZHVsZXMgOj0gJChsaWJu b3RtdWNoX2Nfc3JjczouYz0ubykgJChsaWJub3RtdWNoX2N4eF9zcmNzOi5jYz0ubykNCiANCmRp ZmYgLS1naXQgYS9saWIvcHJlZml4LmNjIGIvbGliL3ByZWZpeC5jYw0KaW5kZXggODU3YzA1Yjku LjA2ZTIzMzNhIDEwMDY0NA0KLS0tIGEvbGliL3ByZWZpeC5jYw0KKysrIGIvbGliL3ByZWZpeC5j Yw0KQEAgLTMsNiArMyw3IEBADQogI2luY2x1ZGUgInRocmVhZC1mcC5oIg0KICNpbmNsdWRlICJy ZWdleHAtZmllbGRzLmgiDQogI2luY2x1ZGUgInBhcnNlLXRpbWUtdnJwLmgiDQorI2luY2x1ZGUg InNleHAtZnAuaCINCiANCiB0eXBlZGVmIHN0cnVjdCB7DQogICAgIGNvbnN0IGNoYXIgKm5hbWU7 DQpAQCAtNjAsNiArNjEsOCBAQCBwcmVmaXhfdCBwcmVmaXhfdGFibGVbXSA9IHsNCiAgICAgICBO T1RNVUNIX0ZJRUxEX1BST0NFU1NPUiB9LA0KICAgICB7ICJxdWVyeSIsICAgICAgICAgICAgICAg ICAgTlVMTCwgICAgICAgICAgIE5PVE1VQ0hfRklFTERfRVhURVJOQUwgfA0KICAgICAgIE5PVE1V Q0hfRklFTERfUFJPQ0VTU09SIH0sDQorICAgIHsgInNleHAiLCAgICAgICAgICAgICAgICAgIE5V TEwsICAgICAgICAgICAgTk9UTVVDSF9GSUVMRF9FWFRFUk5BTCB8DQorICAgICAgTk9UTVVDSF9G SUVMRF9QUk9DRVNTT1IgfSwNCiAgICAgeyAiZnJvbSIsICAgICAgICAgICAgICAgICAgICJYRlJP TSIsICAgICAgICBOT1RNVUNIX0ZJRUxEX0VYVEVSTkFMIHwNCiAgICAgICBOT1RNVUNIX0ZJRUxE X1BST0JBQklMSVNUSUMgfA0KICAgICAgIE5PVE1VQ0hfRklFTERfUFJPQ0VTU09SIH0sDQpAQCAt MTM4LDYgKzE0MSw4IEBAIF9zZXR1cF9xdWVyeV9maWVsZCAoY29uc3QgcHJlZml4X3QgKnByZWZp eCwgbm90bXVjaF9kYXRhYmFzZV90ICpub3RtdWNoKQ0KIAkgICAgZnAgPSAobmV3IFF1ZXJ5Rmll bGRQcm9jZXNzb3IgKCpub3RtdWNoLT5xdWVyeV9wYXJzZXIsIG5vdG11Y2gpKS0+cmVsZWFzZSAo KTsNCiAJZWxzZSBpZiAoU1RSTkNNUF9MSVRFUkFMIChwcmVmaXgtPm5hbWUsICJ0aHJlYWQiKSA9 PSAwKQ0KIAkgICAgZnAgPSAobmV3IFRocmVhZEZpZWxkUHJvY2Vzc29yICgqbm90bXVjaC0+cXVl cnlfcGFyc2VyLCBub3RtdWNoKSktPnJlbGVhc2UgKCk7DQorCWVsc2UgaWYgKFNUUk5DTVBfTElU RVJBTCAocHJlZml4LT5uYW1lLCAic2V4cCIpID09IDApDQorCSAgICBmcCA9IChuZXcgU2V4cEZp ZWxkUHJvY2Vzc29yIChub3RtdWNoKSktPnJlbGVhc2UgKCk7DQogCWVsc2UNCiAJICAgIGZwID0g KG5ldyBSZWdleHBGaWVsZFByb2Nlc3NvciAocHJlZml4LT5uYW1lLCBwcmVmaXgtPmZsYWdzLA0K IAkJCQkJICAgICpub3RtdWNoLT5xdWVyeV9wYXJzZXIsIG5vdG11Y2gpKS0+cmVsZWFzZSAoKTsN CmRpZmYgLS1naXQgYS9saWIvc2V4cC1mcC5jYyBiL2xpYi9zZXhwLWZwLmNjDQpuZXcgZmlsZSBt b2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAuLmVkMjZmNmVjDQotLS0gL2Rldi9udWxsDQorKysg Yi9saWIvc2V4cC1mcC5jYw0KQEAgLTAsMCArMSw0MCBAQA0KKy8qIHNleHAtZnAuY2MgLSAic2V4 cDoiIGZpZWxkIHByb2Nlc3NvciBnbHVlDQorICoNCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBu b3RtdWNoLg0KKyAqDQorICogQ29weXJpZ2h0IMKpIDIwMjIgRGF2aWQgQnJlbW5lcg0KKyAqDQor ICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkNCisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yDQorICogKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisgKg0KKyAqIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KKyAqIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m DQorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQ0KKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8gLg0KKyAqDQorICogQXV0aG9y OiBEYXZpZCBCcmVtbmVyIDxkYXZpZEB0ZXRoZXJhLm5ldD4NCisgKi8NCisNCisjaW5jbHVkZSAi ZGF0YWJhc2UtcHJpdmF0ZS5oIg0KKyNpbmNsdWRlICJzZXhwLWZwLmgiDQorI2luY2x1ZGUgPGlv c3RyZWFtPg0KKw0KK1hhcGlhbjo6UXVlcnkNCitTZXhwRmllbGRQcm9jZXNzb3I6Om9wZXJhdG9y KCkgKGNvbnN0IHN0ZDo6c3RyaW5nICYgcXVlcnlfc3RyaW5nKQ0KK3sNCisgICAgbm90bXVjaF9z dGF0dXNfdCBzdGF0dXM7DQorICAgIFhhcGlhbjo6UXVlcnkgb3V0cHV0Ow0KKw0KKyAgICBzdGF0 dXMgPSBfbm90bXVjaF9zZXhwX3N0cmluZ190b194YXBpYW5fcXVlcnkgKG5vdG11Y2gsIHF1ZXJ5 X3N0cmluZy5jX3N0ciAoKSwgb3V0cHV0KTsNCisgICAgaWYgKHN0YXR1cykgew0KKwl0aHJvdyBY YXBpYW46OlF1ZXJ5UGFyc2VyRXJyb3IgKCJlcnJvciBwYXJzaW5nICIgKyBxdWVyeV9zdHJpbmcp Ow0KKyAgICB9DQorDQorICAgIHJldHVybiBvdXRwdXQ7DQorDQorfQ0KZGlmZiAtLWdpdCBhL2xp Yi9zZXhwLWZwLmggYi9saWIvc2V4cC1mcC5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg MDAwMDAwMDAuLjM0MWRmYTdlDQotLS0gL2Rldi9udWxsDQorKysgYi9saWIvc2V4cC1mcC5oDQpA QCAtMCwwICsxLDQxIEBADQorLyogc2V4cC1mcC5oIC0gc2V4cCBmaWVsZCBwcm9jZXNzb3IgZ2x1 ZQ0KKyAqDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2Ygbm90bXVjaC4NCisgKg0KKyAqIENvcHly aWdodCDCqSAyMDIyIERhdmlkIEJyZW1uZXINCisgKg0KKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQorICogaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkNCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcg0KKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uDQorICoNCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KKyAqIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisgKiBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKyAqDQorICogWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UN CisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIGh0dHBzOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvIC4NCisgKg0KKyAqIEF1dGhvcjogRGF2aWQgQnJlbW5lciA8ZGF2aWRA dGV0aGVyYS5uZXQ+DQorICovDQorDQorI2lmbmRlZiBOT1RNVUNIX1NFWFBfRlBfSA0KKyNkZWZp bmUgTk9UTVVDSF9TRVhQX0ZQX0gNCisNCisjaW5jbHVkZSA8eGFwaWFuLmg+DQorI2luY2x1ZGUg Im5vdG11Y2guaCINCisNCitjbGFzcyBTZXhwRmllbGRQcm9jZXNzb3IgOiBwdWJsaWMgWGFwaWFu OjpGaWVsZFByb2Nlc3NvciB7DQorcHJvdGVjdGVkOg0KKyAgICBub3RtdWNoX2RhdGFiYXNlX3Qg Km5vdG11Y2g7DQorDQorcHVibGljOg0KKyAgICBTZXhwRmllbGRQcm9jZXNzb3IgKG5vdG11Y2hf ZGF0YWJhc2VfdCAqbm90bXVjaF8pIDogbm90bXVjaCAobm90bXVjaF8pDQorICAgIHsNCisgICAg fTsNCisNCisgICAgWGFwaWFuOjpRdWVyeSBvcGVyYXRvcigpIChjb25zdCBzdGQ6OnN0cmluZyAm IHF1ZXJ5X3N0cmluZyk7DQorfTsNCisNCisjZW5kaWYgLyogTk9UTVVDSF9TRVhQX0ZQX0ggKi8N CmRpZmYgLS1naXQgYS90ZXN0L1QwODEtc2V4cHItc2VhcmNoLnNoIGIvdGVzdC9UMDgxLXNleHBy LXNlYXJjaC5zaA0KaW5kZXggMDdiMTI2MTkuLmRhODE5MTkwIDEwMDc1NQ0KLS0tIGEvdGVzdC9U MDgxLXNleHByLXNlYXJjaC5zaA0KKysrIGIvdGVzdC9UMDgxLXNleHByLXNlYXJjaC5zaA0KQEAg LTQ2LDYgKzQ2LDE0IEBAIHRocmVhZDpYWFggICAyMDA5LTExLTE4IFsxLzNdIENhcmwgV29ydGh8 IEphbiBKYW5hazsgW25vdG11Y2hdIFdoYXQgYSBncmVhdCBpZGVhDQogRU9GDQogdGVzdF9leHBl Y3RfZXF1YWxfZmlsZSBFWFBFQ1RFRCBPVVRQVVQNCiANCit0ZXN0X2JlZ2luX3N1YnRlc3QgIm9y IG9mIGV4YWN0IHRlcm1zIHZpYSBmaWVsZCBwcm9jZXNzb3IiDQorbm90bXVjaCBzZWFyY2ggICdz ZXhwOiIob3IgIiJwaHAiIiAiIndpemFyZCIiKSInIHwgbm90bXVjaF9zZWFyY2hfc2FuaXRpemUg PiBPVVRQVVQNCitjYXQgPDxFT0YgPiBFWFBFQ1RFRA0KK3RocmVhZDpYWFggICAyMDEwLTEyLTI5 IFsxLzFdIEZyYW7Dp29pcyBCb3Vsb2duZTsgW2F1ci1nZW5lcmFsXSBHdWlkZWxpbmVzOiBjcCwg bWtkaXIgdnMgaW5zdGFsbCAoaW5ib3ggdW5yZWFkKQ0KK3RocmVhZDpYWFggICAyMDA5LTExLTE4 IFsxLzNdIENhcmwgV29ydGh8IEphbiBKYW5hazsgW25vdG11Y2hdIFdoYXQgYSBncmVhdCBpZGVh ISAoaW5ib3ggdW5yZWFkKQ0KK0VPRg0KK3Rlc3RfZXhwZWN0X2VxdWFsX2ZpbGUgRVhQRUNURUQg T1VUUFVUDQorDQogdGVzdF9iZWdpbl9zdWJ0ZXN0ICJzaW5nbGUgdGVybSBpbiBib2R5Ig0KIG5v dG11Y2ggc2VhcmNoIC0tcXVlcnk9c2V4cCAnd2l6YXJkJyB8IG5vdG11Y2hfc2VhcmNoX3Nhbml0 aXplPk9VVFBVVA0KIGNhdCA8PEVPRiA+IEVYUEVDVEVEDQpAQCAtNzE0LDYgKzcyMiwxMSBAQCBu b3RtdWNoIHNlYXJjaCBwcm9wZXJ0eTpmb289YmFyID4gRVhQRUNURUQNCiBub3RtdWNoIHNlYXJj aCAtLXF1ZXJ5PXNleHAgJyhwcm9wZXJ0eSAocnggZm9vPS4qKSknID4gT1VUUFVUDQogdGVzdF9l eHBlY3RfZXF1YWxfZmlsZSBFWFBFQ1RFRCBPVVRQVVQNCiANCit0ZXN0X2JlZ2luX3N1YnRlc3Qg InJlZ2V4cCAncHJvcGVydHknIHNlYXJjaCB2aWEgZmllbGQgcHJvY2Vzc29yIg0KK25vdG11Y2gg c2VhcmNoIHByb3BlcnR5OmZvbz1iYXIgPiBFWFBFQ1RFRA0KK25vdG11Y2ggc2VhcmNoICAnc2V4 cDoiKHByb3BlcnR5IChyeCBmb289LiopKSInID4gT1VUUFVUDQordGVzdF9leHBlY3RfZXF1YWxf ZmlsZSBFWFBFQ1RFRCBPVVRQVVQNCisNCiB0ZXN0X2JlZ2luX3N1YnRlc3QgImFuY2hvcmVkICd0 YWcnIHNlYXJjaCINCiBub3RtdWNoIHNlYXJjaCB0YWc6c2lnbmVkID4gRVhQRUNURUQNCiBub3Rt dWNoIHNlYXJjaCAtLXF1ZXJ5PXNleHAgJyh0YWcgKHJ4IF5zaSkpJyA+IE9VVFBVVA0KQEAgLTc1 MCw2ICs3NjMsMTMgQEAgdGhyZWFkOlhYWCAgIDIwMDktMTEtMTggWzcvN10gTGFycyBLZWxsb2dn LVN0ZWRtYW4sIE1pa2hhaWwgR3VzYXJvdiwgS2VpdGggUGFja2ENCiBFT0YNCiB0ZXN0X2V4cGVj dF9lcXVhbF9maWxlIEVYUEVDVEVEIE9VVFBVVA0KIA0KK3Rlc3RfYmVnaW5fc3VidGVzdCAiQ29t cG91bmQgc3VicXVlcnkgdmlhIGZpZWxkIHByb2Nlc3NvciINCitub3RtdWNoIHNlYXJjaCAnc2V4 cDoiKHRocmVhZCAob2YgKGZyb20ga2VpdGhwKSAoc3ViamVjdCBNYWlsZGlyKSkpIicgfCBub3Rt dWNoX3NlYXJjaF9zYW5pdGl6ZSA+IE9VVFBVVA0KK2NhdDw8RU9GID4gRVhQRUNURUQNCit0aHJl YWQ6WFhYICAgMjAwOS0xMS0xOCBbNy83XSBMYXJzIEtlbGxvZ2ctU3RlZG1hbiwgTWlraGFpbCBH dXNhcm92LCBLZWl0aCBQYWNrYXJkLCBDYXJsIFdvcnRoOyBbbm90bXVjaF0gV29ya2luZyB3aXRo IE1haWxkaXIgc3RvcmFnZT8gKGluYm94IHNpZ25lZCB1bnJlYWQpDQorRU9GDQordGVzdF9leHBl Y3RfZXF1YWxfZmlsZSBFWFBFQ1RFRCBPVVRQVVQNCisNCiB0ZXN0X2JlZ2luX3N1YnRlc3QgImVt cHR5IHN1YnF1ZXJ5Ig0KIG5vdG11Y2ggc2VhcmNoIC0tcXVlcnk9c2V4cCAnKHRocmVhZCAob2Yp KScgMT5PVVRQVVQgMj4mMQ0KIG5vdG11Y2ggc2VhcmNoICcqJyA+IEVYUEVDVEVEDQpAQCAtOTc2 LDYgKzk5NiwxMSBAQCBncmVwIC1SaWwgTGlzdC1JZCAke01BSUxfRElSfSB8IHNvcnQgfCBub3Rt dWNoX2Rpcl9zYW5pdGl6ZSA+IEVYUEVDVEVEDQogbm90bXVjaCBzZWFyY2ggLS1vdXRwdXQ9Zmls ZXMgLS1xdWVyeT1zZXhwICcoTGlzdCAqKScgfCBzb3J0IHwgbm90bXVjaF9kaXJfc2FuaXRpemUg PiBPVVRQVVQNCiB0ZXN0X2V4cGVjdF9lcXVhbF9maWxlIEVYUEVDVEVEIE9VVFBVVA0KIA0KK3Rl c3RfYmVnaW5fc3VidGVzdCAid2lsZGNhcmQgc2VhcmNoIGZvciB1c2VyIGhlYWRlciB2aWEgZmll bGQgcHJvY2Vzc29yIg0KK2dyZXAgLVJpbCBMaXN0LUlkICR7TUFJTF9ESVJ9IHwgc29ydCB8IG5v dG11Y2hfZGlyX3Nhbml0aXplID4gRVhQRUNURUQNCitub3RtdWNoIHNlYXJjaCAtLW91dHB1dD1m aWxlcyAgJ3NleHA6IihMaXN0ICopIicgfCBzb3J0IHwgbm90bXVjaF9kaXJfc2FuaXRpemUgPiBP VVRQVVQNCit0ZXN0X2V4cGVjdF9lcXVhbF9maWxlIEVYUEVDVEVEIE9VVFBVVA0KKw0KIHRlc3Rf YmVnaW5fc3VidGVzdCAid2lsZGNhcmQgc2VhcmNoIGZvciB1c2VyIGhlYWRlciAyIg0KIGdyZXAg LVJpbCBMaXN0LUlkICR7TUFJTF9ESVJ9IHwgc29ydCB8IG5vdG11Y2hfZGlyX3Nhbml0aXplID4g RVhQRUNURUQNCiBub3RtdWNoIHNlYXJjaCAtLW91dHB1dD1maWxlcyAtLXF1ZXJ5PXNleHAgJyhM aXN0IChzdGFydHMtd2l0aCBub3QpKScgfCBzb3J0IHwgbm90bXVjaF9kaXJfc2FuaXRpemUgPiBP VVRQVVQNCi0tIA0KMi4zNS4xDQoN