Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uyHQ1-0060VM-3L for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Sep 2025 22:11:41 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uyHPw-00Dw5P-RV for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Sep 2025 22:11:25 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uyHPw-00Dw5H-5X for pgsql-hackers@lists.postgresql.org; Mon, 15 Sep 2025 22:11:25 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1uyHPr-0011C9-2v for pgsql-hackers@lists.postgresql.org; Mon, 15 Sep 2025 22:11:24 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1757974280; bh=VTjpcWzWsf3+1kHn3B0qpYb0jdMWLvnQ02X+dKsfKr4=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=zkx77W1PRLGJ0R0zH7N/fVa2V/jrV81rScTVZpNl44XUmwYMPr3O+VDGWWtnBfa+i 7FPUUuJ4aWiFL4xobLBKC7p+MPuU5mFhdbBWQjIINsbXEPcBhmqjRv0pXLAySpZOJz 2dPdJ/XDibs+RL+MWG7Qi+HIf+GadXNpWKHXXiYI5cxA2zkrizNEtmuAJypvvZEHSC d2fmTtp1CRQN4zmCebxLzDpUT/aGG1nCnnuk2AUk9XXhCywySIQM0ebwmFt2o3HR/t rHIhD/qTmNl7xPNUUL5SWhGfyh83tgdW2b/hPy2YcEV5bkQUZenZRUNF3hNupbFtaI tdUJop4jGuzug== Received: from [172.30.48.254] (debian11-template.l.postgrespro.ru [192.168.2.254]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: d.koval@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 3617660349; Tue, 16 Sep 2025 01:11:20 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------3aMN0a2uxJJ9HeqkpWUHm7LY" Message-ID: <2643645f-2a02-43de-9321-c995ab1b7ef8@postgrespro.ru> Date: Tue, 16 Sep 2025 01:11:19 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Add SPLIT PARTITION/MERGE PARTITIONS commands To: Alexander Korotkov Cc: pgsql-hackers@lists.postgresql.org References: <171085360143.2046436.7217841141682511557.pgcf@coridan.postgresql.org> <195b67ee-ef41-4451-9396-844442eef1a4@postgrespro.ru> Content-Language: en-US From: Dmitry Koval In-Reply-To: X-KSMG-AntiPhishing: NotDetected, bases: 2025/09/15 21:55:00 X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2025/09/15 18:32:00 #27822147 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------3aMN0a2uxJJ9HeqkpWUHm7LY Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi Alexander. Thanks for the notes and corrections! 1) src/backend/parser/parse_utilcmd.c includes are not alphabetically ordered here +#include "partitioning/partdesc.h" +#include "partitioning/partbounds.h" Fixed. 2) There is unicode dash in the comment of ATExecMergePartitions() here. I suggest we should stick to ascii. + /* + * Check ownership of merged partitions — partitions with different + * owners cannot be merged. Also, collect the OIDs of these partitions + * during the check. + */ Fixed. 3) Regarding 17bcf4f545, I see btnamecmp() is collation-aware. Should we also specify COLLATE "C" every time we do "ORDER BY relname"? Queries changed. 4) This comment sounds misleading. Probably it should say "are contained". +/* + * check_parent_values_in_new_partitions + * + * (function for BY LIST partitioning) + * + * Checks that all values of split partition (with Oid partOid) contains in new + * partitions. + * Changed. 5) Given what latter items say, I think the 1. should say "The DEFAULT partition must be at most one." /* * check_partitions_for_split * * Checks new partitions for SPLIT PARTITIONS command: * 1. DEFAULT partition should be one. Corrected. 6) Regarding the isolation tests. I see we are exercising INSERTs and intra-partition UPDATEs. Should we also try some cross-partition UPDATEs? Added simple tests for cross-partition UPDATE. 7) Additionally, I've made a numerous and small fixes for grammar to the docs directly to the patchset. Thanks, applied. -- With best regards, Dmitry Koval Postgres Professional: http://postgrespro.com --------------3aMN0a2uxJJ9HeqkpWUHm7LY Content-Type: text/plain; charset=UTF-8; name="v56-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.patch" Content-Disposition: attachment; filename*0="v56-0001-Implement-ALTER-TABLE-.-MERGE-PARTITIONS-.-comma.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA4NWQ4NjgyYmQ2NzY5NGI1NjNkNTRmNTc4ZTUwZThmYTNiM2E2MTQxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU3OjIyICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NTYgMS8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIE1FUkdF IFBBUlRJVElPTlMgLi4uCiBjb21tYW5kCgpUaGlzIG5ldyBEREwgY29tbWFuZCBtZXJnZXMg c2V2ZXJhbCBwYXJ0aXRpb25zIGludG8gdGhlIG9uZSBwYXJ0aXRpb24gb2YgdGhlCnRhcmdl dCB0YWJsZS4gIFRoZSB0YXJnZXQgcGFydGl0aW9uIGlzIGNyZWF0ZWQgdXNpbmcgbmV3CmNy ZWF0ZVBhcnRpdGlvblRhYmxlKCkgZnVuY3Rpb24gd2l0aCBwYXJlbnQgcGFydGl0aW9uIGFz IHRoZSB0ZW1wbGF0ZS4KClRoaXMgY29tbWl0IGNvbXByaXNlcyBxdWl0ZSBuYWl2ZSBpbXBs ZW1lbnRhdGlvbiB3aGljaCB3b3JrcyBpbiBzaW5nbGUgcHJvY2VzcwphbmQgaG9sZHMgdGhl IEFDQ0VTUyBFWENMVVNJVkUgTE9DSyBvbiB0aGUgcGFyZW50IHRhYmxlIGR1cmluZyBhbGwg dGhlCm9wZXJhdGlvbnMgaW5jbHVkaW5nIHRoZSB0dXBsZSByb3V0aW5nLiAgVGhpcyBpcyB3 aHkgdGhpcyBuZXcgRERMIGNvbW1hbmQKY2FuJ3QgYmUgcmVjb21tZW5kZWQgZm9yIGxhcmdl IHBhcnRpdGlvbmVkIHRhYmxlcyB1bmRlciBhIGhpZ2ggbG9hZC4gIEhvd2V2ZXIsCnRoaXMg aW1wbGVtZW50YXRpb24gY29tZSBpbiBoYW5keSBpbiBjZXJ0YWluIGNhc2VzIGV2ZW4gYXMg aXMuCkFsc28sIGl0IGNvdWxkIGJlIHVzZWQgYXMgYSBmb3VuZGF0aW9uIGZvciBmdXR1cmUg aW1wbGVtZW50YXRpb25zIHdpdGggbGVzc2VyCmxvY2tpbmcgYW5kIHBvc3NpYmx5IHBhcmFs bGVsLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9jNzNhMTc0Ni0wY2QwLTZi ZGQtNmIyMy0zYWUwYjdjMGM1ODIlNDBwb3N0Z3Jlc3Byby5ydQpBdXRob3I6IERtaXRyeSBL b3ZhbApSZXZpZXdlZC1ieTogTWF0dGhpYXMgdmFuIGRlIE1lZW50LCBMYXVyZW56IEFsYmUs IFpoaWhvbmcgWXUsIEp1c3RpbiBQcnl6YnkKUmV2aWV3ZWQtYnk6IEFsdmFybyBIZXJyZXJh LCBSb2JlcnQgSGFhcywgU3RlcGhhbmUgVGFjaG9pcmVzLCBKaWFuIEhlCgpGaXhlcyAoc3Vt bWFyeSBpbmZvcm1hdGlvbikuCkF1dGhvcnM6IEFsZXhhbmRlciBLb3JvdGtvdiwgVGVuZGVy IFdhbmcsIFJpY2hhcmQgR3VvLCBEYWdmaW5uIElsbWFyaSBNYW5uc2FrZXIKQXV0aG9yczog RnVqaWkgTWFzYW8sIEppYW4gSGUKUmV2aWV3ZWQtYnk6IEFsZXhhbmRlciBLb3JvdGtvdiwg Um9iZXJ0IEhhYXMsIEp1c3RpbiBQcnl6YnksIFBhdmVsIEJvcmlzb3YKUmV2aWV3ZWQtYnk6 IE1hc2FoaWtvIFNhd2FkYQpSZXBvcnRlZC1ieTogQWxleGFuZGVyIExha2hpbiwgSnVzdGlu IFByeXpieSwgS3lvdGFybyBIb3JpZ3VjaGkKUmVwb3J0ZWQtYnk6IERhbmllbCBHdXN0YWZz c29uLCBUb20gTGFuZSwgTm9haCBNaXNjaAotLS0KIGRvYy9zcmMvc2dtbC9kZGwuc2dtbCAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTkgKwogZG9jL3NyYy9zZ21sL3JlZi9hbHRl cl90YWJsZS5zZ21sICAgICAgICAgICAgIHwgIDEyNCArLQogc3JjL2JhY2tlbmQvY2F0YWxv Zy9kZXBlbmRlbmN5LmMgICAgICAgICAgICAgIHwgICA1MCArCiBzcmMvYmFja2VuZC9jYXRh bG9nL3BnX2NvbnN0cmFpbnQuYyAgICAgICAgICAgfCAgICAyICstCiBzcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgOTAxICsrKysrKysrKysrKyst CiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgIDIy ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAgICAgfCAg MTQ2ICsrKwogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyAgICAgICAg IHwgIDE5NiArKysKIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAg ICAgICB8ICAgMTAgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggICAgICAg ICAgICAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAg ICAgICAgICAgfCAgICA4ICstCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggICAgICAg ICAgICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91 bmRzLmggICAgICAgICB8ICAgIDYgKwogLi4uL2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRp b24tbWVyZ2Uub3V0ICAgIHwgIDI0MyArKysrCiBzcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0 aW9uX3NjaGVkdWxlICAgICAgICAgfCAgICAxICsKIHNyYy90ZXN0L2lzb2xhdGlvbi9zcGVj cy9wYXJ0aXRpb24tbWVyZ2Uuc3BlYyB8ICAgNjIgKwogLi4uL3Rlc3RfZGRsX2RlcGFyc2Uv ZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0IHwgICAgNSArCiAuLi4vdGVzdF9kZGxfZGVwYXJz ZS9zcWwvYWx0ZXJfdGFibGUuc3FsICAgICAgfCAgICAzICsKIC4uLi90ZXN0X2RkbF9kZXBh cnNlL3Rlc3RfZGRsX2RlcGFyc2UuYyAgICAgICB8ICAgIDMgKwogc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0IHwgMTA5NyArKysrKysrKysrKysrKysr Kwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAg MiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdlLnNxbCAgICAgIHwg IDc5MSArKysrKysrKysrKysKIDIyIGZpbGVzIGNoYW5nZWQsIDM2NjggaW5zZXJ0aW9ucygr KSwgMjYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0 aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1tZXJnZS5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLW1lcmdlLnNwZWMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9tZXJnZS5v dXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25f bWVyZ2Uuc3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sIGIvZG9jL3Ny Yy9zZ21sL2RkbC5zZ21sCmluZGV4IDY1YmMwNzBkMmUuLmRkYjEzNzZhNmUgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwK QEAgLTQ0NTAsNiArNDQ1MCwyNSBAQCBBTFRFUiBUQUJMRSBtZWFzdXJlbWVudF95MjAwNm0w MiBBREQgVU5JUVVFIChjaXR5X2lkLCBsb2dkYXRlKTsKIEFMVEVSIElOREVYIG1lYXN1cmVt ZW50X2NpdHlfaWRfbG9nZGF0ZV9rZXkKICAgICBBVFRBQ0ggUEFSVElUSU9OIG1lYXN1cmVt ZW50X3kyMDA2bTAyX2NpdHlfaWRfbG9nZGF0ZV9rZXk7CiAuLi4KKzwvcHJvZ3JhbWxpc3Rp bmc+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFRoZXJlIGlzIGFsc28gYW4g b3B0aW9uIGZvciBtZXJnaW5nIG11bHRpcGxlIHRhYmxlIHBhcnRpdGlvbnMgaW50bworICAg ICBhIHNpbmdsZSBwYXJ0aXRpb24gdXNpbmcgdGhlCisgICAgIDxsaW5rIGxpbmtlbmQ9InNx bC1hbHRlcnRhYmxlLW1lcmdlLXBhcnRpdGlvbnMiPjxjb21tYW5kPkFMVEVSIFRBQkxFIC4u LiBNRVJHRSBQQVJUSVRJT05TPC9jb21tYW5kPjwvbGluaz4uCisgICAgIFRoaXMgZmVhdHVy ZSBzaW1wbGlmaWVzIHRoZSBtYW5hZ2VtZW50IG9mIHBhcnRpdGlvbmVkIHRhYmxlcyBieSBh bGxvd2luZworICAgICB1c2VycyB0byBjb21iaW5lIHBhcnRpdGlvbnMgdGhhdCBhcmUgbm8g bG9uZ2VyIG5lZWRlZCBhcworICAgICBzZXBhcmF0ZSBlbnRpdGllcy4gIEl0J3MgaW1wb3J0 YW50IHRvIG5vdGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBpcyBub3QKKyAgICAgc3VwcG9ydGVk IGZvciBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlcyBhbmQgYWNxdWlyZXMgYW4KKyAgICAgPGxp dGVyYWw+QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jaywgd2hpY2ggY291bGQgaW1w YWN0IGhpZ2gtbG9hZAorICAgICBzeXN0ZW1zIGR1ZSB0byB0aGUgbG9jaydzIHJlc3RyaWN0 aXZlIG5hdHVyZS4gIEZvciBleGFtcGxlLCB3ZSBjYW4KKyAgICAgbWVyZ2UgdGhyZWUgbW9u dGhseSBwYXJ0aXRpb25zIGludG8gb25lIHF1YXJ0ZXIgcGFydGl0aW9uOgorPHByb2dyYW1s aXN0aW5nPgorQUxURVIgVEFCTEUgbWVhc3VyZW1lbnQKKyAgICBNRVJHRSBQQVJUSVRJT05T IChtZWFzdXJlbWVudF95MjAwNm0wMSwKKyAgICAgICAgICAgICAgICAgICAgICBtZWFzdXJl bWVudF95MjAwNm0wMiwKKyAgICAgICAgICAgICAgICAgICAgICBtZWFzdXJlbWVudF95MjAw Nm0wMykgSU5UTyBtZWFzdXJlbWVudF95MjAwNnExOwogPC9wcm9ncmFtbGlzdGluZz4KICAg ICA8L3BhcmE+CiAgICA8L3NlY3QzPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9h bHRlcl90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCmlu ZGV4IDg4NjdkYTZjNjkuLjVhYzFmNWM0MjMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWYvYWx0ZXJfdGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxl LnNnbWwKQEAgLTM3LDYgKzM3LDggQEAgQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgQVRU QUNIIFBBUlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9u X25hbWU8L3JlcGxhY2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxU IH0KIEFMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIERFVEFDSCBQQVJUSVRJT04gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4g WyBDT05DVVJSRU5UTFkgfCBGSU5BTElaRSBdCitBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBd IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KKyAg ICBNRVJHRSBQQVJUSVRJT05TICg8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy dGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5dKSBJTlRPIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+ CiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFjdGlv bjwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIApAQCAtMTE1OSwxOCArMTE2 MSwxMTQgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgog ICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRh YmxlLW1lcmdlLXBhcnRpdGlvbnMiPgorICAgIDx0ZXJtPjxsaXRlcmFsPk1FUkdFIFBBUlRJ VElPTlMgKDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8 L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlv bl9uYW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl0pIElOVE8gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+PC90 ZXJtPgorCisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgZm9ybSBt ZXJnZXMgc2V2ZXJhbCBwYXJ0aXRpb25zIG9mIHRoZSB0YXJnZXQgdGFibGUgaW50byBhIG5l dyBwYXJ0aXRpb24uCisgICAgICBIYXNoLXBhcnRpdGlvbmVkIHRhcmdldCB0YWJsZSBpcyBu b3Qgc3VwcG9ydGVkLgorICAgICAgSWYgdGhlIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+ IHBhcnRpdGlvbiBpcyBub3QgaW4gdGhlCisgICAgICBsaXN0IG9mIHBhcnRpdGlvbnMgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVwbGFjZWFi bGU+LAorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lMjwvcmVwbGFjZWFibGU+IFssIC4uLl06CisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAg ICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBGb3IgcmFuZ2UtcGFy dGl0aW9uZWQgdGFibGVzLCB0aGUgcmFuZ2VzIG9mIHRoZSBwYXJ0aXRpb25zCisgICAgICAg ICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBs YWNlYWJsZT4sCisgICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy dGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4sIFsuLi5dCisgICAgICAgICBtdXN0IGJlIGFk amFjZW50IGluIG9yZGVyIHRvIGJlIG1lcmdlZC4gT3RoZXJ3aXNlLCBhbiBlcnJvciB3aWxs IGJlCisgICAgICAgICByYWlzZWQuIFRoZSByZXN1bHRpbmcgY29tYmluZWQgcmFuZ2Ugd2ls bCBiZSB0aGUgbmV3IHBhcnRpdGlvbiBib3VuZAorICAgICAgICAgZm9yIHRoZSBwYXJ0aXRp b24gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBs YWNlYWJsZT4uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAg IDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBGb3IgbGlzdC1wYXJ0aXRp b25lZCB0YWJsZXMsIHRoZSBwYXJ0aXRpb24gYm91bmRzIG9mCisgICAgICAgICA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4s CisgICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25h bWUyPC9yZXBsYWNlYWJsZT4sIFsuLi5dCisgICAgICAgICBhcmUgY29tYmluZWQgdG8gZm9y bSB0aGUgbmV3IHBhcnRpdGlvbiBib3VuZCBmb3IKKyAgICAgICAgIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+LgorICAgICAg ICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0Pgor ICAgICAgSWYgdGhlIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiBpcyBp biB0aGUgbGlzdCBvZiBwYXJ0aXRpb25zIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiwKKyAgICAgIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5d OgorICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxw YXJhPgorICAgICAgICAgVGhlIHBhcnRpdGlvbiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgd2lsbCBiZSB0 aGUgbmV3IDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IHBhcnRpdGlvbiBvZiB0aGUgdGFy Z2V0IHRhYmxlLgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIHBhcnRpdGlvbiBi b3VuZCBzcGVjaWZpY2F0aW9ucyBmb3IgYWxsIHBhcnRpdGlvbnMtCisgICAgICAgICA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJs ZT4sCisgICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9u X25hbWUyPC9yZXBsYWNlYWJsZT4sIFsuLi5dCisgICAgICAgICBjYW4gYmUgYXJiaXRyYXJ5 LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6 ZWRsaXN0PgorICAgICAgVGhlIG5ldyBwYXJ0aXRpb24gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgIGNhbiBoYXZl IHRoZSBzYW1lIG5hbWUgYXMgb25lIG9mIHRoZSBtZXJnZWQgcGFydGl0aW9ucy4gT25seSBz aW1wbGUsCisgICAgICBub24tcGFydGl0aW9uZWQgcGFydGl0aW9ucyBjYW4gYmUgbWVyZ2Vk LgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgSWYgbWVyZ2VkIHBhcnRpdGlv bnMgaGF2ZSBkaWZmZXJlbnQgb3duZXJzLCBhbiBlcnJvciB3aWxsIGJlIGdlbmVyYXRlZC4K KyAgICAgIFRoZSBvd25lciBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlvbnMgd2lsbCBiZSB0aGUg b3duZXIgb2YgdGhlIG5ldyBwYXJ0aXRpb24uCisgICAgICBJdCBpcyB0aGUgdXNlcidzIHJl c3BvbnNpYmlsaXR5IHRvIHNldHVwIDxhY3JvbnltPkFDTDwvYWNyb255bT4gb24gdGhlCisg ICAgICBuZXcgcGFydGl0aW9uLgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAg VGhlIGluZGV4ZXMgYW5kIGlkZW50aXR5IGFyZSBjcmVhdGVkIGxhdGVyLCBhZnRlciBtb3Zp bmcgdGhlIGRhdGEKKyAgICAgIGludG8gdGhlIG5ldyBwYXJ0aXRpb24uCisgICAgICBFeHRl bmRlZCBzdGF0aXN0aWNzIGFyZW4ndCBjb3BpZWQgZnJvbSB0aGUgcGFyZW50IHRhYmxlLCBm b3IgY29uc2lzdGVuY3kgd2l0aAorICAgICAgPGNvbW1hbmQ+Q1JFQVRFIFRBQkxFIFBBUlRJ VElPTiBPRjwvY29tbWFuZD4uCisgICAgICBUaGUgbmV3IHBhcnRpdGlvbiB3aWxsIGluaGVy aXQgdGhlIHNhbWUgdGFibGUgYWNjZXNzIG1ldGhvZCwgcGVyc2lzdGVuY2UKKyAgICAgIHR5 cGUsIGFuZCB0YWJsZXNwYWNlIGFzIHRoZSBwYXJlbnQgdGFibGUuCisgICAgIDwvcGFyYT4K KyAgICAgPHBhcmE+CisgICAgICBXaGVuIHBhcnRpdGlvbnMgYXJlIG1lcmdlZCwgYW55IGlu ZGl2aWR1YWwgb2JqZWN0cyBiZWxvbmdpbmcgdG8gdGhvc2UKKyAgICAgIHBhcnRpdGlvbnMs IHN1Y2ggYXMgY29uc3RyYWludHMgb3Igc3RhdGlzdGljcywgd2lsbCBiZSBkcm9wcGVkLiBU aGlzIG9jY3VycworICAgICAgYmVjYXVzZSA8Y29tbWFuZD5BTFRFUiBUQUJMRSBNRVJHRSBQ QVJUSVRJT05TPC9jb21tYW5kPiB1c2VzIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBpdHNlbGYg YXMgdGhlCisgICAgICB0ZW1wbGF0ZSB0byBkZWZpbmUgdGhlc2Ugb2JqZWN0cy4KKyAgICAg PC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIElmIG1lcmdlZCBwYXJ0aXRpb25zIGhhdmUg c29tZSBvYmplY3RzIGRlcGVuZGVudCBvbiB0aGVtLCB0aGUgY29tbWFuZCBjYW4KKyAgICAg IG5vdCBiZSBkb25lICg8bGl0ZXJhbD5DQVNDQURFPC9saXRlcmFsPiBpcyBub3QgdXNlZCwg YW5kIGFuIGVycm9yIHdpbGwKKyAgICAgIGJlIHJldHVybmVkKS4KKyAgICAgPC9wYXJhPgor ICAgICA8bm90ZT4KKyAgICAgIDxwYXJhPgorICAgICAgIE1lcmdpbmcgcGFydGl0aW9ucyBh Y3F1aXJlcyBhbiA8bGl0ZXJhbD5BQ0NFU1MgRVhDTFVTSVZFPC9saXRlcmFsPiBsb2NrIG9u CisgICAgICAgdGhlIHBhcmVudCB0YWJsZSwgaW4gYWRkaXRpb24gdG8gdGhlIDxsaXRlcmFs PkFDQ0VTUyBFWENMVVNJVkU8L2xpdGVyYWw+CisgICAgICAgbG9ja3Mgb24gdGhlIHRhYmxl cyBiZWluZyBtZXJnZWQgYW5kIG9uIHRoZSBkZWZhdWx0IHBhcnRpdGlvbiAoaWYgYW55KS4K KyAgICAgIDwvcGFyYT4KKyAgICAgPC9ub3RlPgorICAgICA8bm90ZT4KKyAgICAgIDxwYXJh PgorICAgICAgIDxjb21tYW5kPkFMVEVSIFRBQkxFIE1FUkdFIFBBUlRJVElPTlM8L2NvbW1h bmQ+IGNyZWF0ZXMgYSBuZXcgcGFydGl0aW9uIGFuZAorICAgICAgIG1vdmVzIGRhdGEgZnJv bSBhbGwgbWVyZ2luZyBwYXJ0aXRpb25zIGludG8gaXQsIHdoaWNoIGNhbiB0YWtlIGEgbG9u ZyB0aW1lLgorICAgICAgIFNvIGl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byB1c2UgdGhlIGNv bW1hbmQgdG8gbWVyZ2UgdmVyeSBiaWcgcGFydGl0aW9ucworICAgICAgIHdpdGggc21hbGwg b25lcy4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9ub3RlPgorICAgIDwvbGlzdGl0ZW0+Cisg ICA8L3Zhcmxpc3RlbnRyeT4KKwogICA8L3ZhcmlhYmxlbGlzdD4KICAgPC9wYXJhPgogCiAg IDxwYXJhPgogICAgQWxsIHRoZSBmb3JtcyBvZiA8Y29tbWFuZD5BTFRFUiBUQUJMRTwvY29t bWFuZD4gdGhhdCBhY3Qgb24gYSBzaW5nbGUgdGFibGUsCiAgICBleGNlcHQgPGxpdGVyYWw+ UkVOQU1FPC9saXRlcmFsPiwgPGxpdGVyYWw+U0VUIFNDSEVNQTwvbGl0ZXJhbD4sCi0gICA8 bGl0ZXJhbD5BVFRBQ0ggUEFSVElUSU9OPC9saXRlcmFsPiwgYW5kCi0gICA8bGl0ZXJhbD5E RVRBQ0ggUEFSVElUSU9OPC9saXRlcmFsPiBjYW4gYmUgY29tYmluZWQgaW50bworICAgPGxp dGVyYWw+QVRUQUNIIFBBUlRJVElPTjwvbGl0ZXJhbD4sIDxsaXRlcmFsPkRFVEFDSCBQQVJU SVRJT048L2xpdGVyYWw+LAorICAgYW5kIDxsaXRlcmFsPk1FUkdFIFBBUlRJVElPTlM8L2xp dGVyYWw+LCBjYW4gYmUgY29tYmluZWQgaW50bwogICAgYSBsaXN0IG9mIG11bHRpcGxlIGFs dGVyYXRpb25zIHRvIGJlIGFwcGxpZWQgdG9nZXRoZXIuICBGb3IgZXhhbXBsZSwgaXQKICAg IGlzIHBvc3NpYmxlIHRvIGFkZCBzZXZlcmFsIGNvbHVtbnMgYW5kL29yIGFsdGVyIHRoZSB0 eXBlIG9mIHNldmVyYWwKICAgIGNvbHVtbnMgaW4gYSBzaW5nbGUgY29tbWFuZC4gIFRoaXMg aXMgcGFydGljdWxhcmx5IHVzZWZ1bCB3aXRoIGxhcmdlCi0gICB0YWJsZXMsIHNpbmNlIG9u bHkgb25lIHBhc3Mgb3ZlciB0aGUgdGFibGUgbmVlZCBiZSBtYWRlLgorICAgdGFibGVzLCBz aW5jZSBvbmx5IG9uZSBwYXNzIG92ZXIgdGhlIHRhYmxlIG5lZWRzIHRvIGJlIG1hZGUuCiAg IDwvcGFyYT4KIAogICA8cGFyYT4KQEAgLTE0MDksNyArMTUwNywxOCBAQCBXSVRIICggTU9E VUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9y ZXBsYWNlYWJsZT4sIFJFTQogICAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CiAgICAgICA8bGlz dGl0ZW0+CiAgICAgICAgPHBhcmE+Ci0gICAgICAgIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSB0 byBhdHRhY2ggYXMgYSBuZXcgcGFydGl0aW9uIG9yIHRvIGRldGFjaCBmcm9tIHRoaXMgdGFi bGUuCisgICAgICAgIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSB0byBhdHRhY2ggYXMgYSBuZXcg cGFydGl0aW9uIG9yIHRvIGRldGFjaCBmcm9tIHRoaXMgdGFibGUsCisgICAgICAgIG9yIHRo ZSBuYW1lIG9mIHRoZSBuZXcgbWVyZ2VkIHBhcnRpdGlvbi4KKyAgICAgICA8L3BhcmE+Cisg ICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICA8dmFybGlz dGVudHJ5IGlkPSJzcWwtYWx0ZXJ0YWJsZS1wYXJtcy1wYXJ0aXRpb24tbmFtZTEiPgorICAg ICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1l MTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAg ICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgbmFtZXMgb2YgdGhl IHRhYmxlcyBiZWluZyBtZXJnZWQgaW50byB0aGUgbmV3IHBhcnRpdGlvbi4KICAgICAgICA8 L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTE4 NDIsNiArMTk1MSwxMyBAQCBBTFRFUiBUQUJMRSBtZWFzdXJlbWVudAogICAgIERFVEFDSCBQ QVJUSVRJT04gbWVhc3VyZW1lbnRfeTIwMTVtMTI7CiA8L3Byb2dyYW1saXN0aW5nPjwvcGFy YT4KIAorICA8cGFyYT4KKyAgIFRvIG1lcmdlIHNldmVyYWwgcGFydGl0aW9ucyBpbnRvIG9u ZSBwYXJ0aXRpb24gb2YgdGhlIHRhcmdldCB0YWJsZToKKzxwcm9ncmFtbGlzdGluZz4KK0FM VEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2Fs ZXNfZWFzdCwgc2FsZXNfY2VudHJhbCkKKyAgICBJTlRPIHNhbGVzX2FsbDsKKzwvcHJvZ3Jh bWxpc3Rpbmc+PC9wYXJhPgorCiAgPC9yZWZzZWN0MT4KIAogIDxyZWZzZWN0MT4KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9kZXBlbmRlbmN5LmMKaW5kZXggN2RkZWQ2MzRlYi4uZjA2OWE0NmE4MyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKKysrIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKQEAgLTMxOSw2ICszMTksNTYgQEAgcGVyZm9y bURlbGV0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKIAl0YWJsZV9jbG9zZShk ZXBSZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwogfQogCisvKgorICogcGVyZm9ybURlbGV0aW9u Q2hlY2s6IENoZWNrIHdoZXRoZXIgYSBzcGVjaWZpYyBvYmplY3QgY2FuIGJlIHNhZmVseSBk ZWxldGVkLgorICogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBwZXJmb3JtIGFueSBkZWxldGlv bjsgaW5zdGVhZCwgaXQgcmFpc2VzIGFuIGVycm9yCisgKiBpZiB0aGUgb2JqZWN0IGNhbm5v dCBiZSBkZWxldGVkIGR1ZSB0byBleGlzdGluZyBkZXBlbmRlbmNpZXMuCisgKgorICogSXQg Y2FuIGJlIHVzZWZ1bCB3aGVuIHlvdSBuZWVkIGRlbGV0ZSBzb21lIG9iamVjdHMgbGF0ZXIu ICBTZWUgY29tbWVudHMgaW4KKyAqIHBlcmZvcm1EZWxldGlvbiB0b28uCisgKiBUaGUgYmVo YXZpb3IgbXVzdCBzcGVjaWZpZWQgYXMgRFJPUF9SRVNUUklDVC4KKyAqLwordm9pZAorcGVy Zm9ybURlbGV0aW9uQ2hlY2soY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAorCQkJCQkg RHJvcEJlaGF2aW9yIGJlaGF2aW9yLCBpbnQgZmxhZ3MpCit7CisJUmVsYXRpb24JZGVwUmVs OworCU9iamVjdEFkZHJlc3NlcyAqdGFyZ2V0T2JqZWN0czsKKworCUFzc2VydChiZWhhdmlv ciA9PSBEUk9QX1JFU1RSSUNUKTsKKworCWRlcFJlbCA9IHRhYmxlX29wZW4oRGVwZW5kUmVs YXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlBY3F1aXJlRGVsZXRpb25Mb2NrKG9i amVjdCwgMCk7CisKKwkvKgorCSAqIENvbnN0cnVjdCBhIGxpc3Qgb2Ygb2JqZWN0cyB3ZSB3 YW50IGRlbGV0ZSBsYXRlciAoaWUsIHRoZSBnaXZlbiBvYmplY3QKKwkgKiBwbHVzIGV2ZXJ5 dGhpbmcgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBkZXBlbmRlbnQgb24gaXQpLgorCSAqLwor CXRhcmdldE9iamVjdHMgPSBuZXdfb2JqZWN0X2FkZHJlc3NlcygpOworCisJZmluZERlcGVu ZGVudE9iamVjdHMob2JqZWN0LAorCQkJCQkJIERFUEZMQUdfT1JJR0lOQUwsCisJCQkJCQkg ZmxhZ3MsCisJCQkJCQkgTlVMTCwJLyogZW1wdHkgc3RhY2sgKi8KKwkJCQkJCSB0YXJnZXRP YmplY3RzLAorCQkJCQkJIE5VTEwsCS8qIG5vIHBlbmRpbmdPYmplY3RzICovCisJCQkJCQkg JmRlcFJlbCk7CisKKwkvKgorCSAqIENoZWNrIGlmIGRlbGV0aW9uIGlzIGFsbG93ZWQuCisJ ICovCisJcmVwb3J0RGVwZW5kZW50T2JqZWN0cyh0YXJnZXRPYmplY3RzLAorCQkJCQkJICAg YmVoYXZpb3IsCisJCQkJCQkgICBmbGFncywKKwkJCQkJCSAgIG9iamVjdCk7CisKKwkvKiBB bmQgY2xlYW4gdXAgKi8KKwlmcmVlX29iamVjdF9hZGRyZXNzZXModGFyZ2V0T2JqZWN0cyk7 CisKKwl0YWJsZV9jbG9zZShkZXBSZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOworfQorCiAvKgog ICogcGVyZm9ybU11bHRpcGxlRGVsZXRpb25zOiBTaW1pbGFyIHRvIHBlcmZvcm1EZWxldGlv biwgYnV0IGFjdCBvbiBtdWx0aXBsZQogICogb2JqZWN0cyBhdCBvbmNlLgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX2NvbnN0cmFpbnQuYwppbmRleCA2MDAyZmQwMDAyLi5lZjg4ODJjYmNkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYworKysgYi9z cmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYwpAQCAtODc1LDcgKzg3NSw3IEBA IFJlbGF0aW9uR2V0Tm90TnVsbENvbnN0cmFpbnRzKE9pZCByZWxpZCwgYm9vbCBjb29rZWQs IGJvb2wgaW5jbHVkZV9ub2luaCkKIAkJCQkJCQkJCQkJCQkJCSBmYWxzZSkpKTsKIAkJCWNv bnN0ci0+aXNfZW5mb3JjZWQgPSB0cnVlOwogCQkJY29uc3RyLT5za2lwX3ZhbGlkYXRpb24g PSAhY29uRm9ybS0+Y29udmFsaWRhdGVkOwotCQkJY29uc3RyLT5pbml0aWFsbHlfdmFsaWQg PSB0cnVlOworCQkJY29uc3RyLT5pbml0aWFsbHlfdmFsaWQgPSBjb25Gb3JtLT5jb252YWxp ZGF0ZWQ7CiAJCQljb25zdHItPmlzX25vX2luaGVyaXQgPSBjb25Gb3JtLT5jb25ub2luaGVy aXQ7CiAJCQlub3RudWxscyA9IGxhcHBlbmQobm90bnVsbHMsIGNvbnN0cik7CiAJCX0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggM2JlMmUwNTFkMy4uZTc5MTUyYWRhYyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTc0MSw2ICs3NDEsOCBAQCBzdGF0 aWMgdm9pZCBBVERldGFjaENoZWNrTm9Gb3JlaWduS2V5UmVmcyhSZWxhdGlvbiBwYXJ0aXRp b24pOwogc3RhdGljIGNoYXIgR2V0QXR0cmlidXRlQ29tcHJlc3Npb24oT2lkIGF0dHR5cGlk LCBjb25zdCBjaGFyICpjb21wcmVzc2lvbik7CiBzdGF0aWMgY2hhciBHZXRBdHRyaWJ1dGVT dG9yYWdlKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqc3RvcmFnZW1vZGUpOwogCitzdGF0 aWMgdm9pZCBBVEV4ZWNNZXJnZVBhcnRpdGlvbnMoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRh YmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCisJCQkJCQkJCSAgUGFydGl0aW9uQ21kICpj bWQsIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7CiAKIC8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAqCQlEZWZpbmVSZWxhdGlvbgpAQCAtNDgzNyw2ICs0ODM5LDEwIEBAIEFsdGVyVGFi bGVHZXRMb2NrTGV2ZWwoTGlzdCAqY21kcykKIAkJCQljbWRfbG9ja21vZGUgPSBTaGFyZVVw ZGF0ZUV4Y2x1c2l2ZUxvY2s7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgQVRfTWVyZ2VQYXJ0 aXRpb25zOgorCQkJCWNtZF9sb2NrbW9kZSA9IEFjY2Vzc0V4Y2x1c2l2ZUxvY2s7CisJCQkJ YnJlYWs7CisKIAkJCWRlZmF1bHQ6CQkJLyogb29wcyAqLwogCQkJCWVsb2coRVJST1IsICJ1 bnJlY29nbml6ZWQgYWx0ZXIgdGFibGUgdHlwZTogJWQiLAogCQkJCQkgKGludCkgY21kLT5z dWJ0eXBlKTsKQEAgLTUyNzIsNiArNTI3OCwxMSBAQCBBVFByZXBDbWQoTGlzdCAqKndxdWV1 ZSwgUmVsYXRpb24gcmVsLCBBbHRlclRhYmxlQ21kICpjbWQsCiAJCQkvKiBObyBjb21tYW5k LXNwZWNpZmljIHByZXAgbmVlZGVkICovCiAJCQlwYXNzID0gQVRfUEFTU19NSVNDOwogCQkJ YnJlYWs7CisJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJQVRTaW1wbGVQZXJtaXNz aW9ucyhjbWQtPnN1YnR5cGUsIHJlbCwgQVRUX1BBUlRJVElPTkVEX1RBQkxFKTsKKwkJCS8q IE5vIGNvbW1hbmQtc3BlY2lmaWMgcHJlcCBuZWVkZWQgKi8KKwkJCXBhc3MgPSBBVF9QQVNT X01JU0M7CisJCQlicmVhazsKIAkJZGVmYXVsdDoJCQkJLyogb29wcyAqLwogCQkJZWxvZyhF UlJPUiwgInVucmVjb2duaXplZCBhbHRlciB0YWJsZSB0eXBlOiAlZCIsCiAJCQkJIChpbnQp IGNtZC0+c3VidHlwZSk7CkBAIC01NjY4LDYgKzU2NzksMTQgQEAgQVRFeGVjQ21kKExpc3Qg Kip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJY2FzZSBBVF9EZXRhY2hQYXJ0 aXRpb25GaW5hbGl6ZToKIAkJCWFkZHJlc3MgPSBBVEV4ZWNEZXRhY2hQYXJ0aXRpb25GaW5h bGl6ZShyZWwsICgoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmKS0+bmFtZSk7CiAJCQlicmVh azsKKwkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CisJCQljbWQgPSBBVFBhcnNlVHJhbnNm b3JtQ21kKHdxdWV1ZSwgdGFiLCByZWwsIGNtZCwgZmFsc2UsIGxvY2ttb2RlLAorCQkJCQkJ CQkJICBjdXJfcGFzcywgY29udGV4dCk7CisJCQlBc3NlcnQoY21kICE9IE5VTEwpOworCQkJ QXNzZXJ0KHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFC TEUpOworCQkJQVRFeGVjTWVyZ2VQYXJ0aXRpb25zKHdxdWV1ZSwgdGFiLCByZWwsIChQYXJ0 aXRpb25DbWQgKikgY21kLT5kZWYsCisJCQkJCQkJCSAgY29udGV4dCk7CisJCQlicmVhazsK IAkJZGVmYXVsdDoJCQkJLyogb29wcyAqLwogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXpl ZCBhbHRlciB0YWJsZSB0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGNtZC0+c3VidHlwZSk7CkBA IC02NzA4LDYgKzY3MjcsOCBAQCBhbHRlcl90YWJsZV90eXBlX3RvX3N0cmluZyhBbHRlclRh YmxlVHlwZSBjbWR0eXBlKQogCQkJcmV0dXJuICJERVRBQ0ggUEFSVElUSU9OIjsKIAkJY2Fz ZSBBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZToKIAkJCXJldHVybiAiREVUQUNIIFBBUlRJ VElPTiAuLi4gRklOQUxJWkUiOworCQljYXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJCXJl dHVybiAiTUVSR0UgUEFSVElUSU9OUyI7CiAJCWNhc2UgQVRfQWRkSWRlbnRpdHk6CiAJCQly ZXR1cm4gIkFMVEVSIENPTFVNTiAuLi4gQUREIElERU5USVRZIjsKIAkJY2FzZSBBVF9TZXRJ ZGVudGl0eToKQEAgLTIwMTk3LDYgKzIwMjE4LDM3IEBAIFF1ZXVlUGFydGl0aW9uQ29uc3Ry YWludFZhbGlkYXRpb24oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gc2NhbnJlbCwKIAl9CiB9 CiAKKy8qCisgKiBhdHRhY2hQYXJ0aXRpb25UYWJsZTogYXR0YWNoIGEgbmV3IHBhcnRpdGlv biB0byB0aGUgcGFydGl0aW9uZWQgdGFibGUKKyAqCisgKiB3cXVldWU6IHRoZSBBTFRFUiBU QUJMRSB3b3JrIHF1ZXVlOyBjYW4gYmUgTlVMTCB3aGVuIG5vdCBydW5uaW5nIGFzIHBhcnQK KyAqICAgb2YgYW4gQUxURVIgVEFCTEUgc2VxdWVuY2UuCisgKiByZWw6IHBhcnRpdGlvbmVk IHJlbGF0aW9uOworICogYXR0YWNocmVsOiByZWxhdGlvbiBvZiBhdHRhY2hlZCBwYXJ0aXRp b247CisgKiBib3VuZDogYm91bmRzIG9mIGF0dGFjaGVkIHJlbGF0aW9uLgorICovCitzdGF0 aWMgdm9pZAorYXR0YWNoUGFydGl0aW9uVGFibGUoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24g cmVsLCBSZWxhdGlvbiBhdHRhY2hyZWwsIFBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQpCit7 CisJLyogT0sgdG8gY3JlYXRlIGluaGVyaXRhbmNlLiAgUmVzdCBvZiB0aGUgY2hlY2tzIHBl cmZvcm1lZCB0aGVyZSAqLworCUNyZWF0ZUluaGVyaXRhbmNlKGF0dGFjaHJlbCwgcmVsLCB0 cnVlKTsKKworCS8qIFVwZGF0ZSB0aGUgcGdfY2xhc3MgZW50cnkuICovCisJU3RvcmVQYXJ0 aXRpb25Cb3VuZChhdHRhY2hyZWwsIHJlbCwgYm91bmQpOworCisJLyogRW5zdXJlIHRoZXJl IGV4aXN0cyBhIGNvcnJlY3Qgc2V0IG9mIGluZGV4ZXMgaW4gdGhlIHBhcnRpdGlvbi4gKi8K KwlBdHRhY2hQYXJ0aXRpb25FbnN1cmVJbmRleGVzKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwp OworCisJLyogYW5kIHRyaWdnZXJzICovCisJQ2xvbmVSb3dUcmlnZ2Vyc1RvUGFydGl0aW9u KHJlbCwgYXR0YWNocmVsKTsKKworCS8qCisJICogQ2xvbmUgZm9yZWlnbiBrZXkgY29uc3Ry YWludHMuICBDYWxsZWUgaXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAKKwkgKiBmb3Ig cGhhc2UgMyBjb25zdHJhaW50IHZlcmlmaWNhdGlvbi4KKwkgKi8KKwlDbG9uZUZvcmVpZ25L ZXlDb25zdHJhaW50cyh3cXVldWUsIHJlbCwgYXR0YWNocmVsKTsKK30KKwogLyoKICAqIEFM VEVSIFRBQkxFIDxuYW1lPiBBVFRBQ0ggUEFSVElUSU9OIDxwYXJ0aXRpb24tbmFtZT4gRk9S IFZBTFVFUwogICoKQEAgLTIwMzk4LDIzICsyMDQ1MCw4IEBAIEFURXhlY0F0dGFjaFBhcnRp dGlvbihMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIFBhcnRpdGlvbkNtZCAqY21kLAog CWNoZWNrX25ld19wYXJ0aXRpb25fYm91bmQoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoYXR0 YWNocmVsKSwgcmVsLAogCQkJCQkJCSAgY21kLT5ib3VuZCwgcHN0YXRlKTsKIAotCS8qIE9L IHRvIGNyZWF0ZSBpbmhlcml0YW5jZS4gIFJlc3Qgb2YgdGhlIGNoZWNrcyBwZXJmb3JtZWQg dGhlcmUgKi8KLQlDcmVhdGVJbmhlcml0YW5jZShhdHRhY2hyZWwsIHJlbCwgdHJ1ZSk7Ci0K LQkvKiBVcGRhdGUgdGhlIHBnX2NsYXNzIGVudHJ5LiAqLwotCVN0b3JlUGFydGl0aW9uQm91 bmQoYXR0YWNocmVsLCByZWwsIGNtZC0+Ym91bmQpOwotCi0JLyogRW5zdXJlIHRoZXJlIGV4 aXN0cyBhIGNvcnJlY3Qgc2V0IG9mIGluZGV4ZXMgaW4gdGhlIHBhcnRpdGlvbi4gKi8KLQlB dHRhY2hQYXJ0aXRpb25FbnN1cmVJbmRleGVzKHdxdWV1ZSwgcmVsLCBhdHRhY2hyZWwpOwot Ci0JLyogYW5kIHRyaWdnZXJzICovCi0JQ2xvbmVSb3dUcmlnZ2Vyc1RvUGFydGl0aW9uKHJl bCwgYXR0YWNocmVsKTsKLQotCS8qCi0JICogQ2xvbmUgZm9yZWlnbiBrZXkgY29uc3RyYWlu dHMuICBDYWxsZWUgaXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAKLQkgKiBmb3IgcGhh c2UgMyBjb25zdHJhaW50IHZlcmlmaWNhdGlvbi4KLQkgKi8KLQlDbG9uZUZvcmVpZ25LZXlD b25zdHJhaW50cyh3cXVldWUsIHJlbCwgYXR0YWNocmVsKTsKKwkvKiBBdHRhY2ggYSBuZXcg cGFydGl0aW9uIHRvIHRoZSBwYXJ0aXRpb25lZCB0YWJsZS4gKi8KKwlhdHRhY2hQYXJ0aXRp b25UYWJsZSh3cXVldWUsIHJlbCwgYXR0YWNocmVsLCBjbWQtPmJvdW5kKTsKIAogCS8qCiAJ ICogR2VuZXJhdGUgcGFydGl0aW9uIGNvbnN0cmFpbnQgZnJvbSB0aGUgcGFydGl0aW9uIGJv dW5kIHNwZWNpZmljYXRpb24uCkBAIC0yMjA2MiwzICsyMjA5OSw4MzMgQEAgR2V0QXR0cmli dXRlU3RvcmFnZShPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKnN0b3JhZ2Vtb2RlKQogCiAJ cmV0dXJuIGNzdG9yYWdlOwogfQorCisKKy8qCisgKiBidWlsZEV4cHJlc3Npb25FeGVjdXRp b25TdGF0ZXM6IGJ1aWxkIHRoZSBuZWVkZWQgZXhwcmVzc2lvbiBleGVjdXRpb24gc3RhdGVz CisgKiBmb3IgbmV3IHBhcnRpdGlvbiAobmV3UGFydFJlbCkgY2hlY2tzIGFuZCBpbml0aWFs aXplIGV4cHJlc3Npb25zIGZvcgorICogZ2VuZXJhdGVkIGNvbHVtbnMuIEFsbCBleHByZXNz aW9ucyBzaG91bGQgYmUgY3JlYXRlZCBpbiAidGFiIgorICogKEFsdGVyZWRUYWJsZUluZm8g c3RydWN0dXJlKS4KKyAqLworc3RhdGljIHZvaWQKK2J1aWxkRXhwcmVzc2lvbkV4ZWN1dGlv blN0YXRlcyhBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIG5ld1BhcnRSZWwsIEVT dGF0ZSAqZXN0YXRlKQoreworCS8qCisJICogQnVpbGQgdGhlIG5lZWRlZCBleHByZXNzaW9u IGV4ZWN1dGlvbiBzdGF0ZXMuIEhlcmUsIHdlIGV4cGVjdCBvbmx5IE5PVAorCSAqIE5VTEwg YW5kIENIRUNLIGNvbnN0cmFpbnQuCisJICovCisJZm9yZWFjaF9wdHIoTmV3Q29uc3RyYWlu dCwgY29uLCB0YWItPmNvbnN0cmFpbnRzKQorCXsKKwkJc3dpdGNoIChjb24tPmNvbnR5cGUp CisJCXsKKwkJCWNhc2UgQ09OU1RSX0NIRUNLOgorCisJCQkJLyoKKwkJCQkgKiBXZSBhbHJl YWR5IGV4cGFuZGVkIHZpcnR1YWwgZXhwcmVzc2lvbiBpbgorCQkJCSAqIGNyZWF0ZVRhYmxl Q29uc3RyYWludHMuCisJCQkJICovCisJCQkJY29uLT5xdWFsc3RhdGUgPSBFeGVjUHJlcGFy ZUV4cHIoKEV4cHIgKikgY29uLT5xdWFsLCBlc3RhdGUpOworCQkJCWJyZWFrOworCQkJY2Fz ZSBDT05TVFJfTk9UTlVMTDoKKwkJCQkvKiBOb3RoaW5nIHRvIGRvIGhlcmUuICovCisJCQkJ YnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgY29u c3RyYWludCB0eXBlOiAlZCIsCisJCQkJCSAoaW50KSBjb24tPmNvbnR5cGUpOworCQl9CisJ fQorCisJLyogRXhwcmVzc2lvbiBhbHJlYWR5IHBsYW5uZWQgaW4gY3JlYXRlVGFibGVDb25z dHJhaW50cyAqLworCWZvcmVhY2hfcHRyKE5ld0NvbHVtblZhbHVlLCBleCwgdGFiLT5uZXd2 YWxzKQorCQlleC0+ZXhwcnN0YXRlID0gRXhlY0luaXRFeHByKChFeHByICopIGV4LT5leHBy LCBOVUxMKTsKK30KKworLyoKKyAqIGV2YWx1YXRlR2VuZXJhdGVkRXhwcmVzc2lvbnNBbmRD aGVja0NvbnN0cmFpbnRzOiBldmFsdWF0ZSBhbnkgZ2VuZXJhdGVkCisgKiBleHByZXNzaW9u cyBmb3IgInRhYiIgKEFsdGVyZWRUYWJsZUluZm8gc3RydWN0dXJlKSB3aG9zZSBpbnB1dHMg Y29tZSBmcm9tCisgKiB0aGUgbmV3IHR1cGxlIChpbnNlcnRzbG90KSBvZiBuZXcgcGFydGl0 aW9uIChuZXdQYXJ0UmVsKS4KKyAqLworc3RhdGljIHZvaWQKK2V2YWx1YXRlR2VuZXJhdGVk RXhwcmVzc2lvbnNBbmRDaGVja0NvbnN0cmFpbnRzKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwK KwkJCQkJCQkJCQkJCVJlbGF0aW9uIG5ld1BhcnRSZWwsCisJCQkJCQkJCQkJCQlUdXBsZVRh YmxlU2xvdCAqaW5zZXJ0c2xvdCwKKwkJCQkJCQkJCQkJCUV4cHJDb250ZXh0ICplY29udGV4 dCkKK3sKKwllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBpbnNlcnRzbG90OworCisJZm9y ZWFjaF9wdHIoTmV3Q29sdW1uVmFsdWUsIGV4LCB0YWItPm5ld3ZhbHMpCisJeworCQlpZiAo IWV4LT5pc19nZW5lcmF0ZWQpCisJCQljb250aW51ZTsKKworCQlpbnNlcnRzbG90LT50dHNf dmFsdWVzW2V4LT5hdHRudW0gLSAxXQorCQkJPSBFeGVjRXZhbEV4cHIoZXgtPmV4cHJzdGF0 ZSwKKwkJCQkJCSAgIGVjb250ZXh0LAorCQkJCQkJICAgJmluc2VydHNsb3QtPnR0c19pc251 bGxbZXgtPmF0dG51bSAtIDFdKTsKKwl9CisKKwlmb3JlYWNoX3B0cihOZXdDb25zdHJhaW50 LCBjb24sIHRhYi0+Y29uc3RyYWludHMpCisJeworCQlzd2l0Y2ggKGNvbi0+Y29udHlwZSkK KwkJeworCQkJY2FzZSBDT05TVFJfQ0hFQ0s6CisJCQkJaWYgKCFFeGVjQ2hlY2soY29uLT5x dWFsc3RhdGUsIGVjb250ZXh0KSkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJj b2RlKEVSUkNPREVfQ0hFQ0tfVklPTEFUSU9OKSwKKwkJCQkJCQllcnJtc2coImNoZWNrIGNv bnN0cmFpbnQgXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBpcyB2aW9sYXRlZCBieSBzb21l IHJvdyIsCisJCQkJCQkJCSAgIGNvbi0+bmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo bmV3UGFydFJlbCkpLAorCQkJCQkJCWVycnRhYmxlY29uc3RyYWludChuZXdQYXJ0UmVsLCBj b24tPm5hbWUpKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgQ09OU1RSX05PVE5VTEw6CisJCQlj YXNlIENPTlNUUl9GT1JFSUdOOgorCQkJCS8qIE5vdGhpbmcgdG8gZG8gaGVyZSAqLworCQkJ CWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGNv bnN0cmFpbnQgdHlwZTogJWQiLAorCQkJCQkgKGludCkgY29uLT5jb250eXBlKTsKKwkJfQor CX0KK30KKworLyoKKyAqIGdldEF0dHJpYnV0ZXNMaXN0OiBidWlsZCBhIGxpc3Qgb2YgY29s dW1ucyAoQ29sdW1uRGVmKSBiYXNlZCBvbiBwYXJlbnRfcmVsCisgKi8KK3N0YXRpYyBMaXN0 ICoKK2dldEF0dHJpYnV0ZXNMaXN0KFJlbGF0aW9uIHBhcmVudF9yZWwpCit7CisJQXR0ck51 bWJlcglwYXJlbnRfYXR0bm87CisJVHVwbGVEZXNjCW1vZGVsRGVzYzsKKwlMaXN0CSAgICpj b2xMaXN0ID0gTklMOworCisJbW9kZWxEZXNjID0gUmVsYXRpb25HZXREZXNjcihwYXJlbnRf cmVsKTsKKworCWZvciAocGFyZW50X2F0dG5vID0gMTsgcGFyZW50X2F0dG5vIDw9IG1vZGVs RGVzYy0+bmF0dHM7CisJCSBwYXJlbnRfYXR0bm8rKykKKwl7CisJCUZvcm1fcGdfYXR0cmli dXRlIGF0dHJpYnV0ZSA9IFR1cGxlRGVzY0F0dHIobW9kZWxEZXNjLAorCQkJCQkJCQkJCQkJ CXBhcmVudF9hdHRubyAtIDEpOworCQlDb2x1bW5EZWYgICpkZWY7CisKKwkJLyogSWdub3Jl IGRyb3BwZWQgY29sdW1ucyBpbiB0aGUgcGFyZW50LiAqLworCQlpZiAoYXR0cmlidXRlLT5h dHRpc2Ryb3BwZWQpCisJCQljb250aW51ZTsKKworCQlkZWYgPSBtYWtlQ29sdW1uRGVmKE5h bWVTdHIoYXR0cmlidXRlLT5hdHRuYW1lKSwgYXR0cmlidXRlLT5hdHR0eXBpZCwKKwkJCQkJ CQlhdHRyaWJ1dGUtPmF0dHR5cG1vZCwgYXR0cmlidXRlLT5hdHRjb2xsYXRpb24pOworCisJ CWRlZi0+aXNfbm90X251bGwgPSBhdHRyaWJ1dGUtPmF0dG5vdG51bGw7CisKKwkJLyogQ29w eSBpZGVudGl0eS4gKi8KKwkJZGVmLT5pZGVudGl0eSA9IGF0dHJpYnV0ZS0+YXR0aWRlbnRp dHk7CisKKwkJLyogQ29weSBhdHRnZW5lcmF0ZWQuICovCisJCWRlZi0+Z2VuZXJhdGVkID0g YXR0cmlidXRlLT5hdHRnZW5lcmF0ZWQ7CisKKwkJZGVmLT5zdG9yYWdlID0gYXR0cmlidXRl LT5hdHRzdG9yYWdlOworCisJCS8qIExpa2V3aXNlLCBjb3B5IGNvbXByZXNzaW9uLiAqLwor CQlpZiAoQ29tcHJlc3Npb25NZXRob2RJc1ZhbGlkKGF0dHJpYnV0ZS0+YXR0Y29tcHJlc3Np b24pKQorCQkJZGVmLT5jb21wcmVzc2lvbiA9CisJCQkJcHN0cmR1cChHZXRDb21wcmVzc2lv bk1ldGhvZE5hbWUoYXR0cmlidXRlLT5hdHRjb21wcmVzc2lvbikpOworCQllbHNlCisJCQlk ZWYtPmNvbXByZXNzaW9uID0gTlVMTDsKKworCQkvKiBBZGQgdG8gY29sdW1uIGxpc3QuICov CisJCWNvbExpc3QgPSBsYXBwZW5kKGNvbExpc3QsIGRlZik7CisJfQorCisJcmV0dXJuIGNv bExpc3Q7Cit9CisKKworLyoKKyAqIGNyZWF0ZVRhYmxlQ29uc3RyYWludHM6CisgKiBjcmVh dGUgY2hlY2sgY29uc3RyYWludHMsIGRlZmF1bHQgdmFsdWVzIGFuZCBnZW5lcmF0ZWQgdmFs dWVzIGZvciBuZXdSZWwKKyAqIGJhc2VkIG9uIHBhcmVudF9yZWwuICB0YWIgaXMgcGVuZGlu Zy13b3JrIHF1ZXVlIGZvciBuZXdSZWwsIHdlIG1heSBuZWVkIGl0IGluCisgKiBNZXJnZVBh cnRpdGlvbnNNb3ZlUm93cy4KKyAqLworc3RhdGljIHZvaWQKK2NyZWF0ZVRhYmxlQ29uc3Ry YWludHMoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAorCQkJCQkgICBS ZWxhdGlvbiBwYXJlbnRfcmVsLCBSZWxhdGlvbiBuZXdSZWwpCit7CisJVHVwbGVEZXNjCXR1 cGxlRGVzYzsKKwlUdXBsZUNvbnN0ciAqY29uc3RyOworCUF0dHJNYXAgICAgKmF0dG1hcDsK KwlBdHRyTnVtYmVyCXBhcmVudF9hdHRubzsKKwlpbnQJCQljY251bTsKKwlMaXN0CSAgICpD b25zdHJhaW50cyA9IE5JTDsKKwlMaXN0CSAgICpjb29rZWRDb25zdHJhaW50cyA9IE5JTDsK KworCXR1cGxlRGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocGFyZW50X3JlbCk7CisJY29uc3Ry ID0gdHVwbGVEZXNjLT5jb25zdHI7CisKKwlpZiAoIWNvbnN0cikKKwkJcmV0dXJuOworCisJ LyoKKwkgKiBDb25zdHJ1Y3QgYSBtYXAgZnJvbSB0aGUgcGFyZW50IHJlbGF0aW9uJ3MgYXR0 bm9zIHRvIHRoZSBjaGlsZCByZWwncy4KKwkgKiBUaGlzIHJlLWNoZWNrcyB0eXBlIG1hdGNo IGV0YywgYWx0aG91Z2ggaXQgc2hvdWxkbid0IGJlIHBvc3NpYmxlIHRvCisJICogaGF2ZSBh IGZhaWx1cmUgc2luY2UgYm90aCB0YWJsZXMgYXJlIGxvY2tlZC4KKwkgKi8KKwlhdHRtYXAg PSBidWlsZF9hdHRybWFwX2J5X25hbWUoUmVsYXRpb25HZXREZXNjcihuZXdSZWwpLAorCQkJ CQkJCQkgICB0dXBsZURlc2MsCisJCQkJCQkJCSAgIGZhbHNlKTsKKworCS8qIEN5Y2xlIGZv ciBkZWZhdWx0IHZhbHVlcy4gKi8KKwlmb3IgKHBhcmVudF9hdHRubyA9IDE7IHBhcmVudF9h dHRubyA8PSB0dXBsZURlc2MtPm5hdHRzOyBwYXJlbnRfYXR0bm8rKykKKwl7CisJCUZvcm1f cGdfYXR0cmlidXRlIGF0dHJpYnV0ZSA9IFR1cGxlRGVzY0F0dHIodHVwbGVEZXNjLAorCQkJ CQkJCQkJCQkJCXBhcmVudF9hdHRubyAtIDEpOworCisJCS8qIElnbm9yZSBkcm9wcGVkIGNv bHVtbnMgaW4gdGhlIHBhcmVudC4gKi8KKwkJaWYgKGF0dHJpYnV0ZS0+YXR0aXNkcm9wcGVk KQorCQkJY29udGludWU7CisKKwkJLyogQ29weSBkZWZhdWx0LCBpZiBwcmVzZW50IGFuZCBp dCBzaG91bGQgYmUgY29waWVkLiAqLworCQlpZiAoYXR0cmlidXRlLT5hdHRoYXNkZWYpCisJ CXsKKwkJCU5vZGUJICAgKnRoaXNfZGVmYXVsdCA9IE5VTEw7CisJCQlib29sCQlmb3VuZF93 aG9sZV9yb3c7CisJCQlBdHRyTnVtYmVyCW51bTsKKwkJCU5vZGUJICAgKmRlZjsKKwkJCU5l d0NvbHVtblZhbHVlICpuZXd2YWw7CisKKwkJCWlmIChhdHRyaWJ1dGUtPmF0dGdlbmVyYXRl ZCA9PSBBVFRSSUJVVEVfR0VORVJBVEVEX1ZJUlRVQUwpCisJCQkJdGhpc19kZWZhdWx0ID0g YnVpbGRfZ2VuZXJhdGlvbl9leHByZXNzaW9uKHBhcmVudF9yZWwsIGF0dHJpYnV0ZS0+YXR0 bnVtKTsKKwkJCWVsc2UKKwkJCXsKKwkJCQl0aGlzX2RlZmF1bHQgPSBUdXBsZURlc2NHZXRE ZWZhdWx0KHR1cGxlRGVzYywgYXR0cmlidXRlLT5hdHRudW0pOworCQkJCWlmICh0aGlzX2Rl ZmF1bHQgPT0gTlVMTCkKKwkJCQkJZWxvZyhFUlJPUiwgImRlZmF1bHQgZXhwcmVzc2lvbiBu b3QgZm91bmQgZm9yIGF0dHJpYnV0ZSAlZCBvZiByZWxhdGlvbiBcIiVzXCIiLAorCQkJCQkJ IGF0dHJpYnV0ZS0+YXR0bnVtLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJlbnRfcmVs KSk7CisJCQl9CisKKwkJCW51bSA9IGF0dG1hcC0+YXR0bnVtc1twYXJlbnRfYXR0bm8gLSAx XTsKKwkJCWRlZiA9IG1hcF92YXJpYWJsZV9hdHRub3ModGhpc19kZWZhdWx0LCAxLCAwLCBh dHRtYXAsIEludmFsaWRPaWQsICZmb3VuZF93aG9sZV9yb3cpOworCisJCQlpZiAoZm91bmRf d2hvbGVfcm93ICYmIGF0dHJpYnV0ZS0+YXR0Z2VuZXJhdGVkICE9ICdcMCcpCisJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAorCQkJCQkJZXJybXNnKCJjYW5ub3QgY29udmVydCB3aG9sZS1yb3cgdGFibGUgcmVm ZXJlbmNlIiksCisJCQkJCQllcnJkZXRhaWwoIkdlbmVyYXRpb24gZXhwcmVzc2lvbiBmb3Ig Y29sdW1uIFwiJXNcIiBjb250YWlucyBhIHdob2xlLXJvdyByZWZlcmVuY2UgdG8gdGFibGUg XCIlc1wiLiIsCisJCQkJCQkJCSAgTmFtZVN0cihhdHRyaWJ1dGUtPmF0dG5hbWUpLAorCQkJ CQkJCQkgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcmVudF9yZWwpKSk7CisKKwkJCS8q IEFkZCBhIHByZS1jb29rZWQgZGVmYXVsdCBleHByZXNzaW9uLiAqLworCQkJU3RvcmVBdHRy RGVmYXVsdChuZXdSZWwsIG51bSwgZGVmLCB0cnVlKTsKKworCQkJLyoKKwkJCSAqIFN0b3Jl ZCBnZW5lcmF0ZWQgY29sdW1uIGV4cHJlc3Npb25zIGluIHBhcmVudF9yZWwgbWlnaHQKKwkJ CSAqIHJlZmVyZW5jZSB0YWJsZW9pZC4gIG5ld1JlbCwgcGFyZW50X3JlbCB0YWJsZW9pZCBj bGVhciBpcyBub3QKKwkJCSAqIHRoZSBzYW1lLiBJZiBzbywgdGhlc2Ugc3RvcmVkIGdlbmVy YXRlZCBjb2x1bW5zIHJlcXVpcmUKKwkJCSAqIHJlY29tcHV0YXRpb24gZm9yIG5ld1JlbCB3 aXRoaW4gTWVyZ2VQYXJ0aXRpb25zTW92ZVJvd3MuCisJCQkgKi8KKwkJCWlmIChhdHRyaWJ1 dGUtPmF0dGdlbmVyYXRlZCA9PSBBVFRSSUJVVEVfR0VORVJBVEVEX1NUT1JFRCkKKwkJCXsK KwkJCQluZXd2YWwgPSAoTmV3Q29sdW1uVmFsdWUgKikgcGFsbG9jMChzaXplb2YoTmV3Q29s dW1uVmFsdWUpKTsKKwkJCQluZXd2YWwtPmF0dG51bSA9IG51bTsKKwkJCQluZXd2YWwtPmV4 cHIgPSBleHByZXNzaW9uX3BsYW5uZXIoKEV4cHIgKikgZGVmKTsKKwkJCQluZXd2YWwtPmlz X2dlbmVyYXRlZCA9IChhdHRyaWJ1dGUtPmF0dGdlbmVyYXRlZCAhPSAnXDAnKTsKKwkJCQl0 YWItPm5ld3ZhbHMgPSBsYXBwZW5kKHRhYi0+bmV3dmFscywgbmV3dmFsKTsKKwkJCX0KKwkJ fQorCX0KKworCS8qIEN5Y2xlIGZvciBDSEVDSyBjb25zdHJhaW50cy4gKi8KKwlmb3IgKGNj bnVtID0gMDsgY2NudW0gPCBjb25zdHItPm51bV9jaGVjazsgY2NudW0rKykKKwl7CisJCWNo YXIJICAgKmNjbmFtZSA9IGNvbnN0ci0+Y2hlY2tbY2NudW1dLmNjbmFtZTsKKwkJY2hhcgkg ICAqY2NiaW4gPSBjb25zdHItPmNoZWNrW2NjbnVtXS5jY2JpbjsKKwkJYm9vbAkJY2NlbmZv cmNlZCA9IGNvbnN0ci0+Y2hlY2tbY2NudW1dLmNjZW5mb3JjZWQ7CisJCWJvb2wJCWNjbm9p bmhlcml0ID0gY29uc3RyLT5jaGVja1tjY251bV0uY2Nub2luaGVyaXQ7CisJCWJvb2wJCWNj dmFsaWQgPSBjb25zdHItPmNoZWNrW2NjbnVtXS5jY3ZhbGlkOworCQlOb2RlCSAgICpjY2Jp bl9ub2RlOworCQlib29sCQlmb3VuZF93aG9sZV9yb3c7CisJCUNvbnN0cmFpbnQgKmNvbnN0 cjsKKworCQkvKgorCQkgKiBQYXJ0aXRpb25lZCB0YWJsZSBjYW4gbm90IGhhdmUgTk8gSU5I RVJJVCBjaGVjayBjb25zdHJhaW50IChzZWUKKwkJICogU3RvcmVSZWxDaGVjayBmdW5jdGlv bikuCisJCSAqLworCQlBc3NlcnQoIWNjbm9pbmhlcml0KTsKKworCQljY2Jpbl9ub2RlID0g bWFwX3ZhcmlhYmxlX2F0dG5vcyhzdHJpbmdUb05vZGUoY2NiaW4pLAorCQkJCQkJCQkJCSAx LCAwLAorCQkJCQkJCQkJCSBhdHRtYXAsCisJCQkJCQkJCQkJIEludmFsaWRPaWQsICZmb3Vu ZF93aG9sZV9yb3cpOworCisJCS8qCisJCSAqIEZvciB0aGUgbW9tZW50IHdlIGhhdmUgdG8g cmVqZWN0IHdob2xlLXJvdyB2YXJpYWJsZXMgKGFzIGZvciBMSUtFCisJCSAqIGFuZCBpbmhl cml0YW5jZXMpLgorCQkgKi8KKwkJaWYgKGZvdW5kX3dob2xlX3JvdykKKwkJCWVsb2coRVJS T1IsICJDb25zdHJhaW50IFwiJXNcIiBjb250YWlucyBhIHdob2xlLXJvdyByZWZlcmVuY2Ug dG8gdGFibGUgXCIlc1wiLiIsCisJCQkJIGNjbmFtZSwKKwkJCQkgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUocGFyZW50X3JlbCkpOworCisJCWNvbnN0ciA9IG1ha2VOb2RlKENvbnN0cmFp bnQpOworCQljb25zdHItPmNvbnR5cGUgPSBDT05TVFJfQ0hFQ0s7CisJCWNvbnN0ci0+Y29u bmFtZSA9IHBzdHJkdXAoY2NuYW1lKTsKKwkJY29uc3RyLT5kZWZlcnJhYmxlID0gZmFsc2U7 CisJCWNvbnN0ci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCWNvbnN0ci0+aXNfZW5mb3Jj ZWQgPSBjY2VuZm9yY2VkOworCQljb25zdHItPnNraXBfdmFsaWRhdGlvbiA9ICFjY3ZhbGlk OworCQljb25zdHItPmluaXRpYWxseV92YWxpZCA9IGNjdmFsaWQ7CisJCWNvbnN0ci0+aXNf bm9faW5oZXJpdCA9IGNjbm9pbmhlcml0OworCQljb25zdHItPnJhd19leHByID0gTlVMTDsK KwkJY29uc3RyLT5jb29rZWRfZXhwciA9IG5vZGVUb1N0cmluZyhjY2Jpbl9ub2RlKTsKKwkJ Y29uc3RyLT5sb2NhdGlvbiA9IC0xOworCQlDb25zdHJhaW50cyA9IGxhcHBlbmQoQ29uc3Ry YWludHMsIGNvbnN0cik7CisJfQorCisJLyogaW5zdGFsbCBhbGwgQ0hFQ0sgY29uc3RyYWlu dHMuICovCisJY29va2VkQ29uc3RyYWludHMgPSBBZGRSZWxhdGlvbk5ld0NvbnN0cmFpbnRz KG5ld1JlbCwgTklMLCBDb25zdHJhaW50cywKKwkJCQkJCQkJCQkJCSAgZmFsc2UsIHRydWUs IHRydWUsIE5VTEwpOworCisJLyogTWFrZSB0aGUgYWRkaXRpb25hbCBjYXRhbG9nIGNoYW5n ZXMgdmlzaWJsZSAqLworCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisKKwkvKgorCSAq IHBhcmVudF9yZWwgY2hlY2sgY29uc3RyYWludCBleHByZXNzc2lvbiBtYXkgcmVmZXJlbmNl IHRhYmxlb2lkLCBzbworCSAqIGxhdGVyIGluIE1lcmdlUGFydGl0aW9uc01vdmVSb3dzLCB3 ZSBuZWVkIGV2dWxhdGUgdGhlIGNoZWNrIGNvbnN0cmFpbnQKKwkgKiBhZ2FpbiBmb3IgdGhl IG5ld1JlbC4gV2UgY2FuIGNoZWNrIHdlYXRoZXIgY2hlY2sgY29uc3RyYWludCBjb250YWlu CisJICogdGFibGVvaWQgcmVmZXJlbmNlIG9yIG5vdCB2aWEgcHVsbF92YXJhdHRub3MuCisJ ICovCisJZm9yZWFjaF9wdHIoQ29va2VkQ29uc3RyYWludCwgY2NvbiwgY29va2VkQ29uc3Ry YWludHMpCisJeworCQlpZiAoIWNjb24tPnNraXBfdmFsaWRhdGlvbikKKwkJeworCQkJTm9k ZQkgICAqcXVhbDsKKwkJCUJpdG1hcHNldCAgKmF0dG51bXMgPSBOVUxMOworCisJCQlBc3Nl cnQoY2Nvbi0+Y29udHlwZSA9PSBDT05TVFJfQ0hFQ0spOworCQkJcXVhbCA9IGV4cGFuZF9n ZW5lcmF0ZWRfY29sdW1uc19pbl9leHByKGNjb24tPmV4cHIsIG5ld1JlbCwgMSk7CisJCQlw dWxsX3ZhcmF0dG5vcyhxdWFsLCAxLCAmYXR0bnVtcyk7CisKKwkJCS8qCisJCQkgKiBBZGQg Y2hlY2sgb25seSBpZiBpdCBjb250YWlucyB0YWJsZW9pZAorCQkJICogKFRhYmxlT2lkQXR0 cmlidXRlTnVtYmVyKS4KKwkJCSAqLworCQkJaWYgKGJtc19pc19tZW1iZXIoVGFibGVPaWRB dHRyaWJ1dGVOdW1iZXIgLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAor CQkJCQkJCSAgYXR0bnVtcykpCisJCQl7CisJCQkJTmV3Q29uc3RyYWludCAqbmV3Y29uOwor CisJCQkJbmV3Y29uID0gKE5ld0NvbnN0cmFpbnQgKikgcGFsbG9jMChzaXplb2YoTmV3Q29u c3RyYWludCkpOworCQkJCW5ld2Nvbi0+bmFtZSA9IGNjb24tPm5hbWU7CisJCQkJbmV3Y29u LT5jb250eXBlID0gQ09OU1RSX0NIRUNLOworCQkJCW5ld2Nvbi0+cXVhbCA9IHF1YWw7CisK KwkJCQl0YWItPmNvbnN0cmFpbnRzID0gbGFwcGVuZCh0YWItPmNvbnN0cmFpbnRzLCBuZXdj b24pOworCQkJfQorCQl9CisJfQorCisJLyogRG9uJ3QgbmVlZCB0aGUgY29va2VkQ29uc3Ry YWludHMgYW55IG1vcmUuICovCisJbGlzdF9mcmVlX2RlZXAoY29va2VkQ29uc3RyYWludHMp OworCisJLyogUmVwcm9kdWNlIG5vdC1udWxsIGNvbnN0cmFpbnRzLiAqLworCWlmIChjb25z dHItPmhhc19ub3RfbnVsbCkKKwl7CisJCUxpc3QJICAgKm5uY29uc3RyYWludHM7CisKKwkJ LyoKKwkJICogVGhlICJpbmNsdWRlX25vaW5oIiBhcmd1bWVudCBpcyBmYWxzZSBiZWNhdXNl IGEgcGFydGl0aW9uZWQgdGFibGUKKwkJICogY2Fubm90IGhhdmUgTk8gSU5IRVJJVCBjb25z dHJhaW50LgorCQkgKi8KKwkJbm5jb25zdHJhaW50cyA9IFJlbGF0aW9uR2V0Tm90TnVsbENv bnN0cmFpbnRzKFJlbGF0aW9uR2V0UmVsaWQocGFyZW50X3JlbCksCisJCQkJCQkJCQkJCQkJ ICBmYWxzZSwgZmFsc2UpOworCisJCUFzc2VydChsaXN0X2xlbmd0aChubmNvbnN0cmFpbnRz KSA+IDApOworCisJCS8qCisJCSAqIFdlIGFscmVhZHkgc2V0IHBnX2F0dHJpYnV0ZS5hdHRu b3RudWxsIGluIGNyZWF0ZVBhcnRpdGlvblRhYmxlLiBObworCQkgKiBuZWVkIGNhbGwgc2V0 X2F0dG5vdG51bGwgYWdhaW4uCisJCSAqLworCQlBZGRSZWxhdGlvbk5ld0NvbnN0cmFpbnRz KG5ld1JlbCwgTklMLCBubmNvbnN0cmFpbnRzLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgTlVMTCk7 CisJfQorfQorCisKKy8qCisgKiBjcmVhdGVQYXJ0aXRpb25UYWJsZToKKyAqCisgKiBDcmVh dGUgYSBuZXcgcGFydGl0aW9uIChuZXdQYXJ0TmFtZSkgZm9yIHBhcnRpdGlvbmVkIHRhYmxl IChwYXJlbnRfcmVsKS4KKyAqIG93bmVySWQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgcGFydGl0 aW9uIG9uIHdoaWNoIHRoZSBvcGVyYXRpb24gaXMgcGVyZm9ybWVkLAorICogc28gaXQgaXMg cGFzc2VkIHNlcGFyYXRlbHkuICBUaGUgbmV3IHBhcnRpdGlvbiB3aWxsIGluaGVyaXQgdGhl IGFjY2VzcyBtZXRob2QKKyAqIGFuZCBwZXJzaXN0ZW5jZSB0eXBlIGZyb20gdGhlIHBhcmVu dCB0YWJsZS4KKyAqCisgKiByZXR1cm5zIHRoZSBjcmVhdGVkIHJlbGF0aW9uIChsb2NrZWQg aW4gQWNjZXNzRXhjbHVzaXZlTG9jayBtb2RlKS4KKyAqLworc3RhdGljIFJlbGF0aW9uCitj cmVhdGVQYXJ0aXRpb25UYWJsZShMaXN0ICoqd3F1ZXVlLCBSYW5nZVZhciAqbmV3UGFydE5h bWUsCisJCQkJCSBSZWxhdGlvbiBwYXJlbnRfcmVsLCBPaWQgb3duZXJJZCkKK3sKKwlSZWxh dGlvbgluZXdSZWw7CisJT2lkCQkJbmV3UmVsSWQ7CisJT2lkCQkJZXhpc3RpbmdSZWxpZDsK KwlUdXBsZURlc2MJZGVzY3JpcHRvcjsKKwlMaXN0CSAgICpjb2xMaXN0ID0gTklMOworCU9p ZAkJCXJlbGFtSWQ7CisJT2lkCQkJbmFtZXNwYWNlSWQ7CisJQWx0ZXJlZFRhYmxlSW5mbyAq bmV3X3BhcnRyZWxfdGFiOworCisJLyogSWYgZXhpc3RpbmcgcmVsIGlzIHRlbXAsIGl0IG11 c3QgYmVsb25nIHRvIHRoaXMgc2Vzc2lvbiAqLworCWlmIChSRUxBVElPTl9JU19PVEhFUl9U RU1QKHBhcmVudF9yZWwpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09E RV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJZXJybXNnKCJjYW5ub3QgY3JlYXRlIGFzIHBh cnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVsYXRpb24gb2YgYW5vdGhlciBzZXNzaW9uIikpOwor CisJLyogTG9vayB1cCBpbmhlcml0YW5jZSBhbmNlc3RvcnMgYW5kIGdlbmVyYXRlIHJlbGF0 aW9uIHNjaGVtYS4gKi8KKwljb2xMaXN0ID0gZ2V0QXR0cmlidXRlc0xpc3QocGFyZW50X3Jl bCk7CisKKwkvKiBDcmVhdGUgYSB0dXBsZSBkZXNjcmlwdG9yIGZyb20gdGhlIHJlbGF0aW9u IHNjaGVtYS4gKi8KKwlkZXNjcmlwdG9yID0gQnVpbGREZXNjRm9yUmVsYXRpb24oY29sTGlz dCk7CisKKwkvKiBMb29rIHVwIHRoZSBhY2Nlc3MgbWV0aG9kIGZvciBuZXcgcmVsYXRpb24u ICovCisJcmVsYW1JZCA9IChwYXJlbnRfcmVsLT5yZF9yZWwtPnJlbGFtICE9IEludmFsaWRP aWQpID8gcGFyZW50X3JlbC0+cmRfcmVsLT5yZWxhbSA6IEhFQVBfVEFCTEVfQU1fT0lEOwor CisJLyogTG9vayB1cCB0aGUgbmFtZXNwYWNlIGluIHdoaWNoIHdlIGFyZSBzdXBwb3NlZCB0 byBjcmVhdGUgdGhlIHJlbGF0aW9uLiAqLworCW5hbWVzcGFjZUlkID0KKwkJUmFuZ2VWYXJH ZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNwYWNlKG5ld1BhcnROYW1lLCBOb0xvY2ssICZleGlz dGluZ1JlbGlkKTsKKwlpZiAoT2lkSXNWYWxpZChleGlzdGluZ1JlbGlkKSkKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQll cnJtc2coInJlbGF0aW9uIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsIG5ld1BhcnROYW1lLT5y ZWxuYW1lKSk7CisKKwkvKgorCSAqIFdlIGludGVuZGVkIHRvIGNyZWF0ZSB0aGUgcGFydGl0 aW9uIHdpdGggdGhlIHNhbWUgcGVyc2lzdGVuY2UgYXMgdGhlCisJICogcGFyZW50IHRhYmxl LCBidXQgd2Ugc3RpbGwgbmVlZCB0byByZWNoZWNrIGJlY2F1c2UgdGhhdCBtaWdodCBiZQor CSAqIGFmZmVjdGVkIGJ5IHRoZSBzZWFyY2hfcGF0aC4gIElmIHRoZSBwYXJlbnQgaXMgcGVy bWFuZW50LCBzbyBtdXN0IGJlCisJICogYWxsIG9mIGl0cyBwYXJ0aXRpb25zLgorCSAqLwor CWlmIChwYXJlbnRfcmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlICE9IFJFTFBFUlNJU1RF TkNFX1RFTVAgJiYKKwkJbmV3UGFydE5hbWUtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJ U1RFTkNFX1RFTVApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1dS T05HX09CSkVDVF9UWVBFKSwKKwkJCQllcnJtc2coImNhbm5vdCBjcmVhdGUgYSB0ZW1wb3Jh cnkgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHBlcm1hbmVudCByZWxhdGlvbiBcIiVzXCIi LAorCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJlbnRfcmVsKSkpOworCisJ LyogUGVybWFuZW50IHJlbHMgY2Fubm90IGJlIHBhcnRpdGlvbnMgYmVsb25naW5nIHRvIHRl bXBvcmFyeSBwYXJlbnQgKi8KKwlpZiAobmV3UGFydE5hbWUtPnJlbHBlcnNpc3RlbmNlICE9 IFJFTFBFUlNJU1RFTkNFX1RFTVAgJiYKKwkJcGFyZW50X3JlbC0+cmRfcmVsLT5yZWxwZXJz aXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QKQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CWVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJZXJybXNnKCJjYW5u b3QgY3JlYXRlIGEgcGVybWFuZW50IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBvZiB0ZW1wb3Jh cnkgcmVsYXRpb24gXCIlc1wiIiwKKwkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cGFyZW50X3JlbCkpKTsKKworCS8qIENyZWF0ZSB0aGUgcmVsYXRpb24uICovCisJbmV3UmVs SWQgPSBoZWFwX2NyZWF0ZV93aXRoX2NhdGFsb2cobmV3UGFydE5hbWUtPnJlbG5hbWUsCisJ CQkJCQkJCQkJbmFtZXNwYWNlSWQsCisJCQkJCQkJCQkJcGFyZW50X3JlbC0+cmRfcmVsLT5y ZWx0YWJsZXNwYWNlLAorCQkJCQkJCQkJCUludmFsaWRPaWQsCisJCQkJCQkJCQkJSW52YWxp ZE9pZCwKKwkJCQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCW93bmVySWQsCisJCQkJ CQkJCQkJcmVsYW1JZCwKKwkJCQkJCQkJCQlkZXNjcmlwdG9yLAorCQkJCQkJCQkJCU5JTCwK KwkJCQkJCQkJCQlSRUxLSU5EX1JFTEFUSU9OLAorCQkJCQkJCQkJCW5ld1BhcnROYW1lLT5y ZWxwZXJzaXN0ZW5jZSwKKwkJCQkJCQkJCQlmYWxzZSwKKwkJCQkJCQkJCQlmYWxzZSwKKwkJ CQkJCQkJCQlPTkNPTU1JVF9OT09QLAorCQkJCQkJCQkJCShEYXR1bSkgMCwKKwkJCQkJCQkJ CQl0cnVlLAorCQkJCQkJCQkJCWFsbG93U3lzdGVtVGFibGVNb2RzLAorCQkJCQkJCQkJCXRy dWUsCisJCQkJCQkJCQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJCQlOVUxMKTsKKworCS8qCisJ ICogV2UgbXVzdCBidW1wIHRoZSBjb21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUgbmV3bHkt Y3JlYXRlZCByZWxhdGlvbgorCSAqIHR1cGxlIHZpc2libGUgZm9yIG9wZW5pbmcuCisJICov CisJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKworCS8qCisJICogT3BlbiB0aGUgbmV3 IHBhcnRpdGlvbiB3aXRoIG5vIGxvY2ssIGJlY2F1c2Ugd2UgYWxyZWFkeSBoYXZlCisJICog QWNjZXNzRXhjbHVzaXZlTG9jayBwbGFjZWQgdGhlcmUgYWZ0ZXIgY3JlYXRpb24uCisJICov CisJbmV3UmVsID0gdGFibGVfb3BlbihuZXdSZWxJZCwgTm9Mb2NrKTsKKworCS8qIEZpbmQg b3IgY3JlYXRlIHdvcmsgcXVldWUgZW50cnkgZm9yIG5ld2x5IGNyZWF0ZWQgdGFibGUuICov CisJbmV3X3BhcnRyZWxfdGFiID0gQVRHZXRRdWV1ZUVudHJ5KHdxdWV1ZSwgbmV3UmVsKTsK KworCS8qIENyZWF0ZSBjb25zdHJhaW50cywgZGVmYXVsdCB2YWx1ZXMgYW5kIGdlbmVyYXRl ZCB2YWx1ZXMgKi8KKwljcmVhdGVUYWJsZUNvbnN0cmFpbnRzKHdxdWV1ZSwgbmV3X3BhcnRy ZWxfdGFiLCBwYXJlbnRfcmVsLCBuZXdSZWwpOworCisJLyoKKwkgKiBOZWVkIHRvIGNhbGwg Q29tbWFuZENvdW50ZXJJbmNyZW1lbnQsIHNvIGZyZXNoIHJlbGNhY2hlIGVudHJ5IGhhdmUK KwkgKiBuZXdseSBpbnN0YWxsZWQgY29uc3RyYWludCBpbmZvLgorCSAqLworCUNvbW1hbmRD b3VudGVySW5jcmVtZW50KCk7CisKKwlyZXR1cm4gbmV3UmVsOworfQorCisvKgorICogTWVy Z2VQYXJ0aXRpb25zTW92ZVJvd3M6IHNjYW4gcGFydGl0aW9ucyB0byBiZSBtZXJnZWQgKG1l cmdpbmdQYXJ0aXRpb25zKQorICogb2YgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGFuZCBtb3Zl IHJvd3MgaW50byB0aGUgbmV3IHBhcnRpdGlvbgorICogKG5ld1BhcnRSZWwpLiBXZSBhbHNv IHZlcnRpZnkgY2hlY2sgY29uc3RyYWludHMgYWdhaW5zdCB0aGVzZSByb3dzLgorICovCitz dGF0aWMgdm9pZAorTWVyZ2VQYXJ0aXRpb25zTW92ZVJvd3MoTGlzdCAqKndxdWV1ZSwgTGlz dCAqbWVyZ2luZ1BhcnRpdGlvbnMsIFJlbGF0aW9uIG5ld1BhcnRSZWwpCit7CisJQ29tbWFu ZElkCW15Y2lkOworCUVTdGF0ZQkgICAqZXN0YXRlOworCUFsdGVyZWRUYWJsZUluZm8gKnRh YjsKKwlMaXN0Q2VsbCAgICpsdGFiOworCisJLyogVGhlIEZTTSBpcyBlbXB0eSwgc28gZG9u J3QgYm90aGVyIHVzaW5nIGl0LiAqLworCWludAkJCXRpX29wdGlvbnMgPSBUQUJMRV9JTlNF UlRfU0tJUF9GU007CisJQnVsa0luc2VydFN0YXRlIGJpc3RhdGU7CS8qIHN0YXRlIG9mIGJ1 bGsgaW5zZXJ0cyBmb3IgcGFydGl0aW9uICovCisJVHVwbGVUYWJsZVNsb3QgKmRzdHNsb3Q7 CisKKwkvKiBGaW5kIHRoZSB3b3JrIHF1ZXVlIGVudHJ5IGZvciBuZXcgcGFydGl0aW9uIHRh YmxlOiBuZXdQYXJ0UmVsLiAqLworCXRhYiA9IEFUR2V0UXVldWVFbnRyeSh3cXVldWUsIG5l d1BhcnRSZWwpOworCisJLyogR2VuZXJhdGUgdGhlIGNvbnN0cmFpbnQgYW5kIGRlZmF1bHQg ZXhlY3V0aW9uIHN0YXRlcy4gKi8KKwllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7 CisKKwlidWlsZEV4cHJlc3Npb25FeGVjdXRpb25TdGF0ZXModGFiLCBuZXdQYXJ0UmVsLCBl c3RhdGUpOworCisJbXljaWQgPSBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpOworCisJLyog UHJlcGFyZSBhIEJ1bGtJbnNlcnRTdGF0ZSBmb3IgdGFibGVfdHVwbGVfaW5zZXJ0LiAqLwor CWJpc3RhdGUgPSBHZXRCdWxrSW5zZXJ0U3RhdGUoKTsKKworCS8qIENyZWF0ZSBuZWNlc3Nh cnkgdHVwbGUgc2xvdC4gKi8KKwlkc3RzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUobmV3UGFy dFJlbCwgTlVMTCk7CisKKwlmb3JlYWNoX29pZChtZXJnaW5nX29pZCwgbWVyZ2luZ1BhcnRp dGlvbnMpCisJeworCQlFeHByQ29udGV4dCAqZWNvbnRleHQ7CisJCVR1cGxlVGFibGVTbG90 ICpzcmNzbG90OworCQlUdXBsZUNvbnZlcnNpb25NYXAgKnR1cGxlX21hcDsKKwkJVGFibGVT Y2FuRGVzYyBzY2FuOworCQlNZW1vcnlDb250ZXh0IG9sZEN4dDsKKwkJU25hcHNob3QJc25h cHNob3Q7CisJCVJlbGF0aW9uCW1lcmdpbmdQYXJ0aXRpb247CisKKwkJZWNvbnRleHQgPSBH ZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7CisKKwkJLyoKKwkJICogUGFydGl0aW9u IGlzIGFscmVhZHkgbG9ja2VkIGluIHRoZSB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJn ZQorCQkgKiBmdW5jdGlvbi4KKwkJICovCisJCW1lcmdpbmdQYXJ0aXRpb24gPSB0YWJsZV9v cGVuKG1lcmdpbmdfb2lkLCBOb0xvY2spOworCisJCS8qIENyZWF0ZSB0dXBsZSBzbG90IGZv ciBuZXcgcGFydGl0aW9uLiAqLworCQlzcmNzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUobWVy Z2luZ1BhcnRpdGlvbiwgTlVMTCk7CisKKwkJLyoKKwkJICogTWFwIGNvbXB1dGluZyBmb3Ig bW92aW5nIGF0dHJpYnV0ZXMgb2YgbWVyZ2VkIHBhcnRpdGlvbiB0byBuZXcKKwkJICogcGFy dGl0aW9uLgorCQkgKi8KKwkJdHVwbGVfbWFwID0gY29udmVydF90dXBsZXNfYnlfbmFtZShS ZWxhdGlvbkdldERlc2NyKG1lcmdpbmdQYXJ0aXRpb24pLAorCQkJCQkJCQkJCSAgIFJlbGF0 aW9uR2V0RGVzY3IobmV3UGFydFJlbCkpOworCisJCS8qIFNjYW4gdGhyb3VnaCB0aGUgcm93 cy4gKi8KKwkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90 KCkpOworCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKG1lcmdpbmdQYXJ0aXRpb24sIHNuYXBz aG90LCAwLCBOVUxMKTsKKworCQkvKgorCQkgKiBTd2l0Y2ggdG8gcGVyLXR1cGxlIG1lbW9y eSBjb250ZXh0IGFuZCByZXNldCBpdCBmb3IgZWFjaCB0dXBsZQorCQkgKiBwcm9kdWNlZCwg c28gd2UgZG9uJ3QgbGVhayBtZW1vcnkuCisJCSAqLworCQlvbGRDeHQgPSBNZW1vcnlDb250 ZXh0U3dpdGNoVG8oR2V0UGVyVHVwbGVNZW1vcnlDb250ZXh0KGVzdGF0ZSkpOworCisJCXdo aWxlICh0YWJsZV9zY2FuX2dldG5leHRzbG90KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9u LCBzcmNzbG90KSkKKwkJeworCQkJVHVwbGVUYWJsZVNsb3QgKmluc2VydHNsb3Q7CisKKwkJ CUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJCWlmICh0dXBsZV9tYXApCisJCQl7CisJ CQkJLyogTmVlZCB0byB1c2UgbWFwIHRvIGNvcHkgYXR0cmlidXRlcy4gKi8KKwkJCQlpbnNl cnRzbG90ID0gZXhlY3V0ZV9hdHRyX21hcF9zbG90KHR1cGxlX21hcC0+YXR0ck1hcCwgc3Jj c2xvdCwgZHN0c2xvdCk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJc2xvdF9nZXRhbGxh dHRycyhzcmNzbG90KTsKKworCQkJCS8qIENvcHkgYXR0cmlidXRlcyBkaXJlY3RseS4gKi8K KwkJCQlpbnNlcnRzbG90ID0gZHN0c2xvdDsKKworCQkJCUV4ZWNDbGVhclR1cGxlKGluc2Vy dHNsb3QpOworCisJCQkJbWVtY3B5KGluc2VydHNsb3QtPnR0c192YWx1ZXMsIHNyY3Nsb3Qt PnR0c192YWx1ZXMsCisJCQkJCSAgIHNpemVvZihEYXR1bSkgKiBzcmNzbG90LT50dHNfbnZh bGlkKTsKKwkJCQltZW1jcHkoaW5zZXJ0c2xvdC0+dHRzX2lzbnVsbCwgc3Jjc2xvdC0+dHRz X2lzbnVsbCwKKwkJCQkJICAgc2l6ZW9mKGJvb2wpICogc3Jjc2xvdC0+dHRzX252YWxpZCk7 CisKKwkJCQlFeGVjU3RvcmVWaXJ0dWFsVHVwbGUoaW5zZXJ0c2xvdCk7CisJCQl9CisKKwkJ CS8qCisJCQkgKiBDb25zdHJhaW50cyBhbmQgR0VORVJBVEVEIGV4cHJlc3Npb25zIG1pZ2h0 IHJlZmVyZW5jZSB0aGUKKwkJCSAqIHRhYmxlb2lkIGNvbHVtbiwgc28gZmlsbCB0dHNfdGFi bGVPaWQgd2l0aCB0aGUgZGVzaXJlZCB2YWx1ZS4KKwkJCSAqIChXZSBtdXN0IGRvIHRoaXMg ZWFjaCB0aW1lLCBiZWNhdXNlIGl0IGdldHMgb3ZlcndyaXR0ZW4gd2l0aAorCQkJICogbmV3 cmVsJ3MgT0lEIGR1cmluZyBzdG9yaW5nLikKKwkJCSAqLworCQkJaW5zZXJ0c2xvdC0+dHRz X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChuZXdQYXJ0UmVsKTsKKworCQkJLyoKKwkJ CSAqIE5vdywgZXZhbHVhdGUgYW55IGdlbmVyYXRlZCBleHByZXNzaW9ucyB3aG9zZSBpbnB1 dHMgY29tZSBmcm9tCisJCQkgKiB0aGUgbmV3IHR1cGxlLiAgV2UgYXNzdW1lIHRoZXNlIGNv bHVtbnMgd29uJ3QgcmVmZXJlbmNlIGVhY2gKKwkJCSAqIG90aGVyLCBzbyB0aGF0IHRoZXJl J3Mgbm8gb3JkZXJpbmcgZGVwZW5kZW5jeS4KKwkJCSAqLworCQkJZXZhbHVhdGVHZW5lcmF0 ZWRFeHByZXNzaW9uc0FuZENoZWNrQ29uc3RyYWludHModGFiLCBuZXdQYXJ0UmVsLAorCQkJ CQkJCQkJCQkJCQkJaW5zZXJ0c2xvdCwgZWNvbnRleHQpOworCisJCQkvKiBXcml0ZSB0aGUg dHVwbGUgb3V0IHRvIHRoZSBuZXcgcmVsYXRpb24uICovCisJCQl0YWJsZV90dXBsZV9pbnNl cnQobmV3UGFydFJlbCwgaW5zZXJ0c2xvdCwgbXljaWQsCisJCQkJCQkJICAgdGlfb3B0aW9u cywgYmlzdGF0ZSk7CisKKwkJCVJlc2V0RXhwckNvbnRleHQoZWNvbnRleHQpOworCQl9CisK KwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN4dCk7CisJCXRhYmxlX2VuZHNjYW4oc2Nh bik7CisJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisKKwkJaWYgKHR1cGxlX21h cCkKKwkJCWZyZWVfY29udmVyc2lvbl9tYXAodHVwbGVfbWFwKTsKKworCQlFeGVjRHJvcFNp bmdsZVR1cGxlVGFibGVTbG90KHNyY3Nsb3QpOworCQl0YWJsZV9jbG9zZShtZXJnaW5nUGFy dGl0aW9uLCBOb0xvY2spOworCX0KKworCUZyZWVFeGVjdXRvclN0YXRlKGVzdGF0ZSk7CisJ RXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChkc3RzbG90KTsKKwlGcmVlQnVsa0luc2Vy dFN0YXRlKGJpc3RhdGUpOworCisJdGFibGVfZmluaXNoX2J1bGtfaW5zZXJ0KG5ld1BhcnRS ZWwsIHRpX29wdGlvbnMpOworCisJLyoKKwkgKiBXZSBkb24ndCBuZWVkIHByb2Nlc3MgdGhp cyBuZXdQYXJ0UmVsIHNpbmNlIHdlIGFscmVhZHkgcHJvY2Vzc2VkIGluCisJICogaGVyZSwg c28gZGVsZXRlIHRoZSBBTFRFUiBUQUJMRSBxdWV1ZSBvZiBpdC4KKwkgKi8KKwlmb3JlYWNo KGx0YWIsICp3cXVldWUpCisJeworCQl0YWIgPSAoQWx0ZXJlZFRhYmxlSW5mbyAqKSBsZmly c3QobHRhYik7CisJCWlmICh0YWItPnJlbGlkID09IFJlbGF0aW9uR2V0UmVsaWQobmV3UGFy dFJlbCkpCisJCQkqd3F1ZXVlID0gbGlzdF9kZWxldGVfY2VsbCgqd3F1ZXVlLCBsdGFiKTsK Kwl9Cit9CisKKy8qCisgKiBkZXRhY2hQYXJ0aXRpb25UYWJsZTogZGV0YWNoIHBhcnRpdGlv biAiY2hpbGRfcmVsIiBmcm9tIHBhcnRpdGlvbmVkIHRhYmxlCisgKiAicGFyZW50X3JlbCIg d2l0aCBkZWZhdWx0IHBhcnRpdGlvbiBpZGVudGlmaWVyICJkZWZhdWx0UGFydE9pZCIKKyAq Lworc3RhdGljIHZvaWQKK2RldGFjaFBhcnRpdGlvblRhYmxlKFJlbGF0aW9uIHBhcmVudF9y ZWwsIFJlbGF0aW9uIGNoaWxkX3JlbCwgT2lkIGRlZmF1bHRQYXJ0T2lkKQoreworCS8qIFJl bW92ZSB0aGUgcGdfaW5oZXJpdHMgcm93IGZpcnN0LiAqLworCVJlbW92ZUluaGVyaXRhbmNl KGNoaWxkX3JlbCwgcGFyZW50X3JlbCwgZmFsc2UpOworCisJLyoKKwkgKiBEZXRhY2hpbmcg dGhlIHBhcnRpdGlvbiBtaWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5z dXJlIHdlCisJICogaGF2ZSBhIHZhbGlkIHNuYXBzaG90LgorCSAqLworCVB1c2hBY3RpdmVT bmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCisJLyogRG8gdGhlIGZpbmFs IHBhcnQgb2YgZGV0YWNoaW5nLiAqLworCURldGFjaFBhcnRpdGlvbkZpbmFsaXplKHBhcmVu dF9yZWwsIGNoaWxkX3JlbCwgZmFsc2UsIGRlZmF1bHRQYXJ0T2lkKTsKKworCVBvcEFjdGl2 ZVNuYXBzaG90KCk7Cit9CisKKy8qCisgKiBBTFRFUiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFS VElUSU9OUyA8cGFydGl0aW9uLWxpc3Q+IElOVE8gPHBhcnRpdGlvbi1uYW1lPgorICovCitz dGF0aWMgdm9pZAorQVRFeGVjTWVyZ2VQYXJ0aXRpb25zKExpc3QgKip3cXVldWUsIEFsdGVy ZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAorCQkJCQkgIFBhcnRpdGlvbkNtZCAq Y21kLCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCit7CisJUmVsYXRpb24J bmV3UGFydFJlbDsKKwlMaXN0CSAgICptZXJnaW5nUGFydGl0aW9ucyA9IE5JTDsKKwlPaWQJ CQlkZWZhdWx0UGFydE9pZDsKKwlPaWQJCQlleGlzdGluZ1JlbGlkOworCU9pZAkJCW93bmVy SWQgPSBJbnZhbGlkT2lkOworCU9pZAkJCXNhdmVfdXNlcmlkOworCWludAkJCXNhdmVfc2Vj X2NvbnRleHQ7CisJaW50CQkJc2F2ZV9uZXN0bGV2ZWw7CisKKwkvKgorCSAqIENoZWNrIG93 bmVyc2hpcCBvZiBtZXJnZWQgcGFydGl0aW9ucyAtIHBhcnRpdGlvbnMgd2l0aCBkaWZmZXJl bnQgb3duZXJzCisJICogY2Fubm90IGJlIG1lcmdlZC4gQWxzbywgY29sbGVjdCB0aGUgT0lE cyBvZiB0aGVzZSBwYXJ0aXRpb25zIGR1cmluZyB0aGUKKwkgKiBjaGVjay4KKwkgKi8KKwlm b3JlYWNoX25vZGUoUmFuZ2VWYXIsIG5hbWUsIGNtZC0+cGFydGxpc3QpCisJeworCQlSZWxh dGlvbgltZXJnaW5nUGFydGl0aW9uOworCisJCS8qCisJCSAqIFdlIGFyZSBnb2luZyB0byBk ZXRhY2ggYW5kIHJlbW92ZSB0aGlzIHBhcnRpdGlvbi4gIFdlIGFscmVhZHkgdG9vaworCQkg KiBBY2Nlc3NFeGNsdXNpdmVMb2NrIGxvY2sgb24gdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9y TWVyZ2UsIHNvIGhlcmUsCisJCSAqIE5vTG9jayBpcyBmaW5lLgorCQkgKi8KKwkJbWVyZ2lu Z1BhcnRpdGlvbiA9IHRhYmxlX29wZW5ydl9leHRlbmRlZChuYW1lLCBOb0xvY2ssIGZhbHNl KTsKKwkJQXNzZXJ0KENoZWNrUmVsYXRpb25Mb2NrZWRCeU1lKG1lcmdpbmdQYXJ0aXRpb24s IEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssIGZhbHNlKSk7CisKKwkJaWYgKE9pZElzVmFsaWQob3du ZXJJZCkpCisJCXsKKwkJCS8qIERvIHRoZSBwYXJ0aXRpb25zIGJlaW5nIG1lcmdlZCBoYXZl IGRpZmZlcmVudCBvd25lcnM/ICovCisJCQlpZiAob3duZXJJZCAhPSBtZXJnaW5nUGFydGl0 aW9uLT5yZF9yZWwtPnJlbG93bmVyKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCWVycm1zZygicGFy dGl0aW9ucyBiZWluZyBtZXJnZWQgaGF2ZSBkaWZmZXJlbnQgb3duZXJzIikpOworCQl9CisJ CWVsc2UKKwkJCW93bmVySWQgPSBtZXJnaW5nUGFydGl0aW9uLT5yZF9yZWwtPnJlbG93bmVy OworCisJCS8qIFN0b3JlIGEgbmV4dCBtZXJnaW5nIHBhcnRpdGlvbiBpbnRvIHRoZSBsaXN0 LiAqLworCQltZXJnaW5nUGFydGl0aW9ucyA9IGxhcHBlbmRfb2lkKG1lcmdpbmdQYXJ0aXRp b25zLAorCQkJCQkJCQkJCVJlbGF0aW9uR2V0UmVsaWQobWVyZ2luZ1BhcnRpdGlvbikpOwor CisJCXRhYmxlX2Nsb3NlKG1lcmdpbmdQYXJ0aXRpb24sIE5vTG9jayk7CisJfQorCisJLyog TG9vayB1cCBleGlzdGluZyByZWxhdGlvbiBieSBuZXcgcGFydGl0aW9uIG5hbWUuICovCisJ UmFuZ2VWYXJHZXRBbmRDaGVja0NyZWF0aW9uTmFtZXNwYWNlKGNtZC0+bmFtZSwgTm9Mb2Nr LCAmZXhpc3RpbmdSZWxpZCk7CisKKwkvKgorCSAqIENoZWNrIGlmIHRoaXMgbmFtZSBpcyBh bHJlYWR5IHRha2VuLiAgVGhpcyBoZWxwcyB1cyB0byBkZXRlY3QgdGhlCisJICogc2l0dWF0 aW9uIHdoZW4gb25lIG9mIHRoZSBtZXJnaW5nIHBhcnRpdGlvbnMgaGFzIHRoZSBzYW1lIG5h bWUgYXMgdGhlCisJICogbmV3IHBhcnRpdGlvbi4gIE90aGVyd2lzZSwgdGhpcyB3b3VsZCBm YWlsIGxhdGVyIG9uIGFueXdheSBidXQgY2F0Y2hpbmcKKwkgKiB0aGlzIGhlcmUgYWxsb3dz IHVzIHRvIGVtaXQgYSBuaWNlciBlcnJvciBtZXNzYWdlLgorCSAqLworCWlmIChPaWRJc1Zh bGlkKGV4aXN0aW5nUmVsaWQpKQorCXsKKwkJT2lkCQkJbmV3UGFydGl0aW9uT2lkID0gSW52 YWxpZE9pZDsKKworCQlmb3JlYWNoX29pZChtZXJnaW5nUGFydGl0aW9uT2lkLCBtZXJnaW5n UGFydGl0aW9ucykKKwkJeworCQkJaWYgKG1lcmdpbmdQYXJ0aXRpb25PaWQgPT0gZXhpc3Rp bmdSZWxpZCkKKwkJCXsKKwkJCQluZXdQYXJ0aXRpb25PaWQgPSBtZXJnaW5nUGFydGl0aW9u T2lkOworCQkJCWJyZWFrOworCQkJfQorCQl9CisKKwkJaWYgKE9pZElzVmFsaWQobmV3UGFy dGl0aW9uT2lkKSkKKwkJeworCQkJLyoKKwkJCSAqIFRoZSBuZXcgcGFydGl0aW9uIGhhcyB0 aGUgc2FtZSBuYW1lIGFzIG9uZSBvZiBtZXJnaW5nCisJCQkgKiBwYXJ0aXRpb25zLgorCQkJ ICovCisJCQljaGFyCQl0bXBSZWxOYW1lW05BTUVEQVRBTEVOXTsKKworCQkJLyogR2VuZXJh dGUgdGVtcG9yYXJ5IG5hbWUuICovCisJCQlzcHJpbnRmKHRtcFJlbE5hbWUsICJtZXJnZS0l dS0lWC10bXAiLCBSZWxhdGlvbkdldFJlbGlkKHJlbCksIE15UHJvY1BpZCk7CisKKwkJCS8q CisJCQkgKiBSZW5hbWUgdGhlIGV4aXN0aW5nIHBhcnRpdGlvbiB3aXRoIGEgdGVtcG9yYXJ5 IG5hbWUsIGxlYXZpbmcgaXQKKwkJCSAqIGZyZWUgZm9yIHRoZSBuZXcgcGFydGl0aW9uLiAg V2UgZG9uJ3QgbmVlZCB0byBjYXJlIGFib3V0IHRoaXMKKwkJCSAqIGluIHRoZSBmdXR1cmUg YmVjYXVzZSB3ZSdyZSBnb2luZyB0byBldmVudHVhbGx5IGRyb3AgdGhlCisJCQkgKiBleGlz dGluZyBwYXJ0aXRpb24gYW55d2F5LgorCQkJICovCisJCQlSZW5hbWVSZWxhdGlvbkludGVy bmFsKG5ld1BhcnRpdGlvbk9pZCwgdG1wUmVsTmFtZSwgdHJ1ZSwgZmFsc2UpOworCisJCQkv KgorCQkJICogV2UgbXVzdCBidW1wIHRoZSBjb21tYW5kIGNvdW50ZXIgdG8gbWFrZSB0aGUg bmV3IHBhcnRpdGlvbgorCQkJICogdHVwbGUgdmlzaWJsZSBmb3IgcmVuYW1lLgorCQkJICov CisJCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCQl9CisJCWVsc2UKKwkJeworCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9UQUJMRSks CisJCQkJCWVycm1zZygicmVsYXRpb24gXCIlc1wiIGFscmVhZHkgZXhpc3RzIiwgY21kLT5u YW1lLT5yZWxuYW1lKSk7CisJCX0KKwl9CisKKwlkZWZhdWx0UGFydE9pZCA9CisJCWdldF9k ZWZhdWx0X29pZF9mcm9tX3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhyZWws IHRydWUpKTsKKworCS8qIERldGFjaCBhbGwgbWVyZ2VkIHBhcnRpdGlvbnMgKi8KKwlmb3Jl YWNoX29pZChtZXJnaW5nUGFydGl0aW9uT2lkLCBtZXJnaW5nUGFydGl0aW9ucykKKwl7CisJ CVJlbGF0aW9uCWNoaWxkX3JlbDsKKworCQljaGlsZF9yZWwgPSB0YWJsZV9vcGVuKG1lcmdp bmdQYXJ0aXRpb25PaWQsIE5vTG9jayk7CisKKwkJZGV0YWNoUGFydGl0aW9uVGFibGUocmVs LCBjaGlsZF9yZWwsIGRlZmF1bHRQYXJ0T2lkKTsKKworCQl0YWJsZV9jbG9zZShjaGlsZF9y ZWwsIE5vTG9jayk7CisJfQorCisJLyoKKwkgKiBQZXJmb3JtIGEgcHJlbGltaW5hcnkgY2hl Y2sgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQncyBzYWZlIHRvIGRyb3AgYWxsCisJICogbWVy Z2luZyBwYXJ0aXRpb25zIGJlZm9yZSB3ZSBhY3R1YWxseSBkbyBzbyBsYXRlci4gQWZ0ZXIg bWVyZ2luZyByb3dzCisJICogaW50byB0aGUgbmV3IHBhcnRpdGlvbnMgdmlhIE1lcmdlUGFy dGl0aW9uc01vdmVSb3dzLCBhbGwgb2xkIHBhcnRpdGlvbnMKKwkgKiBuZWVkIGJlIGRyb3Bw ZWQuIEhvd2V2ZXIsIHNpbmNlIHRoZSBkcm9wIGJlaGF2aW9yIGlzIERST1BfUkVTVFJJQ1Qg YW5kCisJICogdGhlIG1lcmdlIHByb2Nlc3MgKE1lcmdlUGFydGl0aW9uc01vdmVSb3dzKSBj YW4gYmUgdGltZS1jb25zdW1pbmcsCisJICogcGVyZm9ybWluZyBhbiBlYXJseSBjaGVjayBv biB0aGUgZHJvcCBlbGlnaWJpbGl0eSBvZiBvbGQgcGFydGl0aW9ucyBpcworCSAqIHByZWZl cmFibGUuCisJICovCisJZm9yZWFjaF9vaWQobWVyZ2luZ1BhcnRpdGlvbk9pZCwgbWVyZ2lu Z1BhcnRpdGlvbnMpCisJeworCQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKworCQkvKiBHZXQg b2lkIG9mIHRoZSBsYXRlciB0byBiZSBkcm9wcGVkIHJlbGF0aW9uICovCisJCW9iamVjdC5v YmplY3RJZCA9IG1lcmdpbmdQYXJ0aXRpb25PaWQ7CisJCW9iamVjdC5jbGFzc0lkID0gUmVs YXRpb25SZWxhdGlvbklkOworCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOworCisJCXBlcmZv cm1EZWxldGlvbkNoZWNrKCZvYmplY3QsIERST1BfUkVTVFJJQ1QsIFBFUkZPUk1fREVMRVRJ T05fSU5URVJOQUwpOworCX0KKworCS8qIENyZWF0ZSB0YWJsZSBmb3IgbmV3IHBhcnRpdGlv biwgdXNlIHBhcnRpdGlvbmVkIHRhYmxlIGFzIG1vZGVsLiAqLworCUFzc2VydChPaWRJc1Zh bGlkKG93bmVySWQpKTsKKwluZXdQYXJ0UmVsID0gY3JlYXRlUGFydGl0aW9uVGFibGUod3F1 ZXVlLCBjbWQtPm5hbWUsIHJlbCwgb3duZXJJZCk7CisKKwkvKgorCSAqIFN3aXRjaCB0byB0 aGUgdGFibGUgb3duZXIncyB1c2VyaWQsIHNvIHRoYXQgYW55IGluZGV4IGZ1bmN0aW9ucyBh cmUgcnVuCisJICogYXMgdGhhdCB1c2VyLiAgQWxzbyBsb2NrIGRvd24gc2VjdXJpdHktcmVz dHJpY3RlZCBvcGVyYXRpb25zIGFuZAorCSAqIGFycmFuZ2UgdG8gbWFrZSBHVUMgdmFyaWFi bGUgY2hhbmdlcyBsb2NhbCB0byB0aGlzIGNvbW1hbmQuCisJICoKKwkgKiBOZWVkIHRvIGRv IGl0IGFmdGVyIGRldGVybWluZSBuYW1lc3BhY2UgaW4gY3JlYXRlUGFydGl0aW9uVGFibGUg Y2FsbC4KKwkgKi8KKwlHZXRVc2VySWRBbmRTZWNDb250ZXh0KCZzYXZlX3VzZXJpZCwgJnNh dmVfc2VjX2NvbnRleHQpOworCVNldFVzZXJJZEFuZFNlY0NvbnRleHQob3duZXJJZCwKKwkJ CQkJCSAgIHNhdmVfc2VjX2NvbnRleHQgfCBTRUNVUklUWV9SRVNUUklDVEVEX09QRVJBVElP Tik7CisJc2F2ZV9uZXN0bGV2ZWwgPSBOZXdHVUNOZXN0TGV2ZWwoKTsKKwlSZXN0cmljdFNl YXJjaFBhdGgoKTsKKworCS8qIENvcHkgZGF0YSBmcm9tIG1lcmdlZCBwYXJ0aXRpb25zIHRv IG5ldyBwYXJ0aXRpb24uICovCisJTWVyZ2VQYXJ0aXRpb25zTW92ZVJvd3Mod3F1ZXVlLCBt ZXJnaW5nUGFydGl0aW9ucywgbmV3UGFydFJlbCk7CisKKwkvKiBEcm9wIHRoZSBjdXJyZW50 IHBhcnRpdGlvbnMgYmVmb3JlIGF0dGFjaGluZyB0aGUgbmV3IG9uZS4gKi8KKwlmb3JlYWNo X29pZChtZXJnaW5nUGFydGl0aW9uT2lkLCBtZXJnaW5nUGFydGl0aW9ucykKKwl7CisJCU9i amVjdEFkZHJlc3Mgb2JqZWN0OworCisJCW9iamVjdC5vYmplY3RJZCA9IG1lcmdpbmdQYXJ0 aXRpb25PaWQ7CisJCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOworCQlv YmplY3Qub2JqZWN0U3ViSWQgPSAwOworCisJCXBlcmZvcm1EZWxldGlvbigmb2JqZWN0LCBE Uk9QX1JFU1RSSUNULCAwKTsKKwl9CisKKwlsaXN0X2ZyZWUobWVyZ2luZ1BhcnRpdGlvbnMp OworCisJLyoKKwkgKiBBdHRhY2ggYSBuZXcgcGFydGl0aW9uIHRvIHRoZSBwYXJ0aXRpb25l ZCB0YWJsZS4gd3F1ZXVlID0gTlVMTDoKKwkgKiB2ZXJpZmljYXRpb24gZm9yIGVhY2ggY2xv bmVkIGNvbnN0cmFpbnQgaXMgbm90IG5lZWRlZC4KKwkgKi8KKwlhdHRhY2hQYXJ0aXRpb25U YWJsZShOVUxMLCByZWwsIG5ld1BhcnRSZWwsIGNtZC0+Ym91bmQpOworCisJLyogS2VlcCB0 aGUgbG9jayB1bnRpbCBjb21taXQuICovCisJdGFibGVfY2xvc2UobmV3UGFydFJlbCwgTm9M b2NrKTsKKworCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5k ZXggZnVuY3Rpb25zLiAqLworCUF0RU9YYWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2ZWwp OworCisJLyogUmVzdG9yZSB1c2VyaWQgYW5kIHNlY3VyaXR5IGNvbnRleHQuICovCisJU2V0 VXNlcklkQW5kU2VjQ29udGV4dChzYXZlX3VzZXJpZCwgc2F2ZV9zZWNfY29udGV4dCk7Cit9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueQppbmRleCA5ZmQ0OGFjYjFmLi5hNDZkNmM2ZWE2IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkKQEAgLTc1NSw3ICs3NTUsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZp ZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwog CU9SREVSIE9SRElOQUxJVFkgT1RIRVJTIE9VVF9QIE9VVEVSX1AKIAlPVkVSIE9WRVJMQVBT IE9WRVJMQVkgT1ZFUlJJRElORyBPV05FRCBPV05FUgogCi0JUEFSQUxMRUwgUEFSQU1FVEVS IFBBUlNFUiBQQVJUSUFMIFBBUlRJVElPTiBQQVNTSU5HIFBBU1NXT1JEIFBBVEgKKwlQQVJB TExFTCBQQVJBTUVURVIgUEFSU0VSIFBBUlRJQUwgUEFSVElUSU9OIFBBUlRJVElPTlMgUEFT U0lORyBQQVNTV09SRCBQQVRICiAJUEVSSU9EIFBMQUNJTkcgUExBTiBQTEFOUyBQT0xJQ1kK IAlQT1NJVElPTiBQUkVDRURJTkcgUFJFQ0lTSU9OIFBSRVNFUlZFIFBSRVBBUkUgUFJFUEFS RUQgUFJJTUFSWQogCVBSSU9SIFBSSVZJTEVHRVMgUFJPQ0VEVVJBTCBQUk9DRURVUkUgUFJP Q0VEVVJFUyBQUk9HUkFNIFBVQkxJQ0FUSU9OCkBAIC0yMzY3LDYgKzIzNjcsNyBAQCBwYXJ0 aXRpb25fY21kOgogCQkJCQluLT5zdWJ0eXBlID0gQVRfQXR0YWNoUGFydGl0aW9uOwogCQkJ CQljbWQtPm5hbWUgPSAkMzsKIAkJCQkJY21kLT5ib3VuZCA9ICQ0OworCQkJCQljbWQtPnBh cnRsaXN0ID0gTklMOwogCQkJCQljbWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsKIAkJCQkJbi0+ ZGVmID0gKE5vZGUgKikgY21kOwogCkBAIC0yMzgxLDYgKzIzODIsNyBAQCBwYXJ0aXRpb25f Y21kOgogCQkJCQluLT5zdWJ0eXBlID0gQVRfRGV0YWNoUGFydGl0aW9uOwogCQkJCQljbWQt Pm5hbWUgPSAkMzsKIAkJCQkJY21kLT5ib3VuZCA9IE5VTEw7CisJCQkJCWNtZC0+cGFydGxp c3QgPSBOSUw7CiAJCQkJCWNtZC0+Y29uY3VycmVudCA9ICQ0OwogCQkJCQluLT5kZWYgPSAo Tm9kZSAqKSBjbWQ7CiAKQEAgLTIzOTQsNiArMjM5NiwyMSBAQCBwYXJ0aXRpb25fY21kOgog CQkJCQluLT5zdWJ0eXBlID0gQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU7CiAJCQkJCWNt ZC0+bmFtZSA9ICQzOwogCQkJCQljbWQtPmJvdW5kID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0 bGlzdCA9IE5JTDsKKwkJCQkJY21kLT5jb25jdXJyZW50ID0gZmFsc2U7CisJCQkJCW4tPmRl ZiA9IChOb2RlICopIGNtZDsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJCS8q IEFMVEVSIFRBQkxFIDxuYW1lPiBNRVJHRSBQQVJUSVRJT05TICgpIElOVE8gPHBhcnRpdGlv bl9uYW1lPiAqLworCQkJfCBNRVJHRSBQQVJUSVRJT05TICcoJyBxdWFsaWZpZWRfbmFtZV9s aXN0ICcpJyBJTlRPIHF1YWxpZmllZF9uYW1lCisJCQkJeworCQkJCQlBbHRlclRhYmxlQ21k ICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJCQkJCVBhcnRpdGlvbkNtZCAqY21k ID0gbWFrZU5vZGUoUGFydGl0aW9uQ21kKTsKKworCQkJCQluLT5zdWJ0eXBlID0gQVRfTWVy Z2VQYXJ0aXRpb25zOworCQkJCQljbWQtPm5hbWUgPSAkNzsKKwkJCQkJY21kLT5ib3VuZCA9 IE5VTEw7CisJCQkJCWNtZC0+cGFydGxpc3QgPSAkNDsKIAkJCQkJY21kLT5jb25jdXJyZW50 ID0gZmFsc2U7CiAJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsKIAkJCQkJJCQgPSAoTm9k ZSAqKSBuOwpAQCAtMjQxMCw2ICsyNDI3LDcgQEAgaW5kZXhfcGFydGl0aW9uX2NtZDoKIAkJ CQkJbi0+c3VidHlwZSA9IEFUX0F0dGFjaFBhcnRpdGlvbjsKIAkJCQkJY21kLT5uYW1lID0g JDM7CiAJCQkJCWNtZC0+Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBhcnRsaXN0ID0gTklM OwogCQkJCQljbWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsKIAkJCQkJbi0+ZGVmID0gKE5vZGUg KikgY21kOwogCkBAIC0xNzkzMCw2ICsxNzk0OCw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoK IAkJCXwgUEFSU0VSCiAJCQl8IFBBUlRJQUwKIAkJCXwgUEFSVElUSU9OCisJCQl8IFBBUlRJ VElPTlMKIAkJCXwgUEFTU0lORwogCQkJfCBQQVNTV09SRAogCQkJfCBQQVRICkBAIC0xODU1 Nyw2ICsxODU3Niw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgUEFSU0VSCiAJCQl8 IFBBUlRJQUwKIAkJCXwgUEFSVElUSU9OCisJCQl8IFBBUlRJVElPTlMKIAkJCXwgUEFTU0lO RwogCQkJfCBQQVNTV09SRAogCQkJfCBQQVRICmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxj bWQuYwppbmRleCBlOTZiMzhhNTlkLi41NjRiYTU1YjZkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV91dGlsY21kLmMKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL2hl YXAuaCIKICNpbmNsdWRlICJjYXRhbG9nL2luZGV4LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9u YW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BhcnRpdGlvbi5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfYW0uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGxhdGlvbi5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfY29uc3RyYWludC5oIgpAQCAtNTgsNiArNTksOCBAQAog I2luY2x1ZGUgInBhcnNlci9wYXJzZV90eXBlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNl X3V0aWxjbWQuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VyLmgiCisjaW5jbHVkZSAicGFy dGl0aW9uaW5nL3BhcnRib3VuZHMuaCIKKyNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGRl c2MuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgogI2luY2x1ZGUgInV0 aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCkBAIC0zNTA5LDYgKzM1 MTIsMTM1IEBAIHRyYW5zZm9ybVJ1bGVTdG10KFJ1bGVTdG10ICpzdG10LCBjb25zdCBjaGFy ICpxdWVyeVN0cmluZywKIH0KIAogCisvKgorICogY2hlY2tQYXJ0aXRpb24KKyAqIENoZWNr IHdoZXRoZXIgcGFydFJlbE9pZCBpcyBhIGxlYWYgcGFydGl0aW9uIG9mIHRoZSBwYXJlbnQg dGFibGUgKHJlbCkuCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja1BhcnRpdGlvbihSZWxhdGlv biByZWwsIE9pZCBwYXJ0UmVsT2lkKQoreworCVJlbGF0aW9uCXBhcnRSZWw7CisKKwlwYXJ0 UmVsID0gdGFibGVfb3BlbihwYXJ0UmVsT2lkLCBOb0xvY2spOworCisJaWYgKHBhcnRSZWwt PnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCWVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJZXJybXNn KCJcIiVzXCIgaXMgbm90IGEgdGFibGUiLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJ0 UmVsKSksCisJCQkJZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMg Y2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikp OworCisJaWYgKCFwYXJ0UmVsLT5yZF9yZWwtPnJlbGlzcGFydGl0aW9uKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJ ZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxl IFwiJXNcIiIsCisJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBhcnRSZWwpLCBS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSwKKwkJCQllcnJoaW50KCJBTFRFUiBUQUJM RSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRpb25zIGRvbid0 IGhhdmUgc3ViLXBhcnRpdGlvbnMiKSk7CisKKwlpZiAoZ2V0X3BhcnRpdGlvbl9wYXJlbnQo cGFydFJlbE9pZCwgZmFsc2UpICE9IFJlbGF0aW9uR2V0UmVsaWQocmVsKSkKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX1RBQkxFKSwKKwkJCQll cnJtc2coInJlbGF0aW9uIFwiJXNcIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24g XCIlc1wiIiwKKwkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocGFydFJlbCksIFJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpLAorCQkJCWVycmhpbnQoIkFMVEVSIFRBQkxF IC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3Qg aGF2ZSBzdWItcGFydGl0aW9ucyIpKTsKKworCXRhYmxlX2Nsb3NlKHBhcnRSZWwsIE5vTG9j ayk7Cit9CisKKy8qCisgKiB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJnZQorICoJCUFu YWx5emUgdGhlIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNvbW1hbmQKKyAq CisgKiBEb2VzIHNpbXBsZSBjaGVja3MgZm9yIG1lcmdlZCBwYXJ0aXRpb25zLiBDYWxjdWxh dGVzIGJvdW5kIG9mIHJlc3VsdGluZworICogcGFydGl0aW9uLgorICovCitzdGF0aWMgdm9p ZAordHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UoQ3JlYXRlU3RtdENvbnRleHQgKmN4 dCwgUGFydGl0aW9uQ21kICpwYXJ0Y21kKQoreworCU9pZAkJCWRlZmF1bHRQYXJ0T2lkOwor CU9pZAkJCXBhcnRPaWQ7CisJUmVsYXRpb24JcGFyZW50ID0gY3h0LT5yZWw7CisJUGFydGl0 aW9uS2V5IGtleTsKKwljaGFyCQlzdHJhdGVneTsKKwlMaXN0Q2VsbCAgICpsaXN0cHRyLAor CQkJICAgKmxpc3RwdHIyOworCWJvb2wJCWlzRGVmYXVsdFBhcnQgPSBmYWxzZTsKKwlMaXN0 CSAgICpwYXJ0T2lkcyA9IE5JTDsKKworCWtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5 KHBhcmVudCk7CisJc3RyYXRlZ3kgPSBnZXRfcGFydGl0aW9uX3N0cmF0ZWd5KGtleSk7CisK KwlpZiAoc3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0hBU0gpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJ CQkJZXJybXNnKCJwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25lZCB0YWJsZSBjYW5ub3Qg YmUgbWVyZ2VkIikpOworCisJLyogRG9lcyBwYXJ0aXRpb25lZCB0YWJsZSAocGFyZW50KSBo YXZlIGEgZGVmYXVsdCBwYXJ0aXRpb24/ICovCisJZGVmYXVsdFBhcnRPaWQgPSBnZXRfZGVm YXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocGFyZW50 LCB0cnVlKSk7CisKKwlmb3JlYWNoKGxpc3RwdHIsIHBhcnRjbWQtPnBhcnRsaXN0KQorCXsK KwkJUmFuZ2VWYXIgICAqbmFtZSA9IChSYW5nZVZhciAqKSBsZmlyc3QobGlzdHB0cik7CisK KwkJLyogUGFydGl0aW9ucyBpbiB0aGUgbGlzdCBzaG91bGQgaGF2ZSBkaWZmZXJlbnQgbmFt ZXMuICovCisJCWZvcl9lYWNoX2NlbGwobGlzdHB0cjIsIHBhcnRjbWQtPnBhcnRsaXN0LCBs bmV4dChwYXJ0Y21kLT5wYXJ0bGlzdCwgbGlzdHB0cikpCisJCXsKKwkJCVJhbmdlVmFyICAg Km5hbWUyID0gKFJhbmdlVmFyICopIGxmaXJzdChsaXN0cHRyMik7CisKKwkJCWlmIChlcXVh bChuYW1lLCBuYW1lMikpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJS Q09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCQkJZXJybXNnKCJwYXJ0aXRpb24gd2l0aCBu YW1lIFwiJXNcIiBpcyBhbHJlYWR5IHVzZWQiLCBuYW1lLT5yZWxuYW1lKSwKKwkJCQkJCXBh cnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgbmFtZTItPmxvY2F0aW9uKSk7CisJCX0K KworCQkvKgorCQkgKiBTZWFyY2ggREVGQVVMVCBwYXJ0aXRpb24gaW4gdGhlIGxpc3QuIE9w ZW4gYW5kIGxvY2sgcGFydGl0aW9ucworCQkgKiBiZWZvcmUgY2FsY3VsYXRpbmcgdGhlIGJv dW5kYXJ5IGZvciByZXN1bHRpbmcgcGFydGl0aW9uLCB3ZSBhbHNvCisJCSAqIGNoZWNrIGZv ciBvd25lcnNoaXAgYWxvbmcgdGhlIHdheS4gIFdlIG5lZWQgdG8gdXNlCisJCSAqIEFjY2Vz c0V4Y2x1c2l2ZUxvY2sgaGVyZSwgYmVjYXVzZSB0aGVzZSBtZXJnZWQgcGFydGl0aW9ucyB3 aWxsIGJlCisJCSAqIGRldGFjaGVkIHRoZW4gZHJvcHBlZCBpbiBBVEV4ZWNNZXJnZVBhcnRp dGlvbnMuCisJCSAqLworCQlwYXJ0T2lkID0gUmFuZ2VWYXJHZXRSZWxpZEV4dGVuZGVkKG5h bWUsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssIDAsCisJCQkJCQkJCQkJICAgUmFuZ2VWYXJDYWxs YmFja093bnNSZWxhdGlvbiwKKwkJCQkJCQkJCQkgICBOVUxMKTsKKwkJLyogSXMgY3VycmVu dCBwYXJ0aXRpb24gYSBERUZBVUxUIHBhcnRpdGlvbj8gKi8KKwkJaWYgKHBhcnRPaWQgPT0g ZGVmYXVsdFBhcnRPaWQpCisJCQlpc0RlZmF1bHRQYXJ0ID0gdHJ1ZTsKKworCQkvKgorCQkg KiBFeHRlbmRlZCBjaGVjayBiZWNhdXNlIHRoZSBzYW1lIHBhcnRpdGlvbiBjYW4gaGF2ZSBk aWZmZXJlbnQgbmFtZXMKKwkJICogKGZvciBleGFtcGxlLCAicGFydF9uYW1lIiBhbmQgInB1 YmxpYy5wYXJ0X25hbWUiKS4KKwkJICovCisJCWZvcmVhY2gobGlzdHB0cjIsIHBhcnRPaWRz KQorCQl7CisJCQlPaWQJCQljdXJPaWQgPSBsZmlyc3Rfb2lkKGxpc3RwdHIyKTsKKworCQkJ aWYgKGN1ck9pZCA9PSBwYXJ0T2lkKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJj b2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJCWVycm1zZygicGFydGl0aW9u IHdpdGggbmFtZSBcIiVzXCIgaXMgYWxyZWFkeSB1c2VkIiwgbmFtZS0+cmVsbmFtZSksCisJ CQkJCQlwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIG5hbWUtPmxvY2F0aW9uKSk7 CisJCX0KKworCQljaGVja1BhcnRpdGlvbihwYXJlbnQsIHBhcnRPaWQpOworCisJCXBhcnRP aWRzID0gbGFwcGVuZF9vaWQocGFydE9pZHMsIHBhcnRPaWQpOworCX0KKworCS8qIEFsbG9j YXRlIGJvdW5kIG9mIHJlc3VsdGluZyBwYXJ0aXRpb24uICovCisJQXNzZXJ0KHBhcnRjbWQt PmJvdW5kID09IE5VTEwpOworCXBhcnRjbWQtPmJvdW5kID0gbWFrZU5vZGUoUGFydGl0aW9u Qm91bmRTcGVjKTsKKworCS8qIEZpbGwgcGFydGl0aW9uIGJvdW5kLiAqLworCXBhcnRjbWQt PmJvdW5kLT5zdHJhdGVneSA9IHN0cmF0ZWd5OworCXBhcnRjbWQtPmJvdW5kLT5sb2NhdGlv biA9IC0xOworCXBhcnRjbWQtPmJvdW5kLT5pc19kZWZhdWx0ID0gaXNEZWZhdWx0UGFydDsK KwlpZiAoIWlzRGVmYXVsdFBhcnQpCisJCWNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9y X21lcmdlKHBhcmVudCwgcGFydGNtZC0+cGFydGxpc3QsCisJCQkJCQkJCQkJCXBhcnRPaWRz LCBwYXJ0Y21kLT5ib3VuZCwKKwkJCQkJCQkJCQkJY3h0LT5wc3RhdGUpOworfQorCiAvKgog ICogdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQgLQogICoJCXBhcnNlIGFuYWx5c2lzIGZvciBB TFRFUiBUQUJMRQpAQCAtMzc4Niw2ICszOTE4LDIwIEBAIHRyYW5zZm9ybUFsdGVyVGFibGVT dG10KE9pZCByZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQsCiAJCQkJbmV3Y21kcyA9IGxh cHBlbmQobmV3Y21kcywgY21kKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBBVF9NZXJnZVBh cnRpdGlvbnM6CisJCQkJeworCQkJCQlQYXJ0aXRpb25DbWQgKnBhcnRjbWQgPSAoUGFydGl0 aW9uQ21kICopIGNtZC0+ZGVmOworCisJCQkJCWlmIChsaXN0X2xlbmd0aChwYXJ0Y21kLT5w YXJ0bGlzdCkgPCAyKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShF UlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCQllcnJtc2coImxp c3Qgb2YgcGFydGl0aW9ucyB0byBiZSBtZXJnZWQgc2hvdWxkIGluY2x1ZGUgYXQgbGVhc3Qg dHdvIHBhcnRpdGlvbnMiKSk7CisKKwkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVy Z2UoJmN4dCwgcGFydGNtZCk7CisJCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2NtZHMsIGNt ZCk7CisJCQkJCWJyZWFrOworCQkJCX0KKwogCQkJZGVmYXVsdDoKIAogCQkJCS8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jIGIvc3JjL2Jh Y2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwppbmRleCA4MjJjZjRlYzQ1Li42MGMx MDM2Y2U4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5k cy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKQEAgLTQ5 NzgsMyArNDk3OCwxOTkgQEAgc2F0aXNmaWVzX2hhc2hfcGFydGl0aW9uKFBHX0ZVTkNUSU9O X0FSR1MpCiAKIAlQR19SRVRVUk5fQk9PTChyb3dIYXNoICUgbW9kdWx1cyA9PSByZW1haW5k ZXIpOwogfQorCisvKgorICogY2hlY2tfdHdvX3BhcnRpdGlvbnNfYm91bmRzX3JhbmdlCisg KgorICogKGZ1bmN0aW9uIGZvciBCWSBSQU5HRSBwYXJ0aXRpb25pbmcpCisgKgorICogVGhp cyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9m b3JfbWVyZ2UoKS4KKyAqIFRoaXMgZnVuY3Rpb24gY29tcGFyZXMgdXBwZXIgYm91bmQgb2Yg Zmlyc3RfYm91bmQgYW5kIGxvd2VyIGJvdW5kIG9mCisgKiBzZWNvbmRfYm91bmQuIFRoZXNl IGJvdW5kcyBzaG91bGQgYmUgZXF1YWwuCisgKgorICogcGFyZW50OgkJCXBhcnRpdGlvbmVk IHRhYmxlCisgKiBmaXJzdF9uYW1lOgkJbmFtZSBvZiBmaXJzdCBwYXJ0aXRpb24KKyAqIGZp cnN0X2JvdW5kOgkJYm91bmQgb2YgZmlyc3QgcGFydGl0aW9uCisgKiBzZWNvbmRfbmFtZToJ CW5hbWUgb2Ygc2Vjb25kIHBhcnRpdGlvbgorICogc2Vjb25kX2JvdW5kOglib3VuZCBvZiBz ZWNvbmQgcGFydGl0aW9uCisgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0 cnVjdCBmb3IgZGV0ZXJtaW5pbmcgZXJyb3IgcG9zaXRpb24KKyAqLworc3RhdGljIHZvaWQK K2NoZWNrX3R3b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZShSZWxhdGlvbiBwYXJlbnQsCisJ CQkJCQkJCSAgUmFuZ2VWYXIgKmZpcnN0X25hbWUsCisJCQkJCQkJCSAgUGFydGl0aW9uQm91 bmRTcGVjICpmaXJzdF9ib3VuZCwKKwkJCQkJCQkJICBSYW5nZVZhciAqc2Vjb25kX25hbWUs CisJCQkJCQkJCSAgUGFydGl0aW9uQm91bmRTcGVjICpzZWNvbmRfYm91bmQsCisJCQkJCQkJ CSAgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXkgPSBSZWxhdGlv bkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCVBhcnRpdGlvblJhbmdlQm91bmQgKmZpcnN0 X3VwcGVyOworCVBhcnRpdGlvblJhbmdlQm91bmQgKnNlY29uZF9sb3dlcjsKKwlpbnQJCQlj bXB2YWw7CisKKwlBc3NlcnQoa2V5LT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lf UkFOR0UpOworCisJZmlyc3RfdXBwZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5kKGtl eSwgLTEsIGZpcnN0X2JvdW5kLT51cHBlcmRhdHVtcywgZmFsc2UpOworCXNlY29uZF9sb3dl ciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgc2Vjb25kX2JvdW5kLT5s b3dlcmRhdHVtcywgdHJ1ZSk7CisKKwkvKgorCSAqIGxvd2VyMT1mYWxzZSAodGhlIHNlY29u ZCB0byBsYXN0IGFyZ3VtZW50KSBmb3IgY29ycmVjdCBjb21wYXJpc29uIG9mCisJICogbG93 ZXIgYW5kIHVwcGVyIGJvdW5kcy4KKwkgKi8KKwljbXB2YWwgPSBwYXJ0aXRpb25fcmJvdW5k X2NtcChrZXktPnBhcnRuYXR0cywKKwkJCQkJCQkJICBrZXktPnBhcnRzdXBmdW5jLAorCQkJ CQkJCQkgIGtleS0+cGFydGNvbGxhdGlvbiwKKwkJCQkJCQkJICBzZWNvbmRfbG93ZXItPmRh dHVtcywgc2Vjb25kX2xvd2VyLT5raW5kLAorCQkJCQkJCQkgIGZhbHNlLCBmaXJzdF91cHBl cik7CisJaWYgKGNtcHZhbCkKKwl7CisJCVBhcnRpdGlvblJhbmdlRGF0dW0gKmRhdHVtID0g bGluaXRpYWwoc2Vjb25kX2JvdW5kLT5sb3dlcmRhdHVtcyk7CisKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJ CQkJZXJybXNnKCJjYW4gbm90IG1lcmdlIHBhcnRpdGlvbiBcIiVzXCIgdG9nZXRoZXIgd2l0 aCBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJICAgc2Vjb25kX25hbWUtPnJlbG5hbWUsIGZp cnN0X25hbWUtPnJlbG5hbWUpLAorCQkJCWVycmRldGFpbCgibG93ZXIgYm91bmQgb2YgcGFy dGl0aW9uIFwiJXNcIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRp dGlvbiBcIiVzXCIiLAorCQkJCQkJICBzZWNvbmRfbmFtZS0+cmVsbmFtZSwgZmlyc3RfbmFt ZS0+cmVsbmFtZSksCisJCQkJZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJ VElPTlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRqYWNlbnQuIiks CisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSk7CisJ fQorfQorCisvKgorICogZ2V0X3BhcnRpdGlvbl9ib3VuZF9zcGVjCisgKgorICogUmV0dXJu cyB0aGUgUGFydGl0aW9uQm91bmRTcGVjIGZvciB0aGUgcGFydGl0aW9uIHdpdGggdGhlIGdp dmVuIE9JRCBwYXJ0T2lkLgorICovCitzdGF0aWMgUGFydGl0aW9uQm91bmRTcGVjICoKK2dl dF9wYXJ0aXRpb25fYm91bmRfc3BlYyhPaWQgcGFydE9pZCkKK3sKKwlIZWFwVHVwbGUJdHVw bGU7CisJRGF0dW0JCWRhdHVtOworCWJvb2wJCWlzbnVsbDsKKwlQYXJ0aXRpb25Cb3VuZFNw ZWMgKmJvdW5kc3BlYyA9IE5VTEw7CisKKwkvKiBUcnkgZmV0Y2hpbmcgdGhlIHR1cGxlIGZy b20gdGhlIGNhdGNhY2hlLCBmb3Igc3BlZWQuICovCisJdHVwbGUgPSBTZWFyY2hTeXNDYWNo ZTEoUkVMT0lELCBwYXJ0T2lkKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQor CQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcmVsYXRpb24gJXUiLCBw YXJ0T2lkKTsKKworCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFJFTE9JRCwgdHVwbGUsCisJ CQkJCQkJQW51bV9wZ19jbGFzc19yZWxwYXJ0Ym91bmQsCisJCQkJCQkJJmlzbnVsbCk7CisJ aWYgKGlzbnVsbCkKKwkJZWxvZyhFUlJPUiwgInBhcnRpdGlvbiBib3VuZCBmb3IgcmVsYXRp b24gJXUgaXMgbnVsbCIsCisJCQkgcGFydE9pZCk7CisKKwlib3VuZHNwZWMgPSBzdHJpbmdU b05vZGUoVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSkpOworCisJaWYgKCFJc0EoYm91bmRz cGVjLCBQYXJ0aXRpb25Cb3VuZFNwZWMpKQorCQllbG9nKEVSUk9SLCAiZXhwZWN0ZWQgUGFy dGl0aW9uQm91bmRTcGVjIGZvciByZWxhdGlvbiAldSIsCisJCQkgcGFydE9pZCk7CisKKwlS ZWxlYXNlU3lzQ2FjaGUodHVwbGUpOworCXJldHVybiBib3VuZHNwZWM7Cit9CisKKy8qCisg KiBjYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZQorICoKKyAqIENhbGN1bGF0 ZXMgdGhlIGJvdW5kIG9mIG1lcmdlZCBwYXJ0aXRpb24gInNwZWMiIGJ5IHVzaW5nIHRoZSBi b3VuZHMgb2YKKyAqIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2VkLgorICoKKyAqIHBhcmVudDoJ CQlwYXJ0aXRpb25lZCB0YWJsZQorICogcGFydE5hbWVzOgkJbmFtZXMgb2YgcGFydGl0aW9u cyB0byBiZSBtZXJnZWQKKyAqIHBhcnRPaWRzOgkJT2lkcyBvZiBwYXJ0aXRpb25zIHRvIGJl IG1lcmdlZAorICogc3BlYyAob3V0KToJCWJvdW5kcyBzcGVjaWZpY2F0aW9uIG9mIHRoZSBt ZXJnZWQgcGFydGl0aW9uCisgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0 cnVjdCBmb3IgZGV0ZXJtaW5lIGVycm9yIHBvc2l0aW9uCisgKi8KK3ZvaWQKK2NhbGN1bGF0 ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJ CUxpc3QgKnBhcnROYW1lcywKKwkJCQkJCQkJCUxpc3QgKnBhcnRPaWRzLAorCQkJCQkJCQkJ UGFydGl0aW9uQm91bmRTcGVjICpzcGVjLAorCQkJCQkJCQkJUGFyc2VTdGF0ZSAqcHN0YXRl KQoreworCVBhcnRpdGlvbktleSBrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJl bnQpOworCVBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQ7CisKKwlBc3NlcnQoIXNwZWMtPmlz X2RlZmF1bHQpOworCisJc3dpdGNoIChrZXktPnN0cmF0ZWd5KQorCXsKKwkJY2FzZSBQQVJU SVRJT05fU1RSQVRFR1lfUkFOR0U6CisJCQl7CisJCQkJaW50CQkJaTsKKwkJCQlQYXJ0aXRp b25SYW5nZUJvdW5kICoqbG93ZXJfYm91bmRzOworCQkJCWludAkJCW5wYXJ0cyA9IGxpc3Rf bGVuZ3RoKHBhcnRPaWRzKTsKKwkJCQlMaXN0CSAgICpib3VuZHMgPSBOSUw7CisKKwkJCQls b3dlcl9ib3VuZHMgPSAoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKikKKwkJCQkJcGFsbG9jMChu cGFydHMgKiBzaXplb2YoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKSk7CisKKwkJCQkvKgorCQkJ CSAqIENyZWF0ZSBhcnJheSBvZiBsb3dlciBib3VuZHMgYW5kIGxpc3Qgb2YKKwkJCQkgKiBQ YXJ0aXRpb25Cb3VuZFNwZWMuCisJCQkJICovCisJCQkJZm9yZWFjaF9vaWQocGFydG9pZCwg cGFydE9pZHMpCisJCQkJeworCQkJCQlib3VuZCA9IGdldF9wYXJ0aXRpb25fYm91bmRfc3Bl YyhwYXJ0b2lkKTsKKwkJCQkJaSA9IGZvcmVhY2hfY3VycmVudF9pbmRleChwYXJ0b2lkKTsK KworCQkJCQlsb3dlcl9ib3VuZHNbaV0gPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5kKGtl eSwgaSwgYm91bmQtPmxvd2VyZGF0dW1zLCB0cnVlKTsKKwkJCQkJYm91bmRzID0gbGFwcGVu ZChib3VuZHMsIGJvdW5kKTsKKwkJCQl9CisKKwkJCQkvKiBTb3J0IGFycmF5IG9mIGxvd2Vy IGJvdW5kcy4gKi8KKwkJCQlxc29ydF9hcmcobG93ZXJfYm91bmRzLCBucGFydHMsIHNpemVv ZihQYXJ0aXRpb25SYW5nZUJvdW5kICopLAorCQkJCQkJICBxc29ydF9wYXJ0aXRpb25fcmJv dW5kX2NtcCwga2V5KTsKKworCQkJCS8qIFJhbmdlcyBvZiBwYXJ0aXRpb25zIHNob3VsZCBi ZSBhZGphY2VudC4gKi8KKwkJCQlmb3IgKGkgPSAxOyBpIDwgbnBhcnRzOyBpKyspCisJCQkJ eworCQkJCQlpbnQJCQlpbmRleCA9IGxvd2VyX2JvdW5kc1tpXS0+aW5kZXg7CisJCQkJCWlu dAkJCXByZXZfaW5kZXggPSBsb3dlcl9ib3VuZHNbaSAtIDFdLT5pbmRleDsKKworCQkJCQlj aGVja190d29fcGFydGl0aW9uc19ib3VuZHNfcmFuZ2UocGFyZW50LAorCQkJCQkJCQkJCQkJ CSAgKFJhbmdlVmFyICopIGxpc3RfbnRoKHBhcnROYW1lcywgcHJldl9pbmRleCksCisJCQkJ CQkJCQkJCQkJICAoUGFydGl0aW9uQm91bmRTcGVjICopIGxpc3RfbnRoKGJvdW5kcywgcHJl dl9pbmRleCksCisJCQkJCQkJCQkJCQkJICAoUmFuZ2VWYXIgKikgbGlzdF9udGgocGFydE5h bWVzLCBpbmRleCksCisJCQkJCQkJCQkJCQkJICAoUGFydGl0aW9uQm91bmRTcGVjICopIGxp c3RfbnRoKGJvdW5kcywgaW5kZXgpLAorCQkJCQkJCQkJCQkJCSAgcHN0YXRlKTsKKwkJCQl9 CisKKwkJCQkvKgorCQkJCSAqIExvd2VyIGJvdW5kIG9mIGZpcnN0IHBhcnRpdGlvbiBpcyB0 aGUgbG93ZXIgYm91bmQgb2YgbWVyZ2VkCisJCQkJICogcGFydGl0aW9uLgorCQkJCSAqLwor CQkJCXNwZWMtPmxvd2VyZGF0dW1zID0KKwkJCQkJKChQYXJ0aXRpb25Cb3VuZFNwZWMgKikg bGlzdF9udGgoYm91bmRzLCBsb3dlcl9ib3VuZHNbMF0tPmluZGV4KSktPmxvd2VyZGF0dW1z OworCisJCQkJLyoKKwkJCQkgKiBVcHBlciBib3VuZCBvZiBsYXN0IHBhcnRpdGlvbiBpcyB0 aGUgdXBwZXIgYm91bmQgb2YgbWVyZ2VkCisJCQkJICogcGFydGl0aW9uLgorCQkJCSAqLwor CQkJCXNwZWMtPnVwcGVyZGF0dW1zID0KKwkJCQkJKChQYXJ0aXRpb25Cb3VuZFNwZWMgKikg bGlzdF9udGgoYm91bmRzLCBsb3dlcl9ib3VuZHNbbnBhcnRzIC0gMV0tPmluZGV4KSktPnVw cGVyZGF0dW1zOworCisJCQkJcGZyZWUobG93ZXJfYm91bmRzKTsKKwkJCQlsaXN0X2ZyZWUo Ym91bmRzKTsKKwkJCQlicmVhazsKKwkJCX0KKworCQljYXNlIFBBUlRJVElPTl9TVFJBVEVH WV9MSVNUOgorCQkJeworCQkJCS8qIENvbnNvbGlkYXRlIGJvdW5kcyBmb3IgYWxsIHBhcnRp dGlvbnMgaW4gdGhlIGxpc3QuICovCisJCQkJZm9yZWFjaF9vaWQocGFydG9pZCwgcGFydE9p ZHMpCisJCQkJeworCQkJCQlib3VuZCA9IGdldF9wYXJ0aXRpb25fYm91bmRfc3BlYyhwYXJ0 b2lkKTsKKwkJCQkJc3BlYy0+bGlzdGRhdHVtcyA9IGxpc3RfY29uY2F0KHNwZWMtPmxpc3Rk YXR1bXMsIGJvdW5kLT5saXN0ZGF0dW1zKTsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQl9CisK KwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIHBhcnRpdGlvbiBzdHJh dGVneTogJWQiLAorCQkJCSAoaW50KSBrZXktPnN0cmF0ZWd5KTsKKwl9Cit9CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFi LWNvbXBsZXRlLmluLmMKaW5kZXggNmIyMGE0NDA0Yi4uM2VjMDMzZDhkOCAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuaW4uYwpAQCAtMjc1MCw2ICsyNzUwLDcgQEAgbWF0Y2hfcHJldmlvdXNf d29yZHMoaW50IHBhdHRlcm5faWQsCiAJCQkJCSAgIk9XTkVSIFRPIiwgIlNFVCIsICJWQUxJ REFURSBDT05TVFJBSU5UIiwKIAkJCQkJICAiUkVQTElDQSBJREVOVElUWSIsICJBVFRBQ0gg UEFSVElUSU9OIiwKIAkJCQkJICAiREVUQUNIIFBBUlRJVElPTiIsICJGT1JDRSBST1cgTEVW RUwgU0VDVVJJVFkiLAorCQkJCQkgICJNRVJHRSBQQVJUSVRJT05TICgiLAogCQkJCQkgICJP RiIsICJOT1QgT0YiKTsKIAkvKiBBTFRFUiBUQUJMRSB4eHggQUREICovCiAJZWxzZSBpZiAo TWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIkFERCIpKQpAQCAtMzAyMyw2 ICszMDI0LDE1IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCWVs c2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJERVRBQ0giLCAi UEFSVElUSU9OIiwgTWF0Y2hBbnkpKQogCQlDT01QTEVURV9XSVRIKCJDT05DVVJSRU5UTFki LCAiRklOQUxJWkUiKTsKIAorCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBNRVJHRSBQQVJUSVRJ T05TICggKi8KKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJUQUJMRSIsIE1hdGNoQW55 LCAiTUVSR0UiLCAiUEFSVElUSU9OUyIsICIoIikpCisJeworCQlzZXRfY29tcGxldGlvbl9y ZWZlcmVuY2UocHJldjRfd2QpOworCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVy eV9mb3JfcGFydGl0aW9uX29mX3RhYmxlKTsKKwl9CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxU RVIiLCAiVEFCTEUiLCBNYXRjaEFueSwgIk1FUkdFIiwgIlBBUlRJVElPTlMiLCAiKCopIikp CisJCUNPTVBMRVRFX1dJVEgoIklOVE8iKTsKKwogCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBP RiAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJP RiIpKQogCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9j b21wb3NpdGVfZGF0YXR5cGVzKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv ZGVwZW5kZW5jeS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKaW5kZXgg MGVhN2NjZjUyNC4uZjU0MjMzNDk5YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9kZXBlbmRlbmN5LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgK QEAgLTEwNyw2ICsxMDcsOCBAQCBleHRlcm4gdm9pZCBSZWxlYXNlRGVsZXRpb25Mb2NrKGNv bnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCk7CiBleHRlcm4gdm9pZCBwZXJmb3JtRGVsZXRp b24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJCQkJCURyb3BCZWhhdmlvciBi ZWhhdmlvciwgaW50IGZsYWdzKTsKIAorZXh0ZXJuIHZvaWQgcGVyZm9ybURlbGV0aW9uQ2hl Y2soY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAorCQkJCQkJCQkgRHJvcEJlaGF2aW9y IGJlaGF2aW9yLCBpbnQgZmxhZ3MpOwogZXh0ZXJuIHZvaWQgcGVyZm9ybU11bHRpcGxlRGVs ZXRpb25zKGNvbnN0IE9iamVjdEFkZHJlc3NlcyAqb2JqZWN0cywKIAkJCQkJCQkJCSBEcm9w QmVoYXZpb3IgYmVoYXZpb3IsIGludCBmbGFncyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aAppbmRleCA4NmEyMzZiZDU4Li5iMWIzMzE1ZmU1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oCkBAIC05NjQsMTMgKzk2NCwxNiBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25SYW5n ZURhdHVtCiB9IFBhcnRpdGlvblJhbmdlRGF0dW07CiAKIC8qCi0gKiBQYXJ0aXRpb25DbWQg LSBpbmZvIGZvciBBTFRFUiBUQUJMRS9JTkRFWCBBVFRBQ0gvREVUQUNIIFBBUlRJVElPTiBj b21tYW5kcworICogUGFydGl0aW9uQ21kIC0gaW5mbyBmb3IgQUxURVIgVEFCTEUvSU5ERVgg QVRUQUNIL0RFVEFDSCBQQVJUSVRJT04gYW5kIGZvcgorICoJICBBTFRFUiBUQUJMRSBNRVJH RSBQQVJUSVRJT05TIGNvbW1hbmRzCiAgKi8KIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvbkNt ZAogewogCU5vZGVUYWcJCXR5cGU7Ci0JUmFuZ2VWYXIgICAqbmFtZTsJCQkvKiBuYW1lIG9m IHBhcnRpdGlvbiB0byBhdHRhY2gvZGV0YWNoICovCisJUmFuZ2VWYXIgICAqbmFtZTsJCQkv KiBuYW1lIG9mIHBhcnRpdGlvbiB0byBhdHRhY2gvZGV0YWNoL21lcmdlICovCiAJUGFydGl0 aW9uQm91bmRTcGVjICpib3VuZDsJLyogRk9SIFZBTFVFUywgaWYgYXR0YWNoaW5nICovCisJ TGlzdAkgICAqcGFydGxpc3Q7CQkvKiBsaXN0IG9mIHBhcnRpdGlvbnMgdG8gYmUgbWVyZ2Vk LCB1c2VkIGluCisJCQkJCQkJCSAqIEFMVEVSIFRBQkxFIE1FUkdFIFBBUlRJVElPTlMgKi8K IAlib29sCQljb25jdXJyZW50OwogfSBQYXJ0aXRpb25DbWQ7CiAKQEAgLTI0NzMsNiArMjQ3 Niw3IEBAIHR5cGVkZWYgZW51bSBBbHRlclRhYmxlVHlwZQogCUFUX0F0dGFjaFBhcnRpdGlv biwJCQkvKiBBVFRBQ0ggUEFSVElUSU9OICovCiAJQVRfRGV0YWNoUGFydGl0aW9uLAkJCS8q IERFVEFDSCBQQVJUSVRJT04gKi8KIAlBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZSwgLyog REVUQUNIIFBBUlRJVElPTiBGSU5BTElaRSAqLworCUFUX01lcmdlUGFydGl0aW9ucywJCQkv KiBNRVJHRSBQQVJUSVRJT05TICovCiAJQVRfQWRkSWRlbnRpdHksCQkJCS8qIEFERCBJREVO VElUWSAqLwogCUFUX1NldElkZW50aXR5LAkJCQkvKiBTRVQgaWRlbnRpdHkgY29sdW1uIG9w dGlvbnMgKi8KIAlBVF9Ecm9wSWRlbnRpdHksCQkJLyogRFJPUCBJREVOVElUWSAqLwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFy c2VyL2t3bGlzdC5oCmluZGV4IGE0YWYzZjcxN2EuLjkwZThjZGRmOGIgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIv a3dsaXN0LmgKQEAgLTMzNyw2ICszMzcsNyBAQCBQR19LRVlXT1JEKCJwYXJhbWV0ZXIiLCBQ QVJBTUVURVIsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo InBhcnNlciIsIFBBUlNFUiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdf S0VZV09SRCgicGFydGlhbCIsIFBBUlRJQUwsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoInBhcnRpdGlvbiIsIFBBUlRJVElPTiwgVU5SRVNFUlZFRF9L RVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgicGFydGl0aW9ucyIsIFBBUlRJVElP TlMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhc3Np bmciLCBQQVNTSU5HLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlX T1JEKCJwYXNzd29yZCIsIFBBU1NXT1JELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJwYXRoIiwgUEFUSCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJF X0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3Vu ZHMuaCBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKaW5kZXggMDgz YjZlM2E4OC4uZjZmYzEwZDM0MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFydGl0aW9u aW5nL3BhcnRib3VuZHMuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJv dW5kcy5oCkBAIC0xNDMsNCArMTQzLDEwIEBAIGV4dGVybiBpbnQJcGFydGl0aW9uX3Jhbmdl X2RhdHVtX2JzZWFyY2goRm1nckluZm8gKnBhcnRzdXBmdW5jLAogZXh0ZXJuIGludAlwYXJ0 aXRpb25faGFzaF9ic2VhcmNoKFBhcnRpdGlvbkJvdW5kSW5mbyBib3VuZGluZm8sCiAJCQkJ CQkJCSAgIGludCBtb2R1bHVzLCBpbnQgcmVtYWluZGVyKTsKIAorZXh0ZXJuIHZvaWQgY2Fs Y3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24gcGFyZW50LAorCQkJ CQkJCQkJCQkJTGlzdCAqcGFydE5hbWVzLAorCQkJCQkJCQkJCQkJTGlzdCAqcGFydE9pZHMs CisJCQkJCQkJCQkJCQlQYXJ0aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJCQkJCQkJCQkJCQlQ YXJzZVN0YXRlICpwc3RhdGUpOworCiAjZW5kaWYJCQkJCQkJLyogUEFSVEJPVU5EU19IICov CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0aW9uLW1l cmdlLm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tbWVyZ2Uu b3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjVmNjQ3MjY3MWIK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvcGFydGl0 aW9uLW1lcmdlLm91dApAQCAtMCwwICsxLDI0MyBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRo IDIgc2Vzc2lvbnMKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYiBzMmkgczJjIHMxYiBz MW1lcmcgczJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6 IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENP TU1JVDsKK3N0ZXAgczFiOiBCRUdJTjsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFy dCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBh cnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNF VCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBz MWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01N SVQ7CitzdGVwIHMyczogU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHRwYXJ0 IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgaTsKK3Rh Ymxlb2lkICAgICB8IGl8dCAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0rLS0rLS0tLS0tLS0t LS0KK3RwYXJ0XzAwXzIwICB8IDF8dGV4dDAxbW9kaWYKK3RwYXJ0XzAwXzIwICB8IDV8dGV4 dDA1ICAgICAKK3RwYXJ0XzAwXzIwICB8MTV8dGV4dDE1ICAgICAKK3RwYXJ0XzIwXzMwICB8 MjV8dGV4dDI1ICAgICAKK3RwYXJ0X2RlZmF1bHR8MzV8dGV4dDM1ICAgICAKKyg1IHJvd3Mp CisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYiBzMmkgczJjIHMxYnJyIHMxbWVyZyBz MmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMyaTogSU5TRVJU IElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMyYzogQ09NTUlUOwor c3RlcCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0 ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8w MF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47 CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBp ID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4u IGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUIHRhYmxl b2lkOjpyZWdjbGFzcywgKiBGUk9NIHRwYXJ0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFz czo6dGV4dCBDT0xMQVRFICJDIiwgaTsKK3RhYmxlb2lkICAgICB8IGl8dCAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0rLS0rLS0tLS0tLS0tLS0KK3RwYXJ0XzAwXzIwICB8IDF8dGV4dDAx bW9kaWYKK3RwYXJ0XzAwXzIwICB8IDV8dGV4dDA1ICAgICAKK3RwYXJ0XzAwXzIwICB8MTV8 dGV4dDE1ICAgICAKK3RwYXJ0XzIwXzMwICB8MjV8dGV4dDI1ICAgICAKK3RwYXJ0X2RlZmF1 bHR8MzV8dGV4dDM1ICAgICAKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246 IHMyYiBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0ZXAgczJi OiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0 MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYnM6IEJFR0lOIElTT0xBVElPTiBM RVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVS R0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAw XzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9 ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBD T01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOwor c3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRF UiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9p ZCAgICAgfCBpfHQgICAgICAgICAgCistLS0tLS0tLS0tLS0tKy0tKy0tLS0tLS0tLS0tCit0 cGFydF8wMF8yMCAgfCAxfHRleHQwMW1vZGlmCit0cGFydF8wMF8yMCAgfCA1fHRleHQwNSAg ICAgCit0cGFydF8wMF8yMCAgfDE1fHRleHQxNSAgICAgCit0cGFydF8yMF8zMCAgfDI1fHRl eHQyNSAgICAgCit0cGFydF9kZWZhdWx0fDM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisK K3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmJyciBzMmkgczJjIHMxYiBzMW1lcmcgczJiIHMy dSBzMWMgczJjIHMycworc3RlcCBzMmJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVB VEFCTEUgUkVBRDsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0 ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMx bWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAs IHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3Rl cCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7 IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21w bGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6 cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRl eHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgICAgICAgCistLS0t LS0tLS0tLS0tKy0tKy0tLS0tLS0tLS0tCit0cGFydF8wMF8yMCAgfCAxfHRleHQwMW1vZGlm Cit0cGFydF8wMF8yMCAgfCA1fHRleHQwNSAgICAgCit0cGFydF8wMF8yMCAgfDE1fHRleHQx NSAgICAgCit0cGFydF8yMF8zMCAgfDI1fHRleHQyNSAgICAgCit0cGFydF9kZWZhdWx0fDM1 fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmJy ciBzMmkgczJjIHMxYnJyIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMyYnJy OiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMmk6IElO U0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENPTU1J VDsKK3N0ZXAgczFicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7 CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBh cnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJF R0lOOworc3RlcCBzMnU6IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hl cmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTog PC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0 YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVn Y2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgICAg ICAgCistLS0tLS0tLS0tLS0tKy0tKy0tLS0tLS0tLS0tCit0cGFydF8wMF8yMCAgfCAxfHRl eHQwMW1vZGlmCit0cGFydF8wMF8yMCAgfCA1fHRleHQwNSAgICAgCit0cGFydF8wMF8yMCAg fDE1fHRleHQxNSAgICAgCit0cGFydF8yMF8zMCAgfDI1fHRleHQyNSAgICAgCit0cGFydF9k ZWZhdWx0fDM1fHRleHQzNSAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0 aW9uOiBzMmJyciBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3N0 ZXAgczJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVw IHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7CitzdGVwIHMy YzogQ09NTUlUOworc3RlcCBzMWJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpB QkxFOworc3RlcCBzMW1lcmc6IEFMVEVSIFRBQkxFIHRwYXJ0IE1FUkdFIFBBUlRJVElPTlMg KHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8wMF8yMDsKK3N0ZXAgczJi OiBCRUdJTjsKK3N0ZXAgczJ1OiBVUERBVEUgdHBhcnQgU0VUIHQgPSAndGV4dDAxbW9kaWYn IHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBz MnU6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxF Q1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBhcnQgT1JERVIgQlkgdGFibGVvaWQ6 OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBpOwordGFibGVvaWQgICAgIHwgaXx0ICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLSstLSstLS0tLS0tLS0tLQordHBhcnRfMDBfMjAgIHwg MXx0ZXh0MDFtb2RpZgordHBhcnRfMDBfMjAgIHwgNXx0ZXh0MDUgICAgIAordHBhcnRfMDBf MjAgIHwxNXx0ZXh0MTUgICAgIAordHBhcnRfMjBfMzAgIHwyNXx0ZXh0MjUgICAgIAordHBh cnRfZGVmYXVsdHwzNXx0ZXh0MzUgICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJt dXRhdGlvbjogczJicyBzMmkgczJjIHMxYiBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMycwor c3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBz Mmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6 IENPTU1JVDsKK3N0ZXAgczFiOiBCRUdJTjsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0 cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8g dHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0 IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3Rl cCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBD T01NSVQ7CitzdGVwIHMyczogU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHRw YXJ0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgaTsK K3RhYmxlb2lkICAgICB8IGl8dCAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0rLS0rLS0tLS0t LS0tLS0KK3RwYXJ0XzAwXzIwICB8IDF8dGV4dDAxbW9kaWYKK3RwYXJ0XzAwXzIwICB8IDV8 dGV4dDA1ICAgICAKK3RwYXJ0XzAwXzIwICB8MTV8dGV4dDE1ICAgICAKK3RwYXJ0XzIwXzMw ICB8MjV8dGV4dDI1ICAgICAKK3RwYXJ0X2RlZmF1bHR8MzV8dGV4dDM1ICAgICAKKyg1IHJv d3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYnMgczJpIHMyYyBzMWJyciBzMW1l cmcgczJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJT04gTEVW RUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAo MSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFicnI6IEJFR0lOIElT T0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMxbWVyZzogQUxURVIgVEFC TEUgdHBhcnQgTUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJ TlRPIHRwYXJ0XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnU6IFVQREFURSB0 cGFydCBTRVQgdCA9ICd0ZXh0MDFtb2RpZicgd2hlcmUgaSA9IDE7IDx3YWl0aW5nIC4uLj4K K3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMy YzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJP TSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIs IGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgICAgICAgCistLS0tLS0tLS0tLS0tKy0tKy0t LS0tLS0tLS0tCit0cGFydF8wMF8yMCAgfCAxfHRleHQwMW1vZGlmCit0cGFydF8wMF8yMCAg fCA1fHRleHQwNSAgICAgCit0cGFydF8wMF8yMCAgfDE1fHRleHQxNSAgICAgCit0cGFydF8y MF8zMCAgfDI1fHRleHQyNSAgICAgCit0cGFydF9kZWZhdWx0fDM1fHRleHQzNSAgICAgCiso NSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMmJzIHMyaSBzMmMgczFicyBz MW1lcmcgczJiIHMydSBzMWMgczJjIHMycworc3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJT04g TEVWRUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVF UyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFiczogQkVHSU4g SVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJM RSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElO VE8gdHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBEQVRFIHRw YXJ0IFNFVCB0ID0gJ3RleHQwMW1vZGlmJyB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgor c3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1OiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJj OiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9N IHRwYXJ0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwg aTsKK3RhYmxlb2lkICAgICB8IGl8dCAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0rLS0rLS0t LS0tLS0tLS0KK3RwYXJ0XzAwXzIwICB8IDF8dGV4dDAxbW9kaWYKK3RwYXJ0XzAwXzIwICB8 IDV8dGV4dDA1ICAgICAKK3RwYXJ0XzAwXzIwICB8MTV8dGV4dDE1ICAgICAKK3RwYXJ0XzIw XzMwICB8MjV8dGV4dDI1ICAgICAKK3RwYXJ0X2RlZmF1bHR8MzV8dGV4dDM1ICAgICAKKyg1 IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMyYiBzMmkgczJjIHMxYiBzMW1l cmcgczJiIHMydTIgczFjIHMyYyBzMnMKK3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJ TlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsKK3N0ZXAgczJjOiBDT01N SVQ7CitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxbWVyZzogQUxURVIgVEFCTEUgdHBhcnQg TUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0 XzAwXzIwOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMnUyOiBVUERBVEUgdHBhcnQgU0VU IGkgPSAyMSB3aGVyZSBpID0gMTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsK K3N0ZXAgczJ1MjogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBz MnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0 YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAg fCBpfHQgICAgIAorLS0tLS0tLS0tLS0tLSstLSstLS0tLS0KK3RwYXJ0XzAwXzIwICB8IDV8 dGV4dDA1Cit0cGFydF8wMF8yMCAgfDE1fHRleHQxNQordHBhcnRfMjBfMzAgIHwyMXx0ZXh0 MDEKK3RwYXJ0XzIwXzMwICB8MjV8dGV4dDI1Cit0cGFydF9kZWZhdWx0fDM1fHRleHQzNQor KDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJiIHMyaSBzMmMgczFiIHMx bWVyZyBzMmIgczJ1MyBzMWMgczJjIHMycworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBzMmk6 IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOworc3RlcCBzMmM6IENP TU1JVDsKK3N0ZXAgczFiOiBCRUdJTjsKK3N0ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFy dCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8wMF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBh cnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTM6IFVQREFURSB0cGFydCBT RVQgaSA9IDExIHdoZXJlIGkgPSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlU Oworc3RlcCBzMnUzOiA8Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVw IHMyczogU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHRwYXJ0IE9SREVSIEJZ IHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgaTsKK3RhYmxlb2lkICAg ICB8IGl8dCAgICAgCistLS0tLS0tLS0tLS0tKy0tKy0tLS0tLQordHBhcnRfMDBfMjAgIHwg NXx0ZXh0MDUKK3RwYXJ0XzAwXzIwICB8MTF8dGV4dDAxCit0cGFydF8wMF8yMCAgfDE1fHRl eHQxNQordHBhcnRfMjBfMzAgIHwyNXx0ZXh0MjUKK3RwYXJ0X2RlZmF1bHR8MzV8dGV4dDM1 CisoNSByb3dzKQorCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9u X3NjaGVkdWxlIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQppbmRl eCA1YWZhZTMzZDM3Li44NTQxNTQ2Njc4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9pc29sYXRp b24vaXNvbGF0aW9uX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRp b25fc2NoZWR1bGUKQEAgLTExMCw2ICsxMTAsNyBAQCB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVw ZGF0ZS0xCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0yCiB0ZXN0OiBwYXJ0aXRpb24t a2V5LXVwZGF0ZS0zCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS00Cit0ZXN0OiBwYXJ0 aXRpb24tbWVyZ2UKIHRlc3Q6IHBscGdzcWwtdG9hc3QKIHRlc3Q6IGNsdXN0ZXItY29uZmxp Y3QKIHRlc3Q6IGNsdXN0ZXItY29uZmxpY3QtcGFydGl0aW9uCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLW1lcmdlLnNwZWMgYi9zcmMvdGVzdC9p c29sYXRpb24vc3BlY3MvcGFydGl0aW9uLW1lcmdlLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uZjNjNWNlMmZiZgotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tbWVyZ2Uuc3BlYwpAQCAtMCwwICsx LDYyIEBACisjIFZlcmlmeSB0aGF0IE1FUkdFIG9wZXJhdGlvbiBsb2NrcyBETUwgb3BlcmF0 aW9ucyB3aXRoIHBhcnRpdGlvbmVkIHRhYmxlCisKK3NldHVwCit7CisgIERST1AgVEFCTEUg SUYgRVhJU1RTIHRwYXJ0OworICBDUkVBVEUgVEFCTEUgdHBhcnQoaSBpbnQsIHQgdGV4dCkg cGFydGl0aW9uIGJ5IHJhbmdlKGkpOworICBDUkVBVEUgVEFCTEUgdHBhcnRfMDBfMTAgUEFS VElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKTsKKyAgQ1JFQVRF IFRBQkxFIHRwYXJ0XzEwXzIwIFBBUlRJVElPTiBPRiB0cGFydCBGT1IgVkFMVUVTIEZST00g KDEwKSBUTyAoMjApOworICBDUkVBVEUgVEFCTEUgdHBhcnRfMjBfMzAgUEFSVElUSU9OIE9G IHRwYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCk7CisgIENSRUFURSBUQUJMRSB0 cGFydF9kZWZhdWx0IFBBUlRJVElPTiBPRiB0cGFydCBERUZBVUxUOworICBJTlNFUlQgSU5U TyB0cGFydCBWQUxVRVMgKDUsICd0ZXh0MDUnKTsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFM VUVTICgxNSwgJ3RleHQxNScpOworICBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDI1LCAn dGV4dDI1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMzUsICd0ZXh0MzUnKTsK K30KKwordGVhcmRvd24KK3sKKyAgRFJPUCBUQUJMRSB0cGFydDsKK30KKworc2Vzc2lvbiBz MQorc3RlcCBzMWIJeyBCRUdJTjsgfQorc3RlcCBzMWJycgl7IEJFR0lOIElTT0xBVElPTiBM RVZFTCBSRVBFQVRBQkxFIFJFQUQ7IH0KK3N0ZXAgczFicwl7IEJFR0lOIElTT0xBVElPTiBM RVZFTCBTRVJJQUxJWkFCTEU7IH0KK3N0ZXAgczFtZXJnCXsgQUxURVIgVEFCTEUgdHBhcnQg TUVSR0UgUEFSVElUSU9OUyAodHBhcnRfMDBfMTAsIHRwYXJ0XzEwXzIwKSBJTlRPIHRwYXJ0 XzAwXzIwOyB9CitzdGVwIHMxYwl7IENPTU1JVDsgfQorCisKK3Nlc3Npb24gczIKK3N0ZXAg czJiCXsgQkVHSU47IH0KK3N0ZXAgczJicnIJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQ RUFUQUJMRSBSRUFEOyB9CitzdGVwIHMyYnMJeyBCRUdJTiBJU09MQVRJT04gTEVWRUwgU0VS SUFMSVpBQkxFOyB9CitzdGVwIHMyaQl7IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwg J3RleHQwMScpOyB9CitzdGVwIHMydQl7IFVQREFURSB0cGFydCBTRVQgdCA9ICd0ZXh0MDFt b2RpZicgd2hlcmUgaSA9IDE7IH0KK3N0ZXAgczJ1Mgl7IFVQREFURSB0cGFydCBTRVQgaSA9 IDIxIHdoZXJlIGkgPSAxOyB9CitzdGVwIHMydTMJeyBVUERBVEUgdHBhcnQgU0VUIGkgPSAx MSB3aGVyZSBpID0gMTsgfQorc3RlcCBzMmMJeyBDT01NSVQ7IH0KK3N0ZXAgczJzCXsgU0VM RUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHRwYXJ0IE9SREVSIEJZIHRhYmxlb2lk OjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgaTsgfQorCisKKyMgczIgaW5zZXJ0cyBy b3cgaW50byB0YWJsZS4gczEgc3RhcnRzIE1FUkdFIFBBUlRJVElPTlMgdGhlbgorIyBzMiBp cyB0cnlpbmcgdG8gdXBkYXRlIGluc2VydGVkIHJvdyBhbmQgd2FpdHMgdW50aWwgczEgZmlu aXNoZXMKKyMgTUVSR0Ugb3BlcmF0aW9uLgorCitwZXJtdXRhdGlvbiBzMmIgczJpIHMyYyBz MWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMyYiBzMmkgczJj IHMxYnJyIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMmIgczJp IHMyYyBzMWJzIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCisKK3Blcm11dGF0aW9uIHMy YnJyIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitwZXJtdXRhdGlv biBzMmJyciBzMmkgczJjIHMxYnJyIHMxbWVyZyBzMmIgczJ1IHMxYyBzMmMgczJzCitwZXJt dXRhdGlvbiBzMmJyciBzMmkgczJjIHMxYnMgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMK KworcGVybXV0YXRpb24gczJicyBzMmkgczJjIHMxYiBzMW1lcmcgczJiIHMydSBzMWMgczJj IHMycworcGVybXV0YXRpb24gczJicyBzMmkgczJjIHMxYnJyIHMxbWVyZyBzMmIgczJ1IHMx YyBzMmMgczJzCitwZXJtdXRhdGlvbiBzMmJzIHMyaSBzMmMgczFicyBzMW1lcmcgczJiIHMy dSBzMWMgczJjIHMycworCisjIFR1cGxlIHJvdXRpbmcgYmV0d2VlbiBwYXJ0aXRpb25zLgor cGVybXV0YXRpb24gczJiIHMyaSBzMmMgczFiIHMxbWVyZyBzMmIgczJ1MiBzMWMgczJjIHMy cworCisjIFR1cGxlIHJvdXRpbmcgYmV0d2VlbiBtZXJnaW5nIHBhcnRpdGlvbnMuCitwZXJt dXRhdGlvbiBzMmIgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUzIHMxYyBzMmMgczJzCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvZXhwZWN0ZWQv YWx0ZXJfdGFibGUub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL2V4 cGVjdGVkL2FsdGVyX3RhYmxlLm91dAppbmRleCA1MGQwMzU0YTM0Li5jNDAzYzJmNTY5IDEw MDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvZXhwZWN0ZWQv YWx0ZXJfdGFibGUub3V0CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJz ZS9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKQEAgLTU2LDYgKzU2LDExIEBAIEFMVEVSIFRB QkxFIHBhcnQgREVUQUNIIFBBUlRJVElPTiBwYXJ0MjsKIE5PVElDRTogIERETCB0ZXN0OiB0 eXBlIGFsdGVyIHRhYmxlLCB0YWcgQUxURVIgVEFCTEUKIE5PVElDRTogICAgc3ViY29tbWFu ZDogdHlwZSBERVRBQ0ggUEFSVElUSU9OIGRlc2MgdGFibGUgcGFydDIKIERST1AgVEFCTEUg cGFydDI7CitDUkVBVEUgVEFCTEUgcGFydDIgUEFSVElUSU9OIE9GIHBhcnQgRk9SIFZBTFVF UyBGUk9NICgxMDApIHRvICgyMDApOworTk9USUNFOiAgRERMIHRlc3Q6IHR5cGUgc2ltcGxl LCB0YWcgQ1JFQVRFIFRBQkxFCitBTFRFUiBUQUJMRSBwYXJ0IE1FUkdFIFBBUlRJVElPTlMg KHBhcnQxLCBwYXJ0MikgSU5UTyBwYXJ0MTsKK05PVElDRTogIERETCB0ZXN0OiB0eXBlIGFs dGVyIHRhYmxlLCB0YWcgQUxURVIgVEFCTEUKK05PVElDRTogICAgc3ViY29tbWFuZDogdHlw ZSBNRVJHRSBQQVJUSVRJT05TIGRlc2MgPE5VTEw+CiBBTFRFUiBUQUJMRSBwYXJ0IEFERCBQ UklNQVJZIEtFWSAoYSk7CiBOT1RJQ0U6ICBEREwgdGVzdDogdHlwZSBhbHRlciB0YWJsZSwg dGFnIEFMVEVSIFRBQkxFCiBOT1RJQ0U6ICAgIHN1YmNvbW1hbmQ6IHR5cGUgQUREIENPTlNU UkFJTlQgKGFuZCByZWN1cnNlKSBkZXNjIGNvbnN0cmFpbnQgcGFydF9hX25vdF9udWxsIG9u IHRhYmxlIHBhcnQKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVw YXJzZS9zcWwvYWx0ZXJfdGFibGUuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9k ZXBhcnNlL3NxbC9hbHRlcl90YWJsZS5zcWwKaW5kZXggOWFkMWNmOTA4ZC4uMzFlNjkxMDBh MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3NxbC9h bHRlcl90YWJsZS5zcWwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNl L3NxbC9hbHRlcl90YWJsZS5zcWwKQEAgLTM1LDYgKzM1LDkgQEAgQUxURVIgVEFCTEUgcGFy dCBBVFRBQ0ggUEFSVElUSU9OIHBhcnQyIEZPUiBWQUxVRVMgRlJPTSAoMTAxKSB0byAoMjAw KTsKIEFMVEVSIFRBQkxFIHBhcnQgREVUQUNIIFBBUlRJVElPTiBwYXJ0MjsKIERST1AgVEFC TEUgcGFydDI7CiAKK0NSRUFURSBUQUJMRSBwYXJ0MiBQQVJUSVRJT04gT0YgcGFydCBGT1Ig VkFMVUVTIEZST00gKDEwMCkgdG8gKDIwMCk7CitBTFRFUiBUQUJMRSBwYXJ0IE1FUkdFIFBB UlRJVElPTlMgKHBhcnQxLCBwYXJ0MikgSU5UTyBwYXJ0MTsKKwogQUxURVIgVEFCTEUgcGFy dCBBREQgUFJJTUFSWSBLRVkgKGEpOwogCiBBTFRFUiBUQUJMRSBwYXJlbnQgQUxURVIgQ09M VU1OIGEgU0VUIE5PVCBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKaW5kZXggMTkzNjY5ZjJiYy4uN2Rl NWRkYjg3OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNl L3Rlc3RfZGRsX2RlcGFyc2UuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2Rl cGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCkBAIC0yOTYsNiArMjk2LDkgQEAgZ2V0X2FsdGVy dGFibGVfc3ViY21kaW5mbyhQR19GVU5DVElPTl9BUkdTKQogCQkJY2FzZSBBVF9EZXRhY2hQ YXJ0aXRpb25GaW5hbGl6ZToKIAkJCQlzdHJ0eXBlID0gIkRFVEFDSCBQQVJUSVRJT04gLi4u IEZJTkFMSVpFIjsKIAkJCQlicmVhazsKKwkJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgor CQkJCXN0cnR5cGUgPSAiTUVSR0UgUEFSVElUSU9OUyI7CisJCQkJYnJlYWs7CiAJCQljYXNl IEFUX0FkZElkZW50aXR5OgogCQkJCXN0cnR5cGUgPSAiQUREIElERU5USVRZIjsKIAkJCQli cmVhazsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9u X21lcmdlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX21lcmdl Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zZTQwYWJmMzhh Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRp b25fbWVyZ2Uub3V0CkBAIC0wLDAgKzEsMTA5NyBAQAorLS0KKy0tIFBBUlRJVElPTlNfTUVS R0UKKy0tIFRlc3RzIGZvciAiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgLi4u IiBjb21tYW5kCistLQorQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTsK K0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyOworU0VUIHNlYXJjaF9w YXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKy0tCistLSBCWSBSQU5H RSBwYXJ0aXRpb25pbmcKKy0tCistLQorLS0gVGVzdCBmb3IgZXJyb3IgY29kZXMKKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJz b25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRF KSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2RlYzIwMjEgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjEtMTItMDEnKSBUTyAoJzIwMjEtMTItMzEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4y MDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAx LTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScp IFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAo JzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3BlcnNv bl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJ TlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsK K0NSRUFURSBUQUJMRSBzYWxlc19hcHJfMSBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTE1Jyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfYXByXzIgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wNC0xNScpIFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBF UlJPUjogIHBhcnRpdGlvbiB3aXRoIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlzIGFscmVhZHkg dXNlZAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNf ZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19mZWJf bWFyX2FwcjIwMjI7CitFUlJPUjogIHBhcnRpdGlvbiB3aXRoIG5hbWUgInNhbGVzX2ZlYjIw MjIiIGlzIGFscmVhZHkgdXNlZAorTElORSAxOiAuLi5lIE1FUkdFIFBBUlRJVElPTlMgKHNh bGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2ZlYjIuLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCist LSBFUlJPUjogICJzYWxlc19hcHIyMDIyIiBpcyBub3QgYSB0YWJsZQorQUxURVIgVEFCTEUg c2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFy MjAyMiwgc2FsZXNfYXByMjAyMikgSU5UTyBzYWxlc19mZWJfbWFyX2FwcjIwMjI7CitFUlJP UjogICJzYWxlc19hcHIyMDIyIiBpcyBub3QgYSB0YWJsZQorSElOVDogIEFMVEVSIFRBQkxF IC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3Qg aGF2ZSBzdWItcGFydGl0aW9ucworLS0gRVJST1I6ICBjYW4gbm90IG1lcmdlIHBhcnRpdGlv biAic2FsZXNfbWFyMjAyMiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2phbjIw MjIiCistLSBERVRBSUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX21hcjIw MjIiIGlzIG5vdCBlcXVhbCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxl c19qYW4yMDIyIgorLS0gKHNwYWNlIGJldHdlZW4gc2VjdGlvbnMgc2FsZXNfamFuMjAyMiBh bmQgc2FsZXNfbWFyMjAyMikKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJ VElPTlMgKHNhbGVzX2phbjIwMjIsIHNhbGVzX21hcjIwMjIpIElOVE8gc2FsZXNfamFuX21h cjIwMjI7CitFUlJPUjogIGNhbiBub3QgbWVyZ2UgcGFydGl0aW9uICJzYWxlc19tYXIyMDIy IiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIKK0RFVEFJTDogIGxv d2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIgaXMgbm90IGVxdWFsIHRv IHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiCitISU5UOiAg QUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlv biBib3VuZHMgdG8gYmUgYWRqYWNlbnQuCistLSBFUlJPUjogIGNhbiBub3QgbWVyZ2UgcGFy dGl0aW9uICJzYWxlc19qYW4yMDIyIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNf ZGVjMjAyMSIKKy0tIERFVEFJTDogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNf amFuMjAyMiIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24g InNhbGVzX2RlYzIwMjEiCistLSAoc3BhY2UgYmV0d2VlbiBzZWN0aW9ucyBzYWxlc19kZWMy MDIxIGFuZCBzYWxlc19qYW4yMDIyKQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0Ug UEFSVElUSU9OUyAoc2FsZXNfZGVjMjAyMSwgc2FsZXNfamFuMjAyMiwgc2FsZXNfZmViMjAy MikgSU5UTyBzYWxlc19kZWNfamFuX2ZlYjIwMjI7CitFUlJPUjogIGNhbiBub3QgbWVyZ2Ug cGFydGl0aW9uICJzYWxlc19qYW4yMDIyIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2Fs ZXNfZGVjMjAyMSIKK0RFVEFJTDogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNf amFuMjAyMiIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24g InNhbGVzX2RlYzIwMjEiCitISU5UOiAgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElP TlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRqYWNlbnQuCistLSBF UlJPUjogIHBhcnRpdGlvbiB3aXRoIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlzIGFscmVhZHkg dXNlZAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNf ZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNf ZmViMjAyMikgSU5UTyBzYWxlc19mZWJfbWFyX2FwcjIwMjI7CitFUlJPUjogIHBhcnRpdGlv biB3aXRoIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlzIGFscmVhZHkgdXNlZAorTElORSAxOiAu Li5lIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHBh cnRpdGlvbnMuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCistLUVSUk9SLCBzYWxlc19hcHJfMiBhbHJlYWR5IGV4 aXN0cworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNf ZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfamFuMjAyMikgSU5UTyBzYWxlc19hcHJf MjsKK0VSUk9SOiAgcmVsYXRpb24gInNhbGVzX2Fwcl8yIiBhbHJlYWR5IGV4aXN0cworQ1JF QVRFIFZJRVcgamFuMjAyMnYgYXMgU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOworQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfamFuMjAyMiwg c2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19kZWNfamFuX2ZlYjIwMjI7CitFUlJPUjogIGNh bm5vdCBkcm9wIHRhYmxlIHNhbGVzX2phbjIwMjIgYmVjYXVzZSBvdGhlciBvYmplY3RzIGRl cGVuZCBvbiBpdAorREVUQUlMOiAgdmlldyBqYW4yMDIydiBkZXBlbmRzIG9uIHRhYmxlIHNh bGVzX2phbjIwMjIKK0hJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRoZSBk ZXBlbmRlbnQgb2JqZWN0cyB0b28uCitEUk9QIFZJRVcgamFuMjAyMnY7CistLSBOTyBFUlJP UjogdGVzdCBmb3IgY3VzdG9tIHBhcnRpdGlvbnMgb3JkZXIsIHNvdXJjZSBwYXJ0aXRpb25z IG5vdCBpbiB0aGUgc2VhcmNoX3BhdGgKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNf bWVyZ2Vfc2NoZW1hMiwgcHVibGljOworQUxURVIgVEFCTEUgcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEuc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoCisgIHBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hLnNhbGVzX2ZlYjIwMjIsCisgIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNh bGVzX21hcjIwMjIsCisgIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnNhbGVzX2phbjIwMjIp IElOVE8gc2FsZXNfamFuX2ZlYl9tYXIyMDIyOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0 aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKK1BSRVBBUkUgZ2V0X3BhcnRpdGlvbl9pbmZv KHJlZ2NsYXNzW10pIEFTCitTRUxFQ1QgIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLAor ICAgICAgICBjLnJlbHBlcnNpc3RlbmNlLAorICAgICAgICBjLnJlbGtpbmQsCisgICAgICAg IGkuaW5oZGV0YWNocGVuZGluZywKKyAgICAgICAgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihj LnJlbHBhcnRib3VuZCwgYy5vaWQpCitGUk9NICAgIHBnX2NhdGFsb2cucGdfY2xhc3MgYywg cGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCitXSEVSRSAgIGMub2lkID0gaS5pbmhyZWxpZCBB TkQgaS5pbmhwYXJlbnQgPSBBTlkoJDEpCitPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9l eHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsCisgICAgICAgICBjLm9p ZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyI7CitFWEVDVVRFIGdldF9wYXJ0aXRpb25f aW5mbygne3NhbGVzX3JhbmdlfScpOworICAgICAgICAgICAgICAgICAgICAgIG9pZCAgICAg ICAgICAgICAgICAgICAgICAgfCByZWxwZXJzaXN0ZW5jZSB8IHJlbGtpbmQgfCBpbmhkZXRh Y2hwZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRp dGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19qYW5fZmViX21hcjIwMjIgfCBwICAgICAgICAg ICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgn MDEtMDEtMjAyMicpIFRPICgnMDQtMDEtMjAyMicpCisgc2FsZXNfYXByMjAyMiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHAgICAgICAgICAgICAgIHwgcCAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwNC0wMS0yMDIyJykgVE8g KCcwNS0wMS0yMDIyJykKKyBzYWxlc19kZWMyMDIxICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IEZPUiBWQUxVRVMgRlJPTSAoJzEyLTAxLTIwMjEnKSBUTyAoJzEyLTMxLTIwMjEnKQor IHNhbGVzX290aGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwICAg ICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAorKDQg cm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCistLSBBZGQgcm93cyBpbnRv IHBhcnRpdGlvbmVkIHRhYmxlLCB0aGVuIG1lcmdlIHBhcnRpdGlvbnMKKy0tCitDUkVBVEUg VEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFt ZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJU SVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIw MjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEt MDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgn MjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjIt MDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9p ZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjIt MDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAo MywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdics ICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAy Mi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisg ICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nz b24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcy MDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwK KyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0 bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAg JzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcp OworU0VMRUNUIHBnX2NhdGFsb2cucGdfZ2V0X3BhcnRrZXlkZWYoJ3NhbGVzX3JhbmdlJzo6 cmVnY2xhc3MpOworIHBnX2dldF9wYXJ0a2V5ZGVmICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t CisgUkFOR0UgKHNhbGVzX2RhdGUpCisoMSByb3cpCisKKy0tIHNob3cgcGFydGl0aW9ucyB3 aXRoIGNvbmRpdGlvbnM6CitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3NhbGVzX3Jh bmdlfScpOworICAgICAgb2lkICAgICAgfCByZWxwZXJzaXN0ZW5jZSB8IHJlbGtpbmQgfCBp bmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2FwcjIwMjIgfCBwICAgICAgICAgICAgICB8 IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDQtMDEt MjAyMicpIFRPICgnMDUtMDEtMjAyMicpCisgc2FsZXNfZmViMjAyMiB8IHAgICAgICAgICAg ICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcw Mi0wMS0yMDIyJykgVE8gKCcwMy0wMS0yMDIyJykKKyBzYWxlc19qYW4yMDIyIHwgcCAgICAg ICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJP TSAoJzAxLTAxLTIwMjInKSBUTyAoJzAyLTAxLTIwMjInKQorIHNhbGVzX21hcjIwMjIgfCBw ICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVF UyBGUk9NICgnMDMtMDEtMjAyMicpIFRPICgnMDQtMDEtMjAyMicpCisgc2FsZXNfb3RoZXJz ICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZB VUxUCisoNSByb3dzKQorCistLSBjaGVjayBzY2hlbWEtcXVhbGlmaWVkIG5hbWUgb2YgdGhl IG5ldyBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElP TlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2FwcjIwMjIpIElOVE8g cGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKy0tIHNo b3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitFWEVDVVRFIGdldF9wYXJ0aXRpb25f aW5mbygne3NhbGVzX3JhbmdlfScpOworICAgICAgICAgICAgICAgICAgICAgIG9pZCAgICAg ICAgICAgICAgICAgICAgICAgfCByZWxwZXJzaXN0ZW5jZSB8IHJlbGtpbmQgfCBpbmhkZXRh Y2hwZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRp dGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgfCBwICAgICAgICAg ICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgn MDItMDEtMjAyMicpIFRPICgnMDUtMDEtMjAyMicpCisgc2FsZXNfamFuMjAyMiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIyJykgVE8g KCcwMi0wMS0yMDIyJykKKyBzYWxlc19vdGhlcnMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IERFRkFVTFQKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVS RSB0YWJsZW5hbWUgPSAnc2FsZXNfZmViX21hcl9hcHIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9 ICdwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTInOworICAgICAgICBzY2hlbWFuYW1lICAgICAg ICB8ICAgICAgIHRhYmxlbmFtZSAgICAgICB8ICAgICAgICAgICAgICBpbmRleG5hbWUgICAg ICAgICAgICAgICB8IHRhYmxlc3BhY2UgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhkZWYgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMiB8IHNhbGVzX2ZlYl9tYXJfYXByMjAy MiB8IHNhbGVzX2ZlYl9tYXJfYXByMjAyMl9zYWxlc19kYXRlX2lkeCB8ICAgICAgICAgICAg fCBDUkVBVEUgSU5ERVggc2FsZXNfZmViX21hcl9hcHIyMDIyX3NhbGVzX2RhdGVfaWR4IE9O IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgVVNJTkcg YnRyZWUgKHNhbGVzX2RhdGUpCisoMSByb3cpCisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xh c3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRl eHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworICAgICAgICAgICAgICAgICAgICB0 YWJsZW9pZCAgICAgICAgICAgICAgICAgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVy c29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgfCAgICAgICAgICAgICAg MiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgcGFy dGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAgICAgICAg ICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIK KyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAg ICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMt MjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIg fCAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAw NC0wNy0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXBy MjAyMiB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1 MCB8IDAyLTExLTIwMjIKKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21h cl9hcHIyMDIyIHwgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAgICAg ICAgMTc1IHwgMDMtMDgtMjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19m ZWJfbWFyX2FwcjIwMjIgfCAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAg ICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEyLnNh bGVzX2ZlYl9tYXJfYXByMjAyMiB8ICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAg ICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVt YTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAg ICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorIHBhcnRpdGlvbnNfbWVyZ2Vf c2NoZW1hMi5zYWxlc19mZWJfbWFyX2FwcjIwMjIgfCAgICAgICAgICAgICAxMiB8IFBsYXRv ICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgc2FsZXNfamFuMjAy MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAxIHwg TWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyBzYWxlc19q YW4yMDIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg MTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorIHNh bGVzX2phbjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIy Cisgc2FsZXNfb3RoZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0 LTIwMjIKKygxNCByb3dzKQorCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4 ZXMKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VM RUNUICogRlJPTSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIuc2FsZXNfZmViX21hcl9hcHIy MDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVz aW5nIHNhbGVzX2ZlYl9tYXJfYXByMjAyMl9zYWxlc19kYXRlX2lkeCBvbiBzYWxlc19mZWJf bWFyX2FwcjIwMjIKKyAgIEluZGV4IENvbmQ6IChzYWxlc19kYXRlID4gJzAxLTAxLTIwMjIn OjpkYXRlKQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYTIuc2FsZXNfZmViX21hcl9hcHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0w MS0wMSc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1v dW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAyIHwgU21pcm5v ZmYgICAgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgICAg NiB8IFBvaXJvdCAgICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAg ICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMt MjAyMgorICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3 NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAg ICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAg ICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgICAgIDExIHwg VHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAg ICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIy CisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwg MDQtMTMtMjAyMgorICAgICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAg ICAgMjAwMCB8IDA0LTMwLTIwMjIKKygxMCByb3dzKQorCitSRVNFVCBlbmFibGVfc2Vxc2Nh bjsKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gTWVyZ2Ugc29tZSBwYXJ0aXRp b25zIGludG8gREVGQVVMVCBwYXJ0aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFu Z2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwg c2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0Ug KHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjIt MDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7 CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFu Z2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIs ICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAg IDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjIt MDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAo NiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAg ICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAy Mi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisg ICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAn LCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcy MDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwK KyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworLS0gTWVyZ2UgcGFy dGl0aW9ucyAoaW5jbHVkZSBERUZBVUxUIHBhcnRpdGlvbikgaW50byBwYXJ0aXRpb24gd2l0 aCB0aGUgc2FtZQorLS0gbmFtZQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFS VElUSU9OUworICAoc2FsZXNfamFuMjAyMiwgc2FsZXNfbWFyMjAyMiwgcGFydGl0aW9uc19t ZXJnZV9zY2hlbWEuc2FsZXNfb3RoZXJzKSBJTlRPIHNhbGVzX290aGVyczsKK1NFTEVDVCAq IEZST00gc2FsZXNfb3RoZXJzIE9SREVSIEJZIHNhbGVzcGVyc29uX2lkOworIHNhbGVzcGVy c29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUg CistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAg ICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAg ICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICAgICA5IHwgTXVs bGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAg ICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMS0yOC0yMDIyCisg ICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMt MTktMjAyMgorICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAg IDM3NyB8IDAxLTA5LTIwMjIKKyAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAg fCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoNyByb3dzKQorCistLSBzaG93IHBhcnRp dGlvbnMgd2l0aCBjb25kaXRpb25zOgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tz YWxlc19yYW5nZX0nKTsKKyAgICAgIG9pZCAgICAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxr aW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHBy ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIyMDIyIHwgcCAgICAgICAg ICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAo JzA0LTAxLTIwMjInKSBUTyAoJzA1LTAxLTIwMjInKQorIHNhbGVzX2ZlYjIwMjIgfCBwICAg ICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBG Uk9NICgnMDItMDEtMjAyMicpIFRPICgnMDMtMDEtMjAyMicpCisgc2FsZXNfb3RoZXJzICB8 IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBERUZBVUxU CisoMyByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIFRlc3QgZm9y OgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0gICAqIEdFTkVSQVRFRCBj b2x1bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1ZS4KKy0tCitDUkVBVEUg VEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNf eWVhciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElOVCwKKyAgc2FsZXNfZGF0 ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAgKExQQUQoc2FsZXNfeWVh cjo6dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19tb250aDo6dGV4dCwgMiwg JzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIsICcwJykpIFNUT1JFRCwK KyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxUICdTYWxlcyBkZXBhcnRt ZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFyLCBzYWxlc19tb250aCwg c2FsZXNfZGF5KTsKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIyIFBBUlRJVElPTiBPRiBz YWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMSwgMTIsIDEpIFRPICgyMDIyLCAxLCAx KTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRl IEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDIsIDEpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVF UyBGUk9NICgyMDIyLCAyLCAxKSBUTyAoMjAyMiwgMywgMSk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfb3RoZXIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIy LCAzLCAxKSBUTyAoTUFYVkFMVUUsIE1BWFZBTFVFLCBNQVhWQUxVRSk7CitJTlNFUlQgSU5U TyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRo LCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAyMSwgMTIsIDcpLAorICAo J01hbmFnZXIyJywgMjAyMSwgMTIsIDgpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgMSwgMSks CisgICgnTWFuYWdlcjEnLCAyMDIyLCAyLCA0KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDEs IDIpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgMiwgMSksCisgICgnTWFuYWdlcjEnLCAyMDIy LCAzLCAzKSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDMsIDQpLAorICAoJ01hbmFnZXIzJywg MjAyMiwgNSwgMSk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNf ZGF0ZTsKKyAgIHRhYmxlb2lkICAgIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX3llYXIg fCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRt ZW50IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tCisgc2FsZXNfZGVjMjAyMiB8IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIxIHwg ICAgICAgICAgMTIgfCAgICAgICAgIDcgfCAyMDIxLjEyLjA3IHwgU2FsZXMgZGVwYXJ0bWVu dAorIHNhbGVzX2RlYzIwMjIgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMSB8ICAg ICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQK KyBzYWxlc19qYW4yMDIyIHwgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgMSB8ICAgICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50Cisg c2FsZXNfamFuMjAyMiB8IE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAg ICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNh bGVzX2ZlYjIwMjIgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAg ICAyIHwgICAgICAgICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxl c19mZWIyMDIyIHwgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAg MiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNf b3RoZXIgICB8IE1hbmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMg fCAgICAgICAgIDMgfCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290 aGVyICAgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwg ICAgICAgICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19vdGhl ciAgIHwgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAg ICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoOSByb3dzKQorCitB TFRFUiBUQUJMRSBzYWxlc19kYXRlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2phbjIwMjIs IHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfamFuX2ZlYjIwMjI7CitJTlNFUlQgSU5UTyBz YWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBz YWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIxJywgMjAyMiwgMSwgMTApLAorICAoJ01h bmFnZXIyJywgMjAyMiwgMiwgMTApOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBG Uk9NIHNhbGVzX2RhdGU7CisgICAgIHRhYmxlb2lkICAgICAgfCBzYWxlc3BlcnNvbl9uYW1l IHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8 IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfZGVjMjAyMiAgICAgfCBNYW5hZ2VyMSAg ICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4x Mi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19kZWMyMDIyICAgICB8IE1hbmFnZXIy ICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDggfCAyMDIx LjEyLjA4IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwgTWFuYWdl cjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIw MjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIgfCBNYW5h Z2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwg MjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW5fZmViMjAyMiB8IE1h bmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQg fCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwg TWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAg MSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIg fCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAg IDEwIHwgMjAyMi4wMS4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW5fZmViMjAy MiB8IE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAg ICAgMTAgfCAyMDIyLjAyLjEwIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVyICAg ICAgIHwgTWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAg ICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfb3RoZXIg ICAgICAgfCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwg ICAgICAgICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19vdGhl ciAgICAgICB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDUg fCAgICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDExIHJvd3Mp CisKK0RST1AgVEFCTEUgc2FsZXNfZGF0ZTsKKy0tCistLSBUZXN0OiBtZXJnZSBwYXJ0aXRp b25zIG9mIHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggdHJpZ2dlcnMKKy0tCitDUkVBVEUgVEFC TEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3Bl cnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29u X2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJVElPTiBPRiBzYWxl c3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNwZW9wbGUxMF8yMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9N ICgxMCkgVE8gKDIwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTIwXzMwIFBBUlRJVElP TiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworQ1JFQVRF IFRBQkxFIHNhbGVzcGVvcGxlMzBfNDAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBW QUxVRVMgRlJPTSAoMzApIFRPICg0MCk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxV RVMgKDEsICAnUG9pcm90Jyk7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBhZnRlcl9p bnNlcnRfcm93X3RyaWdnZXIoKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwn IEFTICRCT0RZJAorQkVHSU4KKyAgICBSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVk OiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2ZWwgPSAlJywgVEdfQVJHVlswXSwgVEdfT1As IFRHX1dIRU4sIFRHX0xFVkVMOworICAgIFJFVFVSTiBOVUxMOworRU5EOworJEJPRFkkOwor Q1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3N0YXRlbWVudF90cmln Z2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAgICBGT1IgRUFD SCBTVEFURU1FTlQKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3Ry aWdnZXIoJ3NhbGVzcGVvcGxlJyk7CitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3BsZV9hZnRl cl9pbnNlcnRfcm93X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc3Bl b3BsZQorICAgIEZPUiBFQUNIIFJPVworICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2lu c2VydF9yb3dfdHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKKy0tIDIgdHJpZ2dlcnMgc2hvdWxk IGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxl IFZBTFVFUyAoMTAsICdNYXknKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNh bGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitOT1RJ Q0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hl biA9IEFGVEVSLCBsZXZlbCA9IFNUQVRFTUVOVAorLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJl IGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzIwIFZBTFVFUyAoMTks ICdJdmFub3YnKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0 aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitBTFRFUiBUQUJMRSBz YWxlc3Blb3BsZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc3Blb3BsZTEwXzIwLCBzYWxlc3Bl b3BsZTIwXzMwLCBzYWxlc3Blb3BsZTMwXzQwKSBJTlRPIHNhbGVzcGVvcGxlMTBfNDA7Cist LSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6CitJTlNF UlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDIwLCAnU21pcm5vZmYnKTsKK05PVElDRTog IHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0g QUZURVIsIGxldmVsID0gUk9XCitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxs ZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFNUQVRFTUVOVAor LS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxl c3Blb3BsZTEwXzQwIFZBTFVFUyAoMzAsICdGb3JkJyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNh bGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZl bCA9IFJPVworU0VMRUNUICogRlJPTSBzYWxlc3Blb3BsZTAxXzEwOworIHNhbGVzcGVyc29u X2lkIHwgc2FsZXNwZXJzb25fbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKygxIHJvdykKKworU0VMRUNUICog RlJPTSBzYWxlc3Blb3BsZTEwXzQwOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25f bmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgMTAgfCBNYXkKKyAgICAgICAgICAgICAxOSB8IEl2YW5vdgorICAgICAgICAgICAgIDIw IHwgU21pcm5vZmYKKyAgICAgICAgICAgICAzMCB8IEZvcmQKKyg0IHJvd3MpCisKK0RST1Ag VEFCTEUgc2FsZXNwZW9wbGU7CitEUk9QIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJp Z2dlcigpOworLS0KKy0tIFRlc3Q6IG1lcmdlIHBhcnRpdGlvbnMgd2l0aCBkZWxldGVkIGNv bHVtbnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5U IFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04g QlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTAx XzEwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgx MCk7CistLSBDcmVhdGUgcGFydGl0aW9ucyB3aXRoIHNvbWUgZGVsZXRlZCBjb2x1bW5zOgor Q1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfMjAoZDEgVkFSQ0hBUigzMCksIHNhbGVzcGVy c29uX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUyMF8zMChzYWxlc3BlcnNvbl9pZCBJTlQgUFJJ TUFSWSBLRVksIGQyIElOVCwgIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworQ1JF QVRFIFRBQkxFIHNhbGVzcGVvcGxlMzBfNDAoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkg S0VZLCBkMyBEQVRFLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKK0lOU0VSVCBJ TlRPIHNhbGVzcGVvcGxlMTBfMjAgVkFMVUVTICgnZHVtbXkgdmFsdWUgMScsIDE5LCAnSXZh bm92Jyk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTIwXzMwIFZBTFVFUyAoMjAsIDEwMSwg J1NtaXJub2ZmJyk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTMwXzQwIFZBTFVFUyAoMzEs IG5vdygpLCAnUG9wb3YnKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBfMjAgRFJPUCBD T0xVTU4gZDE7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTIwXzMwIERST1AgQ09MVU1OIGQy OworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUzMF80MCBEUk9QIENPTFVNTiBkMzsKK0FMVEVS IFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF8yMCBG T1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUg QVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjAp IFRPICgzMCk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNh bGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKTsKK0lOU0VSVCBJ TlRPIHNhbGVzcGVvcGxlIFZBTFVFUworICAoMSwgJ1BvaXJvdCcpLAorICAoMTAsICdNYXkn KSwKKyAgKDMwLCAnRm9yZCcpOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgTUVSR0UgUEFS VElUSU9OUyAoc2FsZXNwZW9wbGUxMF8yMCwgc2FsZXNwZW9wbGUyMF8zMCwgc2FsZXNwZW9w bGUzMF80MCkgSU5UTyBzYWxlc3Blb3BsZTEwXzQwOworc2VsZWN0ICogZnJvbSBzYWxlc3Bl b3BsZTsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAxIHwgUG9pcm90Cisg ICAgICAgICAgICAgMTkgfCBJdmFub3YKKyAgICAgICAgICAgICAxMCB8IE1heQorICAgICAg ICAgICAgIDIwIHwgU21pcm5vZmYKKyAgICAgICAgICAgICAzMSB8IFBvcG92CisgICAgICAg ICAgICAgMzAgfCBGb3JkCisoNiByb3dzKQorCitzZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxl MDFfMTA7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMSB8IFBvaXJvdAor KDEgcm93KQorCitzZWxlY3QgKiBmcm9tIHNhbGVzcGVvcGxlMTBfNDA7Cisgc2FsZXNwZXJz b25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAxOSB8IEl2YW5vdgorICAgICAgICAgICAgIDEwIHwg TWF5CisgICAgICAgICAgICAgMjAgfCBTbWlybm9mZgorICAgICAgICAgICAgIDMxIHwgUG9w b3YKKyAgICAgICAgICAgICAzMCB8IEZvcmQKKyg1IHJvd3MpCisKK0RST1AgVEFCTEUgc2Fs ZXNwZW9wbGU7CistLQorLS0gVGVzdDogbWVyZ2Ugc3ViLXBhcnRpdGlvbnMKKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25f bmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQ QVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ph bjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIy IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAx JykgVE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRP ICgnMjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgKHNhbGVzcGVy c29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50 IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUp OworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjJfMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVz X2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0x MCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjJfMTBfMjAgUEFSVElUSU9OIE9GIHNh bGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0xMCcpIFRPICgnMjAyMi0w NC0yMCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjJfMjBfMzAgUEFSVElUSU9OIE9G IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0yMCcpIFRPICgnMjAy Mi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJVElPTiBz YWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjIt MDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9p ZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjIt MDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAo MywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdics ICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAy Mi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisg ICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nz b24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcy MDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwK KyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0 bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAg JzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcp OworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2FwcjIwMjIgT1JE RVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNv bl9pZDsKKyAgICAgIHRhYmxlb2lkICAgICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3Bl cnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIyMDIyXzAxXzEwIHwgICAgICAgICAgICAg IDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorIHNh bGVzX2FwcjIwMjJfMDFfMTAgfCAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAg fCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgc2FsZXNfYXByMjAyMl8xMF8yMCB8ICAg ICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEz LTIwMjIKKyBzYWxlc19hcHIyMDIyXzIwXzMwIHwgICAgICAgICAgICAgIDMgfCBGb3JkICAg ICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorKDQgcm93cykKKworQUxU RVIgVEFCTEUgc2FsZXNfYXByMjAyMiBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19hcHIyMDIy XzAxXzEwLCBzYWxlc19hcHIyMDIyXzEwXzIwLCBzYWxlc19hcHIyMDIyXzIwXzMwKSBJTlRP IHNhbGVzX2Fwcl9hbGw7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2Fs ZXNfYXByMjAyMiBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAi QyIsIHNhbGVzcGVyc29uX2lkOworICAgdGFibGVvaWQgICAgfCBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorIHNhbGVzX2Fwcl9hbGwgfCAgICAgICAgICAgICAgMyB8 IEZvcmQgICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgc2FsZXNf YXByX2FsbCB8ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAg IDc1MCB8IDA0LTEzLTIwMjIKKyBzYWxlc19hcHJfYWxsIHwgICAgICAgICAgICAgIDUgfCBE ZWV2ICAgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorIHNhbGVzX2Fw cl9hbGwgfCAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAz ODAgfCAwNC0wNi0yMDIyCisoNCByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOwor LS0KKy0tIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorLS0KKy0tIFRlc3Q6IHNwZWNpZmlj IGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcKKy0tCitDUkVBVEUgVEFCTEUgc2Fs ZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5U SVRZLAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFS Q0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJU SVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQg UEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBl dGVyc2J1cmcnLCAnSGVsc2lua2knKTsKK0NSRUFURSBUQUJMRSBzYWxlc193ZXN0IFBBUlRJ VElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsn LCAnTWFkcmlkJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZWFzdCBQQVJUSVRJT04gT0Ygc2Fs ZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9r Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfY2VudHJhbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlz dCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2Jyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CitD UkVBVEUgVEFCTEUgc2FsZXNfbGlzdDIgKExJS0Ugc2FsZXNfbGlzdCkgUEFSVElUSU9OIEJZ IExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkMiBQQVJUSVRJ T04gT0Ygc2FsZXNfbGlzdDIgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1 cmcnLCAnSGVsc2lua2knKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMyIFBBUlRJVElP TiBPRiBzYWxlc19saXN0MiBERUZBVUxUOworQ1JFQVRFIFRBQkxFIHNhbGVzX2V4dGVybmFs IChMSUtFIHNhbGVzX2xpc3QpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2V4dGVybmFsMiAodmNo IFZBUkNIQVIoNSkpOworLS0gRVJST1I6ICAic2FsZXNfZXh0ZXJuYWwiIGlzIG5vdCBhIHBh cnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSAic2FsZXNfbGlzdCIKK0FMVEVSIFRBQkxF IHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2VzdCwgc2FsZXNfZWFzdCwg c2FsZXNfZXh0ZXJuYWwpIElOVE8gc2FsZXNfYWxsOworRVJST1I6ICAic2FsZXNfZXh0ZXJu YWwiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSAic2FsZXNfbGlz dCIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBt ZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMKKy0tIEVSUk9SOiAg InNhbGVzX2V4dGVybmFsMiIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRh YmxlICJzYWxlc19saXN0IgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJ T05TIChzYWxlc193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19leHRlcm5hbDIpIElOVE8gc2Fs ZXNfYWxsOworRVJST1I6ICAic2FsZXNfZXh0ZXJuYWwyIiBpcyBub3QgYSBwYXJ0aXRpb24g b2YgcGFydGl0aW9uZWQgdGFibGUgInNhbGVzX2xpc3QiCitISU5UOiAgQUxURVIgVEFCTEUg Li4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBo YXZlIHN1Yi1wYXJ0aXRpb25zCistLSBFUlJPUjogIHJlbGF0aW9uICJzYWxlc19ub3JkMiIg aXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJzYWxlc19saXN0IgorQUxURVIgVEFC TEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19ub3Jk Miwgc2FsZXNfZWFzdCkgSU5UTyBzYWxlc19hbGw7CitFUlJPUjogIHJlbGF0aW9uICJzYWxl c19ub3JkMiIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJzYWxlc19saXN0Igor SElOVDogIEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdl IHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucworRFJPUCBUQUJMRSBzYWxl c19leHRlcm5hbDI7CitEUk9QIFRBQkxFIHNhbGVzX2V4dGVybmFsOworRFJPUCBUQUJMRSBz YWxlc19saXN0MjsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDsKKy0tCistLSBUZXN0OiBCWSBM SVNUIHBhcnRpdGlvbmluZywgTUVSR0UgUEFSVElUSU9OUyB3aXRoIGRhdGEKKy0tCitDUkVB VEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElOVCBHRU5FUkFURUQgQUxX QVlTIEFTIElERU5USVRZLAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2Fs ZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRl IERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIElOREVY IHNhbGVzX2xpc3Rfc2FsZXNwZXJzb25fbmFtZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBi dHJlZSAoc2FsZXNwZXJzb25fbmFtZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxl c19zdGF0ZV9pZHggT04gc2FsZXNfbGlzdCBVU0lORyBidHJlZSAoc2FsZXNfc3RhdGUpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZB TFVFUyBJTiAoJ09zbG8nLCAnU3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKTsKK0NSRUFU RSBUQUJMRSBzYWxlc193ZXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMg SU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfZWFzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5n JywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfY2VudHJh bCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0Jl cmxpbicsICdLeWl2Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBP RiBzYWxlc19saXN0IERFRkFVTFQ7CitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3Bl cnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxV RVMKKyAgKCdUcnVtcCcsICAgICdCZWppbmcnLCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAx JyksCisgICgnU21pcm5vZmYnLCAnTmV3IFlvcmsnLCAgICAgICAgNTAwLCAnMjAyMi0wMy0w MycpLAorICAoJ0ZvcmQnLCAgICAgJ1N0LiBQZXRlcnNidXJnJywgMjAwMCwgJzIwMjItMDMt MDUnKSwKKyAgKCdJdmFub3YnLCAgICdXYXJzYXcnLCAgICAgICAgICA3NTAsICcyMDIyLTAz LTA0JyksCisgICgnRGVldicsICAgICAnTGlzYm9uJywgICAgICAgICAgMjUwLCAnMjAyMi0w My0wNycpLAorICAoJ1BvaXJvdCcsICAgJ0JlcmxpbicsICAgICAgICAgMTAwMCwgJzIwMjIt MDMtMDEnKSwKKyAgKCdNYXknLCAgICAgICdIZWxzaW5raScsICAgICAgIDEyMDAsICcyMDIy LTAzLTA2JyksCisgICgnTGknLCAgICAgICAnVmxhZGl2b3N0b2snLCAgICAxMTUwLCAnMjAy Mi0wMy0wOScpLAorICAoJ01heScsICAgICAgJ0hlbHNpbmtpJywgICAgICAgMTIwMCwgJzIw MjItMDMtMTEnKSwKKyAgKCdIYWxkZXInLCAgICdPc2xvJywgICAgICAgICAgICA4MDAsICcy MDIyLTAzLTAyJyksCisgICgnTXVsbGVyJywgICAnTWFkcmlkJywgICAgICAgICAgNjUwLCAn MjAyMi0wMy0wNScpLAorICAoJ1NtaXRoJywgICAgJ0t5aXYnLCAgICAgICAgICAgIDM1MCwg JzIwMjItMDMtMTAnKSwKKyAgKCdHYW5kaScsICAgICdXYXJzYXcnLCAgICAgICAgICAxNTAs ICcyMDIyLTAzLTA4JyksCisgICgnUGxhdG8nLCAgICAnTGlzYm9uJywgICAgICAgICAgOTUw LCAnMjAyMi0wMy0wNScpOworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoK K0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7c2FsZXNfbGlzdH0nKTsKKyAgICAgIG9p ZCAgICAgIHwgcmVscGVyc2lzdGVuY2UgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8 ICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIHNhbGVzX2NlbnRyYWwgfCBwICAgICAgICAgICAgICB8IHIgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4n LCAnS3lpdicpCisgc2FsZXNfZWFzdCAgICB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywg J1ZsYWRpdm9zdG9rJykKKyBzYWxlc19ub3JkICAgIHwgcCAgICAgICAgICAgICAgfCByICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQ ZXRlcnNidXJnJywgJ0hlbHNpbmtpJykKKyBzYWxlc193ZXN0ICAgIHwgcCAgICAgICAgICAg ICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgSU4gKCdMaXNi b24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJykKKyBzYWxlc19vdGhlcnMgIHwgcCAgICAgICAg ICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IERFRkFVTFQKKyg1IHJvd3Mp CisKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfd2Vz dCwgc2FsZXNfZWFzdCwgc2FsZXNfY2VudHJhbCkgSU5UTyBzYWxlc19hbGw7CistLSBzaG93 IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2lu Zm8oJ3tzYWxlc19saXN0fScpOworICAgICBvaWQgICAgICB8IHJlbHBlcnNpc3RlbmNlIHwg cmVsa2luZCB8IGluaGRldGFjaHBlbmRpbmcgfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc19hbGwg ICAgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9S IFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywg J0RlbGhpJywgJ1ZsYWRpdm9zdG9rJywgJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpCisg c2FsZXNfbm9yZCAgIHwgcCAgICAgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNp bmtpJykKKyBzYWxlc19vdGhlcnMgfCBwICAgICAgICAgICAgICB8IHIgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgREVGQVVMVAorKDMgcm93cykKKworU0VMRUNUIHRhYmxlb2lkOjpy ZWdjbGFzcywgKiBGUk9NIHNhbGVzX2xpc3QgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNz Ojp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgdGFibGVvaWQgIHwgc2Fs ZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgIHNhbGVzX3N0YXRlICAgfCBzYWxl c19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tCisgc2FsZXNfYWxsICB8ICAgICAgICAgICAgICAxIHwgVHJ1bXAgICAgICAg ICAgICB8IEJlamluZyAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDMtMDEtMjAyMgorIHNh bGVzX2FsbCAgfCAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCBOZXcgWW9y ayAgICAgICB8ICAgICAgICAgIDUwMCB8IDAzLTAzLTIwMjIKKyBzYWxlc19hbGwgIHwgICAg ICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgICAgfCAgICAg ICAgICA3NTAgfCAwMy0wNC0yMDIyCisgc2FsZXNfYWxsICB8ICAgICAgICAgICAgICA1IHwg RGVldiAgICAgICAgICAgICB8IExpc2JvbiAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMt MDctMjAyMgorIHNhbGVzX2FsbCAgfCAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAg ICAgfCBCZXJsaW4gICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyBzYWxl c19hbGwgIHwgICAgICAgICAgICAgIDggfCBMaSAgICAgICAgICAgICAgIHwgVmxhZGl2b3N0 b2sgICAgfCAgICAgICAgIDExNTAgfCAwMy0wOS0yMDIyCisgc2FsZXNfYWxsICB8ICAgICAg ICAgICAgIDExIHwgTXVsbGVyICAgICAgICAgICB8IE1hZHJpZCAgICAgICAgIHwgICAgICAg ICAgNjUwIHwgMDMtMDUtMjAyMgorIHNhbGVzX2FsbCAgfCAgICAgICAgICAgICAxMiB8IFNt aXRoICAgICAgICAgICAgfCBLeWl2ICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTEw LTIwMjIKKyBzYWxlc19hbGwgIHwgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAg IHwgV2Fyc2F3ICAgICAgICAgfCAgICAgICAgICAxNTAgfCAwMy0wOC0yMDIyCisgc2FsZXNf YWxsICB8ICAgICAgICAgICAgIDE0IHwgUGxhdG8gICAgICAgICAgICB8IExpc2JvbiAgICAg ICAgIHwgICAgICAgICAgOTUwIHwgMDMtMDUtMjAyMgorIHNhbGVzX25vcmQgfCAgICAgICAg ICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCBTdC4gUGV0ZXJzYnVyZyB8ICAgICAgICAg MjAwMCB8IDAzLTA1LTIwMjIKKyBzYWxlc19ub3JkIHwgICAgICAgICAgICAgIDcgfCBNYXkg ICAgICAgICAgICAgIHwgSGVsc2lua2kgICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0wNi0y MDIyCisgc2FsZXNfbm9yZCB8ICAgICAgICAgICAgICA5IHwgTWF5ICAgICAgICAgICAgICB8 IEhlbHNpbmtpICAgICAgIHwgICAgICAgICAxMjAwIHwgMDMtMTEtMjAyMgorIHNhbGVzX25v cmQgfCAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCBPc2xvICAgICAgICAg ICB8ICAgICAgICAgIDgwMCB8IDAzLTAyLTIwMjIKKygxNCByb3dzKQorCistLSBVc2UgaW5k ZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMgYWZ0ZXIgbWVyZ2luZyBwYXJ0aXRpb25zCitT RVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAq IEZST00gc2FsZXNfYWxsIFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7CisgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfYWxsX3NhbGVzX3N0YXRlX2lkeCBvbiBzYWxl c19hbGwKKyAgIEluZGV4IENvbmQ6ICgoc2FsZXNfc3RhdGUpOjp0ZXh0ID0gJ1dhcnNhdyc6 OnRleHQpCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FsbCBXSEVSRSBzYWxl c19zdGF0ZSA9ICdXYXJzYXcnOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFt ZSB8IHNhbGVzX3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwg V2Fyc2F3ICAgICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisgICAgICAgICAgICAg MTMgfCBHYW5kaSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICAxNTAgfCAw My0wOC0yMDIyCisoMiByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZS T00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBzYWxlc19hbGxfc2Fs ZXNfc3RhdGVfaWR4IG9uIHNhbGVzX2FsbCBzYWxlc19saXN0CisgICBJbmRleCBDb25kOiAo KHNhbGVzX3N0YXRlKTo6dGV4dCA9ICdXYXJzYXcnOjp0ZXh0KQorKDIgcm93cykKKworU0VM RUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7Cisg c2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxl c19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAg IDc1MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgICAg fCBXYXJzYXcgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKygyIHJvd3MpCisK K0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNh bGVzcGVyc29uX25hbWUgPSAnSXZhbm92JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgSW5kZXgg U2NhbiB1c2luZyBzYWxlc19hbGxfc2FsZXNwZXJzb25fbmFtZV9pZHggb24gc2FsZXNfYWxs IHNhbGVzX2xpc3RfMQorICAgICAgICAgSW5kZXggQ29uZDogKChzYWxlc3BlcnNvbl9uYW1l KTo6dGV4dCA9ICdJdmFub3YnOjp0ZXh0KQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24g c2FsZXNfbm9yZCBzYWxlc19saXN0XzIKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChzYWxl c3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFub3YnOjp0ZXh0KQorICAgICAgICAgLT4gIEJp dG1hcCBJbmRleCBTY2FuIG9uIHNhbGVzX25vcmRfc2FsZXNwZXJzb25fbmFtZV9pZHgKKyAg ICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgoc2FsZXNwZXJzb25fbmFtZSk6OnRleHQgPSAn SXZhbm92Jzo6dGV4dCkKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHNhbGVzX290aGVy cyBzYWxlc19saXN0XzMKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChzYWxlc3BlcnNvbl9u YW1lKTo6dGV4dCA9ICdJdmFub3YnOjp0ZXh0KQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIHNhbGVzX290aGVyc19zYWxlc3BlcnNvbl9uYW1lX2lkeAorICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKChzYWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFub3Yn Ojp0ZXh0KQorKDExIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBz YWxlc3BlcnNvbl9uYW1lID0gJ0l2YW5vdic7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3Bl cnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAor LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAg ICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKygxIHJv dykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7Cist LQorLS0gVHJ5IHRvIE1FUkdFIHBhcnRpdGlvbnMgb2YgYW5vdGhlciB0YWJsZS4KKy0tCitD UkVBVEUgVEFCTEUgdDEgKGkgaW50LCBhIGludCwgYiBpbnQsIGMgaW50KSBQQVJUSVRJT04g QlkgUkFOR0UgKGEsIGIpOworQ1JFQVRFIFRBQkxFIHQxcDEgUEFSVElUSU9OIE9GIHQxIEZP UiBWQUxVRVMgRlJPTSAoMSwgMSkgVE8gKDEsIDIpOworQ1JFQVRFIFRBQkxFIHQyIChpIGlu dCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0UgKHQpOworQ1JFQVRFIFRBQkxFIHQycGEg UEFSVElUSU9OIE9GIHQyIEZPUiBWQUxVRVMgRlJPTSAoJ0EnKSBUTyAoJ0MnKTsKK0NSRUFU RSBUQUJMRSB0MyAoaSBpbnQsIHQgdGV4dCk7CistLSBFUlJPUjogIHJlbGF0aW9uICJ0MXAx IiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQyIgorQUxURVIgVEFCTEUgdDIg TUVSR0UgUEFSVElUSU9OUyAodDFwMSwgdDJwYSkgSU5UTyB0MnA7CitFUlJPUjogIHJlbGF0 aW9uICJ0MXAxIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQyIgorSElOVDog IEFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBvbmx5IG1lcmdlIHBhcnRp dGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucworLS0gRVJST1I6ICAidDMiIGlzIG5v dCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSAidDIiCitBTFRFUiBUQUJMRSB0 MiBNRVJHRSBQQVJUSVRJT05TICh0MnBhLCB0MykgSU5UTyB0MnA7CitFUlJPUjogICJ0MyIg aXMgbm90IGEgcGFydGl0aW9uIG9mIHBhcnRpdGlvbmVkIHRhYmxlICJ0MiIKK0hJTlQ6ICBB TFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBwYXJ0aXRp b25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMKK0RST1AgVEFCTEUgdDM7CitEUk9QIFRB QkxFIHQyOworRFJPUCBUQUJMRSB0MTsKKy0tCistLSBDaGVjayB0aGUgcGFydGl0aW9uIGlu ZGV4IG5hbWUgaWYgdGhlIHBhcnRpdGlvbiBuYW1lIGlzIHRoZSBzYW1lIGFzIG9uZQorLS0g b2YgdGhlIG1lcmdlZCBwYXJ0aXRpb25zLgorLS0KK0NSRUFURSBUQUJMRSB0IChpIGludCwg UFJJTUFSWSBLRVkoaSkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUg dHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JF QVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKTsKK0NSRUFURSBJTkRFWCB0aWR4IE9OIHQoaSk7CitBTFRFUiBUQUJMRSB0IE1FUkdF IFBBUlRJVElPTlMgKHRwXzFfMiwgdHBfMF8xKSBJTlRPIHRwXzFfMjsKKy0tIEluZGV4bmFt ZSB2YWx1ZXMgc2hvdWxkIGJlICd0cF8xXzJfcGtleScgYW5kICd0cF8xXzJfaV9pZHgnLgor XGQrIHRwXzFfMgorICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9u c19tZXJnZV9zY2hlbWEudHBfMV8yIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24g fCBOdWxsYWJsZSB8IERlZmF1bHQgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3Jp cHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBpICAgICAg fCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgIHwgcGxhaW4gICB8 ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkg VE8gKDIpCitQYXJ0aXRpb24gY29uc3RyYWludDogKChpIElTIE5PVCBOVUxMKSBBTkQgKGkg Pj0gMCkgQU5EIChpIDwgMikpCitJbmRleGVzOgorICAgICJ0cF8xXzJfcGtleSIgUFJJTUFS WSBLRVksIGJ0cmVlIChpKQorICAgICJ0cF8xXzJfaV9pZHgiIGJ0cmVlIChpKQorTm90LW51 bGwgY29uc3RyYWludHM6CisgICAgInRfaV9ub3RfbnVsbCIgTk9UIE5VTEwgImkiIChpbmhl cml0ZWQpCisKK0RST1AgVEFCTEUgdDsKKy0tCistLSBUcnkgdG8gTUVSR0UgcGFydGl0aW9u cyBvZiB0ZW1wb3JhcnkgdGFibGUuCistLQorQkVHSU47CitTSE9XIHNlYXJjaF9wYXRoOwor ICAgICAgICAgICBzZWFyY2hfcGF0aCAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljCisoMSBy b3cpCisKK0NSRUFURSBURU1QIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0Ug KGkpIE9OIENPTU1JVCBEUk9QOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMF8xIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRFTVAgVEFCTEUg dHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQ1JF QVRFIFRFTVAgVEFCTEUgdHBfMl8zIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAo MikgVE8gKDMpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfM180IFBBUlRJVElPTiBPRiB0IEZP UiBWQUxVRVMgRlJPTSAoMykgVE8gKDQpOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJ T05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyBwZ190ZW1wLnRwXzBfMjsKK0FMVEVSIFRBQkxF IHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8yLCB0cF8yXzMpIElOVE8gcGdfdGVtcC50cF8w XzM7CistLSBQYXJ0aXRpb24gc2hvdWxkIGJlIHRlbXBvcmFyeS4KK0VYRUNVVEUgZ2V0X3Bh cnRpdGlvbl9pbmZvKCd7dH0nKTsKKyAgb2lkICAgfCByZWxwZXJzaXN0ZW5jZSB8IHJlbGtp bmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgIHBnX2dldF9leHByICAgICAgICAgCist LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHRwXzBfMyB8IHQgICAgICAgICAgICAg IHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKDApIFRP ICgzKQorIHRwXzNfNCB8IHQgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBGT1IgVkFMVUVTIEZST00gKDMpIFRPICg0KQorKDIgcm93cykKKworLS0gRVJS T1I6ICBjYW5ub3QgY3JlYXRlIGEgcGVybWFuZW50IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBv ZiB0ZW1wb3JhcnkgcmVsYXRpb24gInQiCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElP TlMgKHRwXzBfMywgdHBfM180KSBJTlRPIHRwXzBfNDsKK0VSUk9SOiAgY2Fubm90IGNyZWF0 ZSBhIHBlcm1hbmVudCByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJlbGF0 aW9uICJ0IgorUk9MTEJBQ0s7CistLQorLS0gVHJ5IG1peGluZyBwZXJtYW5lbnQgYW5kIHRl bXBvcmFyeSBwYXJ0aXRpb25zLgorLS0KK0JFR0lOOworU0VUIHNlYXJjaF9wYXRoID0gcGFy dGl0aW9uc19tZXJnZV9zY2hlbWEsIHBnX3RlbXAsIHB1YmxpYzsKK0NSRUFURSBUQUJMRSB0 IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEg UEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFC TEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOwor U0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbHBlcnNpc3RlbmNlIEZS T00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjIFdIRVJFIGMub2lkID0gJ3QnOjpyZWdjbGFzczsK KyBvaWQgfCByZWxwZXJzaXN0ZW5jZSAKKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0KKyB0ICAg fCBwCisoMSByb3cpCisKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7dH0nKTsKKyAg b2lkICAgfCByZWxwZXJzaXN0ZW5jZSB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwg ICAgICAgIHBnX2dldF9leHByICAgICAgICAgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIHRwXzBfMSB8IHAgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKQorIHRwXzFfMiB8IHAgICAgICAg ICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00g KDEpIFRPICgyKQorKDIgcm93cykKKworU0FWRVBPSU5UIHM7CitTRVQgc2VhcmNoX3BhdGgg PSBwZ190ZW1wLCBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwgcHVibGljOworLS0gQ2FuJ3Qg bWVyZ2UgcGVyc2lzdGVudCBwYXJ0aXRpb25zIGludG8gYSB0ZW1wb3JhcnkgcGFydGl0aW9u CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRP IHRwXzBfMjsKK0VSUk9SOiAgY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSByZWxhdGlvbiBh cyBwYXJ0aXRpb24gb2YgcGVybWFuZW50IHJlbGF0aW9uICJ0IgorUk9MTEJBQ0sgVE8gU0FW RVBPSU5UIHM7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSwg cHVibGljOworLS0gQ2FuJ3QgbWVyZ2UgcGVyc2lzdGVudCBwYXJ0aXRpb25zIGludG8gYSB0 ZW1wb3JhcnkgcGFydGl0aW9uCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRw XzBfMSwgdHBfMV8yKSBJTlRPIHBnX3RlbXAudHBfMF8yOworRVJST1I6ICBjYW5ub3QgY3Jl YXRlIGEgdGVtcG9yYXJ5IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBvZiBwZXJtYW5lbnQgcmVs YXRpb24gInQiCitST0xMQkFDSzsKK0JFR0lOOworU0VUIHNlYXJjaF9wYXRoID0gcGdfdGVt cCwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKK0NSRUFURSBUQUJMRSB0IChp IGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFS VElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUg dHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworU0VM RUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbHBlcnNpc3RlbmNlIEZST00g cGdfY2F0YWxvZy5wZ19jbGFzcyBjIFdIRVJFIGMub2lkID0gJ3QnOjpyZWdjbGFzczsKKyBv aWQgfCByZWxwZXJzaXN0ZW5jZSAKKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgfCB0 CisoMSByb3cpCisKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9pbmZvKCd7dH0nKTsKKyAgb2lk ICAgfCByZWxwZXJzaXN0ZW5jZSB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAg ICAgIHBnX2dldF9leHByICAgICAgICAgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHRwXzBfMSB8IHQgICAgICAgICAgICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKQorIHRwXzFfMiB8IHQgICAgICAgICAg ICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIEZST00gKDEp IFRPICgyKQorKDIgcm93cykKKworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJn ZV9zY2hlbWEsIHBnX3RlbXAsIHB1YmxpYzsKKy0tIENhbid0IG1lcmdlIHRlbXBvcmFyeSBw YXJ0aXRpb25zIGludG8gYSBwZXJzaXN0ZW50IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgdCBN RVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitFUlJPUjog IGNhbm5vdCBjcmVhdGUgYSBwZXJtYW5lbnQgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHRl bXBvcmFyeSByZWxhdGlvbiAidCIKK1JPTExCQUNLOworREVBTExPQ0FURSBnZXRfcGFydGl0 aW9uX2luZm87CistLSBDaGVjayB0aGUgbmV3IHBhcnRpdGlvbiBpbmhlcml0cyBwYXJlbnQn cyB0YWJsZXNwYWNlCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3NjaGVt YSwgcHVibGljOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50IFBSSU1BUlkgS0VZIFVTSU5HIElO REVYIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkKKyAgUEFSVElUSU9OIEJZIFJBTkdF IChpKSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitDUkVBVEUgVEFCTEUgdHBfMF8x IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRB QkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsK K0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8g dHBfMF8yOworU0VMRUNUIHRhYmxlbmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX3RhYmxlcwor ICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBfMicpIEFORCBzY2hlbWFuYW1lID0g J3BhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hJworICBPUkRFUiBCWSB0YWJsZW5hbWUgQ09MTEFU RSAiQyIsIHRhYmxlc3BhY2UgQ09MTEFURSAiQyI7CisgdGFibGVuYW1lIHwgICAgdGFibGVz cGFjZSAgICAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICB8 IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8wXzIgICAgfCByZWdyZXNzX3RibHNwYWNlCisoMiBy b3dzKQorCitTRUxFQ1QgdGFibGVuYW1lLCBpbmRleG5hbWUsIHRhYmxlc3BhY2UgRlJPTSBw Z19pbmRleGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBfMF8yJykgQU5EIHNj aGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJnZV9zY2hlbWEnCisgIE9SREVSIEJZIHRhYmxl bmFtZSBDT0xMQVRFICJDIiwgaW5kZXhuYW1lIENPTExBVEUgIkMiLCB0YWJsZXNwYWNlIENP TExBVEUgIkMiOworIHRhYmxlbmFtZSB8ICBpbmRleG5hbWUgIHwgICAgdGFibGVzcGFjZSAg ICAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgdCAg ICAgICAgIHwgdF9wa2V5ICAgICAgfCByZWdyZXNzX3RibHNwYWNlCisgdHBfMF8yICAgIHwg dHBfMF8yX3BrZXkgfCByZWdyZXNzX3RibHNwYWNlCisoMiByb3dzKQorCitEUk9QIFRBQkxF IHQ7CistLSBDaGVjayB0aGUgbmV3IHBhcnRpdGlvbiBpbmhlcml0cyBwYXJlbnQncyB0YWJs ZSBhY2Nlc3MgbWV0aG9kCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25zX21lcmdlX3Nj aGVtYSwgcHVibGljOworQ1JFQVRFIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uc19tZXJnZV9o ZWFwIFRZUEUgVEFCTEUgSEFORExFUiBoZWFwX3RhYmxlYW1faGFuZGxlcjsKK0NSRUFURSBU QUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBVU0lORyBwYXJ0aXRpb25z X21lcmdlX2hlYXA7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBW QUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04g T0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgTUVSR0Ug UEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworU0VMRUNUIGMucmVs bmFtZSwgYS5hbW5hbWUKK0ZST00gcGdfY2xhc3MgYyBKT0lOIHBnX2FtIGEgT04gYy5yZWxh bSA9IGEub2lkCitXSEVSRSBjLm9pZCBJTiAoJ3QnOjpyZWdjbGFzcywgJ3RwXzBfMic6OnJl Z2NsYXNzKQorT1JERVIgQlkgYy5yZWxuYW1lIENPTExBVEUgIkMiOworIHJlbG5hbWUgfCAg ICAgICAgYW1uYW1lICAgICAgICAgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyB0ICAgICAgIHwgcGFydGl0aW9uc19tZXJnZV9oZWFwCisgdHBfMF8yICB8IHBhcnRp dGlvbnNfbWVyZ2VfaGVhcAorKDIgcm93cykKKworRFJPUCBUQUJMRSB0OworRFJPUCBBQ0NF U1MgTUVUSE9EIHBhcnRpdGlvbnNfbWVyZ2VfaGVhcDsKKy0tIFRlc3QgcGVybWlzc2lvbiBj aGVja3MuICBUaGUgdXNlciBuZWVkcyB0byBvd24gdGhlIHBhcmVudCB0YWJsZSBhbmQgYWxs CistLSB0aGUgbWVyZ2luZyBwYXJ0aXRpb25zIHRvIGRvIHRoZSBtZXJnZS4KK0NSRUFURSBS T0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOworQ1JFQVRFIFJPTEUgcmVncmVz c19wYXJ0aXRpb25fbWVyZ2VfYm9iOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25z X21lcmdlX3NjaGVtYSBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK0dSQU5U IEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgVE8gcmVncmVzc19wYXJ0 aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3Bh cnRpdGlvbl9tZXJnZV9hbGljZTsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9O IEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElP TiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CistLSBFUlJPUjogIG11c3Qg YmUgb3duZXIgb2YgdGFibGUgdAorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0 cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitFUlJPUjogIG11c3QgYmUgb3duZXIgb2Yg dGFibGUgdAorUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworQUxURVIgVEFCTEUgdCBP V05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKKy0tIEVSUk9SOiAgbXVz dCBiZSBvd25lciBvZiB0YWJsZSB0cF8wXzEKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElU SU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworRVJST1I6ICBtdXN0IGJlIG93 bmVyIG9mIHRhYmxlIHRwXzBfMQorUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworQUxU RVIgVEFCTEUgdHBfMF8xIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsK K1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9i OworLS0gRVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHRhYmxlIHRwXzFfMgorQUxURVIgVEFC TEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitF UlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdHBfMV8yCitSRVNFVCBTRVNTSU9OIEFV VEhPUklaQVRJT047CitBTFRFUiBUQUJMRSB0cF8xXzIgT1dORVIgVE8gcmVncmVzc19wYXJ0 aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3Bh cnRpdGlvbl9tZXJnZV9ib2I7CistLSBPazoKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElU SU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworUkVTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OOworRFJPUCBUQUJMRSB0OworLS0gVGVzdDogd2UgY2FuJ3QgbWVyZ2UgcGFy dGl0aW9ucyB3aXRoIGRpZmZlcmVudCBvd25lcnMKK0NSRUFURSBUQUJMRSB0cF8wXzEoaSBp bnQpOworQUxURVIgVEFCTEUgdHBfMF8xIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21l cmdlX2FsaWNlOworQ1JFQVRFIFRBQkxFIHRwXzFfMihpIGludCk7CitBTFRFUiBUQUJMRSB0 cF8xXzIgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iOworQ1JFQVRFIFRB QkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQUxURVIgVEFCTEUgdCBB VFRBQ0ggUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0FM VEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgx KSBUTyAoMik7CistLSBPd25lciBpcyAncmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2Un OgorXGR0IHRwXzBfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiB0 YWJsZXMKKyAgICAgICAgIFNjaGVtYSAgICAgICAgICB8ICBOYW1lICB8IFR5cGUgIHwgICAg ICAgICAgICAgT3duZXIgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIHwgdHBfMF8xIHwgdGFibGUgfCByZWdyZXNzX3BhcnRp dGlvbl9tZXJnZV9hbGljZQorKDEgcm93KQorCistLSBPd25lciBpcyAncmVncmVzc19wYXJ0 aXRpb25fbWVyZ2VfYm9iJzoKK1xkdCB0cF8xXzIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiB0YWJsZXMKKyAgICAgICAgIFNjaGVtYSAgICAgICAgICB8ICBOYW1l ICB8IFR5cGUgIHwgICAgICAgICAgICBPd25lciAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgfCB0cF8xXzIgfCB0YWJsZSB8IHJl Z3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYgorKDEgcm93KQorCistLSBFUlJPUjogIHBhcnRp dGlvbnMgYmVpbmcgbWVyZ2VkIGhhdmUgZGlmZmVyZW50IG93bmVycworQUxURVIgVEFCTEUg dCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitFUlJP UjogIHBhcnRpdGlvbnMgYmVpbmcgbWVyZ2VkIGhhdmUgZGlmZmVyZW50IG93bmVycworRFJP UCBUQUJMRSB0OworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hl bWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsKK1JFVk9LRSBBTEwgT04g U0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0aXRpb25f bWVyZ2VfYm9iOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2FsaWNlOwor RFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKKy0tIFRlc3QgZm9yIGhh c2ggcGFydGl0aW9uZWQgdGFibGUKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9O IEJZIEhBU0goaSk7CitDUkVBVEUgVEFCTEUgdHAxIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxV RVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMCk7CitDUkVBVEUgVEFCTEUgdHAyIFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMSk7 CistLSBFUlJPUjogIHBhcnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5v dCBiZSBtZXJnZWQKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHAxLCB0cDIp IElOVE8gdHAzOworRVJST1I6ICBwYXJ0aXRpb24gb2YgaGFzaC1wYXJ0aXRpb25lZCB0YWJs ZSBjYW5ub3QgYmUgbWVyZ2VkCistLSBFUlJPUjogIGxpc3Qgb2YgcGFydGl0aW9ucyB0byBi ZSBtZXJnZWQgc2hvdWxkIGluY2x1ZGUgYXQgbGVhc3QgdHdvIHBhcnRpdGlvbnMKK0FMVEVS IFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHAxKSBJTlRPIHRwMzsKK0VSUk9SOiAgbGlz dCBvZiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZCBzaG91bGQgaW5jbHVkZSBhdCBsZWFzdCB0 d28gcGFydGl0aW9ucworRFJPUCBUQUJMRSB0OworLS0gVGVzdCBmb3IgbWVyZ2VkIHBhcnRp dGlvbiBwcm9wZXJ0aWVzOgorLS0gKiBTVEFUSVNUSUNTIGlzIGVtcHR5CistLSAqIENPTU1F TlQgaXMgZW1wdHkKKy0tICogREVGQVVMVFMgYXJlIHRoZSBzYW1lIGFzIERFRkFVTFRTIGZv ciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBTVE9SQUdFIGlzIHRoZSBzYW1lIGFzIFNUT1JB R0UgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCistLSAqIEdFTkVSQVRFRCBhbmQgQ09OU1RSQUlO VFMgYXJlIHRoZSBzYW1lIGFzIEdFTkVSQVRFRCBhbmQgQ09OU1RSQUlOVFMgZm9yIHBhcnRp dGlvbmVkIHRhYmxlCistLSAqIFRSSUdHRVJTIGFyZSB0aGUgc2FtZSBhcyBUUklHR0VSUyBm b3IgcGFydGl0aW9uZWQgdGFibGUKK1xzZXQgSElERV9UT0FTVF9DT01QUkVTU0lPTiBmYWxz ZQorQ1JFQVRFIFRBQkxFIHQKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQgU1RPUkFHRSBF WFRFTkRFRCBDT01QUkVTU0lPTiBwZ2x6IERFRkFVTFQgJ2RlZmF1bHRfdCcsCisgYiBiaWdp bnQsCisgZCBkYXRlIEdFTkVSQVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAxLTAxJykgU1RPUkVE KSBQQVJUSVRJT04gQlkgUkFOR0UgKGFicyhpKSk7CitDT01NRU5UIE9OIENPTFVNTiB0Lmkg SVMgJ3QxLmknOworQ1JFQVRFIFRBQkxFIHRwXzBfMQorKGkgaW50IE5PVCBOVUxMLAorIHQg dGV4dCBTVE9SQUdFIE1BSU4gREVGQVVMVCAnZGVmYXVsdF90cF8wXzEnLAorIGIgYmlnaW50 LAorIGQgZGF0ZSBHRU5FUkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMi0wMicpIFNUT1JFRCk7 CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDEpOworQ09NTUVOVCBPTiBDT0xVTU4gdHBfMF8xLmkgSVMgJ3RwXzBfMS5p JzsKK0NSRUFURSBUQUJMRSB0cF8xXzIKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQgU1RP UkFHRSBNQUlOIERFRkFVTFQgJ2RlZmF1bHRfdHBfMV8yJywKKyBiIGJpZ2ludCwKKyBkIGRh dGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDMtMDMnKSBTVE9SRUQpOworQUxURVIg VEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKTsKK0NPTU1FTlQgT04gQ09MVU1OIHRwXzFfMi5pIElTICd0cF8xXzIuaSc7CitDUkVB VEUgU1RBVElTVElDUyB0X3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHQ7CitD UkVBVEUgU1RBVElTVElDUyB0cF8wXzFfc3RhdCAoREVQRU5ERU5DSUVTKSBvbiBpLCBiIGZy b20gdHBfMF8xOworQ1JFQVRFIFNUQVRJU1RJQ1MgdHBfMV8yX3N0YXQgKERFUEVOREVOQ0lF Uykgb24gaSwgYiBmcm9tIHRwXzFfMjsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQg dF9iX2NoZWNrIENIRUNLIChiID4gMCk7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5U IHRfYl9jaGVjazEgQ0hFQ0sgKGIgPiAwKSBOT1QgRU5GT1JDRUQ7CitBTFRFUiBUQUJMRSB0 IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjazIgQ0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQ7CitB TFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9ubiBOT1QgTlVMTCBiIE5PVCBWQUxJ RDsKK0lOU0VSVCBJTlRPIHRwXzBfMShpLCB0LCBiKSBWQUxVRVMoMCwgREVGQVVMVCwgMSk7 CitJTlNFUlQgSU5UTyB0cF8xXzIoaSwgdCwgYikgVkFMVUVTKDEsIERFRkFVTFQsIDIpOwor Q1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigpIFJFVFVSTlMg dHJpZ2dlciBMQU5HVUFHRSAncGxwZ3NxbCcgQVMKKyRCT0RZJAorQkVHSU4KKyAgUkFJU0Ug Tk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVs ID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAgUkVUVVJO IG5ldzsKK0VORDsKKyRCT0RZJDsKK0NSRUFURSBUUklHR0VSIHRfYmVmb3JlX2luc2VydF9y b3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHQgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUg UFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKTsKK0NSRUFURSBUUklHR0VSIHRwXzBf MV9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfMF8xIEZP UiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF8w XzEnKTsKK0NSRUFURSBUUklHR0VSIHRwXzFfMl9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2Vy IEJFRk9SRSBJTlNFUlQgT04gdHBfMV8yIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIFBST0NF RFVSRSB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF8xXzInKTsKK1xkKyB0cF8wXzEKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnRwXzBfMSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29s bGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgICAgICAg ICAgICAgICAgICAgICB8IFN0b3JhZ2UgfCBDb21wcmVzc2lvbiB8IFN0YXRzIHRhcmdldCB8 IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisg aSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgfCB0cF8wXzEuaQorIHQgICAgICB8IHRleHQgICAgfCAg ICAgICAgICAgfCAgICAgICAgICB8ICdkZWZhdWx0X3RwXzBfMSc6OnRleHQgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgbWFpbiAgICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAg IHwgCisgYiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAKKyBkICAgICAgfCBkYXRlICAgIHwgICAg ICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzICgnMDItMDItMjAyMic6 OmRhdGUpIHN0b3JlZCB8IHBsYWluICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8 IAorUGFydGl0aW9uIG9mOiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpCitQYXJ0aXRp b24gY29uc3RyYWludDogKChhYnMoaSkgSVMgTk9UIE5VTEwpIEFORCAoYWJzKGkpID49IDAp IEFORCAoYWJzKGkpIDwgMSkpCitDaGVjayBjb25zdHJhaW50czoKKyAgICAidF9iX2NoZWNr IiBDSEVDSyAoYiA+IDApCisgICAgInRfYl9jaGVjazEiIENIRUNLIChiID4gMCkgTk9UIEVO Rk9SQ0VECisgICAgInRfYl9jaGVjazIiIENIRUNLIChiID4gMCkgTk9UIFZBTElECitTdGF0 aXN0aWNzIG9iamVjdHM6CisgICAgInBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnRwXzBfMV9z dGF0IiAoZGVwZW5kZW5jaWVzKSBPTiBpLCBiIEZST00gdHBfMF8xCitOb3QtbnVsbCBjb25z dHJhaW50czoKKyAgICAidHBfMF8xX2lfbm90X251bGwiIE5PVCBOVUxMICJpIiAoaW5oZXJp dGVkKQorICAgICJ0X2Jfbm4iIE5PVCBOVUxMICJiIiAoaW5oZXJpdGVkKSBOT1QgVkFMSUQK K1RyaWdnZXJzOgorICAgIHRfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5T RVJUIE9OIHRwXzBfMSBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0cmlnZ2VyX2Z1 bmN0aW9uKCd0JyksIE9OIFRBQkxFIHQKKyAgICB0cF8wXzFfYmVmb3JlX2luc2VydF9yb3df dHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9OIHRwXzBfMSBGT1IgRUFDSCBST1cgRVhFQ1VURSBG VU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF8wXzEnKQorCitBTFRFUiBUQUJMRSB0IE1F UkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMTsKK1xkKyB0cF8w XzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVGFibGUgInBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLnRwXzBfMSIKKyBDb2x1bW4gfCAg VHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgICAgICAgIERl ZmF1bHQgICAgICAgICAgICAgICAgICAgICB8IFN0b3JhZ2UgIHwgQ29tcHJlc3Npb24gfCBT dGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0KKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwg fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBs YWluICAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAKKyB0ICAgICAgfCB0ZXh0 ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAnZGVmYXVsdF90Jzo6dGV4dCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IGV4dGVuZGVkIHwgcGdseiAgICAgICAgfCAgICAg ICAgICAgICAgfCAKKyBiICAgICAgfCBiaWdpbnQgIHwgICAgICAgICAgIHwgbm90IG51bGwg fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBs YWluICAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAKKyBkICAgICAgfCBkYXRl ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzICgnMDEt MDEtMjAyMic6OmRhdGUpIHN0b3JlZCB8IHBsYWluICAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgfCAKK1BhcnRpdGlvbiBvZjogdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgy KQorUGFydGl0aW9uIGNvbnN0cmFpbnQ6ICgoYWJzKGkpIElTIE5PVCBOVUxMKSBBTkQgKGFi cyhpKSA+PSAwKSBBTkQgKGFicyhpKSA8IDIpKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAg InRfYl9jaGVjayIgQ0hFQ0sgKGIgPiAwKQorICAgICJ0X2JfY2hlY2sxIiBDSEVDSyAoYiA+ IDApIE5PVCBFTkZPUkNFRAorICAgICJ0X2JfY2hlY2syIiBDSEVDSyAoYiA+IDApIE5PVCBW QUxJRAorTm90LW51bGwgY29uc3RyYWludHM6CisgICAgInRfaV9ub3RfbnVsbCIgTk9UIE5V TEwgImkiIChpbmhlcml0ZWQpCisgICAgInRfYl9ubiIgTk9UIE5VTEwgImIiIChpbmhlcml0 ZWQpIE5PVCBWQUxJRAorVHJpZ2dlcnM6CisgICAgdF9iZWZvcmVfaW5zZXJ0X3Jvd190cmln Z2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfMF8xIEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNU SU9OIHRyaWdnZXJfZnVuY3Rpb24oJ3QnKSwgT04gVEFCTEUgdAorCitJTlNFUlQgSU5UTyB0 KGksIHQsIGIpIFZBTFVFUygxLCBERUZBVUxULCAzKTsKK05PVElDRTogIHRyaWdnZXIodCkg Y2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBCRUZPUkUsIGxldmVsID0gUk9XCitT RUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdCBPUkRFUiBCWSBiOworIHRhYmxl b2lkIHwgaSB8ICAgICAgIHQgICAgICAgIHwgYiB8ICAgICBkICAgICAgCistLS0tLS0tLS0t Ky0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLSstLS0tLS0tLS0tLS0KKyB0cF8wXzEgICB8IDAg fCBkZWZhdWx0X3RwXzBfMSB8IDEgfCAwMS0wMS0yMDIyCisgdHBfMF8xICAgfCAxIHwgZGVm YXVsdF90cF8xXzIgfCAyIHwgMDEtMDEtMjAyMgorIHRwXzBfMSAgIHwgMSB8IGRlZmF1bHRf dCAgICAgIHwgMyB8IDAxLTAxLTIwMjIKKygzIHJvd3MpCisKK0RST1AgVEFCTEUgdDsKK0RS T1AgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigpOworXHNldCBISURFX1RPQVNUX0NPTVBS RVNTSU9OIHRydWUKKy0tIFRlc3QgTUVSR0UgUEFSVElUSU9OUyB3aXRoIG5vdCB2YWxpZCBm b3JlaWduIGtleSBjb25zdHJhaW50CitDUkVBVEUgVEFCTEUgdCAoaSBJTlQgUFJJTUFSWSBL RVkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJ VElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRw XzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0lOU0VS VCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworQ1JFQVRFIFRBQkxFIHRfZmsgKGkgSU5UKTsK K0lOU0VSVCBJTlRPIHRfZmsgVkFMVUVTICgxKSwgKDIpOworQUxURVIgVEFCTEUgdF9mayBB REQgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleSBGT1JFSUdOIEtFWSAoaSkgUkVGRVJFTkNFUyB0 IE5PVCBWQUxJRDsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0 cF8xXzIpIElOVE8gdHBfMF8yOworLS0gU2hvdWxkIGJlIE5PVCBWQUxJRCBGT1JFSUdOIEtF WQorXGQgdHBfMF8yCisgICAgICBUYWJsZSAicGFydGl0aW9uc19tZXJnZV9zY2hlbWEudHBf MF8yIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1 bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0KKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKK1BhcnRp dGlvbiBvZjogdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKQorSW5kZXhlczoKKyAgICAi dHBfMF8yX3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAoaSkKK1JlZmVyZW5jZWQgYnk6Cisg ICAgVEFCTEUgInRfZmsiIENPTlNUUkFJTlQgInRfZmtfaV9ma2V5IiBGT1JFSUdOIEtFWSAo aSkgUkVGRVJFTkNFUyB0KGkpIE5PVCBWQUxJRAorCistLSBFUlJPUjogIGluc2VydCBvciB1 cGRhdGUgb24gdGFibGUgInRfZmsiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQg InRfZmtfaV9ma2V5IgorQUxURVIgVEFCTEUgdF9mayBWQUxJREFURSBDT05TVFJBSU5UIHRf ZmtfaV9ma2V5OworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0X2ZrIiB2 aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0X2ZrX2lfZmtleSIKK0RFVEFJTDog IEtleSAoaSk9KDIpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0Ii4KK0RST1AgVEFCTEUg dF9mazsKK0RST1AgVEFCTEUgdDsKKy0tIFRlc3QgTUVSR0UgUEFSVElUSU9OUyB3aXRoIG5v dCBlbmZvcmNlZCBmb3JlaWduIGtleSBjb25zdHJhaW50CitDUkVBVEUgVEFCTEUgdCAoaSBJ TlQgUFJJTUFSWSBLRVkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUg dHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JF QVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworQ1JFQVRFIFRBQkxFIHRf ZmsgKGkgSU5UKTsKK0lOU0VSVCBJTlRPIHRfZmsgVkFMVUVTICgxKSwgKDIpOworQUxURVIg VEFCTEUgdF9mayBBREQgQ09OU1RSQUlOVCB0X2ZrX2lfZmtleSBGT1JFSUdOIEtFWSAoaSkg UkVGRVJFTkNFUyB0IE5PVCBFTkZPUkNFRDsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElU SU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworLS0gU2hvdWxkIGJlIE5PVCBF TkZPUkNFRCBGT1JFSUdOIEtFWQorXGQgdHBfMF8yCisgICAgICBUYWJsZSAicGFydGl0aW9u c19tZXJnZV9zY2hlbWEudHBfMF8yIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24g fCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwg bm90IG51bGwgfCAKK1BhcnRpdGlvbiBvZjogdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgy KQorSW5kZXhlczoKKyAgICAidHBfMF8yX3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAoaSkK K1JlZmVyZW5jZWQgYnk6CisgICAgVEFCTEUgInRfZmsiIENPTlNUUkFJTlQgInRfZmtfaV9m a2V5IiBGT1JFSUdOIEtFWSAoaSkgUkVGRVJFTkNFUyB0KGkpIE5PVCBFTkZPUkNFRAorCist LSBFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRfZmsiIHZpb2xhdGVzIGZv cmVpZ24ga2V5IGNvbnN0cmFpbnQgInRfZmtfaV9ma2V5IgorQUxURVIgVEFCTEUgdF9mayBB TFRFUiBDT05TVFJBSU5UIHRfZmtfaV9ma2V5IEVORk9SQ0VEOworRVJST1I6ICBpbnNlcnQg b3IgdXBkYXRlIG9uIHRhYmxlICJ0X2ZrIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJh aW50ICJ0X2ZrX2lfZmtleSIKK0RFVEFJTDogIEtleSAoaSk9KDIpIGlzIG5vdCBwcmVzZW50 IGluIHRhYmxlICJ0Ii4KK0RST1AgVEFCTEUgdF9mazsKK0RST1AgVEFCTEUgdDsKKy0tIFRl c3QgZm9yIHJlY29tcHV0YXRpb24gb2Ygc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW5zLgorQ1JF QVRFIFRBQkxFIHQgKGkgaW50LCB0YWJfaWQgaW50IGdlbmVyYXRlZCBhbHdheXMgYXMgKHRh Ymxlb2lkKSBzdG9yZWQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUg dHBfMF8xIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JF QVRFIFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgY2MgQ0hFQ0sodGFibGVvaWQg PD4gMTIzNDU2Nzg5KTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworLS0gU2hv dWxkIGJlIDAgYmVjYXVzZSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0w IGlzIGRpZmZlcmVudCBmcm9tCistLSBwYXJ0aXRpb24gaWRlbnRpZmllciBmb3Igcm93IHdp dGggaT0xLgorU0VMRUNUIGNvdW50KCopIEZST00gdCBXSEVSRSBpID0gMCBBTkQgdGFiX2lk IElOIChTRUxFQ1QgdGFiX2lkIEZST00gdCBXSEVSRSBpID0gMSk7CisgY291bnQgCistLS0t LS0tCisgICAgIDAKKygxIHJvdykKKworLS0gInRhYl9pZCIgY29sdW1uIChzdG9yZWQgZ2Vu ZXJhdGVkIGNvbHVtbikgd2l0aCAidGFibGVvaWQiIGF0dHJpYnV0ZSByZXF1aXJlcworLS0g cmVjb21wdXRhdGlvbiBoZXJlLgorQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0 cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CistLSBTaG91bGQgYmUgMSBiZWNhdXNlIHBh cnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTAgaXMgdGhlIHNhbWUgYXMKKy0t IHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTEuCitTRUxFQ1QgY291bnQo KikgRlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0YWJfaWQgRlJP TSB0IFdIRVJFIGkgPSAxKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQor CitEUk9QIFRBQkxFIHQ7CistLSBUZXN0IGZvciBnZW5lcmF0ZWQgY29sdW1ucyAoZGlmZmVy ZW50IG9yZGVyIG9mIGNvbHVtbnMgaW4gcGFydGl0aW9uZWQgdGFibGUKKy0tIGFuZCBwYXJ0 aXRpb25zKS4KK0NSRUFURSBUQUJMRSB0IChpIGludCwgZyBpbnQgR0VORVJBVEVEIEFMV0FZ UyBBUyAoaSArIHRhYmxlb2lkOjppbnQpKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JF QVRFIFRBQkxFIHRwXzEgKGcgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGkgKyB0YWJsZW9p ZDo6aW50KSwgaSBpbnQpOworQ1JFQVRFIFRBQkxFIHRwXzIgKGcgaW50IEdFTkVSQVRFRCBB TFdBWVMgQVMgKGkgKyB0YWJsZW9pZDo6aW50KSwgaSBpbnQpOworQUxURVIgVEFCTEUgdCBB VFRBQ0ggUEFSVElUSU9OIHRwXzEgRk9SIFZBTFVFUyBGUk9NICgtMSkgVE8gKDEwKTsKK0FM VEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8yIEZPUiBWQUxVRVMgRlJPTSAoMTAp IFRPICgyMCk7CitBTFRFUiBUQUJMRSB0IEFERCBDSEVDSyAoZyA+IDApOworQUxURVIgVEFC TEUgdCBBREQgQ0hFQ0sgKGkgPiAwKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICg1KSwgKDE1 KTsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMSwgdHBfMikgSU5UTyB0 cF8xMjsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgxNik7CistLSBFUlJPUjogIG5ldyByb3cg Zm9yIHJlbGF0aW9uICJ0cF8xMiIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAidF9pX2No ZWNrIgorSU5TRVJUIElOVE8gdCBWQUxVRVMgKDApOworRVJST1I6ICBuZXcgcm93IGZvciBy ZWxhdGlvbiAidHBfMTIiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInRfaV9jaGVjayIK K0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgwLCB2aXJ0dWFsKS4KKy0tIFNob3Vs ZCBiZSAzIHJvd3M6ICg1KSwgKDE1KSwgKDE2KToKK1NFTEVDVCBpIEZST00gdCBPUkRFUiBC WSBpOworIGkgIAorLS0tLQorICA1CisgMTUKKyAxNgorKDMgcm93cykKKworLS0gU2hvdWxk IGJlIDEgYmVjYXVzZSBmb3IgdGhlIHNhbWUgdGFibGVvaWQgKDE1ICsgdGFibGVvaWQpID0g KDUgKyB0YWJsZW9pZCkgKyAxMDoKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hFUkUgaSA9 IDE1IEFORCBnIElOIChTRUxFQ1QgZyArIDEwIEZST00gdCBXSEVSRSBpID0gNSk7CisgY291 bnQgCistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKworRFJPUCBUQUJMRSB0OworUkVTRVQg c2VhcmNoX3BhdGg7CistLQorRFJPUCBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWE7 CitEUk9QIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTI7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9w YXJhbGxlbF9zY2hlZHVsZQppbmRleCBmYmZmYzY3YWU2Li4yZDNmNTBhNDNiIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTEyMyw3ICsxMjMsNyBAQCB0ZXN0OiBw bGFuY2FjaGUgbGltaXQgcGxwZ3NxbCBjb3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHBy ZXBhcmUgY29udmVyc2lvbiB0cgogIyBUaGUgc3RhdHMgdGVzdCByZXNldHMgc3RhdHMsIHNv IG5vdGhpbmcgZWxzZSBuZWVkaW5nIHN0YXRzIGFjY2VzcyBjYW4gYmUgaW4KICMgdGhpcyBn cm91cC4KICMgLS0tLS0tLS0tLQotdGVzdDogcGFydGl0aW9uX2pvaW4gcGFydGl0aW9uX3By dW5lIHJlbG9wdGlvbnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUg cGFydGl0aW9uX2luZm8gdHVwbGVzb3J0IGV4cGxhaW4gY29tcHJlc3Npb24gY29tcHJlc3Np b25fbHo0IG1lbW9pemUgc3RhdHMgcHJlZGljYXRlIG51bWEKK3Rlc3Q6IHBhcnRpdGlvbl9t ZXJnZSBwYXJ0aXRpb25fam9pbiBwYXJ0aXRpb25fcHJ1bmUgcmVsb3B0aW9ucyBoYXNoX3Bh cnQgaW5kZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0ZSBwYXJ0aXRpb25faW5mbyB0dXBsZXNv cnQgZXhwbGFpbiBjb21wcmVzc2lvbiBjb21wcmVzc2lvbl9sejQgbWVtb2l6ZSBzdGF0cyBw cmVkaWNhdGUgbnVtYQogCiAjIGV2ZW50X3RyaWdnZXIgZGVwZW5kcyBvbiBjcmVhdGVfYW0g YW5kIGNhbm5vdCBydW4gY29uY3VycmVudGx5IHdpdGgKICMgYW55IHRlc3QgdGhhdCBydW5z IERETApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX21lcmdl LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZmZiNDk4NjEyYQotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwKQEAg LTAsMCArMSw3OTEgQEAKKy0tCistLSBQQVJUSVRJT05TX01FUkdFCistLSBUZXN0cyBmb3Ig IkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIC4uLiIgY29tbWFuZAorLS0KKwor Q1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTsKK0NSRUFURSBTQ0hFTUEg cGFydGl0aW9uc19tZXJnZV9zY2hlbWEyOworU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9u c19tZXJnZV9zY2hlbWEsIHB1YmxpYzsKKworLS0KKy0tIEJZIFJBTkdFIHBhcnRpdGlvbmlu ZworLS0KKworLS0KKy0tIFRlc3QgZm9yIGVycm9yIGNvZGVzCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFS Q0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9O IEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIxIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIxLTEyLTAxJykg VE8gKCcyMDIxLTEyLTMxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgn MjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAx Jyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc3BlcnNvbl9pZCBJTlQs IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVz X2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBU QUJMRSBzYWxlc19hcHJfMSBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTE1Jyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfYXByXzIgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0xNScpIFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVz X290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworLS0gRVJST1I6 ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQK K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIw MjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9h cHIyMDIyOworLS0gRVJST1I6ICAic2FsZXNfYXByMjAyMiIgaXMgbm90IGEgdGFibGUKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIs IHNhbGVzX21hcjIwMjIsIHNhbGVzX2FwcjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIy MDIyOworLS0gRVJST1I6ICBjYW4gbm90IG1lcmdlIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAy MiIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiCistLSBERVRBSUw6 ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGlzIG5vdCBlcXVh bCB0byB0aGUgdXBwZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19qYW4yMDIyIgorLS0g KHNwYWNlIGJldHdlZW4gc2VjdGlvbnMgc2FsZXNfamFuMjAyMiBhbmQgc2FsZXNfbWFyMjAy MikKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ph bjIwMjIsIHNhbGVzX21hcjIwMjIpIElOVE8gc2FsZXNfamFuX21hcjIwMjI7CistLSBFUlJP UjogIGNhbiBub3QgbWVyZ2UgcGFydGl0aW9uICJzYWxlc19qYW4yMDIyIiB0b2dldGhlciB3 aXRoIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKKy0tIERFVEFJTDogIGxvd2VyIGJvdW5k IG9mIHBhcnRpdGlvbiAic2FsZXNfamFuMjAyMiIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBl ciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCistLSAoc3BhY2UgYmV0d2Vl biBzZWN0aW9ucyBzYWxlc19kZWMyMDIxIGFuZCBzYWxlc19qYW4yMDIyKQorQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZGVjMjAyMSwgc2FsZXNf amFuMjAyMiwgc2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19kZWNfamFuX2ZlYjIwMjI7Cist LSBFUlJPUjogIHBhcnRpdGlvbiB3aXRoIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGlzIGFscmVh ZHkgdXNlZAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2Fs ZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2Fs ZXNfZmViMjAyMikgSU5UTyBzYWxlc19mZWJfbWFyX2FwcjIwMjI7CistLUVSUk9SLCBzYWxl c19hcHJfMiBhbHJlYWR5IGV4aXN0cworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0Ug UEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfamFuMjAy MikgSU5UTyBzYWxlc19hcHJfMjsKKworQ1JFQVRFIFZJRVcgamFuMjAyMnYgYXMgU0VMRUNU ICogRlJPTSBzYWxlc19qYW4yMDIyOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0Ug UEFSVElUSU9OUyAoc2FsZXNfamFuMjAyMiwgc2FsZXNfZmViMjAyMikgSU5UTyBzYWxlc19k ZWNfamFuX2ZlYjIwMjI7CitEUk9QIFZJRVcgamFuMjAyMnY7CisKKy0tIE5PIEVSUk9SOiB0 ZXN0IGZvciBjdXN0b20gcGFydGl0aW9ucyBvcmRlciwgc291cmNlIHBhcnRpdGlvbnMgbm90 IGluIHRoZSBzZWFyY2hfcGF0aAorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uc19tZXJn ZV9zY2hlbWEyLCBwdWJsaWM7CitBTFRFUiBUQUJMRSBwYXJ0aXRpb25zX21lcmdlX3NjaGVt YS5zYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TICgKKyAgcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEuc2FsZXNfZmViMjAyMiwKKyAgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNf bWFyMjAyMiwKKyAgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfamFuMjAyMikgSU5U TyBzYWxlc19qYW5fZmViX21hcjIwMjI7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25z X21lcmdlX3NjaGVtYSwgcHVibGljOworCitQUkVQQVJFIGdldF9wYXJ0aXRpb25faW5mbyhy ZWdjbGFzc1tdKSBBUworU0VMRUNUICBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywKKyAg ICAgICAgYy5yZWxwZXJzaXN0ZW5jZSwKKyAgICAgICAgYy5yZWxraW5kLAorICAgICAgICBp LmluaGRldGFjaHBlbmRpbmcsCisgICAgICAgIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5y ZWxwYXJ0Ym91bmQsIGMub2lkKQorRlJPTSAgICBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBn X2NhdGFsb2cucGdfaW5oZXJpdHMgaQorV0hFUkUgICBjLm9pZCA9IGkuaW5ocmVsaWQgQU5E IGkuaW5ocGFyZW50ID0gQU5ZKCQxKQorT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhw cihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLAorICAgICAgICAgYy5vaWQ6 OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiOworCitFWEVDVVRFIGdldF9wYXJ0aXRpb25f aW5mbygne3NhbGVzX3JhbmdlfScpOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCist LQorLS0gQWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZSwgdGhlbiBtZXJnZSBwYXJ0 aXRpb25zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJ TlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNh bGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19h cHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJz IFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVz X3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxl c19kYXRlKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01h eScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAs ICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMw JyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAn RGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1 MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMt MDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwg ICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAg MzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0w NC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgx MywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAg ICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitTRUxFQ1QgcGdfY2F0YWxvZy5wZ19nZXRfcGFy dGtleWRlZignc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcyk7CisKKy0tIHNob3cgcGFydGl0aW9u cyB3aXRoIGNvbmRpdGlvbnM6CitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5mbygne3NhbGVz X3JhbmdlfScpOworCistLSBjaGVjayBzY2hlbWEtcXVhbGlmaWVkIG5hbWUgb2YgdGhlIG5l dyBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMg KHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2FwcjIwMjIpIElOVE8gcGFy dGl0aW9uc19tZXJnZV9zY2hlbWEyLnNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKworLS0gc2hv dyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK0VYRUNVVEUgZ2V0X3BhcnRpdGlvbl9p bmZvKCd7c2FsZXNfcmFuZ2V9Jyk7CisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVS RSB0YWJsZW5hbWUgPSAnc2FsZXNfZmViX21hcl9hcHIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9 ICdwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTInOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2Ns YXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0 ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKworLS0gVXNlIGluZGV4c2NhbiBm b3IgdGVzdGluZyBpbmRleGVzCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CisKK0VYUExB SU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTIu c2FsZXNfZmViX21hcl9hcHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7 CitTRUxFQ1QgKiBGUk9NIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hMi5zYWxlc19mZWJfbWFy X2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKKworUkVTRVQgZW5h YmxlX3NlcXNjYW47CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBNZXJn ZSBzb21lIHBhcnRpdGlvbnMgaW50byBERUZBVUxUIHBhcnRpdGlvbgorLS0KK0NSRUFURSBU QUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1l IFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJ VElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0w MScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIwMjIgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBU TyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcy MDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0w NS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgREVGQVVMVDsKK0NSRUFURSBJTkRFWCBzYWxlc19yYW5nZV9zYWxlc19kYXRlX2lk eCBPTiBzYWxlc19yYW5nZSBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSk7CisKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIy LTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAg KDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3Yn LCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIw MjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAor ICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNz c29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAn MjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyks CisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxh dG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3Nywg ICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQn KTsKKworLS0gTWVyZ2UgcGFydGl0aW9ucyAoaW5jbHVkZSBERUZBVUxUIHBhcnRpdGlvbikg aW50byBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZQorLS0gbmFtZQorQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUworICAoc2FsZXNfamFuMjAyMiwgc2FsZXNfbWFy MjAyMiwgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEuc2FsZXNfb3RoZXJzKSBJTlRPIHNhbGVz X290aGVyczsKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnMgT1JERVIgQlkgc2FsZXNw ZXJzb25faWQ7CisKKy0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitFWEVD VVRFIGdldF9wYXJ0aXRpb25faW5mbygne3NhbGVzX3JhbmdlfScpOworCitEUk9QIFRBQkxF IHNhbGVzX3JhbmdlOworCistLQorLS0gVGVzdCBmb3I6CistLSAgICogY29tcG9zaXRlIHBh cnRpdGlvbiBrZXk7CistLSAgICogR0VORVJBVEVEIGNvbHVtbjsKKy0tICAgKiBjb2x1bW4g d2l0aCBERUZBVUxUIHZhbHVlLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19kYXRlIChzYWxl c3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc195ZWFyIElOVCwgc2FsZXNfbW9udGgg SU5ULCBzYWxlc19kYXkgSU5ULAorICBzYWxlc19kYXRlIFZBUkNIQVIoMTApIEdFTkVSQVRF RCBBTFdBWVMgQVMKKyAgICAoTFBBRChzYWxlc195ZWFyOjp0ZXh0LCA0LCAnMCcpIHx8ICcu JyB8fCBMUEFEKHNhbGVzX21vbnRoOjp0ZXh0LCAyLCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNh bGVzX2RheTo6dGV4dCwgMiwgJzAnKSkgU1RPUkVELAorICBzYWxlc19kZXBhcnRtZW50IFZB UkNIQVIoMzApIERFRkFVTFQgJ1NhbGVzIGRlcGFydG1lbnQnKQorICBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpOworCitDUkVBVEUg VEFCTEUgc2FsZXNfZGVjMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVT IEZST00gKDIwMjEsIDEyLCAxKSBUTyAoMjAyMiwgMSwgMSk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIw MjIsIDEsIDEpIFRPICgyMDIyLCAyLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIy IFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkg VE8gKDIwMjIsIDMsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBP RiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVF LCBNQVhWQUxVRSwgTUFYVkFMVUUpOworCitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVz cGVyc29uX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVF UworICAoJ01hbmFnZXIxJywgMjAyMSwgMTIsIDcpLAorICAoJ01hbmFnZXIyJywgMjAyMSwg MTIsIDgpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgMSwgMSksCisgICgnTWFuYWdlcjEnLCAy MDIyLCAyLCA0KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDEsIDIpLAorICAoJ01hbmFnZXIz JywgMjAyMiwgMiwgMSksCisgICgnTWFuYWdlcjEnLCAyMDIyLCAzLCAzKSwKKyAgKCdNYW5h Z2VyMicsIDIwMjIsIDMsIDQpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgNSwgMSk7CisKK1NF TEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19kYXRlOworCitBTFRFUiBU QUJMRSBzYWxlc19kYXRlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2phbjIwMjIsIHNhbGVz X2ZlYjIwMjIpIElOVE8gc2FsZXNfamFuX2ZlYjIwMjI7CisKK0lOU0VSVCBJTlRPIHNhbGVz X2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVz X2RheSkgVkFMVUVTCisgICgnTWFuYWdlcjEnLCAyMDIyLCAxLCAxMCksCisgICgnTWFuYWdl cjInLCAyMDIyLCAyLCAxMCk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJP TSBzYWxlc19kYXRlOworRFJPUCBUQUJMRSBzYWxlc19kYXRlOworCistLQorLS0gVGVzdDog bWVyZ2UgcGFydGl0aW9ucyBvZiBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIHRyaWdnZXJzCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZ IEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdF IChzYWxlc3BlcnNvbl9pZCk7CisKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBB UlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CitD UkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF8yMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUg Rk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3Bs ZTIwXzMwIFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDIwKSBU TyAoMzApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMzBfNDAgUEFSVElUSU9OIE9GIHNh bGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCk7CisKK0lOU0VSVCBJTlRP IHNhbGVzcGVvcGxlIFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKKworQ1JFQVRFIE9SIFJFUExB Q0UgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2Vy IExBTkdVQUdFICdwbHBnc3FsJyBBUyAkQk9EWSQKK0JFR0lOCisgICAgUkFJU0UgTk9USUNF ICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScs IFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBUR19MRVZFTDsKKyAgICBSRVRVUk4gTlVM TDsKK0VORDsKKyRCT0RZJDsKKworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJf aW5zZXJ0X3N0YXRlbWVudF90cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2Fs ZXNwZW9wbGUKKyAgICBGT1IgRUFDSCBTVEFURU1FTlQKKyAgICBFWEVDVVRFIFBST0NFRFVS RSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CisKK0NSRUFURSBU UklHR0VSIHNhbGVzcGVvcGxlX2FmdGVyX2luc2VydF9yb3dfdHJpZ2dlcgorICAgIEFGVEVS IElOU0VSVAorICAgIE9OIHNhbGVzcGVvcGxlCisgICAgRk9SIEVBQ0ggUk9XCisgICAgRVhF Q1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc3Blb3BsZScp OworCistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyArIHN0YXRlbWVudCk6 CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMgKDEwLCAnTWF5Jyk7CistLSAxIHRy aWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxl MTBfMjAgVkFMVUVTICgxOSwgJ0l2YW5vdicpOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3Bs ZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc3Blb3BsZTEwXzIwLCBzYWxlc3Blb3BsZTIwXzMw LCBzYWxlc3Blb3BsZTMwXzQwKSBJTlRPIHNhbGVzcGVvcGxlMTBfNDA7CisKKy0tIDIgdHJp Z2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRP IHNhbGVzcGVvcGxlIFZBTFVFUyAoMjAsICdTbWlybm9mZicpOworLS0gMSB0cmlnZ2VyIHNo b3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzQwIFZB TFVFUyAoMzAsICdGb3JkJyk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUwMV8xMDsK K1NFTEVDVCAqIEZST00gc2FsZXNwZW9wbGUxMF80MDsKKworRFJPUCBUQUJMRSBzYWxlc3Bl b3BsZTsKK0RST1AgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCk7CisKKy0t CistLSBUZXN0OiBtZXJnZSBwYXJ0aXRpb25zIHdpdGggZGVsZXRlZCBjb2x1bW5zCistLQor Q1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtF WSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc3BlcnNvbl9pZCk7CisKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJ VElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CistLSBD cmVhdGUgcGFydGl0aW9ucyB3aXRoIHNvbWUgZGVsZXRlZCBjb2x1bW5zOgorQ1JFQVRFIFRB QkxFIHNhbGVzcGVvcGxlMTBfMjAoZDEgVkFSQ0hBUigzMCksIHNhbGVzcGVyc29uX2lkIElO VCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitDUkVBVEUg VEFCTEUgc2FsZXNwZW9wbGUyMF8zMChzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVks IGQyIElOVCwgIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworQ1JFQVRFIFRBQkxF IHNhbGVzcGVvcGxlMzBfNDAoc2FsZXNwZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBkMyBE QVRFLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKTsKKworSU5TRVJUIElOVE8gc2Fs ZXNwZW9wbGUxMF8yMCBWQUxVRVMgKCdkdW1teSB2YWx1ZSAxJywgMTksICdJdmFub3YnKTsK K0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMjBfMzAgVkFMVUVTICgyMCwgMTAxLCAnU21pcm5v ZmYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlMzBfNDAgVkFMVUVTICgzMSwgbm93KCks ICdQb3BvdicpOworCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzIwIERST1AgQ09MVU1O IGQxOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUyMF8zMCBEUk9QIENPTFVNTiBkMjsKK0FM VEVSIFRBQkxFIHNhbGVzcGVvcGxlMzBfNDAgRFJPUCBDT0xVTU4gZDM7CisKK0FMVEVSIFRB QkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF8yMCBGT1Ig VkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworQUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRU QUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRP ICgzMCk7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVz cGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKTsKKworSU5TRVJUIElO VE8gc2FsZXNwZW9wbGUgVkFMVUVTCisgICgxLCAnUG9pcm90JyksCisgICgxMCwgJ01heScp LAorICAoMzAsICdGb3JkJyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIE1FUkdFIFBB UlRJVElPTlMgKHNhbGVzcGVvcGxlMTBfMjAsIHNhbGVzcGVvcGxlMjBfMzAsIHNhbGVzcGVv cGxlMzBfNDApIElOVE8gc2FsZXNwZW9wbGUxMF80MDsKKworc2VsZWN0ICogZnJvbSBzYWxl c3Blb3BsZTsKK3NlbGVjdCAqIGZyb20gc2FsZXNwZW9wbGUwMV8xMDsKK3NlbGVjdCAqIGZy b20gc2FsZXNwZW9wbGUxMF80MDsKKworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZTsKKworLS0K Ky0tIFRlc3Q6IG1lcmdlIHN1Yi1wYXJ0aXRpb25zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVz X3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigz MCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcy MDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0w My0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEn KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgKHNhbGVzcGVyc29uX2lkIElOVCwg c2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNf ZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2FwcjIwMjJfMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2FwcjIwMjJfMTBfMjAgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0xMCcpIFRPICgnMjAyMi0wNC0yMCcpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2FwcjIwMjJfMjBfMzAgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0yMCcpIFRPICgnMjAyMi0wNS0wMScpOwor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKKwor Q1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVG QVVMVDsKKworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNh bGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKKworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEn KSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywgICdG b3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUw LCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0w NycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3LCAg J0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAx ODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAz LTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDEx LCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAg IDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjIt MDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitT RUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfYXByMjAyMiBPUkRFUiBC WSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lk OworCitBTFRFUiBUQUJMRSBzYWxlc19hcHIyMDIyIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVz X2FwcjIwMjJfMDFfMTAsIHNhbGVzX2FwcjIwMjJfMTBfMjAsIHNhbGVzX2FwcjIwMjJfMjBf MzApIElOVE8gc2FsZXNfYXByX2FsbDsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywg KiBGUk9NIHNhbGVzX2FwcjIwMjIgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0 IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5n ZTsKKworLS0KKy0tIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorCistLQorLS0gVGVzdDog c3BlY2lmaWMgZXJyb3JzIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KK0NSRUFURSBU QUJMRSBzYWxlc19saXN0Cisoc2FsZXNwZXJzb25faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMg QVMgSURFTlRJVFksCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19z dGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFU RSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnT3Nsbycs ICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX3dl c3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdO ZXcgWW9yaycsICdNYWRyaWQnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19lYXN0IFBBUlRJVElP TiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxh ZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19jZW50cmFsIFBBUlRJVElPTiBPRiBz YWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVG QVVMVDsKKworCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdDIgKExJS0Ugc2FsZXNfbGlzdCkg UEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19u b3JkMiBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdDIgRk9SIFZBTFVFUyBJTiAoJ09zbG8nLCAn U3QuIFBldGVyc2J1cmcnLCAnSGVsc2lua2knKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhl cnMyIFBBUlRJVElPTiBPRiBzYWxlc19saXN0MiBERUZBVUxUOworCisKK0NSRUFURSBUQUJM RSBzYWxlc19leHRlcm5hbCAoTElLRSBzYWxlc19saXN0KTsKK0NSRUFURSBUQUJMRSBzYWxl c19leHRlcm5hbDIgKHZjaCBWQVJDSEFSKDUpKTsKKworLS0gRVJST1I6ICAic2FsZXNfZXh0 ZXJuYWwiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSAic2FsZXNf bGlzdCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNf d2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNfZXh0ZXJuYWwpIElOVE8gc2FsZXNfYWxsOworLS0g RVJST1I6ICAic2FsZXNfZXh0ZXJuYWwyIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcGFydGl0 aW9uZWQgdGFibGUgInNhbGVzX2xpc3QiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdF IFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2V4dGVybmFsMikg SU5UTyBzYWxlc19hbGw7CistLSBFUlJPUjogIHJlbGF0aW9uICJzYWxlc19ub3JkMiIgaXMg bm90IGEgcGFydGl0aW9uIG9mIHJlbGF0aW9uICJzYWxlc19saXN0IgorQUxURVIgVEFCTEUg c2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19ub3JkMiwg c2FsZXNfZWFzdCkgSU5UTyBzYWxlc19hbGw7CisKK0RST1AgVEFCTEUgc2FsZXNfZXh0ZXJu YWwyOworRFJPUCBUQUJMRSBzYWxlc19leHRlcm5hbDsKK0RST1AgVEFCTEUgc2FsZXNfbGlz dDI7CitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CisKKy0tCistLSBUZXN0OiBCWSBMSVNUIHBh cnRpdGlvbmluZywgTUVSR0UgUEFSVElUSU9OUyB3aXRoIGRhdGEKKy0tCitDUkVBVEUgVEFC TEUgc2FsZXNfbGlzdAorKHNhbGVzcGVyc29uX2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFT IElERU5USVRZLAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3Rh dGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUp CitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUgSU5ERVggc2Fs ZXNfbGlzdF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVl IChzYWxlc3BlcnNvbl9uYW1lKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzX3N0 YXRlX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc19zdGF0ZSk7CisKK0NS RUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxV RVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJnJywgJ0hlbHNpbmtpJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfd2VzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElO ICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2Vhc3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycs ICdEZWxoaScsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2NlbnRyYWwg UEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJs aW4nLCAnS3lpdicpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Yg c2FsZXNfbGlzdCBERUZBVUxUOworCitJTlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3Bl cnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwgc2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxV RVMKKyAgKCdUcnVtcCcsICAgICdCZWppbmcnLCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAx JyksCisgICgnU21pcm5vZmYnLCAnTmV3IFlvcmsnLCAgICAgICAgNTAwLCAnMjAyMi0wMy0w MycpLAorICAoJ0ZvcmQnLCAgICAgJ1N0LiBQZXRlcnNidXJnJywgMjAwMCwgJzIwMjItMDMt MDUnKSwKKyAgKCdJdmFub3YnLCAgICdXYXJzYXcnLCAgICAgICAgICA3NTAsICcyMDIyLTAz LTA0JyksCisgICgnRGVldicsICAgICAnTGlzYm9uJywgICAgICAgICAgMjUwLCAnMjAyMi0w My0wNycpLAorICAoJ1BvaXJvdCcsICAgJ0JlcmxpbicsICAgICAgICAgMTAwMCwgJzIwMjIt MDMtMDEnKSwKKyAgKCdNYXknLCAgICAgICdIZWxzaW5raScsICAgICAgIDEyMDAsICcyMDIy LTAzLTA2JyksCisgICgnTGknLCAgICAgICAnVmxhZGl2b3N0b2snLCAgICAxMTUwLCAnMjAy Mi0wMy0wOScpLAorICAoJ01heScsICAgICAgJ0hlbHNpbmtpJywgICAgICAgMTIwMCwgJzIw MjItMDMtMTEnKSwKKyAgKCdIYWxkZXInLCAgICdPc2xvJywgICAgICAgICAgICA4MDAsICcy MDIyLTAzLTAyJyksCisgICgnTXVsbGVyJywgICAnTWFkcmlkJywgICAgICAgICAgNjUwLCAn MjAyMi0wMy0wNScpLAorICAoJ1NtaXRoJywgICAgJ0t5aXYnLCAgICAgICAgICAgIDM1MCwg JzIwMjItMDMtMTAnKSwKKyAgKCdHYW5kaScsICAgICdXYXJzYXcnLCAgICAgICAgICAxNTAs ICcyMDIyLTAzLTA4JyksCisgICgnUGxhdG8nLCAgICAnTGlzYm9uJywgICAgICAgICAgOTUw LCAnMjAyMi0wMy0wNScpOworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25z OgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tzYWxlc19saXN0fScpOworCitBTFRF UiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVz X2Vhc3QsIHNhbGVzX2NlbnRyYWwpIElOVE8gc2FsZXNfYWxsOworCistLSBzaG93IHBhcnRp dGlvbnMgd2l0aCBjb25kaXRpb25zOgorRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3tz YWxlc19saXN0fScpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2Fs ZXNfbGlzdCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIs IHNhbGVzcGVyc29uX2lkOworCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4 ZXMgYWZ0ZXIgbWVyZ2luZyBwYXJ0aXRpb25zCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7 CisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19hbGwgV0hFUkUg c2FsZXNfc3RhdGUgPSAnV2Fyc2F3JzsKK1NFTEVDVCAqIEZST00gc2FsZXNfYWxsIFdIRVJF IHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAq IEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworU0VMRUNU ICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7CitFWFBM QUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc3Bl cnNvbl9uYW1lID0gJ0l2YW5vdic7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUg c2FsZXNwZXJzb25fbmFtZSA9ICdJdmFub3YnOworCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsK KworRFJPUCBUQUJMRSBzYWxlc19saXN0OworCistLQorLS0gVHJ5IHRvIE1FUkdFIHBhcnRp dGlvbnMgb2YgYW5vdGhlciB0YWJsZS4KKy0tCitDUkVBVEUgVEFCTEUgdDEgKGkgaW50LCBh IGludCwgYiBpbnQsIGMgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGEsIGIpOworQ1JFQVRF IFRBQkxFIHQxcDEgUEFSVElUSU9OIE9GIHQxIEZPUiBWQUxVRVMgRlJPTSAoMSwgMSkgVE8g KDEsIDIpOworQ1JFQVRFIFRBQkxFIHQyIChpIGludCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkg UkFOR0UgKHQpOworQ1JFQVRFIFRBQkxFIHQycGEgUEFSVElUSU9OIE9GIHQyIEZPUiBWQUxV RVMgRlJPTSAoJ0EnKSBUTyAoJ0MnKTsKK0NSRUFURSBUQUJMRSB0MyAoaSBpbnQsIHQgdGV4 dCk7CisKKy0tIEVSUk9SOiAgcmVsYXRpb24gInQxcDEiIGlzIG5vdCBhIHBhcnRpdGlvbiBv ZiByZWxhdGlvbiAidDIiCitBTFRFUiBUQUJMRSB0MiBNRVJHRSBQQVJUSVRJT05TICh0MXAx LCB0MnBhKSBJTlRPIHQycDsKKy0tIEVSUk9SOiAgInQzIiBpcyBub3QgYSBwYXJ0aXRpb24g b2YgcGFydGl0aW9uZWQgdGFibGUgInQyIgorQUxURVIgVEFCTEUgdDIgTUVSR0UgUEFSVElU SU9OUyAodDJwYSwgdDMpIElOVE8gdDJwOworCitEUk9QIFRBQkxFIHQzOworRFJPUCBUQUJM RSB0MjsKK0RST1AgVEFCTEUgdDE7CisKKworLS0KKy0tIENoZWNrIHRoZSBwYXJ0aXRpb24g aW5kZXggbmFtZSBpZiB0aGUgcGFydGl0aW9uIG5hbWUgaXMgdGhlIHNhbWUgYXMgb25lCist LSBvZiB0aGUgbWVyZ2VkIHBhcnRpdGlvbnMuCistLQorQ1JFQVRFIFRBQkxFIHQgKGkgaW50 LCBQUklNQVJZIEtFWShpKSkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKKworQ1JFQVRFIFRB QkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsK K0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgx KSBUTyAoMik7CisKK0NSRUFURSBJTkRFWCB0aWR4IE9OIHQoaSk7CitBTFRFUiBUQUJMRSB0 IE1FUkdFIFBBUlRJVElPTlMgKHRwXzFfMiwgdHBfMF8xKSBJTlRPIHRwXzFfMjsKKworLS0g SW5kZXhuYW1lIHZhbHVlcyBzaG91bGQgYmUgJ3RwXzFfMl9wa2V5JyBhbmQgJ3RwXzFfMl9p X2lkeCcuCitcZCsgdHBfMV8yCisKK0RST1AgVEFCTEUgdDsKKworLS0KKy0tIFRyeSB0byBN RVJHRSBwYXJ0aXRpb25zIG9mIHRlbXBvcmFyeSB0YWJsZS4KKy0tCitCRUdJTjsKK1NIT1cg c2VhcmNoX3BhdGg7CitDUkVBVEUgVEVNUCBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZ IFJBTkdFIChpKSBPTiBDT01NSVQgRFJPUDsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzBfMSBQ QVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NSRUFURSBURU1Q IFRBQkxFIHRwXzFfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgy KTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzJfMyBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVT IEZST00gKDIpIFRPICgzKTsKK0NSRUFURSBURU1QIFRBQkxFIHRwXzNfNCBQQVJUSVRJT04g T0YgdCBGT1IgVkFMVUVTIEZST00gKDMpIFRPICg0KTsKKworQUxURVIgVEFCTEUgdCBNRVJH RSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyBwZ190ZW1wLnRwXzBfMjsKK0FM VEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8yLCB0cF8yXzMpIElOVE8gcGdf dGVtcC50cF8wXzM7CisKKy0tIFBhcnRpdGlvbiBzaG91bGQgYmUgdGVtcG9yYXJ5LgorRVhF Q1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3t0fScpOworLS0gRVJST1I6ICBjYW5ub3QgY3Jl YXRlIGEgcGVybWFuZW50IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVs YXRpb24gInQiCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMywgdHBf M180KSBJTlRPIHRwXzBfNDsKK1JPTExCQUNLOworCistLQorLS0gVHJ5IG1peGluZyBwZXJt YW5lbnQgYW5kIHRlbXBvcmFyeSBwYXJ0aXRpb25zLgorLS0KK0JFR0lOOworU0VUIHNlYXJj aF9wYXRoID0gcGFydGl0aW9uc19tZXJnZV9zY2hlbWEsIHBnX3RlbXAsIHB1YmxpYzsKK0NS RUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBU QUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7 CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAo MSkgVE8gKDIpOworCitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIGMucmVs cGVyc2lzdGVuY2UgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMgV0hFUkUgYy5vaWQgPSAn dCc6OnJlZ2NsYXNzOworRVhFQ1VURSBnZXRfcGFydGl0aW9uX2luZm8oJ3t0fScpOworU0FW RVBPSU5UIHM7CisKK1NFVCBzZWFyY2hfcGF0aCA9IHBnX3RlbXAsIHBhcnRpdGlvbnNfbWVy Z2Vfc2NoZW1hLCBwdWJsaWM7CistLSBDYW4ndCBtZXJnZSBwZXJzaXN0ZW50IHBhcnRpdGlv bnMgaW50byBhIHRlbXBvcmFyeSBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFS VElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworCitST0xMQkFDSyBUTyBT QVZFUE9JTlQgczsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h LCBwdWJsaWM7CistLSBDYW4ndCBtZXJnZSBwZXJzaXN0ZW50IHBhcnRpdGlvbnMgaW50byBh IHRlbXBvcmFyeSBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAo dHBfMF8xLCB0cF8xXzIpIElOVE8gcGdfdGVtcC50cF8wXzI7CitST0xMQkFDSzsKKworQkVH SU47CitTRVQgc2VhcmNoX3BhdGggPSBwZ190ZW1wLCBwYXJ0aXRpb25zX21lcmdlX3NjaGVt YSwgcHVibGljOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0Ug KGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMSBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZS T00gKDApIFRPICgxKTsKK0NSRUFURSBUQUJMRSB0cF8xXzIgUEFSVElUSU9OIE9GIHQgRk9S IFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CisKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5y ZWdjbGFzcywgYy5yZWxwZXJzaXN0ZW5jZSBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYyBX SEVSRSBjLm9pZCA9ICd0Jzo6cmVnY2xhc3M7CitFWEVDVVRFIGdldF9wYXJ0aXRpb25faW5m bygne3R9Jyk7CisKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h LCBwZ190ZW1wLCBwdWJsaWM7CisKKy0tIENhbid0IG1lcmdlIHRlbXBvcmFyeSBwYXJ0aXRp b25zIGludG8gYSBwZXJzaXN0ZW50IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgdCBNRVJHRSBQ QVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitST0xMQkFDSzsKKwor REVBTExPQ0FURSBnZXRfcGFydGl0aW9uX2luZm87CisKKy0tIENoZWNrIHRoZSBuZXcgcGFy dGl0aW9uIGluaGVyaXRzIHBhcmVudCdzIHRhYmxlc3BhY2UKK1NFVCBzZWFyY2hfcGF0aCA9 IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CitDUkVBVEUgVEFCTEUgdCAoaSBp bnQgUFJJTUFSWSBLRVkgVVNJTkcgSU5ERVggVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNl KQorICBQQVJUSVRJT04gQlkgUkFOR0UgKGkpIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFj ZTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9N ICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBW QUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05T ICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8wXzI7CitTRUxFQ1QgdGFibGVuYW1lLCB0YWJs ZXNwYWNlIEZST00gcGdfdGFibGVzCisgIFdIRVJFIHRhYmxlbmFtZSBJTiAoJ3QnLCAndHBf MF8yJykgQU5EIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uc19tZXJnZV9zY2hlbWEnCisgIE9S REVSIEJZIHRhYmxlbmFtZSBDT0xMQVRFICJDIiwgdGFibGVzcGFjZSBDT0xMQVRFICJDIjsK K1NFTEVDVCB0YWJsZW5hbWUsIGluZGV4bmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX2luZGV4 ZXMKKyAgV0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzInKSBBTkQgc2NoZW1hbmFt ZSA9ICdwYXJ0aXRpb25zX21lcmdlX3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1lIENP TExBVEUgIkMiLCBpbmRleG5hbWUgQ09MTEFURSAiQyIsIHRhYmxlc3BhY2UgQ09MTEFURSAi QyI7CitEUk9QIFRBQkxFIHQ7CisKKy0tIENoZWNrIHRoZSBuZXcgcGFydGl0aW9uIGluaGVy aXRzIHBhcmVudCdzIHRhYmxlIGFjY2VzcyBtZXRob2QKK1NFVCBzZWFyY2hfcGF0aCA9IHBh cnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CitDUkVBVEUgQUNDRVNTIE1FVEhPRCBw YXJ0aXRpb25zX21lcmdlX2hlYXAgVFlQRSBUQUJMRSBIQU5ETEVSIGhlYXBfdGFibGVhbV9o YW5kbGVyOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkp IFVTSU5HIHBhcnRpdGlvbnNfbWVyZ2VfaGVhcDsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFS VElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUg dHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQUxU RVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8wXzEsIHRwXzFfMikgSU5UTyB0cF8w XzI7CitTRUxFQ1QgYy5yZWxuYW1lLCBhLmFtbmFtZQorRlJPTSBwZ19jbGFzcyBjIEpPSU4g cGdfYW0gYSBPTiBjLnJlbGFtID0gYS5vaWQKK1dIRVJFIGMub2lkIElOICgndCc6OnJlZ2Ns YXNzLCAndHBfMF8yJzo6cmVnY2xhc3MpCitPUkRFUiBCWSBjLnJlbG5hbWUgQ09MTEFURSAi QyI7CitEUk9QIFRBQkxFIHQ7CitEUk9QIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uc19tZXJn ZV9oZWFwOworCistLSBUZXN0IHBlcm1pc3Npb24gY2hlY2tzLiAgVGhlIHVzZXIgbmVlZHMg dG8gb3duIHRoZSBwYXJlbnQgdGFibGUgYW5kIGFsbAorLS0gdGhlIG1lcmdpbmcgcGFydGl0 aW9ucyB0byBkbyB0aGUgbWVyZ2UuCitDUkVBVEUgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9t ZXJnZV9hbGljZTsKK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsK K0dSQU5UIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9zY2hlbWEgVE8gcmVncmVz c19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKKworU0VU IFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZTsK K0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFU RSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJP TSAoMSkgVE8gKDIpOworCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFy dGl0aW9uX21lcmdlX2JvYjsKKy0tIEVSUk9SOiAgbXVzdCBiZSBvd25lciBvZiB0YWJsZSB0 CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRP IHRwXzBfMjsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworQUxURVIgVEFCTEUg dCBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitTRVQgU0VTU0lPTiBB VVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsKKy0tIEVSUk9SOiAg bXVzdCBiZSBvd25lciBvZiB0YWJsZSB0cF8wXzEKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFS VElUSU9OUyAodHBfMF8xLCB0cF8xXzIpIElOVE8gdHBfMF8yOworUkVTRVQgU0VTU0lPTiBB VVRIT1JJWkFUSU9OOworCitBTFRFUiBUQUJMRSB0cF8wXzEgT1dORVIgVE8gcmVncmVzc19w YXJ0aXRpb25fbWVyZ2VfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNz X3BhcnRpdGlvbl9tZXJnZV9ib2I7CistLSBFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFi bGUgdHBfMV8yCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBf MV8yKSBJTlRPIHRwXzBfMjsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworQUxU RVIgVEFCTEUgdHBfMV8yIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX21lcmdlX2JvYjsK K1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9i OworLS0gT2s6CitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBf MV8yKSBJTlRPIHRwXzBfMjsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworRFJP UCBUQUJMRSB0OworCistLSBUZXN0OiB3ZSBjYW4ndCBtZXJnZSBwYXJ0aXRpb25zIHdpdGgg ZGlmZmVyZW50IG93bmVycworQ1JFQVRFIFRBQkxFIHRwXzBfMShpIGludCk7CitBTFRFUiBU QUJMRSB0cF8wXzEgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitD UkVBVEUgVEFCTEUgdHBfMV8yKGkgaW50KTsKK0FMVEVSIFRBQkxFIHRwXzFfMiBPV05FUiBU TyByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CisKK0NSRUFURSBUQUJMRSB0IChpIGlu dCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKKworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFS VElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0FMVEVSIFRBQkxF IHQgQVRUQUNIIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7 CisKKy0tIE93bmVyIGlzICdyZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9hbGljZSc6CitcZHQg dHBfMF8xCistLSBPd25lciBpcyAncmVncmVzc19wYXJ0aXRpb25fbWVyZ2VfYm9iJzoKK1xk dCB0cF8xXzIKKworLS0gRVJST1I6ICBwYXJ0aXRpb25zIGJlaW5nIG1lcmdlZCBoYXZlIGRp ZmZlcmVudCBvd25lcnMKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8x LCB0cF8xXzIpIElOVE8gdHBfMF8yOworCitEUk9QIFRBQkxFIHQ7CitSRVZPS0UgQUxMIE9O IFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9u X21lcmdlX2FsaWNlOworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9tZXJnZV9ib2I7CitEUk9QIFJPTEUgcmVn cmVzc19wYXJ0aXRpb25fbWVyZ2VfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRp b25fbWVyZ2VfYm9iOworCisKKy0tIFRlc3QgZm9yIGhhc2ggcGFydGl0aW9uZWQgdGFibGUK K0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIEhBU0goaSk7CitDUkVBVEUg VEFCTEUgdHAxIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBS RU1BSU5ERVIgMCk7CitDUkVBVEUgVEFCTEUgdHAyIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxV RVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIgMSk7CisKKy0tIEVSUk9SOiAgcGFydGl0 aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIG1lcmdlZAorQUxURVIg VEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cDEsIHRwMikgSU5UTyB0cDM7CisKKy0tIEVS Uk9SOiAgbGlzdCBvZiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZCBzaG91bGQgaW5jbHVkZSBh dCBsZWFzdCB0d28gcGFydGl0aW9ucworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05T ICh0cDEpIElOVE8gdHAzOworCitEUk9QIFRBQkxFIHQ7CisKKworLS0gVGVzdCBmb3IgbWVy Z2VkIHBhcnRpdGlvbiBwcm9wZXJ0aWVzOgorLS0gKiBTVEFUSVNUSUNTIGlzIGVtcHR5Cist LSAqIENPTU1FTlQgaXMgZW1wdHkKKy0tICogREVGQVVMVFMgYXJlIHRoZSBzYW1lIGFzIERF RkFVTFRTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBTVE9SQUdFIGlzIHRoZSBzYW1l IGFzIFNUT1JBR0UgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCistLSAqIEdFTkVSQVRFRCBhbmQg Q09OU1RSQUlOVFMgYXJlIHRoZSBzYW1lIGFzIEdFTkVSQVRFRCBhbmQgQ09OU1RSQUlOVFMg Zm9yIHBhcnRpdGlvbmVkIHRhYmxlCistLSAqIFRSSUdHRVJTIGFyZSB0aGUgc2FtZSBhcyBU UklHR0VSUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKK1xzZXQgSElERV9UT0FTVF9DT01QUkVT U0lPTiBmYWxzZQorCitDUkVBVEUgVEFCTEUgdAorKGkgaW50IE5PVCBOVUxMLAorIHQgdGV4 dCBTVE9SQUdFIEVYVEVOREVEIENPTVBSRVNTSU9OIHBnbHogREVGQVVMVCAnZGVmYXVsdF90 JywKKyBiIGJpZ2ludCwKKyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDEt MDEnKSBTVE9SRUQpIFBBUlRJVElPTiBCWSBSQU5HRSAoYWJzKGkpKTsKK0NPTU1FTlQgT04g Q09MVU1OIHQuaSBJUyAndDEuaSc7CisKK0NSRUFURSBUQUJMRSB0cF8wXzEKKyhpIGludCBO T1QgTlVMTCwKKyB0IHRleHQgU1RPUkFHRSBNQUlOIERFRkFVTFQgJ2RlZmF1bHRfdHBfMF8x JywKKyBiIGJpZ2ludCwKKyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDIt MDInKSBTVE9SRUQpOworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzBfMSBG T1IgVkFMVUVTIEZST00gKDApIFRPICgxKTsKK0NPTU1FTlQgT04gQ09MVU1OIHRwXzBfMS5p IElTICd0cF8wXzEuaSc7CisKK0NSRUFURSBUQUJMRSB0cF8xXzIKKyhpIGludCBOT1QgTlVM TCwKKyB0IHRleHQgU1RPUkFHRSBNQUlOIERFRkFVTFQgJ2RlZmF1bHRfdHBfMV8yJywKKyBi IGJpZ2ludCwKKyBkIGRhdGUgR0VORVJBVEVEIEFMV0FZUyBhcyAoJzIwMjItMDMtMDMnKSBT VE9SRUQpOworQUxURVIgVEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFM VUVTIEZST00gKDEpIFRPICgyKTsKK0NPTU1FTlQgT04gQ09MVU1OIHRwXzFfMi5pIElTICd0 cF8xXzIuaSc7CisKK0NSRUFURSBTVEFUSVNUSUNTIHRfc3RhdCAoREVQRU5ERU5DSUVTKSBv biBpLCBiIGZyb20gdDsKK0NSRUFURSBTVEFUSVNUSUNTIHRwXzBfMV9zdGF0IChERVBFTkRF TkNJRVMpIG9uIGksIGIgZnJvbSB0cF8wXzE7CitDUkVBVEUgU1RBVElTVElDUyB0cF8xXzJf c3RhdCAoREVQRU5ERU5DSUVTKSBvbiBpLCBiIGZyb20gdHBfMV8yOworCitBTFRFUiBUQUJM RSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjayBDSEVDSyAoYiA+IDApOworQUxURVIgVEFC TEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2sxIENIRUNLIChiID4gMCkgTk9UIEVORk9S Q0VEOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2JfY2hlY2syIENIRUNLIChi ID4gMCkgTk9UIFZBTElEOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCB0X2Jfbm4g Tk9UIE5VTEwgYiBOT1QgVkFMSUQ7CisKK0lOU0VSVCBJTlRPIHRwXzBfMShpLCB0LCBiKSBW QUxVRVMoMCwgREVGQVVMVCwgMSk7CitJTlNFUlQgSU5UTyB0cF8xXzIoaSwgdCwgYikgVkFM VUVTKDEsIERFRkFVTFQsIDIpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gdHJpZ2dl cl9mdW5jdGlvbigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAncGxwZ3NxbCcgQVMKKyRC T0RZJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9u ID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVO LCBUR19MRVZFTDsKKyAgUkVUVVJOIG5ldzsKK0VORDsKKyRCT0RZJDsKKworQ1JFQVRFIFRS SUdHRVIgdF9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdCBG T1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jdGlvbigndCcp OworQ1JFQVRFIFRSSUdHRVIgdHBfMF8xX2JlZm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVG T1JFIElOU0VSVCBPTiB0cF8wXzEgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJF IHRyaWdnZXJfZnVuY3Rpb24oJ3RwXzBfMScpOworQ1JFQVRFIFRSSUdHRVIgdHBfMV8yX2Jl Zm9yZV9pbnNlcnRfcm93X3RyaWdnZXIgQkVGT1JFIElOU0VSVCBPTiB0cF8xXzIgRk9SIEVB Q0ggUk9XCisgIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY3Rpb24oJ3RwXzFfMicp OworCitcZCsgdHBfMF8xCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBf MSwgdHBfMV8yKSBJTlRPIHRwXzBfMTsKK1xkKyB0cF8wXzEKKworSU5TRVJUIElOVE8gdChp LCB0LCBiKSBWQUxVRVMoMSwgREVGQVVMVCwgMyk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2Ns YXNzLCAqIEZST00gdCBPUkRFUiBCWSBiOworRFJPUCBUQUJMRSB0OworRFJPUCBGVU5DVElP TiB0cmlnZ2VyX2Z1bmN0aW9uKCk7Citcc2V0IEhJREVfVE9BU1RfQ09NUFJFU1NJT04gdHJ1 ZQorCisKKy0tIFRlc3QgTUVSR0UgUEFSVElUSU9OUyB3aXRoIG5vdCB2YWxpZCBmb3JlaWdu IGtleSBjb25zdHJhaW50CitDUkVBVEUgVEFCTEUgdCAoaSBJTlQgUFJJTUFSWSBLRVkpIFBB UlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgdHBfMF8xIFBBUlRJVElPTiBP RiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpOworQ1JFQVRFIFRBQkxFIHRwXzFfMiBQ QVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0lOU0VSVCBJTlRP IHQgVkFMVUVTICgwKSwgKDEpOworQ1JFQVRFIFRBQkxFIHRfZmsgKGkgSU5UKTsKK0lOU0VS VCBJTlRPIHRfZmsgVkFMVUVTICgxKSwgKDIpOworQUxURVIgVEFCTEUgdF9mayBBREQgQ09O U1RSQUlOVCB0X2ZrX2lfZmtleSBGT1JFSUdOIEtFWSAoaSkgUkVGRVJFTkNFUyB0IE5PVCBW QUxJRDsKK0FMVEVSIFRBQkxFIHQgTUVSR0UgUEFSVElUSU9OUyAodHBfMF8xLCB0cF8xXzIp IElOVE8gdHBfMF8yOworCistLSBTaG91bGQgYmUgTk9UIFZBTElEIEZPUkVJR04gS0VZCitc ZCB0cF8wXzIKKy0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidF9mayIg dmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidF9ma19pX2ZrZXkiCitBTFRFUiBU QUJMRSB0X2ZrIFZBTElEQVRFIENPTlNUUkFJTlQgdF9ma19pX2ZrZXk7CisKK0RST1AgVEFC TEUgdF9mazsKK0RST1AgVEFCTEUgdDsKKworLS0gVGVzdCBNRVJHRSBQQVJUSVRJT05TIHdp dGggbm90IGVuZm9yY2VkIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQKK0NSRUFURSBUQUJMRSB0 IChpIElOVCBQUklNQVJZIEtFWSkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBU QUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSk7 CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAo MSkgVE8gKDIpOworSU5TRVJUIElOVE8gdCBWQUxVRVMgKDApLCAoMSk7CitDUkVBVEUgVEFC TEUgdF9mayAoaSBJTlQpOworSU5TRVJUIElOVE8gdF9mayBWQUxVRVMgKDEpLCAoMik7CisK K0FMVEVSIFRBQkxFIHRfZmsgQUREIENPTlNUUkFJTlQgdF9ma19pX2ZrZXkgRk9SRUlHTiBL RVkgKGkpIFJFRkVSRU5DRVMgdCBOT1QgRU5GT1JDRUQ7CitBTFRFUiBUQUJMRSB0IE1FUkdF IFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJTlRPIHRwXzBfMjsKKworLS0gU2hvdWxk IGJlIE5PVCBFTkZPUkNFRCBGT1JFSUdOIEtFWQorXGQgdHBfMF8yCistLSBFUlJPUjogIGlu c2VydCBvciB1cGRhdGUgb24gdGFibGUgInRfZmsiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNv bnN0cmFpbnQgInRfZmtfaV9ma2V5IgorQUxURVIgVEFCTEUgdF9mayBBTFRFUiBDT05TVFJB SU5UIHRfZmtfaV9ma2V5IEVORk9SQ0VEOworCitEUk9QIFRBQkxFIHRfZms7CitEUk9QIFRB QkxFIHQ7CisKKworLS0gVGVzdCBmb3IgcmVjb21wdXRhdGlvbiBvZiBzdG9yZWQgZ2VuZXJh dGVkIGNvbHVtbnMuCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQsIHRhYl9pZCBpbnQgZ2VuZXJh dGVkIGFsd2F5cyBhcyAodGFibGVvaWQpIHN0b3JlZCkgUEFSVElUSU9OIEJZIFJBTkdFIChp KTsKK0NSRUFURSBUQUJMRSB0cF8wXzEgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9N ICgwKSBUTyAoMSk7CitDUkVBVEUgVEFCTEUgdHBfMV8yIFBBUlRJVElPTiBPRiB0IEZPUiBW QUxVRVMgRlJPTSAoMSkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBBREQgQ09OU1RSQUlOVCBj YyBDSEVDSyh0YWJsZW9pZCA8PiAxMjM0NTY3ODkpOworSU5TRVJUIElOVE8gdCBWQUxVRVMg KDApLCAoMSk7CisKKy0tIFNob3VsZCBiZSAwIGJlY2F1c2UgcGFydGl0aW9uIGlkZW50aWZp ZXIgZm9yIHJvdyB3aXRoIGk9MCBpcyBkaWZmZXJlbnQgZnJvbQorLS0gcGFydGl0aW9uIGlk ZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIHQgV0hF UkUgaSA9IDAgQU5EIHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9NIHQgV0hFUkUgaSA9 IDEpOworCistLSAidGFiX2lkIiBjb2x1bW4gKHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1uKSB3 aXRoICJ0YWJsZW9pZCIgYXR0cmlidXRlIHJlcXVpcmVzCistLSByZWNvbXB1dGF0aW9uIGhl cmUuCitBTFRFUiBUQUJMRSB0IE1FUkdFIFBBUlRJVElPTlMgKHRwXzBfMSwgdHBfMV8yKSBJ TlRPIHRwXzBfMjsKKworLS0gU2hvdWxkIGJlIDEgYmVjYXVzZSBwYXJ0aXRpb24gaWRlbnRp ZmllciBmb3Igcm93IHdpdGggaT0wIGlzIHRoZSBzYW1lIGFzCistLSBwYXJ0aXRpb24gaWRl bnRpZmllciBmb3Igcm93IHdpdGggaT0xLgorU0VMRUNUIGNvdW50KCopIEZST00gdCBXSEVS RSBpID0gMCBBTkQgdGFiX2lkIElOIChTRUxFQ1QgdGFiX2lkIEZST00gdCBXSEVSRSBpID0g MSk7CisKK0RST1AgVEFCTEUgdDsKKworCistLSBUZXN0IGZvciBnZW5lcmF0ZWQgY29sdW1u cyAoZGlmZmVyZW50IG9yZGVyIG9mIGNvbHVtbnMgaW4gcGFydGl0aW9uZWQgdGFibGUKKy0t IGFuZCBwYXJ0aXRpb25zKS4KK0NSRUFURSBUQUJMRSB0IChpIGludCwgZyBpbnQgR0VORVJB VEVEIEFMV0FZUyBBUyAoaSArIHRhYmxlb2lkOjppbnQpKSBQQVJUSVRJT04gQlkgUkFOR0Ug KGkpOworQ1JFQVRFIFRBQkxFIHRwXzEgKGcgaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGkg KyB0YWJsZW9pZDo6aW50KSwgaSBpbnQpOworQ1JFQVRFIFRBQkxFIHRwXzIgKGcgaW50IEdF TkVSQVRFRCBBTFdBWVMgQVMgKGkgKyB0YWJsZW9pZDo6aW50KSwgaSBpbnQpOworQUxURVIg VEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzEgRk9SIFZBTFVFUyBGUk9NICgtMSkgVE8g KDEwKTsKK0FMVEVSIFRBQkxFIHQgQVRUQUNIIFBBUlRJVElPTiB0cF8yIEZPUiBWQUxVRVMg RlJPTSAoMTApIFRPICgyMCk7CitBTFRFUiBUQUJMRSB0IEFERCBDSEVDSyAoZyA+IDApOwor QUxURVIgVEFCTEUgdCBBREQgQ0hFQ0sgKGkgPiAwKTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVT ICg1KSwgKDE1KTsKKworQUxURVIgVEFCTEUgdCBNRVJHRSBQQVJUSVRJT05TICh0cF8xLCB0 cF8yKSBJTlRPIHRwXzEyOworCitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMTYpOworLS0gRVJS T1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAidHBfMTIiIHZpb2xhdGVzIGNoZWNrIGNvbnN0 cmFpbnQgInRfaV9jaGVjayIKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKTsKKy0tIFNob3Vs ZCBiZSAzIHJvd3M6ICg1KSwgKDE1KSwgKDE2KToKK1NFTEVDVCBpIEZST00gdCBPUkRFUiBC WSBpOworLS0gU2hvdWxkIGJlIDEgYmVjYXVzZSBmb3IgdGhlIHNhbWUgdGFibGVvaWQgKDE1 ICsgdGFibGVvaWQpID0gKDUgKyB0YWJsZW9pZCkgKyAxMDoKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIHQgV0hFUkUgaSA9IDE1IEFORCBnIElOIChTRUxFQ1QgZyArIDEwIEZST00gdCBXSEVS RSBpID0gNSk7CisKK0RST1AgVEFCTEUgdDsKKworCitSRVNFVCBzZWFyY2hfcGF0aDsKKwor LS0KK0RST1AgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hOworRFJPUCBTQ0hFTUEg cGFydGl0aW9uc19tZXJnZV9zY2hlbWEyOwotLSAKMi40MC4xLndpbmRvd3MuMQoK --------------3aMN0a2uxJJ9HeqkpWUHm7LY Content-Type: text/plain; charset=UTF-8; name="v56-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.patch" Content-Disposition: attachment; filename*0="v56-0002-Implement-ALTER-TABLE-.-SPLIT-PARTITION-.-comman.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA4Y2E4ZGQxNDBmZWFkZDMzN2JlMjMwODEzYmRhMTZhY2EwYmRlYzhkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBw b3N0Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA3IEFwciAyMDI0IDAwOjU4OjA5ICswMzAwClN1 YmplY3Q6IFtQQVRDSCB2NTYgMi8yXSBJbXBsZW1lbnQgQUxURVIgVEFCTEUgLi4uIFNQTElU IFBBUlRJVElPTiAuLi4gY29tbWFuZAoKVGhpcyBuZXcgRERMIGNvbW1hbmQgc3BsaXRzIGEg c2luZ2xlIHBhcnRpdGlvbiBpbnRvIHNldmVyYWwgcGFyaXRpdGlvbnMuCkp1c3QgbGlrZSBB TFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyAuLi4gY29tbWFuZCwgbmV3IHBhdGl0 aW9ucyBhcmUKY3JlYXRlZCB1c2luZyBjcmVhdGVQYXJ0aXRpb25UYWJsZSgpIGZ1bmN0aW9u IHdpdGggcGFyZW50IHBhcnRpdGlvbiBhcyB0aGUKdGVtcGxhdGUuCgpUaGlzIGNvbW1pdCBj b21wcmlzZXMgcXVpdGUgbmFpdmUgaW1wbGVtZW50YXRpb24gd2hpY2ggd29ya3MgaW4gc2lu Z2xlIHByb2Nlc3MKYW5kIGhvbGRzIHRoZSBBQ0NFU1MgRVhDTFVTSVZFIExPQ0sgb24gdGhl IHBhcmVudCB0YWJsZSBkdXJpbmcgYWxsIHRoZQpvcGVyYXRpb25zIGluY2x1ZGluZyB0aGUg dHVwbGUgcm91dGluZy4gIFRoaXMgaXMgd2h5IHRoaXMgbmV3IERETCBjb21tYW5kCmNhbid0 IGJlIHJlY29tbWVuZGVkIGZvciBsYXJnZSBwYXJ0aXRpb25lZCB0YWJsZXMgdW5kZXIgYSBo aWdoIGxvYWQuICBIb3dldmVyLAp0aGlzIGltcGxlbWVudGF0aW9uIGNvbWUgaW4gaGFuZHkg aW4gY2VydGFpbiBjYXNlcyBldmVuIGFzIGlzLgpBbHNvLCBpdCBjb3VsZCBiZSB1c2VkIGFz IGEgZm91bmRhdGlvbiBmb3IgZnV0dXJlIGltcGxlbWVudGF0aW9ucyB3aXRoIGxlc3Nlcgps b2NraW5nIGFuZCBwb3NzaWJseSBwYXJhbGxlbC4KCkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vYzczYTE3NDYtMGNkMC02YmRkLTZiMjMtM2FlMGI3YzBjNTgyJTQwcG9zdGdy ZXNwcm8ucnUKQXV0aG9yOiBEbWl0cnkgS292YWwKUmV2aWV3ZWQtYnk6IE1hdHRoaWFzIHZh biBkZSBNZWVudCwgTGF1cmVueiBBbGJlLCBaaGlob25nIFl1LCBKdXN0aW4gUHJ5emJ5ClJl dmlld2VkLWJ5OiBBbHZhcm8gSGVycmVyYSwgUm9iZXJ0IEhhYXMsIFN0ZXBoYW5lIFRhY2hv aXJlcywgSmlhbiBIZQoKRml4ZXMgKHN1bW1hcnkgaW5mb3JtYXRpb24pLgpBdXRob3JzOiBB bGV4YW5kZXIgS29yb3Rrb3YsIFRlbmRlciBXYW5nLCBSaWNoYXJkIEd1bywgRGFnZmlubiBJ bG1hcmkgTWFubnNha2VyCkF1dGhvcnM6IEZ1amlpIE1hc2FvClJldmlld2VkLWJ5OiBBbGV4 YW5kZXIgS29yb3Rrb3YsIFJvYmVydCBIYWFzLCBKdXN0aW4gUHJ5emJ5LCBQYXZlbCBCb3Jp c292ClJldmlld2VkLWJ5OiBNYXNhaGlrbyBTYXdhZGEKUmVwb3J0ZWQtYnk6IEFsZXhhbmRl ciBMYWtoaW4sIEp1c3RpbiBQcnl6YnksIEt5b3Rhcm8gSG9yaWd1Y2hpClJlcG9ydGVkLWJ5 OiBEYW5pZWwgR3VzdGFmc3NvbiwgVG9tIExhbmUsIE5vYWggTWlzY2gKLS0tCiBkb2Mvc3Jj L3NnbWwvZGRsLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICsKIGRvYy9z cmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbCAgICAgICAgICAgICB8ICAxMDMgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA0MzggKysr KysKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICAg MzggKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAgICAgICB8 ICAgODggKy0KIHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgICAgICAg ICB8ICA3MTkgKysrKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAg ICAgICAgICAgICB8ICAgMTggKwogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAg ICAgICAgICAgICAgIHwgICAxMCArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5o ICAgICAgICAgICAgICAgIHwgICAyMSArLQogc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5o ICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcv cGFydGJvdW5kcy5oICAgICAgICAgfCAgICA0ICsKIHNyYy9pbmNsdWRlL3V0aWxzL3J1bGV1 dGlscy5oICAgICAgICAgICAgICAgICB8ICAgIDIgKwogLi4uL2lzb2xhdGlvbi9leHBlY3Rl ZC9wYXJ0aXRpb24tc3BsaXQub3V0ICAgIHwgIDIzMCArKysKIHNyYy90ZXN0L2lzb2xhdGlv bi9pc29sYXRpb25fc2NoZWR1bGUgICAgICAgICB8ICAgIDEgKwogc3JjL3Rlc3QvaXNvbGF0 aW9uL3NwZWNzL3BhcnRpdGlvbi1zcGxpdC5zcGVjIHwgICA2MiArCiAuLi4vdGVzdF9kZGxf ZGVwYXJzZS9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQgfCAgICA1ICsKIC4uLi90ZXN0X2Rk bF9kZXBhcnNlL3NxbC9hbHRlcl90YWJsZS5zcWwgICAgICB8ICAgIDQgKwogLi4uL3Rlc3Rf ZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jICAgICAgIHwgICAgMyArCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQgfCAxNjQzICsrKysrKysr KysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAg ICAgfCAgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fc3BsaXQuc3Fs ICAgICAgfCAxMTUwICsrKysrKysrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QgICAgICAgICAgICAgIHwgICAgMiArCiAyMiBmaWxlcyBjaGFuZ2VkLCA0NTMxIGlu c2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tc3BsaXQub3V0CiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1zcGxpdC5zcGVj CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRp b25fc3BsaXQub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwv cGFydGl0aW9uX3NwbGl0LnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9kZGwuc2dt bCBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbAppbmRleCBkZGIxMzc2YTZlLi5jMjIwYTFjYmMw IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L2RkbC5zZ21sCkBAIC00NDcxLDYgKzQ0NzEsMjUgQEAgQUxURVIgVEFCTEUgbWVhc3VyZW1l bnQKICAgICAgICAgICAgICAgICAgICAgICBtZWFzdXJlbWVudF95MjAwNm0wMykgSU5UTyBt ZWFzdXJlbWVudF95MjAwNnExOwogPC9wcm9ncmFtbGlzdGluZz4KICAgICA8L3BhcmE+CisK KyAgICA8cGFyYT4KKyAgICAgU2ltaWxhcmx5IHRvIG1lcmdpbmcgbXVsdGlwbGUgdGFibGUg cGFydGl0aW9ucywgdGhlcmUgaXMgYW4gb3B0aW9uIGZvcgorICAgICBzcGxpdHRpbmcgYSBz aW5nbGUgcGFydGl0aW9uIGludG8gbXVsdGlwbGUgdXNpbmcgdGhlCisgICAgIDxsaW5rIGxp bmtlbmQ9InNxbC1hbHRlcnRhYmxlLXNwbGl0LXBhcnRpdGlvbiI+PGNvbW1hbmQ+QUxURVIg VEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTjwvY29tbWFuZD48L2xpbms+LgorICAgICBUaGlz IGZlYXR1cmUgY291bGQgY29tZSBpbiBoYW5keSB3aGVuIG9uZSBwYXJ0aXRpb24gZ3Jvd3Mg dG9vIGJpZworICAgICBhbmQgbmVlZHMgdG8gYmUgc3BsaXQgaW50byBtdWx0aXBsZS4gIEl0 J3MgaW1wb3J0YW50IHRvIG5vdGUgdGhhdAorICAgICB0aGlzIG9wZXJhdGlvbiBpcyBub3Qg c3VwcG9ydGVkIGZvciBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlcyBhbmQgYWNxdWlyZXMKKyAg ICAgYW4gPGxpdGVyYWw+QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jaywgd2hpY2gg Y291bGQgaW1wYWN0IGhpZ2gtbG9hZAorICAgICBzeXN0ZW1zIGR1ZSB0byB0aGUgbG9jaydz IHJlc3RyaWN0aXZlIG5hdHVyZS4gIEZvciBleGFtcGxlLCB3ZSBjYW4gc3BsaXQKKyAgICAg dGhlIHF1YXJ0ZXIgcGFydGl0aW9uIGJhY2sgdG8gbW9udGhseSBwYXJ0aXRpb25zOgorPHBy b2dyYW1saXN0aW5nPgorQUxURVIgVEFCTEUgbWVhc3VyZW1lbnQgU1BMSVQgUEFSVElUSU9O IG1lYXN1cmVtZW50X3kyMDA2cTEgSU5UTworICAgKFBBUlRJVElPTiBtZWFzdXJlbWVudF95 MjAwNm0wMSBGT1IgVkFMVUVTIEZST00gKCcyMDA2LTAxLTAxJykgVE8gKCcyMDA2LTAyLTAx JyksCisgICAgUEFSVElUSU9OIG1lYXN1cmVtZW50X3kyMDA2bTAyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMDYtMDItMDEnKSBUTyAoJzIwMDYtMDMtMDEnKSwKKyAgICBQQVJUSVRJT04gbWVh c3VyZW1lbnRfeTIwMDZtMDMgRk9SIFZBTFVFUyBGUk9NICgnMjAwNi0wMy0wMScpIFRPICgn MjAwNi0wNC0wMScpKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgPC9wYXJhPgorCiAgICA8 L3NlY3QzPgogCiAgICA8c2VjdDMgaWQ9ImRkbC1wYXJ0aXRpb25pbmctZGVjbGFyYXRpdmUt bGltaXRhdGlvbnMiPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJs ZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCmluZGV4IDVhYzFm NWM0MjMuLmQ4ZTgzODNiMDcgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJf dGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKQEAg LTM5LDYgKzM5LDEwIEBAIEFMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIERFVEFDSCBQQVJU SVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9y ZXBsYWNlYWJsZT4gWyBDT05DVVJSRU5UTFkgfCBGSU5BTElaRSBdCiBBTFRFUiBUQUJMRSBb IElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBs YWNlYWJsZT4KICAgICBNRVJHRSBQQVJUSVRJT05TICg8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTI8L3JlcGxhY2VhYmxlPiBbLCAuLi5d KSBJTlRPIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwv cmVwbGFjZWFibGU+CitBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KKyAgICBTUExJVCBQQVJUSVRJ T04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBs YWNlYWJsZT4gSU5UTworICAgICAgICAoUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTE8L3JlcGxhY2VhYmxlPiB7IEZPUiBWQUxVRVMg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9y ZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0sCisgICAgICAgICBQQVJUSVRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+IHsg Rk9SIFZBTFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX2Jv dW5kX3NwZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQgfSBbLCAuLi5dKQogCiA8cGhyYXNl PndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hY3Rpb248L3JlcGxhY2Vh YmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKQEAgLTExNjEsNiArMTE2NSw3OSBAQCBXSVRI ICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRl cmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3Rl bnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWFsdGVydGFibGUtc3BsaXQtcGFy dGl0aW9uIj4KKyAgICA8dGVybT48bGl0ZXJhbD5TUExJVCBQQVJUSVRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gSU5U TyAoUEFSVElUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25f bmFtZTE8L3JlcGxhY2VhYmxlPiB7IEZPUiBWQUxVRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxU IH0sIFBBUlRJVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9u X25hbWUyPC9yZXBsYWNlYWJsZT4geyBGT1IgVkFMVUVTIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wYXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFjZWFibGU+IHwgREVGQVVM VCB9IFssIC4uLl0pPC9saXRlcmFsPjwvdGVybT4KKworICAgIDxsaXN0aXRlbT4KKyAgICAg PHBhcmE+CisgICAgICBUaGlzIGZvcm0gc3BsaXRzIGEgc2luZ2xlIHBhcnRpdGlvbiBvZiB0 aGUgdGFyZ2V0IHRhYmxlIGludG8gbmV3CisgICAgICBwYXJ0aXRpb25zLiBIYXNoLXBhcnRp dGlvbmVkIHRhcmdldCB0YWJsZSBpcyBub3Qgc3VwcG9ydGVkLiBCb3VuZHMgb2YgbmV3Cisg ICAgICBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcCB3aXRoIG5ldyBhbmQgZXhpc3Rp bmcgcGFydGl0aW9ucworICAgICAgKGV4Y2VwdCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPikuCisgICAgICBJZiB0aGUgc3Bs aXQgcGFydGl0aW9uIGlzIGEgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4gcGFydGl0aW9u LCBvbmUgb2YKKyAgICAgIHRoZSBuZXcgcGFydGl0aW9ucyBtdXN0IGJlIDxsaXRlcmFsPkRF RkFVTFQ8L2xpdGVyYWw+LgorICAgICAgSW4gY2FzZSBvbmUgb2YgdGhlIG5ldyBwYXJ0aXRp b25zIGlzIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+LAorICAgICAgbmV3IHBhcnRpdGlv bnMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9uYW1lMTwvcmVw bGFjZWFibGU+LAorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRp dGlvbl9uYW1lMjwvcmVwbGFjZWFibGU+LCAuLi4gY2FuCisgICAgICBoYXZlIHNwYWNlcyBi ZXR3ZWVuIHBhcnRpdGlvbnMgYm91bmRzLiAgSWYgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGRv ZXMgbm90CisgICAgICBoYXZlIGEgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4gcGFydGl0 aW9uLCB0aGUgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4KKyAgICAgIHBhcnRpdGlvbiBj YW4gYmUgZGVmaW5lZCBhcyBvbmUgb2YgdGhlIG5ldyBwYXJ0aXRpb25zLgorICAgICA8L3Bh cmE+CisgICAgIDxwYXJhPgorICAgICAgSW4gY2FzZSBuZXcgcGFydGl0aW9ucyBkbyBub3Qg Y29udGFpbiBhIDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+CisgICAgICBwYXJ0aXRpb24s IHRoZSBmb2xsb3dpbmcgbXVzdCBiZSB0cnVlOiBzdW0gYm91bmRzIG9mIG5ldyBwYXJ0aXRp b25zCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25h bWUxPC9yZXBsYWNlYWJsZT4sCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4sIC4uLiBzaG91bGQKKyAgICAgIGJl IGVxdWFsIHRvIHRoZSBib3VuZCBvZiB0aGUgc3BsaXQgcGFydGl0aW9uIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFjZWFibGU+LgorICAg ICAgT25lIG9mIHRoZSBuZXcgcGFydGl0aW9ucyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cGFydGl0aW9uX25hbWUxPC9yZXBsYWNlYWJsZT4sCisgICAgICA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4sIC4u LiBjYW4gaGF2ZQorICAgICAgdGhlIHNhbWUgbmFtZSBhcyB0aGUgc3BsaXQgcGFydGl0aW9u IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fbmFtZTwvcmVwbGFj ZWFibGU+CisgICAgICAodGhpcyBpcyBzdWl0YWJsZSBpbiBjYXNlIG9mIHNwbGl0dGluZyBh IDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+CisgICAgICBwYXJ0aXRpb246IHdlIHNwbGl0 IGl0LCBidXQgYWZ0ZXIgc3BsaXR0aW5nLCB3ZSBoYXZlIGEgcGFydGl0aW9uIHdpdGggdGhl CisgICAgICBzYW1lIG5hbWUpLiAgT25seSBhIHNpbXBsZSwgbm9uLXBhcnRpdGlvbmVkIHBh cnRpdGlvbiBjYW4gYmUgc3BsaXQuCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAg ICBOZXcgcGFydGl0aW9ucyB3aWxsIGhhdmUgdGhlIHNhbWUgb3duZXIgYXMgdGhlIHBhcmVu dCBwYXJ0aXRpb24uCisgICAgICBJdCBpcyB0aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5IHRv IHNldHVwIDxhY3JvbnltPkFDTDwvYWNyb255bT4gb24gbmV3CisgICAgICBwYXJ0aXRpb25z LgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgVGhlIGluZGV4ZXMgYW5kIGlk ZW50aXR5IGFyZSBjcmVhdGVkIGxhdGVyLCBhZnRlciBtb3ZpbmcgdGhlIGRhdGEKKyAgICAg IGludG8gdGhlIG5ldyBwYXJ0aXRpb25zLgorICAgICAgRXh0ZW5kZWQgc3RhdGlzdGljcyBh cmVuJ3QgY29waWVkIGZyb20gdGhlIHBhcmVudCB0YWJsZSwgZm9yIGNvbnNpc3RlbmN5IHdp dGgKKyAgICAgIDxjb21tYW5kPkNSRUFURSBUQUJMRSBQQVJUSVRJT04gT0Y8L2NvbW1hbmQ+ LgorICAgICAgTmV3IHBhcnRpdGlvbnMgd2lsbCBpbmhlcml0IHRoZSBzYW1lIHRhYmxlIGFj Y2VzcyBtZXRob2QsIHBlcnNpc3RlbmNlCisgICAgICB0eXBlLCBhbmQgdGFibGVzcGFjZSBh cyB0aGUgcGFyZW50IHRhYmxlLgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAg V2hlbiBhIHBhcnRpdGlvbiBpcyBzcGxpdCwgYW55IGluZGl2aWR1YWwgb2JqZWN0cyBiZWxv bmdpbmcgdG8gdGhpcworICAgICAgcGFydGl0aW9uLCBzdWNoIGFzIGNvbnN0cmFpbnRzIG9y IHRoZSBzdGF0aXN0aWNzIHdpbGwgYmUgZHJvcHBlZC4gVGhpcyBvY2N1cnMKKyAgICAgIGJl Y2F1c2UgPGNvbW1hbmQ+QUxURVIgVEFCTEUgU1BMSVQgUEFSVElUSU9OPC9jb21tYW5kPiB1 c2VzIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBpdHNlbGYKKyAgICAgIGFzIHRoZSB0ZW1wbGF0 ZSB0byBkZWZpbmUgdGhlc2Ugb2JqZWN0cy4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4K KyAgICAgIElmIGEgc3BsaXQgcGFydGl0aW9uIGhhcyBzb21lIG9iamVjdHMgZGVwZW5kZW50 IG9uIGl0LCB0aGUgY29tbWFuZCBjYW4KKyAgICAgIG5vdCBiZSBkb25lICg8bGl0ZXJhbD5D QVNDQURFPC9saXRlcmFsPiBpcyBub3QgdXNlZCwgYW5kIGFuIGVycm9yIHdpbGwKKyAgICAg IGJlIHJldHVybmVkKS4KKyAgICAgPC9wYXJhPgorICAgICA8bm90ZT4KKyAgICAgIDxwYXJh PgorICAgICAgIFNwbGl0IHBhcnRpdGlvbiBhY3F1aXJlcyBhbiA8bGl0ZXJhbD5BQ0NFU1Mg RVhDTFVTSVZFPC9saXRlcmFsPiBsb2NrIG9uCisgICAgICAgdGhlIHBhcmVudCB0YWJsZSwg aW4gYWRkaXRpb24gdG8gdGhlIDxsaXRlcmFsPkFDQ0VTUyBFWENMVVNJVkU8L2xpdGVyYWw+ CisgICAgICAgbG9jayBvbiB0aGUgdGFibGUgYmVpbmcgc3BsaXQuCisgICAgICA8L3BhcmE+ CisgICAgIDwvbm90ZT4KKyAgICAgPG5vdGU+CisgICAgICA8cGFyYT4KKyAgICAgICA8Y29t bWFuZD5BTFRFUiBUQUJMRSBTUExJVCBQQVJUSVRJT048L2NvbW1hbmQ+IGNyZWF0ZXMgbmV3 IHBhcnRpdGlvbnMgYW5kCisgICAgICAgbW92ZXMgZGF0YSBmcm9tIHRoZSBzcGxpdCBwYXJ0 aXRpb24gaW50byB0aGVtLCB3aGljaCBjYW4gdGFrZSBhIGxvbmcKKyAgICAgICB0aW1lLiAg U28gaXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIHVzZSB0aGUgY29tbWFuZCBmb3Igc3BsaXR0 aW5nIGEKKyAgICAgICBzbWFsbCBmcmFjdGlvbiBvZiByb3dzIG91dCBvZiBhIHZlcnkgYmln IHBhcnRpdGlvbi4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9ub3RlPgorICAgIDwvbGlzdGl0 ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWFs dGVydGFibGUtbWVyZ2UtcGFydGl0aW9ucyI+CiAgICAgPHRlcm0+PGxpdGVyYWw+TUVSR0Ug UEFSVElUSU9OUyAoPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9u YW1lMTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy dGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT4gWywgLi4uXSkgSU5UTyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX25hbWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJh bD48L3Rlcm0+CiAKQEAgLTEyNjQsNyArMTM0MSw4IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxl PiwgUkVNCiAgICBBbGwgdGhlIGZvcm1zIG9mIDxjb21tYW5kPkFMVEVSIFRBQkxFPC9jb21t YW5kPiB0aGF0IGFjdCBvbiBhIHNpbmdsZSB0YWJsZSwKICAgIGV4Y2VwdCA8bGl0ZXJhbD5S RU5BTUU8L2xpdGVyYWw+LCA8bGl0ZXJhbD5TRVQgU0NIRU1BPC9saXRlcmFsPiwKICAgIDxs aXRlcmFsPkFUVEFDSCBQQVJUSVRJT048L2xpdGVyYWw+LCA8bGl0ZXJhbD5ERVRBQ0ggUEFS VElUSU9OPC9saXRlcmFsPiwKLSAgIGFuZCA8bGl0ZXJhbD5NRVJHRSBQQVJUSVRJT05TPC9s aXRlcmFsPiwgY2FuIGJlIGNvbWJpbmVkIGludG8KKyAgIDxsaXRlcmFsPlNQTElUIFBBUlRJ VElPTjwvbGl0ZXJhbD4sIGFuZCA8bGl0ZXJhbD5NRVJHRSBQQVJUSVRJT05TPC9saXRlcmFs PgorICAgY2FuIGJlIGNvbWJpbmVkIGludG8KICAgIGEgbGlzdCBvZiBtdWx0aXBsZSBhbHRl cmF0aW9ucyB0byBiZSBhcHBsaWVkIHRvZ2V0aGVyLiAgRm9yIGV4YW1wbGUsIGl0CiAgICBp cyBwb3NzaWJsZSB0byBhZGQgc2V2ZXJhbCBjb2x1bW5zIGFuZC9vciBhbHRlciB0aGUgdHlw ZSBvZiBzZXZlcmFsCiAgICBjb2x1bW5zIGluIGEgc2luZ2xlIGNvbW1hbmQuICBUaGlzIGlz IHBhcnRpY3VsYXJseSB1c2VmdWwgd2l0aCBsYXJnZQpAQCAtMTUwOCw3ICsxNTg2LDcgQEAg V0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNf bGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgIDxsaXN0aXRlbT4KICAgICAgICA8 cGFyYT4KICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGF0dGFjaCBhcyBhIG5l dyBwYXJ0aXRpb24gb3IgdG8gZGV0YWNoIGZyb20gdGhpcyB0YWJsZSwKLSAgICAgICAgb3Ig dGhlIG5hbWUgb2YgdGhlIG5ldyBtZXJnZWQgcGFydGl0aW9uLgorICAgICAgICBvciB0aGUg bmFtZSBvZiBzcGxpdCBwYXJ0aXRpb24sIG9yIHRoZSBuYW1lIG9mIHRoZSBuZXcgbWVyZ2Vk IHBhcnRpdGlvbi4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8 L3Zhcmxpc3RlbnRyeT4KQEAgLTE1MTgsNyArMTU5Niw4IEBAIFdJVEggKCBNT0RVTFVTIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2Vh YmxlPiwgUkVNCiAgICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cGFydGl0aW9uX25hbWUyPC9yZXBsYWNlYWJsZT48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+ CiAgICAgICAgPHBhcmE+Ci0gICAgICAgIFRoZSBuYW1lcyBvZiB0aGUgdGFibGVzIGJlaW5n IG1lcmdlZCBpbnRvIHRoZSBuZXcgcGFydGl0aW9uLgorICAgICAgICBUaGUgbmFtZXMgb2Yg dGhlIHRhYmxlcyBiZWluZyBtZXJnZWQgaW50byB0aGUgbmV3IHBhcnRpdGlvbiBvciBzcGxp dCBpbnRvCisgICAgICAgIG5ldyBwYXJ0aXRpb25zLgogICAgICAgIDwvcGFyYT4KICAgICAg IDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMTk1MSw2ICsyMDMwLDI0 IEBAIEFMVEVSIFRBQkxFIG1lYXN1cmVtZW50CiAgICAgREVUQUNIIFBBUlRJVElPTiBtZWFz dXJlbWVudF95MjAxNW0xMjsKIDwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgogCisgIDxwYXJh PgorICAgVG8gc3BsaXQgYSBzaW5nbGUgcGFydGl0aW9uIG9mIHRoZSByYW5nZS1wYXJ0aXRp b25lZCB0YWJsZToKKzxwcm9ncmFtbGlzdGluZz4KK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjMgSU5UTworICAgKFBBUlRJ VElPTiBzYWxlc19mZWIyMDIzIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjMtMDItMDEnKSBUTyAo JzIwMjMtMDMtMDEnKSwKKyAgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMyBGT1IgVkFMVUVT IEZST00gKCcyMDIzLTAzLTAxJykgVE8gKCcyMDIzLTA0LTAxJyksCisgICAgUEFSVElUSU9O IHNhbGVzX2FwcjIwMjMgRk9SIFZBTFVFUyBGUk9NICgnMjAyMy0wNC0wMScpIFRPICgnMjAy My0wNS0wMScpKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorCisgIDxwYXJhPgorICAg VG8gc3BsaXQgYSBzaW5nbGUgcGFydGl0aW9uIG9mIHRoZSBsaXN0LXBhcnRpdGlvbmVkIHRh YmxlOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQ QVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1Ig VkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgIFBBUlRJ VElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxh ZGl2b3N0b2snKSwKKyAgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElO ICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworPC9wcm9ncmFtbGlzdGluZz48L3Bh cmE+CisKICAgPHBhcmE+CiAgICBUbyBtZXJnZSBzZXZlcmFsIHBhcnRpdGlvbnMgaW50byBv bmUgcGFydGl0aW9uIG9mIHRoZSB0YXJnZXQgdGFibGU6CiA8cHJvZ3JhbWxpc3Rpbmc+CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IGU3OTE1MmFkYWMuLjJlNGY0ZmEzZTMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC03NDMsNiArNzQzLDkgQEAgc3Rh dGljIGNoYXIgR2V0QXR0cmlidXRlU3RvcmFnZShPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIg KnN0b3JhZ2Vtb2RlKTsKIAogc3RhdGljIHZvaWQgQVRFeGVjTWVyZ2VQYXJ0aXRpb25zKExp c3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJ CQkJCQkgIFBhcnRpdGlvbkNtZCAqY21kLCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNv bnRleHQpOworc3RhdGljIHZvaWQgQVRFeGVjU3BsaXRQYXJ0aXRpb24oTGlzdCAqKndxdWV1 ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAorCQkJCQkJCQkgUmVsYXRpb24gcmVsLCBQYXJ0 aXRpb25DbWQgKmNtZCwKKwkJCQkJCQkJIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29u dGV4dCk7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlEZWZpbmVSZWxhdGlvbgpAQCAtNDg0Myw2 ICs0ODQ2LDEwIEBAIEFsdGVyVGFibGVHZXRMb2NrTGV2ZWwoTGlzdCAqY21kcykKIAkJCQlj bWRfbG9ja21vZGUgPSBBY2Nlc3NFeGNsdXNpdmVMb2NrOwogCQkJCWJyZWFrOwogCisJCQlj YXNlIEFUX1NwbGl0UGFydGl0aW9uOgorCQkJCWNtZF9sb2NrbW9kZSA9IEFjY2Vzc0V4Y2x1 c2l2ZUxvY2s7CisJCQkJYnJlYWs7CisKIAkJCWRlZmF1bHQ6CQkJLyogb29wcyAqLwogCQkJ CWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgYWx0ZXIgdGFibGUgdHlwZTogJWQiLAogCQkJ CQkgKGludCkgY21kLT5zdWJ0eXBlKTsKQEAgLTUyODMsNiArNTI5MCwxMSBAQCBBVFByZXBD bWQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBbHRlclRhYmxlQ21kICpjbWQsCiAJ CQkvKiBObyBjb21tYW5kLXNwZWNpZmljIHByZXAgbmVlZGVkICovCiAJCQlwYXNzID0gQVRf UEFTU19NSVNDOwogCQkJYnJlYWs7CisJCWNhc2UgQVRfU3BsaXRQYXJ0aXRpb246CisJCQlB VFNpbXBsZVBlcm1pc3Npb25zKGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfUEFSVElUSU9ORURf VEFCTEUpOworCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBwcmVwIG5lZWRlZCAqLworCQkJ cGFzcyA9IEFUX1BBU1NfTUlTQzsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgkJCQkvKiBvb3Bz ICovCiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGFsdGVyIHRhYmxlIHR5cGU6ICVk IiwKIAkJCQkgKGludCkgY21kLT5zdWJ0eXBlKTsKQEAgLTU2ODcsNiArNTY5OSwxNCBAQCBB VEV4ZWNDbWQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQkJQVRF eGVjTWVyZ2VQYXJ0aXRpb25zKHdxdWV1ZSwgdGFiLCByZWwsIChQYXJ0aXRpb25DbWQgKikg Y21kLT5kZWYsCiAJCQkJCQkJCSAgY29udGV4dCk7CiAJCQlicmVhazsKKwkJY2FzZSBBVF9T cGxpdFBhcnRpdGlvbjoKKwkJCWNtZCA9IEFUUGFyc2VUcmFuc2Zvcm1DbWQod3F1ZXVlLCB0 YWIsIHJlbCwgY21kLCBmYWxzZSwgbG9ja21vZGUsCisJCQkJCQkJCQkgIGN1cl9wYXNzLCBj b250ZXh0KTsKKwkJCUFzc2VydChjbWQgIT0gTlVMTCk7CisJCQlBc3NlcnQocmVsLT5yZF9y ZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSk7CisJCQlBVEV4ZWNT cGxpdFBhcnRpdGlvbih3cXVldWUsIHRhYiwgcmVsLCAoUGFydGl0aW9uQ21kICopIGNtZC0+ ZGVmLAorCQkJCQkJCQkgY29udGV4dCk7CisJCQlicmVhazsKIAkJZGVmYXVsdDoJCQkJLyog b29wcyAqLwogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBhbHRlciB0YWJsZSB0eXBl OiAlZCIsCiAJCQkJIChpbnQpIGNtZC0+c3VidHlwZSk7CkBAIC02NzI5LDYgKzY3NDksOCBA QCBhbHRlcl90YWJsZV90eXBlX3RvX3N0cmluZyhBbHRlclRhYmxlVHlwZSBjbWR0eXBlKQog CQkJcmV0dXJuICJERVRBQ0ggUEFSVElUSU9OIC4uLiBGSU5BTElaRSI7CiAJCWNhc2UgQVRf TWVyZ2VQYXJ0aXRpb25zOgogCQkJcmV0dXJuICJNRVJHRSBQQVJUSVRJT05TIjsKKwkJY2Fz ZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCXJldHVybiAiU1BMSVQgUEFSVElUSU9OIjsKIAkJ Y2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCXJldHVybiAiQUxURVIgQ09MVU1OIC4uLiBBREQg SURFTlRJVFkiOwogCQljYXNlIEFUX1NldElkZW50aXR5OgpAQCAtMjI5MjksMyArMjI5NTEs NDE5IEBAIEFURXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFi bGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkvKiBSZXN0b3JlIHVzZXJpZCBhbmQgc2Vj dXJpdHkgY29udGV4dC4gKi8KIAlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHNhdmVfdXNlcmlk LCBzYXZlX3NlY19jb250ZXh0KTsKIH0KKworCisvKgorICogU3RydWN0IHdpdGggY29udGV4 dCBvZiBuZXcgcGFydGl0aW9uIGZvciBpbnNlcnRpbmcgcm93cyBmcm9tIHNwbGl0IHBhcnRp dGlvbgorICovCit0eXBlZGVmIHN0cnVjdCBTcGxpdFBhcnRpdGlvbkNvbnRleHQKK3sKKwlF eHByU3RhdGUgICpwYXJ0cXVhbHN0YXRlOwkvKiBleHByZXNzaW9uIGZvciBjaGVja2luZyBz bG90IGZvciBwYXJ0aXRpb24KKwkJCQkJCQkJICogKE5VTEwgZm9yIERFRkFVTFQgcGFydGl0 aW9uKSAqLworCUJ1bGtJbnNlcnRTdGF0ZSBiaXN0YXRlOwkvKiBzdGF0ZSBvZiBidWxrIGlu c2VydHMgZm9yIHBhcnRpdGlvbiAqLworCVR1cGxlVGFibGVTbG90ICpkc3RzbG90OwkvKiBz bG90IGZvciBpbnNlcnRpbmcgcm93IGludG8gcGFydGl0aW9uICovCisJQWx0ZXJlZFRhYmxl SW5mbyAqdGFiOwkJLyogc3RydWN0b3JlIHdpdGggZ2VuZXJhdGVkIGNvbHVtbiBleHByZXNz aW9ucworCQkJCQkJCQkgKiBhbmQgY2hlY2sgY29uc3RyYWludCBleHByZXNzc2lvbnMuICov CisJUmVsYXRpb24JcGFydFJlbDsJCS8qIHJlbGF0aW9uIGZvciBwYXJ0aXRpb24gKi8KK30g U3BsaXRQYXJ0aXRpb25Db250ZXh0OworCisvKgorICogY3JlYXRlU3BsaXRQYXJ0aXRpb25D b250ZXh0OiBjcmVhdGUgY29udGV4dCBmb3IgcGFydGl0aW9uIGFuZCBmaWxsIGl0CisgKi8K K3N0YXRpYyBTcGxpdFBhcnRpdGlvbkNvbnRleHQgKgorY3JlYXRlU3BsaXRQYXJ0aXRpb25D b250ZXh0KFJlbGF0aW9uIHBhcnRSZWwpCit7CisJU3BsaXRQYXJ0aXRpb25Db250ZXh0ICpw YzsKKworCXBjID0gKFNwbGl0UGFydGl0aW9uQ29udGV4dCAqKSBwYWxsb2MwKHNpemVvZihT cGxpdFBhcnRpdGlvbkNvbnRleHQpKTsKKwlwYy0+cGFydFJlbCA9IHBhcnRSZWw7CisKKwkv KgorCSAqIFByZXBhcmUgYSBCdWxrSW5zZXJ0U3RhdGUgZm9yIHRhYmxlX3R1cGxlX2luc2Vy dC4gVGhlIEZTTSBpcyBlbXB0eSwgc28KKwkgKiBkb24ndCBib3RoZXIgdXNpbmcgaXQuCisJ ICovCisJcGMtPmJpc3RhdGUgPSBHZXRCdWxrSW5zZXJ0U3RhdGUoKTsKKworCS8qIENyZWF0 ZSB0dXBsZSBzbG90IGZvciBuZXcgcGFydGl0aW9uLiAqLworCXBjLT5kc3RzbG90ID0gdGFi bGVfc2xvdF9jcmVhdGUocGMtPnBhcnRSZWwsIE5VTEwpOworCisJcmV0dXJuIHBjOworfQor CisvKgorICogZGVsZXRlU3BsaXRQYXJ0aXRpb25Db250ZXh0OiBkZWxldGUgY29udGV4dCBm b3IgcGFydGl0aW9uCisgKi8KK3N0YXRpYyB2b2lkCitkZWxldGVTcGxpdFBhcnRpdGlvbkNv bnRleHQoU3BsaXRQYXJ0aXRpb25Db250ZXh0ICpwYywgTGlzdCAqKndxdWV1ZSwgaW50IHRp X29wdGlvbnMpCit7CisJTGlzdENlbGwgICAqbHRhYjsKKworCUV4ZWNEcm9wU2luZ2xlVHVw bGVUYWJsZVNsb3QocGMtPmRzdHNsb3QpOworCUZyZWVCdWxrSW5zZXJ0U3RhdGUocGMtPmJp c3RhdGUpOworCisJdGFibGVfZmluaXNoX2J1bGtfaW5zZXJ0KHBjLT5wYXJ0UmVsLCB0aV9v cHRpb25zKTsKKworCS8qCisJICogV2UgZG9uJ3QgbmVlZCBwcm9jZXNzIHRoaXMgcGMtPnBh cnRSZWwgc28gZGVsZXRlIHRoZSBBTFRFUiBUQUJMRSBxdWV1ZQorCSAqIG9mIGl0LgorCSAq LworCWZvcmVhY2gobHRhYiwgKndxdWV1ZSkKKwl7CisJCUFsdGVyZWRUYWJsZUluZm8gKnRh YiA9IChBbHRlcmVkVGFibGVJbmZvICopIGxmaXJzdChsdGFiKTsKKworCQlpZiAodGFiLT5y ZWxpZCA9PSBSZWxhdGlvbkdldFJlbGlkKHBjLT5wYXJ0UmVsKSkKKwkJCSp3cXVldWUgPSBs aXN0X2RlbGV0ZV9jZWxsKCp3cXVldWUsIGx0YWIpOworCX0KKworCXBmcmVlKHBjKTsKK30K KworLyoKKyAqIFNwbGl0UGFydGl0aW9uTW92ZVJvd3M6IHNjYW4gc3BsaXQgcGFydGl0aW9u IChzcGxpdFJlbCkgb2YgcGFydGl0aW9uZWQgdGFibGUKKyAqIChyZWwpIGFuZCBtb3ZlIHJv d3MgaW50byBuZXcgcGFydGl0aW9ucy4KKyAqCisgKiBOZXcgcGFydGl0aW9ucyBkZXNjcmlw dGlvbjoKKyAqIHBhcnRsaXN0OiBsaXN0IG9mIHBvaW50ZXJzIHRvIFNpbmdsZVBhcnRpdGlv blNwZWMgc3RydWN0dXJlcy4gIEl0IGNvbnRhaW5zCisgKiB0aGUgcGFydGl0aW9uIHNwZWNp ZmljYXRpb24gZGV0YWlscyBmb3IgYWxsIG5ldyBwYXJ0aXRpb25zLgorICogbmV3UGFydFJl bHM6IGxpc3Qgb2YgUmVsYXRpb25zLCBuZXcgcGFydGl0aW9ucyBjcmVhdGVkIGluCisgKiBB VEV4ZWNTcGxpdFBhcnRpdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK1NwbGl0UGFydGl0aW9u TW92ZVJvd3MoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBzcGxpdFJl bCwKKwkJCQkJICAgTGlzdCAqcGFydGxpc3QsIExpc3QgKm5ld1BhcnRSZWxzKQoreworCS8q IFRoZSBGU00gaXMgZW1wdHksIHNvIGRvbid0IGJvdGhlciB1c2luZyBpdC4gKi8KKwlpbnQJ CQl0aV9vcHRpb25zID0gVEFCTEVfSU5TRVJUX1NLSVBfRlNNOworCUNvbW1hbmRJZAlteWNp ZDsKKwlFU3RhdGUJICAgKmVzdGF0ZTsKKwlMaXN0Q2VsbCAgICpsaXN0cHRyLAorCQkJICAg Kmxpc3RwdHIyOworCVR1cGxlVGFibGVTbG90ICpzcmNzbG90OworCUV4cHJDb250ZXh0ICpl Y29udGV4dDsKKwlUYWJsZVNjYW5EZXNjIHNjYW47CisJU25hcHNob3QJc25hcHNob3Q7CisJ TWVtb3J5Q29udGV4dCBvbGRDeHQ7CisJTGlzdAkgICAqcGFydENvbnRleHRzID0gTklMOwor CVR1cGxlQ29udmVyc2lvbk1hcCAqdHVwbGVfbWFwOworCVNwbGl0UGFydGl0aW9uQ29udGV4 dCAqZGVmYXVsdFBhcnRDdHggPSBOVUxMLAorCQkJICAgKnBjOworCisJbXljaWQgPSBHZXRD dXJyZW50Q29tbWFuZElkKHRydWUpOworCisJZXN0YXRlID0gQ3JlYXRlRXhlY3V0b3JTdGF0 ZSgpOworCisJZm9yYm90aChsaXN0cHRyLCBwYXJ0bGlzdCwgbGlzdHB0cjIsIG5ld1BhcnRS ZWxzKQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gKFNpbmdsZVBhcnRpdGlv blNwZWMgKikgbGZpcnN0KGxpc3RwdHIpOworCisJCXBjID0gY3JlYXRlU3BsaXRQYXJ0aXRp b25Db250ZXh0KChSZWxhdGlvbikgbGZpcnN0KGxpc3RwdHIyKSk7CisKKwkJLyogRmluZCB0 aGUgd29yayBxdWV1ZSBlbnRyeSBmb3IgbmV3IHBhcnRpdGlvbiB0YWJsZTogbmV3UGFydFJl bC4gKi8KKwkJcGMtPnRhYiA9IEFUR2V0UXVldWVFbnRyeSh3cXVldWUsIHBjLT5wYXJ0UmVs KTsKKworCQlidWlsZEV4cHJlc3Npb25FeGVjdXRpb25TdGF0ZXMocGMtPnRhYiwgcGMtPnBh cnRSZWwsIGVzdGF0ZSk7CisKKwkJaWYgKHNwcy0+Ym91bmQtPmlzX2RlZmF1bHQpCisJCXsK KwkJCS8qCisJCQkgKiBXZSBzaG91bGQgbm90IGNyZWF0ZSBzdHJ1Y3R1cmUgZm9yIGNoZWNr IHBhcnRpdGlvbiBjb25zdHJhaW50CisJCQkgKiBmb3IgbmV3IERFRkFVTFQgcGFydGl0aW9u LgorCQkJICovCisJCQlkZWZhdWx0UGFydEN0eCA9IHBjOworCQl9CisJCWVsc2UKKwkJewor CQkJTGlzdAkgICAqcGFydENvbnN0cmFpbnQ7CisKKwkJCS8qIEJ1aWxkIGV4cHJlc3Npb24g ZXhlY3V0aW9uIHN0YXRlcyBmb3IgcGFydGl0aW9uIGNoZWNrIHF1YWxzLiAqLworCQkJcGFy dENvbnN0cmFpbnQgPSBnZXRfcXVhbF9mcm9tX3BhcnRib3VuZChyZWwsIHNwcy0+Ym91bmQp OworCQkJcGFydENvbnN0cmFpbnQgPQorCQkJCShMaXN0ICopIGV2YWxfY29uc3RfZXhwcmVz c2lvbnMoTlVMTCwKKwkJCQkJCQkJCQkJCShOb2RlICopIHBhcnRDb25zdHJhaW50KTsKKwkJ CS8qIE1ha2UgYm9vbGVhbiBleHByZXNzaW9uIGZvciBFeGVjQ2hlY2soKS4gKi8KKwkJCXBh cnRDb25zdHJhaW50ID0gbGlzdF9tYWtlMShtYWtlX2FuZHNfZXhwbGljaXQocGFydENvbnN0 cmFpbnQpKTsKKworCQkJLyoKKwkJCSAqIE1hcCB0aGUgdmFycyBpbiB0aGUgY29uc3RyYWlu dCBleHByZXNzaW9uIGZyb20gcmVsJ3MgYXR0bm9zIHRvCisJCQkgKiBzcGxpdFJlbCdzLgor CQkJICovCisJCQlwYXJ0Q29uc3RyYWludCA9IG1hcF9wYXJ0aXRpb25fdmFyYXR0bm9zKHBh cnRDb25zdHJhaW50LAorCQkJCQkJCQkJCQkJCSAxLCBzcGxpdFJlbCwgcmVsKTsKKworCQkJ cGMtPnBhcnRxdWFsc3RhdGUgPQorCQkJCUV4ZWNQcmVwYXJlRXhwcigoRXhwciAqKSBsaW5p dGlhbChwYXJ0Q29uc3RyYWludCksIGVzdGF0ZSk7CisJCQlBc3NlcnQocGMtPnBhcnRxdWFs c3RhdGUgIT0gTlVMTCk7CisJCX0KKworCQkvKiBTdG9yZSBwYXJ0aXRpb24gY29udGV4dCBp bnRvIGxpc3QuICovCisJCXBhcnRDb250ZXh0cyA9IGxhcHBlbmQocGFydENvbnRleHRzLCBw Yyk7CisJfQorCisJZWNvbnRleHQgPSBHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7 CisKKwkvKiBDcmVhdGUgbmVjZXNzYXJ5IHR1cGxlIHNsb3QuICovCisJc3Jjc2xvdCA9IHRh YmxlX3Nsb3RfY3JlYXRlKHNwbGl0UmVsLCBOVUxMKTsKKworCS8qCisJICogTWFwIGNvbXB1 dGluZyBmb3IgbW92aW5nIGF0dHJpYnV0ZXMgb2Ygc3BsaXQgcGFydGl0aW9uIHRvIG5ldyBw YXJ0aXRpb24KKwkgKiAoZm9yIGZpcnN0IG5ldyBwYXJ0aXRpb24sIGJ1dCBvdGhlciBuZXcg cGFydGl0aW9ucyBjYW4gdXNlIHRoZSBzYW1lCisJICogbWFwKS4KKwkgKi8KKwlwYyA9IChT cGxpdFBhcnRpdGlvbkNvbnRleHQgKikgbGZpcnN0KGxpc3RfaGVhZChwYXJ0Q29udGV4dHMp KTsKKwl0dXBsZV9tYXAgPSBjb252ZXJ0X3R1cGxlc19ieV9uYW1lKFJlbGF0aW9uR2V0RGVz Y3Ioc3BsaXRSZWwpLAorCQkJCQkJCQkJICAgUmVsYXRpb25HZXREZXNjcihwYy0+cGFydFJl bCkpOworCisJLyogU2NhbiB0aHJvdWdoIHRoZSByb3dzLiAqLworCXNuYXBzaG90ID0gUmVn aXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKKwlzY2FuID0gdGFibGVfYmVn aW5zY2FuKHNwbGl0UmVsLCBzbmFwc2hvdCwgMCwgTlVMTCk7CisKKwkvKgorCSAqIFN3aXRj aCB0byBwZXItdHVwbGUgbWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1 cGxlCisJICogcHJvZHVjZWQsIHNvIHdlIGRvbid0IGxlYWsgbWVtb3J5LgorCSAqLworCW9s ZEN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhHZXRQZXJUdXBsZU1lbW9yeUNvbnRleHQo ZXN0YXRlKSk7CisKKwl3aGlsZSAodGFibGVfc2Nhbl9nZXRuZXh0c2xvdChzY2FuLCBGb3J3 YXJkU2NhbkRpcmVjdGlvbiwgc3Jjc2xvdCkpCisJeworCQlib29sCQlmb3VuZCA9IGZhbHNl OworCQlUdXBsZVRhYmxlU2xvdCAqaW5zZXJ0c2xvdDsKKworCQlDSEVDS19GT1JfSU5URVJS VVBUUygpOworCisJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNyY3Nsb3Q7CisKKwkJ LyogU2VhcmNoIHBhcnRpdGlvbiBmb3IgY3VycmVudCBzbG90IHNyY3Nsb3QuICovCisJCWZv cmVhY2gobGlzdHB0ciwgcGFydENvbnRleHRzKQorCQl7CisJCQlwYyA9IChTcGxpdFBhcnRp dGlvbkNvbnRleHQgKikgbGZpcnN0KGxpc3RwdHIpOworCisJCQkvKiBza2lwIERFRkFVTFQg cGFydGl0aW9uICovCisJCQlpZiAocGMtPnBhcnRxdWFsc3RhdGUgJiYgRXhlY0NoZWNrKHBj LT5wYXJ0cXVhbHN0YXRlLCBlY29udGV4dCkpCisJCQl7CisJCQkJZm91bmQgPSB0cnVlOwor CQkJCWJyZWFrOworCQkJfQorCQl9CisJCWlmICghZm91bmQpCisJCXsKKwkJCS8qIFVzZSBE RUZBVUxUIHBhcnRpdGlvbiBpZiBpdCBleGlzdHMuICovCisJCQlpZiAoZGVmYXVsdFBhcnRD dHgpCisJCQkJcGMgPSBkZWZhdWx0UGFydEN0eDsKKwkJCWVsc2UKKwkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0NIRUNLX1ZJT0xBVElPTiksCisJCQkJCQll cnJtc2coImNhbiBub3QgZmluZCBwYXJ0aXRpb24gZm9yIHNwbGl0IHBhcnRpdGlvbiByb3ci KSwKKwkJCQkJCWVycnRhYmxlKHNwbGl0UmVsKSk7CisJCX0KKworCQlpZiAodHVwbGVfbWFw KQorCQl7CisJCQkvKiBOZWVkIHRvIHVzZSBtYXAgdG8gY29weSBhdHRyaWJ1dGVzLiAqLwor CQkJaW5zZXJ0c2xvdCA9IGV4ZWN1dGVfYXR0cl9tYXBfc2xvdCh0dXBsZV9tYXAtPmF0dHJN YXAsIHNyY3Nsb3QsIHBjLT5kc3RzbG90KTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIEV4 dHJhY3QgZGF0YSBmcm9tIG9sZCB0dXBsZS4gKi8KKwkJCXNsb3RfZ2V0YWxsYXR0cnMoc3Jj c2xvdCk7CisKKwkJCS8qIENvcHkgYXR0cmlidXRlcyBkaXJlY3RseS4gKi8KKwkJCWluc2Vy dHNsb3QgPSBwYy0+ZHN0c2xvdDsKKworCQkJRXhlY0NsZWFyVHVwbGUoaW5zZXJ0c2xvdCk7 CisKKwkJCW1lbWNweShpbnNlcnRzbG90LT50dHNfdmFsdWVzLCBzcmNzbG90LT50dHNfdmFs dWVzLAorCQkJCSAgIHNpemVvZihEYXR1bSkgKiBzcmNzbG90LT50dHNfbnZhbGlkKTsKKwkJ CW1lbWNweShpbnNlcnRzbG90LT50dHNfaXNudWxsLCBzcmNzbG90LT50dHNfaXNudWxsLAor CQkJCSAgIHNpemVvZihib29sKSAqIHNyY3Nsb3QtPnR0c19udmFsaWQpOworCisJCQlFeGVj U3RvcmVWaXJ0dWFsVHVwbGUoaW5zZXJ0c2xvdCk7CisJCX0KKworCQkvKgorCQkgKiBDb25z dHJhaW50cyBhbmQgR0VORVJBVEVEIGV4cHJlc3Npb25zIG1pZ2h0IHJlZmVyZW5jZSB0aGUg dGFibGVvaWQKKwkJICogY29sdW1uLCBzbyBmaWxsIHR0c190YWJsZU9pZCB3aXRoIHRoZSBk ZXNpcmVkIHZhbHVlLiAoV2UgbXVzdCBkbworCQkgKiB0aGlzIGVhY2ggdGltZSwgYmVjYXVz ZSBpdCBnZXRzIG92ZXJ3cml0dGVuIHdpdGggbmV3cmVsJ3MgT0lECisJCSAqIGR1cmluZyBz dG9yaW5nLikKKwkJICovCisJCWluc2VydHNsb3QtPnR0c190YWJsZU9pZCA9IFJlbGF0aW9u R2V0UmVsaWQocGMtPnBhcnRSZWwpOworCisJCS8qCisJCSAqIE5vdywgZXZhbHVhdGUgYW55 IGdlbmVyYXRlZCBleHByZXNzaW9ucyB3aG9zZSBpbnB1dHMgY29tZSBmcm9tIHRoZQorCQkg KiBuZXcgdHVwbGUuICBXZSBhc3N1bWUgdGhlc2UgY29sdW1ucyB3b24ndCByZWZlcmVuY2Ug ZWFjaCBvdGhlciwgc28KKwkJICogdGhhdCB0aGVyZSdzIG5vIG9yZGVyaW5nIGRlcGVuZGVu Y3kuCisJCSAqLworCQlldmFsdWF0ZUdlbmVyYXRlZEV4cHJlc3Npb25zQW5kQ2hlY2tDb25z dHJhaW50cyhwYy0+dGFiLCBwYy0+cGFydFJlbCwKKwkJCQkJCQkJCQkJCQkJaW5zZXJ0c2xv dCwgZWNvbnRleHQpOworCisJCS8qIFdyaXRlIHRoZSB0dXBsZSBvdXQgdG8gdGhlIG5ldyBy ZWxhdGlvbi4gKi8KKwkJdGFibGVfdHVwbGVfaW5zZXJ0KHBjLT5wYXJ0UmVsLCBpbnNlcnRz bG90LCBteWNpZCwKKwkJCQkJCSAgIHRpX29wdGlvbnMsIHBjLT5iaXN0YXRlKTsKKworCQlS ZXNldEV4cHJDb250ZXh0KGVjb250ZXh0KTsKKwl9CisKKwlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkQ3h0KTsKKworCXRhYmxlX2VuZHNjYW4oc2Nhbik7CisJVW5yZWdpc3RlclNuYXBz aG90KHNuYXBzaG90KTsKKworCWlmICh0dXBsZV9tYXApCisJCWZyZWVfY29udmVyc2lvbl9t YXAodHVwbGVfbWFwKTsKKworCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc3Jjc2xv dCk7CisKKwlGcmVlRXhlY3V0b3JTdGF0ZShlc3RhdGUpOworCisJZm9yZWFjaF9wdHIoU3Bs aXRQYXJ0aXRpb25Db250ZXh0LCBzcGMsIHBhcnRDb250ZXh0cykKKwkJZGVsZXRlU3BsaXRQ YXJ0aXRpb25Db250ZXh0KHNwYywgd3F1ZXVlLCB0aV9vcHRpb25zKTsKK30KKworLyoKKyAq IEFMVEVSIFRBQkxFIDxuYW1lPiBTUExJVCBQQVJUSVRJT04gPHBhcnRpdGlvbi1uYW1lPiBJ TlRPIDxwYXJ0aXRpb24tbGlzdD4KKyAqLworc3RhdGljIHZvaWQKK0FURXhlY1NwbGl0UGFy dGl0aW9uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24g cmVsLAorCQkJCQkgUGFydGl0aW9uQ21kICpjbWQsIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4 dCAqY29udGV4dCkKK3sKKwlSZWxhdGlvbglzcGxpdFJlbDsKKwlPaWQJCQlzcGxpdFJlbE9p ZDsKKwljaGFyCQlyZWxuYW1lW05BTUVEQVRBTEVOXTsKKwlMaXN0Q2VsbCAgICpsaXN0cHRy LAorCQkJICAgKmxpc3RwdHIyOworCWJvb2wJCWlzU2FtZU5hbWUgPSBmYWxzZTsKKwljaGFy CQl0bXBSZWxOYW1lW05BTUVEQVRBTEVOXTsKKwlMaXN0CSAgICpuZXdQYXJ0UmVscyA9IE5J TDsKKwlPYmplY3RBZGRyZXNzIG9iamVjdDsKKwlPaWQJCQlkZWZhdWx0UGFydE9pZDsKKwlP aWQJCQlzYXZlX3VzZXJpZDsKKwlpbnQJCQlzYXZlX3NlY19jb250ZXh0OworCWludAkJCXNh dmVfbmVzdGxldmVsOworCisJZGVmYXVsdFBhcnRPaWQgPSBnZXRfZGVmYXVsdF9vaWRfZnJv bV9wYXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocmVsLCB0cnVlKSk7CisKKwkv KgorCSAqIFBhcnRpdGlvbiBpcyBhbHJlYWR5IGxvY2tlZCBpbiB0aGUgdHJhbnNmb3JtUGFy dGl0aW9uQ21kRm9yU3BsaXQKKwkgKiBmdW5jdGlvbi4KKwkgKi8KKwlzcGxpdFJlbCA9IHRh YmxlX29wZW5ydihjbWQtPm5hbWUsIE5vTG9jayk7CisKKwlzcGxpdFJlbE9pZCA9IFJlbGF0 aW9uR2V0UmVsaWQoc3BsaXRSZWwpOworCisJLyogQ2hlY2sgZGVzY3JpcHRpb25zIG9mIG5l dyBwYXJ0aXRpb25zLiAqLworCWZvcmVhY2hfbm9kZShTaW5nbGVQYXJ0aXRpb25TcGVjLCBz cHMsIGNtZC0+cGFydGxpc3QpCisJeworCQlPaWQJCQlleGlzdGluZ1JlbGlkOworCisJCXN0 cmxjcHkocmVsbmFtZSwgc3BzLT5uYW1lLT5yZWxuYW1lLCBOQU1FREFUQUxFTik7CisKKwkJ LyogTG9vayB1cCBleGlzdGluZyByZWxhdGlvbiBieSBuZXcgcGFydGl0aW9uIG5hbWUuICov CisJCVJhbmdlVmFyR2V0QW5kQ2hlY2tDcmVhdGlvbk5hbWVzcGFjZShzcHMtPm5hbWUsIE5v TG9jaywgJmV4aXN0aW5nUmVsaWQpOworCisJCS8qCisJCSAqIFRoaXMgd291bGQgZmFpbCBs YXRlciBvbiBhbnl3YXkgaWYgdGhlIHJlbGF0aW9uIGFscmVhZHkgZXhpc3RzLiBCdXQKKwkJ ICogYnkgY2F0Y2hpbmcgaXQgaGVyZSB3ZSBjYW4gZW1pdCBhIG5pY2VyIGVycm9yIG1lc3Nh Z2UuCisJCSAqLworCQlpZiAoZXhpc3RpbmdSZWxpZCA9PSBzcGxpdFJlbE9pZCAmJiAhaXNT YW1lTmFtZSkKKwkJCS8qIE9uZSBuZXcgcGFydGl0aW9uIGNhbiBoYXZlIHRoZSBzYW1lIG5h bWUgYXMgc3BsaXQgcGFydGl0aW9uLiAqLworCQkJaXNTYW1lTmFtZSA9IHRydWU7CisJCWVs c2UgaWYgKE9pZElzVmFsaWQoZXhpc3RpbmdSZWxpZCkpCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJZXJybXNnKCJy ZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLCByZWxuYW1lKSk7CisJfQorCisJLyog RGV0YWNoIHNwbGl0IHBhcnRpdGlvbi4gKi8KKwlkZXRhY2hQYXJ0aXRpb25UYWJsZShyZWws IHNwbGl0UmVsLCBkZWZhdWx0UGFydE9pZCk7CisKKwkvKgorCSAqIFBlcmZvcm0gYSBwcmVs aW1pbmFyeSBjaGVjayB0byBkZXRlcm1pbmUgd2hldGhlciBpdCdzIHNhZmUgdG8gZHJvcAor CSAqIHNwbGl0IHBhcnRpdGlvbiBiZWZvcmUgd2UgYWN0dWFsbHkgZG8gc28gbGF0ZXIuIEFm dGVyIG1lcmdpbmcgcm93cyBpbnRvCisJICogdGhlIG5ldyBwYXJ0aXRpb25zIHZpYSBTcGxp dFBhcnRpdGlvbk1vdmVSb3dzLCBhbGwgb2xkIHBhcnRpdGlvbnMgbmVlZAorCSAqIGJlIGRy b3BwZWQuIEhvd2V2ZXIsIHNpbmNlIHRoZSBkcm9wIGJlaGF2aW9yIGlzIERST1BfUkVTVFJJ Q1QgYW5kIHRoZQorCSAqIG1lcmdlIHByb2Nlc3MgKFNwbGl0UGFydGl0aW9uTW92ZVJvd3Mp IGNhbiBiZSB0aW1lLWNvbnN1bWluZywKKwkgKiBwZXJmb3JtaW5nIGFuIGVhcmx5IGNoZWNr IG9uIHRoZSBkcm9wIGVsaWdpYmlsaXR5IG9mIG9sZCBwYXJ0aXRpb25zIGlzCisJICogcHJl ZmVyYWJsZS4KKwkgKi8KKwlvYmplY3Qub2JqZWN0SWQgPSBzcGxpdFJlbE9pZDsKKwlvYmpl Y3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwlvYmplY3Qub2JqZWN0U3ViSWQg PSAwOworCXBlcmZvcm1EZWxldGlvbkNoZWNrKCZvYmplY3QsIERST1BfUkVTVFJJQ1QsIFBF UkZPUk1fREVMRVRJT05fSU5URVJOQUwpOworCisJLyoKKwkgKiBJZiBuZXcgcGFydGl0aW9u IGhhcyB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0IHBhcnRpdGlvbiB0aGVuIHdlIHNob3VsZAor CSAqIHJlbmFtZSBzcGxpdCBwYXJ0aXRpb24gZm9yIHJldXNpbmcgbmFtZS4KKwkgKi8KKwlp ZiAoaXNTYW1lTmFtZSkKKwl7CisJCS8qCisJCSAqIFdlIG11c3QgYnVtcCB0aGUgY29tbWFu ZCBjb3VudGVyIHRvIG1ha2UgdGhlIHNwbGl0IHBhcnRpdGlvbiB0dXBsZQorCQkgKiB2aXNp YmxlIGZvciByZW5hbWluZy4KKwkJICovCisJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7 CisJCS8qIFJlbmFtZSBwYXJ0aXRpb24uICovCisJCXNwcmludGYodG1wUmVsTmFtZSwgInNw bGl0LSV1LSVYLXRtcCIsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgTXlQcm9jUGlkKTsKKwkJ UmVuYW1lUmVsYXRpb25JbnRlcm5hbChzcGxpdFJlbE9pZCwgdG1wUmVsTmFtZSwgdHJ1ZSwg ZmFsc2UpOworCisJCS8qCisJCSAqIFdlIG11c3QgYnVtcCB0aGUgY29tbWFuZCBjb3VudGVy IHRvIG1ha2UgdGhlIHNwbGl0IHBhcnRpdGlvbiB0dXBsZQorCQkgKiB2aXNpYmxlIGFmdGVy IHJlbmFtaW5nLgorCQkgKi8KKwkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKwl9CisK KwkvKiBDcmVhdGUgbmV3IHBhcnRpdGlvbnMgKGxpa2Ugc3BsaXQgcGFydGl0aW9uKSwgd2l0 aG91dCBpbmRleGVzLiAqLworCWZvcmVhY2hfbm9kZShTaW5nbGVQYXJ0aXRpb25TcGVjLCBz cHMsIGNtZC0+cGFydGxpc3QpCisJeworCQlSZWxhdGlvbgluZXdQYXJ0UmVsOworCisJCW5l d1BhcnRSZWwgPSBjcmVhdGVQYXJ0aXRpb25UYWJsZSh3cXVldWUsIHNwcy0+bmFtZSwgcmVs LAorCQkJCQkJCQkJCSAgc3BsaXRSZWwtPnJkX3JlbC0+cmVsb3duZXIpOworCQluZXdQYXJ0 UmVscyA9IGxhcHBlbmQobmV3UGFydFJlbHMsIG5ld1BhcnRSZWwpOworCX0KKworCS8qCisJ ICogU3dpdGNoIHRvIHRoZSB0YWJsZSBvd25lcidzIHVzZXJpZCwgc28gdGhhdCBhbnkgaW5k ZXggZnVuY3Rpb25zIGFyZSBydW4KKwkgKiBhcyB0aGF0IHVzZXIuICBBbHNvIGxvY2sgZG93 biBzZWN1cml0eS1yZXN0cmljdGVkIG9wZXJhdGlvbnMgYW5kCisJICogYXJyYW5nZSB0byBt YWtlIEdVQyB2YXJpYWJsZSBjaGFuZ2VzIGxvY2FsIHRvIHRoaXMgY29tbWFuZC4KKwkgKgor CSAqIE5lZWQgdG8gZG8gaXQgYWZ0ZXIgZGV0ZXJtaW5lIG5hbWVzcGFjZSBpbiBjcmVhdGVQ YXJ0aXRpb25UYWJsZSBjYWxsLgorCSAqLworCUdldFVzZXJJZEFuZFNlY0NvbnRleHQoJnNh dmVfdXNlcmlkLCAmc2F2ZV9zZWNfY29udGV4dCk7CisJU2V0VXNlcklkQW5kU2VjQ29udGV4 dChzcGxpdFJlbC0+cmRfcmVsLT5yZWxvd25lciwKKwkJCQkJCSAgIHNhdmVfc2VjX2NvbnRl eHQgfCBTRUNVUklUWV9SRVNUUklDVEVEX09QRVJBVElPTik7CisJc2F2ZV9uZXN0bGV2ZWwg PSBOZXdHVUNOZXN0TGV2ZWwoKTsKKwlSZXN0cmljdFNlYXJjaFBhdGgoKTsKKworCS8qIENv cHkgZGF0YSBmcm9tIHNwbGl0IHBhcnRpdGlvbiB0byBuZXcgcGFydGl0aW9ucy4gKi8KKwlT cGxpdFBhcnRpdGlvbk1vdmVSb3dzKHdxdWV1ZSwgcmVsLCBzcGxpdFJlbCwgY21kLT5wYXJ0 bGlzdCwgbmV3UGFydFJlbHMpOworCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAq LworCXRhYmxlX2Nsb3NlKHNwbGl0UmVsLCBOb0xvY2spOworCisJLyogQXR0YWNoIG5ldyBw YXJ0aXRpb25zIHRvIHBhcnRpdGlvbmVkIHRhYmxlLiAqLworCWZvcmJvdGgobGlzdHB0ciwg Y21kLT5wYXJ0bGlzdCwgbGlzdHB0cjIsIG5ld1BhcnRSZWxzKQorCXsKKwkJU2luZ2xlUGFy dGl0aW9uU3BlYyAqc3BzID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKikgbGZpcnN0KGxpc3Rw dHIpOworCQlSZWxhdGlvbgluZXdQYXJ0UmVsID0gKFJlbGF0aW9uKSBsZmlyc3QobGlzdHB0 cjIpOworCisJCS8qCisJCSAqIHdxdWV1ZSA9IE5VTEw6IHZlcmlmaWNhdGlvbiBmb3IgZWFj aCBjbG9uZWQgY29uc3RyYWludCBpcyBub3QKKwkJICogbmVlZGVkLgorCQkgKi8KKwkJYXR0 YWNoUGFydGl0aW9uVGFibGUoTlVMTCwgcmVsLCBuZXdQYXJ0UmVsLCBzcHMtPmJvdW5kKTsK KwkJLyogS2VlcCB0aGUgbG9jayB1bnRpbCBjb21taXQuICovCisJCXRhYmxlX2Nsb3NlKG5l d1BhcnRSZWwsIE5vTG9jayk7CisJfQorCisJLyogRHJvcCBzcGxpdCBwYXJ0aXRpb24uICov CisJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJb2JqZWN0Lm9iamVj dElkID0gc3BsaXRSZWxPaWQ7CisJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKwkvKiBQcm9i YWJseSBEUk9QX0NBU0NBREUgaXMgbm90IG5lZWRlZC4gKi8KKwlwZXJmb3JtRGVsZXRpb24o Jm9iamVjdCwgRFJPUF9SRVNUUklDVCwgMCk7CisKKwkvKiBSb2xsIGJhY2sgYW55IEdVQyBj aGFuZ2VzIGV4ZWN1dGVkIGJ5IGluZGV4IGZ1bmN0aW9ucy4gKi8KKwlBdEVPWGFjdF9HVUMo ZmFsc2UsIHNhdmVfbmVzdGxldmVsKTsKKworCS8qIFJlc3RvcmUgdXNlcmlkIGFuZCBzZWN1 cml0eSBjb250ZXh0LiAqLworCVNldFVzZXJJZEFuZFNlY0NvbnRleHQoc2F2ZV91c2VyaWQs IHNhdmVfc2VjX2NvbnRleHQpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggYTQ2ZDZjNmVhNi4u Mjk0MTZmNjBmZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysg Yi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0yNTcsNiArMjU3LDcgQEAgc3RhdGlj IE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFs aWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlQYXJ0aXRpb25FbGVtICpwYXJ0ZWxlbTsKIAlQYXJ0 aXRpb25TcGVjICpwYXJ0c3BlYzsKIAlQYXJ0aXRpb25Cb3VuZFNwZWMgKnBhcnRib3VuZHNw ZWM7CisJU2luZ2xlUGFydGl0aW9uU3BlYyAqc2luZ2xlcGFydHNwZWM7CiAJUm9sZVNwZWMg ICAqcm9sZXNwZWM7CiAJUHVibGljYXRpb25PYmpTcGVjICpwdWJsaWNhdGlvbm9iamVjdHNw ZWM7CiAJc3RydWN0IFNlbGVjdExpbWl0ICpzZWxlY3RsaW1pdDsKQEAgLTY0MCw2ICs2NDEs OCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFt ZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPHBhcnRlbGVtPglwYXJ0 X2VsZW0KICV0eXBlIDxsaXN0PgkJcGFydF9wYXJhbXMKICV0eXBlIDxwYXJ0Ym91bmRzcGVj PiBQYXJ0aXRpb25Cb3VuZFNwZWMKKyV0eXBlIDxzaW5nbGVwYXJ0c3BlYz4JU2luZ2xlUGFy dGl0aW9uU3BlYworJXR5cGUgPGxpc3Q+CQlwYXJ0aXRpb25zX2xpc3QKICV0eXBlIDxsaXN0 PgkJaGFzaF9wYXJ0Ym91bmQKICV0eXBlIDxkZWZlbHQ+CQloYXNoX3BhcnRib3VuZF9lbGVt CiAKQEAgLTc3MCw3ICs3NzMsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdT ZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCVNB VkVQT0lOVCBTQ0FMQVIgU0NIRU1BIFNDSEVNQVMgU0NST0xMIFNFQVJDSCBTRUNPTkRfUCBT RUNVUklUWSBTRUxFQ1QKIAlTRVFVRU5DRSBTRVFVRU5DRVMKIAlTRVJJQUxJWkFCTEUgU0VS VkVSIFNFU1NJT04gU0VTU0lPTl9VU0VSIFNFVCBTRVRTIFNFVE9GIFNIQVJFIFNIT1cKLQlT SU1JTEFSIFNJTVBMRSBTS0lQIFNNQUxMSU5UIFNOQVBTSE9UIFNPTUUgU09VUkNFIFNRTF9Q IFNUQUJMRSBTVEFOREFMT05FX1AKKwlTSU1JTEFSIFNJTVBMRSBTS0lQIFNNQUxMSU5UIFNO QVBTSE9UIFNPTUUgU1BMSVQgU09VUkNFIFNRTF9QIFNUQUJMRSBTVEFOREFMT05FX1AKIAlT VEFSVCBTVEFURU1FTlQgU1RBVElTVElDUyBTVERJTiBTVERPVVQgU1RPUkFHRSBTVE9SRUQg U1RSSUNUX1AgU1RSSU5HX1AgU1RSSVBfUAogCVNVQlNDUklQVElPTiBTVUJTVFJJTkcgU1VQ UE9SVCBTWU1NRVRSSUMgU1lTSUQgU1lTVEVNX1AgU1lTVEVNX1VTRVIKIApAQCAtMjM1Nyw2 ICsyMzYwLDIzIEBAIGFsdGVyX3RhYmxlX2NtZHM6CiAJCQl8IGFsdGVyX3RhYmxlX2NtZHMg JywnIGFsdGVyX3RhYmxlX2NtZAl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CiAJCTsKIAor cGFydGl0aW9uc19saXN0OgorCQkJU2luZ2xlUGFydGl0aW9uU3BlYwkJCQkJCQl7ICQkID0g bGlzdF9tYWtlMSgkMSk7IH0KKwkJCXwgcGFydGl0aW9uc19saXN0ICcsJyBTaW5nbGVQYXJ0 aXRpb25TcGVjCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KKwkJOworCitTaW5nbGVQYXJ0 aXRpb25TcGVjOgorCQkJUEFSVElUSU9OIHF1YWxpZmllZF9uYW1lIFBhcnRpdGlvbkJvdW5k U3BlYworCQkJCXsKKwkJCQkJU2luZ2xlUGFydGl0aW9uU3BlYyAqbiA9IG1ha2VOb2RlKFNp bmdsZVBhcnRpdGlvblNwZWMpOworCisJCQkJCW4tPm5hbWUgPSAkMjsKKwkJCQkJbi0+Ym91 bmQgPSAkMzsKKworCQkJCQkkJCA9IG47CisJCQkJfQorCQk7CisKIHBhcnRpdGlvbl9jbWQ6 CiAJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gQVRUQUNIIFBBUlRJVElPTiA8dGFibGVfbmFt ZT4gRk9SIFZBTFVFUyAqLwogCQkJQVRUQUNIIFBBUlRJVElPTiBxdWFsaWZpZWRfbmFtZSBQ YXJ0aXRpb25Cb3VuZFNwZWMKQEAgLTI0MDEsNiArMjQyMSwyMCBAQCBwYXJ0aXRpb25fY21k OgogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsK IAkJCQl9CisJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gU1BMSVQgUEFSVElUSU9OIDxwYXJ0 aXRpb25fbmFtZT4gSU5UTyAoKSAqLworCQkJfCBTUExJVCBQQVJUSVRJT04gcXVhbGlmaWVk X25hbWUgSU5UTyAnKCcgcGFydGl0aW9uc19saXN0ICcpJworCQkJCXsKKwkJCQkJQWx0ZXJU YWJsZUNtZCAqbiA9IG1ha2VOb2RlKEFsdGVyVGFibGVDbWQpOworCQkJCQlQYXJ0aXRpb25D bWQgKmNtZCA9IG1ha2VOb2RlKFBhcnRpdGlvbkNtZCk7CisKKwkJCQkJbi0+c3VidHlwZSA9 IEFUX1NwbGl0UGFydGl0aW9uOworCQkJCQljbWQtPm5hbWUgPSAkMzsKKwkJCQkJY21kLT5i b3VuZCA9IE5VTEw7CisJCQkJCWNtZC0+cGFydGxpc3QgPSAkNjsKKwkJCQkJY21kLT5jb25j dXJyZW50ID0gZmFsc2U7CisJCQkJCW4tPmRlZiA9IChOb2RlICopIGNtZDsKKwkJCQkJJCQg PSAoTm9kZSAqKSBuOworCQkJCX0KIAkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBNRVJHRSBQ QVJUSVRJT05TICgpIElOVE8gPHBhcnRpdGlvbl9uYW1lPiAqLwogCQkJfCBNRVJHRSBQQVJU SVRJT05TICcoJyBxdWFsaWZpZWRfbmFtZV9saXN0ICcpJyBJTlRPIHF1YWxpZmllZF9uYW1l CiAJCQkJewpAQCAtMTgwMTcsNiArMTgwNTEsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJ CQl8IFNLSVAKIAkJCXwgU05BUFNIT1QKIAkJCXwgU09VUkNFCisJCQl8IFNQTElUCiAJCQl8 IFNRTF9QCiAJCQl8IFNUQUJMRQogCQkJfCBTVEFOREFMT05FX1AKQEAgLTE4NjU3LDYgKzE4 NjkyLDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBTTkFQU0hPVAogCQkJfCBTT01F CiAJCQl8IFNPVVJDRQorCQkJfCBTUExJVAogCQkJfCBTUUxfUAogCQkJfCBTVEFCTEUKIAkJ CXwgU1RBTkRBTE9ORV9QCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf dXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwppbmRleCA1 NjRiYTU1YjZkLi5lMmVmZTBiZjBjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21k LmMKQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1Db25zdHJhaW50 QXR0cnMoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwKIAkJCQkJCQkJCSBMaXN0ICpjb25zdHJh aW50TGlzdCk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1Db2x1bW5UeXBlKENyZWF0ZVN0bXRD b250ZXh0ICpjeHQsIENvbHVtbkRlZiAqY29sdW1uKTsKIHN0YXRpYyB2b2lkIHNldFNjaGVt YU5hbWUoY29uc3QgY2hhciAqY29udGV4dF9zY2hlbWEsIGNoYXIgKipzdG10X3NjaGVtYV9u YW1lKTsKLXN0YXRpYyB2b2lkIHRyYW5zZm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10Q29u dGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKmNtZCk7CitzdGF0aWMgdm9pZCB0cmFuc2Zvcm1Q YXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQm91bmRTcGVj ICpib3VuZCk7CiBzdGF0aWMgTGlzdCAqdHJhbnNmb3JtUGFydGl0aW9uUmFuZ2VCb3VuZHMo UGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpibGlzdCwKIAkJCQkJCQkJCQkgICBSZWxhdGlv biBwYXJlbnQpOwogc3RhdGljIHZvaWQgdmFsaWRhdGVJbmZpbml0ZUJvdW5kcyhQYXJzZVN0 YXRlICpwc3RhdGUsIExpc3QgKmJsaXN0KTsKQEAgLTM1MTUsOSArMzUxNSwxMSBAQCB0cmFu c2Zvcm1SdWxlU3RtdChSdWxlU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcs CiAvKgogICogY2hlY2tQYXJ0aXRpb24KICAqIENoZWNrIHdoZXRoZXIgcGFydFJlbE9pZCBp cyBhIGxlYWYgcGFydGl0aW9uIG9mIHRoZSBwYXJlbnQgdGFibGUgKHJlbCkuCisgKiBpc19t ZXJnZTogdHJ1ZSBpbmRpY2F0ZXMgdGhlIG9wZXJhdGlvbiBpcyAiQUxURVIgVEFCTEUgLi4u IE1FUkdFIFBBUlRJVElPTlMiOworICogZmFsc2UgaW5kaWNhdGVzIHRoZSBvcGVyYXRpb24g aXMgIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT05TIi4KICAqLwogc3RhdGljIHZv aWQKLWNoZWNrUGFydGl0aW9uKFJlbGF0aW9uIHJlbCwgT2lkIHBhcnRSZWxPaWQpCitjaGVj a1BhcnRpdGlvbihSZWxhdGlvbiByZWwsIE9pZCBwYXJ0UmVsT2lkLCBib29sIGlzX21lcmdl KQogewogCVJlbGF0aW9uCXBhcnRSZWw7CiAKQEAgLTM1MjcsMjUgKzM1MjksNjkgQEAgY2hl Y2tQYXJ0aXRpb24oUmVsYXRpb24gcmVsLCBPaWQgcGFydFJlbE9pZCkKIAkJZXJlcG9ydChF UlJPUiwKIAkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAogCQkJCWVy cm1zZygiXCIlc1wiIGlzIG5vdCBhIHRhYmxlIiwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cGFydFJlbCkpLAotCQkJCWVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJ T05TIGNhbiBvbmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9u cyIpKTsKKwkJCQlpc19tZXJnZQorCQkJCT8gZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIE1F UkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0aW9ucyBkb24ndCBoYXZlIHN1 Yi1wYXJ0aXRpb25zIikKKwkJCQk6IGVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQ QVJUSVRJT05TIGNhbiBvbmx5IHNwbGl0IHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFy dGl0aW9ucyIpKTsKIAogCWlmICghcGFydFJlbC0+cmRfcmVsLT5yZWxpc3BhcnRpdGlvbikK IAkJZXJlcG9ydChFUlJPUiwKIAkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZ UEUpLAogCQkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiBwYXJ0aXRp b25lZCB0YWJsZSBcIiVzXCIiLAogCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShw YXJ0UmVsKSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSksCi0JCQkJZXJyaGludCgi QUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY2FuIG9ubHkgbWVyZ2UgcGFydGl0 aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikpOworCQkJCWlzX21lcmdlCisJCQkJ PyBlcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBt ZXJnZSBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKQorCQkJCTogZXJy aGludCgiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTlMgY2FuIG9ubHkgc3BsaXQg cGFydGl0aW9ucyBkb24ndCBoYXZlIHN1Yi1wYXJ0aXRpb25zIikpOwogCiAJaWYgKGdldF9w YXJ0aXRpb25fcGFyZW50KHBhcnRSZWxPaWQsIGZhbHNlKSAhPSBSZWxhdGlvbkdldFJlbGlk KHJlbCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJZXJyY29kZShFUlJDT0RFX1VOREVGSU5F RF9UQUJMRSksCiAJCQkJZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgaXMgbm90IGEgcGFydGl0 aW9uIG9mIHJlbGF0aW9uIFwiJXNcIiIsCiAJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHBhcnRSZWwpLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSwKLQkJCQllcnJo aW50KCJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBjYW4gb25seSBtZXJnZSBw YXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKSk7CisJCQkJaXNfbWVyZ2UK KwkJCQk/IGVycmhpbnQoIkFMVEVSIFRBQkxFIC4uLiBNRVJHRSBQQVJUSVRJT05TIGNhbiBv bmx5IG1lcmdlIHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucyIpCisJCQkJ OiBlcnJoaW50KCJBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OUyBjYW4gb25seSBz cGxpdCBwYXJ0aXRpb25zIGRvbid0IGhhdmUgc3ViLXBhcnRpdGlvbnMiKSk7CiAKIAl0YWJs ZV9jbG9zZShwYXJ0UmVsLCBOb0xvY2spOwogfQogCisvKgorICogdHJhbnNmb3JtUGFydGl0 aW9uQ21kRm9yU3BsaXQKKyAqCQlBbmFseXplIHRoZSBBTFRFUiBUQUJMRSAuLi4gU1BMSVQg UEFSVElUSU9OIGNvbW1hbmQKKyAqCisgKiBGb3IgZWFjaCBuZXcgcGFydGl0aW9uIHNwcy0+ Ym91bmQgaXMgc2V0IHRvIHRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSBvZiBib3VuZC4KKyAqIERv ZXMgY2hlY2tzIGZvciBib3VuZHMgb2YgbmV3IHBhcnRpdGlvbnMuCisgKi8KK3N0YXRpYyB2 b2lkCit0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JTcGxpdChDcmVhdGVTdG10Q29udGV4dCAq Y3h0LCBQYXJ0aXRpb25DbWQgKnBhcnRjbWQpCit7CisJUmVsYXRpb24JcGFyZW50ID0gY3h0 LT5yZWw7CisJT2lkCQkJc3BsaXRQYXJ0T2lkOworCisJLyogVHJhbnNmb3JtIHBhcnRpdGlv biBib3VuZHMgZm9yIGFsbCBwYXJ0aXRpb25zIGluIHRoZSBsaXN0OiAqLworCWZvcmVhY2hf bm9kZShTaW5nbGVQYXJ0aXRpb25TcGVjLCBzcHMsIHBhcnRjbWQtPnBhcnRsaXN0KQorCXsK KwkJY3h0LT5wYXJ0Ym91bmQgPSBOVUxMOworCQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoY3h0 LCBzcHMtPmJvdW5kKTsKKwkJLyogQXNzaWduIHRyYW5zZm9ybWVkIHZhbHVlIG9mIHRoZSBw YXJ0aXRpb24gYm91bmQuICovCisJCXNwcy0+Ym91bmQgPSBjeHQtPnBhcnRib3VuZDsKKwl9 CisKKwkvKgorCSAqIE9wZW4gYW5kIGxvY2sgcGFydGl0aW9uLCBjaGVjayBvd25lcnNoaXAg YWxvbmcgdGhlIHdheS4gV2UgbmVlZCB0byB1c2UKKwkgKiBBY2Nlc3NFeGNsdXNpdmVMb2Nr IGhlcmUsIGJlY2F1c2UgdGhpcyBzcGxpdCBwYXJ0aXRpb24gd2lsbCBiZSBkZXRhY2hlZAor CSAqIHRoZW4gZHJvcHBlZCBpbiBBVEV4ZWNTcGxpdFBhcnRpdGlvbi4KKwkgKi8KKwlzcGxp dFBhcnRPaWQgPSBSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWQocGFydGNtZC0+bmFtZSwgQWNj ZXNzRXhjbHVzaXZlTG9jaywKKwkJCQkJCQkJCQkJMCwgUmFuZ2VWYXJDYWxsYmFja093bnNS ZWxhdGlvbiwKKwkJCQkJCQkJCQkJTlVMTCk7CisKKwljaGVja1BhcnRpdGlvbihwYXJlbnQs IHNwbGl0UGFydE9pZCwgZmFsc2UpOworCisJLyogVGhlbiB3ZSBzaG91bGQgY2hlY2sgcGFy dGl0aW9ucyB3aXRoIHRyYW5zZm9ybWVkIGJvdW5kcy4gKi8KKwljaGVja19wYXJ0aXRpb25z X2Zvcl9zcGxpdChwYXJlbnQsIHNwbGl0UGFydE9pZCwgcGFydGNtZC0+cGFydGxpc3QsIGN4 dC0+cHN0YXRlKTsKK30KKworCiAvKgogICogdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVy Z2UKICAqCQlBbmFseXplIHRoZSBBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyBj b21tYW5kCkBAIC0zNjIyLDcgKzM2NjgsNyBAQCB0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JN ZXJnZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKnBhcnRjbWQpCiAJ CQkJCQlwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIG5hbWUtPmxvY2F0aW9uKSk7 CiAJCX0KIAotCQljaGVja1BhcnRpdGlvbihwYXJlbnQsIHBhcnRPaWQpOworCQljaGVja1Bh cnRpdGlvbihwYXJlbnQsIHBhcnRPaWQsIHRydWUpOwogCiAJCXBhcnRPaWRzID0gbGFwcGVu ZF9vaWQocGFydE9pZHMsIHBhcnRPaWQpOwogCX0KQEAgLTM5MTAsNyArMzk1Niw3IEBAIHRy YW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCByZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQs CiAJCQkJewogCQkJCQlQYXJ0aXRpb25DbWQgKnBhcnRjbWQgPSAoUGFydGl0aW9uQ21kICop IGNtZC0+ZGVmOwogCi0JCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZCgmY3h0LCBwYXJ0Y21k KTsKKwkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21kKCZjeHQsIHBhcnRjbWQtPmJvdW5kKTsK IAkJCQkJLyogYXNzaWduIHRyYW5zZm9ybWVkIHZhbHVlIG9mIHRoZSBwYXJ0aXRpb24gYm91 bmQgKi8KIAkJCQkJcGFydGNtZC0+Ym91bmQgPSBjeHQucGFydGJvdW5kOwogCQkJCX0KQEAg LTM5MzIsNiArMzk3OCwyMCBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChPaWQgcmVsaWQs IEFsdGVyVGFibGVTdG10ICpzdG10LAogCQkJCQlicmVhazsKIAkJCQl9CiAKKwkJCWNhc2Ug QVRfU3BsaXRQYXJ0aXRpb246CisJCQkJeworCQkJCQlQYXJ0aXRpb25DbWQgKnBhcnRjbWQg PSAoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmOworCisJCQkJCWlmIChsaXN0X2xlbmd0aChw YXJ0Y21kLT5wYXJ0bGlzdCkgPCAyKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJ ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCQll cnJtc2coImxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3Qg dHdvIHBhcnRpdGlvbnMiKSk7CisKKwkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yU3Bs aXQoJmN4dCwgcGFydGNtZCk7CisJCQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2NtZHMsIGNt ZCk7CisJCQkJCWJyZWFrOworCQkJCX0KKwogCQkJZGVmYXVsdDoKIAogCQkJCS8qCkBAIC00 MzYyLDEzICs0NDIyLDEzIEBAIHNldFNjaGVtYU5hbWUoY29uc3QgY2hhciAqY29udGV4dF9z Y2hlbWEsIGNoYXIgKipzdG10X3NjaGVtYV9uYW1lKQogCiAvKgogICogdHJhbnNmb3JtUGFy dGl0aW9uQ21kCi0gKgkJQW5hbHl6ZSB0aGUgQVRUQUNIL0RFVEFDSCBQQVJUSVRJT04gY29t bWFuZAorICoJCUFuYWx5emUgdGhlIEFUVEFDSC9ERVRBQ0gvU1BMSVQgUEFSVElUSU9OIGNv bW1hbmQKICAqCi0gKiBJbiBjYXNlIG9mIHRoZSBBVFRBQ0ggUEFSVElUSU9OIGNvbW1hbmQs IGN4dC0+cGFydGJvdW5kIGlzIHNldCB0byB0aGUKLSAqIHRyYW5zZm9ybWVkIHZhbHVlIG9m IGNtZC0+Ym91bmQuCisgKiBJbiBjYXNlIG9mIHRoZSBBVFRBQ0gvU1BMSVQgUEFSVElUSU9O IGNvbW1hbmQsIGN4dC0+cGFydGJvdW5kIGlzIHNldCB0byB0aGUKKyAqIHRyYW5zZm9ybWVk IHZhbHVlIG9mIGJvdW5kLgogICovCiBzdGF0aWMgdm9pZAotdHJhbnNmb3JtUGFydGl0aW9u Q21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkNtZCAqY21kKQordHJhbnNm b3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkJvdW5k U3BlYyAqYm91bmQpCiB7CiAJUmVsYXRpb24JcGFyZW50UmVsID0gY3h0LT5yZWw7CiAKQEAg LTQzNzcsOSArNDQzNyw5IEBAIHRyYW5zZm9ybVBhcnRpdGlvbkNtZChDcmVhdGVTdG10Q29u dGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKmNtZCkKIAkJY2FzZSBSRUxLSU5EX1BBUlRJVElP TkVEX1RBQkxFOgogCQkJLyogdHJhbnNmb3JtIHRoZSBwYXJ0aXRpb24gYm91bmQsIGlmIGFu eSAqLwogCQkJQXNzZXJ0KFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudFJlbCkgIT0g TlVMTCk7Ci0JCQlpZiAoY21kLT5ib3VuZCAhPSBOVUxMKQorCQkJaWYgKGJvdW5kICE9IE5V TEwpCiAJCQkJY3h0LT5wYXJ0Ym91bmQgPSB0cmFuc2Zvcm1QYXJ0aXRpb25Cb3VuZChjeHQt PnBzdGF0ZSwgcGFyZW50UmVsLAotCQkJCQkJCQkJCQkJCQkgY21kLT5ib3VuZCk7CisJCQkJ CQkJCQkJCQkJCSBib3VuZCk7CiAJCQlicmVhazsKIAkJY2FzZSBSRUxLSU5EX1BBUlRJVElP TkVEX0lOREVYOgogCkBAIC00Mzg3LDcgKzQ0NDcsNyBAQCB0cmFuc2Zvcm1QYXJ0aXRpb25D bWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQpCiAJCQkgKiBB IHBhcnRpdGlvbmVkIGluZGV4IGNhbm5vdCBoYXZlIGEgcGFydGl0aW9uIGJvdW5kIHNldC4g IEFMVEVSCiAJCQkgKiBJTkRFWCBwcmV2ZW50cyB0aGF0IHdpdGggaXRzIGdyYW1tYXIsIGJ1 dCBub3QgQUxURVIgVEFCTEUuCiAJCQkgKi8KLQkJCWlmIChjbWQtPmJvdW5kICE9IE5VTEwp CisJCQlpZiAoYm91bmQgIT0gTlVMTCkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKIAkJCQkJCSBlcnJt c2coIlwiJXNcIiBpcyBub3QgYSBwYXJ0aXRpb25lZCB0YWJsZSIsCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jIGIvc3JjL2JhY2tlbmQvcGFy dGl0aW9uaW5nL3BhcnRib3VuZHMuYwppbmRleCA2MGMxMDM2Y2U4Li4wYTA0ZDYyOGI2IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKQEAgLTE3LDYgKzE3LDcg QEAKICNpbmNsdWRlICJhY2Nlc3MvcmVsYXRpb24uaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFi bGUuaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgorI2luY2x1ZGUgImNhdGFsb2cv bmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wYXJ0aXRpb24uaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX2luaGVyaXRzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgi CkBAIC00OTg0LDE1ICs0OTg1LDIzIEBAIHNhdGlzZmllc19oYXNoX3BhcnRpdGlvbihQR19G VU5DVElPTl9BUkdTKQogICoKICAqIChmdW5jdGlvbiBmb3IgQlkgUkFOR0UgcGFydGl0aW9u aW5nKQogICoKLSAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNhbGN1bGF0ZV9w YXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKCkuCisgKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0 aW9uIGZvciBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdCgpIGFuZAorICogY2FsY3VsYXRl X3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoKS4KICAqIFRoaXMgZnVuY3Rpb24gY29tcGFy ZXMgdXBwZXIgYm91bmQgb2YgZmlyc3RfYm91bmQgYW5kIGxvd2VyIGJvdW5kIG9mCi0gKiBz ZWNvbmRfYm91bmQuIFRoZXNlIGJvdW5kcyBzaG91bGQgYmUgZXF1YWwuCisgKiBzZWNvbmRf Ym91bmQuIFRoZXNlIGJvdW5kcyBzaG91bGQgYmUgZXF1YWwgZXhjZXB0IHdoZW4KKyAqICJk ZWZhdWx0UGFydCA9PSB0cnVlIiAodGhpcyBtZWFucyB0aGF0IG9uZSBvZiBzcGxpdCBwYXJ0 aXRpb25zIGlzIERFRkFVTFQpLgorICogSW4gdGhpcyBjYXNlIHVwcGVyIGJvdW5kIG9mIGZp cnN0X2JvdW5kIGNhbiBiZSBsZXNzIHRoYW4gbG93ZXIgYm91bmQgb2YKKyAqIHNlY29uZF9i b3VuZCBiZWNhdXNlIHNwYWNlIGJldHdlZW4gdGhlc2UgYm91bmRzIHdpbGwgYmUgaW5jbHVk ZWQgaW4KKyAqIERFRkFVTFQgcGFydGl0aW9uLgogICoKICAqIHBhcmVudDoJCQlwYXJ0aXRp b25lZCB0YWJsZQogICogZmlyc3RfbmFtZToJCW5hbWUgb2YgZmlyc3QgcGFydGl0aW9uCiAg KiBmaXJzdF9ib3VuZDoJCWJvdW5kIG9mIGZpcnN0IHBhcnRpdGlvbgogICogc2Vjb25kX25h bWU6CQluYW1lIG9mIHNlY29uZCBwYXJ0aXRpb24KICAqIHNlY29uZF9ib3VuZDoJYm91bmQg b2Ygc2Vjb25kIHBhcnRpdGlvbgorICogZGVmYXVsdFBhcnQ6CQl0cnVlIGlmIG9uZSBvZiBu ZXcgcGFydGl0aW9ucyBpcyBERUZBVUxUCisgKiBtZXJnZV9vcl9zcGxpdDogIHRydWUgaW5k aWNhdGUgdGhlIG9wcmF0aW9uIGlzICJBTFRFUiBUQUJMRSAuLi4gTUVSR0UgUEFSVElUSU9O UyIKKyAqIGZhbHNlIGluZGljYXRlIHRoZSBvcHJhdGlvbiBpcyAiQUxURVIgVEFCTEUgLi4u IFNQTElUIFBBUlRJVElPTlMiLgogICogcHN0YXRlOgkJCXBvaW50ZXIgdG8gUGFyc2VTdGF0 ZSBzdHJ1Y3QgZm9yIGRldGVybWluaW5nIGVycm9yIHBvc2l0aW9uCiAgKi8KIHN0YXRpYyB2 b2lkCkBAIC01MDAxLDYgKzUwMTAsOCBAQCBjaGVja190d29fcGFydGl0aW9uc19ib3VuZHNf cmFuZ2UoUmVsYXRpb24gcGFyZW50LAogCQkJCQkJCQkgIFBhcnRpdGlvbkJvdW5kU3BlYyAq Zmlyc3RfYm91bmQsCiAJCQkJCQkJCSAgUmFuZ2VWYXIgKnNlY29uZF9uYW1lLAogCQkJCQkJ CQkgIFBhcnRpdGlvbkJvdW5kU3BlYyAqc2Vjb25kX2JvdW5kLAorCQkJCQkJCQkgIGJvb2wg ZGVmYXVsdFBhcnQsCisJCQkJCQkJCSAgYm9vbCBtZXJnZV9zcGxpdCwKIAkJCQkJCQkJICBQ YXJzZVN0YXRlICpwc3RhdGUpCiB7CiAJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0 UGFydGl0aW9uS2V5KHBhcmVudCk7CkBAIC01MDIyLDE3ICs1MDMzLDIyIEBAIGNoZWNrX3R3 b19wYXJ0aXRpb25zX2JvdW5kc19yYW5nZShSZWxhdGlvbiBwYXJlbnQsCiAJCQkJCQkJCSAg a2V5LT5wYXJ0Y29sbGF0aW9uLAogCQkJCQkJCQkgIHNlY29uZF9sb3dlci0+ZGF0dW1zLCBz ZWNvbmRfbG93ZXItPmtpbmQsCiAJCQkJCQkJCSAgZmFsc2UsIGZpcnN0X3VwcGVyKTsKLQlp ZiAoY21wdmFsKQorCWlmICgoIWRlZmF1bHRQYXJ0ICYmIGNtcHZhbCkgfHwgKGRlZmF1bHRQ YXJ0ICYmIGNtcHZhbCA8IDApKQogCXsKIAkJUGFydGl0aW9uUmFuZ2VEYXR1bSAqZGF0dW0g PSBsaW5pdGlhbChzZWNvbmRfYm91bmQtPmxvd2VyZGF0dW1zKTsKIAogCQllcmVwb3J0KEVS Uk9SLAogCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwK LQkJCQllcnJtc2coImNhbiBub3QgbWVyZ2UgcGFydGl0aW9uIFwiJXNcIiB0b2dldGhlciB3 aXRoIHBhcnRpdGlvbiBcIiVzXCIiLAotCQkJCQkgICBzZWNvbmRfbmFtZS0+cmVsbmFtZSwg Zmlyc3RfbmFtZS0+cmVsbmFtZSksCisJCQkJbWVyZ2Vfc3BsaXQKKwkJCQk/IGVycm1zZygi Y2FuIG5vdCBtZXJnZSBwYXJ0aXRpb24gXCIlc1wiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9u IFwiJXNcIiIsCisJCQkJCQkgc2Vjb25kX25hbWUtPnJlbG5hbWUsIGZpcnN0X25hbWUtPnJl bG5hbWUpCisJCQkJOiBlcnJtc2coImNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uIFwiJXNc IiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkJIHNlY29uZF9uYW1l LT5yZWxuYW1lLCBmaXJzdF9uYW1lLT5yZWxuYW1lKSwKIAkJCQllcnJkZXRhaWwoImxvd2Vy IGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBi b3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIiwKIAkJCQkJCSAgc2Vjb25kX25hbWUtPnJlbG5h bWUsIGZpcnN0X25hbWUtPnJlbG5hbWUpLAotCQkJCWVycmhpbnQoIkFMVEVSIFRBQkxFIC4u LiBNRVJHRSBQQVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJl IGFkamFjZW50LiIpLAorCQkJCW1lcmdlX3NwbGl0CisJCQkJPyBlcnJoaW50KCJBTFRFUiBU QUJMRSAuLi4gTUVSR0UgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5k cyB0byBiZSBhZGphY2VudC4iKQorCQkJCTogZXJyaGludCgiQUxURVIgVEFCTEUgLi4uIFNQ TElUIFBBUlRJVElPTlMgcmVxdWlyZXMgdGhlIHBhcnRpdGlvbiBib3VuZHMgdG8gYmUgYWRq YWNlbnQuIiksCiAJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0 aW9uKSk7CiAJfQogfQpAQCAtNTEzNiw2ICs1MTUyLDggQEAgY2FsY3VsYXRlX3BhcnRpdGlv bl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24gcGFyZW50LAogCQkJCQkJCQkJCQkJCSAgKFBh cnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMsIHByZXZfaW5kZXgpLAogCQkJ CQkJCQkJCQkJCSAgKFJhbmdlVmFyICopIGxpc3RfbnRoKHBhcnROYW1lcywgaW5kZXgpLAog CQkJCQkJCQkJCQkJCSAgKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0X250aChib3VuZHMs IGluZGV4KSwKKwkJCQkJCQkJCQkJCQkgIGZhbHNlLAorCQkJCQkJCQkJCQkJCSAgdHJ1ZSwK IAkJCQkJCQkJCQkJCQkgIHBzdGF0ZSk7CiAJCQkJfQogCkBAIC01MTc0LDMgKzUxOTIsNjky IEBAIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91bmRfZm9yX21lcmdlKFJlbGF0aW9uIHBhcmVu dCwKIAkJCQkgKGludCkga2V5LT5zdHJhdGVneSk7CiAJfQogfQorCisvKgorICogY2hlY2tf cGFydGl0aW9uc19ub3Rfb3ZlcmxhcF9saXN0CisgKgorICogKGZ1bmN0aW9uIGZvciBCWSBM SVNUIHBhcnRpdGlvbmluZykKKyAqCisgKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZv ciBjaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdCgpLgorICogQ2hlY2tzIHRoYXQgdGhlIHZh bHVlcyBvZiB0aGUgbmV3IHBhcnRpdGlvbnMgZG8gbm90IG92ZXJsYXAuCisgKgorICogcGFy ZW50OglwYXJ0aXRpb25lZCB0YWJsZQorICogcGFydHM6CWFycmF5IG9mIFNpbmdsZVBhcnRp dGlvblNwZWMgc3RydWN0cyB3aXRoIGluZm8gYWJvdXQgc3BsaXQgcGFydGl0aW9ucworICog bnBhcnRzOglzaXplIG9mIGFycmF5ICJwYXJ0cyIKKyAqLworc3RhdGljIHZvaWQKK2NoZWNr X3BhcnRpdGlvbnNfbm90X292ZXJsYXBfbGlzdChSZWxhdGlvbiBwYXJlbnQsCisJCQkJCQkJ CSAgU2luZ2xlUGFydGl0aW9uU3BlYyAqKnBhcnRzLAorCQkJCQkJCQkgIGludCBucGFydHMs CisJCQkJCQkJCSAgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXkg UEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFy ZW50KTsKKwlpbnQJCQlvdmVybGFwX2xvY2F0aW9uID0gLTE7CisJaW50CQkJaSwKKwkJCQlq OworCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwczEsCisJCQkgICAqc3BzMjsKKwlMaXN0CSAg ICpvdmVybGFwOworCisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFU RUdZX0xJU1QpOworCisJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQorCXsKKwkJc3Bz MSA9IHBhcnRzW2ldOworCisJCWZvciAoaiA9IGkgKyAxOyBqIDwgbnBhcnRzOyBqKyspCisJ CXsKKwkJCXNwczIgPSBwYXJ0c1tqXTsKKworCQkJLyoKKwkJCSAqIENhbGN1bGF0ZSBpbnRl cnNlY3Rpb24gYmV0d2VlbiB2YWx1ZXMgb2YgdHdvIHBhcnRpdGlvbnMuCisJCQkgKi8KKwkJ CW92ZXJsYXAgPSBsaXN0X2ludGVyc2VjdGlvbihzcHMxLT5ib3VuZC0+bGlzdGRhdHVtcywK KwkJCQkJCQkJCQlzcHMyLT5ib3VuZC0+bGlzdGRhdHVtcyk7CisJCQlpZiAobGlzdF9sZW5n dGgob3ZlcmxhcCkgPiAwKQorCQkJeworCQkJCUNvbnN0CSAgICp2YWwgPSAoQ29uc3QgKikg bGZpcnN0KGxpc3RfaGVhZChvdmVybGFwKSk7CisKKwkJCQlvdmVybGFwX2xvY2F0aW9uID0g dmFsLT5sb2NhdGlvbjsKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJD T0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJZXJybXNnKCJuZXcgcGFy dGl0aW9uIFwiJXNcIiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciBuZXcgcGFydGl0aW9u IFwiJXNcIiIsCisJCQkJCQkJICAgc3BzMS0+bmFtZS0+cmVsbmFtZSwgc3BzMi0+bmFtZS0+ cmVsbmFtZSksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdmVybGFwX2xv Y2F0aW9uKSk7CisJCQl9CisJCX0KKwl9Cit9CisKKy8qCisgKiBjaGVja19wYXJ0aXRpb25f Ym91bmRzX2Zvcl9zcGxpdF9yYW5nZQorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgUkFOR0Ug cGFydGl0aW9uaW5nKQorICoKKyAqIENoZWNrcyB0aGF0IGJvdW5kcyBvZiBuZXcgcGFydGl0 aW9uICJzcGVjIiBhcmUgaW5zaWRlIGJvdW5kcyBvZiBzcGxpdAorICogcGFydGl0aW9uICh3 aXRoIE9pZCBzcGxpdFBhcnRPaWQpLiBJZiBmaXJzdD10cnVlICh0aGlzIG1lYW5zIHRoYXQg InNwZWMiIGlzCisgKiB0aGUgZmlyc3Qgb2YgbmV3IHBhcnRpdGlvbnMpIHRoZW4gbG93ZXIg Ym91bmQgb2YgInNwZWMiIHNob3VsZCBiZSBlcXVhbCAob3IKKyAqIGdyZWF0ZXIgdGhhbiBv ciBlcXVhbCBpbiBjYXNlIGRlZmF1bHRQYXJ0PXRydWUpIHRvIGxvd2VyIGJvdW5kIG9mIHNw bGl0CisgKiBwYXJ0aXRpb24uIElmIGxhc3Q9dHJ1ZSAodGhpcyBtZWFucyB0aGF0ICJzcGVj IiBpcyB0aGUgbGFzdCBvZiBuZXcKKyAqIHBhcnRpdGlvbnMpIHRoZW4gdXBwZXIgYm91bmQg b2YgInNwZWMiIHNob3VsZCBiZSBlcXVhbCAob3IgbGVzcyB0aGFuIG9yCisgKiBlcXVhbCBp biBjYXNlIGRlZmF1bHRQYXJ0PXRydWUpIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRp dGlvbi4KKyAqCisgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKKyAqIHJlbG5hbWU6 CQkJbmFtZSBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BlYzoJCQlib3VuZHMgc3BlY2lm aWNhdGlvbiBvZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BsaXRQYXJ0T2lkOglzcGxpdCBw YXJ0aXRpb24gT2lkCisgKiBmaXJzdDoJCQl0cnVlIGluIGNhc2UgbmV3IHBhcnRpdGlvbiAi c3BlYyIgaXMgZmlyc3Qgb2YgbmV3IHBhcnRpdGlvbnMKKyAqIGxhc3Q6CQkJdHJ1ZSBpbiBj YXNlIG5ldyBwYXJ0aXRpb24gInNwZWMiIGlzIGxhc3Qgb2YgbmV3IHBhcnRpdGlvbnMKKyAq IGRlZmF1bHRQYXJ0OgkJdHJ1ZSBpbiBjYXNlIG5ldyBwYXJ0aXRpb25zIGNvbnRhaW4gREVG QVVMVCBwYXJ0aXRpb24KKyAqIHBzdGF0ZToJCQlwb2ludGVyIHRvIFBhcnNlU3RhdGUgc3Ry dWN0IGZvciBkZXRlcm1pbmUgZXJyb3IgcG9zaXRpb24KKyAqLworc3RhdGljIHZvaWQKK2No ZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0X3JhbmdlKFJlbGF0aW9uIHBhcmVudCwK KwkJCQkJCQkJCSAgIGNoYXIgKnJlbG5hbWUsCisJCQkJCQkJCQkgICBQYXJ0aXRpb25Cb3Vu ZFNwZWMgKnNwZWMsCisJCQkJCQkJCQkgICBPaWQgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJ ICAgYm9vbCBmaXJzdCwKKwkJCQkJCQkJCSAgIGJvb2wgbGFzdCwKKwkJCQkJCQkJCSAgIGJv b2wgZGVmYXVsdFBhcnQsCisJCQkJCQkJCQkgICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJ UGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJ UGFydGl0aW9uUmFuZ2VCb3VuZCAqbG93ZXIsCisJCQkgICAqdXBwZXI7CisJaW50CQkJY21w dmFsOworCisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JB TkdFKTsKKwlBc3NlcnQoc3BlYy0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JB TkdFKTsKKworCWxvd2VyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIC0xLCBz cGVjLT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisJdXBwZXIgPSBtYWtlX29uZV9wYXJ0aXRpb25f cmJvdW5kKGtleSwgLTEsIHNwZWMtPnVwcGVyZGF0dW1zLCBmYWxzZSk7CisKKwkvKgorCSAq IEZpcnN0IGNoZWNrIGlmIHRoZSByZXN1bHRpbmcgcmFuZ2Ugd291bGQgYmUgZW1wdHkgd2l0 aCBzcGVjaWZpZWQgbG93ZXIKKwkgKiBhbmQgdXBwZXIgYm91bmRzLiAgcGFydGl0aW9uX3Ji b3VuZF9jbXAgY2Fubm90IHJldHVybiB6ZXJvIGhlcmUsIHNpbmNlCisJICogdGhlIGxvd2Vy LWJvdW5kIGZsYWdzIGFyZSBkaWZmZXJlbnQuCisJICovCisJY21wdmFsID0gcGFydGl0aW9u X3Jib3VuZF9jbXAoa2V5LT5wYXJ0bmF0dHMsCisJCQkJCQkJCSAga2V5LT5wYXJ0c3VwZnVu YywKKwkJCQkJCQkJICBrZXktPnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCSAgbG93ZXItPmRh dHVtcywgbG93ZXItPmtpbmQsCisJCQkJCQkJCSAgdHJ1ZSwgdXBwZXIpOworCUFzc2VydChj bXB2YWwgIT0gMCk7CisJaWYgKGNtcHZhbCA+IDApCisJeworCQkvKiBQb2ludCB0byBwcm9i bGVtYXRpYyBrZXkgaW4gdGhlIGxvd2VyIGRhdHVtcyBsaXN0LiAqLworCQlQYXJ0aXRpb25S YW5nZURhdHVtICpkYXR1bSA9IGxpc3RfbnRoKHNwZWMtPmxvd2VyZGF0dW1zLCBjbXB2YWwg LSAxKTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coImVtcHR5IHJhbmdlIGJvdW5kIHNw ZWNpZmllZCBmb3IgcGFydGl0aW9uIFwiJXNcIiIsCisJCQkJCSAgIHJlbG5hbWUpLAorCQkJ CWVycmRldGFpbCgiU3BlY2lmaWVkIGxvd2VyIGJvdW5kICVzIGlzIGdyZWF0ZXIgdGhhbiBv ciBlcXVhbCB0byB1cHBlciBib3VuZCAlcy4iLAorCQkJCQkJICBnZXRfcmFuZ2VfcGFydGJv dW5kX3N0cmluZyhzcGVjLT5sb3dlcmRhdHVtcyksCisJCQkJCQkgIGdldF9yYW5nZV9wYXJ0 Ym91bmRfc3RyaW5nKHNwZWMtPnVwcGVyZGF0dW1zKSksCisJCQkJcGFyc2VyX2VycnBvc2l0 aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSk7CisJfQorCisJLyogTmVlZCB0byBjaGVj ayBmaXJzdCBhbmQgbGFzdCBwYXJ0aXRpb25zIChmcm9tIHNldCBvZiBuZXcgcGFydGl0aW9u cykgKi8KKwlpZiAoZmlyc3QgfHwgbGFzdCkKKwl7CisJCVBhcnRpdGlvbkJvdW5kU3BlYyAq c3BsaXRfc3BlYyA9IGdldF9wYXJ0aXRpb25fYm91bmRfc3BlYyhzcGxpdFBhcnRPaWQpOwor CQlQYXJ0aXRpb25SYW5nZURhdHVtICpkYXR1bTsKKworCQlpZiAoZmlyc3QpCisJCXsKKwkJ CVBhcnRpdGlvblJhbmdlQm91bmQgKnNwbGl0X2xvd2VyOworCisJCQlzcGxpdF9sb3dlciA9 IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgc3BsaXRfc3BlYy0+bG93ZXJk YXR1bXMsIHRydWUpOworCisJCQljbXB2YWwgPSBwYXJ0aXRpb25fcmJvdW5kX2NtcChrZXkt PnBhcnRuYXR0cywKKwkJCQkJCQkJCQkgIGtleS0+cGFydHN1cGZ1bmMsCisJCQkJCQkJCQkJ ICBrZXktPnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCQkJICBsb3dlci0+ZGF0dW1zLCBsb3dl ci0+a2luZCwKKwkJCQkJCQkJCQkgIHRydWUsIHNwbGl0X2xvd2VyKTsKKworCQkJLyoKKwkJ CSAqIExvd2VyIGJvdW5kIG9mICJzcGVjIiBzaG91bGQgYmUgZXF1YWwgKG9yIGdyZWF0ZXIg dGhhbiBvciBlcXVhbAorCQkJICogaW4gY2FzZSBkZWZhdWx0UGFydD10cnVlKSB0byBsb3dl ciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24uCisJCQkgKi8KKwkJCWlmICghZGVmYXVsdFBh cnQpCisJCQl7CisJCQkJaWYgKGNtcHZhbCAhPSAwKQorCQkJCXsKKwkJCQkJZGF0dW0gPSBs aXN0X250aChzcGVjLT5sb3dlcmRhdHVtcywgYWJzKGNtcHZhbCkgLSAxKTsKKwkJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVG SU5JVElPTiksCisJCQkJCQkJZXJybXNnKCJsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIl c1wiIGlzIG5vdCBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24iLAor CQkJCQkJCQkgICByZWxuYW1lKSwKKwkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCBkYXR1bS0+bG9jYXRpb24pKTsKKwkJCQl9CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJ aWYgKGNtcHZhbCA8IDApCisJCQkJeworCQkJCQlkYXR1bSA9IGxpc3RfbnRoKHNwZWMtPmxv d2VyZGF0dW1zLCBhYnMoY21wdmFsKSAtIDEpOworCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJ CQllcnJtc2coImxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbGVzcyB0aGFu IGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiIsCisJCQkJCQkJCSAgIHJlbG5hbWUp LAorCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikp OworCQkJCX0KKwkJCX0KKwkJfQorCQllbHNlCisJCXsKKwkJCVBhcnRpdGlvblJhbmdlQm91 bmQgKnNwbGl0X3VwcGVyOworCisJCQlzcGxpdF91cHBlciA9IG1ha2Vfb25lX3BhcnRpdGlv bl9yYm91bmQoa2V5LCAtMSwgc3BsaXRfc3BlYy0+dXBwZXJkYXR1bXMsIGZhbHNlKTsKKwor CQkJY21wdmFsID0gcGFydGl0aW9uX3Jib3VuZF9jbXAoa2V5LT5wYXJ0bmF0dHMsCisJCQkJ CQkJCQkJICBrZXktPnBhcnRzdXBmdW5jLAorCQkJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0 aW9uLAorCQkJCQkJCQkJCSAgdXBwZXItPmRhdHVtcywgdXBwZXItPmtpbmQsCisJCQkJCQkJ CQkJICBmYWxzZSwgc3BsaXRfdXBwZXIpOworCisJCQkvKgorCQkJICogVXBwZXIgYm91bmQg b2YgInNwZWMiIHNob3VsZCBiZSBlcXVhbCAob3IgbGVzcyB0aGFuIG9yIGVxdWFsIGluCisJ CQkgKiBjYXNlIGRlZmF1bHRQYXJ0PXRydWUpIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBh cnRpdGlvbi4KKwkJCSAqLworCQkJaWYgKCFkZWZhdWx0UGFydCkKKwkJCXsKKwkJCQlpZiAo Y21wdmFsICE9IDApCisJCQkJeworCQkJCQlkYXR1bSA9IGxpc3RfbnRoKHNwZWMtPnVwcGVy ZGF0dW1zLCBhYnMoY21wdmFsKSAtIDEpOworCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJ CWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQll cnJtc2coInVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiBcIiVzXCIgaXMgbm90IGVxdWFsIHRv IHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiIsCisJCQkJCQkJCSAgIHJlbG5hbWUp LAorCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikp OworCQkJCX0KKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlpZiAoY21wdmFsID4gMCkKKwkJ CQl7CisJCQkJCWRhdHVtID0gbGlzdF9udGgoc3BlYy0+dXBwZXJkYXR1bXMsIGFicyhjbXB2 YWwpIC0gMSk7CisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJyY29kZShFUlJDT0RF X0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCWVycm1zZygidXBwZXIgYm91 bmQgb2YgcGFydGl0aW9uIFwiJXNcIiBpcyBncmVhdGVyIHRoYW4gdXBwZXIgYm91bmQgb2Yg c3BsaXQgcGFydGl0aW9uIiwKKwkJCQkJCQkJICAgcmVsbmFtZSksCisJCQkJCQkJcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSk7CisJCQkJfQorCQkJfQor CQl9CisJfQorfQorCisvKgorICogY2hlY2tfcGFydGl0aW9uX2JvdW5kc19mb3Jfc3BsaXRf bGlzdAorICoKKyAqIChmdW5jdGlvbiBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcpCisgKgor ICogQ2hlY2tzIHRoYXQgYm91bmRzIG9mIG5ldyBwYXJ0aXRpb24gYXJlIGluc2lkZSBib3Vu ZHMgb2Ygc3BsaXQgcGFydGl0aW9uCisgKiAod2l0aCBPaWQgc3BsaXRQYXJ0T2lkKS4KKyAq CisgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKKyAqIHJlbG5hbWU6CQkJbmFtZSBv ZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BlYzoJCQlib3VuZHMgc3BlY2lmaWNhdGlvbiBv ZiB0aGUgbmV3IHBhcnRpdGlvbgorICogc3BsaXRQYXJ0T2lkOglzcGxpdCBwYXJ0aXRpb24g T2lkCisgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3IgZGV0 ZXJtaW5lIGVycm9yIHBvc2l0aW9uCisgKi8KK3N0YXRpYyB2b2lkCitjaGVja19wYXJ0aXRp b25fYm91bmRzX2Zvcl9zcGxpdF9saXN0KFJlbGF0aW9uIHBhcmVudCwgY2hhciAqcmVsbmFt ZSwKKwkJCQkJCQkJCSAgUGFydGl0aW9uQm91bmRTcGVjICpzcGVjLAorCQkJCQkJCQkJICBP aWQgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJICBQYXJzZVN0YXRlICpwc3RhdGUpCit7CisJ UGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJ UGFydGl0aW9uRGVzYyBwYXJ0ZGVzYyA9IFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhwYXJl bnQsIGZhbHNlKTsKKwlQYXJ0aXRpb25Cb3VuZEluZm8gYm91bmRpbmZvID0gcGFydGRlc2Mt PmJvdW5kaW5mbzsKKwlpbnQJCQl3aXRoID0gLTE7CisJYm9vbAkJb3ZlcmxhcCA9IGZhbHNl OworCWludAkJCW92ZXJsYXBfbG9jYXRpb24gPSAtMTsKKworCUFzc2VydChrZXktPnN0cmF0 ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUKTsKKwlBc3NlcnQoc3BlYy0+c3RyYXRl Z3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpOworCUFzc2VydChib3VuZGluZm8gJiYg Ym91bmRpbmZvLT5zdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVCk7CisKKwkv KgorCSAqIFNlYXJjaCBlYWNoIHZhbHVlIG9mIG5ldyBwYXJ0aXRpb24gInNwZWMiIGluIGV4 aXN0aW5nIHBhcnRpdGlvbnMuIEFsbAorCSAqIG9mIHRoZW0gc2hvdWxkIGJlIGluIHNwbGl0 IHBhcnRpdGlvbiAod2l0aCBPaWQgc3BsaXRQYXJ0T2lkKS4KKwkgKi8KKwlmb3JlYWNoX25v ZGUoQ29uc3QsIHZhbCwgc3BlYy0+bGlzdGRhdHVtcykKKwl7CisJCW92ZXJsYXBfbG9jYXRp b24gPSB2YWwtPmxvY2F0aW9uOworCQlpZiAoIXZhbC0+Y29uc3Rpc251bGwpCisJCXsKKwkJ CWludAkJCW9mZnNldDsKKwkJCWJvb2wJCWVxdWFsOworCisJCQlvZmZzZXQgPSBwYXJ0aXRp b25fbGlzdF9ic2VhcmNoKCZrZXktPnBhcnRzdXBmdW5jWzBdLAorCQkJCQkJCQkJCQlrZXkt PnBhcnRjb2xsYXRpb24sCisJCQkJCQkJCQkJCWJvdW5kaW5mbywKKwkJCQkJCQkJCQkJdmFs LT5jb25zdHZhbHVlLAorCQkJCQkJCQkJCQkmZXF1YWwpOworCQkJaWYgKG9mZnNldCA+PSAw ICYmIGVxdWFsKQorCQkJeworCQkJCXdpdGggPSBib3VuZGluZm8tPmluZGV4ZXNbb2Zmc2V0 XTsKKwkJCQlpZiAocGFydGRlc2MtPm9pZHNbd2l0aF0gIT0gc3BsaXRQYXJ0T2lkKQorCQkJ CXsKKwkJCQkJb3ZlcmxhcCA9IHRydWU7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJ CWVsc2UKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFM SURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJZXJybXNnKCJuZXcgcGFydGl0aW9uIFwi JXNcIiBjYW5ub3QgaGF2ZSB0aGlzIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGRv ZXMgbm90IGhhdmUiLAorCQkJCQkJCSAgIHJlbG5hbWUpLAorCQkJCQkJcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgb3ZlcmxhcF9sb2NhdGlvbikpOworCQl9CisJCWVsc2UgaWYgKHBh cnRpdGlvbl9ib3VuZF9hY2NlcHRzX251bGxzKGJvdW5kaW5mbykpCisJCXsKKwkJCXdpdGgg PSBib3VuZGluZm8tPm51bGxfaW5kZXg7CisJCQlpZiAocGFydGRlc2MtPm9pZHNbd2l0aF0g IT0gc3BsaXRQYXJ0T2lkKQorCQkJeworCQkJCW92ZXJsYXAgPSB0cnVlOworCQkJCWJyZWFr OworCQkJfQorCQl9CisJCWVsc2UKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUo RVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJZXJybXNnKCJuZXcg cGFydGl0aW9uIFwiJXNcIiBjYW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1c2Ugc3BsaXQg cGFydGl0aW9uIGRvZXMgbm90IGhhdmUiLAorCQkJCQkJICAgcmVsbmFtZSksCisJCQkJCXBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG92ZXJsYXBfbG9jYXRpb24pKTsKKwl9CisKKwlp ZiAob3ZlcmxhcCkKKwl7CisJCUFzc2VydCh3aXRoID49IDApOworCQllcmVwb3J0KEVSUk9S LAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJ CQllcnJtc2coIm5ldyBwYXJ0aXRpb24gXCIlc1wiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90 aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkgICByZWxuYW1lLCBn ZXRfcmVsX25hbWUocGFydGRlc2MtPm9pZHNbd2l0aF0pKSwKKwkJCQlwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBvdmVybGFwX2xvY2F0aW9uKSk7CisJfQorfQorCisvKgorICogZmlu ZF92YWx1ZV9pbl9uZXdfcGFydGl0aW9uc19saXN0CisgKgorICogKGZ1bmN0aW9uIGZvciBC WSBMSVNUIHBhcnRpdGlvbmluZykKKyAqCisgKiBGdW5jdGlvbiByZXR1cm5zIHRydWUgaW4g Y2FzZSBhbnkgb2YgbmV3IHBhcnRpdGlvbnMgY29udGFpbnMgdmFsdWUgInZhbHVlIi4KKyAq CisgKiBwYXJ0c3VwZnVuYzoJCWluZm9ybWF0aW9uIGFib3V0IGNvbXBhcmlzb24gZnVuY3Rp b24gYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXJ0aXRpb24ga2V5CisgKiBwYXJ0Y29sbGF0aW9u OglwYXJ0aXRpb25pbmcgY29sbGF0aW9uCisgKiBwYXJ0czoJCQlwb2ludGVyIHRvIGFycmF5 IHdpdGggbmV3IHBhcnRpdGlvbnMgZGVzY3JpcHRpb25zCisgKiBucGFydHM6CQkJbnVtYmVy IG9mIG5ldyBwYXJ0aXRpb25zCisgKiB2YWx1ZToJCQl0aGUgdmFsdWUgdGhhdCB3ZSBhcmUg bG9va2luZyBmb3IKKyAqIGlzbnVsbDoJCQl0cnVlIGlmIHRoZSB2YWx1ZSB0aGF0IHdlIGFy ZSBsb29raW5nIGZvciBpcyBOVUxMCisgKi8KK3N0YXRpYyBib29sCitmaW5kX3ZhbHVlX2lu X25ld19wYXJ0aXRpb25zX2xpc3QoRm1nckluZm8gKnBhcnRzdXBmdW5jLAorCQkJCQkJCQkg IE9pZCAqcGFydGNvbGxhdGlvbiwKKwkJCQkJCQkJICBTaW5nbGVQYXJ0aXRpb25TcGVjICoq cGFydHMsCisJCQkJCQkJCSAgaW50IG5wYXJ0cywKKwkJCQkJCQkJICBEYXR1bSB2YWx1ZSwK KwkJCQkJCQkJICBib29sIGlzbnVsbCkKK3sKKwlmb3IgKGludCBpID0gMDsgaSA8IG5wYXJ0 czsgaSsrKQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gcGFydHNbaV07CisK KwkJZm9yZWFjaF9ub2RlKENvbnN0LCB2YWwsIHNwcy0+Ym91bmQtPmxpc3RkYXR1bXMpCisJ CXsKKwkJCWlmIChpc251bGwgJiYgdmFsLT5jb25zdGlzbnVsbCkKKwkJCQlyZXR1cm4gdHJ1 ZTsKKworCQkJaWYgKCFpc251bGwgJiYgIXZhbC0+Y29uc3Rpc251bGwpCisJCQl7CisJCQkJ aWYgKERhdHVtR2V0SW50MzIoRnVuY3Rpb25DYWxsMkNvbGwoJnBhcnRzdXBmdW5jWzBdLAor CQkJCQkJCQkJCQkJCXBhcnRjb2xsYXRpb25bMF0sCisJCQkJCQkJCQkJCQkJdmFsLT5jb25z dHZhbHVlLAorCQkJCQkJCQkJCQkJCXZhbHVlKSkgPT0gMCkKKwkJCQkJcmV0dXJuIHRydWU7 CisJCQl9CisJCX0KKwl9CisJcmV0dXJuIGZhbHNlOworfQorCisvKgorICogY2hlY2tfcGFy ZW50X3ZhbHVlc19pbl9uZXdfcGFydGl0aW9ucworICoKKyAqIChmdW5jdGlvbiBmb3IgQlkg TElTVCBwYXJ0aXRpb25pbmcpCisgKgorICogQ2hlY2tzIHRoYXQgYWxsIHZhbHVlcyBvZiBz cGxpdCBwYXJ0aXRpb24gKHdpdGggT2lkIHBhcnRPaWQpIGFyZSBjb250YWluZWQKKyAqIGlu IG5ldyBwYXJ0aXRpb25zLgorICoKKyAqIHBhcmVudDoJcGFydGl0aW9uZWQgdGFibGUKKyAq IHBhcnRPaWQ6CXNwbGl0IHBhcnRpdGlvbiBPaWQKKyAqIHBhcnRzOglwb2ludGVyIHRvIGFy cmF5IHdpdGggbmV3IHBhcnRpdGlvbnMgZGVzY3JpcHRpb25zCisgKiBucGFydHM6CW51bWJl ciBvZiBuZXcgcGFydGl0aW9ucworICogcHN0YXRlOglwb2ludGVyIHRvIFBhcnNlU3RhdGUg c3RydWN0IGZvciBkZXRlcm1pbmUgZXJyb3IgcG9zaXRpb24KKyAqLworc3RhdGljIHZvaWQK K2NoZWNrX3BhcmVudF92YWx1ZXNfaW5fbmV3X3BhcnRpdGlvbnMoUmVsYXRpb24gcGFyZW50 LAorCQkJCQkJCQkJICBPaWQgcGFydE9pZCwKKwkJCQkJCQkJCSAgU2luZ2xlUGFydGl0aW9u U3BlYyAqKnBhcnRzLAorCQkJCQkJCQkJICBpbnQgbnBhcnRzLAorCQkJCQkJCQkJICBQYXJz ZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFy dGl0aW9uS2V5KHBhcmVudCk7CisJUGFydGl0aW9uRGVzYyBwYXJ0ZGVzYyA9IFJlbGF0aW9u R2V0UGFydGl0aW9uRGVzYyhwYXJlbnQsIGZhbHNlKTsKKwlQYXJ0aXRpb25Cb3VuZEluZm8g Ym91bmRpbmZvID0gcGFydGRlc2MtPmJvdW5kaW5mbzsKKwlpbnQJCQlpOworCWJvb2wJCWZv dW5kID0gdHJ1ZTsKKwlib29sCQlzZWFyY2hOdWxsID0gZmFsc2U7CisJRGF0dW0JCWRhdHVt ID0gUG9pbnRlckdldERhdHVtKE5VTEwpOworCisJQXNzZXJ0KGtleS0+c3RyYXRlZ3kgPT0g UEFSVElUSU9OX1NUUkFURUdZX0xJU1QpOworCisJLyoKKwkgKiBTcGVjaWFsIHByb2Nlc3Np bmcgZm9yIE5VTEwgdmFsdWUuIFNlYXJjaCBOVUxMIHZhbHVlIGlmIHRoZSBzcGxpdAorCSAq IHBhcnRpdGlvbiAocGFydE9pZCkgY29udGFpbnMgaXQuCisJICovCisJaWYgKHBhcnRpdGlv bl9ib3VuZF9hY2NlcHRzX251bGxzKGJvdW5kaW5mbykgJiYKKwkJcGFydGRlc2MtPm9pZHNb Ym91bmRpbmZvLT5udWxsX2luZGV4XSA9PSBwYXJ0T2lkKQorCXsKKwkJaWYgKCFmaW5kX3Zh bHVlX2luX25ld19wYXJ0aXRpb25zX2xpc3QoJmtleS0+cGFydHN1cGZ1bmNbMF0sCisJCQkJ CQkJCQkJCSAgIGtleS0+cGFydGNvbGxhdGlvbiwgcGFydHMsIG5wYXJ0cywgZGF0dW0sIHRy dWUpKQorCQl7CisJCQlmb3VuZCA9IGZhbHNlOworCQkJc2VhcmNoTnVsbCA9IHRydWU7CisJ CX0KKwl9CisKKwkvKgorCSAqIFNlYXJjaCBhbGwgdmFsdWVzIG9mIHNwbGl0IHBhcnRpdGlv biB3aXRoIHBhcnRPaWQgaW4gUGFydGl0aW9uRGVzYyBvZgorCSAqIHBhcnRpdGlvbmVkIHRh YmxlLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBib3VuZGluZm8tPm5kYXR1bXM7IGkrKykK Kwl7CisJCWlmIChwYXJ0ZGVzYy0+b2lkc1tib3VuZGluZm8tPmluZGV4ZXNbaV1dID09IHBh cnRPaWQpCisJCXsKKwkJCS8qIFdlIGZvdW5kIHZhbHVlIHRoYXQgc3BsaXQgcGFydGl0aW9u IGNvbnRhaW5zLiAqLworCQkJZGF0dW0gPSBib3VuZGluZm8tPmRhdHVtc1tpXVswXTsKKwkJ CWlmICghZmluZF92YWx1ZV9pbl9uZXdfcGFydGl0aW9uc19saXN0KCZrZXktPnBhcnRzdXBm dW5jWzBdLAorCQkJCQkJCQkJCQkJICAga2V5LT5wYXJ0Y29sbGF0aW9uLCBwYXJ0cywgbnBh cnRzLCBkYXR1bSwgZmFsc2UpKQorCQkJeworCQkJCWZvdW5kID0gZmFsc2U7CisJCQkJYnJl YWs7CisJCQl9CisJCX0KKwl9CisKKwlpZiAoIWZvdW5kKQorCXsKKwkJQ29uc3QJICAgKm5v dEZvdW5kVmFsOworCisJCWlmICghc2VhcmNoTnVsbCkKKworCQkJLyoKKwkJCSAqIE1ha2Ug Q29uc3QgZm9yIGdldHRpbmcgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIG5vdCBmb3VuZAor CQkJICogdmFsdWUuCisJCQkgKi8KKwkJCW5vdEZvdW5kVmFsID0gbWFrZUNvbnN0KGtleS0+ cGFydHR5cGlkWzBdLAorCQkJCQkJCQkJa2V5LT5wYXJ0dHlwbW9kWzBdLAorCQkJCQkJCQkJ a2V5LT5wYXJ0dHlwY29sbFswXSwKKwkJCQkJCQkJCWtleS0+cGFydHR5cGxlblswXSwKKwkJ CQkJCQkJCWRhdHVtLAorCQkJCQkJCQkJZmFsc2UsCS8qIGlzbnVsbCAqLworCQkJCQkJCQkJ a2V5LT5wYXJ0dHlwYnl2YWxbMF0pOworCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCWVycm1zZygibmV3 IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgdmFsdWUgJXMgYnV0IHNwbGl0IHBhcnRpdGlvbiBk b2VzIiwKKwkJCQkJICAgc2VhcmNoTnVsbCA/ICJOVUxMIiA6IGdldF9saXN0X3BhcnR2YWx1 ZV9zdHJpbmcobm90Rm91bmRWYWwpKSk7CisJfQorfQorCisvKgorICogY2hlY2tfcGFydGl0 aW9uc19mb3Jfc3BsaXQKKyAqCisgKiBDaGVja3MgbmV3IHBhcnRpdGlvbnMgZm9yIFNQTElU IFBBUlRJVElPTlMgY29tbWFuZDoKKyAqIDEuIERFRkFVTFQgcGFydGl0aW9uIHNob3VsZCBi ZSBhdCBtb3N0IG9uZS4KKyAqIDIuIE5ldyBwYXJ0aXRpb25zIHNob3VsZCBoYXZlIGRpZmZl cmVudCBuYW1lcworICogICAgKHdpdGggZXhpc3RpbmcgcGFydGl0aW9ucyB0b28pLgorICog My4gQm91bmRzIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcCB3aXRoIG5l dyBhbmQgZXhpc3RpbmcKKyAqICAgIHBhcnRpdGlvbnMuCisgKiA0LiBJbiBjYXNlIHNwbGl0 IHBhcnRpdGlvbiBpcyBERUZBVUxUIHBhcnRpdGlvbiwgb25lIG9mIG5ldyBwYXJ0aXRpb25z CisgKiAgICBzaG91bGQgYmUgREVGQVVMVC4KKyAqIDUuIEluIGNhc2UgbmV3IHBhcnRpdGlv bnMgb3IgZXhpc3RpbmcgcGFydGl0aW9ucyBjb250YWlucyBERUZBVUxUCisgKiAgICBwYXJ0 aXRpb24sIG5ldyBwYXJ0aXRpb25zIGNhbiBoYXZlIGFueSBib3VuZHMgaW5zaWRlIHNwbGl0 CisgKiAgICBwYXJ0aXRpb24gYm91bmQgKGNhbiBiZSBzcGFjZXMgYmV0d2VlbiBwYXJ0aXRp b25zIGJvdW5kcykuCisgKiA2LiBJbiBjYXNlIHBhcnRpdGlvbmVkIHRhYmxlIGRvZXMgbm90 IGhhdmUgREVGQVVMVCBwYXJ0aXRpb24sIERFRkFVTFQKKyAqICAgIHBhcnRpdGlvbiBjYW4g YmUgZGVmaW5lZCBhcyBvbmUgb2YgbmV3IHBhcnRpdGlvbi4KKyAqIDcuIEluIGNhc2UgbmV3 IHBhcnRpdGlvbnMgbm90IGNvbnRhaW5zIERFRkFVTFQgcGFydGl0aW9uIGFuZAorICogICAg cGFydGl0aW9uZWQgdGFibGUgZG9lcyBub3QgaGF2ZSBERUZBVUxUIHBhcnRpdGlvbiB0aGUg Zm9sbG93aW5nCisgKiAgICBzaG91bGQgYmUgdHJ1ZTogc3VtIGJvdW5kcyBvZiBuZXcgcGFy dGl0aW9ucyBzaG91bGQgYmUgZXF1YWwKKyAqICAgIHRvIGJvdW5kIG9mIHNwbGl0IHBhcnRp dGlvbi4KKyAqCisgKiBwYXJlbnQ6CQkJcGFydGl0aW9uZWQgdGFibGUKKyAqIHNwbGl0UGFy dE9pZDoJc3BsaXQgcGFydGl0aW9uIE9pZAorICogbGlzdDoJCQlsaXN0IG9mIG5ldyBwYXJ0 aXRpb25zCisgKiBwc3RhdGU6CQkJcG9pbnRlciB0byBQYXJzZVN0YXRlIHN0cnVjdCBmb3Ig ZGV0ZXJtaW5lIGVycm9yIHBvc2l0aW9uCisgKi8KK3ZvaWQKK2NoZWNrX3BhcnRpdGlvbnNf Zm9yX3NwbGl0KFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCSAgIE9pZCBzcGxpdFBhcnRPaWQs CisJCQkJCQkgICBMaXN0ICpwYXJ0bGlzdCwKKwkJCQkJCSAgIFBhcnNlU3RhdGUgKnBzdGF0 ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5OworCWNoYXIJCXN0cmF0ZWd5OworCU9pZAkJCWRl ZmF1bHRQYXJ0T2lkOworCWJvb2wJCWlzU3BsaXRQYXJ0RGVmYXVsdDsKKwlib29sCQljcmVh dGVEZWZhdWx0UGFydDsKKwlpbnQJCQlkZWZhdWx0X2luZGV4ID0gLTE7CisJaW50CQkJaSwK KwkJCQlqOworCVNpbmdsZVBhcnRpdGlvblNwZWMgKipuZXdfcGFydHM7CisJU2luZ2xlUGFy dGl0aW9uU3BlYyAqc3BzUHJldiA9IE5VTEw7CisJaW50CQkJbnBhcnRzID0gMDsKKworCWtl eSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcmVudCk7CisJc3RyYXRlZ3kgPSBnZXRf cGFydGl0aW9uX3N0cmF0ZWd5KGtleSk7CisKKwlzd2l0Y2ggKHN0cmF0ZWd5KQorCXsKKwkJ Y2FzZSBQQVJUSVRJT05fU1RSQVRFR1lfTElTVDoKKwkJY2FzZSBQQVJUSVRJT05fU1RSQVRF R1lfUkFOR0U6CisJCQl7CisJCQkJLyoKKwkJCQkgKiBNYWtlIGFycmF5IG5ld19wYXJ0cyB3 aXRoIG5ldyBwYXJ0aXRpb25zIGV4Y2VwdCBERUZBVUxUCisJCQkJICogcGFydGl0aW9uLgor CQkJCSAqLworCQkJCW5ld19wYXJ0cyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICoqKQorCQkJ CQlwYWxsb2MwKGxpc3RfbGVuZ3RoKHBhcnRsaXN0KSAqIHNpemVvZihTaW5nbGVQYXJ0aXRp b25TcGVjICopKTsKKwkJCQlpID0gMDsKKwkJCQlmb3JlYWNoX25vZGUoU2luZ2xlUGFydGl0 aW9uU3BlYywgc3BzLCBwYXJ0bGlzdCkKKwkJCQl7CisJCQkJCWlmIChzcHMtPmJvdW5kLT5p c19kZWZhdWx0KQorCQkJCQl7CisJCQkJCQlpZiAoZGVmYXVsdF9pbmRleCA+PSAwKQorCQkJ CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9P QkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJCQllcnJtc2coIkRFRkFVTFQgcGFydGl0aW9u IHNob3VsZCBiZSBvbmUiKSwKKwkJCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUs IHNwcy0+bmFtZS0+bG9jYXRpb24pKTsKKwkJCQkJCWRlZmF1bHRfaW5kZXggPSBpOworCQkJ CQl9CisJCQkJCWVsc2UKKwkJCQkJeworCQkJCQkJbmV3X3BhcnRzW25wYXJ0cysrXSA9IHNw czsKKwkJCQkJfQorCQkJCQlpKys7CisJCQkJfQorCQkJfQorCQkJYnJlYWs7CisKKwkJY2Fz ZSBQQVJUSVRJT05fU1RSQVRFR1lfSEFTSDoKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQllcnJtc2coInBh cnRpdGlvbiBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBzcGxpdCIpKTsK KwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBw YXJ0aXRpb24gc3RyYXRlZ3k6ICVkIiwKKwkJCQkgKGludCkga2V5LT5zdHJhdGVneSk7CisJ CQlicmVhazsKKwl9CisKKwlpZiAoc3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JB TkdFKQorCXsKKwkJUGFydGl0aW9uUmFuZ2VCb3VuZCAqKmxvd2VyX2JvdW5kczsKKwkJU2lu Z2xlUGFydGl0aW9uU3BlYyAqKnRtcF9uZXdfcGFydHM7CisKKwkJLyoKKwkJICogRm9yIHNp bXBsaWZ5IGNoZWNrIGZvciByYW5nZXMgb2YgbmV3IHBhcnRpdGlvbnMgbmVlZCB0byBzb3J0 IGFsbAorCQkgKiBwYXJ0aXRpb25zIGluIGFzY2VuZGluZyBvcmRlciBvZiB0aGVtIGJvdW5k cyAod2UgY29tcGFyZSB1cHBlcgorCQkgKiBib3VuZCBvbmx5KS4KKwkJICovCisJCWxvd2Vy X2JvdW5kcyA9IChQYXJ0aXRpb25SYW5nZUJvdW5kICoqKQorCQkJcGFsbG9jMChucGFydHMg KiBzaXplb2YoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKSk7CisKKwkJLyogQ3JlYXRlIGFycmF5 IG9mIGxvd2VyIGJvdW5kcy4gKi8KKwkJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQor CQl7CisJCQlsb3dlcl9ib3VuZHNbaV0gPSBtYWtlX29uZV9wYXJ0aXRpb25fcmJvdW5kKGtl eSwgaSwKKwkJCQkJCQkJCQkJCQkJbmV3X3BhcnRzW2ldLT5ib3VuZC0+bG93ZXJkYXR1bXMs IHRydWUpOworCQl9CisKKwkJLyogU29ydCBhcnJheSBvZiBsb3dlciBib3VuZHMuICovCisJ CXFzb3J0X2FyZyhsb3dlcl9ib3VuZHMsIG5wYXJ0cywgc2l6ZW9mKFBhcnRpdGlvblJhbmdl Qm91bmQgKiksCisJCQkJICBxc29ydF9wYXJ0aXRpb25fcmJvdW5kX2NtcCwgKHZvaWQgKikg a2V5KTsKKworCQkvKiBSZW9yZGVyIGFycmF5IG9mIHBhcnRpdGlvbnMuICovCisJCXRtcF9u ZXdfcGFydHMgPSBuZXdfcGFydHM7CisJCW5ld19wYXJ0cyA9IChTaW5nbGVQYXJ0aXRpb25T cGVjICoqKQorCQkJcGFsbG9jMChucGFydHMgKiBzaXplb2YoU2luZ2xlUGFydGl0aW9uU3Bl YyAqKSk7CisJCWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykKKwkJCW5ld19wYXJ0c1tp XSA9IHRtcF9uZXdfcGFydHNbbG93ZXJfYm91bmRzW2ldLT5pbmRleF07CisKKwkJcGZyZWUo dG1wX25ld19wYXJ0cyk7CisJCXBmcmVlKGxvd2VyX2JvdW5kcyk7CisJfQorCisJZGVmYXVs dFBhcnRPaWQgPQorCQlnZXRfZGVmYXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlvbkdl dFBhcnRpdGlvbkRlc2MocGFyZW50LCB0cnVlKSk7CisKKwkvKiBpc1NwbGl0UGFydERlZmF1 bHQgZmxhZzogaXMgc3BsaXQgcGFydGl0aW9uIGEgREVGQVVMVCBwYXJ0aXRpb24/ICovCisJ aXNTcGxpdFBhcnREZWZhdWx0ID0gKGRlZmF1bHRQYXJ0T2lkID09IHNwbGl0UGFydE9pZCk7 CisKKwlpZiAoaXNTcGxpdFBhcnREZWZhdWx0ICYmIGRlZmF1bHRfaW5kZXggPCAwKQorCXsK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1Rf REVGSU5JVElPTiksCisJCQkJZXJybXNnKCJvbmUgcGFydGl0aW9uIGluIHRoZSBsaXN0IHNo b3VsZCBiZSBERUZBVUxUIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGlzIERFRkFVTFQiKSwK KwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCAoKFNpbmdsZVBhcnRpdGlvblNwZWMg KikgbGluaXRpYWwocGFydGxpc3QpKS0+bmFtZS0+bG9jYXRpb24pKTsKKwl9CisJZWxzZSBp ZiAoIWlzU3BsaXRQYXJ0RGVmYXVsdCAmJiAoZGVmYXVsdF9pbmRleCA+PSAwKSAmJiBPaWRJ c1ZhbGlkKGRlZmF1bHRQYXJ0T2lkKSkKKwl7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNw c0RlZiA9CisJCQkoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsaXN0X250aChwYXJ0bGlzdCwg ZGVmYXVsdF9pbmRleCk7CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJZXJybXNnKCJuZXcgcGFydGl0 aW9uIGNhbm5vdCBiZSBERUZBVUxUIGJlY2F1c2UgREVGQVVMVCBwYXJ0aXRpb24gYWxyZWFk eSBleGlzdHMiKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBzcHNEZWYtPm5h bWUtPmxvY2F0aW9uKSk7CisJfQorCisJLyogSW5kaWNhdG9yIHRoYXQgdGhlIERFRkFVTFQg cGFydGl0aW9uIHdpbGwgYmUgY3JlYXRlZC4gKi8KKwljcmVhdGVEZWZhdWx0UGFydCA9IChk ZWZhdWx0X2luZGV4ID49IDApOworCisJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQor CXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0gbmV3X3BhcnRzW2ldOworCisJCWlm IChpc1NwbGl0UGFydERlZmF1bHQpCisJCXsKKwkJCS8qCisJCQkgKiBJbiBjYXNlIHNwbGl0 IHBhcnRpdGlvbiBpcyBERUZBVUxUIHBhcnRpdGlvbiB3ZSBjYW4gdXNlIGFueQorCQkJICog ZnJlZSByYW5nZXMgLSBhcyB3aGVuIGNyZWF0aW5nIGEgbmV3IHBhcnRpdGlvbi4KKwkJCSAq LworCQkJY2hlY2tfbmV3X3BhcnRpdGlvbl9ib3VuZChzcHMtPm5hbWUtPnJlbG5hbWUsIHBh cmVudCwgc3BzLT5ib3VuZCwKKwkJCQkJCQkJCSAgcHN0YXRlKTsKKwkJfQorCQllbHNlCisJ CXsKKwkJCS8qCisJCQkgKiBDaGVja3MgdGhhdCBib3VuZCBvZiBjdXJyZW50IHBhcnRpdGlv biBpcyBpbnNpZGUgYm91bmQgb2Ygc3BsaXQKKwkJCSAqIHBhcnRpdGlvbi4gRm9yIHJhbmdl IHBhcnRpdGlvbmluZzogY2hlY2tzIHRoYXQgdXBwZXIgYm91bmQgb2YKKwkJCSAqIHByZXZp b3VzIHBhcnRpdGlvbiBpcyBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBjdXJyZW50CisJCQkg KiBwYXJ0aXRpb24uIEZvciBsaXN0IHBhcnRpdGlvbmluZzogY2hlY2tzIHRoYXQgc3BsaXQg cGFydGl0aW9uCisJCQkgKiBjb250YWlucyBhbGwgdmFsdWVzIG9mIGN1cnJlbnQgcGFydGl0 aW9uLgorCQkJICovCisJCQlpZiAoc3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX1JB TkdFKQorCQkJeworCQkJCWJvb2wJCWZpcnN0ID0gKGkgPT0gMCk7CisJCQkJYm9vbAkJbGFz dCA9IChpID09IChucGFydHMgLSAxKSk7CisKKwkJCQljaGVja19wYXJ0aXRpb25fYm91bmRz X2Zvcl9zcGxpdF9yYW5nZShwYXJlbnQsIHNwcy0+bmFtZS0+cmVsbmFtZSwgc3BzLT5ib3Vu ZCwKKwkJCQkJCQkJCQkJCQkgICBzcGxpdFBhcnRPaWQsIGZpcnN0LCBsYXN0LAorCQkJCQkJ CQkJCQkJCSAgIGNyZWF0ZURlZmF1bHRQYXJ0LCBwc3RhdGUpOworCQkJfQorCQkJZWxzZQor CQkJCWNoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0X2xpc3QocGFyZW50LCBzcHMt Pm5hbWUtPnJlbG5hbWUsCisJCQkJCQkJCQkJCQkJICBzcHMtPmJvdW5kLCBzcGxpdFBhcnRP aWQsIHBzdGF0ZSk7CisJCX0KKworCQkvKiBSYW5nZXMgb2YgbmV3IHBhcnRpdGlvbnMgc2hv dWxkIG5vdCBvdmVybGFwLiAqLworCQlpZiAoc3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFU RUdZX1JBTkdFICYmIHNwc1ByZXYpCisJCQljaGVja190d29fcGFydGl0aW9uc19ib3VuZHNf cmFuZ2UocGFyZW50LCBzcHNQcmV2LT5uYW1lLCBzcHNQcmV2LT5ib3VuZCwKKwkJCQkJCQkJ CQkJICBzcHMtPm5hbWUsIHNwcy0+Ym91bmQsCisJCQkJCQkJCQkJCSAgY3JlYXRlRGVmYXVs dFBhcnQsCisJCQkJCQkJCQkJCSAgZmFsc2UsCisJCQkJCQkJCQkJCSAgcHN0YXRlKTsKKwor CQlzcHNQcmV2ID0gc3BzOworCisJCS8qIENoZWNrOiBuZXcgcGFydGl0aW9ucyBzaG91bGQg aGF2ZSBkaWZmZXJlbnQgbmFtZXMuICovCisJCWZvciAoaiA9IGkgKyAxOyBqIDwgbnBhcnRz OyBqKyspCisJCXsKKwkJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwczIgPSBuZXdfcGFydHNb al07CisJCQlib29sCQlyZXN1bHQgPSBmYWxzZTsKKworCQkJLyoKKwkJCSAqIE5lZWQgdG8g Y29tcGFyZSBuYW1lc3BhY2VzPyBPbmUgb2YgdGhlIHNjaGVtYSBuYW1lcyBtYXkgYmUKKwkJ CSAqIHVuZGVmaW5lZCwgYnV0IHRoZSBzY2hlbWFzIG1heSBzdGlsbCBiZSBlcXVhbC4KKwkJ CSAqLworCQkJaWYgKChzcHMtPm5hbWUtPnNjaGVtYW5hbWUgJiYgIXNwczItPm5hbWUtPnNj aGVtYW5hbWUpIHx8CisJCQkJKCFzcHMtPm5hbWUtPnNjaGVtYW5hbWUgJiYgc3BzMi0+bmFt ZS0+c2NoZW1hbmFtZSkpCisJCQl7CisJCQkJT2lkCQkJbnNwaWQgPSBSYW5nZVZhckdldENy ZWF0aW9uTmFtZXNwYWNlKHNwcy0+bmFtZSk7CisJCQkJT2lkCQkJbnNwaWQyID0gUmFuZ2VW YXJHZXRDcmVhdGlvbk5hbWVzcGFjZShzcHMyLT5uYW1lKTsKKworCQkJCWlmIChuc3BpZCA9 PSBuc3BpZDIpCisJCQkJCXJlc3VsdCA9IChzdHJjbXAoc3BzLT5uYW1lLT5yZWxuYW1lLCBz cHMyLT5uYW1lLT5yZWxuYW1lKSA9PSAwKTsKKwkJCX0KKwkJCWVsc2UKKwkJCQlyZXN1bHQg PSBlcXVhbChzcHMtPm5hbWUsIHNwczItPm5hbWUpOworCisJCQlpZiAocmVzdWx0KQorCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxF KSwKKwkJCQkJCWVycm1zZygibmFtZSBcIiVzXCIgaXMgYWxyZWFkeSB1c2VkIiwgc3BzMi0+ bmFtZS0+cmVsbmFtZSksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBzcHMy LT5uYW1lLT5sb2NhdGlvbikpOworCQl9CisJfQorCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJ VElPTl9TVFJBVEVHWV9MSVNUKQorCXsKKwkJLyogVmFsdWVzIG9mIG5ldyBwYXJ0aXRpb25z IHNob3VsZCBub3Qgb3ZlcmxhcC4gKi8KKwkJY2hlY2tfcGFydGl0aW9uc19ub3Rfb3Zlcmxh cF9saXN0KHBhcmVudCwgbmV3X3BhcnRzLCBucGFydHMsCisJCQkJCQkJCQkJICBwc3RhdGUp OworCisJCS8qCisJCSAqIE5lZWQgdG8gY2hlY2sgdGhhdCBhbGwgdmFsdWVzIG9mIHNwbGl0 IHBhcnRpdGlvbiBjb250YWlucyBpbiBuZXcKKwkJICogcGFydGl0aW9ucy4gU2tpcCB0aGlz IGNoZWNrIGlmIERFRkFVTFQgcGFydGl0aW9uIGV4aXN0cy4KKwkJICovCisJCWlmICghY3Jl YXRlRGVmYXVsdFBhcnQpCisJCQljaGVja19wYXJlbnRfdmFsdWVzX2luX25ld19wYXJ0aXRp b25zKHBhcmVudCwgc3BsaXRQYXJ0T2lkLAorCQkJCQkJCQkJCQkJICBuZXdfcGFydHMsIG5w YXJ0cywgcHN0YXRlKTsKKwl9CisKKwlwZnJlZShuZXdfcGFydHMpOworfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDNkNmU2YmRiZmQuLjNlMTY4OWIxMTggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTEzNzA3LDMgKzEzNzA3LDIxIEBAIGdl dF9yYW5nZV9wYXJ0Ym91bmRfc3RyaW5nKExpc3QgKmJvdW5kX2RhdHVtcykKIAogCXJldHVy biBidWYtPmRhdGE7CiB9CisKKy8qCisgKiBnZXRfbGlzdF9wYXJ0dmFsdWVfc3RyaW5nCisg KgkJQSBDIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBvbmUgbGlzdCBwYXJ0aXRpb24gdmFs dWUKKyAqLworY2hhciAqCitnZXRfbGlzdF9wYXJ0dmFsdWVfc3RyaW5nKENvbnN0ICp2YWwp Cit7CisJZGVwYXJzZV9jb250ZXh0IGNvbnRleHQ7CisJU3RyaW5nSW5mbwlidWYgPSBtYWtl U3RyaW5nSW5mbygpOworCisJbWVtc2V0KCZjb250ZXh0LCAwLCBzaXplb2YoZGVwYXJzZV9j b250ZXh0KSk7CisJY29udGV4dC5idWYgPSBidWY7CisKKwlnZXRfY29uc3RfZXhwcih2YWws ICZjb250ZXh0LCAtMSk7CisKKwlyZXR1cm4gYnVmLT5kYXRhOworfQpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21w bGV0ZS5pbi5jCmluZGV4IDNlYzAzM2Q4ZDguLmEwNDk1M2U1MTEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmluLmMKQEAgLTI3NTAsNyArMjc1MCw3IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRz KGludCBwYXR0ZXJuX2lkLAogCQkJCQkgICJPV05FUiBUTyIsICJTRVQiLCAiVkFMSURBVEUg Q09OU1RSQUlOVCIsCiAJCQkJCSAgIlJFUExJQ0EgSURFTlRJVFkiLCAiQVRUQUNIIFBBUlRJ VElPTiIsCiAJCQkJCSAgIkRFVEFDSCBQQVJUSVRJT04iLCAiRk9SQ0UgUk9XIExFVkVMIFNF Q1VSSVRZIiwKLQkJCQkJICAiTUVSR0UgUEFSVElUSU9OUyAoIiwKKwkJCQkJICAiU1BMSVQg UEFSVElUSU9OIiwgIk1FUkdFIFBBUlRJVElPTlMgKCIsCiAJCQkJCSAgIk9GIiwgIk5PVCBP RiIpOwogCS8qIEFMVEVSIFRBQkxFIHh4eCBBREQgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJB TFRFUiIsICJUQUJMRSIsIE1hdGNoQW55LCAiQUREIikpCkBAIC0zMDEzLDEwICszMDEzLDEw IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCQlDT01QTEVURV9X SVRIKCJGUk9NICgiLCAiSU4gKCIsICJXSVRIICgiKTsKIAogCS8qCi0JICogSWYgd2UgaGF2 ZSBBTFRFUiBUQUJMRSA8Zm9vPiBERVRBQ0ggUEFSVElUSU9OLCBwcm92aWRlIGEgbGlzdCBv ZgorCSAqIElmIHdlIGhhdmUgQUxURVIgVEFCTEUgPGZvbz4gREVUQUNIfFNQTElUIFBBUlRJ VElPTiwgcHJvdmlkZSBhIGxpc3Qgb2YKIAkgKiBwYXJ0aXRpb25zIG9mIDxmb28+LgogCSAq LwotCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJERVRB Q0giLCAiUEFSVElUSU9OIikpCisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUi LCBNYXRjaEFueSwgIkRFVEFDSHxTUExJVCIsICJQQVJUSVRJT04iKSkKIAl7CiAJCXNldF9j b21wbGV0aW9uX3JlZmVyZW5jZShwcmV2M193ZCk7CiAJCUNPTVBMRVRFX1dJVEhfU0NIRU1B X1FVRVJZKFF1ZXJ5X2Zvcl9wYXJ0aXRpb25fb2ZfdGFibGUpOwpAQCAtMzAyNCw2ICszMDI0 LDEwIEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCWVsc2UgaWYg KE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hBbnksICJERVRBQ0giLCAiUEFSVElU SU9OIiwgTWF0Y2hBbnkpKQogCQlDT01QTEVURV9XSVRIKCJDT05DVVJSRU5UTFkiLCAiRklO QUxJWkUiKTsKIAorCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBTUExJVCBQQVJUSVRJT04gPG5h bWU+ICovCisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEUiLCBNYXRjaEFueSwg IlNQTElUIiwgIlBBUlRJVElPTiIsIE1hdGNoQW55KSkKKwkJQ09NUExFVEVfV0lUSCgiSU5U TyAoIFBBUlRJVElPTiIpOworCiAJLyogQUxURVIgVEFCTEUgPG5hbWU+IE1FUkdFIFBBUlRJ VElPTlMgKCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlRBQkxFIiwgTWF0Y2hB bnksICJNRVJHRSIsICJQQVJUSVRJT05TIiwgIigiKSkKIAl7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmgKaW5kZXggYjFiMzMxNWZlNS4uNWM5YmU4NDgzZiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaApAQCAtOTYzLDE3ICs5NjMsMjkgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9u UmFuZ2VEYXR1bQogCVBhcnNlTG9jCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9y IC0xIGlmIHVua25vd24gKi8KIH0gUGFydGl0aW9uUmFuZ2VEYXR1bTsKIAorLyoKKyAqIFBh cnRpdGlvbkRlc2MgLSBpbmZvIGFib3V0IHNpbmdsZSBwYXJ0aXRpb24gZm9yIEFMVEVSIFRB QkxFIFNQTElUIFBBUlRJVElPTiBjb21tYW5kCisgKi8KK3R5cGVkZWYgc3RydWN0IFNpbmds ZVBhcnRpdGlvblNwZWMKK3sKKwlOb2RlVGFnCQl0eXBlOworCisJUmFuZ2VWYXIgICAqbmFt ZTsJCQkvKiBuYW1lIG9mIHBhcnRpdGlvbiAqLworCVBhcnRpdGlvbkJvdW5kU3BlYyAqYm91 bmQ7CS8qIEZPUiBWQUxVRVMsIGlmIGF0dGFjaGluZyAqLworfSBTaW5nbGVQYXJ0aXRpb25T cGVjOworCiAvKgogICogUGFydGl0aW9uQ21kIC0gaW5mbyBmb3IgQUxURVIgVEFCTEUvSU5E RVggQVRUQUNIL0RFVEFDSCBQQVJUSVRJT04gYW5kIGZvcgotICoJICBBTFRFUiBUQUJMRSBN RVJHRSBQQVJUSVRJT05TIGNvbW1hbmRzCisgKgkgIEFMVEVSIFRBQkxFIFNQTElUL01FUkdF IFBBUlRJVElPTihTKSBjb21tYW5kcwogICovCiB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25D bWQKIHsKIAlOb2RlVGFnCQl0eXBlOwotCVJhbmdlVmFyICAgKm5hbWU7CQkJLyogbmFtZSBv ZiBwYXJ0aXRpb24gdG8gYXR0YWNoL2RldGFjaC9tZXJnZSAqLworCVJhbmdlVmFyICAgKm5h bWU7CQkJLyogbmFtZSBvZiBwYXJ0aXRpb24gdG8KKwkJCQkJCQkJICogYXR0YWNoL2RldGFj aC9tZXJnZS9zcGxpdCAqLwogCVBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQ7CS8qIEZPUiBW QUxVRVMsIGlmIGF0dGFjaGluZyAqLwotCUxpc3QJICAgKnBhcnRsaXN0OwkJLyogbGlzdCBv ZiBwYXJ0aXRpb25zIHRvIGJlIG1lcmdlZCwgdXNlZCBpbgotCQkJCQkJCQkgKiBBTFRFUiBU QUJMRSBNRVJHRSBQQVJUSVRJT05TICovCisJTGlzdAkgICAqcGFydGxpc3Q7CQkvKiBsaXN0 IG9mIHBhcnRpdGlvbnMgdG8gYmUgc3BsaXQvbWVyZ2VkLCB1c2VkCisJCQkJCQkJCSAqIGlu IEFMVEVSIFRBQkxFIFNQTElUL01FUkdFIFBBUlRJVElPTihTKSAqLwogCWJvb2wJCWNvbmN1 cnJlbnQ7CiB9IFBhcnRpdGlvbkNtZDsKIApAQCAtMjQ3Niw2ICsyNDg4LDcgQEAgdHlwZWRl ZiBlbnVtIEFsdGVyVGFibGVUeXBlCiAJQVRfQXR0YWNoUGFydGl0aW9uLAkJCS8qIEFUVEFD SCBQQVJUSVRJT04gKi8KIAlBVF9EZXRhY2hQYXJ0aXRpb24sCQkJLyogREVUQUNIIFBBUlRJ VElPTiAqLwogCUFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplLCAvKiBERVRBQ0ggUEFSVElU SU9OIEZJTkFMSVpFICovCisJQVRfU3BsaXRQYXJ0aXRpb24sCQkJLyogU1BMSVQgUEFSVElU SU9OICovCiAJQVRfTWVyZ2VQYXJ0aXRpb25zLAkJCS8qIE1FUkdFIFBBUlRJVElPTlMgKi8K IAlBVF9BZGRJZGVudGl0eSwJCQkJLyogQUREIElERU5USVRZICovCiAJQVRfU2V0SWRlbnRp dHksCQkJCS8qIFNFVCBpZGVudGl0eSBjb2x1bW4gb3B0aW9ucyAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlz dC5oCmluZGV4IDkwZThjZGRmOGIuLjY2Yzg4NzY2NTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgK QEAgLTQyMSw2ICs0MjEsNyBAQCBQR19LRVlXT1JEKCJzbWFsbGludCIsIFNNQUxMSU5ULCBD T0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic25hcHNob3QiLCBT TkFQU0hPVCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi c29tZSIsIFNPTUUsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJzb3VyY2UiLCBTT1VSQ0UsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BH X0tFWVdPUkQoInNwbGl0IiwgU1BMSVQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoInNxbCIsIFNRTF9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJzdGFibGUiLCBTVEFCTEUsIFVOUkVTRVJWRURfS0VZV09S RCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN0YW5kYWxvbmUiLCBTVEFOREFMT05FX1As IFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmggYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25p bmcvcGFydGJvdW5kcy5oCmluZGV4IGY2ZmMxMGQzNDMuLjhiNTBlZGJlZTYgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaApAQCAtMTQzLDYgKzE0MywxMCBAQCBl eHRlcm4gaW50CXBhcnRpdGlvbl9yYW5nZV9kYXR1bV9ic2VhcmNoKEZtZ3JJbmZvICpwYXJ0 c3VwZnVuYywKIGV4dGVybiBpbnQJcGFydGl0aW9uX2hhc2hfYnNlYXJjaChQYXJ0aXRpb25C b3VuZEluZm8gYm91bmRpbmZvLAogCQkJCQkJCQkgICBpbnQgbW9kdWx1cywgaW50IHJlbWFp bmRlcik7CiAKK2V4dGVybiB2b2lkIGNoZWNrX3BhcnRpdGlvbnNfZm9yX3NwbGl0KFJlbGF0 aW9uIHBhcmVudCwKKwkJCQkJCQkJCSAgIE9pZCBzcGxpdFBhcnRPaWQsCisJCQkJCQkJCQkg ICBMaXN0ICpwYXJ0bGlzdCwKKwkJCQkJCQkJCSAgIFBhcnNlU3RhdGUgKnBzdGF0ZSk7CiBl eHRlcm4gdm9pZCBjYWxjdWxhdGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZShSZWxhdGlv biBwYXJlbnQsCiAJCQkJCQkJCQkJCQlMaXN0ICpwYXJ0TmFtZXMsCiAJCQkJCQkJCQkJCQlM aXN0ICpwYXJ0T2lkcywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGls cy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgKaW5kZXggN2JhN2Q4ODc5MS4u NzI2ZTQxODE5MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgK KysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgKQEAgLTU0LDQgKzU0LDYgQEAg ZXh0ZXJuIGNoYXIgKmdldF9yYW5nZV9wYXJ0Ym91bmRfc3RyaW5nKExpc3QgKmJvdW5kX2Rh dHVtcyk7CiAKIGV4dGVybiBjaGFyICpwZ19nZXRfc3RhdGlzdGljc29iamRlZl9zdHJpbmco T2lkIHN0YXRleHRpZCk7CiAKK2V4dGVybiBjaGFyICpnZXRfbGlzdF9wYXJ0dmFsdWVfc3Ry aW5nKENvbnN0ICp2YWwpOworCiAjZW5kaWYJCQkJCQkJLyogUlVMRVVUSUxTX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tc3BsaXQu b3V0IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3BhcnRpdGlvbi1zcGxpdC5vdXQK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMDJhNWJiNGYxZgotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24t c3BsaXQub3V0CkBAIC0wLDAgKzEsMjMwIEBACitQYXJzZWQgdGVzdCBzcGVjIHdpdGggMiBz ZXNzaW9ucworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFiIHMxc3BsdCBzMmIgczJpIHMx YyBzMmMgczJzCitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUg dHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJ T04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQ QVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7Citz dGVwIHMyYjogQkVHSU47CitzdGVwIHMyaTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgx LCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMy aTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVD VCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6 cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAg IAorLS0tLS0tLS0tLS0tLSstLSstLS0tLS0KK3RwYXJ0XzAwXzEwICB8IDF8dGV4dDAxCit0 cGFydF8wMF8xMCAgfCA1fHRleHQwNQordHBhcnRfMTVfMjAgIHwxNXx0ZXh0MTUKK3RwYXJ0 XzIwXzMwICB8MjV8dGV4dDI1Cit0cGFydF9kZWZhdWx0fDM1fHRleHQzNQorKDUgcm93cykK KworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFiIHMxc3BsdCBzMmJyciBzMmkgczFjIHMy YyBzMnMKK3N0ZXAgczFiOiBCRUdJTjsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFy dCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0 cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJ VElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAg czJicnI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMy aTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4u Lj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVw IHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICog RlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAi QyIsIGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgIAorLS0tLS0tLS0tLS0tLSstLSstLS0t LS0KK3RwYXJ0XzAwXzEwICB8IDF8dGV4dDAxCit0cGFydF8wMF8xMCAgfCA1fHRleHQwNQor dHBhcnRfMTVfMjAgIHwxNXx0ZXh0MTUKK3RwYXJ0XzIwXzMwICB8MjV8dGV4dDI1Cit0cGFy dF9kZWZhdWx0fDM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlv bjogczFiIHMxc3BsdCBzMmJzIHMyaSBzMWMgczJjIHMycworc3RlcCBzMWI6IEJFR0lOOwor c3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8x MF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJP TSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxV RVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmJzOiBCRUdJTiBJU09MQVRJT04gTEVW RUwgU0VSSUFMSVpBQkxFOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAo MSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBz Mmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxF Q1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdHBhcnQgT1JERVIgQlkgdGFibGVvaWQ6 OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBpOwordGFibGVvaWQgICAgIHwgaXx0ICAg ICAKKy0tLS0tLS0tLS0tLS0rLS0rLS0tLS0tCit0cGFydF8wMF8xMCAgfCAxfHRleHQwMQor dHBhcnRfMDBfMTAgIHwgNXx0ZXh0MDUKK3RwYXJ0XzE1XzIwICB8MTV8dGV4dDE1Cit0cGFy dF8yMF8zMCAgfDI1fHRleHQyNQordHBhcnRfZGVmYXVsdHwzNXx0ZXh0MzUKKyg1IHJvd3Mp CisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxYnJyIHMxc3BsdCBzMmIgczJpIHMxYyBz MmMgczJzCitzdGVwIHMxYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBS RUFEOworc3RlcCBzMXNwbHQ6IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0 cGFydF8xMF8yMCBJTlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxV RVMgRlJPTSAoMTApIFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZP UiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworc3RlcCBzMmI6IEJFR0lOOworc3RlcCBz Mmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAu Li4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3Rl cCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAq IEZST00gdHBhcnQgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUg IkMiLCBpOwordGFibGVvaWQgICAgIHwgaXx0ICAgICAKKy0tLS0tLS0tLS0tLS0rLS0rLS0t LS0tCit0cGFydF8wMF8xMCAgfCAxfHRleHQwMQordHBhcnRfMDBfMTAgIHwgNXx0ZXh0MDUK K3RwYXJ0XzE1XzIwICB8MTV8dGV4dDE1Cit0cGFydF8yMF8zMCAgfDI1fHRleHQyNQordHBh cnRfZGVmYXVsdHwzNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRp b246IHMxYnJyIHMxc3BsdCBzMmJyciBzMmkgczFjIHMyYyBzMnMKK3N0ZXAgczFicnI6IEJF R0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CitzdGVwIHMxc3BsdDogQUxU RVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAg IChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwK KwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8g KDIwKSk7CitzdGVwIHMyYnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBS RUFEOworc3RlcCBzMmk6IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScp OyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29t cGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgdGFibGVvaWQ6 OnJlZ2NsYXNzLCAqIEZST00gdHBhcnQgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0 ZXh0IENPTExBVEUgIkMiLCBpOwordGFibGVvaWQgICAgIHwgaXx0ICAgICAKKy0tLS0tLS0t LS0tLS0rLS0rLS0tLS0tCit0cGFydF8wMF8xMCAgfCAxfHRleHQwMQordHBhcnRfMDBfMTAg IHwgNXx0ZXh0MDUKK3RwYXJ0XzE1XzIwICB8MTV8dGV4dDE1Cit0cGFydF8yMF8zMCAgfDI1 fHRleHQyNQordHBhcnRfZGVmYXVsdHwzNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRp bmcgcGVybXV0YXRpb246IHMxYnJyIHMxc3BsdCBzMmJzIHMyaSBzMWMgczJjIHMycworc3Rl cCBzMWJycjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsKK3N0ZXAg czFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAg SU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEw KSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZS T00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJiczogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNF UklBTElaQUJMRTsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0 ZXh0MDEnKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJpOiA8 Li4uIGNvbXBsZXRlZD4KK3N0ZXAgczJjOiBDT01NSVQ7CitzdGVwIHMyczogU0VMRUNUIHRh Ymxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHRwYXJ0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdj bGFzczo6dGV4dCBDT0xMQVRFICJDIiwgaTsKK3RhYmxlb2lkICAgICB8IGl8dCAgICAgCist LS0tLS0tLS0tLS0tKy0tKy0tLS0tLQordHBhcnRfMDBfMTAgIHwgMXx0ZXh0MDEKK3RwYXJ0 XzAwXzEwICB8IDV8dGV4dDA1Cit0cGFydF8xNV8yMCAgfDE1fHRleHQxNQordHBhcnRfMjBf MzAgIHwyNXx0ZXh0MjUKK3RwYXJ0X2RlZmF1bHR8MzV8dGV4dDM1CisoNSByb3dzKQorCisK K3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWJzIHMxc3BsdCBzMmIgczJpIHMxYyBzMmMgczJz CitzdGVwIHMxYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVw IHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIw IElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgx MCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBG Uk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMyaTogSU5TRVJU IElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09N TUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFy dCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0 YWJsZW9pZCAgICAgfCBpfHQgICAgIAorLS0tLS0tLS0tLS0tLSstLSstLS0tLS0KK3RwYXJ0 XzAwXzEwICB8IDF8dGV4dDAxCit0cGFydF8wMF8xMCAgfCA1fHRleHQwNQordHBhcnRfMTVf MjAgIHwxNXx0ZXh0MTUKK3RwYXJ0XzIwXzMwICB8MjV8dGV4dDI1Cit0cGFydF9kZWZhdWx0 fDM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFicyBz MXNwbHQgczJicnIgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYnM6IEJFR0lOIElTT0xBVElP TiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQg U1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBh cnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJ T04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMy YnJyOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworc3RlcCBzMmk6 IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwgJ3RleHQwMScpOyA8d2FpdGluZyAuLi4+ CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxldGVkPgorc3RlcCBz MmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZS T00gdHBhcnQgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMi LCBpOwordGFibGVvaWQgICAgIHwgaXx0ICAgICAKKy0tLS0tLS0tLS0tLS0rLS0rLS0tLS0t Cit0cGFydF8wMF8xMCAgfCAxfHRleHQwMQordHBhcnRfMDBfMTAgIHwgNXx0ZXh0MDUKK3Rw YXJ0XzE1XzIwICB8MTV8dGV4dDE1Cit0cGFydF8yMF8zMCAgfDI1fHRleHQyNQordHBhcnRf ZGVmYXVsdHwzNXx0ZXh0MzUKKyg1IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246 IHMxYnMgczFzcGx0IHMyYnMgczJpIHMxYyBzMmMgczJzCitzdGVwIHMxYnM6IEJFR0lOIElT T0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUg dHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJ T04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQ QVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7Citz dGVwIHMyYnM6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBTRVJJQUxJWkFCTEU7CitzdGVwIHMy aTogSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgxLCAndGV4dDAxJyk7IDx3YWl0aW5nIC4u Lj4KK3N0ZXAgczFjOiBDT01NSVQ7CitzdGVwIHMyaTogPC4uLiBjb21wbGV0ZWQ+CitzdGVw IHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICog RlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAi QyIsIGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgIAorLS0tLS0tLS0tLS0tLSstLSstLS0t LS0KK3RwYXJ0XzAwXzEwICB8IDF8dGV4dDAxCit0cGFydF8wMF8xMCAgfCA1fHRleHQwNQor dHBhcnRfMTVfMjAgIHwxNXx0ZXh0MTUKK3RwYXJ0XzIwXzMwICB8MjV8dGV4dDI1Cit0cGFy dF9kZWZhdWx0fDM1fHRleHQzNQorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlv bjogczFiIHMxc3BsdCBzMmIgczJ1IHMxYyBzMmMgczJzCitzdGVwIHMxYjogQkVHSU47Citz dGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BMSVQgUEFSVElUSU9OIHRwYXJ0XzEw XzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRfMTBfMTUgRk9SIFZBTFVFUyBGUk9N ICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04gdHBhcnRfMTVfMjAgRk9SIFZBTFVF UyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYjogQkVHSU47CitzdGVwIHMydTogVVBE QVRFIHRwYXJ0IFNFVCBpID0gMTYgd2hlcmUgaSA9IDU7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czFjOiBDT01NSVQ7CitzdGVwIHMydTogPC4uLiBjb21wbGV0ZWQ+CitzdGVwIHMyYzogQ09N TUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0cGFy dCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0 YWJsZW9pZCAgICAgfCBpfHQgICAgIAorLS0tLS0tLS0tLS0tLSstLSstLS0tLS0KK3RwYXJ0 XzE1XzIwICB8MTV8dGV4dDE1Cit0cGFydF8xNV8yMCAgfDE2fHRleHQwNQordHBhcnRfMjBf MzAgIHwyNXx0ZXh0MjUKK3RwYXJ0X2RlZmF1bHR8MzV8dGV4dDM1CisoNCByb3dzKQorCisK K3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWIgczFzcGx0IHMyYiBzMnUyIHMxYyBzMmMgczJz CitzdGVwIHMxYjogQkVHSU47CitzdGVwIHMxc3BsdDogQUxURVIgVEFCTEUgdHBhcnQgU1BM SVQgUEFSVElUSU9OIHRwYXJ0XzEwXzIwIElOVE8KKwkJCSAgIChQQVJUSVRJT04gdHBhcnRf MTBfMTUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KSwKKwkJCSAgICBQQVJUSVRJT04g dHBhcnRfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CitzdGVwIHMyYjog QkVHSU47CitzdGVwIHMydTI6IFVQREFURSB0cGFydCBTRVQgaSA9IDExIHdoZXJlIGkgPSAx NTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMWM6IENPTU1JVDsKK3N0ZXAgczJ1MjogPC4uLiBj b21wbGV0ZWQ+CitzdGVwIHMyYzogQ09NTUlUOworc3RlcCBzMnM6IFNFTEVDVCB0YWJsZW9p ZDo6cmVnY2xhc3MsICogRlJPTSB0cGFydCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6 OnRleHQgQ09MTEFURSAiQyIsIGk7Cit0YWJsZW9pZCAgICAgfCBpfHQgICAgIAorLS0tLS0t LS0tLS0tLSstLSstLS0tLS0KK3RwYXJ0XzAwXzEwICB8IDV8dGV4dDA1Cit0cGFydF8xMF8x NSAgfDExfHRleHQxNQordHBhcnRfMjBfMzAgIHwyNXx0ZXh0MjUKK3RwYXJ0X2RlZmF1bHR8 MzV8dGV4dDM1CisoNCByb3dzKQorCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24v aXNvbGF0aW9uX3NjaGVkdWxlIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hl ZHVsZQppbmRleCA4NTQxNTQ2Njc4Li44NTAzZGQ4MDFhIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlv bi9pc29sYXRpb25fc2NoZWR1bGUKQEAgLTExMSw2ICsxMTEsNyBAQCB0ZXN0OiBwYXJ0aXRp b24ta2V5LXVwZGF0ZS0yCiB0ZXN0OiBwYXJ0aXRpb24ta2V5LXVwZGF0ZS0zCiB0ZXN0OiBw YXJ0aXRpb24ta2V5LXVwZGF0ZS00CiB0ZXN0OiBwYXJ0aXRpb24tbWVyZ2UKK3Rlc3Q6IHBh cnRpdGlvbi1zcGxpdAogdGVzdDogcGxwZ3NxbC10b2FzdAogdGVzdDogY2x1c3Rlci1jb25m bGljdAogdGVzdDogY2x1c3Rlci1jb25mbGljdC1wYXJ0aXRpb24KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tc3BsaXQuc3BlYyBiL3NyYy90ZXN0 L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tc3BsaXQuc3BlYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi5hZjk1NGJlNWRjCi0tLSAvZGV2L251bGwKKysrIGIv c3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL3BhcnRpdGlvbi1zcGxpdC5zcGVjCkBAIC0wLDAg KzEsNjIgQEAKKyMgVmVyaWZ5IHRoYXQgU1BMSVQgb3BlcmF0aW9uIGxvY2tzIERNTCBvcGVy YXRpb25zIHdpdGggcGFydGl0aW9uZWQgdGFibGUKKworc2V0dXAKK3sKKyAgRFJPUCBUQUJM RSBJRiBFWElTVFMgdHBhcnQ7CisgIENSRUFURSBUQUJMRSB0cGFydChpIGludCwgdCB0ZXh0 KSBwYXJ0aXRpb24gYnkgcmFuZ2UoaSk7CisgIENSRUFURSBUQUJMRSB0cGFydF8wMF8xMCBQ QVJUSVRJT04gT0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTApOworICBDUkVB VEUgVEFCTEUgdHBhcnRfMTBfMjAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMgRlJP TSAoMTApIFRPICgyMCk7CisgIENSRUFURSBUQUJMRSB0cGFydF8yMF8zMCBQQVJUSVRJT04g T0YgdHBhcnQgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKTsKKyAgQ1JFQVRFIFRBQkxF IHRwYXJ0X2RlZmF1bHQgUEFSVElUSU9OIE9GIHRwYXJ0IERFRkFVTFQ7CisgIElOU0VSVCBJ TlRPIHRwYXJ0IFZBTFVFUyAoNSwgJ3RleHQwNScpOworICBJTlNFUlQgSU5UTyB0cGFydCBW QUxVRVMgKDE1LCAndGV4dDE1Jyk7CisgIElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMjUs ICd0ZXh0MjUnKTsKKyAgSU5TRVJUIElOVE8gdHBhcnQgVkFMVUVTICgzNSwgJ3RleHQzNScp OworfQorCit0ZWFyZG93bgoreworICBEUk9QIFRBQkxFIHRwYXJ0OworfQorCitzZXNzaW9u IHMxCitzdGVwIHMxYgl7IEJFR0lOOyB9CitzdGVwIHMxYnJyCXsgQkVHSU4gSVNPTEFUSU9O IExFVkVMIFJFUEVBVEFCTEUgUkVBRDsgfQorc3RlcCBzMWJzCXsgQkVHSU4gSVNPTEFUSU9O IExFVkVMIFNFUklBTElaQUJMRTsgfQorc3RlcCBzMXNwbHQJeyBBTFRFUiBUQUJMRSB0cGFy dCBTUExJVCBQQVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0 cGFydF8xMF8xNSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJ VElPTiB0cGFydF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsgfQorc3Rl cCBzMWMJeyBDT01NSVQ7IH0KKworCitzZXNzaW9uIHMyCitzdGVwIHMyYgl7IEJFR0lOOyB9 CitzdGVwIHMyYnJyCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsg fQorc3RlcCBzMmJzCXsgQkVHSU4gSVNPTEFUSU9OIExFVkVMIFNFUklBTElaQUJMRTsgfQor c3RlcCBzMmkJeyBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MDEnKTsgfQor c3RlcCBzMmMJeyBDT01NSVQ7IH0KK3N0ZXAgczJzCXsgU0VMRUNUIHRhYmxlb2lkOjpyZWdj bGFzcywgKiBGUk9NIHRwYXJ0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBD T0xMQVRFICJDIiwgaTsgfQorc3RlcCBzMnUJeyBVUERBVEUgdHBhcnQgU0VUIGkgPSAxNiB3 aGVyZSBpID0gNTsgfQorc3RlcCBzMnUyCXsgVVBEQVRFIHRwYXJ0IFNFVCBpID0gMTEgd2hl cmUgaSA9IDE1OyB9CisKKworIyBzMSBzdGFydHMgU1BMSVQgUEFSVElUSU9OIHRoZW4gczIg dHJ5aW5nIHRvIGluc2VydCByb3cgYW5kCisjIHdhaXRzIHVudGlsIHMxIGZpbmlzaGVkIFNQ TElUIG9wZXJhdGlvbi4KKworcGVybXV0YXRpb24gczFiIHMxc3BsdCBzMmIgczJpIHMxYyBz MmMgczJzCitwZXJtdXRhdGlvbiBzMWIgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycwor cGVybXV0YXRpb24gczFiIHMxc3BsdCBzMmJzIHMyaSBzMWMgczJjIHMycworCitwZXJtdXRh dGlvbiBzMWJyciBzMXNwbHQgczJiIHMyaSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczFi cnIgczFzcGx0IHMyYnJyIHMyaSBzMWMgczJjIHMycworcGVybXV0YXRpb24gczFicnIgczFz cGx0IHMyYnMgczJpIHMxYyBzMmMgczJzCisKK3Blcm11dGF0aW9uIHMxYnMgczFzcGx0IHMy YiBzMmkgczFjIHMyYyBzMnMKK3Blcm11dGF0aW9uIHMxYnMgczFzcGx0IHMyYnJyIHMyaSBz MWMgczJjIHMycworcGVybXV0YXRpb24gczFicyBzMXNwbHQgczJicyBzMmkgczFjIHMyYyBz MnMKKworIyBUdXBsZSByb3V0aW5nIGJldHdlZW4gcGFydGl0aW9ucy4KK3Blcm11dGF0aW9u IHMxYiBzMXNwbHQgczJiIHMydSBzMWMgczJjIHMycworCisjIFR1cGxlIHJvdXRpbmcgaW5z aWRlIHNwbGl0dGluZyBwYXJ0aXRpb24uCitwZXJtdXRhdGlvbiBzMWIgczFzcGx0IHMyYiBz MnUyIHMxYyBzMmMgczJzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRs X2RlcGFyc2UvZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2RkbF9kZXBhcnNlL2V4cGVjdGVkL2FsdGVyX3RhYmxlLm91dAppbmRleCBjNDAzYzJm NTY5Li4xM2NjZmI3NGY1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRs X2RlcGFyc2UvZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0CisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9kZGxfZGVwYXJzZS9leHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKQEAgLTYxLDYg KzYxLDExIEBAIE5PVElDRTogIERETCB0ZXN0OiB0eXBlIHNpbXBsZSwgdGFnIENSRUFURSBU QUJMRQogQUxURVIgVEFCTEUgcGFydCBNRVJHRSBQQVJUSVRJT05TIChwYXJ0MSwgcGFydDIp IElOVE8gcGFydDE7CiBOT1RJQ0U6ICBEREwgdGVzdDogdHlwZSBhbHRlciB0YWJsZSwgdGFn IEFMVEVSIFRBQkxFCiBOT1RJQ0U6ICAgIHN1YmNvbW1hbmQ6IHR5cGUgTUVSR0UgUEFSVElU SU9OUyBkZXNjIDxOVUxMPgorQUxURVIgVEFCTEUgcGFydCBTUExJVCBQQVJUSVRJT04gcGFy dDEgSU5UTworCShQQVJUSVRJT04gcGFydDEgRk9SIFZBTFVFUyBGUk9NICgxKSB0byAoMTAw KSwKKwkgUEFSVElUSU9OIHBhcnQyIEZPUiBWQUxVRVMgRlJPTSAoMTAwKSB0byAoMjAwKSk7 CitOT1RJQ0U6ICBEREwgdGVzdDogdHlwZSBhbHRlciB0YWJsZSwgdGFnIEFMVEVSIFRBQkxF CitOT1RJQ0U6ICAgIHN1YmNvbW1hbmQ6IHR5cGUgU1BMSVQgUEFSVElUSU9OIGRlc2MgPE5V TEw+CiBBTFRFUiBUQUJMRSBwYXJ0IEFERCBQUklNQVJZIEtFWSAoYSk7CiBOT1RJQ0U6ICBE REwgdGVzdDogdHlwZSBhbHRlciB0YWJsZSwgdGFnIEFMVEVSIFRBQkxFCiBOT1RJQ0U6ICAg IHN1YmNvbW1hbmQ6IHR5cGUgQUREIENPTlNUUkFJTlQgKGFuZCByZWN1cnNlKSBkZXNjIGNv bnN0cmFpbnQgcGFydF9hX25vdF9udWxsIG9uIHRhYmxlIHBhcnQKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS9zcWwvYWx0ZXJfdGFibGUuc3FsIGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3NxbC9hbHRlcl90YWJsZS5zcWwK aW5kZXggMzFlNjkxMDBhMy4uMWU3NWZlYWE0NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2RkbF9kZXBhcnNlL3NxbC9hbHRlcl90YWJsZS5zcWwKKysrIGIvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3NxbC9hbHRlcl90YWJsZS5zcWwKQEAgLTM4 LDYgKzM4LDEwIEBAIERST1AgVEFCTEUgcGFydDI7CiBDUkVBVEUgVEFCTEUgcGFydDIgUEFS VElUSU9OIE9GIHBhcnQgRk9SIFZBTFVFUyBGUk9NICgxMDApIHRvICgyMDApOwogQUxURVIg VEFCTEUgcGFydCBNRVJHRSBQQVJUSVRJT05TIChwYXJ0MSwgcGFydDIpIElOVE8gcGFydDE7 CiAKK0FMVEVSIFRBQkxFIHBhcnQgU1BMSVQgUEFSVElUSU9OIHBhcnQxIElOVE8KKwkoUEFS VElUSU9OIHBhcnQxIEZPUiBWQUxVRVMgRlJPTSAoMSkgdG8gKDEwMCksCisJIFBBUlRJVElP TiBwYXJ0MiBGT1IgVkFMVUVTIEZST00gKDEwMCkgdG8gKDIwMCkpOworCiBBTFRFUiBUQUJM RSBwYXJ0IEFERCBQUklNQVJZIEtFWSAoYSk7CiAKIEFMVEVSIFRBQkxFIHBhcmVudCBBTFRF UiBDT0xVTU4gYSBTRVQgTk9UIE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jIGIvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYwppbmRleCA3ZGU1ZGRiODc4 Li4xN2Q3MmU0MTJmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2Rl cGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9k ZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKQEAgLTI5Niw2ICsyOTYsOSBAQCBnZXRf YWx0ZXJ0YWJsZV9zdWJjbWRpbmZvKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQljYXNlIEFUX0Rl dGFjaFBhcnRpdGlvbkZpbmFsaXplOgogCQkJCXN0cnR5cGUgPSAiREVUQUNIIFBBUlRJVElP TiAuLi4gRklOQUxJWkUiOwogCQkJCWJyZWFrOworCQkJY2FzZSBBVF9TcGxpdFBhcnRpdGlv bjoKKwkJCQlzdHJ0eXBlID0gIlNQTElUIFBBUlRJVElPTiI7CisJCQkJYnJlYWs7CiAJCQlj YXNlIEFUX01lcmdlUGFydGl0aW9uczoKIAkJCQlzdHJ0eXBlID0gIk1FUkdFIFBBUlRJVElP TlMiOwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wYXJ0aXRpb25fc3BsaXQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0 aXRpb25fc3BsaXQub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu Ljg4NmU1ZTBhYjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3BhcnRpdGlvbl9zcGxpdC5vdXQKQEAgLTAsMCArMSwxNjQzIEBACistLQorLS0gUEFS VElUSU9OX1NQTElUCistLSBUZXN0cyBmb3IgIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJU SVRJT04gLi4uIiBjb21tYW5kCistLQorQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hOworQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMjsKK1NFVCBz ZWFyY2hfcGF0aCA9IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEsIHB1YmxpYzsKKy0tCistLSBC WSBSQU5HRSBwYXJ0aXRpb25pbmcKKy0tCistLQorLS0gVGVzdCBmb3IgZXJyb3IgY29kZXMK Ky0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIGludCwgc2Fs ZXNwZXJzb25fbmFtZSB2YXJjaGFyKDMwKSwgc2FsZXNfYW1vdW50IGludCwgc2FsZXNfZGF0 ZSBkYXRlKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBz YWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBFUlJP UjogIHJlbGF0aW9uICJzYWxlc194eHgiIGRvZXMgbm90IGV4aXN0CitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfeHh4IElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIw MjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUt MDEnKSk7CitFUlJPUjogIHJlbGF0aW9uICJzYWxlc194eHgiIGRvZXMgbm90IGV4aXN0Cist LSBFUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW4yMDIyIiBhbHJlYWR5IGV4aXN0cworQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXBy MjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf bWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJST1I6ICByZWxhdGlvbiAic2FsZXNf amFuMjAyMiIgYWxyZWFkeSBleGlzdHMKKy0tIEVSUk9SOiAgaW52YWxpZCBib3VuZCBzcGVj aWZpY2F0aW9uIGZvciBhIHJhbmdlIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIElOICgnMjAyMi0wNS0wMScsICcyMDIy LTA2LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAx JykpOworRVJST1I6ICBpbnZhbGlkIGJvdW5kIHNwZWNpZmljYXRpb24gZm9yIGEgcmFuZ2Ug cGFydGl0aW9uCitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxV RVMgSU4gKCcyMDIyLTA1LTAxJywgJzIwMi4uLgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgZW1wdHkgcmFuZ2UgYm91bmQg c3BlY2lmaWVkIGZvciBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDItMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIGVtcHR5IHJhbmdlIGJvdW5kIHNwZWNpZmll ZCBmb3IgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIgorTElORSAzOiAgICBQQVJUSVRJT04g c2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8uLi4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitE RVRBSUw6ICBTcGVjaWZpZWQgbG93ZXIgYm91bmQgKCcwMy0wMS0yMDIyJykgaXMgZ3JlYXRl ciB0aGFuIG9yIGVxdWFsIHRvIHVwcGVyIGJvdW5kICgnMDItMDEtMjAyMicpLgorLS1FUlJP UjogIGxpc3Qgb2Ygc3BsaXQgcGFydGl0aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0 d28gaXRlbXMKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxl c19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0xMC0wMScpKTsKK0VSUk9S OiAgbGlzdCBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28g cGFydGl0aW9ucworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVz X2ZlYjIwMjIiIGlzIG5vdCBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRp b24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJf bWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAy Mi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbG93ZXIgYm91 bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gbG93ZXIg Ym91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTy4uLgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9S OiAgbmFtZSAic2FsZXNfZmViX21hcl9hcHIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKKy0tIChX ZSBjYW4gY3JlYXRlIHBhcnRpdGlvbiB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFy dGl0aW9uLCBidXQgY2FuJ3QgY3JlYXRlIHR3byBwYXJ0aXRpb25zIHdpdGggdGhlIHNhbWUg bmFtZSkKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19m ZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7 CitFUlJPUjogIG5hbWUgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgaXMgYWxyZWFkeSB1c2Vk CitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMy4uLgorICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6 ICBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFS VElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRP ICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgbmFtZSAic2FsZXNfZmViMjAyMiIgaXMgYWxy ZWFkeSB1c2VkCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTy4uLgorICAgICAgICAgICAgICAgICAgICAgXgor LS0gRVJST1I6ICBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIw MjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHBhcnRpdGlv bl9zcGxpdF9zY2hlbWEuc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAz LTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJS T1I6ICBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0xJTkUgMzogICAg UEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfZmViMjAyMiBGT1IgVkFM VUVTLi4uCisgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIEFMVEVSIGFjdGlv biBTUExJVCBQQVJUSVRJT04gY2Fubm90IGJlIHBlcmZvcm1lZCBvbiByZWxhdGlvbiAic2Fs ZXNfZmViX21hcl9hcHIyMDIyIgorLS0gREVUQUlMOiAgVGhpcyBvcGVyYXRpb24gaXMgbm90 IHN1cHBvcnRlZCBmb3IgdGFibGVzLgorQUxURVIgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIy MDIyIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFS VElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRP ICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNS0wMScpKTsKK0VSUk9SOiAgQUxURVIgYWN0aW9uIFNQTElUIFBBUlRJVElPTiBjYW5u b3QgYmUgcGVyZm9ybWVkIG9uIHJlbGF0aW9uICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiCitE RVRBSUw6ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB0YWJsZXMuCist LSBFUlJPUjogIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMg bm90IGVxdWFsIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA2LTAxJykpOworRVJST1I6ICB1cHBlciBib3VuZCBvZiBwYXJ0aXRp b24gInNhbGVzX2FwcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB1cHBlciBib3VuZCBvZiBzcGxp dCBwYXJ0aXRpb24KK0xJTkUgNDogLi4uIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNi0wLi4uCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6 ICBjYW4gbm90IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIgdG9nZXRoZXIg d2l0aCBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjIt MDUtMDEnKSk7CitFUlJPUjogIGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uICJzYWxlc19t YXIyMDIyIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIKK0xJTkUg MzogICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w Mi0wMScpIFRPLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgorREVUQUlMOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxl c19tYXIyMDIyIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlv biAic2FsZXNfZmViMjAyMiIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElU SU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4KKy0t IFRlc3RzIGZvciBzcGFjZXMgYmV0d2VlbiBwYXJ0aXRpb25zLCB0aGVtIHNob3VsZCBiZSBl eGVjdXRlZCB3aXRob3V0IERFRkFVTFQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBERVRBQ0ggUEFSVElUSU9OIHNhbGVzX290aGVyczsKKy0tIEVSUk9SOiAgbG93ZXIg Ym91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBpcyBub3QgZXF1YWwgdG8gbG93 ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBT UExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDInKSBUTyAoJzIw MjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUt MDEnKSk7CitFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAy MiIgaXMgbm90IGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorTElO RSAyOiAgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAyJykgVE8uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeCistLSBDaGVjayB0aGUgc291cmNlIHBhcnRpdGlvbiBub3QgaW4g dGhlIHNlYXJjaCBwYXRoCitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25fc3BsaXRfc2No ZW1hMiwgcHVibGljOworQUxURVIgVEFCTEUgcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxl c19yYW5nZQorU1BMSVQgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNf ZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAo JzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitTRVQgc2VhcmNoX3Bh dGggPSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLCBwdWJsaWM7CitcZCsgc2FsZXNfcmFuZ2UK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcnRpdGlvbmVkIHRhYmxlICJwYXJ0 aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX3JhbmdlIgorICAgICAgQ29sdW1uICAgICAgfCAg ICAgICAgIFR5cGUgICAgICAgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQg fCBTdG9yYWdlICB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHNh bGVzcGVyc29uX2lkICAgfCBpbnRlZ2VyICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAg ICAgICAgICB8ICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorIHNhbGVz cGVyc29uX25hbWUgfCBjaGFyYWN0ZXIgdmFyeWluZygzMCkgfCAgICAgICAgICAgfCAgICAg ICAgICB8ICAgICAgICAgfCBleHRlbmRlZCB8ICAgICAgICAgICAgICB8IAorIHNhbGVzX2Ft b3VudCAgICAgfCBpbnRlZ2VyICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAg ICB8ICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorIHNhbGVzX2RhdGUg ICAgICAgfCBkYXRlICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8 ICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorUGFydGl0aW9uIGtleTog UkFOR0UgKHNhbGVzX2RhdGUpCitQYXJ0aXRpb25zOiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1h Mi5zYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzA0LTAxLTIwMjInKSBUTyAoJzA1 LTAxLTIwMjInKSwKKyAgICAgICAgICAgIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVz X2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDItMDEtMjAyMicpIFRPICgnMDMtMDEtMjAy MicpLAorICAgICAgICAgICAgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfbWFyMjAy MiBGT1IgVkFMVUVTIEZST00gKCcwMy0wMS0yMDIyJykgVE8gKCcwNC0wMS0yMDIyJyksCisg ICAgICAgICAgICBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzAxLTAxLTIwMjIn KSBUTyAoJzAyLTAxLTIwMjInKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworRFJPUCBU QUJMRSBzYWxlc19vdGhlcnM7CistLQorLS0gQWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0 YWJsZSB0aGVuIHNwbGl0IHBhcnRpdGlvbgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5n ZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBz YWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAo c2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0w Mi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAy Mi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgREVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAo MSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2Zm JywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAy Mi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisg ICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90 JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcy MDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwK KyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxk ZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAg JzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScp LAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1Nt aXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgn MjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0w NS0wMScpKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5n ZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVz cGVyc29uX2lkOworICAgdGFibGVvaWQgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVy c29uX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorIHNhbGVzX2FwcjIwMjIgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAg ICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgc2FsZXNfYXByMjAyMiB8 ICAgICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0 LTEzLTIwMjIKKyBzYWxlc19hcHIyMDIyIHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAg ICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorIHNhbGVzX2FwcjIwMjIgfCAg ICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0w Ni0yMDIyCisgc2FsZXNfZmViMjAyMiB8ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAg ICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyBzYWxlc19mZWIyMDIyIHwgICAg ICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEt MjAyMgorIHNhbGVzX2ZlYjIwMjIgfCAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAg ICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgc2FsZXNfamFuMjAyMiB8ICAgICAg ICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIw MjIKKyBzYWxlc19qYW4yMDIyIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAg IHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAyMgorIHNhbGVzX2phbjIwMjIgfCAgICAgICAg ICAgICAxMyB8IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIy Cisgc2FsZXNfbWFyMjAyMiB8ICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8 ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyBzYWxlc19tYXIyMDIyIHwgICAgICAgICAg ICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgor IHNhbGVzX21hcjIwMjIgfCAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAg ICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgc2FsZXNfb3RoZXJzICB8ICAgICAgICAgICAg IDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygx NCByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CistLQorLS0gQWRk IHNwbGl0IHBhcnRpdGlvbiwgdGhlbiBhZGQgcm93cyBpbnRvIHBhcnRpdGlvbmVkIHRhYmxl CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNh bGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2Rh dGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJM RSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworLS0gU3Bs aXQgcGFydGl0aW9uLCBhbHNvIGNoZWNrIHNjaGVtYSBxdWFsaWZpY2F0aW9uIG9mIG5ldyBw YXJ0aXRpb25zCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRf c2NoZW1hLnNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRP ICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEy LnNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAy Mi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK1xkKyBzYWxlc19yYW5nZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFydGl0aW9uZWQgdGFibGUgInBhcnRp dGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfcmFuZ2UiCisgICAgICBDb2x1bW4gICAgICB8ICAg ICAgICAgVHlwZSAgICAgICAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCB8 IFN0b3JhZ2UgIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgc2Fs ZXNwZXJzb25faWQgICB8IGludGVnZXIgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCisgc2FsZXNw ZXJzb25fbmFtZSB8IGNoYXJhY3RlciB2YXJ5aW5nKDMwKSB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgICAgICAgICB8IGV4dGVuZGVkIHwgICAgICAgICAgICAgIHwgCisgc2FsZXNfYW1v dW50ICAgICB8IGludGVnZXIgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAg IHwgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCisgc2FsZXNfZGF0ZSAg ICAgICB8IGRhdGUgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwg ICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24ga2V5OiBS QU5HRSAoc2FsZXNfZGF0ZSkKK1BhcnRpdGlvbnM6IHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEy LnNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDMtMDEtMjAyMicpIFRPICgnMDQt MDEtMjAyMicpLAorICAgICAgICAgICAgc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00g KCcwNC0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIyJyksCisgICAgICAgICAgICBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIwMjInKSBUTyAoJzAzLTAxLTIwMjIn KSwKKyAgICAgICAgICAgIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMDEtMDEt MjAyMicpIFRPICgnMDItMDEtMjAyMicpLAorICAgICAgICAgICAgc2FsZXNfb3RoZXJzIERF RkFVTFQKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScs ICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAn MjAyMi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyks CisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVl dicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwg ICcyMDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgn KSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdN dWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUw LCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0w NicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywg J0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAnU21pdGgnLCAgICA1 MTAsICAnMjAyMi0wNS0wNCcpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9N IHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRF ICJDIiwgc2FsZXNwZXJzb25faWQ7CisgICAgICAgICAgICAgICB0YWJsZW9pZCAgICAgICAg ICAgICAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ft b3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTIuc2FsZXNfbWFyMjAy MiB8ICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8 IDAzLTA4LTIwMjIKKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hMi5zYWxlc19tYXIyMDIyIHwg ICAgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMt MTEtMjAyMgorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVzX21hcjIwMjIgfCAgICAg ICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0y MDIyCisgc2FsZXNfYXByMjAyMiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAzIHwgRm9yZCAgICAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIK KyBzYWxlc19hcHIyMDIyICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg IDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorIHNh bGVzX2FwcjIwMjIgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgNSB8 IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgc2FsZXNf YXByMjAyMiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIDExIHwgVHJ1 bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyBzYWxlc19mZWIy MDIyICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIDIgfCBTbWlybm9m ZiAgICAgICAgIHwgICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorIHNhbGVzX2ZlYjIwMjIg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgNiB8IFBvaXJvdCAgICAg ICAgICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgc2FsZXNfZmViMjAyMiAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICAg ICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyBzYWxlc19qYW4yMDIyICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgICAgIHwg ICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgorIHNhbGVzX2phbjIwMjIgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgICAgfCAgICAg ICAgICAzNTAgfCAwMS0yOC0yMDIyCisgc2FsZXNfamFuMjAyMiAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8ICAgICAgICAg IDM3NyB8IDAxLTA5LTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwgICAgICAgICAgNTEw IHwgMDUtMDQtMjAyMgorKDE0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FT Q0FERTsKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBjb21wb3NpdGUgcGFydGl0aW9uIGtl eTsKKy0tICAgKiBHRU5FUkFURUQgY29sdW1uOworLS0gICAqIGNvbHVtbiB3aXRoIERFRkFV TFQgdmFsdWUuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2RhdGUgKHNhbGVzcGVyc29uX25h bWUgVkFSQ0hBUigzMCksIHNhbGVzX3llYXIgSU5ULCBzYWxlc19tb250aCBJTlQsIHNhbGVz X2RheSBJTlQsCisgIHNhbGVzX2RhdGUgVkFSQ0hBUigxMCkgR0VORVJBVEVEIEFMV0FZUyBB UworICAgIChMUEFEKHNhbGVzX3llYXI6OnRleHQsIDQsICcwJykgfHwgJy4nIHx8IExQQUQo c2FsZXNfbW9udGg6OnRleHQsIDIsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfZGF5Ojp0 ZXh0LCAyLCAnMCcpKSBTVE9SRUQsCisgIHNhbGVzX2RlcGFydG1lbnQgVkFSQ0hBUigzMCkg REVGQVVMVCAnU2FsZXMgZGVwYXJ0bWVudCcpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoc2Fs ZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf ZGVjMjAyMSBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjEs IDEyLCAxKSBUTyAoMjAyMiwgMSwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuX2ZlYjIw MjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAx KSBUTyAoMjAyMiwgMywgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXIgUEFSVElUSU9O IE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAzLCAxKSBUTyAoTUFYVkFM VUUsIE1BWFZBTFVFLCBNQVhWQUxVRSk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVz cGVyc29uX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVF UworICAoJ01hbmFnZXIxJywgMjAyMSwgMTIsIDcpLAorICAoJ01hbmFnZXIyJywgMjAyMSwg MTIsIDgpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgMSwgMSksCisgICgnTWFuYWdlcjEnLCAy MDIyLCAyLCA0KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjIsIDEsIDIpLAorICAoJ01hbmFnZXIz JywgMjAyMiwgMiwgMSksCisgICgnTWFuYWdlcjEnLCAyMDIyLCAzLCAzKSwKKyAgKCdNYW5h Z2VyMicsIDIwMjIsIDMsIDQpLAorICAoJ01hbmFnZXIzJywgMjAyMiwgNSwgMSk7CitTRUxF Q1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfZGF0ZSBPUkRFUiBCWSB0YWJs ZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzX3llYXIsIHNhbGVzX21v bnRoLCBzYWxlc19kYXk7CisgICAgIHRhYmxlb2lkICAgICAgfCBzYWxlc3BlcnNvbl9uYW1l IHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8 IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfZGVjMjAyMSAgICAgfCBNYW5hZ2VyMSAg ICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4x Mi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19kZWMyMDIxICAgICB8IE1hbmFnZXIy ICAgICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDggfCAyMDIx LjEyLjA4IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwgTWFuYWdl cjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMSB8IDIw MjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuX2ZlYjIwMjIgfCBNYW5h Z2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAgICAyIHwg MjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW5fZmViMjAyMiB8IE1h bmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEg fCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbl9mZWIyMDIyIHwg TWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAg NCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfb3RoZXIgICAgICAg fCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAg ICAzIHwgMjAyMi4wMy4wMyB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19vdGhlciAgICAg ICB8IE1hbmFnZXIyICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAg ICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVyICAg ICAgIHwgTWFuYWdlcjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAg ICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoOSByb3dzKQorCitB TFRFUiBUQUJMRSBzYWxlc19kYXRlIFNQTElUIFBBUlRJVElPTiBzYWxlc19qYW5fZmViMjAy MiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKDIw MjIsIDEsIDEpIFRPICgyMDIyLCAyLCAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEpKTsKK0lOU0VS VCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNfeWVhciwgc2FsZXNf bW9udGgsIHNhbGVzX2RheSkgVkFMVUVTCisgICgnTWFuYWdlcjEnLCAyMDIyLCAxLCAxMCks CisgICgnTWFuYWdlcjInLCAyMDIyLCAyLCAxMCk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2Ns YXNzLCAqIEZST00gc2FsZXNfZGF0ZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRl eHQgQ09MTEFURSAiQyIsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXk7Cisg ICB0YWJsZW9pZCAgICB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNf bW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNh bGVzX2RlYzIwMjEgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAg IDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxl c19kZWMyMDIxIHwgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAx MiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNf ZmViMjAyMiB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIg fCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2Zl YjIwMjIgfCBNYW5hZ2VyMSAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwg ICAgICAgICA0IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19mZWIy MDIyIHwgTWFuYWdlcjIgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAg ICAgICAxMCB8IDIwMjIuMDIuMTAgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfamFuMjAy MiB8IE1hbmFnZXIzICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAg ICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX2phbjIwMjIg fCBNYW5hZ2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAxIHwgICAgICAg ICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19qYW4yMDIyIHwg TWFuYWdlcjEgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAx MCB8IDIwMjIuMDEuMTAgfCBTYWxlcyBkZXBhcnRtZW50Cisgc2FsZXNfb3RoZXIgICB8IE1h bmFnZXIxICAgICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMg fCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIHNhbGVzX290aGVyICAgfCBNYW5h Z2VyMiAgICAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICA0IHwg MjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBzYWxlc19vdGhlciAgIHwgTWFuYWdl cjMgICAgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIw MjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisoMTEgcm93cykKKworLS1FUlJPUjogIHJl bGF0aW9uICJzYWxlc19qYW5fZmViMjAyMiIgZG9lcyBub3QgZXhpc3QKK1NFTEVDVCAqIEZS T00gc2FsZXNfamFuX2ZlYjIwMjI7CitFUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW5fZmVi MjAyMiIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMTogU0VMRUNUICogRlJPTSBzYWxlc19qYW5f ZmViMjAyMjsKKyAgICAgICAgICAgICAgICAgICAgICBeCitEUk9QIFRBQkxFIHNhbGVzX2Rh dGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzcGxpdCBERUZBVUxUIHBhcnRpdGlvbjsgdXNl IGFuIGluZGV4IG9uIHBhcnRpdGlvbiBrZXk7IGNoZWNrIGluZGV4IGFmdGVyIHNwbGl0Cist LQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVz cGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUg REFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf b3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVY IHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVl IChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwg ICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywg NTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0w NC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1 LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90Jywg ICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIy LTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAg KDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXIn LCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIw MjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAor ICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRo JywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJz OworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8 IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAg ICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDMgfCBG b3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAg ICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIK KyAgICAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAw NC0wNy0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAgIHwgICAgICAg ICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAg ICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgICAgOCB8IEVyaWNz c29uICAgICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgICAg IDkgfCBNdWxsZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAg ICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2 LTIwMjIKKyAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAz NTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgICAgIHwg ICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDExIHJvd3MpCisKK1NFTEVDVCAqIEZST00g cGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfb3RoZXJzJyBhbmQgc2NoZW1h bmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBCWSBpbmRleG5hbWUgQ09M TEFURSAiQyI7CisgICAgICAgc2NoZW1hbmFtZSAgICAgICB8ICB0YWJsZW5hbWUgICB8ICAg ICAgICAgIGluZGV4bmFtZSAgICAgICAgICB8IHRhYmxlc3BhY2UgfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGRlZiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCBzYWxlc19vdGhlcnMg fCBzYWxlc19vdGhlcnNfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElO REVYIHNhbGVzX290aGVyc19zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRpb25fc3BsaXRfc2No ZW1hLnNhbGVzX290aGVycyBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKwor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA1LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFV TFQpOworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdGluZyBpbmRleGVzCitTRVQgZW5hYmxl X3NlcXNjYW4gPSBPRkY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2Fs ZXNfZmViMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfZmViMjAyMl9zYWxlc19k YXRlX2lkeCBvbiBzYWxlc19mZWIyMDIyCisgICBJbmRleCBDb25kOiAoc2FsZXNfZGF0ZSA+ ICcwMS0wMS0yMDIyJzo6ZGF0ZSkKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNf ZmViMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworIHNhbGVzcGVyc29u X2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCist LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAg ICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgICAg IHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICAgICA4IHwgRXJpY3Nz b24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKygzIHJvd3MpCisKK0VY UExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxlc19tYXIyMDIyIHdoZXJlIHNh bGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5k ZXggU2NhbiB1c2luZyBzYWxlc19tYXIyMDIyX3NhbGVzX2RhdGVfaWR4IG9uIHNhbGVzX21h cjIwMjIKKyAgIEluZGV4IENvbmQ6IChzYWxlc19kYXRlID4gJzAxLTAxLTIwMjInOjpkYXRl KQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19tYXIyMDIyIHdoZXJlIHNhbGVz X2RhdGUgPiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9u YW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIK KyAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAw My0xMS0yMDIyCisgICAgICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgICAgIHwgICAgICAg ICAgMzUwIHwgMDMtMTktMjAyMgorKDMgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBT RUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAx LTAxJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIHNhbGVz X2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggb24gc2FsZXNfYXByMjAyMgorICAgSW5kZXggQ29u ZDogKHNhbGVzX2RhdGUgPiAnMDEtMDEtMjAyMic6OmRhdGUpCisoMiByb3dzKQorCitTRUxF Q1QgKiBGUk9NIHNhbGVzX2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAx JzsKKyBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAg ICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICAgICA1IHwg RGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAg ICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIy CisgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwg MDQtMzAtMjAyMgorKDQgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBG Uk9NIHNhbGVzX290aGVycyB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIHNhbGVzX290aGVyc19zYWxl c19kYXRlX2lkeDEgb24gc2FsZXNfb3RoZXJzCisgICBJbmRleCBDb25kOiAoc2FsZXNfZGF0 ZSA+ICcwMS0wMS0yMDIyJzo6ZGF0ZSkKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2Fs ZXNfb3RoZXJzIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNwZXJz b25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAK Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorICAgICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICAgICB8ICAgICAg ICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47 CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2Zl YjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVS IEJZIGluZGV4bmFtZSBDT0xMQVRFICJDIjsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwg ICB0YWJsZW5hbWUgICB8ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgfCB0YWJsZXNw YWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hIHwgc2FsZXNfZmViMjAyMiB8IHNhbGVzX2ZlYjIwMjJfc2FsZXNfZGF0ZV9p ZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX2ZlYjIwMjJfc2FsZXNfZGF0 ZV9pZHggT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWIyMDIyIFVTSU5HIGJ0 cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMg V0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX21hcjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3Bh cnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZSBDT0xMQVRFICJDIjsK KyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwgICB0YWJsZW5hbWUgICB8ICAgICAgICAgIGlu ZGV4bmFtZSAgICAgICAgICAgfCB0YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgc2FsZXNfbWFyMjAyMiB8 IHNhbGVzX21hcjIwMjJfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElO REVYIHNhbGVzX21hcjIwMjJfc2FsZXNfZGF0ZV9pZHggT04gcGFydGl0aW9uX3NwbGl0X3Nj aGVtYS5zYWxlc19tYXIyMDIyIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQor CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2Fw cjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVS IEJZIGluZGV4bmFtZSBDT0xMQVRFICJDIjsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgIHwg ICB0YWJsZW5hbWUgICB8ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgfCB0YWJsZXNw YWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hIHwgc2FsZXNfYXByMjAyMiB8IHNhbGVzX2FwcjIwMjJfc2FsZXNfZGF0ZV9p ZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX2FwcjIwMjJfc2FsZXNfZGF0 ZV9pZHggT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19hcHIyMDIyIFVTSU5HIGJ0 cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMg V0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX290aGVycycgYW5kIHNjaGVtYW5hbWUgPSAncGFy dGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lIENPTExBVEUgIkMiOwor ICAgICAgIHNjaGVtYW5hbWUgICAgICAgfCAgdGFibGVuYW1lICAgfCAgICAgICAgICBpbmRl eG5hbWUgICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8IHNhbGVzX290aGVycyB8IHNhbGVz X290aGVyc19zYWxlc19kYXRlX2lkeDEgfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNh bGVzX290aGVyc19zYWxlc19kYXRlX2lkeDEgT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5z YWxlc19vdGhlcnMgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpCisoMSByb3cpCisKK0RST1Ag VEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzb21lIGNhc2VzIGZv ciBzcGxpdHRpbmcgREVGQVVMVCBwYXJ0aXRpb24gKGRpZmZlcmVudCBib3VuZHMpCistLQor Q1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVy c29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgSU5U KSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVz X290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKy0tIHNhbGVzX2Vy cm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIxIChsb3dlciBib3VuZCkKKy0tIEVS Uk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiB0b2dldGhl ciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0FMVEVSIFRBQkxFIHNhbGVzX3Jh bmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNh bGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwK KyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjMwKSBU TyAoMjAyMjAyMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhl cnMgREVGQVVMVCk7CitFUlJPUjogIGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uICJzYWxl c19lcnJvciIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitMSU5F IDM6ICAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjMw KSBUTyAoMjAyMi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCitERVRBSUw6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVz X2Vycm9yIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAi c2FsZXNfZGVjMjAyMSIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9O UyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4KKy0tIHNh bGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19mZWIyMDIyICh1cHBlciBib3VuZCkK Ky0tIEVSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIi IHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19lcnJvciIKK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIw MTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjIw MTAxKSBUTyAoMjAyMjAyMDIpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZB TFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxl c19vdGhlcnMgREVGQVVMVCk7CitFUlJPUjogIGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9u ICJzYWxlc19mZWIyMDIyIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZXJyb3Ii CitMSU5FIDQ6ICAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo MjAyMjAyMDEpIFRPICgyMC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlv biAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFsIHRvIHRoZSB1cHBlciBib3VuZCBvZiBw YXJ0aXRpb24gInNhbGVzX2Vycm9yIgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQ QVJUSVRJT05TIHJlcXVpcmVzIHRoZSBwYXJ0aXRpb24gYm91bmRzIHRvIGJlIGFkamFjZW50 LgorLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjEgKGluc2lk ZSBib3VuZCkKKy0tIEVSUk9SOiAgY2FuIG5vdCBzcGxpdCB0byBwYXJ0aXRpb24gInNhbGVz X2Vycm9yIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkg VE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZS T00gKDIwMjExMjEwKSBUTyAoMjAyMTEyMjApLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CitFUlJPUjogIGNhbiBub3Qgc3BsaXQgdG8g cGFydGl0aW9uICJzYWxlc19lcnJvciIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24gInNhbGVz X2RlYzIwMjEiCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVT IEZST00gKDIwMjExMjEwKSBUTyAoMjAyMS4uLgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6ICBsb3dlciBib3VuZCBvZiBw YXJ0aXRpb24gInNhbGVzX2Vycm9yIiBpcyBub3QgZXF1YWwgdG8gdGhlIHVwcGVyIGJvdW5k IG9mIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0hJTlQ6ICBBTFRFUiBUQUJMRSAuLi4g U1BMSVQgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0aW9uIGJvdW5kcyB0byBiZSBh ZGphY2VudC4KKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIx IChleGFjdGx5IHRoZSBzYW1lIGJvdW5kcykKKy0tIEVSUk9SOiAgY2FuIG5vdCBzcGxpdCB0 byBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2Fs ZXNfZGVjMjAyMSIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVF UyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19l cnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFS VElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIw MjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CitFUlJPUjog IGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uICJzYWxlc19lcnJvciIgdG9nZXRoZXIgd2l0 aCBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjEiCitMSU5FIDM6ICAgIFBBUlRJVElPTiBzYWxl c19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMi4uLgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRBSUw6 ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiBpcyBub3QgZXF1YWwg dG8gdGhlIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKK0hJTlQ6 ICBBTFRFUiBUQUJMRSAuLi4gU1BMSVQgUEFSVElUSU9OUyByZXF1aXJlcyB0aGUgcGFydGl0 aW9uIGJvdW5kcyB0byBiZSBhZGphY2VudC4KKy0tIEVSUk9SOiAgb25lIHBhcnRpdGlvbiBp biB0aGUgbGlzdCBzaG91bGQgYmUgREVGQVVMVCBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBp cyBERUZBVUxUCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMg RlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfamFu MjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMTAxKSBUTyAoMjAyMjAyMDEpLAorICAgUEFS VElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIw MjIwMzAxKSk7CitFUlJPUjogIG9uZSBwYXJ0aXRpb24gaW4gdGhlIGxpc3Qgc2hvdWxkIGJl IERFRkFVTFQgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gaXMgREVGQVVMVAorTElORSAyOiAg IChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBU TyAoMjAuLi4KKyAgICAgICAgICAgICAgICAgICAgIF4KKy0tIG5vIGVycm9yOiBib3VuZHMg b2Ygc2FsZXNfbm9lcnJvciBhcmUgYmV0d2VlbiBzYWxlc19kZWMyMDIxIGFuZCBzYWxlc19m ZWIyMDIyCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNf b3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJP TSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfbm9lcnJv ciBGT1IgVkFMVUVTIEZST00gKDIwMjIwMTEwKSBUTyAoMjAyMjAxMjApLAorICAgUEFSVElU SU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIw MzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CitEUk9QIFRBQkxF IHNhbGVzX3JhbmdlOworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9p ZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQs IHNhbGVzX2RhdGUgSU5UKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JF QVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVM VDsKKy0tIG5vIGVycm9yOiBib3VuZHMgb2Ygc2FsZXNfbm9lcnJvciBhcmUgZXF1YWwgdG8g bG93ZXIgYW5kIHVwcGVyIGJvdW5kcyBvZiBzYWxlc19kZWMyMDIxIGFuZCBzYWxlc19mZWIy MDIyCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3Ro ZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAo MjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfbm9lcnJvciBG T1IgVkFMVUVTIEZST00gKDIwMjEwMTAxKSBUTyAoMjAyMTAyMDEpLAorICAgUEFSVElUSU9O IHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAx KSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCk7CitEUk9QIFRBQkxFIHNh bGVzX3JhbmdlOworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRoIENIRUNLIGFu ZCBGT1JFSUdOIEtFWSBDT05TVFJBSU5UcyBvbiBwYXJ0aXRpb25lZCB0YWJsZQorLS0KK0NS RUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVks IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworSU5TRVJUIElOVE8gc2FsZXNwZW9w bGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlICgK K3NhbGVzcGVyc29uX2lkIElOVCBSRUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29u X2lkKSwKK3NhbGVzX2Ftb3VudCBJTlQgQ0hFQ0sgKHNhbGVzX2Ftb3VudCA+IDEpLAorc2Fs ZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitT RUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00g cGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19mZWJfbWFyX2FwcjIwMjIn OjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWUgQ09MTEFURSAiQyI7CisgICAgICAg ICAgICAgICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgIGNvbm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tCisgQ0hFQ0sgKChzYWxlc19hbW91bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IHNhbGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayAg fCB7Mn0KKyBGT1JFSUdOIEtFWSAoc2FsZXNwZXJzb25faWQpIFJFRkVSRU5DRVMgc2FsZXNw ZW9wbGUoc2FsZXNwZXJzb25faWQpIHwgc2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtl eSB8IHsxfQorKDIgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAx JyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOwor LS0gV2Ugc2hvdWxkIHNlZSB0aGUgc2FtZSBDT05TVFJBSU5UcyBhcyBvbiBzYWxlc19mZWJf bWFyX2FwcjIwMjIgcGFydGl0aW9uCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lk KSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9 ICdzYWxlc19mZWIyMDIyJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lIENPTExB VEUgIkMiOworICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBjb25uYW1lICAgICAgICAg ICAgIHwgY29ua2V5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLQorIENIRUNLICgoc2FsZXNfYW1vdW50ID4gMSkpICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzYWxlc19yYW5nZV9zYWxl c19hbW91bnRfY2hlY2sgIHwgezJ9CisgRk9SRUlHTiBLRVkgKHNhbGVzcGVyc29uX2lkKSBS RUZFUkVOQ0VTIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkKSB8IHNhbGVzX3JhbmdlX3Nh bGVzcGVyc29uX2lkX2ZrZXkgfCB7MX0KKygyIHJvd3MpCisKK1NFTEVDVCBwZ19nZXRfY29u c3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdI RVJFIGNvbnJlbGlkID0gJ3NhbGVzX21hcjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZ IGNvbm5hbWUgQ09MTEFURSAiQyI7CisgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRf Y29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIGNv bm5hbWUgICAgICAgICAgICAgfCBjb25rZXkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tCisgQ0hFQ0sgKChzYWxlc19hbW91 bnQgPiAxKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNh bGVzX3JhbmdlX3NhbGVzX2Ftb3VudF9jaGVjayAgfCB7Mn0KKyBGT1JFSUdOIEtFWSAoc2Fs ZXNwZXJzb25faWQpIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQpIHwg c2FsZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSB8IHsxfQorKDIgcm93cykKKworU0VM RUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBn X2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfYXByMjAyMic6OnJlZ2NsYXNz OjpvaWQgT1JERVIgQlkgY29ubmFtZSBDT0xMQVRFICJDIjsKKyAgICAgICAgICAgICAgICAg ICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgY29ubmFtZSAgICAgICAgICAgICB8IGNvbmtleSAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBDSEVD SyAoKHNhbGVzX2Ftb3VudCA+IDEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgc2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrICB8IHsyfQorIEZP UkVJR04gS0VZIChzYWxlc3BlcnNvbl9pZCkgUkVGRVJFTkNFUyBzYWxlc3Blb3BsZShzYWxl c3BlcnNvbl9pZCkgfCBzYWxlc19yYW5nZV9zYWxlc3BlcnNvbl9pZF9ma2V5IHwgezF9Ciso MiByb3dzKQorCistLSBFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJzYWxlc19tYXIy MDIyIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc19hbW91 bnRfY2hlY2siCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsIDAsICcyMDIy LTAzLTExJyk7CitFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJzYWxlc19tYXIyMDIy IiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc19hbW91bnRf Y2hlY2siCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoMSwgMCwgMDMtMTEtMjAy MikuCistLSBFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInNhbGVzX21hcjIw MjIiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNhbGVzX3JhbmdlX3NhbGVz cGVyc29uX2lkX2ZrZXkiCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKC0xLCAx MCwgJzIwMjItMDMtMTEnKTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAi c2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNf cmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSIKK0RFVEFJTDogIEtleSAoc2FsZXNwZXJzb25f aWQpPSgtMSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInNhbGVzcGVvcGxlIi4KKy0tIG9r CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsIDEwLCAnMjAyMi0wMy0xMScp OworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBDQVNDQURFOworRFJPUCBUQUJMRSBzYWxlc3Bl b3BsZSBDQVNDQURFOworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiBvbiBwYXJ0aXRp b25lZCB0YWJsZSBpbiBjYXNlIG9mIGV4aXN0aW5nIEZPUkVJR04gS0VZIHJlZmVyZW5jZSBm cm9tIGFub3RoZXIgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNw ZXJzb25faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzAp KSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFURSBUQUJMRSBz YWxlcyAoc2FsZXNwZXJzb25faWQgSU5UIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNw ZXJzb25faWQpLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpOworQ1JFQVRF IFRBQkxFIHNhbGVzcGVvcGxlMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxlIEZPUiBW QUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzQw IFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoNDAp OworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTCisgICgxLCAgJ1BvaXJvdCcpLAor ICAoMTAsICdNYXknKSwKKyAgKDE5LCAnSXZhbm92JyksCisgICgyMCwgJ1NtaXJub2ZmJyks CisgICgzMCwgJ0ZvcmQnKTsKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUworICAoMSwgIDEw MCwgJzIwMjItMDMtMDEnKSwKKyAgKDEsICAxMTAsICcyMDIyLTAzLTAyJyksCisgICgxMCwg MTUwLCAnMjAyMi0wMy0wMScpLAorICAoMTAsIDkwLCAgJzIwMjItMDMtMDMnKSwKKyAgKDE5 LCAyMDAsICcyMDIyLTAzLTA0JyksCisgICgyMCwgNTAsICAnMjAyMi0wMy0xMicpLAorICAo MjAsIDE3MCwgJzIwMjItMDMtMDInKSwKKyAgKDMwLCAzMCwgICcyMDIyLTAzLTA0Jyk7CitT RUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNwZW9wbGUgT1JERVIgQlkg dGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsK KyAgICAgdGFibGVvaWQgICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1l IAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tCisgc2FsZXNwZW9wbGUwMV8xMCB8ICAgICAgICAgICAgICAxIHwgUG9pcm90Cisgc2Fs ZXNwZW9wbGUxMF80MCB8ICAgICAgICAgICAgIDEwIHwgTWF5Cisgc2FsZXNwZW9wbGUxMF80 MCB8ICAgICAgICAgICAgIDE5IHwgSXZhbm92Cisgc2FsZXNwZW9wbGUxMF80MCB8ICAgICAg ICAgICAgIDIwIHwgU21pcm5vZmYKKyBzYWxlc3Blb3BsZTEwXzQwIHwgICAgICAgICAgICAg MzAgfCBGb3JkCisoNSByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNwZW9w bGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNh bGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJ VElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCkpOwor U0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzcGVvcGxlIE9SREVSIEJZ IHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7 CisgICAgIHRhYmxlb2lkICAgICB8IHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFt ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLQorIHNhbGVzcGVvcGxlMDFfMTAgfCAgICAgICAgICAgICAgMSB8IFBvaXJvdAorIHNh bGVzcGVvcGxlMTBfMjAgfCAgICAgICAgICAgICAxMCB8IE1heQorIHNhbGVzcGVvcGxlMTBf MjAgfCAgICAgICAgICAgICAxOSB8IEl2YW5vdgorIHNhbGVzcGVvcGxlMjBfMzAgfCAgICAg ICAgICAgICAyMCB8IFNtaXJub2ZmCisgc2FsZXNwZW9wbGUzMF80MCB8ICAgICAgICAgICAg IDMwIHwgRm9yZAorKDUgcm93cykKKworLS0gRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9u IHRhYmxlICJzYWxlcyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNf c2FsZXNwZXJzb25faWRfZmtleSIKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoNDAsIDUw LCAgJzIwMjItMDMtMDQnKTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAi c2FsZXMiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInNhbGVzX3NhbGVzcGVy c29uX2lkX2ZrZXkiCitERVRBSUw6ICBLZXkgKHNhbGVzcGVyc29uX2lkKT0oNDApIGlzIG5v dCBwcmVzZW50IGluIHRhYmxlICJzYWxlc3Blb3BsZSIuCistLSBvaworSU5TRVJUIElOVE8g c2FsZXMgVkFMVUVTICgzMCwgNTAsICAnMjAyMi0wMy0wNCcpOworRFJPUCBUQUJMRSBzYWxl cyBDQVNDQURFOworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURFOworLS0KKy0tIFRl c3Q6IHNwbGl0IHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIHRyaWdnZXJz CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklN QVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUwMV8xMCBQ QVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOwor Q1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgUEFSVElUSU9OIE9GIHNhbGVzcGVvcGxl IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3Bs ZSBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBh ZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3Bs cGdzcWwnIEFTICRCT0RZJAorQkVHSU4KKyAgICBSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIoJSkg Y2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2ZWwgPSAlJywgVEdfQVJHVlswXSwg VEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICAgIFJFVFVSTiBOVUxMOworRU5EOworJEJP RFkkOworQ1JFQVRFIFRSSUdHRVIgc2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3N0YXRlbWVu dF90cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNwZW9wbGUKKyAgICBG T1IgRUFDSCBTVEFURU1FTlQKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRf cm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3Bs ZV9hZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBz YWxlc3Blb3BsZQorICAgIEZPUiBFQUNIIFJPVworICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFm dGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKKy0tIDIgdHJpZ2dlcnMg c2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVz cGVvcGxlIFZBTFVFUyAoMTAsICdNYXknKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9w bGUpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9X CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VS VCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFNUQVRFTUVOVAorLS0gMSB0cmlnZ2VyIHNob3Vs ZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzQwIFZBTFVF UyAoMTksICdJdmFub3YnKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNwZW9wbGUpIGNhbGxl ZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitBTFRFUiBU QUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBU TyAoMjApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVFUyBGUk9N ICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZPUiBWQUxV RVMgRlJPTSAoMzApIFRPICg0MCkpOworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJl IChyb3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgVkFMVUVTICgy MCwgJ1NtaXJub2ZmJyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzcGVvcGxlKSBjYWxsZWQ6 IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9USUNFOiAg dHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBB RlRFUiwgbGV2ZWwgPSBTVEFURU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJl IChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUzMF80MCBWQUxVRVMgKDMwLCAnRm9y ZCcpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc3Blb3BsZSkgY2FsbGVkOiBhY3Rpb24gPSBJ TlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK1NFTEVDVCB0YWJsZW9pZDo6cmVn Y2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6 OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworICAgICB0YWJsZW9pZCAgICAg fCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3Blb3BsZTAx XzEwIHwgICAgICAgICAgICAgIDEgfCBQb2lyb3QKKyBzYWxlc3Blb3BsZTEwXzIwIHwgICAg ICAgICAgICAgMTAgfCBNYXkKKyBzYWxlc3Blb3BsZTEwXzIwIHwgICAgICAgICAgICAgMTkg fCBJdmFub3YKKyBzYWxlc3Blb3BsZTIwXzMwIHwgICAgICAgICAgICAgMjAgfCBTbWlybm9m ZgorIHNhbGVzcGVvcGxlMzBfNDAgfCAgICAgICAgICAgICAzMCB8IEZvcmQKKyg1IHJvd3Mp CisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKK0RST1AgRlVOQ1RJT04gYWZ0 ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCk7CistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9u IHdpdGNoIGlkZW50aXR5IGNvbHVtbgorLS0gSWYgc3BsaXQgcGFydGl0aW9uIGNvbHVtbiBp cyBpZGVudGl0eSBjb2x1bW4sIGNvbHVtbnMgb2YgbmV3IHBhcnRpdGlvbnMgYXJlIGlkZW50 aXR5IGNvbHVtbnMgdG9vLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3Bl cnNvbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSBQUklNQVJZIEtFWSwg c2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxl c3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxXzIgUEFSVElUSU9OIE9G IHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpOworLS0gQ3JlYXRlIG5l dyBwYXJ0aXRpb24gd2l0aCBpZGVudGl0eSBjb2x1bW46CitDUkVBVEUgVEFCTEUgc2FsZXNw ZW9wbGUyXzUoc2FsZXNwZXJzb25faWQgSU5UIE5PVCBOVUxMLCBzYWxlc3BlcnNvbl9uYW1l IFZBUkNIQVIoMzApKTsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQQVJUSVRJ T04gc2FsZXNwZW9wbGUyXzUgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoNSk7CitJTlNFUlQg SU5UTyBzYWxlc3Blb3BsZSAoc2FsZXNwZXJzb25fbmFtZSkgVkFMVUVTICgnUG9pcm90Jyks ICgnSXZhbm92Jyk7CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRl ZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdz YWxlc3Blb3BsZSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBhdHRu YW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8 IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwgCiso MiByb3dzKQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBG Uk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxl c3Blb3BsZTFfMic6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBhdHRu YW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8 IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwgCiso MiByb3dzKQorCistLSBTcGxpdCBwYXJ0aXRpb24gaGFzIGlkZW50aXR5IGNvbHVtbjoKK1NF TEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmli dXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzcGVvcGxlMl81Jzo6 cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07CisgICAgIGF0dG5hbWUgICAgICB8IGF0 dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3BlcnNvbl9pZCAgIHwgYSAgICAgICAgICAg fCAKKyBzYWxlc3BlcnNvbl9uYW1lIHwgICAgICAgICAgICAgfCAKKygyIHJvd3MpCisKK0FM VEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElUIFBBUlRJVElPTiBzYWxlc3Blb3BsZTJfNSBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNwZW9wbGUyXzMgRk9SIFZBTFVFUyBGUk9NICgyKSBU TyAoMyksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzXzQgRk9SIFZBTFVFUyBGUk9NICgz KSBUTyAoNCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGU0XzUgRk9SIFZBTFVFUyBGUk9N ICg0KSBUTyAoNSkpOworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUgKHNhbGVzcGVyc29uX25h bWUpIFZBTFVFUyAoJ01heScpLCAoJ0ZvcmQnKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xh c3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRl eHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworICAgIHRhYmxlb2lkICAgIHwgc2Fs ZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzcGVvcGxlMV8yIHwgICAg ICAgICAgICAgIDEgfCBQb2lyb3QKKyBzYWxlc3Blb3BsZTJfMyB8ICAgICAgICAgICAgICAy IHwgSXZhbm92Cisgc2FsZXNwZW9wbGUzXzQgfCAgICAgICAgICAgICAgMyB8IE1heQorIHNh bGVzcGVvcGxlNF81IHwgICAgICAgICAgICAgIDQgfCBGb3JkCisoNCByb3dzKQorCitTRUxF Q1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0 ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZSc6OnJlZ2Ns YXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVu dGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisg c2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCitTRUxFQ1Qg YXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBX SEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTFfMic6OnJlZ2Ns YXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVu dGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tCisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisg c2FsZXNwZXJzb25fbmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCistLSBOZXcg cGFydGl0aW9ucyBoYXZlIGlkZW50aXR5LWNvbHVtbnM6CitTRUxFQ1QgYXR0bmFtZSwgYXR0 aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0g PiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTJfMyc6OnJlZ2NsYXNzOjpvaWQgT1JE RVIgQlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdl bmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tCisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25f bmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0 aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0g PiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTNfNCc6OnJlZ2NsYXNzOjpvaWQgT1JE RVIgQlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdl bmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tCisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25f bmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0 aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0g PiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTRfNSc6OnJlZ2NsYXNzOjpvaWQgT1JE RVIgQlkgYXR0bnVtOworICAgICBhdHRuYW1lICAgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdl bmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tCisgc2FsZXNwZXJzb25faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNwZXJzb25f bmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzcGVv cGxlIENBU0NBREU7CistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGggZGVsZXRl ZCBjb2x1bW5zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lk IElOVCBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElU SU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9w bGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9NICgxKSBU TyAoMTApOworLS0gQ3JlYXRlIG5ldyBwYXJ0aXRpb24gd2l0aCBzb21lIGRlbGV0ZWQgY29s dW1uczoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwKGQxIFZBUkNIQVIoMzApLCBz YWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQyIElOVCwgZDMgREFURSwgc2FsZXNw ZXJzb25fbmFtZSBWQVJDSEFSKDMwKSk7CitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZTEwXzQw IFZBTFVFUworICAoJ2R1bW15IHZhbHVlIDEnLCAxOSwgMTAwLCBub3coKSwgJ0l2YW5vdicp LAorICAoJ2R1bW15IHZhbHVlIDInLCAyMCwgMTAxLCBub3coKSwgJ1NtaXJub2ZmJyk7CitB TFRFUiBUQUJMRSBzYWxlc3Blb3BsZTEwXzQwIERST1AgQ09MVU1OIGQxOworQUxURVIgVEFC TEUgc2FsZXNwZW9wbGUxMF80MCBEUk9QIENPTFVNTiBkMjsKK0FMVEVSIFRBQkxFIHNhbGVz cGVvcGxlMTBfNDAgRFJPUCBDT0xVTU4gZDM7CitBTFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBB VFRBQ0ggUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgRk9SIFZBTFVFUyBGUk9NICgxMCkg VE8gKDQwKTsKK0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUworICAoMSwgJ1BvaXJv dCcpLAorICAoMTAsICdNYXknKSwKKyAgKDMwLCAnRm9yZCcpOworQUxURVIgVEFCTEUgc2Fs ZXNwZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgSU5UTworICAoUEFS VElUSU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSwK KyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRP ICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVTIEZST00g KDMwKSBUTyAoNDApKTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxl c3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIs IHNhbGVzcGVyc29uX2lkOworICAgICB0YWJsZW9pZCAgICAgfCBzYWxlc3BlcnNvbl9pZCB8 IHNhbGVzcGVyc29uX25hbWUgCistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc3Blb3BsZTAxXzEwIHwgICAgICAgICAgICAg IDEgfCBQb2lyb3QKKyBzYWxlc3Blb3BsZTEwXzIwIHwgICAgICAgICAgICAgMTAgfCBNYXkK KyBzYWxlc3Blb3BsZTEwXzIwIHwgICAgICAgICAgICAgMTkgfCBJdmFub3YKKyBzYWxlc3Bl b3BsZTIwXzMwIHwgICAgICAgICAgICAgMjAgfCBTbWlybm9mZgorIHNhbGVzcGVvcGxlMzBf NDAgfCAgICAgICAgICAgICAzMCB8IEZvcmQKKyg1IHJvd3MpCisKK0RST1AgVEFCTEUgc2Fs ZXNwZW9wbGUgQ0FTQ0FERTsKKy0tCistLSBUZXN0OiBzcGxpdCBzdWItcGFydGl0aW9uCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVz cGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUg REFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf ZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIw MjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMt MDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChz YWxlc3BlcnNvbl9pZCBJTlQsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVz X2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxl c19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHJfYWxsIFBBUlRJVElPTiBPRiBzYWxl c19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUt MDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9O IHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMx JyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKSwKKyAgKDMsICAn Rm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwgICdJdmFub3YnLCAgIDc1 MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQt MDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpLAorICAoNywg ICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4LCAgJ0VyaWNzc29uJywg MTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0w My0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4JyksCisgICgx MSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAgKDEyLCAnUGxhdG8nLCAg ICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIy LTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NF TEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0 YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOwor ICAgdGFibGVvaWQgICAgfCBzYWxlc3BlcnNvbl9pZCB8IHNhbGVzcGVyc29uX25hbWUgfCBz YWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor IHNhbGVzX2Fwcl9hbGwgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgICAgfCAg ICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgc2FsZXNfYXByX2FsbCB8ICAgICAgICAgICAg ICA0IHwgSXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBz YWxlc19hcHJfYWxsIHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgICAgIHwgICAg ICAgICAgMjUwIHwgMDQtMDctMjAyMgorIHNhbGVzX2Fwcl9hbGwgfCAgICAgICAgICAgICAx MSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgc2Fs ZXNfZmViMjAyMiB8ICAgICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICAgICB8ICAgICAg ICAgIDUwMCB8IDAyLTEwLTIwMjIKKyBzYWxlc19mZWIyMDIyIHwgICAgICAgICAgICAgIDYg fCBQb2lyb3QgICAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorIHNhbGVz X2ZlYjIwMjIgfCAgICAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgICAgfCAgICAgICAg ICAxODUgfCAwMi0yMy0yMDIyCisgc2FsZXNfamFuMjAyMiB8ICAgICAgICAgICAgICAxIHwg TWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIwMjIKKyBzYWxlc19q YW4yMDIyIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAg MzUwIHwgMDEtMjgtMjAyMgorIHNhbGVzX2phbjIwMjIgfCAgICAgICAgICAgICAxMyB8IEdh bmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgc2FsZXNfbWFy MjAyMiB8ICAgICAgICAgICAgICA3IHwgTGkgICAgICAgICAgICAgICB8ICAgICAgICAgIDE3 NSB8IDAzLTA4LTIwMjIKKyBzYWxlc19tYXIyMDIyIHwgICAgICAgICAgICAgIDkgfCBNdWxs ZXIgICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorIHNhbGVzX21hcjIw MjIgfCAgICAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgICAgfCAgICAgICAgICAzNTAg fCAwMy0xOS0yMDIyCisgc2FsZXNfb3RoZXJzICB8ICAgICAgICAgICAgIDE0IHwgU21pdGgg ICAgICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxNCByb3dzKQorCitB TFRFUiBUQUJMRSBzYWxlc19hcHIyMDIyIFNQTElUIFBBUlRJVElPTiBzYWxlc19hcHJfYWxs IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzAxXzEwIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19hcHIyMDIyXzEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTAnKSBUTyAoJzIw MjItMDQtMjAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzIwXzMwIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMjAnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitTRUxFQ1QgdGFi bGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6 OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgICAgIHRh Ymxlb2lkICAgICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2Fs ZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0KKyBzYWxlc19hcHIyMDIyXzAxXzEwIHwgICAgICAgICAgICAgIDUgfCBEZWV2ICAgICAg ICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorIHNhbGVzX2FwcjIwMjJfMDFf MTAgfCAgICAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAg fCAwNC0wNi0yMDIyCisgc2FsZXNfYXByMjAyMl8xMF8yMCB8ICAgICAgICAgICAgICA0IHwg SXZhbm92ICAgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyBzYWxlc19h cHIyMDIyXzIwXzMwIHwgICAgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAg ICAgICAyMDAwIHwgMDQtMzAtMjAyMgorIHNhbGVzX2ZlYjIwMjIgICAgICAgfCAgICAgICAg ICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIy Cisgc2FsZXNfZmViMjAyMiAgICAgICB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAg ICAgICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyBzYWxlc19mZWIyMDIyICAgICAg IHwgICAgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwg MDItMjMtMjAyMgorIHNhbGVzX2phbjIwMjIgICAgICAgfCAgICAgICAgICAgICAgMSB8IE1h eSAgICAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisgc2FsZXNfamFu MjAyMiAgICAgICB8ICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8ICAgICAg ICAgIDM1MCB8IDAxLTI4LTIwMjIKKyBzYWxlc19qYW4yMDIyICAgICAgIHwgICAgICAgICAg ICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgor IHNhbGVzX21hcjIwMjIgICAgICAgfCAgICAgICAgICAgICAgNyB8IExpICAgICAgICAgICAg ICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgc2FsZXNfbWFyMjAyMiAgICAgICB8 ICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAz LTExLTIwMjIKKyBzYWxlc19tYXIyMDIyICAgICAgIHwgICAgICAgICAgICAgMTIgfCBQbGF0 byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorIHNhbGVzX290aGVy cyAgICAgICAgfCAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAg ICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5n ZTsKKy0tCistLSBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KKy0tCistLSBUZXN0OiBzcGVj aWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorQ1JFQVRFIFRBQkxF IHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJTlQsCisgc2FsZXNwZXJzb25fbmFtZSBW QVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQg SU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0 ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBG T1IgVkFMVUVTIElOICgnT3NsbycsICdTdC4gUGV0ZXJzYnVyZycsICdIZWxzaW5raScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFM VUVTIElOICgnV2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVq aW5nJywgJ0JlcmxpbicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7 CistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX2Vhc3QiIHdvdWxkIG92ZXJsYXAg d2l0aCBhbm90aGVyIChub3Qgc3BsaXQpIHBhcnRpdGlvbiAic2FsZXNfbm9yZCIKK0FMVEVS IFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3Jr JywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAo J0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycsICdIZWxzaW5raScpLAorICAgUEFS VElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4n LCAnS3lpdicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfZWFzdCIgd291bGQg b3ZlcmxhcCB3aXRoIGFub3RoZXIgKG5vdCBzcGxpdCkgcGFydGl0aW9uICJzYWxlc19ub3Jk IgorTElORSAzOiAuLi4gRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFk aXZvc3RvaycsICdIZWxzaW5raScuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIG5ldyBwYXJ0 aXRpb24gInNhbGVzX3dlc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0 aXRpb24gInNhbGVzX2NlbnRyYWwiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBB UlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZB TFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElP TiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2 b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdX YXJzYXcnLCAnQmVybGluJywgJ0xpc2JvbicsICdLeWl2JykpOworRVJST1I6ICBuZXcgcGFy dGl0aW9uICJzYWxlc193ZXN0IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciBuZXcgcGFy dGl0aW9uICJzYWxlc19jZW50cmFsIgorTElORSAyOiAgIChQQVJUSVRJT04gc2FsZXNfd2Vz dCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywuLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBuZXcg cGFydGl0aW9uICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1c2Ug c3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3Qg U1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2Vz dCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsIE5VTEwp LAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdE ZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9S IFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpKTsKK0VSUk9SOiAgbmV3 IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhhdmUgTlVMTCB2YWx1ZSBiZWNhdXNl IHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlCitMSU5FIDI6IC4uLnNfd2VzdCBGT1Ig VkFMVUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsIE5VTEwpLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBeCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVzX3dlc3QiIGNhbm5v dCBoYXZlIHRoaXMgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9lcyBub3QgaGF2 ZQorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAn TmV3IFlvcmsnLCAnTWFkcmlkJywgJ01lbGJvdXJuZScpLAorICAgUEFSVElUSU9OIHNhbGVz X2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3Rvaycp LAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycs ICdCZXJsaW4nLCAnS3lpdicpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2Vz dCIgY2Fubm90IGhhdmUgdGhpcyB2YWx1ZSBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2Vz IG5vdCBoYXZlCitMSU5FIDI6IC4uLnN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3 IFlvcmsnLCAnTWFkcmlkJywgJ01lbGJvdXJuZS4uLgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAg bmV3IHBhcnRpdGlvbiBjYW5ub3QgYmUgREVGQVVMVCBiZWNhdXNlIERFRkFVTFQgcGFydGl0 aW9uIGFscmVhZHkgZXhpc3RzCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJ VElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVF UyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnTWVsYm91cm5lJyksCisg ICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5nJywgJ0RlbGhp JywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFM VUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JyksCisgICBQQVJUSVRJT04gc2Fs ZXNfb3RoZXJzMiBERUZBVUxUKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbiBjYW5ub3QgYmUg REVGQVVMVCBiZWNhdXNlIERFRkFVTFQgcGFydGl0aW9uIGFscmVhZHkgZXhpc3RzCitMSU5F IDU6ICAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOworICAgICAgICAgICAg ICAgICAgICAgXgorRFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRlc3Q6IHR3byBz cGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nOgorLS0gICAqIG5ldyBw YXJ0aXRpb25zIGRvIG5vdCBoYXZlIE5VTEwgdmFsdWUsIHdoaWNoIHNwbGl0IHBhcnRpdGlv biBoYXMuCistLSAgICogbmV3IHBhcnRpdGlvbnMgZG8gbm90IGhhdmUgYSB2YWx1ZSB0aGF0 IHNwbGl0IHBhcnRpdGlvbiBoYXMuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhz YWxlc3BlcnNvbl9pZCBJTlQsCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBz YWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2Rh dGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgVEFC TEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgn SGVsc2lua2knLCAnU3QuIFBldGVyc2J1cmcnLCAnT3NsbycpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3 JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5nJywgJ0Jlcmxpbics ICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJywgTlVMTCk7CistLSBFUlJPUjogIG5l dyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlIE5VTEwgYnV0IHNwbGl0IHBhcnRpdGlv biBkb2VzCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19h bGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2Jv bicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZP UiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBB UlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGlu JywgJ0t5aXYnKSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVl IE5VTEwgYnV0IHNwbGl0IHBhcnRpdGlvbiBkb2VzCistLSBFUlJPUjogIG5ldyBwYXJ0aXRp b25zIGRvIG5vdCBoYXZlIHZhbHVlICdLeWl2JyBidXQgc3BsaXQgcGFydGl0aW9uIGRvZXMK K0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnTGlzYm9uJywgJ05l dyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVF UyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9O IHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCBOVUxM KSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlICdLeWl2JyBi dXQgc3BsaXQgcGFydGl0aW9uIGRvZXMKKy0tIEVSUk9SICBERUZBVUxUIHBhcnRpdGlvbiBz aG91bGQgYmUgb25lCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBz YWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAo J0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19l YXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwK KyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAn QmVybGluJywgJ0t5aXYnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCwK KyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOworRVJST1I6ICBERUZBVUxU IHBhcnRpdGlvbiBzaG91bGQgYmUgb25lCitMSU5FIDY6ICAgIFBBUlRJVElPTiBzYWxlc19v dGhlcnMyIERFRkFVTFQpOworICAgICAgICAgICAgICAgICAgICAgXgorRFJPUCBUQUJMRSBz YWxlc19saXN0OworLS0KKy0tIFRlc3Q6IEJZIExJU1QgcGFydGl0aW9uaW5nLCBTUExJVCBQ QVJUSVRJT04gd2l0aCBkYXRhCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxl c3BlcnNvbl9pZCBTRVJJQUwsCisgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBz YWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2Rh dGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgSU5E RVggc2FsZXNfbGlzdF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBPTiBzYWxlc19saXN0IFVTSU5H IGJ0cmVlIChzYWxlc3BlcnNvbl9uYW1lKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3Nh bGVzX3N0YXRlX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc19zdGF0ZSk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1Ig VkFMVUVTIElOICgnSGVsc2lua2knLCAnU3QuIFBldGVyc2J1cmcnLCAnT3NsbycpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVT IElOICgnV2Fyc2F3JywgJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCAnQmVqaW5n JywgJ0JlcmxpbicsICdEZWxoaScsICdLeWl2JywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CitJ TlNFUlQgSU5UTyBzYWxlc19saXN0IChzYWxlc3BlcnNvbl9uYW1lLCBzYWxlc19zdGF0ZSwg c2FsZXNfYW1vdW50LCBzYWxlc19kYXRlKSBWQUxVRVMKKyAgKCdUcnVtcCcsICAgICdCZWpp bmcnLCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyksCisgICgnU21pcm5vZmYnLCAnTmV3 IFlvcmsnLCAgICAgICAgNTAwLCAnMjAyMi0wMy0wMycpLAorICAoJ0ZvcmQnLCAgICAgJ1N0 LiBQZXRlcnNidXJnJywgMjAwMCwgJzIwMjItMDMtMDUnKSwKKyAgKCdJdmFub3YnLCAgICdX YXJzYXcnLCAgICAgICAgICA3NTAsICcyMDIyLTAzLTA0JyksCisgICgnRGVldicsICAgICAn TGlzYm9uJywgICAgICAgICAgMjUwLCAnMjAyMi0wMy0wNycpLAorICAoJ1BvaXJvdCcsICAg J0JlcmxpbicsICAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKSwKKyAgKCdNYXknLCAgICAg ICdPc2xvJywgICAgICAgICAgIDEyMDAsICcyMDIyLTAzLTA2JyksCisgICgnTGknLCAgICAg ICAnVmxhZGl2b3N0b2snLCAgICAxMTUwLCAnMjAyMi0wMy0wOScpLAorICAoJ01heScsICAg ICAgJ09zbG8nLCAgICAgICAgICAgMTIwMCwgJzIwMjItMDMtMTEnKSwKKyAgKCdIYWxkZXIn LCAgICdIZWxzaW5raScsICAgICAgICA4MDAsICcyMDIyLTAzLTAyJyksCisgICgnTXVsbGVy JywgICAnTWFkcmlkJywgICAgICAgICAgNjUwLCAnMjAyMi0wMy0wNScpLAorICAoJ1NtaXRo JywgICAgJ0t5aXYnLCAgICAgICAgICAgIDM1MCwgJzIwMjItMDMtMTAnKSwKKyAgKCdHYW5k aScsICAgICdXYXJzYXcnLCAgICAgICAgICAxNTAsICcyMDIyLTAzLTA4JyksCisgICgnUGxh dG8nLCAgICAnTGlzYm9uJywgICAgICAgICAgOTUwLCAnMjAyMi0wMy0wNScpOworQUxURVIg VEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsn LCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgn QmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNf Y2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOwor U0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX2xpc3QgT1JERVIgQlkg dGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsK KyAgIHRhYmxlb2lkICAgIHwgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwg IHNhbGVzX3N0YXRlICAgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgc2FsZXNfY2VudHJhbCB8ICAg ICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICAgICB8IFdhcnNhdyAgICAgICAgIHwgICAg ICAgICAgNzUwIHwgMDMtMDQtMjAyMgorIHNhbGVzX2NlbnRyYWwgfCAgICAgICAgICAgICAg NiB8IFBvaXJvdCAgICAgICAgICAgfCBCZXJsaW4gICAgICAgICB8ICAgICAgICAgMTAwMCB8 IDAzLTAxLTIwMjIKKyBzYWxlc19jZW50cmFsIHwgICAgICAgICAgICAgMTIgfCBTbWl0aCAg ICAgICAgICAgIHwgS3lpdiAgICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xMC0yMDIy Cisgc2FsZXNfY2VudHJhbCB8ICAgICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICAgICB8 IFdhcnNhdyAgICAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorIHNhbGVzX2Vh c3QgICAgfCAgICAgICAgICAgICAgMSB8IFRydW1wICAgICAgICAgICAgfCBCZWppbmcgICAg ICAgICB8ICAgICAgICAgMTAwMCB8IDAzLTAxLTIwMjIKKyBzYWxlc19lYXN0ICAgIHwgICAg ICAgICAgICAgIDggfCBMaSAgICAgICAgICAgICAgIHwgVmxhZGl2b3N0b2sgICAgfCAgICAg ICAgIDExNTAgfCAwMy0wOS0yMDIyCisgc2FsZXNfbm9yZCAgICB8ICAgICAgICAgICAgICAz IHwgRm9yZCAgICAgICAgICAgICB8IFN0LiBQZXRlcnNidXJnIHwgICAgICAgICAyMDAwIHwg MDMtMDUtMjAyMgorIHNhbGVzX25vcmQgICAgfCAgICAgICAgICAgICAgNyB8IE1heSAgICAg ICAgICAgICAgfCBPc2xvICAgICAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTA2LTIwMjIK KyBzYWxlc19ub3JkICAgIHwgICAgICAgICAgICAgIDkgfCBNYXkgICAgICAgICAgICAgIHwg T3NsbyAgICAgICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0xMS0yMDIyCisgc2FsZXNfbm9y ZCAgICB8ICAgICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICAgICB8IEhlbHNpbmtpICAg ICAgIHwgICAgICAgICAgODAwIHwgMDMtMDItMjAyMgorIHNhbGVzX3dlc3QgICAgfCAgICAg ICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgICAgfCBOZXcgWW9yayAgICAgICB8ICAgICAg ICAgIDUwMCB8IDAzLTAzLTIwMjIKKyBzYWxlc193ZXN0ICAgIHwgICAgICAgICAgICAgIDUg fCBEZWV2ICAgICAgICAgICAgIHwgTGlzYm9uICAgICAgICAgfCAgICAgICAgICAyNTAgfCAw My0wNy0yMDIyCisgc2FsZXNfd2VzdCAgICB8ICAgICAgICAgICAgIDExIHwgTXVsbGVyICAg ICAgICAgICB8IE1hZHJpZCAgICAgICAgIHwgICAgICAgICAgNjUwIHwgMDMtMDUtMjAyMgor IHNhbGVzX3dlc3QgICAgfCAgICAgICAgICAgICAxNCB8IFBsYXRvICAgICAgICAgICAgfCBM aXNib24gICAgICAgICB8ICAgICAgICAgIDk1MCB8IDAzLTA1LTIwMjIKKygxNCByb3dzKQor CistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMgYWZ0ZXIgc3BsaXR0aW5n IHBhcnRpdGlvbgorU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworRVhQTEFJTiAoQ09TVFMg T0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2NlbnRyYWwgV0hFUkUgc2FsZXNfc3RhdGUgPSAn V2Fyc2F3JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcg c2FsZXNfY2VudHJhbF9zYWxlc19zdGF0ZV9pZHggb24gc2FsZXNfY2VudHJhbAorICAgSW5k ZXggQ29uZDogKChzYWxlc19zdGF0ZSk6OnRleHQgPSAnV2Fyc2F3Jzo6dGV4dCkKKygyIHJv d3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfY2VudHJhbCBXSEVSRSBzYWxlc19zdGF0ZSA9 ICdXYXJzYXcnOworIHNhbGVzcGVyc29uX2lkIHwgc2FsZXNwZXJzb25fbmFtZSB8IHNhbGVz X3N0YXRlIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgV2Fyc2F3ICAg ICAgfCAgICAgICAgICA3NTAgfCAwMy0wNC0yMDIyCisgICAgICAgICAgICAgMTMgfCBHYW5k aSAgICAgICAgICAgIHwgV2Fyc2F3ICAgICAgfCAgICAgICAgICAxNTAgfCAwMy0wOC0yMDIy CisoMiByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2FsZXNf bGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNf Y2VudHJhbF9zYWxlc19zdGF0ZV9pZHggb24gc2FsZXNfY2VudHJhbCBzYWxlc19saXN0Cisg ICBJbmRleCBDb25kOiAoKHNhbGVzX3N0YXRlKTo6dGV4dCA9ICdXYXJzYXcnOjp0ZXh0KQor KDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzX3N0YXRl ID0gJ1dhcnNhdyc7Cisgc2FsZXNwZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2Fs ZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcg ICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAgICAxMyB8IEdh bmRpICAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIw MjIKKygyIHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBzYWxl c19saXN0IFdIRVJFIHNhbGVzcGVyc29uX25hbWUgPSAnSXZhbm92JzsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEFwcGVuZAorICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfZWFzdF9z YWxlc3BlcnNvbl9uYW1lX2lkeCBvbiBzYWxlc19lYXN0IHNhbGVzX2xpc3RfMQorICAgICAg ICAgSW5kZXggQ29uZDogKChzYWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFub3YnOjp0 ZXh0KQorICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgc2FsZXNfY2VudHJhbF9zYWxlc3BlcnNv bl9uYW1lX2lkeCBvbiBzYWxlc19jZW50cmFsIHNhbGVzX2xpc3RfMgorICAgICAgICAgSW5k ZXggQ29uZDogKChzYWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFub3YnOjp0ZXh0KQor ICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gc2FsZXNfbm9yZCBzYWxlc19saXN0XzMKKyAg ICAgICAgIFJlY2hlY2sgQ29uZDogKChzYWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFu b3YnOjp0ZXh0KQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHNhbGVzX25v cmRfc2FsZXNwZXJzb25fbmFtZV9pZHgKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgo c2FsZXNwZXJzb25fbmFtZSk6OnRleHQgPSAnSXZhbm92Jzo6dGV4dCkKKyAgIC0+ICBJbmRl eCBTY2FuIHVzaW5nIHNhbGVzX3dlc3Rfc2FsZXNwZXJzb25fbmFtZV9pZHggb24gc2FsZXNf d2VzdCBzYWxlc19saXN0XzQKKyAgICAgICAgIEluZGV4IENvbmQ6ICgoc2FsZXNwZXJzb25f bmFtZSk6OnRleHQgPSAnSXZhbm92Jzo6dGV4dCkKKyAgIC0+ICBCaXRtYXAgSGVhcCBTY2Fu IG9uIHNhbGVzX290aGVycyBzYWxlc19saXN0XzUKKyAgICAgICAgIFJlY2hlY2sgQ29uZDog KChzYWxlc3BlcnNvbl9uYW1lKTo6dGV4dCA9ICdJdmFub3YnOjp0ZXh0KQorICAgICAgICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHNhbGVzX290aGVyc19zYWxlc3BlcnNvbl9uYW1l X2lkeAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKChzYWxlc3BlcnNvbl9uYW1lKTo6 dGV4dCA9ICdJdmFub3YnOjp0ZXh0KQorKDE1IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2Fs ZXNfbGlzdCBXSEVSRSBzYWxlc3BlcnNvbl9uYW1lID0gJ0l2YW5vdic7Cisgc2FsZXNwZXJz b25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg NCB8IEl2YW5vdiAgICAgICAgICAgfCBXYXJzYXcgICAgICB8ICAgICAgICAgIDc1MCB8IDAz LTA0LTIwMjIKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxF IHNhbGVzX2xpc3Q7CistLQorLS0gVGVzdCBmb3I6CistLSAgICogc3BsaXQgREVGQVVMVCBw YXJ0aXRpb24gdG8gcGFydGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kczsKKy0t ICAgKiByYW5kb20gb3JkZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJVCBQQVJUSVRJT04gY29t bWFuZC4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElO VCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2Fs ZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRF IFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAgIDEw MDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDIt MDknKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAoNCwg ICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAgICAg MjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0w Mi0wNycpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisgICg4 LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVyJywg ICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIy LTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwKKyAg KDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5kaScs ICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIw MjItMDUtMDQnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxULAor ICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAzLTAxJykgVE8gKCcyMDIyLTAzLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfamFu MjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjIt MDEtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyXzFkZWNhZGUgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMi0xMCcpLAorICAgUEFSVElUSU9O IHNhbGVzX2FwcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA0LTEwJykpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9N IHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRF ICJDIiwgc2FsZXNwZXJzb25faWQ7CisgICAgICAgdGFibGVvaWQgICAgICAgIHwgc2FsZXNw ZXJzb25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0 ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHNhbGVzX2FwcjIwMjJf MWRlY2FkZSB8ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAg IDI1MCB8IDA0LTA3LTIwMjIKKyBzYWxlc19hcHIyMDIyXzFkZWNhZGUgfCAgICAgICAgICAg ICAxMSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisg c2FsZXNfZmViMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAg ICAgIHwgICAgICAgICAgNTAwIHwgMDItMDktMjAyMgorIHNhbGVzX2ZlYjIwMjJfMWRlY2Fk ZSB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8 IDAyLTA3LTIwMjIKKyBzYWxlc19qYW4yMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAxMyB8 IEdhbmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgc2FsZXNf bWFyMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwg ICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAg ICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMx LTIwMjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAgMyB8IEZvcmQg ICAgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgc2FsZXNfb3RoZXJz ICAgICAgICAgIHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAg ICAgNzUwIHwgMDQtMTMtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAg ICAgICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIK KyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAg ICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAg ICAgIHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUw IHwgMDEtMjgtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgIDEy IHwgUGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyBzYWxl c19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAg fCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIyCisoMTQgcm93cykKKworRFJPUCBUQUJMRSBz YWxlc19yYW5nZTsKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBzcGxpdCBub24tREVGQVVM VCBwYXJ0aXRpb24gdG8gcGFydGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kczsK Ky0tICAgKiByYW5kb20gb3JkZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJVCBQQVJUSVRJT04g Y29tbWFuZC4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lk IElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwg c2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wNS0wMScpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEt MzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0wOScpLAorICAoMywg ICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAg NzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0w NC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3JyksCisgICg3 LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24n LCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIy LTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAg KDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycs ICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIw MjItMDEtMDknKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX21hcjIwMjJfMWRlY2FkZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAzLTEwJyksCisgICBQQVJU SVRJT04gc2FsZXNfamFuMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEt MDEnKSBUTyAoJzIwMjItMDEtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyXzFk ZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMi0xMCcp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNf b3RoZXJzIERFRkFVTFQpOworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNh bGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJD Iiwgc2FsZXNwZXJzb25faWQ7CisgICAgICAgdGFibGVvaWQgICAgICAgIHwgc2FsZXNwZXJz b25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHNhbGVzX2FwcjIwMjJfMWRl Y2FkZSB8ICAgICAgICAgICAgICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1 MCB8IDA0LTA3LTIwMjIKKyBzYWxlc19hcHIyMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAx MSB8IFRydW1wICAgICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgc2Fs ZXNfZmViMjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgICAg IHwgICAgICAgICAgNTAwIHwgMDItMDktMjAyMgorIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSB8 ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAy LTA3LTIwMjIKKyBzYWxlc19qYW4yMDIyXzFkZWNhZGUgfCAgICAgICAgICAgICAxMyB8IEdh bmRpICAgICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0wOS0yMDIyCisgc2FsZXNfbWFy MjAyMl8xZGVjYWRlIHwgICAgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgICAgIHwgICAg ICAgICAgMTc1IHwgMDMtMDgtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAg ICAgICAgICAxIHwgTWF5ICAgICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAxLTMxLTIw MjIKKyBzYWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAgMyB8IEZvcmQgICAg ICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgc2FsZXNfb3RoZXJzICAg ICAgICAgIHwgICAgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgICAgIHwgICAgICAgICAg NzUwIHwgMDQtMTMtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAg ICA4IHwgRXJpY3Nzb24gICAgICAgICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyBz YWxlc19vdGhlcnMgICAgICAgICAgfCAgICAgICAgICAgICAgOSB8IE11bGxlciAgICAgICAg ICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgc2FsZXNfb3RoZXJzICAgICAgICAg IHwgICAgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwg MDEtMjgtMjAyMgorIHNhbGVzX290aGVycyAgICAgICAgICB8ICAgICAgICAgICAgIDEyIHwg UGxhdG8gICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKygxMyByb3dz KQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworLS0KKy0tIFRlc3QgZm9yIHNwbGl0IG5v bi1ERUZBVUxUIHBhcnRpdGlvbiB0byBERUZBVUxUIHBhcnRpdGlvbiArIHBhcnRpdGlvbnMK Ky0tIHdpdGggc3BhY2VzIGJldHdlZW4gYm91bmRzLgorLS0KK0NSRUFURSBUQUJMRSBzYWxl c19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIo MzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBS QU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgn MjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0w MScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAg ICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAy Mi0wMi0xMCcpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisg ICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldics ICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcy MDIyLTAyLTExJyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwK KyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxs ZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAg JzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicp LAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dh bmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2Fw cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w Mi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBE RUZBVUxUKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcs ICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAq IEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENP TExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKyAgIHRhYmxlb2lkICAgIHwgc2FsZXNwZXJz b25faWQgfCBzYWxlc3BlcnNvbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAK Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBzYWxlc19hcHIyMDIyIHwgICAgICAgICAg ICAgIDMgfCBGb3JkICAgICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgor IHNhbGVzX2FwcjIwMjIgfCAgICAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgICAgfCAg ICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgc2FsZXNfYXByMjAyMiB8ICAgICAgICAgICAg ICA1IHwgRGVldiAgICAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyBz YWxlc19hcHIyMDIyIHwgICAgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgICAgIHwgICAg ICAgICAgMzgwIHwgMDQtMDYtMjAyMgorIHNhbGVzX2ZlYjIwMjIgfCAgICAgICAgICAgICAg MiB8IFNtaXJub2ZmICAgICAgICAgfCAgICAgICAgICA1MDAgfCAwMi0xMC0yMDIyCisgc2Fs ZXNfZmViMjAyMiB8ICAgICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICAgICB8ICAgICAg ICAgIDE1MCB8IDAyLTExLTIwMjIKKyBzYWxlc19mZWIyMDIyIHwgICAgICAgICAgICAgIDgg fCBFcmljc3NvbiAgICAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorIHNhbGVz X2phbjIwMjIgfCAgICAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgICAgfCAgICAgICAg IDEwMDAgfCAwMS0zMS0yMDIyCisgc2FsZXNfamFuMjAyMiB8ICAgICAgICAgICAgIDEwIHwg SGFsZGVyICAgICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyBzYWxlc19q YW4yMDIyIHwgICAgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgICAgIHwgICAgICAgICAg Mzc3IHwgMDEtMDktMjAyMgorIHNhbGVzX290aGVycyAgfCAgICAgICAgICAgICAgNyB8IExp ICAgICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgc2FsZXNfb3Ro ZXJzICB8ICAgICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICAgICB8ICAgICAgICAgIDI1 MCB8IDAzLTExLTIwMjIKKyBzYWxlc19vdGhlcnMgIHwgICAgICAgICAgICAgMTIgfCBQbGF0 byAgICAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorIHNhbGVzX290aGVy cyAgfCAgICAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgICAgfCAgICAgICAgICA1MTAg fCAwNS0wNC0yMDIyCisoMTQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0t CistLSBUcnkgdG8gU1BMSVQgcGFydGl0aW9uIG9mIGFub3RoZXIgdGFibGUuCistLQorQ1JF QVRFIFRBQkxFIHQxKGkgaW50LCB0IHRleHQpIFBBUlRJVElPTiBCWSBMSVNUICh0KTsKK0NS RUFURSBUQUJMRSB0MXBhIFBBUlRJVElPTiBPRiB0MSBGT1IgVkFMVUVTIElOICgnQScpOwor Q1JFQVRFIFRBQkxFIHQyIChpIGludCwgdCB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0UgKHQp OworLS0gRVJST1I6ICByZWxhdGlvbiAidDFwYSIgaXMgbm90IGEgcGFydGl0aW9uIG9mIHJl bGF0aW9uICJ0MiIKK0FMVEVSIFRBQkxFIHQyIFNQTElUIFBBUlRJVElPTiB0MXBhIElOVE8K KyAgIChQQVJUSVRJT04gdDJhIEZPUiBWQUxVRVMgRlJPTSAoJ0EnKSBUTyAoJ0InKSwKKyAg ICBQQVJUSVRJT04gdDJiIEZPUiBWQUxVRVMgRlJPTSAoJ0InKSBUTyAoJ0MnKSk7CitFUlJP UjogIHJlbGF0aW9uICJ0MXBhIiBpcyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInQy IgorSElOVDogIEFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT05TIGNhbiBvbmx5IHNw bGl0IHBhcnRpdGlvbnMgZG9uJ3QgaGF2ZSBzdWItcGFydGl0aW9ucworRFJPUCBUQUJMRSB0 MjsKK0RST1AgVEFCTEUgdDE7CistLQorLS0gVHJ5IHRvIFNQTElUIHBhcnRpdGlvbiBvZiB0 ZW1wb3JhcnkgdGFibGUuCistLQorQ1JFQVRFIFRFTVAgVEFCTEUgdCAoaSBpbnQpIFBBUlRJ VElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8wXzIgUEFSVElUSU9O IE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitTRUxFQ1QgYy5vaWQ6OnBnX2Nh dGFsb2cucmVnY2xhc3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQs IGMub2lkKSwgYy5yZWxwZXJzaXN0ZW5jZQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3Mg YywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxp ZCBBTkQgaS5pbmhwYXJlbnQgPSAndCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFs b2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5v aWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dCBDT0xMQVRFICJDIjsK KyAgb2lkICAgfCAgICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICB8IHJlbHBlcnNpc3RlbmNl IAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tCisgdHBfMF8yIHwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMikgfCB0CisoMSByb3cp CisKKy0tIEVSUk9SOiAgY2Fubm90IGNyZWF0ZSBhIHBlcm1hbmVudCByZWxhdGlvbiBhcyBw YXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJlbGF0aW9uICJ0IgorQUxURVIgVEFCTEUgdCBTUExJ VCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJP TSAoMSkgVE8gKDIpKTsKK0VSUk9SOiAgY2Fubm90IGNyZWF0ZSBhIHBlcm1hbmVudCByZWxh dGlvbiBhcyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJlbGF0aW9uICJ0IgorQUxURVIgVEFC TEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiBwZ190ZW1w LnRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiBwZ190 ZW1wLnRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CistLSBQYXJ0aXRpb25z IHNob3VsZCBiZSB0ZW1wb3JhcnkuCitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xh c3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSwgYy5y ZWxwZXJzaXN0ZW5jZQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxv Zy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhw YXJlbnQgPSAndCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4 cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFs b2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dCBDT0xMQVRFICJDIjsKKyAgb2lkICAgfCAg ICAgICAgcGdfZ2V0X2V4cHIgICAgICAgICB8IHJlbHBlcnNpc3RlbmNlIAorLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tCisgdHBfMF8x IHwgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSkgfCB0CisgdHBfMV8yIHwgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMikgfCB0CisoMiByb3dzKQorCitEUk9QIFRBQkxFIHQ7CistLSBD aGVjayB0aGUgbmV3IHBhcnRpdGlvbnMgaW5oZXJpdCBwYXJlbnQncyB0YWJsZXNwYWNlCitD UkVBVEUgVEFCTEUgdCAoaSBpbnQgUFJJTUFSWSBLRVkgVVNJTkcgSU5ERVggVEFCTEVTUEFD RSByZWdyZXNzX3RibHNwYWNlKQorICBQQVJUSVRJT04gQlkgUkFOR0UgKGkpIFRBQkxFU1BB Q0UgcmVncmVzc190YmxzcGFjZTsKK0NSRUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9G IHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBB UlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZS T00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgx KSBUTyAoMikpOworU0VMRUNUIHRhYmxlbmFtZSwgdGFibGVzcGFjZSBGUk9NIHBnX3RhYmxl cworICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBfMScsICd0cF8xXzInKSBBTkQg c2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJworICBPUkRFUiBCWSB0YWJs ZW5hbWUgQ09MTEFURSAiQyIsIHRhYmxlc3BhY2UgQ09MTEFURSAiQyI7CisgdGFibGVuYW1l IHwgICAgdGFibGVzcGFjZSAgICAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQor IHQgICAgICAgICB8IHJlZ3Jlc3NfdGJsc3BhY2UKKyB0cF8wXzEgICAgfCByZWdyZXNzX3Ri bHNwYWNlCisgdHBfMV8yICAgIHwgcmVncmVzc190YmxzcGFjZQorKDMgcm93cykKKworU0VM RUNUIHRhYmxlbmFtZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNlIEZST00gcGdfaW5kZXhlcwor ICBXSEVSRSB0YWJsZW5hbWUgSU4gKCd0JywgJ3RwXzBfMScsICd0cF8xXzInKSBBTkQgc2No ZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJworICBPUkRFUiBCWSB0YWJsZW5h bWUgQ09MTEFURSAiQyIsIGluZGV4bmFtZSBDT0xMQVRFICJDIiwgdGFibGVzcGFjZSBDT0xM QVRFICJDIjsKKyB0YWJsZW5hbWUgfCAgaW5kZXhuYW1lICB8ICAgIHRhYmxlc3BhY2UgICAg CistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAg ICAgICB8IHRfcGtleSAgICAgIHwgcmVncmVzc190YmxzcGFjZQorIHRwXzBfMSAgICB8IHRw XzBfMV9wa2V5IHwgcmVncmVzc190YmxzcGFjZQorIHRwXzFfMiAgICB8IHRwXzFfMl9wa2V5 IHwgcmVncmVzc190YmxzcGFjZQorKDMgcm93cykKKworRFJPUCBUQUJMRSB0OworLS0gQ2hl Y2sgbmV3IHBhcnRpdGlvbnMgaW5oZXJpdHMgcGFyZW50J3MgdGFibGUgYWNjZXNzIG1ldGhv ZAorQ1JFQVRFIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9uX3NwbGl0X2hlYXAgVFlQRSBUQUJM RSBIQU5ETEVSIGhlYXBfdGFibGVhbV9oYW5kbGVyOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50 KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpIFVTSU5HIHBhcnRpdGlvbl9zcGxpdF9oZWFwOwor Q1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDAp IFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisg IChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFS VElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitTRUxFQ1QgYy5y ZWxuYW1lLCBhLmFtbmFtZQorRlJPTSBwZ19jbGFzcyBjIEpPSU4gcGdfYW0gYSBPTiBjLnJl bGFtID0gYS5vaWQKK1dIRVJFIGMub2lkIElOICgndCc6OnJlZ2NsYXNzLCAndHBfMF8xJzo6 cmVnY2xhc3MsICd0cF8xXzInOjpyZWdjbGFzcykKK09SREVSIEJZIGMucmVsbmFtZSBDT0xM QVRFICJDIjsKKyByZWxuYW1lIHwgICAgICAgIGFtbmFtZSAgICAgICAgCistLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgfCBwYXJ0aXRpb25fc3BsaXRfaGVh cAorIHRwXzBfMSAgfCBwYXJ0aXRpb25fc3BsaXRfaGVhcAorIHRwXzFfMiAgfCBwYXJ0aXRp b25fc3BsaXRfaGVhcAorKDMgcm93cykKKworRFJPUCBUQUJMRSB0OworRFJPUCBBQ0NFU1Mg TUVUSE9EIHBhcnRpdGlvbl9zcGxpdF9oZWFwOworLS0gVGVzdCBwZXJtaXNzaW9uIGNoZWNr cy4gIFRoZSB1c2VyIG5lZWRzIHRvIG93biB0aGUgcGFyZW50IHRhYmxlIGFuZCB0aGUKKy0t IHRoZSBwYXJ0aXRpb24gdG8gc3BsaXQgdG8gZG8gdGhlIHNwbGl0LgorQ1JFQVRFIFJPTEUg cmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgUk9MRSByZWdyZXNzX3Bh cnRpdGlvbl9zcGxpdF9ib2I7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitHUkFOVCBBTEwg T04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25f c3BsaXRfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlv bl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIFJB TkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMik7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3Nf cGFydGl0aW9uX3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRw XzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8g KDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7 CitFUlJPUjogIG11c3QgYmUgb3duZXIgb2YgdGFibGUgdAorUkVTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OOworQUxURVIgVEFCTEUgdCBPV05FUiBUTyByZWdyZXNzX3BhcnRpdGlvbl9z cGxpdF9ib2I7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFydGl0aW9u X3NwbGl0X2JvYjsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRP CisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAg UEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitFUlJPUjog IG11c3QgYmUgb3duZXIgb2YgdGFibGUgdHBfMF8yCitSRVNFVCBTRVNTSU9OIEFVVEhPUkla QVRJT047CitBTFRFUiBUQUJMRSB0cF8wXzIgT1dORVIgVE8gcmVncmVzc19wYXJ0aXRpb25f c3BsaXRfYm9iOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlv bl9zcGxpdF9ib2I7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5U TworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAg IFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworUkVTRVQg U0VTU0lPTiBBVVRIT1JJWkFUSU9OOworRFJPUCBUQUJMRSB0OworUkVWT0tFIEFMTCBPTiBT Q0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX3Nw bGl0X2FsaWNlOworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVt YSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0RST1AgUk9MRSByZWdyZXNz X3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9z cGxpdF9ib2I7CistLSBTcGxpdCBwYXJ0aXRpb24gb2YgYSB0ZW1wb3JhcnkgdGFibGUgd2hl biBvbmUgb2YgdGhlIHBhcnRpdGlvbnMgYWZ0ZXIKKy0tIHNwbGl0IGhhcyB0aGUgc2FtZSBu YW1lIGFzIHRoZSBwYXJ0aXRpb24gYmVpbmcgc3BsaXQKK0NSRUFURSBURU1QIFRBQkxFIHQg KGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGEpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBf MCBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRB QkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzAgSU5UTworICAoUEFSVElUSU9OIHBnX3RlbXAu dHBfMCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiBwZ190ZW1w LnRwXzEgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikpOworRFJPUCBUQUJMRSB0OworLS0g Q2hlY2sgZGVmYXVsdHMgYW5kIGNvbnN0cmFpbnRzIG9mIG5ldyBwYXJ0aXRpb25zCitDUkVB VEUgVEFCTEUgdF9iaWdpbnQgKAorICBiIGJpZ2ludCwKKyAgaSBpbnQgREVGQVVMVCAoMysx MCksCisgIGogaW50IERFRkFVTFQgMTAxLAorICBrIGludCBHRU5FUkFURUQgQUxXQVlTIEFT IChiKzEwKSBTVE9SRUQKKykKK1BBUlRJVElPTiBCWSBSQU5HRSAoYik7CitDUkVBVEUgVEFC TEUgdF9iaWdpbnRfZGVmYXVsdCBQQVJUSVRJT04gT0YgdF9iaWdpbnQgREVGQVVMVDsKKy0t IFNob3cgZGVmYXVsdHMvY29uc3RyYWludHMgYmVmb3JlIFNQTElUIFBBUlRJVElPTgorXGQr IHRfYmlnaW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFydGl0aW9u ZWQgdGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEudF9iaWdpbnQiCisgQ29sdW1uIHwg IFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgRGVmYXVs dCAgICAgICAgICAgICAgICB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlv biAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLQorIGIgICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAgfCAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAg IHwgICAgICAgICAgICAgIHwgCisgaSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgMyArIDEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWlu ICAgfCAgICAgICAgICAgICAgfCAKKyBqICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwg ICAgICAgICAgfCAxMDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxh aW4gICB8ICAgICAgICAgICAgICB8IAorIGsgICAgICB8IGludGVnZXIgfCAgICAgICAgICAg fCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdheXMgYXMgKChiICsgMTApKSBzdG9yZWQgfCBw bGFpbiAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRpb24ga2V5OiBSQU5HRSAoYikKK1Bh cnRpdGlvbnM6IHRfYmlnaW50X2RlZmF1bHQgREVGQVVMVAorCitcZCsgdF9iaWdpbnRfZGVm YXVsdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInBhcnRp dGlvbl9zcGxpdF9zY2hlbWEudF9iaWdpbnRfZGVmYXVsdCIKKyBDb2x1bW4gfCAgVHlwZSAg IHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAg ICAgICAgICAgIHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tCisgYiAgICAgIHwgYmlnaW50ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAg ICAgICAgICAgfCAKKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAg fCAzICsgMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAg ICAgICAgICAgICB8IAorIGogICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAg ICB8IDEwMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwg ICAgICAgICAgICAgIHwgCisgayAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgZ2VuZXJhdGVkIGFsd2F5cyBhcyAoKGIgKyAxMCkpIHN0b3JlZCB8IHBsYWluICAg fCAgICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBvZjogdF9iaWdpbnQgREVGQVVMVAorTm8g cGFydGl0aW9uIGNvbnN0cmFpbnQKKworQUxURVIgVEFCTEUgdF9iaWdpbnQgU1BMSVQgUEFS VElUSU9OIHRfYmlnaW50X2RlZmF1bHQgSU5UTworICAoUEFSVElUSU9OIHRfYmlnaW50XzAx XzEwIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKSwKKyAgIFBBUlRJVElPTiB0X2JpZ2lu dF9kZWZhdWx0IERFRkFVTFQpOworLS0gU2hvdyBkZWZhdWx0cy9jb25zdHJhaW50cyBhZnRl ciBTUExJVCBQQVJUSVRJT04KK1xkKyB0X2JpZ2ludF9kZWZhdWx0CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicGFydGl0aW9uX3NwbGl0X3NjaGVtYS50 X2JpZ2ludF9kZWZhdWx0IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxs YWJsZSB8ICAgICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAgfCBTdG9yYWdl IHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBiICAgICAg fCBiaWdpbnQgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGkgICAg ICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IDMgKyAxMCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgaiAg ICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgMTAxICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBr ICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3 YXlzIGFzICgoYiArIDEwKSkgc3RvcmVkIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAor UGFydGl0aW9uIG9mOiB0X2JpZ2ludCBERUZBVUxUCitQYXJ0aXRpb24gY29uc3RyYWludDog KE5PVCAoKGIgSVMgTk9UIE5VTEwpIEFORCAoKGIgPj0gJzAnOjpiaWdpbnQpIEFORCAoYiA8 ICcxMCc6OmJpZ2ludCkpKSkKKworXGQrIHRfYmlnaW50XzAxXzEwCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInBhcnRpdGlvbl9zcGxpdF9zY2hlbWEu dF9iaWdpbnRfMDFfMTAiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxh YmxlIHwgICAgICAgICAgICAgICAgRGVmYXVsdCAgICAgICAgICAgICAgICB8IFN0b3JhZ2Ug fCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGIgICAgICB8 IGJpZ2ludCAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgaSAgICAg IHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgMyArIDEwICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBqICAg ICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAxMDEgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAorIGsg ICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IGdlbmVyYXRlZCBhbHdh eXMgYXMgKChiICsgMTApKSBzdG9yZWQgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitQ YXJ0aXRpb24gb2Y6IHRfYmlnaW50IEZPUiBWQUxVRVMgRlJPTSAoJzAnKSBUTyAoJzEwJykK K1BhcnRpdGlvbiBjb25zdHJhaW50OiAoKGIgSVMgTk9UIE5VTEwpIEFORCAoYiA+PSAnMCc6 OmJpZ2ludCkgQU5EIChiIDwgJzEwJzo6YmlnaW50KSkKKworRFJPUCBUQUJMRSB0X2JpZ2lu dDsKKy0tIFRlc3Q6IG93bmVyIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBiZSB0aGUgc2Ft ZSBhcyBvd25lciBvZiBzcGxpdCBwYXJ0aXRpb24KK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFy dGl0aW9uX3NwbGl0X2FsaWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3Bs aXRfc2NoZW1hIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFRB QkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworU0VUIFNFU1NJT04gQVVU SE9SSVpBVElPTiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKK0NSRUFURSBUQUJM RSB0cF8wXzIoaSBpbnQpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworQUxURVIg VEFCTEUgdCBBVFRBQ0ggUEFSVElUSU9OIHRwXzBfMiBGT1IgVkFMVUVTIEZST00gKDApIFRP ICgyKTsKKy0tIE93bmVyIGlzICdyZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6Citc ZHQgdHBfMF8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgdGFibGVz CisgICAgICAgICBTY2hlbWEgICAgICAgICB8ICBOYW1lICB8IFR5cGUgIHwgICAgICAgICAg ICAgT3duZXIgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9u X3NwbGl0X3NjaGVtYSB8IHRwXzBfMiB8IHRhYmxlIHwgcmVncmVzc19wYXJ0aXRpb25fc3Bs aXRfYWxpY2UKKygxIHJvdykKKworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBf MF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAo MSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsK Ky0tIE93bmVyIHNob3VsZCBiZSAncmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UnOgor XGR0IHRwXzBfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHRhYmxl cworICAgICAgICAgU2NoZW1hICAgICAgICAgfCAgTmFtZSAgfCBUeXBlICB8ICAgICAgICAg ICAgIE93bmVyICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlv bl9zcGxpdF9zY2hlbWEgfCB0cF8wXzEgfCB0YWJsZSB8IHJlZ3Jlc3NfcGFydGl0aW9uX3Nw bGl0X2FsaWNlCisoMSByb3cpCisKK1xkdCB0cF8xXzIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGlzdCBvZiB0YWJsZXMKKyAgICAgICAgIFNjaGVtYSAgICAgICAgIHwgIE5h bWUgIHwgVHlwZSAgfCAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIHwgdHBfMV8yIHwgdGFibGUg fCByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZQorKDEgcm93KQorCitEUk9QIFRBQkxF IHQ7CitSRVZPS0UgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIEZST00g cmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0 aXRpb25fc3BsaXRfYWxpY2U7CistLSBUZXN0OiBpbmRleCBvZiBuZXcgcGFydGl0aW9ucyBz aG91bGQgYmUgY3JlYXRlZCB3aXRoIHNhbWUgb3duZXIgYXMgc3BsaXQKKy0tIHBhcnRpdGlv bgorQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitHUkFOVCBB TEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRp b25fc3BsaXRfYWxpY2U7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcGFy dGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04g QlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzEwXzIwIFBBUlRJVElPTiBPRiB0IEZP UiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitJTlNFUlQgSU5UTyB0IFZBTFVFUyAoMTEp LCAoMTYpOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gcnVuX21lKGludGVnZXIpIFJF VFVSTlMgaW50ZWdlciBBUyAkJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICd5b3UgYXJlIHJ1 bm5pbmcgbWUgYXMgJScsIENVUlJFTlRfVVNFUjsKKyAgUkVUVVJOICQxOworRU5ECiskJCBM QU5HVUFHRSBQTFBHU1FMIElNTVVUQUJMRTsKKy0tIE93bmVyIGlzICdyZWdyZXNzX3BhcnRp dGlvbl9zcGxpdF9hbGljZSc6CitDUkVBVEUgSU5ERVggT04gdCAocnVuX21lKGkpKTsKK05P VElDRTogIHlvdSBhcmUgcnVubmluZyBtZSBhcyByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9h bGljZQorTk9USUNFOiAgeW91IGFyZSBydW5uaW5nIG1lIGFzIHJlZ3Jlc3NfcGFydGl0aW9u X3NwbGl0X2FsaWNlCitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CistLSBPd25lciBz aG91bGQgYmUgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK0FMVEVSIFRBQkxF IHQgU1BMSVQgUEFSVElUSU9OIHRwXzEwXzIwIElOVE8KKyAgKFBBUlRJVElPTiB0cF8xMF8x NSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorICAgUEFSVElUSU9OIHRwXzE1XzIw IEZPUiBWQUxVRVMgRlJPTSAoMTUpIFRPICgyMCkpOworTk9USUNFOiAgeW91IGFyZSBydW5u aW5nIG1lIGFzIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlCitOT1RJQ0U6ICB5b3Ug YXJlIHJ1bm5pbmcgbWUgYXMgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UKK0RST1Ag VEFCTEUgdDsKK0RST1AgRlVOQ1RJT04gcnVuX21lKGludGVnZXIpOworUkVWT0tFIEFMTCBP TiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9u X3NwbGl0X2FsaWNlOworRFJPUCBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNl OworLS0gVGVzdCBmb3IgaGFzaCBwYXJ0aXRpb25lZCB0YWJsZQorQ1JFQVRFIFRBQkxFIHQg KGkgaW50KSBQQVJUSVRJT04gQlkgSEFTSChpKTsKK0NSRUFURSBUQUJMRSB0cDEgUEFSVElU SU9OIE9GIHQgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVTIDIsIFJFTUFJTkRFUiAwKTsKK0NS RUFURSBUQUJMRSB0cDIgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBXSVRIIChNT0RVTFVT IDIsIFJFTUFJTkRFUiAxKTsKKy0tIEVSUk9SOiAgcGFydGl0aW9uIG9mIGhhc2gtcGFydGl0 aW9uZWQgdGFibGUgY2Fubm90IGJlIHNwbGl0CitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJ VElPTiB0cDEgSU5UTworICAoUEFSVElUSU9OIHRwMV8xIEZPUiBWQUxVRVMgV0lUSCAoTU9E VUxVUyA0LCBSRU1BSU5ERVIgMCksCisgICBQQVJUSVRJT04gdHAxXzIgRk9SIFZBTFVFUyBX SVRIIChNT0RVTFVTIDQsIFJFTUFJTkRFUiAyKSk7CitFUlJPUjogIHBhcnRpdGlvbiBvZiBo YXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBzcGxpdAorLS0gRVJST1I6ICBsaXN0 IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0IHR3byBwYXJ0aXRp b25zCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElPTiB0cDEgSU5UTworICAoUEFSVElU SU9OIHRwMV8xIEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyA0LCBSRU1BSU5ERVIgMCkpOwor RVJST1I6ICBsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBjb250YWluIGF0IGxlYXN0 IHR3byBwYXJ0aXRpb25zCitEUk9QIFRBQkxFIHQ7CistLSBBZGRpdGlvbmFsIHRlc3RzIGZv ciBlcnJvciBtZXNzYWdlcworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNv bl9pZCBpbnQsIHNhbGVzcGVyc29uX25hbWUgdmFyY2hhcigzMCksIHNhbGVzX2Ftb3VudCBp bnQsIHNhbGVzX2RhdGUgZGF0ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsK K0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7Cist LSBFUlJPUjogIHVwcGVyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMg bm90IGVxdWFsIHRvIHVwcGVyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA2LTAxJykpOworRVJST1I6ICB1cHBlciBib3VuZCBvZiBwYXJ0aXRp b24gInNhbGVzX2FwcjIwMjIiIGlzIG5vdCBlcXVhbCB0byB1cHBlciBib3VuZCBvZiBzcGxp dCBwYXJ0aXRpb24KK0xJTkUgNDogLi4uIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNi0wLi4uCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorRFJPUCBUQUJM RSBzYWxlc19yYW5nZTsKKy0tIFRlc3QgZm9yIHNwbGl0IHBhcnRpdGlvbiBwcm9wZXJ0aWVz OgorLS0gKiBTVEFUSVNUSUNTIGlzIGVtcHR5CistLSAqIENPTU1FTlQgaXMgZW1wdHkKKy0t ICogREVGQVVMVFMgYXJlIHRoZSBzYW1lIGFzIERFRkFVTFRTIGZvciBwYXJ0aXRpb25lZCB0 YWJsZQorLS0gKiBTVE9SQUdFIGlzIHRoZSBzYW1lIGFzIFNUT1JBR0UgZm9yIHBhcnRpdGlv bmVkIHRhYmxlCistLSAqIEdFTkVSQVRFRCBhbmQgQ09OU1RSQUlOVFMgYXJlIHRoZSBzYW1l IGFzIEdFTkVSQVRFRCBhbmQgQ09OU1RSQUlOVFMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCist LSAqIFRSSUdHRVJTIGFyZSB0aGUgc2FtZSBhcyBUUklHR0VSUyBmb3IgcGFydGl0aW9uZWQg dGFibGUKK0NSRUFURSBUQUJMRSB0CisoaSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JB R0UgRVhURU5ERUQgQ09NUFJFU1NJT04gcGdseiBERUZBVUxUICdkZWZhdWx0X3QnLAorIGIg YmlnaW50LAorIGQgZGF0ZSBHRU5FUkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMS0wMScpIFNU T1JFRCkgUEFSVElUSU9OIEJZIFJBTkdFIChhYnMoaSkpOworQ09NTUVOVCBPTiBDT0xVTU4g dC5pIElTICd0MS5pJzsKK0NSRUFURSBUQUJMRSB0cF94CisoaSBpbnQgTk9UIE5VTEwsCisg dCB0ZXh0IFNUT1JBR0UgTUFJTiBERUZBVUxUICdkZWZhdWx0X3RwX3gnLAorIGIgYmlnaW50 LAorIGQgZGF0ZSBHRU5FUkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMi0wMicpIFNUT1JFRCk7 CitBTFRFUiBUQUJMRSB0IEFUVEFDSCBQQVJUSVRJT04gdHBfeCBGT1IgVkFMVUVTIEZST00g KDApIFRPICgyKTsKK0NPTU1FTlQgT04gQ09MVU1OIHRwX3guaSBJUyAndHBfeC5pJzsKK0NS RUFURSBTVEFUSVNUSUNTIHRfc3RhdCAoREVQRU5ERU5DSUVTKSBvbiBpLCBiIGZyb20gdDsK K0NSRUFURSBTVEFUSVNUSUNTIHRwX3hfc3RhdCAoREVQRU5ERU5DSUVTKSBvbiBpLCBiIGZy b20gdHBfeDsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrIENIRUNL IChiID4gMCk7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjazEgQ0hF Q0sgKGIgPiAwKSBOT1QgRU5GT1JDRUQ7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5U IHRfYl9jaGVjazIgQ0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQ7CitBTFRFUiBUQUJMRSB0IEFE RCBDT05TVFJBSU5UIHRfYl9ubiBOT1QgTlVMTCBiIE5PVCBWQUxJRDsKK0lOU0VSVCBJTlRP IHRwX3goaSwgdCwgYikgVkFMVUVTKDAsIERFRkFVTFQsIDEpOworSU5TRVJUIElOVE8gdHBf eChpLCB0LCBiKSBWQUxVRVMoMSwgREVGQVVMVCwgMik7CitDUkVBVEUgT1IgUkVQTEFDRSBG VU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdw bHBnc3FsJyBBUworJEJPRFkkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIoJSkg Y2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2ZWwgPSAlJywgVEdfQVJHVlswXSwg VEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICBSRVRVUk4gbmV3OworRU5EOworJEJPRFkk OworQ1JFQVRFIFRSSUdHRVIgdF9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJ TlNFUlQgT04gdCBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9m dW5jdGlvbigndCcpOworQ1JFQVRFIFRSSUdHRVIgdHBfeF9iZWZvcmVfaW5zZXJ0X3Jvd190 cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfeCBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQ Uk9DRURVUkUgdHJpZ2dlcl9mdW5jdGlvbigndHBfeCcpOworXGQrIHRwX3gKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgInBhcnRpdGlv bl9zcGxpdF9zY2hlbWEudHBfeCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwg TnVsbGFibGUgfCAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgICAg ICAgICB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0KKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51 bGwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IHBsYWluICAgfCAgICAgICAgICAgICAgfCB0cF94LmkKKyB0ICAgICAgfCB0ZXh0ICAgIHwg ICAgICAgICAgIHwgICAgICAgICAgfCAnZGVmYXVsdF90cF94Jzo6dGV4dCAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IG1haW4gICAgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAg fCBiaWdpbnQgIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAg fCAKKyBkICAgICAgfCBkYXRlICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0 ZWQgYWx3YXlzIGFzICgnMDItMDItMjAyMic6OmRhdGUpIHN0b3JlZCB8IHBsYWluICAgfCAg ICAgICAgICAgICAgfCAKK1BhcnRpdGlvbiBvZjogdCBGT1IgVkFMVUVTIEZST00gKDApIFRP ICgyKQorUGFydGl0aW9uIGNvbnN0cmFpbnQ6ICgoYWJzKGkpIElTIE5PVCBOVUxMKSBBTkQg KGFicyhpKSA+PSAwKSBBTkQgKGFicyhpKSA8IDIpKQorQ2hlY2sgY29uc3RyYWludHM6Cisg ICAgInRfYl9jaGVjayIgQ0hFQ0sgKGIgPiAwKQorICAgICJ0X2JfY2hlY2sxIiBDSEVDSyAo YiA+IDApIE5PVCBFTkZPUkNFRAorICAgICJ0X2JfY2hlY2syIiBDSEVDSyAoYiA+IDApIE5P VCBWQUxJRAorU3RhdGlzdGljcyBvYmplY3RzOgorICAgICJwYXJ0aXRpb25fc3BsaXRfc2No ZW1hLnRwX3hfc3RhdCIgKGRlcGVuZGVuY2llcykgT04gaSwgYiBGUk9NIHRwX3gKK05vdC1u dWxsIGNvbnN0cmFpbnRzOgorICAgICJ0cF94X2lfbm90X251bGwiIE5PVCBOVUxMICJpIiAo aW5oZXJpdGVkKQorICAgICJ0X2Jfbm4iIE5PVCBOVUxMICJiIiAoaW5oZXJpdGVkKSBOT1Qg VkFMSUQKK1RyaWdnZXJzOgorICAgIHRfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZP UkUgSU5TRVJUIE9OIHRwX3ggRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dl cl9mdW5jdGlvbigndCcpLCBPTiBUQUJMRSB0CisgICAgdHBfeF9iZWZvcmVfaW5zZXJ0X3Jv d190cmlnZ2VyIEJFRk9SRSBJTlNFUlQgT04gdHBfeCBGT1IgRUFDSCBST1cgRVhFQ1VURSBG VU5DVElPTiB0cmlnZ2VyX2Z1bmN0aW9uKCd0cF94JykKKworQUxURVIgVEFCTEUgdCBTUExJ VCBQQVJUSVRJT04gdHBfeCBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMg RlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwX3ggRk9SIFZBTFVFUyBGUk9NICgx KSBUTyAoMikpOworXGQrIHRwX3gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRhYmxlICJwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnRwX3giCisg Q29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAg ICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgICAgICAgfCBTdG9yYWdlICB8IFN0YXRz IHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBpICAg ICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgIHwgICAgICAgICAg ICAgIHwgCisgdCAgICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgJ2Rl ZmF1bHRfdCc6OnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBleHRlbmRl ZCB8ICAgICAgICAgICAgICB8IAorIGIgICAgICB8IGJpZ2ludCAgfCAgICAgICAgICAgfCBu b3QgbnVsbCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfCAKKyBkICAgICAgfCBkYXRlICAgIHwg ICAgICAgICAgIHwgICAgICAgICAgfCBnZW5lcmF0ZWQgYWx3YXlzIGFzICgnMDEtMDEtMjAy Mic6OmRhdGUpIHN0b3JlZCB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwgCitQYXJ0aXRp b24gb2Y6IHQgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMikKK1BhcnRpdGlvbiBjb25zdHJh aW50OiAoKGFicyhpKSBJUyBOT1QgTlVMTCkgQU5EIChhYnMoaSkgPj0gMSkgQU5EIChhYnMo aSkgPCAyKSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJ0X2JfY2hlY2siIENIRUNLIChi ID4gMCkKKyAgICAidF9iX2NoZWNrMSIgQ0hFQ0sgKGIgPiAwKSBOT1QgRU5GT1JDRUQKKyAg ICAidF9iX2NoZWNrMiIgQ0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQKK05vdC1udWxsIGNvbnN0 cmFpbnRzOgorICAgICJ0X2lfbm90X251bGwiIE5PVCBOVUxMICJpIiAoaW5oZXJpdGVkKQor ICAgICJ0X2Jfbm4iIE5PVCBOVUxMICJiIiAoaW5oZXJpdGVkKSBOT1QgVkFMSUQKK1RyaWdn ZXJzOgorICAgIHRfYmVmb3JlX2luc2VydF9yb3dfdHJpZ2dlciBCRUZPUkUgSU5TRVJUIE9O IHRwX3ggRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbign dCcpLCBPTiBUQUJMRSB0CisKK0lOU0VSVCBJTlRPIHQoaSwgdCwgYikgVkFMVUVTKDEsIERF RkFVTFQsIDMpOworTk9USUNFOiAgdHJpZ2dlcih0KSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VS VCwgd2hlbiA9IEJFRk9SRSwgbGV2ZWwgPSBST1cKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xh c3MsICogRlJPTSB0IE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRF ICJDIiwgYjsKKyB0YWJsZW9pZCB8IGkgfCAgICAgIHQgICAgICAgfCBiIHwgICAgIGQgICAg ICAKKy0tLS0tLS0tLS0rLS0tKy0tLS0tLS0tLS0tLS0tKy0tLSstLS0tLS0tLS0tLS0KKyB0 cF8wXzEgICB8IDAgfCBkZWZhdWx0X3RwX3ggfCAxIHwgMDEtMDEtMjAyMgorIHRwX3ggICAg IHwgMSB8IGRlZmF1bHRfdHBfeCB8IDIgfCAwMS0wMS0yMDIyCisgdHBfeCAgICAgfCAxIHwg ZGVmYXVsdF90ICAgIHwgMyB8IDAxLTAxLTIwMjIKKygzIHJvd3MpCisKK0RST1AgVEFCTEUg dDsKK0RST1AgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jdGlvbigpOworLS0gVGVzdCBmb3IgcmVj b21wdXRhdGlvbiBvZiBzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbnMuCitDUkVBVEUgVEFCTEUg dCAoaSBpbnQsIHRhYl9pZCBpbnQgZ2VuZXJhdGVkIGFsd2F5cyBhcyAodGFibGVvaWQpIHN0 b3JlZCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSB0cF8wXzIgUEFS VElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMik7CitBTFRFUiBUQUJMRSB0 IEFERCBDT05TVFJBSU5UIGNjIENIRUNLKHRhYmxlb2lkIDw+IDEyMzQ1Njc4OSk7CitJTlNF UlQgSU5UTyB0IFZBTFVFUyAoMCksICgxKTsKKy0tIFNob3VsZCBiZSAxIGJlY2F1c2UgcGFy dGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MCBpcyB0aGUgc2FtZSBhcworLS0g cGFydGl0aW9uIGlkZW50aWZpZXIgZm9yIHJvdyB3aXRoIGk9MS4KK1NFTEVDVCBjb3VudCgq KSBGUk9NIHQgV0hFUkUgaSA9IDAgQU5EIHRhYl9pZCBJTiAoU0VMRUNUIHRhYl9pZCBGUk9N IHQgV0hFUkUgaSA9IDEpOworIGNvdW50IAorLS0tLS0tLQorICAgICAxCisoMSByb3cpCisK Ky0tICJ0YWJfaWQiIGNvbHVtbiAoc3RvcmVkIGdlbmVyYXRlZCBjb2x1bW4pIHdpdGggInRh Ymxlb2lkIiBhdHRyaWJ1dGUgcmVxdWlyZXMKKy0tIHJlY29tcHV0YXRpb24gaGVyZS4KK0FM VEVSIFRBQkxFIHQgU1BMSVQgUEFSVElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04g dHBfMF8xIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFf MiBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CistLSBTaG91bGQgYmUgMCBiZWNhdXNl IHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTAgaXMgZGlmZmVyZW50IGZy b20KKy0tIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTEuCitTRUxFQ1Qg Y291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQgSU4gKFNFTEVDVCB0YWJf aWQgRlJPTSB0IFdIRVJFIGkgPSAxKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMAorKDEg cm93KQorCitEUk9QIFRBQkxFIHQ7CitSRVNFVCBzZWFyY2hfcGF0aDsKKy0tCitEUk9QIFND SEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hOworRFJPUCBTQ0hFTUEgcGFydGl0aW9uX3Nw bGl0X3NjaGVtYTI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCAyZDNm NTBhNDNiLi4wZmI1M2Q0ODZkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUK QEAgLTEyMyw3ICsxMjMsNyBAQCB0ZXN0OiBwbGFuY2FjaGUgbGltaXQgcGxwZ3NxbCBjb3B5 MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHByZXBhcmUgY29udmVyc2lvbiB0cgogIyBUaGUg c3RhdHMgdGVzdCByZXNldHMgc3RhdHMsIHNvIG5vdGhpbmcgZWxzZSBuZWVkaW5nIHN0YXRz IGFjY2VzcyBjYW4gYmUgaW4KICMgdGhpcyBncm91cC4KICMgLS0tLS0tLS0tLQotdGVzdDog cGFydGl0aW9uX21lcmdlIHBhcnRpdGlvbl9qb2luIHBhcnRpdGlvbl9wcnVuZSByZWxvcHRp b25zIGhhc2hfcGFydCBpbmRleGluZyBwYXJ0aXRpb25fYWdncmVnYXRlIHBhcnRpdGlvbl9p bmZvIHR1cGxlc29ydCBleHBsYWluIGNvbXByZXNzaW9uIGNvbXByZXNzaW9uX2x6NCBtZW1v aXplIHN0YXRzIHByZWRpY2F0ZSBudW1hCit0ZXN0OiBwYXJ0aXRpb25fbWVyZ2UgcGFydGl0 aW9uX3NwbGl0IHBhcnRpdGlvbl9qb2luIHBhcnRpdGlvbl9wcnVuZSByZWxvcHRpb25zIGhh c2hfcGFydCBpbmRleGluZyBwYXJ0aXRpb25fYWdncmVnYXRlIHBhcnRpdGlvbl9pbmZvIHR1 cGxlc29ydCBleHBsYWluIGNvbXByZXNzaW9uIGNvbXByZXNzaW9uX2x6NCBtZW1vaXplIHN0 YXRzIHByZWRpY2F0ZSBudW1hCiAKICMgZXZlbnRfdHJpZ2dlciBkZXBlbmRzIG9uIGNyZWF0 ZV9hbSBhbmQgY2Fubm90IHJ1biBjb25jdXJyZW50bHkgd2l0aAogIyBhbnkgdGVzdCB0aGF0 IHJ1bnMgRERMCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25f c3BsaXQuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi43ZGE1Mzc3YmJkCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3NwbGl0LnNx bApAQCAtMCwwICsxLDExNTAgQEAKKy0tCistLSBQQVJUSVRJT05fU1BMSVQKKy0tIFRlc3Rz IGZvciAiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiAuLi4iIGNvbW1hbmQKKy0t CisKK0NSRUFURSBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTsKK0NSRUFURSBTQ0hF TUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTI7CitTRVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hLCBwdWJsaWM7CisKKy0tCistLSBCWSBSQU5HRSBwYXJ0aXRpb25p bmcKKy0tCisKKy0tCistLSBUZXN0IGZvciBlcnJvciBjb2RlcworLS0KK0NSRUFURSBUQUJM RSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgaW50LCBzYWxlc3BlcnNvbl9uYW1lIHZh cmNoYXIoMzApLCBzYWxlc19hbW91bnQgaW50LCBzYWxlc19kYXRlIGRhdGUpIFBBUlRJVElP TiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScp IFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJU SVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworLS0gRVJST1I6ICByZWxhdGlvbiAi c2FsZXNfeHh4IiBkb2VzIG5vdCBleGlzdAorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BM SVQgUEFSVElUSU9OIHNhbGVzX3h4eCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAx JykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBF UlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW4yMDIyIiBhbHJlYWR5IGV4aXN0cworQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIGludmFsaWQgYm91bmQg c3BlY2lmaWNhdGlvbiBmb3IgYSByYW5nZSBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBJTiAoJzIwMjItMDUtMDEnLCAn MjAyMi0wNi0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0w NS0wMScpKTsKKworLS0gRVJST1I6ICBlbXB0eSByYW5nZSBib3VuZCBzcGVjaWZpZWQgZm9y IHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQ TElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAy Mi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMi0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0w MScpKTsKKworLS1FUlJPUjogIGxpc3Qgb2Ygc3BsaXQgcGFydGl0aW9ucyBzaG91bGQgY29u dGFpbiBhdCBsZWFzdCB0d28gaXRlbXMKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElU IFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNh bGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0x MC0wMScpKTsKKworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVz X2ZlYjIwMjIiIGlzIG5vdCBlcXVhbCB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRp b24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJf bWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9O IHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAy Mi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gRVJST1I6ICBuYW1l ICJzYWxlc19mZWJfbWFyX2FwcjIwMjIiIGlzIGFscmVhZHkgdXNlZAorLS0gKFdlIGNhbiBj cmVhdGUgcGFydGl0aW9uIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBzcGxpdCBwYXJ0aXRpb24s IGJ1dCBjYW4ndCBjcmVhdGUgdHdvIHBhcnRpdGlvbnMgd2l0aCB0aGUgc2FtZSBuYW1lKQor QUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJf YXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0w MScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0g RVJST1I6ICBuYW1lICJzYWxlc19mZWIyMDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gRVJST1I6ICBuYW1lICJzYWxlc19mZWIy MDIyIiBpcyBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBB UlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0w MScpLAorICAgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfZmViMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisg ICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIEFMVEVSIGFjdGlvbiBTUExJ VCBQQVJUSVRJT04gY2Fubm90IGJlIHBlcmZvcm1lZCBvbiByZWxhdGlvbiAic2FsZXNfZmVi X21hcl9hcHIyMDIyIgorLS0gREVUQUlMOiAgVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBv cnRlZCBmb3IgdGFibGVzLgorQUxURVIgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFNQ TElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAy Mi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVz X2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0w MScpKTsKKworLS0gRVJST1I6ICB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Fw cjIwMjIiIGlzIG5vdCBlcXVhbCB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24K K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFy X2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0w NC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNi0wMScpKTsKKworLS0gRVJST1I6ICBjYW4gbm90 IHNwbGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIgdG9nZXRoZXIgd2l0aCBwYXJ0 aXRpb24gInNhbGVzX2ZlYjIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7 CisKKy0tIFRlc3RzIGZvciBzcGFjZXMgYmV0d2VlbiBwYXJ0aXRpb25zLCB0aGVtIHNob3Vs ZCBiZSBleGVjdXRlZCB3aXRob3V0IERFRkFVTFQgcGFydGl0aW9uCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBERVRBQ0ggUEFSVElUSU9OIHNhbGVzX290aGVyczsKKworLS0gRVJST1I6 ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2ZlYjIwMjIiIGlzIG5vdCBlcXVh bCB0byBsb3dlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMicp IFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgn MjAyMi0wNS0wMScpKTsKKworLS0gQ2hlY2sgdGhlIHNvdXJjZSBwYXJ0aXRpb24gbm90IGlu IHRoZSBzZWFyY2ggcGF0aAorU0VUIHNlYXJjaF9wYXRoID0gcGFydGl0aW9uX3NwbGl0X3Nj aGVtYTIsIHB1YmxpYzsKK0FMVEVSIFRBQkxFIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2Fs ZXNfcmFuZ2UKK1NQTElUIFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVz X2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8g KCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworU0VUIHNlYXJjaF9w YXRoID0gcGFydGl0aW9uX3NwbGl0X3NjaGVtYSwgcHVibGljOworXGQrIHNhbGVzX3Jhbmdl CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CitEUk9QIFRBQkxFIHNhbGVzX290aGVyczsK KworLS0KKy0tIEFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUgdGhlbiBzcGxpdCBw YXJ0aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lk IElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwg c2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBU QUJMRSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7 CisKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUworICAoMSwgICdNYXknLCAgICAg IDEwMDAsICcyMDIyLTAxLTMxJyksCisgICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjIt MDItMTAnKSwKKyAgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpLAorICAo NCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyksCisgICg1LCAgJ0RlZXYnLCAg ICAgMjUwLCAgJzIwMjItMDQtMDcnKSwKKyAgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAy Mi0wMi0xMScpLAorICAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4JyksCisg ICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKSwKKyAgKDksICAnTXVsbGVy JywgICAyNTAsICAnMjAyMi0wMy0xMScpLAorICAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcy MDIyLTAxLTI4JyksCisgICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKSwK KyAgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpLAorICAoMTMsICdHYW5k aScsICAgIDM3NywgICcyMDIyLTAxLTA5JyksCisgICgxNCwgJ1NtaXRoJywgICAgNTEwLCAg JzIwMjItMDUtMDQnKTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAz LTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCitT RUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfcmFuZ2UgT1JERVIgQlkg dGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsK K0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKworLS0KKy0tIEFkZCBzcGxpdCBw YXJ0aXRpb24sIHRoZW4gYWRkIHJvd3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZQorLS0KK0NS RUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNwZXJzb25faWQgSU5ULCBzYWxlc3BlcnNv bl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUp IFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf amFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYl9t YXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290 aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworLS0gU3BsaXQgcGFy dGl0aW9uLCBhbHNvIGNoZWNrIHNjaGVtYSBxdWFsaWZpY2F0aW9uIG9mIG5ldyBwYXJ0aXRp b25zCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmVi X21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1h LnNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAy Mi0wMy0wMScpLAorICAgUEFSVElUSU9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEyLnNhbGVz X21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK1xkKyBzYWxlc19yYW5nZQorCitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAn MjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyks CisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZh bm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwg ICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEn KSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdF cmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUw LCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0y OCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwg J1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAz NzcsICAnMjAyMi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1 LTA0Jyk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5n ZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVz cGVyc29uX2lkOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CisKKy0tCist LSBUZXN0IGZvcjoKKy0tICAgKiBjb21wb3NpdGUgcGFydGl0aW9uIGtleTsKKy0tICAgKiBH RU5FUkFURUQgY29sdW1uOworLS0gICAqIGNvbHVtbiB3aXRoIERFRkFVTFQgdmFsdWUuCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzX2RhdGUgKHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigz MCksIHNhbGVzX3llYXIgSU5ULCBzYWxlc19tb250aCBJTlQsIHNhbGVzX2RheSBJTlQsCisg IHNhbGVzX2RhdGUgVkFSQ0hBUigxMCkgR0VORVJBVEVEIEFMV0FZUyBBUworICAgIChMUEFE KHNhbGVzX3llYXI6OnRleHQsIDQsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfbW9udGg6 OnRleHQsIDIsICcwJykgfHwgJy4nIHx8IExQQUQoc2FsZXNfZGF5Ojp0ZXh0LCAyLCAnMCcp KSBTVE9SRUQsCisgIHNhbGVzX2RlcGFydG1lbnQgVkFSQ0hBUigzMCkgREVGQVVMVCAnU2Fs ZXMgZGVwYXJ0bWVudCcpCisgIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfeWVhciwgc2Fs ZXNfbW9udGgsIHNhbGVzX2RheSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19kZWMyMDIxIFBB UlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMSwgMTIsIDEpIFRP ICgyMDIyLCAxLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW5fZmViMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIy LCAzLCAxKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlciBQQVJUSVRJT04gT0Ygc2FsZXNf ZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDMsIDEpIFRPIChNQVhWQUxVRSwgTUFYVkFM VUUsIE1BWFZBTFVFKTsKKworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc3BlcnNvbl9u YW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMKKyAgKCdN YW5hZ2VyMScsIDIwMjEsIDEyLCA3KSwKKyAgKCdNYW5hZ2VyMicsIDIwMjEsIDEyLCA4KSwK KyAgKCdNYW5hZ2VyMycsIDIwMjIsIDEsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMiwg NCksCisgICgnTWFuYWdlcjInLCAyMDIyLCAxLCAyKSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIs IDIsIDEpLAorICAoJ01hbmFnZXIxJywgMjAyMiwgMywgMyksCisgICgnTWFuYWdlcjInLCAy MDIyLCAzLCA0KSwKKyAgKCdNYW5hZ2VyMycsIDIwMjIsIDUsIDEpOworCitTRUxFQ1QgdGFi bGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfZGF0ZSBPUkRFUiBCWSB0YWJsZW9pZDo6 cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBz YWxlc19kYXk7CisKK0FMVEVSIFRBQkxFIHNhbGVzX2RhdGUgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2phbl9mZWIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19qYW4yMDIyIEZPUiBW QUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDIsIDEpLAorICAgUEFSVElUSU9O IHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAyLCAxKSBUTyAoMjAyMiwg MywgMSkpOworCitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzcGVyc29uX25hbWUsIHNh bGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUworICAoJ01hbmFnZXIx JywgMjAyMiwgMSwgMTApLAorICAoJ01hbmFnZXIyJywgMjAyMiwgMiwgMTApOworCitTRUxF Q1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfZGF0ZSBPUkRFUiBCWSB0YWJs ZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzX3llYXIsIHNhbGVzX21v bnRoLCBzYWxlc19kYXk7CisKKy0tRVJST1I6ICByZWxhdGlvbiAic2FsZXNfamFuX2ZlYjIw MjIiIGRvZXMgbm90IGV4aXN0CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbl9mZWIyMDIyOwor CitEUk9QIFRBQkxFIHNhbGVzX2RhdGUgQ0FTQ0FERTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0 IERFRkFVTFQgcGFydGl0aW9uOyB1c2UgYW4gaW5kZXggb24gcGFydGl0aW9uIGtleTsgY2hl Y2sgaW5kZXggYWZ0ZXIgc3BsaXQKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNh bGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNf YW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVz X2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04g c2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworCitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0z MScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAg J0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3 NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0 LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcs ICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3Nvbics IDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjIt MDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAo MTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywg ICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAy Mi0wMS0wOScpLAorICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisK K1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworU0VMRUNUICogRlJPTSBwZ19pbmRleGVz IFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19vdGhlcnMnIGFuZCBzY2hlbWFuYW1lID0gJ3Bh cnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZSBDT0xMQVRFICJDIjsK KworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVy cyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA1LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERF RkFVTFQpOworCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMKK1NFVCBl bmFibGVfc2Vxc2NhbiA9IE9GRjsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBG Uk9NIHNhbGVzX2ZlYjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKK1NF TEVDVCAqIEZST00gc2FsZXNfZmViMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEt MDEnOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX21hcjIwMjIg d2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAxJzsKK1NFTEVDVCAqIEZST00gc2FsZXNf bWFyMjAyMiB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworRVhQTEFJTiAoQ09T VFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjIgd2hlcmUgc2FsZXNfZGF0ZSA+ ICcyMDIyLTAxLTAxJzsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMiB3aGVyZSBzYWxl c19kYXRlID4gJzIwMjItMDEtMDEnOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBG Uk9NIHNhbGVzX290aGVycyB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworU0VM RUNUICogRlJPTSBzYWxlc19vdGhlcnMgd2hlcmUgc2FsZXNfZGF0ZSA+ICcyMDIyLTAxLTAx JzsKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhl cyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfZmViMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAn cGFydGl0aW9uX3NwbGl0X3NjaGVtYScgT1JERVIgQlkgaW5kZXhuYW1lIENPTExBVEUgIkMi OworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19t YXIyMDIyJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRF UiBCWSBpbmRleG5hbWUgQ09MTEFURSAiQyI7CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMg V0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX2FwcjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3Bh cnRpdGlvbl9zcGxpdF9zY2hlbWEnIE9SREVSIEJZIGluZGV4bmFtZSBDT0xMQVRFICJDIjsK K1NFTEVDVCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfb3Ro ZXJzJyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJyBPUkRFUiBC WSBpbmRleG5hbWUgQ09MTEFURSAiQyI7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FT Q0FERTsKKworLS0KKy0tIFRlc3Q6IHNvbWUgY2FzZXMgZm9yIHNwbGl0dGluZyBERUZBVUxU IHBhcnRpdGlvbiAoZGlmZmVyZW50IGJvdW5kcykKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNf cmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMw KSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBJTlQpIFBBUlRJVElPTiBCWSBSQU5H RSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBERUZBVUxUOworCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdp dGggc2FsZXNfZGVjMjAyMSAobG93ZXIgYm91bmQpCistLSBFUlJPUjogIGNhbiBub3Qgc3Bs aXQgdG8gcGFydGl0aW9uICJzYWxlc19lcnJvciIgdG9nZXRoZXIgd2l0aCBwYXJ0aXRpb24g InNhbGVzX2RlYzIwMjEiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJ T04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBW QUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2Fs ZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIzMCkgVE8gKDIwMjIwMjAxKSwKKyAg IFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRP ICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCist LSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZmViMjAyMiAodXBwZXIgYm91 bmQpCistLSBFUlJPUjogIGNhbiBub3Qgc3BsaXQgdG8gcGFydGl0aW9uICJzYWxlc19mZWIy MDIyIiB0b2dldGhlciB3aXRoIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiCitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBB UlRJVElPTiBzYWxlc19kZWMyMDIxIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgy MDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgy MDIyMDEwMSkgVE8gKDIwMjIwMjAyKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04g c2FsZXNfb3RoZXJzIERFRkFVTFQpOworCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdp dGggc2FsZXNfZGVjMjAyMSAoaW5zaWRlIGJvdW5kKQorLS0gRVJST1I6ICBjYW4gbm90IHNw bGl0IHRvIHBhcnRpdGlvbiAic2FsZXNfZXJyb3IiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9u ICJzYWxlc19kZWMyMDIxIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1Ig VkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNh bGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMTApIFRPICgyMDIxMTIyMCksCisg ICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBU TyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKwor LS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjEgKGV4YWN0bHkg dGhlIHNhbWUgYm91bmRzKQorLS0gRVJST1I6ICBjYW4gbm90IHNwbGl0IHRvIHBhcnRpdGlv biAic2FsZXNfZXJyb3IiIHRvZ2V0aGVyIHdpdGggcGFydGl0aW9uICJzYWxlc19kZWMyMDIx IgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVy cyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMSBGT1IgVkFMVUVTIEZST00gKDIw MjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBW QUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAor ICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworLS0gRVJST1I6ICBvbmUg cGFydGl0aW9uIGluIHRoZSBsaXN0IHNob3VsZCBiZSBERUZBVUxUIGJlY2F1c2Ugc3BsaXQg cGFydGl0aW9uIGlzIERFRkFVTFQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBB UlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEg Rk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElP TiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMDEpIFRPICgyMDIyMDIw MSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIw MjAxKSBUTyAoMjAyMjAzMDEpKTsKKworLS0gbm8gZXJyb3I6IGJvdW5kcyBvZiBzYWxlc19u b2Vycm9yIGFyZSBiZXR3ZWVuIHNhbGVzX2RlYzIwMjEgYW5kIHNhbGVzX2ZlYjIwMjIKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5U TworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIw MSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19ub2Vycm9yIEZPUiBWQUxV RVMgRlJPTSAoMjAyMjAxMTApIFRPICgyMDIyMDEyMCksCisgICBQQVJUSVRJT04gc2FsZXNf ZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAg UEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworRFJPUCBUQUJMRSBzYWxlc19y YW5nZTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc3BlcnNvbl9pZCBJTlQs IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVz X2RhdGUgSU5UKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRB QkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKwor LS0gbm8gZXJyb3I6IGJvdW5kcyBvZiBzYWxlc19ub2Vycm9yIGFyZSBlcXVhbCB0byBsb3dl ciBhbmQgdXBwZXIgYm91bmRzIG9mIHNhbGVzX2RlYzIwMjEgYW5kIHNhbGVzX2ZlYjIwMjIK K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjEgRk9SIFZBTFVFUyBGUk9NICgyMDIx MTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19ub2Vycm9yIEZPUiBW QUxVRVMgRlJPTSAoMjAyMTAxMDEpIFRPICgyMDIxMDIwMSksCisgICBQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAor ICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworRFJPUCBUQUJMRSBzYWxl c19yYW5nZTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRoIENIRUNLIGFu ZCBGT1JFSUdOIEtFWSBDT05TVFJBSU5UcyBvbiBwYXJ0aXRpb25lZCB0YWJsZQorLS0KK0NS RUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgUFJJTUFSWSBLRVks IHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOworSU5TRVJUIElOVE8gc2FsZXNwZW9w bGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2Ug KAorc2FsZXNwZXJzb25faWQgSU5UIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJz b25faWQpLAorc2FsZXNfYW1vdW50IElOVCBDSEVDSyAoc2FsZXNfYW1vdW50ID4gMSksCitz YWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CisKK0NS RUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVB VEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxU OworCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5 IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19mZWJfbWFyX2Fw cjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5hbWUgQ09MTEFURSAiQyI7CisK K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFy X2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNh bGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0w NC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gV2Ugc2hvdWxkIHNlZSB0 aGUgc2FtZSBDT05TVFJBSU5UcyBhcyBvbiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgcGFydGl0 aW9uCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5 IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19mZWIyMDIyJzo6 cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBjb25uYW1lIENPTExBVEUgIkMiOworU0VMRUNUIHBn X2dldF9jb25zdHJhaW50ZGVmKG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0 cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAnc2FsZXNfbWFyMjAyMic6OnJlZ2NsYXNzOjpvaWQg T1JERVIgQlkgY29ubmFtZSBDT0xMQVRFICJDIjsKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWlu dGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNv bnJlbGlkID0gJ3NhbGVzX2FwcjIwMjInOjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGNvbm5h bWUgQ09MTEFURSAiQyI7CisKKy0tIEVSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInNh bGVzX21hcjIwMjIiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInNhbGVzX3JhbmdlX3Nh bGVzX2Ftb3VudF9jaGVjayIKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwg MCwgJzIwMjItMDMtMTEnKTsKKy0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJs ZSAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2Fs ZXNfcmFuZ2Vfc2FsZXNwZXJzb25faWRfZmtleSIKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoLTEsIDEwLCAnMjAyMi0wMy0xMScpOworLS0gb2sKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoMSwgMTAsICcyMDIyLTAzLTExJyk7CisKK0RST1AgVEFCTEUg c2FsZXNfcmFuZ2UgQ0FTQ0FERTsKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsK KworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiBvbiBwYXJ0aXRpb25lZCB0YWJsZSBp biBjYXNlIG9mIGV4aXN0aW5nIEZPUkVJR04gS0VZIHJlZmVyZW5jZSBmcm9tIGFub3RoZXIg dGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQgSU5U IFBSSU1BUlkgS0VZLCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04g QlkgUkFOR0UgKHNhbGVzcGVyc29uX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlcyAoc2FsZXNw ZXJzb25faWQgSU5UIFJFRkVSRU5DRVMgc2FsZXNwZW9wbGUoc2FsZXNwZXJzb25faWQpLCBz YWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpOworCitDUkVBVEUgVEFCTEUgc2Fs ZXNwZW9wbGUwMV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAgUEFSVElUSU9O IE9GIHNhbGVzcGVvcGxlIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CisKK0lOU0VS VCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUworICAoMSwgICdQb2lyb3QnKSwKKyAgKDEwLCAn TWF5JyksCisgICgxOSwgJ0l2YW5vdicpLAorICAoMjAsICdTbWlybm9mZicpLAorICAoMzAs ICdGb3JkJyk7CisKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUworICAoMSwgIDEwMCwgJzIw MjItMDMtMDEnKSwKKyAgKDEsICAxMTAsICcyMDIyLTAzLTAyJyksCisgICgxMCwgMTUwLCAn MjAyMi0wMy0wMScpLAorICAoMTAsIDkwLCAgJzIwMjItMDMtMDMnKSwKKyAgKDE5LCAyMDAs ICcyMDIyLTAzLTA0JyksCisgICgyMCwgNTAsICAnMjAyMi0wMy0xMicpLAorICAoMjAsIDE3 MCwgJzIwMjItMDMtMDInKSwKKyAgKDMwLCAzMCwgICcyMDIyLTAzLTA0Jyk7CisKK1NFTEVD VCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJs ZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworCitB TFRFUiBUQUJMRSBzYWxlc3Blb3BsZSBTUExJVCBQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF80 MCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNwZW9wbGUxMF8yMCBGT1IgVkFMVUVTIEZST00g KDEwKSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNhbGVzcGVvcGxlMjBfMzAgRk9SIFZBTFVF UyBGUk9NICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc3Blb3BsZTMwXzQwIEZP UiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCkpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2Ns YXNzLCAqIEZST00gc2FsZXNwZW9wbGUgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0 ZXh0IENPTExBVEUgIkMiLCBzYWxlc3BlcnNvbl9pZDsKKworLS0gRVJST1I6ICBpbnNlcnQg b3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlcyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3Ry YWludCAic2FsZXNfc2FsZXNwZXJzb25faWRfZmtleSIKK0lOU0VSVCBJTlRPIHNhbGVzIFZB TFVFUyAoNDAsIDUwLCAgJzIwMjItMDMtMDQnKTsKKy0tIG9rCitJTlNFUlQgSU5UTyBzYWxl cyBWQUxVRVMgKDMwLCA1MCwgICcyMDIyLTAzLTA0Jyk7CisKK0RST1AgVEFCTEUgc2FsZXMg Q0FTQ0FERTsKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKworLS0KKy0tIFRl c3Q6IHNwbGl0IHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIHRyaWdnZXJz CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklN QVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJB TkdFIChzYWxlc3BlcnNvbl9pZCk7CisKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEw IFBBUlRJVElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7 CitDUkVBVEUgVEFCTEUgc2FsZXNwZW9wbGUxMF80MCBQQVJUSVRJT04gT0Ygc2FsZXNwZW9w bGUgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKKworSU5TRVJUIElOVE8gc2FsZXNw ZW9wbGUgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5D VElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VB R0UgJ3BscGdzcWwnIEFTICRCT0RZJAorQkVHSU4KKyAgICBSQUlTRSBOT1RJQ0UgJ3RyaWdn ZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2ZWwgPSAlJywgVEdfQVJH VlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICAgIFJFVFVSTiBOVUxMOworRU5E OworJEJPRFkkOworCitDUkVBVEUgVFJJR0dFUiBzYWxlc3Blb3BsZV9hZnRlcl9pbnNlcnRf c3RhdGVtZW50X3RyaWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc3Blb3Bs ZQorICAgIEZPUiBFQUNIIFNUQVRFTUVOVAorICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVy X2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNwZW9wbGUnKTsKKworQ1JFQVRFIFRSSUdHRVIg c2FsZXNwZW9wbGVfYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyCisgICAgQUZURVIgSU5TRVJU CisgICAgT04gc2FsZXNwZW9wbGUKKyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIFBS T0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoJ3NhbGVzcGVvcGxlJyk7CisKKy0t IDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50KToKK0lOU0VS VCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMTAsICdNYXknKTsKKy0tIDEgdHJpZ2dlciBz aG91bGQgZmlyZSBoZXJlIChyb3cpOgorSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF80MCBW QUxVRVMgKDE5LCAnSXZhbm92Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIFNQTElU IFBBUlRJVElPTiBzYWxlc3Blb3BsZTEwXzQwIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc3Bl b3BsZTEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisgICBQQVJUSVRJT04g c2FsZXNwZW9wbGUyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApLAorICAgUEFS VElUSU9OIHNhbGVzcGVvcGxlMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKSk7 CisKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50KToK K0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIFZBTFVFUyAoMjAsICdTbWlybm9mZicpOworLS0g MSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc3Bl b3BsZTMwXzQwIFZBTFVFUyAoMzAsICdGb3JkJyk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVn Y2xhc3MsICogRlJPTSBzYWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6 OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworCitEUk9QIFRBQkxFIHNhbGVz cGVvcGxlIENBU0NBREU7CitEUk9QIEZVTkNUSU9OIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dl cigpOworCistLQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGNoIGlkZW50aXR5IGNv bHVtbgorLS0gSWYgc3BsaXQgcGFydGl0aW9uIGNvbHVtbiBpcyBpZGVudGl0eSBjb2x1bW4s IGNvbHVtbnMgb2YgbmV3IHBhcnRpdGlvbnMgYXJlIGlkZW50aXR5IGNvbHVtbnMgdG9vLgor LS0KK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZShzYWxlc3BlcnNvbl9pZCBJTlQgR0VORVJB VEVEIEFMV0FZUyBBUyBJREVOVElUWSBQUklNQVJZIEtFWSwgc2FsZXNwZXJzb25fbmFtZSBW QVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc3BlcnNvbl9pZCk7CisKK0NS RUFURSBUQUJMRSBzYWxlc3Blb3BsZTFfMiBQQVJUSVRJT04gT0Ygc2FsZXNwZW9wbGUgRk9S IFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CistLSBDcmVhdGUgbmV3IHBhcnRpdGlvbiB3aXRo IGlkZW50aXR5IGNvbHVtbjoKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTJfNShzYWxlc3Bl cnNvbl9pZCBJTlQgTk9UIE5VTEwsIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCkpOwor QUxURVIgVEFCTEUgc2FsZXNwZW9wbGUgQVRUQUNIIFBBUlRJVElPTiBzYWxlc3Blb3BsZTJf NSBGT1IgVkFMVUVTIEZST00gKDIpIFRPICg1KTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9w bGUgKHNhbGVzcGVyc29uX25hbWUpIFZBTFVFUyAoJ1BvaXJvdCcpLCAoJ0l2YW5vdicpOwor CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0 dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZSc6 OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworU0VMRUNUIGF0dG5hbWUsIGF0dGlk ZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4g MCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUxXzInOjpyZWdjbGFzczo6b2lkIE9SREVS IEJZIGF0dG51bTsKKy0tIFNwbGl0IHBhcnRpdGlvbiBoYXMgaWRlbnRpdHkgY29sdW1uOgor U0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRy aWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUyXzUn OjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKKworQUxURVIgVEFCTEUgc2FsZXNw ZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMl81IElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc3Blb3BsZTJfMyBGT1IgVkFMVUVTIEZST00gKDIpIFRPICgzKSwKKyAgIFBBUlRJ VElPTiBzYWxlc3Blb3BsZTNfNCBGT1IgVkFMVUVTIEZST00gKDMpIFRPICg0KSwKKyAgIFBB UlRJVElPTiBzYWxlc3Blb3BsZTRfNSBGT1IgVkFMVUVTIEZST00gKDQpIFRPICg1KSk7CisK K0lOU0VSVCBJTlRPIHNhbGVzcGVvcGxlIChzYWxlc3BlcnNvbl9uYW1lKSBWQUxVRVMgKCdN YXknKSwgKCdGb3JkJyk7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBz YWxlc3Blb3BsZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAi QyIsIHNhbGVzcGVyc29uX2lkOworCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0 dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRy ZWxpZCA9ICdzYWxlc3Blb3BsZSc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOwor U0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRy aWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGUxXzIn OjpyZWdjbGFzczo6b2lkIE9SREVSIEJZIGF0dG51bTsKKy0tIE5ldyBwYXJ0aXRpb25zIGhh dmUgaWRlbnRpdHktY29sdW1uczoKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0 Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJl bGlkID0gJ3NhbGVzcGVvcGxlMl8zJzo6cmVnY2xhc3M6Om9pZCBPUkRFUiBCWSBhdHRudW07 CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0 dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc3Blb3BsZTNf NCc6OnJlZ2NsYXNzOjpvaWQgT1JERVIgQlkgYXR0bnVtOworU0VMRUNUIGF0dG5hbWUsIGF0 dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVt ID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNwZW9wbGU0XzUnOjpyZWdjbGFzczo6b2lkIE9S REVSIEJZIGF0dG51bTsKKworRFJPUCBUQUJMRSBzYWxlc3Blb3BsZSBDQVNDQURFOworCist LQorLS0gVGVzdDogc3BsaXQgcGFydGl0aW9uIHdpdGggZGVsZXRlZCBjb2x1bW5zCistLQor Q1JFQVRFIFRBQkxFIHNhbGVzcGVvcGxlKHNhbGVzcGVyc29uX2lkIElOVCBQUklNQVJZIEtF WSwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc3BlcnNvbl9pZCk7CisKK0NSRUFURSBUQUJMRSBzYWxlc3Blb3BsZTAxXzEwIFBBUlRJ VElPTiBPRiBzYWxlc3Blb3BsZSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMCk7CistLSBD cmVhdGUgbmV3IHBhcnRpdGlvbiB3aXRoIHNvbWUgZGVsZXRlZCBjb2x1bW5zOgorQ1JFQVRF IFRBQkxFIHNhbGVzcGVvcGxlMTBfNDAoZDEgVkFSQ0hBUigzMCksIHNhbGVzcGVyc29uX2lk IElOVCBQUklNQVJZIEtFWSwgZDIgSU5ULCBkMyBEQVRFLCBzYWxlc3BlcnNvbl9uYW1lIFZB UkNIQVIoMzApKTsKKworSU5TRVJUIElOVE8gc2FsZXNwZW9wbGUxMF80MCBWQUxVRVMKKyAg KCdkdW1teSB2YWx1ZSAxJywgMTksIDEwMCwgbm93KCksICdJdmFub3YnKSwKKyAgKCdkdW1t eSB2YWx1ZSAyJywgMjAsIDEwMSwgbm93KCksICdTbWlybm9mZicpOworCitBTFRFUiBUQUJM RSBzYWxlc3Blb3BsZTEwXzQwIERST1AgQ09MVU1OIGQxOworQUxURVIgVEFCTEUgc2FsZXNw ZW9wbGUxMF80MCBEUk9QIENPTFVNTiBkMjsKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlMTBf NDAgRFJPUCBDT0xVTU4gZDM7CisKK0FMVEVSIFRBQkxFIHNhbGVzcGVvcGxlIEFUVEFDSCBQ QVJUSVRJT04gc2FsZXNwZW9wbGUxMF80MCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoNDAp OworCitJTlNFUlQgSU5UTyBzYWxlc3Blb3BsZSBWQUxVRVMKKyAgKDEsICdQb2lyb3QnKSwK KyAgKDEwLCAnTWF5JyksCisgICgzMCwgJ0ZvcmQnKTsKKworQUxURVIgVEFCTEUgc2FsZXNw ZW9wbGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzcGVvcGxlMTBfNDAgSU5UTworICAoUEFSVElU SU9OIHNhbGVzcGVvcGxlMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSwKKyAg IFBBUlRJVElPTiBzYWxlc3Blb3BsZTIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgz MCksCisgICBQQVJUSVRJT04gc2FsZXNwZW9wbGUzMF80MCBGT1IgVkFMVUVTIEZST00gKDMw KSBUTyAoNDApKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVz cGVvcGxlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwg c2FsZXNwZXJzb25faWQ7CisKK0RST1AgVEFCTEUgc2FsZXNwZW9wbGUgQ0FTQ0FERTsKKwor LS0KKy0tIFRlc3Q6IHNwbGl0IHN1Yi1wYXJ0aXRpb24KKy0tCitDUkVBVEUgVEFCTEUgc2Fs ZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFS KDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAo JzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0w MScpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNwZXJzb25faWQgSU5U LCBzYWxlc3BlcnNvbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxl c19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfYXByX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitBTFRFUiBUQUJM RSBzYWxlc19yYW5nZSBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworCitDUkVBVEUgVEFC TEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworCitD UkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2Ug VVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpLAorICAoMiwg ICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyksCisgICgzLCAgJ0ZvcmQnLCAgICAg MjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0w NC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3JyksCisgICg2 LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKSwKKyAgKDcsICAnTGknLCAgICAg ICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIy LTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKSwKKyAg KDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpLAorICAoMTEsICdUcnVtcCcs ICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIw MjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpLAor ICAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK1NFTEVDVCB0YWJs ZW9pZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZDo6 cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworCitBTFRFUiBU QUJMRSBzYWxlc19hcHIyMDIyIFNQTElUIFBBUlRJVElPTiBzYWxlc19hcHJfYWxsIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzAxXzEwIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDQtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIy MDIyXzEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTAnKSBUTyAoJzIwMjItMDQt MjAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzIwXzMwIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMjAnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKK1NFTEVDVCB0YWJsZW9p ZDo6cmVnY2xhc3MsICogRlJPTSBzYWxlc19yYW5nZSBPUkRFUiBCWSB0YWJsZW9pZDo6cmVn Y2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVzcGVyc29uX2lkOworCitEUk9QIFRBQkxF IHNhbGVzX3JhbmdlOworCistLQorLS0gQlkgTElTVCBwYXJ0aXRpb25pbmcKKy0tCisKKy0t CistLSBUZXN0OiBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJTlQsCisgc2Fs ZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwK KyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBM SVNUIChzYWxlc19zdGF0ZSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElP TiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdPc2xvJywgJ1N0LiBQZXRlcnNidXJn JywgJ0hlbHNpbmtpJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBz YWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnTGlzYm9uJywgJ05ldyBZb3Jr JywgJ01hZHJpZCcsICdCZWppbmcnLCAnQmVybGluJywgJ0RlbGhpJywgJ0t5aXYnLCAnVmxh ZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNh bGVzX2xpc3QgREVGQVVMVDsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc19l YXN0IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciAobm90IHNwbGl0KSBwYXJ0aXRpb24g InNhbGVzX25vcmQiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBz YWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAo J0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19l YXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snLCAn SGVsc2lua2knKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4g KCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7CisKKy0tIEVSUk9SOiAgbmV3IHBhcnRp dGlvbiAic2FsZXNfd2VzdCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgbmV3IHBhcnRp dGlvbiAic2FsZXNfY2VudHJhbCIKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFM VUVTIElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9O IHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZv c3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dh cnNhdycsICdCZXJsaW4nLCAnTGlzYm9uJywgJ0t5aXYnKSk7CisKKy0tIEVSUk9SOiAgbmV3 IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhhdmUgTlVMTCB2YWx1ZSBiZWNhdXNl IHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlCitBTFRFUiBUQUJMRSBzYWxlc19saXN0 IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dl c3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnLCBOVUxM KSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAn RGVsaGknLCAnVmxhZGl2b3N0b2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZP UiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnQmVybGluJywgJ0t5aXYnKSk7CisKKy0tIEVSUk9S OiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhhdmUgdGhpcyB2YWx1ZSBi ZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlCitBTFRFUiBUQUJMRSBzYWxl c19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNh bGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQn LCAnTWVsYm91cm5lJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElO ICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2Jykp OworCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gY2Fubm90IGJlIERFRkFVTFQgYmVjYXVz ZSBERUZBVUxUIHBhcnRpdGlvbiBhbHJlYWR5IGV4aXN0cworQUxURVIgVEFCTEUgc2FsZXNf bGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFkcmlkJywg J01lbGJvdXJuZScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAo J0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVz X2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNhdycsICdCZXJsaW4nLCAnS3lpdicpLAor ICAgUEFSVElUSU9OIHNhbGVzX290aGVyczIgREVGQVVMVCk7CisKK0RST1AgVEFCTEUgc2Fs ZXNfbGlzdDsKKworLS0KKy0tIFRlc3Q6IHR3byBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJ U1QgcGFydGl0aW9uaW5nOgorLS0gICAqIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIE5V TEwgdmFsdWUsIHdoaWNoIHNwbGl0IHBhcnRpdGlvbiBoYXMuCistLSAgICogbmV3IHBhcnRp dGlvbnMgZG8gbm90IGhhdmUgYSB2YWx1ZSB0aGF0IHNwbGl0IHBhcnRpdGlvbiBoYXMuCist LQorQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc3BlcnNvbl9pZCBJTlQsCisgc2Fs ZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwK KyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBM SVNUIChzYWxlc19zdGF0ZSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElP TiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdIZWxzaW5raScsICdTdC4gUGV0ZXJz YnVyZycsICdPc2xvJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBz YWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAnTGlzYm9uJywgJ05ldyBZb3Jr JywgJ01hZHJpZCcsICdCZWppbmcnLCAnQmVybGluJywgJ0RlbGhpJywgJ0t5aXYnLCAnVmxh ZGl2b3N0b2snLCBOVUxMKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9ucyBkbyBub3Qg aGF2ZSB2YWx1ZSBOVUxMIGJ1dCBzcGxpdCBwYXJ0aXRpb24gZG9lcworQUxURVIgVEFCTEUg c2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElP TiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAnTmV3IFlvcmsnLCAnTWFk cmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnQmVqaW5n JywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJh bCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdLeWl2JykpOworCistLSBF UlJPUjogIG5ldyBwYXJ0aXRpb25zIGRvIG5vdCBoYXZlIHZhbHVlICdLeWl2JyBidXQgc3Bs aXQgcGFydGl0aW9uIGRvZXMKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVT IElOICgnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcpLAorICAgUEFSVElUSU9OIHNh bGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ0JlamluZycsICdEZWxoaScsICdWbGFkaXZvc3Rv aycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ1dhcnNh dycsICdCZXJsaW4nLCBOVUxMKSk7CisKKy0tIEVSUk9SICBERUZBVUxUIHBhcnRpdGlvbiBz aG91bGQgYmUgb25lCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBz YWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAo J0xpc2JvbicsICdOZXcgWW9yaycsICdNYWRyaWQnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19l YXN0IEZPUiBWQUxVRVMgSU4gKCdCZWppbmcnLCAnRGVsaGknLCAnVmxhZGl2b3N0b2snKSwK KyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMgSU4gKCdXYXJzYXcnLCAn QmVybGluJywgJ0t5aXYnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVMVCwK KyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMyIERFRkFVTFQpOworCitEUk9QIFRBQkxFIHNh bGVzX2xpc3Q7CisKKy0tCistLSBUZXN0OiBCWSBMSVNUIHBhcnRpdGlvbmluZywgU1BMSVQg UEFSVElUSU9OIHdpdGggZGF0YQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2Fs ZXNwZXJzb25faWQgU0VSSUFMLAorIHNhbGVzcGVyc29uX25hbWUgVkFSQ0hBUigzMCksCisg c2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19k YXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworCitDUkVBVEUg SU5ERVggc2FsZXNfbGlzdF9zYWxlc3BlcnNvbl9uYW1lX2lkeCBPTiBzYWxlc19saXN0IFVT SU5HIGJ0cmVlIChzYWxlc3BlcnNvbl9uYW1lKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0 X3NhbGVzX3N0YXRlX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc19zdGF0 ZSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0 IEZPUiBWQUxVRVMgSU4gKCdIZWxzaW5raScsICdTdC4gUGV0ZXJzYnVyZycsICdPc2xvJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBW QUxVRVMgSU4gKCdXYXJzYXcnLCAnTGlzYm9uJywgJ05ldyBZb3JrJywgJ01hZHJpZCcsICdC ZWppbmcnLCAnQmVybGluJywgJ0RlbGhpJywgJ0t5aXYnLCAnVmxhZGl2b3N0b2snKTsKK0NS RUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgREVGQVVM VDsKKworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNwZXJzb25fbmFtZSwgc2FsZXNf c3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTCisgICgnVHJ1bXAnLCAg ICAnQmVqaW5nJywgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpLAorICAoJ1NtaXJub2Zm JywgJ05ldyBZb3JrJywgICAgICAgIDUwMCwgJzIwMjItMDMtMDMnKSwKKyAgKCdGb3JkJywg ICAgICdTdC4gUGV0ZXJzYnVyZycsIDIwMDAsICcyMDIyLTAzLTA1JyksCisgICgnSXZhbm92 JywgICAnV2Fyc2F3JywgICAgICAgICAgNzUwLCAnMjAyMi0wMy0wNCcpLAorICAoJ0RlZXYn LCAgICAgJ0xpc2JvbicsICAgICAgICAgIDI1MCwgJzIwMjItMDMtMDcnKSwKKyAgKCdQb2ly b3QnLCAgICdCZXJsaW4nLCAgICAgICAgIDEwMDAsICcyMDIyLTAzLTAxJyksCisgICgnTWF5 JywgICAgICAnT3NsbycsICAgICAgICAgICAxMjAwLCAnMjAyMi0wMy0wNicpLAorICAoJ0xp JywgICAgICAgJ1ZsYWRpdm9zdG9rJywgICAgMTE1MCwgJzIwMjItMDMtMDknKSwKKyAgKCdN YXknLCAgICAgICdPc2xvJywgICAgICAgICAgIDEyMDAsICcyMDIyLTAzLTExJyksCisgICgn SGFsZGVyJywgICAnSGVsc2lua2knLCAgICAgICAgODAwLCAnMjAyMi0wMy0wMicpLAorICAo J011bGxlcicsICAgJ01hZHJpZCcsICAgICAgICAgIDY1MCwgJzIwMjItMDMtMDUnKSwKKyAg KCdTbWl0aCcsICAgICdLeWl2JywgICAgICAgICAgICAzNTAsICcyMDIyLTAzLTEwJyksCisg ICgnR2FuZGknLCAgICAnV2Fyc2F3JywgICAgICAgICAgMTUwLCAnMjAyMi0wMy0wOCcpLAor ICAoJ1BsYXRvJywgICAgJ0xpc2JvbicsICAgICAgICAgIDk1MCwgJzIwMjItMDMtMDUnKTsK KworQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElO VE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdMaXNib24nLCAn TmV3IFlvcmsnLCAnTWFkcmlkJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFM VUVTIElOICgnQmVqaW5nJywgJ0RlbGhpJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJ T04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnV2Fyc2F3JywgJ0JlcmxpbicsICdL eWl2JykpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNfbGlz dCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIHNhbGVz cGVyc29uX2lkOworCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0aW5nIGluZGV4ZXMgYWZ0 ZXIgc3BsaXR0aW5nIHBhcnRpdGlvbgorU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworCitF WFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2FsZXNfY2VudHJhbCBXSEVSRSBz YWxlc19zdGF0ZSA9ICdXYXJzYXcnOworU0VMRUNUICogRlJPTSBzYWxlc19jZW50cmFsIFdI RVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVD VCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdXYXJzYXcnOworU0VM RUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzX3N0YXRlID0gJ1dhcnNhdyc7CitF WFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxl c3BlcnNvbl9uYW1lID0gJ0l2YW5vdic7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hF UkUgc2FsZXNwZXJzb25fbmFtZSA9ICdJdmFub3YnOworCitSRVNFVCBlbmFibGVfc2Vxc2Nh bjsKKworRFJPUCBUQUJMRSBzYWxlc19saXN0OworCistLQorLS0gVGVzdCBmb3I6CistLSAg ICogc3BsaXQgREVGQVVMVCBwYXJ0aXRpb24gdG8gcGFydGl0aW9ucyB3aXRoIHNwYWNlcyBi ZXR3ZWVuIGJvdW5kczsKKy0tICAgKiByYW5kb20gb3JkZXIgb2YgcGFydGl0aW9ucyBpbiBT UExJVCBQQVJUSVRJT04gY29tbWFuZC4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2Ug KHNhbGVzcGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2Fs ZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNh bGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgREVGQVVMVDsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTCisg ICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKSwKKyAgKDIsICAnU21pcm5v ZmYnLCA1MDAsICAnMjAyMi0wMi0wOScpLAorICAoMywgICdGb3JkJywgICAgIDIwMDAsICcy MDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKSwK KyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpLAorICAoNiwgICdQb2ly b3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3JyksCisgICg3LCAgJ0xpJywgICAgICAgMTc1LCAg JzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycp LAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyksCisgICgxMCwgJ0hh bGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAgKDExLCAnVHJ1bXAnLCAgICAzODAs ICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5 JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKSwKKyAgKDE0LCAn U21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworCitBTFRFUiBUQUJMRSBzYWxlc19y YW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBz YWxlc19vdGhlcnMgREVGQVVMVCwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyXzFkZWNh ZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMy0xMCcpLAor ICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAxLTAxJykgVE8gKCcyMDIyLTAxLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmVi MjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjIt MDItMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzFkZWNhZGUgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpKTsKKworU0VMRUNUIHRh Ymxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lk OjpyZWdjbGFzczo6dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisKK0RST1Ag VEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBzcGxpdCBu b24tREVGQVVMVCBwYXJ0aXRpb24gdG8gcGFydGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3ZWVu IGJvdW5kczsKKy0tICAgKiByYW5kb20gb3JkZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJVCBQ QVJUSVRJT04gY29tbWFuZC4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVz cGVyc29uX2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1v dW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2Rh dGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2Ug Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wNS0wMScpOworCitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMKKyAgKDEsICAnTWF5JywgICAgICAxMDAw LCAnMjAyMi0wMS0zMScpLAorICAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTA5 JyksCisgICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKSwKKyAgKDQsICAn SXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpLAorICAoNSwgICdEZWV2JywgICAgIDI1 MCwgICcyMDIyLTA0LTA3JyksCisgICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDIt MDcnKSwKKyAgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpLAorICAoOCwg ICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyksCisgICg5LCAgJ011bGxlcicsICAg MjUwLCAgJzIwMjItMDMtMTEnKSwKKyAgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0w MS0yOCcpLAorICAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2JyksCisgICgx MiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKSwKKyAgKDEzLCAnR2FuZGknLCAg ICAzNzcsICAnMjAyMi0wMS0wOScpOworCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJ VCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19tYXIyMDIy XzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMy0x MCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2phbjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAxLTEwJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDItMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyXzFkZWNhZGUgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xMCcpLAorICAgUEFS VElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworU0VMRUNUIHRhYmxlb2lkOjpyZWdj bGFzcywgKiBGUk9NIHNhbGVzX3JhbmdlIE9SREVSIEJZIHRhYmxlb2lkOjpyZWdjbGFzczo6 dGV4dCBDT0xMQVRFICJDIiwgc2FsZXNwZXJzb25faWQ7CisKK0RST1AgVEFCTEUgc2FsZXNf cmFuZ2U7CisKKy0tCistLSBUZXN0IGZvciBzcGxpdCBub24tREVGQVVMVCBwYXJ0aXRpb24g dG8gREVGQVVMVCBwYXJ0aXRpb24gKyBwYXJ0aXRpb25zCistLSB3aXRoIHNwYWNlcyBiZXR3 ZWVuIGJvdW5kcy4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29u X2lkIElOVCwgc2FsZXNwZXJzb25fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElO VCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKKworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTCisgICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEt MzEnKSwKKyAgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpLAorICAoMywg ICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyksCisgICg0LCAgJ0l2YW5vdicsICAg NzUwLCAgJzIwMjItMDQtMTMnKSwKKyAgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0w NC0wNycpLAorICAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyksCisgICg3 LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKSwKKyAgKDgsICAnRXJpY3Nzb24n LCAxODUsICAnMjAyMi0wMi0yMycpLAorICAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIy LTAzLTExJyksCisgICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKSwKKyAg KDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpLAorICAoMTIsICdQbGF0bycs ICAgIDM1MCwgICcyMDIyLTAzLTE5JyksCisgICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIw MjItMDEtMDknKTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9O IHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworCitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAy Mi0wNS0wNCcpOworCitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gc2FsZXNf cmFuZ2UgT1JERVIgQlkgdGFibGVvaWQ6OnJlZ2NsYXNzOjp0ZXh0IENPTExBVEUgIkMiLCBz YWxlc3BlcnNvbl9pZDsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0tIFRy eSB0byBTUExJVCBwYXJ0aXRpb24gb2YgYW5vdGhlciB0YWJsZS4KKy0tCitDUkVBVEUgVEFC TEUgdDEoaSBpbnQsIHQgdGV4dCkgUEFSVElUSU9OIEJZIExJU1QgKHQpOworQ1JFQVRFIFRB QkxFIHQxcGEgUEFSVElUSU9OIE9GIHQxIEZPUiBWQUxVRVMgSU4gKCdBJyk7CitDUkVBVEUg VEFCTEUgdDIgKGkgaW50LCB0IHRleHQpIFBBUlRJVElPTiBCWSBSQU5HRSAodCk7CisKKy0t IEVSUk9SOiAgcmVsYXRpb24gInQxcGEiIGlzIG5vdCBhIHBhcnRpdGlvbiBvZiByZWxhdGlv biAidDIiCitBTFRFUiBUQUJMRSB0MiBTUExJVCBQQVJUSVRJT04gdDFwYSBJTlRPCisgICAo UEFSVElUSU9OIHQyYSBGT1IgVkFMVUVTIEZST00gKCdBJykgVE8gKCdCJyksCisgICAgUEFS VElUSU9OIHQyYiBGT1IgVkFMVUVTIEZST00gKCdCJykgVE8gKCdDJykpOworCitEUk9QIFRB QkxFIHQyOworRFJPUCBUQUJMRSB0MTsKKworLS0KKy0tIFRyeSB0byBTUExJVCBwYXJ0aXRp b24gb2YgdGVtcG9yYXJ5IHRhYmxlLgorLS0KK0NSRUFURSBURU1QIFRBQkxFIHQgKGkgaW50 KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRFTVAgVEFCTEUgdHBfMF8yIFBB UlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworCitTRUxFQ1QgYy5v aWQ6OnBnX2NhdGFsb2cucmVnY2xhc3MsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxw YXJ0Ym91bmQsIGMub2lkKSwgYy5yZWxwZXJzaXN0ZW5jZQorICBGUk9NIHBnX2NhdGFsb2cu cGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0g aS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAndCc6OnJlZ2NsYXNzCisgIE9SREVSIEJZ IHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKSA9ICdERUZB VUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2NhdGFsb2cudGV4dCBDT0xM QVRFICJDIjsKKworLS0gRVJST1I6ICBjYW5ub3QgY3JlYXRlIGEgcGVybWFuZW50IHJlbGF0 aW9uIGFzIHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVsYXRpb24gInQiCitBTFRFUiBUQUJM RSB0IFNQTElUIFBBUlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBG T1IgVkFMVUVTIEZST00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMikpOworCitBTFRFUiBUQUJMRSB0IFNQTElUIFBBUlRJVElP TiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHBnX3RlbXAudHBfMF8xIEZPUiBWQUxVRVMg RlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHBnX3RlbXAudHBfMV8yIEZPUiBWQUxV RVMgRlJPTSAoMSkgVE8gKDIpKTsKKworLS0gUGFydGl0aW9ucyBzaG91bGQgYmUgdGVtcG9y YXJ5LgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBwZ19jYXRhbG9nLnBn X2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCksIGMucmVscGVyc2lzdGVuY2UKKyAg RlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQor ICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3QnOjpyZWdj bGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5k LCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19j YXRhbG9nLnRleHQgQ09MTEFURSAiQyI7CisKK0RST1AgVEFCTEUgdDsKKworLS0gQ2hlY2sg dGhlIG5ldyBwYXJ0aXRpb25zIGluaGVyaXQgcGFyZW50J3MgdGFibGVzcGFjZQorQ1JFQVRF IFRBQkxFIHQgKGkgaW50IFBSSU1BUlkgS0VZIFVTSU5HIElOREVYIFRBQkxFU1BBQ0UgcmVn cmVzc190YmxzcGFjZSkKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChpKSBUQUJMRVNQQUNFIHJl Z3Jlc3NfdGJsc3BhY2U7CitDUkVBVEUgVEFCTEUgdHBfMF8yIFBBUlRJVElPTiBPRiB0IEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJ T04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgw KSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8g KDIpKTsKK1NFTEVDVCB0YWJsZW5hbWUsIHRhYmxlc3BhY2UgRlJPTSBwZ190YWJsZXMKKyAg V0hFUkUgdGFibGVuYW1lIElOICgndCcsICd0cF8wXzEnLCAndHBfMV8yJykgQU5EIHNjaGVt YW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYScKKyAgT1JERVIgQlkgdGFibGVuYW1l IENPTExBVEUgIkMiLCB0YWJsZXNwYWNlIENPTExBVEUgIkMiOworU0VMRUNUIHRhYmxlbmFt ZSwgaW5kZXhuYW1lLCB0YWJsZXNwYWNlIEZST00gcGdfaW5kZXhlcworICBXSEVSRSB0YWJs ZW5hbWUgSU4gKCd0JywgJ3RwXzBfMScsICd0cF8xXzInKSBBTkQgc2NoZW1hbmFtZSA9ICdw YXJ0aXRpb25fc3BsaXRfc2NoZW1hJworICBPUkRFUiBCWSB0YWJsZW5hbWUgQ09MTEFURSAi QyIsIGluZGV4bmFtZSBDT0xMQVRFICJDIiwgdGFibGVzcGFjZSBDT0xMQVRFICJDIjsKK0RS T1AgVEFCTEUgdDsKKworLS0gQ2hlY2sgbmV3IHBhcnRpdGlvbnMgaW5oZXJpdHMgcGFyZW50 J3MgdGFibGUgYWNjZXNzIG1ldGhvZAorQ1JFQVRFIEFDQ0VTUyBNRVRIT0QgcGFydGl0aW9u X3NwbGl0X2hlYXAgVFlQRSBUQUJMRSBIQU5ETEVSIGhlYXBfdGFibGVhbV9oYW5kbGVyOwor Q1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpIFVTSU5HIHBh cnRpdGlvbl9zcGxpdF9oZWFwOworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0Yg dCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKK0FMVEVSIFRBQkxFIHQgU1BMSVQgUEFS VElUSU9OIHRwXzBfMiBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBWQUxVRVMgRlJP TSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwXzFfMiBGT1IgVkFMVUVTIEZST00gKDEp IFRPICgyKSk7CitTRUxFQ1QgYy5yZWxuYW1lLCBhLmFtbmFtZQorRlJPTSBwZ19jbGFzcyBj IEpPSU4gcGdfYW0gYSBPTiBjLnJlbGFtID0gYS5vaWQKK1dIRVJFIGMub2lkIElOICgndCc6 OnJlZ2NsYXNzLCAndHBfMF8xJzo6cmVnY2xhc3MsICd0cF8xXzInOjpyZWdjbGFzcykKK09S REVSIEJZIGMucmVsbmFtZSBDT0xMQVRFICJDIjsKK0RST1AgVEFCTEUgdDsKK0RST1AgQUND RVNTIE1FVEhPRCBwYXJ0aXRpb25fc3BsaXRfaGVhcDsKKworLS0gVGVzdCBwZXJtaXNzaW9u IGNoZWNrcy4gIFRoZSB1c2VyIG5lZWRzIHRvIG93biB0aGUgcGFyZW50IHRhYmxlIGFuZCB0 aGUKKy0tIHRoZSBwYXJ0aXRpb24gdG8gc3BsaXQgdG8gZG8gdGhlIHNwbGl0LgorQ1JFQVRF IFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgUk9MRSByZWdy ZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlv bl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitHUkFO VCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0 aXRpb25fc3BsaXRfYm9iOworCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3Nf cGFydGl0aW9uX3NwbGl0X2FsaWNlOworQ1JFQVRFIFRBQkxFIHQgKGkgaW50KSBQQVJUSVRJ T04gQlkgUkFOR0UgKGkpOworQ1JFQVRFIFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBG T1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKKworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElP TiByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9ib2I7CitBTFRFUiBUQUJMRSB0IFNQTElUIFBB UlRJVElPTiB0cF8wXzIgSU5UTworICAoUEFSVElUSU9OIHRwXzBfMSBGT1IgVkFMVUVTIEZS T00gKDApIFRPICgxKSwKKyAgIFBBUlRJVElPTiB0cF8xXzIgRk9SIFZBTFVFUyBGUk9NICgx KSBUTyAoMikpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCitBTFRFUiBUQUJM RSB0IE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK1NFVCBTRVNTSU9O IEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYm9iOworQUxURVIgVEFC TEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEg Rk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBW QUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsK KworQUxURVIgVEFCTEUgdHBfMF8yIE9XTkVSIFRPIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0 X2JvYjsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3Bs aXRfYm9iOworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAg KFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJU SVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKK1JFU0VUIFNFU1NJ T04gQVVUSE9SSVpBVElPTjsKKworRFJPUCBUQUJMRSB0OworUkVWT0tFIEFMTCBPTiBTQ0hF TUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBGUk9NIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0 X2FsaWNlOworUkVWT0tFIEFMTCBPTiBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSBG Uk9NIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2JvYjsKK0RST1AgUk9MRSByZWdyZXNzX3Bh cnRpdGlvbl9zcGxpdF9hbGljZTsKK0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxp dF9ib2I7CisKKy0tIFNwbGl0IHBhcnRpdGlvbiBvZiBhIHRlbXBvcmFyeSB0YWJsZSB3aGVu IG9uZSBvZiB0aGUgcGFydGl0aW9ucyBhZnRlcgorLS0gc3BsaXQgaGFzIHRoZSBzYW1lIG5h bWUgYXMgdGhlIHBhcnRpdGlvbiBiZWluZyBzcGxpdAorQ1JFQVRFIFRFTVAgVEFCTEUgdCAo YSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoYSk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cF8w IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQUxURVIgVEFC TEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMCBJTlRPCisgIChQQVJUSVRJT04gcGdfdGVtcC50 cF8wIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHBnX3RlbXAu dHBfMSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKSk7CitEUk9QIFRBQkxFIHQ7CisKKy0t IENoZWNrIGRlZmF1bHRzIGFuZCBjb25zdHJhaW50cyBvZiBuZXcgcGFydGl0aW9ucworQ1JF QVRFIFRBQkxFIHRfYmlnaW50ICgKKyAgYiBiaWdpbnQsCisgIGkgaW50IERFRkFVTFQgKDMr MTApLAorICBqIGludCBERUZBVUxUIDEwMSwKKyAgayBpbnQgR0VORVJBVEVEIEFMV0FZUyBB UyAoYisxMCkgU1RPUkVECispCitQQVJUSVRJT04gQlkgUkFOR0UgKGIpOworQ1JFQVRFIFRB QkxFIHRfYmlnaW50X2RlZmF1bHQgUEFSVElUSU9OIE9GIHRfYmlnaW50IERFRkFVTFQ7Cist LSBTaG93IGRlZmF1bHRzL2NvbnN0cmFpbnRzIGJlZm9yZSBTUExJVCBQQVJUSVRJT04KK1xk KyB0X2JpZ2ludAorXGQrIHRfYmlnaW50X2RlZmF1bHQKK0FMVEVSIFRBQkxFIHRfYmlnaW50 IFNQTElUIFBBUlRJVElPTiB0X2JpZ2ludF9kZWZhdWx0IElOVE8KKyAgKFBBUlRJVElPTiB0 X2JpZ2ludF8wMV8xMCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMCksCisgICBQQVJUSVRJ T04gdF9iaWdpbnRfZGVmYXVsdCBERUZBVUxUKTsKKy0tIFNob3cgZGVmYXVsdHMvY29uc3Ry YWludHMgYWZ0ZXIgU1BMSVQgUEFSVElUSU9OCitcZCsgdF9iaWdpbnRfZGVmYXVsdAorXGQr IHRfYmlnaW50XzAxXzEwCitEUk9QIFRBQkxFIHRfYmlnaW50OworCisKKy0tIFRlc3Q6IG93 bmVyIG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBvd25lciBvZiBz cGxpdCBwYXJ0aXRpb24KK0NSRUFURSBST0xFIHJlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2Fs aWNlOworR1JBTlQgQUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIFRPIHJl Z3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlOworCitDUkVBVEUgVEFCTEUgdCAoaSBpbnQp IFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CisKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04g cmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVBVEUgVEFCTEUgdHBfMF8yKGkg aW50KTsKK1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKKworQUxURVIgVEFCTEUgdCBB VFRBQ0ggUEFSVElUSU9OIHRwXzBfMiBGT1IgVkFMVUVTIEZST00gKDApIFRPICgyKTsKKwor LS0gT3duZXIgaXMgJ3JlZ3Jlc3NfcGFydGl0aW9uX3NwbGl0X2FsaWNlJzoKK1xkdCB0cF8w XzIKKworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBB UlRJVElPTiB0cF8wXzEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJ T04gdHBfMV8yIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDIpKTsKKworLS0gT3duZXIgc2hv dWxkIGJlICdyZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZSc6CitcZHQgdHBfMF8xCitc ZHQgdHBfMV8yCisKK0RST1AgVEFCTEUgdDsKK1JFVk9LRSBBTEwgT04gU0NIRU1BIHBhcnRp dGlvbl9zcGxpdF9zY2hlbWEgRlJPTSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsK K0RST1AgUk9MRSByZWdyZXNzX3BhcnRpdGlvbl9zcGxpdF9hbGljZTsKKworCistLSBUZXN0 OiBpbmRleCBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgYmUgY3JlYXRlZCB3aXRoIHNhbWUg b3duZXIgYXMgc3BsaXQKKy0tIHBhcnRpdGlvbgorQ1JFQVRFIFJPTEUgcmVncmVzc19wYXJ0 aXRpb25fc3BsaXRfYWxpY2U7CitHUkFOVCBBTEwgT04gU0NIRU1BIHBhcnRpdGlvbl9zcGxp dF9zY2hlbWEgVE8gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CisKK1NFVCBTRVNT SU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2U7CitDUkVB VEUgVEFCTEUgdCAoaSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaSk7CitDUkVBVEUgVEFC TEUgdHBfMTBfMjAgUEFSVElUSU9OIE9GIHQgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIw KTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgxMSksICgxNik7CitDUkVBVEUgT1IgUkVQTEFD RSBGVU5DVElPTiBydW5fbWUoaW50ZWdlcikgUkVUVVJOUyBpbnRlZ2VyIEFTICQkCitCRUdJ TgorICBSQUlTRSBOT1RJQ0UgJ3lvdSBhcmUgcnVubmluZyBtZSBhcyAlJywgQ1VSUkVOVF9V U0VSOworICBSRVRVUk4gJDE7CitFTkQKKyQkIExBTkdVQUdFIFBMUEdTUUwgSU1NVVRBQkxF OworCistLSBPd25lciBpcyAncmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxpY2UnOgorQ1JF QVRFIElOREVYIE9OIHQgKHJ1bl9tZShpKSk7CitSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJ T047CisKKy0tIE93bmVyIHNob3VsZCBiZSAncmVncmVzc19wYXJ0aXRpb25fc3BsaXRfYWxp Y2UnOgorQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHBfMTBfMjAgSU5UTworICAo UEFSVElUSU9OIHRwXzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSksCisgICBQ QVJUSVRJT04gdHBfMTVfMjAgRk9SIFZBTFVFUyBGUk9NICgxNSkgVE8gKDIwKSk7CisKK0RS T1AgVEFCTEUgdDsKK0RST1AgRlVOQ1RJT04gcnVuX21lKGludGVnZXIpOworCitSRVZPS0Ug QUxMIE9OIFNDSEVNQSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hIEZST00gcmVncmVzc19wYXJ0 aXRpb25fc3BsaXRfYWxpY2U7CitEUk9QIFJPTEUgcmVncmVzc19wYXJ0aXRpb25fc3BsaXRf YWxpY2U7CisKKy0tIFRlc3QgZm9yIGhhc2ggcGFydGl0aW9uZWQgdGFibGUKK0NSRUFURSBU QUJMRSB0IChpIGludCkgUEFSVElUSU9OIEJZIEhBU0goaSk7CitDUkVBVEUgVEFCTEUgdHAx IFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgV0lUSCAoTU9EVUxVUyAyLCBSRU1BSU5ERVIg MCk7CitDUkVBVEUgVEFCTEUgdHAyIFBBUlRJVElPTiBPRiB0IEZPUiBWQUxVRVMgV0lUSCAo TU9EVUxVUyAyLCBSRU1BSU5ERVIgMSk7CisKKy0tIEVSUk9SOiAgcGFydGl0aW9uIG9mIGhh c2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIHNwbGl0CitBTFRFUiBUQUJMRSB0IFNQ TElUIFBBUlRJVElPTiB0cDEgSU5UTworICAoUEFSVElUSU9OIHRwMV8xIEZPUiBWQUxVRVMg V0lUSCAoTU9EVUxVUyA0LCBSRU1BSU5ERVIgMCksCisgICBQQVJUSVRJT04gdHAxXzIgRk9S IFZBTFVFUyBXSVRIIChNT0RVTFVTIDQsIFJFTUFJTkRFUiAyKSk7CisKKy0tIEVSUk9SOiAg bGlzdCBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQgY29udGFpbiBhdCBsZWFzdCB0d28gcGFy dGl0aW9ucworQUxURVIgVEFCTEUgdCBTUExJVCBQQVJUSVRJT04gdHAxIElOVE8KKyAgKFBB UlRJVElPTiB0cDFfMSBGT1IgVkFMVUVTIFdJVEggKE1PRFVMVVMgNCwgUkVNQUlOREVSIDAp KTsKKworRFJPUCBUQUJMRSB0OworCisKKy0tIEFkZGl0aW9uYWwgdGVzdHMgZm9yIGVycm9y IG1lc3NhZ2VzCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzcGVyc29uX2lkIGlu dCwgc2FsZXNwZXJzb25fbmFtZSB2YXJjaGFyKDMwKSwgc2FsZXNfYW1vdW50IGludCwgc2Fs ZXNfZGF0ZSBkYXRlKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19mZWJfbWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKKworLS0gRVJS T1I6ICB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2FwcjIwMjIiIGlzIG5vdCBl cXVhbCB0byB1cHBlciBib3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNh bGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTwor ICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFS VElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRP ICgnMjAyMi0wNi0wMScpKTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworCistLSBU ZXN0IGZvciBzcGxpdCBwYXJ0aXRpb24gcHJvcGVydGllczoKKy0tICogU1RBVElTVElDUyBp cyBlbXB0eQorLS0gKiBDT01NRU5UIGlzIGVtcHR5CistLSAqIERFRkFVTFRTIGFyZSB0aGUg c2FtZSBhcyBERUZBVUxUUyBmb3IgcGFydGl0aW9uZWQgdGFibGUKKy0tICogU1RPUkFHRSBp cyB0aGUgc2FtZSBhcyBTVE9SQUdFIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBHRU5F UkFURUQgYW5kIENPTlNUUkFJTlRTIGFyZSB0aGUgc2FtZSBhcyBHRU5FUkFURUQgYW5kIENP TlNUUkFJTlRTIGZvciBwYXJ0aXRpb25lZCB0YWJsZQorLS0gKiBUUklHR0VSUyBhcmUgdGhl IHNhbWUgYXMgVFJJR0dFUlMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCisKK0NSRUFURSBUQUJM RSB0CisoaSBpbnQgTk9UIE5VTEwsCisgdCB0ZXh0IFNUT1JBR0UgRVhURU5ERUQgQ09NUFJF U1NJT04gcGdseiBERUZBVUxUICdkZWZhdWx0X3QnLAorIGIgYmlnaW50LAorIGQgZGF0ZSBH RU5FUkFURUQgQUxXQVlTIGFzICgnMjAyMi0wMS0wMScpIFNUT1JFRCkgUEFSVElUSU9OIEJZ IFJBTkdFIChhYnMoaSkpOworQ09NTUVOVCBPTiBDT0xVTU4gdC5pIElTICd0MS5pJzsKKwor Q1JFQVRFIFRBQkxFIHRwX3gKKyhpIGludCBOT1QgTlVMTCwKKyB0IHRleHQgU1RPUkFHRSBN QUlOIERFRkFVTFQgJ2RlZmF1bHRfdHBfeCcsCisgYiBiaWdpbnQsCisgZCBkYXRlIEdFTkVS QVRFRCBBTFdBWVMgYXMgKCcyMDIyLTAyLTAyJykgU1RPUkVEKTsKK0FMVEVSIFRBQkxFIHQg QVRUQUNIIFBBUlRJVElPTiB0cF94IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDIpOworQ09N TUVOVCBPTiBDT0xVTU4gdHBfeC5pIElTICd0cF94LmknOworCitDUkVBVEUgU1RBVElTVElD UyB0X3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHQ7CitDUkVBVEUgU1RBVElT VElDUyB0cF94X3N0YXQgKERFUEVOREVOQ0lFUykgb24gaSwgYiBmcm9tIHRwX3g7CisKK0FM VEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgdF9iX2NoZWNrIENIRUNLIChiID4gMCk7CitB TFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjazEgQ0hFQ0sgKGIgPiAwKSBO T1QgRU5GT1JDRUQ7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5UIHRfYl9jaGVjazIg Q0hFQ0sgKGIgPiAwKSBOT1QgVkFMSUQ7CitBTFRFUiBUQUJMRSB0IEFERCBDT05TVFJBSU5U IHRfYl9ubiBOT1QgTlVMTCBiIE5PVCBWQUxJRDsKKworSU5TRVJUIElOVE8gdHBfeChpLCB0 LCBiKSBWQUxVRVMoMCwgREVGQVVMVCwgMSk7CitJTlNFUlQgSU5UTyB0cF94KGksIHQsIGIp IFZBTFVFUygxLCBERUZBVUxULCAyKTsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04g dHJpZ2dlcl9mdW5jdGlvbigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSAncGxwZ3NxbCcg QVMKKyRCT0RZJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDog YWN0aW9uID0gJSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBU R19XSEVOLCBUR19MRVZFTDsKKyAgUkVUVVJOIG5ldzsKK0VORDsKKyRCT0RZJDsKKworQ1JF QVRFIFRSSUdHRVIgdF9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2VyIEJFRk9SRSBJTlNFUlQg T04gdCBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jdGlv bigndCcpOworQ1JFQVRFIFRSSUdHRVIgdHBfeF9iZWZvcmVfaW5zZXJ0X3Jvd190cmlnZ2Vy IEJFRk9SRSBJTlNFUlQgT04gdHBfeCBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBQUk9DRURV UkUgdHJpZ2dlcl9mdW5jdGlvbigndHBfeCcpOworCitcZCsgdHBfeAorQUxURVIgVEFCTEUg dCBTUExJVCBQQVJUSVRJT04gdHBfeCBJTlRPCisgIChQQVJUSVRJT04gdHBfMF8xIEZPUiBW QUxVRVMgRlJPTSAoMCkgVE8gKDEpLAorICAgUEFSVElUSU9OIHRwX3ggRk9SIFZBTFVFUyBG Uk9NICgxKSBUTyAoMikpOworXGQrIHRwX3gKKworSU5TRVJUIElOVE8gdChpLCB0LCBiKSBW QUxVRVMoMSwgREVGQVVMVCwgMyk7CitTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZS T00gdCBPUkRFUiBCWSB0YWJsZW9pZDo6cmVnY2xhc3M6OnRleHQgQ09MTEFURSAiQyIsIGI7 CitEUk9QIFRBQkxFIHQ7CitEUk9QIEZVTkNUSU9OIHRyaWdnZXJfZnVuY3Rpb24oKTsKKwor CistLSBUZXN0IGZvciByZWNvbXB1dGF0aW9uIG9mIHN0b3JlZCBnZW5lcmF0ZWQgY29sdW1u cy4KK0NSRUFURSBUQUJMRSB0IChpIGludCwgdGFiX2lkIGludCBnZW5lcmF0ZWQgYWx3YXlz IGFzICh0YWJsZW9pZCkgc3RvcmVkKSBQQVJUSVRJT04gQlkgUkFOR0UgKGkpOworQ1JFQVRF IFRBQkxFIHRwXzBfMiBQQVJUSVRJT04gT0YgdCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgy KTsKK0FMVEVSIFRBQkxFIHQgQUREIENPTlNUUkFJTlQgY2MgQ0hFQ0sodGFibGVvaWQgPD4g MTIzNDU2Nzg5KTsKK0lOU0VSVCBJTlRPIHQgVkFMVUVTICgwKSwgKDEpOworCistLSBTaG91 bGQgYmUgMSBiZWNhdXNlIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBpPTAg aXMgdGhlIHNhbWUgYXMKKy0tIHBhcnRpdGlvbiBpZGVudGlmaWVyIGZvciByb3cgd2l0aCBp PTEuCitTRUxFQ1QgY291bnQoKikgRlJPTSB0IFdIRVJFIGkgPSAwIEFORCB0YWJfaWQgSU4g KFNFTEVDVCB0YWJfaWQgRlJPTSB0IFdIRVJFIGkgPSAxKTsKKworLS0gInRhYl9pZCIgY29s dW1uIChzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbikgd2l0aCAidGFibGVvaWQiIGF0dHJpYnV0 ZSByZXF1aXJlcworLS0gcmVjb21wdXRhdGlvbiBoZXJlLgorQUxURVIgVEFCTEUgdCBTUExJ VCBQQVJUSVRJT04gdHBfMF8yIElOVE8KKyAgKFBBUlRJVElPTiB0cF8wXzEgRk9SIFZBTFVF UyBGUk9NICgwKSBUTyAoMSksCisgICBQQVJUSVRJT04gdHBfMV8yIEZPUiBWQUxVRVMgRlJP TSAoMSkgVE8gKDIpKTsKKworLS0gU2hvdWxkIGJlIDAgYmVjYXVzZSBwYXJ0aXRpb24gaWRl bnRpZmllciBmb3Igcm93IHdpdGggaT0wIGlzIGRpZmZlcmVudCBmcm9tCistLSBwYXJ0aXRp b24gaWRlbnRpZmllciBmb3Igcm93IHdpdGggaT0xLgorU0VMRUNUIGNvdW50KCopIEZST00g dCBXSEVSRSBpID0gMCBBTkQgdGFiX2lkIElOIChTRUxFQ1QgdGFiX2lkIEZST00gdCBXSEVS RSBpID0gMSk7CisKK0RST1AgVEFCTEUgdDsKKworCitSRVNFVCBzZWFyY2hfcGF0aDsKKwor LS0KK0RST1AgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7CitEUk9QIFNDSEVNQSBw YXJ0aXRpb25fc3BsaXRfc2NoZW1hMjsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5k ZXggZTkwYWY1YjJhZC4uZjAwMTZjNTk4ZCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKQEAgLTI3NzcsNiArMjc3Nyw3IEBAIFNpbXBsZVN0YXRzCiBTaW1wbGVTdHJpbmdMaXN0 CiBTaW1wbGVTdHJpbmdMaXN0Q2VsbAogU2luZ2xlQm91bmRTb3J0SXRlbQorU2luZ2xlUGFy dGl0aW9uU3BlYwogU2l6ZQogU2tpcFBhZ2VzCiBTa2lwU3VwcG9ydApAQCAtMjg0Myw2ICsy ODQ0LDcgQEAgU3BlY2lhbEpvaW5JbmZvCiBTcGluRGVsYXlTdGF0dXMKIFNwbGl0SW50ZXJ2 YWwKIFNwbGl0TFIKK1NwbGl0UGFydGl0aW9uQ29udGV4dAogU3BsaXRQYWdlTGF5b3V0CiBT cGxpdFBvaW50CiBTcGxpdFRleHRPdXRwdXREYXRhCi0tIAoyLjQwLjEud2luZG93cy4xCgo= --------------3aMN0a2uxJJ9HeqkpWUHm7LY--