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.96) (envelope-from ) id 1vJYR0-00ArZz-37 for pgsql-hackers@arkaria.postgresql.org; Thu, 13 Nov 2025 14:36:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vJYQx-0026Bz-21 for pgsql-hackers@arkaria.postgresql.org; Thu, 13 Nov 2025 14:36:23 +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.96) (envelope-from ) id 1vJYQx-0026Bp-0g for pgsql-hackers@lists.postgresql.org; Thu, 13 Nov 2025 14:36:23 +0000 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vJYQu-007YVv-1P for pgsql-hackers@lists.postgresql.org; Thu, 13 Nov 2025 14:36:22 +0000 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-7a9cdf62d31so1026090b3a.3 for ; Thu, 13 Nov 2025 06:36:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763044578; x=1763649378; darn=lists.postgresql.org; h=in-reply-to:references:to:from:subject:cc:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=xykQr40EVyFZ1uBmpNuRYoejqeZUklt+HoXC+79SNOI=; b=QqQakwR7qjdy0kZduAtC1mnKpWjWJnncmYY1cn6TKGPpISZ1/E28QmA8Ju6zhNLaY4 5F8xKPXprPqLst+kD3LqoAvh4yHy3zI9NFtTuDQYoJxNSJTdWFQs1SLmXrk3h7pcQbgO T41TvnFa7KvU7Do0qTRewCccT7Etu+ZJl1VDtbWzgztjnOW+AdJKotHAy4TlrtNDLx+/ hX8+ihb2kMcI5CrTlT7pzAphkDG9ehlRMcUtVr1o9siEKzpIG/kwERAGUfEZSUqyO7CK OHz/Z/KGFO5amGWpQG1J2CUXQ5S8XZRdfUWiNvHT9Acj2Z9yDLqDyHgjDDqrR2PXqY0R Xotg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763044578; x=1763649378; h=in-reply-to:references:to:from:subject:cc:message-id:date :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=xykQr40EVyFZ1uBmpNuRYoejqeZUklt+HoXC+79SNOI=; b=JSE4FxD6FwJyPtkKHo46gnjlfvevYUe81Udb/obHdVQx0GdjwFf1QqSSXwgNyPqPUK MUnFQxJ3Ce/ZkKLhA3fm9isqPCC9DNlj9rzdr8bvdpmNez4jtwrrIzL1vZ6/e72ebSLr XROBPMINi/dvK+sICU+Tu9/9FeZCgAy19FCGbVihrzn0DY5zDrvClo7VtHiBCrlN8JUT pYtWmjHNMRg/SEU8UnxktrSTL1QdliwWMtiZFQkFMNZXUoAG0YZg2RLMr/zn0OrHoZxS 3qUwpp0thclJqn/tmj4aqGm3z27N8WeR8A3PXTE//dYx6f887PbdZHYoSnq9AcEHBppW G3Ow== X-Forwarded-Encrypted: i=1; AJvYcCXS+/4kbH5pZ7DEgwyvmBPhg9wqfxaOnLvSzkkK0gK/6wBO/qCCsVi6MJDH0w5oVnNo7x1zk70nCR+BDvns@lists.postgresql.org X-Gm-Message-State: AOJu0YwqN5BDZJo2Y1HFJOjZ4D10WwpJAwCdbn4odXppzYZe+X1cYR57 rAQJwfpC539XRCEMOVXOH87sNWaKNg4OJ8Wy9/fM46J/C7ITQOCzZNUUs3N1Rg== X-Gm-Gg: ASbGncvDlnbgV+NZOYyAK+fgNPTEsDM0c43FLd0j3N5UdJDeCjsqcSgD3yb7AHoU/Ux J2IECk9yzEj3lvEOQNRGPxDjo7Ze/k/m4gI7cAItCa91UxZEukiRwvWuyHoZgmV5QX4Vwbo87on YVCyxZ8K34ycQPB7ppShdfg49V24wQMSf2c+U65yKvaMPl0fIok0tOpzSkTkh9Cb7fc6mtfCMyF qFAN5kXh5HfAz3YOXEJe0P7Q6uKcVZLbf0u/JjisZesIN4akE5EDwoJKjDOx8AAK/pTDH8Az37K keX1OoYJ9zTz2CXRLaUcYxjjB8EfmsSTpqKISgS8L+yUlb6mM4WphXRM1vV1lIcj9TJANeOUqhW /IDmfHLIXuEa1zo3w8Zw5LvuImLEZ4gaxBhFoocdjJJPim91EnNPg3SzozC2ALuzyvVJLhSf50G eRIcS71MkF7zB+cv9CMsqFXtI= X-Google-Smtp-Source: AGHT+IGadhYM43FwMKbK+Kj2+omGqFeZtGWhjww4ocTocikI68boqcDdGxjEa54WBRB9TV/5OaLblw== X-Received: by 2002:a05:6a00:178f:b0:7b8:d607:41a3 with SMTP id d2e1a72fcca58-7b8d6074b74mr4488340b3a.13.1763044577943; Thu, 13 Nov 2025 06:36:17 -0800 (PST) Received: from localhost ([2804:14d:328a:a59c:35e3:5da3:95aa:c2ec]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7b92782ad04sm2537946b3a.61.2025.11.13.06.36.12 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 13 Nov 2025 06:36:15 -0800 (PST) Content-Type: multipart/mixed; boundary=28094bfb4dc1e835ffc406c7050522ed0cc254d089b98577f8a3f80c93eb Mime-Version: 1.0 Date: Thu, 13 Nov 2025 11:36:09 -0300 Message-Id: Cc: "Rohit Prasad" , , Subject: Re: Include extension path on pg_available_extensions From: "Matheus Alcantara" To: "Chao Li" , "Matheus Alcantara" X-Mailer: aerc 0.21.0 References: <176282677490.2081919.14769189141245328542.pgcf@coridan.postgresql.org> <96F4EB92-C8C3-4E60-A253-E6D789ED79B3@gmail.com> In-Reply-To: <96F4EB92-C8C3-4E60-A253-E6D789ED79B3@gmail.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --28094bfb4dc1e835ffc406c7050522ed0cc254d089b98577f8a3f80c93eb Content-Type: multipart/alternative; boundary=56d9014d17ac8aca036cb23a05ac8d2f476576f70a10c90457463fa5339e --56d9014d17ac8aca036cb23a05ac8d2f476576f70a10c90457463fa5339e Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8 On Thu Nov 13, 2025 at 6:11 AM -03, Chao Li wrote: >> > > 1 - commit comment > ``` > User-defined locations are only visible for users that has the > pg_read_extension_paths role, otherwise is > returned as a column value, the same behaviour that we already have on > pg_stat_activity. > ``` > > First, there is a typo: "for users that has=E2=80=9D should be =E2=80=9Ch= ave=E2=80=9D. > > Then, Is this still true? The code change shows: > ``` > + /* We only want to show extension paths for superusers. */ > + if (superuser_arg(GetUserId())) > + { > ``` > > And the code change says: > ``` > + GUC. Only superusers can see the contents of this column. > ``` > > But the TAP test contains a case for normal user: > ``` > +# Create an user to test permissions to read extension locations. > +my $user =3D "user01"; > +$node->safe_psql('postgres', "CREATE USER $user"); > + > my $ecp =3D $node->safe_psql('postgres', 'show extension_control_path;')= ; > =20 > is($ecp, "\$system$sep$ext_dir$sep$ext_dir2", > @@ -46,28 +54,46 @@ $node->safe_psql('postgres', "CREATE EXTENSION $ext_n= ame2"); > my $ret =3D $node->safe_psql('postgres', > "select * from pg_available_extensions where name =3D '$ext_name'"); > is( $ret, > - "test_custom_ext_paths|1.0|1.0|Test extension_control_path", > + "test_custom_ext_paths|1.0|1.0|$ext_dir_canonicalized/extension|Test ex= tension_control_path", > "extension is installed correctly on pg_available_extensions=E2=80=9D); > ``` > > And I tried to run the TAP test, it passed. > > So I=E2=80=99m really confused here. > Oops, I forgot to update the commit message. The extension location is only visible for super users. Fixed on v6. The created user on TAP test is used to check that non superusers can not see the location column content. The other test case changes are using the 'postgres' user, so it should see the extension location value. > 2 > ``` > + else > + return ""; > +} > ``` > > Why do we just show nothing (empty string)? Every row showing a long stri= ng of just looks not good, that=E2=80=99s a lot of= duplications. > This is the same behavior of pg_stat_activity. Returning an empty string could make the user think that something is not right with the implementation. Returning for every row is a lot of duplication I agree but I think that it make clear for the user that it don't have the necessary role to view the column value. Thanks for reviewing! --=20 Matheus Alcantara EDB: http://www.enterprisedb.com --56d9014d17ac8aca036cb23a05ac8d2f476576f70a10c90457463fa5339e-- --28094bfb4dc1e835ffc406c7050522ed0cc254d089b98577f8a3f80c93eb Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v6-0001-Add-path-of-extension-on-pg_available_extensions.patch Content-Type: text/plain; charset=utf-8; name=v6-0001-Add-path-of-extension-on-pg_available_extensions.patch RnJvbSBkZTE2M2ViZjk1MGQ5ZmUwMTUyY2MwODJhNGJmMjZhY2MyNjFhYTJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXRoZXVzIEFsY2FudGFyYSA8bXRocy5kZXZAcG0ubWU+CkRh dGU6IE1vbiwgMTUgU2VwIDIwMjUgMTU6NDY6MjQgLTAzMDAKU3ViamVjdDogW1BBVENIIHY2XSBB ZGQgcGF0aCBvZiBleHRlbnNpb24gb24gcGdfYXZhaWxhYmxlX2V4dGVuc2lvbnMKCkFkZCBhIG5l dyAibG9jYXRpb24iIGNvbHVtbiB0byBwZ19hdmFpbGFibGVfZXh0ZW5zaW9ucyBhbmQKcGdfYXZh aWxhYmxlX2V4dGVuc2lvbl92ZXJzaW9ucyB2aWV3cy4gSXQgZXhwb3NlcyB0aGUgZGlyZWN0b3J5 IHRoYXQgdGhlCmV4dGVuc2lvbiBpcyBsb2NhdGVkLgoKVGhlIGRlZmF1bHQgc3lzdGVtIGxvY2F0 aW9uIGlzIHNob3cgYXMgJHN5c3RlbSBtYWNybywgdGhlIHNhbWUgdmFsdWUKdGhhdCBpcyB1c2Vk IHRvIGNvbmZpZ3VyZSB0aGUgZXh0ZW5zaW9uX2NvbnRyb2xfcGF0aCBHVUMuCgpVc2VyLWRlZmlu ZWQgbG9jYXRpb25zIGFyZSBvbmx5IHZpc2libGUgZm9yIHN1cGVyIHVzZXJzLCBvdGhlcndpc2UK PGluc3VmZmljaWVudCBwcml2aWxlZ2U+IGlzIHJldHVybmVkIGFzIGEgY29sdW1uIHZhbHVlLCB0 aGUgc2FtZQpiZWhhdmlvdXIgdGhhdCB3ZSBhbHJlYWR5IGhhdmUgb24gcGdfc3RhdF9hY3Rpdml0 eS4KLS0tCiBkb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwgICAgICAgICAgICAgICAgfCAg MjIgKysrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwg ICA0ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyAgICAgICAgICAgICAgfCAx MDUgKysrKysrKysrKysrKystLS0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAg ICAgICAgICAgICAgfCAgMTAgKy0KIC4uLi90LzAwMV9leHRlbnNpb25fY29udHJvbF9wYXRoLnBs ICAgICAgICAgICB8ICAzNSArKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMu b3V0ICAgICAgICAgICB8ICAgNiArLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3Qg ICAgICAgICAgICAgIHwgICAyICstCiA3IGZpbGVzIGNoYW5nZWQsIDE0NSBpbnNlcnRpb25zKCsp LCAzOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdz LnNnbWwgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKaW5kZXggNzk3MTQ5OGZlNzUu LjY5YjMwYmI2NDUzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCkBAIC01OTksNiArNTk5LDE3IEBA CiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVm aW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmxvY2F0aW9uPC9zdHJ1Y3RmaWVsZD4gPHR5 cGU+dGV4dDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBs b2NhdGlvbiB3aGVyZSB0aGUgZXh0ZW5zaW9uIHdhcyBmb3VuZCBiYXNlZCBvbiB0aGUgPGxpbmsK KyAgICAgICBsaW5rZW5kPSJndWMtZXh0ZW5zaW9uLWNvbnRyb2wtcGF0aCI+PHN0cnVjdG5hbWU+ ZXh0ZW5zaW9uX2NvbnRyb2xfcGF0aDwvc3RydWN0bmFtZT48L2xpbms+CisgICAgICAgR1VDLiBP bmx5IHN1cGVydXNlcnMgY2FuIHNlZSB0aGUgY29udGVudHMgb2YgdGhpcyBjb2x1bW4uCisgICAg ICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRy eSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CiAgICAgICAgPHN0cnVjdGZpZWxkPmNvbW1lbnQ8L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0 PC90eXBlPgpAQCAtNzIzLDYgKzczNCwxNyBAQAogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAg IDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVs ZD5sb2NhdGlvbjwvc3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CisgICAgICA8L3BhcmE+ CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgbG9jYXRpb24gd2hlcmUgdGhlIGV4dGVuc2lvbiB3 YXMgZm91bmQgYmFzZWQgb24gdGhlIDxsaW5rCisgICAgICAgbGlua2VuZD0iZ3VjLWV4dGVuc2lv bi1jb250cm9sLXBhdGgiPjxzdHJ1Y3RuYW1lPmV4dGVuc2lvbl9jb250cm9sX3BhdGg8L3N0cnVj dG5hbWU+PC9saW5rPgorICAgICAgIEdVQy4gT25seSBzdXBlcnVzZXJzIGNhbiBzZWUgdGhlIGNv bnRlbnRzIG9mIHRoaXMgY29sdW1uLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93 PgorCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5jb21t ZW50PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVt X3ZpZXdzLnNxbAppbmRleCAwNTllODc3OGNhNy4uNTJmYTJkZGNhYTMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTQxMiwxNCArNDEyLDE0IEBAIENSRUFURSBWSUVXIHBn X2N1cnNvcnMgQVMKIAogQ1JFQVRFIFZJRVcgcGdfYXZhaWxhYmxlX2V4dGVuc2lvbnMgQVMKICAg ICBTRUxFQ1QgRS5uYW1lLCBFLmRlZmF1bHRfdmVyc2lvbiwgWC5leHR2ZXJzaW9uIEFTIGluc3Rh bGxlZF92ZXJzaW9uLAotICAgICAgICAgICBFLmNvbW1lbnQKKyAgICAgICAgICAgRS5sb2NhdGlv biwgRS5jb21tZW50CiAgICAgICBGUk9NIHBnX2F2YWlsYWJsZV9leHRlbnNpb25zKCkgQVMgRQog ICAgICAgICAgICBMRUZUIEpPSU4gcGdfZXh0ZW5zaW9uIEFTIFggT04gRS5uYW1lID0gWC5leHRu YW1lOwogCiBDUkVBVEUgVklFVyBwZ19hdmFpbGFibGVfZXh0ZW5zaW9uX3ZlcnNpb25zIEFTCiAg ICAgU0VMRUNUIEUubmFtZSwgRS52ZXJzaW9uLCAoWC5leHRuYW1lIElTIE5PVCBOVUxMKSBBUyBp bnN0YWxsZWQsCiAgICAgICAgICAgIEUuc3VwZXJ1c2VyLCBFLnRydXN0ZWQsIEUucmVsb2NhdGFi bGUsCi0gICAgICAgICAgIEUuc2NoZW1hLCBFLnJlcXVpcmVzLCBFLmNvbW1lbnQKKyAgICAgICAg ICAgRS5zY2hlbWEsIEUucmVxdWlyZXMsIEUubG9jYXRpb24sIEUuY29tbWVudAogICAgICAgRlJP TSBwZ19hdmFpbGFibGVfZXh0ZW5zaW9uX3ZlcnNpb25zKCkgQVMgRQogICAgICAgICAgICBMRUZU IEpPSU4gcGdfZXh0ZW5zaW9uIEFTIFgKICAgICAgICAgICAgICBPTiBFLm5hbWUgPSBYLmV4dG5h bWUgQU5EIEUudmVyc2lvbiA9IFguZXh0dmVyc2lvbjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2V4dGVuc2lvbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMK aW5kZXggOTNlZjFhZDEwNmYuLjk4NjhmMzY4NGM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9leHRlbnNpb24uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24u YwpAQCAtMTI2LDYgKzEyNiwyMCBAQCB0eXBlZGVmIHN0cnVjdAogCVBhcnNlTG9jCXN0bXRfbGVu OwkJLyogbGVuZ3RoIGluIGJ5dGVzOyAwIG1lYW5zICJyZXN0IG9mIHN0cmluZyIgKi8KIH0gc2Ny aXB0X2Vycm9yX2NhbGxiYWNrX2FyZzsKIAorLyoKKyAqIEEgbG9jYXRpb24gY29uZmlndXJlZCBv biBleHRlbnNpb25fY29udHJvbF9wYXRoIEdVQy4KKyAqCisgKiBUaGUgbWFjcm8gZmllbGQgc3Rv cmVzIHRoZSBuYW1lIG9mIGEgbWFjcm8gKGZvciBleGFtcGxlIOKAnCRzeXN0ZW3igJ0pIHRoYXQK KyAqIGV4dGVuc2lvbl9jb250cm9sX3BhdGggc3VwcG9ydHMsIHdoaWNoIGlzIHJlcGxhY2VkIGJ5 IGEgc3lzdGVtIHZhbHVlIHRoYXQgaXMKKyAqIHN0b3JlZCBpbiBsb2MuIEZvciBjdXN0b20gcGF0 aHMgdGhhdCBkb24ndCBoYXZlIGEgbWFjcm8gdGhlIG1hY3JvIGZpZWxkIGlzCisgKiBOVUxMLgor ICovCit0eXBlZGVmIHN0cnVjdAoreworCWNoYXIJICAgKm1hY3JvOworCWNoYXIJICAgKmxvYzsK K30gRXh0ZW5zaW9uTG9jYXRpb247CisKIC8qIExvY2FsIGZ1bmN0aW9ucyAqLwogc3RhdGljIExp c3QgKmZpbmRfdXBkYXRlX3BhdGgoTGlzdCAqZXZpX2xpc3QsCiAJCQkJCQkJICBFeHRlbnNpb25W ZXJzaW9uSW5mbyAqZXZpX3N0YXJ0LApAQCAtMTQwLDcgKzE1NCw4IEBAIHN0YXRpYyBPaWQJZ2V0 X3JlcXVpcmVkX2V4dGVuc2lvbihjaGFyICpyZXFFeHRlbnNpb25OYW1lLAogCQkJCQkJCQkgICBi b29sIGlzX2NyZWF0ZSk7CiBzdGF0aWMgdm9pZCBnZXRfYXZhaWxhYmxlX3ZlcnNpb25zX2Zvcl9l eHRlbnNpb24oRXh0ZW5zaW9uQ29udHJvbEZpbGUgKnBjb250cm9sLAogCQkJCQkJCQkJCQkJIFR1 cGxlc3RvcmVzdGF0ZSAqdHVwc3RvcmUsCi0JCQkJCQkJCQkJCQkgVHVwbGVEZXNjIHR1cGRlc2Mp OworCQkJCQkJCQkJCQkJIFR1cGxlRGVzYyB0dXBkZXNjLAorCQkJCQkJCQkJCQkJIEV4dGVuc2lv bkxvY2F0aW9uICpsb2NhdGlvbik7CiBzdGF0aWMgRGF0dW0gY29udmVydF9yZXF1aXJlc190b19k YXR1bShMaXN0ICpyZXF1aXJlcyk7CiBzdGF0aWMgdm9pZCBBcHBseUV4dGVuc2lvblVwZGF0ZXMo T2lkIGV4dGVuc2lvbk9pZCwKIAkJCQkJCQkJICBFeHRlbnNpb25Db250cm9sRmlsZSAqcGNvbnRy b2wsCkBAIC0xNTcsNiArMTcyLDI2IEBAIHN0YXRpYyBFeHRlbnNpb25Db250cm9sRmlsZSAqbmV3 X0V4dGVuc2lvbkNvbnRyb2xGaWxlKGNvbnN0IGNoYXIgKmV4dG5hbWUpOwogCiBjaGFyCSAgICpm aW5kX2luX3BhdGhzKGNvbnN0IGNoYXIgKmJhc2VuYW1lLCBMaXN0ICpwYXRocyk7CiAKKy8qCisg KiAgUmV0dXJuIHRoZSBleHRlbnNpb24gbG9jYXRpb24uIElmIHRoZSBjdXJyZW50IHVzZXIgZG9l c24ndCBoYXZlIHN1ZmZpY2llbnQKKyAqICBwcml2aWxlZ2VzLCBkb24ndCBzaG93IHRoZSBsb2Nh dGlvbi4KKyAqLworc3RhdGljIGNoYXIgKgorZ2V0X2V4dGVuc2lvbl9sb2NhdGlvbihFeHRlbnNp b25Mb2NhdGlvbiAqbG9jKQoreworCS8qIFdlIG9ubHkgd2FudCB0byBzaG93IGV4dGVuc2lvbiBw YXRocyBmb3Igc3VwZXJ1c2Vycy4gKi8KKwlpZiAoc3VwZXJ1c2VyX2FyZyhHZXRVc2VySWQoKSkp CisJeworCQkvKiBSZXR1cm4gdGhlIG1hY3JvIHZhbHVlIGlmIGl0J3MgcHJlc2VudCB0byBkb24n dCBzaG93IHN5c3RlbSBwYXRocy4gKi8KKwkJaWYgKGxvYy0+bWFjcm8gPT0gTlVMTCkKKwkJCXJl dHVybiBsb2MtPmxvYzsKKwkJZWxzZQorCQkJcmV0dXJuIGxvYy0+bWFjcm87CisJfQorCWVsc2UK KwkJcmV0dXJuICI8aW5zdWZmaWNpZW50IHByaXZpbGVnZT4iOworfQorCiAvKgogICogZ2V0X2V4 dGVuc2lvbl9vaWQgLSBnaXZlbiBhbiBleHRlbnNpb24gbmFtZSwgbG9vayB1cCB0aGUgT0lECiAg KgpAQCAtMzU0LDcgKzM4OSwxMSBAQCBnZXRfZXh0ZW5zaW9uX2NvbnRyb2xfZGlyZWN0b3JpZXMo dm9pZCkKIAogCWlmIChzdHJsZW4oRXh0ZW5zaW9uX2NvbnRyb2xfcGF0aCkgPT0gMCkKIAl7Ci0J CXBhdGhzID0gbGFwcGVuZChwYXRocywgc3lzdGVtX2Rpcik7CisJCUV4dGVuc2lvbkxvY2F0aW9u ICpsb2NhdGlvbiA9IHBhbGxvY19vYmplY3QoRXh0ZW5zaW9uTG9jYXRpb24pOworCisJCWxvY2F0 aW9uLT5tYWNybyA9IE5VTEw7CisJCWxvY2F0aW9uLT5sb2MgPSBzeXN0ZW1fZGlyOworCQlwYXRo cyA9IGxhcHBlbmQocGF0aHMsIGxvY2F0aW9uKTsKIAl9CiAJZWxzZQogCXsKQEAgLTM2Niw2ICs0 MDUsNyBAQCBnZXRfZXh0ZW5zaW9uX2NvbnRyb2xfZGlyZWN0b3JpZXModm9pZCkKIAkJCWludAkJ CWxlbjsKIAkJCWNoYXIJICAgKm1hbmdsZWQ7CiAJCQljaGFyCSAgICpwaWVjZSA9IGZpcnN0X3Bh dGhfdmFyX3NlcGFyYXRvcihlY3ApOworCQkJRXh0ZW5zaW9uTG9jYXRpb24gKmxvY2F0aW9uID0g cGFsbG9jX29iamVjdChFeHRlbnNpb25Mb2NhdGlvbik7CiAKIAkJCS8qIEdldCB0aGUgbGVuZ3Ro IG9mIHRoZSBuZXh0IHBhdGggb24gZWNwICovCiAJCQlpZiAocGllY2UgPT0gTlVMTCkKQEAgLTM4 MiwxNSArNDIyLDIxIEBAIGdldF9leHRlbnNpb25fY29udHJvbF9kaXJlY3Rvcmllcyh2b2lkKQog CQkJICogc3VmZml4IGlmIGl0IGlzIGEgY3VzdG9tIGV4dGVuc2lvbiBjb250cm9sIHBhdGguCiAJ CQkgKi8KIAkJCWlmIChzdHJjbXAocGllY2UsICIkc3lzdGVtIikgPT0gMCkKKwkJCXsKKwkJCQls b2NhdGlvbi0+bWFjcm8gPSBwc3RyZHVwKHBpZWNlKTsKIAkJCQltYW5nbGVkID0gc3Vic3RpdHV0 ZV9wYXRoX21hY3JvKHBpZWNlLCAiJHN5c3RlbSIsIHN5c3RlbV9kaXIpOworCQkJfQogCQkJZWxz ZQorCQkJeworCQkJCWxvY2F0aW9uLT5tYWNybyA9IE5VTEw7CiAJCQkJbWFuZ2xlZCA9IHBzcHJp bnRmKCIlcy9leHRlbnNpb24iLCBwaWVjZSk7Ci0KKwkJCX0KIAkJCXBmcmVlKHBpZWNlKTsKIAog CQkJLyogQ2Fub25pY2FsaXplIHRoZSBwYXRoIGJhc2VkIG9uIHRoZSBPUyBhbmQgYWRkIHRvIHRo ZSBsaXN0ICovCiAJCQljYW5vbmljYWxpemVfcGF0aChtYW5nbGVkKTsKLQkJCXBhdGhzID0gbGFw cGVuZChwYXRocywgbWFuZ2xlZCk7CisJCQlsb2NhdGlvbi0+bG9jID0gbWFuZ2xlZDsKKwkJCXBh dGhzID0gbGFwcGVuZChwYXRocywgbG9jYXRpb24pOwogCiAJCQkvKiBCcmVhayBpZiBlY3AgaXMg ZW1wdHkgb3IgbW92ZSB0byB0aGUgbmV4dCBwYXRoIG9uIGVjcCAqLwogCQkJaWYgKGVjcFtsZW5d ID09ICdcMCcpCkBAIC0yMjE1LDkgKzIyNjEsOSBAQCBwZ19hdmFpbGFibGVfZXh0ZW5zaW9ucyhQ R19GVU5DVElPTl9BUkdTKQogCiAJbG9jYXRpb25zID0gZ2V0X2V4dGVuc2lvbl9jb250cm9sX2Rp cmVjdG9yaWVzKCk7CiAKLQlmb3JlYWNoX3B0cihjaGFyLCBsb2NhdGlvbiwgbG9jYXRpb25zKQor CWZvcmVhY2hfcHRyKEV4dGVuc2lvbkxvY2F0aW9uLCBsb2NhdGlvbiwgbG9jYXRpb25zKQogCXsK LQkJZGlyID0gQWxsb2NhdGVEaXIobG9jYXRpb24pOworCQlkaXIgPSBBbGxvY2F0ZURpcihsb2Nh dGlvbi0+bG9jKTsKIAogCQkvKgogCQkgKiBJZiB0aGUgY29udHJvbCBkaXJlY3RvcnkgZG9lc24n dCBleGlzdCwgd2Ugd2FudCB0byBzaWxlbnRseSByZXR1cm4KQEAgLTIyMjksMTMgKzIyNzUsMTMg QEAgcGdfYXZhaWxhYmxlX2V4dGVuc2lvbnMoUEdfRlVOQ1RJT05fQVJHUykKIAkJfQogCQllbHNl CiAJCXsKLQkJCXdoaWxlICgoZGUgPSBSZWFkRGlyKGRpciwgbG9jYXRpb24pKSAhPSBOVUxMKQor CQkJd2hpbGUgKChkZSA9IFJlYWREaXIoZGlyLCBsb2NhdGlvbi0+bG9jKSkgIT0gTlVMTCkKIAkJ CXsKIAkJCQlFeHRlbnNpb25Db250cm9sRmlsZSAqY29udHJvbDsKIAkJCQljaGFyCSAgICpleHRu YW1lOwogCQkJCVN0cmluZwkgICAqZXh0bmFtZV9zdHI7Ci0JCQkJRGF0dW0JCXZhbHVlc1szXTsK LQkJCQlib29sCQludWxsc1szXTsKKwkJCQlEYXR1bQkJdmFsdWVzWzRdOworCQkJCWJvb2wJCW51 bGxzWzRdOwogCiAJCQkJaWYgKCFpc19leHRlbnNpb25fY29udHJvbF9maWxlbmFtZShkZS0+ZF9u YW1lKSkKIAkJCQkJY29udGludWU7CkBAIC0yMjU5LDcgKzIzMDUsNyBAQCBwZ19hdmFpbGFibGVf ZXh0ZW5zaW9ucyhQR19GVU5DVElPTl9BUkdTKQogCQkJCQlmb3VuZF9leHQgPSBsYXBwZW5kKGZv dW5kX2V4dCwgZXh0bmFtZV9zdHIpOwogCiAJCQkJY29udHJvbCA9IG5ld19FeHRlbnNpb25Db250 cm9sRmlsZShleHRuYW1lKTsKLQkJCQljb250cm9sLT5jb250cm9sX2RpciA9IHBzdHJkdXAobG9j YXRpb24pOworCQkJCWNvbnRyb2wtPmNvbnRyb2xfZGlyID0gcHN0cmR1cChsb2NhdGlvbi0+bG9j KTsKIAkJCQlwYXJzZV9leHRlbnNpb25fY29udHJvbF9maWxlKGNvbnRyb2wsIE5VTEwpOwogCiAJ CQkJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOwpAQCAtMjI3MywxMSArMjMxOSwx NSBAQCBwZ19hdmFpbGFibGVfZXh0ZW5zaW9ucyhQR19GVU5DVElPTl9BUkdTKQogCQkJCQludWxs c1sxXSA9IHRydWU7CiAJCQkJZWxzZQogCQkJCQl2YWx1ZXNbMV0gPSBDU3RyaW5nR2V0VGV4dERh dHVtKGNvbnRyb2wtPmRlZmF1bHRfdmVyc2lvbik7CisKKwkJCQkvKiBsb2NhdGlvbiAqLworCQkJ CXZhbHVlc1syXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oZ2V0X2V4dGVuc2lvbl9sb2NhdGlvbihs b2NhdGlvbikpOworCiAJCQkJLyogY29tbWVudCAqLwogCQkJCWlmIChjb250cm9sLT5jb21tZW50 ID09IE5VTEwpCi0JCQkJCW51bGxzWzJdID0gdHJ1ZTsKKwkJCQkJbnVsbHNbM10gPSB0cnVlOwog CQkJCWVsc2UKLQkJCQkJdmFsdWVzWzJdID0gQ1N0cmluZ0dldFRleHREYXR1bShjb250cm9sLT5j b21tZW50KTsKKwkJCQkJdmFsdWVzWzNdID0gQ1N0cmluZ0dldFRleHREYXR1bShjb250cm9sLT5j b21tZW50KTsKIAogCQkJCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHJzaW5mby0+c2V0UmVzdWx0LCBy c2luZm8tPnNldERlc2MsCiAJCQkJCQkJCQkgdmFsdWVzLCBudWxscyk7CkBAIC0yMzEzLDkgKzIz NjMsOSBAQCBwZ19hdmFpbGFibGVfZXh0ZW5zaW9uX3ZlcnNpb25zKFBHX0ZVTkNUSU9OX0FSR1Mp CiAKIAlsb2NhdGlvbnMgPSBnZXRfZXh0ZW5zaW9uX2NvbnRyb2xfZGlyZWN0b3JpZXMoKTsKIAot CWZvcmVhY2hfcHRyKGNoYXIsIGxvY2F0aW9uLCBsb2NhdGlvbnMpCisJZm9yZWFjaF9wdHIoRXh0 ZW5zaW9uTG9jYXRpb24sIGxvY2F0aW9uLCBsb2NhdGlvbnMpCiAJewotCQlkaXIgPSBBbGxvY2F0 ZURpcihsb2NhdGlvbik7CisJCWRpciA9IEFsbG9jYXRlRGlyKGxvY2F0aW9uLT5sb2MpOwogCiAJ CS8qCiAJCSAqIElmIHRoZSBjb250cm9sIGRpcmVjdG9yeSBkb2Vzbid0IGV4aXN0LCB3ZSB3YW50 IHRvIHNpbGVudGx5IHJldHVybgpAQCAtMjMyNyw3ICsyMzc3LDcgQEAgcGdfYXZhaWxhYmxlX2V4 dGVuc2lvbl92ZXJzaW9ucyhQR19GVU5DVElPTl9BUkdTKQogCQl9CiAJCWVsc2UKIAkJewotCQkJ d2hpbGUgKChkZSA9IFJlYWREaXIoZGlyLCBsb2NhdGlvbikpICE9IE5VTEwpCisJCQl3aGlsZSAo KGRlID0gUmVhZERpcihkaXIsIGxvY2F0aW9uLT5sb2MpKSAhPSBOVUxMKQogCQkJewogCQkJCUV4 dGVuc2lvbkNvbnRyb2xGaWxlICpjb250cm9sOwogCQkJCWNoYXIJICAgKmV4dG5hbWU7CkBAIC0y MzU2LDEyICsyNDA2LDEzIEBAIHBnX2F2YWlsYWJsZV9leHRlbnNpb25fdmVyc2lvbnMoUEdfRlVO Q1RJT05fQVJHUykKIAogCQkJCS8qIHJlYWQgdGhlIGNvbnRyb2wgZmlsZSAqLwogCQkJCWNvbnRy b2wgPSBuZXdfRXh0ZW5zaW9uQ29udHJvbEZpbGUoZXh0bmFtZSk7Ci0JCQkJY29udHJvbC0+Y29u dHJvbF9kaXIgPSBwc3RyZHVwKGxvY2F0aW9uKTsKKwkJCQljb250cm9sLT5jb250cm9sX2RpciA9 IHBzdHJkdXAobG9jYXRpb24tPmxvYyk7CiAJCQkJcGFyc2VfZXh0ZW5zaW9uX2NvbnRyb2xfZmls ZShjb250cm9sLCBOVUxMKTsKIAogCQkJCS8qIHNjYW4gZXh0ZW5zaW9uJ3Mgc2NyaXB0IGRpcmVj dG9yeSBmb3IgaW5zdGFsbCBzY3JpcHRzICovCiAJCQkJZ2V0X2F2YWlsYWJsZV92ZXJzaW9uc19m b3JfZXh0ZW5zaW9uKGNvbnRyb2wsIHJzaW5mby0+c2V0UmVzdWx0LAotCQkJCQkJCQkJCQkJCSBy c2luZm8tPnNldERlc2MpOworCQkJCQkJCQkJCQkJCSByc2luZm8tPnNldERlc2MsCisJCQkJCQkJ CQkJCQkJIGxvY2F0aW9uKTsKIAkJCX0KIAogCQkJRnJlZURpcihkaXIpOwpAQCAtMjM3OCw3ICsy NDI5LDggQEAgcGdfYXZhaWxhYmxlX2V4dGVuc2lvbl92ZXJzaW9ucyhQR19GVU5DVElPTl9BUkdT KQogc3RhdGljIHZvaWQKIGdldF9hdmFpbGFibGVfdmVyc2lvbnNfZm9yX2V4dGVuc2lvbihFeHRl bnNpb25Db250cm9sRmlsZSAqcGNvbnRyb2wsCiAJCQkJCQkJCQkgVHVwbGVzdG9yZXN0YXRlICp0 dXBzdG9yZSwKLQkJCQkJCQkJCSBUdXBsZURlc2MgdHVwZGVzYykKKwkJCQkJCQkJCSBUdXBsZURl c2MgdHVwZGVzYywKKwkJCQkJCQkJCSBFeHRlbnNpb25Mb2NhdGlvbiAqbG9jYXRpb24pCiB7CiAJ TGlzdAkgICAqZXZpX2xpc3Q7CiAJTGlzdENlbGwgICAqbGM7CkBAIC0yMzkxLDggKzI0NDMsOCBA QCBnZXRfYXZhaWxhYmxlX3ZlcnNpb25zX2Zvcl9leHRlbnNpb24oRXh0ZW5zaW9uQ29udHJvbEZp bGUgKnBjb250cm9sLAogCXsKIAkJRXh0ZW5zaW9uVmVyc2lvbkluZm8gKmV2aSA9IChFeHRlbnNp b25WZXJzaW9uSW5mbyAqKSBsZmlyc3QobGMpOwogCQlFeHRlbnNpb25Db250cm9sRmlsZSAqY29u dHJvbDsKLQkJRGF0dW0JCXZhbHVlc1s4XTsKLQkJYm9vbAkJbnVsbHNbOF07CisJCURhdHVtCQl2 YWx1ZXNbOV07CisJCWJvb2wJCW51bGxzWzldOwogCQlMaXN0Q2VsbCAgICpsYzI7CiAKIAkJaWYg KCFldmktPmluc3RhbGxhYmxlKQpAQCAtMjQyOCwxMSArMjQ4MCwxNSBAQCBnZXRfYXZhaWxhYmxl X3ZlcnNpb25zX2Zvcl9leHRlbnNpb24oRXh0ZW5zaW9uQ29udHJvbEZpbGUgKnBjb250cm9sLAog CQkJbnVsbHNbNl0gPSB0cnVlOwogCQllbHNlCiAJCQl2YWx1ZXNbNl0gPSBjb252ZXJ0X3JlcXVp cmVzX3RvX2RhdHVtKGNvbnRyb2wtPnJlcXVpcmVzKTsKKworCQkvKiBsb2NhdGlvbiAqLworCQl2 YWx1ZXNbN10gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGdldF9leHRlbnNpb25fbG9jYXRpb24obG9j YXRpb24pKTsKKwogCQkvKiBjb21tZW50ICovCiAJCWlmIChjb250cm9sLT5jb21tZW50ID09IE5V TEwpCi0JCQludWxsc1s3XSA9IHRydWU7CisJCQludWxsc1s4XSA9IHRydWU7CiAJCWVsc2UKLQkJ CXZhbHVlc1s3XSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oY29udHJvbC0+Y29tbWVudCk7CisJCQl2 YWx1ZXNbOF0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGNvbnRyb2wtPmNvbW1lbnQpOwogCiAJCXR1 cGxlc3RvcmVfcHV0dmFsdWVzKHR1cHN0b3JlLCB0dXBkZXNjLCB2YWx1ZXMsIG51bGxzKTsKIApA QCAtMjQ3Myw3ICsyNTI5LDcgQEAgZ2V0X2F2YWlsYWJsZV92ZXJzaW9uc19mb3JfZXh0ZW5zaW9u KEV4dGVuc2lvbkNvbnRyb2xGaWxlICpwY29udHJvbCwKIAkJCQkJdmFsdWVzWzZdID0gY29udmVy dF9yZXF1aXJlc190b19kYXR1bShjb250cm9sLT5yZXF1aXJlcyk7CiAJCQkJCW51bGxzWzZdID0g ZmFsc2U7CiAJCQkJfQotCQkJCS8qIGNvbW1lbnQgc3RheXMgdGhlIHNhbWUgKi8KKwkJCQkvKiBj b21tZW50IGFuZCBsb2NhdGlvbiBzdGF5cyB0aGUgc2FtZSAqLwogCiAJCQkJdHVwbGVzdG9yZV9w dXR2YWx1ZXModHVwc3RvcmUsIHR1cGRlc2MsIHZhbHVlcywgbnVsbHMpOwogCQkJfQpAQCAtMzkw Myw3ICszOTU5LDggQEAgZmluZF9pbl9wYXRocyhjb25zdCBjaGFyICpiYXNlbmFtZSwgTGlzdCAq cGF0aHMpCiAKIAlmb3JlYWNoKGNlbGwsIHBhdGhzKQogCXsKLQkJY2hhcgkgICAqcGF0aCA9IGxm aXJzdChjZWxsKTsKKwkJRXh0ZW5zaW9uTG9jYXRpb24gKmxvY2F0aW9uID0gbGZpcnN0KGNlbGwp OworCQljaGFyCSAgICpwYXRoID0gbG9jYXRpb24tPmxvYzsKIAkJY2hhcgkgICAqZnVsbDsKIAog CQlBc3NlcnQocGF0aCAhPSBOVUxMKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDVjZjll MTJmY2I5Li5lMzRkYTEzNTdlMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0xMDc0Mywx NiArMTA3NDMsMTYgQEAKIHsgb2lkID0+ICczMDgyJywgZGVzY3IgPT4gJ2xpc3QgYXZhaWxhYmxl IGV4dGVuc2lvbnMnLAogICBwcm9uYW1lID0+ICdwZ19hdmFpbGFibGVfZXh0ZW5zaW9ucycsIHBy b2Nvc3QgPT4gJzEwJywgcHJvcm93cyA9PiAnMTAwJywKICAgcHJvcmV0c2V0ID0+ICd0JywgcHJv dm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXR0eXBlID0+ICdyZWNvcmQnLAotICBwcm9hcmd0eXBlcyA9 PiAnJywgcHJvYWxsYXJndHlwZXMgPT4gJ3tuYW1lLHRleHQsdGV4dH0nLAotICBwcm9hcmdtb2Rl cyA9PiAne28sbyxvfScsIHByb2FyZ25hbWVzID0+ICd7bmFtZSxkZWZhdWx0X3ZlcnNpb24sY29t bWVudH0nLAorICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvYWxsYXJndHlwZXMgPT4gJ3tuYW1lLHRl eHQsdGV4dCx0ZXh0fScsCisgIHByb2FyZ21vZGVzID0+ICd7byxvLG8sb30nLCBwcm9hcmduYW1l cyA9PiAne25hbWUsZGVmYXVsdF92ZXJzaW9uLGxvY2F0aW9uLGNvbW1lbnR9JywKICAgcHJvc3Jj ID0+ICdwZ19hdmFpbGFibGVfZXh0ZW5zaW9ucycgfSwKIHsgb2lkID0+ICczMDgzJywgZGVzY3Ig PT4gJ2xpc3QgYXZhaWxhYmxlIGV4dGVuc2lvbiB2ZXJzaW9ucycsCiAgIHByb25hbWUgPT4gJ3Bn X2F2YWlsYWJsZV9leHRlbnNpb25fdmVyc2lvbnMnLCBwcm9jb3N0ID0+ICcxMCcsCiAgIHByb3Jv d3MgPT4gJzEwMCcsIHByb3JldHNldCA9PiAndCcsIHByb3ZvbGF0aWxlID0+ICdzJywKICAgcHJv cmV0dHlwZSA9PiAncmVjb3JkJywgcHJvYXJndHlwZXMgPT4gJycsCi0gIHByb2FsbGFyZ3R5cGVz ID0+ICd7bmFtZSx0ZXh0LGJvb2wsYm9vbCxib29sLG5hbWUsX25hbWUsdGV4dH0nLAotICBwcm9h cmdtb2RlcyA9PiAne28sbyxvLG8sbyxvLG8sb30nLAotICBwcm9hcmduYW1lcyA9PiAne25hbWUs dmVyc2lvbixzdXBlcnVzZXIsdHJ1c3RlZCxyZWxvY2F0YWJsZSxzY2hlbWEscmVxdWlyZXMsY29t bWVudH0nLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne25hbWUsdGV4dCxib29sLGJvb2wsYm9vbCxu YW1lLF9uYW1lLHRleHQsdGV4dH0nLAorICBwcm9hcmdtb2RlcyA9PiAne28sbyxvLG8sbyxvLG8s byxvfScsCisgIHByb2FyZ25hbWVzID0+ICd7bmFtZSx2ZXJzaW9uLHN1cGVydXNlcix0cnVzdGVk LHJlbG9jYXRhYmxlLHNjaGVtYSxyZXF1aXJlcyxsb2NhdGlvbixjb21tZW50fScsCiAgIHByb3Ny YyA9PiAncGdfYXZhaWxhYmxlX2V4dGVuc2lvbl92ZXJzaW9ucycgfSwKIHsgb2lkID0+ICczMDg0 JywgZGVzY3IgPT4gJ2xpc3QgYW4gZXh0ZW5zaW9uXCdzIHZlcnNpb24gdXBkYXRlIHBhdGhzJywK ICAgcHJvbmFtZSA9PiAncGdfZXh0ZW5zaW9uX3VwZGF0ZV9wYXRocycsIHByb2Nvc3QgPT4gJzEw JywgcHJvcm93cyA9PiAnMTAwJywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9l eHRlbnNpb25zL3QvMDAxX2V4dGVuc2lvbl9jb250cm9sX3BhdGgucGwgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfZXh0ZW5zaW9ucy90LzAwMV9leHRlbnNpb25fY29udHJvbF9wYXRoLnBsCmluZGV4 IDdmYmU1YmRlMzMyLi4xMWJmYjc3MTQ5ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2V4dGVuc2lvbnMvdC8wMDFfZXh0ZW5zaW9uX2NvbnRyb2xfcGF0aC5wbAorKysgYi9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy90LzAwMV9leHRlbnNpb25fY29udHJvbF9wYXRo LnBsCkBAIC0yNSw2ICsyNSwxMCBAQCBteSAkZXh0X25hbWUyID0gInRlc3RfY3VzdG9tX2V4dF9w YXRoc191c2luZ19kaXJlY3RvcnkiOwogbWtwYXRoKCIkZXh0X2Rpci8kZXh0X25hbWUyIik7CiBj cmVhdGVfZXh0ZW5zaW9uKCRleHRfbmFtZTIsICRleHRfZGlyLCAkZXh0X25hbWUyKTsKIAorIyBN YWtlIHdpbmRvd3MgcGF0aCB1c2UgVW5peCBzbGFzaGVzIGFzIGNhbm9uaWNhbGl6ZV9wYXRoKCkg aXMgY2FsbGVkIHdoZW4KKyMgY29sbGVjdGluZyBleHRlbnNpb24gY29udHJvbCBwYXRocy4gU2Vl IGdldF9leHRlbnNpb25fY29udHJvbF9kaXJlY3RvcmllcygpLgorbXkgJGV4dF9kaXJfY2Fub25p Y2FsaXplZCA9ICR3aW5kb3dzX29zID8gKCRleHRfZGlyID1+IHMvXFwvXC8vZ3IpIDogJGV4dF9k aXI7CisKICMgVXNlIHRoZSBjb3JyZWN0IHNlcGFyYXRvciBhbmQgZXNjYXBlIFwgd2hlbiBydW5u aW5nIG9uIFdpbmRvd3MuCiBteSAkc2VwID0gJHdpbmRvd3Nfb3MgPyAiOyIgOiAiOiI7CiAkbm9k ZS0+YXBwZW5kX2NvbmYoCkBAIC0zNSw2ICszOSwxMCBAQCBleHRlbnNpb25fY29udHJvbF9wYXRo ID0gJ1wkc3lzdGVtJHNlcEB7WyAkd2luZG93c19vcyA/ICgkZXh0X2RpciA9fiBzL1xcL1xcXFwv ZwogIyBTdGFydCBub2RlCiAkbm9kZS0+c3RhcnQ7CiAKKyMgQ3JlYXRlIGFuIHVzZXIgdG8gdGVz dCBwZXJtaXNzaW9ucyB0byByZWFkIGV4dGVuc2lvbiBsb2NhdGlvbnMuCitteSAkdXNlciA9ICJ1 c2VyMDEiOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFVTRVIgJHVzZXIi KTsKKwogbXkgJGVjcCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ3Nob3cgZXh0ZW5z aW9uX2NvbnRyb2xfcGF0aDsnKTsKIAogaXMoJGVjcCwgIlwkc3lzdGVtJHNlcCRleHRfZGlyJHNl cCRleHRfZGlyMiIsCkBAIC00NiwyOCArNTQsNDYgQEAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiQ1JFQVRFIEVYVEVOU0lPTiAkZXh0X25hbWUyIik7CiBteSAkcmV0ID0gJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAogCSJzZWxlY3QgKiBmcm9tIHBnX2F2YWlsYWJsZV9leHRlbnNp b25zIHdoZXJlIG5hbWUgPSAnJGV4dF9uYW1lJyIpOwogaXMoICRyZXQsCi0JInRlc3RfY3VzdG9t X2V4dF9wYXRoc3wxLjB8MS4wfFRlc3QgZXh0ZW5zaW9uX2NvbnRyb2xfcGF0aCIsCisJInRlc3Rf Y3VzdG9tX2V4dF9wYXRoc3wxLjB8MS4wfCRleHRfZGlyX2Nhbm9uaWNhbGl6ZWQvZXh0ZW5zaW9u fFRlc3QgZXh0ZW5zaW9uX2NvbnRyb2xfcGF0aCIsCiAJImV4dGVuc2lvbiBpcyBpbnN0YWxsZWQg Y29ycmVjdGx5IG9uIHBnX2F2YWlsYWJsZV9leHRlbnNpb25zIik7CiAKICRyZXQgPSAkbm9kZS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJInNlbGVjdCAqIGZyb20gcGdfYXZhaWxhYmxlX2V4dGVu c2lvbl92ZXJzaW9ucyB3aGVyZSBuYW1lID0gJyRleHRfbmFtZSciKTsKIGlzKCAkcmV0LAotCSJ0 ZXN0X2N1c3RvbV9leHRfcGF0aHN8MS4wfHR8dHxmfHR8fHxUZXN0IGV4dGVuc2lvbl9jb250cm9s X3BhdGgiLAorCSJ0ZXN0X2N1c3RvbV9leHRfcGF0aHN8MS4wfHR8dHxmfHR8fHwkZXh0X2Rpcl9j YW5vbmljYWxpemVkL2V4dGVuc2lvbnxUZXN0IGV4dGVuc2lvbl9jb250cm9sX3BhdGgiLAogCSJl eHRlbnNpb24gaXMgaW5zdGFsbGVkIGNvcnJlY3RseSBvbiBwZ19hdmFpbGFibGVfZXh0ZW5zaW9u X3ZlcnNpb25zIik7CiAKICRyZXQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJInNl bGVjdCAqIGZyb20gcGdfYXZhaWxhYmxlX2V4dGVuc2lvbnMgd2hlcmUgbmFtZSA9ICckZXh0X25h bWUyJyIpOwogaXMoICRyZXQsCi0JInRlc3RfY3VzdG9tX2V4dF9wYXRoc191c2luZ19kaXJlY3Rv cnl8MS4wfDEuMHxUZXN0IGV4dGVuc2lvbl9jb250cm9sX3BhdGgiLAorCSJ0ZXN0X2N1c3RvbV9l eHRfcGF0aHNfdXNpbmdfZGlyZWN0b3J5fDEuMHwxLjB8JGV4dF9kaXJfY2Fub25pY2FsaXplZC9l eHRlbnNpb258VGVzdCBleHRlbnNpb25fY29udHJvbF9wYXRoIiwKIAkiZXh0ZW5zaW9uIGlzIGlu c3RhbGxlZCBjb3JyZWN0bHkgb24gcGdfYXZhaWxhYmxlX2V4dGVuc2lvbnMiKTsKIAogJHJldCA9 ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkic2VsZWN0ICogZnJvbSBwZ19hdmFpbGFi bGVfZXh0ZW5zaW9uX3ZlcnNpb25zIHdoZXJlIG5hbWUgPSAnJGV4dF9uYW1lMiciCiApOwogaXMo ICRyZXQsCi0JInRlc3RfY3VzdG9tX2V4dF9wYXRoc191c2luZ19kaXJlY3Rvcnl8MS4wfHR8dHxm fHR8fHxUZXN0IGV4dGVuc2lvbl9jb250cm9sX3BhdGgiLAorCSJ0ZXN0X2N1c3RvbV9leHRfcGF0 aHNfdXNpbmdfZGlyZWN0b3J5fDEuMHx0fHR8Znx0fHx8JGV4dF9kaXJfY2Fub25pY2FsaXplZC9l eHRlbnNpb258VGVzdCBleHRlbnNpb25fY29udHJvbF9wYXRoIiwKIAkiZXh0ZW5zaW9uIGlzIGlu c3RhbGxlZCBjb3JyZWN0bHkgb24gcGdfYXZhaWxhYmxlX2V4dGVuc2lvbl92ZXJzaW9ucyIpOwog CisjIFRlc3QgdGhhdCBhIG5vbi1zdXBlcnVzZXIgY2FuIG5vdCByZWFkIHRoZSBleHRlbnNpb24g bG9jYXRpb24gb24KKyMgcGdfYXZhaWxhYmxlX2V4dGVuc2lvbnMKKyRyZXQgPSAkbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJInNlbGVjdCBsb2NhdGlvbiBmcm9tIHBnX2F2YWlsYWJsZV9l eHRlbnNpb25zIHdoZXJlIG5hbWUgPSAnJGV4dF9uYW1lMiciLAorCWNvbm5zdHIgPT4gInVzZXI9 JHVzZXIiKTsKK2lzKCAkcmV0LAorCSI8aW5zdWZmaWNpZW50IHByaXZpbGVnZT4iLAorCSJleHRl bnNpb24gbG9jYXRpb24gaXMgaGlkZSBvbiBwZ19hdmFpbGFibGVfZXh0ZW5zaW9ucyBmb3IgaW5z dWZmaWNpZW50IHByaXZpbGVnZSIpOworCisjIFRlc3QgdGhhdCBhIG5vbi1zdXBlcnVzZXIgY2Fu IG5vdCByZWFkIHRoZSBleHRlbnNpb24gbG9jYXRpb24gb24KKyMgcGdfYXZhaWxhYmxlX2V4dGVu c2lvbl92ZXJzaW9ucworJHJldCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkic2Vs ZWN0IGxvY2F0aW9uIGZyb20gcGdfYXZhaWxhYmxlX2V4dGVuc2lvbl92ZXJzaW9ucyB3aGVyZSBu YW1lID0gJyRleHRfbmFtZTInIiwKKwljb25uc3RyID0+ICJ1c2VyPSR1c2VyIik7CitpcyggJHJl dCwKKwkiPGluc3VmZmljaWVudCBwcml2aWxlZ2U+IiwKKwkiZXh0ZW5zaW9uIGxvY2F0aW9uIGlz IGhpZGUgb24gcGdfYXZhaWxhYmxlX2V4dGVuc2lvbl92ZXJzaW9ucyBmb3IgaW5zdWZmaWNpZW50 IHByaXZpbGVnZSIpOworCiAjIEVuc3VyZSB0aGF0IGV4dGVuc2lvbnMgaW5zdGFsbGVkIG9uICRz eXN0ZW0gaXMgc3RpbGwgdmlzaWJsZSB3aGVuIHVzaW5nIHdpdGgKICMgY3VzdG9tIGV4dGVuc2lv biBjb250cm9sIHBhdGguCiAkcmV0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLApAQCAt NzYsNyArMTAyLDYgQEAgJHJldCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIGlzKCRy ZXQsICJ0IiwKIAkiXCRzeXN0ZW0gZXh0ZW5zaW9uIGlzIGluc3RhbGxlZCBjb3JyZWN0bHkgb24g cGdfYXZhaWxhYmxlX2V4dGVuc2lvbnMiKTsKIAotCiAkcmV0ID0gJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAogCSJzZXQgZXh0ZW5zaW9uX2NvbnRyb2xfcGF0aCA9ICcnOyBzZWxlY3QgY291 bnQoKikgPiAwIGFzIG9rIGZyb20gcGdfYXZhaWxhYmxlX2V4dGVuc2lvbnMgd2hlcmUgbmFtZSA9 ICdwbHBnc3FsJyIKICk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1 bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4IDdjNTIx ODFjYmNiLi5iNDAyZGM5ODdhYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAg LTEzMTAsMTQgKzEzMTAsMTYgQEAgcGdfYXZhaWxhYmxlX2V4dGVuc2lvbl92ZXJzaW9uc3wgU0VM RUNUIGUubmFtZSwKICAgICBlLnJlbG9jYXRhYmxlLAogICAgIGUuc2NoZW1hLAogICAgIGUucmVx dWlyZXMsCisgICAgZS5sb2NhdGlvbiwKICAgICBlLmNvbW1lbnQKLSAgIEZST00gKHBnX2F2YWls YWJsZV9leHRlbnNpb25fdmVyc2lvbnMoKSBlKG5hbWUsIHZlcnNpb24sIHN1cGVydXNlciwgdHJ1 c3RlZCwgcmVsb2NhdGFibGUsIHNjaGVtYSwgcmVxdWlyZXMsIGNvbW1lbnQpCisgICBGUk9NIChw Z19hdmFpbGFibGVfZXh0ZW5zaW9uX3ZlcnNpb25zKCkgZShuYW1lLCB2ZXJzaW9uLCBzdXBlcnVz ZXIsIHRydXN0ZWQsIHJlbG9jYXRhYmxlLCBzY2hlbWEsIHJlcXVpcmVzLCBsb2NhdGlvbiwgY29t bWVudCkKICAgICAgTEVGVCBKT0lOIHBnX2V4dGVuc2lvbiB4IE9OICgoKGUubmFtZSA9IHguZXh0 bmFtZSkgQU5EIChlLnZlcnNpb24gPSB4LmV4dHZlcnNpb24pKSkpOwogcGdfYXZhaWxhYmxlX2V4 dGVuc2lvbnN8IFNFTEVDVCBlLm5hbWUsCiAgICAgZS5kZWZhdWx0X3ZlcnNpb24sCiAgICAgeC5l eHR2ZXJzaW9uIEFTIGluc3RhbGxlZF92ZXJzaW9uLAorICAgIGUubG9jYXRpb24sCiAgICAgZS5j b21tZW50Ci0gICBGUk9NIChwZ19hdmFpbGFibGVfZXh0ZW5zaW9ucygpIGUobmFtZSwgZGVmYXVs dF92ZXJzaW9uLCBjb21tZW50KQorICAgRlJPTSAocGdfYXZhaWxhYmxlX2V4dGVuc2lvbnMoKSBl KG5hbWUsIGRlZmF1bHRfdmVyc2lvbiwgbG9jYXRpb24sIGNvbW1lbnQpCiAgICAgIExFRlQgSk9J TiBwZ19leHRlbnNpb24geCBPTiAoKGUubmFtZSA9IHguZXh0bmFtZSkpKTsKIHBnX2JhY2tlbmRf bWVtb3J5X2NvbnRleHRzfCBTRUxFQ1QgbmFtZSwKICAgICBpZGVudCwKZGlmZiAtLWdpdCBhL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKaW5kZXggMjNiY2U3MmFlNjQuLmQ3NDJkY2M4MzM1IDEwMDY0NAotLS0gYS9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdApAQCAtNzkwLDYgKzc5MCw3IEBAIEV4dGVuc2libGVOb2RlRW50cnkKIEV4dGVu c2libGVOb2RlTWV0aG9kcwogRXh0ZW5zaW9uQ29udHJvbEZpbGUKIEV4dGVuc2lvbkluZm8KK0V4 dGVuc2lvbkxvY2F0aW9uCiBFeHRlbnNpb25WZXJzaW9uSW5mbwogRkRXQ29sbGF0ZVN0YXRlCiBG RF9TRVQKQEAgLTE1NzAsNyArMTU3MSw2IEBAIExvYWRTdG10CiBMb2NhbEJ1ZmZlckxvb2t1cEVu dAogTG9jYWxQZ0JhY2tlbmRTdGF0dXMKIExvY2FsVHJhbnNhY3Rpb25JZAotTG9jYXRpb24KIExv Y2F0aW9uSW5kZXgKIExvY2F0aW9uTGVuCiBMb2NrQWNxdWlyZVJlc3VsdAotLSAKMi41MS4yCgo= --28094bfb4dc1e835ffc406c7050522ed0cc254d089b98577f8a3f80c93eb--