From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jared Finder via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#68765: 30.0.50; Adding window-tool-bar package. Date: Mon, 13 May 2024 21:14:16 -0700 Message-ID: References: <07df5e8408054bcae5968066b0cebf34@finder.org> <86fry0vihy.fsf@gnu.org> <86fry08di9.fsf@mail.linkov.net> <86cyrg5hc0.fsf@mail.linkov.net> <865xvyoupe.fsf@mail.linkov.net> <86frur76uj.fsf@gnu.org> <791456a05f91c68549027ea1ea33eaf6@finder.org> <84a5dcf2833598c5b588ab6dd4f5c762@finder.org> <86le4fxa41.fsf@mail.linkov.net> Reply-To: Jared Finder Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=_fa006a63f9e661853cc34e753767b04f" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="4512"; mail-complaints-to="usenet@ciao.gmane.io" Cc: philipk@posteo.net, Eli Zaretskii , 68765@debbugs.gnu.org, monnier@iro.umontreal.ca To: Juri Linkov Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue May 14 06:15:23 2024 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 1s6jZR-0000uI-R2 for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 14 May 2024 06:15:22 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s6jZG-0003Fm-Sl; Tue, 14 May 2024 00:15:10 -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 1s6jZ7-0003FE-ND for bug-gnu-emacs@gnu.org; Tue, 14 May 2024 00:15:01 -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 1s6jZ7-0004O9-4C for bug-gnu-emacs@gnu.org; Tue, 14 May 2024 00:15:01 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1s6jZ7-0006gA-L5 for bug-gnu-emacs@gnu.org; Tue, 14 May 2024 00:15:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Jared Finder Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 14 May 2024 04:15:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 68765 X-GNU-PR-Package: emacs Original-Received: via spool by 68765-submit@debbugs.gnu.org id=B68765.171566006325632 (code B ref 68765); Tue, 14 May 2024 04:15:01 +0000 Original-Received: (at 68765) by debbugs.gnu.org; 14 May 2024 04:14:23 +0000 Original-Received: from localhost ([127.0.0.1]:36707 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s6jYU-0006fM-3N for submit@debbugs.gnu.org; Tue, 14 May 2024 00:14:23 -0400 Original-Received: from greenhill.hpalace.com ([192.155.80.58]:46892) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1s6jYQ-0006fC-Fa for 68765@debbugs.gnu.org; Tue, 14 May 2024 00:14:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=finder.org; s=2018; t=1715660056; bh=58vfU163RUzia07tAjx2zEZpKGOiCT6Va/zT/9+o/bE=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=D22qHpplY42eiiZ3DdNfZ9MxYEnujtVIQLvnRN3uvFtb66tBiZGR0K5sw9zlms6nR 6PGt/9JIFD5SgtQjoGVlmAQBBp3egayAcb3QuGsc7JxTrp52kKc+tPT+t2b5PlKVWX fBPZv8db4VTim0W8Xrec9qNKiRlCoIdY6NIYEPT/vOLVuRaVsffj5PusnOLu4Ky8L4 Fbt1dwM4wODCTKByjqzncYdFrdVQcbDiMwZzzpP7+qNW5MA3CVy4qCPrNISOXaZ1tQ qK+1kL2kND+bWBJCRvYQBYU5J7DcO1Y2+Y8Afv48cPJtbTUqnS1FTX7TvncFgBgSdq Mmhd8P2IBUFVw== Original-Received: from mail.finder.org (unknown [192.155.80.58]) by greenhill.hpalace.com (Postfix) with ESMTPSA id 935FFE87; Tue, 14 May 2024 04:14:16 +0000 (UTC) In-Reply-To: <86le4fxa41.fsf@mail.linkov.net> X-Sender: jared@finder.org 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:284989 Archived-At: --=_fa006a63f9e661853cc34e753767b04f Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2024-05-12 09:34, Juri Linkov wrote: >>> If there's an agreement about this issue, could you, Jared, please >>> post the final patch reflecting the agreements? >>> If there's no agreement, what are the issues that prevent it? ... details elided ... >> Does this sound like a good plan? > > Thanks, looks like a good thing to do. Thank you! Final version of all three commits attached. These address all comments raised on this thread. I think after these patches are applied, the remaining work to resolve this would be having the ELPA package added and me updating NEWS and the manual. I can start on the updates. -- MJF --=_fa006a63f9e661853cc34e753767b04f Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-Inform-user-when-tab-line-mode-command-makes-no-chan.patch Content-Disposition: attachment; filename=0001-Inform-user-when-tab-line-mode-command-makes-no-chan.patch; size=1454 RnJvbSAwZWMxOTc0OGM1ZDk3M2E5M2VkMDAzMzZmY2M5NTVlYzVlOGQ5Mzk3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+CkRhdGU6 IFN1biwgMTIgTWF5IDIwMjQgMjA6MzU6NTAgLTA3MDAKU3ViamVjdDogW1BBVENIIDEvM10gSW5m b3JtIHVzZXIgd2hlbiB0YWItbGluZS1tb2RlIGNvbW1hbmQgbWFrZXMgbm8gY2hhbmdlCgoqIGxp c3AvdGFiLWxpbmUuZWwgKHRhYi1saW5lLW1vZGUpOiBEaXNwbGF5IG1lc3NhZ2Ugd2hlbiBjb21t YW5kIGlzCnJ1biBvbiBhbHJlYWR5IGFsdGVyZWQgdGFiLWxpbmUtZm9ybWF0LgotLS0KIGxpc3Av dGFiLWxpbmUuZWwgfCAxNCArKysrKysrKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEwIGluc2Vy dGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC90YWItbGluZS5lbCBi L2xpc3AvdGFiLWxpbmUuZWwKaW5kZXggNjg5OGJhNTNlMDIuLjMxNmM4N2ZiM2FkIDEwMDY0NAot LS0gYS9saXNwL3RhYi1saW5lLmVsCisrKyBiL2xpc3AvdGFiLWxpbmUuZWwKQEAgLTExMjQsMTEg KzExMjQsMTcgQEAgdGFiLWxpbmUtbW9kZQogICAobGV0ICgoZGVmYXVsdC12YWx1ZSAnKDpldmFs ICh0YWItbGluZS1mb3JtYXQpKSkpCiAgICAgKGlmIHRhYi1saW5lLW1vZGUKICAgICAgICAgOzsg UHJlc2VydmUgdGhlIGV4aXN0aW5nIHRhYi1saW5lIHNldCBvdXRzaWRlIG9mIHRoaXMgbW9kZQot ICAgICAgICAodW5sZXNzIHRhYi1saW5lLWZvcm1hdAotICAgICAgICAgIChzZXRxIHRhYi1saW5l LWZvcm1hdCBkZWZhdWx0LXZhbHVlKSkKKyAgICAgICAgKGlmIChudWxsIHRhYi1saW5lLWZvcm1h dCkKKyAgICAgICAgICAgIChzZXRxIHRhYi1saW5lLWZvcm1hdCBkZWZhdWx0LXZhbHVlKQorICAg ICAgICAgIChtZXNzYWdlCisgICAgICAgICAgICJ0YWItbGluZS1mb3JtYXQgc2V0IG91dHNpZGUg b2YgdGFiLWxpbmUtbW9kZSwgY3VycmVudGx5IGAlUyciCisgICAgICAgICAgIHRhYi1saW5lLWZv cm1hdCkpCiAgICAgICA7OyBSZXNldCBvbmx5IHZhbHVlcyBzZXQgYnkgdGhpcyBtb2RlCi0gICAg ICAod2hlbiAoZXF1YWwgdGFiLWxpbmUtZm9ybWF0IGRlZmF1bHQtdmFsdWUpCi0gICAgICAgIChz ZXRxIHRhYi1saW5lLWZvcm1hdCBuaWwpKSkpKQorICAgICAgKGlmIChlcXVhbCB0YWItbGluZS1m b3JtYXQgZGVmYXVsdC12YWx1ZSkKKyAgICAgICAgICAoc2V0cSB0YWItbGluZS1mb3JtYXQgbmls KQorICAgICAgICAobWVzc2FnZQorICAgICAgICAgInRhYi1saW5lLWZvcm1hdCBzZXQgb3V0c2lk ZSBvZiB0YWItbGluZS1tb2RlLCBjdXJyZW50bHkgYCVTJyIKKyAgICAgICAgIHRhYi1saW5lLWZv cm1hdCkpKSkpCiAKIChkZWZjdXN0b20gdGFiLWxpbmUtZXhjbHVkZS1tb2RlcwogICAnKGNvbXBs ZXRpb24tbGlzdC1tb2RlKQotLSAKMi4zOS4yCgo= --=_fa006a63f9e661853cc34e753767b04f Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0002-Add-user-option-to-only-display-default-tool-bar.patch Content-Disposition: attachment; filename=0002-Add-user-option-to-only-display-default-tool-bar.patch; size=2059 RnJvbSAyMzJlYzQ3ZDFkOWU4ZjViMWFjMDdkYjEyNTFlODljMWZlYjczZTg1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+CkRhdGU6 IEZyaSwgMjYgSmFuIDIwMjQgMTA6MDg6MzAgLTA4MDAKU3ViamVjdDogW1BBVENIIDIvM10gQWRk IHVzZXIgb3B0aW9uIHRvIG9ubHkgZGlzcGxheSBkZWZhdWx0IHRvb2wgYmFyCgpUaGlzIHdvcmtz IHdlbGwgd2l0aCBgd2luZG93LXRvb2wtYmFyLW1vZGUnLCB0byBiZSBhZGRlZCBpbiB1cGNvbWlu Zwpjb21taXQuICBUaGVuIHRoZSBkZWZhdWx0IHRvb2wgYmFyIGlzIGRpc3BsYXllZCBmcmFtZS13 aWRlIGFuZAptb2RlLXNwZWNpZmljIHRvb2wgYmFycyBhcmUgZGlzcGxheWVkIGluIHRoZSB3aW5k b3cgdGhhdCBtb2RlIGlzCmFjdGl2ZSBpbi4KCiogbGlzcC90b29sLWJhci5lbCAodG9vbC1iYXIt YWx3YXlzLXNob3ctZGVmYXVsdCk6IE5ldyB1c2VyIG9wdGlvbi4KKHRvb2wtYmFyLS1jYWNoZS1r ZXksIHRvb2wtYmFyLW1ha2Uta2V5bWFwLTEpOiBSZXR1cm4gZGVmYXVsdCB0b29sIGJhcgp3aGVu IG9wdGlvbiBpcyBzZXQuCi0tLQogbGlzcC90b29sLWJhci5lbCB8IDE3ICsrKysrKysrKysrKysr Ky0tCiAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9saXNwL3Rvb2wtYmFyLmVsIGIvbGlzcC90b29sLWJhci5lbAppbmRleCAwZjY0 NTMzODY3NC4uMDFjNjVjNDIzMjQgMTAwNjQ0Ci0tLSBhL2xpc3AvdG9vbC1iYXIuZWwKKysrIGIv bGlzcC90b29sLWJhci5lbApAQCAtMTAwLDcgKzEwMCw5IEBAIHNlY29uZGFyeS10b29sLWJhci1t YXAKIChkZWZjb25zdCB0b29sLWJhci1rZXltYXAtY2FjaGUgKG1ha2UtaGFzaC10YWJsZSA6dGVz dCAjJ2VxdWFsKSkKIAogKGRlZnN1YnN0IHRvb2wtYmFyLS1jYWNoZS1rZXkgKCkKLSAgKGNvbnMg KGZyYW1lLXRlcm1pbmFsKSAoc3hoYXNoLWVxIHRvb2wtYmFyLW1hcCkpKQorICAoY29ucyAoZnJh bWUtdGVybWluYWwpCisgICAgICAgIChzeGhhc2gtZXEgKGlmIHRvb2wtYmFyLWFsd2F5cy1zaG93 LWRlZmF1bHQgKGRlZmF1bHQtdmFsdWUgJ3Rvb2wtYmFyLW1hcCkKKyAgICAgICAgICAgICAgICAg ICAgIHRvb2wtYmFyLW1hcCkpKSkKIAogKGRlZnN1YnN0IHRvb2wtYmFyLS1zZWNvbmRhcnktY2Fj aGUta2V5ICgpCiAgIChjb25zIChmcmFtZS10ZXJtaW5hbCkgKHN4aGFzaC1lcSBzZWNvbmRhcnkt dG9vbC1iYXItbWFwKSkpCkBAIC0xOTEsNyArMTkzLDkgQEAgdG9vbC1iYXItbWFrZS1rZXltYXAt MQogCQkJCSAgICAgIGJpbmQpKQogCQkgIChwbGlzdC1wdXQgcGxpc3QgOmltYWdlIGltYWdlKSkp CiAJICAgICAgYmluZCkpCi0JICAob3IgbWFwIHRvb2wtYmFyLW1hcCkpKQorCSAgKG9yIG1hcAor ICAgICAgICAgICAgICAoaWYgdG9vbC1iYXItYWx3YXlzLXNob3ctZGVmYXVsdCAoZGVmYXVsdC12 YWx1ZSAndG9vbC1iYXItbWFwKQorICAgICAgICAgICAgICAgIHRvb2wtYmFyLW1hcCkpKSkKIAog Ozs7IyMjYXV0b2xvYWQKIChkZWZ1biB0b29sLWJhci1hZGQtaXRlbSAoaWNvbiBkZWYga2V5ICZy ZXN0IHByb3BzKQpAQCAtMzc4LDYgKzM4MiwxNSBAQCB0b29sLWJhci1zZXR1cAogCSAgICAgKG1v ZGlmeS1hbGwtZnJhbWVzLXBhcmFtZXRlcnMKIAkgICAgICAobGlzdCAoY29ucyAndG9vbC1iYXIt cG9zaXRpb24gdmFsKSkpKSkpCiAKKyhkZWZjdXN0b20gdG9vbC1iYXItYWx3YXlzLXNob3ctZGVm YXVsdCBuaWwKKyAgIklmIG5vbi1uaWwsIGB0b29sLWJhci1tb2RlJyBvbmx5IHNob3dzIHRoZSBk ZWZhdWx0IHRvb2wgYmFyLgorVGhpcyB3b3JrcyB3ZWxsIHdoZW4gYWxzbyB1c2luZyBgZ2xvYmFs LXdpbmRvdy10b29sLWJhci1tb2RlJyB0bworZGlzcGxheSBidWZmZXItc3BlY2lmaWMgdG9vbCBi YXJzLiIKKyAgOnR5cGUgJ2Jvb2xlYW4KKyAgOmdyb3VwICdmcmFtZXMKKyAgOmdyb3VwICdtb3Vz ZQorICA6dmVyc2lvbiAiMzAuMSIpCisKIAwKIAogOzsgTW9kaWZpZXIgYmFyIG1vZGUuCi0tIAoy LjM5LjIKCg== --=_fa006a63f9e661853cc34e753767b04f Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0003-Adding-window-tool-bar-package.patch Content-Disposition: attachment; filename=0003-Adding-window-tool-bar-package.patch; size=21567 RnJvbSA1Njc1M2UwNWY3YzQ5NTkzZDkyMzkxYjdlNmE5ZWIxYzcyNzI0ZDNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+CkRhdGU6 IEZyaSwgMjYgSmFuIDIwMjQgMTU6NDQ6MTIgLTA4MDAKU3ViamVjdDogW1BBVENIIDMvM10gQWRk aW5nIHdpbmRvdy10b29sLWJhciBwYWNrYWdlCgotLS0KIGxpc3Avd2luZG93LXRvb2wtYmFyLmVs IHwgNDkxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBj aGFuZ2VkLCA0OTEgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpc3Avd2luZG93 LXRvb2wtYmFyLmVsCgpkaWZmIC0tZ2l0IGEvbGlzcC93aW5kb3ctdG9vbC1iYXIuZWwgYi9saXNw L3dpbmRvdy10b29sLWJhci5lbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uNjQwZGVjY2RkNjEKLS0tIC9kZXYvbnVsbAorKysgYi9saXNwL3dpbmRvdy10b29sLWJhci5l bApAQCAtMCwwICsxLDQ5MSBAQAorOzs7IHdpbmRvdy10b29sLWJhci5lbCAtLS0gQWRkIHRvb2wg YmFycyBpbnNpZGUgd2luZG93cyAtKi0gbGV4aWNhbC1iaW5kaW5nOiB0IC0qLQorCis7OyBDb3B5 cmlnaHQgKEMpIDIwMjMtMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworOzsg QXV0aG9yOiBKYXJlZCBGaW5kZXIgPGphcmVkQGZpbmRlci5vcmc+Cis7OyBDcmVhdGVkOiBOb3Yg MjEsIDIwMjMKKzs7IFZlcnNpb246IDAuMgorOzsgS2V5d29yZHM6IG1vdXNlCis7OyBQYWNrYWdl LVJlcXVpcmVzOiAoKGVtYWNzICIyOS4xIikpCisKKzs7IFRoaXMgaXMgYSBHTlUgRUxQQSA6Y29y ZSBwYWNrYWdlLiAgQXZvaWQgYWRkaW5nIGZ1bmN0aW9uYWxpdHkgdGhhdAorOzsgaXMgbm90IGF2 YWlsYWJsZSBpbiB0aGUgdmVyc2lvbiBvZiBFbWFjcyByZWNvcmRlZCBhYm92ZSBvciBhbnkgb2YK Kzs7IHRoZSBwYWNrYWdlIGRlcGVuZGVuY2llcy4KKworOzsgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg R05VIEVtYWNzLgorCis7OyBHTlUgRW1hY3MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorOzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKzs7IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCis7 OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCis7OyBHTlUgRW1hY3MgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKzs7IGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Cis7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCis7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorCis7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKzs7OyBDb21tZW50YXJ5OgorOzsKKzs7 IFRoaXMgcGFja2FnZSBwdXRzIGEgdG9vbCBiYXIgaW4gZWFjaCB3aW5kb3cuICBUaGlzIGFsbG93 cyB5b3UgdG8gc2VlCis7OyBtdWx0aXBsZSB0b29sIGJhcnMgc2ltdWx0YW5lb3VzbHkgZGlyZWN0 bHkgbmV4dCB0byB0aGUgYnVmZmVyIGl0Cis7OyBhY3RzIG9uIHdoaWNoIGZlZWxzIG11Y2ggbW9y ZSBpbnR1aXRpdmUuICBFbWFjcyAiYnJvd3NpbmciIG1vZGVzCis7OyBnZW5lcmFsbHkgaGF2ZSBz ZW5zaWJsZSB0b29sIGJhcnMsIGZvciBleGFtcGxlOiAqaW5mbyosICpoZWxwKiwgYW5kCis7OyAq ZXd3KiBoYXZlIHRoZW0uCis7OworOzsgSXQgZG9lcyB0aGlzIHdoaWxlIGJlaW5nIG1pbmRmdWwg b2Ygc2NyZWVuIHJlYWwgZXN0YXRlLiAgTW9zdCBtb2RlcworOzsgZG8gbm90IHByb3ZpZGUgYSBj dXN0b20gdG9vbCBiYXIsIGFuZCB0aGlzIHBhY2thZ2UgZG9lcyBub3Qgc2hvdyB0aGUKKzs7IGRl ZmF1bHQgdG9vbCBiYXIuICBUaGlzIG1lYW5zIHRoYXQgZm9yIG1vc3QgYnVmZmVycyB0aGVyZSB3 aWxsIGJlIG5vCis7OyBzcGFjZSB0YWtlbiB1cC4gIEZ1cnRoZXJtb3JlLCB5b3UgY2FuIHB1dCB0 aGlzIHRvb2wgYmFyIGluIHRoZSBtb2RlCis7OyBsaW5lIG9yIHRhYiBsaW5lIGlmIHlvdSB3YW50 IHRvIHNoYXJlIGl0IHdpdGggZXhpc3RpbmcgY29udGVudC4KKzs7Cis7OyBUbyBnZXQgdGhlIGRl ZmF1bHQgYmVoYXZpb3IsIHJ1biAoZ2xvYmFsLXdpbmRvdy10b29sLWJhci1tb2RlIDEpIG9yCis7 OyBlbmFibGUgdmlhIE0teCBjdXN0b21pemUtZ3JvdXAgUkVUIHdpbmRvdy10b29sLWJhciBSRVQu ICBUaGlzIHVzZXMKKzs7IHRoZSBwZXItd2luZG93IHRhYiBsaW5lIHRvIHNob3cgdGhlIHRvb2wg YmFyLgorOzsKKzs7IElmIHlvdSB3YW50IHRvIHNoYXJlIHNwYWNlIHdpdGggYW4gZXhpc3Rpbmcg dGFiIGxpbmUsIG1vZGUgbGluZSwgb3IKKzs7IGhlYWRlciBsaW5lLCBhZGQgKDpldmFsICh3aW5k b3ctdG9vbC1iYXItc3RyaW5nKSkgdG8KKzs7IGB0YWItbGluZS1mb3JtYXQnLCBgbW9kZS1saW5l LWZvcm1hdCcsIG9yIGBoZWFkZXItbGluZS1mb3JtYXQnLgorCis7OzsgS25vd24gaXNzdWVzOgor OzsKKzs7IE9uIEdOVSBFbWFjcyAyOS4xLCB0ZXJtaW5hbHMgZHJhZ2dpbmcgdG8gcmVzaXplIHdp bmRvd3Mgd2lsbCBlcnJvcgorOzsgd2l0aCBtZXNzYWdlICI8dGFiLWxpbmU+IDxtb3VzZS1tb3Zl bWVudD4gaXMgdW5kZWZpbmVkIi4gIFRoaXMgaXMgYQorOzsgYnVnIGluIEdOVSBFbWFjcywKKzs7 IDxodHRwczovL2RlYmJ1Z3MuZ251Lm9yZy9jZ2kvYnVncmVwb3J0LmNnaT9idWc9Njc0NTc+Lgor OzsKKzs7IE9uIEdOVSBFbWFjcyAyOSwgcGVyZm9ybWFuY2UgaW4gdGVybWluYWxzIGlzIGxvd2Vy IHRoYW4gb24KKzs7IGdyYXBoaWNhbCBmcmFtZXMuICBUaGlzIGlzIGR1ZSB0byBhIHdvcmthcm91 bmQsIHNlZSAiV29ya2Fyb3VuZCBmb3IKKzs7IGh0dHBzOi8vZGViYnVncy5nbnUub3JnL2NnaS9i dWdyZXBvcnQuY2dpP2J1Zz02ODMzNCIsIGJlbG93LgorCis7OzsgVG9kbzoKKzs7Cis7OyBOb3Qg YWxsIGZlYXR1cmVzIHBsYW5uZWQgYXJlIGltcGxlbWVudGVkIHlldC4gIEV2ZW50dWFsbHkgSSB3 b3VsZAorOzsgbGlrZSB0byBhbHNvIGdlbmVyYWxseSBtYWtlIHRvb2wgYmFycyBiZXR0ZXIuCis7 OworOzsgVGFyZ2V0aW5nIDAuMzoKKzs7ICogUHJvcGVybHkgc3VwcG9ydCByZWFtaW5pbmcgbGVz cyBmcmVxdWVudGx5IHVzZWQgdG9vbCBiYXIgaXRlbSBzcGVjcy4gIEZyb20KKzs7ICAgYHBhcnNl X3Rvb2xfYmFyX2l0ZW0nOgorOzsgICAgICogOnZpc2libGUKKzs7ICAgICAqIDpmaWx0ZXIKKzs7 ICAgICAqIDpidXR0b24KKzs7ICAgICAqIDp3cmFwCis7OyAqIEFkZCBkaXNwbGF5IGN1c3RvbWl6 YXRpb24gc2ltaWxhciB0byBgdG9vbC1iYXItc3R5bGUnLgorOzsKKzs7IFRhcmdldGluZyAxLjA6 Cis7OworOzsgKiBDbGVhbiB1cCBFbWFjcyB0b29sIGJhcnMKKzs7ICAgICAqIERlZmF1bHQ6IFJl bW92ZSBkZWZhdWx0IHRvb2wtYmFyIGVudGlyZWx5Cis7OyAgICAgKiBncmVwLCB2YzogUmVtb3Zl IGRlZmF1bHQgdG9vbC1iYXIgaW5oZXJpdGVkCis7OyAgICAgKiBpbmZvOiBSZW1vdmUgTmV4dCAv IFByZXYgLyBVcCwgd2hpY2ggaXMgYWxyZWFkeSBpbiB0aGUgaGVhZGVyCis7OyAgICAgKiBzbWVy Z2U6IEFkZCB0b29sIGJhciBmb3IgbmV4dC9wcmV2Cis7OworOzsgUG9zdCAxLjAgd29yazoKKzs7 Cis7OyAqIFNob3cga2V5Ym9hcmQgc2hvcnRjdXQgb24gaGVscCB0ZXh0LgorOzsKKzs7ICogQWRk IGEgYml0IG1vcmUgZG9jdW1lbnRhdGlvbi4KKzs7ICogQWRkIGN1c3RvbWl6YXRpb24gb3B0aW9u OiBpZ25vcmUtZGVmYXVsdC10b29sLWJhci1tYXAKKzs7ICogTWFrZSB0YWItbGluZSBkcmFnZ2lu ZyByZXNpemUgdGhlIHdpbmRvdworCis7OzsgQ29kZToKKworKHJlcXVpcmUgJ213aGVlbCkKKyhy ZXF1aXJlICd0YWItbGluZSkKKyhyZXF1aXJlICd0b29sLWJhcikKKwwKKzs7OyBCZW5jaG1hcmtp bmcgY29kZQorOzsKKzs7IFJlZnJlc2hpbmcgdGhlIHRvb2wgYmFyIGlzIGNvbXB1dGF0aW9uYWxs eSBzaW1wbGUsIGJ1dCBnZW5lcmF0ZXMgYQorOzsgbG90IG9mIGdhcmJhZ2UuICBTbyB0aGlzIGJl bmNobWFya2luZyBmb2N1c2VzIG9uIGdhcmJhZ2UKKzs7IGdlbmVyYXRpb24uICBTaW5jZSBpdCBo YXMgdG8gcnVuIGFmdGVyIG1vc3QgY29tbWFuZHMsIGdlbmVyYXRpbmcKKzs7IHNpZ25pZmljYW50 bHkgbW9yZSBnYXJiYWdlIHdpbGwgY2F1c2Ugbm90aWNlYWJsZSBwZXJmb3JtYW5jZQorOzsgZGVn cmF0aW9uLgorOzsKKzs7IFRoZSByZWZyZXNoIGhhcyB0d28gc3RlcHM6Cis7OworOzsgU3RlcCAx OiBMb29rIHVwIHRoZSA8dG9vbC1iYXI+IG1hcC4KKzs7IFN0ZXAgMjogR2VuZXJhdGUgYSBMaXNw IHN0cmluZyB1c2luZyB0ZXh0IHByb3BlcnRpZXMgZm9yIHRoZSB0b29sCis7OyBiYXIgc3RyaW5n LgorOzsKKzs7IEFkZGl0aW9uYWxseSwgd2Uga2VlcCB0cmFjayBvZiB0aGUgcGVyY2VudGFnZSBv ZiBjb21tYW5kcyB0aGF0Cis7OyBhY3V0YWxseSBjcmVhdGVkIGEgcmVmcmVzaC4KKyhkZWZ2YXIg d2luZG93LXRvb2wtYmFyLS1tZW1vcnktdXNlLWRlbHRhLXN0ZXAxIChtYWtlLWxpc3QgNyAwKQor ICAiQWJzb2x1dGUgZGVsdGEgb2YgbWVtb3J5IHVzZSBjb3VudGVycyBkdXJpbmcgc3RlcCAxLgor VGhpcyBpcyBhIGxpc3QgaW4gdGhlIHNhbWUgc3RydWN0dXJlIGFzIGBtZW1vcnktdXNlLWNvdW50 cycuIikKKyhkZWZ2YXIgd2luZG93LXRvb2wtYmFyLS1tZW1vcnktdXNlLWRlbHRhLXN0ZXAyICht YWtlLWxpc3QgNyAwKQorICAiQWJzb2x1dGUgZGVsdGEgb2YgbWVtb3J5IHVzZSBjb3VudGVycyBk dXJpbmcgc3RlcCAyLgorVGhpcyBpcyBhIGxpc3QgaW4gdGhlIHNhbWUgc3RydWN0dXJlIGFzIGBt ZW1vcnktdXNlLWNvdW50cycuIikKKyhkZWZ2YXIgd2luZG93LXRvb2wtYmFyLS1yZWZyZXNoLWRv bmUtY291bnQgMAorICAiTnVtYmVyIG9mIHRvb2wgYmFyIHN0cmluZyByZWZyZXNoZXMgcnVuLgor VGhlIHRvdGFsIG51bWJlciBvZiByZXF1ZXN0cyBpcyB0aGUgc3VtIG9mIHRoaXMgYW5kCitgd2lu ZG93LXRvb2wtYmFyLS1yZWZyZXNoLXNraXBwZWQtY291bnQnLiIpCisoZGVmdmFyIHdpbmRvdy10 b29sLWJhci0tcmVmcmVzaC1za2lwcGVkLWNvdW50IDAKKyAgIk51bWJlciBvZiB0b29sIGJhciBz dHJpbmcgcmVmcmVzaGVzIHRoYXQgd2VyZSBza2lwcGVkLgorVGhlIHRvdGFsIG51bWJlciBvZiBy ZXF1ZXN0cyBpcyB0aGUgc3VtIG9mIHRoaXMgYW5kCitgd2luZG93LXRvb2wtYmFyLS1yZWZyZXNo LWRvbmUtY291bnQnLiIpCisKKyhkZWZ1biB3aW5kb3ctdG9vbC1iYXItLW1lbW9yeS11c2UtYXZn LXN0ZXAxICgpCisgICJSZXR1cm4gYXZlcmFnZSBtZW1vcnkgdXNlIGRlbHRhIGR1cmluZyBzdGVw IDEuIgorICAobWFwY2FyIChsYW1iZGEgKGVsdCkgKC8gKGZsb2F0IGVsdCkgd2luZG93LXRvb2wt YmFyLS1yZWZyZXNoLWRvbmUtY291bnQpKQorICAgICAgICAgIHdpbmRvdy10b29sLWJhci0tbWVt b3J5LXVzZS1kZWx0YS1zdGVwMSkpCisKKyhkZWZ1biB3aW5kb3ctdG9vbC1iYXItLW1lbW9yeS11 c2UtYXZnLXN0ZXAyICgpCisgICJSZXR1cm4gYXZlcmFnZSBtZW1vcnkgdXNlIGRlbHRhIGR1cmlu ZyBzdGVwIDIuIgorICAobWFwY2FyIChsYW1iZGEgKGVsdCkgKC8gKGZsb2F0IGVsdCkgd2luZG93 LXRvb2wtYmFyLS1yZWZyZXNoLWRvbmUtY291bnQpKQorICAgICAgICAgIHdpbmRvdy10b29sLWJh ci0tbWVtb3J5LXVzZS1kZWx0YS1zdGVwMikpCisKKyhkZWNsYXJlLWZ1bmN0aW9uIHRpbWUtc3Rh bXAtc3RyaW5nICJ0aW1lLXN0YW1wIikKKworKGRlZnVuIHdpbmRvdy10b29sLWJhci1kZWJ1Zy1z aG93LW1lbW9yeS11c2UgKCkKKyAgIkRldmVsb3BtZW50LW9ubHkgY29tbWFuZCB0byBzaG93IG1l bW9yeSB1c2VkIGJ5IGB3aW5kb3ctdG9vbC1iYXItc3RyaW5nJy4iCisgIChpbnRlcmFjdGl2ZSkK KyAgKHJlcXVpcmUgJ3RpbWUtc3RhbXApCisgIChzYXZlLXNlbGVjdGVkLXdpbmRvdworICAgIChw b3AtdG8tYnVmZmVyICIqV1RCIE1lbW9yeSBSZXBvcnQqIikKKyAgICAodW5sZXNzIChkZXJpdmVk LW1vZGUtcCAnc3BlY2lhbC1tb2RlKQorICAgICAgKHNwZWNpYWwtbW9kZSkpCisKKyAgICAoZ290 by1jaGFyIChwb2ludC1tYXgpKQorICAgIChsZXQgKChpbmhpYml0LXJlYWQtb25seSB0KSkKKyAg ICAgIChpbnNlcnQgKHByb3BlcnRpemUgKGNvbmNhdCAiRnVuY3Rpb246IHdpbmRvdy10b29sLWJh ci1zdHJpbmcgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aW1lLXN0YW1w LXN0cmluZykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICdmYWNlICd1bmRlcmxpbmUgJ2Zv bnQtbG9jay1mYWNlICd1bmRlcmxpbmUpCisgICAgICAgICAgICAgICJcblxuIikKKyAgICAgICh3 aW5kb3ctdG9vbC1iYXItLWluc2VydC1tZW1vcnktdXNlCisgICAgICAgIlN0ZXAgMSIgKHdpbmRv dy10b29sLWJhci0tbWVtb3J5LXVzZS1hdmctc3RlcDEpKQorICAgICAgKHdpbmRvdy10b29sLWJh ci0taW5zZXJ0LW1lbW9yeS11c2UKKyAgICAgICAiU3RlcCAyIiAod2luZG93LXRvb2wtYmFyLS1t ZW1vcnktdXNlLWF2Zy1zdGVwMikpCisgICAgICAoaW5zZXJ0IChmb3JtYXQgIlJlZnJlc2ggY291 bnQgICVkXG4iIHdpbmRvdy10b29sLWJhci0tcmVmcmVzaC1kb25lLWNvdW50KQorICAgICAgICAg ICAgICAoZm9ybWF0ICJSZWZyZXNoIGV4ZWN1dGVkIHBlcmNlbnQgJS4yZlxuIgorICAgICAgICAg ICAgICAgICAgICAgICgvIChmbG9hdCB3aW5kb3ctdG9vbC1iYXItLXJlZnJlc2gtZG9uZS1jb3Vu dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKyB3aW5kb3ctdG9vbC1iYXItLXJlZnJlc2gt ZG9uZS1jb3VudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy10b29sLWJhci0t cmVmcmVzaC1za2lwcGVkLWNvdW50KSkpCisgICAgICAgICAgICAgICJcbiIpKSkpCisKKyhkZWZ1 biB3aW5kb3ctdG9vbC1iYXItLWluc2VydC1tZW1vcnktdXNlIChsYWJlbCBhdmctbWVtb3J5LXVz ZSkKKyAgIkluc2VydCBtZW1vcnkgdXNlIGludG8gY3VycmVudCBidWZmZXIuCisKK0xBQkVMIGlz IGEgcHJlZml4IHN0cmluZyB0byBiZSBpbiBmcm9udCBvZiB0aGUgZGF0YS4KK0FWRy1NRU1PUlkt VVNFIGlzIGEgbGlzdCBvZiBhdmVyYWdlcywgd2l0aCB0aGUgc2FtZSBtZWFuaW5nIGFzCitgbWVt b3J5LXVzZS1jb3VudHMnLiIKKyAgKGxldCogKChsYWJlbC1sZW4gKGxlbmd0aCBsYWJlbCkpCisg ICAgICAgICAocGFkZGluZyAobWFrZS1zdHJpbmcgbGFiZWwtbGVuID9ccykpKQorICAgIChjbC1s b29wIGZvciB1c2FnZSBpbiBhdmctbWVtb3J5LXVzZQorICAgICAgICAgICAgIGZvciB1c2FnZS1s YWJlbCBpbiAnKCJDb25zZXMiICJGbG9hdHMiICJWZWN0b3IgY2VsbHMiICJTeW1ib2xzIgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdHJpbmcgY2hhcnMiICJJbnRlcnZhbHMi ICJTdHJpbmdzIikKKyAgICAgICAgICAgICBmb3IgaWR4IGZyb20gMAorICAgICAgICAgICAgIGRv IChpbnNlcnQgKGZvcm1hdCAiJXMgICU4LjJmICVzXG4iCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChpZiAoPSBpZHggMCkgbGFiZWwgcGFkZGluZykKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdXNhZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNh Z2UtbGFiZWwpKSkpKQorDAorKGRlZmdyb3VwIHdpbmRvdy10b29sLWJhciBuaWwKKyAgIlRvb2wg YmFycyBwZXItd2luZG93LiIKKyAgOmdyb3VwICdjb252ZW5pZW5jZQorICA6cHJlZml4ICJ3aW5k b3ctdG9vbC1iYXItIikKKworKGRlZnZhci1rZXltYXAgd2luZG93LXRvb2wtYmFyLS1idXR0b24t a2V5bWFwCisgIDpkb2MgIktleW1hcCB1c2VkIGJ5IGB3aW5kb3ctdG9vbC1iYXItLWtleW1hcC1l bnRyeS10by1zdHJpbmcnLiIKKyAgIjxmb2xsb3ctbGluaz4iICdtb3VzZS1mYWNlCisgIDs7IEZv bGxvdyBsaW5rIG9uIGFsbCBjbGlja3Mgb2YgbW91c2UtMSBhbmQgbW91c2UtMiBzaW5jZSB0aGUg dG9vbAorICA7OyBiYXIgaXMgbm90IGEgcGxhY2UgdGhlIHBvaW50IGNhbiB0cmF2ZWwgdG8uCisg ICI8dGFiLWxpbmU+IDxtb3VzZS0xPiIgIyd3aW5kb3ctdG9vbC1iYXItLWNhbGwtYnV0dG9uCisg ICI8dGFiLWxpbmU+IDxkb3VibGUtbW91c2UtMT4iICMnd2luZG93LXRvb2wtYmFyLS1jYWxsLWJ1 dHRvbgorICAiPHRhYi1saW5lPiA8dHJpcGxlLW1vdXNlLTE+IiAjJ3dpbmRvdy10b29sLWJhci0t Y2FsbC1idXR0b24KKyAgIjx0YWItbGluZT4gPG1vdXNlLTI+IiAjJ3dpbmRvdy10b29sLWJhci0t Y2FsbC1idXR0b24KKyAgIjx0YWItbGluZT4gPGRvdWJsZS1tb3VzZS0yPiIgIyd3aW5kb3ctdG9v bC1iYXItLWNhbGwtYnV0dG9uCisgICI8dGFiLWxpbmU+IDx0cmlwbGUtbW91c2UtMj4iICMnd2lu ZG93LXRvb2wtYmFyLS1jYWxsLWJ1dHRvbgorCisgIDs7IE1vdXNlIGRvd24gZXZlbnRzIGRvIG5v dGhpbmcuICBBIGJpbmRpbmcgaXMgbmVlZGVkIHNvIGlzZWFyY2gKKyAgOzsgZG9lcyBub3QgZXhp dCB3aGVuIHRoZSB0YWIgYmFyIGlzIGNsaWNrZWQuCisgICI8dGFiLWxpbmU+IDxkb3duLW1vdXNl LTE+IiAjJ3dpbmRvdy10b29sLWJhci0taWdub3JlCisgICI8dGFiLWxpbmU+IDxkb3VibGUtZG93 bi1tb3VzZS0xPiIgIyd3aW5kb3ctdG9vbC1iYXItLWlnbm9yZQorICAiPHRhYi1saW5lPiA8dHJp cGxlLWRvd24tbW91c2UtMT4iICMnd2luZG93LXRvb2wtYmFyLS1pZ25vcmUKKyAgIjx0YWItbGlu ZT4gPGRvd24tbW91c2UtMj4iICMnd2luZG93LXRvb2wtYmFyLS1pZ25vcmUKKyAgIjx0YWItbGlu ZT4gPGRvdWJsZS1kb3duLW1vdXNlLTI+IiAjJ3dpbmRvdy10b29sLWJhci0taWdub3JlCisgICI8 dGFiLWxpbmU+IDx0cmlwbGUtZG93bi1tb3VzZS0yPiIgIyd3aW5kb3ctdG9vbC1iYXItLWlnbm9y ZSkKKyhmc2V0ICd3aW5kb3ctdG9vbC1iYXItLWJ1dHRvbi1rZXltYXAgd2luZG93LXRvb2wtYmFy LS1idXR0b24ta2V5bWFwKSA7IFNvIGl0IGNhbiBiZSBhIGtleW1hcCBwcm9wZXJ0eQorCis7OyBS ZWdpc3RlciBiaW5kaW5ncyB0aGF0IHN0YXkgaW4gaXNlYXJjaC4gIFRlY2huaWNhbGx5LCB0aGVz ZQorOzsgY29tbWFuZHMgZG9uJ3QgcG9wIHVwIGEgbWVudSBidXQgdGhleSBhY3QgdmVyeSBzaW1p bGFyIGluIHRoYXQgdGhleQorOzsgYXJlIGNhdXNlZCBieSBtb3VzZSBpbnB1dCBhbmQgbWF5IGNh bGwgY29tbWFuZHMgdmlhCis7OyBgY2FsbC1pbnRlcmFjdGl2ZWx5Jy4KKyhwdXNoICd3aW5kb3ct dG9vbC1iYXItLWNhbGwtYnV0dG9uIGlzZWFyY2gtbWVudS1iYXItY29tbWFuZHMpCisocHVzaCAn d2luZG93LXRvb2wtYmFyLS1pZ25vcmUgaXNlYXJjaC1tZW51LWJhci1jb21tYW5kcykKKworKGRl ZnZhci1sb2NhbCB3aW5kb3ctdG9vbC1iYXItc3RyaW5nLS1jYWNoZSBuaWwKKyAgIkNhY2hlIGZv ciBwcmV2aW91cyByZXN1bHQgb2YgYHdpbmRvdy10b29sLWJhci1zdHJpbmcnLiIpCisKKzs7OyMj I2F1dG9sb2FkCisoZGVmdW4gd2luZG93LXRvb2wtYmFyLXN0cmluZyAoKQorICAiUmV0dXJuIGEg KHByb3BlcnRpemVkKSBzdHJpbmcgZm9yIHRoZSB0b29sIGJhci4KKworVGhpcyBpcyBmb3Igd2hl biB5b3Ugd2FudCBtb3JlIGN1c3RvbWl6YXRpb25zIHRoYW4KK2B3aW5kb3ctdG9vbC1iYXItbW9k ZScgcHJvdmlkZXMuICBDb21tb25seSBhZGRlZCB0byB0aGUgdmFyaWFibGUKK2B0YWItbGluZS1m b3JtYXQnLCBgaGVhZGVyLWxpbmUtZm9ybWF0Jywgb3IgYG1vZGUtbGluZS1mb3JtYXQnIgorICAo aWYgKG9yIChudWxsIHdpbmRvdy10b29sLWJhci1zdHJpbmctLWNhY2hlKQorICAgICAgICAgICh3 aW5kb3ctdG9vbC1iYXItLWxhc3QtY29tbWFuZC10cmlnZ2Vycy1yZWZyZXNoLXApKQorICAgICAg KGxldCogKChtZW0wIChtZW1vcnktdXNlLWNvdW50cykpCisgICAgICAgICAgICAgKHRvb2xiYXIt bWVudSAod2luZG93LXRvb2wtYmFyLS1nZXQta2V5bWFwKSkKKyAgICAgICAgICAgICAobWVtMSAo bWVtb3J5LXVzZS1jb3VudHMpKQorICAgICAgICAgICAgIChyZXN1bHQgKG1hcGNvbmNhdCAjJ3dp bmRvdy10b29sLWJhci0ta2V5bWFwLWVudHJ5LXRvLXN0cmluZworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoY2RyIHRvb2xiYXItbWVudSkgO1NraXAgJ2tleW1hcAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7OyBXaXRob3V0IHNwYWNlcyBiZXR3ZWVuIHRoZSB0ZXh0 LCBob3ZlcmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBoaWdobGlnaHRz IGFsbCBhZGphY2VudCBidXR0b25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo aWYgKHdpbmRvdy10b29sLWJhci0tdXNlLWltYWdlcykKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChwcm9wZXJ0aXplICIgIiAnaW52aXNpYmxlIHQpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIiAiKSkpCisgICAgICAgICAgICAgKG1lbTIgKG1lbW9yeS11 c2UtY291bnRzKSkpCisgICAgICAgIChjbC1tYXBsIChsYW1iZGEgKGwtaW5pdCBsMCBsMSkKKyAg ICAgICAgICAgICAgICAgICAoY2wtaW5jZiAoY2FyIGwtaW5pdCkgKC0gKGNhciBsMSkgKGNhciBs MCkpKSkKKyAgICAgICAgICAgICAgICAgd2luZG93LXRvb2wtYmFyLS1tZW1vcnktdXNlLWRlbHRh LXN0ZXAxIG1lbTAgbWVtMSkKKyAgICAgICAgKGNsLW1hcGwgKGxhbWJkYSAobC1pbml0IGwxIGwy KQorICAgICAgICAgICAgICAgICAgIChjbC1pbmNmIChjYXIgbC1pbml0KSAoLSAoY2FyIGwyKSAo Y2FyIGwxKSkpKQorICAgICAgICAgICAgICAgICB3aW5kb3ctdG9vbC1iYXItLW1lbW9yeS11c2Ut ZGVsdGEtc3RlcDIgbWVtMSBtZW0yKQorCisgICAgICAgIChzZXRmIHdpbmRvdy10b29sLWJhci1z dHJpbmctLWNhY2hlCisgICAgICAgICAgICAgIChjb25jYXQKKyAgICAgICAgICAgICAgIDs7IFRo ZSB0b29sIGJhciBmYWNlIGJ5IGRlZmF1bHQgcHV0cyBib3hlcyBhcm91bmQgdGhlCisgICAgICAg ICAgICAgICA7OyBidXR0b25zLiAgSG93ZXZlciwgdGhpcyBib3ggaXMgbm90IGRpc3BsYXllZCBp ZiB0aGUKKyAgICAgICAgICAgICAgIDs7IGJveCBzdGFydHMgYXQgdGhlIGxlZnRtb3N0IHBpeGVs IG9mIHRoZSB0YWItbGluZS4KKyAgICAgICAgICAgICAgIDs7IEFkZCBhIHNpbmdsZSBzcGFjZSBp biB0aGlzIGNhc2Ugc28gdGhlIGJveCBkaXNwbGF5cworICAgICAgICAgICAgICAgOzsgY29ycmVj dGx5LgorICAgICAgICAgICAgICAgKGFuZCAoZGlzcGxheS1zdXBwb3J0cy1mYWNlLWF0dHJpYnV0 ZXMtcAorICAgICAgICAgICAgICAgICAgICAgJyg6Ym94IChsaW5lLXdpZHRoIDEpKSkKKyAgICAg ICAgICAgICAgICAgICAgKHByb3BlcnRpemUgIiAiICdkaXNwbGF5ICcoc3BhY2UgOndpZHRoICgx KSkpKQorICAgICAgICAgICAgICAgcmVzdWx0KSkKKyAgICAgICAgKGNsLWluY2Ygd2luZG93LXRv b2wtYmFyLS1yZWZyZXNoLWRvbmUtY291bnQpKQorICAgIChjbC1pbmNmIHdpbmRvdy10b29sLWJh ci0tcmVmcmVzaC1za2lwcGVkLWNvdW50KSkKKworICB3aW5kb3ctdG9vbC1iYXItc3RyaW5nLS1j YWNoZSkKKworKGRlZmNvbnN0IHdpbmRvdy10b29sLWJhci0tZ3JhcGhpY2FsLXNlcGFyYXRvcgor ICAoY29uY2F0CisgICAocHJvcGVydGl6ZSAiICIgJ2Rpc3BsYXkgJyhzcGFjZSA6d2lkdGggKDQp KSkKKyAgIChwcm9wZXJ0aXplICIgIiAnZGlzcGxheSAnKHNwYWNlIDp3aWR0aCAoMSkgZmFjZSAo OmludmVyc2UtdmlkZW8gdCkpKQorICAgKHByb3BlcnRpemUgIiAiICdkaXNwbGF5ICcoc3BhY2Ug OndpZHRoICg0KSkpKSkKKworKGRlZnVuIHdpbmRvdy10b29sLWJhci0ta2V5bWFwLWVudHJ5LXRv LXN0cmluZyAobWVudS1pdGVtKQorICAiQ29udmVydCBNRU5VLUlURU0gaW50byBhIChwcm9wZXJ0 aXplZCkgc3RyaW5nIHJlcHJlc2VudGF0aW9uLgorCitNRU5VLUlURU0gaXMgYSBtZW51IGl0ZW0g dG8gY29udmVydC4gIFNlZSBpbmZvIG5vZGUgKGVsaXNwKVRvb2wgQmFyLiIKKyAgKHBjYXNlLWV4 aGF1c3RpdmUgbWVudS1pdGVtCisgICAgOzsgU2VwYXJhdG9ycworICAgICgob3IgYCgsXyAiLS0i KQorICAgICAgICAgYCgsXyBtZW51LWl0ZW0gLChhbmQgKHByZWQgc3RyaW5ncCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChwcmVkIChzdHJpbmctcHJlZml4LXAgIi0tIikpKSkpCisg ICAgIChpZiAod2luZG93LXRvb2wtYmFyLS11c2UtaW1hZ2VzKQorICAgICAgICAgd2luZG93LXRv b2wtYmFyLS1ncmFwaGljYWwtc2VwYXJhdG9yCisgICAgICAgInwiKSkKKworICAgIDs7IE1lbnUg aXRlbSwgdHVybiBpbnRvIHByb3BlcnRpemVkIHN0cmluZyBidXR0b24KKyAgICAoYCgsa2V5IG1l bnUtaXRlbSAsbmFtZS1leHByICxiaW5kaW5nIC4gLHBsaXN0KQorICAgICAod2hlbiBiaW5kaW5n ICAgICAgOyBJZiBubyBiaW5kaW5nIGV4aXN0cywgdGhlbiBidXR0b24gaXMgaGlkZGVuLgorICAg ICAgIChsZXQqICgobmFtZSAoZXZhbCBuYW1lLWV4cHIpKQorICAgICAgICAgICAgICAoc3RyICh1 cGNhc2UtaW5pdGlhbHMgKG9yIChwbGlzdC1nZXQgcGxpc3QgOmxhYmVsKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctdHJpbS1yaWdodCBuYW1lICJcXC4r IikpKSkKKyAgICAgICAgICAgICAgKGxlbiAobGVuZ3RoIHN0cikpCisgICAgICAgICAgICAgIChl bmFibGUtZm9ybSAocGxpc3QtZ2V0IHBsaXN0IDplbmFibGUpKQorICAgICAgICAgICAgICAoZW5h YmxlZCAob3IgKG5vdCBlbmFibGUtZm9ybSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChl dmFsIGVuYWJsZS1mb3JtKSkpKQorICAgICAgICAgKGlmIGVuYWJsZWQKKyAgICAgICAgICAgICAo YWRkLXRleHQtcHJvcGVydGllcyAwIGxlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICcobW91c2UtZmFjZSB3aW5kb3ctdG9vbC1iYXItYnV0dG9uLWhvdmVyCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBrZXltYXAgd2luZG93LXRvb2wtYmFyLS1idXR0b24t a2V5bWFwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlIHdpbmRvdy10 b29sLWJhci1idXR0b24pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKQor ICAgICAgICAgICAocHV0LXRleHQtcHJvcGVydHkgMCBsZW4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdmYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2luZG93LXRv b2wtYmFyLWJ1dHRvbi1kaXNhYmxlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry KSkKKyAgICAgICAgICh3aGVuLWxldCAoKHNwZWMgKGFuZCAod2luZG93LXRvb2wtYmFyLS11c2Ut aW1hZ2VzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQgbWVudS1p dGVtIDppbWFnZSkpKSkKKyAgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IDAgbGVuCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzcGxheQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGFwcGVuZCBzcGVjCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChpZiBlbmFibGVkICcoOm1hcmdpbiAyIDphc2NlbnQgY2VudGVyKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoOm1hcmdpbiAyIDphc2NlbnQgY2VudGVyCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y29udmVyc2lvbiBkaXNh YmxlZCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKSkKKyAgICAgICAgIChw dXQtdGV4dC1wcm9wZXJ0eSAwIGxlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWxw LWVjaG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKHBsaXN0LWdldCBwbGlzdCA6 aGVscCkgbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIpCisgICAgICAgICAo cHV0LXRleHQtcHJvcGVydHkgMCBsZW4gJ3Rvb2wtYmFyLWtleSBrZXkgc3RyKQorICAgICAgICAg c3RyKSkpKSkKKworKGRlZnVuIHdpbmRvdy10b29sLWJhci0tY2FsbC1idXR0b24gKCkKKyAgIkNh bGwgdGhlIGJ1dHRvbiB0aGF0IHdhcyBjbGlja2VkIG9uIGluIHRoZSB0YWIgbGluZS4iCisgIChp bnRlcmFjdGl2ZSkKKyAgKHdoZW4gKG1vdXNlLWV2ZW50LXAgbGFzdC1jb21tYW5kLWV2ZW50KQor ICAgIChsZXQgKChwb3NuIChldmVudC1zdGFydCBsYXN0LWNvbW1hbmQtZXZlbnQpKSkKKyAgICAg IDs7IENvbW1hbmRzIG5lZWQgdG8gZXhlY3V0ZSB3aXRoIHRoZSByaWdodCBidWZmZXIgYW5kIHdp bmRvdworICAgICAgOzsgc2VsZWN0ZWQuICBUaGUgc2VsZWN0aW9uIG5lZWRzIHRvIGJlIHBlcm1h bmVudCBmb3IgaXNlYXJjaC4KKyAgICAgIChzZWxlY3Qtd2luZG93IChwb3NuLXdpbmRvdyBwb3Nu KSkKKyAgICAgIChsZXQqICgoc3RyIChwb3NuLXN0cmluZyBwb3NuKSkKKyAgICAgICAgICAgICAo a2V5IChnZXQtdGV4dC1wcm9wZXJ0eSAoY2RyIHN0cikgJ3Rvb2wtYmFyLWtleSAoY2FyIHN0cikp KQorICAgICAgICAgICAgIChjbWQgKGxvb2t1cC1rZXkgKHdpbmRvdy10b29sLWJhci0tZ2V0LWtl eW1hcCkgKHZlY3RvciBrZXkpKSkpCisgICAgICAgIChjYWxsLWludGVyYWN0aXZlbHkgY21kKSkp KSkKKworKGRlZnVuIHdpbmRvdy10b29sLWJhci0taWdub3JlICgpCisgICJJbnRlcm5hbCBjb21t YW5kIHNvIGlzZWFyY2ggZG9lcyBub3QgZXhpdCBvbiBidXR0b24tZG93biBldmVudHMuIgorICAo aW50ZXJhY3RpdmUpCisgIG5pbCkKKworKGRlZnZhciB3aW5kb3ctdG9vbC1iYXItLWlnbm9yZWQt ZXZlbnQtdHlwZXMKKyAgKGxldCAoKGxpc3QgKGxpc3QgJ21vdXNlLW1vdmVtZW50ICdwaW5jaAor ICAgICAgICAgICAgICAgICAgICAnd2hlZWwtZG93biAnd2hlZWwtdXAgJ3doZWVsLWxlZnQgJ3do ZWVsLXJpZ2h0CisgICAgICAgICAgICAgICAgICAgIG1vdXNlLXdoZWVsLWRvd24tZXZlbnQgbW91 c2Utd2hlZWwtdXAtZXZlbnQKKyAgICAgICAgICAgICAgICAgICAgbW91c2Utd2hlZWwtbGVmdC1l dmVudCBtb3VzZS13aGVlbC1yaWdodC1ldmVudAorICAgICAgICAgICAgICAgICAgICAoYm91bmQt YW5kLXRydWUtcCBtb3VzZS13aGVlbC1kb3duLWFsdGVybmF0ZS1ldmVudCkKKyAgICAgICAgICAg ICAgICAgICAgKGJvdW5kLWFuZC10cnVlLXAgbW91c2Utd2hlZWwtdXAtYWx0ZXJuYXRlLWV2ZW50 KQorICAgICAgICAgICAgICAgICAgICAoYm91bmQtYW5kLXRydWUtcCBtb3VzZS13aGVlbC1sZWZ0 LWFsdGVybmF0ZS1ldmVudCkKKyAgICAgICAgICAgICAgICAgICAgKGJvdW5kLWFuZC10cnVlLXAg bW91c2Utd2hlZWwtcmlnaHQtYWx0ZXJuYXRlLWV2ZW50KSkpKQorICAgIChkZWxldGUtZHVwcyAo ZGVsZXRlIG5pbCBsaXN0KSkpCisgICJDYWNoZSBmb3IgYHdpbmRvdy10b29sLWJhci0tbGFzdC1j b21tYW5kLXRyaWdnZXJzLXJlZnJlc2gtcCcuIikKKworKGRlZnVuIHdpbmRvdy10b29sLWJhci0t bGFzdC1jb21tYW5kLXRyaWdnZXJzLXJlZnJlc2gtcCAoKQorICAiVGVzdCBpZiB0aGUgcmVjZW50 IGNvbW1hbmQgb3IgZXZlbnQgc2hvdWxkIHRyaWdnZXIgYSB0b29sIGJhciByZWZyZXNoLiIKKyAg KGxldCAoKHR5cGUgKGV2ZW50LWJhc2ljLXR5cGUgbGFzdC1jb21tYW5kLWV2ZW50KSkpCisgICAg KGFuZAorICAgICA7OyBBc3N1bWUgdGhhdCBrZXkgcHJlc3NlcyBhbmQgYnV0dG9uIHByZXNzZXMg YXJlIHRoZSBvbmx5IHVzZXIKKyAgICAgOzsgaW50ZXJhY3Rpb25zIHRoYXQgY2FuIGFsdGVyIHRo ZSB0b29sIGJhci4gIFNwZWNpZmljYWxseSwgdGhpcworICAgICA7OyBleGNsdWRlcyBtb3VzZSBt b3ZlbWVudCwgbW91c2Ugd2hlZWwgc2Nyb2xsLCBhbmQgcGluY2guCisgICAgIChub3QgKG1lbWJl ciB0eXBlIHdpbmRvdy10b29sLWJhci0taWdub3JlZC1ldmVudC10eXBlcykpCisgICAgIDs7IEFz c3VtZSB0aGF0IGFueSBjb21tYW5kIHRoYXQgdHJpZ2dlcnMgc2hpZnQgc2VsZWN0IGNhbid0IGFs dGVyCisgICAgIDs7IHRoZSB0b29sIGJhci4gIFRoaXMgZXhjbHVkZXMgcHVyZSBuYXZpZ2F0aW9u IGNvbW1hbmRzLgorICAgICAobm90ICh3aW5kb3ctdG9vbC1iYXItLWNvbW1hbmQtdHJpZ2dlcnMt c2hpZnQtc2VsZWN0LXAgbGFzdC1jb21tYW5kKSkKKyAgICAgOzsgQXNzdW1lIHRoYXQgc2VsZi1p bnNlcnQtY29tbWFuZCB3b24ndCBhbHRlciB0aGUgdG9vbCBiYXIuCisgICAgIDs7IFRoaXMgaXMg dGhlIG1vc3QgY29tbW9ubHkgZXhlY3V0ZWQgY29tbWFuZC4KKyAgICAgKG5vdCAoZXEgbGFzdC1j b21tYW5kICdzZWxmLWluc2VydC1jb21tYW5kKSkpKSkKKworKGRlZnVuIHdpbmRvdy10b29sLWJh ci0tY29tbWFuZC10cmlnZ2Vycy1zaGlmdC1zZWxlY3QtcCAoY29tbWFuZCkKKyAgIlRlc3QgaWYg Q09NTUFORCB3b3VsZCB0cmlnZ2VyIHNoaWZ0IHNlbGVjdC4iCisgIChsZXQqICgoZm9ybSAoaW50 ZXJhY3RpdmUtZm9ybSBjb21tYW5kKSkKKyAgICAgICAgIChzcGVjIChjYXItc2FmZSAoY2RyLXNh ZmUgZm9ybSkpKSkKKyAgICAoYW5kIChlcSAoY2FyLXNhZmUgZm9ybSkgJ2ludGVyYWN0aXZlKQor ICAgICAgICAgKHN0cmluZ3Agc3BlYykKKyAgICAgICAgIChzZXEtcG9zaXRpb24gc3BlYyA/Xikp KSkKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZpbmUtbWlub3ItbW9kZSB3aW5kb3ctdG9vbC1iYXIt bW9kZQorICAiVG9nZ2xlIGRpc3BsYXkgb2YgdGhlIHRvb2wgYmFyIGluIHRoZSB0YWIgbGluZSBv ZiB0aGUgY3VycmVudCBidWZmZXIuIgorICA6Z2xvYmFsIG5pbAorICAobGV0ICgoc2hvdWxkLWRp c3BsYXkgKGFuZCB3aW5kb3ctdG9vbC1iYXItbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAobm90IChlcSB0b29sLWJhci1tYXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGRlZmF1bHQtdmFsdWUgJ3Rvb2wtYmFyLW1hcCkpKSkpCisgICAgICAgIChkZWZh dWx0LXZhbHVlICcoOmV2YWwgKHdpbmRvdy10b29sLWJhci1zdHJpbmcpKSkpCisKKyAgICA7OyBQ cmVzZXJ2ZSBleGlzdGluZyB0YWItbGluZSBzZXQgb3V0c2lkZSBvZiB0aGlzIG1vZGUKKyAgICAo aWYgKG9yIChudWxsIHRhYi1saW5lLWZvcm1hdCkKKwkgICAgKGVxdWFsIHRhYi1saW5lLWZvcm1h dCBkZWZhdWx0LXZhbHVlKSkKKyAgICAgICAgKGlmIHNob3VsZC1kaXNwbGF5CisgICAgICAgICAg ICAoc2V0cSB0YWItbGluZS1mb3JtYXQgZGVmYXVsdC12YWx1ZSkKKyAgICAgICAgICAoc2V0cSB0 YWItbGluZS1mb3JtYXQgbmlsKSkKKyAgICAgIChtZXNzYWdlCisgICAgICAgInRhYi1saW5lLWZv cm1hdCBzZXQgb3V0c2lkZSBvZiB3aW5kb3ctdG9vbC1iYXItbW9kZSwgY3VycmVudGx5IGAlUyci CisgICAgICAgdGFiLWxpbmUtZm9ybWF0KSkpKQorCis7OzsjIyNhdXRvbG9hZAorKGRlZmluZS1n bG9iYWxpemVkLW1pbm9yLW1vZGUgZ2xvYmFsLXdpbmRvdy10b29sLWJhci1tb2RlCisgIHdpbmRv dy10b29sLWJhci1tb2RlIHdpbmRvdy10b29sLWJhci0tdHVybi1vbgorICA6Z3JvdXAgJ3dpbmRv dy10b29sLWJhcgorICAoYWRkLWhvb2sgJ2lzZWFyY2gtbW9kZS1ob29rICMnd2luZG93LXRvb2wt YmFyLS10dXJuLW9uKQorICAoYWRkLWhvb2sgJ2lzZWFyY2gtbW9kZS1lbmQtaG9vayAjJ3dpbmRv dy10b29sLWJhci0tdHVybi1vbikpCisKKyhkZWZ2YXIgd2luZG93LXRvb2wtYmFyLS1hbGxvdy1p bWFnZXMgdAorICAiSW50ZXJuYWwgZGVidWcgZmxhZyB0byBmb3JjZSB0ZXh0IG1vZGUuIikKKwor KGRlZnVuIHdpbmRvdy10b29sLWJhci0tdXNlLWltYWdlcyAoKQorICAiSW50ZXJuYWwgZnVuY3Rp b24uCitSZXNwZWN0cyBgd2luZG93LXRvb2wtYmFyLS1hbGxvdy1pbWFnZXMnIGFzIHdlbGwgYXMg ZnJhbWUKK2NhcGFiaWxpdGllcy4iCisgIChhbmQgd2luZG93LXRvb2wtYmFyLS1hbGxvdy1pbWFn ZXMKKyAgICAgICAoZGlzcGxheS1pbWFnZXMtcCkpKQorDAorOzs7IERpc3BsYXkgc3R5bGluZzoK KyhkZWZmYWNlIHdpbmRvdy10b29sLWJhci1idXR0b24KKyAgJygoZGVmYXVsdAorICAgICA6aW5o ZXJpdCB0YWItbGluZSkKKyAgICAoKChjbGFzcyBjb2xvcikgKG1pbi1jb2xvcnMgODgpIChzdXBw b3J0cyA6Ym94IHQpKQorICAgICA6Ym94ICg6bGluZS13aWR0aCAtMSA6c3R5bGUgcmVsZWFzZWQt YnV0dG9uKQorICAgICA6YmFja2dyb3VuZCAiZ3JleTg1IikKKyAgICA7OyBJZiB0aGUgYm94IGlz IG5vdCBzdXBwb3J0ZWQsIGRpbSB0aGUgYnV0dG9uIGJhY2tncm91bmQgYSBiaXQuCisgICAgKCgo Y2xhc3MgY29sb3IpIChtaW4tY29sb3JzIDg4KSkKKyAgICAgOmJhY2tncm91bmQgImdyZXk3MCIp CisgICAgKHQKKyAgICAgOmludmVyc2UtdmlkZW8gdCkpCisgICJGYWNlIHVzZWQgZm9yIGJ1dHRv bnMgd2hlbiB0aGUgbW91c2UgaXMgbm90IGhvdmVyaW5nIG92ZXIgdGhlIGJ1dHRvbi4iCisgIDpn cm91cCAnd2luZG93LXRvb2wtYmFyKQorCisoZGVmZmFjZSB3aW5kb3ctdG9vbC1iYXItYnV0dG9u LWhvdmVyCisgICcoKGRlZmF1bHQKKyAgICAgOmluaGVyaXQgdGFiLWxpbmUpCisgICAgKCgoY2xh c3MgY29sb3IpIChtaW4tY29sb3JzIDg4KSkKKyAgICAgOmJveCAoOmxpbmUtd2lkdGggLTEgOnN0 eWxlIHJlbGVhc2VkLWJ1dHRvbikKKyAgICAgOmJhY2tncm91bmQgImdyZXk5NSIpCisgICAgKHQK KyAgICAgOmludmVyc2UtdmlkZW8gdCkpCisgICJGYWNlIHVzZWQgZm9yIGJ1dHRvbnMgd2hlbiB0 aGUgbW91c2UgaXMgaG92ZXJpbmcgb3ZlciB0aGUgYnV0dG9uLiIKKyAgOmdyb3VwICd3aW5kb3ct dG9vbC1iYXIpCisKKyhkZWZmYWNlIHdpbmRvdy10b29sLWJhci1idXR0b24tZGlzYWJsZWQKKyAg JygoZGVmYXVsdAorICAgICA6aW5oZXJpdCB0YWItbGluZSkKKyAgICAoKChjbGFzcyBjb2xvcikg KG1pbi1jb2xvcnMgODgpKQorICAgICA6Ym94ICg6bGluZS13aWR0aCAtMSA6c3R5bGUgcmVsZWFz ZWQtYnV0dG9uKQorICAgICA6YmFja2dyb3VuZCAiZ3JleTUwIgorICAgICA6Zm9yZWdyb3VuZCAi Z3JleTcwIikKKyAgICAodAorICAgICA6aW52ZXJzZS12aWRlbyB0CisgICAgIDpiYWNrZ3JvdW5k ICJicmlnaHRibGFjayIpKQorICAiRmFjZSB1c2VkIGZvciBidXR0b25zIHdoZW4gdGhlIGJ1dHRv biBpcyBkaXNhYmxlZC4iCisgIDpncm91cCAnd2luZG93LXRvb2wtYmFyKQorDAorOzs7IFdvcmth cm91bmQgZm9yIGh0dHBzOi8vZGViYnVncy5nbnUub3JnL2NnaS9idWdyZXBvcnQuY2dpP2J1Zz02 ODMzNC4KKyhkZWZ1biB3aW5kb3ctdG9vbC1iYXItLWdldC1rZXltYXAgKCkKKyAgIlJldHVybiB0 aGUgdG9vbCBiYXIga2V5bWFwLiIKKyAgKGxldCAoKHRvb2wtYmFyLWFsd2F5cy1zaG93LWRlZmF1 bHQgbmlsKSkKKyAgICAoaWYgKGFuZCAodmVyc2lvbjwgZW1hY3MtdmVyc2lvbiAiMzAiKQorICAg ICAgICAgICAgIChub3QgKHdpbmRvdy10b29sLWJhci0tdXNlLWltYWdlcykpKQorICAgICAgICA7 OyBUaGlzIGNvZGUgcGF0aCBpcyBhIGxlc3MgZWZmaWNpZW50IHdvcmthcm91bmQuCisgICAgICAg ICh3aW5kb3ctdG9vbC1iYXItLW1ha2Uta2V5bWFwLTEpCisgICAgICAoa2V5bWFwLWdsb2JhbC1s b29rdXAgIjx0b29sLWJhcj4iKSkpKQorCisoZGVjbGFyZS1mdW5jdGlvbiBpbWFnZS1tYXNrLXAg ImltYWdlLmMiIChzcGVjICZvcHRpb25hbCBmcmFtZSkpCisKKyhkZWZ1biB3aW5kb3ctdG9vbC1i YXItLW1ha2Uta2V5bWFwLTEgKCkKKyAgIlBhdGNoZWQgY29weSBvZiBgdG9vbC1iYXItbWFrZS1r ZXltYXAtMScuIgorICAobWFwY2FyIChsYW1iZGEgKGJpbmQpCisgICAgICAgICAgICAobGV0IChp bWFnZS1leHAgcGxpc3QpCisgICAgICAgICAgICAgICh3aGVuIChhbmQgKGVxIChjYXItc2FmZSAo Y2RyLXNhZmUgYmluZCkpICdtZW51LWl0ZW0pCisgICAgICAgICAgICAgICAgICAgICAgICAgOzsg Rm9yIHRoZSBmb3JtYXQgb2YgbWVudS1pdGVtcywgc2VlIG5vZGUKKyAgICAgICAgICAgICAgICAg ICAgICAgICA7OyBgRXh0ZW5kZWQgTWVudSBJdGVtcycgaW4gdGhlIEVsaXNwIG1hbnVhbC4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBwbGlzdCAobnRoY2RyIChpZiAoY29uc3AgKG50 aCA0IGJpbmQpKSA1IDQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBiaW5kKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBpbWFnZS1leHAgKHBs aXN0LWdldCBwbGlzdCA6aW1hZ2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zcCBp bWFnZS1leHApCisgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZXEgKGNhciBpbWFnZS1l eHApICdpbWFnZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGZib3VuZHAgKGNhciBpbWFn ZS1leHApKSkKKyAgICAgICAgICAgICAgICAobGV0ICgoaW1hZ2UgKGFuZCAoZGlzcGxheS1pbWFn ZXMtcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZhbCBpbWFnZS1leHAp KSkpCisgICAgICAgICAgICAgICAgICAodW5sZXNzIChhbmQgaW1hZ2UgKGltYWdlLW1hc2stcCBp bWFnZSkpCisgICAgICAgICAgICAgICAgICAgIChzZXRxIGltYWdlIChhcHBlbmQgaW1hZ2UgJyg6 bWFzayBoZXVyaXN0aWMpKSkpCisgICAgICAgICAgICAgICAgICAoc2V0cSBiaW5kIChjb3B5LXNl cXVlbmNlIGJpbmQpCisgICAgICAgICAgICAgICAgICAgICAgICBwbGlzdCAobnRoY2RyIChpZiAo Y29uc3AgKG50aCA0IGJpbmQpKSA1IDQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJpbmQpKQorICAgICAgICAgICAgICAgICAgKHBsaXN0LXB1dCBwbGlzdCA6aW1hZ2Ug aW1hZ2UpKSkKKyAgICAgICAgICAgICAgYmluZCkpCisgICAgICAgICAgdG9vbC1iYXItbWFwKSkK KworKGRlZnVuIHdpbmRvdy10b29sLWJhci0tdHVybi1vbiAoKQorICAiSW50ZXJuYWwgZnVuY3Rp b24gY2FsbGVkIGJ5IGBnbG9iYWwtd2luZG93LXRvb2wtYmFyLW1vZGUnLiIKKyAgKHdoZW4gZ2xv YmFsLXdpbmRvdy10b29sLWJhci1tb2RlCisgICAgKHdpbmRvdy10b29sLWJhci1tb2RlIDEpKSkK KworKHByb3ZpZGUgJ3dpbmRvdy10b29sLWJhcikKKworOzs7IHdpbmRvdy10b29sLWJhci5lbCBl bmRzIGhlcmUKLS0gCjIuMzkuMgoK --=_fa006a63f9e661853cc34e753767b04f--