From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Dmitry Gutov Newsgroups: gmane.emacs.bugs Subject: bug#67687: Feature request: automatic tags management Date: Fri, 22 Dec 2023 01:37:02 +0200 Message-ID: <661f4951-cb0a-5257-63b0-efe71a0d217e@gutov.dev> References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> <58D84A29-9A63-45BA-AD8B-B476CDC931A1@gmail.com> <812729c8-726f-d60e-2603-2d8e588929fd@gutov.dev> <835y0sgg12.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------S9YQl2j6jNWsjRptU7ehtB9r" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="38447"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, stefankangas@gmail.com To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Dec 22 00:38:29 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1rGScU-0009jA-Hl for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 22 Dec 2023 00:38:27 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rGSc4-0007Ln-Of; Thu, 21 Dec 2023 18:38:00 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rGSc2-0007Kl-Jm for bug-gnu-emacs@gnu.org; Thu, 21 Dec 2023 18:37:58 -0500 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rGSc2-0003ZW-Bd for bug-gnu-emacs@gnu.org; Thu, 21 Dec 2023 18:37:58 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rGSc6-0005nS-AI for bug-gnu-emacs@gnu.org; Thu, 21 Dec 2023 18:38:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 21 Dec 2023 23:38:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 67687 X-GNU-PR-Package: emacs Original-Received: via spool by 67687-submit@debbugs.gnu.org id=B67687.170320184222233 (code B ref 67687); Thu, 21 Dec 2023 23:38:02 +0000 Original-Received: (at 67687) by debbugs.gnu.org; 21 Dec 2023 23:37:22 +0000 Original-Received: from localhost ([127.0.0.1]:45689 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rGSbR-0005mV-LU for submit@debbugs.gnu.org; Thu, 21 Dec 2023 18:37:22 -0500 Original-Received: from wout3-smtp.messagingengine.com ([64.147.123.19]:51711) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rGSbP-0005mI-4p for 67687@debbugs.gnu.org; Thu, 21 Dec 2023 18:37:20 -0500 Original-Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.west.internal (Postfix) with ESMTP id D75173200A79; Thu, 21 Dec 2023 18:37:08 -0500 (EST) Original-Received: from mailfrontend1 ([10.202.2.162]) by compute5.internal (MEProxy); Thu, 21 Dec 2023 18:37:09 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm3; t=1703201828; x=1703288228; bh=EoOzmujMEX RYdtQYxW31+h7tgO81f8nVvZn4SUI9Xv4=; b=WNgd5smJ89jlbFLIWKqrlERh+R 2Oium3H0nZaOEJF4Q8tDU15Elf8/Eaf0ICtUkQXc5deGJGTecZOx96ixWwMI9b4+ zZzytilz9sJl0Dv1oDVyKM+ySnxCvZYJq27t96D9bvgmty+225T8/NA4lYX9X8Ql GBs53X23II1HM8C0nemJwTs+dOLIcR+8jN0kN1whl8ItigkCdsmBuSsndMx64h8e ARgnrufbPdD5LZ7vbEzptRggoQyWf6n0EaZlp/fvvS276N55gNUXmjtad196tLxu Y/9dovOEF+vkpR300Twdn1uUhwVL3YdXFoLKoOSheIBxKFQZEGkUtP4rxogQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; t=1703201828; x=1703288228; bh=EoOzmujMEXRYdtQYxW31+h7tgO81 f8nVvZn4SUI9Xv4=; b=YJpaWJ2zoJcOUyN92nPNix6S8NXR1KN0L2MlRcxWHlWv Ffe4hNrhfQttPiRW9bf42XnSdY6IzQLsCT2W9p8s6MH63LrqePcaS5x80E5o0Vgq esLqxQ5cRES5gvAE0dHNlh1gRCnTJXEpdbgZKNb/YhS5Gmtoa/z1s+sy7YyS4qC8 2sDE9RzaCFxYfV1CsHGAL8D+pMvRssnMa1fFd309ZDw0yeAhK2FoGuYxOCLLUIHS 7/+kKshxQouT03e+gOI1loo7cAEZbGBtS8AP6DmNX+jkxwGwwxwQAE5cKzszcyvZ qnY++NoLZrk8EIMSVyyQ+CkMQPqFzSxEoKCuiOCdvg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdduiedguddvucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptgfkffggfgfuhffvvehfjgesmhdtreertdefjeenucfhrhhomhepffhmihht rhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtth gvrhhnpeeiheegkeetgffghefhgeeiveeuudegvdeuteffhfettdelleehkeffledvuddt leenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumh hithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Original-Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 21 Dec 2023 18:37:06 -0500 (EST) Content-Language: en-US In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:276645 Archived-At: This is a multi-part message in MIME format. --------------S9YQl2j6jNWsjRptU7ehtB9r Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 21/12/2023 18:46, Dmitry Gutov wrote: > See instead the patch attached to this bug report. Here's an update, incorporating the feedback from here and there. --------------S9YQl2j6jNWsjRptU7ehtB9r Content-Type: text/x-patch; charset=UTF-8; name="etags-regen-v2.diff" Content-Disposition: attachment; filename="etags-regen-v2.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhLy5kaXItbG9jYWxzLmVsIGIvLmRpci1sb2NhbHMuZWwKaW5kZXggZTA4 N2FhODljZDEuLmQzMDg1OTFjNDc1IDEwMDY0NAotLS0gYS8uZGlyLWxvY2Fscy5lbAorKysg Yi8uZGlyLWxvY2Fscy5lbApAQCAtOCw2ICs4LDEyIEBACiAgICAgICAgICAodmMtZ2l0LWFu bm90YXRlLXN3aXRjaGVzIC4gIi13IikKICAgICAgICAgIChidWctcmVmZXJlbmNlLXVybC1m b3JtYXQgLiAiaHR0cHM6Ly9kZWJidWdzLmdudS5vcmcvJXMiKQogCSAoZGlmZi1hZGQtbG9n LXVzZS1yZWxhdGl2ZS1uYW1lcyAuIHQpCisgICAgICAgICAoZXRhZ3MtcmVnZW4tbGFuZy1y ZWdleHAtYWxpc3QKKyAgICAgICAgICAuCisgICAgICAgICAgKCgoImMiICJvYmpjIikgLgor ICAgICAgICAgICAgKCIvWyBcdF0qREVGVkFSX1tBLVpfIFx0KF0rXCJcXChbXlwiXStcXClc Ii9cXDEvIgorICAgICAgICAgICAgICIvWyBcdF0qREVGVkFSX1tBLVpfIFx0KF0rXCJbXlwi XStcIixbIFx0XVxcKFtBLVphLXowLTlfXStcXCkvXFwxLyIpKSkpCisgICAgICAgICAoZXRh Z3MtcmVnZW4taWdub3JlcyAuICgidGVzdC9tYW51YWwvZXRhZ3MvIikpCiAgICAgICAgICAo dmMtcHJlcGFyZS1wYXRjaGVzLXNlcGFyYXRlbHkgLiBuaWwpKSkKICAoYy1tb2RlIC4gKChj LWZpbGUtc3R5bGUgLiAiR05VIikKICAgICAgICAgICAgIChjLW5vaXNlLW1hY3JvLW5hbWVz IC4gKCJJTkxJTkUiICJOT19JTkxJTkUiICJBVFRSSUJVVEVfTk9fU0FOSVRJWkVfVU5ERUZJ TkVEIgpkaWZmIC0tZ2l0IGEvZXRjL05FV1MgYi9ldGMvTkVXUwppbmRleCA5MGZmMjNiNzkz Ny4uMzcyNjY1NTIzOWUgMTAwNjQ0Ci0tLSBhL2V0Yy9ORVdTCisrKyBiL2V0Yy9ORVdTCkBA IC0xMjA4LDYgKzEyMDgsMTEgQEAgdGhlIG5lZWRzIG9mIHVzZXJzIHdpdGggcmVkLWdyZWVu IG9yIGJsdWUteWVsbG93IGNvbG9yIGRlZmljaWVuY3kuCiBUaGUgSW5mbyBtYW51YWwgIiht b2R1cy10aGVtZXMpIFRvcCIgZGVzY3JpYmVzIHRoZSBkZXRhaWxzIGFuZAogc2hvd2Nhc2Vz IGFsbCB0aGVpciBjdXN0b21pemF0aW9uIG9wdGlvbnMuCiAKKyoqIE5ldyBnbG9iYWwgbWlu b3IgbW9kZSAnZXRhZ3MtcmVnZW4tbW9kZScuCitUaGlzIG1pbm9yIG1vZGUgZ2VuZXJhdGVz IHRoZSB0YWdzIHRhYmxlIGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gdGhlCitjdXJyZW50IHBy b2plY3QgY29uZmlndXJhdGlvbiwgYW5kIGxhdGVyIHVwZGF0ZXMgaXQgYXMgeW91IGVkaXQg dGhlCitmaWxlcyBhbmQgc2F2ZSB0aGUgY2hhbmdlcy4KKwogDAogKiBJbmNvbXBhdGlibGUg TGlzcCBDaGFuZ2VzIGluIEVtYWNzIDMwLjEKIApkaWZmIC0tZ2l0IGEvbGlzcC9wcm9nbW9k ZXMvZXRhZ3MtcmVnZW4uZWwgYi9saXNwL3Byb2dtb2Rlcy9ldGFncy1yZWdlbi5lbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNjZjNDE3OGFlODYKLS0tIC9k ZXYvbnVsbAorKysgYi9saXNwL3Byb2dtb2Rlcy9ldGFncy1yZWdlbi5lbApAQCAtMCwwICsx LDM4NCBAQAorOzs7IGV0YWdzLXJlZ2VuLmVsIC0tLSBBdXRvLShyZSlyZWdlbmVyYXRpbmcg dGFncyAgLSotIGxleGljYWwtYmluZGluZzogdCAtKi0KKworOzsgQ29weXJpZ2h0IChDKSAy MDIxLCAyMDIzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCis7OyBBdXRob3I6 IERtaXRyeSBHdXRvdiA8ZG1pdHJ5QGd1dG92LmRldj4KKzs7IEtleXdvcmRzOiB0b29scwor Cis7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCisKKzs7IEdOVSBFbWFjcyBp cyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Cis7OyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKzs7IChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisKKzs7IEdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorOzsgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7IE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKzs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisKKzs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCis7OyBhbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwg c2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKzs7OyBDb21tZW50YXJ5 OgorCis7OyBTaW1wbGUgYXV0b21hdGljIHRhZ3MgZ2VuZXJhdGlvbiB3aXRoIHVwZGF0ZXMg b24gc2F2ZS4KKzs7Cis7OyBUaGUgZ29hbCBvZiB0aGlzIG1vZGUgaXMgdG8gcHJvdmlkZSBh IGZlYXR1cmUgdGhhdCBzaG91bGQgYmUKKzs7IGZhbWlsaWFyIHRvIHRoZSB1c2VycyBvZiBj ZXJ0YWluIGxpZ2h0d2VpZ2h0IHByb2dyYW1tZXIncyBlZGl0b3JzLAorOzsgc3VjaCBhcyBT dWJsaW1lIFRleHQuICBXaGljaCBpcyAiZ28gdG8gZGVmaW5pdGlvbiIgd2l0aCBhdXRvbWF0 aWMKKzs7IGluZGV4aW5nLCBhZGRlZCBpbiBTVDMgKHJlbGVhc2VkIGluIDIwMTcpLgorOzsK Kzs7IEF0IHRoZSBtb21lbnQgcmVpbmRleGluZyB3b3JrcyBvZmYgYmVmb3JlL2FmdGVyLXNh dmUtaG9vaywgYnV0IHRvCis7OyBoYW5kbGUgbW9yZSBjb21wbGV4IGNoYW5nZXMgKGUuZy4g dGhlIHVzZXIgc3dpdGNoaW5nIHRvIGFub3RoZXIKKzs7IGJyYW5jaCBmcm9tIHRoZSB0ZXJt aW5hbCkgd2UgY2FuIGxvb2sgaW50byBwbHVnZ2luZyBpbnRvIHNvbWV0aGluZworOzsgbGlr ZSBgZmlsZW5vdGlmeScuCis7OworOzsgTm90ZSB0aGF0IHRoaXMgZmVhdHVyZSBkaXNhYmxl cyBpdHNlbGYgaWYgdGhlIHVzZXIgaGFzIHNvbWUgdGFncworOzsgdGFibGUgYWxyZWFkeSB2 aXNpdGVkICh3aXRoIGBNLXggdmlzaXQtdGFncy10YWJsZScsIG9yIHRocm91Z2ggYW4KKzs7 IGV4cGxpY2l0IHByb21wdCB0cmlnZ2VyZWQgYnkgc29tZSBmZWF0dXJlIHRoYXQgcmVxdWly ZXMgdGFncykuCisKKzs7OyBDb2RlOgorCisocmVxdWlyZSAnY2wtbGliKQorCisoZGVmZ3Jv dXAgZXRhZ3MtcmVnZW4gbmlsCisgICJBdXRvLShyZSlnZW5lcmF0aW5nIHRhZ3MuIgorICA6 Z3JvdXAgJ3Rvb2xzKQorCisoZGVmdmFyIGV0YWdzLXJlZ2VuLS10YWdzLWZpbGUgbmlsKQor KGRlZnZhciBldGFncy1yZWdlbi0tdGFncy1yb290IG5pbCkKKyhkZWZ2YXIgZXRhZ3MtcmVn ZW4tLW5ldy1maWxlIG5pbCkKKworKGRlY2xhcmUtZnVuY3Rpb24gcHJvamVjdC1yb290ICJw cm9qZWN0IikKKyhkZWNsYXJlLWZ1bmN0aW9uIHByb2plY3QtZmlsZXMgInByb2plY3QiKQor CisoZGVmY3VzdG9tIGV0YWdzLXJlZ2VuLXByb2dyYW0gKGV4ZWN1dGFibGUtZmluZCAiZXRh Z3MiKQorICAiTmFtZSBvZiB0aGUgZXRhZ3MgcHJvZ3JhbS4KKworSWYgeW91IG9ubHkgaGF2 ZSBgY3RhZ3MnIGluc3RhbGxlZCwgeW91IGNhbiBhbHNvIHNldCB0aGlzIHRvCitcImN0YWdz IC1lXCIuICBTb21lIGZlYXR1cmVzIG1pZ2h0IG5vdCBiZSBzdXBwb3J0ZWQgdGhpcyB3YXku IgorICA7OyBBbHdheXMgaGF2aW5nIG91ciAnZXRhZ3MnIGhlcmUgd291bGQgYmUgZWFzaWVy LCBidXQgd2UgY2FuJ3QKKyAgOzsgYWx3YXlzIHJlbHkgb24gaXQgYmVpbmcgaW5zdGFsbGVk LiAgU28gaXQgbWlnaHQgYmUgY3RhZ3MncyBldGFncy4KKyAgOnR5cGUgJ2ZpbGUpCisKKyhk ZWZjdXN0b20gZXRhZ3MtcmVnZW4tdGFncy1maWxlICJUQUdTIgorICAiTmFtZSBvZiB0aGUg dGFncyBmaWxlIHRvIGNyZWF0ZSBpbnNpZGUgdGhlIHByb2plY3QuCisKK1RoaXMgdmFsdWUg c2hvdWxkIGVpdGhlciBiZSBhIHNpbXBsZSBmaWxlIG5hbWUgKG5vIGRpcmVjdG9yeQorc3Bl Y2lmaWVkKSwgb3IgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgYSBwcm9qZWN0IHJvb3QgZGly ZWN0b3J5CithbmQgcmV0dXJucyBhIGRpc3RpbmN0IGZpbGUgbmFtZSBmb3IgdGhlIHRhZ3Mg ZmlsZSBmb3IgaXQuICBUaGUKK2xhdHRlciBvcHRpb24gaXMgbW9zdCB1c2VmdWwgd2hlbiB5 b3UgcHJlZmVyIHRvIHN0b3JlIHRoZSB0YWcKK2ZpbGVzIHNvbWV3aGVyZSBvdXRzaWRlIC0t IGUuZy4gaW4gYHRlbXBvcmFyeS1maWxlLWRpcmVjdG9yeScuIgorICA6dHlwZSAnKGNob2lj ZSAoc3RyaW5nIDp0YWcgIkZpbGUgbmFtZSIpCisgICAgICAgICAgICAgICAgIChmdW5jdGlv biA6dGFnICJGdW5jdGlvbiB0aGF0IHJldHVybnMgZmlsZSBuYW1lIikpKQorCisoZGVmY3Vz dG9tIGV0YWdzLXJlZ2VuLXByb2dyYW0tb3B0aW9ucyBuaWwKKyAgIkxpc3Qgb2YgYWRkaXRp b25hbCBvcHRpb25zIHRvIHBhc3MgdG8gdGhlIGV0YWdzIHByb2dyYW0uIgorICA6dHlwZSAn KHJlcGVhdCBzdHJpbmcpKQorCisoZGVmY3VzdG9tIGV0YWdzLXJlZ2VuLXJlZ2V4cC1hbGlz dCBuaWwKKyAgIk1hcHBpbmcgb2YgbGFuZ3VhZ2VzIHRvIGFkZGl0aW9uYWwgcmVnZXhwcyBm b3IgdGFncy4KKworVGhlIHZhbHVlIG11c3QgYmUgYSBsaXN0IG9mIGNvbnNlcyAoTEFOR1VB R0VTIC4gVEFHLVJFR0VYUFMpCit3aGVyZSBib3RoIGNhciBhbmQgY2RyIGFyZSBsaXN0cyBv ZiBzdHJpbmdzLgorCitFYWNoIGxhbmd1YWdlIHNob3VsZCBiZSBvbmUgb2YgdGhlIHJlY29n bml6ZWQgYnkgZXRhZ3MsIHNlZQorYGV0YWdzIC0taGVscCcuICBFYWNoIHRhZyByZWdleHAg c2hvdWxkIGJlIGEgc3RyaW5nIGluIHRoZSBmb3JtYXQKK2FzIGRvY3VtZW50ZWQgZm9yIHRo ZSBgLS1yZWdleCcgYXJndW1lbnRzLgorCitXZSBjdXJyZW50bHkgc3VwcG9ydCBvbmx5IEVt YWNzJ3MgZXRhZ3MgcHJvZ3JhbSB3aXRoIHRoaXMgb3B0aW9uLiIKKyAgOnR5cGUgJyhyZXBl YXQKKyAgICAgICAgICAoY29ucworICAgICAgICAgICA6dGFnICJMYW5ndWFnZXMgZ3JvdXAi CisgICAgICAgICAgIChyZXBlYXQgKHN0cmluZyA6dGFnICJMYW5ndWFnZSBuYW1lIikpCisg ICAgICAgICAgIChyZXBlYXQgKHN0cmluZyA6dGFnICJUYWcgUmVnZXhwIikpKSkpCisKKzs7 OyMjI2F1dG9sb2FkCisocHV0ICdldGFncy1yZWdlbi1yZWdleHAtYWxpc3QgJ3NhZmUtbG9j YWwtdmFyaWFibGUKKyAgICAgKGxhbWJkYSAodmFsdWUpCisgICAgICAgKGFuZCAobGlzdHAg dmFsdWUpCisgICAgICAgICAgICAoc2VxLWV2ZXJ5LXAKKyAgICAgICAgICAgICAobGFtYmRh IChncm91cCkKKyAgICAgICAgICAgICAgIChhbmQgKGNvbnNwIGdyb3VwKQorICAgICAgICAg ICAgICAgICAgICAobGlzdHAgKGNhciBncm91cCkpCisgICAgICAgICAgICAgICAgICAgIChs aXN0cCAoY2RyIGdyb3VwKSkKKyAgICAgICAgICAgICAgICAgICAgKHNlcS1ldmVyeS1wICMn c3RyaW5ncCAoY2FyIGdyb3VwKSkKKyAgICAgICAgICAgICAgICAgICAgKHNlcS1ldmVyeS1w ICMnc3RyaW5ncCAoY2RyIGdyb3VwKSkpKQorICAgICAgICAgICAgIHZhbHVlKSkpKQorCis7 OyBXZSBoYXZlIHRvIGxpc3QgYWxsIGV4dGVuc2lvbnM6IGV0YWdzIGZhbGxzIGJhY2sgdG8g Rm9ydHJhbgorOzsgd2hlbiBpdCBjYW5ub3QgZGV0ZXJtaW5lIHRoZSB0eXBlIG9mIHRoZSBm aWxlLgorOzsgaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2VtYWNzLWRldmVs LzIwMTgtMDEvbXNnMDAzMjMuaHRtbAorKGRlZmN1c3RvbSBldGFncy1yZWdlbi1maWxlLWV4 dGVuc2lvbnMKKyAgJygicmIiICJqcyIgInB5IiAicGwiICJlbCIgImMiICJjcHAiICJjYyIg ImgiICJoaCIgImhwcCIKKyAgICAiamF2YSIgImdvIiAiY2wiICJsaXNwIiAicHJvbG9nIiAi cGhwIiAiZXJsIiAiaHJsIgorICAgICJGIiAiZiIgImY5MCIgImZvciIgImNzIiAiYSIgImFz bSIgImFkcyIgImFkYiIgImFkYSIpCisgICJDb2RlIGZpbGUgZXh0ZW5zaW9ucy4KKworRmls ZSBleHRlbnNpb25zIHRvIGdlbmVyYXRlIHRoZSB0YWdzIGZvci4iCisgIDp0eXBlICcocmVw ZWF0IChzdHJpbmcgOnRhZyAiRmlsZSBleHRlbnNpb24iKSkpCisKKzs7OyMjI2F1dG9sb2Fk CisocHV0ICdldGFncy1yZWdlbi1maWxlLWV4dGVuc2lvbnMgJ3NhZmUtbG9jYWwtdmFyaWFi bGUKKyAgICAgKGxhbWJkYSAodmFsdWUpIChhbmQgKGxpc3RwIHZhbHVlKSAoc2VxLWV2ZXJ5 LXAgIydzdHJpbmdwIHZhbHVlKSkpKQorCis7OyBGSVhNRTogT25seSBwbGFpbiBzdWJzdHJp bmdzIHN1cHBvcnRlZCBjdXJyZW50bHkuCisoZGVmY3VzdG9tIGV0YWdzLXJlZ2VuLWlnbm9y ZXMgbmlsCisgICJBZGRpdGlvbmFsIGlnbm9yZSBydWxlcywgaW4gdGhlIGZvcm1hdCBvZiBg cHJvamVjdC1pZ25vcmVzJy4iCisgIDp0eXBlICcocmVwZWF0CisgICAgICAgICAgKHN0cmlu ZyA6dGFnICJHbG9iIHRvIGlnbm9yZSIpKSkKKworOzs7IyMjYXV0b2xvYWQKKyhwdXQgJ2V0 YWdzLXJlZ2VuLWlnbm9yZXMgJ3NhZmUtbG9jYWwtdmFyaWFibGUKKyAgICAgKGxhbWJkYSAo dmFsdWUpIChhbmQgKGxpc3RwIHZhbHVlKSAoc2VxLWV2ZXJ5LXAgIydzdHJpbmdwIHZhbHVl KSkpKQorCisoZGVmdmFyIGV0YWdzLXJlZ2VuLS1lcnJvcnMtYnVmZmVyLW5hbWUgIipldGFn cy1yZWdlbi10YWdzLWVycm9ycyoiKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLWFsbC1tdGlt ZXMgKHByb2opCisgIChsZXQgKChmaWxlcyAoZXRhZ3MtcmVnZW4tLWFsbC1maWxlcyBwcm9q KSkKKyAgICAgICAgKG10aW1lcyAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICdlcXVhbCkpCisg ICAgICAgIGZpbGUtbmFtZS1oYW5kbGVyLWFsaXN0KQorICAgIChkb2xpc3QgKGYgZmlsZXMp CisgICAgICAoY29uZGl0aW9uLWNhc2UgbmlsCisgICAgICAgICAgKHB1dGhhc2ggZgorICAg ICAgICAgICAgICAgICAgIChmaWxlLWF0dHJpYnV0ZS1tb2RpZmljYXRpb24tdGltZQorICAg ICAgICAgICAgICAgICAgICAoZmlsZS1hdHRyaWJ1dGVzIGYpKQorICAgICAgICAgICAgICAg ICAgIG10aW1lcykKKyAgICAgICAgKGZpbGUtbWlzc2luZyBuaWwpKSkKKyAgICBtdGltZXMp KQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLWNob29zZS10YWdzLWZpbGUgKHByb2opCisgIChp ZiAoZnVuY3Rpb25wIGV0YWdzLXJlZ2VuLXRhZ3MtZmlsZSkKKyAgICAgIChmdW5jYWxsIGV0 YWdzLXJlZ2VuLXRhZ3MtZmlsZSAocHJvamVjdC1yb290IHByb2opKQorICAgIChleHBhbmQt ZmlsZS1uYW1lIGV0YWdzLXJlZ2VuLXRhZ3MtZmlsZSAocHJvamVjdC1yb290IHByb2opKSkp CisKKyhkZWZ1biBldGFncy1yZWdlbi0tcmVmcmVzaCAocHJvaikKKyAgKHNhdmUtZXhjdXJz aW9uCisgICAgKGxldCogKCh0YWdzLWZpbGUgKGV0YWdzLXJlZ2VuLS1jaG9vc2UtdGFncy1m aWxlIHByb2opKQorICAgICAgICAgICAodGFncy1tdGltZSAoZmlsZS1hdHRyaWJ1dGUtbW9k aWZpY2F0aW9uLXRpbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlLWF0dHJpYnV0 ZXMgdGFncy1maWxlKSkpCisgICAgICAgICAgIChhbGwtbXRpbWVzIChldGFncy1yZWdlbi0t YWxsLW10aW1lcyBwcm9qKSkKKyAgICAgICAgICAgYWRkZWQtZmlsZXMKKyAgICAgICAgICAg Y2hhbmdlZC1maWxlcworICAgICAgICAgICByZW1vdmVkLWZpbGVzKQorICAgICAgKGV0YWdz LXJlZ2VuLS12aXNpdC10YWJsZSB0YWdzLWZpbGUgKHByb2plY3Qtcm9vdCBwcm9qKSkKKyAg ICAgIChzZXQtYnVmZmVyIChnZXQtZmlsZS1idWZmZXIgdGFncy1maWxlKSkKKyAgICAgIChk b2xpc3QgKGZpbGUgKHRhZ3MtdGFibGUtZmlsZXMpKQorICAgICAgICAobGV0ICgobXRpbWUg KGdldGhhc2ggZmlsZSBhbGwtbXRpbWVzKSkpCisgICAgICAgICAgKGNvbmQKKyAgICAgICAg ICAgKChudWxsIG10aW1lKQorICAgICAgICAgICAgKHB1c2ggZmlsZSByZW1vdmVkLWZpbGVz KSkKKyAgICAgICAgICAgKCh0aW1lLWxlc3MtcCB0YWdzLW10aW1lIG10aW1lKQorICAgICAg ICAgICAgKHB1c2ggZmlsZSBjaGFuZ2VkLWZpbGVzKQorICAgICAgICAgICAgKHJlbWhhc2gg ZmlsZSBhbGwtbXRpbWVzKSkKKyAgICAgICAgICAgKHQKKyAgICAgICAgICAgIChyZW1oYXNo IGZpbGUgYWxsLW10aW1lcykpKSkpCisgICAgICAobWFwaGFzaAorICAgICAgIChsYW1iZGEg KGtleSBfdmFsdWUpCisgICAgICAgICAocHVzaCBrZXkgYWRkZWQtZmlsZXMpKQorICAgICAg IGFsbC1tdGltZXMpCisgICAgICAoaWYgKD4gKCsgKGxlbmd0aCBhZGRlZC1maWxlcykKKyAg ICAgICAgICAgICAgICAobGVuZ3RoIGNoYW5nZWQtZmlsZXMpCisgICAgICAgICAgICAgICAg KGxlbmd0aCByZW1vdmVkLWZpbGVzKSkKKyAgICAgICAgICAgICAxMDApCisgICAgICAgICAg KHByb2duCisgICAgICAgICAgICAobWVzc2FnZSAiZXRhZ3MtcmVnZW46IFRvbyBtYW55IGNo YW5nZXMsIGZhbGxpbmcgYmFjayB0byBmdWxsIHJlc2NhbiIpCisgICAgICAgICAgICAoZXRh Z3MtcmVnZW4tLXRhZ3MtY2xlYW51cCkpCisgICAgICAgIChkb2xpc3QgKGZpbGUgKG5jb25j IHJlbW92ZWQtZmlsZXMgY2hhbmdlZC1maWxlcykpCisgICAgICAgICAgKGV0YWdzLXJlZ2Vu LS1yZW1vdmUtdGFnIGZpbGUpKQorICAgICAgICAod2hlbiAob3IgY2hhbmdlZC1maWxlcyBh ZGRlZC1maWxlcykKKyAgICAgICAgICAoYXBwbHkgIydldGFncy1yZWdlbi0tYXBwZW5kLXRh Z3MKKyAgICAgICAgICAgICAgICAgKG5jb25jIGNoYW5nZWQtZmlsZXMgYWRkZWQtZmlsZXMp KSkKKyAgICAgICAgKHdoZW4gKG9yIGNoYW5nZWQtZmlsZXMgYWRkZWQtZmlsZXMgcmVtb3Zl ZC1maWxlcykKKyAgICAgICAgICAobGV0ICgoc2F2ZS1zaWxlbnRseSB0KQorICAgICAgICAg ICAgICAgIChtZXNzYWdlLWxvZy1tYXggbmlsKSkKKyAgICAgICAgICAgIChzYXZlLWJ1ZmZl ciAwKSkpKSkpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLW1heWJlLWdlbmVyYXRlICgpCisg IChsZXQgKChwcm9qKSkKKyAgICAod2hlbiAoYW5kIGV0YWdzLXJlZ2VuLS10YWdzLXJvb3QK KyAgICAgICAgICAgICAgIChub3QgKGZpbGUtaW4tZGlyZWN0b3J5LXAgZGVmYXVsdC1kaXJl Y3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRhZ3Mt cmVnZW4tLXRhZ3Mtcm9vdCkpKQorICAgICAgKGV0YWdzLXJlZ2VuLS10YWdzLWNsZWFudXAp KQorICAgICh3aGVuIChhbmQgKG5vdCBldGFncy1yZWdlbi0tdGFncy1yb290KQorICAgICAg ICAgICAgICAgOzsgSWYgZXhpc3RpbmcgdGFibGUgaXMgdmlzaXRlZCB0aGF0J3Mgbm90IGdl bmVyYXRlZCBieQorICAgICAgICAgICAgICAgOzsgdGhpcyBtb2RlLCBza2lwIGFsbCBmdW5j dGlvbmFsaXR5LgorICAgICAgICAgICAgICAgKG5vdCAob3IgdGFncy1maWxlLW5hbWUKKyAg ICAgICAgICAgICAgICAgICAgICAgIHRhZ3MtdGFibGUtbGlzdCkpCisgICAgICAgICAgICAg ICAoZmlsZS1leGlzdHMtcCAoZXRhZ3MtcmVnZW4tLWNob29zZS10YWdzLWZpbGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBwcm9qIChwcm9qZWN0LWN1cnJlbnQp KSkpKQorICAgICAgKG1lc3NhZ2UgIkZvdW5kIGV4aXN0aW5nIHRhZ3MgdGFibGUsIHJlZnJl c2hpbmcuLi4iKQorICAgICAgKGV0YWdzLXJlZ2VuLS1yZWZyZXNoIHByb2opKQorICAgICh3 aGVuIChhbmQgKG5vdCAob3IgdGFncy1maWxlLW5hbWUKKyAgICAgICAgICAgICAgICAgICAg ICAgIHRhZ3MtdGFibGUtbGlzdCkpCisgICAgICAgICAgICAgICAoc2V0cSBwcm9qIChvciBw cm9qIChwcm9qZWN0LWN1cnJlbnQpKSkpCisgICAgICAobWVzc2FnZSAiR2VuZXJhdGluZyBu ZXcgdGFncyB0YWJsZS4uLiIpCisgICAgICAobGV0ICgoc3RhcnQgKHRpbWUtdG8tc2Vjb25k cykpKQorICAgICAgICAoZXRhZ3MtcmVnZW4tLXRhZ3MtZ2VuZXJhdGUgcHJvaikKKyAgICAg ICAgKG1lc3NhZ2UgIi4uLmRvbmUgKCUuMmYgcykiICgtICh0aW1lLXRvLXNlY29uZHMpIHN0 YXJ0KSkpKSkpCisKKyhkZWZ1biBldGFncy1yZWdlbi0tYWxsLWZpbGVzIChwcm9qKQorICAo bGV0KiAoKHJvb3QgKHByb2plY3Qtcm9vdCBwcm9qKSkKKyAgICAgICAgIChkZWZhdWx0LWRp cmVjdG9yeSByb290KQorICAgICAgICAgOzsgVE9ETzogTWFrZSB0aGUgc2Nhbm5pbmcgbW9y ZSBlZmZpY2llbnQsIGUuZy4gbW92ZSB0aGUKKyAgICAgICAgIDs7IGZpbHRlcmluZyBieSBn bG9iIHRvIHByb2plY3QgKHByb2plY3QtZmlsZXMtZmlsdGVyZWQuLi4pLgorICAgICAgICAg KGZpbGVzIChwcm9qZWN0LWZpbGVzIHByb2opKQorICAgICAgICAgKG1hdGNoLXJlIChjb25j YXQKKyAgICAgICAgICAgICAgICAgICAgIlxcLiIKKyAgICAgICAgICAgICAgICAgICAgKHJl Z2V4cC1vcHQgZXRhZ3MtcmVnZW4tZmlsZS1leHRlbnNpb25zKQorICAgICAgICAgICAgICAg ICAgICAiXFwnIikpKQorICAgIChjbC1kZWxldGUtaWYKKyAgICAgKGxhbWJkYSAoZikgKG9y IChub3QgKHN0cmluZy1tYXRjaC1wIG1hdGNoLXJlIGYpKQorICAgICAgICAgICAgICAgIDs7 IEZJWE1FOiBIYW5kbGUgZXRhZ3MtcmVnZW4taWdub3JlcyBwcm9wZXJseS4KKyAgICAgICAg ICAgICAgICAoc3RyaW5nLW1hdGNoLXAgIi9cXC4jIiBmKQorICAgICAgICAgICAgICAgIChj bC1zb21lIChsYW1iZGEgKGlnbm9yZSkgKHN0cmluZy1zZWFyY2ggaWdub3JlIGYpKQorICAg ICAgICAgICAgICAgICAgICAgICAgIGV0YWdzLXJlZ2VuLWlnbm9yZXMpKSkKKyAgICAgZmls ZXMpKSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS10YWdzLWdlbmVyYXRlIChwcm9qKQorICAo bGV0KiAoKHJvb3QgKHByb2plY3Qtcm9vdCBwcm9qKSkKKyAgICAgICAgIChkZWZhdWx0LWRp cmVjdG9yeSByb290KQorICAgICAgICAgKGZpbGVzIChldGFncy1yZWdlbi0tYWxsLWZpbGVz IHByb2opKQorICAgICAgICAgKHRhZ3MtZmlsZSAoZXRhZ3MtcmVnZW4tLWNob29zZS10YWdz LWZpbGUgcHJvaikpCisgICAgICAgICAoY3RhZ3MtcCAoZXRhZ3MtcmVnZW4tLWN0YWdzLXAp KQorICAgICAgICAgKGNvbW1hbmQgKGZvcm1hdCAiJXMgJXMgJXMgLSAtbyAlcyIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgZXRhZ3MtcmVnZW4tcHJvZ3JhbQorICAgICAgICAgICAg ICAgICAgICAgICAgICAobWFwY29uY2F0ICMnaWRlbnRpdHkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoZXRhZ3MtcmVnZW4tLWJ1aWxkLXByb2dyYW0tb3B0aW9u cyBjdGFncy1wKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIikK KyAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgY3RhZ3MncyBldGFncyByZXF1aXJlcyAn LUwnIGZvciBzdGRpbiBpbnB1dC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIGN0 YWdzLXAgIi1MIiAiIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGFncy1maWxlKSkp CisgICAgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAgIChtYXBjIChsYW1iZGEgKGYpCisgICAg ICAgICAgICAgIChpbnNlcnQgZiAiXG4iKSkKKyAgICAgICAgICAgIGZpbGVzKQorICAgICAg KHNoZWxsLWNvbW1hbmQtb24tcmVnaW9uIChwb2ludC1taW4pIChwb2ludC1tYXgpIGNvbW1h bmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwgbmlsIGV0YWdzLXJlZ2Vu LS1lcnJvcnMtYnVmZmVyLW5hbWUgdCkpCisgICAgKGV0YWdzLXJlZ2VuLS12aXNpdC10YWJs ZSB0YWdzLWZpbGUgcm9vdCkpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLXZpc2l0LXRhYmxl ICh0YWdzLWZpbGUgcm9vdCkKKyAgOzsgSW52YWxpZGF0ZSB0aGUgc2Nhbm5lZCB0YWdzIGFm dGVyIGFueSBjaGFuZ2UgaXMgd3JpdHRlbiB0byBkaXNrLgorICAoYWRkLWhvb2sgJ2FmdGVy LXNhdmUtaG9vayAjJ2V0YWdzLXJlZ2VuLS11cGRhdGUtZmlsZSkKKyAgKGFkZC1ob29rICdi ZWZvcmUtc2F2ZS1ob29rICMnZXRhZ3MtcmVnZW4tLW1hcmstYXMtbmV3KQorICAoc2V0cSBl dGFncy1yZWdlbi0tdGFncy1maWxlIHRhZ3MtZmlsZQorICAgICAgICBldGFncy1yZWdlbi0t dGFncy1yb290IHJvb3QpCisgICh2aXNpdC10YWdzLXRhYmxlIGV0YWdzLXJlZ2VuLS10YWdz LWZpbGUpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLWN0YWdzLXAgKCkKKyAgKHN0cmluZy1z ZWFyY2ggIkN0YWdzIgorICAgICAgICAgICAgICAgICAoc2hlbGwtY29tbWFuZC10by1zdHJp bmcKKyAgICAgICAgICAgICAgICAgIChmb3JtYXQgIiVzIC0tdmVyc2lvbiIgZXRhZ3MtcmVn ZW4tcHJvZ3JhbSkpKSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS1idWlsZC1wcm9ncmFtLW9w dGlvbnMgKGN0YWdzLXApCisgICh3aGVuIChhbmQgZXRhZ3MtcmVnZW4tcmVnZXhwLWFsaXN0 IGN0YWdzLXApCisgICAgKHVzZXItZXJyb3IgImV0YWdzLXJlZ2VuLXJlZ2V4cC1hbGlzdCBp cyBub3Qgc3VwcG9ydGVkIHdpdGggQ3RhZ3MiKSkKKyAgKG5jb25jCisgICAobWFwY2FuCisg ICAgKGxhbWJkYSAoZ3JvdXApCisgICAgICAobWFwY2FuCisgICAgICAgKGxhbWJkYSAobGFu ZykKKyAgICAgICAgIChtYXBjYXIgKGxhbWJkYSAocmVnZXhwKQorICAgICAgICAgICAgICAg ICAgIChjb25jYXQgIi0tcmVnZXg9IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNo ZWxsLXF1b3RlLWFyZ3VtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1h dCAieyVzfSVzIiBsYW5nIHJlZ2V4cCkpKSkKKyAgICAgICAgICAgICAgICAgKGNkciBncm91 cCkpKQorICAgICAgIChjYXIgZ3JvdXApKSkKKyAgICBldGFncy1yZWdlbi1yZWdleHAtYWxp c3QpCisgICBldGFncy1yZWdlbi1wcm9ncmFtLW9wdGlvbnMpKQorCisoZGVmdW4gZXRhZ3Mt cmVnZW4tLXVwZGF0ZS1maWxlICgpCisgIDs7IFRPRE86IE1heWJlIG9ubHkgZG8gdGhpcyB3 aGVuIEVtYWNzIGlzIGlkbGUgZm9yIGEgYml0LiAgT3IgZGVmZXIKKyAgOzsgdGhlIHVwZGF0 ZXMgYW5kIGRvIHRoZW0gbGF0ZXIgaW4gYnVyc3RzIHdoZW4gdGhlIHRhYmxlIGlzIHVzZWQu CisgIChsZXQgKChmaWxlLW5hbWUgYnVmZmVyLWZpbGUtbmFtZSkKKyAgICAgICAgKHRhZ3Mt ZmlsZS1idWYgKGFuZCBldGFncy1yZWdlbi0tdGFncy1yb290CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGdldC1maWxlLWJ1ZmZlciBldGFncy1yZWdlbi0tdGFncy1maWxlKSkp CisgICAgICAgIHByIHNob3VsZC1zY2FuKQorICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAg KHdoZW4gdGFncy1maWxlLWJ1ZgorICAgICAgICAoY29uZAorICAgICAgICAgKChhbmQgZXRh Z3MtcmVnZW4tLW5ldy1maWxlCisgICAgICAgICAgICAgICAoa2lsbC1sb2NhbC12YXJpYWJs ZSAnZXRhZ3MtcmVnZW4tLW5ldy1maWxlKQorICAgICAgICAgICAgICAgKHNldHEgcHIgKHBy b2plY3QtY3VycmVudCkpCisgICAgICAgICAgICAgICAoZXF1YWwgKHByb2plY3Qtcm9vdCBw cikgZXRhZ3MtcmVnZW4tLXRhZ3Mtcm9vdCkKKyAgICAgICAgICAgICAgIChtZW1iZXIgZmls ZS1uYW1lIChwcm9qZWN0LWZpbGVzIHByKSkpCisgICAgICAgICAgKHNldC1idWZmZXIgdGFn cy1maWxlLWJ1ZikKKyAgICAgICAgICAoc2V0cSBzaG91bGQtc2NhbiB0KSkKKyAgICAgICAg ICgocHJvZ24gKHNldC1idWZmZXIgdGFncy1maWxlLWJ1ZikKKyAgICAgICAgICAgICAgICAg KGV0YWdzLXJlZ2VuLS1yZW1vdmUtdGFnIGZpbGUtbmFtZSkpCisgICAgICAgICAgKHNldHEg c2hvdWxkLXNjYW4gdCkpKSkKKyAgICAgICh3aGVuIHNob3VsZC1zY2FuCisgICAgICAgIChl dGFncy1yZWdlbi0tYXBwZW5kLXRhZ3MgZmlsZS1uYW1lKQorICAgICAgICAobGV0ICgoc2F2 ZS1zaWxlbnRseSB0KQorICAgICAgICAgICAgICAobWVzc2FnZS1sb2ctbWF4IG5pbCkpCisg ICAgICAgICAgKHNhdmUtYnVmZmVyIDApKSkpKSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS1y ZW1vdmUtdGFnIChmaWxlLW5hbWUpCisgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICh3 aGVuIChzZWFyY2gtZm9yd2FyZCAoZm9ybWF0ICJcZlxuJXMsIiBmaWxlLW5hbWUpIG5pbCB0 KQorICAgIChsZXQgKChzdGFydCAobWF0Y2gtYmVnaW5uaW5nIDApKSkKKyAgICAgIChzZWFy Y2gtZm9yd2FyZCAiXGZcbiIgbmlsICdtb3ZlKQorICAgICAgKGxldCAoKGluaGliaXQtcmVh ZC1vbmx5IHQpKQorICAgICAgICAoZGVsZXRlLXJlZ2lvbiBzdGFydAorICAgICAgICAgICAg ICAgICAgICAgICAoaWYgKGVvYnApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9p bnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgKC0gKHBvaW50KSAyKSkpKSkKKyAgICB0 KSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS1hcHBlbmQtdGFncyAoJnJlc3QgZmlsZS1uYW1l cykKKyAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKKyAgKGxldCAoKG9wdGlvbnMgKGV0YWdz LXJlZ2VuLS1idWlsZC1wcm9ncmFtLW9wdGlvbnMgKGV0YWdzLXJlZ2VuLS1jdGFncy1wKSkp CisgICAgICAgIChpbmhpYml0LXJlYWQtb25seSB0KSkKKyAgICA7OyBYWFg6IGNhbGwtcHJv Y2VzcyBpcyBzaWduaWZpY2FudGx5IGZhc3RlciwgdGhvdWdoLgorICAgIDs7IExpa2UgMTBt cyB2cyAyMG1zIGhlcmUuCisgICAgKHNoZWxsLWNvbW1hbmQKKyAgICAgKGZvcm1hdCAiJXMg JXMgJXMgLW8gLSIKKyAgICAgICAgICAgICBldGFncy1yZWdlbi1wcm9ncmFtIChtYXBjb25j YXQgIydpZGVudGl0eSBvcHRpb25zICIgIikKKyAgICAgICAgICAgICAobWFwY29uY2F0ICMn aWRlbnRpdHkgZmlsZS1uYW1lcyAiICIpKQorICAgICB0IGV0YWdzLXJlZ2VuLS1lcnJvcnMt YnVmZmVyLW5hbWUpKQorICA7OyBGSVhNRTogSXMgdGhlcmUgYSBiZXR0ZXIgd2F5IHRvIGRv IHRoaXM/CisgIDs7IENvbXBsZXRpb24gdGFibGUgaXMgdGhlIG9ubHkgcmVtYWluaW5nIHBs YWNlIHdoZXJlIHRoZQorICA7OyB1cGRhdGUgaXMgbm90IGluY3JlbWVudGFsLgorICAoc2V0 cS1kZWZhdWx0IHRhZ3MtY29tcGxldGlvbi10YWJsZSBuaWwpKQorCisoZGVmdW4gZXRhZ3Mt cmVnZW4tLW1hcmstYXMtbmV3ICgpCisgICh3aGVuIChhbmQgZXRhZ3MtcmVnZW4tLXRhZ3Mt cm9vdAorICAgICAgICAgICAgIChub3QgYnVmZmVyLWZpbGUtbnVtYmVyKSkKKyAgICAoc2V0 cS1sb2NhbCBldGFncy1yZWdlbi0tbmV3LWZpbGUgdCkpKQorCisoZGVmdW4gZXRhZ3MtcmVn ZW4tLXRhZ3MtY2xlYW51cCAoKQorICAod2hlbiBldGFncy1yZWdlbi0tdGFncy1maWxlCisg ICAgKGxldCAoKGJ1ZmZlciAoZ2V0LWZpbGUtYnVmZmVyIGV0YWdzLXJlZ2VuLS10YWdzLWZp bGUpKSkKKyAgICAgIChhbmQgYnVmZmVyCisgICAgICAgICAgIChraWxsLWJ1ZmZlciBidWZm ZXIpKSkKKyAgICAoc2V0cSB0YWdzLWZpbGUtbmFtZSBuaWwKKyAgICAgICAgICB0YWdzLXRh YmxlLWxpc3QgbmlsCisgICAgICAgICAgZXRhZ3MtcmVnZW4tLXRhZ3MtZmlsZSBuaWwKKyAg ICAgICAgICBldGFncy1yZWdlbi0tdGFncy1yb290IG5pbCkpCisgIChyZW1vdmUtaG9vayAn YWZ0ZXItc2F2ZS1ob29rICMnZXRhZ3MtcmVnZW4tLXVwZGF0ZS1maWxlKQorICAocmVtb3Zl LWhvb2sgJ2JlZm9yZS1zYXZlLWhvb2sgIydldGFncy1yZWdlbi0tbWFyay1hcy1uZXcpKQor CisoZGVmdmFyIGV0YWdzLXJlZ2VuLW1vZGUtbWFwIChtYWtlLXNwYXJzZS1rZXltYXApKQor Cis7OzsjIyNhdXRvbG9hZAorKGRlZmluZS1taW5vci1tb2RlIGV0YWdzLXJlZ2VuLW1vZGUK KyAgIkdlbmVyYXRlIGFuZCB1cGRhdGUgdGhlIHRhZ3MgYXV0b21hdGljYWxseS4KKworVGhp cyBtaW5vciBtb2RlIGdlbmVyYXRlcyB0aGUgdGFncyB0YWJsZSBhdXRvbWF0aWNhbGx5IGJh c2VkIG9uCit0aGUgY3VycmVudCBwcm9qZWN0IGNvbmZpZ3VyYXRpb24sIGFuZCBsYXRlciB1 cGRhdGVzIGl0IGFzIHlvdQorZWRpdCB0aGUgZmlsZXMgYW5kIHNhdmUgdGhlIGNoYW5nZXMu IgorICA6Z2xvYmFsIHQKKyAgKGlmIGV0YWdzLXJlZ2VuLW1vZGUKKyAgICAgIChwcm9nbgor ICAgICAgICAoYWR2aWNlLWFkZCAnZXRhZ3MtLXhyZWYtYmFja2VuZCA6YmVmb3JlCisgICAg ICAgICAgICAgICAgICAgICMnZXRhZ3MtcmVnZW4tLW1heWJlLWdlbmVyYXRlKQorICAgICAg ICAoYWR2aWNlLWFkZCAndGFncy1jb21wbGV0aW9uLWF0LXBvaW50LWZ1bmN0aW9uIDpiZWZv cmUKKyAgICAgICAgICAgICAgICAgICAgIydldGFncy1yZWdlbi0tbWF5YmUtZ2VuZXJhdGUp KQorICAgIChhZHZpY2UtcmVtb3ZlICdldGFncy0teHJlZi1iYWNrZW5kICMnZXRhZ3MtcmVn ZW4tLW1heWJlLWdlbmVyYXRlKQorICAgIChhZHZpY2UtcmVtb3ZlICd0YWdzLWNvbXBsZXRp b24tYXQtcG9pbnQtZnVuY3Rpb24gIydldGFncy1yZWdlbi0tbWF5YmUtZ2VuZXJhdGUpCisg ICAgKGV0YWdzLXJlZ2VuLS10YWdzLWNsZWFudXApKSkKKworKHByb3ZpZGUgJ2V0YWdzLXJl Z2VuKQorCis7OzsgZXRhZ3MtcmVnZW4uZWwgZW5kcyBoZXJlCg== --------------S9YQl2j6jNWsjRptU7ehtB9r--