Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1t2PIW-003amr-Me for pgsql-hackers@arkaria.postgresql.org; Sun, 20 Oct 2024 06:20:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1t2PIT-00CIqc-4E for pgsql-hackers@arkaria.postgresql.org; Sun, 20 Oct 2024 06:20:13 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1t2PIR-00CIqU-9V for pgsql-hackers@lists.postgresql.org; Sun, 20 Oct 2024 06:20:13 +0000 Received: from fout-a8-smtp.messagingengine.com ([103.168.172.151]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1t2PIJ-0021Aj-CM for pgsql-hackers@lists.postgresql.org; Sun, 20 Oct 2024 06:20:11 +0000 Received: from phl-compute-11.internal (phl-compute-11.phl.internal [10.202.2.51]) by mailfout.phl.internal (Postfix) with ESMTP id 5D81F1380226 for ; Sun, 20 Oct 2024 02:20:00 -0400 (EDT) Received: from phl-imap-02 ([10.202.2.81]) by phl-compute-11.internal (MEProxy); Sun, 20 Oct 2024 02:20:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=compiler.org; h= cc:content-type:content-type:date:date:from:from:in-reply-to :message-id:mime-version:reply-to:subject:subject:to:to; s=fm2; t=1729405200; x=1729491600; bh=xGGqIsHOVKVI+NqRh/sCLedRe3/9yTu2 jkAtxYWqH3s=; b=iSsTK3Zvc18LtqwuKuKONVHg/eoTH2TRtALXWrR4l37pH3Et NDrZCjnJA/yhi9t/aF0Mw09dQVKANziPH6Jpy5Yqxobx2D1iuYaFj3XjLtEb0S3U NCiCkWBfv7ClFEoW2Pj+CoOM1CircHZapy1DArb6Tjp4r5ywiwHRbbdLH8HETbyc A/VD2k8jilyqs9haW14jYkZ+X3K/DyIRrMbUsJXzWQoGtMRAIzMz0hYUovOQLe/m dvzwIGGhdqbYIZjxouOoaIQjR3wdNBln8W4Wxd/Xl3F114FhHs8RGn9t9C0LRAgY a4Qsm7tw7a0B5XhQIri7UQoyHGnel2djPAjBQQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:message-id :mime-version:reply-to:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t= 1729405200; x=1729491600; bh=xGGqIsHOVKVI+NqRh/sCLedRe3/9yTu2jkA txYWqH3s=; b=eMDp4Nw7gc/lVqxdfxPj1d2/OH7aK9HvXUjsFD+jClQuvcPHB1v mDxgkX4THRTbkyXP5YqrTzw9DAMuXRpC0hCt054OcVrv1KRFQOlPJb4iBZlSume9 iFcaNu+28mQqH6aL2DiG49FYfgYiIArG3cjPfeOGKu9MymTLFlL+xiK6Iq7EZ5KF Cvs7XaUkuKLs7TLYs8De4D7XsBNEf1k6mhrokf9pHRsoNG9MA76i5bmJQpMCqu8P t9AToCcIwm+l8uiOZ4qPLwsZkndFUflmJQB3TMMOMXhejtjkWKvq4qzC6xaGkmDK h83UdkLbxvcn5WsZhPXmNdLq5uLo0n2tyRA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdehiedguddtkecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdp uffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecunecujfgurhepofggff fhvffkufgtsehmtderreertddtnecuhfhrohhmpedflfhovghlucflrggtohgsshhonhdf uceojhhovghlsegtohhmphhilhgvrhdrohhrgheqnecuggftrfgrthhtvghrnhepgeegud ekudeuheetudelffeftdeggfekudekhedukeegieevjeelhfekjeegteejnecuffhomhgr ihhnpehpohhsthhgrhgvshhqlhdrohhrghenucevlhhushhtvghrufhiiigvpedtnecurf grrhgrmhepmhgrihhlfhhrohhmpehjohgvlhestghomhhpihhlvghrrdhorhhgpdhnsggp rhgtphhtthhopedupdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehpghhsqhhlqd hhrggtkhgvrhhssehlihhsthhsrdhpohhsthhgrhgvshhqlhdrohhrgh X-ME-Proxy: Feedback-ID: ic6394509:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 870A6B00068; Sun, 20 Oct 2024 02:19:59 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 Date: Sun, 20 Oct 2024 08:19:39 +0200 From: "Joel Jacobson" To: pgsql-hackers@lists.postgresql.org Message-Id: Subject: Add pg_ownerships and pg_privileges system views Content-Type: multipart/mixed; boundary=be5280db90d04b738ec4f634b994d1fe List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --be5280db90d04b738ec4f634b994d1fe Content-Type: text/plain Content-Transfer-Encoding: 7bit Hi hackers, Here is an attempt to revive this patch from 2021-2022, that has been ready now for a while, thanks to pg_get_acl() function that was committed in 4564f1c and d898665. I've renamed the $subject of the email thread, to match the commitfest entry: https://commitfest.postgresql.org/50/5033/ --- Add pg_ownerships and pg_privileges system views. These new views provide a more accessible and user-friendly way to retrieve information about object ownerships and privileges. The view pg_ownerships provides access to information about object ownerships. The view pg_privileges provides access to information about explicitly granted privileges on database objects. The special grantee value "-" means the privilege is granted to PUBLIC. Example usage: CREATE ROLE alice; CREATE ROLE bob; CREATE ROLE carol; CREATE TABLE alice_table (); ALTER TABLE alice_table OWNER TO alice; REVOKE ALL ON alice_table FROM alice; GRANT SELECT ON alice_table TO bob; CREATE TABLE bob_table (); ALTER TABLE bob_table OWNER TO bob; REVOKE ALL ON bob_table FROM bob; GRANT SELECT, UPDATE ON bob_table TO carol; SELECT * FROM pg_ownerships ORDER BY owner; classid | objid | objsubid | type | schema | name | identity | owner ----------+-------+----------+-------+--------+-------------+--------------------+------- pg_class | 16388 | 0 | table | public | alice_table | public.alice_table | alice pg_class | 16391 | 0 | table | public | bob_table | public.bob_table | bob (2 rows) SELECT * FROM pg_privileges ORDER BY grantee; classid | objid | objsubid | type | schema | name | identity | grantor | grantee | privilege_type | is_grantable ----------+-------+----------+-------+--------+-------------+--------------------+---------+---------+----------------+-------------- pg_class | 16388 | 0 | table | public | alice_table | public.alice_table | alice | bob | SELECT | f pg_class | 16391 | 0 | table | public | bob_table | public.bob_table | bob | carol | SELECT | f pg_class | 16391 | 0 | table | public | bob_table | public.bob_table | bob | carol | UPDATE | f (3 rows) --- Recap: During the work on this, the need for a pg_get_acl() function was identified. Thanks to feedback from Peter Eisentraut, the view "pg_permissions" was renamed to "pg_privileges", since "permissions" is not an SQL term. David Fetter: > +1 for both this and the ownerships view. Joe Conway: > While this is interesting and probably useful for troubleshooting, it does not > provide the complete picture if what you care about is something like "what > stuff can joel do in my database". > > The reasons for this include default grants to PUBLIC and role membership, and > even that is convoluted by INHERIT/NOINHERIT role attributes. Chapman Flack expressed interest in reviewing the patch, but at that time the pg_get_acl() had not yet been committed and the view not been renamed. Michael Paquier alerted me CF bot had been red, and the patch was rebased. /Joel --be5280db90d04b738ec4f634b994d1fe Content-Disposition: attachment; filename*0="v2-0001-Add-pg_ownerships-and-pg_privileges-system-views.patc"; filename*1="h" Content-Type: application/octet-stream; name="=?UTF-8?Q?v2-0001-Add-pg=5Fownerships-and-pg=5Fprivileges-system-views.p?= =?UTF-8?Q?atch?=" Content-Transfer-Encoding: base64 RnJvbSAwY2Y0ZDBhNWZjNzU2ZjdkOThmYmVmYmQ1Y2YzMmQ5Y2FlOTdmNTE2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb2VsIEpha29ic3NvbiA8Z2l0aHViQGNvbXBpbGVy Lm9yZz4KRGF0ZTogVHVlLCA4IE9jdCAyMDI0IDE4OjM5OjA0ICswMjAwClN1YmplY3Q6IFtQ QVRDSF0gQWRkIHBnX293bmVyc2hpcHMgYW5kIHBnX3ByaXZpbGVnZXMgc3lzdGVtIHZpZXdz LgoKVGhlc2UgbmV3IHZpZXdzIHByb3ZpZGUgYSBtb3JlIGFjY2Vzc2libGUgYW5kIHVzZXIt ZnJpZW5kbHkgd2F5IHRvIHJldHJpZXZlCmluZm9ybWF0aW9uIGFib3V0IG9iamVjdCBvd25l cnNoaXBzIGFuZCBwcml2aWxlZ2VzLgoKVGhlIHZpZXcgcGdfb3duZXJzaGlwcyBwcm92aWRl cyBhY2Nlc3MgdG8gaW5mb3JtYXRpb24gYWJvdXQgb2JqZWN0IG93bmVyc2hpcHMuCgpUaGUg dmlldyBwZ19wcml2aWxlZ2VzIHByb3ZpZGVzIGFjY2VzcyB0byBpbmZvcm1hdGlvbiBhYm91 dCBleHBsaWNpdGx5CmdyYW50ZWQgcHJpdmlsZWdlcyBvbiBkYXRhYmFzZSBvYmplY3RzLiBU aGUgc3BlY2lhbCBncmFudGVlIHZhbHVlICItIiBtZWFucwp0aGUgcHJpdmlsZWdlIGlzIGdy YW50ZWQgdG8gUFVCTElDLgoKRXhhbXBsZSB1c2FnZToKCkNSRUFURSBST0xFIGFsaWNlOwpD UkVBVEUgUk9MRSBib2I7CkNSRUFURSBST0xFIGNhcm9sOwoKQ1JFQVRFIFRBQkxFIGFsaWNl X3RhYmxlICgpOwpBTFRFUiBUQUJMRSBhbGljZV90YWJsZSBPV05FUiBUTyBhbGljZTsKUkVW T0tFIEFMTCBPTiBhbGljZV90YWJsZSBGUk9NIGFsaWNlOwpHUkFOVCBTRUxFQ1QgT04gYWxp Y2VfdGFibGUgVE8gYm9iOwoKQ1JFQVRFIFRBQkxFIGJvYl90YWJsZSAoKTsKQUxURVIgVEFC TEUgYm9iX3RhYmxlIE9XTkVSIFRPIGJvYjsKUkVWT0tFIEFMTCBPTiBib2JfdGFibGUgRlJP TSBib2I7CkdSQU5UIFNFTEVDVCwgVVBEQVRFIE9OIGJvYl90YWJsZSBUTyBjYXJvbDsKClNF TEVDVCAqIEZST00gcGdfb3duZXJzaGlwcyBPUkRFUiBCWSBvd25lcjsKCiBjbGFzc2lkICB8 IG9iamlkIHwgb2Jqc3ViaWQgfCB0eXBlICB8IHNjaGVtYSB8ICAgIG5hbWUgICAgIHwgICAg ICBpZGVudGl0eSAgICAgIHwgb3duZXIKLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0KIHBnX2NsYXNzIHwgMTYzODggfCAgICAgICAgMCB8IHRhYmxlIHwgcHVibGljIHwg YWxpY2VfdGFibGUgfCBwdWJsaWMuYWxpY2VfdGFibGUgfCBhbGljZQogcGdfY2xhc3MgfCAx NjM5MSB8ICAgICAgICAwIHwgdGFibGUgfCBwdWJsaWMgfCBib2JfdGFibGUgICB8IHB1Ymxp Yy5ib2JfdGFibGUgICB8IGJvYgooMiByb3dzKQoKU0VMRUNUICogRlJPTSBwZ19wcml2aWxl Z2VzIE9SREVSIEJZIGdyYW50ZWU7CgogY2xhc3NpZCAgfCBvYmppZCB8IG9ianN1YmlkIHwg dHlwZSAgfCBzY2hlbWEgfCAgICBuYW1lICAgICB8ICAgICAgaWRlbnRpdHkgICAgICB8IGdy YW50b3IgfCBncmFudGVlIHwgcHJpdmlsZWdlX3R5cGUgfCBpc19ncmFudGFibGUKLS0tLS0t LS0tLSstLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLQogcGdfY2xhc3MgfCAxNjM4OCB8ICAgICAgICAwIHwgdGFi bGUgfCBwdWJsaWMgfCBhbGljZV90YWJsZSB8IHB1YmxpYy5hbGljZV90YWJsZSB8IGFsaWNl ICAgfCBib2IgICAgIHwgU0VMRUNUICAgICAgICAgfCBmCiBwZ19jbGFzcyB8IDE2MzkxIHwg ICAgICAgIDAgfCB0YWJsZSB8IHB1YmxpYyB8IGJvYl90YWJsZSAgIHwgcHVibGljLmJvYl90 YWJsZSAgIHwgYm9iICAgICB8IGNhcm9sICAgfCBTRUxFQ1QgICAgICAgICB8IGYKIHBnX2Ns YXNzIHwgMTYzOTEgfCAgICAgICAgMCB8IHRhYmxlIHwgcHVibGljIHwgYm9iX3RhYmxlICAg fCBwdWJsaWMuYm9iX3RhYmxlICAgfCBib2IgICAgIHwgY2Fyb2wgICB8IFVQREFURSAgICAg ICAgIHwgZgooMyByb3dzKQotLS0KIGRvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCAg ICAgICB8IDI2MCArKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL2Nh dGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCB8ICAzOCArKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3J1bGVzLm91dCAgfCAgMzggKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAzMzYgaW5z ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dt bCBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAppbmRleCA2MWQyOGU3MDFmLi5m MDQzZTY3NWRlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCkBAIC0xMTEsNiArMTExLDE2 IEBACiAgICAgICA8ZW50cnk+bWF0ZXJpYWxpemVkIHZpZXdzPC9lbnRyeT4KICAgICAgPC9y b3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGluayBsaW5rZW5kPSJ2aWV3LXBn LW93bmVyc2hpcHMiPjxzdHJ1Y3RuYW1lPnBnX293bmVyc2hpcHM8L3N0cnVjdG5hbWU+PC9s aW5rPjwvZW50cnk+CisgICAgICA8ZW50cnk+b3duZXJzaGlwczwvZW50cnk+CisgICAgIDwv cm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpbmsgbGlua2VuZD0idmlldy1w Zy1wcml2aWxlZ2VzIj48c3RydWN0bmFtZT5wZ19wcml2aWxlZ2VzPC9zdHJ1Y3RuYW1lPjwv bGluaz48L2VudHJ5PgorICAgICAgPGVudHJ5PnByaXZpbGVnZXM8L2VudHJ5PgorICAgICA8 L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5PjxsaW5rIGxpbmtlbmQ9InZpZXct cGctcG9saWNpZXMiPjxzdHJ1Y3RuYW1lPnBnX3BvbGljaWVzPC9zdHJ1Y3RuYW1lPjwvbGlu az48L2VudHJ5PgogICAgICAgPGVudHJ5PnBvbGljaWVzPC9lbnRyeT4KQEAgLTE4MzksNiAr MTg0OSwyNTYgQEAgU0VMRUNUICogRlJPTSBwZ19sb2NrcyBwbCBMRUZUIEpPSU4gcGdfcHJl cGFyZWRfeGFjdHMgcHB4CiAKICA8L3NlY3QxPgogCisgPHNlY3QxIGlkPSJ2aWV3LXBnLW93 bmVyc2hpcHMiPgorICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfb3duZXJzaGlwczwvc3RydWN0 bmFtZT48L3RpdGxlPgorCisgIDxpbmRleHRlcm0gem9uZT0idmlldy1wZy1vd25lcnNoaXBz Ij4KKyAgIDxwcmltYXJ5PnBnX293bmVyc2hpcHM8L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJt PgorCisgIDxwYXJhPgorICAgVGhlIHZpZXcgPHN0cnVjdG5hbWU+cGdfb3duZXJzaGlwczwv c3RydWN0bmFtZT4gcHJvdmlkZXMgYWNjZXNzIHRvIGluZm9ybWF0aW9uIGFib3V0IG9iamVj dCBvd25lcnNoaXBzLgorICA8L3BhcmE+CisKKyAgPHRhYmxlPgorICAgPHRpdGxlPjxzdHJ1 Y3RuYW1lPnBnX293bmVyc2hpcHM8L3N0cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxlPgorICAg PHRncm91cCBjb2xzPSIxIj4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+CisgICAgICA8ZW50 cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmlu aXRpb24iPgorICAgICAgIENvbHVtbiBUeXBlCisgICAgICA8L3BhcmE+CisgICAgICA8cGFy YT4KKyAgICAgICBEZXNjcmlwdGlvbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwv cm93PgorICAgIDwvdGhlYWQ+CisKKyAgICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8 ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2Rl ZmluaXRpb24iPgorICAgICAgICA8c3RydWN0ZmllbGQ+Y2xhc3NpZDwvc3RydWN0ZmllbGQ+ IDx0eXBlPnJlZ2NsYXNzPC90eXBlPgorICAgICAgICAocmVmZXJlbmNlcyA8bGluayBsaW5r ZW5kPSJjYXRhbG9nLXBnLWNsYXNzIj48c3RydWN0bmFtZT5wZ19jbGFzczwvc3RydWN0bmFt ZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFy YT4KKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgPHR5cGU+cmVnY2xhc3M8L3R5cGU+IE9J RCBvZiB0aGUgc3lzdGVtIGNhdGFsb2cgdGhlIG93bmVkIG9iamVjdCBpcyBpbgorICAgICAg PC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50 cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmlu aXRpb24iPgorICAgICAgICA8c3RydWN0ZmllbGQ+b2JqaWQ8L3N0cnVjdGZpZWxkPiA8dHlw ZT5vaWQ8L3R5cGU+CisgICAgICAgIChyZWZlcmVuY2VzIGFueSBPSUQgY29sdW1uKQorICAg ICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBPSUQgb2YgdGhlIHNwZWNp ZmljIG93bmVkIG9iamVjdAorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93Pgor CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5v YmpzdWJpZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDQ8L3R5cGU+CisgICAgICA8L3BhcmE+ CisgICAgICA8cGFyYT4KKyAgICAgICBGb3IgYSB0YWJsZSBjb2x1bW4sIHRoaXMgaXMgdGhl IGNvbHVtbiBudW1iZXIgKHRoZQorICAgICAgIDxzdHJ1Y3RmaWVsZD5vYmppZDwvc3RydWN0 ZmllbGQ+IGFuZCA8c3RydWN0ZmllbGQ+Y2xhc3NpZDwvc3RydWN0ZmllbGQ+IHJlZmVyIHRv IHRoZQorICAgICAgIHRhYmxlIGl0c2VsZikuICBGb3IgYWxsIG90aGVyIG9iamVjdCB0eXBl cywgdGhpcyBjb2x1bW4gaXMKKyAgICAgICB6ZXJvLgorICAgICAgPC9wYXJhPjwvZW50cnk+ CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxv Z190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAg IDxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KKyAg ICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgSWRlbnRpZmllcyB0aGUgdHlwZSBv ZiBkYXRhYmFzZSBvYmplY3QKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4K KworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+ c2NoZW1hPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KKyAgICAgIDwvcGFyYT4K KyAgICAgIDxwYXJhPgorICAgICAgVGhlIHNjaGVtYSBuYW1lIHRoYXQgdGhlIG9iamVjdCBi ZWxvbmdzIGluLCBvciBOVUxMIGZvciBvYmplY3QgdHlwZXMgdGhhdCBkbyBub3QgYmVsb25n IHRvIHNjaGVtYXMKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAg ICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJh IHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+bmFtZTwv c3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8 cGFyYT4KKyAgICAgIFRoZSBuYW1lIG9mIHRoZSBvYmplY3QsIHF1b3RlZCBpZiBuZWNlc3Nh cnksIGlmIHRoZSBuYW1lIChhbG9uZyB3aXRoIHNjaGVtYSBuYW1lLCBpZiBwZXJ0aW5lbnQp IGlzIHN1ZmZpY2llbnQgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhlIG9iamVjdCwgb3RoZXJ3 aXNlIE5VTEwKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8 cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+aWRlbnRpdHk8 L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAg PHBhcmE+CisgICAgICBUaGUgY29tcGxldGUgb2JqZWN0IGlkZW50aXR5LCB3aXRoIHRoZSBw cmVjaXNlIGZvcm1hdCBkZXBlbmRpbmcgb24gb2JqZWN0IHR5cGUsIGFuZCBlYWNoIG5hbWUg d2l0aGluIHRoZSBmb3JtYXQgYmVpbmcgc2NoZW1hLXF1YWxpZmllZCBhbmQgcXVvdGVkIGFz IG5lY2Vzc2FyeQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAg IDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5vd25lcjwv c3RydWN0ZmllbGQ+IDx0eXBlPnJlZ3JvbGU8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMg PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1hdXRoaWQiPjxzdHJ1Y3RuYW1lPnBnX2F1dGhp ZDwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5yb2xuYW1lPC9zdHJ1Y3RmaWVs ZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBPd25lciBvZiB0aGUg b2JqZWN0CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICA8L3Ri b2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+CisKKyA8L3NlY3QxPgorCisgPHNlY3Qx IGlkPSJ2aWV3LXBnLXByaXZpbGVnZXMiPgorICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfcHJp dmlsZWdlczwvc3RydWN0bmFtZT48L3RpdGxlPgorCisgIDxpbmRleHRlcm0gem9uZT0idmll dy1wZy1wcml2aWxlZ2VzIj4KKyAgIDxwcmltYXJ5PnBnX3ByaXZpbGVnZXM8L3ByaW1hcnk+ CisgIDwvaW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAgVGhlIHZpZXcgPHN0cnVjdG5hbWU+ cGdfcHJpdmlsZWdlczwvc3RydWN0bmFtZT4gcHJvdmlkZXMgYWNjZXNzIHRvIGluZm9ybWF0 aW9uIGFib3V0IGV4cGxpY2l0bHkgZ3JhbnRlZCBwcml2aWxlZ2VzIG9uIGRhdGFiYXNlIG9i amVjdHMuCisgICBUaGUgc3BlY2lhbCA8c3RydWN0bmFtZT5ncmFudGVlPC9zdHJ1Y3RuYW1l PiB2YWx1ZSA8bGl0ZXJhbD4tPC9saXRlcmFsPiBtZWFucyB0aGUgcHJpdmlsZWdlIGlzIGdy YW50ZWQgdG8gPGxpdGVyYWw+UFVCTElDPC9saXRlcmFsPi4KKyAgPC9wYXJhPgorCisgIDx0 YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wcml2aWxlZ2VzPC9zdHJ1Y3RuYW1l PiBDb2x1bW5zPC90aXRsZT4KKyAgIDx0Z3JvdXAgY29scz0iMSI+CisgICAgPHRoZWFkPgor ICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxw YXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICBDb2x1bW4gVHlwZQorICAg ICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgRGVzY3JpcHRpb24KKyAgICAgIDwv cGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3RoZWFkPgorCisgICAgPHRib2R5 PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICAgPHN0cnVjdGZpZWxk PmNsYXNzaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5yZWdjbGFzczwvdHlwZT4KKyAgICAgICAg KHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1jbGFzcyI+PHN0cnVjdG5h bWU+cGdfY2xhc3M8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+b2lkPC9zdHJ1 Y3RmaWVsZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIDx0 eXBlPnJlZ2NsYXNzPC90eXBlPiBPSUQgb2YgdGhlIHN5c3RlbSBjYXRhbG9nIHRoZSBncmFu dGVkIG9iamVjdCBpcyBpbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93Pgor CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgICA8c3RydWN0ZmllbGQ+ b2JqaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAgIChyZWZlcmVu Y2VzIGFueSBPSUQgY29sdW1uKQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAg ICAgIFRoZSBPSUQgb2YgdGhlIHNwZWNpZmljIGdyYW50ZWQgb2JqZWN0CisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CisgICAgICAgPHN0cnVjdGZpZWxkPm9ianN1YmlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ aW50NDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIEZvciBh IHRhYmxlIGNvbHVtbiwgdGhpcyBpcyB0aGUgY29sdW1uIG51bWJlciAodGhlCisgICAgICAg PHN0cnVjdGZpZWxkPm9iamlkPC9zdHJ1Y3RmaWVsZD4gYW5kIDxzdHJ1Y3RmaWVsZD5jbGFz c2lkPC9zdHJ1Y3RmaWVsZD4gcmVmZXIgdG8gdGhlCisgICAgICAgdGFibGUgaXRzZWxmKS4g IEZvciBhbGwgb3RoZXIgb2JqZWN0IHR5cGVzLCB0aGlzIGNvbHVtbiBpcworICAgICAgIHpl cm8uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJj b2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZp ZWxkPiA8dHlwZT50ZXh0PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+Cisg ICAgICBJZGVudGlmaWVzIHRoZSB0eXBlIG9mIGRhdGFiYXNlIG9iamVjdAorICAgICAgPC9w YXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkg cm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRp b24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5zY2hlbWE8L3N0cnVjdGZpZWxkPiA8dHlwZT50 ZXh0PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICBUaGUgc2No ZW1hIG5hbWUgdGhhdCB0aGUgb2JqZWN0IGJlbG9uZ3MgaW4sIG9yIE5VTEwgZm9yIG9iamVj dCB0eXBlcyB0aGF0IGRvIG5vdCBiZWxvbmcgdG8gc2NoZW1hcworICAgICAgPC9wYXJhPjwv ZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0i Y2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgor ICAgICAgIDxzdHJ1Y3RmaWVsZD5uYW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlw ZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgVGhlIG5hbWUgb2YgdGhl IG9iamVjdCwgcXVvdGVkIGlmIG5lY2Vzc2FyeSwgaWYgdGhlIG5hbWUgKGFsb25nIHdpdGgg c2NoZW1hIG5hbWUsIGlmIHBlcnRpbmVudCkgaXMgc3VmZmljaWVudCB0byB1bmlxdWVseSBp ZGVudGlmeSB0aGUgb2JqZWN0LCBvdGhlcndpc2UgTlVMTAorICAgICAgPC9wYXJhPjwvZW50 cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0 YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAg ICAgIDxzdHJ1Y3RmaWVsZD5pZGVudGl0eTwvc3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5 cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgIFRoZSBjb21wbGV0ZSBv YmplY3QgaWRlbnRpdHksIHdpdGggdGhlIHByZWNpc2UgZm9ybWF0IGRlcGVuZGluZyBvbiBv YmplY3QgdHlwZSwgYW5kIGVhY2ggbmFtZSB3aXRoaW4gdGhlIGZvcm1hdCBiZWluZyBzY2hl bWEtcXVhbGlmaWVkIGFuZCBxdW90ZWQgYXMgbmVjZXNzYXJ5CisgICAgICA8L3BhcmE+PC9l bnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJj YXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+Cisg ICAgICAgPHN0cnVjdGZpZWxkPmdyYW50b3I8L3N0cnVjdGZpZWxkPiA8dHlwZT5yZWdyb2xl PC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGct YXV0aGlkIj48c3RydWN0bmFtZT5wZ19hdXRoaWQ8L3N0cnVjdG5hbWU+PC9saW5rPi48c3Ry dWN0ZmllbGQ+cm9sbmFtZTwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAg PHBhcmE+CisgICAgICAgUm9sZSB0aGF0IGdyYW50ZWQgdGhpcyBwcml2aWxlZ2UKKyAgICAg IDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVu dHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZp bml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+Z3JhbnRlZTwvc3RydWN0ZmllbGQ+IDx0 eXBlPnJlZ3JvbGU8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0i Y2F0YWxvZy1wZy1hdXRoaWQiPjxzdHJ1Y3RuYW1lPnBnX2F1dGhpZDwvc3RydWN0bmFtZT48 L2xpbms+LjxzdHJ1Y3RmaWVsZD5yb2xuYW1lPC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBSb2xlIHRvIHdob20gcHJpdmlsZWdlIGlzIGdy YW50ZWQKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cHJpdmlsZWdlX3R5 cGU8L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0PC90eXBlPgorICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgVHlwZSBvZiB0aGUgcHJpdmlsZWdlOiA8bGl0ZXJhbD5TRUxF Q1Q8L2xpdGVyYWw+LAorICAgICAgIDxsaXRlcmFsPklOU0VSVDwvbGl0ZXJhbD4sIDxsaXRl cmFsPlVQREFURTwvbGl0ZXJhbD4sIG9yCisgICAgICAgPGxpdGVyYWw+UkVGRVJFTkNFUzwv bGl0ZXJhbD4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8 cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+aXNfZ3JhbnRh YmxlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbGVhbjwvdHlwZT4KKyAgICAgIDwvcGFyYT4K KyAgICAgIDxwYXJhPgorICAgICAgIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+IGlmIHRoZSBw cml2aWxlZ2UgaXMgZ3JhbnRhYmxlLCA8bGl0ZXJhbD5mYWxzZTwvbGl0ZXJhbD4gaWYgbm90 CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90Ym9keT4KKyAg IDwvdGdyb3VwPgorICA8L3RhYmxlPgorCisgPC9zZWN0MT4KKwogIDxzZWN0MSBpZD0idmll dy1wZy1wb2xpY2llcyI+CiAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wb2xpY2llczwvc3Ry dWN0bmFtZT48L3RpdGxlPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5 c3RlbV92aWV3cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwK aW5kZXggMzQ1NmI4MjFiYy4uMzI3ZTMxNjNkZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lz dGVtX3ZpZXdzLnNxbApAQCAtNjAxLDYgKzYwMSw0NCBAQCBGUk9NCiAgICAgcGdfc2hzZWNs YWJlbCBsCiAgICAgSk9JTiBwZ19hdXRoaWQgcm9sIE9OIGwuY2xhc3NvaWQgPSByb2wudGFi bGVvaWQgQU5EIGwub2Jqb2lkID0gcm9sLm9pZDsKIAorQ1JFQVRFIFZJRVcgcGdfcHJpdmls ZWdlcyBBUworICAgIFNFTEVDVAorICAgICAgICBhLmNsYXNzaWQ6OnJlZ2NsYXNzLAorICAg ICAgICBhLm9iamlkLAorICAgICAgICBhLm9ianN1YmlkLAorICAgICAgICBhLnR5cGUsCisg ICAgICAgIGEuc2NoZW1hLAorICAgICAgICBhLm5hbWUsCisgICAgICAgIGEuaWRlbnRpdHks CisgICAgICAgIGEuZ3JhbnRvcjo6cmVncm9sZSwKKyAgICAgICAgYS5ncmFudGVlOjpyZWdy b2xlLAorICAgICAgICBhLnByaXZpbGVnZV90eXBlLAorICAgICAgICBhLmlzX2dyYW50YWJs ZQorICAgIEZST00KKyAgICAoCisgICAgICAgIFNFTEVDVAorICAgICAgICAgICAgcGdfc2hk ZXBlbmQuY2xhc3NpZCwKKyAgICAgICAgICAgIHBnX3NoZGVwZW5kLm9iamlkLAorICAgICAg ICAgICAgcGdfc2hkZXBlbmQub2Jqc3ViaWQsCisgICAgICAgICAgICAocGdfaWRlbnRpZnlf b2JqZWN0KHBnX3NoZGVwZW5kLmNsYXNzaWQscGdfc2hkZXBlbmQub2JqaWQscGdfc2hkZXBl bmQub2Jqc3ViaWQpKS4qLAorICAgICAgICAgICAgKHBnX2NhdGFsb2cuYWNsZXhwbG9kZShw Z19jYXRhbG9nLnBnX2dldF9hY2wocGdfc2hkZXBlbmQuY2xhc3NpZCxwZ19zaGRlcGVuZC5v YmppZCxwZ19zaGRlcGVuZC5vYmpzdWJpZCkpKS4qCisgICAgICAgIEZST00gcGdfY2F0YWxv Zy5wZ19zaGRlcGVuZAorICAgICAgICBKT0lOIHBnX2NhdGFsb2cucGdfZGF0YWJhc2UgT04g cGdfZGF0YWJhc2UuZGF0bmFtZSA9IGN1cnJlbnRfZGF0YWJhc2UoKSBBTkQgcGdfZGF0YWJh c2Uub2lkID0gcGdfc2hkZXBlbmQuZGJpZAorICAgICAgICBKT0lOIHBnX2NhdGFsb2cucGdf YXV0aGlkIE9OIHBnX2F1dGhpZC5vaWQgPSBwZ19zaGRlcGVuZC5yZWZvYmppZCBBTkQgcGdf c2hkZXBlbmQucmVmY2xhc3NpZCA9ICdwZ19hdXRoaWQnOjpyZWdjbGFzcworICAgICAgICBX SEVSRSBwZ19zaGRlcGVuZC5kZXB0eXBlID0gJ2EnCisgICAgKSBBUyBhOworCitDUkVBVEUg VklFVyBwZ19vd25lcnNoaXBzIEFTCisgICAgU0VMRUNUCisgICAgICAgIGEuY2xhc3NpZDo6 cmVnY2xhc3MsCisgICAgICAgIGEub2JqaWQsCisgICAgICAgIGEub2Jqc3ViaWQsCisgICAg ICAgIChwZ19pZGVudGlmeV9vYmplY3QoYS5jbGFzc2lkLGEub2JqaWQsYS5vYmpzdWJpZCkp LiosYS5yZWZvYmppZDo6cmVncm9sZSBBUyBvd25lcgorICAgIEZST00gcGdfY2F0YWxvZy5w Z19zaGRlcGVuZCBBUyBhCisgICAgSk9JTiBwZ19jYXRhbG9nLnBnX2RhdGFiYXNlIE9OIHBn X2RhdGFiYXNlLmRhdG5hbWUgPSBjdXJyZW50X2RhdGFiYXNlKCkgQU5EIHBnX2RhdGFiYXNl Lm9pZCA9IGEuZGJpZAorICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19hdXRoaWQgT04gcGdfYXV0 aGlkLm9pZCA9IGEucmVmb2JqaWQgQU5EIGEucmVmY2xhc3NpZCA9ICdwZ19hdXRoaWQnOjpy ZWdjbGFzcworICAgIFdIRVJFIGEuZGVwdHlwZSA9ICdvJzsKKwogQ1JFQVRFIFZJRVcgcGdf c2V0dGluZ3MgQVMKICAgICBTRUxFQ1QgKiBGUk9NIHBnX3Nob3dfYWxsX3NldHRpbmdzKCkg QVMgQTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCAyYjQ3MDEz ZjExLi42OWYzZjBjNTk3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3J1bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApA QCAtMTM5OCw2ICsxMzk4LDE4IEBAIHBnX21hdHZpZXdzfCBTRUxFQ1Qgbi5uc3BuYW1lIEFT IHNjaGVtYW5hbWUsCiAgICAgIExFRlQgSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiAoKG4ub2lk ID0gYy5yZWxuYW1lc3BhY2UpKSkKICAgICAgTEVGVCBKT0lOIHBnX3RhYmxlc3BhY2UgdCBP TiAoKHQub2lkID0gYy5yZWx0YWJsZXNwYWNlKSkpCiAgIFdIRVJFIChjLnJlbGtpbmQgPSAn bSc6OiJjaGFyIik7CitwZ19vd25lcnNoaXBzfCBTRUxFQ1QgKGEuY2xhc3NpZCk6OnJlZ2Ns YXNzIEFTIGNsYXNzaWQsCisgICAgYS5vYmppZCwKKyAgICBhLm9ianN1YmlkLAorICAgIChw Z19pZGVudGlmeV9vYmplY3QoYS5jbGFzc2lkLCBhLm9iamlkLCBhLm9ianN1YmlkKSkudHlw ZSBBUyB0eXBlLAorICAgIChwZ19pZGVudGlmeV9vYmplY3QoYS5jbGFzc2lkLCBhLm9iamlk LCBhLm9ianN1YmlkKSkuc2NoZW1hIEFTIHNjaGVtYSwKKyAgICAocGdfaWRlbnRpZnlfb2Jq ZWN0KGEuY2xhc3NpZCwgYS5vYmppZCwgYS5vYmpzdWJpZCkpLm5hbWUgQVMgbmFtZSwKKyAg ICAocGdfaWRlbnRpZnlfb2JqZWN0KGEuY2xhc3NpZCwgYS5vYmppZCwgYS5vYmpzdWJpZCkp LmlkZW50aXR5IEFTIGlkZW50aXR5LAorICAgIChhLnJlZm9iamlkKTo6cmVncm9sZSBBUyBv d25lcgorICAgRlJPTSAoKHBnX3NoZGVwZW5kIGEKKyAgICAgSk9JTiBwZ19kYXRhYmFzZSBP TiAoKChwZ19kYXRhYmFzZS5kYXRuYW1lID0gY3VycmVudF9kYXRhYmFzZSgpKSBBTkQgKHBn X2RhdGFiYXNlLm9pZCA9IGEuZGJpZCkpKSkKKyAgICAgSk9JTiBwZ19hdXRoaWQgT04gKCgo cGdfYXV0aGlkLm9pZCA9IGEucmVmb2JqaWQpIEFORCAoYS5yZWZjbGFzc2lkID0gKCdwZ19h dXRoaWQnOjpyZWdjbGFzcyk6Om9pZCkpKSkKKyAgV0hFUkUgKGEuZGVwdHlwZSA9ICdvJzo6 ImNoYXIiKTsKIHBnX3BvbGljaWVzfCBTRUxFQ1Qgbi5uc3BuYW1lIEFTIHNjaGVtYW5hbWUs CiAgICAgYy5yZWxuYW1lIEFTIHRhYmxlbmFtZSwKICAgICBwb2wucG9sbmFtZSBBUyBwb2xp Y3luYW1lLApAQCAtMTQ0Miw2ICsxNDU0LDMyIEBAIHBnX3ByZXBhcmVkX3hhY3RzfCBTRUxF Q1QgcC50cmFuc2FjdGlvbiwKICAgIEZST00gKChwZ19wcmVwYXJlZF94YWN0KCkgcCh0cmFu c2FjdGlvbiwgZ2lkLCBwcmVwYXJlZCwgb3duZXJpZCwgZGJpZCkKICAgICAgTEVGVCBKT0lO IHBnX2F1dGhpZCB1IE9OICgocC5vd25lcmlkID0gdS5vaWQpKSkKICAgICAgTEVGVCBKT0lO IHBnX2RhdGFiYXNlIGQgT04gKChwLmRiaWQgPSBkLm9pZCkpKTsKK3BnX3ByaXZpbGVnZXN8 IFNFTEVDVCAoY2xhc3NpZCk6OnJlZ2NsYXNzIEFTIGNsYXNzaWQsCisgICAgb2JqaWQsCisg ICAgb2Jqc3ViaWQsCisgICAgdHlwZSwKKyAgICBzY2hlbWEsCisgICAgbmFtZSwKKyAgICBp ZGVudGl0eSwKKyAgICAoZ3JhbnRvcik6OnJlZ3JvbGUgQVMgZ3JhbnRvciwKKyAgICAoZ3Jh bnRlZSk6OnJlZ3JvbGUgQVMgZ3JhbnRlZSwKKyAgICBwcml2aWxlZ2VfdHlwZSwKKyAgICBp c19ncmFudGFibGUKKyAgIEZST00gKCBTRUxFQ1QgcGdfc2hkZXBlbmQuY2xhc3NpZCwKKyAg ICAgICAgICAgIHBnX3NoZGVwZW5kLm9iamlkLAorICAgICAgICAgICAgcGdfc2hkZXBlbmQu b2Jqc3ViaWQsCisgICAgICAgICAgICAocGdfaWRlbnRpZnlfb2JqZWN0KHBnX3NoZGVwZW5k LmNsYXNzaWQsIHBnX3NoZGVwZW5kLm9iamlkLCBwZ19zaGRlcGVuZC5vYmpzdWJpZCkpLnR5 cGUgQVMgdHlwZSwKKyAgICAgICAgICAgIChwZ19pZGVudGlmeV9vYmplY3QocGdfc2hkZXBl bmQuY2xhc3NpZCwgcGdfc2hkZXBlbmQub2JqaWQsIHBnX3NoZGVwZW5kLm9ianN1YmlkKSku c2NoZW1hIEFTIHNjaGVtYSwKKyAgICAgICAgICAgIChwZ19pZGVudGlmeV9vYmplY3QocGdf c2hkZXBlbmQuY2xhc3NpZCwgcGdfc2hkZXBlbmQub2JqaWQsIHBnX3NoZGVwZW5kLm9ianN1 YmlkKSkubmFtZSBBUyBuYW1lLAorICAgICAgICAgICAgKHBnX2lkZW50aWZ5X29iamVjdChw Z19zaGRlcGVuZC5jbGFzc2lkLCBwZ19zaGRlcGVuZC5vYmppZCwgcGdfc2hkZXBlbmQub2Jq c3ViaWQpKS5pZGVudGl0eSBBUyBpZGVudGl0eSwKKyAgICAgICAgICAgIChhY2xleHBsb2Rl KHBnX2dldF9hY2wocGdfc2hkZXBlbmQuY2xhc3NpZCwgcGdfc2hkZXBlbmQub2JqaWQsIHBn X3NoZGVwZW5kLm9ianN1YmlkKSkpLmdyYW50b3IgQVMgZ3JhbnRvciwKKyAgICAgICAgICAg IChhY2xleHBsb2RlKHBnX2dldF9hY2wocGdfc2hkZXBlbmQuY2xhc3NpZCwgcGdfc2hkZXBl bmQub2JqaWQsIHBnX3NoZGVwZW5kLm9ianN1YmlkKSkpLmdyYW50ZWUgQVMgZ3JhbnRlZSwK KyAgICAgICAgICAgIChhY2xleHBsb2RlKHBnX2dldF9hY2wocGdfc2hkZXBlbmQuY2xhc3Np ZCwgcGdfc2hkZXBlbmQub2JqaWQsIHBnX3NoZGVwZW5kLm9ianN1YmlkKSkpLnByaXZpbGVn ZV90eXBlIEFTIHByaXZpbGVnZV90eXBlLAorICAgICAgICAgICAgKGFjbGV4cGxvZGUocGdf Z2V0X2FjbChwZ19zaGRlcGVuZC5jbGFzc2lkLCBwZ19zaGRlcGVuZC5vYmppZCwgcGdfc2hk ZXBlbmQub2Jqc3ViaWQpKSkuaXNfZ3JhbnRhYmxlIEFTIGlzX2dyYW50YWJsZQorICAgICAg ICAgICBGUk9NICgocGdfc2hkZXBlbmQKKyAgICAgICAgICAgICBKT0lOIHBnX2RhdGFiYXNl IE9OICgoKHBnX2RhdGFiYXNlLmRhdG5hbWUgPSBjdXJyZW50X2RhdGFiYXNlKCkpIEFORCAo cGdfZGF0YWJhc2Uub2lkID0gcGdfc2hkZXBlbmQuZGJpZCkpKSkKKyAgICAgICAgICAgICBK T0lOIHBnX2F1dGhpZCBPTiAoKChwZ19hdXRoaWQub2lkID0gcGdfc2hkZXBlbmQucmVmb2Jq aWQpIEFORCAocGdfc2hkZXBlbmQucmVmY2xhc3NpZCA9ICgncGdfYXV0aGlkJzo6cmVnY2xh c3MpOjpvaWQpKSkpCisgICAgICAgICAgV0hFUkUgKHBnX3NoZGVwZW5kLmRlcHR5cGUgPSAn YSc6OiJjaGFyIikpIGE7CiBwZ19wdWJsaWNhdGlvbl90YWJsZXN8IFNFTEVDVCBwLnB1Ym5h bWUsCiAgICAgbi5uc3BuYW1lIEFTIHNjaGVtYW5hbWUsCiAgICAgYy5yZWxuYW1lIEFTIHRh YmxlbmFtZSwKLS0gCjIuNDUuMQoK --be5280db90d04b738ec4f634b994d1fe--