From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Okamsn via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#70208: [PATCH] Add command `list-keyboard-macros` Date: Sat, 13 Apr 2024 19:24:45 +0000 Message-ID: <5902981e-eee6-4efe-927a-c37ed29a4303@protonmail.com> References: <86msq85o7n.fsf@gnu.org> <8dd6fcfa-2fc0-4371-b5a9-1f451ff1e9a4@protonmail.com> <86cyr11uap.fsf@gnu.org> Reply-To: Okamsn Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_5JZJ1LeGElQZvBw5oZTBqAG0XxOqyBeKYHNjW4EoSM" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="28303"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 70208@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat Apr 13 21:26:22 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 1rvj14-00078Q-Dg for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 13 Apr 2024 21:26:22 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rvj0l-0002Wk-7H; Sat, 13 Apr 2024 15:26:03 -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 1rvj0i-0002WY-V8 for bug-gnu-emacs@gnu.org; Sat, 13 Apr 2024 15:26:00 -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 1rvj0h-0007AQ-GI for bug-gnu-emacs@gnu.org; Sat, 13 Apr 2024 15:26:00 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rvj0r-0006GI-NL for bug-gnu-emacs@gnu.org; Sat, 13 Apr 2024 15:26:09 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Okamsn Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 13 Apr 2024 19:26:09 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 70208 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 70208-submit@debbugs.gnu.org id=B70208.171303633523751 (code B ref 70208); Sat, 13 Apr 2024 19:26:09 +0000 Original-Received: (at 70208) by debbugs.gnu.org; 13 Apr 2024 19:25:35 +0000 Original-Received: from localhost ([127.0.0.1]:33811 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rvj0H-0006B0-Oe for submit@debbugs.gnu.org; Sat, 13 Apr 2024 15:25:35 -0400 Original-Received: from mail-4316.protonmail.ch ([185.70.43.16]:16227) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rvizu-00066E-PG for 70208@debbugs.gnu.org; Sat, 13 Apr 2024 15:25:32 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1713036292; x=1713295492; bh=cURPVqpwZ0ki1qeM9rMUvMcti/kF6dZkeT6YElMk1YI=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=g4UrWMFmwjvWxA9o9BzRK1+Lcv/lB10WvOxQmg9Fo/9kBvXdzCEcTna6r+71iQIzL PFwYZZQiLe3kYIKQa0P2alK/Z+cB2Bx9KkHTE0Ma/qZt7qrfCdY7y14xXASRwUdnF5 FPENuV1acWHwUP8p0AKBL3ZBaa4vT1Mp5hl6cBAJdzZEEilWd5FVZavAlU5xQxMyyw Ou2J/wArf0Gvm9BVWoJMG9sqOFM035tcPIgPc2gcrxlvidTLwt0Ogu/jZyDqCGvIFu yfDPm01Vyv7MrlXCmpH3iftIVyApk9CpzYPqTepDiXxh6cKwtLewIkTjXd13qSDFjK /NDHF2CLukM+A== In-Reply-To: <86cyr11uap.fsf@gnu.org> Feedback-ID: 25935600:user:proton 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:283235 Archived-At: This is a multi-part message in MIME format. --b1_5JZJ1LeGElQZvBw5oZTBqAG0XxOqyBeKYHNjW4EoSM Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Eli Zaretskii wrote: >> Date: Sat, 06 Apr 2024 23:26:15 +0000 >> From: Okamsn >> Cc: 70208@debbugs.gnu.org >> >> +@node Kmacro Menu >> +@section Listing Keyboard Macros >=20 > "Listing and Editing", I guess? >=20 >> +After a command is run, the Kmacro Menu resets to show the new values o= f > ^^^^^^ > "Resets" is not the best word here. I suggest to rephrase: >=20 > After a command is run, the Kmacro Menu display changes to reflect > the new values of ... >=20 >> +the macro properties and the macro ring. The usual cursor motion >> +commands can be used in this buffer. >=20 > "You can use the usual cursor motion commands in this buffer." This > avoids passive tense. >=20 >> +@item D @r{(Kmacro Menu)} >> +This command deletes macros, removing them from the ring >> +(@code{kmacro-menu-do-delete}). For example, running this command on >> +the macro at position zero will delete the current macro and then make >> +the first macro in the macro ring (previously at position one) the new >> +current macro, popping it from the ring. >> + >> + If the region is active, this command deletes the macros in the >> +region. Otherwise, if there are marked macros, this command deletes th= e >> +marked macros. If there is no region nor are there marked macros, this >> +command deletes the macro on the current line. In all cases, the >> +command prompts for confirmation before duplication. > ^^^^^^^^^^^^^^^^^^ > "before deletion", right? >=20 >> ++++ >> +*** New mode 'kmacro-menu-mode' and new command 'list-keyboard-macros'. >> +The new command 'list-keyboard-macros' the macro version of commands > ^ > I think "is" is missing there. >=20 >> +(defface kmacro-menu-mark '((t (:inherit font-lock-constant-face))) >> + "Face used for the Keyboard Macro Menu marks." >> + :group 'kmacro >> + :version "30.0.50") >=20 > The version should be "30.1", the next released version (here and > elsewhere in the patch). We never tag options with development > versions. >=20 >> +(defun kmacro-menu-mark () >> + "Mark macros in the region or, otherwise, on the current line. >=20 > I'd remove the "otherwise" part, and explain that in the next lines: >=20 > Mark macros in the region or on the current line. >=20 > If there's an active region, mark macros in the region; otherwise > mark the macro on the current line. >=20 >> +(defun kmacro-menu-flag-for-deletion () >> + "Flag macros in the region or, otherwise, on the current line. >=20 > Likewise here and in all other similar commands (some of them already > have the "if there's an active region" part). >=20 > Thanks. Please see the attached. Thank you. --b1_5JZJ1LeGElQZvBw5oZTBqAG0XxOqyBeKYHNjW4EoSM Content-Type: text/x-patch; charset=UTF-8; name=v4-0001-Add-command-list-keyboard-macros-that-works-like-.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v4-0001-Add-command-list-keyboard-macros-that-works-like-.patch RnJvbSBiZmRjMjdiNTY4NGVlYmJkMWI0MzJmNjA2MmNhODFiODkzODVhOWNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFYXJsIEh5YXR0IDxva2Ftc25AcHJvdG9ubWFpbC5jb20+CkRh dGU6IFN1biwgMjQgTWFyIDIwMjQgMTE6NDk6MjEgLTA0MDAKU3ViamVjdDogW1BBVENIIHY0XSBB ZGQgY29tbWFuZCAnbGlzdC1rZXlib2FyZC1tYWNyb3MnIHRoYXQgd29ya3MgbGlrZQogJ2xpc3Qt YnVmZmVycycuCgpUaGUgY29tbWFuZCAnbGlzdC1rZXlib2FyZC1tYWNyb3MnIGFsbG93cyBlZGl0 aW5nIGFuZCByZS1hcnJhbmdpbmcKbWFjcm9zIHVzaW5nICd0YWJ1bGF0ZWQtbGlzdC1tb2RlJy4g IEV4aXN0aW5nIGtleWJvYXJkIG1hY3JvcyBjYW4gYmUKZHVwbGljYXRlZCBvciBkZWxldGVkLiAg TWFjcm8gY291bnRlcnMgYW5kIGNvdW50ZXIgZm9ybWF0cyBjYW4gdGFrZSBuZXcKdmFsdWVzIHJl YWQgZnJvbSB0aGUgbWluaWJ1ZmZlci4gIE1hY3JvIGtleXMgY2FuIGJlIGVkaXRlZCB1c2luZwon ZWRpdC1rYmQtbWFjcm8nLgoKKiBkb2MvZW1hY3Mva21hY3JvLnRleGkgKEttYWNybyBNZW51KTog RG9jdW1lbnQgdGhlIG5ldyBjb21tYW5kCmFuZCB0aGUgbWVudSdzIGNvbW1hbmRzLgoqIGV0Yy9O RVdTIChLbWFjcm8gTWVudSBNb2RlKTogTWVudGlvbiB0aGUgbmV3IG1vZGUgYW5kIGNvbW1hbmQu CiogbGlzcC9rbWFjcm8uZWwgKGttYWNyby1tZW51LW1hcmssIGttYWNyby1tZW51LW1hcmtlZCkK KGttYWNyby1tZW51LWZsYWdnZWQpOiBBZGQgZmFjZXMgZm9yIG1hcmtzIGFuZCBmbGFncy4KKiBs aXNwL2ttYWNyby5lbCAoa21hY3JvLW1lbnUtbW9kZS1tYXAsIGttYWNyby1tZW51LW1vZGUpOiBB ZGQgbW9kZQphbmQgbWFwLgoqIGxpc3Ava21hY3JvLmVsIChsaXN0LWtleWJvYXJkLW1hY3Jvcywg a21hY3JvLW1lbnUpOiBBZGQgY29tbWFuZC4KKiBsaXNwL2ttYWNyby5lbCAoa21hY3JvLW1lbnUt LWRlbGV0aW9uLWZsYWdzLCBrbWFjcm8tbWVudS0tbWFya3MpCihrbWFjcm8tbWVudS0taWQta21h Y3JvLCBrbWFjcm8tbWVudS0taWQtcG9zaXRpb24sIGttYWNyby1tZW51LS1rbWFjcm9zKQooa21h Y3JvLW1lbnUtLXJlZnJlc2gsIGttYWNyby1tZW51LS1tYXAtaWRzLCBrbWFjcm8tbWVudS0tcmVw bGFjZS1hbGwpCihrbWFjcm8tbWVudS0tcmVwbGFjZS1hdCwga21hY3JvLW1lbnUtLXF1ZXJ5LXJl dmVydCwga21hY3JvLW1lbnUtLWFzc2VydC1yb3cpCihrbWFjcm8tbWVudS0tcHJvcGVydGl6ZS1r ZXlzLCBrbWFjcm8tbWVudS0tZG8tcmVnaW9uKQooa21hY3JvLW1lbnUtLW1hcmtzLWV4aXN0LXAp OiBBZGQgdXRpbGl0eSBmdW5jdGlvbnMgb2YgbW9kZQphbmQgY29tbWFuZHMuCiogbGlzcC9rbWFj cm8uZWwgKGttYWNyby1tZW51LW1hcmssIGttYWNyby1tZW51LWZsYWctZm9yLWRlbGV0aW9uKQoo a21hY3JvLW1lbnUtdW5tYXJrLCBrbWFjcm8tbWVudS11bm1hcmstYmFja3dhcmQpCihrbWFjcm8t bWVudS11bm1hcmstYWxsKTogQWRkIGNvbW1hbmRzIGZvciBtYXJrcyBhbmQgZmxhZ3MuCiogbGlz cC9rbWFjcm8uZWwgKGttYWNyby1tZW51LWRvLWZsYWdnZWQtZGVsZXRlLCBrbWFjcm8tbWVudS1k by1jb3B5KQooa21hY3JvLW1lbnUtZG8tZGVsZXRlKTogQWRkIGNvbW1hbmRzIHRoYXQgbW9kaWZ5 IHRoZSByaW5nLgoqIGxpc3Ava21hY3JvLmVsIChrbWFjcm8tbWVudS1lZGl0LXBvc2l0aW9uLCBr bWFjcm8tbWVudS10cmFuc3Bvc2UpCihrbWFjcm8tbWVudS1lZGl0LWZvcm1hdCwga21hY3JvLW1l bnUtZWRpdC1jb3VudGVyKQooa21hY3JvLW1lbnUtZWRpdC1rZXlzLCBrbWFjcm8tbWVudS1lZGl0 LWNvbHVtbik6IEFkZCBjb21tYW5kcyB0aGF0Cm1vZGlmeSBhIGtleWJvYXJkIG1hY3JvLgotLS0K IGRvYy9lbWFjcy9rbWFjcm8udGV4aSB8IDE2MiArKysrKysrKysrKysKIGV0Yy9ORVdTICAgICAg ICAgICAgICB8ICAxMSArCiBsaXNwL2ttYWNyby5lbCAgICAgICAgfCA1NTggKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDczMSBpbnNl cnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZG9jL2VtYWNzL2ttYWNyby50ZXhpIGIvZG9jL2VtYWNz L2ttYWNyby50ZXhpCmluZGV4IGUzMGRlZjM0NDc1Li40YThkNGQ0ZjA5MyAxMDA2NDQKLS0tIGEv ZG9jL2VtYWNzL2ttYWNyby50ZXhpCisrKyBiL2RvYy9lbWFjcy9rbWFjcm8udGV4aQpAQCAtNDIs NiArNDIsOCBAQCBLZXlib2FyZCBNYWNyb3MKICogRWRpdCBLZXlib2FyZCBNYWNybzo6ICAgICAg RWRpdGluZyBrZXlib2FyZCBtYWNyb3MuCiAqIEtleWJvYXJkIE1hY3JvIFN0ZXAtRWRpdDo6IElu dGVyYWN0aXZlbHkgZXhlY3V0aW5nIGFuZCBlZGl0aW5nIGEga2V5Ym9hcmQKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtYWNyby4KKyogS21hY3JvIE1lbnU6OiAgICAgICAgICAgICAg QW4gaW50ZXJmYWNlIGZvciBsaXN0aW5nIGFuZCBlZGl0aW5nCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAga2V5Ym9hcmQgbWFjcm9zIGFuZCB0aGUga2V5Ym9hcmQgbWFjcm8gcmluZy4K IEBlbmQgbWVudQogCiBAbm9kZSBCYXNpYyBLZXlib2FyZCBNYWNybwpAQCAtNjE2LDMgKzYxOCwx NjMgQEAgS2V5Ym9hcmQgTWFjcm8gU3RlcC1FZGl0CiBrZXlib2FyZCBtYWNybzsgaXQgdGhlbiB0 ZXJtaW5hdGVzIHRoZSBzdGVwLWVkaXRpbmcgYW5kIHJlcGxhY2VzIHRoZQogb3JpZ2luYWwga2V5 Ym9hcmQgbWFjcm8gd2l0aCB0aGUgZWRpdGVkIG1hY3JvLgogQGVuZCBpdGVtaXplCisKK0Bub2Rl IEttYWNybyBNZW51CitAc2VjdGlvbiBMaXN0aW5nIGFuZCBFZGl0aW5nIEtleWJvYXJkIE1hY3Jv cworQGNpbmRleCBLbWFjcm8gTWVudQorCitAY2luZGV4IGxpc3RpbmcgY3VycmVudCBrZXlib2Fy ZCBtYWNyb3MKK0BraW5kZXggTS14IGxpc3Qta2V5Ym9hcmQtbWFjcm9zIEBrZXl7UkVUfQorQGZp bmRleCBrbWFjcm8tbWVudQorQGZpbmRleCBsaXN0LWtleWJvYXJkLW1hY3JvcworICBUbyBkaXNw bGF5IGEgbGlzdCBvZiBleGlzdGluZyBrZXlib2FyZCBtYWNyb3MsIHR5cGUgQGtiZHtNLXgKK2xp c3Qta2V5Ym9hcmQtbWFjcm9zIEBrZXl7UkVUfX0uICBUaGlzIHBvcHMgdXAgdGhlIEBkZm57S21h Y3JvIE1lbnV9IGluCithIGJ1ZmZlciBuYW1lZCBAZmlsZXsqS2V5Ym9hcmQgTWFjcm8gTGlzdCp9 LiAgRWFjaCBsaW5lIGluIHRoZSBsaXN0CitzaG93cyBvbmUgbWFjcm8ncyBwb3NpdGlvbiwgY291 bnRlciB2YWx1ZSwgY291bnRlciBmb3JtYXQsIHRoYXQgY291bnRlcgordmFsdWUgdXNpbmcgdGhh dCBmb3JtYXQsIGFuZCBtYWNybyBrZXlzLiAgSGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgbWFjcm8K K2xpc3Q6CisKK0BzbWFsbGV4YW1wbGUKK1Bvc2l0aW9uICBDb3VudGVyICBGb3JtYXQgIEZvcm1h dHRlZCAgS2V5cworMCAgICAgICAgICAgICAgIDggICUwMmQgICAgMDggICAgICAgICBOIDogU1BD IDxGMz4gUkVUCisxICAgICAgICAgICAgICAgMCAgJWQgICAgICAwICAgICAgICAgIGwgbyBuIGcg U1BDIHAgaCByIGEgcyBlCitAZW5kIHNtYWxsZXhhbXBsZQorCitAbm9pbmRlbnQKK1RoZSBtYWNy b3MgYXJlIGxpc3RlZCB3aXRoIHRoZSBjdXJyZW50IG1hY3JvIGF0IHRoZSB0b3AgaW4gcG9zaXRp b24KK251bWJlciB6ZXJvIGFuZCB0aGUgb2xkZXIgbWFjcm9zIGluIHRoZSBvcmRlciBpbiB3aGlj aCB0aGV5IGFyZSBmb3VuZCBpbgordGhlIGtleWJvYXJkIG1hY3JvIHJpbmcgKEBweHJlZntLZXli b2FyZCBNYWNybyBSaW5nfSkuICBVc2luZyB0aGUgS21hY3JvCitNZW51LCB5b3UgY2FuIGNoYW5n ZSB0aGUgb3JkZXIgb2YgdGhlIG1hY3JvcyBhbmQgY2hhbmdlIHRoZWlyIGNvdW50ZXJzLAorY291 bnRlciBmb3JtYXRzLCBhbmQga2V5cy4gIFRoZSBLbWFjcm8gTWVudSBpcyBhIHJlYWQtb25seSBi dWZmZXIsIGFuZAorY2FuIGJlIGNoYW5nZWQgb25seSB0aHJvdWdoIHRoZSBzcGVjaWFsIGNvbW1h bmRzIGRlc2NyaWJlZCBpbiB0aGlzCitzZWN0aW9uLiAgQWZ0ZXIgYSBjb21tYW5kIGlzIHJ1biwg dGhlIEttYWNybyBNZW51IGRpc3BsYXlzIGNoYW5nZXMgdG8KK3JlZmxlY3QgdGhlIG5ldyB2YWx1 ZXMgb2YgdGhlIG1hY3JvIHByb3BlcnRpZXMgYW5kIHRoZSBtYWNybyByaW5nLiAgWW91CitjYW4g dXNlIHRoZSB1c3VhbCBjdXJzb3IgbW90aW9uIGNvbW1hbmRzIGluIHRoaXMgYnVmZmVyLCBhcyB3 ZWxsIGFzCitzcGVjaWFsIG1vdGlvbiBjb21tYW5kcyBmb3IgbmF2aWdhdGluZyB0aGUgdGFibGUu ICBUbyB2aWV3IGEgbGlzdCBvZiB0aGUKK3NwZWNpYWwgY29tbWFuZHMsIHR5cGUgQGtiZHtDLWgg bX0gb3IgQGtiZHs/fSAoQGNvZGV7ZGVzY3JpYmUtbW9kZX0pIGluCit0aGUgS21hY3JvIE1lbnUu CisKKyAgWW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kcyB0byBjaGFuZ2UgYSBtYWNy bydzIHByb3BlcnRpZXM6CisKK0B0YWJsZSBAa2JkCitAaXRlbSAjCitAZmluZGV4IGttYWNyby1t ZW51LWVkaXQtcG9zaXRpb24KK0BraW5kZXggIyBAcnsoS21hY3JvIE1lbnUpfQorQ2hhbmdlIHRo ZSBwb3NpdGlvbiBvZiB0aGUgbWFjcm8gb24gdGhlIGN1cnJlbnQgbGluZQorKEBweHJlZntLZXli b2FyZCBNYWNybyBSaW5nfSkuCisKK0BpdGVtIEMteCBDLXQKK0BmaW5kZXgga21hY3JvLW1lbnUt dHJhbnNwb3NlCitAa2luZGV4IEMteCBDLXQgQHJ7KEttYWNybyBNZW51KX0KK01vdmUgdGhlIG1h Y3JvIG9uIHRoZSBjdXJyZW50IGxpbmUgdG8gdGhlIGxpbmUgYWJvdmUsIGxpa2UgaW4KK0Bjb2Rl e3RyYW5zcG9zZS1saW5lc30uCisKK0BpdGVtIGMKK0BmaW5kZXgga21hY3JvLW1lbnUtZWRpdC1j b3VudGVyCitAa2luZGV4IGMgQHJ7KEttYWNybyBNZW51KX0KK0NoYW5nZSB0aGUgY291bnRlciB2 YWx1ZSBvZiB0aGUgbWFjcm8gb24gdGhlIGN1cnJlbnQgbGluZQorKEBweHJlZntLZXlib2FyZCBN YWNybyBDb3VudGVyfSkuCisKK0BpdGVtIGYKK0BmaW5kZXgga21hY3JvLW1lbnUtZWRpdC1mb3Jt YXQKK0BraW5kZXggZiBAcnsoS21hY3JvIE1lbnUpfQorQ2hhbmdlIHRoZSBjb3VudGVyIGZvcm1h dCBvZiB0aGUgbWFjcm8gb24gdGhlIGN1cnJlbnQgbGluZS4KKworQGl0ZW0gZQorQGZpbmRleCBr bWFjcm8tbWVudS1lZGl0LWtleXMKK0BraW5kZXggZSBAcnsoS21hY3JvIE1lbnUpfQorQ2hhbmdl IHRoZSBrZXlzIG9mIHRoZSBtYWNybyBvbiB0aGUgY3VycmVudCBsaW5lIHVzaW5nCitAY29kZXtl ZGl0LWtiZC1tYWNyb30gKEBweHJlZntFZGl0IEtleWJvYXJkIE1hY3JvfSkuCisKK0BpdGVtIEBr ZXl7UkVUfQorQGZpbmRleCBrbWFjcm8tbWVudS1lZGl0LWNvbHVtbgorQGtpbmRleCBAa2V5e1JF VH0gQHJ7KEttYWNybyBNZW51KX0KK0NoYW5nZSB0aGUgdmFsdWUgaW4gdGhlIGN1cnJlbnQgY29s dW1uIG9mIHRoZSBtYWNybyBvbiB0aGUgY3VycmVudCBsaW5lCit1c2luZyBjb21tYW5kcyBhYm92 ZS4KK0BlbmQgdGFibGUKKworICBUaGUgZm9sbG93aW5nIGNvbW1hbmRzIGRlbGV0ZSBvciBkdXBs aWNhdGUgbWFjcm9zIGluIHRoZSBsaXN0OgorCitAdGFibGUgQGtiZAorQGl0ZW0gZAorQGZpbmRl eCBrbWFjcm8tbWVudS1mbGFnLWZvci1kZWxldGlvbgorQGl0ZW0gZCBAcnsoS21hY3JvIE1lbnUp fQorRmxhZyB0aGUgbWFjcm8gb24gdGhlIGN1cnJlbnQgbGluZSBmb3IgZGVsZXRpb24sIHRoZW4g bW92ZSBwb2ludCB0byB0aGUKK25leHQgbGluZSAoQGNvZGV7a21hY3JvLW1lbnUtZmxhZy1mb3It ZGVsZXRpb259KS4gIFRoZSBkZWxldGlvbiBmbGFnIGlzCitpbmRpY2F0ZWQgYnkgdGhlIGNoYXJh Y3RlciBAc2FtcHtEfSBhdCB0aGUgc3RhcnQgb2YgbGluZS4gIFRoZSBkZWxldGlvbgorb2NjdXJz IG9ubHkgd2hlbiB5b3UgdHlwZSB0aGUgQGtiZHt4fSBjb21tYW5kIChzZWUgYmVsb3cpLgorCisg IElmIHRoZSByZWdpb24gaXMgYWN0aXZlLCB0aGlzIGNvbW1hbmQgZmxhZ3MgYWxsIG9mIHRoZSBt YWNyb3MgaW4gdGhlCityZWdpb24uCisKK0BpdGVtIHgKK0BmaW5kZXgga21hY3JvLW1lbnUtZG8t ZmxhZ2dlZC1kZWxldGUKK0BpdGVtIHggQHJ7KEttYWNybyBNZW51KX0KK0RlbGV0ZSB0aGUgbWFj cm9zIGluIHRoZSBsaXN0IHRoYXQgaGF2ZSBiZWVuIGZsYWdnZWQgZm9yIGRlbGV0aW9uCisoQGNv ZGV7a21hY3JvLW1lbnUtZG8tZmxhZ2dlZC1kZWxldGV9KS4KKworQGl0ZW0gbQorQGZpbmRleCBr bWFjcm8tbWVudS1tYXJrCitAaXRlbSBtIEByeyhLbWFjcm8gTWVudSl9CitNYXJrIHRoZSBtYWNy byBvbiB0aGUgY3VycmVudCBsaW5lLCB0aGVuIG1vdmUgcG9pbnQgdG8gdGhlIG5leHQgbGluZQor KEBjb2Rle2ttYWNyby1tZW51LW1hcmt9KS4gIE1hcmtlZCBtYWNyb3MgYXJlIGluZGljYXRlZCBi eSB0aGUgY2hhcmFjdGVyCitAc2FtcHsqfSBhdCB0aGUgc3RhcnQgb2YgbGluZS4gIE1hcmtlZCBt YWNyb3MgY2FuIGJlIG9wZXJhdGVkIG9uIGJ5IHRoZQorQGtiZHtDfSBhbmQgQGtiZHtEfSBjb21t YW5kcyAoc2VlIGJlbG93KS4KKworICBJZiB0aGUgcmVnaW9uIGlzIGFjdGl2ZSwgdGhpcyBjb21t YW5kIG1hcmtzIGFsbCBvZiB0aGUgbWFjcm9zIGluIHRoZQorcmVnaW9uLgorCitAaXRlbSBDCitA ZmluZGV4IGttYWNyby1tZW51LWRvLWNvcHkKK0BpdGVtIEMgQHJ7KEttYWNybyBNZW51KX0KK1Ro aXMgY29tbWFuZCBjb3BpZXMgbWFjcm9zIGJ5IGR1cGxpY2F0aW5nIHRoZW0gYXQgdGhlaXIgY3Vy cmVudAorcG9zaXRpb25zIGluIHRoZSBsaXN0IChAY29kZXtrbWFjcm8tbWVudS1kby1jb3B5fSku ICBGb3IgZXhhbXBsZSwKK3J1bm5pbmcgdGhpcyBjb21tYW5kIG9uIHRoZSBtYWNybyBhdCBwb3Np dGlvbiBudW1iZXIgemVybyB3aWxsIGluc2VydCBhCitjb3B5IG9mIHRoYXQgbWFjcm8gaW50byBw b3NpdGlvbiBudW1iZXIgb25lIGFuZCBtb3ZlIHRoZSByZW1haW5pbmcKK21hY3JvcyBkb3duLgor CisgIElmIHRoZSByZWdpb24gaXMgYWN0aXZlLCB0aGlzIGNvbW1hbmQgZHVwbGljYXRlcyB0aGUg bWFjcm9zIGluIHRoZQorcmVnaW9uLiAgT3RoZXJ3aXNlLCBpZiB0aGVyZSBhcmUgbWFya2VkIG1h Y3JvcywgdGhpcyBjb21tYW5kIGR1cGxpY2F0ZXMKK3RoZSBtYXJrZWQgbWFjcm9zLiAgSWYgdGhl cmUgaXMgbm8gcmVnaW9uIG5vciBhcmUgdGhlcmUgbWFya2VkIG1hY3JvcywKK3RoaXMgY29tbWFu ZCBkdXBsaWNhdGVzIHRoZSBtYWNybyBvbiB0aGUgY3VycmVudCBsaW5lLiAgSW4gdGhlIGZpcnN0 IHR3bworY2FzZXMsIHRoZSBjb21tYW5kIHByb21wdHMgZm9yIGNvbmZpcm1hdGlvbiBiZWZvcmUg ZHVwbGljYXRpb24uCisKK0BpdGVtIEQKK0BmaW5kZXgga21hY3JvLW1lbnUtZG8tZGVsZXRlCitA aXRlbSBEIEByeyhLbWFjcm8gTWVudSl9CitUaGlzIGNvbW1hbmQgZGVsZXRlcyBtYWNyb3MsIHJl bW92aW5nIHRoZW0gZnJvbSB0aGUgcmluZworKEBjb2Rle2ttYWNyby1tZW51LWRvLWRlbGV0ZX0p LiAgRm9yIGV4YW1wbGUsIHJ1bm5pbmcgdGhpcyBjb21tYW5kIG9uCit0aGUgbWFjcm8gYXQgcG9z aXRpb24gbnVtYmVyIHplcm8gd2lsbCBkZWxldGUgdGhlIGN1cnJlbnQgbWFjcm8gYW5kIHRoZW4K K21ha2UgdGhlIGZpcnN0IG1hY3JvIGluIHRoZSBtYWNybyByaW5nIChwcmV2aW91c2x5IGF0IHBv c2l0aW9uIG51bWJlcgorb25lKSB0aGUgbmV3IGN1cnJlbnQgbWFjcm8sIHBvcHBpbmcgaXQgZnJv bSB0aGUgcmluZy4KKworICBJZiB0aGUgcmVnaW9uIGlzIGFjdGl2ZSwgdGhpcyBjb21tYW5kIGRl bGV0ZXMgdGhlIG1hY3JvcyBpbiB0aGUKK3JlZ2lvbi4gIE90aGVyd2lzZSwgaWYgdGhlcmUgYXJl IG1hcmtlZCBtYWNyb3MsIHRoaXMgY29tbWFuZCBkZWxldGVzIHRoZQorbWFya2VkIG1hY3Jvcy4g IElmIHRoZXJlIGlzIG5vIHJlZ2lvbiBub3IgYXJlIHRoZXJlIG1hcmtlZCBtYWNyb3MsIHRoaXMK K2NvbW1hbmQgZGVsZXRlcyB0aGUgbWFjcm8gb24gdGhlIGN1cnJlbnQgbGluZS4gIEluIGFsbCBj YXNlcywgdGhlCitjb21tYW5kIHByb21wdHMgZm9yIGNvbmZpcm1hdGlvbiBiZWZvcmUgZGVsZXRp b24uCisKKyAgVGhpcyBjb21tYW5kIGlzIGFuIGFsdGVybmF0aXZlIHRvIHRoZSBAa2Jke2R9IGFu ZCBAa2Jke3h9IGNvbW1hbmRzCisoc2VlIGFib3ZlKS4KKworQGl0ZW0gdQorQGZpbmRleCBrbWFj cm8tbWVudS11bm1hcmsKK0BpdGVtIHUgQHJ7KEttYWNybyBNZW51KX0KK1VubWFyayBhbmQgdW5m bGFnIHRoZSBtYWNybyBvbiB0aGUgY3VycmVudCBsaW5lLCB0aGVuIG1vdmUgcG9pbnQgZG93bgor dG8gdGhlIG5leHQgbGluZSAoQGNvZGV7a21hY3JvLW1lbnUtdW5tYXJrfSkuICBJZiB0aGVyZSBp cyBhbiBhY3RpdmUKK3JlZ2lvbiwgdGhpcyBjb21tYW5kIHVubWFya3MgYW5kIHVuZmxhZ3MgYWxs IG9mIHRoZSBtYWNyb3MgaW4gdGhlCityZWdpb24uCisKK0BpdGVtIEBrZXl7REVMfQorQGZpbmRl eCBrbWFjcm8tbWVudS11bm1hcmstYmFja3dhcmQKK0BpdGVtIEBrZXl7REVMfSBAcnsoS21hY3Jv IE1lbnUpfQorTGlrZSB0aGUgQGtiZHt1fSBjb21tYW5kIChzZWUgYWJvdmUpLCBidXQgbW92ZSBw b2ludCB1cCB0byB0aGUgcHJldmlvdXMKK2xpbmUgd2hlbiB0aGVyZSBpcyBubyBhY3RpdmUgcmVn aW9uCisoQGNvZGV7a21hY3JvLW1lbnUtdW5tYXJrLWJhY2t3YXJkfSkuCisKK0BpdGVtIFUKK0Bm aW5kZXgga21hY3JvLW1lbnUtdW5tYXJrLWFsbAorQGl0ZW0gVSBAcnsoS21hY3JvIE1lbnUpfQor VW5tYXJrIGFuZCB1bmZsYWcgYWxsIG1hY3JvcyBpbiB0aGUgbGlzdAorKEBjb2Rle2ttYWNyby1t ZW51LXVubWFyay1hbGx9KS4KK0BlbmQgdGFibGUKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRj L05FV1MKaW5kZXggZWRhODRkNTg4YTguLjA5NjhmN2NiN2JlIDEwMDY0NAotLS0gYS9ldGMvTkVX UworKysgYi9ldGMvTkVXUwpAQCAtMTM4OCw2ICsxMzg4LDE3IEBAIFdoZW4gdGhpcyBpcyBub24t bmlsLCB0aGUgbGluZXMgb2Yga2V5IHNlcXVlbmNlcyBhcmUgZGlzcGxheWVkIHdpdGgKIHRoZSBt b3N0IHJlY2VudCBsaW5lIGZpcnN0LiAgVGhpcyBpcyBjYW4gYmUgdXNlZnVsIHdoZW4gd29ya2lu ZyB3aXRoCiBtYWNyb3Mgd2l0aCBtYW55IGxpbmVzLCBzdWNoIGFzIGZyb20gJ2ttYWNyby1lZGl0 LWxvc3NhZ2UnLgogCisqKiBLbWFjcm8gTWVudSBNb2RlCisKKysrKworKioqIE5ldyBtb2RlICdr bWFjcm8tbWVudS1tb2RlJyBhbmQgbmV3IGNvbW1hbmQgJ2xpc3Qta2V5Ym9hcmQtbWFjcm9zJy4K K1RoZSBuZXcgY29tbWFuZCAnbGlzdC1rZXlib2FyZC1tYWNyb3MnIHRoZSBpcyB0aGUga2V5Ym9h cmQtbWFjcm8gdmVyc2lvbgorb2YgY29tbWFuZHMgbGlrZSAnbGlzdC1idWZmZXJzJyBhbmQgJ2xp c3QtcHJvY2Vzc2VzJywgY3JlYXRpbmcgYSBsaXN0aW5nCitvZiB0aGUgY3VycmVudGx5IGV4aXN0 aW5nIGtleWJvYXJkcyBtYWNyb3MgdXNpbmcgdGhlIG5ldworJ2ttYWNyby1tZW51LW1vZGUnLiAg SXQgYWxsb3dzIHJlYXJyYW5naW5nIHRoZSBtYWNyb3MgaW4gdGhlIHJpbmcsCitkdXBsaWNhdGlu ZyB0aGVtLCBkZWxldGluZyB0aGVtLCBhbmQgZWRpdGluZyB0aGVpciBjb3VudGVycywgZm9ybWF0 cywKK2FuZCBrZXlzLgorCiAqKiBNaXNjZWxsYW5lb3VzCiAKIC0tLQpkaWZmIC0tZ2l0IGEvbGlz cC9rbWFjcm8uZWwgYi9saXNwL2ttYWNyby5lbAppbmRleCA4OTdlYmYxNDMzMC4uYTE2ZjcwMTA1 YzEgMTAwNjQ0Ci0tLSBhL2xpc3Ava21hY3JvLmVsCisrKyBiL2xpc3Ava21hY3JvLmVsCkBAIC0x Mzg4LDYgKzEzODgsNTY0IEBAIGttYWNyby1yZWRpc3BsYXkKICAgICAobGV0ICgoZXhlY3V0aW5n LWtiZC1tYWNybyBuaWwpKQogICAgICAgKHJlZGlzcGxheSkpKSkKIAorOzs7IE1vZGUgYW5kIGNv bW1hbmRzIGZvciB3b3JraW5nIHdpdGggdGhlIHJpbmcgaW4gYSB0YWJsZQorCisoZGVmZmFjZSBr bWFjcm8tbWVudS1tYXJrICcoKHQgKDppbmhlcml0IGZvbnQtbG9jay1jb25zdGFudC1mYWNlKSkp CisgICJGYWNlIHVzZWQgZm9yIHRoZSBLZXlib2FyZCBNYWNybyBNZW51IG1hcmtzLiIKKyAgOmdy b3VwICdrbWFjcm8KKyAgOnZlcnNpb24gIjMwLjEiKQorCisoZGVmZmFjZSBrbWFjcm8tbWVudS1m bGFnZ2VkICcoKHQgKDppbmhlcml0IGVycm9yKSkpCisgICJGYWNlIHVzZWQgZm9yIGtleWJvYXJk IG1hY3JvcyBmbGFnZ2VkIGZvciBkZWxldGlvbi4iCisgIDpncm91cCAna21hY3JvCisgIDp2ZXJz aW9uICIzMC4xIikKKworKGRlZmZhY2Uga21hY3JvLW1lbnUtbWFya2VkICcoKHQgKDppbmhlcml0 IHdhcm5pbmcpKSkKKyAgIkZhY2UgdXNlZCBmb3Iga2V5Ym9hcmQgbWFjcm9zIG1hcmtlZCBmb3Ig ZHVwbGljYXRpb24uIgorICA6Z3JvdXAgJ2ttYWNybworICA6dmVyc2lvbiAiMzAuMSIpCisKKyhk ZWZ2YXIta2V5bWFwIGttYWNyby1tZW51LW1vZGUtbWFwCisgIDpkb2MgIktleW1hcCBmb3IgYGtt YWNyby1tZW51LW1vZGUnLiIKKyAgOnBhcmVudCB0YWJ1bGF0ZWQtbGlzdC1tb2RlLW1hcAorICAi IyIgIydrbWFjcm8tbWVudS1lZGl0LXBvc2l0aW9uCisgICJjIiAjJ2ttYWNyby1tZW51LWVkaXQt Y291bnRlcgorICAiZSIgIydrbWFjcm8tbWVudS1lZGl0LWtleXMKKyAgImYiICMna21hY3JvLW1l bnUtZWRpdC1mb3JtYXQKKyAgIlJFVCIgIydrbWFjcm8tbWVudS1lZGl0LWNvbHVtbgorCisgICJD IiAjJ2ttYWNyby1tZW51LWRvLWNvcHkKKyAgIkQiICMna21hY3JvLW1lbnUtZG8tZGVsZXRlCisg ICJtIiAjJ2ttYWNyby1tZW51LW1hcmsKKworICAiZCIgIydrbWFjcm8tbWVudS1mbGFnLWZvci1k ZWxldGlvbgorICAieCIgIydrbWFjcm8tbWVudS1kby1mbGFnZ2VkLWRlbGV0ZQorCisgICJ1IiAj J2ttYWNyby1tZW51LXVubWFyaworICAiVSIgIydrbWFjcm8tbWVudS11bm1hcmstYWxsCisgICJE RUwiIydrbWFjcm8tbWVudS11bm1hcmstYmFja3dhcmQKKworICAiPHJlbWFwPiA8dHJhbnNwb3Nl LWxpbmVzPiIgIydrbWFjcm8tbWVudS10cmFuc3Bvc2UpCisKKyhkZWZpbmUtZGVyaXZlZC1tb2Rl IGttYWNyby1tZW51LW1vZGUgdGFidWxhdGVkLWxpc3QtbW9kZQorICAiS2V5Ym9hcmQgTWFjcm8g TWVudSIKKyAgIk1ham9yIG1vZGUgZm9yIGxpc3RpbmcgYW5kIGVkaXRpbmcga2V5Ym9hcmQgbWFj cm9zLiIKKyAgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ2ttYWNyby1tZW51LS1tYXJrcykKKyAgKG1h a2UtbG9jYWwtdmFyaWFibGUgJ2ttYWNyby1tZW51LS1kZWxldGlvbi1mbGFncykKKyAgKHNldHEt bG9jYWwgdGFidWxhdGVkLWxpc3QtZm9ybWF0CisgICAgICAgICAgICAgIFsoIlBvc2l0aW9uIiA4 IG5pbCkKKyAgICAgICAgICAgICAgICgiQ291bnRlciIgIDggbmlsIDpyaWdodC1hbGlnbiB0IDpw YWQtcmlnaHQgMikKKyAgICAgICAgICAgICAgICgiRm9ybWF0IiAgOCBuaWwpCisgICAgICAgICAg ICAgICAoIkZvcm1hdHRlZCIgMTAgbmlsKQorICAgICAgICAgICAgICAgKCJLZXlzIiAxIG5pbCld KQorICAoc2V0cS1sb2NhbCB0YWJ1bGF0ZWQtbGlzdC1wYWRkaW5nIDIpCisgIChhZGQtaG9vayAn dGFidWxhdGVkLWxpc3QtcmV2ZXJ0LWhvb2sgIydrbWFjcm8tbWVudS0tcmVmcmVzaCBuaWwgdCkK KyAgKHRhYnVsYXRlZC1saXN0LWluaXQtaGVhZGVyKQorICAodW5sZXNzIChrbWFjcm8tcmluZy1l bXB0eS1wKQorICAgIChrbWFjcm8tbWVudS0tcmVmcmVzaCkKKyAgICAodGFidWxhdGVkLWxpc3Qt cHJpbnQpKSkKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZhbGlhcyAna21hY3JvLW1lbnUgIydsaXN0 LWtleWJvYXJkLW1hY3JvcykKKzs7OyMjI2F1dG9sb2FkCisoZGVmdW4gbGlzdC1rZXlib2FyZC1t YWNyb3MgKCkKKyAgIkxpc3QgdGhlIGtleWJvYXJkIG1hY3Jvcy4iCisgIChpbnRlcmFjdGl2ZSkK KyAgKGxldCAoKGJ1ZiAoZ2V0LWJ1ZmZlci1jcmVhdGUgIipLZXlib2FyZCBNYWNybyBMaXN0KiIp KSkKKyAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWYKKyAgICAgIChrbWFjcm8tbWVudS1tb2Rl KSkKKyAgICAocG9wLXRvLWJ1ZmZlciBidWYpKSkKKworOzs7OyBVdGlsaXR5IGZ1bmN0aW9ucyBh bmQgbW9kZSBkYXRhCisKKyhkZWZ2YXIga21hY3JvLW1lbnUtLWRlbGV0aW9uLWZsYWdzIG5pbAor ICAiQWxpc3Qgb2YgZW50cmllcyBmbGFnZ2VkIGZvciBkZWxldGlvbi4iKQorCisoZGVmdmFyIGtt YWNyby1tZW51LS1tYXJrcyBuaWwKKyAgIkFsaXN0IG9mIGVudHJpZXMgbWFya2VkIGZvciBjb3B5 aW5nIGFuZCBkdXBsaWNhdGlvbi4iKQorCisoZGVmdW4ga21hY3JvLW1lbnUtLWlkLWttYWNybyAo ZW50cnktaWQpCisgICJSZXR1cm4gdGhlIGtleWJvYXJkIG1hY3JvIHRoYXQgaXMgcGFydCBvZiB0 aGUgRU5UUlktSUQuIgorICAoY2FyIGVudHJ5LWlkKSkKKworKGRlZnVuIGttYWNyby1tZW51LS1p ZC1wb3NpdGlvbiAoZW50cnktaWQpCisgICJSZXR1cm4gdGhlIG9yZGluYWwgcG9zaXRpb24gdGhh dCBpcyBwYXJ0IG9mIHRoZSBFTlRSWS1JRC4iCisgIChjZHIgZW50cnktaWQpKQorCisoZGVmdW4g a21hY3JvLW1lbnUtLWttYWNyb3MgKCkKKyAgIlJldHVybiB0aGUgbGlzdCBvZiB0aGUgZXhpc3Rp bmcga2V5Ym9hcmQgbWFjcm9zIG9yIG5pbCwgaWYgbm9uZSBhcmUgZGVmaW5lZC4iCisgICh3aGVu IGxhc3Qta2JkLW1hY3JvCisgICAgKGNvbnMgKGttYWNyby1yaW5nLWhlYWQpCisgICAgICAgICAg a21hY3JvLXJpbmcpKSkKKworKGRlZnVuIGttYWNyby1tZW51LS1yZWZyZXNoICgpCisgICJSZXNl dCB0aGUgbGlzdCBvZiBrZXlib2FyZCBtYWNyb3MuIgorICAoc2V0cS1sb2NhbCB0YWJ1bGF0ZWQt bGlzdC1lbnRyaWVzCisgICAgICAgICAgICAgIChzZXEtbWFwLWluZGV4ZWQgKGxhbWJkYSAoa20g aWR4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKGNudCAoa21hY3Jv LS1jb3VudGVyIGttKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChm bXQgKGttYWNyby0tZm9ybWF0IGttKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGAoKCxrbSAuICxpZHgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg WywoZm9ybWF0ICIlZCIgaWR4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAsKGZvcm1hdCAiJWQiIGNudCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLGZtdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsKGZvcm1hdCBm bXQgY250KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsKGZvcm1hdC1r YmQtbWFjcm8gKGttYWNyby0ta2V5cyBrbSkpXSkpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChrbWFjcm8tbWVudS0ta21hY3JvcykpCisgICAgICAgICAgICAgIGttYWNyby1tZW51 LS1kZWxldGlvbi1mbGFncyBuaWwKKyAgICAgICAgICAgICAga21hY3JvLW1lbnUtLW1hcmtzIG5p bCkKKyAgKHRhYnVsYXRlZC1saXN0LWNsZWFyLWFsbC10YWdzKSkKKworKGRlZnVuIGttYWNyby1t ZW51LS1tYXAtaWRzIChmdW5jdGlvbikKKyAgIkFwcGx5IEZVTkNUSU9OIHRvIHRoZSBjdXJyZW50 IHRhYmxlJ3MgZW50cnkgSURzIGluIG9yZGVyLgorCitSZXR1cm4gYSBsaXN0IG9mIHRoZSBvdXRw dXQgb2YgRlVOQ1RJT04uIgorICAobWFwY2FyIGZ1bmN0aW9uCisgICAgICAgICAgKG1hcGNhciAj J2NhcgorICAgICAgICAgICAgICAgICAgKHNlcS1zb3J0LWJ5ICMnY2RhciAjJzwgdGFidWxhdGVk LWxpc3QtZW50cmllcykpKSkKKworKGRlZnVuIGttYWNyby1tZW51LS1yZXBsYWNlLWFsbCAoa21h Y3JvcykKKyAgIlJlcGxhY2UgdGhlIGV4aXN0aW5nIGtleWJvYXJkIG1hY3JvcyB3aXRoIHRob3Nl IGluIEtNQUNST1MuCisKK1RoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBsaXN0IG92ZXJ3cml0ZXMg dGhlIHZhbHVlcyBvZiBgbGFzdC1rYmQtbWFjcm8nLAorYGttYWNyby1jb3VudGVyJywgYW5kIGBr bWFjcm8tY291bnRlci1mb3JtYXQnLiAgVGhlIHJlbWFpbmluZyBlbGVtZW50cworYmVjb21lIHRo ZSB2YWx1ZSBvZiBga21hY3JvLXJpbmcnLgorCitLTUFDUk9TIGlzIGEgbGlzdCBvZiBga21hY3Jv JyBvYmplY3RzLiIKKyAgKGlmIChudWxsIGttYWNyb3MpCisgICAgICAoc2V0cSBsYXN0LWtiZC1t YWNybyBuaWwKKyAgICAgICAgICAgIGttYWNyby1jb3VudGVyLWZvcm1hdCBrbWFjcm8tZGVmYXVs dC1jb3VudGVyLWZvcm1hdAorICAgICAgICAgICAga21hY3JvLWNvdW50ZXIgMAorICAgICAgICAg ICAga21hY3JvLXJpbmcgbmlsKQorICAgIChpZiAobm90IChzZXEtZXZlcnktcCAjJ2ttYWNyby1w IGttYWNyb3MpKQorICAgICAgICAoZXJyb3IgIkFsbCBlbGVtZW50cyBtdXN0IHNhdGlzZnkgYGtt YWNyby1wJyIpCisgICAgICAoa21hY3JvLXNwbGl0LXJpbmctZWxlbWVudCAoY2FyIGttYWNyb3Mp KQorICAgICAgKHNldHEga21hY3JvLXJpbmcgKGNkciBrbWFjcm9zKSkpKSkKKworKGRlZnVuIGtt YWNyby1tZW51LS1yZXBsYWNlLWF0IChrbWFjcm8gbikKKyAgIlJlcGxhY2UgdGhlIGtleWJvYXJk IG1hY3JvIGF0IHBvc2l0aW9uIE4gd2l0aCBLTUFDUk8uCisKK1RoaXMgZnVuY3Rpb24gcmVwbGFj ZXMgYWxsIG9mIHRoZSBleGlzdGluZyBrZXlib2FyZCBtYWNyb3MgdmlhCitga21hY3JvLW1lbnUt LXJlcGxhY2UtYWxsJy4gIEV4Y2VwdCBmb3IgdGhlIG1hY3JvIGF0IHBvc2l0aW9uIE4sIHdoaWNo IHdpbGwKK2JlIEtNQUNSTywgdGhlIHJlcGxhY2VtZW50IG1hY3JvcyBhcmUgdGhlIGV4aXN0aW5n IG1hY3JvcyBpZGVudGlmaWVkIGluCit0aGUgdGFibGUuIgorICAoa21hY3JvLW1lbnUtLXJlcGxh Y2UtYWxsCisgICAoa21hY3JvLW1lbnUtLW1hcC1pZHMgKGxhbWJkYSAoaWQpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAoaWYgKD0gbiAoa21hY3JvLW1lbnUtLWlkLXBvc2l0aW9uIGlkKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrbWFjcm8KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGttYWNyby1tZW51LS1pZC1rbWFjcm8gaWQpKSkpKSkKKworKGRlZnVuIGtt YWNyby1tZW51LS1xdWVyeS1yZXZlcnQgKCkKKyAgIklmIHRoZSB0YWJsZSBkaWZmZXJzIGZyb20g dGhlIGV4aXN0aW5nIG1hY3JvcywgYXNrIHdoZXRoZXIgdG8gcmV2ZXJ0IHRhYmxlLiIKKyAgKHdo ZW4gKGFuZCAobm90IChlcXVhbCAoa21hY3JvLW1lbnUtLWttYWNyb3MpCisgICAgICAgICAgICAg ICAgICAgICAgICAgKGttYWNyby1tZW51LS1tYXAtaWRzICMna21hY3JvLW1lbnUtLWlkLWttYWNy bykpKQorICAgICAgICAgICAgICh5ZXMtb3Itbm8tcCAiVGFibGUgZG9lcyBub3QgbWF0Y2ggZXhp c3Rpbmcga2V5Ym9hcmQgbWFjcm9zLiAgU3RvcCBhbmQgcmV2ZXJ0IHRhYmxlPyIpKQorICAgICh0 YWJ1bGF0ZWQtbGlzdC1yZXZlcnQpCisgICAgKHNpZ25hbCAncXVpdCBuaWwpKSkKKworKGRlZnVu IGttYWNyby1tZW51LS1hc3NlcnQtcm93ICgmb3B0aW9uYWwgaWQpCisgICJTaWduYWwgYW4gZXJy b3IgaWYgcG9pbnQgaXMgbm90IG9uIGEgdGFibGUgcm93LgorCitJRCBpcyB0aGUgdGFidWxhdGVk IGxpc3QgaWQgb2YgdGhlIHN1cHBvc2VkIGVudHJ5IGF0IHBvaW50LiIKKyAgKHVubGVzcyAob3Ig aWQgKHRhYnVsYXRlZC1saXN0LWdldC1pZCkpCisgICAgKHVzZXItZXJyb3IgIk5vdCBvbiBhIHRh YmxlIHJvdyIpKSkKKworKGRlZnVuIGttYWNyby1tZW51LS1wcm9wZXJ0aXplLWtleXMgKGZhY2Up CisgICJSZWRpc3BsYXkgdGhlIG1hY3JvIGtleXMgb24gdGhlIGN1cnJlbnQgbGluZSB3aXRoIEZB Q0UuIgorICAodGFidWxhdGVkLWxpc3Qtc2V0LWNvbCA0IChwcm9wZXJ0aXplIChhcmVmICh0YWJ1 bGF0ZWQtbGlzdC1nZXQtZW50cnkpIDQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2ZhY2UgZmFjZSkpKQorCisoZGVmdW4ga21hY3JvLW1lbnUtLWRvLXJlZ2lvbiAo ZnVuY3Rpb24pCisgICJSdW4gRlVOQ1RJT04gb24gbWFjcm9zIGluIHRoZSByZWdpb24gb3Igb24g dGhlIGN1cnJlbnQgbGluZSBhdCB0aGUgbGluZSBzdGFydC4KKworSWYgdGhlcmUgaXMgYW4gYWN0 aXZlIHJlZ2lvbiwgZm9yIGVhY2ggbGluZSBpbiB0aGUgcmVnaW9uLCBtb3ZlIHRvIHRoZQorYmVn aW5uaW5nIG9mIHRoZSBsaW5lIGFuZCBhcHBseSBGVU5DVElPTiB0byB0aGUgdGFibGUgZW50cnkg SUQgb2YgdGhlCitsaW5lLiAgSWYgdGhlcmUgaXMgbm8gcmVnaW9uLCBhcHBseSBGVU5DVElPTiBv bmx5IHRvIHRoZSB0YWJsZSBlbnRyeSBJRAorb2YgdGhlIGN1cnJlbnQgbGluZS4KKworV2hlbiB0 aGVyZSBpcyBubyBhY3RpdmUgcmVnaW9uLCBhZHZhbmNlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhl IG5leHQKK2xpbmUgYWZ0ZXIgYXBwbHlpbmcgRlVOQ1RJT04uIgorICAoaWYgKHVzZS1yZWdpb24t cCkKKyAgICAgIChzYXZlLWV4Y3Vyc2lvbgorICAgICAgICAobGV0KiAoKHJlZy1iZWcgKHJlZ2lv bi1iZWdpbm5pbmcpKQorICAgICAgICAgICAgICAgKHJlZy1lbmQgKHJlZ2lvbi1lbmQpKQorICAg ICAgICAgICAgICAgKGxpbmUtYmVnIChwcm9nbgorICAgICAgICAgICAgICAgICAgICAgICAgICAg KGdvdG8tY2hhciByZWctYmVnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvcy1ib2wp KSkKKyAgICAgICAgICAgICAgIChsaW5lLWVuZCAocHJvZ24KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIChnb3RvLWNoYXIgcmVnLWVuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChp ZiAoYm9scCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWctZW5kCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChwb3MtYm9sIDIpKSkpKQorICAgICAgICAgIChnb3RvLWNo YXIgbGluZS1iZWcpCisgICAgICAgICAgKGxldCAoKGlkKSkKKyAgICAgICAgICAgICh3aGlsZSAo YW5kICg8IChwb2ludCkgbGluZS1lbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBp ZCAodGFidWxhdGVkLWxpc3QtZ2V0LWlkKSkpCisgICAgICAgICAgICAgIChrbWFjcm8tbWVudS0t YXNzZXJ0LXJvdyBpZCkKKyAgICAgICAgICAgICAgKGZ1bmNhbGwgZnVuY3Rpb24gaWQpCisgICAg ICAgICAgICAgIChmb3J3YXJkLWxpbmUgMSkpKSkpCisgICAgKGxldCAoKGlkICh0YWJ1bGF0ZWQt bGlzdC1nZXQtaWQpKSkKKyAgICAgIChrbWFjcm8tbWVudS0tYXNzZXJ0LXJvdyBpZCkKKyAgICAg IChnb3RvLWNoYXIgKHBvcy1ib2wpKQorICAgICAgKGZ1bmNhbGwgZnVuY3Rpb24gaWQpCisgICAg ICAoZm9yd2FyZC1saW5lIDEpKSkpCisKKyhkZWZ1biBrbWFjcm8tbWVudS0tbWFya3MtZXhpc3Qt cCAoKQorICAiUmV0dXJuIG5vbi1uaWwgaWYgbWFya2VycyBleGlzdCBmb3IgYW55IHRhYmxlIGVu dHJpZXMuIgorICAobGV0ICgodGFnIChnZW5zeW0pKSkKKyAgICAoY2F0Y2ggdGFnCisgICAgICAo a21hY3JvLW1lbnUtLW1hcC1pZHMgKGxhbWJkYSAoaWQpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAod2hlbiAoYWxpc3QtZ2V0IChrbWFjcm8tbWVudS0taWQtcG9zaXRpb24gaWQpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGttYWNyby1tZW51 LS1tYXJrcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRocm93IHRhZyB0KSkp KQorICAgICAgbmlsKSkpCisKKzs7OzsgQ29tbWFuZHMgZm9yIE1hcmtzIGFuZCBGbGFncworCiso ZGVmdW4ga21hY3JvLW1lbnUtbWFyayAoKQorICAiTWFyayBtYWNyb3MgaW4gdGhlIHJlZ2lvbiBv ciBvbiB0aGUgY3VycmVudCBsaW5lLgorCitJZiB0aGVyZSdzIGFuIGFjdGl2ZSByZWdpb24sIG1h cmsgbWFjcm9zIGluIHRoZSByZWdpb247IG90aGVyd2lzZSBtYXJrCit0aGUgbWFjcm8gb24gdGhl IGN1cnJlbnQgbGluZS4gIElmIG1hcmtpbmcgdGhlIGN1cnJlbnQgbGluZSwgbW92ZSBwb2ludAor dG8gdGhlIG5leHQgbGluZSB3aGVuIGRvbmUuCisKK01hcmtlZCBtYWNyb3MgY2FuIGJlIG9wZXJh dGVkIG9uIGJ5IGBrbWFjcm8tbWVudS1kby1jb3B5JyBhbmQKK2BrbWFjcm8tbWVudS1kby1kZWxl dGUnLiIKKyAgKGRlY2xhcmUgKG1vZGVzIGttYWNyby1tZW51LW1vZGUpKQorICAoaW50ZXJhY3Rp dmUgbmlsIGttYWNyby1tZW51LW1vZGUpCisgIChrbWFjcm8tbWVudS0tcXVlcnktcmV2ZXJ0KQor ICAoa21hY3JvLW1lbnUtLWRvLXJlZ2lvbgorICAgKGxhbWJkYSAoaWQpCisgICAgIChzZXRmIChh bGlzdC1nZXQgKGttYWNyby1tZW51LS1pZC1wb3NpdGlvbiBpZCkKKyAgICAgICAgICAgICAgICAg ICAgICBrbWFjcm8tbWVudS0tbWFya3MpCisgICAgICAgICAgIHQpCisgICAgIChrbWFjcm8tbWVu dS0tcHJvcGVydGl6ZS1rZXlzICdrbWFjcm8tbWVudS1tYXJrZWQpCisgICAgICh0YWJ1bGF0ZWQt bGlzdC1wdXQtdGFnICMoIioiIDAgMSAoZmFjZSBrbWFjcm8tbWVudS1tYXJrKSkpKSkpCisKKyhk ZWZ1biBrbWFjcm8tbWVudS1mbGFnLWZvci1kZWxldGlvbiAoKQorICAiRmxhZyBtYWNyb3MgaW4g dGhlIHJlZ2lvbiBvciBvbiB0aGUgY3VycmVudCBsaW5lLgorCitJZiB0aGVyZSdzIGFuIGFjdGl2 ZSByZWdpb24sIGZsYWcgbWFjcm9zIGluIHRoZSByZWdpb247IG90aGVyd2lzZSBmbGFnCit0aGUg bWFjcm8gb24gdGhlIGN1cnJlbnQgbGluZS4gIElmIHRoZXJlIGlzIG5vIGFjdGl2ZSByZWdpb24s IG1vdmUgcG9pbnQKK3RvIHRoZSBuZXh0IGxpbmUgd2hlbiBkb25lLgorCitGbGFnZ2VkIG1hY3Jv cyBjYW4gYmUgZGVsZXRlZCB2aWEgYGttYWNyby1tZW51LWRvLWZsYWdnZWQtZGVsZXRlJy4iCisg IChkZWNsYXJlIChtb2RlcyBrbWFjcm8tbWVudS1tb2RlKSkKKyAgKGludGVyYWN0aXZlIG5pbCBr bWFjcm8tbWVudS1tb2RlKQorICAoa21hY3JvLW1lbnUtLXF1ZXJ5LXJldmVydCkKKyAgKGttYWNy by1tZW51LS1kby1yZWdpb24KKyAgIChsYW1iZGEgKGlkKQorICAgICAoc2V0ZiAoYWxpc3QtZ2V0 IChrbWFjcm8tbWVudS0taWQtcG9zaXRpb24gaWQpCisgICAgICAgICAgICAgICAgICAgICAga21h Y3JvLW1lbnUtLWRlbGV0aW9uLWZsYWdzKQorICAgICAgICAgICB0KQorICAgICAoa21hY3JvLW1l bnUtLXByb3BlcnRpemUta2V5cyAna21hY3JvLW1lbnUtZmxhZ2dlZCkKKyAgICAgKHRhYnVsYXRl ZC1saXN0LXB1dC10YWcgIygiRCIgMCAxIChmYWNlIGttYWNyby1tZW51LW1hcmspKSkpKSkKKwor KGRlZnVuIGttYWNyby1tZW51LXVubWFyayAoKQorICAiVW5tYXJrIGFuZCB1bmZsYWcgbWFjcm9z IGluIHRoZSByZWdpb24gb3Igb24gdGhlIGN1cnJlbnQgbGluZS4KKworSWYgdGhlcmUncyBhbiBh Y3RpdmUgcmVnaW9uLCB1bm1hcmsgYW5kIHVuZmxhZyBtYWNyb3MgaW4gdGhlIHJlZ2lvbjsKK290 aGVyd2lzZSB1bm1hcmsgYW5kIHVuZmxhZyB0aGUgbWFjcm8gb24gdGhlIGN1cnJlbnQgbGluZS4g IElmIHRoZXJlIGlzCitubyBhY3RpdmUgcmVnaW9uLCBtb3ZlIHBvaW50IHRvIHRoZSBuZXh0IGxp bmUgd2hlbiBkb25lLiIKKyAgKGRlY2xhcmUgKG1vZGVzIGttYWNyby1tZW51LW1vZGUpKQorICAo aW50ZXJhY3RpdmUgbmlsIGttYWNyby1tZW51LW1vZGUpCisgIChrbWFjcm8tbWVudS0tcXVlcnkt cmV2ZXJ0KQorICAoa21hY3JvLW1lbnUtLWRvLXJlZ2lvbgorICAgKGxhbWJkYSAoaWQpCisgICAg IChsZXQgKChwb3MgKGttYWNyby1tZW51LS1pZC1wb3NpdGlvbiBpZCkpKQorICAgICAgIChzZXRm IChhbGlzdC1nZXQgcG9zIGttYWNyby1tZW51LS1kZWxldGlvbi1mbGFncykgbmlsCisgICAgICAg ICAgICAgKGFsaXN0LWdldCBwb3Mga21hY3JvLW1lbnUtLW1hcmtzKSBuaWwpKQorICAgICAoa21h Y3JvLW1lbnUtLXByb3BlcnRpemUta2V5cyAnZGVmYXVsdCkKKyAgICAgKHRhYnVsYXRlZC1saXN0 LXB1dC10YWcgIiAiKSkpKQorCisoZGVmdW4ga21hY3JvLW1lbnUtdW5tYXJrLWJhY2t3YXJkICgp CisgICJMaWtlIGBrbWFjcm8tbWVudS11bm1hcmsnLCBidXQgbW92ZSBiYWNrd2FyZHMgaW5zdGVh ZCBvZiBmb3J3YXJkcy4iCisgIChkZWNsYXJlIChtb2RlcyBrbWFjcm8tbWVudS1tb2RlKSkKKyAg KGludGVyYWN0aXZlIG5pbCBrbWFjcm8tbWVudS1tb2RlKQorICAoa21hY3JvLW1lbnUtLXF1ZXJ5 LXJldmVydCkKKyAgKGxldCAoKGdvLWJhY2sgKG5vdCAodXNlLXJlZ2lvbi1wKSkpKQorICAgIChr bWFjcm8tbWVudS11bm1hcmspCisgICAgKHdoZW4gZ28tYmFjaworICAgICAgKGZvcndhcmQtbGlu ZSAtMikpKSkKKworKGRlZnVuIGttYWNyby1tZW51LXVubWFyay1hbGwgKCkKKyAgIlVubWFyayBh bmQgdW5mbGFnIGFsbCBsaXN0ZWQga2V5Ym9hcmQgbWFjcm9zLiIKKyAgKGRlY2xhcmUgKG1vZGVz IGttYWNyby1tZW51LW1vZGUpKQorICAoaW50ZXJhY3RpdmUgbmlsIGttYWNyby1tZW51LW1vZGUp CisgIChrbWFjcm8tbWVudS0tcXVlcnktcmV2ZXJ0KQorICAoc2V0cS1sb2NhbCBrbWFjcm8tbWVu dS0tZGVsZXRpb24tZmxhZ3MgbmlsCisgICAgICAgICAgICAgIGttYWNyby1tZW51LS1tYXJrcyBu aWwpCisgIChzYXZlLWV4Y3Vyc2lvbgorICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAg KHdoaWxlICh0YWJ1bGF0ZWQtbGlzdC1nZXQtaWQpCisgICAgICAoa21hY3JvLW1lbnUtLXByb3Bl cnRpemUta2V5cyAnZGVmYXVsdCkKKyAgICAgIChmb3J3YXJkLWxpbmUgMSkpCisgICAgKHRhYnVs YXRlZC1saXN0LWNsZWFyLWFsbC10YWdzKSkpCisKKzs7OzsgQ29tbWFuZHMgdGhhdCBNb2RpZnkg dGhlIFJpbmcKKworKGRlZnVuIGttYWNyby1tZW51LWRvLWZsYWdnZWQtZGVsZXRlICgpCisgICJE ZWxldGUga2V5Ym9hcmQgbWFjcm9zIGZsYWdnZWQgdmlhIGBrbWFjcm8tbWVudS1mbGFnLWZvci1k ZWxldGlvbicuIgorICAoZGVjbGFyZSAobW9kZXMga21hY3JvLW1lbnUtbW9kZSkpCisgIChpbnRl cmFjdGl2ZSBuaWwga21hY3JvLW1lbnUtbW9kZSkKKyAgKGttYWNyby1tZW51LS1xdWVyeS1yZXZl cnQpCisgIChsZXQgKChyZXMpCisgICAgICAgIChudW0tZGVsZXRlcyAwKSkKKyAgICAoa21hY3Jv LW1lbnUtLW1hcC1pZHMgKGxhbWJkYSAoaWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGlmIChhbGlzdC1nZXQgKGttYWNyby1tZW51LS1pZC1wb3NpdGlvbiBpZCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrbWFjcm8tbWVudS0tZGVsZXRpb24tZmxh Z3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIG51bS1kZWxldGVzICgx KyBudW0tZGVsZXRlcykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHVzaCAoa21h Y3JvLW1lbnUtLWlkLWttYWNybyBpZCkgcmVzKSkpKQorICAgICh3aGVuICh5ZXMtb3Itbm8tcCAo aWYgKD0gMSBudW0tZGVsZXRlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZWxldGUg MSBmbGFnZ2VkIGtleWJvYXJkIG1hY3JvPyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZm9y bWF0ICJEZWxldGUgJWQgZmxhZ2dlZCBrZXlib2FyZCBtYWNyb3M/IgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbnVtLWRlbGV0ZXMpKSkKKyAgICAgIChrbWFjcm8tbWVudS0tcmVw bGFjZS1hbGwKKyAgICAgICAobnJldmVyc2UgcmVzKSkKKyAgICAgICh0YWJ1bGF0ZWQtbGlzdC1y ZXZlcnQpKSkpCisKKyhkZWZ1biBrbWFjcm8tbWVudS1kby1jb3B5ICgpCisgICJEdXBsaWNhdGUg bWFjcm9zIGluIHRoZSByZWdpb24sIHRob3NlIHdpdGggbWFya2Vycywgb3IgdGhlIG9uZSBhdCBw b2ludC4KKworTWFjcm9zIGFyZSBkdXBsaWNhdGVkIGF0IHRoZWlyIGN1cnJlbnQgcG9zaXRpb24g aW4gdGhlIG1hY3JvIHJpbmcuCisKK0lmIHRoZXJlJ3MgYW4gYWN0aXZlIHJlZ2lvbiwgZHVwbGlj YXRlIG1hY3JvcyBpbiB0aGUgcmVnaW9uOyBvdGhlcndpc2UKK2R1cGxpY2F0ZSB0aGUgbWFya2Vk IG1hY3JvcyBvciwgaWYgdGhlcmUgYXJlIG5vIG1hcmtzLCB0aGUgbWFjcm8gb24gdGhlCitjdXJy ZW50IGxpbmUuIgorICAoZGVjbGFyZSAobW9kZXMga21hY3JvLW1lbnUtbW9kZSkpCisgIChpbnRl cmFjdGl2ZSBuaWwga21hY3JvLW1lbnUtbW9kZSkKKyAgKGttYWNyby1tZW51LS1xdWVyeS1yZXZl cnQpCisgIChsZXQqICgocmVnaW9uLWV4aXN0cyAodXNlLXJlZ2lvbi1wKSkKKyAgICAgICAgICht YXJrLWV4aXN0cyAoa21hY3JvLW1lbnUtLW1hcmtzLWV4aXN0LXApKQorICAgICAgICAgKGlkLWFs aXN0IChpZiAob3IgcmVnaW9uLWV4aXN0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5v dCBtYXJrLWV4aXN0cykpCisgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChyZWdpb24tYWxp c3QpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChrbWFjcm8tbWVudS0tZG8tcmVnaW9uCisg ICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGlkKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChwdXNoIChjb25zIChrbWFjcm8tbWVudS0taWQtcG9zaXRpb24gaWQpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZWdpb24tYWxpc3QpKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICByZWdpb24tYWxpc3QpCisgICAgICAgICAgICAgICAgICAgICBrbWFjcm8tbWVudS0tbWFya3Mp KQorICAgICAgICAgKG51bS1kdXBsaWNhdGVzIDApKQorICAgIChsZXQgKChyZXMpKQorICAgICAg KGttYWNyby1tZW51LS1tYXAtaWRzIChsYW1iZGEgKGlkKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxldCAoKHBvcyAoa21hY3JvLW1lbnUtLWlkLXBvc2l0aW9uIGlkKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrbSAoa21hY3JvLW1lbnUtLWlkLWttYWNy byBpZCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHVzaCBrbSByZXMpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIChhbGlzdC1nZXQgcG9zIGlkLWFs aXN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIGttIHJlcykKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBudW0tZHVwbGljYXRlcyAoMSsg bnVtLWR1cGxpY2F0ZXMpKSkpKSkKKyAgICAgIDs7IENvbmZpcm0gdGhlIGFjdGlvbiBpZiB3ZSBv cGVyYXRlZCBvbiBtYXJrcyBvciB0aGUgcmVnaW9uLCBidXQKKyAgICAgIDs7IGRvbid0IGNvbmZp cm0gaWYgb3BlcmF0aW5nIG9uIGEgc2luZ2xlIGxpbmUgd2l0aG91dCBhIHJlZ2lvbi4KKyAgICAg ICh3aGVuIChpZiAob3IgbWFyay1leGlzdHMgcmVnaW9uLWV4aXN0cykKKyAgICAgICAgICAgICAg ICAoeWVzLW9yLW5vLXAgKGlmICg9IDEgbnVtLWR1cGxpY2F0ZXMpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiQ29weSAoZHVwbGljYXRlKSAxIGtleWJvYXJkIG1hY3JvPyIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICJDb3B5IChkdXBsaWNhdGUpICVk IGtleWJvYXJkIG1hY3Jvcz8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBudW0tZHVwbGljYXRlcykpKQorICAgICAgICAgICAgICB0KQorICAgICAgICAoa21hY3JvLW1l bnUtLXJlcGxhY2UtYWxsIChucmV2ZXJzZSByZXMpKQorICAgICAgICAodGFidWxhdGVkLWxpc3Qt cmV2ZXJ0KSkpKSkKKworKGRlZnVuIGttYWNyby1tZW51LWRvLWRlbGV0ZSAoKQorICAiRGVsZXRl IG1hY3JvcyBpbiB0aGUgcmVnaW9uLCB0aG9zZSB3aXRoIG1hcmtlcnMsIG9yIHRoZSBvbmUgYXQg cG9pbnQuCisKK0lmIHRoZXJlJ3MgYW4gYWN0aXZlIHJlZ2lvbiwgZGVsZXRlIG1hY3JvcyBpbiB0 aGUgcmVnaW9uOyBvdGhlcndpc2UKK2RlbGV0ZSB0aGUgbWFya2VkIG1hY3JvcyBvciwgaWYgdGhl cmUgYXJlIG5vIG1hcmtzLCB0aGUgbWFjcm8gb24gdGhlCitjdXJyZW50IGxpbmUuIgorICAoZGVj bGFyZSAobW9kZXMga21hY3JvLW1lbnUtbW9kZSkpCisgIChpbnRlcmFjdGl2ZSBuaWwga21hY3Jv LW1lbnUtbW9kZSkKKyAgKGttYWNyby1tZW51LS1xdWVyeS1yZXZlcnQpCisgIChsZXQgKChudW0t ZGVsZXRlcyAwKQorICAgICAgICAoaWQtYWxpc3QgKGlmIChvciAodXNlLXJlZ2lvbi1wKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAobm90IChrbWFjcm8tbWVudS0tbWFya3MtZXhpc3QtcCkp KQorICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChyZWdpb24tYWxpc3QpKQorICAgICAgICAg ICAgICAgICAgICAgICAgKGttYWNyby1tZW51LS1kby1yZWdpb24KKyAgICAgICAgICAgICAgICAg ICAgICAgICAobGFtYmRhIChpZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIChj b25zIChrbWFjcm8tbWVudS0taWQtcG9zaXRpb24gaWQpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVn aW9uLWFsaXN0KSkpCisgICAgICAgICAgICAgICAgICAgICAgICByZWdpb24tYWxpc3QpCisgICAg ICAgICAgICAgICAgICAgIGttYWNyby1tZW51LS1tYXJrcykpKQorICAgIChsZXQgKChyZXMpKQor ICAgICAgKGttYWNyby1tZW51LS1tYXAtaWRzIChsYW1iZGEgKGlkKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGlmIChhbGlzdC1nZXQgKGttYWNyby1tZW51LS1pZC1wb3NpdGlvbiBp ZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkLWFsaXN0 KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIG51bS1kZWxldGVzICgx KyBudW0tZGVsZXRlcykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIChr bWFjcm8tbWVudS0taWQta21hY3JvIGlkKSByZXMpKSkpCisgICAgICAod2hlbiAoeWVzLW9yLW5v LXAgKGlmICg9IDEgbnVtLWRlbGV0ZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJE ZWxldGUgMSBrZXlib2FyZCBtYWNybz8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9y bWF0ICJEZWxldGUgJWQga2V5Ym9hcmQgbWFjcm9zPyIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbnVtLWRlbGV0ZXMpKSkKKyAgICAgICAgKGttYWNyby1tZW51LS1yZXBsYWNl LWFsbCAobnJldmVyc2UgcmVzKSkKKyAgICAgICAgKHRhYnVsYXRlZC1saXN0LXJldmVydCkpKSkp CisKKzs7OzsgQ29tbWFuZHMgdGhhdCBNb2RpZnkgYSBLZXlib2FyZCBNYWNybworCisoZGVmdW4g a21hY3JvLW1lbnUtZWRpdC1wb3NpdGlvbiAoKQorICAiTW92ZSB0aGUga2V5Ym9hcmQgbWFjcm8g YXQgcG9pbnQgdG8gYSBuZXcgcG9zaXRpb24uCisKK1NlZSB0aGUgSW5mbyBub2RlIGAoZW1hY3Mp IEtleWJvYXJkIE1hY3JvIFJpbmcnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKyAgKGRlY2xhcmUg KG1vZGVzIGttYWNyby1tZW51LW1vZGUpKQorICAoaW50ZXJhY3RpdmUgbmlsIGttYWNyby1tZW51 LW1vZGUpCisgIChsZXQgKChpZCAodGFidWxhdGVkLWxpc3QtZ2V0LWlkKSkpCisgICAgKGttYWNy by1tZW51LS1hc3NlcnQtcm93IGlkKQorICAgIChrbWFjcm8tbWVudS0tcXVlcnktcmV2ZXJ0KQor ICAgIChsZXQqICgobmV3LXBvc2l0aW9uIChtaW4gKGxlbmd0aCB0YWJ1bGF0ZWQtbGlzdC1lbnRy aWVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1heCAwCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChyZWFkLW51bWJlciAiTmV3IHBvc2l0aW9uOiAiIDApKSkp CisgICAgICAgICAgIChvbGQta20gKGttYWNyby1tZW51LS1pZC1rbWFjcm8gaWQpKQorICAgICAg ICAgICAob2xkLXBvcyAoa21hY3JvLW1lbnUtLWlkLXBvc2l0aW9uIGlkKSkpCisgICAgICAodW5s ZXNzICg9IG9sZC1wb3MgbmV3LXBvc2l0aW9uKQorICAgICAgICAoa21hY3JvLW1lbnUtLXJlcGxh Y2UtYWxsCisgICAgICAgICAobGV0ICgocmVzKQorICAgICAgICAgICAgICAgKHRydWUtbmV3LXBv cyAoaWYgKD4gbmV3LXBvc2l0aW9uIG9sZC1wb3MpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoMSsgbmV3LXBvc2l0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG5ldy1wb3NpdGlvbikpKQorICAgICAgICAgICAoa21hY3JvLW1lbnUtLW1hcC1pZHMgKGxhbWJk YSAodGhpcy1pZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHRo aXMta20gKGttYWNyby1tZW51LS1pZC1rbWFjcm8gdGhpcy1pZCkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLXBvcyAoa21hY3JvLW1lbnUtLWlkLXBvc2l0 aW9uIHRoaXMtaWQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5s ZXNzICg9IG9sZC1wb3MgdGhpcy1wb3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAod2hlbiAoPSB0aGlzLXBvcyB0cnVlLW5ldy1wb3MpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIG9sZC1rbSByZXMpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggdGhpcy1rbSByZXMpKSkpKQorICAgICAg ICAgICAod2hlbiAoPj0gdHJ1ZS1uZXctcG9zCisgICAgICAgICAgICAgICAgICAgICAobGVuZ3Ro IHRhYnVsYXRlZC1saXN0LWVudHJpZXMpKQorICAgICAgICAgICAgIChwdXNoIG9sZC1rbSByZXMp KQorICAgICAgICAgICAobnJldmVyc2UgcmVzKSkpCisgICAgICAgICh0YWJ1bGF0ZWQtbGlzdC1y ZXZlcnQpKSkpKQorCisoZGVmdW4ga21hY3JvLW1lbnUtdHJhbnNwb3NlICgpCisgICJTd2FwIHRo ZSBrZXlib2FyZCBtYWNybyBhdCBwb2ludCB3aXRoIHRoZSBvbmUgYWJvdmUsIHRoZW4gbW92ZSB0 byB0aGUgbmV4dCBsaW5lLgorCitJZiBwb2ludCBpcyBvbiB0aGUgZmlyc3QgbGluZSAocG9zaXRp b24gbnVtYmVyIDApLCB0aGVuIHN3YXAgdGhlIG1hY3JvcworYXQgcG9zaXRpb24gbnVtYmVycyAw IGFuZCAxLCB0aGVuIG1vdmUgcG9pbnQgdG8gdGhlIHRoaXJkIGxpbmUuCisKK05vdGUgdGhhdCB0 aGlzIGlzIHRoZSBlYXJsaWVyIHBvc2l0aW9uIGluIHRoZSByaW5nLCBub3QgdGhlIHNvcnRlZAor dGFibGUuIgorICAoZGVjbGFyZSAobW9kZXMga21hY3JvLW1lbnUtbW9kZSkpCisgIChpbnRlcmFj dGl2ZSBuaWwga21hY3JvLW1lbnUtbW9kZSkKKyAgKGxldCAoKGlkICh0YWJ1bGF0ZWQtbGlzdC1n ZXQtaWQpKSkKKyAgICAoa21hY3JvLW1lbnUtLWFzc2VydC1yb3cgaWQpCisgICAgKGttYWNyby1t ZW51LS1xdWVyeS1yZXZlcnQpCisgICAgKGxldCogKChvbGQtcG9zIChrbWFjcm8tbWVudS0taWQt cG9zaXRpb24gaWQpKQorICAgICAgICAgICAoZmlyc3QtbGluZSAoPSAwIG9sZC1wb3MpKQorICAg ICAgICAgICAoZW5kLWxpbmVzLWZvcndhcmQgKGlmIGZpcnN0LWxpbmUKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgr IDMgb2xkLXBvcykpKSkKKyAgICAgIDs7IFdoZW4gdHJhbnNwb3NpbmcgdGhlIGZpcnN0IHR3byBt YWNyb3MsIHdlIGRvbid0IHVzZQorICAgICAgOzsgYGttYWNyby1zd2FwLXJpbmcnIGhlcmUgYmVj YXVzZSBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlIHVzZXIgdG8KKyAgICAgIDs7IGNob29zZSB0byBu b3QgcmVmcmVzaCB0aGUgdGFibGUgd2hlbiBpdCBpcyBvdXQgb2YgZGF0ZS4KKyAgICAgIChrbWFj cm8tbWVudS0tcmVwbGFjZS1hbGwKKyAgICAgICAobGV0ICgocmVzKSkKKyAgICAgICAgIChrbWFj cm8tbWVudS0tbWFwLWlkcworICAgICAgICAgIChpZiBmaXJzdC1saW5lCisgICAgICAgICAgICAg IChsZXQgKChvbGQta20gKGttYWNyby1tZW51LS1pZC1rbWFjcm8gaWQpKSkKKyAgICAgICAgICAg ICAgICAobGFtYmRhICh0aGlzLWlkKQorICAgICAgICAgICAgICAgICAgKGxldCAoKHRoaXMtcG9z IChrbWFjcm8tbWVudS0taWQtcG9zaXRpb24gdGhpcy1pZCkpKQorICAgICAgICAgICAgICAgICAg ICAodW5sZXNzICg9IDAgdGhpcy1wb3MpCisgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggKGtt YWNyby1tZW51LS1pZC1rbWFjcm8gdGhpcy1pZCkgcmVzKQorICAgICAgICAgICAgICAgICAgICAg ICh3aGVuICg9IDEgdGhpcy1wb3MpCisgICAgICAgICAgICAgICAgICAgICAgICAocHVzaCBvbGQt a20gcmVzKSkpKSkpCisgICAgICAgICAgICAobGV0ICgobmV3LXBvcyAoMS0gb2xkLXBvcykpKQor ICAgICAgICAgICAgICAobGFtYmRhICh0aGlzLWlkKQorICAgICAgICAgICAgICAgIChsZXQgKCh0 aGlzLXBvcyAoa21hY3JvLW1lbnUtLWlkLXBvc2l0aW9uIHRoaXMtaWQpKSkKKyAgICAgICAgICAg ICAgICAgICh1bmxlc3MgKD0gb2xkLXBvcyB0aGlzLXBvcykKKyAgICAgICAgICAgICAgICAgICAg KHdoZW4gKD0gbmV3LXBvcyB0aGlzLXBvcykKKyAgICAgICAgICAgICAgICAgICAgICAocHVzaCAo a21hY3JvLW1lbnUtLWlkLWttYWNybyBpZCkgcmVzKSkKKyAgICAgICAgICAgICAgICAgICAgKHB1 c2ggKGttYWNyby1tZW51LS1pZC1rbWFjcm8gdGhpcy1pZCkgcmVzKSkpKSkpKQorICAgICAgICAg KG5yZXZlcnNlIHJlcykpKQorICAgICAgKHRhYnVsYXRlZC1saXN0LXJldmVydCkKKyAgICAgIChn b3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAoZm9yd2FyZC1saW5lIGVuZC1saW5lcy1mb3J3 YXJkKSkpKQorCisoZGVmdW4ga21hY3JvLW1lbnUtZWRpdC1mb3JtYXQgKCkKKyAgIkVkaXQgdGhl IGNvdW50ZXIgZm9ybWF0IG9mIHRoZSBrZXlib2FyZCBtYWNybyBhdCBwb2ludC4KKworVmFsaWQg Y291bnRlciBmb3JtYXRzIGFyZSB0aG9zZSBmb3IgaW50ZWdlcnMgYWNjZXB0ZWQgYnkgdGhlIGZ1 bmN0aW9uCitgZm9ybWF0Jy4KKworU2VlIHRoZSBjb21tYW5kIGBrbWFjcm8tc2V0LWZvcm1hdCcg YW5kIHRoZSBJbmZvIG5vZGUgYChlbWFjcykgS2V5Ym9hcmQKK01hY3JvIENvdW50ZXInIGZvciBt b3JlIGluZm9ybWF0aW9uLiIKKyAgKGRlY2xhcmUgKG1vZGVzIGttYWNyby1tZW51LW1vZGUpKQor ICAoaW50ZXJhY3RpdmUgbmlsIGttYWNyby1tZW51LW1vZGUpCisgIChsZXQgKChpZCAodGFidWxh dGVkLWxpc3QtZ2V0LWlkKSkpCisgICAgKGttYWNyby1tZW51LS1hc3NlcnQtcm93IGlkKQorICAg IChrbWFjcm8tbWVudS0tcXVlcnktcmV2ZXJ0KQorICAgIChsZXQgKChrbSAoa21hY3JvLW1lbnUt LWlkLWttYWNybyBpZCkpKQorICAgICAgKGttYWNyby1tZW51LS1yZXBsYWNlLWF0CisgICAgICAg KGttYWNybyAoa21hY3JvLS1rZXlzIGttKQorICAgICAgICAgICAgICAgKGttYWNyby0tY291bnRl ciBrbSkKKyAgICAgICAgICAgICAgIChyZWFkLXN0cmluZyAiTmV3IGZvcm1hdDogIiBuaWwgbmls CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3Qga21hY3JvLWRlZmF1bHQtY291bnRl ci1mb3JtYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa21hY3JvLS1mb3Jt YXQga20pKSkpCisgICAgICAgKGttYWNyby1tZW51LS1pZC1wb3NpdGlvbiBpZCkpCisgICAgICAo dGFidWxhdGVkLWxpc3QtcmV2ZXJ0KSkpKQorCisoZGVmdW4ga21hY3JvLW1lbnUtZWRpdC1jb3Vu dGVyICgpCisgICJFZGl0IHRoZSBjb3VudGVyIG9mIHRoZSBrZXlib2FyZCBtYWNybyBhdCBwb2lu dC4KKworU2VlIEluZm8gbm9kZSBgKGVtYWNzKSBLZXlib2FyZCBNYWNybyBDb3VudGVyJyBmb3Ig bW9yZQoraW5mb3JtYXRpb24uIgorICAoZGVjbGFyZSAobW9kZXMga21hY3JvLW1lbnUtbW9kZSkp CisgIChpbnRlcmFjdGl2ZSBuaWwga21hY3JvLW1lbnUtbW9kZSkKKyAgKGxldCAoKGlkICh0YWJ1 bGF0ZWQtbGlzdC1nZXQtaWQpKSkKKyAgICAoa21hY3JvLW1lbnUtLWFzc2VydC1yb3cgaWQpCisg ICAgKGttYWNyby1tZW51LS1xdWVyeS1yZXZlcnQpCisgICAgKGxldCAoKGttIChrbWFjcm8tbWVu dS0taWQta21hY3JvIGlkKSkpCisgICAgICAoa21hY3JvLW1lbnUtLXJlcGxhY2UtYXQKKyAgICAg ICAoa21hY3JvIChrbWFjcm8tLWtleXMga20pCisgICAgICAgICAgICAgICAocmVhZC1udW1iZXIg Ik5ldyBjb3VudGVyOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgMAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrbWFjcm8tLWNvdW50ZXIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGttYWNyby1tZW51LS1pZC1rbWFjcm8gaWQpKSkp CisgICAgICAgICAgICAgICAoa21hY3JvLS1mb3JtYXQga20pKQorICAgICAgIChrbWFjcm8tbWVu dS0taWQtcG9zaXRpb24gaWQpKQorICAgICAgKHRhYnVsYXRlZC1saXN0LXJldmVydCkpKSkKKwor KGRlZnVuIGttYWNyby1tZW51LWVkaXQta2V5cyAoKQorICAiRWRpdCB0aGUga2V5cyBvZiB0aGUg a2V5Ym9hcmQgbWFjcm8gYXQgcG9pbnQgdmlhIGBlZG1hY3JvLW1vZGUnLgorCitTZWUgSW5mbyBu b2RlIGAoZW1hY3MpIEVkaXQgS2V5Ym9hcmQgTWFjcm8nIGZvciBtb3JlCitpbmZvcm1hdGlvbi4i CisgIChkZWNsYXJlIChtb2RlcyBrbWFjcm8tbWVudS1tb2RlKSkKKyAgKGludGVyYWN0aXZlIG5p bCBrbWFjcm8tbWVudS1tb2RlKQorICAobGV0ICgoaWQgKHRhYnVsYXRlZC1saXN0LWdldC1pZCkp KQorICAgIChrbWFjcm8tbWVudS0tYXNzZXJ0LXJvdyBpZCkKKyAgICAoa21hY3JvLW1lbnUtLXF1 ZXJ5LXJldmVydCkKKyAgICAobGV0KiAoKG9sZC1rbSAoa21hY3JvLW1lbnUtLWlkLWttYWNybyBp ZCkpKQorICAgICAgKGVkaXQta2JkLW1hY3JvIChrbWFjcm8tLWtleXMgb2xkLWttKQorICAgICAg ICAgICAgICAgICAgICAgIG5pbAorICAgICAgICAgICAgICAgICAgICAgIG5pbAorICAgICAgICAg ICAgICAgICAgICAgIChsYW1iZGEgKG1hYykKKyAgICAgICAgICAgICAgICAgICAgICAgIChrbWFj cm8tbWVudS0tcmVwbGFjZS1hdAorICAgICAgICAgICAgICAgICAgICAgICAgIChrbWFjcm8gbWFj CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa21hY3JvLS1jb3VudGVyIG9sZC1r bSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrbWFjcm8tLWZvcm1hdCBvbGQt a20pKQorICAgICAgICAgICAgICAgICAgICAgICAgIChrbWFjcm8tbWVudS0taWQtcG9zaXRpb24g aWQpKQorICAgICAgICAgICAgICAgICAgICAgICAgKHRhYnVsYXRlZC1saXN0LXJldmVydCkpKSkp KQorCisoZGVmdW4ga21hY3JvLW1lbnUtZWRpdC1jb2x1bW4gKCkKKyAgIkVkaXQgdGhlIHZhbHVl IGluIHRoZSBjdXJyZW50IGNvbHVtbiBvZiB0aGUga2V5Ym9hcmQgbWFjcm8gYXQgcG9pbnQuIgor ICAoZGVjbGFyZSAobW9kZXMga21hY3JvLW1lbnUtbW9kZSkpCisgIChpbnRlcmFjdGl2ZSBuaWwg a21hY3JvLW1lbnUtbW9kZSkKKyAgKGttYWNyby1tZW51LS1hc3NlcnQtcm93KQorICAoa21hY3Jv LW1lbnUtLXF1ZXJ5LXJldmVydCkKKyAgKHBjYXNlIChnZXQtdGV4dC1wcm9wZXJ0eSAocG9pbnQp ICd0YWJ1bGF0ZWQtbGlzdC1jb2x1bW4tbmFtZSkKKyAgICAoJ25pbCAgICAgICAgKGxldCAoKHBv cyAocG9pbnQpKSkKKyAgICAgICAgICAgICAgICAgICA7OyBJZiB3ZSBkaWRuJ3QgZmluZCBhIGNv bHVtbiwgdHJ5IG1vdmluZyBmb3J3YXJkcyBvcgorICAgICAgICAgICAgICAgICAgIDs7IGJhY2t3 YXJkcyB0byB0aGUgbmVhcmVzdCBjb2x1bW4uCisgICAgICAgICAgICAgICAgICAgKHRhYnVsYXRl ZC1saXN0LW5leHQtY29sdW1uIDEpCisgICAgICAgICAgICAgICAgICAgKHdoZW4gKD0gcG9zIChw b2ludCkpCisgICAgICAgICAgICAgICAgICAgICAodGFidWxhdGVkLWxpc3QtcHJldmlvdXMtY29s dW1uIDEpKQorICAgICAgICAgICAgICAgICAgIChpZiAobnVsbCAoZ2V0LXRleHQtcHJvcGVydHkg KHBvaW50KSAndGFidWxhdGVkLWxpc3QtY29sdW1uLW5hbWUpKQorICAgICAgICAgICAgICAgICAg ICAgICAodXNlci1lcnJvciAiTm8gY29sdW1uIGF0IHBvaW50IikKKyAgICAgICAgICAgICAgICAg ICAgIChrbWFjcm8tbWVudS1lZGl0LWNvbHVtbikpKSkKKyAgICAoIlBvc2l0aW9uIiAgKGNhbGwt aW50ZXJhY3RpdmVseSAjJ2ttYWNyby1tZW51LWVkaXQtcG9zaXRpb24pKQorICAgICgiQ291bnRl ciIgICAoY2FsbC1pbnRlcmFjdGl2ZWx5ICMna21hY3JvLW1lbnUtZWRpdC1jb3VudGVyKSkKKyAg ICAoIkZvcm1hdCIgICAgKGNhbGwtaW50ZXJhY3RpdmVseSAjJ2ttYWNyby1tZW51LWVkaXQtZm9y bWF0KSkKKyAgICAoIkZvcm1hdHRlZCIgKHVzZXItZXJyb3IgIkZvcm1hdHRlZCBjb3VudGVyIGlz IG5vdCBlZGl0YWJsZSIpKQorICAgICgiS2V5cyIgICAgICAoY2FsbC1pbnRlcmFjdGl2ZWx5ICMn a21hY3JvLW1lbnUtZWRpdC1rZXlzKSkpKQorCiAocHJvdmlkZSAna21hY3JvKQogCiA7Ozsga21h Y3JvLmVsIGVuZHMgaGVyZQotLSAKMi4zNC4xCgo= --b1_5JZJ1LeGElQZvBw5oZTBqAG0XxOqyBeKYHNjW4EoSM--