Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pmwJS-0005ao-3K for pgsql-hackers@arkaria.postgresql.org; Thu, 13 Apr 2023 12:44:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pmwJR-0005fm-1U for pgsql-hackers@arkaria.postgresql.org; Thu, 13 Apr 2023 12:44:29 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pmwJQ-0005fV-74 for pgsql-hackers@lists.postgresql.org; Thu, 13 Apr 2023 12:44:28 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pmwJL-0004iq-RW for pgsql-hackers@lists.postgresql.org; Thu, 13 Apr 2023 12:44:27 +0000 Received: from [192.168.0.104] (unknown [62.217.188.228]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id 0069021D0077; Thu, 13 Apr 2023 15:44:20 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1681389861; bh=YEoy4liTKab2voRkQD3uvSgWIY2w8xNC3G4Ek6a/ha4=; h=Date:Subject:To:Cc:References:From:In-Reply-To; b=g+pcjt67FsQ7k5nVT5doD/rqm1SiBhRfQi2S+kujBxVaJcd7ITXNrvjkyAU9iDHC6 k8xEfpSVcvMxHBsWnA/RKcY8kYdb3i7W7rY/UI7Ojnq8UNQ+Zo6pozOzKgDR4T0n8j U/wtHrWAqIo447M0yR2400vySn/hGXj6Hec6UeRs= Content-Type: multipart/mixed; boundary="------------zCpCxbQO38yypuXp7ZIjtZV0" Message-ID: Date: Thu, 13 Apr 2023 15:44:20 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: psql: Add role's membership options to the \du+ command Content-Language: en-US To: "David G. Johnston" , Tom Lane Cc: Robert Haas , David Zhang , "pgsql-hackers@lists.postgresql.org" References: <20824093-d94f-e5d6-b611-8cec7fc6e95e@postgrespro.ru> <42678ca5-f3c6-db1b-e0c5-c63c3ce8997e@postgrespro.ru> <1525117.1680628353@sss.pgh.pa.us> <1575395.1680629866@sss.pgh.pa.us> <1831161.1680703111@sss.pgh.pa.us> From: Pavel Luzanov In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------zCpCxbQO38yypuXp7ZIjtZV0 Content-Type: multipart/alternative; boundary="------------6ssrevft2YHMUPdZ4jWrmKe0" --------------6ssrevft2YHMUPdZ4jWrmKe0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit After playing with the \du command, I found that we can't avoid translation. All attributes are translatable. Also, two of nine attributes shows in new line separated format (connection limit and password valid until). $ LANGUAGE=fr psql -c "ALTER ROLE postgres CONNECTION LIMIT 3 VALID UNTIL 'infinity'" -c '\du' ALTER ROLE                                               Liste des rôles  Nom du rôle | Attributs                                    | Membre de -------------+---------------------------------------------------------------------------------+-----------  postgres    | Superutilisateur, Créer un rôle, Créer une base, Réplication, Contournement RLS+| {}              | 3 connexions +|              | Mot de passe valide jusqu'à infinity                                            | So I decided to keep the format suggested by David, but without abbreviations and only for extended mode. $ psql -c '\duS+'                                                          List of roles           Role name          |          Attributes |                     Member of                     | Description -----------------------------+-------------------------------+---------------------------------------------------+-------------  pg_checkpoint               | Cannot login |                                                   |  pg_create_subscription      | Cannot login |                                                   |  pg_database_owner           | Cannot login |                                                   |  pg_execute_server_program   | Cannot login |                                                   |  pg_maintain                 | Cannot login |                                                   |  pg_monitor                  | Cannot login                  | pg_read_all_settings from postgres (inherit, set)+|                              |                               | pg_read_all_stats from postgres (inherit, set)   +|                              |                               | pg_stat_scan_tables from postgres (inherit, set)  |  pg_read_all_data            | Cannot login |                                                   |  pg_read_all_settings        | Cannot login |                                                   |  pg_read_all_stats           | Cannot login |                                                   |  pg_read_server_files        | Cannot login |                                                   |  pg_signal_backend           | Cannot login |                                                   |  pg_stat_scan_tables         | Cannot login |                                                   |  pg_use_reserved_connections | Cannot login |                                                   |  pg_write_all_data           | Cannot login |                                                   |  pg_write_server_files       | Cannot login |                                                   |  postgres                    | Superuser +|                                                   |                              | Create role +|                                                   |                              | Create DB +|                                                   |                              | Replication +|                                                   |                              | Bypass RLS +|                                                   |                              | 3 connections +|                                                   |                              | Password valid until infinity |                                                   | Please look at new version. I understand that this is a compromise choice. I am ready to change it if a better solution is offered. P.S. If no objections I plan to add this patch to Open Items for v16 https://wiki.postgresql.org/wiki/PostgreSQL_16_Open_Items On 05.04.2023 17:24, David G. Johnston wrote: > On Wed, Apr 5, 2023 at 6:58 AM Tom Lane wrote: > > Pavel Luzanov writes: > > What if this long output will be available only for \du+, and > for \du > > just show distinct (without duplicates) > > roles in the current array format? For those, who don't care > about these > > new membership options, nothing will change. > > Those, who need details will use the + modifier. > > ? > > I kind of like that.  Would we change to newlines in the Attributes > field in both \du and \du+?  (I'm +1 for that, but maybe others > aren't.) > > > If we don't change the \du "Member of" column display (aside from > removing duplicates) I'm disinclined to change the Attributes column. > > I too am partial to only exposing this detail on the extended (+) display. > > David J. > -- Pavel Luzanov Postgres Professional:https://postgrespro.com --------------6ssrevft2YHMUPdZ4jWrmKe0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit After playing with the \du command, I found that we can't avoid translation.

All attributes are translatable. Also, two of nine attributes shows in new line separated format (connection limit and password valid until).

$ LANGUAGE=fr psql -c "ALTER ROLE postgres CONNECTION LIMIT 3 VALID UNTIL 'infinity'" -c '\du'
ALTER ROLE
                                              Liste des rôles
 Nom du rôle |                                    Attributs                                    | Membre de
-------------+---------------------------------------------------------------------------------+-----------
 postgres    | Superutilisateur, Créer un rôle, Créer une base, Réplication, Contournement RLS+| {}
             | 3 connexions                                                                   +|
             | Mot de passe valide jusqu'à infinity                                            |


So I decided to keep the format suggested by David, but without abbreviations and only for extended mode.

$ psql -c '\duS+'
                                                         List of roles
          Role name          |          Attributes           |                     Member of                     | Description
-----------------------------+-------------------------------+---------------------------------------------------+-------------
 pg_checkpoint               | Cannot login                  |                                                   |
 pg_create_subscription      | Cannot login                  |                                                   |
 pg_database_owner           | Cannot login                  |                                                   |
 pg_execute_server_program   | Cannot login                  |                                                   |
 pg_maintain                 | Cannot login                  |                                                   |
 pg_monitor                  | Cannot login                  | pg_read_all_settings from postgres (inherit, set)+|
                             |                               | pg_read_all_stats from postgres (inherit, set)   +|
                             |                               | pg_stat_scan_tables from postgres (inherit, set)  |
 pg_read_all_data            | Cannot login                  |                                                   |
 pg_read_all_settings        | Cannot login                  |                                                   |
 pg_read_all_stats           | Cannot login                  |                                                   |
 pg_read_server_files        | Cannot login                  |                                                   |
 pg_signal_backend           | Cannot login                  |                                                   |
 pg_stat_scan_tables         | Cannot login                  |                                                   |
 pg_use_reserved_connections | Cannot login                  |                                                   |
 pg_write_all_data           | Cannot login                  |                                                   |
 pg_write_server_files       | Cannot login                  |                                                   |
 postgres                    | Superuser                    +|                                                   |
                             | Create role                  +|                                                   |
                             | Create DB                    +|                                                   |
                             | Replication                  +|                                                   |
                             | Bypass RLS                   +|                                                   |
                             | 3 connections                +|                                                   |
                             | Password valid until infinity |                                                   |


Please look at new version. I understand that this is a compromise choice.
I am ready to change it if a better solution is offered.

P.S. If no objections I plan to add this patch to Open Items for v16
https://wiki.postgresql.org/wiki/PostgreSQL_16_Open_Items

On 05.04.2023 17:24, David G. Johnston wrote:
On Wed, Apr 5, 2023 at 6:58 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
Pavel Luzanov <p.luzanov@postgrespro.ru> writes:
> What if this long output will be available only for \du+, and for \du
> just show distinct (without duplicates)
> roles in the current array format? For those, who don't care about these
> new membership options, nothing will change.
> Those, who need details will use the + modifier.
> ?

I kind of like that.  Would we change to newlines in the Attributes
field in both \du and \du+?  (I'm +1 for that, but maybe others aren't.)


If we don't change the \du "Member of" column display (aside from removing duplicates) I'm disinclined to change the Attributes column.

I too am partial to only exposing this detail on the extended (+) display.

David J.


-- 
Pavel Luzanov
Postgres Professional: https://postgrespro.com
--------------6ssrevft2YHMUPdZ4jWrmKe0-- --------------zCpCxbQO38yypuXp7ZIjtZV0 Content-Type: text/x-patch; charset=UTF-8; name="v7-0001-psql-show-membership-options-in-the-du-command.patch" Content-Disposition: attachment; filename*0="v7-0001-psql-show-membership-options-in-the-du-command.patch" Content-Transfer-Encoding: base64 RnJvbSAxZjk0MzM2OTZlNDFhOGYzN2NmZDRjMDUxNGUxMzZmZWRkNTA5MzllIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXZlbCBMdXphbm92IDxwLmx1emFub3ZAcG9zdGdy ZXNwcm8ucnU+CkRhdGU6IFRodSwgMTMgQXByIDIwMjMgMTU6MDk6NTcgKzAzMDAKU3ViamVj dDogW1BBVENIIHY3XSBwc3FsOiBzaG93IG1lbWJlcnNoaXAgb3B0aW9ucyBpbiB0aGUgXGR1 IGNvbW1hbmQKCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sICAgICB8IDQw ICsrKysrKysrKysrLS0KIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgfCA5 MiArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcHNxbC5vdXQgfCA0OSArKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9wc3FsLnNxbCAgICAgIHwgMzAgKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAx ODIgaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5z Z21sCmluZGV4IGRjNDIyMzczZDYuLmYxNzRiZGRjYjAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvcHNxbC1yZWYuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVm LnNnbWwKQEAgLTE3MjcsOSArMTcyNywyMyBAQCBJTlNFUlQgSU5UTyB0YmwxIFZBTFVFUyAo JDEsICQyKSBcYmluZCAnZmlyc3QgdmFsdWUnICdzZWNvbmQgdmFsdWUnIFxnCiAgICAgICAg IDxsaXRlcmFsPlM8L2xpdGVyYWw+IG1vZGlmaWVyIHRvIGluY2x1ZGUgc3lzdGVtIHJvbGVz LgogICAgICAgICBJZiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGF0dGVybjwv cmVwbGFjZWFibGU+IGlzIHNwZWNpZmllZCwKICAgICAgICAgb25seSB0aG9zZSByb2xlcyB3 aG9zZSBuYW1lcyBtYXRjaCB0aGUgcGF0dGVybiBhcmUgbGlzdGVkLgotICAgICAgICBJZiB0 aGUgZm9ybSA8bGl0ZXJhbD5cZGcrPC9saXRlcmFsPiBpcyB1c2VkLCBhZGRpdGlvbmFsIGlu Zm9ybWF0aW9uCi0gICAgICAgIGlzIHNob3duIGFib3V0IGVhY2ggcm9sZTsgY3VycmVudGx5 IHRoaXMgYWRkcyB0aGUgY29tbWVudCBmb3IgZWFjaAotICAgICAgICByb2xlLgorICAgICAg ICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICBJZiB0aGUgZm9ybSA8bGl0ZXJh bD5cZGc8L2xpdGVyYWw+IGlzIHVzZWQsIGEgbGlzdCBvZiBkaXN0aW5jdCByb2xlcworICAg ICAgICBvZiB3aGljaCBpdCBpcyBhIG1lbWJlciBpcyBzaG93biBmb3IgZWFjaCByb2xlIGlu IGFycmF5IGZvcm1hdC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAg ICAgSWYgdGhlIGZvcm0gPGxpdGVyYWw+XGRnKzwvbGl0ZXJhbD4gaXMgdXNlZCwgdGhlIG1l bWJlcnNoaXBzIGdyYW50ZWQKKyAgICAgICAgdG8gdGhlIHJvbGUgc2hvd24gd2l0aGluIGVh Y2ggcm93LCBpbiBuZXdsaW5lLXNlcGFyYXRlZCBmb3JtYXQuCisgICAgICAgIFRoZSBwcmVz ZW50YXRpb24gaW5jbHVkZXMgYm90aCB0aGUgbmFtZSBvZiB0aGUgZ3JhbnRvciBhcyB3ZWxs IGFzCisgICAgICAgIHRoZSBtZW1iZXJzaGlwIHBlcm1pc3Npb25zOiA8bGl0ZXJhbD5hZG1p bjwvbGl0ZXJhbD4sCisgICAgICAgIDxsaXRlcmFsPmluaGVyaXQ8L2xpdGVyYWw+LCA8bGl0 ZXJhbD5zZXQ8L2xpdGVyYWw+LgorICAgICAgICBUaGUgd29yZCA8bGl0ZXJhbD5lbXB0eTwv bGl0ZXJhbD4gaXMgcHJpbnRlZCBpbiB0aGUgY2FzZSB0aGF0IG5vbmUgb2YgdGhvc2UKKyAg ICAgICAgcGVybWlzc2lvbnMgYXJlIGdyYW50ZWQuCisgICAgICAgIFNlZSB0aGUgPGxpbmsg bGlua2VuZD0ic3FsLWdyYW50Ij48Y29tbWFuZD5HUkFOVDwvY29tbWFuZD48L2xpbms+IGNv bW1hbmQgZm9yIHRoZWlyIG1lYW5pbmcuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBh cmE+CisgICAgICAgIEFsc28sIGlmIHRoZSBmb3JtIDxsaXRlcmFsPlxkZys8L2xpdGVyYWw+ IGlzIHVzZWQsIHRoZSBjb21tZW50IGF0dGFjaGVkIHRvIHRoZSByb2xlIGlzIHNob3duLgog ICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICA8L3Zhcmxpc3Rl bnRyeT4KQEAgLTE5NjksOSArMTk4MywyMyBAQCBJTlNFUlQgSU5UTyB0YmwxIFZBTFVFUyAo JDEsICQyKSBcYmluZCAnZmlyc3QgdmFsdWUnICdzZWNvbmQgdmFsdWUnIFxnCiAgICAgICAg IDxsaXRlcmFsPlM8L2xpdGVyYWw+IG1vZGlmaWVyIHRvIGluY2x1ZGUgc3lzdGVtIHJvbGVz LgogICAgICAgICBJZiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGF0dGVybjwv cmVwbGFjZWFibGU+IGlzIHNwZWNpZmllZCwKICAgICAgICAgb25seSB0aG9zZSByb2xlcyB3 aG9zZSBuYW1lcyBtYXRjaCB0aGUgcGF0dGVybiBhcmUgbGlzdGVkLgotICAgICAgICBJZiB0 aGUgZm9ybSA8bGl0ZXJhbD5cZHUrPC9saXRlcmFsPiBpcyB1c2VkLCBhZGRpdGlvbmFsIGlu Zm9ybWF0aW9uCi0gICAgICAgIGlzIHNob3duIGFib3V0IGVhY2ggcm9sZTsgY3VycmVudGx5 IHRoaXMgYWRkcyB0aGUgY29tbWVudCBmb3IgZWFjaAotICAgICAgICByb2xlLgorICAgICAg ICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICBJZiB0aGUgZm9ybSA8bGl0ZXJh bD5cZHU8L2xpdGVyYWw+IGlzIHVzZWQsIGEgbGlzdCBvZiBkaXN0aW5jdCByb2xlcworICAg ICAgICBvZiB3aGljaCBpdCBpcyBhIG1lbWJlciBpcyBzaG93biBmb3IgZWFjaCByb2xlIGlu IGFycmF5IGZvcm1hdC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAg ICAgSWYgdGhlIGZvcm0gPGxpdGVyYWw+XGR1KzwvbGl0ZXJhbD4gaXMgdXNlZCwgdGhlIG1l bWJlcnNoaXBzIGdyYW50ZWQKKyAgICAgICAgdG8gdGhlIHJvbGUgc2hvd24gd2l0aGluIGVh Y2ggcm93LCBpbiBuZXdsaW5lLXNlcGFyYXRlZCBmb3JtYXQuCisgICAgICAgIFRoZSBwcmVz ZW50YXRpb24gaW5jbHVkZXMgYm90aCB0aGUgbmFtZSBvZiB0aGUgZ3JhbnRvciBhcyB3ZWxs IGFzCisgICAgICAgIHRoZSBtZW1iZXJzaGlwIHBlcm1pc3Npb25zOiA8bGl0ZXJhbD5hZG1p bjwvbGl0ZXJhbD4sCisgICAgICAgIDxsaXRlcmFsPmluaGVyaXQ8L2xpdGVyYWw+LCA8bGl0 ZXJhbD5zZXQ8L2xpdGVyYWw+LgorICAgICAgICBUaGUgd29yZCA8bGl0ZXJhbD5lbXB0eTwv bGl0ZXJhbD4gaXMgcHJpbnRlZCBpbiB0aGUgY2FzZSB0aGF0IG5vbmUgb2YgdGhvc2UKKyAg ICAgICAgcGVybWlzc2lvbnMgYXJlIGdyYW50ZWQuCisgICAgICAgIFNlZSB0aGUgPGxpbmsg bGlua2VuZD0ic3FsLWdyYW50Ij48Y29tbWFuZD5HUkFOVDwvY29tbWFuZD48L2xpbms+IGNv bW1hbmQgZm9yIHRoZWlyIG1lYW5pbmcuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBh cmE+CisgICAgICAgIEFsc28sIGlmIHRoZSBmb3JtIDxsaXRlcmFsPlxkdSs8L2xpdGVyYWw+ IGlzIHVzZWQsIHRoZSBjb21tZW50IGF0dGFjaGVkIHRvIHRoZSByb2xlIGlzIHNob3duLgog ICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICA8L3Zhcmxpc3Rl bnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMKaW5kZXggODNhMzdlZTYwMS4uYWZkZmZiNjkzMiAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJl LmMKQEAgLTM2LDcgKzM2LDkgQEAgc3RhdGljIGJvb2wgZGVzY3JpYmVPbmVUYWJsZURldGFp bHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJCQkJCQkJCWJvb2wgdmVyYm9zZSk7CiBz dGF0aWMgdm9pZCBhZGRfdGFibGVzcGFjZV9mb290ZXIocHJpbnRUYWJsZUNvbnRlbnQgKmNv bnN0IGNvbnQsIGNoYXIgcmVsa2luZCwKIAkJCQkJCQkJICBPaWQgdGFibGVzcGFjZSwgY29u c3QgYm9vbCBuZXdsaW5lKTsKLXN0YXRpYyB2b2lkIGFkZF9yb2xlX2F0dHJpYnV0ZShQUUV4 cEJ1ZmZlciBidWYsIGNvbnN0IGNoYXIgKmNvbnN0IHN0cik7CitzdGF0aWMgdm9pZCBhZGRf cm9sZV9hdHRyaWJ1dGUoUFFFeHBCdWZmZXIgYnVmLAorCQkJCQkJCSAgIGNvbnN0IGNoYXIg KmNvbnN0IHN0ciwKKwkJCQkJCQkgICBib29sIHZlcmJvc2UpOwogc3RhdGljIGJvb2wgbGlz dFRTUGFyc2Vyc1ZlcmJvc2UoY29uc3QgY2hhciAqcGF0dGVybik7CiBzdGF0aWMgYm9vbCBk ZXNjcmliZU9uZVRTUGFyc2VyKGNvbnN0IGNoYXIgKm9pZCwgY29uc3QgY2hhciAqbnNwbmFt ZSwKIAkJCQkJCQkJY29uc3QgY2hhciAqcHJzbmFtZSk7CkBAIC0zNjMxLDI0ICszNjMzLDU2 IEBAIGRlc2NyaWJlUm9sZXMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlLCBi b29sIHNob3dTeXN0ZW0pCiAJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJICAiU0VM RUNUIHIucm9sbmFtZSwgci5yb2xzdXBlciwgci5yb2xpbmhlcml0LFxuIgogCQkJCQkgICIg IHIucm9sY3JlYXRlcm9sZSwgci5yb2xjcmVhdGVkYiwgci5yb2xjYW5sb2dpbixcbiIKLQkJ CQkJICAiICByLnJvbGNvbm5saW1pdCwgci5yb2x2YWxpZHVudGlsLFxuIgotCQkJCQkgICIg IEFSUkFZKFNFTEVDVCBiLnJvbG5hbWVcbiIKLQkJCQkJICAiICAgICAgICBGUk9NIHBnX2Nh dGFsb2cucGdfYXV0aF9tZW1iZXJzIG1cbiIKLQkJCQkJICAiICAgICAgICBKT0lOIHBnX2Nh dGFsb2cucGdfcm9sZXMgYiBPTiAobS5yb2xlaWQgPSBiLm9pZClcbiIKLQkJCQkJICAiICAg ICAgICBXSEVSRSBtLm1lbWJlciA9IHIub2lkKSBhcyBtZW1iZXJvZiIpOworCQkJCQkgICIg IHIucm9sY29ubmxpbWl0LCByLnJvbHZhbGlkdW50aWwsIHIucm9scmVwbGljYXRpb24sXG4i KTsKIAotCWlmICh2ZXJib3NlKQorCWlmIChwc2V0LnN2ZXJzaW9uID49IDE2MDAwMCkKIAl7 Ci0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICJcbiwgcGdfY2F0YWxvZy5zaG9ial9k ZXNjcmlwdGlvbihyLm9pZCwgJ3BnX2F1dGhpZCcpIEFTIGRlc2NyaXB0aW9uIik7Ci0JCW5j b2xzKys7CisJCWlmICh2ZXJib3NlKQorCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJ CQkJCQkgICIgIChTRUxFQ1QgcGdfY2F0YWxvZy5zdHJpbmdfYWdnKFxuIgorCQkJCQkJCSAg IiAgICBwZ19jYXRhbG9nLmZvcm1hdCgnJSVJIGZyb20gJSVJICglJXMpJyxcbiIKKwkJCQkJ CQkgICIgICAgICBiLnJvbG5hbWUsIG0uZ3JhbnRvcjo6cGdfY2F0YWxvZy5yZWdyb2xlOjpw Z19jYXRhbG9nLnRleHQsXG4iCisJCQkJCQkJICAiICAgICAgcGdfY2F0YWxvZy5yZWdleHBf cmVwbGFjZShcbiIKKwkJCQkJCQkgICIgICAgICAgIHBnX2NhdGFsb2cuY29uY2F0X3dzKCcs ICcsXG4iCisJCQkJCQkJICAiICAgICAgICAgIENBU0UgV0hFTiBtLmFkbWluX29wdGlvbiBU SEVOICclcycgRU5ELFxuIgorCQkJCQkJCSAgIiAgICAgICAgICBDQVNFIFdIRU4gbS5pbmhl cml0X29wdGlvbiBUSEVOICclcycgRU5ELFxuIgorCQkJCQkJCSAgIiAgICAgICAgICBDQVNF IFdIRU4gbS5zZXRfb3B0aW9uIFRIRU4gJyVzJyBFTkQpLFxuIgorCQkJCQkJCSAgIiAgICAg ICdeJCcsICclcycpXG4iCisJCQkJCQkJICAiICAgICksIEUnXFxuJ1xuIgorCQkJCQkJCSAg IiAgICBPUkRFUiBCWSBiLnJvbG5hbWUsIG0uZ3JhbnRvcjo6cGdfY2F0YWxvZy5yZWdyb2xl OjpwZ19jYXRhbG9nLnRleHQpXG4iCisJCQkJCQkJICAiICBGUk9NIHBnX2NhdGFsb2cucGdf YXV0aF9tZW1iZXJzIG1cbiIKKwkJCQkJCQkgICIgICAgICAgSk9JTiBwZ19jYXRhbG9nLnBn X3JvbGVzIGIgT04gKG0ucm9sZWlkID0gYi5vaWQpXG4iCisJCQkJCQkJICAiICBXSEVSRSBt Lm1lbWJlciA9IHIub2lkKSBhcyBtZW1iZXJvZiIsCisJCQkJCQkJICBnZXR0ZXh0X25vb3Ao ImFkbWluIiksCisJCQkJCQkJICBnZXR0ZXh0X25vb3AoImluaGVyaXQiKSwKKwkJCQkJCQkg IGdldHRleHRfbm9vcCgic2V0IiksCisJCQkJCQkJICBnZXR0ZXh0X25vb3AoImVtcHR5Iikp OworCQllbHNlCisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLAorCQkJCQkJCQkgIiAg QVJSQVkoU0VMRUNUIERJU1RJTkNUIGIucm9sbmFtZVxuIgorCQkJCQkJCQkgIiAgICAgICAg RlJPTSBwZ19jYXRhbG9nLnBnX2F1dGhfbWVtYmVycyBtXG4iCisJCQkJCQkJCSAiICAgICAg ICBKT0lOIHBnX2NhdGFsb2cucGdfcm9sZXMgYiBPTiAobS5yb2xlaWQgPSBiLm9pZClcbiIK KwkJCQkJCQkJICIgICAgICAgIFdIRVJFIG0ubWVtYmVyID0gci5vaWRcbiIKKwkJCQkJCQkJ ICIgICAgICAgIE9SREVSIEJZIDEpIEFTIG1lbWJlcm9mIik7CiAJfQotCWFwcGVuZFBRRXhw QnVmZmVyU3RyKCZidWYsICJcbiwgci5yb2xyZXBsaWNhdGlvbiIpOworCWVsc2UKKwkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwKKwkJCQkJCQkgIiAgQVJSQVkoU0VMRUNUIGIucm9s bmFtZVxuIgorCQkJCQkJCSAiICAgICAgICBGUk9NIHBnX2NhdGFsb2cucGdfYXV0aF9tZW1i ZXJzIG1cbiIKKwkJCQkJCQkgIiAgICAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX3JvbGVzIGIg T04gKG0ucm9sZWlkID0gYi5vaWQpXG4iCisJCQkJCQkJICIgICAgICAgIFdIRVJFIG0ubWVt YmVyID0gci5vaWQpIGFzIG1lbWJlcm9mIik7CiAKIAlpZiAocHNldC5zdmVyc2lvbiA+PSA5 MDUwMCkKIAl7CiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICJcbiwgci5yb2xieXBh c3NybHMiKTsKIAl9CiAKKwlpZiAodmVyYm9zZSkKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKCZidWYsICJcbiwgcGdfY2F0YWxvZy5zaG9ial9kZXNjcmlwdGlvbihyLm9pZCwgJ3Bn X2F1dGhpZCcpIEFTIGRlc2NyaXB0aW9uIik7CisJCW5jb2xzKys7CisJfQorCiAJYXBwZW5k UFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIlxuRlJPTSBwZ19jYXRhbG9nLnBnX3JvbGVzIHJcbiIp OwogCiAJaWYgKCFzaG93U3lzdGVtICYmICFwYXR0ZXJuKQpAQCAtMzY4NywyNiArMzcyMSwy NiBAQCBkZXNjcmliZVJvbGVzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwg Ym9vbCBzaG93U3lzdGVtKQogCiAJCXJlc2V0UFFFeHBCdWZmZXIoJmJ1Zik7CiAJCWlmIChz dHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIDEpLCAidCIpID09IDApCi0JCQlhZGRfcm9sZV9h dHRyaWJ1dGUoJmJ1ZiwgXygiU3VwZXJ1c2VyIikpOworCQkJYWRkX3JvbGVfYXR0cmlidXRl KCZidWYsIF8oIlN1cGVydXNlciIpLCB2ZXJib3NlKTsKIAogCQlpZiAoc3RyY21wKFBRZ2V0 dmFsdWUocmVzLCBpLCAyKSwgInQiKSAhPSAwKQotCQkJYWRkX3JvbGVfYXR0cmlidXRlKCZi dWYsIF8oIk5vIGluaGVyaXRhbmNlIikpOworCQkJYWRkX3JvbGVfYXR0cmlidXRlKCZidWYs IF8oIk5vIGluaGVyaXRhbmNlIiksIHZlcmJvc2UpOwogCiAJCWlmIChzdHJjbXAoUFFnZXR2 YWx1ZShyZXMsIGksIDMpLCAidCIpID09IDApCi0JCQlhZGRfcm9sZV9hdHRyaWJ1dGUoJmJ1 ZiwgXygiQ3JlYXRlIHJvbGUiKSk7CisJCQlhZGRfcm9sZV9hdHRyaWJ1dGUoJmJ1ZiwgXygi Q3JlYXRlIHJvbGUiKSwgdmVyYm9zZSk7CiAKIAkJaWYgKHN0cmNtcChQUWdldHZhbHVlKHJl cywgaSwgNCksICJ0IikgPT0gMCkKLQkJCWFkZF9yb2xlX2F0dHJpYnV0ZSgmYnVmLCBfKCJD cmVhdGUgREIiKSk7CisJCQlhZGRfcm9sZV9hdHRyaWJ1dGUoJmJ1ZiwgXygiQ3JlYXRlIERC IiksIHZlcmJvc2UpOwogCiAJCWlmIChzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIDUpLCAi dCIpICE9IDApCi0JCQlhZGRfcm9sZV9hdHRyaWJ1dGUoJmJ1ZiwgXygiQ2Fubm90IGxvZ2lu IikpOworCQkJYWRkX3JvbGVfYXR0cmlidXRlKCZidWYsIF8oIkNhbm5vdCBsb2dpbiIpLCB2 ZXJib3NlKTsKIAotCQlpZiAoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCAodmVyYm9zZSA/ IDEwIDogOSkpLCAidCIpID09IDApCi0JCQlhZGRfcm9sZV9hdHRyaWJ1dGUoJmJ1ZiwgXygi UmVwbGljYXRpb24iKSk7CisJCWlmIChzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIDgpLCAi dCIpID09IDApCisJCQlhZGRfcm9sZV9hdHRyaWJ1dGUoJmJ1ZiwgXygiUmVwbGljYXRpb24i KSwgdmVyYm9zZSk7CiAKIAkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gOTA1MDApCi0JCQlpZiAo c3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCAodmVyYm9zZSA/IDExIDogMTApKSwgInQiKSA9 PSAwKQotCQkJCWFkZF9yb2xlX2F0dHJpYnV0ZSgmYnVmLCBfKCJCeXBhc3MgUkxTIikpOwor CQkJaWYgKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgMTApLCAidCIpID09IDApCisJCQkJ YWRkX3JvbGVfYXR0cmlidXRlKCZidWYsIF8oIkJ5cGFzcyBSTFMiKSwgdmVyYm9zZSk7CiAK IAkJY29ubnMgPSBhdG9pKFBRZ2V0dmFsdWUocmVzLCBpLCA2KSk7CiAJCWlmIChjb25ucyA+ PSAwKQpAQCAtMzczNSwxMCArMzc2OSwxNSBAQCBkZXNjcmliZVJvbGVzKGNvbnN0IGNoYXIg KnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93U3lzdGVtKQogCiAJCXByaW50VGFi bGVBZGRDZWxsKCZjb250LCBhdHRyW2ldLCBmYWxzZSwgZmFsc2UpOwogCi0JCXByaW50VGFi bGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgOCksIGZhbHNlLCBmYWxzZSk7 CisJCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgOSksIGZh bHNlLCBmYWxzZSk7CiAKIAkJaWYgKHZlcmJvc2UpCi0JCQlwcmludFRhYmxlQWRkQ2VsbCgm Y29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDkpLCBmYWxzZSwgZmFsc2UpOworCQl7CisJCQlp ZiAocHNldC5zdmVyc2lvbiA+PSA5MDUwMCkKKwkJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29u dCwgUFFnZXR2YWx1ZShyZXMsIGksIDExKSwgZmFsc2UsIGZhbHNlKTsKKwkJCWVsc2UKKwkJ CQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDEwKSwgZmFs c2UsIGZhbHNlKTsKKwkJfQogCX0KIAl0ZXJtUFFFeHBCdWZmZXIoJmJ1Zik7CiAKQEAgLTM3 NTQsMTAgKzM3OTMsMTcgQEAgZGVzY3JpYmVSb2xlcyhjb25zdCBjaGFyICpwYXR0ZXJuLCBi b29sIHZlcmJvc2UsIGJvb2wgc2hvd1N5c3RlbSkKIH0KIAogc3RhdGljIHZvaWQKLWFkZF9y b2xlX2F0dHJpYnV0ZShQUUV4cEJ1ZmZlciBidWYsIGNvbnN0IGNoYXIgKmNvbnN0IHN0cikK K2FkZF9yb2xlX2F0dHJpYnV0ZShQUUV4cEJ1ZmZlciBidWYsCisJCQkJICAgY29uc3QgY2hh ciAqY29uc3Qgc3RyLAorCQkJCSAgIGJvb2wgdmVyYm9zZSkKIHsKIAlpZiAoYnVmLT5sZW4g PiAwKQotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihidWYsICIsICIpOworCXsKKwkJaWYgKHBz ZXQuc3ZlcnNpb24gPj0gMTYwMDAwKQorCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoYnVmLCB2 ZXJib3NlID8gIlxuIiA6ICIsICIpOworCQllbHNlCisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cihidWYsICIsICIpOworCX0KIAogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGJ1Ziwgc3RyKTsK IH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0CmluZGV4IDk1NmU0NzU0NDcuLjM5 NmVhYTg0OTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dApAQCAtNjYwNywz ICs2NjA3LDUyIEBAIGNyb3NzLWRhdGFiYXNlIHJlZmVyZW5jZXMgYXJlIG5vdCBpbXBsZW1l bnRlZDogIm5vLnN1Y2guZGF0YWJhc2UiLiJuby5zdWNoLnNjaGVtCiBjcm9zcy1kYXRhYmFz ZSByZWZlcmVuY2VzIGFyZSBub3QgaW1wbGVtZW50ZWQ6ICJuby5zdWNoLmRhdGFiYXNlIi4i bm8uc3VjaC5zY2hlbWEiLiJuby5zdWNoLmRhdGEudHlwZSIKIFxkWCAibm8uc3VjaC5kYXRh YmFzZSIuIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC5leHRlbmRlZC5zdGF0aXN0aWNzIgog Y3Jvc3MtZGF0YWJhc2UgcmVmZXJlbmNlcyBhcmUgbm90IGltcGxlbWVudGVkOiAibm8uc3Vj aC5kYXRhYmFzZSIuIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC5leHRlbmRlZC5zdGF0aXN0 aWNzIgorLS0gY2hlY2sgXGR1CitDUkVBVEUgUk9MRSByZWdyZXNzX2R1X3JvbGUwOworQ1JF QVRFIFJPTEUgcmVncmVzc19kdV9yb2xlMTsKK0NSRUFURSBST0xFIHJlZ3Jlc3NfZHVfcm9s ZTIgTE9HSU4gQ1JFQVRFUk9MRSBCWVBBU1NSTFMgUkVQTElDQVRJT04gQ1JFQVRFREIgTk9J TkhFUklUIENPTk5FQ1RJT04gTElNSVQgMyBWQUxJRCBVTlRJTCAnaW5maW5pdHknOworQ1JF QVRFIFJPTEUgcmVncmVzc19kdV9hZG1pbiBMT0dJTiBDUkVBVEVST0xFOworQ09NTUVOVCBP TiBST0xFIHJlZ3Jlc3NfZHVfcm9sZTAgSVMgJ0Rlc2NyaXB0aW9uIGZvciByZWdyZXNzX2R1 X3JvbGUwJzsKK0NPTU1FTlQgT04gUk9MRSByZWdyZXNzX2R1X3JvbGUxIElTICdEZXNjcmlw dGlvbiBmb3IgcmVncmVzc19kdV9yb2xlMSc7CitDT01NRU5UIE9OIFJPTEUgcmVncmVzc19k dV9yb2xlMiBJUyAnRGVzY3JpcHRpb24gZm9yIHJlZ3Jlc3NfZHVfcm9sZTInOworQ09NTUVO VCBPTiBST0xFIHJlZ3Jlc3NfZHVfYWRtaW4gSVMgJ0Rlc2NyaXB0aW9uIGZvciByZWdyZXNz X2R1X2FkbWluJzsKK0dSQU5UIHJlZ3Jlc3NfZHVfcm9sZTAgVE8gcmVncmVzc19kdV9hZG1p biBXSVRIIEFETUlOIFRSVUU7CitHUkFOVCByZWdyZXNzX2R1X3JvbGUxIFRPIHJlZ3Jlc3Nf ZHVfYWRtaW4gV0lUSCBBRE1JTiBUUlVFOworR1JBTlQgcmVncmVzc19kdV9yb2xlMiBUTyBy ZWdyZXNzX2R1X2FkbWluIFdJVEggQURNSU4gVFJVRTsKK0dSQU5UIHJlZ3Jlc3NfZHVfcm9s ZTAgVE8gcmVncmVzc19kdV9yb2xlMSBXSVRIIEFETUlOIFRSVUUsICBJTkhFUklUIFRSVUUs ICBTRVQgVFJVRSAgR1JBTlRFRCBCWSByZWdyZXNzX2R1X2FkbWluOworR1JBTlQgcmVncmVz c19kdV9yb2xlMCBUTyByZWdyZXNzX2R1X3JvbGUyIFdJVEggQURNSU4gVFJVRSwgIElOSEVS SVQgRkFMU0UsIFNFVCBGQUxTRSBHUkFOVEVEIEJZIHJlZ3Jlc3NfZHVfYWRtaW47CitHUkFO VCByZWdyZXNzX2R1X3JvbGUxIFRPIHJlZ3Jlc3NfZHVfcm9sZTIgV0lUSCBBRE1JTiBUUlVF ICwgSU5IRVJJVCBGQUxTRSwgU0VUIFRSVUUgIEdSQU5URUQgQlkgcmVncmVzc19kdV9hZG1p bjsKK0dSQU5UIHJlZ3Jlc3NfZHVfcm9sZTAgVE8gcmVncmVzc19kdV9yb2xlMSBXSVRIIEFE TUlOIEZBTFNFLCBJTkhFUklUIFRSVUUsICBTRVQgRkFMU0UgR1JBTlRFRCBCWSByZWdyZXNz X2R1X3JvbGUxOworR1JBTlQgcmVncmVzc19kdV9yb2xlMCBUTyByZWdyZXNzX2R1X3JvbGUy IFdJVEggQURNSU4gRkFMU0UsIElOSEVSSVQgVFJVRSAsIFNFVCBUUlVFICBHUkFOVEVEIEJZ IHJlZ3Jlc3NfZHVfcm9sZTE7CitHUkFOVCByZWdyZXNzX2R1X3JvbGUwIFRPIHJlZ3Jlc3Nf ZHVfcm9sZTEgV0lUSCBBRE1JTiBGQUxTRSwgSU5IRVJJVCBGQUxTRSwgU0VUIFRSVUUgIEdS QU5URUQgQlkgcmVncmVzc19kdV9yb2xlMjsKK0dSQU5UIHJlZ3Jlc3NfZHVfcm9sZTAgVE8g cmVncmVzc19kdV9yb2xlMiBXSVRIIEFETUlOIEZBTFNFLCBJTkhFUklUIEZBTFNFLCBTRVQg RkFMU0UgR1JBTlRFRCBCWSByZWdyZXNzX2R1X3JvbGUyOworXGR1IHJlZ3Jlc3NfZHVfcm9s ZSoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2Ygcm9sZXMKKyAgICBSb2xlIG5hbWUgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICBBdHRyaWJ1dGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgIE1lbWJlciBvZiAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJl Z3Jlc3NfZHVfcm9sZTAgfCBDYW5ub3QgbG9naW4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB7fQorIHJlZ3Jlc3NfZHVfcm9sZTEgfCBD YW5ub3QgbG9naW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCB7cmVncmVzc19kdV9yb2xlMH0KKyByZWdyZXNzX2R1X3JvbGUyIHwgTm8g aW5oZXJpdGFuY2UsIENyZWF0ZSByb2xlLCBDcmVhdGUgREIsIFJlcGxpY2F0aW9uLCBCeXBh c3MgUkxTK3wge3JlZ3Jlc3NfZHVfcm9sZTAscmVncmVzc19kdV9yb2xlMX0KKyAgICAgICAg ICAgICAgICAgIHwgMyBjb25uZWN0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgK3wgCisgICAgICAgICAgICAgICAgICB8IFBhc3N3b3Jk IHZhbGlkIHVudGlsIGluZmluaXR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IAorCitcZHUrIHJlZ3Jlc3NfZHVfcm9sZSoKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHJv bGVzCisgICAgUm9sZSBuYW1lICAgICB8ICAgICAgICAgIEF0dHJpYnV0ZXMgICAgICAgICAg IHwgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbWJlciBvZiAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc19kdV9yb2xlMCB8 IENhbm5vdCBsb2dpbiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24g Zm9yIHJlZ3Jlc3NfZHVfcm9sZTAKKyByZWdyZXNzX2R1X3JvbGUxIHwgQ2Fubm90IGxvZ2lu ICAgICAgICAgICAgICAgICAgfCByZWdyZXNzX2R1X3JvbGUwIGZyb20gcmVncmVzc19kdV9h ZG1pbiAoYWRtaW4sIGluaGVyaXQsIHNldCkrfCBEZXNjcmlwdGlvbiBmb3IgcmVncmVzc19k dV9yb2xlMQorICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IHJlZ3Jlc3NfZHVfcm9sZTAgZnJvbSByZWdyZXNzX2R1X3JvbGUxIChpbmhlcml0 KSAgICAgICAgICAgICt8IAorICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IHJlZ3Jlc3NfZHVfcm9sZTAgZnJvbSByZWdyZXNzX2R1X3JvbGUy IChzZXQpICAgICAgICAgICAgICAgICB8IAorIHJlZ3Jlc3NfZHVfcm9sZTIgfCBObyBpbmhl cml0YW5jZSAgICAgICAgICAgICAgICt8IHJlZ3Jlc3NfZHVfcm9sZTAgZnJvbSByZWdyZXNz X2R1X2FkbWluIChhZG1pbikgICAgICAgICAgICAgICt8IERlc2NyaXB0aW9uIGZvciByZWdy ZXNzX2R1X3JvbGUyCisgICAgICAgICAgICAgICAgICB8IENyZWF0ZSByb2xlICAgICAgICAg ICAgICAgICAgK3wgcmVncmVzc19kdV9yb2xlMCBmcm9tIHJlZ3Jlc3NfZHVfcm9sZTEgKGlu aGVyaXQsIHNldCkgICAgICAgK3wgCisgICAgICAgICAgICAgICAgICB8IENyZWF0ZSBEQiAg ICAgICAgICAgICAgICAgICAgK3wgcmVncmVzc19kdV9yb2xlMCBmcm9tIHJlZ3Jlc3NfZHVf cm9sZTIgKGVtcHR5KSAgICAgICAgICAgICAgK3wgCisgICAgICAgICAgICAgICAgICB8IFJl cGxpY2F0aW9uICAgICAgICAgICAgICAgICAgK3wgcmVncmVzc19kdV9yb2xlMSBmcm9tIHJl Z3Jlc3NfZHVfYWRtaW4gKGFkbWluLCBzZXQpICAgICAgICAgIHwgCisgICAgICAgICAgICAg ICAgICB8IEJ5cGFzcyBSTFMgICAgICAgICAgICAgICAgICAgK3wgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgCisgICAg ICAgICAgICAgICAgICB8IDMgY29ubmVjdGlvbnMgICAgICAgICAgICAgICAgK3wgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgCisgICAgICAgICAgICAgICAgICB8IFBhc3N3b3JkIHZhbGlkIHVudGlsIGluZmluaXR5 IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgCisKK0RST1AgUk9MRSByZWdyZXNzX2R1X3JvbGUwOworRFJPUCBST0xF IHJlZ3Jlc3NfZHVfcm9sZTE7CitEUk9QIFJPTEUgcmVncmVzc19kdV9yb2xlMjsKK0RST1Ag Uk9MRSByZWdyZXNzX2R1X2FkbWluOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvcHNxbC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wc3FsLnNxbAppbmRleCA2MzBm NjM4ZjAyLi41ZWY1ZTQwZTQ2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w c3FsLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wc3FsLnNxbApAQCAtMTgxNSwz ICsxODE1LDMzIEBAIERST1AgRlVOQ1RJT04gcHNxbF9lcnJvcjsKIFxkUCAibm8uc3VjaC5k YXRhYmFzZSIuIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC5wYXJ0aXRpb25lZC5yZWxhdGlv biIKIFxkVCAibm8uc3VjaC5kYXRhYmFzZSIuIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC5k YXRhLnR5cGUiCiBcZFggIm5vLnN1Y2guZGF0YWJhc2UiLiJuby5zdWNoLnNjaGVtYSIuIm5v LnN1Y2guZXh0ZW5kZWQuc3RhdGlzdGljcyIKKworLS0gY2hlY2sgXGR1CitDUkVBVEUgUk9M RSByZWdyZXNzX2R1X3JvbGUwOworQ1JFQVRFIFJPTEUgcmVncmVzc19kdV9yb2xlMTsKK0NS RUFURSBST0xFIHJlZ3Jlc3NfZHVfcm9sZTIgTE9HSU4gQ1JFQVRFUk9MRSBCWVBBU1NSTFMg UkVQTElDQVRJT04gQ1JFQVRFREIgTk9JTkhFUklUIENPTk5FQ1RJT04gTElNSVQgMyBWQUxJ RCBVTlRJTCAnaW5maW5pdHknOworQ1JFQVRFIFJPTEUgcmVncmVzc19kdV9hZG1pbiBMT0dJ TiBDUkVBVEVST0xFOworQ09NTUVOVCBPTiBST0xFIHJlZ3Jlc3NfZHVfcm9sZTAgSVMgJ0Rl c2NyaXB0aW9uIGZvciByZWdyZXNzX2R1X3JvbGUwJzsKK0NPTU1FTlQgT04gUk9MRSByZWdy ZXNzX2R1X3JvbGUxIElTICdEZXNjcmlwdGlvbiBmb3IgcmVncmVzc19kdV9yb2xlMSc7CitD T01NRU5UIE9OIFJPTEUgcmVncmVzc19kdV9yb2xlMiBJUyAnRGVzY3JpcHRpb24gZm9yIHJl Z3Jlc3NfZHVfcm9sZTInOworQ09NTUVOVCBPTiBST0xFIHJlZ3Jlc3NfZHVfYWRtaW4gSVMg J0Rlc2NyaXB0aW9uIGZvciByZWdyZXNzX2R1X2FkbWluJzsKKworR1JBTlQgcmVncmVzc19k dV9yb2xlMCBUTyByZWdyZXNzX2R1X2FkbWluIFdJVEggQURNSU4gVFJVRTsKK0dSQU5UIHJl Z3Jlc3NfZHVfcm9sZTEgVE8gcmVncmVzc19kdV9hZG1pbiBXSVRIIEFETUlOIFRSVUU7CitH UkFOVCByZWdyZXNzX2R1X3JvbGUyIFRPIHJlZ3Jlc3NfZHVfYWRtaW4gV0lUSCBBRE1JTiBU UlVFOworCitHUkFOVCByZWdyZXNzX2R1X3JvbGUwIFRPIHJlZ3Jlc3NfZHVfcm9sZTEgV0lU SCBBRE1JTiBUUlVFLCAgSU5IRVJJVCBUUlVFLCAgU0VUIFRSVUUgIEdSQU5URUQgQlkgcmVn cmVzc19kdV9hZG1pbjsKK0dSQU5UIHJlZ3Jlc3NfZHVfcm9sZTAgVE8gcmVncmVzc19kdV9y b2xlMiBXSVRIIEFETUlOIFRSVUUsICBJTkhFUklUIEZBTFNFLCBTRVQgRkFMU0UgR1JBTlRF RCBCWSByZWdyZXNzX2R1X2FkbWluOworR1JBTlQgcmVncmVzc19kdV9yb2xlMSBUTyByZWdy ZXNzX2R1X3JvbGUyIFdJVEggQURNSU4gVFJVRSAsIElOSEVSSVQgRkFMU0UsIFNFVCBUUlVF ICBHUkFOVEVEIEJZIHJlZ3Jlc3NfZHVfYWRtaW47CitHUkFOVCByZWdyZXNzX2R1X3JvbGUw IFRPIHJlZ3Jlc3NfZHVfcm9sZTEgV0lUSCBBRE1JTiBGQUxTRSwgSU5IRVJJVCBUUlVFLCAg U0VUIEZBTFNFIEdSQU5URUQgQlkgcmVncmVzc19kdV9yb2xlMTsKK0dSQU5UIHJlZ3Jlc3Nf ZHVfcm9sZTAgVE8gcmVncmVzc19kdV9yb2xlMiBXSVRIIEFETUlOIEZBTFNFLCBJTkhFUklU IFRSVUUgLCBTRVQgVFJVRSAgR1JBTlRFRCBCWSByZWdyZXNzX2R1X3JvbGUxOworR1JBTlQg cmVncmVzc19kdV9yb2xlMCBUTyByZWdyZXNzX2R1X3JvbGUxIFdJVEggQURNSU4gRkFMU0Us IElOSEVSSVQgRkFMU0UsIFNFVCBUUlVFICBHUkFOVEVEIEJZIHJlZ3Jlc3NfZHVfcm9sZTI7 CitHUkFOVCByZWdyZXNzX2R1X3JvbGUwIFRPIHJlZ3Jlc3NfZHVfcm9sZTIgV0lUSCBBRE1J TiBGQUxTRSwgSU5IRVJJVCBGQUxTRSwgU0VUIEZBTFNFIEdSQU5URUQgQlkgcmVncmVzc19k dV9yb2xlMjsKKworXGR1IHJlZ3Jlc3NfZHVfcm9sZSoKK1xkdSsgcmVncmVzc19kdV9yb2xl KgorCitEUk9QIFJPTEUgcmVncmVzc19kdV9yb2xlMDsKK0RST1AgUk9MRSByZWdyZXNzX2R1 X3JvbGUxOworRFJPUCBST0xFIHJlZ3Jlc3NfZHVfcm9sZTI7CitEUk9QIFJPTEUgcmVncmVz c19kdV9hZG1pbjsKLS0gCjIuMzQuMQoK --------------zCpCxbQO38yypuXp7ZIjtZV0--