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: Sun, 10 Dec 2023 04:41:15 +0200 Message-ID: References: <2f86b882-9ec1-f63f-d90b-5f8f7ae114f2@gutov.dev> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------GvAN742nYxTQ3XNRwqPixTlj" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="11324"; 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 To: Jon Eskin Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Dec 10 03:42:30 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 1rC9m1-0002i8-LG for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 10 Dec 2023 03:42:30 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rC9lP-0002Cg-Ro; Sat, 09 Dec 2023 21:41:51 -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 1rC9lN-0002BU-CT for bug-gnu-emacs@gnu.org; Sat, 09 Dec 2023 21:41:49 -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 1rC9lM-0008I5-S0 for bug-gnu-emacs@gnu.org; Sat, 09 Dec 2023 21:41:48 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rC9la-0007Ox-Nn for bug-gnu-emacs@gnu.org; Sat, 09 Dec 2023 21:42: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: Sun, 10 Dec 2023 02:42: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.170217610528418 (code B ref 67687); Sun, 10 Dec 2023 02:42:02 +0000 Original-Received: (at 67687) by debbugs.gnu.org; 10 Dec 2023 02:41:45 +0000 Original-Received: from localhost ([127.0.0.1]:49231 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rC9lH-0007OH-TG for submit@debbugs.gnu.org; Sat, 09 Dec 2023 21:41:44 -0500 Original-Received: from wout4-smtp.messagingengine.com ([64.147.123.20]:56261) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rC9lE-0007O0-TK for 67687@debbugs.gnu.org; Sat, 09 Dec 2023 21:41:42 -0500 Original-Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.west.internal (Postfix) with ESMTP id 8FCD332002E8; Sat, 9 Dec 2023 21:41:20 -0500 (EST) Original-Received: from mailfrontend1 ([10.202.2.162]) by compute1.internal (MEProxy); Sat, 09 Dec 2023 21:41:20 -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:sender :subject:subject:to:to; s=fm3; t=1702176080; x=1702262480; bh=M2 VsqNgb53ARWndVAH/PU4GbNQ4tthgbB1CPm0AfxbM=; b=rZrJWj6R4Xek1FZ2eE VVeBSD9qY78ekhSpNcJHZtKqdw1pl4nhS+7sQeFhhGQLiLJNyTWYpZjog+bY4E8Y hlGs4c5N0DydOVZQXlhPILUeFvRRmt2XJYZK1M75S1z6AU/+ii+N7hQlwQgcIAB0 HVEJTKE9AnlFwxnQhL0cL7Q6ttKM4ER4+nusWwiCtSwXwC2/GyKLXpz3rKpwZ6Gc hAo6lUM9IoLLxWFbDqr6YIyYAFmsFTRuHVEA4JREEvDQ9QX8BVQT/xEXaqLl1Abu CdrJG3bZ5LutIxQfA8HES532WNqW5QyrtpaknOkwkYH05BGJ9oKtaf4pWuHoPjsH HkvA== 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:sender:subject :subject:to:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm1; t=1702176080; x=1702262480; bh=M2VsqNgb53ARW ndVAH/PU4GbNQ4tthgbB1CPm0AfxbM=; b=ompTh3NE+zZzMEryQg60O71/Rwo50 xchS5C1S2a3d2pimRcrg6OI+BKWPdTAa25eZPadgPIcq8+TmdDFmWRInym88W0NI fKFmvIAx7ccBxWMZoLX3Pl1+ls8lcq/yYfheKKL8bkEBvN71p1KqoCflbLDjaDEs NarZiH0a8Ucn45RMsFkx5hC7sY9NAgsdOxoj1K92lz66E3PREHUmbQpyj1iiCB1d fjaPl7g2x6gPDJZqsFW+EZYxhpoPH7KqmwzN6ehWA2qSFUlb0pFN7c8RaOkTHZuv txdJ87j4ujuaYIq+XTLltdfJhjbMWso/r6Mj21oSJqeVWn/6CA6FG9bTA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrudekledggeelucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptgfkffggfgfuvfevfhfhjgesmhdtreertdefjeenucfhrhhomhepffhmihht rhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtth gvrhhnpeehteekgfetieeujeeuvddtvdelteffleejteduvdefffejieehheeuteffveei jeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumh hithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Original-Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sat, 9 Dec 2023 21:41:18 -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:275890 Archived-At: This is a multi-part message in MIME format. --------------GvAN742nYxTQ3XNRwqPixTlj Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi Jon! On 07/12/2023 21:57, Jon Eskin wrote: >> I have some related work that's been lying in a drawer as of late. >> >> Do you know what gutentags does when a file is deleted, or added externally, or you switch to a different Git branch and many files change their contents at once? > To my knowledge, changes to tags due to files being added or deleted are regenerated only when vim is started inside the project. Switching to a different git branch should work the same, because it’s only looking at the filesystem. > > If the editor is already running, such changes will not be picked up; even if you try to navigate to a tag that no longer exists, I do not believe that it will regenerate tags automatically until you close and re-open the editor. > > When you save a file inside the editor, it will wipe out tags for that individual file and regenerate them. All right, sounds like this kind of limited guarantees (tags getting out of date occasionally, e.g. when switching branches) is apparently okay. See attached the aforementioned related work, with some updates and simplifications (e.g. this version of the patch doesn't require a change to project.el). Usage: 'M-x etags-regen-mode' to turn it on (or customize this variable, to have it on from the beginning of each session), then as soon as you use features based on tags (such as M-. or completion) the table should get generated automatically for the current project, and then get updated when files are edited and saved. Some features could be added later (such as asynchronous updates or -- someday -- filenotify based invalidations), but I think the current state is useful already. Feedback welcome. --------------GvAN742nYxTQ3XNRwqPixTlj Content-Type: text/x-patch; charset=UTF-8; name="etags-regen.diff" Content-Disposition: attachment; filename="etags-regen.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhLy5kaXItbG9jYWxzLmVsIGIvLmRpci1sb2NhbHMuZWwKaW5kZXggZTA4 N2FhODljZDEuLmQzMDg1OTFjNDc1IDEwMDY0NAotLS0gYS8uZGlyLWxvY2Fscy5lbAorKysg Yi8uZGlyLWxvY2Fscy5lbApAQCAtOCw2ICs4LDEyIEBACiAgICAgICAgICAodmMtZ2l0LWFu bm90YXRlLXN3aXRjaGVzIC4gIi13IikKICAgICAgICAgIChidWctcmVmZXJlbmNlLXVybC1m b3JtYXQgLiAiaHR0cHM6Ly9kZWJidWdzLmdudS5vcmcvJXMiKQogCSAoZGlmZi1hZGQtbG9n LXVzZS1yZWxhdGl2ZS1uYW1lcyAuIHQpCisgICAgICAgICAoZXRhZ3MtcmVnZW4tbGFuZy1y ZWdleHAtYWxpc3QKKyAgICAgICAgICAuCisgICAgICAgICAgKCgoImMiICJvYmpjIikgLgor ICAgICAgICAgICAgKCIvWyBcdF0qREVGVkFSX1tBLVpfIFx0KF0rXCJcXChbXlwiXStcXClc Ii9cXDEvIgorICAgICAgICAgICAgICIvWyBcdF0qREVGVkFSX1tBLVpfIFx0KF0rXCJbXlwi XStcIixbIFx0XVxcKFtBLVphLXowLTlfXStcXCkvXFwxLyIpKSkpCisgICAgICAgICAoZXRh Z3MtcmVnZW4taWdub3JlcyAuICgidGVzdC9tYW51YWwvZXRhZ3MvIikpCiAgICAgICAgICAo dmMtcHJlcGFyZS1wYXRjaGVzLXNlcGFyYXRlbHkgLiBuaWwpKSkKICAoYy1tb2RlIC4gKChj LWZpbGUtc3R5bGUgLiAiR05VIikKICAgICAgICAgICAgIChjLW5vaXNlLW1hY3JvLW5hbWVz IC4gKCJJTkxJTkUiICJOT19JTkxJTkUiICJBVFRSSUJVVEVfTk9fU0FOSVRJWkVfVU5ERUZJ TkVEIgpkaWZmIC0tZ2l0IGEvbGlzcC9wcm9nbW9kZXMvZXRhZ3MtcmVnZW4uZWwgYi9saXNw L3Byb2dtb2Rlcy9ldGFncy1yZWdlbi5lbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uZWNiNmU4YWUyYzMKLS0tIC9kZXYvbnVsbAorKysgYi9saXNwL3Byb2dt b2Rlcy9ldGFncy1yZWdlbi5lbApAQCAtMCwwICsxLDM1NSBAQAorOzs7IGV0YWdzLXJlZ2Vu LmVsIC0tLSBBdXRvLShyZSlyZWdlbmVyYXRpbmcgdGFncyAgLSotIGxleGljYWwtYmluZGlu ZzogdCAtKi0KKworOzsgQ29weXJpZ2h0IChDKSAyMDIxLCAyMDIzIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorCis7OyBBdXRob3I6IERtaXRyeSBHdXRvdiA8ZG1pdHJ5QGd1 dG92LmRldj4KKzs7IEtleXdvcmRzOiB0b29scworCis7OyBUaGlzIGZpbGUgaXMgcGFydCBv ZiBHTlUgRW1hY3MuCisKKzs7IEdOVSBFbWFjcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cis7OyBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorOzsg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKzs7IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisK Kzs7IEdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKzs7IEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKzs7IFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCis7OyBh bG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisKKzs7OyBDb21tZW50YXJ5OgorCis7OyBTaW1wbGUgdGFncyBnZW5l cmF0aW9uIHdpdGggYXV0b21hdGljIGludmFsaWRhdGlvbi4KKworOzs7IENvZGU6CisKKyhy ZXF1aXJlICdjbC1saWIpCisKKyhkZWZncm91cCBldGFncy1yZWdlbiBuaWwKKyAgIkF1dG8t KHJlKWdlbmVyYXRpbmcgdGFncy4iCisgIDpncm91cCAndG9vbHMpCisKKyhkZWZ2YXIgZXRh Z3MtcmVnZW4tLXRhZ3MtZmlsZSBuaWwpCisoZGVmdmFyIGV0YWdzLXJlZ2VuLS10YWdzLXJv b3QgbmlsKQorKGRlZnZhciBldGFncy1yZWdlbi0tbmV3LWZpbGUgbmlsKQorCisoZGVjbGFy ZS1mdW5jdGlvbiBwcm9qZWN0LXJvb3QgInByb2plY3QiKQorKGRlY2xhcmUtZnVuY3Rpb24g cHJvamVjdC1maWxlcyAicHJvamVjdCIpCisKKyhkZWZjdXN0b20gZXRhZ3MtcmVnZW4tcHJv Z3JhbSAoZXhlY3V0YWJsZS1maW5kICJldGFncyIpCisgICJOYW1lIG9mIHRoZSBldGFncyBl eGVjdXRhYmxlLiIKKyAgOzsgQWx3YXlzIGhhdmluZyBvdXIgJ2V0YWdzJyBoZXJlIHdvdWxk IGJlIGVhc2llciwgYnV0IHdlIGNhbid0CisgIDs7IGFsd2F5cyByZWx5IG9uIGl0IGJlaW5n IGluc3RhbGxlZC4gIFNvIGl0IG1pZ2h0IGJlIGN0YWdzJ3MgZXRhZ3MuCisgIDp0eXBlICdm aWxlKQorCisoZGVmY3VzdG9tIGV0YWdzLXJlZ2VuLXRhZ3MtZmlsZSAiVEFHUyIKKyAgIk5h bWUgb2YgdGhlIHRhZ3MgZmlsZSB0byBjcmVhdGUgaW5zaWRlIHRoZSBwcm9qZWN0LiIKKyAg OnR5cGUgJ3N0cmluZykKKworKGRlZmN1c3RvbSBldGFncy1yZWdlbi1wcm9ncmFtLW9wdGlv bnMgbmlsCisgICJMaXN0IG9mIGFkZGl0aW9uYWwgb3B0aW9ucyB0byBwYXNzIHRvIHRoZSBl dGFncyBwcm9ncmFtLiIKKyAgOnR5cGUgJyhyZXBlYXQgc3RyaW5nKSkKKworKGRlZmN1c3Rv bSBldGFncy1yZWdlbi1sYW5nLXJlZ2V4cC1hbGlzdCBuaWwKKyAgIk1hcHBpbmcgb2YgbGFu Z3VhZ2VzIHRvIGFkZGl0aW9uYWwgcmVnZXhwcyBmb3IgdGFncy4KKworRWFjaCBsYW5ndWFn ZSBzaG91bGQgYmUgb25lIG9mIHRoZSByZWNvZ25pemVkIGJ5IGV0YWdzLCBzZWUKK2BldGFn cyAtLWhlbHAnLiAgRWFjaCB0YWcgcmVnZXhwIHNob3VsZCBiZSBhIHN0cmluZyBpbiB0aGUg Zm9ybWF0CithcyBkb2N1bWVudGVkIGZvciB0aGUgYC0tcmVnZXgnIGFyZ3VtZW50cy4KKwor V2Ugc3VwcG9ydCBvbmx5IEVtYWNzJ3MgZXRhZ3MgcHJvZ3JhbSB3aXRoIHRoaXMgb3B0aW9u LiIKKyAgOnR5cGUgJyhyZXBlYXQKKyAgICAgICAgICAoY29ucworICAgICAgICAgICA6dGFn ICJMYW5ndWFnZXMgZ3JvdXAiCisgICAgICAgICAgIChyZXBlYXQgKHN0cmluZyA6dGFnICJM YW5ndWFnZSBuYW1lIikpCisgICAgICAgICAgIChyZXBlYXQgKHN0cmluZyA6dGFnICJUYWcg UmVnZXhwIikpKSkpCisKKzs7OyMjI2F1dG9sb2FkCisocHV0ICdldGFncy1yZWdlbi1sYW5n LXJlZ2V4cC1hbGlzdCAnc2FmZS1sb2NhbC12YXJpYWJsZQorICAgICAobGFtYmRhICh2YWx1 ZSkKKyAgICAgICAoYW5kIChsaXN0cCB2YWx1ZSkKKyAgICAgICAgICAgIChzZXEtZXZlcnkt cAorICAgICAgICAgICAgIChsYW1iZGEgKGdyb3VwKQorICAgICAgICAgICAgICAgKGFuZCAo Y29uc3AgZ3JvdXApCisgICAgICAgICAgICAgICAgICAgIChsaXN0cCAoY2FyIGdyb3VwKSkK KyAgICAgICAgICAgICAgICAgICAgKGxpc3RwIChjZHIgZ3JvdXApKQorICAgICAgICAgICAg ICAgICAgICAoc2VxLWV2ZXJ5LXAKKyAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGxh bmcpCisgICAgICAgICAgICAgICAgICAgICAgIChhbmQgKHN0cmluZ3AgbGFuZykKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLW1hdGNoLXAgIlxcYFthLXoqK10rXFwn IiBsYW5nKSkpCisgICAgICAgICAgICAgICAgICAgICAoY2FyIGdyb3VwKSkKKyAgICAgICAg ICAgICAgICAgICAgKHNlcS1ldmVyeS1wICMnc3RyaW5ncCAoY2RyIGdyb3VwKSkpKQorICAg ICAgICAgICAgIHZhbHVlKSkpKQorCis7OyBYWFg6IFdlIGhhdmUgdG8gbGlzdCBhbGwgZXh0 ZW5zaW9uczogZXRhZ3MgZmFsbHMgYmFjayB0byBGb3J0cmFuLgorOzsgaHR0cDovL2xpc3Rz LmdudS5vcmcvYXJjaGl2ZS9odG1sL2VtYWNzLWRldmVsLzIwMTgtMDEvbXNnMDAzMjMuaHRt bAorKGRlZmN1c3RvbSBldGFncy1yZWdlbi1maWxlLWV4dGVuc2lvbnMKKyAgJygicmIiICJq cyIgInB5IiAicGwiICJlbCIgImMiICJjcHAiICJjYyIgImgiICJoaCIgImhwcCIKKyAgICAi amF2YSIgImdvIiAiY2wiICJsaXNwIiAicHJvbG9nIiAicGhwIiAiZXJsIiAiaHJsIgorICAg ICJGIiAiZiIgImY5MCIgImZvciIgImNzIiAiYSIgImFzbSIgImFkcyIgImFkYiIgImFkYSIp CisgICJDb2RlIGZpbGUgZXh0ZW5zaW9ucy4KKworRmlsZSBleHRlbnNpb25zIHRvIGdlbmVy YXRlIHRoZSB0YWdzIGZvci4iCisgIDp0eXBlICcocmVwZWF0IChzdHJpbmcgOnRhZyAiRmls ZSBleHRlbnNpb24iKSkpCisKKzs7OyMjI2F1dG9sb2FkCisocHV0ICdldGFncy1yZWdlbi1m aWxlLWV4dGVuc2lvbnMgJ3NhZmUtbG9jYWwtdmFyaWFibGUKKyAgICAgKGxhbWJkYSAodmFs dWUpCisgICAgICAgKGFuZCAobGlzdHAgdmFsdWUpCisgICAgICAgICAgICAoc2VxLWV2ZXJ5 LXAKKyAgICAgICAgICAgICAobGFtYmRhIChleHQpCisgICAgICAgICAgICAgICAoYW5kIChz dHJpbmdwIGV4dCkKKyAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1tYXRjaC1wICJcXGBb YS16QS1aMC05XStcXCciIGV4dCkpKQorICAgICAgICAgICAgIHZhbHVlKSkpKQorCis7OyBG SVhNRTogT25seSBwbGFpbiBzdWJzdHJpbmdzIHN1cHBvcnRlZCBjdXJyZW50bHkuCisoZGVm Y3VzdG9tIGV0YWdzLXJlZ2VuLWlnbm9yZXMgbmlsCisgICJBZGRpdGlvbmFsIGlnbm9yZSBy dWxlcywgaW4gdGhlIGZvcm1hdCBvZiBgcHJvamVjdC1pZ25vcmVzJy4iCisgIDp0eXBlICco cmVwZWF0CisgICAgICAgICAgKHN0cmluZyA6dGFnICJHbG9iIHRvIGlnbm9yZSIpKSkKKwor Ozs7IyMjYXV0b2xvYWQKKyhwdXQgJ2V0YWdzLXJlZ2VuLWlnbm9yZXMgJ3NhZmUtbG9jYWwt dmFyaWFibGUKKyAgICAgKGxhbWJkYSAodmFsdWUpCisgICAgICAgKGFuZCAobGlzdHAgdmFs dWUpCisgICAgICAgICAgICAoc2VxLWV2ZXJ5LXAgIydzdHJpbmdwIHZhbHVlKSkpKQorCiso ZGVmdmFyIGV0YWdzLXJlZ2VuLS1lcnJvcnMtYnVmZmVyLW5hbWUgIipldGFncy1yZWdlbi10 YWdzLWVycm9ycyoiKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLWFsbC1tdGltZXMgKHByb2op CisgIChsZXQgKChmaWxlcyAoZXRhZ3MtcmVnZW4tLWFsbC1maWxlcyBwcm9qKSkKKyAgICAg ICAgKG10aW1lcyAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICdlcXVhbCkpCisgICAgICAgIGZp bGUtbmFtZS1oYW5kbGVyLWFsaXN0KQorICAgIChkb2xpc3QgKGYgZmlsZXMpCisgICAgICAo Y29uZGl0aW9uLWNhc2UgbmlsCisgICAgICAgICAgKHB1dGhhc2ggZgorICAgICAgICAgICAg ICAgICAgIChmaWxlLWF0dHJpYnV0ZS1tb2RpZmljYXRpb24tdGltZQorICAgICAgICAgICAg ICAgICAgICAoZmlsZS1hdHRyaWJ1dGVzIGYpKQorICAgICAgICAgICAgICAgICAgIG10aW1l cykKKyAgICAgICAgKGZpbGUtbWlzc2luZyBuaWwpKSkKKyAgICBtdGltZXMpKQorCisoZGVm dW4gZXRhZ3MtcmVnZW4tLXJlZnJlc2ggKHByb2opCisgIChzYXZlLWV4Y3Vyc2lvbgorICAg IChsZXQqICgodGFncy1maWxlIChleHBhbmQtZmlsZS1uYW1lIGV0YWdzLXJlZ2VuLXRhZ3Mt ZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0 LXJvb3QgcHJvaikpKQorICAgICAgICAgICAodGFncy1tdGltZSAoZmlsZS1hdHRyaWJ1dGUt bW9kaWZpY2F0aW9uLXRpbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlLWF0dHJp YnV0ZXMgdGFncy1maWxlKSkpCisgICAgICAgICAgIChhbGwtbXRpbWVzIChldGFncy1yZWdl bi0tYWxsLW10aW1lcyBwcm9qKSkKKyAgICAgICAgICAgYWRkZWQtZmlsZXMKKyAgICAgICAg ICAgY2hhbmdlZC1maWxlcworICAgICAgICAgICByZW1vdmVkLWZpbGVzKQorICAgICAgKGV0 YWdzLXJlZ2VuLS12aXNpdC10YWJsZSB0YWdzLWZpbGUgKHByb2plY3Qtcm9vdCBwcm9qKSkK KyAgICAgIChzZXQtYnVmZmVyIChnZXQtZmlsZS1idWZmZXIgdGFncy1maWxlKSkKKyAgICAg IChkb2xpc3QgKGZpbGUgKHRhZ3MtdGFibGUtZmlsZXMpKQorICAgICAgICAobGV0ICgobXRp bWUgKGdldGhhc2ggZmlsZSBhbGwtbXRpbWVzKSkpCisgICAgICAgICAgKGNvbmQKKyAgICAg ICAgICAgKChudWxsIG10aW1lKQorICAgICAgICAgICAgKHB1c2ggZmlsZSByZW1vdmVkLWZp bGVzKSkKKyAgICAgICAgICAgKCh0aW1lLWxlc3MtcCB0YWdzLW10aW1lIG10aW1lKQorICAg ICAgICAgICAgKHB1c2ggZmlsZSBjaGFuZ2VkLWZpbGVzKQorICAgICAgICAgICAgKHJlbWhh c2ggZmlsZSBhbGwtbXRpbWVzKSkKKyAgICAgICAgICAgKHQKKyAgICAgICAgICAgIChyZW1o YXNoIGZpbGUgYWxsLW10aW1lcykpKSkpCisgICAgICAobWFwaGFzaAorICAgICAgIChsYW1i ZGEgKGtleSBfdmFsdWUpCisgICAgICAgICAocHVzaCBrZXkgYWRkZWQtZmlsZXMpKQorICAg ICAgIGFsbC1tdGltZXMpCisgICAgICAoaWYgKD4gKCsgKGxlbmd0aCBhZGRlZC1maWxlcykK KyAgICAgICAgICAgICAgICAobGVuZ3RoIGNoYW5nZWQtZmlsZXMpCisgICAgICAgICAgICAg ICAgKGxlbmd0aCByZW1vdmVkLWZpbGVzKSkKKyAgICAgICAgICAgICAxMDApCisgICAgICAg ICAgKHByb2duCisgICAgICAgICAgICAobWVzc2FnZSAiZXRhZ3MtcmVnZW46IFRvbyBtYW55 IGNoYW5nZXMsIGZhbGxpbmcgYmFjayB0byBmdWxsIHJlc2NhbiIpCisgICAgICAgICAgICAo ZXRhZ3MtcmVnZW4tLXRhZ3MtY2xlYW51cCkpCisgICAgICAgIChkb2xpc3QgKGZpbGUgKG5j b25jIHJlbW92ZWQtZmlsZXMgY2hhbmdlZC1maWxlcykpCisgICAgICAgICAgKGV0YWdzLXJl Z2VuLS1yZW1vdmUtdGFnIGZpbGUpKQorICAgICAgICAod2hlbiAob3IgY2hhbmdlZC1maWxl cyBhZGRlZC1maWxlcykKKyAgICAgICAgICAoYXBwbHkgIydldGFncy1yZWdlbi0tYXBwZW5k LXRhZ3MKKyAgICAgICAgICAgICAgICAgKG5jb25jIGNoYW5nZWQtZmlsZXMgYWRkZWQtZmls ZXMpKSkKKyAgICAgICAgKHdoZW4gKG9yIGNoYW5nZWQtZmlsZXMgYWRkZWQtZmlsZXMgcmVt b3ZlZC1maWxlcykKKyAgICAgICAgICAobGV0ICgoc2F2ZS1zaWxlbnRseSB0KQorICAgICAg ICAgICAgICAgIChtZXNzYWdlLWxvZy1tYXggbmlsKSkKKyAgICAgICAgICAgIChzYXZlLWJ1 ZmZlciAwKSkpKSkpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLW1heWJlLWdlbmVyYXRlICgp CisgIChsZXQgKChwcm9qKSkKKyAgICAod2hlbiAoYW5kIGV0YWdzLXJlZ2VuLS10YWdzLXJv b3QKKyAgICAgICAgICAgICAgIChub3QgKGZpbGUtaW4tZGlyZWN0b3J5LXAgZGVmYXVsdC1k aXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRh Z3MtcmVnZW4tLXRhZ3Mtcm9vdCkpKQorICAgICAgKGV0YWdzLXJlZ2VuLS10YWdzLWNsZWFu dXApKQorICAgICh3aGVuIChhbmQgKG5vdCBldGFncy1yZWdlbi0tdGFncy1yb290KQorICAg ICAgICAgICAgICAgKGZpbGUtZXhpc3RzLXAgKGV4cGFuZC1maWxlLW5hbWUKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBldGFncy1yZWdlbi10YWdzLWZpbGUKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC1yb290CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzZXRxIHByb2ogKHByb2plY3QtY3VycmVudCkpKSkpKQorICAg ICAgKG1lc3NhZ2UgIkZvdW5kIGV4aXN0aW5nIHRhZ3MgdGFibGUsIHJlZnJlc2hpbmcuLi4i KQorICAgICAgKGV0YWdzLXJlZ2VuLS1yZWZyZXNoIHByb2opKQorICAgICh3aGVuIChhbmQg KG5vdCAob3IgdGFncy1maWxlLW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3Mt dGFibGUtbGlzdCkpCisgICAgICAgICAgICAgICAoc2V0cSBwcm9qIChvciBwcm9qIChwcm9q ZWN0LWN1cnJlbnQpKSkpCisgICAgICAobWVzc2FnZSAiR2VuZXJhdGluZyBuZXcgdGFncyB0 YWJsZS4uLiIpCisgICAgICAobGV0ICgoc3RhcnQgKHRpbWUtdG8tc2Vjb25kcykpKQorICAg ICAgICAoZXRhZ3MtcmVnZW4tLXRhZ3MtZ2VuZXJhdGUgcHJvaikKKyAgICAgICAgKG1lc3Nh Z2UgIi4uLmRvbmUgKCUuMmYgcykiICgtICh0aW1lLXRvLXNlY29uZHMpIHN0YXJ0KSkpKSkp CisKKyhkZWZ1biBldGFncy1yZWdlbi0tYWxsLWZpbGVzIChwcm9qKQorICAobGV0KiAoKHJv b3QgKHByb2plY3Qtcm9vdCBwcm9qKSkKKyAgICAgICAgIChkZWZhdWx0LWRpcmVjdG9yeSBy b290KQorICAgICAgICAgOzsgVE9ETzogTWFrZSB0aGUgc2Nhbm5pbmcgbW9yZSBlZmZpY2ll bnQsIGUuZy4gbW92ZSB0aGUKKyAgICAgICAgIDs7IGZpbHRlcmluZyBieSBnbG9iIHRvIHBy b2plY3QgKHByb2plY3QtZmlsZXMtZmlsdGVyZWQuLi4pLgorICAgICAgICAgKGZpbGVzIChw cm9qZWN0LWZpbGVzIHByb2opKQorICAgICAgICAgKG1hdGNoLXJlIChjb25jYXQKKyAgICAg ICAgICAgICAgICAgICAgIlxcLiIKKyAgICAgICAgICAgICAgICAgICAgKHJlZ2V4cC1vcHQg ZXRhZ3MtcmVnZW4tZmlsZS1leHRlbnNpb25zKQorICAgICAgICAgICAgICAgICAgICAiXFwn IikpKQorICAgIChjbC1kZWxldGUtaWYKKyAgICAgKGxhbWJkYSAoZikgKG9yIChub3QgKHN0 cmluZy1tYXRjaC1wIG1hdGNoLXJlIGYpKQorICAgICAgICAgICAgICAgIDs7IEZJWE1FOiBI YW5kbGUgZXRhZ3MtcmVnZW4taWdub3JlcyBwcm9wZXJseS4KKyAgICAgICAgICAgICAgICAo c3RyaW5nLW1hdGNoLXAgIi9cXC4jIiBmKQorICAgICAgICAgICAgICAgIChjbC1zb21lIChs YW1iZGEgKGlnbm9yZSkgKHN0cmluZy1zZWFyY2ggaWdub3JlIGYpKQorICAgICAgICAgICAg ICAgICAgICAgICAgIGV0YWdzLXJlZ2VuLWlnbm9yZXMpKSkKKyAgICAgZmlsZXMpKSkKKwor KGRlZnVuIGV0YWdzLXJlZ2VuLS10YWdzLWdlbmVyYXRlIChwcm9qKQorICAocmVxdWlyZSAn ZGlyZWQpCisgIChsZXQqICgocm9vdCAocHJvamVjdC1yb290IHByb2opKQorICAgICAgICAg KGRlZmF1bHQtZGlyZWN0b3J5IHJvb3QpCisgICAgICAgICAoZmlsZXMgKGV0YWdzLXJlZ2Vu LS1hbGwtZmlsZXMgcHJvaikpCisgICAgICAgICAodGFncy1maWxlIChleHBhbmQtZmlsZS1u YW1lIGV0YWdzLXJlZ2VuLXRhZ3MtZmlsZSByb290KSkKKyAgICAgICAgIChjdGFncy1wIChl dGFncy1yZWdlbi0tY3RhZ3MtcCkpCisgICAgICAgICAoY29tbWFuZCAoZm9ybWF0ICIlcyAl cyAlcyAtIC1vICVzIgorICAgICAgICAgICAgICAgICAgICAgICAgICBldGFncy1yZWdlbi1w cm9ncmFtCisgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXBjb25jYXQgIydpZGVudGl0 eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldGFncy1yZWdlbi0t YnVpbGQtcHJvZ3JhbS1vcHRpb25zIGN0YWdzLXApCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIiAiKQorICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBjdGFn cydzIGV0YWdzIHJlcXVpcmVzICctTCcgZm9yIHN0ZGluIGlucHV0LgorICAgICAgICAgICAg ICAgICAgICAgICAgICAoaWYgY3RhZ3MtcCAiLUwiICIiKQorICAgICAgICAgICAgICAgICAg ICAgICAgICB0YWdzLWZpbGUpKSkKKyAgICAod2l0aC10ZW1wLWJ1ZmZlcgorICAgICAgKG1h cGMgKGxhbWJkYSAoZikKKyAgICAgICAgICAgICAgKGluc2VydCBmICJcbiIpKQorICAgICAg ICAgICAgZmlsZXMpCisgICAgICAoc2hlbGwtY29tbWFuZC1vbi1yZWdpb24gKHBvaW50LW1p bikgKHBvaW50LW1heCkgY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG5pbCBuaWwgZXRhZ3MtcmVnZW4tLWVycm9ycy1idWZmZXItbmFtZSB0KSkKKyAgICAoZXRh Z3MtcmVnZW4tLXZpc2l0LXRhYmxlIHRhZ3MtZmlsZSByb290KSkpCisKKyhkZWZ1biBldGFn cy1yZWdlbi0tdmlzaXQtdGFibGUgKHRhZ3MtZmlsZSByb290KQorICA7OyBJbnZhbGlkYXRl IHRoZSBzY2FubmVkIHRhZ3MgYWZ0ZXIgYW55IGNoYW5nZSBpcyB3cml0dGVuIHRvIGRpc2su CisgIChhZGQtaG9vayAnYWZ0ZXItc2F2ZS1ob29rICMnZXRhZ3MtcmVnZW4tLXVwZGF0ZS1m aWxlKQorICAoYWRkLWhvb2sgJ2JlZm9yZS1zYXZlLWhvb2sgIydldGFncy1yZWdlbi0tbWFy ay1hcy1uZXcpCisgIChzZXRxIGV0YWdzLXJlZ2VuLS10YWdzLWZpbGUgdGFncy1maWxlCisg ICAgICAgIGV0YWdzLXJlZ2VuLS10YWdzLXJvb3Qgcm9vdCkKKyAgKHZpc2l0LXRhZ3MtdGFi bGUgZXRhZ3MtcmVnZW4tLXRhZ3MtZmlsZSkpCisKKyhkZWZ1biBldGFncy1yZWdlbi0tY3Rh Z3MtcCAoKQorICAoc3RyaW5nLXNlYXJjaCAiQ3RhZ3MiCisgICAgICAgICAgICAgICAgIChz aGVsbC1jb21tYW5kLXRvLXN0cmluZworICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiJXMg LS12ZXJzaW9uIiBldGFncy1yZWdlbi1wcm9ncmFtKSkpKQorCisoZGVmdW4gZXRhZ3MtcmVn ZW4tLWJ1aWxkLXByb2dyYW0tb3B0aW9ucyAoY3RhZ3MtcCkKKyAgKHdoZW4gKGFuZCBldGFn cy1yZWdlbi1sYW5nLXJlZ2V4cC1hbGlzdCBjdGFncy1wKQorICAgICh1c2VyLWVycm9yICJl dGFncy1yZWdlbi1sYW5nLXJlZ2V4cC1hbGlzdCBpcyBub3Qgc3VwcG9ydGVkIHdpdGggQ3Rh Z3MiKSkKKyAgKG5jb25jCisgICAobWFwY2FuCisgICAgKGxhbWJkYSAoZ3JvdXApCisgICAg ICAobWFwY2FuCisgICAgICAgKGxhbWJkYSAobGFuZykKKyAgICAgICAgIChtYXBjYXIgKGxh bWJkYSAocmVnZXhwKQorICAgICAgICAgICAgICAgICAgIChjb25jYXQgIi0tcmVnZXg9Igor ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNoZWxsLXF1b3RlLWFyZ3VtZW50CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAieyVzfSVzIiBsYW5nIHJlZ2V4cCkp KSkKKyAgICAgICAgICAgICAgICAgKGNkciBncm91cCkpKQorICAgICAgIChjYXIgZ3JvdXAp KSkKKyAgICBldGFncy1yZWdlbi1sYW5nLXJlZ2V4cC1hbGlzdCkKKyAgIGV0YWdzLXJlZ2Vu LXByb2dyYW0tb3B0aW9ucykpCisKKyhkZWZ1biBldGFncy1yZWdlbi0tdXBkYXRlLWZpbGUg KCkKKyAgOzsgVE9ETzogTWF5YmUgb25seSBkbyB0aGlzIHdoZW4gRW1hY3MgaXMgaWRsZSBm b3IgYSBiaXQuICBPciBkZWZlcgorICA7OyB0aGUgdXBkYXRlcyBhbmQgZG8gdGhlbSBsYXRl ciBpbiBidXJzdHMgd2hlbiB0aGUgdGFibGUgaXMgdXNlZC4KKyAgKGxldCAoKGZpbGUtbmFt ZSBidWZmZXItZmlsZS1uYW1lKQorICAgICAgICAodGFncy1maWxlLWJ1ZiAoZ2V0LWZpbGUt YnVmZmVyIGV0YWdzLXJlZ2VuLS10YWdzLWZpbGUpKQorICAgICAgICBwciBzaG91bGQtc2Nh bikKKyAgICAoc2F2ZS1leGN1cnNpb24KKyAgICAgICh3aGVuIHRhZ3MtZmlsZS1idWYKKyAg ICAgICAgKGNvbmQKKyAgICAgICAgICgoYW5kIGV0YWdzLXJlZ2VuLS1uZXctZmlsZQorICAg ICAgICAgICAgICAgKGtpbGwtbG9jYWwtdmFyaWFibGUgJ2V0YWdzLXJlZ2VuLS1uZXctZmls ZSkKKyAgICAgICAgICAgICAgIChzZXRxIHByIChwcm9qZWN0LWN1cnJlbnQpKQorICAgICAg ICAgICAgICAgKGVxdWFsIChwcm9qZWN0LXJvb3QgcHIpIGV0YWdzLXJlZ2VuLS10YWdzLXJv b3QpCisgICAgICAgICAgICAgICAobWVtYmVyIGZpbGUtbmFtZSAocHJvamVjdC1maWxlcyBw cikpKQorICAgICAgICAgIChzZXQtYnVmZmVyIHRhZ3MtZmlsZS1idWYpCisgICAgICAgICAg KHNldHEgc2hvdWxkLXNjYW4gdCkpCisgICAgICAgICAoKHByb2duIChzZXQtYnVmZmVyIHRh Z3MtZmlsZS1idWYpCisgICAgICAgICAgICAgICAgIChldGFncy1yZWdlbi0tcmVtb3ZlLXRh ZyBmaWxlLW5hbWUpKQorICAgICAgICAgIChzZXRxIHNob3VsZC1zY2FuIHQpKSkpCisgICAg ICAod2hlbiBzaG91bGQtc2NhbgorICAgICAgICAoZXRhZ3MtcmVnZW4tLWFwcGVuZC10YWdz IGZpbGUtbmFtZSkKKyAgICAgICAgKGxldCAoKHNhdmUtc2lsZW50bHkgdCkKKyAgICAgICAg ICAgICAgKG1lc3NhZ2UtbG9nLW1heCBuaWwpKQorICAgICAgICAgIChzYXZlLWJ1ZmZlciAw KSkpKSkpCisKKyhkZWZ1biBldGFncy1yZWdlbi0tcmVtb3ZlLXRhZyAoZmlsZS1uYW1lKQor ICAoZ290by1jaGFyIChwb2ludC1taW4pKQorICAod2hlbiAoc2VhcmNoLWZvcndhcmQgKGZv cm1hdCAiXGZcbiVzLCIgZmlsZS1uYW1lKSBuaWwgdCkKKyAgICAobGV0ICgoc3RhcnQgKG1h dGNoLWJlZ2lubmluZyAwKSkpCisgICAgICAoc2VhcmNoLWZvcndhcmQgIlxmXG4iIG5pbCAn bW92ZSkKKyAgICAgIChsZXQgKChpbmhpYml0LXJlYWQtb25seSB0KSkKKyAgICAgICAgKGRl bGV0ZS1yZWdpb24gc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgKGlmIChlb2JwKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KQorICAgICAgICAgICAgICAgICAg ICAgICAgICgtIChwb2ludCkgMikpKSkpCisgICAgdCkpCisKKyhkZWZ1biBldGFncy1yZWdl bi0tYXBwZW5kLXRhZ3MgKCZyZXN0IGZpbGUtbmFtZXMpCisgIChnb3RvLWNoYXIgKHBvaW50 LW1heCkpCisgIChsZXQgKChvcHRpb25zIChldGFncy1yZWdlbi0tYnVpbGQtcHJvZ3JhbS1v cHRpb25zIChldGFncy1yZWdlbi0tY3RhZ3MtcCkpKQorICAgICAgICAoaW5oaWJpdC1yZWFk LW9ubHkgdCkpCisgICAgOzsgRklYTUU6IGNhbGwtcHJvY2VzcyBpcyBzaWduaWZpY2FudGx5 IGZhc3RlciwgdGhvdWdoLgorICAgIDs7IExpa2UgMTBtcyB2cyAyMG1zIGhlcmUuCisgICAg KHNoZWxsLWNvbW1hbmQKKyAgICAgKGZvcm1hdCAiJXMgJXMgJXMgLW8gLSIKKyAgICAgICAg ICAgICBldGFncy1yZWdlbi1wcm9ncmFtIChtYXBjb25jYXQgIydpZGVudGl0eSBvcHRpb25z ICIgIikKKyAgICAgICAgICAgICAobWFwY29uY2F0ICMnaWRlbnRpdHkgZmlsZS1uYW1lcyAi ICIpKQorICAgICB0IGV0YWdzLXJlZ2VuLS1lcnJvcnMtYnVmZmVyLW5hbWUpKQorICA7OyBG SVhNRTogSXMgdGhlcmUgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXM/CisgIDs7IENvbXBsZXRp b24gdGFibGUgaXMgdGhlIG9ubHkgcmVtYWluaW5nIHBsYWNlIHdoZXJlIHRoZQorICA7OyB1 cGRhdGUgaXMgbm90IGluY3JlbWVudGFsLgorICAoc2V0cS1kZWZhdWx0IHRhZ3MtY29tcGxl dGlvbi10YWJsZSBuaWwpKQorCisoZGVmdW4gZXRhZ3MtcmVnZW4tLW1hcmstYXMtbmV3ICgp CisgICh1bmxlc3MgYnVmZmVyLWZpbGUtbnVtYmVyCisgICAgKHNldHEtbG9jYWwgZXRhZ3Mt cmVnZW4tLW5ldy1maWxlIHQpKSkKKworKGRlZnVuIGV0YWdzLXJlZ2VuLS10YWdzLWNsZWFu dXAgKCkKKyAgKHdoZW4gZXRhZ3MtcmVnZW4tLXRhZ3MtZmlsZQorICAgIChsZXQgKChidWZm ZXIgKGdldC1maWxlLWJ1ZmZlciBldGFncy1yZWdlbi0tdGFncy1maWxlKSkpCisgICAgICAo YW5kIGJ1ZmZlcgorICAgICAgICAgICAoa2lsbC1idWZmZXIgYnVmZmVyKSkpCisgICAgKHNl dHEgdGFncy1maWxlLW5hbWUgbmlsCisgICAgICAgICAgdGFncy10YWJsZS1saXN0IG5pbAor ICAgICAgICAgIGV0YWdzLXJlZ2VuLS10YWdzLWZpbGUgbmlsCisgICAgICAgICAgZXRhZ3Mt cmVnZW4tLXRhZ3Mtcm9vdCBuaWwpKQorICAocmVtb3ZlLWhvb2sgJ2FmdGVyLXNhdmUtaG9v ayAjJ2V0YWdzLXJlZ2VuLS11cGRhdGUtZmlsZSkKKyAgKHJlbW92ZS1ob29rICdiZWZvcmUt c2F2ZS1ob29rICMnZXRhZ3MtcmVnZW4tLW1hcmstYXMtbmV3KSkKKworOzs7IyMjYXV0b2xv YWQKKyhkZWZpbmUtbWlub3ItbW9kZSBldGFncy1yZWdlbi1tb2RlCisgICJHZW5lcmF0ZSB0 YWdzIGF1dG9tYXRpY2FsbHkuIgorICA6Z2xvYmFsIHQKKyAgKGlmIGV0YWdzLXJlZ2VuLW1v ZGUKKyAgICAgIChwcm9nbgorICAgICAgICAoYWR2aWNlLWFkZCAnZXRhZ3MtLXhyZWYtYmFj a2VuZCA6YmVmb3JlCisgICAgICAgICAgICAgICAgICAgICMnZXRhZ3MtcmVnZW4tLW1heWJl LWdlbmVyYXRlKQorICAgICAgICAoYWR2aWNlLWFkZCAndGFncy1jb21wbGV0aW9uLWF0LXBv aW50LWZ1bmN0aW9uIDpiZWZvcmUKKyAgICAgICAgICAgICAgICAgICAgIydldGFncy1yZWdl bi0tbWF5YmUtZ2VuZXJhdGUpKQorICAgIChhZHZpY2UtcmVtb3ZlICdldGFncy0teHJlZi1i YWNrZW5kICMnZXRhZ3MtcmVnZW4tLW1heWJlLWdlbmVyYXRlKQorICAgIChhZHZpY2UtcmVt b3ZlICd0YWdzLWNvbXBsZXRpb24tYXQtcG9pbnQtZnVuY3Rpb24gIydldGFncy1yZWdlbi0t bWF5YmUtZ2VuZXJhdGUpCisgICAgKGV0YWdzLXJlZ2VuLS10YWdzLWNsZWFudXApKSkKKwor KHByb3ZpZGUgJ2V0YWdzLXJlZ2VuKQorCis7OzsgZXRhZ3MtcmVnZW4uZWwgZW5kcyBoZXJl Cg== --------------GvAN742nYxTQ3XNRwqPixTlj--