Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fWMQt-0003jY-3A for pgsql-hackers@arkaria.postgresql.org; Fri, 22 Jun 2018 13:49:00 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fWMQr-0002Ys-Cc for pgsql-hackers@arkaria.postgresql.org; Fri, 22 Jun 2018 13:48:57 +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_SHA384:256) (Exim 4.89) (envelope-from ) id 1fWMQq-0002Yl-Ui for pgsql-hackers@lists.postgresql.org; Fri, 22 Jun 2018 13:48:57 +0000 Received: from mail.postgrespro.ru ([93.174.131.138]) by magus.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fWMQi-0000Jo-8S for pgsql-hackers@postgresql.org; Fri, 22 Jun 2018 13:48:56 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.postgrespro.ru (Postfix) with ESMTP id DB19321C0647; Fri, 22 Jun 2018 16:48:46 +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 [172.27.0.190] (unknown [31.173.148.242]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id 540FF21C063A; Fri, 22 Jun 2018 16:48:46 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1529675326; bh=dCyqA2rlaTvvGsu2FJuoRDJh497u4bx/hn5avut8H+4=; h=Subject:From:To:Cc:Date; b=mpORCHBI6gpidMJ0xKre+UaPa8UqTrucYYsOSaN8J4o2CW1m5rL7P1GgrWvHDKg42 NWAL8qayjhTlUS7lXT0xbBktkkdTcy3RUd6M+tuMSLCRvYxj0mVvl0p1mfx32HaiAL wIwiwBRApYu6wFaSwgqUY5ewQn4Ro2vTxnBgsGBE= Message-ID: <1529675324.14193.5.camel@postgrespro.ru> Subject: Psql patch to show access methods info From: Sergey Cherkashin To: pgsql-hackers@postgresql.org Cc: n.gluhov@postgrespro.ru Date: Fri, 22 Jun 2018 16:48:44 +0300 Content-Type: multipart/mixed; boundary="=-8mP0Rc3GOE3heXPGDTdt" X-Mailer: Evolution 3.18.5.2-0ubuntu3.2 Mime-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --=-8mP0Rc3GOE3heXPGDTdt Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Hello! There are command in psql to list access methods, but there are no fast way to look detailed info about them. So here a patch with new commands: \dAp     [PATTERN]           list access methods with properties (Table pg_am) \dAf[+]  [AMPTRN [OPFPTRN]]  list operator families of access method. + prints owner of operator family. (Table pg_opfamily)  \dAfp    [AMPTRN [OPFPTRN]]  list procedures of operator family related to access method (Table pg_amproc) \dAfo    [AMPTRN [OPFPTRN]]  list operators of family related to access method (Table pg_amop) \dAoc[+] [AMPTRN [OPCPTRN]]  list operator classes of index access methods. + prints owner of operator class. (Table pg_opclass) \dip[S]  [PATTERN]           list indexes with properties (Table pg_class) \dicp[S] [IDXNAME [COLNAME]] show index column properties (Table pg_class) You can display information only on the access methods, specified by a template. You can also filter operator classes, operator families, or the name of the indexed column. I also have a question about testing commands \dAf+ and \dAoc+: is it good idea to test them by changing an owner of one operator family or class to created new one, checking the output, and restoring the owner back? Or we should create a new opclass or opfamily with proper owner. Or maybe it is not necesary to test these commands? Best regards, Sergey Cherkashin s.cherkashin@postgrespro.ru --=-8mP0Rc3GOE3heXPGDTdt Content-Disposition: attachment; filename="psql_add_am_info.patch" Content-Type: text/x-patch; name="psql_add_am_info.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKaW5kZXggM2VkOTAyMS4uYjY5OTU0OCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTY3 NSw3ICs2NzUsNyBAQAogICAgc2VhcmNoIGFuZCBvcmRlcmluZyBwdXJwb3Nlcy4pCiAgIDwvcGFy YT4KIAotICA8dGFibGU+CisgIDx0YWJsZSBpZD0iY2F0YWxvZy1wZy1hbW9wLXRhYmxlIj4KICAg IDx0aXRsZT48c3RydWN0bmFtZT5wZ19hbW9wPC9zdHJ1Y3RuYW1lPiBDb2x1bW5zPC90aXRsZT4K IAogICAgPHRncm91cCBjb2xzPSI0Ij4KQEAgLTgxOCw3ICs4MTgsNyBAQAogICAgaXMgb25lIHJv dyBmb3IgZWFjaCBzdXBwb3J0IHByb2NlZHVyZSBiZWxvbmdpbmcgdG8gYW4gb3BlcmF0b3IgZmFt aWx5LgogICA8L3BhcmE+CiAKLSAgPHRhYmxlPgorICA8dGFibGUgaWQ9ImNhdGFsb2ctcGctYW1w cm9jLXRhYmxlIj4KICAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19hbXByb2M8L3N0cnVjdG5hbWU+ IENvbHVtbnM8L3RpdGxlPgogCiAgICA8dGdyb3VwIGNvbHM9IjQiPgpAQCAtNDQ1OCw3ICs0NDU4 LDcgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8 L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgIE9wZXJhdG9yIGNsYXNzZXMgYXJlIGRl c2NyaWJlZCBhdCBsZW5ndGggaW4gPHhyZWYgbGlua2VuZD0ieGluZGV4Ii8+LgogICA8L3BhcmE+ CiAKLSAgPHRhYmxlPgorICA8dGFibGUgaWQ9ImNhdGFsb2ctcGctb3BjbGFzcy10YWJsZSI+CiAg ICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfb3BjbGFzczwvc3RydWN0bmFtZT4gQ29sdW1uczwvdGl0 bGU+CiAKICAgIDx0Z3JvdXAgY29scz0iNCI+CkBAIC00NzIwLDcgKzQ3MjAsNyBAQCBTQ1JBTS1T SEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+ OjxyZXBsYWNlYWJsZT4mbAogICAgT3BlcmF0b3IgZmFtaWxpZXMgYXJlIGRlc2NyaWJlZCBhdCBs ZW5ndGggaW4gPHhyZWYgbGlua2VuZD0ieGluZGV4Ii8+LgogICA8L3BhcmE+CiAKLSAgPHRhYmxl PgorICA8dGFibGUgaWQ9ImNhdGFsb2ctcGctb3BmYW1pbHktdGFibGUiPgogICAgPHRpdGxlPjxz dHJ1Y3RuYW1lPnBnX29wZmFtaWx5PC9zdHJ1Y3RuYW1lPiBDb2x1bW5zPC90aXRsZT4KIAogICAg PHRncm91cCBjb2xzPSI0Ij4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYu c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbAppbmRleCAxMGI5Nzk1Li5iNWQy MDk1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCkBAIC0xMjAzLDYgKzEyMDMsOTUgQEAgdGVzdGRi PSZndDsKICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgPC92YXJs aXN0ZW50cnk+CisgICAgICAKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPgor ICAgICAgICAgIDxsaXRlcmFsPlxkQWYKKyAgICAgICAgICBbIDxsaW5rIGxpbmtlbmQ9ImFwcC1w c3FsLXBhdHRlcm5zIj48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YWNjZXNzLW1ldGhv ZC1wYXR0ZXJuPC9yZXBsYWNlYWJsZT48L2xpbms+IAorICAgICAgICAgICAgWzxsaW5rIGxpbmtl bmQ9ImFwcC1wc3FsLXBhdHRlcm5zIj48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3Bl cmF0b3ItZmFtaWx5LXBhdHRlcm48L3JlcGxhY2VhYmxlPjwvbGluaz5dXQorICAgICAgICAgIDwv bGl0ZXJhbD4KKyAgICAgICAgPC90ZXJtPgorCisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAg PHBhcmE+CisgICAgICAgIExpc3RzIG9wZXJhdG9yIGZhbWlsaWVzICg8eHJlZiBsaW5rZW5kPSJj YXRhbG9nLXBnLW9wZmFtaWx5LXRhYmxlIi8+KS4gSWYgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmFjY2Vzcy1tZXRob2QtcGF0dGVybjwvcmVwbGFjZWFibGU+IGlzIHNwZWNpZmllZCwg b25seQorICAgICAgICBmYW1pbGllcyB3aG9zZSBhY2Nlc3MgbWV0aG9kIG5hbWUgbWF0Y2hlcyB0 aGUgcGF0dGVybiBhcmUgc2hvd24uCisgICAgICAgIElmIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5vcGVyYXRvci1mYW1pbHktcGF0dGVybjwvcmVwbGFjZWFibGU+IGlzIHNwZWNpZmll ZCwgb25seQorICAgICAgICBvcGVyZWF0b3IgZmFtaWxpZXMgYXNzb2NpYXRlZCB3aXRoIHdob3Nl IG5hbWUgbWF0Y2hlcyB0aGUgcGF0dGVybiBhcmUgc2hvd24uCisgICAgICAgIElmIDxsaXRlcmFs Pis8L2xpdGVyYWw+IGlzIGFwcGVuZGVkIHRvIHRoZSBjb21tYW5kIG5hbWUsIGVhY2ggb3BlcmF0 b3IKKyAgICAgICAgZmFtaWx5IGlzIGxpc3RlZCB3aXRoIGl0J3Mgb3duZXIuCisgICAgICAgIDwv cGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAg ICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT4KKyAgICAgICAgICA8bGl0ZXJhbD5cZEFm bworICAgICAgICAgICAgWzxsaW5rIGxpbmtlbmQ9ImFwcC1wc3FsLXBhdHRlcm5zIj48cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YWNjZXNzLW1ldGhvZC1wYXR0ZXJuPC9yZXBsYWNlYWJs ZT48L2xpbms+CisgICAgICAgICAgICAgIFs8bGluayBsaW5rZW5kPSJhcHAtcHNxbC1wYXR0ZXJu cyI+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wZXJhdG9yLWZhbWlseS1wYXR0ZXJu PC9yZXBsYWNlYWJsZT48L2xpbms+XV0KKyAgICAgICAgICA8L2xpdGVyYWw+CisgICAgICAgIDwv dGVybT4KKworICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICBMaXN0 cyBvcGVyYXRvcnMgKDx4cmVmIGxpbmtlbmQ9ImNhdGFsb2ctcGctYW1vcC10YWJsZSIvPikgYXNz b2NpYXRlZCB3aXRoIGFjY2VzcyBtZXRob2Qgb3BlcmF0b3IgZmFtaWxpZXMuCisgICAgICAgIElm IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hY2Nlc3MtbWV0aG9kLXBhdHR0ZXJuPC9y ZXBsYWNlYWJsZT4gaXMgc3BlY2lmaWVkLAorICAgICAgICBvbmx5IG9wZXJhdG9ycyBhc3NvY2lh dGVkIHdpdGggYWNjZXNzIG1ldGhvZCB3aG9zZSBuYW1lIG1hdGNoZXMgcGF0dGVybiBhcmUgc2hv d24uCisgICAgICAgIElmIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcGVyYXRvci1m YW1pbHktcGF0dGVybjwvcmVwbGFjZWFibGU+IGlzIHNwZWNpZmllZCwgb25seQorICAgICAgICBv cGVyZWF0b3JzIGFzc29jaWF0ZWQgd2l0aCBmYW1pbGllcyB3aG9zZSBuYW1lIG1hdGNoZXMgdGhl IHBhdHRlcm4gYXJlIHNob3duLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+ CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAg PHRlcm0+CisgICAgICAgICAgPGxpdGVyYWw+XGRBZnAKKyAgICAgICAgICAgIFs8bGluayBsaW5r ZW5kPSJhcHAtcHNxbC1wYXR0ZXJucyI+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFj Y2Vzcy1tZXRob2QtcGF0dGVybjwvcmVwbGFjZWFibGU+PC9saW5rPgorICAgICAgICAgICAgICBb PGxpbmsgbGlua2VuZD0iYXBwLXBzcWwtcGF0dGVybnMiPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5vcGVyYXRvci1mYW1pbHktcGF0dGVybjwvcmVwbGFjZWFibGU+PC9saW5rPl1dCisg ICAgICAgICAgPC9saXRlcmFsPgorICAgICAgICA8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4K KyAgICAgICAgPHBhcmE+CisgICAgICAgIExpc3QgcHJvY2VkdXJlcyAoPHhyZWYgbGlua2VuZD0i Y2F0YWxvZy1wZy1hbXByb2MtdGFibGUiLz4pIGFjY29jaWF0ZWQgd2l0aCBhY2Nlc3MgbWV0aG9k IG9wZXJhdG9yIGZhbWlsaWVzLgorICAgICAgICBJZiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+YWNjZXNzLW1ldGhvZC1wYXR0dGVybjwvcmVwbGFjZWFibGU+IGlzIHNwZWNpZmllZCwK KyAgICAgICAgb25seSBwcm9jZWR1cmVzIGFzc29jaWF0ZWQgd2l0aCBhY2Nlc3MgbWV0aG9kIHdo b3NlIG5hbWUgbWF0Y2hlcyBwYXR0ZXJuIGFyZSBzaG93bi4KKyAgICAgICAgSWYgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wZXJhdG9yLWZhbWlseS1wYXR0ZXJuPC9yZXBsYWNlYWJs ZT4gaXMgc3BlY2lmaWVkLCBvbmx5CisgICAgICAgIHByb2NlZHVyZXMgYXNzb2NpYXRlZCB3aXRo IGZhbWlsaWVzIHdob3NlIG5hbWUgbWF0Y2hlcyB0aGUgcGF0dGVybiBhcmUgc2hvd24uCisgICAg ICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5Pgor CisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT4KKyAgICAgICAgICA8bGl0ZXJh bD5cZEFvcAorICAgICAgICAgICAgWzxsaW5rIGxpbmtlbmQ9ImFwcC1wc3FsLXBhdHRlcm5zIj48 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YWNjZXNzLW1ldGhvZC1wYXR0ZXJuPC9yZXBs YWNlYWJsZT48L2xpbms+CisgICAgICAgICAgICAgIFs8bGluayBsaW5rZW5kPSJhcHAtcHNxbC1w YXR0ZXJucyI+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wZXJhdG9yLWNsYXNzLXBh dHRlcm48L3JlcGxhY2VhYmxlPjwvbGluaz5dXQorICAgICAgICAgIDwvbGl0ZXJhbD4KKyAgICAg ICAgPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICBT aG93cyBpbmRleCBhY2Nlc3MgbWV0aG9kIG9wZXJhdG9yIGNsYXNzZXMgbGlzdGVkIGluIDx4cmVm IGxpbmtlbmQ9ImNhdGFsb2ctcGctb3BjbGFzcy10YWJsZSIvPi4KKyAgICAgICAgSWYgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFjY2Vzcy1tZXRob2QtcGF0dHRlcm48L3JlcGxhY2Vh YmxlPiBpcyBzcGVjaWZpZWQsCisgICAgICAgIG9ubHkgb3BlcmF0b3IgY2xhc3NlcyBhc3NvY2lh dGVkIHdpdGggYWNjZXNzIG1ldGhvZCB3aG9zZSBuYW1lIG1hdGNoZXMgcGF0dGVybiBhcmUgc2hv d24uCisgICAgICAgIElmIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcGVyYXRvci1j bGFzcy1wYXR0ZXJuPC9yZXBsYWNlYWJsZT4gaXMgc3BlY2lmaWVkLCBvbmx5CisgICAgICAgIHBy b2NlZHVyZXMgYXNzb2NpYXRlZCB3aXRoIGZhbWlsaWVzIHdob3NlIG5hbWUgbWF0Y2hlcyB0aGUg cGF0dGVybiBhcmUgc2hvd24uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4K KyAgICAgIDwvdmFybGlzdGVudHJ5PgorCisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAg IDx0ZXJtPjxsaXRlcmFsPlxkQXAgWyA8bGluayBsaW5rZW5kPSJhcHAtcHNxbC1wYXR0ZXJucyI+ PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhdHRlcm48L3JlcGxhY2VhYmxlPjwvbGlu az4gXTwvbGl0ZXJhbD48L3Rlcm0+CisKKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFy YT4KKyAgICAgICAgU2hvd3MgYWNjZXNzIG1ldGhvZCBwcm9wZXJ0aWVzIGxpc3RlZCBpbiA8eHJl ZgorICAgICAgICAgbGlua2VuZD0iZnVuY3Rpb25zLWluZm8taW5kZXhhbS1wcm9wcyIvPi4gSWYg PHJlcGxhY2VhYmxlCisgICAgICAgIGNsYXNzPSJwYXJhbWV0ZXIiPnBhdHRlcm48L3JlcGxhY2Vh YmxlPiBpcyBzcGVjaWZpZWQsIG9ubHkgYWNjZXNzCisgICAgICAgIG1ldGhvZHMgd2hvc2UgbmFt ZXMgbWF0Y2ggdGhlIHBhdHRlcm4gYXJlIHNob3duLgorICAgICAgICA8L3BhcmE+CisgICAgICAg IDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAogICAgICAgPHZhcmxpc3RlbnRy eT4KICAgICAgICAgPHRlcm0+PGxpdGVyYWw+XGRiWytdIFsgPGxpbmsgbGlua2VuZD0iYXBwLXBz cWwtcGF0dGVybnMiPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXR0ZXJuPC9yZXBs YWNlYWJsZT48L2xpbms+IF08L2xpdGVyYWw+PC90ZXJtPgpAQCAtMTM1MSw2ICsxNDQwLDM1IEBA IHRlc3RkYj0mZ3Q7CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICA8L3Zhcmxpc3RlbnRyeT4K IAorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+PGxpdGVyYWw+XGRpcCBbIDxs aW5rIGxpbmtlbmQ9ImFwcC1wc3FsLXBhdHRlcm5zIj48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cGF0dGVybjwvcmVwbGFjZWFibGU+PC9saW5rPiBdPC9saXRlcmFsPjwvdGVybT4KKwor ICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICBTaG93cyBpbmRleCBw cm9wZXJ0aWVzIGxpc3RlZCBpbiA8eHJlZgorICAgICAgICBsaW5rZW5kPSJmdW5jdGlvbnMtaW5m by1pbmRleC1wcm9wcyIvPi4gSWYgPHJlcGxhY2VhYmxlCisgICAgICAgIGNsYXNzPSJwYXJhbWV0 ZXIiPnBhdHRlcm48L3JlcGxhY2VhYmxlPiBpcyBzcGVjaWZpZWQsIG9ubHkgYWNjZXNzCisgICAg ICAgIG1ldGhvZHMgd2hvc2UgbmFtZXMgbWF0Y2ggdGhlIHBhdHRlcm4gYXJlIHNob3duLgorICAg ICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+ICAgICAgICAKKyAgICAgIDwvdmFybGlz dGVudHJ5PgorCisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT4KKyAgICAgICAg ICA8bGl0ZXJhbD5cZGljcCBbIDxsaW5rIGxpbmtlbmQ9ImFwcC1wc3FsLXBhdHRlcm5zIj48cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXgtbmFtZS1wYXR0ZXJuPC9yZXBsYWNlYWJs ZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIDxsaW5rIGxpbmtlbmQ9 ImFwcC1wc3FsLXBhdHRlcm5zIj48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1u LW5hbWUtcGF0dGVybjwvcmVwbGFjZWFibGU+PC9saW5rPiBdXQorICAgICAgICAgIDwvbGl0ZXJh bD4KKyAgICAgICAgPC90ZXJtPgorCisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+ CisgICAgICAgIFNob3dzIGluZGV4IGNvbHVtbiBwcm9wZXJ0aWVzIGxpc3RlZCBpbiA8eHJlZgor ICAgICAgICBsaW5rZW5kPSJmdW5jdGlvbnMtaW5mby1pbmRleC1jb2x1bW4tcHJvcHMiLz4uIElm IDxyZXBsYWNlYWJsZQorICAgICAgICBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVw bGFjZWFibGU+IGlzIHNwZWNpZmllZCwgb25seSBjb2x1bW4KKyAgICAgICAgd2l0aCBzdWNoIG5h bWUgaXMgc2hvd24uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAg IDwvdmFybGlzdGVudHJ5PgogCiAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICA8dGVybT48 bGl0ZXJhbD5cZGVzWytdIFsgPGxpbmsgbGlua2VuZD0iYXBwLXBzcWwtcGF0dGVybnMiPjxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXR0ZXJuPC9yZXBsYWNlYWJsZT48L2xpbms+IF08 L2xpdGVyYWw+PC90ZXJtPgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYyBiL3Ny Yy9iaW4vcHNxbC9jb21tYW5kLmMKaW5kZXggNGM4NWY0My4uMmQyMTkxMSAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wc3FsL2NvbW1hbmQuYworKysgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5jCkBAIC03 MjMsNyArNzIzLDIyIEBAIGV4ZWNfY29tbWFuZF9kKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwg Ym9vbCBhY3RpdmVfYnJhbmNoLCBjb25zdCBjaGFyICpjbWQpCiAJCQkJCXN1Y2Nlc3MgPSBsaXN0 VGFibGVzKCJ0dm1zRSIsIE5VTEwsIHNob3dfdmVyYm9zZSwgc2hvd19zeXN0ZW0pOwogCQkJCWJy ZWFrOwogCQkJY2FzZSAnQSc6Ci0JCQkJc3VjY2VzcyA9IGRlc2NyaWJlQWNjZXNzTWV0aG9kcyhw YXR0ZXJuLCBzaG93X3ZlcmJvc2UpOworCQkJCXsKKwkJCQljaGFyICpwYXR0ZXJuMiA9IHBzcWxf c2Nhbl9zbGFzaF9vcHRpb24oc2Nhbl9zdGF0ZSwgT1RfTk9STUFMLCBOVUxMLCB0cnVlKTsKKwkJ CQlpZiAoc3RybmNtcChjbWQsICJkQXAiLCAzKSA9PSAwKQorCQkJCQlzdWNjZXNzID0gZGVzY3Jp YmVBY2Nlc3NNZXRob2RQcm9wZXJ0aWVzKHBhdHRlcm4pOworCQkJCWVsc2UgaWYgKHN0cm5jbXAo Y21kLCAiZEFmbyIsIDQpID09IDApCisJCQkJCXN1Y2Nlc3MgPSBsaXN0RmFtaWx5Q2xhc3NPcGVy YXRvcnMocGF0dGVybiwgcGF0dGVybjIpOworCQkJCWVsc2UgaWYgKHN0cm5jbXAoY21kLCAiZEFm cCIsIDQpID09IDApCisJCQkJCXN1Y2Nlc3MgPSBsaXN0T3BlcmF0b3JGYW1pbHlQcm9jZWR1cmVz KHBhdHRlcm4sIHBhdHRlcm4yKTsKKwkJCQllbHNlIGlmIChzdHJuY21wKGNtZCwgImRBZiIsIDMp ID09IDApCisJCQkJCXN1Y2Nlc3MgPSBsaXN0QWNjZXNzTWV0aG9kT3BlcmF0b3JGYW1pbGllcyhw YXR0ZXJuLCBwYXR0ZXJuMiwgc2hvd192ZXJib3NlKTsKKwkJCQllbHNlIGlmIChzdHJuY21wKGNt ZCwgImRBb2MiLCA0KSA9PSAwKQorCQkJCQlzdWNjZXNzID0gZGVzY3JpYmVBY2Nlc3NNZXRob2RP cGVyYXRvckNsYXNzZXMocGF0dGVybiwgcGF0dGVybjIsIHNob3dfdmVyYm9zZSk7CisJCQkJZWxz ZQorCQkJCQlzdWNjZXNzID0gZGVzY3JpYmVBY2Nlc3NNZXRob2RzKHBhdHRlcm4sIHNob3dfdmVy Ym9zZSk7CisJCQkJZnJlZShwYXR0ZXJuMik7CisJCQkJfQogCQkJCWJyZWFrOwogCQkJY2FzZSAn YSc6CiAJCQkJc3VjY2VzcyA9IGRlc2NyaWJlQWdncmVnYXRlcyhwYXR0ZXJuLCBzaG93X3ZlcmJv c2UsIHNob3dfc3lzdGVtKTsKQEAgLTc5Miw2ICs4MDcsMjMgQEAgZXhlY19jb21tYW5kX2QoUHNx bFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsIGNvbnN0IGNoYXIgKmNt ZCkKIAkJCWNhc2UgJ3YnOgogCQkJY2FzZSAnbSc6CiAJCQljYXNlICdpJzoKKwkJCQlpZiAoc3Ry bmNtcChjbWQsICJkaXAiLCAzKSA9PSAwKQorCQkJCXsKKwkJCQkJc3VjY2VzcyA9IGRlc2NyaWJl SW5kZXhQcm9wZXJ0aWVzKHBhdHRlcm4sIHNob3dfc3lzdGVtKTsKKwkJCQkJYnJlYWs7CisJCQkJ fQorCQkJCWVsc2UgaWYgKHN0cm5jbXAoY21kLCAiZGljcCIsIDQpID09IDApCisJCQkJeworCQkJ CQljaGFyCSAgICpjb2x1bW5fcGF0dGVybiA9IE5VTEw7CisKKwkJCQkJaWYgKHBhdHRlcm4pCisJ CQkJCQljb2x1bW5fcGF0dGVybiA9IHBzcWxfc2Nhbl9zbGFzaF9vcHRpb24oc2Nhbl9zdGF0ZSwK KwkJCQkJCQkJCQkJCQkJCQlPVF9OT1JNQUwsIE5VTEwsIHRydWUpOworCisJCQkJCXN1Y2Nlc3Mg PSBkZXNjcmliZUluZGV4Q29sdW1uUHJvcGVydGllcyhwYXR0ZXJuLCBjb2x1bW5fcGF0dGVybiwg c2hvd19zeXN0ZW0pOworCQkJCQlmcmVlKGNvbHVtbl9wYXR0ZXJuKTsKKwkJCQkJYnJlYWs7CisJ CQkJfQogCQkJY2FzZSAncyc6CiAJCQljYXNlICdFJzoKIAkJCQlzdWNjZXNzID0gbGlzdFRhYmxl cygmY21kWzFdLCBwYXR0ZXJuLCBzaG93X3ZlcmJvc2UsIHNob3dfc3lzdGVtKTsKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5k ZXggZTViM2MxZS4uNzM1Yjg3ZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMK KysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTU1MDEsMyArNTUwMSw0ODQgQEAgcHJp bnRBQ0xDb2x1bW4oUFFFeHBCdWZmZXIgYnVmLCBjb25zdCBjaGFyICpjb2xuYW1lKQogCQkJCQkJ ICAicGdfY2F0YWxvZy5hcnJheV90b19zdHJpbmcoJXMsICdcXG4nKSBBUyBcIiVzXCIiLAogCQkJ CQkJICBjb2xuYW1lLCBnZXR0ZXh0X25vb3AoIkFjY2VzcyBwcml2aWxlZ2VzIikpOwogfQorCisv KgorICogXGRpcAorICogVGFrZXMgYW4gb3B0aW9uYWwgcmVnZXhwIHRvIHNlbGVjdCBwYXJ0aWN1 bGFyIGluZGV4LiBEZXNjcmliZXMgaW5kZXggcHJvZXJ0aWVzCisgKi8KK2Jvb2wKK2Rlc2NyaWJl SW5kZXhQcm9wZXJ0aWVzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgc2hvd1N5c3RlbSkKK3sK KwlQUUV4cEJ1ZmZlckRhdGEgYnVmOworCVBHcmVzdWx0ICAgKnJlczsKKwlwcmludFF1ZXJ5T3B0 IG15b3B0ID0gcHNldC5wb3B0OworCisJLyogd2hhdCBmb3IgPyAqLworCXN0YXRpYyBjb25zdCBi b29sIHRyYW5zbGF0ZV9jb2x1bW5zW10gPSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSwgZmFsc2V9OworCisJaW5pdFBRRXhwQnVmZmVyKCZidWYpOworCisJcHJpbnRm UFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJICAiU0VMRUNUIgorCQkJCQkgICIgIG4ubnNwbmFtZSBh cyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgYy5yZWxuYW1lIGFzIFwiJXNcIixcbiIKKwkJCQkJICAi ICBhbS5hbW5hbWUgYXMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHBnX2luZGV4X2hhc19wcm9wZXJ0 eShjLnJlbG5hbWU6OnJlZ2NsYXNzLCAnY2x1c3RlcmFibGUnKSBhcyBcIiVzXCIsXG4iCisJCQkJ CSAgIiAgcGdfaW5kZXhfaGFzX3Byb3BlcnR5KGMucmVsbmFtZTo6cmVnY2xhc3MsICdpbmRleF9z Y2FuJykgYXMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHBnX2luZGV4X2hhc19wcm9wZXJ0eShjLnJl bG5hbWU6OnJlZ2NsYXNzLCAnYml0bWFwX3NjYW4nKSBhcyBcIiVzXCIsXG4iCisJCQkJCSAgIiAg cGdfaW5kZXhfaGFzX3Byb3BlcnR5KGMucmVsbmFtZTo6cmVnY2xhc3MsICdiYWNrd2FyZF9zY2Fu JykgYXMgXCIlc1wiXG4iCisJCQkJCSAgIkZST00gcGdfY2xhc3MgY1xuIgorCQkJCQkgICIgIExF RlQgSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBuLm9pZCA9IGMucmVsbmFtZXNwYWNlXG4iCisJCQkJ CSAgIiAgTEVGVCBKT0lOIHBnX2FtIGFtIE9OIGFtLm9pZCA9IGMucmVsYW1cbiIKKwkJCQkJICAi V0hFUkUgYy5yZWxraW5kPSdpJ1xuIgorCQkJCQkgICIgIEFORCBuLm5zcG5hbWUgIX4gJ3BnX3Rv YXN0J1xuIiwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIlNjaGVtYSIpLAorCQkJCQkgIGdldHRleHRf bm9vcCgiTmFtZSIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiQWNjZXNzIG1ldGhvZCIpLAorCQkJ CQkgIGdldHRleHRfbm9vcCgiQ2x1c3RlcmFibGUiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIklu ZGV4IHNjYW4iKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIkJpdG1hcCBzY2FuIiksCisJCQkJCSAg Z2V0dGV4dF9ub29wKCJCYWNrd2FyZCBzY2FuIikpOworCisJaWYgKCFzaG93U3lzdGVtICYmICFw YXR0ZXJuKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLAorCQkJCQkJCSAiICBBTkQgbi5u c3BuYW1lIDw+ICdwZ19jYXRhbG9nJ1xuIgorCQkJCQkJCSAiICBBTkQgbi5uc3BuYW1lIDw+ICdp bmZvcm1hdGlvbl9zY2hlbWEnXG4iKTsKKworCXByb2Nlc3NTUUxOYW1lUGF0dGVybihwc2V0LmRi LCAmYnVmLCBwYXR0ZXJuLCB0cnVlLCBmYWxzZSwKKwkJCQkJCSAgIm4ubnNwbmFtZSIsICJjLnJl bG5hbWUiLCBOVUxMLCBOVUxMKTsKKworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICJPUkRF UiBCWSAxOyIpOworCXJlcyA9IFBTUUxleGVjKGJ1Zi5kYXRhKTsKKwl0ZXJtUFFFeHBCdWZmZXIo JmJ1Zik7CisJaWYgKCFyZXMpCisJCXJldHVybiBmYWxzZTsKKworCW15b3B0Lm51bGxQcmludCA9 IE5VTEw7CisJbXlvcHQudGl0bGUgPSBfKCJJbmRleCBwcm9wZXJ0aWVzIik7CisJbXlvcHQudHJh bnNsYXRlX2hlYWRlciA9IHRydWU7CisJbXlvcHQudHJhbnNsYXRlX2NvbHVtbnMgPSB0cmFuc2xh dGVfY29sdW1uczsKKwlteW9wdC5uX3RyYW5zbGF0ZV9jb2x1bW5zID0gbGVuZ3Rob2YodHJhbnNs YXRlX2NvbHVtbnMpOworCisJcHJpbnRRdWVyeShyZXMsICZteW9wdCwgcHNldC5xdWVyeUZvdXQs IGZhbHNlLCBwc2V0LmxvZ2ZpbGUpOworCisJUFFjbGVhcihyZXMpOworCXJldHVybiB0cnVlOwor fQorCisvKiBcZEFwCisgKglUYWtlcyBhbiBvcHRpb25hbCByZWdleHAgdG8gc2VsZWN0IHBhcnRp Y3VsYXIgYWNjZXNzIG1ldGhvZHMKKyAqLworYm9vbAorZGVzY3JpYmVBY2Nlc3NNZXRob2RQcm9w ZXJ0aWVzKGNvbnN0IGNoYXIgKnBhdHRlcm4pCit7CisJUFFFeHBCdWZmZXJEYXRhIGJ1ZjsKKwlQ R3Jlc3VsdCAgICpyZXM7CisJcHJpbnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKKwlzdGF0 aWMgY29uc3QgYm9vbCB0cmFuc2xhdGVfY29sdW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2Us IGZhbHNlLCB0cnVlfTsKKworCWlmIChwc2V0LnN2ZXJzaW9uIDwgOTA2MDApCisJeworCQljaGFy CQlzdmVyYnVmWzMyXTsKKworCQlwc3FsX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBk b2VzIG5vdCBzdXBwb3J0IGFjY2VzcyBtZXRob2RzLlxuIiwKKwkJCQkgICBmb3JtYXRQR1ZlcnNp b25OdW1iZXIocHNldC5zdmVyc2lvbiwgZmFsc2UsCisJCQkJCQkJCQkJIHN2ZXJidWYsIHNpemVv ZihzdmVyYnVmKSkpOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlpbml0UFFFeHBCdWZmZXIoJmJ1 Zik7CisKKwlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkgICJTRUxFQ1QgYS5hbW5hbWUg QVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHBnX2luZGV4YW1faGFzX3Byb3BlcnR5KGEub2lkLCAn Y2FuX29yZGVyJykgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHBnX2luZGV4YW1faGFzX3Byb3Bl cnR5KGEub2lkLCAnY2FuX3VuaXF1ZScpIEFTIFwiJXNcIixcbiIKKwkJCQkJICAiICBwZ19pbmRl eGFtX2hhc19wcm9wZXJ0eShhLm9pZCwgJ2Nhbl9tdWx0aV9jb2wnKSBBUyBcIiVzXCIsXG4iCisJ CQkJCSAgIiAgcGdfaW5kZXhhbV9oYXNfcHJvcGVydHkoYS5vaWQsICdjYW5fZXhjbHVkZScpIEFT IFwiJXNcIiIsCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJBTSBOYW1lIiksCisJCQkJCSAgZ2V0dGV4 dF9ub29wKCJDYW4gb3JkZXIiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIkNhbiB1bmlxdWUiKSwK KwkJCQkJICBnZXR0ZXh0X25vb3AoIkNhbiBtdWx0aSBjb2wiKSwKKwkJCQkJICBnZXR0ZXh0X25v b3AoIkNhbiBleGNsdWRlIikpOworCisJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwKKwkJCQkJ CSAiXG5GUk9NIHBnX2FtIGFcbiIpOworCisJcHJvY2Vzc1NRTE5hbWVQYXR0ZXJuKHBzZXQuZGIs ICZidWYsIHBhdHRlcm4sIGZhbHNlLCBmYWxzZSwKKwkJCQkJCSAgTlVMTCwgImFtbmFtZSIsIE5V TEwsIE5VTEwpOworCisJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIk9SREVSIEJZIDE7Iik7 CisJcmVzID0gUFNRTGV4ZWMoYnVmLmRhdGEpOworCXRlcm1QUUV4cEJ1ZmZlcigmYnVmKTsKKwlp ZiAoIXJlcykKKwkJcmV0dXJuIGZhbHNlOworCisJbXlvcHQubnVsbFByaW50ID0gTlVMTDsKKwlt eW9wdC50aXRsZSA9IF8oIkFjY2VzcyBtZXRob2QgcHJvcGVydGllcyIpOworCW15b3B0LnRyYW5z bGF0ZV9oZWFkZXIgPSB0cnVlOworCW15b3B0LnRyYW5zbGF0ZV9jb2x1bW5zID0gdHJhbnNsYXRl X2NvbHVtbnM7CisJbXlvcHQubl90cmFuc2xhdGVfY29sdW1ucyA9IGxlbmd0aG9mKHRyYW5zbGF0 ZV9jb2x1bW5zKTsKKworCXByaW50UXVlcnkocmVzLCAmbXlvcHQsIHBzZXQucXVlcnlGb3V0LCBm YWxzZSwgcHNldC5sb2dmaWxlKTsKKworCVBRY2xlYXIocmVzKTsKKwlyZXR1cm4gdHJ1ZTsKK30K KworLyogXGRBZiAqLworYm9vbAorbGlzdEFjY2Vzc01ldGhvZE9wZXJhdG9yRmFtaWxpZXMoY29u c3QgY2hhciAqYWNjZXNzX21ldGhvZF9wYXR0ZXJuLCBjb25zdCBjaGFyICpmYW1pbHlfcGF0dGVy biwgYm9vbCB2ZXJib3NlKQoreworCVBRRXhwQnVmZmVyRGF0YSBidWY7CisJUEdyZXN1bHQJICAg KnJlczsKKwlwcmludFF1ZXJ5T3B0CW15b3B0ID0gcHNldC5wb3B0OworCWJvb2wJCQloYXZlX3do ZXJlID0gZmFsc2U7CisJc3RhdGljIGNvbnN0IGJvb2wgdHJhbnNsYXRlX2NvbHVtbnNbXSA9IHtm YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX07CisKKwlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7CisK KwlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkgICJTRUxFQ1RcbiIKKwkJCQkJICAiICBh bS5hbW5hbWUgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIG5zLm5zcG5hbWUgQVMgXCIlc1wiLFxu IgorCQkJCQkgICIgIG9mLm9wZm5hbWUgQVMgXCIlc1wiXG4iLAorCQkJCQkgIGdldHRleHRfbm9v cCgiQWNjZXNzIG1ldGhvZCIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiT3BlcmF0b3IgZmFtaWx5 IHNjaGVtYSIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiT3BlcmF0b3IgZmFtaWx5IG5hbWUiKSk7 CisJaWYgKHZlcmJvc2UpCisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCSAgIiwgIHVz ci51c2VuYW1lIEFTIFwiJXNcIlxuIiwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIk93bmVyIikpOwor CWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCSAgIiAgRlJPTSBwZ19vcGZhbWlseSBvZlxu IgorCQkJCQkgICIgIExFRlQgSk9JTiBwZ19hbSBhbSBPTiBhbS5vaWQgPSBvZi5vcGZtZXRob2Rc biIKKwkJCQkJICAiICBMRUZUIEpPSU4gcGdfbmFtZXNwYWNlIG5zIE9OIG9mLm9wZm5hbWVzcGFj ZSA9IG5zLm9pZFxuIik7CisJaWYgKHZlcmJvc2UpCisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYs CisJCQkJCQkiICBMRUZUIEpPSU4gcGdfdXNlciB1c3IgT04gb2Yub3Bmb3duZXIgPSB1c3IudXNl c3lzaWRcbiIKKwkJCQkJCSk7CisJaWYgKGFjY2Vzc19tZXRob2RfcGF0dGVybikKKwkJaGF2ZV93 aGVyZSA9IHByb2Nlc3NTUUxOYW1lUGF0dGVybihwc2V0LmRiLCAmYnVmLCBhY2Nlc3NfbWV0aG9k X3BhdHRlcm4sIGZhbHNlLCBmYWxzZSwKKwkJCQkJCQkgICJhbS5hbW5hbWUiLCAiYW0uYW1uYW1l IiwgTlVMTCwgTlVMTCk7CisJaWYgKGZhbWlseV9wYXR0ZXJuKQorCQlwcm9jZXNzU1FMTmFtZVBh dHRlcm4ocHNldC5kYiwgJmJ1ZiwgZmFtaWx5X3BhdHRlcm4sIGhhdmVfd2hlcmUsIGZhbHNlLAor CQkJCQkJCSAgIm5zLm5zcG5hbWUiLCAib2Yub3BmbmFtZSIsIE5VTEwsIE5VTEwpOworCisJYXBw ZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIk9SREVSIEJZIDEsIDI7Iik7CisKKwlyZXMgPSBQU1FM ZXhlYyhidWYuZGF0YSk7CisJdGVybVBRRXhwQnVmZmVyKCZidWYpOworCWlmICghcmVzKQorCQly ZXR1cm4gZmFsc2U7CisKKwlteW9wdC5udWxsUHJpbnQgPSBOVUxMOworCW15b3B0LnRpdGxlID0g XygiTGlzdCBvZiBvcGVyYXRvciBmYW1pbGllcyIpOworCW15b3B0LnRyYW5zbGF0ZV9oZWFkZXIg PSB0cnVlOworCW15b3B0LnRyYW5zbGF0ZV9jb2x1bW5zID0gdHJhbnNsYXRlX2NvbHVtbnM7CisJ bXlvcHQubl90cmFuc2xhdGVfY29sdW1ucyA9IGxlbmd0aG9mKHRyYW5zbGF0ZV9jb2x1bW5zKTsK KworCXByaW50UXVlcnkocmVzLCAmbXlvcHQsIHBzZXQucXVlcnlGb3V0LCBmYWxzZSwgcHNldC5s b2dmaWxlKTsKKworCVBRY2xlYXIocmVzKTsKKwlyZXR1cm4gdHJ1ZTsKKworfQorCisvKiBcZEFm byAqLworYm9vbAorbGlzdEZhbWlseUNsYXNzT3BlcmF0b3JzKGNvbnN0IGNoYXIgKmFjY2Vzc19t ZXRob2RfcGF0dGVybiwgY29uc3QgY2hhciAqZmFtaWx5X3BhdHRlcm4pCit7CisJUFFFeHBCdWZm ZXJEYXRhIGJ1ZjsKKwlQR3Jlc3VsdAkgICAqcmVzOworCXByaW50UXVlcnlPcHQJbXlvcHQgPSBw c2V0LnBvcHQ7CisJYm9vbAkJCWhhdmVfd2hlcmUgPSBmYWxzZTsKKworCXN0YXRpYyBjb25zdCBi b29sIHRyYW5zbGF0ZV9jb2x1bW5zW10gPSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX07CisKKwlpbml0UFFFeHBCdWZmZXIoJmJ1 Zik7CisKKwlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkgICJTRUxFQ1QgRElTVElOQ1Rc biIKKwkJCQkJICAiICBhbS5hbW5hbWUgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIG5zZi5uc3Bu YW1lIEFTIFwiJXNcIixcbiIKKwkJCQkJICAiICBvZi5vcGZuYW1lIEFTIFwiJXNcIixcbiIKKwkJ CQkJICAiICBvLmFtb3BzdHJhdGVneSBBUyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgQ0FTRSBXSEVO IHBnX29wZXJhdG9yX2lzX3Zpc2libGUob3Aub2lkKSBcbiIKKwkJCQkJICAiICAgIFRIRU4gb3Au b3BybmFtZTo6dGV4dCBcbiIKKwkJCQkJICAiICAgIEVMU0Ugby5hbW9wb3ByOjpwZ19jYXRhbG9n LnJlZ29wZXI6OnRleHQgXG4iCisJCQkJCSAgIiAgRU5EIEFTIFwiJXNcIixcbiIKKwkJCQkJICAi ICBmb3JtYXRfdHlwZShvLmFtb3BsZWZ0dHlwZSAsIE5VTEwpIEFTIFwiJXNcIixcbiIKKwkJCQkJ ICAiICBmb3JtYXRfdHlwZShvLmFtb3ByaWdodHR5cGUgLCBOVUxMKSBBUyBcIiVzXCIsXG4iCisJ CQkJCSAgIiAgQ0FTRSBvLmFtb3BwdXJwb3NlXG4iCisJCQkJCSAgIiAgICBXSEVOICdvJyBUSEVO ICdvcmRlcmluZydcbiIKKwkJCQkJICAiICAgIFdIRU4gJ3MnIFRIRU4gJ3NlYXJjaCdcbiIKKwkJ CQkJICAiICBFTkQgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIG9mcy5vcGZuYW1lIEFTIFwiJXNc IlxuIgorCQkJCQkgICJGUk9NIHBnX2Ftb3Agb1xuIgorCQkJCQkgICIgIExFRlQgSk9JTiBwZ19v cGVyYXRvciBvcCBPTiBvcC5vaWQgPSBvLmFtb3BvcHJcbiIKKwkJCQkJICAiICBMRUZUIEpPSU4g cGdfb3BmYW1pbHkgb2YgT04gb2Yub2lkID0gby5hbW9wZmFtaWx5XG4iCisJCQkJCSAgIiAgTEVG VCBKT0lOIHBnX29wZmFtaWx5IG9mcyBPTiBvZnMub2lkID0gby5hbW9wc29ydGZhbWlseVxuIgor CQkJCQkgICIgIExFRlQgSk9JTiBwZ19hbSBhbSBPTiBhbS5vaWQgPSBvZi5vcGZtZXRob2QgQU5E IGFtLm9pZCA9IG8uYW1vcG1ldGhvZFxuIgorCQkJCQkgICIgIExFRlQgSk9JTiBwZ19uYW1lc3Bh Y2UgbnNmIE9OIG9mLm9wZm5hbWVzcGFjZSA9IG5zZi5vaWRcbiIsCisJCQkJCSAgZ2V0dGV4dF9u b29wKCJBTSIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiT3BmYW1pbHkgU2NoZW1hIiksCisJCQkJ CSAgZ2V0dGV4dF9ub29wKCJPcGZhbWlseSBOYW1lIiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJT dHJhdGVneSIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiT3BlcmF0b3IiKSwKKwkJCQkJICBnZXR0 ZXh0X25vb3AoIkxlZnQgdHlwZSIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiUmlnaHQgdHlwZSIp LAorCQkJCQkgIGdldHRleHRfbm9vcCgiUHVycG9zZSIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgi U29ydCBmYW1pbHkiKSk7CisKKwlpZiAoYWNjZXNzX21ldGhvZF9wYXR0ZXJuKQorCQloYXZlX3do ZXJlID0gcHJvY2Vzc1NRTE5hbWVQYXR0ZXJuKHBzZXQuZGIsICZidWYsIGFjY2Vzc19tZXRob2Rf cGF0dGVybiwKKwkJCQkJCQkJCQkgICBmYWxzZSwgZmFsc2UsIE5VTEwsICJhbS5hbW5hbWUiLAor CQkJCQkJCQkJCSAgIE5VTEwsIE5VTEwpOworCisJaWYgKGZhbWlseV9wYXR0ZXJuKQorCQlwcm9j ZXNzU1FMTmFtZVBhdHRlcm4ocHNldC5kYiwgJmJ1ZiwgZmFtaWx5X3BhdHRlcm4sIGhhdmVfd2hl cmUsIGZhbHNlLAorCQkJCQkJCSAgIm5zZi5uc3BuYW1lIiwgIm9mLm9wZm5hbWUiLCBOVUxMLCBO VUxMKTsKKworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICJPUkRFUiBCWSAxLCAyLCAzLCA0 OyIpOworCisJcmVzID0gUFNRTGV4ZWMoYnVmLmRhdGEpOworCXRlcm1QUUV4cEJ1ZmZlcigmYnVm KTsKKwlpZiAoIXJlcykKKwkJcmV0dXJuIGZhbHNlOworCisJbXlvcHQubnVsbFByaW50ID0gTlVM TDsKKwlteW9wdC50aXRsZSA9IF8oIkxpc3Qgb3BlcmF0b3JzIG9mIGZhbWlseSByZWxhdGVkIHRv IGFjY2VzcyBtZXRob2QiKTsKKwlteW9wdC50cmFuc2xhdGVfaGVhZGVyID0gdHJ1ZTsKKwlteW9w dC50cmFuc2xhdGVfY29sdW1ucyA9IHRyYW5zbGF0ZV9jb2x1bW5zOworCW15b3B0Lm5fdHJhbnNs YXRlX2NvbHVtbnMgPSBsZW5ndGhvZih0cmFuc2xhdGVfY29sdW1ucyk7CisKKwlwcmludFF1ZXJ5 KHJlcywgJm15b3B0LCBwc2V0LnF1ZXJ5Rm91dCwgZmFsc2UsIHBzZXQubG9nZmlsZSk7CisKKwlQ UWNsZWFyKHJlcyk7CisJcmV0dXJuIHRydWU7Cit9CisKKy8qIFxkQWZwICovCitib29sCitsaXN0 T3BlcmF0b3JGYW1pbHlQcm9jZWR1cmVzKGNvbnN0IGNoYXIgKmFjY2Vzc19tZXRob2RfcGF0dGVy biwgY29uc3QgY2hhciAqZmFtaWx5X3BhdHRlcm4pCit7CisJUFFFeHBCdWZmZXJEYXRhIGJ1ZjsK KwlQR3Jlc3VsdAkgICAqcmVzOworCXByaW50UXVlcnlPcHQJbXlvcHQgPSBwc2V0LnBvcHQ7CisJ Ym9vbAkJCWhhdmVfd2hlcmUgPSBmYWxzZTsKKwlzdGF0aWMgY29uc3QgYm9vbCB0cmFuc2xhdGVf Y29sdW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh bHNlfTsKKworCWluaXRQUUV4cEJ1ZmZlcigmYnVmKTsKKworCXByaW50ZlBRRXhwQnVmZmVyKCZi dWYsCisJCQkJCSAgIlNFTEVDVCBESVNUSU5DVFxuIgorCQkJCQkgICIgIGFtLmFtbmFtZSBBUyBc IiVzXCIsXG4iCisJCQkJCSAgIiAgbnMubnNwbmFtZSBBUyBcIiVzXCIsXG4iCisJCQkJCSAgIiAg b2Yub3BmbmFtZSBBUyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgYXAuYW1wcm9jbnVtIEFTIFwiJXNc IixcbiIKKwkJCQkJICAiICBhcC5hbXByb2M6OnBnX2NhdGFsb2cucmVncHJvYyBBUyBcIiVzXCIs XG4iCisJCQkJCSAgIiAgZm9ybWF0X3R5cGUoYXAuYW1wcm9jbGVmdHR5cGUsIE5VTEwpIEFTIFwi JXNcIixcbiIKKwkJCQkJICAiICBmb3JtYXRfdHlwZShhcC5hbXByb2NyaWdodHR5cGUsIE5VTEwp IEFTIFwiJXNcIlxuIgorCQkJCQkgICJGUk9NIHBnX2FtcHJvYyBhcFxuIgorCQkJCQkgICIgIExF RlQgSk9JTiBwZ19vcGZhbWlseSBvZiBPTiBvZi5vaWQgPSBhcC5hbXByb2NmYW1pbHlcbiIKKwkJ CQkJICAiICBMRUZUIEpPSU4gcGdfYW0gYW0gT04gYW0ub2lkID0gb2Yub3BmbWV0aG9kXG4iCisJ CQkJCSAgIiAgTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBucyBPTiBvZi5vcGZuYW1lc3BhY2UgPSBu cy5vaWRcbiIsCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJBTSIpLAorCQkJCQkgIGdldHRleHRfbm9v cCgiRmFtaWx5IHNjaGVtYSIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiRmFtaWx5IG5hbWUiKSwK KwkJCQkJICBnZXR0ZXh0X25vb3AoIk51bWJlciIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiUHJv YyBuYW1lIiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJMZWZ0IiksCisJCQkJCSAgZ2V0dGV4dF9u b29wKCJSaWdodCIpKTsKKworCWlmIChhY2Nlc3NfbWV0aG9kX3BhdHRlcm4pCisJCWhhdmVfd2hl cmUgPSBwcm9jZXNzU1FMTmFtZVBhdHRlcm4ocHNldC5kYiwgJmJ1ZiwgYWNjZXNzX21ldGhvZF9w YXR0ZXJuLCBmYWxzZSwgZmFsc2UsCisJCQkJCQkJICBOVUxMLCAiYW0uYW1uYW1lIiwgTlVMTCwK KwkJCQkJCQkgIE5VTEwpOworCWlmIChmYW1pbHlfcGF0dGVybikKKwkJcHJvY2Vzc1NRTE5hbWVQ YXR0ZXJuKHBzZXQuZGIsICZidWYsIGZhbWlseV9wYXR0ZXJuLCBoYXZlX3doZXJlLCBmYWxzZSwK KwkJCQkJCQkgICJucy5uc3BuYW1lIiwgIm9mLm9wZm5hbWUiLCBOVUxMLAorCQkJCQkJCSAgTlVM TCk7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLAorCQkJCQkJICJPUkRFUiBCWSAxLCAy LCAzLCA0OyIpOworCisJcmVzID0gUFNRTGV4ZWMoYnVmLmRhdGEpOworCXRlcm1QUUV4cEJ1ZmZl cigmYnVmKTsKKwlpZiAoIXJlcykKKwkJcmV0dXJuIGZhbHNlOworCisJbXlvcHQubnVsbFByaW50 ID0gTlVMTDsKKwlteW9wdC50aXRsZSA9IF8oIkxpc3Qgb2Ygb3BlcmF0b3IgZmFtaWx5IHByb2Nl ZHVyZXMiKTsKKwlteW9wdC50cmFuc2xhdGVfaGVhZGVyID0gdHJ1ZTsKKwlteW9wdC50cmFuc2xh dGVfY29sdW1ucyA9IHRyYW5zbGF0ZV9jb2x1bW5zOworCW15b3B0Lm5fdHJhbnNsYXRlX2NvbHVt bnMgPSBsZW5ndGhvZih0cmFuc2xhdGVfY29sdW1ucyk7CisKKwlwcmludFF1ZXJ5KHJlcywgJm15 b3B0LCBwc2V0LnF1ZXJ5Rm91dCwgZmFsc2UsIHBzZXQubG9nZmlsZSk7CisKKwlQUWNsZWFyKHJl cyk7CisJcmV0dXJuIHRydWU7Cit9CisKKy8qIFxkaWNwICovCitib29sCitkZXNjcmliZUluZGV4 Q29sdW1uUHJvcGVydGllcyhjb25zdCBjaGFyICppbmRleF9wYXR0ZXJuLCBjb25zdCBjaGFyICpj b2x1bW5fcGF0dGVybiwgYm9vbCBzaG93U3lzdGVtKQoreworCVBRRXhwQnVmZmVyRGF0YSBidWY7 CisJUEdyZXN1bHQgICAqcmVzOworCXByaW50UXVlcnlPcHQgbXlvcHQgPSBwc2V0LnBvcHQ7CisK KwlzdGF0aWMgY29uc3QgYm9vbCB0cmFuc2xhdGVfY29sdW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm YWxzZSwgZmFsc2V9OworCisJaW5pdFBRRXhwQnVmZmVyKCZidWYpOworCisJcHJpbnRmUFFFeHBC dWZmZXIoJmJ1ZiwKKwkJCQkJICAiU0VMRUNUICIKKwkJCQkJICAiICBuLm5zcG5hbWUgYXMgXCIl c1wiLFxuIgorCQkJCQkgICIgIGMucmVsbmFtZSBBUyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgYW0u YW1uYW1lIGFzIFwiJXNcIixcbiIKKwkJCQkJICAiICBpcC5jb2xfcG9zIEFTIFwiJXNcIixcbiIK KwkJCQkJICAiICBDQVNFXG4iCisJCQkJCSAgIiAgICBXSEVOIGkuaW5ka2V5W2lwLmNvbF9wb3Mg LSAxXSA+IDAgVEhFTiBpYy5jb2x1bW5fbmFtZVxuIgorCQkJCQkgICIgICAgV0hFTiBpLmluZGtl eVtpcC5jb2xfcG9zIC0gMV0gPSAtMiBUSEVOICdvaWQnXG4iCisJCQkJCSAgIiAgICBFTFNFIHBn X2dldF9leHByKGkuaW5kZXhwcnMsIGkuaW5kcmVsaWQpXG4iCisJCQkJCSAgIiAgRU5EIEFTIFwi JXNcIixcbiIKKwkJCQkJICAiICBDQVNFXG4iCisJCQkJCSAgIiAgICBXSEVOIHBnX2luZGV4X2Nv bHVtbl9oYXNfcHJvcGVydHkoYy5yZWxuYW1lOjpyZWdjbGFzcywgaXAuY29sX3BvcywgJ29yZGVy YWJsZScpID0gdHJ1ZSBcbiIKKwkJCQkJICAiICAgIFRIRU4gcGdfaW5kZXhfY29sdW1uX2hhc19w cm9wZXJ0eShjLnJlbG5hbWU6OnJlZ2NsYXNzLCBpcC5jb2xfcG9zLCAnYXNjJylcbiIKKwkJCQkJ ICAiICAgIEVMU0UgTlVMTCIKKwkJCQkJICAiICBFTkQgIEFTIFwiJXNcIiwiCisJCQkJCSAgIiAg Q0FTRVxuIgorCQkJCQkgICIgICAgV0hFTiBwZ19pbmRleF9jb2x1bW5faGFzX3Byb3BlcnR5KGMu cmVsbmFtZTo6cmVnY2xhc3MsIGlwLmNvbF9wb3MsICdvcmRlcmFibGUnKSA9IHRydWUgXG4iCisJ CQkJCSAgIiAgICBUSEVOIHBnX2luZGV4X2NvbHVtbl9oYXNfcHJvcGVydHkoYy5yZWxuYW1lOjpy ZWdjbGFzcywgaXAuY29sX3BvcywgJ251bGxzX2ZpcnN0JylcbiIKKwkJCQkJICAiICAgIEVMU0Ug TlVMTCIKKwkJCQkJICAiICBFTkQgIEFTIFwiJXNcIiwiCisJCQkJCSAgIiAgcGdfaW5kZXhfY29s dW1uX2hhc19wcm9wZXJ0eShjLnJlbG5hbWU6OnJlZ2NsYXNzLCBpcC5jb2xfcG9zLCAnb3JkZXJh YmxlJykgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHBnX2luZGV4X2NvbHVtbl9oYXNfcHJvcGVy dHkoYy5yZWxuYW1lOjpyZWdjbGFzcywgaXAuY29sX3BvcywgJ2Rpc3RhbmNlX29yZGVyYWJsZScp IEFTIFwiJXNcIixcbiIKKwkJCQkJICAiICBwZ19pbmRleF9jb2x1bW5faGFzX3Byb3BlcnR5KGMu cmVsbmFtZTo6cmVnY2xhc3MsIGlwLmNvbF9wb3MsICdyZXR1cm5hYmxlJykgQVMgXCIlc1wiLFxu IgorCQkJCQkgICIgIHBnX2luZGV4X2NvbHVtbl9oYXNfcHJvcGVydHkoYy5yZWxuYW1lOjpyZWdj bGFzcywgaXAuY29sX3BvcywgJ3NlYXJjaF9hcnJheScpIEFTIFwiJXNcIixcbiIKKwkJCQkJICAi ICBwZ19pbmRleF9jb2x1bW5faGFzX3Byb3BlcnR5KGMucmVsbmFtZTo6cmVnY2xhc3MsIGlwLmNv bF9wb3MsICdzZWFyY2hfbnVsbHMnKSBBUyBcIiVzXCJcbiIKKwkJCQkJICAiRlJPTSBwZ19jbGFz cyBjXG4iCisJCQkJCSAgIiAgTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBuIE9OIG4ub2lkID0gcmVs bmFtZXNwYWNlXG4iCisJCQkJCSAgIiAgTEVGVCBKT0lOIHBnX2FtIGFtIE9OIGFtLm9pZCA9IGMu cmVsYW1cbiIKKwkJCQkJICAiICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19pbmRleCBpIE9OIGku aW5kZXhyZWxpZCA9IGMub2lkXG4iCisJCQkJCSAgIiAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdf Y2xhc3MgYzIgT04gaS5pbmRyZWxpZCA9IGMyLm9pZFxuIgorCQkJCQkgICIgIExFRlQgSk9JTiBp bmZvcm1hdGlvbl9zY2hlbWEuY29sdW1ucyBpYyBPTiBpYy50YWJsZV9uYW1lID0gYzIucmVsbmFt ZSBBTkQgaWMub3JkaW5hbF9wb3NpdGlvbiA9IEFOWShpLmluZGtleTo6aW50W10pIFxuIgorCQkJ CQkgICIgIExFRlQgSk9JTiBMQVRFUkFMIChTRUxFQ1QgYXJyYXlfcG9zaXRpb24oaS5pbmRrZXks IHVuKSArIDEgQVMgY29sX3BvcyBGUk9NIHVubmVzdChpLmluZGtleSkgdW4pIEFTIGlwIE9OIHRy dWVcbiIKKwkJCQkJICAiV0hFUkUgYy5yZWxraW5kPSdpJ1xuIgorCQkJCQkgICIgIEFORCBuLm5z cG5hbWUgIX4gJ15wZ190b2FzdCdcbiIsCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJTY2hlbWEiKSwK KwkJCQkJICBnZXR0ZXh0X25vb3AoIkluZGV4IiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJBY2Nl c3MgbWV0aG9kIiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJDb2x1bW4gIyIpLAorCQkJCQkgIGdl dHRleHRfbm9vcCgiRXhwciIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiQVNDIiksCisJCQkJCSAg Z2V0dGV4dF9ub29wKCJOdWxsIGZpcnN0IiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJPcmRlcmFi bGUiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIkRpc3RhbmNlIG9yZGVyYWJsZSIpLAorCQkJCQkg IGdldHRleHRfbm9vcCgiUmV0dXJuYWJsZSIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiU2VhcmNo IGFycmF5IiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJTZWFyY2ggbnVsbHMiKSk7CisKKwlpZiAo IXNob3dTeXN0ZW0gJiYgIWluZGV4X3BhdHRlcm4pCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZi dWYsCisJCQkJCQkJICIgIEFORCBuLm5zcG5hbWUgPD4gJ3BnX2NhdGFsb2cnXG4iCisJCQkJCQkJ ICIgIEFORCBuLm5zcG5hbWUgPD4gJ2luZm9ybWF0aW9uX3NjaGVtYSdcbiIpOworCisJcHJvY2Vz c1NRTE5hbWVQYXR0ZXJuKHBzZXQuZGIsICZidWYsIGluZGV4X3BhdHRlcm4sIHRydWUsIGZhbHNl LAorCQkJCQkJICAibi5uc3BuYW1lIiwgImMucmVsbmFtZSIsIE5VTEwsCisJCQkJCQkgIE5VTEwp OworCWlmIChjb2x1bW5fcGF0dGVybikKKwkJcHJvY2Vzc1NRTE5hbWVQYXR0ZXJuKHBzZXQuZGIs ICZidWYsIGNvbHVtbl9wYXR0ZXJuLCB0cnVlLCBmYWxzZSwKKwkJCQkJCQkgIE5VTEwsICJpYy5j b2x1bW5fbmFtZSIsIE5VTEwsCisJCQkJCQkJICBOVUxMKTsKKworCWFwcGVuZFBRRXhwQnVmZmVy U3RyKCZidWYsICJPUkRFUiBCWSAxLCAyOyIpOworCXJlcyA9IFBTUUxleGVjKGJ1Zi5kYXRhKTsK Kwl0ZXJtUFFFeHBCdWZmZXIoJmJ1Zik7CisJaWYgKCFyZXMpCisJCXJldHVybiBmYWxzZTsKKwor CW15b3B0Lm51bGxQcmludCA9IE5VTEw7CisJbXlvcHQudGl0bGUgPSBfKCJJbmRleCBjb2x1bW4g cHJvcGVydGllcyIpOworCW15b3B0LnRyYW5zbGF0ZV9oZWFkZXIgPSB0cnVlOworCW15b3B0LnRy YW5zbGF0ZV9jb2x1bW5zID0gdHJhbnNsYXRlX2NvbHVtbnM7CisJbXlvcHQubl90cmFuc2xhdGVf Y29sdW1ucyA9IGxlbmd0aG9mKHRyYW5zbGF0ZV9jb2x1bW5zKTsKKworCXByaW50UXVlcnkocmVz LCAmbXlvcHQsIHBzZXQucXVlcnlGb3V0LCBmYWxzZSwgcHNldC5sb2dmaWxlKTsKKworCVBRY2xl YXIocmVzKTsKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIFxkQW9jCisgKiBMaXN0IGluZGV4 IGFjY2VzcyBtZXRob2Qgb3BlcmF0b3IgY2xhc3Nlcy4KKyAqIFRha2VzIGFuIG9wdGlvbmFsIHJl Z2V4cCB0byBzZWxlY3QgcGFydGljdWxhciBhY2Nlc3MgbWV0aG9kIGFuZCBvcGVyYXRvciBjbGFz cy4KKyAqLworYm9vbAorZGVzY3JpYmVBY2Nlc3NNZXRob2RPcGVyYXRvckNsYXNzZXMoY29uc3Qg Y2hhciAqYWNjZXNzX21ldGhvZF9wYXR0ZXJuLCBjb25zdCBjaGFyICpvcGNsYXNzX3BhdHRlcm4s IGJvb2wgdmVyYm9zZSkKK3sKKwlQUUV4cEJ1ZmZlckRhdGEgYnVmOworCVBHcmVzdWx0CSAgICpy ZXM7CisJcHJpbnRRdWVyeU9wdAlteW9wdCA9IHBzZXQucG9wdDsKKwlib29sCQkJaGF2ZV93aGVy ZSA9IGZhbHNlOworCXN0YXRpYyBjb25zdCBib29sIHRyYW5zbGF0ZV9jb2x1bW5zW10gPSB7ZmFs c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlfTsKKwor CWluaXRQUUV4cEJ1ZmZlcigmYnVmKTsKKworCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJCQkJ CSAgIlNFTEVDVCIKKwkJCQkJICAiICBhbS5hbW5hbWUgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIg IG4ubnNwbmFtZSBBUyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgYy5vcGNuYW1lIEFTIFwiJXNcIixc biIsCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJBY2Nlc3MgbWV0aG9kIiksCisJCQkJCSAgZ2V0dGV4 dF9ub29wKCJTY2hlbWEiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3AoIk5hbWUiKSk7CisJaWYgKHZl cmJvc2UpCisJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCSAgIiAgcGdfY2F0YWxvZy5w Z19nZXRfdXNlcmJ5aWQoYy5vcGNvd25lcikgQVMgXCIlc1wiLFxuIiwKKwkJCQkJICBnZXR0ZXh0 X25vb3AoIk93bmVyIikpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCSAgIiAgb2Yu b3BmbmFtZSBBUyBcIiVzXCIsXG4iCisJCQkJCSAgIiAgYy5vcGNpbnR5cGU6OnJlZ3R5cGUgQVMg XCIlc1wiLFxuIgorCQkJCQkgICIgIGMub3BjZGVmYXVsdCBBUyBcIiVzXCIsXG4iCisJCQkJCSAg IiAgKENBU0UgYy5vcGNrZXl0eXBlXG4iCisJCQkJCSAgIiAgICBXSEVOIDBcbiIKKwkJCQkJICAi ICAgIFRIRU4gYy5vcGNpbnR5cGVcbiIKKwkJCQkJICAiICAgIEVMU0UgYy5vcGNrZXl0eXBlXG4i CisJCQkJCSAgIiAgRU5EKTo6cmVndHlwZTo6cmVndHlwZSBBUyBcIiVzXCJcbiIKKwkJCQkJICAi RlJPTSBwZ19vcGNsYXNzIGNcbiIKKwkJCQkJICAiICBMRUZUIEpPSU4gcGdfYW0gYW0gb24gYW0u b2lkID0gYy5vcGNtZXRob2RcbiIKKwkJCQkJICAiICBMRUZUIEpPSU4gcGdfbmFtZXNwYWNlIG4g T04gbi5vaWQgPSBjLm9wY25hbWVzcGFjZVxuIgorCQkJCQkgICIgIExFRlQgSk9JTiBwZ19vcGZh bWlseSBvZiBPTiBvZi5vaWQgPSBjLm9wY2ZhbWlseVxuIiwKKwkJCQkJICBnZXR0ZXh0X25vb3Ao IkZhbWlseSIpLAorCQkJCQkgIGdldHRleHRfbm9vcCgiSW5kZXhlZCB0eXBlIiksCisJCQkJCSAg Z2V0dGV4dF9ub29wKCJJcyBkZWZhdWx0IiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJTdG9yZWQg dHlwZSIpKTsKKworCWlmIChhY2Nlc3NfbWV0aG9kX3BhdHRlcm4pCisJCWhhdmVfd2hlcmUgPSBw cm9jZXNzU1FMTmFtZVBhdHRlcm4ocHNldC5kYiwgJmJ1ZiwgYWNjZXNzX21ldGhvZF9wYXR0ZXJu LAorCQkJCQkJCQkJZmFsc2UsIGZhbHNlLCBOVUxMLCAiYW0uYW1uYW1lIiwgTlVMTCwgTlVMTCk7 CisJaWYgKG9wY2xhc3NfcGF0dGVybikKKwkJcHJvY2Vzc1NRTE5hbWVQYXR0ZXJuKHBzZXQuZGIs ICZidWYsIG9wY2xhc3NfcGF0dGVybiwgaGF2ZV93aGVyZSwgZmFsc2UsCisJCQkJCQkJICAibi5u c3BuYW1lIiwgImMub3BjbmFtZSIsIE5VTEwsCisJCQkJCQkJICBOVUxMKTsKKworCWFwcGVuZFBR RXhwQnVmZmVyU3RyKCZidWYsICJPUkRFUiBCWSAxLDIsMzsiKTsKKwlyZXMgPSBQU1FMZXhlYyhi dWYuZGF0YSk7CisJdGVybVBRRXhwQnVmZmVyKCZidWYpOworCWlmICghcmVzKQorCQlyZXR1cm4g ZmFsc2U7CisKKwlteW9wdC5udWxsUHJpbnQgPSBOVUxMOworCW15b3B0LnRpdGxlID0gXygiSW5k ZXggYWNjZXNzIG1ldGhvZCBvcGVyYXRvciBjbGFzc2VzIik7CisJbXlvcHQudHJhbnNsYXRlX2hl YWRlciA9IHRydWU7CisJbXlvcHQudHJhbnNsYXRlX2NvbHVtbnMgPSB0cmFuc2xhdGVfY29sdW1u czsKKwlteW9wdC5uX3RyYW5zbGF0ZV9jb2x1bW5zID0gbGVuZ3Rob2YodHJhbnNsYXRlX2NvbHVt bnMpOworCisJcHJpbnRRdWVyeShyZXMsICZteW9wdCwgcHNldC5xdWVyeUZvdXQsIGZhbHNlLCBw c2V0LmxvZ2ZpbGUpOworCisJUFFjbGVhcihyZXMpOworCXJldHVybiB0cnVlOworfQpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmggYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaApp bmRleCBhNGNjNWVmLi5iMTQ1ZjIwIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUu aAorKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuaApAQCAtMTExLDQgKzExMSwyNSBAQCBib29s CQlkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKTsKIC8qIFxkUnMgKi8K IGJvb2wJCWRlc2NyaWJlU3Vic2NyaXB0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZl cmJvc2UpOwogCisvKiBcZEFmICovCitleHRlcm4gYm9vbCBsaXN0QWNjZXNzTWV0aG9kT3BlcmF0 b3JGYW1pbGllcyhjb25zdCBjaGFyICphY2Nlc3NfbWV0aG9kX3BhdHRlcm4sIGNvbnN0IGNoYXIg KmZhbWlseV9wYXR0ZXJuLCBib29sIHZlcmJvc2UpOworCisvKiBcZEFmcCAqLworZXh0ZXJuIGJv b2wgbGlzdE9wZXJhdG9yRmFtaWx5UHJvY2VkdXJlcyhjb25zdCBjaGFyICphY2Nlc3NfbWV0aG9k X3BhdHRlcm4sIGNvbnN0IGNoYXIgKmZhbWlseV9wYXR0ZXJuKTsKKworLyogXGRBZm8gKi8KK2V4 dGVybiBib29sIGxpc3RGYW1pbHlDbGFzc09wZXJhdG9ycyhjb25zdCBjaGFyICphY2Nlc3NNZXRo b2RfcGF0dGVybiwgY29uc3QgY2hhciAqZmFtaWx5X3BhdHRlcm4pOworCisvKiBcZEFwICovCitl eHRlcm4gYm9vbCBkZXNjcmliZUFjY2Vzc01ldGhvZFByb3BlcnRpZXMoY29uc3QgY2hhciAqcGF0 dGVybik7CisKKy8qIFxkaXAgKi8KK2V4dGVybiBib29sIGRlc2NyaWJlSW5kZXhQcm9wZXJ0aWVz KGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgc2hvd1N5c3RlbSk7CisKKy8qIFxkaWNwICovCitl eHRlcm4gYm9vbCBkZXNjcmliZUluZGV4Q29sdW1uUHJvcGVydGllcyhjb25zdCBjaGFyICppbmRl eFBhdHRlcm4sIGNvbnN0IGNoYXIgKmNvbHVtblBhdHRlcm4sIGJvb2wgc2hvd1N5c3RlbSk7CisK Ky8qIFxkQW9jICovCitleHRlcm4gYm9vbCBkZXNjcmliZUFjY2Vzc01ldGhvZE9wZXJhdG9yQ2xh c3Nlcyhjb25zdCBjaGFyICphY2Nlc3NfbWV0aG9kX3BhdHRlcm4sIGNvbnN0IGNoYXIgKm9wY2xh c3NfcGF0dGVybiwgYm9vbCB2ZXJib3NlKTsKKwogI2VuZGlmCQkJCQkJCS8qIERFU0NSSUJFX0gg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9oZWxwLmMgYi9zcmMvYmluL3BzcWwvaGVscC5j CmluZGV4IDcwMmU3NDIuLmRiZTYyZTggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9oZWxwLmMK KysrIGIvc3JjL2Jpbi9wc3FsL2hlbHAuYwpAQCAtMjI0LDYgKzIyNCwxMSBAQCBzbGFzaFVzYWdl KHVuc2lnbmVkIHNob3J0IGludCBwYWdlcikKIAlmcHJpbnRmKG91dHB1dCwgXygiICBcXGRbUytd ICBOQU1FICAgICAgICAgICBkZXNjcmliZSB0YWJsZSwgdmlldywgc2VxdWVuY2UsIG9yIGluZGV4 XG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkYVtTXSAgW1BBVFRFUk5dICAgICAgbGlz dCBhZ2dyZWdhdGVzXG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkQVsrXSAgW1BBVFRF Uk5dICAgICAgbGlzdCBhY2Nlc3MgbWV0aG9kc1xuIikpOworCWZwcmludGYob3V0cHV0LCBfKCIg IFxcZEFmWytdIFtBTVBUUk4gW09QRlBUUk5dXSBsaXN0IG9wZXJhdG9yIGZhbWlsaWVzIG9mIGFj Y2VzcyBtZXRob2RcbiIpKTsKKwlmcHJpbnRmKG91dHB1dCwgXygiICBcXGRBZnAgICBbQU1QVFJO IFtPUEZQVFJOXV0gbGlzdCBwcm9jZWR1cmVzIG9mIG9wZXJhdG9yIGZhbWlseSByZWxhdGVkIHRv IGFjY2VzcyBtZXRob2RcbiIpKTsKKwlmcHJpbnRmKG91dHB1dCwgXygiICBcXGRBZm8gICBbQU1Q VFJOIFtPUEZQVFJOXV0gbGlzdCBvcGVyYXRvcnMgb2YgZmFtaWx5IHJlbGF0ZWQgdG8gYWNjZXNz IG1ldGhvZFxuIikpOworCWZwcmludGYob3V0cHV0LCBfKCIgIFxcZEFvY1srXVtBTVBUUk4gW09Q Q1BUUk5dXSBsaXN0IG9wZXJhdG9yIGNsYXNzZXMgb2YgaW5kZXggYWNjZXNzIG1ldGhvZHNcbiIp KTsKKwlmcHJpbnRmKG91dHB1dCwgXygiICBcXGRBcCAgICBbUEFUVEVSTl0gICAgICBsaXN0IGFj Y2VzcyBtZXRob2RzIHdpdGggcHJvcGVydGllc1xuIikpOwogCWZwcmludGYob3V0cHV0LCBfKCIg IFxcZGJbK10gIFtQQVRURVJOXSAgICAgIGxpc3QgdGFibGVzcGFjZXNcbiIpKTsKIAlmcHJpbnRm KG91dHB1dCwgXygiICBcXGRjW1MrXSBbUEFUVEVSTl0gICAgICBsaXN0IGNvbnZlcnNpb25zXG4i KSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAgXFxkQ1srXSAgW1BBVFRFUk5dICAgICAgbGlzdCBj YXN0c1xuIikpOwpAQCAtMjQyLDYgKzI0Nyw4IEBAIHNsYXNoVXNhZ2UodW5zaWduZWQgc2hvcnQg aW50IHBhZ2VyKQogCWZwcmludGYob3V0cHV0LCBfKCIgIFxcZEZ0WytdIFtQQVRURVJOXSAgICAg IGxpc3QgdGV4dCBzZWFyY2ggdGVtcGxhdGVzXG4iKSk7CiAJZnByaW50ZihvdXRwdXQsIF8oIiAg XFxkZ1tTK10gW1BBVFRFUk5dICAgICAgbGlzdCByb2xlc1xuIikpOwogCWZwcmludGYob3V0cHV0 LCBfKCIgIFxcZGlbUytdIFtQQVRURVJOXSAgICAgIGxpc3QgaW5kZXhlc1xuIikpOworCWZwcmlu dGYob3V0cHV0LCBfKCIgIFxcZGlwW1NdIFtQQVRURVJOXSAgICAgIGxpc3QgaW5kZXhlcyB3aXRo IHByb3BlcnRpZXNcbiIpKTsKKwlmcHJpbnRmKG91dHB1dCwgXygiICBcXGRpY3BbU10gW0lEWE5B TUUgW0NPTE5BTUVdXSBzaG93IGluZGV4IGNvbHVtbiBwcm9wZXJ0aWVzXG4iKSk7CiAJZnByaW50 ZihvdXRwdXQsIF8oIiAgXFxkbCAgICAgICAgICAgICAgICAgICAgbGlzdCBsYXJnZSBvYmplY3Rz LCBzYW1lIGFzIFxcbG9fbGlzdFxuIikpOwogCWZwcmludGYob3V0cHV0LCBfKCIgIFxcZExbUytd IFtQQVRURVJOXSAgICAgIGxpc3QgcHJvY2VkdXJhbCBsYW5ndWFnZXNcbiIpKTsKIAlmcHJpbnRm KG91dHB1dCwgXygiICBcXGRtW1MrXSBbUEFUVEVSTl0gICAgICBsaXN0IG1hdGVyaWFsaXplZCB2 aWV3c1xuIikpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jIGIvc3Jj L2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCmluZGV4IDdiYjQ3ZWEuLjFjM2MyMDkgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmMKQEAgLTYzOCw2ICs2MzgsMjMgQEAgc3RhdGljIGNvbnN0IFNjaGVtYVF1ZXJ5IFF1 ZXJ5X2Zvcl9saXN0X29mX2NvbnN0cmFpbnRzX3dpdGhfc2NoZW1hID0gewogCU5VTEwKIH07CiAK K3N0YXRpYyBjb25zdCBTY2hlbWFRdWVyeSBRdWVyeV9mb3JfbGlzdF9vZl9vcGVyYXRvcl9mYW1p bGllcyA9IHsKKwkvKiBtaW5fc2VydmVyX3ZlcnNpb24gKi8KKwkwLAorCS8qIGNhdG5hbWUgKi8K KwkicGdfY2F0YWxvZy5wZ19vcGZhbWlseSBjIiwKKwkvKiBzZWxjb25kaXRpb24gKi8KKwlOVUxM LAorCS8qIHZpc2NvbmRpdGlvbiAqLworCSJ0cnVlIiwKKwkvKiBuYW1lc3BhY2UgKi8KKwkiYy5v cGZuYW1lc3BhY2UiLAorCS8qIHJlc3VsdCAqLworCSJwZ19jYXRhbG9nLnF1b3RlX2lkZW50KGMu b3BmbmFtZSkiLAorCS8qIHF1YWxyZXN1bHQgKi8KKwlOVUxMCit9OworCiAvKiBSZWxhdGlvbnMg c3VwcG9ydGluZyBJTlNFUlQsIFVQREFURSBvciBERUxFVEUgKi8KIHN0YXRpYyBjb25zdCBTY2hl bWFRdWVyeSBRdWVyeV9mb3JfbGlzdF9vZl91cGRhdGFibGVzID0gewogCS8qIG1pbl9zZXJ2ZXJf dmVyc2lvbiAqLwpAQCAtMTYxOCw3ICsxNjM1LDcgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNo YXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJIlxcYSIsCiAJCSJcXGNvbm5lY3QiLCAi XFxjb25uaW5mbyIsICJcXEMiLCAiXFxjZCIsICJcXGNvcHkiLAogCQkiXFxjb3B5cmlnaHQiLCAi XFxjcm9zc3RhYnZpZXciLAotCQkiXFxkIiwgIlxcZGEiLCAiXFxkQSIsICJcXGRiIiwgIlxcZGMi LCAiXFxkQyIsICJcXGRkIiwgIlxcZGRwIiwgIlxcZEQiLAorCQkiXFxkIiwgIlxcZGEiLCAiXFxk QSIsICJcXGRBcCIsICJcXGRBZm8iLCAiXFxkQWZwIiwgIlxcZEFmIiwgIlxcZEFvYyIsICJcXGRp Y3AiLCAiXFxkaXAiLCAiXFxkYiIsICJcXGRjIiwgIlxcZEMiLCAiXFxkZCIsICJcXGRkcCIsICJc XGREIiwKIAkJIlxcZGVzIiwgIlxcZGV0IiwgIlxcZGV1IiwgIlxcZGV3IiwgIlxcZEUiLCAiXFxk ZiIsCiAJCSJcXGRGIiwgIlxcZEZkIiwgIlxcZEZwIiwgIlxcZEZ0IiwgIlxcZGciLCAiXFxkaSIs ICJcXGRsIiwgIlxcZEwiLAogCQkiXFxkbSIsICJcXGRuIiwgIlxcZG8iLCAiXFxkTyIsICJcXGRw IiwKQEAgLTM2MzUsNiArMzY1MiwxMCBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4 dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCX0KIAllbHNlIGlmIChUYWlsTWF0Y2hlc0NTMSgiXFxk YSoiKSkKIAkJQ09NUExFVEVfV0lUSF9WRVJTSU9ORURfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9s aXN0X29mX2FnZ3JlZ2F0ZXMsIE5VTEwpOworCWVsc2UgaWYgKFRhaWxNYXRjaGVzQ1MxKCJcXGRB ZioiKSkKKwkJQ09NUExFVEVfV0lUSF9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9hY2Nlc3NfbWV0 aG9kcyk7CisJZWxzZSBpZiAoVGFpbE1hdGNoZXNDUzIoIlxcZEFmKiIsIE1hdGNoQW55KSkKKwkJ Q09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2Zfb3BlcmF0b3JfZmFt aWxpZXMsIE5VTEwpOwogCWVsc2UgaWYgKFRhaWxNYXRjaGVzQ1MxKCJcXGRBKiIpKQogCQlDT01Q TEVURV9XSVRIX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX2FjY2Vzc19tZXRob2RzKTsKIAllbHNl IGlmIChUYWlsTWF0Y2hlc0NTMSgiXFxkYioiKSkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRl eGluZy5vdXQKaW5kZXggMmMyYmY0NC4uNzI2YjFiZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9pbmRleGluZy5vdXQKQEAgLTEzMzcsMyArMTMzNywyOSBAQCBpbnNlcnQgaW50byBjb3ZpZHhw YXJ0IHZhbHVlcyAoNCwgMSk7CiBpbnNlcnQgaW50byBjb3ZpZHhwYXJ0IHZhbHVlcyAoNCwgMSk7 CiBFUlJPUjogIGR1cGxpY2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQg ImNvdmlkeHBhcnQ0X2FfYl9pZHgiCiBERVRBSUw6ICBLZXkgKGEpPSg0KSBhbHJlYWR5IGV4aXN0 cy4KKy0tIFRlc3QgcHNxbCBjb21tYW5kIGZvciBkaXNwbGF5aW5nIGluZm9ybWF0aW9uIGFib3V0 IGluZGV4ZXMuCitcZGlwIGJyaW5pZHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJbmRleCBwcm9wZXJ0aWVzCisgU2NoZW1hIHwgIE5hbWUgICB8IEFjY2VzcyBtZXRob2Qg fCBDbHVzdGVyYWJsZSB8IEluZGV4IHNjYW4gfCBCaXRtYXAgc2NhbiB8IEJhY2t3YXJkIHNjYW4g CistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgcHVibGljIHwgYnJpbmlkeCB8 IGJyaW4gICAgICAgICAgfCBmICAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgICAgICB8 IGYKKygxIHJvdykKKworXGRpY3AgYm90aGFycmF5aWR4IAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IGNvbHVtbiBw cm9wZXJ0aWVzCisgU2NoZW1hIHwgICAgSW5kZXggICAgIHwgQWNjZXNzIG1ldGhvZCB8IENvbHVt biAjIHwgRXhwciB8IEFTQyB8IE51bGwgZmlyc3QgfCBPcmRlcmFibGUgfCBEaXN0YW5jZSBvcmRl cmFibGUgfCBSZXR1cm5hYmxlIHwgU2VhcmNoIGFycmF5IHwgU2VhcmNoIG51bGxzIAorLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tKy0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBwdWJsaWMgfCBib3RoYXJyYXlpZHgg fCBnaW4gICAgICAgICAgIHwgICAgICAgIDEgfCBpICAgIHwgICAgIHwgICAgICAgICAgICB8IGYg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAg fCBmCisgcHVibGljIHwgYm90aGFycmF5aWR4IHwgZ2luICAgICAgICAgICB8ICAgICAgICAyIHwg aSAgICB8ICAgICB8ICAgICAgICAgICAgfCBmICAgICAgICAgfCBmICAgICAgICAgICAgICAgICAg fCBmICAgICAgICAgIHwgZiAgICAgICAgICAgIHwgZgorIHB1YmxpYyB8IGJvdGhhcnJheWlkeCB8 IGdpbiAgICAgICAgICAgfCAgICAgICAgMSB8IHQgICAgfCAgICAgfCAgICAgICAgICAgIHwgZiAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICB8 IGYKKyBwdWJsaWMgfCBib3RoYXJyYXlpZHggfCBnaW4gICAgICAgICAgIHwgICAgICAgIDIgfCB0 ICAgIHwgICAgIHwgICAgICAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgfCBmICAgICAgICAgICAgfCBmCisoNCByb3dzKQorCitcZGljcCBib3RoYXJy YXlpZHggdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEluZGV4IGNvbHVtbiBwcm9wZXJ0aWVzCisgU2NoZW1hIHwgICAgSW5k ZXggICAgIHwgQWNjZXNzIG1ldGhvZCB8IENvbHVtbiAjIHwgRXhwciB8IEFTQyB8IE51bGwgZmly c3QgfCBPcmRlcmFibGUgfCBEaXN0YW5jZSBvcmRlcmFibGUgfCBSZXR1cm5hYmxlIHwgU2VhcmNo IGFycmF5IHwgU2VhcmNoIG51bGxzIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0KKyBwdWJsaWMgfCBib3RoYXJyYXlpZHggfCBnaW4gICAgICAgICAgIHwgICAgICAgIDEg fCB0ICAgIHwgICAgIHwgICAgICAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgfCBmCisgcHVibGljIHwgYm90aGFycmF5aWR4 IHwgZ2luICAgICAgICAgICB8ICAgICAgICAyIHwgdCAgICB8ICAgICB8ICAgICAgICAgICAgfCBm ICAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAg IHwgZgorKDIgcm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w c3FsLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKaW5kZXggMzgxOGNm ZS4uYzAyZWU0YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0CkBAIC0zMjQzLDMgKzMy NDMsMTU4IEBAIGxhc3QgZXJyb3IgbWVzc2FnZTogZGl2aXNpb24gYnkgemVybwogXGVjaG8gJ2xh c3QgZXJyb3IgY29kZTonIDpMQVNUX0VSUk9SX1NRTFNUQVRFCiBsYXN0IGVycm9yIGNvZGU6IDIy MDEyCiBcdW5zZXQgRkVUQ0hfQ09VTlQKKy0tIGNoZWNrIHByaW50aW5nIGluZm8gYWJvdXQgYWNj ZXNzIG1ldGhvZHMKK1xkQQorTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcworICBOYW1lICB8IFR5cGUg IAorLS0tLS0tLS0rLS0tLS0tLQorIGJyaW4gICB8IEluZGV4CisgYnRyZWUgIHwgSW5kZXgKKyBn aW4gICAgfCBJbmRleAorIGdpc3QgICB8IEluZGV4CisgaGFzaCAgIHwgSW5kZXgKKyBzcGdpc3Qg fCBJbmRleAorKDYgcm93cykKKworXGRBIGdpbgorTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcworIE5h bWUgfCBUeXBlICAKKy0tLS0tLSstLS0tLS0tCisgZ2luICB8IEluZGV4CisoMSByb3cpCisKK1xk QSBmb28KK0xpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKKyBOYW1lIHwgVHlwZSAKKy0tLS0tLSstLS0t LS0KKygwIHJvd3MpCisKK1xkQXAgZ2luCisgICAgICAgICAgICAgICAgICAgIEFjY2VzcyBtZXRo b2QgcHJvcGVydGllcworIEFNIE5hbWUgfCBDYW4gb3JkZXIgfCBDYW4gdW5pcXVlIHwgQ2FuIG11 bHRpIGNvbCB8IENhbiBleGNsdWRlIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGdpbiAgICAgfCBmICAgICAgICAgfCBm ICAgICAgICAgIHwgdCAgICAgICAgICAgICB8IGYKKygxIHJvdykKKworXGRBcCBmb28KKyAgICAg ICAgICAgICAgICAgICAgQWNjZXNzIG1ldGhvZCBwcm9wZXJ0aWVzCisgQU0gTmFtZSB8IENhbiBv cmRlciB8IENhbiB1bmlxdWUgfCBDYW4gbXVsdGkgY29sIHwgQ2FuIGV4Y2x1ZGUgCistLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t CisoMCByb3dzKQorCitcZEFmIGdpbgorICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygb3BlcmF0 b3IgZmFtaWxpZXMKKyBBY2Nlc3MgbWV0aG9kIHwgT3BlcmF0b3IgZmFtaWx5IHNjaGVtYSB8IE9w ZXJhdG9yIGZhbWlseSBuYW1lIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgZ2luICAgICAgICAgICB8IHBnX2NhdGFsb2cg ICAgICAgICAgICAgfCBhcnJheV9vcHMKKyBnaW4gICAgICAgICAgIHwgcGdfY2F0YWxvZyAgICAg ICAgICAgICB8IHRzdmVjdG9yX29wcworIGdpbiAgICAgICAgICAgfCBwZ19jYXRhbG9nICAgICAg ICAgICAgIHwganNvbmJfb3BzCisgZ2luICAgICAgICAgICB8IHBnX2NhdGFsb2cgICAgICAgICAg ICAgfCBqc29uYl9wYXRoX29wcworKDQgcm93cykKKworXGRBZiBmb28KKyAgICAgICAgICAgICAg ICAgICBMaXN0IG9mIG9wZXJhdG9yIGZhbWlsaWVzCisgQWNjZXNzIG1ldGhvZCB8IE9wZXJhdG9y IGZhbWlseSBzY2hlbWEgfCBPcGVyYXRvciBmYW1pbHkgbmFtZSAKKy0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKDAgcm93cykK KworXGRBZm8gYnJpbiB1dWlkX21pbm1heF9vcHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvcGVyYXRvcnMgb2YgZmFtaWx5IHJlbGF0ZWQgdG8gYWNjZXNzIG1ldGhvZAor ICBBTSAgfCBPcGZhbWlseSBTY2hlbWEgfCAgT3BmYW1pbHkgTmFtZSAgfCBTdHJhdGVneSB8IE9w ZXJhdG9yIHwgTGVmdCB0eXBlIHwgUmlnaHQgdHlwZSB8IFB1cnBvc2UgfCBTb3J0IGZhbWlseSAK Ky0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0t CisgYnJpbiB8IHBnX2NhdGFsb2cgICAgICB8IHV1aWRfbWlubWF4X29wcyB8ICAgICAgICAxIHwg PCAgICAgICAgfCB1dWlkICAgICAgfCB1dWlkICAgICAgIHwgc2VhcmNoICB8IAorIGJyaW4gfCBw Z19jYXRhbG9nICAgICAgfCB1dWlkX21pbm1heF9vcHMgfCAgICAgICAgMiB8IDw9ICAgICAgIHwg dXVpZCAgICAgIHwgdXVpZCAgICAgICB8IHNlYXJjaCAgfCAKKyBicmluIHwgcGdfY2F0YWxvZyAg ICAgIHwgdXVpZF9taW5tYXhfb3BzIHwgICAgICAgIDMgfCA9ICAgICAgICB8IHV1aWQgICAgICB8 IHV1aWQgICAgICAgfCBzZWFyY2ggIHwgCisgYnJpbiB8IHBnX2NhdGFsb2cgICAgICB8IHV1aWRf bWlubWF4X29wcyB8ICAgICAgICA0IHwgPj0gICAgICAgfCB1dWlkICAgICAgfCB1dWlkICAgICAg IHwgc2VhcmNoICB8IAorIGJyaW4gfCBwZ19jYXRhbG9nICAgICAgfCB1dWlkX21pbm1heF9vcHMg fCAgICAgICAgNSB8ID4gICAgICAgIHwgdXVpZCAgICAgIHwgdXVpZCAgICAgICB8IHNlYXJjaCAg fCAKKyg1IHJvd3MpCisKK1xkQWZvIGJyaW4gYmFyCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaXN0IG9wZXJhdG9ycyBvZiBmYW1pbHkgcmVsYXRlZCB0byBhY2Nlc3MgbWV0aG9kCisg QU0gfCBPcGZhbWlseSBTY2hlbWEgfCBPcGZhbWlseSBOYW1lIHwgU3RyYXRlZ3kgfCBPcGVyYXRv ciB8IExlZnQgdHlwZSB8IFJpZ2h0IHR5cGUgfCBQdXJwb3NlIHwgU29ydCBmYW1pbHkgCistLS0t Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisoMCByb3dz KQorCitcZEFmbyBmb28gYmFyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9w ZXJhdG9ycyBvZiBmYW1pbHkgcmVsYXRlZCB0byBhY2Nlc3MgbWV0aG9kCisgQU0gfCBPcGZhbWls eSBTY2hlbWEgfCBPcGZhbWlseSBOYW1lIHwgU3RyYXRlZ3kgfCBPcGVyYXRvciB8IExlZnQgdHlw ZSB8IFJpZ2h0IHR5cGUgfCBQdXJwb3NlIHwgU29ydCBmYW1pbHkgCistLS0tKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisoMCByb3dzKQorCitcZEFmbyAq IHBnX2NhdGFsb2cuanNvbmJfcGF0aF9vcHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMaXN0IG9wZXJhdG9ycyBvZiBmYW1pbHkgcmVsYXRlZCB0byBhY2Nlc3MgbWV0aG9kCisgQU0g IHwgT3BmYW1pbHkgU2NoZW1hIHwgT3BmYW1pbHkgTmFtZSAgfCBTdHJhdGVneSB8IE9wZXJhdG9y IHwgTGVmdCB0eXBlIHwgUmlnaHQgdHlwZSB8IFB1cnBvc2UgfCBTb3J0IGZhbWlseSAKKy0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGdpbiB8 IHBnX2NhdGFsb2cgICAgICB8IGpzb25iX3BhdGhfb3BzIHwgICAgICAgIDcgfCBAPiAgICAgICB8 IGpzb25iICAgICB8IGpzb25iICAgICAgfCBzZWFyY2ggIHwgCisoMSByb3cpCisKK1xkQWZwIGJy aW4gdXVpZF9taW5tYXhfb3BzCisgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIG9w ZXJhdG9yIGZhbWlseSBwcm9jZWR1cmVzCisgIEFNICB8IEZhbWlseSBzY2hlbWEgfCAgIEZhbWls eSBuYW1lICAgfCBOdW1iZXIgfCAgICAgICBQcm9jIG5hbWUgICAgICAgIHwgTGVmdCB8IFJpZ2h0 IAorLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tLS0KKyBicmluIHwgcGdfY2F0YWxvZyAg ICB8IHV1aWRfbWlubWF4X29wcyB8ICAgICAgMSB8IGJyaW5fbWlubWF4X29wY2luZm8gICAgfCB1 dWlkIHwgdXVpZAorIGJyaW4gfCBwZ19jYXRhbG9nICAgIHwgdXVpZF9taW5tYXhfb3BzIHwgICAg ICAyIHwgYnJpbl9taW5tYXhfYWRkX3ZhbHVlICB8IHV1aWQgfCB1dWlkCisgYnJpbiB8IHBnX2Nh dGFsb2cgICAgfCB1dWlkX21pbm1heF9vcHMgfCAgICAgIDMgfCBicmluX21pbm1heF9jb25zaXN0 ZW50IHwgdXVpZCB8IHV1aWQKKyBicmluIHwgcGdfY2F0YWxvZyAgICB8IHV1aWRfbWlubWF4X29w cyB8ICAgICAgNCB8IGJyaW5fbWlubWF4X3VuaW9uICAgICAgfCB1dWlkIHwgdXVpZAorKDQgcm93 cykKKworXGRBZnAgYnJpbiBiYXIKKyAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygb3BlcmF0b3Ig ZmFtaWx5IHByb2NlZHVyZXMKKyBBTSB8IEZhbWlseSBzY2hlbWEgfCBGYW1pbHkgbmFtZSB8IE51 bWJlciB8IFByb2MgbmFtZSB8IExlZnQgfCBSaWdodCAKKy0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tLS0KKygwIHJvd3Mp CisKK1xkQWZwIGZvbyBiYXIKKyAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygb3BlcmF0b3IgZmFt aWx5IHByb2NlZHVyZXMKKyBBTSB8IEZhbWlseSBzY2hlbWEgfCBGYW1pbHkgbmFtZSB8IE51bWJl ciB8IFByb2MgbmFtZSB8IExlZnQgfCBSaWdodCAKKy0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tLS0KKygwIHJvd3MpCisK K1xkQWZwICogcGdfY2F0YWxvZy51dWlkX29wcworICAgICAgICAgICAgICAgICAgICAgICAgTGlz dCBvZiBvcGVyYXRvciBmYW1pbHkgcHJvY2VkdXJlcworICBBTSAgIHwgRmFtaWx5IHNjaGVtYSB8 IEZhbWlseSBuYW1lIHwgTnVtYmVyIHwgICAgIFByb2MgbmFtZSAgICAgIHwgTGVmdCB8IFJpZ2h0 IAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tLQorIGJ0cmVlIHwgcGdfY2F0YWxvZyAgICB8IHV1 aWRfb3BzICAgIHwgICAgICAxIHwgdXVpZF9jbXAgICAgICAgICAgIHwgdXVpZCB8IHV1aWQKKyBi dHJlZSB8IHBnX2NhdGFsb2cgICAgfCB1dWlkX29wcyAgICB8ICAgICAgMiB8IHV1aWRfc29ydHN1 cHBvcnQgICB8IHV1aWQgfCB1dWlkCisgaGFzaCAgfCBwZ19jYXRhbG9nICAgIHwgdXVpZF9vcHMg ICAgfCAgICAgIDEgfCB1dWlkX2hhc2ggICAgICAgICAgfCB1dWlkIHwgdXVpZAorIGhhc2ggIHwg cGdfY2F0YWxvZyAgICB8IHV1aWRfb3BzICAgIHwgICAgICAyIHwgdXVpZF9oYXNoX2V4dGVuZGVk IHwgdXVpZCB8IHV1aWQKKyg0IHJvd3MpCisKK1xkQW9jIGJyaW4gcGcqLm9pZCoKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBhY2Nlc3MgbWV0aG9kIG9wZXJhdG9yIGNs YXNzZXMKKyBBY2Nlc3MgbWV0aG9kIHwgICBTY2hlbWEgICB8ICAgICAgTmFtZSAgICAgIHwgICAg IEZhbWlseSAgICAgfCBJbmRleGVkIHR5cGUgfCBJcyBkZWZhdWx0IHwgU3RvcmVkIHR5cGUgCist LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGJyaW4gICAg ICAgICAgfCBwZ19jYXRhbG9nIHwgb2lkX21pbm1heF9vcHMgfCBvaWRfbWlubWF4X29wcyB8IG9p ZCAgICAgICAgICB8IHQgICAgICAgICAgfCBvaWQKKygxIHJvdykKKworXGRBKworICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcworICBOYW1lICB8IFR5cGUgIHwg ICBIYW5kbGVyICAgfCAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAKKy0t LS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgYnJpbiAgIHwgSW5kZXggfCBicmluaGFuZGxlciB8IGJsb2NrIHJhbmdl IGluZGV4IChCUklOKSBhY2Nlc3MgbWV0aG9kCisgYnRyZWUgIHwgSW5kZXggfCBidGhhbmRsZXIg ICB8IGItdHJlZSBpbmRleCBhY2Nlc3MgbWV0aG9kCisgZ2luICAgIHwgSW5kZXggfCBnaW5oYW5k bGVyICB8IEdJTiBpbmRleCBhY2Nlc3MgbWV0aG9kCisgZ2lzdCAgIHwgSW5kZXggfCBnaXN0aGFu ZGxlciB8IEdpU1QgaW5kZXggYWNjZXNzIG1ldGhvZAorIGhhc2ggICB8IEluZGV4IHwgaGFzaGhh bmRsZXIgfCBoYXNoIGluZGV4IGFjY2VzcyBtZXRob2QKKyBzcGdpc3QgfCBJbmRleCB8IHNwZ2hh bmRsZXIgIHwgU1AtR2lTVCBpbmRleCBhY2Nlc3MgbWV0aG9kCisoNiByb3dzKQorCitcZEErIGdp bgorICAgICAgICAgICAgICAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcworIE5hbWUgfCBUeXBlICB8 ICBIYW5kbGVyICAgfCAgICAgICBEZXNjcmlwdGlvbiAgICAgICAKKy0tLS0tLSstLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgZ2luICB8IEluZGV4IHwgZ2lu aGFuZGxlciB8IEdJTiBpbmRleCBhY2Nlc3MgbWV0aG9kCisoMSByb3cpCisKK1xkQSsgZm9vCisg ICAgICAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcworIE5hbWUgfCBUeXBlIHwgSGFuZGxlciB8IERl c2NyaXB0aW9uIAorLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorKDAgcm93 cykKKworXGRBZisgZm9vCisgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygb3BlcmF0b3Ig ZmFtaWxpZXMKKyBBY2Nlc3MgbWV0aG9kIHwgT3BlcmF0b3IgZmFtaWx5IHNjaGVtYSB8IE9wZXJh dG9yIGZhbWlseSBuYW1lIHwgT3duZXIgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorKDAgcm93cykKKwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW5kZXhpbmcuc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvaW5kZXhpbmcuc3FsCmluZGV4IDI5MzMzYjMuLmY4YTc1MTggMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2luZGV4aW5nLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9pbmRleGluZy5zcWwKQEAgLTcyMCwzICs3MjAsOCBAQCBjcmVhdGUgdW5pcXVlIGluZGV4 IG9uIGNvdmlkeHBhcnQ0IChhKTsKIGFsdGVyIHRhYmxlIGNvdmlkeHBhcnQgYXR0YWNoIHBhcnRp dGlvbiBjb3ZpZHhwYXJ0NCBmb3IgdmFsdWVzIGluICg0KTsKIGluc2VydCBpbnRvIGNvdmlkeHBh cnQgdmFsdWVzICg0LCAxKTsKIGluc2VydCBpbnRvIGNvdmlkeHBhcnQgdmFsdWVzICg0LCAxKTsK KworLS0gVGVzdCBwc3FsIGNvbW1hbmQgZm9yIGRpc3BsYXlpbmcgaW5mb3JtYXRpb24gYWJvdXQg aW5kZXhlcy4KK1xkaXAgYnJpbmlkeAorXGRpY3AgYm90aGFycmF5aWR4IAorXGRpY3AgYm90aGFy cmF5aWR4IHQKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BzcWwuc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcHNxbC5zcWwKaW5kZXggYjQ1ZGE5Yi4uZWM1YTY3MyAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHNxbC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcHNxbC5zcWwKQEAgLTY4OCwzICs2ODgsMjYgQEAgc2VsZWN0IDEvKDE1LXVuaXF1ZTIp IGZyb20gdGVuazEgb3JkZXIgYnkgdW5pcXVlMiBsaW1pdCAxOTsKIFxlY2hvICdsYXN0IGVycm9y IGNvZGU6JyA6TEFTVF9FUlJPUl9TUUxTVEFURQogCiBcdW5zZXQgRkVUQ0hfQ09VTlQKKworLS0g Y2hlY2sgcHJpbnRpbmcgaW5mbyBhYm91dCBhY2Nlc3MgbWV0aG9kcworXGRBCitcZEEgZ2luCitc ZEEgZm9vCitcZEFwIGdpbgorXGRBcCBmb28KK1xkQWYgZ2luCitcZEFmIGZvbworXGRBZm8gYnJp biB1dWlkX21pbm1heF9vcHMKK1xkQWZvIGJyaW4gYmFyCitcZEFmbyBmb28gYmFyCitcZEFmbyAq IHBnX2NhdGFsb2cuanNvbmJfcGF0aF9vcHMKK1xkQWZwIGJyaW4gdXVpZF9taW5tYXhfb3BzCitc ZEFmcCBicmluIGJhcgorXGRBZnAgZm9vIGJhcgorXGRBZnAgKiBwZ19jYXRhbG9nLnV1aWRfb3Bz CitcZEFvYyBicmluIHBnKi5vaWQqCisKK1xkQSsKK1xkQSsgZ2luCitcZEErIGZvbworXGRBZisg Zm9vCi== --=-8mP0Rc3GOE3heXPGDTdt--