Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gP5lr-0004yo-4b for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Nov 2018 13:08:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1gP5lp-00076Z-10 for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Nov 2018 13:08:49 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gP5lo-00076O-NH for pgsql-hackers@lists.postgresql.org; Tue, 20 Nov 2018 13:08:48 +0000 Received: from mail.postgrespro.ru ([93.174.131.138]) by magus.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1gP5ll-0001xC-J3 for pgsql-hackers@postgresql.org; Tue, 20 Nov 2018 13:08:48 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.postgrespro.ru (Postfix) with ESMTP id 7B48B21C76F5; Tue, 20 Nov 2018 16:08:42 +0300 (MSK) X-Virus-Scanned: Debian amavisd-new at postgrespro.ru X-Spam-Flag: NO X-Spam-Score: 0 X-Spam-Level: X-Spam-Status: No, score=x tagged_above=-99 required=4 WHITELISTED tests=[] autolearn=unavailable Received: from mail.postgrespro.ru (cyclops.l.postgrespro.ru [192.168.27.1]) by mail.postgrespro.ru (Postfix) with ESMTP id 3AC0621C76EC; Tue, 20 Nov 2018 16:08:42 +0300 (MSK) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_70ee2d2f37c4e5c6975a4d9f81297d84" Date: Tue, 20 Nov 2018 16:08:42 +0300 From: s.cherkashin@postgrespro.ru To: Alvaro Herrera Cc: Michael Paquier , Nikita Glukhov , pgsql-hackers@postgresql.org Subject: Re: Psql patch to show access methods info In-Reply-To: <20181120104153.mgl5qy6uowryhesn@alvherre.pgsql> References: <20181120104153.mgl5qy6uowryhesn@alvherre.pgsql> Message-ID: <64178681578cd2f1013db32bb7c00ddd@postgrespro.ru> X-Sender: s.cherkashin@postgrespro.ru User-Agent: Roundcube Webmail/1.3.8 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --=_70ee2d2f37c4e5c6975a4d9f81297d84 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed Ok, I fixed this. On 2018-11-20 13:41, Alvaro Herrera wrote: > On 2018-Nov-20, s.cherkashin@postgrespro.ru wrote: > >> Yes, I am available to finish this patch. >> I’m sorry that I hadn’t updated patch for new commitfest and I >> grateful to >> you for doing it and fixing some issues. >> I would like to clarify which commands lack the output of the schema >> names? >> Because I tried to display them for all objects that have a schema. > > I think Michael is referring to the queries used to obtain the data. > For example "FROM pg_class c" is bogus -- it must be "FROM > pg_catalog.pg_class c". --=_70ee2d2f37c4e5c6975a4d9f81297d84 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0002-psql_add_am_info.patch Content-Disposition: attachment; filename=0002-psql_add_am_info.patch; size=44876 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKaW5kZXggOGI3ZjE2OWQ1MC4uNTY1YjFjMzk2YSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK QEAgLTY3NSw3ICs2NzUsNyBAQAogICAgc2VhcmNoIGFuZCBvcmRlcmluZyBwdXJwb3Nlcy4pCiAg IDwvcGFyYT4KIAotICA8dGFibGU+CisgIDx0YWJsZSBpZD0iY2F0YWxvZy1wZy1hbW9wLXRhYmxl Ij4KICAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19hbW9wPC9zdHJ1Y3RuYW1lPiBDb2x1bW5zPC90 aXRsZT4KIAogICAgPHRncm91cCBjb2xzPSI0Ij4KQEAgLTgxOCw3ICs4MTgsNyBAQAogICAgaXMg b25lIHJvdyBmb3IgZWFjaCBzdXBwb3J0IGZ1bmN0aW9uIGJlbG9uZ2luZyB0byBhbiBvcGVyYXRv ciBmYW1pbHkuCiAgIDwvcGFyYT4KIAotICA8dGFibGU+CisgIDx0YWJsZSBpZD0iY2F0YWxvZy1w Zy1hbXByb2MtdGFibGUiPgogICAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX2FtcHJvYzwvc3RydWN0 bmFtZT4gQ29sdW1uczwvdGl0bGU+CiAKICAgIDx0Z3JvdXAgY29scz0iNCI+CkBAIC00NDMwLDcg KzQ0MzAsNyBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50 Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgT3BlcmF0b3IgY2xhc3NlcyBh cmUgZGVzY3JpYmVkIGF0IGxlbmd0aCBpbiA8eHJlZiBsaW5rZW5kPSJ4aW5kZXgiLz4uCiAgIDwv cGFyYT4KIAotICA8dGFibGU+CisgIDx0YWJsZSBpZD0iY2F0YWxvZy1wZy1vcGNsYXNzLXRhYmxl Ij4KICAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19vcGNsYXNzPC9zdHJ1Y3RuYW1lPiBDb2x1bW5z PC90aXRsZT4KIAogICAgPHRncm91cCBjb2xzPSI0Ij4KQEAgLTQ2OTIsNyArNDY5Miw3IEBAIFND UkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNl YWJsZT46PHJlcGxhY2VhYmxlPiZsCiAgICBPcGVyYXRvciBmYW1pbGllcyBhcmUgZGVzY3JpYmVk IGF0IGxlbmd0aCBpbiA8eHJlZiBsaW5rZW5kPSJ4aW5kZXgiLz4uCiAgIDwvcGFyYT4KIAotICA8 dGFibGU+CisgIDx0YWJsZSBpZD0iY2F0YWxvZy1wZy1vcGZhbWlseS10YWJsZSI+CiAgICA8dGl0 bGU+PHN0cnVjdG5hbWU+cGdfb3BmYW1pbHk8L3N0cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxlPgog CiAgICA8dGdyb3VwIGNvbHM9IjQiPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wc3Fs LXJlZi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCmluZGV4IDZlNmQwZjQy ZDEuLjdmMjYzMWQ3NWQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKQEAgLTEyMDMsNiArMTIwMyw5 NSBAQCB0ZXN0ZGI9Jmd0OwogICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAg ICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIAorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAg ICAgPHRlcm0+CisgICAgICAgICAgPGxpdGVyYWw+XGRBZgorICAgICAgICAgIFsgPGxpbmsgbGlu a2VuZD0iYXBwLXBzcWwtcGF0dGVybnMiPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5h Y2Nlc3MtbWV0aG9kLXBhdHRlcm48L3JlcGxhY2VhYmxlPjwvbGluaz4gCisgICAgICAgICAgICBb PGxpbmsgbGlua2VuZD0iYXBwLXBzcWwtcGF0dGVybnMiPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5vcGVyYXRvci1mYW1pbHktcGF0dGVybjwvcmVwbGFjZWFibGU+PC9saW5rPl1dCisg ICAgICAgICAgPC9saXRlcmFsPgorICAgICAgICA8L3Rlcm0+CisKKyAgICAgICAgPGxpc3RpdGVt PgorICAgICAgICA8cGFyYT4KKyAgICAgICAgTGlzdHMgb3BlcmF0b3IgZmFtaWxpZXMgKDx4cmVm IGxpbmtlbmQ9ImNhdGFsb2ctcGctb3BmYW1pbHktdGFibGUiLz4pLiBJZiA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+YWNjZXNzLW1ldGhvZC1wYXR0ZXJuPC9yZXBsYWNlYWJsZT4gaXMg c3BlY2lmaWVkLCBvbmx5CisgICAgICAgIGZhbWlsaWVzIHdob3NlIGFjY2VzcyBtZXRob2QgbmFt ZSBtYXRjaGVzIHRoZSBwYXR0ZXJuIGFyZSBzaG93bi4KKyAgICAgICAgSWYgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm9wZXJhdG9yLWZhbWlseS1wYXR0ZXJuPC9yZXBsYWNlYWJsZT4g aXMgc3BlY2lmaWVkLCBvbmx5CisgICAgICAgIG9wZXJlYXRvciBmYW1pbGllcyBhc3NvY2lhdGVk IHdpdGggd2hvc2UgbmFtZSBtYXRjaGVzIHRoZSBwYXR0ZXJuIGFyZSBzaG93bi4KKyAgICAgICAg SWYgPGxpdGVyYWw+KzwvbGl0ZXJhbD4gaXMgYXBwZW5kZWQgdG8gdGhlIGNvbW1hbmQgbmFtZSwg ZWFjaCBvcGVyYXRvcgorICAgICAgICBmYW1pbHkgaXMgbGlzdGVkIHdpdGggaXQncyBvd25lci4K KyAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50 cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPgorICAgICAgICAgIDxs aXRlcmFsPlxkQWZvCisgICAgICAgICAgICBbPGxpbmsgbGlua2VuZD0iYXBwLXBzcWwtcGF0dGVy bnMiPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hY2Nlc3MtbWV0aG9kLXBhdHRlcm48 L3JlcGxhY2VhYmxlPjwvbGluaz4KKyAgICAgICAgICAgICAgWzxsaW5rIGxpbmtlbmQ9ImFwcC1w c3FsLXBhdHRlcm5zIj48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3BlcmF0b3ItZmFt aWx5LXBhdHRlcm48L3JlcGxhY2VhYmxlPjwvbGluaz5dXQorICAgICAgICAgIDwvbGl0ZXJhbD4K KyAgICAgICAgPC90ZXJtPgorCisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+Cisg ICAgICAgIExpc3RzIG9wZXJhdG9ycyAoPHhyZWYgbGlua2VuZD0iY2F0YWxvZy1wZy1hbW9wLXRh YmxlIi8+KSBhc3NvY2lhdGVkIHdpdGggYWNjZXNzIG1ldGhvZCBvcGVyYXRvciBmYW1pbGllcy4K KyAgICAgICAgSWYgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFjY2Vzcy1tZXRob2Qt cGF0dHRlcm48L3JlcGxhY2VhYmxlPiBpcyBzcGVjaWZpZWQsCisgICAgICAgIG9ubHkgb3BlcmF0 b3JzIGFzc29jaWF0ZWQgd2l0aCBhY2Nlc3MgbWV0aG9kIHdob3NlIG5hbWUgbWF0Y2hlcyBwYXR0 ZXJuIGFyZSBzaG93bi4KKyAgICAgICAgSWYgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm9wZXJhdG9yLWZhbWlseS1wYXR0ZXJuPC9yZXBsYWNlYWJsZT4gaXMgc3BlY2lmaWVkLCBvbmx5 CisgICAgICAgIG9wZXJlYXRvcnMgYXNzb2NpYXRlZCB3aXRoIGZhbWlsaWVzIHdob3NlIG5hbWUg bWF0Y2hlcyB0aGUgcGF0dGVybiBhcmUgc2hvd24uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAg PC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlzdGVudHJ5 PgorICAgICAgICA8dGVybT4KKyAgICAgICAgICA8bGl0ZXJhbD5cZEFmcAorICAgICAgICAgICAg WzxsaW5rIGxpbmtlbmQ9ImFwcC1wc3FsLXBhdHRlcm5zIj48cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+YWNjZXNzLW1ldGhvZC1wYXR0ZXJuPC9yZXBsYWNlYWJsZT48L2xpbms+CisgICAg ICAgICAgICAgIFs8bGluayBsaW5rZW5kPSJhcHAtcHNxbC1wYXR0ZXJucyI+PHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm9wZXJhdG9yLWZhbWlseS1wYXR0ZXJuPC9yZXBsYWNlYWJsZT48 L2xpbms+XV0KKyAgICAgICAgICA8L2xpdGVyYWw+CisgICAgICAgIDwvdGVybT4KKyAgICAgICAg PGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgTGlzdCBwcm9jZWR1cmVzICg8eHJl ZiBsaW5rZW5kPSJjYXRhbG9nLXBnLWFtcHJvYy10YWJsZSIvPikgYWNjb2NpYXRlZCB3aXRoIGFj Y2VzcyBtZXRob2Qgb3BlcmF0b3IgZmFtaWxpZXMuCisgICAgICAgIElmIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5hY2Nlc3MtbWV0aG9kLXBhdHR0ZXJuPC9yZXBsYWNlYWJsZT4gaXMg c3BlY2lmaWVkLAorICAgICAgICBvbmx5IHByb2NlZHVyZXMgYXNzb2NpYXRlZCB3aXRoIGFjY2Vz cyBtZXRob2Qgd2hvc2UgbmFtZSBtYXRjaGVzIHBhdHRlcm4gYXJlIHNob3duLgorICAgICAgICBJ ZiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3BlcmF0b3ItZmFtaWx5LXBhdHRlcm48 L3JlcGxhY2VhYmxlPiBpcyBzcGVjaWZpZWQsIG9ubHkKKyAgICAgICAgcHJvY2VkdXJlcyBhc3Nv Y2lhdGVkIHdpdGggZmFtaWxpZXMgd2hvc2UgbmFtZSBtYXRjaGVzIHRoZSBwYXR0ZXJuIGFyZSBz aG93bi4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJs aXN0ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPgorICAgICAg ICAgIDxsaXRlcmFsPlxkQW9wCisgICAgICAgICAgICBbPGxpbmsgbGlua2VuZD0iYXBwLXBzcWwt cGF0dGVybnMiPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hY2Nlc3MtbWV0aG9kLXBh dHRlcm48L3JlcGxhY2VhYmxlPjwvbGluaz4KKyAgICAgICAgICAgICAgWzxsaW5rIGxpbmtlbmQ9 ImFwcC1wc3FsLXBhdHRlcm5zIj48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3BlcmF0 b3ItY2xhc3MtcGF0dGVybjwvcmVwbGFjZWFibGU+PC9saW5rPl1dCisgICAgICAgICAgPC9saXRl cmFsPgorICAgICAgICA8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+ CisgICAgICAgIFNob3dzIGluZGV4IGFjY2VzcyBtZXRob2Qgb3BlcmF0b3IgY2xhc3NlcyBsaXN0 ZWQgaW4gPHhyZWYgbGlua2VuZD0iY2F0YWxvZy1wZy1vcGNsYXNzLXRhYmxlIi8+LgorICAgICAg ICBJZiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YWNjZXNzLW1ldGhvZC1wYXR0dGVy bjwvcmVwbGFjZWFibGU+IGlzIHNwZWNpZmllZCwKKyAgICAgICAgb25seSBvcGVyYXRvciBjbGFz c2VzIGFzc29jaWF0ZWQgd2l0aCBhY2Nlc3MgbWV0aG9kIHdob3NlIG5hbWUgbWF0Y2hlcyBwYXR0 ZXJuIGFyZSBzaG93bi4KKyAgICAgICAgSWYgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm9wZXJhdG9yLWNsYXNzLXBhdHRlcm48L3JlcGxhY2VhYmxlPiBpcyBzcGVjaWZpZWQsIG9ubHkK KyAgICAgICAgcHJvY2VkdXJlcyBhc3NvY2lhdGVkIHdpdGggZmFtaWxpZXMgd2hvc2UgbmFtZSBt YXRjaGVzIHRoZSBwYXR0ZXJuIGFyZSBzaG93bi4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8 L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisKKworICAgICAgPHZhcmxpc3RlbnRy eT4KKyAgICAgICAgPHRlcm0+PGxpdGVyYWw+XGRBcCBbIDxsaW5rIGxpbmtlbmQ9ImFwcC1wc3Fs LXBhdHRlcm5zIj48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGF0dGVybjwvcmVwbGFj ZWFibGU+PC9saW5rPiBdPC9saXRlcmFsPjwvdGVybT4KKworICAgICAgICA8bGlzdGl0ZW0+Cisg ICAgICAgIDxwYXJhPgorICAgICAgICBTaG93cyBhY2Nlc3MgbWV0aG9kIHByb3BlcnRpZXMgbGlz dGVkIGluIDx4cmVmCisgICAgICAgICBsaW5rZW5kPSJmdW5jdGlvbnMtaW5mby1pbmRleGFtLXBy b3BzIi8+LiBJZiA8cmVwbGFjZWFibGUKKyAgICAgICAgY2xhc3M9InBhcmFtZXRlciI+cGF0dGVy bjwvcmVwbGFjZWFibGU+IGlzIHNwZWNpZmllZCwgb25seSBhY2Nlc3MKKyAgICAgICAgbWV0aG9k cyB3aG9zZSBuYW1lcyBtYXRjaCB0aGUgcGF0dGVybiBhcmUgc2hvd24uCisgICAgICAgIDwvcGFy YT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgogCiAgICAgICA8 dmFybGlzdGVudHJ5PgogICAgICAgICA8dGVybT48bGl0ZXJhbD5cZGJbK10gWyA8bGluayBsaW5r ZW5kPSJhcHAtcHNxbC1wYXR0ZXJucyI+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh dHRlcm48L3JlcGxhY2VhYmxlPjwvbGluaz4gXTwvbGl0ZXJhbD48L3Rlcm0+CkBAIC0xMzUxLDYg KzE0NDAsMzUgQEAgdGVzdGRiPSZndDsKICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFy bGlzdGVudHJ5PgogCisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT48bGl0ZXJh bD5cZGlwIFsgPGxpbmsgbGlua2VuZD0iYXBwLXBzcWwtcGF0dGVybnMiPjxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5wYXR0ZXJuPC9yZXBsYWNlYWJsZT48L2xpbms+IF08L2xpdGVyYWw+ PC90ZXJtPgorCisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgIFNo b3dzIGluZGV4IHByb3BlcnRpZXMgbGlzdGVkIGluIDx4cmVmCisgICAgICAgIGxpbmtlbmQ9ImZ1 bmN0aW9ucy1pbmZvLWluZGV4LXByb3BzIi8+LiBJZiA8cmVwbGFjZWFibGUKKyAgICAgICAgY2xh c3M9InBhcmFtZXRlciI+cGF0dGVybjwvcmVwbGFjZWFibGU+IGlzIHNwZWNpZmllZCwgb25seSBh Y2Nlc3MKKyAgICAgICAgbWV0aG9kcyB3aG9zZSBuYW1lcyBtYXRjaCB0aGUgcGF0dGVybiBhcmUg c2hvd24uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4gICAgICAgIAorICAg ICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJt PgorICAgICAgICAgIDxsaXRlcmFsPlxkaWNwIFsgPGxpbmsgbGlua2VuZD0iYXBwLXBzcWwtcGF0 dGVybnMiPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleC1uYW1lLXBhdHRlcm48 L3JlcGxhY2VhYmxlPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgPGxp bmsgbGlua2VuZD0iYXBwLXBzcWwtcGF0dGVybnMiPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5jb2x1bW4tbmFtZS1wYXR0ZXJuPC9yZXBsYWNlYWJsZT48L2xpbms+IF1dCisgICAgICAg ICAgPC9saXRlcmFsPgorICAgICAgICA8L3Rlcm0+CisKKyAgICAgICAgPGxpc3RpdGVtPgorICAg ICAgICA8cGFyYT4KKyAgICAgICAgU2hvd3MgaW5kZXggY29sdW1uIHByb3BlcnRpZXMgbGlzdGVk IGluIDx4cmVmCisgICAgICAgIGxpbmtlbmQ9ImZ1bmN0aW9ucy1pbmZvLWluZGV4LWNvbHVtbi1w cm9wcyIvPi4gSWYgPHJlcGxhY2VhYmxlCisgICAgICAgIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVt bl9uYW1lPC9yZXBsYWNlYWJsZT4gaXMgc3BlY2lmaWVkLCBvbmx5IGNvbHVtbgorICAgICAgICB3 aXRoIHN1Y2ggbmFtZSBpcyBzaG93bi4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3Rp dGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CiAKICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAg ICAgIDx0ZXJtPjxsaXRlcmFsPlxkZXNbK10gWyA8bGluayBsaW5rZW5kPSJhcHAtcHNxbC1wYXR0 ZXJucyI+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhdHRlcm48L3JlcGxhY2VhYmxl PjwvbGluaz4gXTwvbGl0ZXJhbD48L3Rlcm0+CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvY29t bWFuZC5jIGIvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYwppbmRleCAwNGUyMjdiNWE2Li4wMDQzZTM3 MDQwIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvY29tbWFuZC5jCisrKyBiL3NyYy9iaW4vcHNx bC9jb21tYW5kLmMKQEAgLTcwMyw3ICs3MDMsMjMgQEAgZXhlY19jb21tYW5kX2QoUHNxbFNjYW5T dGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsIGNvbnN0IGNoYXIgKmNtZCkKIAkJ CQkJc3VjY2VzcyA9IGxpc3RUYWJsZXMoInR2bXNFIiwgTlVMTCwgc2hvd192ZXJib3NlLCBzaG93 X3N5c3RlbSk7CiAJCQkJYnJlYWs7CiAJCQljYXNlICdBJzoKLQkJCQlzdWNjZXNzID0gZGVzY3Jp YmVBY2Nlc3NNZXRob2RzKHBhdHRlcm4sIHNob3dfdmVyYm9zZSk7CisJCQkJeworCQkJCQljaGFy CSAgICpwYXR0ZXJuMiA9IHBzcWxfc2Nhbl9zbGFzaF9vcHRpb24oc2Nhbl9zdGF0ZSwgT1RfTk9S TUFMLCBOVUxMLCB0cnVlKTsKKworCQkJCQlpZiAoc3RybmNtcChjbWQsICJkQXAiLCAzKSA9PSAw KQorCQkJCQkJc3VjY2VzcyA9IGRlc2NyaWJlQWNjZXNzTWV0aG9kUHJvcGVydGllcyhwYXR0ZXJu KTsKKwkJCQkJZWxzZSBpZiAoc3RybmNtcChjbWQsICJkQWZvIiwgNCkgPT0gMCkKKwkJCQkJCXN1 Y2Nlc3MgPSBsaXN0RmFtaWx5Q2xhc3NPcGVyYXRvcnMocGF0dGVybiwgcGF0dGVybjIpOworCQkJ CQllbHNlIGlmIChzdHJuY21wKGNtZCwgImRBZnAiLCA0KSA9PSAwKQorCQkJCQkJc3VjY2VzcyA9 IGxpc3RPcGVyYXRvckZhbWlseVByb2NlZHVyZXMocGF0dGVybiwgcGF0dGVybjIpOworCQkJCQll bHNlIGlmIChzdHJuY21wKGNtZCwgImRBZiIsIDMpID09IDApCisJCQkJCQlzdWNjZXNzID0gbGlz dEFjY2Vzc01ldGhvZE9wZXJhdG9yRmFtaWxpZXMocGF0dGVybiwgcGF0dGVybjIsIHNob3dfdmVy Ym9zZSk7CisJCQkJCWVsc2UgaWYgKHN0cm5jbXAoY21kLCAiZEFvYyIsIDQpID09IDApCisJCQkJ CQlzdWNjZXNzID0gZGVzY3JpYmVBY2Nlc3NNZXRob2RPcGVyYXRvckNsYXNzZXMocGF0dGVybiwg cGF0dGVybjIsIHNob3dfdmVyYm9zZSk7CisJCQkJCWVsc2UKKwkJCQkJCXN1Y2Nlc3MgPSBkZXNj cmliZUFjY2Vzc01ldGhvZHMocGF0dGVybiwgc2hvd192ZXJib3NlKTsKKwkJCQkJZnJlZShwYXR0 ZXJuMik7CisJCQkJfQogCQkJCWJyZWFrOwogCQkJY2FzZSAnYSc6CiAJCQkJc3VjY2VzcyA9IGRl c2NyaWJlQWdncmVnYXRlcyhwYXR0ZXJuLCBzaG93X3ZlcmJvc2UsIHNob3dfc3lzdGVtKTsKQEAg LTc3Myw2ICs3ODksMjMgQEAgZXhlY19jb21tYW5kX2QoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRl LCBib29sIGFjdGl2ZV9icmFuY2gsIGNvbnN0IGNoYXIgKmNtZCkKIAkJCWNhc2UgJ3YnOgogCQkJ Y2FzZSAnbSc6CiAJCQljYXNlICdpJzoKKwkJCQlpZiAoc3RybmNtcChjbWQsICJkaXAiLCAzKSA9 PSAwKQorCQkJCXsKKwkJCQkJc3VjY2VzcyA9IGRlc2NyaWJlSW5kZXhQcm9wZXJ0aWVzKHBhdHRl cm4sIHNob3dfc3lzdGVtKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJCWVsc2UgaWYgKHN0cm5j bXAoY21kLCAiZGljcCIsIDQpID09IDApCisJCQkJeworCQkJCQljaGFyCSAgICpjb2x1bW5fcGF0 dGVybiA9IE5VTEw7CisKKwkJCQkJaWYgKHBhdHRlcm4pCisJCQkJCQljb2x1bW5fcGF0dGVybiA9 IHBzcWxfc2Nhbl9zbGFzaF9vcHRpb24oc2Nhbl9zdGF0ZSwKKwkJCQkJCQkJCQkJCQkJCQlPVF9O T1JNQUwsIE5VTEwsIHRydWUpOworCisJCQkJCXN1Y2Nlc3MgPSBkZXNjcmliZUluZGV4Q29sdW1u UHJvcGVydGllcyhwYXR0ZXJuLCBjb2x1bW5fcGF0dGVybiwgc2hvd19zeXN0ZW0pOworCQkJCQlm cmVlKGNvbHVtbl9wYXR0ZXJuKTsKKwkJCQkJYnJlYWs7CisJCQkJfQogCQkJY2FzZSAncyc6CiAJ CQljYXNlICdFJzoKIAkJCQlzdWNjZXNzID0gbGlzdFRhYmxlcygmY21kWzFdLCBwYXR0ZXJuLCBz aG93X3ZlcmJvc2UsIHNob3dfc3lzdGVtKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNj cmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggNGNhMGRiMWQwYy4uODZlZWM0 N2VlZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMKQEAgLTQ0LDcgKzQ0LDkgQEAgc3RhdGljIGJvb2wgZGVzY3JpYmVPbmVU U0NvbmZpZyhjb25zdCBjaGFyICpvaWQsIGNvbnN0IGNoYXIgKm5zcG5hbWUsCiAJCQkJCWNvbnN0 IGNoYXIgKnBuc3BuYW1lLCBjb25zdCBjaGFyICpwcnNuYW1lKTsKIHN0YXRpYyB2b2lkIHByaW50 QUNMQ29sdW1uKFBRRXhwQnVmZmVyIGJ1ZiwgY29uc3QgY2hhciAqY29sbmFtZSk7CiBzdGF0aWMg Ym9vbCBsaXN0T25lRXh0ZW5zaW9uQ29udGVudHMoY29uc3QgY2hhciAqZXh0bmFtZSwgY29uc3Qg Y2hhciAqb2lkKTsKLQorc3RhdGljIGJvb2wgZGVzY3JpYmVPbmVJbmRleENvbHVtblByb3BlcnRp ZXMoY29uc3QgY2hhciAqb2lkLCBjb25zdCBjaGFyICpuc3BuYW1lLAorCQkJCQkJCQkgY29uc3Qg Y2hhciAqaWR4bmFtZSwgY29uc3QgY2hhciAqYW1uYW1lLAorCQkJCQkJCQkgY29uc3QgY2hhciAq dGFibmFtZSwgY29uc3QgY2hhciAqY29sdW1uX3BhdHRlcm4pOwogCiAvKi0tLS0tLS0tLS0tLS0t LS0KICAqIEhhbmRsZXJzIGZvciB2YXJpb3VzIHNsYXNoIGNvbW1hbmRzIGRpc3BsYXlpbmcgc29t ZSBzb3J0IG9mIGxpc3QKQEAgLTU1ODcsMyArNTU4OSw1NTkgQEAgcHJpbnRBQ0xDb2x1bW4oUFFF eHBCdWZmZXIgYnVmLCBjb25zdCBjaGFyICpjb2xuYW1lKQogCQkJCQkJICAicGdfY2F0YWxvZy5h cnJheV90b19zdHJpbmcoJXMsICdcXG4nKSBBUyBcIiVzXCIiLAogCQkJCQkJICBjb2xuYW1lLCBn ZXR0ZXh0X25vb3AoIkFjY2VzcyBwcml2aWxlZ2VzIikpOwogfQorCisvKgorICogXGRpcAorICog VGFrZXMgYW4gb3B0aW9uYWwgcmVnZXhwIHRvIHNlbGVjdCBwYXJ0aWN1bGFyIGluZGV4LiBEZXNj cmliZXMgaW5kZXggcHJvZXJ0aWVzCisgKi8KK2Jvb2wKK2Rlc2NyaWJlSW5kZXhQcm9wZXJ0aWVz KGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgc2hvd1N5c3RlbSkKK3sKKwlQUUV4cEJ1ZmZlckRh dGEgYnVmOworCVBHcmVzdWx0ICAgKnJlczsKKwlwcmludFF1ZXJ5T3B0IG15b3B0ID0gcHNldC5w b3B0OworCisJLyogd2hhdCBmb3IgPyAqLworCXN0YXRpYyBjb25zdCBib29sIHRyYW5zbGF0ZV9j b2x1bW5zW10gPSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs c2V9OworCisJaW5pdFBRRXhwQnVmZmVyKCZidWYpOworCisJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1 ZiwKKwkJCQkJICAiU0VMRUNUIgorCQkJCQkgICIgIG4ubnNwbmFtZSBhcyBcIiVzXCIsXG4iCisJ CQkJCSAgIiAgYy5yZWxuYW1lIGFzIFwiJXNcIixcbiIKKwkJCQkJICAiICBhbS5hbW5hbWUgYXMg XCIlc1wiLFxuIgorCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfaW5kZXhfaGFzX3Byb3BlcnR5KGMu cmVsbmFtZTo6cGdfY2F0YWxvZy5yZWdjbGFzcywgJ2NsdXN0ZXJhYmxlJykgYXMgXCIlc1wiLFxu IgorCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfaW5kZXhfaGFzX3Byb3BlcnR5KGMucmVsbmFtZTo6 cGdfY2F0YWxvZy5yZWdjbGFzcywgJ2luZGV4X3NjYW4nKSBhcyBcIiVzXCIsXG4iCisJCQkJCSAg IiAgcGdfY2F0YWxvZy5wZ19pbmRleF9oYXNfcHJvcGVydHkoYy5yZWxuYW1lOjpwZ19jYXRhbG9n LnJlZ2NsYXNzLCAnYml0bWFwX3NjYW4nKSBhcyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgcGdfY2F0 YWxvZy5wZ19pbmRleF9oYXNfcHJvcGVydHkoYy5yZWxuYW1lOjpwZ19jYXRhbG9nLnJlZ2NsYXNz LCAnYmFja3dhcmRfc2NhbicpIGFzIFwiJXNcIlxuIgorCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cu cGdfY2xhc3MgY1xuIgorCQkJCQkgICIgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVzcGFj ZSBuIE9OIG4ub2lkID0gYy5yZWxuYW1lc3BhY2VcbiIKKwkJCQkJICAiICBMRUZUIEpPSU4gcGdf Y2F0YWxvZy5wZ19hbSBhbSBPTiBhbS5vaWQgPSBjLnJlbGFtXG4iCisJCQkJCSAgIldIRVJFIGMu cmVsa2luZD0naSdcbiIKKwkJCQkJICAiICBBTkQgbi5uc3BuYW1lICF+ICdwZ190b2FzdCdcbiIs CisJCQkJCSAgZ2V0dGV4dF9ub29wKCJTY2hlbWEiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIk5h bWUiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIkFjY2VzcyBtZXRob2QiKSwKKwkJCQkJICBnZXR0 ZXh0X25vb3AoIkNsdXN0ZXJhYmxlIiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJJbmRleCBzY2Fu IiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJCaXRtYXAgc2NhbiIpLAorCQkJCQkgIGdldHRleHRf bm9vcCgiQmFja3dhcmQgc2NhbiIpKTsKKworCWlmICghc2hvd1N5c3RlbSAmJiAhcGF0dGVybikK KwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwKKwkJCQkJCQkgIiAgQU5EIG4ubnNwbmFtZSA8 PiAncGdfY2F0YWxvZydcbiIKKwkJCQkJCQkgIiAgQU5EIG4ubnNwbmFtZSA8PiAnaW5mb3JtYXRp b25fc2NoZW1hJ1xuIik7CisKKwlwcm9jZXNzU1FMTmFtZVBhdHRlcm4ocHNldC5kYiwgJmJ1Ziwg cGF0dGVybiwgdHJ1ZSwgZmFsc2UsCisJCQkJCQkgICJuLm5zcG5hbWUiLCAiYy5yZWxuYW1lIiwg TlVMTCwgTlVMTCk7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiT1JERVIgQlkgMTsi KTsKKwlyZXMgPSBQU1FMZXhlYyhidWYuZGF0YSk7CisJdGVybVBRRXhwQnVmZmVyKCZidWYpOwor CWlmICghcmVzKQorCQlyZXR1cm4gZmFsc2U7CisKKwlteW9wdC5udWxsUHJpbnQgPSBOVUxMOwor CW15b3B0LnRpdGxlID0gXygiSW5kZXggcHJvcGVydGllcyIpOworCW15b3B0LnRyYW5zbGF0ZV9o ZWFkZXIgPSB0cnVlOworCW15b3B0LnRyYW5zbGF0ZV9jb2x1bW5zID0gdHJhbnNsYXRlX2NvbHVt bnM7CisJbXlvcHQubl90cmFuc2xhdGVfY29sdW1ucyA9IGxlbmd0aG9mKHRyYW5zbGF0ZV9jb2x1 bW5zKTsKKworCXByaW50UXVlcnkocmVzLCAmbXlvcHQsIHBzZXQucXVlcnlGb3V0LCBmYWxzZSwg cHNldC5sb2dmaWxlKTsKKworCVBRY2xlYXIocmVzKTsKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyog XGRBcAorICoJVGFrZXMgYW4gb3B0aW9uYWwgcmVnZXhwIHRvIHNlbGVjdCBwYXJ0aWN1bGFyIGFj Y2VzcyBtZXRob2RzCisgKi8KK2Jvb2wKK2Rlc2NyaWJlQWNjZXNzTWV0aG9kUHJvcGVydGllcyhj b25zdCBjaGFyICpwYXR0ZXJuKQoreworCVBRRXhwQnVmZmVyRGF0YSBidWY7CisJUEdyZXN1bHQg ICAqcmVzOworCXByaW50UXVlcnlPcHQgbXlvcHQgPSBwc2V0LnBvcHQ7CisJc3RhdGljIGNvbnN0 IGJvb2wgdHJhbnNsYXRlX2NvbHVtbnNbXSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg dHJ1ZX07CisKKwlpZiAocHNldC5zdmVyc2lvbiA8IDkwNjAwKQorCXsKKwkJY2hhcgkJc3ZlcmJ1 ZlszMl07CisKKwkJcHNxbF9lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qg c3VwcG9ydCBhY2Nlc3MgbWV0aG9kcy5cbiIsCisJCQkJICAgZm9ybWF0UEdWZXJzaW9uTnVtYmVy KHBzZXQuc3ZlcnNpb24sIGZhbHNlLAorCQkJCQkJCQkJCSBzdmVyYnVmLCBzaXplb2Yoc3ZlcmJ1 ZikpKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJaW5pdFBRRXhwQnVmZmVyKCZidWYpOworCisJ cHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJICAiU0VMRUNUIGEuYW1uYW1lIEFTIFwiJXNc IixcbiIKKwkJCQkJICAiICBwZ19jYXRhbG9nLnBnX2luZGV4YW1faGFzX3Byb3BlcnR5KGEub2lk LCAnY2FuX29yZGVyJykgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfaW5k ZXhhbV9oYXNfcHJvcGVydHkoYS5vaWQsICdjYW5fdW5pcXVlJykgQVMgXCIlc1wiLFxuIgorCQkJ CQkgICIgIHBnX2NhdGFsb2cucGdfaW5kZXhhbV9oYXNfcHJvcGVydHkoYS5vaWQsICdjYW5fbXVs dGlfY29sJykgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfaW5kZXhhbV9o YXNfcHJvcGVydHkoYS5vaWQsICdjYW5fZXhjbHVkZScpIEFTIFwiJXNcIiIsCisJCQkJCSAgZ2V0 dGV4dF9ub29wKCJBTSBOYW1lIiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJDYW4gb3JkZXIiKSwK KwkJCQkJICBnZXR0ZXh0X25vb3AoIkNhbiB1bmlxdWUiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3Ao IkNhbiBtdWx0aSBjb2wiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIkNhbiBleGNsdWRlIikpOwor CisJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwKKwkJCQkJCSAiXG5GUk9NIHBnX2NhdGFsb2cu cGdfYW0gYVxuIik7CisKKwlwcm9jZXNzU1FMTmFtZVBhdHRlcm4ocHNldC5kYiwgJmJ1ZiwgcGF0 dGVybiwgZmFsc2UsIGZhbHNlLAorCQkJCQkJICBOVUxMLCAiYW1uYW1lIiwgTlVMTCwgTlVMTCk7 CisKKwlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiT1JERVIgQlkgMTsiKTsKKwlyZXMgPSBQ U1FMZXhlYyhidWYuZGF0YSk7CisJdGVybVBRRXhwQnVmZmVyKCZidWYpOworCWlmICghcmVzKQor CQlyZXR1cm4gZmFsc2U7CisKKwlteW9wdC5udWxsUHJpbnQgPSBOVUxMOworCW15b3B0LnRpdGxl ID0gXygiQWNjZXNzIG1ldGhvZCBwcm9wZXJ0aWVzIik7CisJbXlvcHQudHJhbnNsYXRlX2hlYWRl ciA9IHRydWU7CisJbXlvcHQudHJhbnNsYXRlX2NvbHVtbnMgPSB0cmFuc2xhdGVfY29sdW1uczsK KwlteW9wdC5uX3RyYW5zbGF0ZV9jb2x1bW5zID0gbGVuZ3Rob2YodHJhbnNsYXRlX2NvbHVtbnMp OworCisJcHJpbnRRdWVyeShyZXMsICZteW9wdCwgcHNldC5xdWVyeUZvdXQsIGZhbHNlLCBwc2V0 LmxvZ2ZpbGUpOworCisJUFFjbGVhcihyZXMpOworCXJldHVybiB0cnVlOworfQorCisvKiBcZEFm ICovCitib29sCitsaXN0QWNjZXNzTWV0aG9kT3BlcmF0b3JGYW1pbGllcyhjb25zdCBjaGFyICph Y2Nlc3NfbWV0aG9kX3BhdHRlcm4sIGNvbnN0IGNoYXIgKmZhbWlseV9wYXR0ZXJuLCBib29sIHZl cmJvc2UpCit7CisJUFFFeHBCdWZmZXJEYXRhIGJ1ZjsKKwlQR3Jlc3VsdCAgICpyZXM7CisJcHJp bnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKKwlib29sCQloYXZlX3doZXJlID0gZmFsc2U7 CisJc3RhdGljIGNvbnN0IGJvb2wgdHJhbnNsYXRlX2NvbHVtbnNbXSA9IHtmYWxzZSwgZmFsc2Us IGZhbHNlLCBmYWxzZX07CisKKwlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7CisKKwlwcmludGZQUUV4 cEJ1ZmZlcigmYnVmLAorCQkJCQkgICJTRUxFQ1RcbiIKKwkJCQkJICAiICBhbS5hbW5hbWUgQVMg XCIlc1wiLFxuIgorCQkJCQkgICIgIG5zLm5zcG5hbWUgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIg IG9mLm9wZm5hbWUgQVMgXCIlc1wiXG4iLAorCQkJCQkgIGdldHRleHRfbm9vcCgiQWNjZXNzIG1l dGhvZCIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiT3BlcmF0b3IgZmFtaWx5IHNjaGVtYSIpLAor CQkJCQkgIGdldHRleHRfbm9vcCgiT3BlcmF0b3IgZmFtaWx5IG5hbWUiKSk7CisJaWYgKHZlcmJv c2UpCisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkgICIsICB1c3IudXNlbmFtZSBB UyBcIiVzXCJcbiIsCisJCQkJCQkgIGdldHRleHRfbm9vcCgiT3duZXIiKSk7CisJYXBwZW5kUFFF eHBCdWZmZXIoJmJ1ZiwKKwkJCQkJICAiICBGUk9NIHBnX2NhdGFsb2cucGdfb3BmYW1pbHkgb2Zc biIKKwkJCQkJICAiICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19hbSBhbSBPTiBhbS5vaWQgPSBv Zi5vcGZtZXRob2RcbiIKKwkJCQkJICAiICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3Bh Y2UgbnMgT04gb2Yub3BmbmFtZXNwYWNlID0gbnMub2lkXG4iKTsKKwlpZiAodmVyYm9zZSkKKwkJ YXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCSAgIiAgTEVGVCBKT0lOIHBnX2NhdGFsb2cu cGdfdXNlciB1c3IgT04gb2Yub3Bmb3duZXIgPSB1c3IudXNlc3lzaWRcbiIKKwkJCSk7CisJaWYg KGFjY2Vzc19tZXRob2RfcGF0dGVybikKKwkJaGF2ZV93aGVyZSA9IHByb2Nlc3NTUUxOYW1lUGF0 dGVybihwc2V0LmRiLCAmYnVmLCBhY2Nlc3NfbWV0aG9kX3BhdHRlcm4sIGZhbHNlLCBmYWxzZSwK KwkJCQkJCQkJCQkgICAiYW0uYW1uYW1lIiwgImFtLmFtbmFtZSIsIE5VTEwsIE5VTEwpOworCWlm IChmYW1pbHlfcGF0dGVybikKKwkJcHJvY2Vzc1NRTE5hbWVQYXR0ZXJuKHBzZXQuZGIsICZidWYs IGZhbWlseV9wYXR0ZXJuLCBoYXZlX3doZXJlLCBmYWxzZSwKKwkJCQkJCQkgICJucy5uc3BuYW1l IiwgIm9mLm9wZm5hbWUiLCBOVUxMLCBOVUxMKTsKKworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZi dWYsICJPUkRFUiBCWSAxLCAyOyIpOworCisJcmVzID0gUFNRTGV4ZWMoYnVmLmRhdGEpOworCXRl cm1QUUV4cEJ1ZmZlcigmYnVmKTsKKwlpZiAoIXJlcykKKwkJcmV0dXJuIGZhbHNlOworCisJbXlv cHQubnVsbFByaW50ID0gTlVMTDsKKwlteW9wdC50aXRsZSA9IF8oIkxpc3Qgb2Ygb3BlcmF0b3Ig ZmFtaWxpZXMiKTsKKwlteW9wdC50cmFuc2xhdGVfaGVhZGVyID0gdHJ1ZTsKKwlteW9wdC50cmFu c2xhdGVfY29sdW1ucyA9IHRyYW5zbGF0ZV9jb2x1bW5zOworCW15b3B0Lm5fdHJhbnNsYXRlX2Nv bHVtbnMgPSBsZW5ndGhvZih0cmFuc2xhdGVfY29sdW1ucyk7CisKKwlwcmludFF1ZXJ5KHJlcywg Jm15b3B0LCBwc2V0LnF1ZXJ5Rm91dCwgZmFsc2UsIHBzZXQubG9nZmlsZSk7CisKKwlQUWNsZWFy KHJlcyk7CisJcmV0dXJuIHRydWU7CisKK30KKworLyogXGRBZm8gKi8KK2Jvb2wKK2xpc3RGYW1p bHlDbGFzc09wZXJhdG9ycyhjb25zdCBjaGFyICphY2Nlc3NfbWV0aG9kX3BhdHRlcm4sIGNvbnN0 IGNoYXIgKmZhbWlseV9wYXR0ZXJuKQoreworCVBRRXhwQnVmZmVyRGF0YSBidWY7CisJUEdyZXN1 bHQgICAqcmVzOworCXByaW50UXVlcnlPcHQgbXlvcHQgPSBwc2V0LnBvcHQ7CisJYm9vbAkJaGF2 ZV93aGVyZSA9IGZhbHNlOworCisJc3RhdGljIGNvbnN0IGJvb2wgdHJhbnNsYXRlX2NvbHVtbnNb XSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs c2UsIGZhbHNlfTsKKworCWluaXRQUUV4cEJ1ZmZlcigmYnVmKTsKKworCXByaW50ZlBRRXhwQnVm ZmVyKCZidWYsCisJCQkJCSAgIlNFTEVDVCBESVNUSU5DVFxuIgorCQkJCQkgICIgIGFtLmFtbmFt ZSBBUyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgbnNmLm5zcG5hbWUgQVMgXCIlc1wiLFxuIgorCQkJ CQkgICIgIG9mLm9wZm5hbWUgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHBnX2NhdGFsb2cuZm9y bWF0X3R5cGUoby5hbW9wbGVmdHR5cGUgLCBOVUxMKSBBUyBcIiVzXCIsXG4iCisJCQkJCSAgIiAg cGdfY2F0YWxvZy5mb3JtYXRfdHlwZShvLmFtb3ByaWdodHR5cGUgLCBOVUxMKSBBUyBcIiVzXCIs XG4iCisJCQkJCSAgIiAgby5hbW9wc3RyYXRlZ3kgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIENB U0UgV0hFTiBwZ19jYXRhbG9nLnBnX29wZXJhdG9yX2lzX3Zpc2libGUob3Aub2lkKSBcbiIKKwkJ CQkJICAiICAgIFRIRU4gb3Aub3BybmFtZTo6cGdfY2F0YWxvZy50ZXh0IFxuIgorCQkJCQkgICIg ICAgRUxTRSBvLmFtb3BvcHI6OnBnX2NhdGFsb2cucmVnb3Blcjo6cGdfY2F0YWxvZy50ZXh0IFxu IgorCQkJCQkgICIgIEVORCBBUyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgQ0FTRSBvLmFtb3BwdXJw b3NlXG4iCisJCQkJCSAgIiAgICBXSEVOICdvJyBUSEVOICdvcmRlcmluZydcbiIKKwkJCQkJICAi ICAgIFdIRU4gJ3MnIFRIRU4gJ3NlYXJjaCdcbiIKKwkJCQkJICAiICBFTkQgQVMgXCIlc1wiLFxu IgorCQkJCQkgICIgIG9mcy5vcGZuYW1lIEFTIFwiJXNcIlxuIgorCQkJCQkgICJGUk9NIHBnX2Nh dGFsb2cucGdfYW1vcCBvXG4iCisJCQkJCSAgIiAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfb3Bl cmF0b3Igb3AgT04gb3Aub2lkID0gby5hbW9wb3ByXG4iCisJCQkJCSAgIiAgTEVGVCBKT0lOIHBn X2NhdGFsb2cucGdfb3BmYW1pbHkgb2YgT04gb2Yub2lkID0gby5hbW9wZmFtaWx5XG4iCisJCQkJ CSAgIiAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfb3BmYW1pbHkgb2ZzIE9OIG9mcy5vaWQgPSBv LmFtb3Bzb3J0ZmFtaWx5XG4iCisJCQkJCSAgIiAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfYW0g YW0gT04gYW0ub2lkID0gb2Yub3BmbWV0aG9kIEFORCBhbS5vaWQgPSBvLmFtb3BtZXRob2RcbiIK KwkJCQkJICAiICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgbnNmIE9OIG9mLm9w Zm5hbWVzcGFjZSA9IG5zZi5vaWRcbiIsCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJBTSIpLAorCQkJ CQkgIGdldHRleHRfbm9vcCgiT3BmYW1pbHkgU2NoZW1hIiksCisJCQkJCSAgZ2V0dGV4dF9ub29w KCJPcGZhbWlseSBOYW1lIiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJMZWZ0IHR5cGUiKSwKKwkJ CQkJICBnZXR0ZXh0X25vb3AoIlJpZ2h0IHR5cGUiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIlN0 cmF0ZWd5IiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJPcGVyYXRvciIpLAorCQkJCQkgIGdldHRl eHRfbm9vcCgiUHVycG9zZSIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiU29ydCBmYW1pbHkiKSk7 CisKKwlpZiAoYWNjZXNzX21ldGhvZF9wYXR0ZXJuKQorCQloYXZlX3doZXJlID0gcHJvY2Vzc1NR TE5hbWVQYXR0ZXJuKHBzZXQuZGIsICZidWYsIGFjY2Vzc19tZXRob2RfcGF0dGVybiwKKwkJCQkJ CQkJCQkgICBmYWxzZSwgZmFsc2UsIE5VTEwsICJhbS5hbW5hbWUiLAorCQkJCQkJCQkJCSAgIE5V TEwsIE5VTEwpOworCisJaWYgKGZhbWlseV9wYXR0ZXJuKQorCQlwcm9jZXNzU1FMTmFtZVBhdHRl cm4ocHNldC5kYiwgJmJ1ZiwgZmFtaWx5X3BhdHRlcm4sIGhhdmVfd2hlcmUsIGZhbHNlLAorCQkJ CQkJCSAgIm5zZi5uc3BuYW1lIiwgIm9mLm9wZm5hbWUiLCBOVUxMLCBOVUxMKTsKKworCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKCZidWYsICJPUkRFUiBCWSAxLCAyLCAzLCA0LCA1LCA2OyIpOworCisJ cmVzID0gUFNRTGV4ZWMoYnVmLmRhdGEpOworCXRlcm1QUUV4cEJ1ZmZlcigmYnVmKTsKKwlpZiAo IXJlcykKKwkJcmV0dXJuIGZhbHNlOworCisJbXlvcHQubnVsbFByaW50ID0gTlVMTDsKKwlteW9w dC50aXRsZSA9IF8oIkxpc3Qgb3BlcmF0b3JzIG9mIGZhbWlseSByZWxhdGVkIHRvIGFjY2VzcyBt ZXRob2QiKTsKKwlteW9wdC50cmFuc2xhdGVfaGVhZGVyID0gdHJ1ZTsKKwlteW9wdC50cmFuc2xh dGVfY29sdW1ucyA9IHRyYW5zbGF0ZV9jb2x1bW5zOworCW15b3B0Lm5fdHJhbnNsYXRlX2NvbHVt bnMgPSBsZW5ndGhvZih0cmFuc2xhdGVfY29sdW1ucyk7CisKKwlwcmludFF1ZXJ5KHJlcywgJm15 b3B0LCBwc2V0LnF1ZXJ5Rm91dCwgZmFsc2UsIHBzZXQubG9nZmlsZSk7CisKKwlQUWNsZWFyKHJl cyk7CisJcmV0dXJuIHRydWU7Cit9CisKKy8qIFxkQWZwICovCitib29sCitsaXN0T3BlcmF0b3JG YW1pbHlQcm9jZWR1cmVzKGNvbnN0IGNoYXIgKmFjY2Vzc19tZXRob2RfcGF0dGVybiwgY29uc3Qg Y2hhciAqZmFtaWx5X3BhdHRlcm4pCit7CisJUFFFeHBCdWZmZXJEYXRhIGJ1ZjsKKwlQR3Jlc3Vs dCAgICpyZXM7CisJcHJpbnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKKwlib29sCQloYXZl X3doZXJlID0gZmFsc2U7CisJc3RhdGljIGNvbnN0IGJvb2wgdHJhbnNsYXRlX2NvbHVtbnNbXSA9 IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX07CisKKwlp bml0UFFFeHBCdWZmZXIoJmJ1Zik7CisKKwlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkg ICJTRUxFQ1QgRElTVElOQ1RcbiIKKwkJCQkJICAiICBhbS5hbW5hbWUgQVMgXCIlc1wiLFxuIgor CQkJCQkgICIgIG5zLm5zcG5hbWUgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIG9mLm9wZm5hbWUg QVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHBnX2NhdGFsb2cuZm9ybWF0X3R5cGUoYXAuYW1wcm9j bGVmdHR5cGUsIE5VTEwpIEFTIFwiJXNcIixcbiIKKwkJCQkJICAiICBwZ19jYXRhbG9nLmZvcm1h dF90eXBlKGFwLmFtcHJvY3JpZ2h0dHlwZSwgTlVMTCkgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIg IGFwLmFtcHJvY251bSBBUyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgYXAuYW1wcm9jOjpwZ19jYXRh bG9nLnJlZ3Byb2M6OnBnX2NhdGFsb2cudGV4dCB8fCAnKCcgfHwgcGdfY2F0YWxvZy5wZ19nZXRf ZnVuY3Rpb25fYXJndW1lbnRzKGFwLmFtcHJvYykgfHwgJyknIEFTIFwiJXNcIlxuIgorCQkJCQkg ICJGUk9NIHBnX2NhdGFsb2cucGdfYW1wcm9jIGFwXG4iCisJCQkJCSAgIiAgTEVGVCBKT0lOIHBn X2NhdGFsb2cucGdfb3BmYW1pbHkgb2YgT04gb2Yub2lkID0gYXAuYW1wcm9jZmFtaWx5XG4iCisJ CQkJCSAgIiAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfYW0gYW0gT04gYW0ub2lkID0gb2Yub3Bm bWV0aG9kXG4iCisJCQkJCSAgIiAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG5z IE9OIG9mLm9wZm5hbWVzcGFjZSA9IG5zLm9pZFxuIiwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIkFN IiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJGYW1pbHkgc2NoZW1hIiksCisJCQkJCSAgZ2V0dGV4 dF9ub29wKCJGYW1pbHkgbmFtZSIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiTGVmdCIpLAorCQkJ CQkgIGdldHRleHRfbm9vcCgiUmlnaHQiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIk51bWJlciIp LAorCQkJCQkgIGdldHRleHRfbm9vcCgiUHJvYyBuYW1lIikpOworCisJaWYgKGFjY2Vzc19tZXRo b2RfcGF0dGVybikKKwkJaGF2ZV93aGVyZSA9IHByb2Nlc3NTUUxOYW1lUGF0dGVybihwc2V0LmRi LCAmYnVmLCBhY2Nlc3NfbWV0aG9kX3BhdHRlcm4sIGZhbHNlLCBmYWxzZSwKKwkJCQkJCQkJCQkg ICBOVUxMLCAiYW0uYW1uYW1lIiwgTlVMTCwKKwkJCQkJCQkJCQkgICBOVUxMKTsKKwlpZiAoZmFt aWx5X3BhdHRlcm4pCisJCXByb2Nlc3NTUUxOYW1lUGF0dGVybihwc2V0LmRiLCAmYnVmLCBmYW1p bHlfcGF0dGVybiwgaGF2ZV93aGVyZSwgZmFsc2UsCisJCQkJCQkJICAibnMubnNwbmFtZSIsICJv Zi5vcGZuYW1lIiwgTlVMTCwKKwkJCQkJCQkgIE5VTEwpOworCisJYXBwZW5kUFFFeHBCdWZmZXJT dHIoJmJ1ZiwKKwkJCQkJCSAiT1JERVIgQlkgMSwgMiwgMywgNCwgNSwgNjsiKTsKKworCXJlcyA9 IFBTUUxleGVjKGJ1Zi5kYXRhKTsKKwl0ZXJtUFFFeHBCdWZmZXIoJmJ1Zik7CisJaWYgKCFyZXMp CisJCXJldHVybiBmYWxzZTsKKworCW15b3B0Lm51bGxQcmludCA9IE5VTEw7CisJbXlvcHQudGl0 bGUgPSBfKCJMaXN0IG9mIG9wZXJhdG9yIGZhbWlseSBwcm9jZWR1cmVzIik7CisJbXlvcHQudHJh bnNsYXRlX2hlYWRlciA9IHRydWU7CisJbXlvcHQudHJhbnNsYXRlX2NvbHVtbnMgPSB0cmFuc2xh dGVfY29sdW1uczsKKwlteW9wdC5uX3RyYW5zbGF0ZV9jb2x1bW5zID0gbGVuZ3Rob2YodHJhbnNs YXRlX2NvbHVtbnMpOworCisJcHJpbnRRdWVyeShyZXMsICZteW9wdCwgcHNldC5xdWVyeUZvdXQs IGZhbHNlLCBwc2V0LmxvZ2ZpbGUpOworCisJUFFjbGVhcihyZXMpOworCXJldHVybiB0cnVlOwor fQorCisvKiBcZGljcCAqLworYm9vbAorZGVzY3JpYmVJbmRleENvbHVtblByb3BlcnRpZXMoY29u c3QgY2hhciAqaW5kZXhfcGF0dGVybiwgY29uc3QgY2hhciAqY29sdW1uX3BhdHRlcm4sIGJvb2wg c2hvd1N5c3RlbSkKK3sKKwlQUUV4cEJ1ZmZlckRhdGEgYnVmOworCVBHcmVzdWx0ICAgKnJlczsK KwlpbnQJCQlpOworCisJaW5pdFBRRXhwQnVmZmVyKCZidWYpOworCisJcHJpbnRmUFFFeHBCdWZm ZXIoJmJ1ZiwKKwkJCQkJICAiU0VMRUNUIERJU1RJTkNUIGMub2lkLFxuIgorCQkJCQkgICIgIG4u bnNwbmFtZSxcbiIKKwkJCQkJICAiICBjLnJlbG5hbWUsXG4iCisJCQkJCSAgIiAgYW0uYW1uYW1l LFxuIgorCQkJCQkgICIgIGMyLnJlbG5hbWVcbiIKKwkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBn X2NsYXNzIGNcbiIKKwkJCQkJICAiICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2Ug biBPTiBuLm9pZCA9IHJlbG5hbWVzcGFjZVxuIgorCQkJCQkgICIgIExFRlQgSk9JTiBwZ19jYXRh bG9nLnBnX2FtIGFtIE9OIGFtLm9pZCA9IGMucmVsYW1cbiIKKwkJCQkJICAiICBMRUZUIEpPSU4g cGdfY2F0YWxvZy5wZ19pbmRleCBpIE9OIGkuaW5kZXhyZWxpZCA9IGMub2lkXG4iCisJCQkJCSAg IiAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgYzIgT04gaS5pbmRyZWxpZCA9IGMyLm9p ZFxuIgorCQkJCQkgICJXSEVSRSBjLnJlbGtpbmQ9J2knXG4iKTsKKworCWlmICghc2hvd1N5c3Rl bSAmJiAhaW5kZXhfcGF0dGVybikKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIkFORCBu Lm5zcG5hbWUgPD4gJ3BnX2NhdGFsb2cnXG4iCisJCQkJCQkJICJBTkQgbi5uc3BuYW1lIDw+ICdp bmZvcm1hdGlvbl9zY2hlbWEnXG4iKTsKKworCXByb2Nlc3NTUUxOYW1lUGF0dGVybihwc2V0LmRi LCAmYnVmLCBpbmRleF9wYXR0ZXJuLCB0cnVlLCBmYWxzZSwKKwkJCQkJCSAgIm4ubnNwbmFtZSIs ICJjLnJlbG5hbWUiLCBOVUxMLAorCQkJCQkJICAicGdfY2F0YWxvZy5wZ190YWJsZV9pc192aXNp YmxlKGMub2lkKSIpOworCisJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIk9SREVSIEJZIDIs IDM7Iik7CisKKwlyZXMgPSBQU1FMZXhlYyhidWYuZGF0YSk7CisJdGVybVBRRXhwQnVmZmVyKCZi dWYpOworCWlmICghcmVzKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAoUFFudHVwbGVzKHJlcykg PT0gMCkKKwl7CisJCWlmICghcHNldC5xdWlldCkKKwkJeworCQkJaWYgKGNvbHVtbl9wYXR0ZXJu KQorCQkJCXBzcWxfZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgaW5kZXggXCIlc1wiIHdpdGggY29s dW1uIFwiJXNcIlxuIiwKKwkJCQkJCSAgIGluZGV4X3BhdHRlcm4sIGNvbHVtbl9wYXR0ZXJuKTsK KwkJCWVsc2UgaWYgKGluZGV4X3BhdHRlcm4pCisJCQkJcHNxbF9lcnJvcigiRGlkIG5vdCBmaW5k IGFueSBpbmRleCBuYW1lZCBcIiVzXCJcbiIsCisJCQkJCQkgICBpbmRleF9wYXR0ZXJuKTsKKwkJ CWVsc2UKKwkJCQlwc3FsX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHJlbGF0aW9ucy5cbiIpOwor CQl9CisJCVBRY2xlYXIocmVzKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWZvciAoaSA9IDA7 IGkgPCBQUW50dXBsZXMocmVzKTsgaSsrKQorCXsKKwkJY29uc3QgY2hhciAqb2lkID0gUFFnZXR2 YWx1ZShyZXMsIGksIDApOworCQljb25zdCBjaGFyICpuc3BuYW1lID0gUFFnZXR2YWx1ZShyZXMs IGksIDEpOworCQljb25zdCBjaGFyICppZHhuYW1lID0gUFFnZXR2YWx1ZShyZXMsIGksIDIpOwor CQljb25zdCBjaGFyICphbW5hbWUgPSBQUWdldHZhbHVlKHJlcywgaSwgMyk7CisJCWNvbnN0IGNo YXIgKnRhYm5hbWUgPSBQUWdldHZhbHVlKHJlcywgaSwgNCk7CisKKwkJaWYgKCFkZXNjcmliZU9u ZUluZGV4Q29sdW1uUHJvcGVydGllcyhvaWQsIG5zcG5hbWUsIGlkeG5hbWUsIGFtbmFtZSwKKwkJ CQkJCQkJCQkJICB0YWJuYW1lLCBjb2x1bW5fcGF0dGVybikpCisJCXsKKwkJCVBRY2xlYXIocmVz KTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCQlpZiAoY2FuY2VsX3ByZXNzZWQpCisJCXsKKwkJ CVBRY2xlYXIocmVzKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCX0KKworCVBRY2xlYXIocmVz KTsKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wKK2Rlc2NyaWJlT25lSW5kZXhDb2x1 bW5Qcm9wZXJ0aWVzKGNvbnN0IGNoYXIgKm9pZCwKKwkJCQkJCQkJIGNvbnN0IGNoYXIgKm5zcG5h bWUsCisJCQkJCQkJCSBjb25zdCBjaGFyICppZHhuYW1lLAorCQkJCQkJCQkgY29uc3QgY2hhciAq YW1uYW1lLAorCQkJCQkJCQkgY29uc3QgY2hhciAqdGFibmFtZSwKKwkJCQkJCQkJIGNvbnN0IGNo YXIgKmNvbHVtbl9wYXR0ZXJuKQoreworCVBRRXhwQnVmZmVyRGF0YSBidWY7CisJUEdyZXN1bHQg ICAqcmVzOworCXByaW50UXVlcnlPcHQgbXlvcHQgPSBwc2V0LnBvcHQ7CisJY2hhcgkgICAqZm9v dGVyc1szXSA9IHtOVUxMLCBOVUxMfTsKKwlzdGF0aWMgY29uc3QgYm9vbCB0cmFuc2xhdGVfY29s dW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl LCBmYWxzZSwgZmFsc2UsIGZhbHNlfTsKKworCWluaXRQUUV4cEJ1ZmZlcigmYnVmKTsKKworCXBy aW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJCSAgIlNFTEVDVCAiCisJCQkJCSAgIiAgYS5hdHRu YW1lIEFTIFwiJXNcIiwiCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5wZ19nZXRfaW5kZXhkZWYoaS5p bmRleHJlbGlkLCBhLmF0dG51bSwgdHJ1ZSkgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIG8ub3Bj bmFtZSBBUyBcIiVzXCIsIgorCQkJCQkgICIgIENBU0VcbiIKKwkJCQkJICAiICAgIFdIRU4gcGdf Y2F0YWxvZy5wZ19pbmRleF9jb2x1bW5faGFzX3Byb3BlcnR5KGMucmVsbmFtZTo6cGdfY2F0YWxv Zy5yZWdjbGFzcywgYS5hdHRudW0sICdvcmRlcmFibGUnKSA9IHRydWUgXG4iCisJCQkJCSAgIiAg ICBUSEVOIHBnX2NhdGFsb2cucGdfaW5kZXhfY29sdW1uX2hhc19wcm9wZXJ0eShjLnJlbG5hbWU6 OnBnX2NhdGFsb2cucmVnY2xhc3MsIGEuYXR0bnVtLCAnYXNjJylcbiIKKwkJCQkJICAiICAgIEVM U0UgTlVMTCIKKwkJCQkJICAiICBFTkQgIEFTIFwiJXNcIiwiCisJCQkJCSAgIiAgQ0FTRVxuIgor CQkJCQkgICIgICAgV0hFTiBwZ19jYXRhbG9nLnBnX2luZGV4X2NvbHVtbl9oYXNfcHJvcGVydHko Yy5yZWxuYW1lOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBhLmF0dG51bSwgJ29yZGVyYWJsZScpID0g dHJ1ZSBcbiIKKwkJCQkJICAiICAgIFRIRU4gcGdfY2F0YWxvZy5wZ19pbmRleF9jb2x1bW5faGFz X3Byb3BlcnR5KGMucmVsbmFtZTo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYS5hdHRudW0sICdudWxs c19maXJzdCcpXG4iCisJCQkJCSAgIiAgICBFTFNFIE5VTEwiCisJCQkJCSAgIiAgRU5EICBBUyBc IiVzXCIsIgorCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfaW5kZXhfY29sdW1uX2hhc19wcm9wZXJ0 eShjLnJlbG5hbWU6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGEuYXR0bnVtLCAnb3JkZXJhYmxlJykg QVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfaW5kZXhfY29sdW1uX2hhc19w cm9wZXJ0eShjLnJlbG5hbWU6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGEuYXR0bnVtLCAnZGlzdGFu Y2Vfb3JkZXJhYmxlJykgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHBnX2NhdGFsb2cucGdfaW5k ZXhfY29sdW1uX2hhc19wcm9wZXJ0eShjLnJlbG5hbWU6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGEu YXR0bnVtLCAncmV0dXJuYWJsZScpIEFTIFwiJXNcIixcbiIKKwkJCQkJICAiICBwZ19jYXRhbG9n LnBnX2luZGV4X2NvbHVtbl9oYXNfcHJvcGVydHkoYy5yZWxuYW1lOjpwZ19jYXRhbG9nLnJlZ2Ns YXNzLCBhLmF0dG51bSwgJ3NlYXJjaF9hcnJheScpIEFTIFwiJXNcIixcbiIKKwkJCQkJICAiICBw Z19jYXRhbG9nLnBnX2luZGV4X2NvbHVtbl9oYXNfcHJvcGVydHkoYy5yZWxuYW1lOjpwZ19jYXRh bG9nLnJlZ2NsYXNzLCBhLmF0dG51bSwgJ3NlYXJjaF9udWxscycpIEFTIFwiJXNcIlxuIgorCQkJ CQkgICJGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgY1xuIgorCQkJCQkgICIgIExFRlQgSk9JTiBw Z19jYXRhbG9nLnBnX25hbWVzcGFjZSBuIE9OIG4ub2lkID0gcmVsbmFtZXNwYWNlXG4iCisJCQkJ CSAgIiAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfaW5kZXggaSBPTiBpLmluZGV4cmVsaWQgPSBj Lm9pZFxuIgorCQkJCQkgICIgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIGMyIE9OIGku aW5kcmVsaWQgPSBjMi5vaWRcbiIKKwkJCQkJICAiICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19h dHRyaWJ1dGUgYSBPTiBhLmF0dHJlbGlkID0gYy5vaWRcbiIKKwkJCQkJICAiICBMRUZUIEpPSU4g cGdfY2F0YWxvZy5wZ190eXBlIHQgT04gdC5vaWQgPSBhLmF0dHR5cGlkXG4iCisJCQkJCSAgIiAg TEVGVCBKT0lOIGluZm9ybWF0aW9uX3NjaGVtYS5jb2x1bW5zIGljIE9OIGljLnRhYmxlX25hbWUg PSBjMi5yZWxuYW1lIEFORCBpYy5vcmRpbmFsX3Bvc2l0aW9uID0gaS5pbmRrZXlbYS5hdHRudW0g LSAxXSBcbiIKKwkJCQkJICAiICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19vcGNsYXNzIG8gT04g by5vaWQgPSAoaW5kY2xhc3M6OnBnX2NhdGFsb2cub2lkW10pW2EuYXR0bnVtIC0gMV1cbiIKKwkJ CQkJICAiV0hFUkUgYy5vaWQgPSAlcyIsCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJDb2x1bW4gbmFt ZSIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiRXhwciIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgi T3BjbGFzcyIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiQVNDIiksCisJCQkJCSAgZ2V0dGV4dF9u b29wKCJOdWxscyBmaXJzdCIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiT3JkZXJhYmxlIiksCisJ CQkJCSAgZ2V0dGV4dF9ub29wKCJEaXN0YW5jZSBvcmRlcmFibGUiKSwKKwkJCQkJICBnZXR0ZXh0 X25vb3AoIlJldHVybmFibGUiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIlNlYXJjaCBhcnJheSIp LAorCQkJCQkgIGdldHRleHRfbm9vcCgiU2VhcmNoIG51bGxzIiksCisJCQkJCSAgb2lkKTsKKwor CWlmIChjb2x1bW5fcGF0dGVybikKKwkJcHJvY2Vzc1NRTE5hbWVQYXR0ZXJuKHBzZXQuZGIsICZi dWYsIGNvbHVtbl9wYXR0ZXJuLCB0cnVlLCBmYWxzZSwKKwkJCQkJCQkgIE5VTEwsICJpYy5jb2x1 bW5fbmFtZSIsIE5VTEwsIE5VTEwpOworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICJPUkRF UiBCWSBhLmF0dG51bSIpOworCisJcmVzID0gUFNRTGV4ZWMoYnVmLmRhdGEpOworCXRlcm1QUUV4 cEJ1ZmZlcigmYnVmKTsKKwlpZiAoIXJlcykKKwkJcmV0dXJuIGZhbHNlOworCWlmIChQUW50dXBs ZXMocmVzKSA9PSAwKQorCXsKKwkJUFFjbGVhcihyZXMpOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisK KwlteW9wdC5udWxsUHJpbnQgPSBOVUxMOworCW15b3B0LnRpdGxlID0gcHNwcmludGYoXygiSW5k ZXggJXMuJXMiKSwgbnNwbmFtZSwgaWR4bmFtZSk7CisJZm9vdGVyc1swXSA9IHBzcHJpbnRmKF8o IlRhYmxlOiAlcyIpLCB0YWJuYW1lKTsKKwlmb290ZXJzWzFdID0gcHNwcmludGYoXygiQWNjZXNz IG1ldGhvZDogJXMiKSwgYW1uYW1lKTsKKwlteW9wdC5mb290ZXJzID0gZm9vdGVyczsKKwlteW9w dC50b3B0LmRlZmF1bHRfZm9vdGVyID0gZmFsc2U7CisJbXlvcHQudHJhbnNsYXRlX2hlYWRlciA9 IHRydWU7CisJbXlvcHQudHJhbnNsYXRlX2NvbHVtbnMgPSB0cmFuc2xhdGVfY29sdW1uczsKKwlt eW9wdC5uX3RyYW5zbGF0ZV9jb2x1bW5zID0gbGVuZ3Rob2YodHJhbnNsYXRlX2NvbHVtbnMpOwor CisJcHJpbnRRdWVyeShyZXMsICZteW9wdCwgcHNldC5xdWVyeUZvdXQsIGZhbHNlLCBwc2V0Lmxv Z2ZpbGUpOworCVBRY2xlYXIocmVzKTsKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIFxkQW9j CisgKiBMaXN0IGluZGV4IGFjY2VzcyBtZXRob2Qgb3BlcmF0b3IgY2xhc3Nlcy4KKyAqIFRha2Vz IGFuIG9wdGlvbmFsIHJlZ2V4cCB0byBzZWxlY3QgcGFydGljdWxhciBhY2Nlc3MgbWV0aG9kIGFu ZCBvcGVyYXRvciBjbGFzcy4KKyAqLworYm9vbAorZGVzY3JpYmVBY2Nlc3NNZXRob2RPcGVyYXRv ckNsYXNzZXMoY29uc3QgY2hhciAqYWNjZXNzX21ldGhvZF9wYXR0ZXJuLCBjb25zdCBjaGFyICpv cGNsYXNzX3BhdHRlcm4sIGJvb2wgdmVyYm9zZSkKK3sKKwlQUUV4cEJ1ZmZlckRhdGEgYnVmOwor CVBHcmVzdWx0ICAgKnJlczsKKwlwcmludFF1ZXJ5T3B0IG15b3B0ID0gcHNldC5wb3B0OworCWJv b2wJCWhhdmVfd2hlcmUgPSBmYWxzZTsKKwlzdGF0aWMgY29uc3QgYm9vbCB0cmFuc2xhdGVfY29s dW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl LCBmYWxzZX07CisKKwlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7CisKKwlwcmludGZQUUV4cEJ1ZmZl cigmYnVmLAorCQkJCQkgICJTRUxFQ1QiCisJCQkJCSAgIiAgYW0uYW1uYW1lIEFTIFwiJXNcIixc biIKKwkJCQkJICAiICBuLm5zcG5hbWUgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIGMub3BjbmFt ZSBBUyBcIiVzXCIsXG4iLAorCQkJCQkgIGdldHRleHRfbm9vcCgiQWNjZXNzIG1ldGhvZCIpLAor CQkJCQkgIGdldHRleHRfbm9vcCgiU2NoZW1hIiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJOYW1l IikpOworCWlmICh2ZXJib3NlKQorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJICAi ICBwZ19jYXRhbG9nLnBnX2dldF91c2VyYnlpZChjLm9wY293bmVyKSBBUyBcIiVzXCIsXG4iLAor CQkJCQkJICBnZXR0ZXh0X25vb3AoIk93bmVyIikpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYs CisJCQkJCSAgIiAgb2Yub3BmbmFtZSBBUyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgYy5vcGNpbnR5 cGU6OnBnX2NhdGFsb2cucmVndHlwZSBBUyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgYy5vcGNkZWZh dWx0IEFTIFwiJXNcIixcbiIKKwkJCQkJICAiICAoQ0FTRSBXSEVOIGMub3Bja2V5dHlwZSA9IDAg T1IgYy5vcGNrZXl0eXBlID0gYy5vcGNpbnR5cGVcbiIKKwkJCQkJICAiICAgIFRIRU4gTlVMTFxu IgorCQkJCQkgICIgICAgRUxTRSBjLm9wY2tleXR5cGVcbiIKKwkJCQkJICAiICBFTkQpOjpwZ19j YXRhbG9nLnJlZ3R5cGU6OnBnX2NhdGFsb2cucmVndHlwZSBBUyBcIiVzXCJcbiIKKwkJCQkJICAi RlJPTSBwZ19jYXRhbG9nLnBnX29wY2xhc3MgY1xuIgorCQkJCQkgICIgIExFRlQgSk9JTiBwZ19j YXRhbG9nLnBnX2FtIGFtIG9uIGFtLm9pZCA9IGMub3BjbWV0aG9kXG4iCisJCQkJCSAgIiAgTEVG VCBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4gT04gbi5vaWQgPSBjLm9wY25hbWVzcGFj ZVxuIgorCQkJCQkgICIgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX29wZmFtaWx5IG9mIE9OIG9m Lm9pZCA9IGMub3BjZmFtaWx5XG4iLAorCQkJCQkgIGdldHRleHRfbm9vcCgiRmFtaWx5IiksCisJ CQkJCSAgZ2V0dGV4dF9ub29wKCJJbmRleGVkIHR5cGUiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3Ao IklzIGRlZmF1bHQiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIlN0b3JlZCB0eXBlIikpOworCisJ aWYgKGFjY2Vzc19tZXRob2RfcGF0dGVybikKKwkJaGF2ZV93aGVyZSA9IHByb2Nlc3NTUUxOYW1l UGF0dGVybihwc2V0LmRiLCAmYnVmLCBhY2Nlc3NfbWV0aG9kX3BhdHRlcm4sCisJCQkJCQkJCQkJ ICAgZmFsc2UsIGZhbHNlLCBOVUxMLCAiYW0uYW1uYW1lIiwgTlVMTCwgTlVMTCk7CisJaWYgKG9w Y2xhc3NfcGF0dGVybikKKwkJcHJvY2Vzc1NRTE5hbWVQYXR0ZXJuKHBzZXQuZGIsICZidWYsIG9w Y2xhc3NfcGF0dGVybiwgaGF2ZV93aGVyZSwgZmFsc2UsCisJCQkJCQkJICAibi5uc3BuYW1lIiwg ImMub3BjbmFtZSIsIE5VTEwsCisJCQkJCQkJICBOVUxMKTsKKworCWFwcGVuZFBRRXhwQnVmZmVy U3RyKCZidWYsICJPUkRFUiBCWSAxLDIsMzsiKTsKKwlyZXMgPSBQU1FMZXhlYyhidWYuZGF0YSk7 CisJdGVybVBRRXhwQnVmZmVyKCZidWYpOworCWlmICghcmVzKQorCQlyZXR1cm4gZmFsc2U7CisK KwlteW9wdC5udWxsUHJpbnQgPSBOVUxMOworCW15b3B0LnRpdGxlID0gXygiSW5kZXggYWNjZXNz IG1ldGhvZCBvcGVyYXRvciBjbGFzc2VzIik7CisJbXlvcHQudHJhbnNsYXRlX2hlYWRlciA9IHRy dWU7CisJbXlvcHQudHJhbnNsYXRlX2NvbHVtbnMgPSB0cmFuc2xhdGVfY29sdW1uczsKKwlteW9w dC5uX3RyYW5zbGF0ZV9jb2x1bW5zID0gbGVuZ3Rob2YodHJhbnNsYXRlX2NvbHVtbnMpOworCisJ cHJpbnRRdWVyeShyZXMsICZteW9wdCwgcHNldC5xdWVyeUZvdXQsIGZhbHNlLCBwc2V0LmxvZ2Zp bGUpOworCisJUFFjbGVhcihyZXMpOworCXJldHVybiB0cnVlOworfQpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wc3FsL2Rlc2NyaWJlLmggYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaAppbmRleCBhNGNj NWVmYWUwLi5iMTQ1ZjIwZTljIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaAor KysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaApAQCAtMTExLDQgKzExMSwyNSBAQCBib29sCQlk ZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKTsKIC8qIFxkUnMgKi8KIGJv b2wJCWRlc2NyaWJlU3Vic2NyaXB0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJv c2UpOwogCisvKiBcZEFmICovCitleHRlcm4gYm9vbCBsaXN0QWNjZXNzTWV0aG9kT3BlcmF0b3JG YW1pbGllcyhjb25zdCBjaGFyICphY2Nlc3NfbWV0aG9kX3BhdHRlcm4sIGNvbnN0IGNoYXIgKmZh bWlseV9wYXR0ZXJuLCBib29sIHZlcmJvc2UpOworCisvKiBcZEFmcCAqLworZXh0ZXJuIGJvb2wg bGlzdE9wZXJhdG9yRmFtaWx5UHJvY2VkdXJlcyhjb25zdCBjaGFyICphY2Nlc3NfbWV0aG9kX3Bh dHRlcm4sIGNvbnN0IGNoYXIgKmZhbWlseV9wYXR0ZXJuKTsKKworLyogXGRBZm8gKi8KK2V4dGVy biBib29sIGxpc3RGYW1pbHlDbGFzc09wZXJhdG9ycyhjb25zdCBjaGFyICphY2Nlc3NNZXRob2Rf cGF0dGVybiwgY29uc3QgY2hhciAqZmFtaWx5X3BhdHRlcm4pOworCisvKiBcZEFwICovCitleHRl cm4gYm9vbCBkZXNjcmliZUFjY2Vzc01ldGhvZFByb3BlcnRpZXMoY29uc3QgY2hhciAqcGF0dGVy bik7CisKKy8qIFxkaXAgKi8KK2V4dGVybiBib29sIGRlc2NyaWJlSW5kZXhQcm9wZXJ0aWVzKGNv bnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgc2hvd1N5c3RlbSk7CisKKy8qIFxkaWNwICovCitleHRl cm4gYm9vbCBkZXNjcmliZUluZGV4Q29sdW1uUHJvcGVydGllcyhjb25zdCBjaGFyICppbmRleFBh dHRlcm4sIGNvbnN0IGNoYXIgKmNvbHVtblBhdHRlcm4sIGJvb2wgc2hvd1N5c3RlbSk7CisKKy8q IFxkQW9jICovCitleHRlcm4gYm9vbCBkZXNjcmliZUFjY2Vzc01ldGhvZE9wZXJhdG9yQ2xhc3Nl cyhjb25zdCBjaGFyICphY2Nlc3NfbWV0aG9kX3BhdHRlcm4sIGNvbnN0IGNoYXIgKm9wY2xhc3Nf cGF0dGVybiwgYm9vbCB2ZXJib3NlKTsKKwogI2VuZGlmCQkJCQkJCS8qIERFU0NSSUJFX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9oZWxwLmMgYi9zcmMvYmluL3BzcWwvaGVscC5jCmlu ZGV4IDU4NmFlYmRkZDMuLjlmNmUyMTM0M2YgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9oZWxw LmMKKysrIGIvc3JjL2Jpbi9wc3FsL2hlbHAuYwpAQCAtMjI0LDYgKzIyNCwxMSBAQCBzbGFzaFVz YWdlKHVuc2lnbmVkIHNob3J0IGludCBwYWdlcikKIAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGRb UytdICBOQU1FICAgICAgICAgICBkZXNjcmliZSB0YWJsZSwgdmlldywgc2VxdWVuY2UsIG9yIGlu ZGV4XG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkYVtTXSAgW1BBVFRFUk5dICAgICAg bGlzdCBhZ2dyZWdhdGVzXG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkQVsrXSAgW1BB VFRFUk5dICAgICAgbGlzdCBhY2Nlc3MgbWV0aG9kc1xuIikpOworCWZwcmludGYob3V0cHV0LCBf KCIgIFxcZEFmWytdIFtBTVBUUk4gW09QRlBUUk5dXSBsaXN0IG9wZXJhdG9yIGZhbWlsaWVzIG9m IGFjY2VzcyBtZXRob2RcbiIpKTsKKwlmcHJpbnRmKG91dHB1dCwgXygiICBcXGRBZnAgICBbQU1Q VFJOIFtPUEZQVFJOXV0gbGlzdCBwcm9jZWR1cmVzIG9mIG9wZXJhdG9yIGZhbWlseSByZWxhdGVk IHRvIGFjY2VzcyBtZXRob2RcbiIpKTsKKwlmcHJpbnRmKG91dHB1dCwgXygiICBcXGRBZm8gICBb QU1QVFJOIFtPUEZQVFJOXV0gbGlzdCBvcGVyYXRvcnMgb2YgZmFtaWx5IHJlbGF0ZWQgdG8gYWNj ZXNzIG1ldGhvZFxuIikpOworCWZwcmludGYob3V0cHV0LCBfKCIgIFxcZEFvY1srXVtBTVBUUk4g W09QQ1BUUk5dXSBsaXN0IG9wZXJhdG9yIGNsYXNzZXMgb2YgaW5kZXggYWNjZXNzIG1ldGhvZHNc biIpKTsKKwlmcHJpbnRmKG91dHB1dCwgXygiICBcXGRBcCAgICBbUEFUVEVSTl0gICAgICBsaXN0 IGFjY2VzcyBtZXRob2RzIHdpdGggcHJvcGVydGllc1xuIikpOwogCWZwcmludGYob3V0cHV0LCBf KCIgIFxcZGJbK10gIFtQQVRURVJOXSAgICAgIGxpc3QgdGFibGVzcGFjZXNcbiIpKTsKIAlmcHJp bnRmKG91dHB1dCwgXygiICBcXGRjW1MrXSBbUEFUVEVSTl0gICAgICBsaXN0IGNvbnZlcnNpb25z XG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkQ1srXSAgW1BBVFRFUk5dICAgICAgbGlz dCBjYXN0c1xuIikpOwpAQCAtMjQyLDYgKzI0Nyw4IEBAIHNsYXNoVXNhZ2UodW5zaWduZWQgc2hv cnQgaW50IHBhZ2VyKQogCWZwcmludGYob3V0cHV0LCBfKCIgIFxcZEZ0WytdIFtQQVRURVJOXSAg ICAgIGxpc3QgdGV4dCBzZWFyY2ggdGVtcGxhdGVzXG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8o IiAgXFxkZ1tTK10gW1BBVFRFUk5dICAgICAgbGlzdCByb2xlc1xuIikpOwogCWZwcmludGYob3V0 cHV0LCBfKCIgIFxcZGlbUytdIFtQQVRURVJOXSAgICAgIGxpc3QgaW5kZXhlc1xuIikpOworCWZw cmludGYob3V0cHV0LCBfKCIgIFxcZGlwW1NdIFtQQVRURVJOXSAgICAgIGxpc3QgaW5kZXhlcyB3 aXRoIHByb3BlcnRpZXNcbiIpKTsKKwlmcHJpbnRmKG91dHB1dCwgXygiICBcXGRpY3BbU10gW0lE WE5BTUUgW0NPTE5BTUVdXSBzaG93IGluZGV4IGNvbHVtbiBwcm9wZXJ0aWVzXG4iKSk7CiAJZnBy aW50ZihvdXRwdXQsIF8oIiAgXFxkbCAgICAgICAgICAgICAgICAgICAgbGlzdCBsYXJnZSBvYmpl Y3RzLCBzYW1lIGFzIFxcbG9fbGlzdFxuIikpOwogCWZwcmludGYob3V0cHV0LCBfKCIgIFxcZExb UytdIFtQQVRURVJOXSAgICAgIGxpc3QgcHJvY2VkdXJhbCBsYW5ndWFnZXNcbiIpKTsKIAlmcHJp bnRmKG91dHB1dCwgXygiICBcXGRtW1MrXSBbUEFUVEVSTl0gICAgICBsaXN0IG1hdGVyaWFsaXpl ZCB2aWV3c1xuIikpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jIGIv c3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCmluZGV4IDcyOTQ4MjQ5NDguLjlkZThjNjk3NTYg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYworKysgYi9zcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmMKQEAgLTQ2MCw2ICs0NjAsMjMgQEAgc3RhdGljIGNvbnN0IFNjaGVt YVF1ZXJ5IFF1ZXJ5X2Zvcl9saXN0X29mX3JlbGF0aW9ucyA9IHsKIAkucmVzdWx0ID0gInBnX2Nh dGFsb2cucXVvdGVfaWRlbnQoYy5yZWxuYW1lKSIsCiB9OwogCitzdGF0aWMgY29uc3QgU2NoZW1h UXVlcnkgUXVlcnlfZm9yX2xpc3Rfb2Zfb3BlcmF0b3JfZmFtaWxpZXMgPSB7CisJLyogbWluX3Nl cnZlcl92ZXJzaW9uICovCisJMCwKKwkvKiBjYXRuYW1lICovCisJInBnX2NhdGFsb2cucGdfb3Bm YW1pbHkgYyIsCisJLyogc2VsY29uZGl0aW9uICovCisJTlVMTCwKKwkvKiB2aXNjb25kaXRpb24g Ki8KKwkidHJ1ZSIsCisJLyogbmFtZXNwYWNlICovCisJImMub3BmbmFtZXNwYWNlIiwKKwkvKiBy ZXN1bHQgKi8KKwkicGdfY2F0YWxvZy5xdW90ZV9pZGVudChjLm9wZm5hbWUpIiwKKwkvKiBxdWFs cmVzdWx0ICovCisJTlVMTAorfTsKKwogLyogUmVsYXRpb25zIHN1cHBvcnRpbmcgSU5TRVJULCBV UERBVEUgb3IgREVMRVRFICovCiBzdGF0aWMgY29uc3QgU2NoZW1hUXVlcnkgUXVlcnlfZm9yX2xp c3Rfb2ZfdXBkYXRhYmxlcyA9IHsKIAkuY2F0bmFtZSA9ICJwZ19jYXRhbG9nLnBnX2NsYXNzIGMi LApAQCAtMTMyOSw3ICsxMzQ2LDcgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQs IGludCBzdGFydCwgaW50IGVuZCkKIAkJIlxcYSIsCiAJCSJcXGNvbm5lY3QiLCAiXFxjb25uaW5m byIsICJcXEMiLCAiXFxjZCIsICJcXGNvcHkiLAogCQkiXFxjb3B5cmlnaHQiLCAiXFxjcm9zc3Rh YnZpZXciLAotCQkiXFxkIiwgIlxcZGEiLCAiXFxkQSIsICJcXGRiIiwgIlxcZGMiLCAiXFxkQyIs ICJcXGRkIiwgIlxcZGRwIiwgIlxcZEQiLAorCQkiXFxkIiwgIlxcZGEiLCAiXFxkQSIsICJcXGRB cCIsICJcXGRBZm8iLCAiXFxkQWZwIiwgIlxcZEFmIiwgIlxcZEFvYyIsICJcXGRpY3AiLCAiXFxk aXAiLCAiXFxkYiIsICJcXGRjIiwgIlxcZEMiLCAiXFxkZCIsICJcXGRkcCIsICJcXGREIiwKIAkJ IlxcZGVzIiwgIlxcZGV0IiwgIlxcZGV1IiwgIlxcZGV3IiwgIlxcZEUiLCAiXFxkZiIsCiAJCSJc XGRGIiwgIlxcZEZkIiwgIlxcZEZwIiwgIlxcZEZ0IiwgIlxcZGciLCAiXFxkaSIsICJcXGRsIiwg IlxcZEwiLAogCQkiXFxkbSIsICJcXGRuIiwgIlxcZG8iLCAiXFxkTyIsICJcXGRwIiwKQEAgLTM0 MTcsNiArMzQzNCwxMCBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0 YXJ0LCBpbnQgZW5kKQogCX0KIAllbHNlIGlmIChUYWlsTWF0Y2hlc0NTKCJcXGRhKiIpKQogCQlD T01QTEVURV9XSVRIX1ZFUlNJT05FRF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfYWdn cmVnYXRlcywgTlVMTCk7CisJZWxzZSBpZiAoVGFpbE1hdGNoZXNDUygiXFxkQWYqIikpCisJCUNP TVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfYWNjZXNzX21ldGhvZHMpOworCWVs c2UgaWYgKFRhaWxNYXRjaGVzQ1MoIlxcZEFmKiIsIE1hdGNoQW55KSkKKwkJQ09NUExFVEVfV0lU SF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2Zfb3BlcmF0b3JfZmFtaWxpZXMsIE5VTEwp OwogCWVsc2UgaWYgKFRhaWxNYXRjaGVzQ1MoIlxcZEEqIikpCiAJCUNPTVBMRVRFX1dJVEhfUVVF UlkoUXVlcnlfZm9yX2xpc3Rfb2ZfYWNjZXNzX21ldGhvZHMpOwogCWVsc2UgaWYgKFRhaWxNYXRj aGVzQ1MoIlxcZGIqIikpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2lu ZGV4aW5nLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0CmluZGV4 IGNhMjczNDZmMTguLjc5N2E1YjI1NjIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvaW5kZXhpbmcub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhp bmcub3V0CkBAIC0xNDA0LDMgKzE0MDQsMjggQEAgaW5zZXJ0IGludG8gY292aWR4cGFydCB2YWx1 ZXMgKDQsIDEpOwogaW5zZXJ0IGludG8gY292aWR4cGFydCB2YWx1ZXMgKDQsIDEpOwogRVJST1I6 ICBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50ICJjb3ZpZHhw YXJ0NF9hX2JfaWR4IgogREVUQUlMOiAgS2V5IChhKT0oNCkgYWxyZWFkeSBleGlzdHMuCistLSBU ZXN0IHBzcWwgY29tbWFuZCBmb3IgZGlzcGxheWluZyBpbmZvcm1hdGlvbiBhYm91dCBpbmRleGVz LgorXGRpcCBicmluaWR4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5k ZXggcHJvcGVydGllcworIFNjaGVtYSB8ICBOYW1lICAgfCBBY2Nlc3MgbWV0aG9kIHwgQ2x1c3Rl cmFibGUgfCBJbmRleCBzY2FuIHwgQml0bWFwIHNjYW4gfCBCYWNrd2FyZCBzY2FuIAorLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorIHB1YmxpYyB8IGJyaW5pZHggfCBicmluICAg ICAgICAgIHwgZiAgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAgICAgfCBmCisoMSBy b3cpCisKK1xkaWNwIGJvdGhhcnJheWlkeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSW5kZXggcHVibGljLmJvdGhhcnJheWlkeAorIENvbHVtbiBu YW1lIHwgRXhwciB8ICBPcGNsYXNzICB8IEFTQyB8IE51bGxzIGZpcnN0IHwgT3JkZXJhYmxlIHwg RGlzdGFuY2Ugb3JkZXJhYmxlIHwgUmV0dXJuYWJsZSB8IFNlYXJjaCBhcnJheSB8IFNlYXJjaCBu dWxscyAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgaSAgICAgICAgICAgfCBpICAgIHwgYXJyYXlfb3BzIHwg ICAgIHwgICAgICAgICAgICAgfCBmICAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgIHwgZiAgICAgICAgICAgIHwgZgorIHQgICAgICAgICAgIHwgdCAgICB8IGFycmF5X29w cyB8ICAgICB8ICAgICAgICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgICB8IGYKK1RhYmxlOiBhcnJheV9pbmRleF9vcF90ZXN0 CitBY2Nlc3MgbWV0aG9kOiBnaW4KKworXGRpY3AgYm90aGFycmF5aWR4IHQKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IHB1YmxpYy5ib3Ro YXJyYXlpZHgKKyBDb2x1bW4gbmFtZSB8IEV4cHIgfCAgT3BjbGFzcyAgfCBBU0MgfCBOdWxscyBm aXJzdCB8IE9yZGVyYWJsZSB8IERpc3RhbmNlIG9yZGVyYWJsZSB8IFJldHVybmFibGUgfCBTZWFy Y2ggYXJyYXkgfCBTZWFyY2ggbnVsbHMgCistLS0tLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0t LSstLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgIHwg dCAgICB8IGFycmF5X29wcyB8ICAgICB8ICAgICAgICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAg ICAgICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICB8IGYKK1RhYmxlOiBhcnJh eV9pbmRleF9vcF90ZXN0CitBY2Nlc3MgbWV0aG9kOiBnaW4KKwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cHNxbC5vdXQKaW5kZXggMzgxOGNmZWE3ZS4uNzhjNzJkYTAzNSAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3BzcWwub3V0CkBAIC0zMjQzLDMgKzMyNDMsMTU4IEBAIGxhc3QgZXJyb3IgbWVzc2FnZTog ZGl2aXNpb24gYnkgemVybwogXGVjaG8gJ2xhc3QgZXJyb3IgY29kZTonIDpMQVNUX0VSUk9SX1NR TFNUQVRFCiBsYXN0IGVycm9yIGNvZGU6IDIyMDEyCiBcdW5zZXQgRkVUQ0hfQ09VTlQKKy0tIGNo ZWNrIHByaW50aW5nIGluZm8gYWJvdXQgYWNjZXNzIG1ldGhvZHMKK1xkQQorTGlzdCBvZiBhY2Nl c3MgbWV0aG9kcworICBOYW1lICB8IFR5cGUgIAorLS0tLS0tLS0rLS0tLS0tLQorIGJyaW4gICB8 IEluZGV4CisgYnRyZWUgIHwgSW5kZXgKKyBnaW4gICAgfCBJbmRleAorIGdpc3QgICB8IEluZGV4 CisgaGFzaCAgIHwgSW5kZXgKKyBzcGdpc3QgfCBJbmRleAorKDYgcm93cykKKworXGRBIGdpbgor TGlzdCBvZiBhY2Nlc3MgbWV0aG9kcworIE5hbWUgfCBUeXBlICAKKy0tLS0tLSstLS0tLS0tCisg Z2luICB8IEluZGV4CisoMSByb3cpCisKK1xkQSBmb28KK0xpc3Qgb2YgYWNjZXNzIG1ldGhvZHMK KyBOYW1lIHwgVHlwZSAKKy0tLS0tLSstLS0tLS0KKygwIHJvd3MpCisKK1xkQXAgZ2luCisgICAg ICAgICAgICAgICAgICAgIEFjY2VzcyBtZXRob2QgcHJvcGVydGllcworIEFNIE5hbWUgfCBDYW4g b3JkZXIgfCBDYW4gdW5pcXVlIHwgQ2FuIG11bHRpIGNvbCB8IENhbiBleGNsdWRlIAorLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LQorIGdpbiAgICAgfCBmICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAgICAgICB8IGYK KygxIHJvdykKKworXGRBcCBmb28KKyAgICAgICAgICAgICAgICAgICAgQWNjZXNzIG1ldGhvZCBw cm9wZXJ0aWVzCisgQU0gTmFtZSB8IENhbiBvcmRlciB8IENhbiB1bmlxdWUgfCBDYW4gbXVsdGkg Y29sIHwgQ2FuIGV4Y2x1ZGUgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisoMCByb3dzKQorCitcZEFmIGdpbgorICAgICAg ICAgICAgICAgICAgIExpc3Qgb2Ygb3BlcmF0b3IgZmFtaWxpZXMKKyBBY2Nlc3MgbWV0aG9kIHwg T3BlcmF0b3IgZmFtaWx5IHNjaGVtYSB8IE9wZXJhdG9yIGZhbWlseSBuYW1lIAorLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Z2luICAgICAgICAgICB8IHBnX2NhdGFsb2cgICAgICAgICAgICAgfCBhcnJheV9vcHMKKyBnaW4g ICAgICAgICAgIHwgcGdfY2F0YWxvZyAgICAgICAgICAgICB8IHRzdmVjdG9yX29wcworIGdpbiAg ICAgICAgICAgfCBwZ19jYXRhbG9nICAgICAgICAgICAgIHwganNvbmJfb3BzCisgZ2luICAgICAg ICAgICB8IHBnX2NhdGFsb2cgICAgICAgICAgICAgfCBqc29uYl9wYXRoX29wcworKDQgcm93cykK KworXGRBZiBmb28KKyAgICAgICAgICAgICAgICAgICBMaXN0IG9mIG9wZXJhdG9yIGZhbWlsaWVz CisgQWNjZXNzIG1ldGhvZCB8IE9wZXJhdG9yIGZhbWlseSBzY2hlbWEgfCBPcGVyYXRvciBmYW1p bHkgbmFtZSAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorKDAgcm93cykKKworXGRBZm8gYnJpbiB1dWlkX21pbm1heF9vcHMK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvcGVyYXRvcnMgb2YgZmFtaWx5 IHJlbGF0ZWQgdG8gYWNjZXNzIG1ldGhvZAorICBBTSAgfCBPcGZhbWlseSBTY2hlbWEgfCAgT3Bm YW1pbHkgTmFtZSAgfCBMZWZ0IHR5cGUgfCBSaWdodCB0eXBlIHwgU3RyYXRlZ3kgfCBPcGVyYXRv ciB8IFB1cnBvc2UgfCBTb3J0IGZhbWlseSAKKy0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgYnJpbiB8IHBnX2NhdGFsb2cgICAgICB8IHV1 aWRfbWlubWF4X29wcyB8IHV1aWQgICAgICB8IHV1aWQgICAgICAgfCAgICAgICAgMSB8IDwgICAg ICAgIHwgc2VhcmNoICB8IAorIGJyaW4gfCBwZ19jYXRhbG9nICAgICAgfCB1dWlkX21pbm1heF9v cHMgfCB1dWlkICAgICAgfCB1dWlkICAgICAgIHwgICAgICAgIDIgfCA8PSAgICAgICB8IHNlYXJj aCAgfCAKKyBicmluIHwgcGdfY2F0YWxvZyAgICAgIHwgdXVpZF9taW5tYXhfb3BzIHwgdXVpZCAg ICAgIHwgdXVpZCAgICAgICB8ICAgICAgICAzIHwgPSAgICAgICAgfCBzZWFyY2ggIHwgCisgYnJp biB8IHBnX2NhdGFsb2cgICAgICB8IHV1aWRfbWlubWF4X29wcyB8IHV1aWQgICAgICB8IHV1aWQg ICAgICAgfCAgICAgICAgNCB8ID49ICAgICAgIHwgc2VhcmNoICB8IAorIGJyaW4gfCBwZ19jYXRh bG9nICAgICAgfCB1dWlkX21pbm1heF9vcHMgfCB1dWlkICAgICAgfCB1dWlkICAgICAgIHwgICAg ICAgIDUgfCA+ICAgICAgICB8IHNlYXJjaCAgfCAKKyg1IHJvd3MpCisKK1xkQWZvIGJyaW4gYmFy CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9wZXJhdG9ycyBvZiBmYW1pbHkg cmVsYXRlZCB0byBhY2Nlc3MgbWV0aG9kCisgQU0gfCBPcGZhbWlseSBTY2hlbWEgfCBPcGZhbWls eSBOYW1lIHwgTGVmdCB0eXBlIHwgUmlnaHQgdHlwZSB8IFN0cmF0ZWd5IHwgT3BlcmF0b3IgfCBQ dXJwb3NlIHwgU29ydCBmYW1pbHkgCistLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tCisoMCByb3dzKQorCitcZEFmbyBmb28gYmFyCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaXN0IG9wZXJhdG9ycyBvZiBmYW1pbHkgcmVsYXRlZCB0byBh Y2Nlc3MgbWV0aG9kCisgQU0gfCBPcGZhbWlseSBTY2hlbWEgfCBPcGZhbWlseSBOYW1lIHwgTGVm dCB0eXBlIHwgUmlnaHQgdHlwZSB8IFN0cmF0ZWd5IHwgT3BlcmF0b3IgfCBQdXJwb3NlIHwgU29y dCBmYW1pbHkgCistLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0tCisoMCByb3dzKQorCitcZEFmbyAqIHBnX2NhdGFsb2cuanNvbmJfcGF0aF9vcHMKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9wZXJhdG9ycyBvZiBmYW1pbHkgcmVs YXRlZCB0byBhY2Nlc3MgbWV0aG9kCisgQU0gIHwgT3BmYW1pbHkgU2NoZW1hIHwgT3BmYW1pbHkg TmFtZSAgfCBMZWZ0IHR5cGUgfCBSaWdodCB0eXBlIHwgU3RyYXRlZ3kgfCBPcGVyYXRvciB8IFB1 cnBvc2UgfCBTb3J0IGZhbWlseSAKKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLQorIGdpbiB8IHBnX2NhdGFsb2cgICAgICB8IGpzb25iX3BhdGhf b3BzIHwganNvbmIgICAgIHwganNvbmIgICAgICB8ICAgICAgICA3IHwgQD4gICAgICAgfCBzZWFy Y2ggIHwgCisoMSByb3cpCisKK1xkQWZwIGJyaW4gdXVpZF9taW5tYXhfb3BzCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygb3BlcmF0b3IgZmFt aWx5IHByb2NlZHVyZXMKKyAgQU0gIHwgRmFtaWx5IHNjaGVtYSB8ICAgRmFtaWx5IG5hbWUgICB8 IExlZnQgfCBSaWdodCB8IE51bWJlciB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvYyBu YW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGJyaW4gfCBw Z19jYXRhbG9nICAgIHwgdXVpZF9taW5tYXhfb3BzIHwgdXVpZCB8IHV1aWQgIHwgICAgICAxIHwg YnJpbl9taW5tYXhfb3BjaW5mbyhpbnRlcm5hbCkKKyBicmluIHwgcGdfY2F0YWxvZyAgICB8IHV1 aWRfbWlubWF4X29wcyB8IHV1aWQgfCB1dWlkICB8ICAgICAgMiB8IGJyaW5fbWlubWF4X2FkZF92 YWx1ZShpbnRlcm5hbCwgaW50ZXJuYWwsIGludGVybmFsLCBpbnRlcm5hbCkKKyBicmluIHwgcGdf Y2F0YWxvZyAgICB8IHV1aWRfbWlubWF4X29wcyB8IHV1aWQgfCB1dWlkICB8ICAgICAgMyB8IGJy aW5fbWlubWF4X2NvbnNpc3RlbnQoaW50ZXJuYWwsIGludGVybmFsLCBpbnRlcm5hbCkKKyBicmlu IHwgcGdfY2F0YWxvZyAgICB8IHV1aWRfbWlubWF4X29wcyB8IHV1aWQgfCB1dWlkICB8ICAgICAg NCB8IGJyaW5fbWlubWF4X3VuaW9uKGludGVybmFsLCBpbnRlcm5hbCwgaW50ZXJuYWwpCisoNCBy b3dzKQorCitcZEFmcCBicmluIGJhcgorICAgICAgICAgICAgICAgICAgTGlzdCBvZiBvcGVyYXRv ciBmYW1pbHkgcHJvY2VkdXJlcworIEFNIHwgRmFtaWx5IHNjaGVtYSB8IEZhbWlseSBuYW1lIHwg TGVmdCB8IFJpZ2h0IHwgTnVtYmVyIHwgUHJvYyBuYW1lIAorLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLQorKDAgcm93 cykKKworXGRBZnAgZm9vIGJhcgorICAgICAgICAgICAgICAgICAgTGlzdCBvZiBvcGVyYXRvciBm YW1pbHkgcHJvY2VkdXJlcworIEFNIHwgRmFtaWx5IHNjaGVtYSB8IEZhbWlseSBuYW1lIHwgTGVm dCB8IFJpZ2h0IHwgTnVtYmVyIHwgUHJvYyBuYW1lIAorLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLQorKDAgcm93cykK KworXGRBZnAgKiBwZ19jYXRhbG9nLnV1aWRfb3BzCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBvcGVyYXRvciBmYW1pbHkgcHJvY2VkdXJlcworICBBTSAgIHwgRmFtaWx5 IHNjaGVtYSB8IEZhbWlseSBuYW1lIHwgTGVmdCB8IFJpZ2h0IHwgTnVtYmVyIHwgICAgICAgICAg ICBQcm9jIG5hbWUgICAgICAgICAgICAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLSstLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBidHJlZSB8IHBnX2NhdGFsb2cgICAgfCB1dWlkX29wcyAgICB8IHV1aWQgfCB1 dWlkICB8ICAgICAgMSB8IHV1aWRfY21wKHV1aWQsIHV1aWQpCisgYnRyZWUgfCBwZ19jYXRhbG9n ICAgIHwgdXVpZF9vcHMgICAgfCB1dWlkIHwgdXVpZCAgfCAgICAgIDIgfCB1dWlkX3NvcnRzdXBw b3J0KGludGVybmFsKQorIGhhc2ggIHwgcGdfY2F0YWxvZyAgICB8IHV1aWRfb3BzICAgIHwgdXVp ZCB8IHV1aWQgIHwgICAgICAxIHwgdXVpZF9oYXNoKHV1aWQpCisgaGFzaCAgfCBwZ19jYXRhbG9n ICAgIHwgdXVpZF9vcHMgICAgfCB1dWlkIHwgdXVpZCAgfCAgICAgIDIgfCB1dWlkX2hhc2hfZXh0 ZW5kZWQodXVpZCwgYmlnaW50KQorKDQgcm93cykKKworXGRBb2MgYnJpbiBwZyoub2lkKgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IGFjY2VzcyBtZXRob2Qgb3BlcmF0 b3IgY2xhc3NlcworIEFjY2VzcyBtZXRob2QgfCAgIFNjaGVtYSAgIHwgICAgICBOYW1lICAgICAg fCAgICAgRmFtaWx5ICAgICB8IEluZGV4ZWQgdHlwZSB8IElzIGRlZmF1bHQgfCBTdG9yZWQgdHlw ZSAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgYnJp biAgICAgICAgICB8IHBnX2NhdGFsb2cgfCBvaWRfbWlubWF4X29wcyB8IG9pZF9taW5tYXhfb3Bz IHwgb2lkICAgICAgICAgIHwgdCAgICAgICAgICB8IAorKDEgcm93KQorCitcZEErCisgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCisgIE5hbWUgIHwgVHlwZSAg fCAgIEhhbmRsZXIgICB8ICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgIAor LS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBicmluICAgfCBJbmRleCB8IGJyaW5oYW5kbGVyIHwgYmxvY2sgcmFu Z2UgaW5kZXggKEJSSU4pIGFjY2VzcyBtZXRob2QKKyBidHJlZSAgfCBJbmRleCB8IGJ0aGFuZGxl ciAgIHwgYi10cmVlIGluZGV4IGFjY2VzcyBtZXRob2QKKyBnaW4gICAgfCBJbmRleCB8IGdpbmhh bmRsZXIgIHwgR0lOIGluZGV4IGFjY2VzcyBtZXRob2QKKyBnaXN0ICAgfCBJbmRleCB8IGdpc3Ro YW5kbGVyIHwgR2lTVCBpbmRleCBhY2Nlc3MgbWV0aG9kCisgaGFzaCAgIHwgSW5kZXggfCBoYXNo aGFuZGxlciB8IGhhc2ggaW5kZXggYWNjZXNzIG1ldGhvZAorIHNwZ2lzdCB8IEluZGV4IHwgc3Bn aGFuZGxlciAgfCBTUC1HaVNUIGluZGV4IGFjY2VzcyBtZXRob2QKKyg2IHJvd3MpCisKK1xkQSsg Z2luCisgICAgICAgICAgICAgICBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCisgTmFtZSB8IFR5cGUg IHwgIEhhbmRsZXIgICB8ICAgICAgIERlc2NyaXB0aW9uICAgICAgIAorLS0tLS0tKy0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBnaW4gIHwgSW5kZXggfCBn aW5oYW5kbGVyIHwgR0lOIGluZGV4IGFjY2VzcyBtZXRob2QKKygxIHJvdykKKworXGRBKyBmb28K KyAgICAgICBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCisgTmFtZSB8IFR5cGUgfCBIYW5kbGVyIHwg RGVzY3JpcHRpb24gCistLS0tLS0rLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisoMCBy b3dzKQorCitcZEFmKyBmb28KKyAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBvcGVyYXRv ciBmYW1pbGllcworIEFjY2VzcyBtZXRob2QgfCBPcGVyYXRvciBmYW1pbHkgc2NoZW1hIHwgT3Bl cmF0b3IgZmFtaWx5IG5hbWUgfCBPd25lciAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tCisoMCByb3dzKQorCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbmRleGluZy5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9pbmRleGluZy5zcWwKaW5kZXggNDAwYjdlYjdiYS4uOWNjNWJkY2UwZCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW5kZXhpbmcuc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2luZGV4aW5nLnNxbApAQCAtNzUzLDMgKzc1Myw4IEBAIGNyZWF0ZSB1bmlx dWUgaW5kZXggb24gY292aWR4cGFydDQgKGEpOwogYWx0ZXIgdGFibGUgY292aWR4cGFydCBhdHRh Y2ggcGFydGl0aW9uIGNvdmlkeHBhcnQ0IGZvciB2YWx1ZXMgaW4gKDQpOwogaW5zZXJ0IGludG8g Y292aWR4cGFydCB2YWx1ZXMgKDQsIDEpOwogaW5zZXJ0IGludG8gY292aWR4cGFydCB2YWx1ZXMg KDQsIDEpOworCistLSBUZXN0IHBzcWwgY29tbWFuZCBmb3IgZGlzcGxheWluZyBpbmZvcm1hdGlv biBhYm91dCBpbmRleGVzLgorXGRpcCBicmluaWR4CitcZGljcCBib3RoYXJyYXlpZHgKK1xkaWNw IGJvdGhhcnJheWlkeCB0CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wc3FsLnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BzcWwuc3FsCmluZGV4IGI0NWRhOWJiOGQuLmVjNWE2 NzNmOTIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BzcWwuc3FsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3BzcWwuc3FsCkBAIC02ODgsMyArNjg4LDI2IEBAIHNlbGVjdCAx LygxNS11bmlxdWUyKSBmcm9tIHRlbmsxIG9yZGVyIGJ5IHVuaXF1ZTIgbGltaXQgMTk7CiBcZWNo byAnbGFzdCBlcnJvciBjb2RlOicgOkxBU1RfRVJST1JfU1FMU1RBVEUKIAogXHVuc2V0IEZFVENI X0NPVU5UCisKKy0tIGNoZWNrIHByaW50aW5nIGluZm8gYWJvdXQgYWNjZXNzIG1ldGhvZHMKK1xk QQorXGRBIGdpbgorXGRBIGZvbworXGRBcCBnaW4KK1xkQXAgZm9vCitcZEFmIGdpbgorXGRBZiBm b28KK1xkQWZvIGJyaW4gdXVpZF9taW5tYXhfb3BzCitcZEFmbyBicmluIGJhcgorXGRBZm8gZm9v IGJhcgorXGRBZm8gKiBwZ19jYXRhbG9nLmpzb25iX3BhdGhfb3BzCitcZEFmcCBicmluIHV1aWRf bWlubWF4X29wcworXGRBZnAgYnJpbiBiYXIKK1xkQWZwIGZvbyBiYXIKK1xkQWZwICogcGdfY2F0 YWxvZy51dWlkX29wcworXGRBb2MgYnJpbiBwZyoub2lkKgorCitcZEErCitcZEErIGdpbgorXGRB KyBmb28KK1xkQWYrIGZvbwo= --=_70ee2d2f37c4e5c6975a4d9f81297d84--