From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: David Fussner via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers Date: Wed, 13 Sep 2023 12:10:36 +0100 Message-ID: References: <1de34060-e93b-0a42-fff5-20e283abe0dc@yandex.ru> <87o7vq0zir.fsf@gnus.org> <8735d20yvd.fsf@gnus.org> Reply-To: David Fussner Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0000000000009f58c406053b9c14" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="25076"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 53749@debbugs.gnu.org, Lars Ingebrigtsen , Dmitry Gutov To: Stefan Kangas Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Wed Sep 13 13:12:18 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 1qgNn8-0006GO-MD for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 13 Sep 2023 13:12:18 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qgNmp-00020B-2E; Wed, 13 Sep 2023 07:11:59 -0400 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 1qgNmn-0001zg-Qd for bug-gnu-emacs@gnu.org; Wed, 13 Sep 2023 07:11:57 -0400 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 1qgNmn-0006P7-IW for bug-gnu-emacs@gnu.org; Wed, 13 Sep 2023 07:11:57 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qgNms-00021F-Du for bug-gnu-emacs@gnu.org; Wed, 13 Sep 2023 07:12:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: David Fussner Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 13 Sep 2023 11:12:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 53749 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: pending patch Original-Received: via spool by 53749-submit@debbugs.gnu.org id=B53749.16946034787709 (code B ref 53749); Wed, 13 Sep 2023 11:12:02 +0000 Original-Received: (at 53749) by debbugs.gnu.org; 13 Sep 2023 11:11:18 +0000 Original-Received: from localhost ([127.0.0.1]:60940 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qgNm7-00020E-9M for submit@debbugs.gnu.org; Wed, 13 Sep 2023 07:11:17 -0400 Original-Received: from mail-pg1-x52c.google.com ([2607:f8b0:4864:20::52c]:46579) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qgNls-0001zU-GS for 53749@debbugs.gnu.org; Wed, 13 Sep 2023 07:11:13 -0400 Original-Received: by mail-pg1-x52c.google.com with SMTP id 41be03b00d2f7-573f722b86eso4714067a12.1 for <53749@debbugs.gnu.org>; Wed, 13 Sep 2023 04:10:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20221208; t=1694603449; x=1695208249; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=eq/0Z9vATqwjd4nbGd1dvdA0CjUulgJ5db8PtrIaHfo=; b=ZA5rnE3YwoIrjqdqvp4pjtGKwQlxnfpXz2+Qm525EZHndMuVLCF2ZrsMKaAGT8YSCS nRdltu8Bnf7Sc41pe59sRqPWN4D+8S5xEdrvJqpYpvhx7F1pQDCOXPu592cWSvvmqr88 9+H3/GdAjG72GsjUCf77PKRH0Zi/NA3JqBBCUiYqpvR7LXDa5yuTcx0o0SbQaPgueUSj umuDoKGU5hyNMh/ZcLXaVUISzVojHfrpPG6bsoPs6zdK7DiP30vjl0PexkEsWxo4N3nQ PnqBtIoLGCzE3TXNYkcl07NO5+nqjvIqAalgMdhZoPxWvSSM6EGxBaEsZI3I3odVH8Hb Z3wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1694603449; x=1695208249; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=eq/0Z9vATqwjd4nbGd1dvdA0CjUulgJ5db8PtrIaHfo=; b=nEKVQjK9fv/79RmrJKDflUpasj3fpvs39e98S7TQRopWEKtYjvHU1xcyd72g8t2T0a web6EZ9FPDqrdh6ihFddVCZkE6jHl2dH0QNqywuz0O6W4qVTwcVH1khr/xBWme6jrZIW N+zRbtSDvlUmu3weUivkPqgM/gwDzUTX2eJSm5dOJN2pzR8Q9eh5rS8bJlN5zPMEhvna vc20krblnngwHQAlVe2Rh0nZO+gi99S1oBOjUfJ4ERGj0zO8TG/IzgrZ3biMau/hGTL7 n7tJxzIcWzduWPwytI4/TuQXhLj4BIcUfMa+e3r9+gNHiZwG8Brn1coWO0602zokObG0 ql2w== X-Gm-Message-State: AOJu0Yx+kCv4hImjOLdPtRZvAmb4yu/g3xiOLyq33hRkRQqU58e/v8BM 0VrnN9Do35PF7E6IIoRCzmO8hMaobigFfQ9xoMo= X-Google-Smtp-Source: AGHT+IF1AopegZHokBacztAhWbDZKGYwrnt2dqqh0hyO4KwuubqGtHMKGZ3WZ+pZ/vDVVXPiE4z+qpzvNlNI63Pw2bw= X-Received: by 2002:a05:6a20:440f:b0:133:e3e3:dc07 with SMTP id ce15-20020a056a20440f00b00133e3e3dc07mr2411438pzb.49.1694603449094; Wed, 13 Sep 2023 04:10:49 -0700 (PDT) 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:270259 Archived-At: --0000000000009f58c406053b9c14 Content-Type: text/plain; charset="UTF-8" Hi Dmitry, I've belatedly found some time to get the xref commands working better in TeX buffers, this time using the default etags backend, as you requested last year. The basic strategy remains the same -- create a new thing-at-point argument "texsymbol" which replaces "symbol" in a definable set of major modes, then pass the resulting search term to xref. Changes in etags.c ensure that the various TeX modes and the tags tables are cooperating with each other, and I added a new option to etags (--tex-alt-forms) to handle some of the complexities of the TeX escape character (as you suggested). I also manipulate some variables buffer-locally to make things like project-find-regexp and isearch-forward-thing-at-point work better in such buffers. I attach a patch against current master. There is another patch which contains changes to the test suite in test/manual/etags, but I'll leave that one in case the changes I've made to etags.c need further work. I've sent patches to AUCTeX trying to fix a couple of issues there with xref-find-references. There's more work to be done on related issues in tex-mode.el, too, but this patch is a start. Thanks, David. P.S. I'm also starting the copyright assignment process, in case these changes prove acceptable. On Sun, 3 Sept 2023 at 11:46, Stefan Kangas wrote: > > David Fussner writes: > > > Thanks for the nudge. I do in fact have a patch that I'm just about finding > > time to test, so I'll try to get it to the list within a week or two. > > Sounds good, and thank you. --0000000000009f58c406053b9c14 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Fix-behavior-of-xref-commands-in-TeX-buffers.patch" Content-Disposition: attachment; filename="0001-Fix-behavior-of-xref-commands-in-TeX-buffers.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lmhn30dy0 RnJvbSBkNWE3N2JkMWRjNDVlMDYzOGRmM2U0Yzc2M2ExNjg5MTJjOTNiNWI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBGdXNzbmVyIDxkZnVzc25lckBnb29nbGVtYWlsLmNv bT4KRGF0ZTogV2VkLCAxMyBTZXAgMjAyMyAxMTo1OTo1NCArMDEwMApTdWJqZWN0OiBbUEFUQ0hd IEZpeCBiZWhhdmlvciBvZiB4cmVmIGNvbW1hbmRzIGluIFRlWCBidWZmZXJzCgoqIGxpYi1zcmMv ZXRhZ3MuYyAobG9uZ29wdHMpOiBBZGQgbmV3IG9wdGlvbiAtLXRleC1hbHQtZm9ybXMuCihUZVhf Y29tbWFuZHMpOiBJbXByb3ZlIHBhcnNpbmcgb2YgY29tbWFuZHMgaW4gVGVYIGJ1ZmZlcnMuCihU RVhfZGVmZW52KTogRXhwYW5kIGxpc3Qgb2YgY29tbWFuZHMgdG8gdGFnIGJ5IGRlZmF1bHQgaW4g VGVYCmJ1ZmZlcnMuCihUZVhfaGVscCk6CiogZG9jL2VtYWNzL21haW50YWluaW5nLnRleGkgKFRh ZyBTeW50YXgpOiBEb2N1bWVudCBuZXcgdGFnZ2VkCmNvbW1hbmRzIGFuZCBuZXcgdXNlciBvcHRp b24uCihJZGVudGlmaWVyIFNlYXJjaCk6IEFkZCBub3RlIGFib3V0IGF1dG8tbW9kZS1hbGlzdCBh bmQKeHJlZi1maW5kLXJlZmVyZW5jZXMuCgoqIGxpc3AvdGV4dG1vZGVzL3RleC1tb2RlLmVsICh0 ZXgtY29tbW9uLWluaXRpYWxpemF0aW9uKTogU2V0IHVwIHhyZWYKbW9kaWZpY2F0aW9ucyBmb3Ig aW4tdHJlZSBUZVggbW9kZXMuCih0ZXgtdGhpbmdhdHB0LW1vZGVzLWxpc3QpOiBOZXcgdmFyLgoo dGV4LXRoaW5nYXRwdC1pcy10ZXhzeW1ib2wpOiBOZXcgZGVmY3VzdG9tLgoodGV4LXNldC10aGlu Z2F0cHQtc3ltYm9sKTogTmV3IGNvbW1hbmQgdG8gYXBwbHkgdmFsdWUgb2YgcHJldmlvdXMKYnVm ZmVyLWxvY2FsbHkuCih0ZXgtLXN5bWJvbC1vci10ZXhzeW1ib2wpOiBOZXcgaGVscGVyIGZ1bmN0 aW9uIGZvciBwcmV2aW91cy4KKHRleC0tdGhpbmctYXQtcG9pbnQpOiBOZXcgZnVuY3Rpb24gdG8g cmV0dXJuIHRleHN5bWJvbAondGhpbmctYXQtcG9pbnQnLgoodGV4LXRoaW5nYXRwdC0tYmVnaW5u aW5nLW9mLXRleHN5bWJvbCkKKHRleC10aGluZ2F0cHQtLWVuZC1vZi10ZXhzeW1ib2wpOiBOZXcg ZnVuY3Rpb25zIHRvIGRlZmluZSB0ZXhzeW1ib2wKInRoaW5nIiBmb3IgJ3RoaW5nLWF0LXBvaW50 Jy4KKHRleC10aGluZ2F0cHQtc3ludGF4LXRhYmxlLCB0ZXgtZXNjYXBlLWNoYXIpOiBOZXcgdmFy cyB0byBkbyB0aGUKc2FtZS4KKHRleC10aGluZ2F0cHQtaW5jbHVkZS1lc2NhcGUpOiBOZXcgZGVm Y3VzdG9tIHRvIHJlZmluZSBiZWhhdmlvciBvZgpwcmV2aW91cy4KKHRleC0taW5jbHVkZS1lc2Nh cGUtcCk6IE5ldyBmdW5jdGlvbiB0byBkbyB0aGUgc2FtZS4KKHRleC10aGluZ2F0cHQtc3ludGF4 LXRhYmxlKTogTmV3IGZ1bmN0aW9uIHRvIGFjY2VzcyBhbmQgbW9kaWZ5IHRoZQpzeW50YXggdGFi bGUgb2YgdGhlIHNhbWUgbmFtZS4KLS0tCiBkb2MvZW1hY3MvbWFpbnRhaW5pbmcudGV4aSB8ICAz MyArKysrKy0KIGxpYi1zcmMvZXRhZ3MuYyAgICAgICAgICAgIHwgMTIyICsrKysrKysrKysrKysr KysrKy0tLQogbGlzcC90ZXh0bW9kZXMvdGV4LW1vZGUuZWwgfCAyMTYgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAzNTcgaW5zZXJ0aW9ucygr KSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL2VtYWNzL21haW50YWluaW5nLnRl eGkgYi9kb2MvZW1hY3MvbWFpbnRhaW5pbmcudGV4aQppbmRleCBhOTUzMzVmM2RmMi4uNDRiOGIz MDQwMjYgMTAwNjQ0Ci0tLSBhL2RvYy9lbWFjcy9tYWludGFpbmluZy50ZXhpCisrKyBiL2RvYy9l bWFjcy9tYWludGFpbmluZy50ZXhpCkBAIC0yNDU3LDYgKzI0NTcsMTMgQEAgSWRlbnRpZmllciBT ZWFyY2gKIHJlZmVyZW5jZWQuICBUaGUgWFJFRiBtb2RlIGNvbW1hbmRzIGFyZSBhdmFpbGFibGUg aW4gdGhpcyBidWZmZXIsIHNlZQogQHJlZntYcmVmIENvbW1hbmRzfS4KIAorV2hlbiBpbnZva2Vk IGluIGEgYnVmZmVyIHdob3NlIG1ham9yIG1vZGUgdXNlcyB0aGUgQGNvZGV7ZXRhZ3N9CitiYWNr ZW5kLCBAa2Jke00tP30gc2VhcmNoZXMgZmlsZXMgYW5kIGJ1ZmZlcnMgd2hvc2UgbWFqb3IgbW9k ZSBtYXRjaGVzCit0aGF0IG9mIHRoZSBvcmlnaW5hbCBidWZmZXIuICBJdCBndWVzc2VzIHRoYXQg bW9kZSBmcm9tIGZpbGUKK2V4dGVuc2lvbnMsIHNvIGlmIEBrYmR7TS0/fSBzZWVtcyB0byBiZSBz a2lwcGluZyByZWxldmFudCBidWZmZXJzIG9yCitmaWxlcywgdHJ5IGN1c3RvbWl6aW5nIHRoZSB2 YXJpYWJsZSBAY29kZXthdXRvLW1vZGUtYWxpc3R9IHRvIGluY2x1ZGUKK3RoZSBtaXNzaW5nIGV4 dGVuc2lvbnMgKEBweHJlZntDaG9vc2luZyBNb2Rlc30pLgorCiBAdmluZGV4IHhyZWYtYXV0by1q dW1wLXRvLWZpcnN0LXhyZWYKICAgSWYgdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSBAY29kZXt4 cmVmLWF1dG8tanVtcC10by1maXJzdC14cmVmfSBpcwogQGNvZGV7dH0sIEBjb2Rle3hyZWYtZmlu ZC1yZWZlcmVuY2VzfSBhdXRvbWF0aWNhbGx5IGp1bXBzIHRvIHRoZSBmaXJzdApAQCAtMjY3Miw4 ICsyNjc5LDIzIEBAIFRhZyBTeW50YXgKIEBjb2Rle1xzZWN0aW9ufSwgQGNvZGV7XHN1YnNlY3Rp b259LCBAY29kZXtcc3Vic3Vic2VjdGlvbn0sCiBAY29kZXtcZXFub30sIEBjb2Rle1xsYWJlbH0s IEBjb2Rle1xyZWZ9LCBAY29kZXtcY2l0ZX0sCiBAY29kZXtcYmliaXRlbX0sIEBjb2Rle1xwYXJ0 fSwgQGNvZGV7XGFwcGVuZGl4fSwgQGNvZGV7XGVudHJ5fSwKLUBjb2Rle1xpbmRleH0sIEBjb2Rl e1xkZWZ9LCBAY29kZXtcbmV3Y29tbWFuZH0sIEBjb2Rle1xyZW5ld2NvbW1hbmR9LAotQGNvZGV7 XG5ld2Vudmlyb25tZW50fSBhbmQgQGNvZGV7XHJlbmV3ZW52aXJvbm1lbnR9IGFyZSB0YWdzLgor QGNvZGV7XGluZGV4fSwgQGNvZGV7XGRlZn0sIEBjb2Rle1xlZGVmfSwgQGNvZGV7XGdkZWZ9LCBA Y29kZXtceGRlZn0sCitAY29kZXtcbmV3Y29tbWFuZH0sIEBjb2Rle1xyZW5ld2NvbW1hbmR9LCBA Y29kZXtcbmV3ZW52aXJvbm1lbnR9LAorQGNvZGV7XHJlbmV3ZW52aXJvbm1lbnR9LCBAY29kZXtc RGVjbGFyZVJvYnVzdENvbW1hbmR9LAorQGNvZGV7XG5ld3JvYnVzdGNtZH0sIEBjb2Rle1xyZW5l d3JvYnVzdGNtZH0sIEBjb2Rle1xwcm92aWRlY29tbWFuZH0sCitAY29kZXtccHJvdmlkZXJvYnVz dGNtZH0sIEBjb2Rle1xOZXdEb2N1bWVudENvbW1hbmR9LAorQGNvZGV7XFJlbmV3RG9jdW1lbnRD b21tYW5kfSwgQGNvZGV7XFByb3ZpZGVEb2N1bWVudENvbW1hbmR9LAorQGNvZGV7XERlY2xhcmVE b2N1bWVudENvbW1hbmR9LCBAY29kZXtcTmV3RXhwYW5kYWJsZURvY3VtZW50Q29tbWFuZH0sCitA Y29kZXtcUmVuZXdFeHBhbmRhYmxlRG9jdW1lbnRDb21tYW5kfSwKK0Bjb2Rle1xQcm92aWRlRXhw YW5kYWJsZURvY3VtZW50Q29tbWFuZH0sCitAY29kZXtcRGVjbGFyZUV4cGFuZGFibGVEb2N1bWVu dENvbW1hbmR9LAorQGNvZGV7XE5ld0RvY3VtZW50RW52aXJvbm1lbnR9LCBAY29kZXtcUmVuZXdE b2N1bWVudEVudmlyb25tZW50fSwKK0Bjb2Rle1xQcm92aWRlRG9jdW1lbnRFbnZpcm9ubWVudH0s CitAY29kZXtcRGVjbGFyZURvY3VtZW50RW52aXJvbm1lbnR9LCBAY29kZXtcY3NkZWZ9LCBAY29k ZXtcY3NlZGVmfSwKK0Bjb2Rle1xjc2dkZWZ9LCBAY29kZXtcY3N4ZGVmfSwgQGNvZGV7XGNzbGV0 Y3N9LCBAY29kZXtcY3NsZXR9LAorQGNvZGV7XGxldGNzfSwgYW5kIEBjb2Rle1xsZXR9IGFyZSB0 YWdzLiAgU28gdG9vIGFyZSB0aGUgYXJndW1lbnRzIG9mCithbnkgc3RhcnJlZCB2YXJpYW50cyBv ZiB0aGVzZSBjb21tYW5kcywgd2hlbiBzdWNoIHZhcmlhbnRzIGN1cnJlbnRseQorZXhpc3QuCiAK IE90aGVyIGNvbW1hbmRzIGNhbiBtYWtlIHRhZ3MgYXMgd2VsbCwgaWYgeW91IHNwZWNpZnkgdGhl bSBpbiB0aGUKIGVudmlyb25tZW50IHZhcmlhYmxlIEBlbnZ7VEVYVEFHU30gYmVmb3JlIGludm9r aW5nIEBjb21tYW5ke2V0YWdzfS4gIFRoZQpAQCAtMjY4OSw2ICsyNzExLDEzIEBAIFRhZyBTeW50 YXgKIHNwZWNpZmllcyAodXNpbmcgQm91cm5lIHNoZWxsIHN5bnRheCkgdGhhdCB0aGUgY29tbWFu ZHMKIEBzYW1we1xteWNvbW1hbmR9IGFuZCBAc2FtcHtcbXlvdGhlcmNvbW1hbmR9IGFsc28gZGVm aW5lIHRhZ3MuCiAKK1RoZSBAc2FtcHstLXRleC1hbHQtZm9ybXN9IG9wdGlvbiBjYXVzZXMgZWFj aCB0YWcgdG8gaGF2ZSB0d28gbmFtZXMsCitvbmUgd2l0aCBhbmQgb25lIHdpdGhvdXQgdGhlIEBU ZVh7fSBlc2NhcGUgY2hhcmFjdGVyLCB1c3VhbGx5CitAc2FtcHtcfS4gIFRoaXMgbWF5IGJlIGhl bHBmdWwgd2hlbiBtaXhpbmcgdHJhZGl0aW9uYWwgQFRlWHt9IG9yCitATGFUZVh7fSBjb25zdHJ1 Y3RzIChAc2FtcHtcZGVmfSkgd2l0aCBuZXdlciBjb25zdHJ1Y3RzIGZyb20gdGhlCitAc2FtcHtl dG9vbGJveH0gcGFja2FnZSAoQHNhbXB7XGNzZGVmfSkuICBVc2Ugb2YgdGhpcyBvcHRpb24gd2ls bAorZG91YmxlIHRoZSBzaXplIG9mIGFueSBAVGVYe30tcmVsYXRlZCBzZWN0aW9ucyBpbiB5b3Vy IHRhZ3MgZmlsZS4KKwogQGl0ZW0KIEluIExpc3AgY29kZSwgYW55IGZ1bmN0aW9uIGRlZmluZWQg d2l0aCBAY29kZXtkZWZ1bn0sIGFueSB2YXJpYWJsZQogZGVmaW5lZCB3aXRoIEBjb2Rle2RlZnZh cn0gb3IgQGNvZGV7ZGVmY29uc3R9LCBhbmQgaW4gZ2VuZXJhbCB0aGUKZGlmZiAtLWdpdCBhL2xp Yi1zcmMvZXRhZ3MuYyBiL2xpYi1zcmMvZXRhZ3MuYwppbmRleCAxNDdlY2JkN2MxYi4uM2E2Njgy ZmU0NTEgMTAwNjQ0Ci0tLSBhL2xpYi1zcmMvZXRhZ3MuYworKysgYi9saWItc3JjL2V0YWdzLmMK QEAgLTQ3NSw2ICs0NzUsNyBAQCAjZGVmaW5lIHhybmV3KG9wLCBuLCBtKSAoKG9wKSA9IHhucmVh bGxvYyAob3AsIG4sIChtKSAqIHNpemVvZiAqKG9wKSkpCiBzdGF0aWMgYm9vbCBpZ25vcmVpbmRl bnQ7CS8qIC1JOiBpZ25vcmUgaW5kZW50YXRpb24gaW4gQyAqLwogc3RhdGljIGludCBwYWNrYWdl c19vbmx5OwkvKiAtLXBhY2thZ2VzLW9ubHk6IGluIEFkYSwgb25seSB0YWcgcGFja2FnZXMqLwog c3RhdGljIGludCBjbGFzc19xdWFsaWZ5OwkvKiAtUTogcHJvZHVjZSBjbGFzcy1xdWFsaWZpZWQg dGFncyBpbiBDKysvSmF2YSAqLworc3RhdGljIGludCB0ZXhfYWx0X2Zvcm1zOyAgICAgICAvKiAt LXRleC1hbHQtZm9ybXM6IHRhZyBuYW1lcyB3LyBhbmQgdy9vIGVzY2FwZSAqLwogc3RhdGljIGlu dCBkZWJ1ZzsJCS8qIC0tZGVidWcgKi8KIAogLyogU1RESU4gaXMgZGVmaW5lZCBpbiBMeW54T1Mg c3lzdGVtIGhlYWRlcnMgKi8KQEAgLTUwOSw2ICs1MTAsNyBAQCAjZGVmaW5lIFNURElOIDB4MTAw MQkJLyogcmV0dXJuZWQgYnkgZ2V0b3B0X2xvbmcgb24gLS1wYXJzZS1zdGRpbiAqLwogICB7ICJu by1yZWdleCIsICAgICAgICAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgICAgICAgICAgICAg ICAnUicgICB9LAogICB7ICJpZ25vcmUtY2FzZS1yZWdleCIsICByZXF1aXJlZF9hcmd1bWVudCwg TlVMTCwgICAgICAgICAgICAgICAnYycgICB9LAogICB7ICJwYXJzZS1zdGRpbiIsICAgICAgICBy ZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgICAgICAgICAgICAgICBTVERJTiB9LAorICB7ICJ0ZXgt YWx0LWZvcm1zIiwgICAgICBub19hcmd1bWVudCwgICAgICAgJnRleF9hbHRfZm9ybXMsICAgICAx ICAgICB9LAogICB7ICJ2ZXJzaW9uIiwgICAgICAgICAgICBub19hcmd1bWVudCwgICAgICAgTlVM TCwgICAgICAgICAgICAgICAnVicgICB9LAogCiAjaWYgQ1RBR1MgLyogQ3RhZ3Mgb3B0aW9ucyAq LwpAQCAtNzkyLDEyICs3OTQsMjggQEAgI2RlZmluZSBTVERJTiAweDEwMDEJCS8qIHJldHVybmVk IGJ5IGdldG9wdF9sb25nIG9uIC0tcGFyc2Utc3RkaW4gKi8KICJJbiBMYVRlWCB0ZXh0LCB0aGUg YXJndW1lbnQgb2YgYW55IG9mIHRoZSBjb21tYW5kcyAnXFxjaGFwdGVyJyxcblwKICdcXHNlY3Rp b24nLCAnXFxzdWJzZWN0aW9uJywgJ1xcc3Vic3Vic2VjdGlvbicsICdcXGVxbm8nLCAnXFxsYWJl bCcsXG5cCiAnXFxyZWYnLCAnXFxjaXRlJywgJ1xcYmliaXRlbScsICdcXHBhcnQnLCAnXFxhcHBl bmRpeCcsICdcXGVudHJ5JyxcblwKLSdcXGluZGV4JywgJ1xcZGVmJywgJ1xcbmV3Y29tbWFuZCcs ICdcXHJlbmV3Y29tbWFuZCcsXG5cCi0nXFxuZXdlbnZpcm9ubWVudCcgb3IgJ1xccmVuZXdlbnZp cm9ubWVudCcgaXMgYSB0YWcuXG5cCisnXFxpbmRleCcsICdcXGRlZicsICdcXGVkZWYnLCAnXFxn ZGVmJywgJ1xceGRlZicsICdcXG5ld2NvbW1hbmQnLFxuXAorJ1xccmVuZXdjb21tYW5kJywgJ1xc bmV3ZW52aXJvbm1lbnQnLCAnXFxyZW5ld2Vudmlyb25tZW50JyxcblwKKydcXERlY2xhcmVSb2J1 c3RDb21tYW5kLCAnXFxuZXdyb2J1c3RjbWQnLCAnXFxyZW5ld3JvYnVzdGNtZCcsXG5cCisnXFxw cm92aWRlY29tbWFuZCcsICdcXHByb3ZpZGVyb2J1c3RjbWQnLCAnXFxOZXdEb2N1bWVudENvbW1h bmQnLFxuXAorJ1xcUmVuZXdEb2N1bWVudENvbW1hbmQnLCAnXFxQcm92aWRlRG9jdW1lbnRDb21t YW5kJyxcblwKKydcXERlY2xhcmVEb2N1bWVudENvbW1hbmQnLCAnXFxOZXdFeHBhbmRhYmxlRG9j dW1lbnRDb21tYW5kJyxcblwKKydcXFJlbmV3RXhwYW5kYWJsZURvY3VtZW50Q29tbWFuZCcsICdc XFByb3ZpZGVFeHBhbmRhYmxlRG9jdW1lbnRDb21tYW5kJyxcblwKKydcXERlY2xhcmVFeHBhbmRh YmxlRG9jdW1lbnRDb21tYW5kJywgJ1xcTmV3RG9jdW1lbnRFbnZpcm9ubWVudCcsXG5cCisnXFxS ZW5ld0RvY3VtZW50RW52aXJvbm1lbnQnLCAnXFxQcm92aWRlRG9jdW1lbnRFbnZpcm9ubWVudCcs XG5cCisnXFxEZWNsYXJlRG9jdW1lbnRFbnZpcm9ubWVudCcsICdcXGNzZGVmJywgJ1xcY3NlZGVm JywgJ1xcY3NnZGVmJyxcblwKKydcXGNzeGRlZicsICdcXGNzbGV0Y3MnLCAnXFxjc2xldCcsICdc XGxldGNzJywgb3IgJ1xcbGV0JyBpcyBhIHRhZy5cblwKK1NvIGlzIHRoZSBhcmd1bWVudCBvZiBh bnkgb2YgdGhlIHN0YXJyZWQgdmFyaWFudHMgb2YgdGhlc2UgY29tbWFuZHMsXG5cCit3aGVuIGEg c3RhcnJlZCB2YXJpYW50IGN1cnJlbnRseSBleGlzdHMuXG5cCiBcblwKIE90aGVyIGNvbW1hbmRz IGNhbiBiZSBzcGVjaWZpZWQgYnkgc2V0dGluZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVcblwK ICdURVhUQUdTJyB0byBhIGNvbG9uLXNlcGFyYXRlZCBsaXN0IGxpa2UsIGZvciBleGFtcGxlLFxu XAotICAgICBURVhUQUdTPVwibXljb21tYW5kOm15b3RoZXJjb21tYW5kXCIuIjsKKyAgICAgVEVY VEFHUz1cIm15Y29tbWFuZDpteW90aGVyY29tbWFuZFwiLlxuXAorXG5cCitUaGUgJy0tdGV4LWFs dC1mb3Jtcycgb3B0aW9uIGNhdXNlcyBlYWNoIHRhZyB0byBoYXZlIHR3byBuYW1lcywgb25lXG5c Cit3aXRoIGFuZCBvbmUgd2l0aG91dCB0aGUgVGVYIGVzY2FwZSBjaGFyLCB1c3VhbGx5ICdcXCcu ICBUaGlzIG1heSBiZVxuXAoraGVscGZ1bCB3aGVuIG1peGluZyB0cmFkaXRpb25hbCBUZVggb3Ig TGFUZVggY29uc3RydWN0cyAoJ1xcZGVmJylcblwKK3dpdGggbmV3ZXIgY29uc3RydWN0cyBmcm9t IHRoZSAnZXRvb2xib3gnIHBhY2thZ2UgKCdcXGNzZGVmJykuIjsKIAogCiBzdGF0aWMgY29uc3Qg Y2hhciAqVGV4aW5mb19zdWZmaXhlcyBbXSA9CkBAIC01NzM1LDEyICs1NzUzLDI3IEBAIFNjaGVt ZV9mdW5jdGlvbnMgKEZJTEUgKmluZikKIAogc3RhdGljIGxpbmVidWZmZXIgKlRFWF90b2t0YWIg PSBOVUxMOyAvKiBUYWJsZSB3aXRoIHRhZyB0b2tlbnMgKi8KIAotLyogRGVmYXVsdCBzZXQgb2Yg Y29udHJvbCBzZXF1ZW5jZXMgdG8gcHV0IGludG8gVEVYX3Rva3RhYi4KLSAgIFRoZSB2YWx1ZSBv ZiBlbnZpcm9ubWVudCB2YXIgVEVYVEFHUyBpcyBwcmVwZW5kZWQgdG8gdGhpcy4gICovCisvKiBE ZWZhdWx0IHNldCBvZiBjb250cm9sIHNlcXVlbmNlcyB0byBwdXQgaW50byBURVhfdG9rdGFiLiAg VGhlIHZhbHVlIG9mCisgICBlbnZpcm9ubWVudCB2YXIgVEVYVEFHUyBpcyBwcmVwZW5kZWQgdG8g dGhpcy4gICgyMDIzKSBBZGQgdmFyaWFudHMgb2YKKyAgICdcZGVmJywgc29tZSBhZGRpdGlvbmFs IExhVGVYIChhbmQgZm9ybWVyIHhwYXJzZSkgY29tbWFuZHMsIGFuZCBjb21tb24KKyAgIHZhcmlh bnRzIGZyb20gdGhlICdldG9vbGJveCcgcGFja2FnZS4gIEFsc28sIGFkZCBzdGFycmVkIHZhcmlh bnRzIG9mIHRoZQorICAgY29tbWFuZHMgaWYgdGhleSBleGlzdC4gKi8KIHN0YXRpYyBjb25zdCBj aGFyICpURVhfZGVmZW52ID0gIlwKLTpjaGFwdGVyOnNlY3Rpb246c3Vic2VjdGlvbjpzdWJzdWJz ZWN0aW9uOmVxbm86bGFiZWw6cmVmOmNpdGU6YmliaXRlbVwKLTpwYXJ0OmFwcGVuZGl4OmVudHJ5 OmluZGV4OmRlZlwKLTpuZXdjb21tYW5kOnJlbmV3Y29tbWFuZDpuZXdlbnZpcm9ubWVudDpyZW5l d2Vudmlyb25tZW50IjsKKzpjaGFwdGVyKjpzZWN0aW9uKjpzdWJzZWN0aW9uKjpzdWJzdWJzZWN0 aW9uKjpwYXJ0KjpsYWJlbDpyZWZcCis6Y2hhcHRlcjpzZWN0aW9uOnN1YnNlY3Rpb246c3Vic3Vi c2VjdGlvbjplcW5vOmNpdGU6YmliaXRlbTpwYXJ0XAorOmFwcGVuZGl4OmVudHJ5OmluZGV4OmRl ZjplZGVmOmdkZWY6eGRlZjpuZXdjb21tYW5kKjpuZXdjb21tYW5kXAorOnJlbmV3Y29tbWFuZCo6 cmVuZXdjb21tYW5kOm5ld2Vudmlyb25tZW50KjpuZXdlbnZpcm9ubWVudFwKKzpyZW5ld2Vudmly b25tZW50KjpyZW5ld2Vudmlyb25tZW50OkRlY2xhcmVSb2J1c3RDb21tYW5kKlwKKzpEZWNsYXJl Um9idXN0Q29tbWFuZDpyZW5ld3JvYnVzdGNtZCo6cmVuZXdyb2J1c3RjbWRcCis6bmV3cm9idXN0 Y21kKjpuZXdyb2J1c3RjbWQ6cHJvdmlkZWNvbW1hbmQqOnByb3ZpZGVjb21tYW5kXAorOnByb3Zp ZGVyb2J1c3RjbWQqOnByb3ZpZGVyb2J1c3RjbWQ6TmV3RG9jdW1lbnRDb21tYW5kXAorOlJlbmV3 RG9jdW1lbnRDb21tYW5kOlByb3ZpZGVEb2N1bWVudENvbW1hbmRcCis6RGVjbGFyZURvY3VtZW50 Q29tbWFuZDpOZXdFeHBhbmRhYmxlRG9jdW1lbnRDb21tYW5kXAorOlJlbmV3RXhwYW5kYWJsZURv Y3VtZW50Q29tbWFuZDpQcm92aWRlRXhwYW5kYWJsZURvY3VtZW50Q29tbWFuZFwKKzpEZWNsYXJl RXhwYW5kYWJsZURvY3VtZW50Q29tbWFuZDpOZXdEb2N1bWVudEVudmlyb25tZW50XAorOlJlbmV3 RG9jdW1lbnRFbnZpcm9ubWVudDpQcm92aWRlRG9jdW1lbnRFbnZpcm9ubWVudFwKKzpEZWNsYXJl RG9jdW1lbnRFbnZpcm9ubWVudDpjc2RlZjpjc2VkZWY6Y3NnZGVmOmNzeGRlZjpjc2xldGNzXAor OmNzbGV0OmxldGNzOmxldCI7CiAKIHN0YXRpYyB2b2lkIFRFWF9kZWNvZGVfZW52IChjb25zdCBj aGFyICosIGNvbnN0IGNoYXIgKik7CiAKQEAgLTU3NTIsNiArNTc4NSw3IEBAIFRlWF9jb21tYW5k cyAoRklMRSAqaW5mKQogewogICBjaGFyICpjcDsKICAgbGluZWJ1ZmZlciAqa2V5OworICBjaGFy IG5ld25hbWVbVUNIQVJfTUFYXTsKIAogICBjaGFyIFRFWF9lc2MgPSAnXDAnOwogICBjaGFyIFRF WF9vcGdycCBVTklOSVQsIFRFWF9jbGdycCBVTklOSVQ7CkBAIC01Nzk5LDE5ICs1ODMzLDczIEBA IFRlWF9jb21tYW5kcyAoRklMRSAqaW5mKQogCSAgICAgIHsKIAkJY2hhciAqcDsKIAkJcHRyZGlm Zl90IG5hbWVsZW4sIGxpbmVsZW47Ci0JCWJvb2wgb3BncnAgPSBmYWxzZTsKKwkJYm9vbCBvcGdy cCA9IGZhbHNlLCBvbmVfZXNjID0gZmFsc2U7CiAKIAkJY3AgPSBza2lwX3NwYWNlcyAoY3AgKyBr ZXktPmxlbik7CisJCS8qIFNraXAgdGhlIG9wdGlvbmFsIGFyZ3VtZW50cyB0byBjb21tYW5kcyBp biB0aGUgdGFncyBsaXN0IHNvCisJCSAgIHRoYXQgdGhlc2UgYXJndW1lbnRzIGRvbid0IGVuZCB1 cCBhcyB0aGUgbmFtZSBvZiB0aGUgdGFnLgorCQkgICBUaGUgbmFtZSB3aWxsIGluc3RlYWQgY29t ZSBmcm9tIHRoZSBhcmd1bWVudCBpbiBjdXJseSBicmFjZXMKKwkJICAgdGhhdCBmb2xsb3dzIHRo ZSBvcHRpb25hbCBvbmVzLiAgKi8KKwkJaWYgKCpjcCA9PSAnWycgfHwgKmNwID09ICcoJykKKwkJ ICB7CisJCSAgICB3aGlsZSAoKmNwICE9IFRFWF9vcGdycCAmJiAqY3AgIT0gJ1wwJykKKwkJICAg ICAgY3ArKzsKKwkJICB9CiAJCWlmICgqY3AgPT0gVEVYX29wZ3JwKQogCQkgIHsKIAkJICAgIG9w Z3JwID0gdHJ1ZTsKIAkJICAgIGNwKys7CiAJCSAgfQorCQkvKiBKdW1waW5nIHRvIGEgVGVYIGNv bW1hbmQgZGVmaW5pdGlvbiBkb2Vzbid0IHdvcmsgaW4gYXQgbGVhc3QKKwkJICAgc29tZSBvZiB0 aGUgZWRpdG9ycyB0aGF0IHVzZSBjdGFncy4gIFVzaW5nIHRoZQorCQkgICAnLS10ZXgtYWx0LWZv cm1zJyBvcHRpb24gdG8gc3RyaXAgVEVYX2VzYyBzaG91bGQgcHJvdmlkZQorCQkgICBtaW5vciBp bXByb3ZlbWVudHMsIHRob3VnaCBvdmVyYWxsIHRoZSBiZWhhdmlvciBpcyBzdGlsbAorCQkgICBz dWJvcHRpbWFsLiAgKFdpdGggLS10ZXgtYWx0LWZvcm1zIHdlIHByaW50IGVhY2ggdGFnIHR3aWNl LAorCQkgICBvbmNlIHdpdGggYW5kIG9uY2Ugd2l0aG91dCBURVhfZXNjIGluIHRoZSB0YWcgbmFt ZS4gIFNlZQorCQkgICBiZWxvdy4pICBUaGUgdW5kb2N1bWVudGVkIGN0YWdzIG9wdGlvbiAnLS1u by1kdXBsaWNhdGVzJyBtYXkKKwkJICAgYWxzbyBoZWxwLiAgQ2hhbmdlcyBpbiB0ZXgtbW9kZS5l bCBpbiBHTlUgRW1hY3MgYWRkcmVzcyB0aGUKKwkJICAgbWFqb3JpdHkgb2YgdGhlc2UgaXNzdWVz IGZvciBldGFncywgdGhvdWdoIHRoZQorCQkgICAnLS10ZXgtYWx0LWZvcm1zJyBvcHRpb24gY2Fu IGFsc28gYmUgdXNlZnVsIHRoZXJlLiAqLworCisJCWlmICh0ZXhfYWx0X2Zvcm1zICYmICpjcCA9 PSBURVhfZXNjKQorCQkgIHsKKwkJICAgIGNwKys7CisJCSAgICBvbmVfZXNjID0gdHJ1ZTsKKwkJ ICB9CisKKwkJLyogQWRkIG9wdGlvbmFsIGFyZ3VtZW50IGJyYWNrZXRzICcoJyBhbmQgJ1snIHRv IHRoZSBsb29wIHRlc3QKKwkJICAgc28gdGhhdCB0aGVzZSBhcmd1bWVudHMgZG9uJ3QgYXBwZWFy IGluIHRhZyBuYW1lcy4gIEFsc28gYWRkCisJCSAgICc9JyBhcyBpdCdzIHJlbGF0aW9uYWwgaW4g dGhlIHZhc3QgbWFqb3JpdHkgb2YgY2FzZXMuICAqLwogCQlmb3IgKHAgPSBjcDsKLQkJICAgICAo IWNfaXNzcGFjZSAoKnApICYmICpwICE9ICcjJyAmJgotCQkgICAgICAqcCAhPSBURVhfb3BncnAg JiYgKnAgIT0gVEVYX2NsZ3JwKTsKKwkJICAgICAoIWNfaXNzcGFjZSAoKnApICYmICpwICE9ICcj JyAmJiAqcCAhPSAnPScgJiYKKwkJICAgICAgKnAgIT0gJ1snICYmICpwICE9ICcoJyAmJiAqcCAh PSBURVhfb3BncnAgJiYKKwkJICAgICAgKnAgIT0gVEVYX2NsZ3JwKTsKIAkJICAgICBwKyspCi0J CSAgY29udGludWU7CisJCSAgLyogQWxsb3cgb25seSBvbmUgZXNjYXBlIGNoYXIgaW4gYSB0YWcg bmFtZSwgd2hpY2gKKwkJICAgICAocHJpbWFyaWx5KSBlbmFibGVzIHRhZ2dpbmcgYSBUZVggY29t bWFuZCdzIGRpZmZlcmVudCwKKwkJICAgICBwb3NzaWJseSB0ZW1wb3JhcnksICdcbGV0JyBiaW5k aW5ncy4gICovCisJCSAgaWYgKCpwID09IFRFWF9lc2MpCisJCSAgICB7CisJCSAgICAgIGlmICgh b25lX2VzYykKKwkJCXsKKwkJCSAgb25lX2VzYyA9IHRydWU7CisJCQkgIGNvbnRpbnVlOworCQkJ fQorCQkgICAgICBlbHNlCisJCQlicmVhazsKKwkJICAgIH0KKwkJICBlbHNlCisJCSAgICBjb250 aW51ZTsKKwkJLyogUmUtcnVuIHRoZSBzY2FuIHRvIGNhdGNoIChoaWdobHkgdW51c3VhbCkgY2Fz ZXMgd2hlcmUgYQorCQkgICBjb21tYW5kIG5hbWUgaXMgb2YgdGhlIGZvcm0gJ1woJy4gICovCisJ CWlmICgoKnAgPT0gJygnIHx8ICpwID09ICdbJykgJiYgKHAgLSBjcCkgPCAyKQorCQkgIHsKKwkJ ICAgIGZvciAocCA9IGNwOworCQkJICghY19pc3NwYWNlICgqcCkgJiYgKnAgIT0gJyMnICYmCisJ CQkgICpwICE9IFRFWF9vcGdycCAmJiAqcCAhPSBURVhfY2xncnApOworCQkJIHArKykKKwkJICAg ICAgY29udGludWU7CisJCSAgfQogCQluYW1lbGVuID0gcCAtIGNwOwogCQlsaW5lbGVuID0gbGIu bGVuOwogCQlpZiAoIW9wZ3JwIHx8ICpwID09IFRFWF9jbGdycCkKQEAgLTU4MjAsNiArNTkwOCwx NiBAQCBUZVhfY29tbWFuZHMgKEZJTEUgKmluZikKIAkJICAgICAgcCsrOwogCQkgICAgbGluZWxl biA9IHAgLSBsYi5idWZmZXIgKyAxOwogCQkgIH0KKwkJLyogV2l0aCAtLXRleC1hbHQtZm9ybXMg d2Ugc3RyaXAgYW55IFRFWF9lc2MgZnJvbSB0aGUgbmFtZSAoc2VlCisJCSAgIGFib3ZlKSwgcHJp bnQgdGhlIHRhZyB3aXRoIFRFWF9lc2MgcHJlcGVuZGVkIHRvIHRoZSBiYXJlIHRhZworCQkgICBu YW1lLCB0aGVuIHByaW50IHRoZSBzYW1lIHRhZyBhZ2FpbiB3aXRoIHRoZSBiYXJlIHRhZworCQkg ICBuYW1lLiAqLworCQlpZiAodGV4X2FsdF9mb3JtcykKKwkJICB7CisJCSAgc25wcmludGYgKG5l d25hbWUsIFVDSEFSX01BWCwgIiVjJXMiLCBURVhfZXNjLCBjcCk7CisJCSAgbWFrZV90YWcgKG5l d25hbWUsIG5hbWVsZW4gKyAxLCB0cnVlLAorCQkJICAgIGxiLmJ1ZmZlciwgbGluZWxlbiwgbGlu ZW5vLCBsaW5lY2hhcm5vKTsKKwkJICB9CiAJCW1ha2VfdGFnIChjcCwgbmFtZWxlbiwgdHJ1ZSwK IAkJCSAgbGIuYnVmZmVyLCBsaW5lbGVuLCBsaW5lbm8sIGxpbmVjaGFybm8pOwogCQlnb3RvIHRl eF9uZXh0X2xpbmU7IC8qIFdlIG9ubHkgdGFnIGEgbGluZSBvbmNlICovCmRpZmYgLS1naXQgYS9s aXNwL3RleHRtb2Rlcy90ZXgtbW9kZS5lbCBiL2xpc3AvdGV4dG1vZGVzL3RleC1tb2RlLmVsCmlu ZGV4IGEyNmU3YjljODNhLi4zZGU0YTA5M2UwOSAxMDA2NDQKLS0tIGEvbGlzcC90ZXh0bW9kZXMv dGV4LW1vZGUuZWwKKysrIGIvbGlzcC90ZXh0bW9kZXMvdGV4LW1vZGUuZWwKQEAgLTEyNzcsNiAr MTI3Nyw4IEBAIHRleC1jb21tb24taW5pdGlhbGl6YXRpb24KIAkgICAgICAoc3ludGF4LXByb3Bl cnRpemUtcnVsZXMgbGF0ZXgtc3ludGF4LXByb3BlcnRpemUtcnVsZXMpKQogICA7OyBUQUJzIGlu IHZlcmJhdGltIGVudmlyb25tZW50cyBkb24ndCBkbyB3aGF0IHlvdSB0aGluay4KICAgKHNldHEt bG9jYWwgaW5kZW50LXRhYnMtbW9kZSBuaWwpCisgIDs7IFNldCB1cCB4cmVmIGJhY2tlbmQgaW4g VGVYIGJ1ZmZlcnMuCisgICh0ZXgtc2V0LXRoaW5nYXRwdC1zeW1ib2wpCiAgIDs7IE90aGVyIHZh cnMgdGhhdCBzaG91bGQgYmUgYnVmZmVyLWxvY2FsLgogICAobWFrZS1sb2NhbC12YXJpYWJsZSAn dGV4LWNvbW1hbmQpCiAgIChtYWtlLWxvY2FsLXZhcmlhYmxlICd0ZXgtc3RhcnQtb2YtaGVhZGVy KQpAQCAtMzcyNCw2ICszNzI2LDIyMCBAQCB0ZXgtY2hrdGV4CiAgICAgICAgICAgICAgICAgICAg KGtpbGwtYnVmZmVyIChwcm9jZXNzLWJ1ZmZlciBwcm9jZXNzKSkpKSkpKQogICAgICAgKHByb2Nl c3Mtc2VuZC1yZWdpb24gdGV4LWNoa3RleC0tcHJvY2VzcyAocG9pbnQtbWluKSAocG9pbnQtbWF4 KSkKICAgICAgIChwcm9jZXNzLXNlbmQtZW9mIHRleC1jaGt0ZXgtLXByb2Nlc3MpKSkpCisMCis7 OzsgWHJlZiAvIEV0YWdzIHR3ZWFrcworCis7OyBSYXRoZXIgdGhhbiBkZWZpbmUgYSBuZXcgeHJl ZiBiYWNrZW5kIGZvciBUZVgsIHdlIHR3ZWFrIHRoZSBkZWZhdWx0Cis7OyBldGFncyBiYWNrZW5k IHNvIHRoYXQgdGhlIG1haW4geHJlZiB1c2VyIGNvbW1hbmRzIChpbmNsdWRpbmcKKzs7IGB4cmVm LWZpbmQtZGVmaW5pdGlvbnMnLCBgeHJlZi1maW5kLWFwcm9wb3MnLCBhbmQKKzs7IGB4cmVmLWZp bmQtcmVmZXJlbmNlcycgW29uIE0tLiwgQy1NLS4sIGFuZCBNLT8sIHJlc3BlY3RpdmVseV0pIHdv cmsKKzs7IGluIFRlWCBidWZmZXJzLiAgVGhpcyBtb3N0bHkgaW52b2x2ZXMgZGVmaW5pbmcgYSBu ZXcgVEhJTkcgZm9yCis7OyBgdGhpbmctYXQtcG9pbnQnICh0ZXhzeW1ib2wpLCB0aGVuIHN1YnN0 aXR1dGluZyB0aGF0IFRISU5HIGZvcgorOzsgYHN5bWJvbCcgaW4gVGVYIGJ1ZmZlcnMsIGF0IGxl YXN0IGJ5IChjb25maWd1cmFibGUpIGRlZmF1bHQuICBUaGUKKzs7IFRlWCBlc2NhcGUgY2hhcmFj dGVyIHdpbGwgYnkgZGVmYXVsdCBhcHBlYXIgaW4gdGhlIHJlc3VsdGluZyBzdHJpbmcKKzs7IG9u bHkgd2hlbiB0aGUgeHJlZiBjb21tYW5kIHVzZXMgc3RyaW5nIHNlYXJjaCBhbmQgbm90IHJlZ2V4 cAorOzsgc2VhcmNoLCB0aG91Z2ggdGhpcyB0b28gaXMgY29uZmlndXJhYmxlLiAgVGhlIG5ldyBU SElORyB0eXBlIGFsc28KKzs7IGltcHJvdmVzIHRoZSBhY2N1cmFjeSBvZiBvdGhlciBjb21tYW5k cyB0aGF0IHVzZSBgdGhpbmctYXQtcG9pbnQnCis7OyBpbiBUZVggYnVmZmVycywgbGlrZSBgaXNl YXJjaC1mb3J3YXJkLXRoaW5nLWF0LXBvaW50JyAob24gTS1zIE0tLikKKzs7IGFuZCBgcHJvamVj dC1maW5kLXJlZ2V4cCcgKG9uIEMteCBwIGcpLiAgSW5kZWVkLAorOzsgYHByb2plY3QtZmluZC1y ZWdleHAnIHNvbWV0aW1lcyB3b3JrcyBiZXR0ZXIgaW4gVGVYIGJ1ZmZlcnMgdGhhbgorOzsgYHhy ZWYtZmluZC1yZWZlcmVuY2VzJy4KKworKGRlZnZhciB0ZXgtdGhpbmdhdHB0LW1vZGVzLWxpc3QK KyAgJyh0ZXgtbW9kZSBkb2N0ZXgtbW9kZSBsYXRleC1tb2RlIHBsYWluLXRleC1tb2RlIHNsaXRl eC1tb2RlIGFtcy10ZXgtbW9kZSkKKyAgIk1ham9yIG1vZGVzIHdoZXJlIGB0aGluZy1hdC1wb2lu dCcgbWF5IHVzZSB0aGUgYHRleHN5bWJvbCcgdHlwZS4KKworV2hlbiBhIGJ1ZmZlcidzIGBtYWpv ci1tb2RlJyBpcyBpbiB0aGlzIGxpc3QsIGFuZCB3aGVuCitgdGV4LXRoaW5nYXRwdC1pcy10ZXhz eW1ib2wnIGlzIHQgKHRoZSBkZWZhdWx0KSwgYW55IGNvbW1hbmQgaW4KK3RoYXQgYnVmZmVyIHRo YXQgY2FsbHMgYHRoaW5nLWF0LXBvaW50JyB3aXRoIGEgYHN5bWJvbCcgYXJndW1lbnQKK2FjdHVh bGx5IHVzZXMgdGhlIGB0ZXhzeW1ib2wnIGFyZ3VtZW50LCBpbnN0ZWFkLiIpCisKKyhkZWZjdXN0 b20gdGV4LXRoaW5nYXRwdC1pcy10ZXhzeW1ib2wgdAorICAiV2hlbiBub24tbmlsIHJlcGxhY2Ug YHN5bWJvbCcgYnkgYHRleHN5bWJvbCcgZm9yIGB0aGluZy1hdC1wb2ludCcuCisKK1RoaXMgYXBw bGllcyBvbmx5IHRvIFRlWCBidWZmZXJzLiAgVGhlIGB0ZXhzeW1ib2wnIFwidGhpbmdcIgorbW9k aWZpZXMgdGhlIHN0YW5kYXJkIGBzeW1ib2wnIGZvciB1c2UgaW4gc3VjaCBidWZmZXJzLgorCitX aGVuIG5pbCwgcmVzdG9yZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBgdGhpbmctYXQtcG9pbnQn IGluIFRlWAorYnVmZmVycy4KKworQ3VzdG9tIHdpbGwgYXV0b21hdGljYWxseSBhcHBseSBjaGFu Z2VzIGluIGFsbCBUZVggYnVmZmVycywgYnV0CitpZiB5b3Ugc2V0IHRoZSB2YXJpYWJsZSBvdXRz aWRlIG9mIEN1c3RvbSBpdCB3b24ndCB0YWtlIGVmZmVjdAordW50aWwgeW91IGFwcGx5IGl0IHdp dGggXFxbdGV4LXNldC10aGluZ2F0cHQtc3ltYm9sXS4gIFdpdGhvdXQgYQorcHJlZml4IGFyZ3Vt ZW50IChcXFt1bml2ZXJzYWwtYXJndW1lbnRdKSB0aGlzIGFwcGxpZXMgb25seSB0byB0aGUKK2N1 cnJlbnQgYnVmZmVyLCBidXQgd2l0aCBvbmUgaXQgYXBwbGllcyB0byBhbGwgVGVYIGJ1ZmZlcnMg aW4KK2BidWZmZXItbGlzdCcuICAoVGVYIGJ1ZmZlcnMgYXJlIHRob3NlIHdob3NlIGBtYWpvci1t b2RlJyBpcyBhCittZW1iZXIgb2YgYHRleC10aGluZ2F0cHQtbW9kZXMtbGlzdCcuKSIKKyAgOnR5 cGUgJ2Jvb2xlYW4KKyAgOmdyb3VwICd0ZXgtZmlsZQorICA6Z3JvdXAgJ1RlWC1taXNjCisgIDpp bml0aWFsaXplICMnY3VzdG9tLWluaXRpYWxpemUtZGVmYXVsdAorICA6c2V0IChsYW1iZGEgKHZh ciB2YWwpCisgICAgICAgICAoc2V0LWRlZmF1bHQgdmFyIHZhbCkKKyAgICAgICAgICh0ZXgtc2V0 LXRoaW5nYXRwdC1zeW1ib2wgdCkpCisgIDp2ZXJzaW9uICIzMC4xIikKKworKGRlZmN1c3RvbSB0 ZXgtdGhpbmdhdHB0LWluY2x1ZGUtZXNjYXBlICcoeHJlZi1maW5kLWRlZmluaXRpb25zCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4cmVmLWZpbmQtZGVmaW5pdGlv bnMtb3RoZXItd2luZG93CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB4cmVmLWZpbmQtZGVmaW5pdGlvbnMtb3RoZXItZnJhbWUpCisgICJJZiBub24tbmlsLCBpbmNs dWRlIGB0ZXgtZXNjYXBlLWNoYXInIGluIGB0aGluZy1hdC1wb2ludCcuCisKK1RoaXMgdmFyaWFi bGUgb25seSB0YWtlcyBlZmZlY3Qgd2hlbiBgdGV4LXRoaW5nYXRwdC1pcy10ZXhzeW1ib2wnCitp cyB0ICh0aGUgZGVmYXVsdCksIGNoYW5naW5nIHRoZSBhcmd1bWVudCBwYXNzZWQgdG8KK2B0aGlu Zy1hdC1wb2ludCcgZnJvbSBgc3ltYm9sJyB0byBgdGV4c3ltYm9sJy4gIFdoZW4gdGhhdCBpcyB0 aGUKK2Nhc2UsIHRoZSB2YWx1ZXMgb2YgdGhpcyB2YXJpYWJsZSBhY3QgYXMgZm9sbG93czoKKwor V2hlbiB0LCBgdGhpbmctYXQtcG9pbnQnIHdpbGwgYWx3YXlzIGluY2x1ZGUgYQorYHRleC1lc2Nh cGUtY2hhcicgKHVzdWFsbHkgYFxcJyksIHNob3VsZCBvbmUgYmUgcHJlc2VudCwgaW4gdGhlCitz dHJpbmcgaXQgcmV0dXJucyBpbiBUZVggYnVmZmVycy4KKworV2hlbiBuaWwsIGB0aGluZy1hdC1w b2ludCcgd2lsbCBuZXZlciBpbmNsdWRlIHRoZQorYHRleC1lc2NhcGUtY2hhcicgaW4gdGhlIHN0 cmluZyBpdCByZXR1cm5zIGluIFRlWCBidWZmZXJzLgorCitPdGhlcndpc2UsIGl0J3MgYSBsaXN0 IG9mIGNvbW1hbmRzIGZvciB3aGljaCBgdGhpbmctYXQtcG9pbnQnCit3aWxsIGFsd2F5cyBpbmNs dWRlIHRoZSBgdGV4LWVzY2FwZS1jaGFyJyBpbiB0aGUgc3RyaW5nIGl0CityZXR1cm5zLiAgVGhl IHRocmVlIHhyZWYgY29tbWFuZHMgbGlzdGVkIGJ5IGRlZmF1bHQgbWF5IGNlYXNlIHRvCitmdW5j dGlvbiBwcm9wZXJseSBpbiBUZVggYnVmZmVycyBpZiBzZXQgdG8gbmlsLCBidXQgdXNpbmcgdGhl CitgLS10ZXgtYWx0LWZvcm1zJyBvcHRpb24gd2hlbiBjcmVhdGluZyB5b3VyIHRhZ3MgdGFibGUg d2l0aAorYGV0YWdzJyB3aWxsIHJlY3RpZnkgdGhhdC4iCisgIDp0eXBlICcoY2hvaWNlIChjb25z dCA6dGFnICJBbHdheXMgaW5jbHVkZSB0ZXgtZXNjYXBlLWNoYXIiIHQpCisgICAgICAgICAgICAg ICAgIChjb25zdCA6dGFnICJOZXZlciBpbmNsdWRlIHRleC1lc2NhcGUtY2hhciIgbmlsKQorICAg ICAgICAgICAgICAgICAoc2V0IDp0YWcgIkluY2x1ZGUgdGV4LWVzY2FwZS1jaGFyIGZvciB0aGVz ZSBjb21tYW5kcyIKKwkJICAgICAgKHJlcGVhdCA6aW5saW5lIHQgKHN5bWJvbCA6dGFnICJjb21t YW5kIikpKSkKKyAgOmdyb3VwICd0ZXgtZmlsZQorICA6Z3JvdXAgJ1RlWC1taXNjCisgIDp2ZXJz aW9uICIzMC4xIikKKworKGRlZnZhciB0ZXgtZXNjYXBlLWNoYXIgP1xcCisgICJUaGUgY3VycmVu dCwgcG9zc2libHkgYnVmZmVyLWxvY2FsLCBUZVggZXNjYXBlIGNoYXJhY3Rlci4KKworVGhlIGBl dGFncycgcHJvZ3JhbSBvbmx5IHJlY29nbml6ZXMgYFxcJyAoOTIpIGFuZCBgIScgKDMzKSBhcwor ZXNjYXBlIGNoYXJhY3RlcnMgaW4gVGVYIGRvY3VtZW50cywgYW5kIGlmIGl0IGRldGVjdHMgdGhl IGxhdHRlcgoraXQgYWxzbyB1c2VzIGA8PicgYXMgdGhlIFRlWCBncm91cGluZyBjb25zdHJ1Y3Qg cmF0aGVyIHRoYW4gYHt9Jy4KK1NldHRpbmcgdGhpcyB2YXJpYWJsZSB0byBhbnl0aGluZyBvdGhl ciB0aGFuIGBcXCcgb3IgYCEnIGlzCitwb3NzaWJsZSBidXQgd2lsbCBub3QgYmUgdXNlZnVsIHdp dGhvdXQgY2hhbmdlcyB0byBgZXRhZ3MnLCBhdAorbGVhc3QgZm9yIGNvbW1hbmRzIHRoYXQgc2Vh cmNoIHRhZ3MgdGFibGVzLCBzdWNoIGFzCitgeHJlZi1maW5kLWRlZmluaXRpb25zJyAoXFxbeHJl Zi1maW5kLWRlZmluaXRpb25zXSkgYW5kIFwKK2B4cmVmLWZpbmQtYXByb3BvcycgKFxcW3hyZWYt ZmluZC1hcHJvcG9zXSkuIikKKworKGRlZnZhciB0ZXgtdGhpbmdhdHB0LXN5bnRheC10YWJsZQor ICAobGV0KiAoKG9zdCAoaWYgKGJvdW5kcCAnVGVYLW1vZGUtc3ludGF4LXRhYmxlKQorICAgICAg ICAgICAgICAgICAgVGVYLW1vZGUtc3ludGF4LXRhYmxlCisgICAgICAgICAgICAgICAgdGV4LW1v ZGUtc3ludGF4LXRhYmxlKSkKKyAgICAgICAgIChzdCAobWFrZS1zeW50YXgtdGFibGUgb3N0KSkp CisgICAgKG1vZGlmeS1zeW50YXgtZW50cnkgPyMgIiciIHN0KQorICAgIChtb2RpZnktc3ludGF4 LWVudHJ5ID89ICInIiBzdCkKKyAgICAobW9kaWZ5LXN5bnRheC1lbnRyeSA/YCAiJyIgc3QpCisg ICAgKG1vZGlmeS1zeW50YXgtZW50cnkgP1wiICInIiBzdCkKKyAgICAobW9kaWZ5LXN5bnRheC1l bnRyeSA/JyAiJyIgc3QpCisgICAgc3QpCisgICJTeW50YXggdGFibGUgZm9yIGRlbGltaXRpbmcg YHRoaW5nLWF0LXBvaW50JyBpbiBUZVggYnVmZmVycy4KKworV2hlbiBgdGV4LXRoaW5nYXRwdC1p cy10ZXhzeW1ib2wnIGlzIHQsIHRoaXMgc3ludGF4IHRhYmxlIGhlbHBzCit0byBkZWZpbmUgd2hh dCBhIGB0ZXhzeW1ib2wnIGlzLiAgVG8gYWNjZXNzIGl0IHVzZSB0aGUKK2B0ZXgtdGhpbmdhdHB0 LXN5bnRheC10YWJsZScgZnVuY3Rpb24uIikKKworKGRlZnVuIHRleC10aGluZ2F0cHQtc3ludGF4 LXRhYmxlICgpCisgICJSZXR1cm4gYSBzeW50YXggdGFibGUgZm9yIGB0aGluZy1hdC1wb2ludCcg aW4gVGVYIGJ1ZmZlcnMuCisKK0l0IG1vZGlmaWVzIHRoZSBwcmUtZGVmaW5lZCBzeW50YXggdGFi bGUgZGVwZW5kaW5nIGJvdGggb24gdGhlCitzZXR0aW5nIG9mIHRoZSBgdGV4LWVzY2FwZS1jaGFy JyB2YXJpYWJsZSwgd2hpY2ggbWF5IGJlIGJ1ZmZlcgorbG9jYWwsIGFuZCBvbiB3aGV0aGVyIHdl J3JlIHVzaW5nIEFVQ1RlWCBvciB0aGUgaW4tdHJlZSB0ZXgtbW9kZS4iCisgIChsZXQgKChuc3Qg KG1ha2Utc3ludGF4LXRhYmxlIHRleC10aGluZ2F0cHQtc3ludGF4LXRhYmxlKSkKKyAgICAgICAg KGVzY3N5IChpZiAoYm91bmRwICdUZVgtbW9kZS1zeW50YXgtdGFibGUpCisgICAgICAgICAgICAg ICAgICAgP1xcCisgICAgICAgICAgICAgICAgID8vKSkpCisgICAgKGNvbmQgKChjaGFyLWVxdWFs IHRleC1lc2NhcGUtY2hhciA/XFwpKQorICAgICAgICAgICgoY2hhci1lcXVhbCB0ZXgtZXNjYXBl LWNoYXIgPyEpCisgICAgICAgICAgIChtb2RpZnktc3ludGF4LWVudHJ5ID9cXCAiXyIgbnN0KQor ICAgICAgICAgICAobW9kaWZ5LXN5bnRheC1lbnRyeSB0ZXgtZXNjYXBlLWNoYXIgKGNoYXItdG8t c3RyaW5nIGVzY3N5KSBuc3QpCisgICAgICAgICAgIChtb2RpZnktc3ludGF4LWVudHJ5ID88ICIo PiIgbnN0KQorICAgICAgICAgICAobW9kaWZ5LXN5bnRheC1lbnRyeSA/PiAiKTwiIG5zdCkpCisg ICAgICAgICAgKHQKKyAgICAgICAgICAgKG1vZGlmeS1zeW50YXgtZW50cnkgP1xcICJfIiBuc3Qp CisgICAgICAgICAgIChtb2RpZnktc3ludGF4LWVudHJ5IHRleC1lc2NhcGUtY2hhciAoY2hhci10 by1zdHJpbmcgZXNjc3kpIG5zdCkpKQorICAgIG5zdCkpCisKKzs7IFNldHVwIEFVQ1RlWCBtb2Rl cy4gIChTaG91bGQgdGhpcyBiZSBpbiBBVUNUZVggaXRzZWxmPykKKyhhZGQtaG9vayAnVGVYLW1v ZGUtaG9vayAjJ3RleC1zZXQtdGhpbmdhdHB0LXN5bWJvbCkKKworOzsgYHhyZWYtZmluZC1yZWZl cmVuY2VzJyBuZWVkcyB0aGlzIHdoZW4gY2FsbGVkIGZyb20gYSBsYXRleC1tb2RlCis7OyBidWZm ZXIgaW4gb3JkZXIgdG8gc2VhcmNoIGZpbGVzIG9yIGJ1ZmZlcnMgd2l0aCBhIC50ZXggc3VmZml4 Cis7OyAoaW5jbHVkaW5nIHRoZSBidWZmZXIgZnJvbSB3aGljaCBpdCBoYXMgYmVlbiBjYWxsZWQp LiAgV2UgYXBwZW5kIGl0Cis7OyB0byBgYXV0by1tb2RlLWFsaXN0JyBzbyBhcyBub3QgdG8gaW50 ZXJmZXJlIHdpdGggdGhlIHVzdWFsCis7OyBtb2RlLXNldHRpbmcgYXBwYXJhdHVzLgorKGFkZC10 by1saXN0ICdhdXRvLW1vZGUtYWxpc3QgJygiXFwuW3RUXWVbeFhdXFwnIiAuIGxhdGV4LW1vZGUp IHQpCisKKyhkb2xpc3QgKHRleG1vZGUgdGV4LXRoaW5nYXRwdC1tb2Rlcy1saXN0KQorICAocHV0 IHRleG1vZGUgJ2ZpbmQtdGFnLWRlZmF1bHQtZnVuY3Rpb24gJ3RleC0tdGhpbmctYXQtcG9pbnQp KQorCisocHV0ICd0ZXhzeW1ib2wgJ2JlZ2lubmluZy1vcCAndGV4LXRoaW5nYXRwdC0tYmVnaW5u aW5nLW9mLXRleHN5bWJvbCkKKworKHB1dCAndGV4c3ltYm9sICdlbmQtb3AgJ3RleC10aGluZ2F0 cHQtLWVuZC1vZi10ZXhzeW1ib2wpCisKKyhkZWNsYXJlLWZ1bmN0aW9uIGNsLXN1YnN0aXR1dGUg ImNsLXNlcSIgKGNsLW5ldyBjbC1vbGQgY2wtc2VxICZyZXN0IGNsLWtleXMpKQorCisoZGVmdW4g dGV4LXNldC10aGluZ2F0cHQtc3ltYm9sICgmb3B0aW9uYWwgYWxsKQorICAiU2V0IG1lYW5pbmcg b2YgYHRoaW5nLWF0LXBvaW50JyBgc3ltYm9sJyBpbiAoQUxMPykgVGVYIGJ1ZmZlcnMuCisKK1do ZW4gYHRleC10aGluZ2F0cHQtaXMtdGV4c3ltYm9sJyBpcyB0LCBzZXQgYHRoaW5nLWF0LXBvaW50 JyB0bwordXNlIHRoZSBgdGV4c3ltYm9sJyBcInRoaW5nXCIgaW5zdGVhZCBvZiBgc3ltYm9sJywg b3RoZXJ3aXNlCittYWludGFpbiBvciByZXN0b3JlIHRoZSBkZWZhdWx0LiAgV2l0aG91dCBhbiBv cHRpb25hbCBBTEwgbWFrZQorY2hhbmdlcyBvbmx5IGluIGN1cnJlbnQgYnVmZmVyLCB3aXRoIEFM TCBtYWtlIGNoYW5nZXMgaW4gYWxsIFRlWAorYnVmZmVycyBpbiBgYnVmZmVyLWxpc3QnLiIKKyAg KGludGVyYWN0aXZlICJQIikKKyAgKHJlcXVpcmUgJ3RoaW5nYXRwdCkKKyAgKGlmIGFsbAorICAg ICAgKGRvbGlzdCAoYnVmIChidWZmZXItbGlzdCkpCisgICAgICAgICh3aXRoLWN1cnJlbnQtYnVm ZmVyIGJ1ZgorICAgICAgICAgICh0ZXgtLXN5bWJvbC1vci10ZXhzeW1ib2wpKSkKKyAgICAodGV4 LS1zeW1ib2wtb3ItdGV4c3ltYm9sKSkpCisKKyhkZWZ1biB0ZXgtLXN5bWJvbC1vci10ZXhzeW1i b2wgKCkKKyAgKHdoZW4gKG1lbXEgbWFqb3ItbW9kZSB0ZXgtdGhpbmdhdHB0LW1vZGVzLWxpc3Qp CisgICAgKGlmIHRleC10aGluZ2F0cHQtaXMtdGV4c3ltYm9sCisgICAgICAgIChzZXRxLWxvY2Fs IHRoaW5nLWF0LXBvaW50LXByb3ZpZGVyLWFsaXN0CisgICAgICAgICAgICAgICAgICAgIChhZGQt dG8tbGlzdCAndGhpbmctYXQtcG9pbnQtcHJvdmlkZXItYWxpc3QKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICcoc3ltYm9sIC4gdGV4LS10aGluZy1hdC1wb2ludCkpCisgICAgICAg ICAgICAgICAgICAgIGlzZWFyY2gtZm9yd2FyZC10aGluZy1hdC1wb2ludAorICAgICAgICAgICAg ICAgICAgICAoY2wtc3Vic3RpdHV0ZSAndGV4c3ltYm9sICdzeW1ib2wKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaXNlYXJjaC1mb3J3YXJkLXRoaW5nLWF0LXBvaW50KSkKKyAg ICAgIChzZXRxLWxvY2FsIHRoaW5nLWF0LXBvaW50LXByb3ZpZGVyLWFsaXN0CisgICAgICAgICAg ICAgICAgICAoZGVsZXRlICcoc3ltYm9sIC4gdGV4LS10aGluZy1hdC1wb2ludCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgdGhpbmctYXQtcG9pbnQtcHJvdmlkZXItYWxpc3QpCisgICAgICAg ICAgICAgICAgICBpc2VhcmNoLWZvcndhcmQtdGhpbmctYXQtcG9pbnQKKyAgICAgICAgICAgICAg ICAgIChjbC1zdWJzdGl0dXRlICdzeW1ib2wgJ3RleHN5bWJvbAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaXNlYXJjaC1mb3J3YXJkLXRoaW5nLWF0LXBvaW50KSkpKSkKKworKGRl ZnVuIHRleC0tdGhpbmctYXQtcG9pbnQgKCkKKyAgIlBhc3MgYHRoaW5nJyB0eXBlIGB0ZXhzeW1i b2wnIHRvIGBib3VuZHMtb2YtdGhpbmctYXQtcG9pbnQnLgorCitXaGVuIGB0ZXgtdGhpbmdhdHB0 LWlzLXRleHN5bWJvbCcgaXMgdCwgY2FsbHMgaW4gVGVYIGJ1ZmZlcnMgdG8KK2B0aGluZy1hdC1w b2ludCcgd2l0aCBhcmd1bWVudCBgc3ltYm9sJyB3aWxsIGluc3RlYWQgdXNlIHRoZQorYXJndW1l bnQgYHRleHN5bWJvbCcuICBPdGhlcndpc2UgaXQgd2lsbCBjYWxsIGBmaW5kLXRhZy1kZWZhdWx0 Jy4iCisgIChpZiB0ZXgtdGhpbmdhdHB0LWlzLXRleHN5bWJvbAorICAgICAgKGxldCAoKGJvdW5k cyAoYm91bmRzLW9mLXRoaW5nLWF0LXBvaW50ICd0ZXhzeW1ib2wpKSkKKyAgICAgICAgKHdoZW4g Ym91bmRzCisgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAoY2FyIGJv dW5kcykgKGNkciBib3VuZHMpKSkpCisgICAgKGZpbmQtdGFnLWRlZmF1bHQpKSkKKworKGRlZnVu IHRleC0taW5jbHVkZS1lc2NhcGUtcCAoY29tbWFuZCkKKyAgKG9yIChlcSB0ZXgtdGhpbmdhdHB0 LWluY2x1ZGUtZXNjYXBlIHQpCisgICAgICAobWVtcSBjb21tYW5kIHRleC10aGluZ2F0cHQtaW5j bHVkZS1lc2NhcGUpKSkKKworKGRlZnVuIHRleC10aGluZ2F0cHQtLWJlZ2lubmluZy1vZi10ZXhz eW1ib2wgKCkKKyAgIk1vdmUgcG9pbnQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgY3VycmVudCBU ZVggc3ltYm9sLiIKKyAgKHdpdGgtc3ludGF4LXRhYmxlICh0ZXgtdGhpbmdhdHB0LXN5bnRheC10 YWJsZSkKKyAgICAoYW5kIChyZS1zZWFyY2gtYmFja3dhcmQgIlxcKFtdWygpXVxcfFxcKFxcc3dc XHxcXHNfXFx8XFxzLlxcKStcXCkiKQorICAgICAgICAgKHNraXAtc3ludGF4LWJhY2t3YXJkICJ3 Xy4iKQorICAgICAgICAgKHdoZW4gKHRleC0taW5jbHVkZS1lc2NhcGUtcCB0aGlzLWNvbW1hbmQp CisgICAgICAgICAgIChza2lwLXN5bnRheC1iYWNrd2FyZCAiXFwvIikpKSkpCisKKyhkZWZ1biB0 ZXgtdGhpbmdhdHB0LS1lbmQtb2YtdGV4c3ltYm9sICgpCisgICJNb3ZlIHBvaW50IHRvIHRoZSBl bmQgb2YgdGhlIGN1cnJlbnQgVGVYIHN5bWJvbC4iCisgICh3aXRoLXN5bnRheC10YWJsZSAodGV4 LXRoaW5nYXRwdC1zeW50YXgtdGFibGUpCisgICAgKGFuZCAocmUtc2VhcmNoLWZvcndhcmQgIlxc KFtdWygpXVxcfFxcKFxcc3dcXHxcXHNfXFx8XFxzLlxcKStcXCkiKQorICAgICAgICAgKHNraXAt c3ludGF4LWZvcndhcmQgIndfLiIpKSkpCiAKIChtYWtlLW9ic29sZXRlLXZhcmlhYmxlICd0ZXgt bW9kZS1sb2FkLWhvb2sKICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UgYHdpdGgtZXZhbC1h ZnRlci1sb2FkJyBpbnN0ZWFkLiIgIjI4LjEiKQotLSAKMi4zNS44Cgo= --0000000000009f58c406053b9c14--